From 67770869e9068b99f5db3ebb55185604c6894804 Mon Sep 17 00:00:00 2001 From: Antiklesys Date: Wed, 7 Dec 2022 15:02:54 +0800 Subject: [PATCH 0001/1034] Update iclass_default_keys.dic Added an extra key --- client/dictionaries/iclass_default_keys.dic | 1 + 1 file changed, 1 insertion(+) diff --git a/client/dictionaries/iclass_default_keys.dic b/client/dictionaries/iclass_default_keys.dic index d2d6489b2..cf274e54a 100644 --- a/client/dictionaries/iclass_default_keys.dic +++ b/client/dictionaries/iclass_default_keys.dic @@ -18,6 +18,7 @@ E033CA419AEE43F9 # iCopy-x DRM keys 2020666666668888 # iCL tags 6666202066668888 # iCS tags reversed from the SOs +AFA785A7DAB33378 # from https://youtu.be/EH7dctOPxBA?t=805 # # default picopass KD / Page 0 / Book 1 FDCB5A52EA8F3090 From 810a89c4df8098b58d24ae29b94b866fc38ca8c3 Mon Sep 17 00:00:00 2001 From: Jin Jia Date: Wed, 4 Jan 2023 07:11:48 +0000 Subject: [PATCH 0002/1034] Added Compliance of MIFARE Classic EV1 1K Datasheet footnote of Table 8 --- armsrc/mifaresim.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/armsrc/mifaresim.c b/armsrc/mifaresim.c index c2f81df21..ad975381b 100644 --- a/armsrc/mifaresim.c +++ b/armsrc/mifaresim.c @@ -46,6 +46,15 @@ #include "dbprint.h" #include "ticks.h" +static bool IsKeyBReadable(uint8_t blockNo) { + uint8_t sector_trailer[16]; + emlGetMem(sector_trailer, SectorTrailer(blockNo), 1); + uint8_t AC = ((sector_trailer[7] >> 5) & 0x04) + | ((sector_trailer[8] >> 2) & 0x02) + | ((sector_trailer[8] >> 7) & 0x01); + return (AC == 0x00 || AC == 0x01 || AC == 0x02); +} + static bool IsTrailerAccessAllowed(uint8_t blockNo, uint8_t keytype, uint8_t action) { uint8_t sector_trailer[16]; emlGetMem(sector_trailer, blockNo, 1); @@ -881,6 +890,17 @@ void Mifare1ksim(uint16_t flags, uint8_t exitAfterNReads, uint8_t *datain, uint1 Dbprintf("[MFEMUL_WORK] Reader tried to operate (0x%02x) on block (0x%02x) not authenticated for (0x%02x), nacking", receivedCmd_dec[0], receivedCmd_dec[1], cardAUTHSC); break; } + + // Compliance of MIFARE Classic EV1 1K Datasheet footnote of Table 8 + // If access bits show that key B is Readable, any subsequent memory access will be refused. + if (cardAUTHKEY == keyB && IsKeyBReadable(blockNo)) { + EmSend4bit(mf_crypto1_encrypt4bit(pcs, CARD_NACK_NA)); + FpgaDisableTracing(); + + if (g_dbglevel >= DBG_ERROR) + Dbprintf("[MFEMUL_WORK] Access denied: Reader tried to access memory on authentication with key B while key B is readable in sector (0x%02x)", cardAUTHSC); + break; + } } // case MFEMUL_WORK => CMD READ block From 949ef8435e9eba27e7766c917d5cbb7c23ef1782 Mon Sep 17 00:00:00 2001 From: Jin Jia Date: Wed, 4 Jan 2023 07:19:29 +0000 Subject: [PATCH 0003/1034] changed keyB in line 896 to the correct macro --- armsrc/mifaresim.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/mifaresim.c b/armsrc/mifaresim.c index ad975381b..71195aa62 100644 --- a/armsrc/mifaresim.c +++ b/armsrc/mifaresim.c @@ -893,7 +893,7 @@ void Mifare1ksim(uint16_t flags, uint8_t exitAfterNReads, uint8_t *datain, uint1 // Compliance of MIFARE Classic EV1 1K Datasheet footnote of Table 8 // If access bits show that key B is Readable, any subsequent memory access will be refused. - if (cardAUTHKEY == keyB && IsKeyBReadable(blockNo)) { + if (cardAUTHKEY == AUTHKEYB && IsKeyBReadable(blockNo)) { EmSend4bit(mf_crypto1_encrypt4bit(pcs, CARD_NACK_NA)); FpgaDisableTracing(); From 303dbae85bd9c88c8e34726c6fb0f818ec89c315 Mon Sep 17 00:00:00 2001 From: Jin Jia Date: Fri, 6 Jan 2023 06:26:21 +0000 Subject: [PATCH 0004/1034] Fixed a warning on uninitialized variable --- armsrc/mifaresim.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/armsrc/mifaresim.c b/armsrc/mifaresim.c index 71195aa62..81f26c5cb 100644 --- a/armsrc/mifaresim.c +++ b/armsrc/mifaresim.c @@ -881,8 +881,8 @@ void Mifare1ksim(uint16_t flags, uint8_t exitAfterNReads, uint8_t *datain, uint1 break; } */ - - if (MifareBlockToSector(receivedCmd_dec[1]) != cardAUTHSC) { + blockNo = receivedCmd_dec[1]; + if (MifareBlockToSector(blockNo) != cardAUTHSC) { EmSend4bit(mf_crypto1_encrypt4bit(pcs, CARD_NACK_NA)); FpgaDisableTracing(); @@ -893,6 +893,7 @@ void Mifare1ksim(uint16_t flags, uint8_t exitAfterNReads, uint8_t *datain, uint1 // Compliance of MIFARE Classic EV1 1K Datasheet footnote of Table 8 // If access bits show that key B is Readable, any subsequent memory access will be refused. + if (cardAUTHKEY == AUTHKEYB && IsKeyBReadable(blockNo)) { EmSend4bit(mf_crypto1_encrypt4bit(pcs, CARD_NACK_NA)); FpgaDisableTracing(); From 0a66f809a6830a78fd846f413e1823949297b5f4 Mon Sep 17 00:00:00 2001 From: Angel Date: Sat, 15 Apr 2023 22:23:06 -0400 Subject: [PATCH 0005/1034] Removed deprecated CRC calculation --- client/src/cmdlfparadox.c | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/client/src/cmdlfparadox.c b/client/src/cmdlfparadox.c index a2fa50f11..f18444737 100644 --- a/client/src/cmdlfparadox.c +++ b/client/src/cmdlfparadox.c @@ -36,13 +36,6 @@ #include "cliparser.h" static int CmdHelp(const char *Cmd); - -static const uint8_t paradox_lut[] = { - 0xDB, 0xFC, 0x3F, 0xC5, 0x50, 0x14, 0x05, 0x47, - 0x9F, 0xED, 0x7D, 0x59, 0x22, 0x84, 0x21, 0x4E, - 0x39, 0x48, 0x12, 0x88, 0x53, 0xDE, 0xBB, 0xE4, - 0xB4, 0x2D, 0x4D, 0x55, 0xCA, 0xBE, 0xA3, 0xE2 -}; // FC:108, Card01827 // 00000000 01101100 00000111 00100011 // hex(0xED xor 0x7D xor 0x22 xor 0x84 xor 0xDE xor 0xBB xor 0xE4 xor 0x4D xor 0xA3 xor 0xE2 xor 0x47) 0xFC @@ -135,29 +128,6 @@ int demodParadox(bool verbose) { uint32_t cardnum = (lo >> 10) & 0xFFFF; uint8_t chksum = (lo >> 2) & 0xFF; - - // Calc CRC & Checksum - // 000088f0b - FC: 8 - Card: 36619 - Checksum: 05 - RAW: 0f55555559595aa559a5566a - // checksum? - uint8_t calc_chksum = 0x47; - uint8_t pos = 0; - for (uint8_t i = 0; i < 8; i++) { - - uint8_t ice = rawhex[i + 1]; - for (uint8_t j = 0x80; j > 0; j >>= 2) { - - if (ice & j) { - calc_chksum ^= paradox_lut[pos]; - } - pos++; - } - } - - uint32_t crc = CRC8Maxim(rawhex + 1, 8); - PrintAndLogEx(DEBUG, " FSK/MAN raw : %s", sprint_hex(rawhex, sizeof(rawhex))); - PrintAndLogEx(DEBUG, " raw : %s = (maxim crc8) %02x == %02x", sprint_hex(rawhex + 1, 8), crc, calc_chksum); -// PrintAndLogEx(DEBUG, " OTHER sample CRC-8/MAXIM : 55 55 69 A5 55 6A 59 5A = FC"); - uint32_t rawLo = bytebits_to_byte(bits + idx + 64, 32); uint32_t rawHi = bytebits_to_byte(bits + idx + 32, 32); uint32_t rawHi2 = bytebits_to_byte(bits + idx, 32); From ab460c4a226f82b3e3903fe30dc03e2a7993da2f Mon Sep 17 00:00:00 2001 From: Angel Date: Sat, 15 Apr 2023 22:25:20 -0400 Subject: [PATCH 0006/1034] Extract bitstream creation to function. --- client/src/cmdlfparadox.c | 93 +++++++++++++++++++++++---------------- 1 file changed, 55 insertions(+), 38 deletions(-) diff --git a/client/src/cmdlfparadox.c b/client/src/cmdlfparadox.c index f18444737..186bdd28d 100644 --- a/client/src/cmdlfparadox.c +++ b/client/src/cmdlfparadox.c @@ -46,6 +46,54 @@ static int CmdHelp(const char *Cmd); // Paradox Prox demod - FSK2a RF/50 with preamble of 00001111 (then manchester encoded) // print full Paradox Prox ID and some bit format details if found +// This function will calculate the bitstream for a paradox card and place the result in bs. +// It returns the calculated CRC from the fc and cn. +// CRC calculation by mwalker33 +static uint8_t GetParadoxBits(const unsigned long fc, const unsigned long cn, unsigned int *bs){ + + uint8_t manchester[13] = { 0x00 }; // check size needed + uint32_t t1; + + manchester[0] = 0x0F; // preamble + manchester[1] = 0x05; // Leading zeros - Note: from this byte on, is part of the CRC calculation + manchester[2] = 0x55; // Leading zeros its 4 bits out for the CRC, so we need to move + manchester[3] = 0x55; // Leading zeros back 4 bits once we have the crc (done below) + + // add FC + t1 = manchesterEncode2Bytes(fc); + manchester[4] = (t1 >> 8) & 0xFF; + manchester[5] = t1 & 0xFF; + + // add cn + t1 = manchesterEncode2Bytes(cn); + manchester[6] = (t1 >> 24) & 0xFF; + manchester[7] = (t1 >> 16) & 0xFF; + manchester[8] = (t1 >> 8) & 0xFF; + manchester[9] = t1 & 0xFF; + + uint8_t crc = (CRC8Maxim(manchester + 1, 9) ^ 0x6) & 0xFF; + + // add crc + t1 = manchesterEncode2Bytes(crc); + manchester[10] = (t1 >> 8) & 0xFF; + manchester[11] = t1 & 0xFF; + + // move left 4 bits left 4 bits - Now that we have the CRC we need to re-align the data. + for (int i = 1; i < 12; i++) + manchester[i] = (manchester[i] << 4) + (manchester[i + 1] >> 4); + + // Add trailing 1010 (11) + manchester[11] |= (1 << 3); + manchester[11] |= (1 << 1); + + // move into tag blocks + + for (int i = 0; i < 12; i++) + bs[1 + (i / 4)] += (manchester[i] << (8 * (3 - i % 4))); + + return crc; +} + int demodParadox(bool verbose) { (void) verbose; // unused so far //raw fsk demod no manchester decoding no start bit finding just get binary from wave @@ -132,6 +180,12 @@ int demodParadox(bool verbose) { uint32_t rawHi = bytebits_to_byte(bits + idx + 32, 32); uint32_t rawHi2 = bytebits_to_byte(bits + idx, 32); + uint32_t blocks[4] = {0}; + uint8_t crc = GetParadoxBits(fc,cardnum,blocks); + if(chksum != crc) + PrintAndLogEx(ERR,"CRC Error! Calculated CRC is " _GREEN_("%d") " but card CRC is " _RED_("%d") ".",crc,chksum); + + PrintAndLogEx(INFO, "Paradox - ID: " _GREEN_("%x%08x") " FC: " _GREEN_("%d") " Card: " _GREEN_("%d") ", Checksum: %02x, Raw: %08x%08x%08x", hi >> 10, (hi & 0x3) << 26 | (lo >> 10), @@ -245,44 +299,7 @@ static int CmdParadoxClone(const char *Cmd) { blocks[i] = bytes_to_num(raw + ((i - 1) * 4), sizeof(uint32_t)); } } else { - uint8_t manchester[13] = { 0x00 }; // check size needed - uint32_t t1; - - manchester[0] = 0x0F; // preamble - manchester[1] = 0x05; // Leading zeros - Note: from this byte on, is part of the CRC calculation - manchester[2] = 0x55; // Leading zeros its 4 bits out for the CRC, so we need too move - manchester[3] = 0x55; // Leading zeros back 4 bits once we have the crc (done below) - - // add FC - t1 = manchesterEncode2Bytes(fc); - manchester[4] = (t1 >> 8) & 0xFF; - manchester[5] = t1 & 0xFF; - - // add cn - t1 = manchesterEncode2Bytes(cn); - manchester[6] = (t1 >> 24) & 0xFF; - manchester[7] = (t1 >> 16) & 0xFF; - manchester[8] = (t1 >> 8) & 0xFF; - manchester[9] = t1 & 0xFF; - - uint8_t crc = (CRC8Maxim(manchester + 1, 9) ^ 0x6) & 0xFF; - - // add crc - t1 = manchesterEncode2Bytes(crc); - manchester[10] = (t1 >> 8) & 0xFF; - manchester[11] = t1 & 0xFF; - - // move left 4 bits left 4 bits - Now that we have the CRC we need to re-align the data. - for (int i = 1; i < 12; i++) - manchester[i] = (manchester[i] << 4) + (manchester[i + 1] >> 4); - - // Add trailing 1010 (11) - manchester[11] |= (1 << 3); - manchester[11] |= (1 << 1); - - // move into tag blocks - for (int i = 0; i < 12; i++) - blocks[1 + (i / 4)] += (manchester[i] << (8 * (3 - i % 4))); + GetParadoxBits(fc, cn, blocks); } // Paradox - FSK2a, data rate 50, 3 data blocks From 76e3f38772d97d0f54d1b0895606e1e8b640e2f7 Mon Sep 17 00:00:00 2001 From: Angel Date: Sat, 15 Apr 2023 22:26:09 -0400 Subject: [PATCH 0007/1034] Add check to make sure user did not specify Raw and cn/fc --- client/src/cmdlfparadox.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/src/cmdlfparadox.c b/client/src/cmdlfparadox.c index 186bdd28d..97def9789 100644 --- a/client/src/cmdlfparadox.c +++ b/client/src/cmdlfparadox.c @@ -287,6 +287,11 @@ static int CmdParadoxClone(const char *Cmd) { return PM3_EINVARG; } + if ((fc || cn) && raw_len != 0) { + PrintAndLogEx(FAILED, "Can't specify both FC/CN and RAW at the same time"); + return PM3_EINVARG; + } + uint32_t blocks[4] = {0}; if (raw_len != 0) { From 8841991b297c8404858c180e8ffa1c633f802cc3 Mon Sep 17 00:00:00 2001 From: Angel Date: Sat, 15 Apr 2023 22:42:03 -0400 Subject: [PATCH 0008/1034] Add check for max fc and cn, changed types to match rest of file --- client/src/cmdlfparadox.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/client/src/cmdlfparadox.c b/client/src/cmdlfparadox.c index 97def9789..757544fb4 100644 --- a/client/src/cmdlfparadox.c +++ b/client/src/cmdlfparadox.c @@ -49,7 +49,7 @@ static int CmdHelp(const char *Cmd); // This function will calculate the bitstream for a paradox card and place the result in bs. // It returns the calculated CRC from the fc and cn. // CRC calculation by mwalker33 -static uint8_t GetParadoxBits(const unsigned long fc, const unsigned long cn, unsigned int *bs){ +static uint8_t GetParadoxBits(const uint32_t fc, const uint32_t cn, unsigned int *bs){ uint8_t manchester[13] = { 0x00 }; // check size needed uint32_t t1; @@ -292,6 +292,11 @@ static int CmdParadoxClone(const char *Cmd) { return PM3_EINVARG; } + if (fc > 999 || cn > 99999){ + PrintAndLogEx(FAILED, "FC has a max value of 999 and CN has a max value of 99999"); + return PM3_EINVARG; + } + uint32_t blocks[4] = {0}; if (raw_len != 0) { @@ -304,6 +309,7 @@ static int CmdParadoxClone(const char *Cmd) { blocks[i] = bytes_to_num(raw + ((i - 1) * 4), sizeof(uint32_t)); } } else { + //This function generates the bitstream and puts it in blocks. it returns the crc but we don't need it here GetParadoxBits(fc, cn, blocks); } From 5192c5f5d5febaed781bd77287fe8778b6e0b666 Mon Sep 17 00:00:00 2001 From: Angel Date: Sat, 15 Apr 2023 23:20:48 -0400 Subject: [PATCH 0009/1034] Added ability to emulate paradox tag. --- client/src/cmdlfparadox.c | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/client/src/cmdlfparadox.c b/client/src/cmdlfparadox.c index 757544fb4..6cff88c86 100644 --- a/client/src/cmdlfparadox.c +++ b/client/src/cmdlfparadox.c @@ -254,7 +254,7 @@ static int CmdParadoxClone(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf paradox clone", "clone a paradox tag to a T55x7, Q5/T5555 or EM4305/4469 tag.", - "lf paradox clone --fc 96 --cn 40426 -> encode for T55x7 tag with fc and cn\n" + "lf paradox clone --fc 96 --cn 40426 [--q5|--em] -> encode for T55x7 tag with fc and cn\n" "lf paradox clone --raw 0f55555695596a6a9999a59a -> encode for T55x7 tag\n" "lf paradox clone --raw 0f55555695596a6a9999a59a --q5 -> encode for Q5/T5555 tag\n" "lf paradox clone --raw 0f55555695596a6a9999a59a --em -> encode for EM4305/4469" @@ -353,12 +353,15 @@ static int CmdParadoxSim(const char *Cmd) { CLIParserInit(&ctx, "lf paradox sim", "Enables simulation of paradox card with specified card number.\n" "Simulation runs until the button is pressed or another USB command is issued.", - "lf paradox sim --raw 0f55555695596a6a9999a59a" + "lf paradox sim --raw 0f55555695596a6a9999a59a -> simulate tag" + "lf paradox clone --fc 96 --cn 40426 -> simulate tag with fc and cn\n" ); void *argtable[] = { arg_param_begin, arg_str0("r", "raw", "", " raw hex data. 12 bytes"), + arg_u64_0(NULL, "fc", "", "facility code"), + arg_u64_0(NULL, "cn", "", "card number"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -367,13 +370,32 @@ static int CmdParadoxSim(const char *Cmd) { // skip first block, 3*4 = 12 bytes left uint8_t raw[12] = {0}; CLIGetHexWithReturn(ctx, 1, raw, &raw_len); + + uint32_t fc = arg_get_u32_def(ctx, 2, 0); + uint32_t cn = arg_get_u32_def(ctx, 3, 0); CLIParserFree(ctx); - if (raw_len != 12) { - PrintAndLogEx(ERR, "Data must be 12 bytes (24 HEX characters) %d", raw_len); + if ((fc || cn) && raw_len != 0) { + PrintAndLogEx(FAILED, "Can't specify both FC/CN and RAW at the same time"); return PM3_EINVARG; } + if (fc > 999 || cn > 99999){ + PrintAndLogEx(FAILED, "FC has a max value of 999 and CN has a max value of 99999"); + return PM3_EINVARG; + } + if (raw_len != 0) { + if (raw_len != 12) { + PrintAndLogEx(ERR, "Data must be 12 bytes (24 HEX characters) %d", raw_len); + return PM3_EINVARG; + } + } else{ + uint32_t blocks[4] = {0}; + GetParadoxBits(fc,cn,blocks); + for (uint8_t i = 1; i < ARRAYLEN(blocks); i++) { + num_to_bytes(blocks[i], sizeof(uint32_t), raw + ((i - 1) * 4)); + } + } PrintAndLogEx(SUCCESS, "Simulating Paradox - raw " _YELLOW_("%s"), sprint_hex_inrow(raw, sizeof(raw))); uint8_t bs[sizeof(raw) * 8]; From 98438c8dd764db1118c645b1f905bf427c7e6ce1 Mon Sep 17 00:00:00 2001 From: Angel Date: Sat, 15 Apr 2023 23:26:34 -0400 Subject: [PATCH 0010/1034] Remove redundant comment. --- client/src/cmdlfparadox.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/client/src/cmdlfparadox.c b/client/src/cmdlfparadox.c index 6cff88c86..79cebb86d 100644 --- a/client/src/cmdlfparadox.c +++ b/client/src/cmdlfparadox.c @@ -424,21 +424,8 @@ static int CmdParadoxSim(const char *Cmd) { return PM3_SUCCESS; } -/* - if (sscanf(Cmd, "%u %u", &fc, &cn) != 2) return usage_lf_paradox_sim(); - facilitycode = (fc & 0x000000FF); - cardnumber = (cn & 0x0000FFFF); - - // if ( GetParadoxBits(facilitycode, cardnumber, bs) != PM3_SUCCESS) { - // PrintAndLogEx(ERR, "Error with tag bitstream generation."); - // return 1; - // } - - PrintAndLogEx(NORMAL, "Simulating Paradox - Facility Code: %u, CardNumber: %u", facilitycode, cardnumber); - -*/ static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, {"demod", CmdParadoxDemod, AlwaysAvailable, "demodulate a Paradox FSK tag from the GraphBuffer"}, From 207e5bbc5367e247e63f225fbc99f305922216a0 Mon Sep 17 00:00:00 2001 From: Angel Date: Sun, 16 Apr 2023 14:29:58 -0400 Subject: [PATCH 0011/1034] Final cleanup --- client/src/cmdlfparadox.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/client/src/cmdlfparadox.c b/client/src/cmdlfparadox.c index 79cebb86d..3276333d0 100644 --- a/client/src/cmdlfparadox.c +++ b/client/src/cmdlfparadox.c @@ -20,7 +20,6 @@ #include #include #include -#include #include "commonutil.h" // ARRAYLEN #include "cmdparser.h" // command_t #include "comms.h" @@ -309,7 +308,7 @@ static int CmdParadoxClone(const char *Cmd) { blocks[i] = bytes_to_num(raw + ((i - 1) * 4), sizeof(uint32_t)); } } else { - //This function generates the bitstream and puts it in blocks. it returns the crc but we don't need it here + //This function generates the bitstream and puts it in blocks. it returns the crc, but we don't need it here GetParadoxBits(fc, cn, blocks); } @@ -389,7 +388,7 @@ static int CmdParadoxSim(const char *Cmd) { PrintAndLogEx(ERR, "Data must be 12 bytes (24 HEX characters) %d", raw_len); return PM3_EINVARG; } - } else{ + } else { uint32_t blocks[4] = {0}; GetParadoxBits(fc,cn,blocks); for (uint8_t i = 1; i < ARRAYLEN(blocks); i++) { From cb0a3257be390edaea8feca95986bce128075dac Mon Sep 17 00:00:00 2001 From: dash Date: Wed, 10 May 2023 00:33:15 +0300 Subject: [PATCH 0012/1034] fix reading NDEF from Mifare Classic --- client/src/cmdhfmf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 559057459..a77f14c59 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -5922,10 +5922,10 @@ int CmdHFMFNDEFRead(const char *Cmd) { } PrintAndLogEx(INFO, "reading data from tag"); - for (int i = 1; i <= madlen; i++) { + for (int i = 0; i < madlen; i++) { if (ndef_aid == mad[i]) { uint8_t vsector[MFBLOCK_SIZE * 4] = {0}; - if (mfReadSector(i, keyB ? MF_KEY_B : MF_KEY_A, ndefkey, vsector)) { + if (mfReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, ndefkey, vsector)) { PrintAndLogEx(ERR, "error, reading sector %d ", i + 1); return PM3_ESOFT; } From 832afcd0d494683ec4bcda3635e286dbcd3104a9 Mon Sep 17 00:00:00 2001 From: Angel Date: Wed, 24 May 2023 20:45:51 -0400 Subject: [PATCH 0013/1034] Fix help menu format --- client/src/cmdlfparadox.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdlfparadox.c b/client/src/cmdlfparadox.c index 3276333d0..2885227d3 100644 --- a/client/src/cmdlfparadox.c +++ b/client/src/cmdlfparadox.c @@ -352,13 +352,13 @@ static int CmdParadoxSim(const char *Cmd) { CLIParserInit(&ctx, "lf paradox sim", "Enables simulation of paradox card with specified card number.\n" "Simulation runs until the button is pressed or another USB command is issued.", - "lf paradox sim --raw 0f55555695596a6a9999a59a -> simulate tag" + "lf paradox sim --raw 0f55555695596a6a9999a59a -> simulate tag\n" "lf paradox clone --fc 96 --cn 40426 -> simulate tag with fc and cn\n" ); void *argtable[] = { arg_param_begin, - arg_str0("r", "raw", "", " raw hex data. 12 bytes"), + arg_str0("r", "raw", "", "raw hex data. 12 bytes"), arg_u64_0(NULL, "fc", "", "facility code"), arg_u64_0(NULL, "cn", "", "card number"), arg_param_end From 4dc8d5316a56921b763b2aed91aae396b25de1e0 Mon Sep 17 00:00:00 2001 From: Angel Date: Wed, 24 May 2023 21:54:42 -0400 Subject: [PATCH 0014/1034] Make Style --- armsrc/Standalone/hf_msdsal.c | 8 +-- armsrc/iso14443a.c | 10 +-- armsrc/mifarecmd.c | 4 +- client/luascripts/hf_mf_ultimatecard.lua | 10 +-- client/src/cmdhfmf.c | 84 ++++++++++++------------ client/src/cmdhfmfp.c | 6 +- client/src/cmdlfhitag.c | 2 +- client/src/cmdlfparadox.c | 14 ++-- client/src/cmdlft55xx.c | 2 +- client/src/fileutils.c | 12 ++-- client/src/mifare/mad.c | 8 +-- client/src/nfc/ndef.c | 22 +++---- client/src/pm3line_vocabulory.h | 3 +- client/update_amiibo_tools_lua.py | 14 ++-- doc/commands.json | 76 ++++++++++++++------- doc/commands.md | 5 +- 16 files changed, 154 insertions(+), 126 deletions(-) diff --git a/armsrc/Standalone/hf_msdsal.c b/armsrc/Standalone/hf_msdsal.c index b0d81ff79..f97a2e57f 100644 --- a/armsrc/Standalone/hf_msdsal.c +++ b/armsrc/Standalone/hf_msdsal.c @@ -376,7 +376,7 @@ void RunMod(void) { // dynamic_response_info will be in charge of responses dynamic_response_info.response_n = 0; - + //Dbprintf("receivedCmd: %02x\n", receivedCmd); // received a REQUEST if (receivedCmd[0] == ISO14443A_CMD_REQA && len == 1) { @@ -399,12 +399,12 @@ void RunMod(void) { // received request for UID (cascade 1) } else if (receivedCmd[1] == 0x20 && receivedCmd[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT && len == 2) { //DbpString(_YELLOW_("+") "Request for UID C1"); - p_response = &responses[RESP_INDEX_UIDC1]; + p_response = &responses[RESP_INDEX_UIDC1]; // received a SELECT (cascade 1) } else if (receivedCmd[1] == 0x70 && receivedCmd[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT && len == 9) { //DbpString(_YELLOW_("+") "Request for SELECT S1"); - p_response = &responses[RESP_INDEX_SAKC1]; + p_response = &responses[RESP_INDEX_SAKC1]; // received a RATS request } else if (receivedCmd[0] == ISO14443A_CMD_RATS && len == 4) { @@ -412,7 +412,7 @@ void RunMod(void) { prevCmd = 0; //p_response = &responses[RESP_INDEX_RATS]; - static uint8_t rRATS[] = { 0x13, 0x78, 0x80, 0x72, 0x02, 0x80, 0x31, 0x80, 0x66, 0xb1, 0x84, 0x0c, 0x01, 0x6e, 0x01, 0x83, 0x00, 0x90, 0x00 }; + static uint8_t rRATS[] = { 0x13, 0x78, 0x80, 0x72, 0x02, 0x80, 0x31, 0x80, 0x66, 0xb1, 0x84, 0x0c, 0x01, 0x6e, 0x01, 0x83, 0x00, 0x90, 0x00 }; memcpy(&dynamic_response_info.response[0], rRATS, sizeof(rRATS)); dynamic_response_info.response_n = sizeof(rRATS); diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index b4730b62d..01eed12c1 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1189,12 +1189,12 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r // Configure the ATQA and SAK accordingly rATQA[0] &= 0xBF; - if(tagType == 11){ - rSAKc1[0] = sak & 0xFC & 0X70; - }else{ - rSAKc1[0] = sak & 0xFB; + if (tagType == 11) { + rSAKc1[0] = sak & 0xFC & 0X70; + } else { + rSAKc1[0] = sak & 0xFB; } - + AddCrc14A(rSAKc1, sizeof(rSAKc1) - 2); *cuid = bytes_to_num(data, 4); diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 30558541d..5dd5dfcf6 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -1300,7 +1300,7 @@ void MifareNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8 break; } */ - + uint32_t nttmp = prng_successor(nt1, 100); //NXP Mifare is typical around 840,but for some unlicensed/compatible mifare card this can be 160 for (i = 101; i < 1200; i++) { nttmp = prng_successor(nttmp, 1); @@ -1354,7 +1354,7 @@ void MifareNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8 LED_C_ON(); // get crypted nonces for target sector - for (i = 0; ((i < 2) && (isOK == PM3_SUCCESS)); i++) { + for (i = 0; ((i < 2) && (isOK == PM3_SUCCESS)); i++) { // look for exactly two different nonces diff --git a/client/luascripts/hf_mf_ultimatecard.lua b/client/luascripts/hf_mf_ultimatecard.lua index 09b53937f..4bb6034ee 100644 --- a/client/luascripts/hf_mf_ultimatecard.lua +++ b/client/luascripts/hf_mf_ultimatecard.lua @@ -50,20 +50,20 @@ arguments = [[ -c read magic configuration -u UID (8-20 hexsymbols), set UID on tag -t tag type to impersonate - 1 = Mifare Mini S20 4-byte + 1 = Mifare Mini S20 4-byte 2 = Mifare Mini S20 7-byte 15 = NTAG 210 3 = Mifare Mini S20 10-byte 16 = NTAG 212 4 = Mifare 1k S50 4-byte 17 = NTAG 213 5 = Mifare 1k S50 7-byte 18 = NTAG 215 - 6 = Mifare 1k S50 10-byte 19 = NTAG 216 + 6 = Mifare 1k S50 10-byte 19 = NTAG 216 7 = Mifare 4k S70 4-byte 20 = NTAG I2C 1K 8 = Mifare 4k S70 7-byte 21 = NTAG I2C 2K 9 = Mifare 4k S70 10-byte 22 = NTAG I2C 1K PLUS *** 10 = UL - NOT WORKING FULLY 23 = NTAG I2C 2K PLUS *** 11 = UL-C - NOT WORKING FULLY 24 = NTAG 213F 12 = UL EV1 48b 25 = NTAG 216F - 13 = UL EV1 128b - *** 14 = UL Plus - NOT WORKING YET + 13 = UL EV1 128b + *** 14 = UL Plus - NOT WORKING YET -p NTAG password (8 hexsymbols), set NTAG password on tag. -a NTAG pack ( 4 hexsymbols), set NTAG pack on tag. @@ -297,7 +297,7 @@ return true, 'Ok' end --- -- calculate block0 -local function calculate_block0(useruid) +local function calculate_block0(useruid) local uidbytes = utils.ConvertHexToBytes(useruid) local i = 1 local bcc = bxor(uidbytes[i], uidbytes[i+1]); diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 12799b25f..17ad30184 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -439,7 +439,7 @@ static int mf_analyse_st_block(uint8_t blockno, uint8_t *block, bool force) { * @param numSectors: size of the card * @param keyFileName: filename containing keys or NULL. */ -static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t numSectors, char *keyfn){ +static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t numSectors, char *keyfn) { // Select card to get UID/UIDLEN/ATQA/SAK information clearCommandBuffer(); @@ -472,7 +472,7 @@ static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t n size_t alen = 0, blen = 0; uint8_t *keyA, *keyB; - if (loadFileBinaryKey(keyfn, "", (void**)&keyA, (void**)&keyB, &alen, &blen) != PM3_SUCCESS) { + if (loadFileBinaryKey(keyfn, "", (void **)&keyA, (void **)&keyB, &alen, &blen) != PM3_SUCCESS) { if (keyA) { free(keyA); } @@ -562,7 +562,7 @@ static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t n received = WaitForResponseTimeout(CMD_HF_MIFARE_READBL, &resp, 1500); } else { // data block. Check if it can be read with key A or key B - if ((rights[sectorNo][data_area] == 0x03) || (rights[sectorNo][data_area] == 0x05)) { + if ((rights[sectorNo][data_area] == 0x03) || (rights[sectorNo][data_area] == 0x05)) { // only key B would work payload.blockno = mfFirstBlockOfSector(sectorNo) + blockNo; payload.keytype = MF_KEY_B; @@ -572,7 +572,7 @@ static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t n SendCommandNG(CMD_HF_MIFARE_READBL, (uint8_t *)&payload, sizeof(mf_readblock_t)); received = WaitForResponseTimeout(CMD_HF_MIFARE_READBL, &resp, 1500); } else { - // key A would work + // key A would work payload.blockno = mfFirstBlockOfSector(sectorNo) + blockNo; payload.keytype = current_key; memcpy(payload.key, (current_key == MF_KEY_A) ? keyA + (sectorNo * MIFARE_KEY_SIZE) : keyB + (sectorNo * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); @@ -604,9 +604,9 @@ static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t n uint8_t *data = resp.data.asBytes; - if (mfIsSectorTrailer(blockNo)) { + if (mfIsSectorTrailer(blockNo)) { // sector trailer. Fill in the keys. - memcpy(data , keyA + (sectorNo * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); + memcpy(data, keyA + (sectorNo * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); memcpy(data + 10, keyB + (sectorNo * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); } @@ -1051,7 +1051,7 @@ static int CmdHF14AMfDump(const char *Cmd) { } else if (m2) { numSectors = MIFARE_2K_MAXSECTOR; bytes = MIFARE_2K_MAX_BYTES; - } else if (m4) { + } else if (m4) { numSectors = MIFARE_4K_MAXSECTOR; bytes = MIFARE_4K_MAX_BYTES; } else { @@ -3809,7 +3809,7 @@ static int CmdHF14AMfSim(const char *Cmd) { if ((flags & FLAG_NR_AR_ATTACK) != FLAG_NR_AR_ATTACK) break; - + if ((resp.oldarg[0] & 0xffff) != CMD_HF_MIFARE_SIMULATE) break; @@ -3919,11 +3919,11 @@ void printKeyTableEx(size_t sectorscnt, sector_t *e_sector, uint8_t start_sector } PrintAndLogEx(SUCCESS, " " _YELLOW_("%03d") " | %03d | %s | %s | %s | %s" - , s - , mfSectorTrailerOfSector(s) - , strA, resA - , strB, resB - ); + , s + , mfSectorTrailerOfSector(s) + , strA, resA + , strB, resB + ); } PrintAndLogEx(SUCCESS, "-----+-----+--------------+---+--------------+----"); @@ -6656,7 +6656,7 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { return PM3_EINVARG; } - #define SUPER_MAX_TRACES 7 +#define SUPER_MAX_TRACES 7 uint8_t trace = 0; uint8_t traces[SUPER_MAX_TRACES][16]; @@ -7928,24 +7928,24 @@ static int CmdHF14AMfValue(const char *Cmd) { "hf mf value --blk 16 -k FFFFFFFFFFFF -b --get\n" "hf mf value --blk 16 -k FFFFFFFFFFFF --res --transfer 30 --tk FFFFFFFFFFFF --> transfer block 16 value to block 30 (even if block can't be incremented by ACL)\n" "hf mf value --get -d 87D612007829EDFF87D6120011EE11EE\n" - ); + ); void *argtable[] = { - arg_param_begin, - arg_str0("k", "key", "", "key, 6 hex bytes"), - arg_lit0("a", NULL, "input key type is key A (def)"), - arg_lit0("b", NULL, "input key type is key B"), - arg_u64_0(NULL, "inc", "", "Increment value by X (0 - 2147483647)"), - arg_u64_0(NULL, "dec", "", "Decrement value by X (0 - 2147483647)"), - arg_u64_0(NULL, "set", "", "Set value to X (-2147483647 - 2147483647)"), - arg_u64_0(NULL, "transfer", "", "Transfer value to other block (after inc/dec/restore)"), - arg_str0(NULL, "tkey", "", "transfer key, 6 hex bytes (if transfer is preformed to other sector)"), - arg_lit0(NULL, "ta", "transfer key type is key A (def)"), - arg_lit0(NULL, "tb", "transfer key type is key B"), - arg_lit0(NULL, "get", "Get value from block"), - arg_lit0(NULL, "res", "Restore (copy value to card buffer, should be used with --transfer)"), - arg_int0(NULL, "blk", "", "block number"), - arg_str0("d", "data", "", "block data to extract values from (16 hex bytes)"), - arg_param_end + arg_param_begin, + arg_str0("k", "key", "", "key, 6 hex bytes"), + arg_lit0("a", NULL, "input key type is key A (def)"), + arg_lit0("b", NULL, "input key type is key B"), + arg_u64_0(NULL, "inc", "", "Increment value by X (0 - 2147483647)"), + arg_u64_0(NULL, "dec", "", "Decrement value by X (0 - 2147483647)"), + arg_u64_0(NULL, "set", "", "Set value to X (-2147483647 - 2147483647)"), + arg_u64_0(NULL, "transfer", "", "Transfer value to other block (after inc/dec/restore)"), + arg_str0(NULL, "tkey", "", "transfer key, 6 hex bytes (if transfer is preformed to other sector)"), + arg_lit0(NULL, "ta", "transfer key type is key A (def)"), + arg_lit0(NULL, "tb", "transfer key type is key B"), + arg_lit0(NULL, "get", "Get value from block"), + arg_lit0(NULL, "res", "Restore (copy value to card buffer, should be used with --transfer)"), + arg_int0(NULL, "blk", "", "block number"), + arg_str0("d", "data", "", "block data to extract values from (16 hex bytes)"), + arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -8002,7 +8002,7 @@ static int CmdHF14AMfValue(const char *Cmd) { // Action: 0 Increment, 1 - Decrement, 2 - Restore, 3 - Set, 4 - Get, 5 - Decode from data // iceman: TODO - should be enum - uint8_t action = 4; + uint8_t action = 4; uint32_t value = 0; // Need to check we only have 1 of inc/dec/set and get the value from the selected option @@ -8073,10 +8073,10 @@ static int CmdHF14AMfValue(const char *Cmd) { } // don't want to write value data and break something - if ((blockno == 0) || - (mfIsSectorTrailer(blockno)) || - (trnval == 0) || - (trnval != -1 && mfIsSectorTrailer(trnval))) { + if ((blockno == 0) || + (mfIsSectorTrailer(blockno)) || + (trnval == 0) || + (trnval != -1 && mfIsSectorTrailer(trnval))) { PrintAndLogEx(WARNING, "invalid block number, should be a data block"); return PM3_EINVARG; } @@ -8094,7 +8094,7 @@ static int CmdHF14AMfValue(const char *Cmd) { memcpy(block, (uint8_t *)&value, 4); uint8_t cmddata[34]; - memcpy(cmddata, key, sizeof(key)); + memcpy(cmddata, key, sizeof(key)); // Key == 6 data went to 10, so lets offset 9 for inc/dec if (action == 0) { @@ -8105,13 +8105,13 @@ static int CmdHF14AMfValue(const char *Cmd) { } // 00 if increment, 01 if decrement, 02 if restore - cmddata[9] = action; - + cmddata[9] = action; + if (trnval != -1) { // transfer to block - cmddata[10] = trnval; - + cmddata[10] = trnval; + memcpy(cmddata + 27, transferkey, sizeof(transferkey)); if (mfSectorNum(trnval) != mfSectorNum(blockno)) { cmddata[33] = 1; // should send nested auth @@ -8164,7 +8164,7 @@ static int CmdHF14AMfValue(const char *Cmd) { if (isok) { PrintAndLogEx(SUCCESS, "Update ... : " _GREEN_("success")); - getval = true; + getval = true; // all ok so set flag to read current value } else { PrintAndLogEx(FAILED, "Update ... : " _RED_("failed")); diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index b079e15c1..4f956d3af 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1006,7 +1006,7 @@ static int MFPKeyCheck(uint8_t startSector, uint8_t endSector, uint8_t startKeyA for (uint8_t keyAB = startKeyAB; keyAB <= endKeyAB; keyAB++) { // main cycle with key check for (int i = 0; i < keyListLen; i++) { - + // allow client abort every iteration if (kbd_enter_pressed()) { PrintAndLogEx(WARNING, "\naborted via keyboard!\n"); @@ -1052,14 +1052,14 @@ static int MFPKeyCheck(uint8_t startSector, uint8_t endSector, uint8_t startKeyA selectCard = true; msleep(50); - // break out from keylist check loop, + // break out from keylist check loop, break; } if (verbose) PrintAndLogEx(WARNING, "\nsector %02d key %d [%s] res: %d", sector, keyAB, sprint_hex_inrow(keyList[i], 16), res); - // RES can be: + // RES can be: // PM3_ERFTRANS -7 // PM3_EWRONGANSWER -16 if (res == PM3_ERFTRANS) { diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 23b8ac235..8cd28b842 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -338,7 +338,7 @@ static void printHitag2PaxtonDowngrade(const uint8_t *data) { bytes = (bytes * 0x100) + data[i]; } - for (int j = 0; j< 8; j++) { + for (int j = 0; j < 8; j++) { num = bytes & mask; skip -= 5; mask = mask >> 5; diff --git a/client/src/cmdlfparadox.c b/client/src/cmdlfparadox.c index 2885227d3..650a8c5c4 100644 --- a/client/src/cmdlfparadox.c +++ b/client/src/cmdlfparadox.c @@ -48,7 +48,7 @@ static int CmdHelp(const char *Cmd); // This function will calculate the bitstream for a paradox card and place the result in bs. // It returns the calculated CRC from the fc and cn. // CRC calculation by mwalker33 -static uint8_t GetParadoxBits(const uint32_t fc, const uint32_t cn, unsigned int *bs){ +static uint8_t GetParadoxBits(const uint32_t fc, const uint32_t cn, unsigned int *bs) { uint8_t manchester[13] = { 0x00 }; // check size needed uint32_t t1; @@ -180,9 +180,9 @@ int demodParadox(bool verbose) { uint32_t rawHi2 = bytebits_to_byte(bits + idx, 32); uint32_t blocks[4] = {0}; - uint8_t crc = GetParadoxBits(fc,cardnum,blocks); - if(chksum != crc) - PrintAndLogEx(ERR,"CRC Error! Calculated CRC is " _GREEN_("%d") " but card CRC is " _RED_("%d") ".",crc,chksum); + uint8_t crc = GetParadoxBits(fc, cardnum, blocks); + if (chksum != crc) + PrintAndLogEx(ERR, "CRC Error! Calculated CRC is " _GREEN_("%d") " but card CRC is " _RED_("%d") ".", crc, chksum); PrintAndLogEx(INFO, "Paradox - ID: " _GREEN_("%x%08x") " FC: " _GREEN_("%d") " Card: " _GREEN_("%d") ", Checksum: %02x, Raw: %08x%08x%08x", @@ -291,7 +291,7 @@ static int CmdParadoxClone(const char *Cmd) { return PM3_EINVARG; } - if (fc > 999 || cn > 99999){ + if (fc > 999 || cn > 99999) { PrintAndLogEx(FAILED, "FC has a max value of 999 and CN has a max value of 99999"); return PM3_EINVARG; } @@ -379,7 +379,7 @@ static int CmdParadoxSim(const char *Cmd) { return PM3_EINVARG; } - if (fc > 999 || cn > 99999){ + if (fc > 999 || cn > 99999) { PrintAndLogEx(FAILED, "FC has a max value of 999 and CN has a max value of 99999"); return PM3_EINVARG; } @@ -390,7 +390,7 @@ static int CmdParadoxSim(const char *Cmd) { } } else { uint32_t blocks[4] = {0}; - GetParadoxBits(fc,cn,blocks); + GetParadoxBits(fc, cn, blocks); for (uint8_t i = 1; i < ARRAYLEN(blocks); i++) { num_to_bytes(blocks[i], sizeof(uint32_t), raw + ((i - 1) * 4)); } diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index 554658c9f..ffb90513b 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -4028,7 +4028,7 @@ static int CmdT55xxSniff(const char *Cmd) { if (use_graphbuf == false) { // make loop to call sniff with skip samples.. - // then build it up by adding + // then build it up by adding CmdLFSniff(""); } diff --git a/client/src/fileutils.c b/client/src/fileutils.c index bb9c7635e..3c904ac70 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -316,9 +316,9 @@ int saveFileJSON(const char *preferredName, JSONFileType ftype, uint8_t *data, s int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, size_t datalen, bool verbose, void (*callback)(json_t *), savePaths_t e_save_path) { if (ftype != jsfCustom) { - if (data == NULL || datalen == 0) { - return PM3_EINVARG; - } + if (data == NULL || datalen == 0) { + return PM3_EINVARG; + } } char *fileName = newfilenamemcopyEx(preferredName, ".json", e_save_path); @@ -2032,8 +2032,8 @@ int searchFile(char **foundpath, const char *pm3dir, const char *searchname, con PrintAndLogEx(FAILED, "Error - can't find `" _YELLOW_("%s") "`", filename); } } - free(filename); - return res; + free(filename); + return res; } int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumplen) { @@ -2067,7 +2067,7 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl } case MCT: { res = loadFileMCT_safe(fn, pdump, dumplen); - break; + break; } } diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index 49d3de065..328c2e63c 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -424,8 +424,8 @@ int DetectHID(uint8_t *d, uint16_t manufacture) { int convert_mad_to_arr(uint8_t *in, uint16_t ilen, uint8_t *out, uint16_t *olen) { - if (in == NULL || out == NULL || ilen == 0 ) { - return PM3_EINVARG; + if (in == NULL || out == NULL || ilen == 0) { + return PM3_EINVARG; } // MAD detection @@ -464,8 +464,8 @@ int convert_mad_to_arr(uint8_t *in, uint16_t ilen, uint8_t *out, uint16_t *olen) // copy to out (skip ST) memcpy(out, tmp, sizeof(tmp) - MFBLOCK_SIZE); out += sizeof(tmp) - MFBLOCK_SIZE; - *olen += sizeof(tmp) -MFBLOCK_SIZE; + *olen += sizeof(tmp) - MFBLOCK_SIZE; } } return PM3_SUCCESS; -} \ No newline at end of file +} diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index 311615c2a..09ff31945 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -313,7 +313,7 @@ static int ndefDecodeSig1(uint8_t *sig, size_t siglen) { if (sigType == stECDSA_P256) { slen = 32; } - + PrintAndLogEx(SUCCESS, "\tSignature [%u]...", intsiglen); print_hex_noascii_break(&sig[indx], intsiglen, 32); @@ -508,7 +508,7 @@ static int ndefDecodePayloadHandoverRequest(uint8_t *payload, size_t len) { PrintAndLogEx(INFO, _CYAN_("Handover Request")); uint8_t *p = payload; uint8_t major = (*(p) >> 4) & 0x0F; - uint8_t minor = *(p) & 0x0F; + uint8_t minor = *(p) & 0x0F; p++; PrintAndLogEx(INFO, "Version....... " _YELLOW_("%u.%u"), major, minor); @@ -866,7 +866,7 @@ static int ndefDecodeMime_bt(NDEFHeader_t *ndef) { uint8_t rev[6] = {0}; reverse_array_copy(ndef->Payload + 2, 6, rev); PrintAndLogEx(INFO, "BT MAC.......... " _YELLOW_("%s"), sprint_hex(rev, sizeof(rev))); - + // Let's check payload[8]. Tells us a bit about the UUID's. If 0x07 then it tells us a service UUID is 128bit switch (ndef->Payload[8]) { case 0x02: @@ -903,29 +903,29 @@ static int ndefDecodeMime_bt(NDEFHeader_t *ndef) { return PM3_SUCCESS; } -// https://raw.githubusercontent.com/haldean/ndef/master/docs/NFCForum-TS-RTD_1.0.pdf +// https://raw.githubusercontent.com/haldean/ndef/master/docs/NFCForum-TS-RTD_1.0.pdf static int ndefDecodeExternal_record(NDEFHeader_t *ndef) { - + if (ndef->TypeLen == 0) { PrintAndLogEx(INFO, "no type"); return PM3_SUCCESS; } - + if (ndef->PayloadLen == 0) { PrintAndLogEx(INFO, "no payload"); return PM3_SUCCESS; } PrintAndLogEx(INFO - , " URN... " _GREEN_("urn:nfc:ext:%.*s") - , (int)ndef->TypeLen - , ndef->Type - ); + , " URN... " _GREEN_("urn:nfc:ext:%.*s") + , (int)ndef->TypeLen + , ndef->Type + ); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "Payload [%zu]...", ndef->PayloadLen); print_hex_noascii_break(ndef->Payload, ndef->PayloadLen, 32); - + // do a character check? if (!strncmp((char *)ndef->Type, "pilet.ee:ekaart:2", ndef->TypeLen)) { PrintAndLogEx(NORMAL, ""); diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index e6d6dc438..ffe9c66ff 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -360,7 +360,8 @@ const static vocabulory_t vocabulory[] = { { 0, "hf mf gsave" }, { 0, "hf mf gsetblk" }, { 0, "hf mf gview" }, - { 0, "hf mf gdmconfig" }, + { 0, "hf mf gdmcfg" }, + { 0, "hf mf gdmsetcfg" }, { 0, "hf mf gdmsetblk" }, { 0, "hf mf ndefformat" }, { 0, "hf mf ndefread" }, diff --git a/client/update_amiibo_tools_lua.py b/client/update_amiibo_tools_lua.py index 873a6e18d..8a31b9d60 100644 --- a/client/update_amiibo_tools_lua.py +++ b/client/update_amiibo_tools_lua.py @@ -8,15 +8,15 @@ Author: Cory Solovewicz Description: This is a python script to automate what the updating of the amiibo_tools.lua -file which holds a lua table of all known amiibos. Previously updating the +file which holds a lua table of all known amiibos. Previously updating the amiibo_tools.lua was a very manual process. -This script automates the following original command: +This script automates the following original command: curl https://raw.githubusercontent.com/N3evin/AmiiboAPI/master/database/amiibo.json | jq 'del(.amiibos[].release)' | jq 'del(.characters)' | pbcopy --> transform to table -And outputs the formatted file as amiibo_tools.lua -If everything goes well, this should be an updated copy of amiibo_tools.lua -which can then be placed in the /lualibs/ directory. -The temporary amiibo.json file is then deleted +And outputs the formatted file as amiibo_tools.lua +If everything goes well, this should be an updated copy of amiibo_tools.lua +which can then be placed in the /lualibs/ directory. +The temporary amiibo.json file is then deleted Dependencies: python3 -m pip install jq @@ -25,7 +25,7 @@ How to run: python update_amiibo_tools_lua.py The script will create the file amiibo_tools.lua -After running, manually backup the original /lualibs/amiibo_tools.lua and move the +After running, manually backup the original /lualibs/amiibo_tools.lua and move the updated amiibo_tools.lua to the /lualibs/ directory. ----------------------------------------------------------------------------- """ diff --git a/doc/commands.json b/doc/commands.json index f8712fc47..4e8f0fd90 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -1354,9 +1354,10 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file (optional) filename, if no UID will be used as filename" + "-f, --file (optional) filename, if no UID will be used as filename", + "--ns no save to file" ], - "usage": "hf 14b dump [-h] [-f ]" + "usage": "hf 14b dump [-h] [-f ] [--ns]" }, "hf 14b help": { "command": "hf 14b help", @@ -4218,9 +4219,10 @@ "--mini MIFARE Classic Mini / S20", "--1k MIFARE Classic 1k / S50 (def)", "--2k MIFARE Classic/Plus 2k", - "--4k MIFARE Classic 4k / S70" + "--4k MIFARE Classic 4k / S70", + "--ns no save to file" ], - "usage": "hf mf dump [-h] [-f ] [-k ] [--mini] [--1k] [--2k] [--4k]" + "usage": "hf mf dump [-h] [-f ] [-k ] [--mini] [--1k] [--2k] [--4k] [--ns]" }, "hf mf ecfill": { "command": "hf mf ecfill", @@ -4400,18 +4402,18 @@ ], "usage": "hf mf fchk [-h] [-k ]... [--mini] [--1k] [--2k] [--4k] [--emu] [--dump] [--mem] [-f ]" }, - "hf mf gdmconfig": { - "command": "hf mf gdmconfig", + "hf mf gdmcfg": { + "command": "hf mf gdmcfg", "description": "Get configuration data from magic gen4 GDM card.", "notes": [ - "hf mf gdmconfig" + "hf mf gdmcfg" ], "offline": false, "options": [ "-h, --help This help", "-k, --key key 6 bytes" ], - "usage": "hf mf gdmconfig [-h] [-k ]" + "usage": "hf mf gdmcfg [-h] [-k ]" }, "hf mf gdmsetblk": { "command": "hf mf gdmsetblk", @@ -4431,6 +4433,19 @@ ], "usage": "hf mf gdmsetblk [-hab] --blk [-d ] [-k ] [--force]" }, + "hf mf gdmsetcfg": { + "command": "hf mf gdmsetcfg", + "description": "Set configuration data on a magic gen4 GDM card", + "notes": [ + "hf mf gdmsetcfg -d 850000000000000000005A5A00000008" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-d, --data bytes to write, 16 hex bytes" + ], + "usage": "hf mf gdmsetcfg [-h] -d " + }, "hf mf gen3blk": { "command": "hf mf gen3blk", "description": "Overwrite full manufacturer block for magic Gen3 card - You can specify part of manufacturer block as 4/7-bytes for UID change only", @@ -4902,6 +4917,7 @@ "hf mf value --blk 16 -k FFFFFFFFFFFF --inc 10", "hf mf value --blk 16 -k FFFFFFFFFFFF -b --dec 10", "hf mf value --blk 16 -k FFFFFFFFFFFF -b --get", + "hf mf value --blk 16 -k FFFFFFFFFFFF --res --transfer 30 --tk FFFFFFFFFFFF -> transfer block 16 value to block 30 (even if block can't be incremented by ACL)", "hf mf value --get -d 87D612007829EDFF87D6120011EE11EE" ], "offline": true, @@ -4910,14 +4926,19 @@ "-k, --key key, 6 hex bytes", "-a input key type is key A (def)", "-b input key type is key B", - "--inc Incremenet value by X (0 - 2147483647)", - "--dec Dcrement value by X (0 - 2147483647)", + "--inc Increment value by X (0 - 2147483647)", + "--dec Decrement value by X (0 - 2147483647)", "--set Set value to X (-2147483647 - 2147483647)", + "--transfer Transfer value to other block (after inc/dec/restore)", + "--tkey transfer key, 6 hex bytes (if transfer is preformed to other sector)", + "--ta transfer key type is key A (def)", + "--tb transfer key type is key B", "--get Get value from block", + "--res Restore (copy value to card buffer, should be used with --transfer)", "--blk block number", "-d, --data block data to extract values from (16 hex bytes)" ], - "usage": "hf mf value [-hab] [-k ] [--inc ] [--dec ] [--set ] [--get] [--blk ] [-d ]" + "usage": "hf mf value [-hab] [-k ] [--inc ] [--dec ] [--set ] [--transfer ] [--tkey ] [--ta] [--tb] [--get] [--res] [--blk ] [-d ]" }, "hf mf view": { "command": "hf mf view", @@ -6146,7 +6167,7 @@ }, "hf mfp commitp": { "command": "hf mfp commitp", - "description": "Executes Commit Perso command. Can be used in SL0 mode only.", + "description": "Executes Commit Perso command. Can be used in SL0 mode only. OBS! This command will not be executed if CardConfigKey, CardMasterKey and L3SwitchKey AES keys are not written.", "notes": [ "hf mfp commitp" ], @@ -6246,9 +6267,9 @@ "-b, --keyb Use key B (def: keyA)", "-p, --plain Plain communication mode between reader and card", "--blk <0..255> Block number", - "--key Key, 16 hex bytes" + "-k, --key Key, 16 hex bytes" ], - "usage": "hf mfp rdbl [-hvbp] [-n ] --blk <0..255> [--key ]" + "usage": "hf mfp rdbl [-hvbp] [-n ] --blk <0..255> [-k ]" }, "hf mfp rdsc": { "command": "hf mfp rdsc", @@ -6335,9 +6356,10 @@ "-k, --key Key for authentication (UL-C 16 bytes, EV1/NTAG 4 bytes)", "-l Swap entered key's endianness", "-p, --page Manually set start page number to start from", - "-q, --qty Manually set number of pages to dump" + "-q, --qty Manually set number of pages to dump", + "--ns no save to file" ], - "usage": "hf mfu dump [-hl] [-f ] [-k ] [-p ] [-q ]" + "usage": "hf mfu dump [-hl] [-f ] [-k ] [-p ] [-q ] [--ns]" }, "hf mfu eload": { "command": "hf mfu eload", @@ -6565,7 +6587,7 @@ }, "hf mfu tamper": { "command": "hf mfu tamper", - "description": "Set the congiguration of the NTAG 213TT tamper feature Supports: NTAG 213TT", + "description": "Set the configuration of the NTAG 213TT tamper feature Supports: NTAG 213TT", "notes": [ "hf mfu tamper -e -> enable tamper feature", "hf mfu tamper -d -> disable tamper feature", @@ -9610,7 +9632,7 @@ "command": "lf paradox clone", "description": "clone a paradox tag to a T55x7, Q5/T5555 or EM4305/4469 tag.", "notes": [ - "lf paradox clone --fc 96 --cn 40426 -> encode for T55x7 tag with fc and cn", + "lf paradox clone --fc 96 --cn 40426 [--q5|--em] -> encode for T55x7 tag with fc and cn", "lf paradox clone --raw 0f55555695596a6a9999a59a -> encode for T55x7 tag", "lf paradox clone --raw 0f55555695596a6a9999a59a --q5 -> encode for Q5/T5555 tag", "lf paradox clone --raw 0f55555695596a6a9999a59a --em -> encode for EM4305/4469" @@ -9663,14 +9685,17 @@ "command": "lf paradox sim", "description": "Enables simulation of paradox card with specified card number. Simulation runs until the button is pressed or another USB command is issued.", "notes": [ - "lf paradox sim --raw 0f55555695596a6a9999a59a" + "lf paradox sim --raw 0f55555695596a6a9999a59a -> simulate tag", + "lf paradox clone --fc 96 --cn 40426 -> simulate tag with fc and cn" ], "offline": false, "options": [ "-h, --help This help", - "-r, --raw raw hex data. 12 bytes" + "-r, --raw raw hex data. 12 bytes", + "--fc facility code", + "--cn card number" ], - "usage": "lf paradox sim [-h] [-r ]" + "usage": "lf paradox sim [-h] [-r ] [--fc ] [--cn ]" }, "lf pcf7931 config": { "command": "lf pcf7931 config", @@ -10199,12 +10224,13 @@ "-f, --file filename (default is generated on blk 0)", "-o, --override override, force pwd read despite danger to card", "-p, --pwd password (4 hex bytes)", + "--ns no save", "--r0 downlink - fixed bit length", "--r1 downlink - long leading reference", "--r2 downlink - leading zero", "--r3 downlink - 1 of 4 coding reference" ], - "usage": "lf t55xx dump [-ho] [-f ] [-p ] [--r0] [--r1] [--r2] [--r3]" + "usage": "lf t55xx dump [-ho] [-f ] [-p ] [--ns] [--r0] [--r1] [--r2] [--r3]" }, "lf t55xx help": { "command": "lf t55xx help", @@ -11987,8 +12013,8 @@ } }, "metadata": { - "commands_extracted": 754, + "commands_extracted": 755, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-03-26T15:04:49" + "extracted_on": "2023-05-25T01:54:13" } -} +} \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 487cea0c9..c11a548e8 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -523,7 +523,8 @@ Check column "offline" for their availability. |`hf mf gsave `|N |`Save dump from card into file or emulator` |`hf mf gsetblk `|N |`Write block to card` |`hf mf gview `|N |`View card` -|`hf mf gdmconfig `|N |`Read config block from card` +|`hf mf gdmcfg `|N |`Read config block from card` +|`hf mf gdmsetcfg `|N |`Write config block to card` |`hf mf gdmsetblk `|N |`Write block to card` |`hf mf ndefformat `|N |`Format MIFARE Classic Tag as NFC Tag` |`hf mf ndefread `|N |`Read and print NDEF records from card` @@ -568,7 +569,7 @@ Check column "offline" for their availability. |`hf mfu restore `|N |`Restore a dump onto a MFU MAGIC tag` |`hf mfu view `|Y |`Display content from tag dump file` |`hf mfu wrbl `|N |`Write block` -|`hf mfu tamper `|N |`Cofigure the tamper feature on an NTAG 213TT` +|`hf mfu tamper `|N |`Configure the tamper feature on an NTAG 213TT` |`hf mfu eload `|N |`Load Ultralight dump file into emulator memory` |`hf mfu esave `|N |`Save Ultralight dump file from emulator memory` |`hf mfu eview `|N |`View emulator memory` From 0606388e03ae9ca99320e3f5583fc88caf7a3b6d Mon Sep 17 00:00:00 2001 From: Angel Date: Wed, 24 May 2023 22:02:20 -0400 Subject: [PATCH 0015/1034] Updated CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85593f3b2..f5f2103ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,6 +67,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Added possible Paxton id to hitag2 tag info output - Changed `hf mf sim` - reduce 50ms threshold to 6ms for reset to idle #1974 (@net147) - Update `amiibo_tools.lua` with new identifiers and create a python script `update_amiibo_tools_lua.py` to automate the process in the future. (@CorySolovewicz) + - Added `lf paradox sim --fc --cn` - Simulates Paradox fob from facility code and card number (jerji) ## [Nitride.4.16191][2023-01-29] - Changed `build_all_firmwares.sh` to fit GENERIC 256kb firmware images (@doegox) From 328e5461f8896f1a26295dc5fe573cbdc5e81549 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 27 May 2023 10:46:42 +0200 Subject: [PATCH 0016/1034] added "--sk" param to hf mf eview and view commands. This param extracts and saves keys to binary key file --- CHANGELOG.md | 10 +++++--- client/src/cmdhfmf.c | 59 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85593f3b2..0906e8800 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf mf eview --sk` - now can extract keys and save to file (@iceman1001) + - Changed `hf mf view --sk` - now can extract keys and save to file (@iceman1001) - Changed `hf mf sim` - reduce 6ms threshold to 4ms for reset to idle #1974 (@net147) - Rebuilt the Spartan-2 `fpga_*.bit` files to include the `hi_iso14443a.v` update (@d18c7db) - Added minor orphaned change from `hi_iso14443a.v` in `fpga-xc3s100e` to `hi_iso14443a.v` in `fpga-xc2s30` (@d18c7db) @@ -22,7 +24,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `hf mf supercard` - Support editing UID and recovery of keys from second generation card (@AloneLiberty) - Added iClass credit key to default iClass key table and reorganized key order (@GuruSteve) - Changed `hf mf value` - ability to use transfer on different block (@AloneLiberty) - - Change `hf mf dump --ns` - dump command now supports `no save` of MFC card memory (@iceman1001) + - Changed `hf mf dump --ns` - dump command now supports `no save` of MFC card memory (@iceman1001) - Added `hf mf gdmsetcfg` - Supprt Gen4 GDM write configuration block (@iceman1001) - Added `hf mf gdmcfg` - Support Gen4 GDM read configuration block (@iceman1001) - Changed magic note to include a section about GDM tags (@iceman1001) @@ -62,11 +64,11 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Added `hf legic info` command for other sources (@0xdeb) - Added `hf legic einfo` - views emulator menory (@0xdeb) - Changed `hf legic view` - now also print the decoded info of the dump file (@0xdeb) - - Now `script run hf_mf_ultimatecard.lua -u` supports 10bytes UID (@alejandro12120) - - Update documentation for installation on macOS with MacPorts (@linuxgemini) + - Changed `script run hf_mf_ultimatecard.lua -u` to support 10bytes UID (@alejandro12120) + - Updated documentation for installation on macOS with MacPorts (@linuxgemini) - Added possible Paxton id to hitag2 tag info output - Changed `hf mf sim` - reduce 50ms threshold to 6ms for reset to idle #1974 (@net147) - - Update `amiibo_tools.lua` with new identifiers and create a python script `update_amiibo_tools_lua.py` to automate the process in the future. (@CorySolovewicz) + - Updated `amiibo_tools.lua` with new identifiers and create a python script `update_amiibo_tools_lua.py` to automate the process in the future. (@CorySolovewicz) ## [Nitride.4.16191][2023-01-29] - Changed `build_all_firmwares.sh` to fit GENERIC 256kb firmware images (@doegox) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index aebce5737..7487088dd 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -320,6 +320,52 @@ static int mf_print_keys(uint16_t n, uint8_t *d) { return PM3_SUCCESS; } +// MFC dump , extract and save the keys to key file +static int mf_save_keys_from_arr(uint16_t n, uint8_t *d) { + uint8_t sectors = 0; + switch (n) { + case MIFARE_MINI_MAXBLOCK: + sectors = MIFARE_MINI_MAXSECTOR; + break; + case MIFARE_2K_MAXBLOCK: + sectors = MIFARE_2K_MAXSECTOR; + break; + case MIFARE_4K_MAXBLOCK: + sectors = MIFARE_4K_MAXSECTOR; + break; + case MIFARE_1K_MAXBLOCK: + default: + sectors = MIFARE_1K_MAXSECTOR; + break; + } + + uint16_t keysize = 2 * MIFARE_KEY_SIZE * sectors; + + uint8_t *keys = calloc(keysize, sizeof(uint8_t)); + if (keys == NULL) { + return PM3_EMALLOC; + } + + uint8_t sector = 0; + for (uint16_t i = 0; i < n; i++) { + if (mfIsSectorTrailer(i)) { + // key A offset in ST block + memcpy(keys + (MIFARE_KEY_SIZE * sector), d + (i * MFBLOCK_SIZE), MIFARE_KEY_SIZE); + + // key B offset in ST block + memcpy(keys + (MIFARE_KEY_SIZE * sectors) + (MIFARE_KEY_SIZE * sector), d + (i * MFBLOCK_SIZE) + 10, MIFARE_KEY_SIZE); + + sector++; + } + } + + char fn[FILE_PATH_SIZE] = {0}; + snprintf(fn, sizeof(fn), "hf-mf-%s-keys", sprint_hex_inrow(d, 4)); + saveFile(fn, ".bin", keys, keysize); + free(keys); + return PM3_SUCCESS; +} + /* static void mf_print_values(uint16_t n, uint8_t *d) { @@ -4396,6 +4442,7 @@ static int CmdHF14AMfEView(const char *Cmd) { arg_lit0(NULL, "2k", "MIFARE Classic/Plus 2k"), arg_lit0(NULL, "4k", "MIFARE Classic 4k / S70"), arg_lit0("v", "verbose", "verbose output"), + arg_lit0(NULL, "sk", "Save extracted keys to file"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -4404,6 +4451,7 @@ static int CmdHF14AMfEView(const char *Cmd) { bool m2 = arg_get_lit(ctx, 3); bool m4 = arg_get_lit(ctx, 4); bool verbose = arg_get_lit(ctx, 5); + bool save_keys = arg_get_lit(ctx, 6); CLIParserFree(ctx); // validations @@ -4449,6 +4497,11 @@ static int CmdHF14AMfEView(const char *Cmd) { if (verbose) { mf_print_keys(block_cnt, dump); } + + if (save_keys) { + mf_save_keys_from_arr(block_cnt, dump); + } + free(dump); return PM3_SUCCESS; } @@ -7028,6 +7081,7 @@ static int CmdHF14AMfView(const char *Cmd) { arg_param_begin, arg_str1("f", "file", "", "filename of dump"), arg_lit0("v", "verbose", "verbose output"), + arg_lit0(NULL, "sk", "Save extracted keys to file"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -7035,6 +7089,7 @@ static int CmdHF14AMfView(const char *Cmd) { char filename[FILE_PATH_SIZE]; CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); bool verbose = arg_get_lit(ctx, 2); + bool save_keys = arg_get_lit(ctx, 3); CLIParserFree(ctx); // read dump file @@ -7065,6 +7120,10 @@ static int CmdHF14AMfView(const char *Cmd) { mf_analyse_acl(block_cnt, dump); } + if (save_keys) { + mf_save_keys_from_arr(block_cnt, dump); + } + int sector = DetectHID(dump, 0x4910); if (sector > -1) { // decode it From 0cc7373655f949f5eadfa3d5a562e7cfebd5c120 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 27 May 2023 12:10:32 +0200 Subject: [PATCH 0017/1034] fix resource leaks --- client/src/cmdlfem4x50.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index 017f1c121..07b1f91b0 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -382,6 +382,7 @@ int CmdEM4x50Brute(const char *Cmd) { etd.bruteforce_mode = BRUTEFORCE_MODE_CHARSET; } else { PrintAndLogEx(FAILED, "Unknown bruteforce mode: %s", mode); + CLIParserFree(ctx); return PM3_EINVARG; } @@ -396,11 +397,13 @@ int CmdEM4x50Brute(const char *Cmd) { if (begin_len != 4) { PrintAndLogEx(FAILED, "'begin' parameter must be 4 bytes"); + CLIParserFree(ctx); return PM3_EINVARG; } if (end_len != 4) { PrintAndLogEx(FAILED, "'end' parameter must be 4 bytes"); + CLIParserFree(ctx); return PM3_EINVARG; } @@ -417,6 +420,7 @@ int CmdEM4x50Brute(const char *Cmd) { if (etd.bruteforce_charset == 0) { PrintAndLogEx(FAILED, "Please enable at least one charset when using charset bruteforce mode."); + CLIParserFree(ctx); return PM3_EINVARG; } From 32fcf5e870f1e596092bbfc0c7963a236e7a8379 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 27 May 2023 17:00:28 +0200 Subject: [PATCH 0018/1034] make 16 bytes default cols --- CHANGELOG.md | 1 + client/src/cmdflashmemspiffs.c | 4 ++-- client/src/cmdusart.c | 2 +- doc/uart_notes.md | 2 +- tools/btaddon/requirements.txt | 1 + 5 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 tools/btaddon/requirements.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 0906e8800..118c4b793 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `usart btfactory` - handles the new BT board with version "BT SPP V3.0" (@iceman1001) - Changed `hf mf eview --sk` - now can extract keys and save to file (@iceman1001) - Changed `hf mf view --sk` - now can extract keys and save to file (@iceman1001) - Changed `hf mf sim` - reduce 6ms threshold to 4ms for reset to idle #1974 (@net147) diff --git a/client/src/cmdflashmemspiffs.c b/client/src/cmdflashmemspiffs.c index a1923d588..e84b3e597 100644 --- a/client/src/cmdflashmemspiffs.c +++ b/client/src/cmdflashmemspiffs.c @@ -531,7 +531,7 @@ static int CmdFlashMemSpiFFSView(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_str1("f", "file", "", "SPIFFS file to view"), - arg_int0("c", "cols", "", "column breaks (def 32)"), + arg_int0("c", "cols", "", "column breaks (def 16)"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -540,7 +540,7 @@ static int CmdFlashMemSpiFFSView(const char *Cmd) { char fn[32] = {0}; CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)fn, 32, &fnlen); - int breaks = arg_get_int_def(ctx, 2, 32); + int breaks = arg_get_int_def(ctx, 2, 16); CLIParserFree(ctx); uint8_t *dump = NULL; diff --git a/client/src/cmdusart.c b/client/src/cmdusart.c index d67ae9bf1..2b98181d0 100644 --- a/client/src/cmdusart.c +++ b/client/src/cmdusart.c @@ -157,7 +157,7 @@ static int usart_bt_testcomm(uint32_t baudrate, uint8_t parity) { ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); // such large timeout needed if (ret == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); - if (strcmp((char *)data, "hc01.comV2.0") == 0) { + if (strcmp((char *)data, "hc01.comV2.0") == 0 || strcmp((char *)data, "BT SPP V3.0") == 0) { PrintAndLogEx(SUCCESS, "Add-on " _GREEN_("found!")); return PM3_SUCCESS; } diff --git a/doc/uart_notes.md b/doc/uart_notes.md index 5c8cb65b6..eeee8a1d0 100644 --- a/doc/uart_notes.md +++ b/doc/uart_notes.md @@ -199,7 +199,7 @@ The ROLE command takes its parameter after an equal sign: |Command |Description |Reply | |-------------------|------------------------------------------------------|--------------| -|`AT+VERSION` |print firmware version |`hc01.comV2.0`| +|`AT+VERSION` |print firmware version |`hc01.comV2.0` or `BT SPP V3.0`| |`AT+BAUD8` |set baudrate to 115200 |`OK115200` | |`AT+PIN1234` |set PINCODE to 1234. (must be numbers) |`OKsetPIN` | |`AT+NAMEPM3_RDV4.0`|set device name (as shown to BT hosts) to `PM3_RDV4.0`|`OKsetname` | diff --git a/tools/btaddon/requirements.txt b/tools/btaddon/requirements.txt new file mode 100644 index 000000000..3452b96e3 --- /dev/null +++ b/tools/btaddon/requirements.txt @@ -0,0 +1 @@ +pyserial==3.5.0 From 1d0da726ecbc73e11d60df028df1984be4c786b4 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 27 May 2023 21:10:11 +0200 Subject: [PATCH 0019/1034] the clocks for usart rxtx wasnt enabled. --- armsrc/appmain.c | 15 ++++++++++--- armsrc/usart.c | 52 ++++++++++++++++++++++++++++------------------ client/src/comms.c | 9 +++++--- 3 files changed, 50 insertions(+), 26 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index f68739da2..310aa6a0d 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -2051,11 +2051,16 @@ static void PacketReceived(PacketCommandNG *packet) { } PACKED; struct p *payload = (struct p *) &packet->data.asBytes; usart_writebuffer_sync(payload->data, packet->length - sizeof(payload)); + uint16_t available; uint16_t pre_available = 0; uint8_t *dest = BigBuf_malloc(USART_FIFOLEN); uint32_t wait = payload->waittime; + + StartTicks(); + uint32_t ti = GetTickCount(); + while (true) { WaitMS(50); available = usart_rxdata_available(); @@ -2070,12 +2075,15 @@ static void PacketReceived(PacketCommandNG *packet) { if (GetTickCountDelta(ti) > wait) break; } + if (available > 0) { uint16_t len = usart_read_ng(dest, available); reply_ng(CMD_USART_TXRX, PM3_SUCCESS, dest, len); } else { reply_ng(CMD_USART_TXRX, PM3_ENODATA, NULL, 0); } + + StopTicks(); BigBuf_free(); LED_B_OFF(); break; @@ -2718,9 +2726,6 @@ void __attribute__((noreturn)) AppMain(void) { } #endif -#ifdef WITH_FPC_USART - usart_init(USART_BAUD_RATE, USART_PARITY); -#endif #ifdef WITH_FLASH // If flash is not present, BUSY_TIMEOUT kicks in, let's do it after USB @@ -2733,6 +2738,10 @@ void __attribute__((noreturn)) AppMain(void) { rdv40_spiffs_check(); #endif +#ifdef WITH_FPC_USART + usart_init(USART_BAUD_RATE, USART_PARITY); +#endif + // This is made as late as possible to ensure enumeration without timeout // against device such as http://www.hobbytronics.co.uk/usb-host-board-v2 // In other words, keep the interval between usb_enable() and the main loop as short as possible. diff --git a/armsrc/usart.c b/armsrc/usart.c index f92e9c701..915d4a445 100644 --- a/armsrc/usart.c +++ b/armsrc/usart.c @@ -46,8 +46,8 @@ void usart_close(void) { } */ -static uint8_t us_inbuf1[USART_BUFFLEN]; -static uint8_t us_inbuf2[USART_BUFFLEN]; +static uint8_t us_in_a[USART_BUFFLEN]; +static uint8_t us_in_b[USART_BUFFLEN]; static uint8_t *usart_cur_inbuf = NULL; static uint16_t usart_cur_inbuf_off = 0; static uint8_t us_rxfifo[USART_FIFOLEN]; @@ -56,7 +56,9 @@ static size_t us_rxfifo_high = 0; static void usart_fill_rxfifo(void) { - uint16_t rxfifo_free ; + + uint16_t rxfifo_free = 0; + if (pUS1->US_RNCR == 0) { // One buffer got filled, backup buffer being used if (us_rxfifo_low > us_rxfifo_high) @@ -79,19 +81,22 @@ static void usart_fill_rxfifo(void) { pUS1->US_RNCR = USART_BUFFLEN; // Swap current buff - if (usart_cur_inbuf == us_inbuf1) - usart_cur_inbuf = us_inbuf2; + if (usart_cur_inbuf == us_in_a) + usart_cur_inbuf = us_in_b; else - usart_cur_inbuf = us_inbuf1; + usart_cur_inbuf = us_in_a; usart_cur_inbuf_off = 0; } else { // Take only what we have room for available = rxfifo_free; for (uint16_t i = 0; i < available; i++) { + us_rxfifo[us_rxfifo_high++] = usart_cur_inbuf[usart_cur_inbuf_off + i]; - if (us_rxfifo_high == sizeof(us_rxfifo)) + + if (us_rxfifo_high == sizeof(us_rxfifo)) { us_rxfifo_high = 0; + } } usart_cur_inbuf_off += available; return; @@ -101,18 +106,20 @@ static void usart_fill_rxfifo(void) { if (pUS1->US_RCR < USART_BUFFLEN - usart_cur_inbuf_off) { // Current buffer partially filled if (us_rxfifo_low > us_rxfifo_high) - rxfifo_free = us_rxfifo_low - us_rxfifo_high; + rxfifo_free = (us_rxfifo_low - us_rxfifo_high); else - rxfifo_free = sizeof(us_rxfifo) - us_rxfifo_high + us_rxfifo_low; + rxfifo_free = (sizeof(us_rxfifo) - us_rxfifo_high + us_rxfifo_low); - uint16_t available = USART_BUFFLEN - pUS1->US_RCR - usart_cur_inbuf_off; + uint16_t available = (USART_BUFFLEN - pUS1->US_RCR - usart_cur_inbuf_off); if (available > rxfifo_free) available = rxfifo_free; + for (uint16_t i = 0; i < available; i++) { us_rxfifo[us_rxfifo_high++] = usart_cur_inbuf[usart_cur_inbuf_off + i]; - if (us_rxfifo_high == sizeof(us_rxfifo)) + if (us_rxfifo_high == sizeof(us_rxfifo)) { us_rxfifo_high = 0; + } } usart_cur_inbuf_off += available; } @@ -121,9 +128,9 @@ static void usart_fill_rxfifo(void) { uint16_t usart_rxdata_available(void) { usart_fill_rxfifo(); if (us_rxfifo_low <= us_rxfifo_high) - return us_rxfifo_high - us_rxfifo_low; + return (us_rxfifo_high - us_rxfifo_low); else - return sizeof(us_rxfifo) - us_rxfifo_low + us_rxfifo_high; + return (sizeof(us_rxfifo) - us_rxfifo_low + us_rxfifo_high); } uint32_t usart_read_ng(uint8_t *data, size_t len) { @@ -143,9 +150,10 @@ uint32_t usart_read_ng(uint8_t *data, size_t len) { uint32_t maxtry = 10 * (3000000 / USART_BAUD_RATE) + tryconstant; while (len) { - uint32_t available = usart_rxdata_available(); + uint32_t available = usart_rxdata_available(); uint32_t packetSize = MIN(available, len); + if (available > 0) { // Dbprintf_usb("Dbg USART ask %d bytes, available %d bytes, packetsize %d bytes", len, available, packetSize); // highest_observed_try = MAX(highest_observed_try, try); @@ -153,8 +161,9 @@ uint32_t usart_read_ng(uint8_t *data, size_t len) { } len -= packetSize; while (packetSize--) { - if (us_rxfifo_low == sizeof(us_rxfifo)) + if (us_rxfifo_low == sizeof(us_rxfifo)) { us_rxfifo_low = 0; + } data[bytes_rcv++] = us_rxfifo[us_rxfifo_low++]; } if (try++ == maxtry) { @@ -183,10 +192,13 @@ int usart_writebuffer_sync(uint8_t *data, size_t len) { void usart_init(uint32_t baudrate, uint8_t parity) { - if (baudrate != 0) + if (baudrate != 0) { g_usart_baudrate = baudrate; - if ((parity == 'N') || (parity == 'O') || (parity == 'E')) + } + + if ((parity == 'N') || (parity == 'O') || (parity == 'E')) { g_usart_parity = parity; + } // For a nice detailed sample, interrupt driven but still relevant. // See https://www.sparkfun.com/datasheets/DevTools/SAM7/at91sam7%20serial%20communications.pdf @@ -262,11 +274,11 @@ void usart_init(uint32_t baudrate, uint8_t parity) { pUS1->US_TCR = 0; pUS1->US_TNPR = (uint32_t)0; pUS1->US_TNCR = 0; - pUS1->US_RPR = (uint32_t)us_inbuf1; + pUS1->US_RPR = (uint32_t)us_in_a; pUS1->US_RCR = USART_BUFFLEN; - usart_cur_inbuf = us_inbuf1; + usart_cur_inbuf = us_in_a; usart_cur_inbuf_off = 0; - pUS1->US_RNPR = (uint32_t)us_inbuf2; + pUS1->US_RNPR = (uint32_t)us_in_b; pUS1->US_RNCR = USART_BUFFLEN; // Initialize our fifo diff --git a/client/src/comms.c b/client/src/comms.c index a8ed8be4c..64bea9f65 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -30,8 +30,8 @@ #include "util_posix.h" // msclock #include "util_darwin.h" // en/dis-ableNapp(); -//#define COMMS_DEBUG -//#define COMMS_DEBUG_RAW +// #define COMMS_DEBUG +// #define COMMS_DEBUG_RAW // Serial port that we are communicating with the PM3 on. static serial_port sp = NULL; @@ -369,6 +369,7 @@ __attribute__((force_align_arg_pointer)) } res = uart_receive(sp, (uint8_t *)&rx_raw.pre, sizeof(PacketResponseNGPreamble), &rxlen); + if ((res == PM3_SUCCESS) && (rxlen == sizeof(PacketResponseNGPreamble))) { rx.magic = rx_raw.pre.magic; uint16_t length = rx_raw.pre.length; @@ -380,6 +381,7 @@ __attribute__((force_align_arg_pointer)) PrintAndLogEx(WARNING, "Received packet frame with incompatible length: 0x%04x", length); error = true; } + if ((!error) && (length > 0)) { // Get the variable length payload res = uart_receive(sp, (uint8_t *)&rx_raw.data, length, &rxlen); @@ -418,10 +420,10 @@ __attribute__((force_align_arg_pointer)) rx.length = 0; // set received length to 0 else { // old frames can't be empty PrintAndLogEx(WARNING, "Received empty MIX packet frame (length: 0x00)"); - error = true; } } + if (!error) { // Get the postamble res = uart_receive(sp, (uint8_t *)&rx_raw.foopost, sizeof(PacketResponseNGPostamble), &rxlen); if ((res != PM3_SUCCESS) || (rxlen != sizeof(PacketResponseNGPostamble))) { @@ -429,6 +431,7 @@ __attribute__((force_align_arg_pointer)) error = true; } } + if (!error) { // Check CRC, accept MAGIC as placeholder rx.crc = rx_raw.foopost.crc; if (rx.crc != RESPONSENG_POSTAMBLE_MAGIC) { From 62b184ce490dbd37d8f0d2edfe53291afd6d947f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 27 May 2023 21:12:58 +0200 Subject: [PATCH 0020/1034] adapt usart rx to enable clocks --- armsrc/appmain.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 310aa6a0d..38c680050 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -2014,11 +2014,16 @@ static void PacketReceived(PacketCommandNG *packet) { uint32_t waittime; } PACKED; struct p *payload = (struct p *) &packet->data.asBytes; + uint16_t available; uint16_t pre_available = 0; uint8_t *dest = BigBuf_malloc(USART_FIFOLEN); uint32_t wait = payload->waittime; + + StartTicks(); + uint32_t ti = GetTickCount(); + while (true) { WaitMS(50); available = usart_rxdata_available(); @@ -2039,6 +2044,8 @@ static void PacketReceived(PacketCommandNG *packet) { } else { reply_ng(CMD_USART_RX, PM3_ENODATA, NULL, 0); } + + StopTicks(); BigBuf_free(); LED_B_OFF(); break; From c5c0ef36a730f5af0417d3daf13485b08f413f74 Mon Sep 17 00:00:00 2001 From: d18c7db Date: Sat, 27 May 2023 21:47:51 +0200 Subject: [PATCH 0021/1034] Fix truncated FPGA upload due to incorrect integer size variable --- CHANGELOG.md | 1 + armsrc/fpgaloader.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 118c4b793..8d8885d30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed truncated FPGA upload due to incorrect integer size variable (@d18c7db) - Changed `usart btfactory` - handles the new BT board with version "BT SPP V3.0" (@iceman1001) - Changed `hf mf eview --sk` - now can extract keys and save to file (@iceman1001) - Changed `hf mf view --sk` - now can extract keys and save to file (@iceman1001) diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index 802c77558..61c2df9d1 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -393,7 +393,7 @@ static int bitparse_find_section(int bitstream_version, char section_name, uint3 while (numbytes < MAX_FPGA_BIT_STREAM_HEADER_SEARCH) { char current_name = get_from_fpga_stream(bitstream_version, compressed_fpga_stream, output_buffer); numbytes++; - uint16_t current_length = 0; + uint32_t current_length = 0; if (current_name < 'a' || current_name > 'e') { /* Strange section name, abort */ break; From 336bd06d8844d09ed3dc2c21a11278f6bfe6e22d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 28 May 2023 07:34:27 +0200 Subject: [PATCH 0022/1034] type fix --- armsrc/fpgaloader.c | 2 +- client/src/cmdusart.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index 61c2df9d1..6f8dd7a0b 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -423,7 +423,7 @@ static int bitparse_find_section(int bitstream_version, char section_name, uint3 break; } - for (uint16_t i = 0; i < current_length && numbytes < MAX_FPGA_BIT_STREAM_HEADER_SEARCH; i++) { + for (uint32_t i = 0; i < current_length && numbytes < MAX_FPGA_BIT_STREAM_HEADER_SEARCH; i++) { get_from_fpga_stream(bitstream_version, compressed_fpga_stream, output_buffer); numbytes++; } diff --git a/client/src/cmdusart.c b/client/src/cmdusart.c index 2b98181d0..f8538caf3 100644 --- a/client/src/cmdusart.c +++ b/client/src/cmdusart.c @@ -68,15 +68,20 @@ static int usart_txrx(uint8_t *srcdata, size_t srclen, uint8_t *dstdata, size_t struct payload_header header; uint8_t data[PM3_CMD_DATA_SIZE - sizeof(uint32_t)]; } PACKED payload; + payload.header.waittime = waittime; - if (srclen >= sizeof(payload.data)) + + if (srclen >= sizeof(payload.data)) { return PM3_EOVFLOW; + } + memcpy(payload.data, srcdata, srclen); SendCommandNG(CMD_USART_TXRX, (uint8_t *)&payload, srclen + sizeof(payload.header)); PacketResponseNG resp; - if (!WaitForResponseTimeout(CMD_USART_TXRX, &resp, waittime + 500)) { + if (WaitForResponseTimeout(CMD_USART_TXRX, &resp, waittime + 500) == false) { return PM3_ETIMEOUT; } + if (resp.status == PM3_SUCCESS) { *dstlen = resp.length; memcpy(dstdata, resp.data.asBytes, resp.length); @@ -154,7 +159,8 @@ static int usart_bt_testcomm(uint32_t baudrate, uint8_t parity) { PrintAndLogEx(SUCCESS, "TX (%3zu):%.*s at %u 8%c1", strlen(string), (int)strlen(string), string, baudrate, parity); - ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); // such large timeout needed + // 1000, such large timeout needed + ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); if (ret == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); if (strcmp((char *)data, "hc01.comV2.0") == 0 || strcmp((char *)data, "BT SPP V3.0") == 0) { From da250f9eed3b2f1a0ed61077823e3f179a3fbd24 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 28 May 2023 08:24:06 +0200 Subject: [PATCH 0023/1034] adapted to handle the bluetooth identifier on a Proxmark SE device. Full name is identifier is: Proxmark SE(TEST) --- pm3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pm3 b/pm3 index 7c1d0e289..d59d10ea6 100755 --- a/pm3 +++ b/pm3 @@ -115,7 +115,7 @@ function get_pm3_list_Linux { if $FINDBTDIRECT; then # check if the MAC of a Proxmark3 was registered in the known devices for MAC in $(dbus-send --system --print-reply --type=method_call --dest='org.bluez' '/' org.freedesktop.DBus.ObjectManager.GetManagedObjects 2>/dev/null|\ - awk '/"Address"/{getline;gsub(/"/,"",$3);a=$3}/Name/{getline;if (/PM3_RDV4/) print a}'); do + awk '/"Address"/{getline;gsub(/"/,"",$3);a=$3}/Name/{getline;if (/PM3_RDV4/ || /Proxmark3 SE/) print a}'); do PM3LIST+=("bt:$MAC") done # we don't probe the device so there is no guarantee the device is actually present From 6d22b606c2c71c555a1bd3f7f50e4233e813ad93 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 28 May 2023 10:26:07 +0200 Subject: [PATCH 0024/1034] adapt comparison --- client/src/cmdusart.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdusart.c b/client/src/cmdusart.c index f8538caf3..0d33ef374 100644 --- a/client/src/cmdusart.c +++ b/client/src/cmdusart.c @@ -163,7 +163,7 @@ static int usart_bt_testcomm(uint32_t baudrate, uint8_t parity) { ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); if (ret == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); - if (strcmp((char *)data, "hc01.comV2.0") == 0 || strcmp((char *)data, "BT SPP V3.0") == 0) { + if (str_startswith((char *)data, "hc01.comV2.0") || str_startswith((char *)data, "BT SPP V3.0")) { PrintAndLogEx(SUCCESS, "Add-on " _GREEN_("found!")); return PM3_SUCCESS; } From 2b90683aff8472801c2a5fd33cc18e0355b510cc Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 28 May 2023 12:34:29 +0200 Subject: [PATCH 0025/1034] added debug output for usart comms --- client/src/uart/uart_posix.c | 4 ++++ client/src/uart/uart_win32.c | 2 ++ 2 files changed, 6 insertions(+) diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index b2a858e09..58e497d55 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -263,6 +263,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { sp->fd = open(pcPortName, O_RDWR | O_NOCTTY | O_NDELAY | O_NONBLOCK); if (sp->fd == -1) { + PrintAndLogEx(ERR, "error: UART file descriptor"); uart_close(sp); return INVALID_SERIAL_PORT; } @@ -285,6 +286,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { // Try to retrieve the old (current) terminal info struct if (tcgetattr(sp->fd, &sp->tiOld) == -1) { + PrintAndLogEx(ERR, "error: UART get terminal info attribute"); uart_close(sp); return INVALID_SERIAL_PORT; } @@ -305,6 +307,8 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { // Try to set the new terminal info struct if (tcsetattr(sp->fd, TCSANOW, &sp->tiNew) == -1) { + PrintAndLogEx(ERR, "error: UART set terminal info attribute"); + perror("tcsetattr() error"); uart_close(sp); return INVALID_SERIAL_PORT; } diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index 9cdcc41d1..699ac4525 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -98,6 +98,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { free(prefix); if (strlen(pcPortName) <= 4) { + PrintAndLogEx(ERR, "error: tcp port name length too short"); free(sp); return INVALID_SERIAL_PORT; } @@ -193,6 +194,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { sp->hPort = CreateFileA(acPortName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (sp->hPort == INVALID_HANDLE_VALUE) { uart_close(sp); + PrintAndLogEx(ERR, "error: invalid handle"); return INVALID_SERIAL_PORT; } From f17ce1fd682c00bdecd40058ece14762c935decd Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 28 May 2023 12:40:57 +0200 Subject: [PATCH 0026/1034] revert one debug message --- client/src/uart/uart_posix.c | 1 - client/src/uart/uart_win32.c | 1 - 2 files changed, 2 deletions(-) diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index 58e497d55..86d76317b 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -263,7 +263,6 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { sp->fd = open(pcPortName, O_RDWR | O_NOCTTY | O_NDELAY | O_NONBLOCK); if (sp->fd == -1) { - PrintAndLogEx(ERR, "error: UART file descriptor"); uart_close(sp); return INVALID_SERIAL_PORT; } diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index 699ac4525..cb8b92a73 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -194,7 +194,6 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { sp->hPort = CreateFileA(acPortName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (sp->hPort == INVALID_HANDLE_VALUE) { uart_close(sp); - PrintAndLogEx(ERR, "error: invalid handle"); return INVALID_SERIAL_PORT; } From 7368cccdf90b4c68ae598ff27ee2e9db5b71e1a4 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 29 May 2023 06:57:39 +0200 Subject: [PATCH 0027/1034] Disney MagicBand --- client/resources/aid_desfire.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/client/resources/aid_desfire.json b/client/resources/aid_desfire.json index 45df737e5..f5387ff45 100644 --- a/client/resources/aid_desfire.json +++ b/client/resources/aid_desfire.json @@ -367,5 +367,21 @@ "Name": "University of Ljubljana Student ID", "Description": "", "Type": "student" + }, + { + "AID": "27E178", + "Vendor": "Disney", + "Country": "US", + "Name": "Disney MagicBand", + "Description": "", + "Type": "payment system" + }, + { + "AID": "44434C", + "Vendor": "Disney", + "Country": "US", + "Name": "Disney MagicBand", + "Description": "AID found on MagicBand desfire cards", + "Type": "payment system" } ] From 7c8e9db822280e5b1731ec0af6396361c1dc673b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 30 May 2023 13:46:52 +0200 Subject: [PATCH 0028/1034] allow user abort when wiping --- client/src/cmdhfmf.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 7487088dd..6d017a849 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -5919,8 +5919,9 @@ int CmdHFMFNDEFRead(const char *Cmd) { CLIParserFree(ctx); uint16_t ndef_aid = NDEF_MFC_AID; - if (aidlen == 2) + if (aidlen == 2){ ndef_aid = (aid[0] << 8) + aid[1]; + } uint8_t ndefkey[6] = {0}; memcpy(ndefkey, g_mifare_ndef_key, 6); @@ -7007,6 +7008,7 @@ static int CmdHF14AMfWipe(const char *Cmd) { PrintAndLogEx(INFO, "Forcing overwrite of sector 0 / block 0 "); else PrintAndLogEx(INFO, "Skipping sector 0 / block 0"); + PrintAndLogEx(NORMAL, ""); uint8_t zeros[MFBLOCK_SIZE] = {0}; @@ -7018,7 +7020,12 @@ static int CmdHF14AMfWipe(const char *Cmd) { for (uint8_t b = 0; b < mfNumBlocksPerSector(s); b++) { - // Skipp write to manufacture block if not enforced + if (kbd_enter_pressed()) { + PrintAndLogEx(WARNING, "\naborted via keyboard!\n"); + goto out; + } + + // Skip write to manufacture block if not enforced if (s == 0 && b == 0 && gen2 == false) { continue; } From 2356dfea73ad3bfca1581ad7f5f32169de8a0297 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 30 May 2023 14:14:21 +0200 Subject: [PATCH 0029/1034] hf mf restore - now uses the binary key loading fct() --- client/src/cmdhfmf.c | 71 ++++++++++++++++---------------------------- 1 file changed, 26 insertions(+), 45 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 6d017a849..386482483 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -1256,52 +1256,40 @@ static int CmdHF14AMfRestore(const char *Cmd) { free(fptr); } - FILE *f; - if ((f = fopen(keyfilename, "rb")) == NULL) { - PrintAndLogEx(WARNING, "Could not find file " _YELLOW_("%s"), keyfilename); - return PM3_EFILE; - } - - // key arrays - uint8_t keyA[40][6]; - uint8_t keyB[40][6]; - - // read key file - size_t bytes_read; - for (uint8_t s = 0; s < sectors; s++) { - bytes_read = fread(keyA[s], 1, 6, f); - if (bytes_read != 6) { - PrintAndLogEx(ERR, "File reading error " _YELLOW_("%s"), keyfilename); - fclose(f); - return PM3_EFILE; + // + size_t alen = 0, blen = 0; + uint8_t *keyA, *keyB; + if (loadFileBinaryKey(keyfilename, "", (void**)&keyA, (void**)&keyB, &alen, &blen) != PM3_SUCCESS) { + if (keyA) { + free(keyA); } + return PM3_ESOFT; } - for (uint8_t s = 0; s < sectors; s++) { - bytes_read = fread(keyB[s], 1, 6, f); - if (bytes_read != 6) { - PrintAndLogEx(ERR, "File reading error " _YELLOW_("%s"), keyfilename); - fclose(f); - return PM3_EFILE; - } - } - fclose(f); // try reading card uid and create filename if (datafnlen == 0) { char *fptr = GenerateFilename("hf-mf-", "-dump.bin"); - if (fptr == NULL) + if (fptr == NULL) { + if (keyA) { + free(keyA); + } + if (keyB) { + free(keyB); + } return PM3_ESOFT; - + } strcpy(datafilename, fptr); free(fptr); } // read dump file uint8_t *dump = NULL; - bytes_read = 0; + size_t bytes_read = 0; int res = pm3_load_dump(datafilename, (void **)&dump, &bytes_read, (MFBLOCK_SIZE * MIFARE_4K_MAXBLOCK)); if (res != PM3_SUCCESS) { + free(keyA); + free(keyB); return res; } @@ -1326,19 +1314,10 @@ static int CmdHF14AMfRestore(const char *Cmd) { if (mfNumBlocksPerSector(s) - 1 == b) { if (use_keyfile_for_auth == false) { // replace KEY A - bldata[0] = (keyA[s][0]); - bldata[1] = (keyA[s][1]); - bldata[2] = (keyA[s][2]); - bldata[3] = (keyA[s][3]); - bldata[4] = (keyA[s][4]); - bldata[5] = (keyA[s][5]); + memcpy(bldata, keyA + (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); + // replace KEY B - bldata[10] = (keyB[s][0]); - bldata[11] = (keyB[s][1]); - bldata[12] = (keyB[s][2]); - bldata[13] = (keyB[s][3]); - bldata[14] = (keyB[s][4]); - bldata[15] = (keyB[s][5]); + memcpy(bldata + 10, keyB + (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); } // ensure access right isn't messed up. @@ -1372,12 +1351,12 @@ static int CmdHF14AMfRestore(const char *Cmd) { for (int8_t kt = MF_KEY_B; kt > -1; kt--) { if (use_keyfile_for_auth) { if (kt == MF_KEY_A) - memcpy(wdata, keyA[s], 6); + memcpy(wdata, keyA + (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); else - memcpy(wdata, keyB[s], 6); + memcpy(wdata, keyB+ (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); } else { // use default key to authenticate for the write command - memcpy(wdata, default_key, 6); + memcpy(wdata, default_key, MIFARE_KEY_SIZE); } PrintAndLogEx(INFO, "block %3d: %s", mfFirstBlockOfSector(s) + b, sprint_hex(bldata, sizeof(bldata))); @@ -1404,6 +1383,8 @@ static int CmdHF14AMfRestore(const char *Cmd) { } // end loop S free(ref_dump); + free(keyA); + free(keyB); PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; } From 1107c214c520e95ffd9a48401773f87f569f78d5 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 30 May 2023 16:19:33 +0200 Subject: [PATCH 0030/1034] hf mf ndefformat now uses the binary key loading --- client/src/cmdhfmf.c | 43 +++++++++++++++---------------------------- 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 386482483..afadc9e78 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -1266,6 +1266,7 @@ static int CmdHF14AMfRestore(const char *Cmd) { return PM3_ESOFT; } + PrintAndLogEx(INFO, "Using `" _YELLOW_("%s") "`", keyfilename); // try reading card uid and create filename if (datafnlen == 0) { @@ -6116,39 +6117,27 @@ int CmdHFMFNDEFFormat(const char *Cmd) { DropField(); } + // load key file if exist if (strlen(keyFilename)) { - - FILE *f; - if ((f = fopen(keyFilename, "rb")) == NULL) { - // PrintAndLogEx(WARNING, "Could not find file " _YELLOW_("%s"), keyFilename); + // + size_t alen = 0, blen = 0; + uint8_t *tmpA, *tmpB; + if (loadFileBinaryKey(keyFilename, "", (void**)&tmpA, (void**)&tmpB, &alen, &blen) != PM3_SUCCESS) { + if (tmpA) { + free(tmpA); + } goto skipfile; } PrintAndLogEx(INFO, "Using `" _YELLOW_("%s") "`", keyFilename); - - // Read keys A from file - size_t bytes_read; - for (uint8_t i = 0; i < numSectors; i++) { - bytes_read = fread(keyA[i], 1, MFKEY_SIZE, f); - if (bytes_read != MFKEY_SIZE) { - PrintAndLogEx(ERR, "File reading error."); - fclose(f); - return PM3_EFILE; - } + + for (int i=0; i < numSectors; i++) { + memcpy(keyA[i], tmpA + (i *MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); + memcpy(keyB[i], tmpB + (i *MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); } - - // Read keys B from file - for (uint8_t i = 0; i < numSectors; i++) { - bytes_read = fread(keyB[i], 1, MFKEY_SIZE, f); - if (bytes_read != MFKEY_SIZE) { - PrintAndLogEx(ERR, "File reading error."); - fclose(f); - return PM3_EFILE; - } - } - - fclose(f); + free(tmpA); + free(tmpB); } skipfile: @@ -6191,7 +6180,6 @@ skipfile: } break; } - } // write to card, try B key first @@ -6206,7 +6194,6 @@ skipfile: } PrintAndLogEx(NORMAL, ""); - return PM3_SUCCESS; } From c59bdec4f20070b2e7ae55c519833e3255615915 Mon Sep 17 00:00:00 2001 From: d18c7db Date: Tue, 30 May 2023 19:47:27 +0200 Subject: [PATCH 0031/1034] Unified fpga folders --- .gitignore | 12 +- armsrc/Makefile | 3 - armsrc/fpgaloader.c | 20 +- common_arm/Makefile.common | 2 +- common_arm/Makefile.hal | 9 + fpga-xc2s30/Makefile | 60 -- fpga-xc2s30/fpga.ucf | 54 -- fpga-xc2s30/fpga_felica.bit | Bin 42179 -> 0 bytes fpga-xc2s30/fpga_felica.v | 240 ------- fpga-xc2s30/fpga_hf.bit | Bin 42175 -> 0 bytes fpga-xc2s30/fpga_hf.v | 255 -------- fpga-xc2s30/fpga_hf_15.bit | Bin 42178 -> 0 bytes fpga-xc2s30/fpga_hf_15.v | 233 ------- fpga-xc2s30/fpga_lf.bit | Bin 42175 -> 0 bytes fpga-xc2s30/fpga_lf.v | 245 -------- fpga-xc2s30/go.bat | 68 -- fpga-xc2s30/xst_felica.scr | 1 - fpga-xc2s30/xst_hf.scr | 1 - fpga-xc2s30/xst_hf_15.scr | 1 - fpga-xc2s30/xst_lf.scr | 1 - fpga-xc3s100e/.gitignore | 68 -- fpga-xc3s100e/clk_divider.v | 25 - fpga-xc3s100e/compile.sh | 9 - fpga-xc3s100e/define.v | 49 -- fpga-xc3s100e/fpga.ucf | 56 -- fpga-xc3s100e/fpga_hf.bit | Bin 72742 -> 0 bytes fpga-xc3s100e/fpga_hfmod.v | 193 ------ fpga-xc3s100e/fpga_lfmod.v | 236 ------- fpga-xc3s100e/hi_flite.v | 368 ----------- fpga-xc3s100e/hi_get_trace.v | 164 ----- fpga-xc3s100e/hi_iso14443a.v | 584 ------------------ fpga-xc3s100e/hi_reader.v | 335 ---------- fpga-xc3s100e/hi_simulate.v | 152 ----- fpga-xc3s100e/hi_sniffer.v | 50 -- fpga-xc3s100e/iseproj/fpga_hf/fpga_hf.ise | Bin 257463 -> 0 bytes fpga-xc3s100e/iseproj/fpga_hf/fpga_hf.tcl | 479 -------------- fpga-xc3s100e/lf_edge_detect.v | 77 --- fpga-xc3s100e/lo_adc.v | 91 --- fpga-xc3s100e/lo_edge_detect.v | 70 --- fpga-xc3s100e/lo_passthru.v | 29 - fpga-xc3s100e/lo_read.v | 74 --- fpga-xc3s100e/lp20khz_1MSa_iir_filter.v | 81 --- fpga-xc3s100e/min_max_tracker.v | 65 -- fpga-xc3s100e/util.v | 27 - fpga/Makefile | 221 +++++++ {fpga-xc2s30 => fpga}/clk_divider.v | 7 +- fpga/define.v | 155 +++++ .../fpga_icopyx_felica.bit | 0 fpga/fpga_icopyx_hf.bit | Bin 0 -> 72749 bytes fpga/fpga_icopyx_hf.v | 227 +++++++ .../fpga_lf.bit => fpga/fpga_icopyx_hf_15.bit | 0 fpga/fpga_icopyx_lf.bit | 0 fpga/fpga_icopyx_lf.v | 218 +++++++ .../fpga_allinone.v => fpga/fpga_icopyx_top.v | 80 ++- fpga/fpga_pm3_felica.bit | Bin 0 -> 42176 bytes fpga/fpga_pm3_hf.bit | Bin 0 -> 42172 bytes fpga/fpga_pm3_hf_15.bit | Bin 0 -> 42175 bytes fpga/fpga_pm3_lf.bit | Bin 0 -> 42172 bytes fpga/fpga_pm3_top.v | 438 +++++++++++++ {fpga-xc2s30 => fpga}/hi_flite.v | 66 +- {fpga-xc2s30 => fpga}/hi_get_trace.v | 40 +- {fpga-xc2s30 => fpga}/hi_iso14443a.v | 55 +- {fpga-xc2s30 => fpga}/hi_reader.v | 42 +- {fpga-xc2s30 => fpga}/hi_reader_15.v | 43 +- {fpga-xc2s30 => fpga}/hi_simulate.v | 37 +- {fpga-xc2s30 => fpga}/hi_sniffer.v | 49 +- {fpga-xc2s30 => fpga}/lf_edge_detect.v | 49 +- {fpga-xc2s30 => fpga}/lo_adc.v | 50 +- {fpga-xc2s30 => fpga}/lo_edge_detect.v | 56 +- {fpga-xc2s30 => fpga}/lo_passthru.v | 29 +- {fpga-xc2s30 => fpga}/lo_read.v | 36 +- {fpga-xc2s30 => fpga}/lo_simulate.v | 42 +- .../lp20khz_1MSa_iir_filter.v | 7 +- {fpga-xc2s30 => fpga}/min_max_tracker.v | 9 +- fpga/mux16.v | 50 ++ {fpga-xc3s100e => fpga}/mux2_onein.v | 13 +- {fpga-xc3s100e => fpga}/mux2_oneout.v | 13 +- fpga-xc2s30/util.v => fpga/mux8.v | 30 +- {fpga-xc2s30 => fpga}/tests/Makefile | 0 .../tests/plot_edgedetect.py | 0 {fpga-xc2s30 => fpga/tests}/sim.tcl | 0 .../pcf7931_read_1MSA_data.filtered.gold | 0 .../tb_data/pcf7931_read_1MSA_data.high.gold | 0 .../tb_data/pcf7931_read_1MSA_data.highz.gold | 0 .../tests/tb_data/pcf7931_read_1MSA_data.in | 0 .../tb_data/pcf7931_read_1MSA_data.low.gold | 0 .../tb_data/pcf7931_read_1MSA_data.lowz.gold | 0 .../tb_data/pcf7931_read_1MSA_data.max.gold | Bin .../tb_data/pcf7931_read_1MSA_data.min.gold | 0 .../tb_data/pcf7931_read_1MSA_data.state.gold | Bin .../tests/tb_data/pcf7931_read_1MSA_data.time | Bin .../pcf7931_read_1MSA_data.toggle.gold | Bin ...pcf7931_write1byte_1MSA_data.filtered.gold | 0 .../pcf7931_write1byte_1MSA_data.high.gold | 0 .../pcf7931_write1byte_1MSA_data.highz.gold | 0 .../tb_data/pcf7931_write1byte_1MSA_data.in | 0 .../pcf7931_write1byte_1MSA_data.low.gold | 0 .../pcf7931_write1byte_1MSA_data.lowz.gold | 0 .../pcf7931_write1byte_1MSA_data.max.gold | Bin .../pcf7931_write1byte_1MSA_data.min.gold | 0 .../pcf7931_write1byte_1MSA_data.state.gold | Bin .../tb_data/pcf7931_write1byte_1MSA_data.time | Bin .../pcf7931_write1byte_1MSA_data.toggle.gold | Bin .../tests/tb_lf_edge_detect.v | 0 .../tests/tb_lp20khz_1MSa_iir_filter.v | 0 .../tests/tb_min_max_tracker.v | 0 {fpga-xc2s30 => fpga/tests}/testbed_fpga.v | 0 .../tests}/testbed_hi_read_tx.v | 0 .../tests}/testbed_hi_simulate.v | 0 {fpga-xc2s30 => fpga/tests}/testbed_lo_read.v | 0 .../tests}/testbed_lo_simulate.v | 0 fpga/xc2s30-5-vq100.ucf | 45 ++ fpga/xc3s100e-4-vq100.ucf | 48 ++ tools/fpga_compress/fpga_compress.c | 24 +- 114 files changed, 1852 insertions(+), 4814 deletions(-) delete mode 100644 fpga-xc2s30/Makefile delete mode 100644 fpga-xc2s30/fpga.ucf delete mode 100644 fpga-xc2s30/fpga_felica.bit delete mode 100644 fpga-xc2s30/fpga_felica.v delete mode 100644 fpga-xc2s30/fpga_hf.bit delete mode 100644 fpga-xc2s30/fpga_hf.v delete mode 100644 fpga-xc2s30/fpga_hf_15.bit delete mode 100644 fpga-xc2s30/fpga_hf_15.v delete mode 100644 fpga-xc2s30/fpga_lf.bit delete mode 100644 fpga-xc2s30/fpga_lf.v delete mode 100644 fpga-xc2s30/go.bat delete mode 100644 fpga-xc2s30/xst_felica.scr delete mode 100644 fpga-xc2s30/xst_hf.scr delete mode 100644 fpga-xc2s30/xst_hf_15.scr delete mode 100644 fpga-xc2s30/xst_lf.scr delete mode 100644 fpga-xc3s100e/.gitignore delete mode 100644 fpga-xc3s100e/clk_divider.v delete mode 100755 fpga-xc3s100e/compile.sh delete mode 100644 fpga-xc3s100e/define.v delete mode 100644 fpga-xc3s100e/fpga.ucf delete mode 100644 fpga-xc3s100e/fpga_hf.bit delete mode 100644 fpga-xc3s100e/fpga_hfmod.v delete mode 100644 fpga-xc3s100e/fpga_lfmod.v delete mode 100644 fpga-xc3s100e/hi_flite.v delete mode 100644 fpga-xc3s100e/hi_get_trace.v delete mode 100644 fpga-xc3s100e/hi_iso14443a.v delete mode 100644 fpga-xc3s100e/hi_reader.v delete mode 100644 fpga-xc3s100e/hi_simulate.v delete mode 100644 fpga-xc3s100e/hi_sniffer.v delete mode 100644 fpga-xc3s100e/iseproj/fpga_hf/fpga_hf.ise delete mode 100644 fpga-xc3s100e/iseproj/fpga_hf/fpga_hf.tcl delete mode 100644 fpga-xc3s100e/lf_edge_detect.v delete mode 100644 fpga-xc3s100e/lo_adc.v delete mode 100644 fpga-xc3s100e/lo_edge_detect.v delete mode 100644 fpga-xc3s100e/lo_passthru.v delete mode 100644 fpga-xc3s100e/lo_read.v delete mode 100644 fpga-xc3s100e/lp20khz_1MSa_iir_filter.v delete mode 100644 fpga-xc3s100e/min_max_tracker.v delete mode 100644 fpga-xc3s100e/util.v create mode 100644 fpga/Makefile rename {fpga-xc2s30 => fpga}/clk_divider.v (91%) create mode 100644 fpga/define.v rename fpga-xc3s100e/fpga_felica.bit => fpga/fpga_icopyx_felica.bit (100%) create mode 100644 fpga/fpga_icopyx_hf.bit create mode 100644 fpga/fpga_icopyx_hf.v rename fpga-xc3s100e/fpga_lf.bit => fpga/fpga_icopyx_hf_15.bit (100%) create mode 100644 fpga/fpga_icopyx_lf.bit create mode 100644 fpga/fpga_icopyx_lf.v rename fpga-xc3s100e/fpga_allinone.v => fpga/fpga_icopyx_top.v (61%) create mode 100644 fpga/fpga_pm3_felica.bit create mode 100644 fpga/fpga_pm3_hf.bit create mode 100644 fpga/fpga_pm3_hf_15.bit create mode 100644 fpga/fpga_pm3_lf.bit create mode 100644 fpga/fpga_pm3_top.v rename {fpga-xc2s30 => fpga}/hi_flite.v (92%) rename {fpga-xc2s30 => fpga}/hi_get_trace.v (86%) rename {fpga-xc2s30 => fpga}/hi_iso14443a.v (97%) rename {fpga-xc2s30 => fpga}/hi_reader.v (95%) rename {fpga-xc2s30 => fpga}/hi_reader_15.v (96%) rename {fpga-xc2s30 => fpga}/hi_simulate.v (91%) rename {fpga-xc2s30 => fpga}/hi_sniffer.v (69%) rename {fpga-xc2s30 => fpga}/lf_edge_detect.v (72%) rename {fpga-xc2s30 => fpga}/lo_adc.v (74%) rename {fpga-xc2s30 => fpga}/lo_edge_detect.v (67%) rename {fpga-xc2s30 => fpga}/lo_passthru.v (82%) rename {fpga-xc2s30 => fpga}/lo_read.v (80%) rename {fpga-xc2s30 => fpga}/lo_simulate.v (79%) rename {fpga-xc2s30 => fpga}/lp20khz_1MSa_iir_filter.v (96%) rename {fpga-xc2s30 => fpga}/min_max_tracker.v (95%) create mode 100644 fpga/mux16.v rename {fpga-xc3s100e => fpga}/mux2_onein.v (70%) rename {fpga-xc3s100e => fpga}/mux2_oneout.v (68%) rename fpga-xc2s30/util.v => fpga/mux8.v (68%) rename {fpga-xc2s30 => fpga}/tests/Makefile (100%) rename {fpga-xc2s30 => fpga}/tests/plot_edgedetect.py (100%) mode change 100755 => 100644 rename {fpga-xc2s30 => fpga/tests}/sim.tcl (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_read_1MSA_data.filtered.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_read_1MSA_data.high.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_read_1MSA_data.highz.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_read_1MSA_data.in (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_read_1MSA_data.low.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_read_1MSA_data.lowz.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_read_1MSA_data.max.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_read_1MSA_data.min.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_read_1MSA_data.state.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_read_1MSA_data.time (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_read_1MSA_data.toggle.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_write1byte_1MSA_data.filtered.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_write1byte_1MSA_data.high.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_write1byte_1MSA_data.highz.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_write1byte_1MSA_data.in (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_write1byte_1MSA_data.low.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_write1byte_1MSA_data.lowz.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_write1byte_1MSA_data.max.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_write1byte_1MSA_data.min.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_write1byte_1MSA_data.state.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_write1byte_1MSA_data.time (100%) rename {fpga-xc2s30 => fpga}/tests/tb_data/pcf7931_write1byte_1MSA_data.toggle.gold (100%) rename {fpga-xc2s30 => fpga}/tests/tb_lf_edge_detect.v (100%) rename {fpga-xc2s30 => fpga}/tests/tb_lp20khz_1MSa_iir_filter.v (100%) rename {fpga-xc2s30 => fpga}/tests/tb_min_max_tracker.v (100%) rename {fpga-xc2s30 => fpga/tests}/testbed_fpga.v (100%) rename {fpga-xc2s30 => fpga/tests}/testbed_hi_read_tx.v (100%) rename {fpga-xc2s30 => fpga/tests}/testbed_hi_simulate.v (100%) rename {fpga-xc2s30 => fpga/tests}/testbed_lo_read.v (100%) rename {fpga-xc2s30 => fpga/tests}/testbed_lo_simulate.v (100%) create mode 100644 fpga/xc2s30-5-vq100.ucf create mode 100644 fpga/xc3s100e-4-vq100.ucf diff --git a/.gitignore b/.gitignore index 8469c8449..30cc1020a 100644 --- a/.gitignore +++ b/.gitignore @@ -80,17 +80,7 @@ tools/mfd_aes_brute/mfd_aes_brute tools/mfd_aes_brute/mfd_multi_brute tools/mfd_aes_brute/brute_key -fpga/* -!fpga/tests -!fpga/fpga_lf.bit -!fpga/fpga_hf.bit -!fpga/*.v -!fpga/Makefile -!fpga/fpga.ucf -!fpga/xst_lf.scr -!fpga/xst_hf.scr -!fpga/go.bat -!fpga/sim.tcl +fpga/__build* # offcial dumps folder dumps/* diff --git a/armsrc/Makefile b/armsrc/Makefile index 5203b0292..c481a6f22 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -103,9 +103,6 @@ endif # Generic standalone Mode injection of source code include Standalone/Makefile.inc -#the FPGA bitstream files. Note: order matters! -FPGA_BITSTREAMS = fpga_lf.bit fpga_hf.bit fpga_felica.bit fpga_hf_15.bit - #the lz4 source files required for decompressing the fpga config at run time SRC_LZ4 = lz4.c #additional defines required to compile lz4 diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index 6f8dd7a0b..6715aa962 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -404,16 +404,22 @@ static int bitparse_find_section(int bitstream_version, char section_name, uint3 /* Four byte length field */ current_length += get_from_fpga_stream(bitstream_version, compressed_fpga_stream, output_buffer) << 24; current_length += get_from_fpga_stream(bitstream_version, compressed_fpga_stream, output_buffer) << 16; - numbytes += 2; - default: /* Fall through, two byte length field */ + current_length += get_from_fpga_stream(bitstream_version, compressed_fpga_stream, output_buffer) << 8; + current_length += get_from_fpga_stream(bitstream_version, compressed_fpga_stream, output_buffer) << 0; + numbytes += 4; + if (current_length > 300*1024) { + /* section e should never exceed about 300KB, if the length is too big limit it but still send the bitstream just in case */ + current_length = 300*1024; + } + break; + default: /* Two byte length field */ current_length += get_from_fpga_stream(bitstream_version, compressed_fpga_stream, output_buffer) << 8; current_length += get_from_fpga_stream(bitstream_version, compressed_fpga_stream, output_buffer) << 0; numbytes += 2; - } - - if (current_name != 'e' && current_length > 255) { - /* Maybe a parse error */ - break; + if (current_length > 64) { + /* if text field is too long, keep it but truncate it */ + current_length = 64; + } } if (current_name == section_name) { diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 99f4d9ecd..18d931b46 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -44,7 +44,7 @@ OBJDIR = obj INCLUDE = -I../include -I../common_arm -I../common_fpga -I../common -I. # Also search prerequisites in the common directory (for usb.c), the fpga directory (for fpga.bit), and the lz4 directory -VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/lz4 ../fpga-$(PLATFORM_FPGA) ../armsrc/Standalone +VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/lz4 ../fpga ../armsrc/Standalone INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h diff --git a/common_arm/Makefile.hal b/common_arm/Makefile.hal index a65514784..9679382ce 100644 --- a/common_arm/Makefile.hal +++ b/common_arm/Makefile.hal @@ -92,18 +92,26 @@ PLTNAME = Unknown Platform PLATFORM_FPGA = fpga-undefined ifeq ($(PLATFORM),PM3RDV4) + # FPGA bitstream files, the order matters! + FPGA_BITSTREAMS = fpga_pm3_lf.bit fpga_pm3_hf.bit fpga_pm3_felica.bit fpga_pm3_hf_15.bit PLATFORM_DEFS = -DWITH_SMARTCARD -DWITH_FLASH -DRDV4 PLTNAME = Proxmark3 RDV4 PLATFORM_FPGA = xc2s30 RDV4 = yes else ifeq ($(PLATFORM),PM3OTHER) $(warning PLATFORM=PM3OTHER is deprecated, please use PLATFORM=PM3GENERIC) + # FPGA bitstream files, the order matters! + FPGA_BITSTREAMS = fpga_pm3_lf.bit fpga_pm3_hf.bit fpga_pm3_felica.bit fpga_pm3_hf_15.bit PLTNAME = Proxmark3 generic target PLATFORM_FPGA = xc2s30 else ifeq ($(PLATFORM),PM3GENERIC) + # FPGA bitstream files, the order matters! + FPGA_BITSTREAMS = fpga_pm3_lf.bit fpga_pm3_hf.bit fpga_pm3_felica.bit fpga_pm3_hf_15.bit PLTNAME = Proxmark3 generic target PLATFORM_FPGA = xc2s30 else ifeq ($(PLATFORM),PM3ICOPYX) + # FPGA bitstream files, the order matters - only hf has a bitstream, the other 3 files are 0 bytes + FPGA_BITSTREAMS = fpga_icopyx_lf.bit fpga_icopyx_hf.bit fpga_icopyx_felica.bit fpga_icopyx_hf_15.bit PLATFORM_DEFS = -DWITH_FLASH -DICOPYX -DXC3 PLTNAME = iCopy-X with XC3S100E PLATFORM_FPGA = xc3s100e @@ -246,6 +254,7 @@ export PLATFORM_DEFS export PLATFORM_DEFS_INFO export PLATFORM_DEFS_INFO_STANDALONE export PLATFORM_CHANGED +export FPGA_BITSTREAMS $(info ===================================================================) $(info Version info: $(shell tools/mkversion.sh --short 2>/dev/null || ../tools/mkversion.sh --short 2>/dev/null)) diff --git a/fpga-xc2s30/Makefile b/fpga-xc2s30/Makefile deleted file mode 100644 index 2bf9273ba..000000000 --- a/fpga-xc2s30/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -# -# FPGA Makefile -# -RMDIR = rm -rf -# rmdir only if dir is empty, tolerate failure -RMDIR_SOFT = -rmdir -# -all: fpga_lf.bit fpga_hf.bit fpga_felica.bit fpga_hf_15.bit -clean: - $(Q)$(RM) *.bgn *.drc *.ncd *.ngd *_par.xrpt *-placed.* *-placed_pad.* *_usage.xml xst_hf.srp xst_lf.srp xst_felica.srp xst_hf_15.srp - $(Q)$(RM) *.map *.ngc *.xrpt *.pcf *.rbt *.bld *.mrp *.ngm *.unroutes *_summary.xml netlist.lst - $(Q)$(RMDIR) *_auto_* xst - -#fpga_hf.ngc: fpga_hf.v fpga.ucf xst_hf.scr util.v hi_simulate.v hi_reader.v hi_iso14443a.v hi_sniffer.v hi_flite.v hi_get_trace.v -fpga_hf.ngc: fpga_hf.v fpga.ucf xst_hf.scr util.v hi_simulate.v hi_reader.v hi_iso14443a.v hi_sniffer.v hi_get_trace.v - $(Q)$(RM) $@ - $(info [-] XST $@) - $(Q)$(XILINX_TOOLS_PREFIX)xst -ifn xst_hf.scr - -fpga_felica.ngc: fpga_felica.v fpga.ucf xst_felica.scr util.v hi_simulate.v hi_reader.v hi_sniffer.v hi_flite.v hi_get_trace.v - $(Q)$(RM) $@ - $(info [-] XST $@) - $(Q)$(XILINX_TOOLS_PREFIX)xst -ifn xst_felica.scr - -fpga_hf_15.ngc: fpga_hf_15.v fpga.ucf xst_hf_15.scr util.v hi_simulate.v hi_reader_15.v hi_sniffer.v hi_get_trace.v - $(Q)$(RM) $@ - $(info [-] XST $@) - $(Q)$(XILINX_TOOLS_PREFIX)xst -ifn xst_hf_15.scr - -fpga_lf.ngc: fpga_lf.v fpga.ucf xst_lf.scr util.v clk_divider.v lo_edge_detect.v lo_read.v lo_passthru.v lp20khz_1MSa_iir_filter.v min_max_tracker.v lf_edge_detect.v - $(Q)$(RM) $@ - $(info [-] XST $@) - $(Q)$(XILINX_TOOLS_PREFIX)xst -ifn xst_lf.scr - -%.ngd: %.ngc - $(Q)$(RM) $@ - $(info [-] NGD $@) - $(Q)$(XILINX_TOOLS_PREFIX)ngdbuild -aul -p xc2s30-5-vq100 -nt timestamp -uc fpga.ucf $< $@ - -%.ncd: %.ngd - $(Q)$(RM) $@ - $(info [-] MAP $@) - $(Q)$(XILINX_TOOLS_PREFIX)map -p xc2s30-5-vq100 $< - -%-placed.ncd: %.ncd - $(Q)$(RM) $@ - $(info [-] PAR $@) - $(Q)$(XILINX_TOOLS_PREFIX)par $< $@ - -%.bit: %-placed.ncd - $(Q)$(RM) $@ $*.drc $*.rbt - $(info [=] BITGEN $@) - $(Q)$(XILINX_TOOLS_PREFIX)bitgen $< $@ - -.PHONY: all clean help -help: - @echo Possible targets: - @echo + all - Make fpga.bit, the FPGA bitstream - @echo + clean - Clean intermediate files, does not clean fpga.bit - diff --git a/fpga-xc2s30/fpga.ucf b/fpga-xc2s30/fpga.ucf deleted file mode 100644 index f20e2da02..000000000 --- a/fpga-xc2s30/fpga.ucf +++ /dev/null @@ -1,54 +0,0 @@ -# See the schematic for the pin assignment. - -NET "adc_d<0>" LOC = "P62" ; -NET "adc_d<1>" LOC = "P60" ; -NET "adc_d<2>" LOC = "P58" ; -NET "adc_d<3>" LOC = "P57" ; -NET "adc_d<4>" LOC = "P56" ; -NET "adc_d<5>" LOC = "P55" ; -NET "adc_d<6>" LOC = "P54" ; -NET "adc_d<7>" LOC = "P53" ; -#NET "cross_hi" LOC = "P88" ; -#NET "miso" LOC = "P40" ; -#PACE: Start of Constraints generated by PACE - -#PACE: Start of PACE I/O Pin Assignments -NET "adc_clk" LOC = "P46" ; -NET "adc_noe" LOC = "P47" ; -NET "ck_1356meg" LOC = "P91" ; -NET "ck_1356megb" LOC = "P93" ; -NET "cross_lo" LOC = "P87" ; -NET "dbg" LOC = "P22" ; -NET "mosi" LOC = "P43" ; -NET "ncs" LOC = "P44" ; -NET "pck0" LOC = "P36" ; -NET "pwr_hi" LOC = "P80" ; -NET "pwr_lo" LOC = "P81" ; -NET "pwr_oe1" LOC = "P82" ; -NET "pwr_oe2" LOC = "P83" ; -NET "pwr_oe3" LOC = "P84" ; -NET "pwr_oe4" LOC = "P86" ; -NET "spck" LOC = "P39" ; -NET "ssp_clk" LOC = "P71" ; -NET "ssp_din" LOC = "P32" ; -NET "ssp_dout" LOC = "P34" ; -NET "ssp_frame" LOC = "P31" ; - -#PACE: Start of PACE Area Constraints - -#PACE: Start of PACE Prohibit Constraints - -#PACE: End of Constraints generated by PACE - -# definition of Clock nets: -NET "ck_1356meg" TNM_NET = "clk_net_1356" ; -NET "ck_1356megb" TNM_NET = "clk_net_1356b" ; -NET "pck0" TNM_NET = "clk_net_pck0" ; -NET "spck" TNM_NET = "clk_net_spck" ; - -# Timing specs of clock nets: -TIMEGRP "clk_net_1356_all" = "clk_net_1356" "clk_net_1356b" ; -TIMESPEC "TS_1356MHz" = PERIOD "clk_net_1356_all" 74 ns HIGH 37 ns ; -TIMESPEC "TS_24MHz" = PERIOD "clk_net_pck0" 42 ns HIGH 21 ns ; -TIMESPEC "TS_4MHz" = PERIOD "clk_net_spck" 250 ns HIGH 125 ns ; - diff --git a/fpga-xc2s30/fpga_felica.bit b/fpga-xc2s30/fpga_felica.bit deleted file mode 100644 index 30ea16e332b8d28b03a80605bc0531fd5864d0c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42179 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 VbcHV;&EOOomiOv8^Q~Kd`@ho-u|5C* diff --git a/fpga-xc2s30/fpga_felica.v b/fpga-xc2s30/fpga_felica.v deleted file mode 100644 index 6fb53927c..000000000 --- a/fpga-xc2s30/fpga_felica.v +++ /dev/null @@ -1,240 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// See LICENSE.txt for the text of the license. -//----------------------------------------------------------------------------- -// -// The FPGA is responsible for interfacing between the A/D, the coil drivers, -// and the ARM. In the low-frequency modes it passes the data straight -// through, so that the ARM gets raw A/D samples over the SSP. In the high- -// frequency modes, the FPGA might perform some demodulation first, to -// reduce the amount of data that we must send to the ARM. -// -// I am not really an FPGA/ASIC designer, so I am sure that a lot of this -// could be improved. -// -// Jonathan Westhues, March 2006 -// -// Added ISO14443-A support -// - - -// Defining commands, modes and options. This must be aligned to the definitions in fpgaloader.h -// Note: the definitions here are without shifts - -// Commands: -`define FPGA_CMD_SET_CONFREG 1 -`define FPGA_CMD_TRACE_ENABLE 2 - -// Major modes: -`define FPGA_MAJOR_MODE_HF_READER 0 -`define FPGA_MAJOR_MODE_HF_SIMULATOR 1 -`define FPGA_MAJOR_MODE_HF_ISO14443A 2 -`define FPGA_MAJOR_MODE_HF_SNIFF 3 -`define FPGA_MAJOR_MODE_HF_ISO18092 4 -`define FPGA_MAJOR_MODE_HF_GET_TRACE 5 -`define FPGA_MAJOR_MODE_OFF 7 - -// Options for the generic HF reader -`define FPGA_HF_READER_MODE_RECEIVE_IQ 0 -`define FPGA_HF_READER_MODE_RECEIVE_AMPLITUDE 1 -`define FPGA_HF_READER_MODE_RECEIVE_PHASE 2 -`define FPGA_HF_READER_MODE_SEND_FULL_MOD 3 -`define FPGA_HF_READER_MODE_SEND_SHALLOW_MOD 4 -`define FPGA_HF_READER_MODE_SNIFF_IQ 5 -`define FPGA_HF_READER_MODE_SNIFF_AMPLITUDE 6 -`define FPGA_HF_READER_MODE_SNIFF_PHASE 7 -`define FPGA_HF_READER_MODE_SEND_JAM 8 - -`define FPGA_HF_READER_SUBCARRIER_848_KHZ 0 -`define FPGA_HF_READER_SUBCARRIER_424_KHZ 1 -`define FPGA_HF_READER_SUBCARRIER_212_KHZ 2 - -// Options for the HF simulated tag, how to modulate -`define FPGA_HF_SIMULATOR_NO_MODULATION 0 -`define FPGA_HF_SIMULATOR_MODULATE_BPSK 1 -`define FPGA_HF_SIMULATOR_MODULATE_212K 2 -`define FPGA_HF_SIMULATOR_MODULATE_424K 4 -`define FPGA_HF_SIMULATOR_MODULATE_424K_8BIT 5 - -// Options for ISO14443A -`define FPGA_HF_ISO14443A_SNIFFER 0 -`define FPGA_HF_ISO14443A_TAGSIM_LISTEN 1 -`define FPGA_HF_ISO14443A_TAGSIM_MOD 2 -`define FPGA_HF_ISO14443A_READER_LISTEN 3 -`define FPGA_HF_ISO14443A_READER_MOD 4 - -//options for ISO18092 / Felica -`define FPGA_HF_ISO18092_FLAG_NOMOD 1 // 0001 disable modulation module -`define FPGA_HF_ISO18092_FLAG_424K 2 // 0010 should enable 414k mode (untested). No autodetect -`define FPGA_HF_ISO18092_FLAG_READER 4 // 0100 enables antenna power, to act as a reader instead of tag - -`include "hi_reader.v" -`include "hi_simulate.v" -//`include "hi_iso14443a.v" -`include "hi_sniffer.v" -`include "util.v" -`include "hi_flite.v" -`include "hi_get_trace.v" - -module fpga_felica( - input spck, output miso, input mosi, input ncs, - input pck0, input ck_1356meg, input ck_1356megb, - output pwr_lo, output pwr_hi, - output pwr_oe1, output pwr_oe2, output pwr_oe3, output pwr_oe4, - input [7:0] adc_d, output adc_clk, output adc_noe, - output ssp_frame, output ssp_din, input ssp_dout, output ssp_clk, - input cross_hi, input cross_lo, - output dbg -); - -//----------------------------------------------------------------------------- -// The SPI receiver. This sets up the configuration word, which the rest of -// the logic looks at to determine how to connect the A/D and the coil -// drivers (i.e., which section gets it). Also assign some symbolic names -// to the configuration bits, for use below. -//----------------------------------------------------------------------------- - -/* - Attempt to write up how its hooked up. Iceman 2020. - - Communication between ARM / FPGA is done inside armsrc/fpgaloader.c see: function FpgaSendCommand() - Send 16 bit command / data pair to FPGA - The bit format is: C3 C2 C1 C0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 - where - C is 4bit command - D is 12bit data - - shift_reg receive this 16bit frame - - ------+--------- frame layout -------------------- -bit | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ------+------------------------------------------- -cmd | x x x x -major| x x x -opt | x x x -divi | x x x x x x x x -thres| x x x x x x x x ------+------------------------------------------- -*/ - -reg [15:0] shift_reg; -reg [8:0] conf_word; -reg trace_enable; - -// We switch modes between transmitting to the 13.56 MHz tag and receiving -// from it, which means that we must make sure that we can do so without -// glitching, or else we will glitch the transmitted carrier. -always @(posedge ncs) -begin - case(shift_reg[15:12]) - `FPGA_CMD_SET_CONFREG: conf_word <= shift_reg[8:0]; - `FPGA_CMD_TRACE_ENABLE: trace_enable <= shift_reg[0]; - endcase -end - -always @(posedge spck) -begin - if(~ncs) - begin - shift_reg[15:1] <= shift_reg[14:0]; - shift_reg[0] <= mosi; - end -end - -// select module (outputs) based on major mode -wire [2:0] major_mode = conf_word[8:6]; - -// configuring the HF reader -wire [1:0] subcarrier_frequency = conf_word[5:4]; -wire [3:0] minor_mode = conf_word[3:0]; - -//----------------------------------------------------------------------------- -// And then we instantiate the modules corresponding to each of the FPGA's -// major modes, and use muxes to connect the outputs of the active mode to -// the output pins. -//----------------------------------------------------------------------------- - -// 000 - HF reader -hi_reader hr( - ck_1356megb, - hr_pwr_lo, hr_pwr_hi, hr_pwr_oe1, hr_pwr_oe2, hr_pwr_oe3, hr_pwr_oe4, - adc_d, hr_adc_clk, - hr_ssp_frame, hr_ssp_din, ssp_dout, hr_ssp_clk, - hr_dbg, - subcarrier_frequency, minor_mode -); - -// 001 - HF simulated tag -hi_simulate hs( - ck_1356meg, - hs_pwr_lo, hs_pwr_hi, hs_pwr_oe1, hs_pwr_oe2, hs_pwr_oe3, hs_pwr_oe4, - adc_d, hs_adc_clk, - hs_ssp_frame, hs_ssp_din, ssp_dout, hs_ssp_clk, - hs_dbg, - minor_mode -); - -// 011 - HF sniff -hi_sniffer he( - ck_1356megb, - he_pwr_lo, he_pwr_hi, he_pwr_oe1, he_pwr_oe2, he_pwr_oe3, he_pwr_oe4, - adc_d, he_adc_clk, - he_ssp_frame, he_ssp_din, he_ssp_clk -); - -// 100 - HF ISO18092 FeliCa -hi_flite hfl( - ck_1356megb, - hfl_pwr_lo, hfl_pwr_hi, hfl_pwr_oe1, hfl_pwr_oe2, hfl_pwr_oe3, hfl_pwr_oe4, - adc_d, hfl_adc_clk, - hfl_ssp_frame, hfl_ssp_din, ssp_dout, hfl_ssp_clk, - hfl_dbg, - minor_mode -); - -// 101 - HF get trace -hi_get_trace gt( - ck_1356megb, - adc_d, trace_enable, major_mode, - gt_ssp_frame, gt_ssp_din, gt_ssp_clk -); - -// Major modes: -// 000 -- HF reader; subcarrier frequency and modulation depth selectable -// 001 -- HF simulated tag -// 010 -- HF ISO14443-A - removed for space... -// 011 -- HF sniff -// 100 -- HF ISO18092 FeliCa -// 101 -- HF get trace -// 110 -- unused -// 111 -- FPGA_MAJOR_MODE_OFF - -// 000 001 010 011 100 101 110 111 -mux8 mux_ssp_clk (major_mode, ssp_clk, hr_ssp_clk, hs_ssp_clk, 1'b0, he_ssp_clk, hfl_ssp_clk, gt_ssp_clk, 1'b0, 1'b0); -mux8 mux_ssp_din (major_mode, ssp_din, hr_ssp_din, hs_ssp_din, 1'b0, he_ssp_din, hfl_ssp_din, gt_ssp_din, 1'b0, 1'b0); -mux8 mux_ssp_frame (major_mode, ssp_frame, hr_ssp_frame, hs_ssp_frame, 1'b0, he_ssp_frame, hfl_ssp_frame, gt_ssp_frame, 1'b0, 1'b0); -mux8 mux_pwr_oe1 (major_mode, pwr_oe1, hr_pwr_oe1, hs_pwr_oe1, 1'b0, he_pwr_oe1, hfl_pwr_oe1, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_oe2 (major_mode, pwr_oe2, hr_pwr_oe2, hs_pwr_oe2, 1'b0, he_pwr_oe2, hfl_pwr_oe2, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_oe3 (major_mode, pwr_oe3, hr_pwr_oe3, hs_pwr_oe3, 1'b0, he_pwr_oe3, hfl_pwr_oe3, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_oe4 (major_mode, pwr_oe4, hr_pwr_oe4, hs_pwr_oe4, 1'b0, he_pwr_oe4, hfl_pwr_oe4, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_lo (major_mode, pwr_lo, hr_pwr_lo, hs_pwr_lo, 1'b0, he_pwr_lo, hfl_pwr_lo, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_hi (major_mode, pwr_hi, hr_pwr_hi, hs_pwr_hi, 1'b0, he_pwr_hi, hfl_pwr_hi, 1'b0, 1'b0, 1'b0); -mux8 mux_adc_clk (major_mode, adc_clk, hr_adc_clk, hs_adc_clk, 1'b0, he_adc_clk, hfl_adc_clk, 1'b0, 1'b0, 1'b0); -mux8 mux_dbg (major_mode, dbg, hr_dbg, hs_dbg, 1'b0, he_dbg, hfl_dbg, 1'b0, 1'b0, 1'b0); - -// In all modes, let the ADC's outputs be enabled. -assign adc_noe = 1'b0; - -endmodule diff --git a/fpga-xc2s30/fpga_hf.bit b/fpga-xc2s30/fpga_hf.bit deleted file mode 100644 index 72f3d619e974e6aac2968b4524a055684934eb18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42175 zcma&P0eDp9nJ@mH@0^5_Ig`vG1aCyNCzAn(I7x;H#u&roBc$#qRA;TbfBw6D_Krwh z>a}j{dhca-@9ln>1egHAh}1^Qx`!AwT5N}a3P|;Ukq#I&b=ekO+YT6Qv}l7xO%UY& z`(~1v^#45fK0Ee#JPwC5-*?{ceSh!o_rBj(D)Efx{vlHCpgDJS{Ouk8b?sfX9rxUE z=eO6?-FxR6T1~Fd-!}yR$9;=~LAsNSP%zX`Z(Um-YNRz(viSPuYlF?#Hqf_;`a3S+ z^UNcEaaWLpLPWEIN=*J+4=R>IqO~?ij{I+$`tyBkH~$Ud(MC6p7Q_ObF|!Z{xkQ?`M*9V`-fkdibFA)N5w+1DMIu3tO?~) z>JV4aET?tIkvBO-@mHT z(aY9adxb6Z1gle?5dm(b*tiyx&!M@e>9}YN-l`jG^e-Ln!+`BU<)3 z870NP(p$O5S^hkKnLOmN)HC#z);dy_QYSEDe7L!br`2$IX;M999i!%Ux2-Oq;}l-z zPN}A5$$Qd8Zt9HGt-^TTqs^9Axcb{_*e0su`Zx<=0pXJ=;?yYuilH2NlXsDA>lAP2 z+tUH3smaxZC5DfsglJ=DZOn*-zM^fS+IFptU&eQc+Kj#~uIHW;(KUA1*J64|P17q_ zwr(=q^b0-A-NCENa|?%;?x0JAd7Z^9zM`eKdk(V;bcR~n@y$qaO#aqDQHIWopyf`e z#duD5RoQ^5(HMm?i$Ya*=j;`koun67mE-5Ef;LhW*E?|0PkS8q{axj`_w3MP%1dIA z?KHKOvu%k*w!W5yX^W_e>Hp}3Gs)kIRJ;+{%l$)okd;wfc;D4MtQ2Om+VM?!&hBG# z_tRJQi~HPTn{S|_6i&HEjq7PE57}v3OTnV)gkH;UViKL5|;Zdp{=0jgtL+IMuJLT@%4icjW!9B-ePoaE<{D2z{fU~jd+(JO=rg-@S?P#+ zjxO4bYwO>^#b@@lG0zV5uHp{)oXVne^f5JXx4Z}Ikh_!05_*+wU#*RJi*xpBGBf%n z<|SQ}XDE($?{}C@CxzE66|5{bcfANBB%AA%Y;^W|dYVU~%tt-`wOltD%lTL3+$X7r zdE5QH^gi#QU90qeXZ`$gs^KL`R-ChiUGW5c*dF5U-Z`V}m~$}d?p3cAov9kGCk=nj zzx>o~PFgM8lT=5oN&ZsI(+)dNF97)|=QidXZa>KEQ6F$78l* zG~u4?d$yGM+6!a}y@e%x&&l}wmtTJ3WpNmfIfh1b#d6kAjNh2SPAKn7+(Ndgv_H|zMu z=Ku>>&c8@sLum>NPl}zvb3(#xs(yNn8XUxD%K4Xl zb*#8Uj>iF@4U4K0_Yt*2Tv|QHayx2}zA9?4Jf~eq8st5~9JPDmUZ1{&Rnx!5unrSy zOahsuf5@!ddrlM$(>3HLeYW>?+RH8OvRv+xK`h#mzIY$f34ENn&+1R>HI_eKyqkVR z-Z%}gd+C7iGTmmWoZb2CkJ#94O-+IM>K(~TEV!i3R;#V^j;)p2)yZl6`kDT&xSG`` zu2{{#q*j4-I1X=WwZ37i>!$H*H+@9Sin_|m zXO{(On-a2gtNdzer%=p@74Ylt2+nEhq-mX-*&1>Ipv8k^turi|#;;{pEq*Rh>#Mve zewn#ZRQLT=g#9C5FBW8swdHyIa`X4JrtWkF6YLdQLM}2Q{NGl02!QW2eqDL!@{8uz zUiFMCuVT&dA9gOV^>q0aB^%;TWQ;ME$FDQX z_VTqE{RXD+hiGA?zKCf;SU$(F3ix%9zUqH59vD^q`a5)8uREqTyWY?n<(U5zznG_6 zJ!Oqivso|TRuk0BJVJddk6&~w9p-_ZY8`xVu*02Hi^Vb496=O~=hm2@yQn7~h_0$s z0c47|1Nik69TwgUuqlsU3zZ&Lvr12{_VGQ0Tr25XKt1N&9N1LAuVtMS;D{3K${ucw z_$%3Z)?-@oo?NH{e%(Q7rMbqxX>*M|E<&Uy=6ESR)=ZuUfL~c(?!EH!_-D$}W%VQK zC`~%88PAF3ztTSL4|C7$>Ibv3{w4A2A}!_asJf*1Sl?dm9#PKG>sp9oUU~c)qy5MT zb6fL}S!bz%S(~n4sk@&m+bffq1wE_%%e6 z4>q^W#4qHB(J-y-HmYb`3s;s3wJMpWkO`Z*rtqt%nQapFLXZ9EuiFn&t$93$v;m^98H+M!l)+ zTfxp)Rhw~Nn?LuQ0sS)idFN6)uvVQ{^2K=T+Q2&X`|Q=RJ*PcQMorGB`jy@EC4~=r z#GEtqN*oO9M&i-mEP)lB0Ta!8EXX!owt;f!tmJJ@_>n`;3F>hT|DDZ#s}Phz-k}zeB&Cy~;aI3a9cwiOM+?f>tC;8L58?(9fLDswXz!8IaW!mT zG#dn-lgF<+eJ_d@f1+kynftedyly|+Z6Q&t1QO-(%S(@#_u7#G=C`^CYqb}y2S;<) zf5#I}on`Dtk_fmtWyIM6Cn3BsB;*a0h@yQP2~K` zQZA$CI%}WM*R}nIUJzBI`c3Se$Ochs8S9XNaQR!{UvTpl?zYslewI>Hrm3&$r&$XF zBYO+)3?F_a<|VU>Of}{OGr?XL%&*K=Z6^QvfE>|iyOY(U`UDNy?o_o;@=Ef=)sOP{ zMW9_0zuqV&cDFF zs4HQetXWb#?1z6jMrZjwdRzqLdVWjG`UUux^@e?&xaGs@x5ek8Ayqo2UQb8k@HksN zpZl!{onjM8m`XbvGPI7u+ATso<()9Y%AevFGRCzs)#u0T!P^kteRRwYIiCI1M{>WF zgYBjs#mj$`lstv^ar~{L zIa`2#!JELpq$ztS3tL6z)Ws1+J_h)8w>>d{w<=T{iDC#Bh8M=f#ip)L)Tq3t_sSDl zY=SqPW1rDd?zye&3;iNP07*sobRw$DSscmZ7wefVA)5iRsfI^( zur>MvRL`&2!H(u^VbA>?&?*&mU#@DbQ$H99n9wD%<4LMxQ~XQmPM)Q3yQkLx?V`rW zwnx=bHfd((mFHi(teik*^>eX!H)vNFK(;jIo|s+WU;G6Vcp3%&f}`!wJJ@^< zw2ES2dH%JNp5wso``9_!O4lTCPo@4sWj)8m6#ud+hBd?%;c}P1LGdo*VE(FdQt#pG3JAuUo{`E=s`6J=(l5TZOKOelz*_Kkz@Gm*| z*Zu;2U7`!3mAgk9J~xMzYI2WnZnD5D9nS?dk6(9)gS^g4^t0Es#BnPKTQr%QJL|>~ z52x{~C_o2dbuoPh%h){v7pd|9ZT8nCX5yDy&Vu_*mS&wa!0{Zn3N22+rg{9jM`jKL zwlxa>!bOMbpZyvb*{vxf&%ef}_?J4aUm%3{@i`On8!>}_6^)BwrNO;rq`H}3+|Xcq z(txdDY5@0DgVXqRn$kM*h+Y;Dz%Ltag+vkF=IT}R`r#2SOv^;N>lOzP=MCM<$!0c{ zn9MtkU$)XC`lRerhnIl#GQlh{z`V?rj8Ex@eD)Da9}nFhNEtQe+3rxn<5y#1EE=pR z{Q-2pY)r@~d&{A!anF(J3v^Lyed5-PI?hgtu!ZQC*AM%7S_IqOsX2=xlROmnJfjNA zL_?K<9R>ZcPD7e{zhCeAJ327mYpeZoUL#&puPpGdWtJSJ-dJ2L_O$uM6&9Nnhmbhp z_q*0j<5!4w2x~Mk$^KIOELmk65q6ojFZN|TgVxg`v4XP`^ee@35?1*P{`H*rwyjUZoBbQa0t;jQ zC3T6aOkyp|^RGAfUaAv1l|MzD7EIC#vi}f(OrOEO4)CuMjY;?DolWfMspqzD%cx_( zQzin|4E+#L8 zGVQiqBF0_&nAWyl3RBT(|H|rzW1(jEGhJ0uo)vCkRNLu+!5a7RuDpJDj(*nv(%3a4 z>My&0tzbc(T>eWjN#E!7|3Cb~A0>fbNKSa^3AKVtiNZZ{=M4Up(CSFKRmFY{FFfJ$ zb_3DqPxV9S*c=f+Q}%*nK@!x=&LSz!xbpg8KkK17zB$S2HA%!0+nEpFcyV(m&%ZtZ zeubmklE&4D;ow?TaZS(D)%NrgQLt$QZ_nu7I&VTm-8 z#$E2vN#MJC2LHO;+-g_H4X7gK)@8M+&EIC{X+!^Yeb8G9{7dN)R&;Za71Kjjz{UiR z(L=%#AjNt9RZ5+mRouvU|I*q~RNMB~_qTnfZKMT`-tkzTe_h3XF7^PeT#f7m;Ks97 z{SEzU!{Us)3BrqX9fE$Cn~rbu=0YA^bKBs!SH3J>8aT$cfSYX}q zc~qZjuuA`7IpyNv!0a8d^+mw1n5)v+H@lYW|Gm7TZGH6GNa^1f_}5PAuBjc-$61BG zFACTiVHMU>zAAoG2S#Jb@c_Scp$B-Pip?Sb+3h;kq0&h{UeZ|LUq4}Kpp`#WeXTW4 z;STqqu1e~Izn3-}HMyKb(E9|f8=;_U)SPg#aQr?4evJT^^Ze@*8TrRN<7}yQh8q5x zd!nla#AmOwa#G3T*Wc29EE~g`R}2zieedQ8cCEJAv0|?M%;u&XvncY}`<*&R-4BjG zAmCqvY?0ItJMhPZZX zK!KvD6zX3{iTUb;%Wiv;p6+HYSATI}agScpiHJ0fUvr1~F|%=3*&vqIF>1`XA5`x& z2YB=LfByV#&_~);!*1jx^m{90mZiGB zEhc!2UY4w$(hpA-1w>~D0$)>nh=jf5G#z3K^jAdLBl`Af{2GHk|F~nF_50$th{w5~ zxe^dj`!WI3Ww9y!FopWpPEl<|RuzA$ZHd=s^a*yA)@|3upz0@bHjR)@r<5S+LABk= zV42*aY^Kfm?(3T3UuozYNDJZJuK8>u)ru7zQiNBkoSS3dO)b#`fgfq&)ms6BLnf35s$@oMOY>Or%tyDN`hABea0gE2(W zQGURN4?cRu8mzJKT4Rrz=U-o^PUc;s@9_Rk9PrjfH}3>U^>l-g?PPiW<+C2p7q$6E zetCgjruueQ1@n2Iw(6E4;OF^Q1$%%{wuly=kU|hQ%(eyeIJ<{mF&kVaJNNz2H`36b zvFfDM*}7xfdezd$C|pzelLG%5qO(ev*PBvalW~58eXjqz%&Z=r$-h1Ww7H|pB^Ds; zB>xP&5gmnO^C z$B$9Vje&+GPqHh|zigUN8q9!GouUh|R?~gN z2-0v{*mQRrF0$lH^cP)EFNwY+J*1zX%S+j8&5Tt{x&H0z)Ute?vE$D~a z>6~b_-I0gp=|{yv?lnv}Qar>R+gBv8sm$?qfS6&+{9O>mAh-{*AM1J5i6jJLg|SkI?hT zKwz(L(estSxN-2xr>K?;&Yax)u_}&G>LfB@iyfgoaeo3e@*{CO5@<4t3;gRRVh^gx zbxYL0)6YAt-0Ijohn|)dv6=NR@JiIyH>tav$yhjf>jve!G%v@OV-%EgSIjTyW2K?I zG@~{mkMfLqaMAv{XziXgt~%}6dxUlmp(-S!`ZfHZl%ck>YqU*~x@FS8rtu5>OL(1| zwga|awC+vbyq)>2O;u1lc475$`CC%oNKzlyQEZ_U-NOyL#z#=>37XZEe-Zo(^;2Fe zWkb|}oNeQCTG$HkFCdzuM&)yWU;6z7MlWSUfNxevq(fTvo9X&j(N}y}Z%w$5Yz_+0 zE|+`gp;6CHk3al(iJtDYpcuBvU5*-{Y<%_ zdxguIhYp8j1B!0lNFrI~E1Ai^b^{0NGBrsSDDKhjCYK$zsW(y634jhx*?sOAN~f15 z%U%Bf52|M(@6*eU=P(L|w8|a!DPQtnnW;wDdrAwH^%v@2JEd&s)Soi;(Z~En0oiceyyTOLqA`+t zKLbT+>zEki?&R`7IkX*Ti-0ixwj>Dqy7K)SJ87e~*wKSo`~qDH!tpyb%PBQcw~EQ} zIP?;AimS(=aNff9iUk>0gxx|v6jc@m-;wh#;Fr~v@nvofZYqs;iOi9j5c3><$gxIC zLWTNQg5EgNnDq3k-zh%7uQ7Q`|MKt9JE_6s%6|19bH9cD4K`smSpia==!Dj6mIzfK z>B=&)JbrzQbR~>%I>)DGVLTX62iC{&o2W0=2E^tvlwtPY^$k-@3hP4S~7D zu*RM&?#PZuR=X&)y0mxWLVDXCj0JkT7Fxd^7>t#sl^gT;r6s7(1X@+K4f8&!AI7vq zdn38xuCn5+f93Q;uq}+4tvBtc4)UlxNOts*ig;U2->971Z-H&KBYkSr9uQtBB(6b6 z$3pH(dT-46g*|ta9TO-w^fJ&ck>c|oR2PW1GXSzj)wMah`>CJKTH#oI(ikoNP(#2s zjZt&b+YL|ZfW3bbUPL`%;P z=(aJYZKY=6O1Ev2Z%1O>z1Bk_Fp_9;l@>j&^#_}RY|E^K*XQ`FrummOdwvztFsCvY zuTc7F0qNgk?}~17QQ8%o&JX>1BmD|K7+A;3*n8r-yWL+JFR`Qck}-Fc>YBnY)RJ=e zWsD*Te2D`BKDJL&_(a*`)BKCi{SEytew}^G$?9ekWt7KDCwji`9~KSc?lCnw#lJ4! z5!tBD7O;h>LEnI$i9*;3y6&hRW6$K)JfVBzDXMr2t>cznhXfb0-~IPWHqwKTB6rtEW+=s6Q9u~TNV7VRu;8*z`bfcN)e zuM@Bf`r+Twi(0@zn~e|l>T_Hvwp;6o)Hu4opdT)@UKFsYa1Bsz=fY0thg-^fEd-f9 zmzB#m^a|9!vbqiC)umXDD_Fcm5#)C;FQ(-T@AgSs2rQcc?WES&xururMDNJ{jf_gn zlsDOPv;0fcqJM+6(shTC#$S+;-vRheY28lITXaq|SX&}$IStbu8;u+$4f`7?Fs$bB z>mz!x)4NMUyP$@auuN9t|Ecr%xa5qv_natlko$QFE@P3c`9-DGrqO_AnXYoSI_F=` z+}#r2qb0rGMf76;f+eWP?l-A^$&cW&AOY*Zkh_nT5yb*I!dbeyLWxR~N!>7oTt z-eh=Zetk35IVcd%qf)Al60tmfwUZ!=BS+%6fN_aMj&wS{+Xsl{^~12aWyc~L-7J4& zt{1g-$+~PU>DzYYI#$pR=?F(O_RVRJJJjO1Ep;Uw{>~EUW5#Vc|Ke93LU+xz?b|Zd zha`}Rx)Js4&EKaRcEDcA;uxj{{Sf?%HAAaKxPVOOl+IcH9miPN{4VnH{8du27M~%5(mun;(c{$z~o%&hjZY+0XML69t-MnzucWtY*12Cg|JX?`S(T zmm@4YeTdKH3+d@d`6_o3zLQ<^l|??QN2`&c+ec4B!!}0P67er|4e+bDn7EvmuK5(i zc@79@r(Me9d|nn5=sR4$y`Ue)@OqntTa;UDU|>-3B#at8Ee={M9itAB3?J0LShnmn zGUpuqT7vHm^?e;;b@Z0Xnf&W@*0KzJL_T(y26^2OB4t4;kGeMbLbC#qd~^tL6Ylsa91&VFG2fPW_%F*g+Wm)Ya5i|Qx5OXvX$ z1oJJ|b9mhbW~vqE;;KFOeQ`_)M*|h=Eb0-1yv+3W>u*yH5A3Ke=!fN#an!#g7tZp^ z-s&~<3)+Y5LcKZXUw(6!g|daYGErR(ERgjIn>0(lAAivmVyhJp2^;v; zM;6*P$PbmKEMd&xUn^NxB0$L1iNVn-QAN|3X=$WdSZ3MxY%7(}6KcuD(I}4fY#JP5 zd&zU3(d2zy-+SDX*-Y(0Ii61KE)p5*FrsmqHfvro z_Qwb4HLE5Adszkkl@JSU|9QgAeQ(=QAQk)O-w=vn}#^a{k)VS-JalAxR* zE>-})6nP8uL)m}W=zubuq1T{GAeZoKhc#RPzjFR%m&&r&QYQ;rGO@?S1pPtD;a73i z77q9_%I@6ls4bw$sDGVTFNon}tL2$d|N2DRFZwJ3eu297*@@4*7xs-)on`dWH2*4s zvZPpoHZ;GH-H1TMS<{5rq^e<}7%<@fh1UaJ3BxC?oVjbQu4Dm5_Z-MAxl9 zvJSDep=*f0LIElZUhSq=qK6zLOXW=d6#6&zyD!eJ7u!CYbB#RDZtYg2@UKYE&{&nmz@UMCazNu;ag1&Lemn>Prex5}ChOFnh zi&2?{2J`D}e%^4gC5Iys6Z#KA8J0@GoU zp@BUngbuU(NY1~ceh7Wus)0_6;$29TbuV|~V?2!hjmM|^H!eSiwYoIAZO5F?pvf%c zo-5i$?Vs&x;qaa5{tZRShKrYZ&UbyTpVbxvCe$SiOw;k4H1hQ?=!bx<&30RcA4J@c z{k;tPQwSBY8ThqFvAAloA@cy)TrWo_tYneKKE#BqUr7Fi`d}MmpV0{VGtun9*3i?0 zibkRTaPIqbmJfD#b}av0_t~~k42?iO{a6&*U?l=b_Bnn9I-82FyyQ1Wbp-r1@WCO> zB7C!FyIRl>1!^t?wXljNBF$_I0EeeJfL?Uv`wy?t4lb*Y>to)U#6fYb4I=goa%>dP zGi+1NFZ@NE?~Mf_Iw9RnIac&0V(8W&YY1^8U;i=*-4QYWO5|hDyB3Tr(%6oQAMUDh zR&=m|+;ax>a>TKvFI2~P7bD!N2Jcdoaw@>7p>NB;|PrF)I5Ieq+h93q-Xc1bkwFj&dn|K z1yyw$-;3w@SBid0i-g|JcIX?GTBjt29*=*eDl$5X0bSDHt%@|%c&ivG@hrWIXG0}A zA4JSDnu-%S{~DMZ2f{WJc*;}s3U6_cqPHl&%7ku1Q8JHT@6nIY3+kCaXEc^2m^+rA zq2DXv%55|1Uuc_0S3@akN!lg7A)`CWyYvTKY(u|ad)AjbweQm7`hcbPda((`@n&3~ zde5*QlXp98QNS;2GojT#5xS^Z$%gS9 zfI`!}8TbX*LIhCPm|p_F%53!ls{ex=W1hyZE8mrAJb9vC83sK<0-63l(j^qkb&vPU-u-b+o_Jo7vo3*#DJr zddMb(IN9o7C;aG{)X~V{7-pgVWy_W@2Rez5eyrDVlyUtK{QDfWQ2&}e!aFe@ESn|t zTC`=v9jqSc1|u8t*eqZF>Z6N3Y$JM99n0#XrAO4y=t4;rm-G5z|0YBUy2V1)^csg? zvP<19K4i@!o?WP;W!F!-XbCb0P^zSQ4<#%#fF)TKCDPtcji=eCIa_3kzRu7&tk8cr2m8M)eQn!qv_(|+>#NE`ln_;!6{`yPMeG$|u9OYw6)T8& zsR@3Hnnq9)e~ZcG4E##LOkZ>AGwL~>EnIT-1YKa5*GQp%KBK*&gq#P&iZ!}yL_|vL z6NoJiNa$4kD>8e#*oZNLf9XhE(UuTnmDV}rt1I&LFNYqE{m`khN_6&3wnHpHA*{HZ zo)fhhV=c?`uUA>NTcZ)u;zJp0LJyUdahn3VQB~ky2k9O3^FLs#Yv~=UF;VJO{gnrm zaIfdtLj5aajd83xJ|{(JyrC&U8y+{Kf8zuGHU)VZrlSM4IFf%K3N+b^BRO9d^k>DL zd^K9{)OHvSVY&AjbZa;=KF`1}^^s*>?i#sqNy)SLN#iYALI?aFzImiAU;jcsfP5`c zcDu4(*1tx)75Z}uE~3-=Jo-04EBdY}+tlT?A$7ug)SwAOlVhI7uPc8A*lIzy#+)-1 zXgKE{b9q0$$&Ps%zluJWIzSB3<}O?e%6XlG-kZHA-+y@8Mk=eoFRFCewo&51t-#2H z;S~B0UuB?OQR8;@t>^>D`By}X&(RO2$2^5!PZal1^(uX&9Q+FfK4YYK)I$GZ1SIt6 z6#try{tXIY7<1OJV^kh{b4Sbha>+rPQIUiiPBVM*qeeh<;@g%bV$4{Pp?A)KA-A z?{2j*L1&tO{eU)@RY(2bW0h?fPp7_&op8Vqlg8Hz{fFJO4Q8t8aIK;pR4eqg<>PS1 z+BnvjGmT$E#X#y2v>o2e<7lMUeeqYROA8Eco=@rAn#cYxyxx#?%hu{|)7udcXSB@m zV^kMY_ZIpO&tPR9QtR2AehJVwdLEqf0eyK>nBOXQgk`Zw@~>ahAeA|W20{A@4hR^R z=n%t&(>{e?|BtJaYG|#D&s`kaMT(6=QLO90MP{0R`RGx^@EX~6h}H!MDOQFK@VW?c zq)g5hvi`M6^E>`vaT$WAKT|?%2uO`wOZLiA_EWl+{(}acttr&MurE@EuS}L5dy<9v z*9Bw+h<+WQCzlv>whZFoCHiNMcsN#^UGtKE!CuGRW1icffgsgCtA?WBU&A2IdHni> z-s$#^BYpCkJstLl@mZU--L~q7{UV;pz2^jUtuAK4GJvFHiNDeav2M0Y38X8_3;31Y z_H`J~sbQO`My6Q1?WZg2oXXy|@tlA0xgXPU2VE$2YMb>R)Ex7qj0BAd5GYaT-#BD_ z<-9zG>5L;>yx`oLQom3C$`HdP!HmiG!_A+X=VNFu?}vVP+>5rT6f&lFc+d&h1^(sM z28XN@IE)l~D4@F@qEc8rXSc2Au~`ug>`w z^h5J=4feVN_WG*gWewBWi3zqIDT@~H3*8zyw6f?m9WQE7&A`#?((Zv7`XNWYI%LGW zCQ@{3NWcHBcg>A-^)L`EU;lcH_Bpk-k&a{YwH)d{0;Ei}#to&pKeu)Vy%s{(j zFT_g-RoROr00pr<=U=*chR{wh=6+OtQoN=NW_Bmlg>7%^NIa4S{`GC}CO_)S-m9ro z3W-Tp#CB1mY$l(h*#!mHw{WCkiTS})yvTw6lz#;{GQEBX zJvPWAG?`t5q6zk_&EQ{D*S-SWlga*hN+OYdS|(jdp4Sh7M5n>6cB=jDhwV_*moye~ zIiA3y`TffZw2MBV)q_9&gg&(3R;FzB;NfN1mz~G2T{OV~Tk8!A$w>=+Lm;V1b1- z`r*r>$}wb3b3I3z(ZO1rjltSs{XTD=e_h7E5ZBtCRlu*`iKTYwI`FTbi`GnFa``hk z|I)7n|Dv$iOsdm2NmrSk=hR{PvOWBcXP?nl9FxCAMW52^cI&9;uh75o+s=k@w3jzJ zKX)23*a(*AU%j-k4a2yN&8GEqtz(R{mes$)ergoLrZ^E%lGaz%ZolH2-XOi8OWMUM zJGYrtPUSe`)A*G}9u=?*Gp;0dWq{o&rdtn@?Vx`?lJl>DxdOBcorD#tOaGD&p2l{q zM*U5W4F5u5|5rvJCJ0#PBl_!QXzNYM4Q@dgE~VO(#U{o4l)ss7_yyKslZHl)BZw_6 z^jo&nSvlU7=U=ORKjz-l=AC`lP^a*k7*81rJ#|hZrN*Z5%aRJ!2)0o9#g7x-krgSn z5Sw{Xd;v$x#X4QH$i_cFD?f66xs~tcVlXn;G+5j=jbAZ3#$+C~+^_wf`uMhS|gFSHw(+s_qnQQK=hF$Vxor@3ixR-r(MuoWT%Nn%e_Rc;fF=2fBufR zxBK6y(Q&)0DR)ms>1W6sc>TWR*#IJ^^C?|YZW!@Q7VvAgc-zDY4=J^WUW=j4&sJ-6 zR5TnY9wuHeKIx)b9Ww9o#Pb-&=2+dTh~$G{$7%RZ9=}%dM{G;K8|j^2ZhdlzP5z*W z)J(u$Q~ie-;MX>>OTyMwz=GN}D0j}|qPuETkAMN0^0(yq8@~WwE(@yNg!-2#D>r<& zXcB=SD=(I}fPX#DFUj3rvP=oXiCah1bIL`I{SM32ky$Z$5Ble=w~_8*+t(N!p^)uP zs`n`W5&K`fG&Nl}PtV?$rCt6G(DrO2;<(o>bH8QJ;J0#f7xWnYAaS)7S?7I+HYBPt zSdG2Mb#Aw^0A$T?uPk*BLf~aqHcPT+f@I4BWBlhUw>w%^hIBB?g|Gc9~=5p)$Ij3S1{3WUvuQ-T);bM9f?#F`Zw;h9Ud~>1FF|fGaS3I zwF~|8V}s=0)RnJ)ecpZ1Ub+_Bme0XnOS$JA_PLm}k<*@3Pv`urx9Ecm(4ie>@|iFk zV9Ssj!Il#6>&9vPdQT(?7J_2X^S6c+t@@Twh$9ak-==WR2`z)+KDG2Ky_is~aIMRJ@zI zbX-_oSI(xkg0h#A)$2yAZtyR?gK5@Ar9QnVHtk>FUj!W~gTBGzY=da=`YP4O7%eY zB+lPBqnbH;4b1MP4Y~20)WN?ZD0|_c8?DxH#niiV?^&L|0lw^%@c0Ptrtk8b{=T?^ zKcUqRmBgm~D+c{=Q^F#>nY~V3vA}~RRi-w3mlZgC&91gp)A%(&$J3#v(k;v16L`JR zrM4@;KI8$XGz0xG8=nQiO#G#h`c!s0;RIU3M(Gh29x1aQ&rnRhXMsJ2zo7=N`|O{6 zZoS?Huv3hk^oP#YF?Xh#+O6z8+JDy`(03ihVKA@JCZ{fDB-(2A|4^DI61FR^A68MX z!~(&__$Inn$JWA+k^9vhuC&>7|AyuUY3YXAqkrQ(UGg?$V`lVS zf^3+USm6KKF;v8YIeQ876M8v_aB-3S+DSOg8KakdKrcJ>qxu;Z%;9^Y2wJYo9|5J> zf`kt-ftZ6b;l0j0g@tndCHpt_QccXjnAw1+$$)!~(TkW@jolW^*`1^R@S?b(18eLI zeVPtAo-OJavZfZtCE&1Gdu5bEbkS^dW{p>00Ayd`c-~e&PhQed|B}gnOuirVAL^6( zU^}Av8U45(8bNLSW2{y5*jvjha(GhX$-u~QY4;X&A-!gW-*R^s>R&tQ1#_3<3dP+K=~l*lST(=Wu^Z(M7Sgiw zLj6lLh%9VfC7u-Dty0$&zf`p`Rh!ZMTkTwoid4K#FK)L!b_HE-^>IBwB}?L4QHPbW zrBMHRI&vPGz1vp(^ofL8Tis9KgW{fyTBv`4c7?HjdU-~#MA2UrC9CmG3weZcTW*fp$;r#A00#MZ)s}zs6YjiyUhZA-9rZsdt=7KE(uZy%P91~IufnCRsp|IW0kv= zHRv04BPCJ;L1z(9pawLJU#Ne9b{Qt<8~jUR!4RGk!v*$INwZ`BGU{Jq(DI=E1^$K2 z*Fw$c6X-t#5zFJ(sCm&@idvHTJ3^YlG58baBzu;7PR!(A7oCRhA@3cfKgj7M!DXa^ zhj}f``4{*X?H}(88aO`+jT{L0Haz(x4N|F-=U-o!Bg}5K9#W>n&vVLp0NLfy;%WSv z-7nw9_!Y_GQT8qgxA0a0N$RMHM%EaB72{DF`8OnfW&O*q z^vm$x=1F!9(J%brJCG!Qz|Rr{(xmZd&cASelr>?6Xr++*mywtu6_Ml`7hH8|*>~tK zx(2!g`rb1kzxjr+ARFS=gVZPW!%aC`;QS4~*Re7swQMCNx$Pi;3?oV)fK;)YDJmai zFGJhBe#iJt5w!4ia%=>PvUh1;wlS%oA6{i$5PLJVYt`?^|6MG$J!_Z$lD-g&GpK*v z4aC3)`k}y9hz#ievo=Bj-6}A5^y$e(8!wJ!Z-O56CjL6=7hwzSf6Ib@ z#i_=2LEm6|;9v7JR?Jf}10XhU8o!>P*Vv2cG8=ShG65NCiE1E@!4{}@=WHq{gGf^B zly)Pw=p4j3seY(oUW9W+Msxn9nB%btLfo>J*^)q*wJidY1a~a*t#KAij5C!NL=R&MAVL)e+lzL+V6O=mBjS~^>8b#4<5mu zYapyX7@wLu@C%2;A(sHu>caGk66-eIjt8t`h;{k?jR9+aWfr^pwVqD=^(4zCzzPb@ zQ}{)5C+VEi&>nb&HL+vqCg)$0%YFJ`dY;fRp6@^0kJu89A+}6pd5R~KI~VJfpJuMe z9q7-l+={I$7ME1OaOLb@V?4)Ci6 zFwy9gAvZQJN8CV%TfTo|i>4CVqGbK+NjO?0!zyVj-RbDD8Tw(xtnMs+&9j~o3r?Zu z`PXq8OltO=Mf6Eu zqqxPc{*d0{5W#HLob#{j`G;ByHr1{e53bW&*&?TFoX+S!B#+Zo;9rD&wOO7*lV*sQ zC71W3p>rPJP&hwIYu9=dZ25l}`uv`Vgc}J`i0Znj=J9JGJz&=J$Ovon9nku?OZLw{ zOZD<%L(UeuR?HE0mSJN>MRbo@6-C?OTys5N6m@-zP3ar^OYdZWEh~^v8}x}Wi^{}u zpb9lBWxR0y;qSyGuZwyr*zd$=HWp;BdXy%+8)MknG1WicTl57xCKkusC)GxQtzqqD z52{ZnhiS>5yDQWJ|Kf-e75aLBXMzHLc^aabc-m`Mrt|n!gjANxnKF$dmF2D|+tIzA zz8fjI4P)+*wm|=etS@uvR(LIS{N`2VmlZuAu8EbLEa2A=!o?sDpdXUn_TmgB3>CrZ zst%>MdIo+Wvyx$Ov}V$2;iXt(Oy&}G$yu8yCVxwwe<)$=TjY`W)kvjB=A_IPtJSP? z)O`P;JS__NH5SMD8v?l8U+$+Pyj)-xi7RIddH!LSu=@2T=3!l?PbkEMWm65g2pE@( zW6FGMBL`jtagO2!afiUdo)10YJC3UZp3CKU2J|v|MeMPWLtaLxf7ys*+i6r>Z(X%Y zeTK{BQ*llB4#3)MDqa7_p@j6FLZs_?saprgwFPyWQ~#6yO&m#rmJ}_ z9u7d?m_@sUemieky+Omp9jwXOU@ka{fz{;RkK|w2VJ(MRiO^k@#D2XB*LuB{Z~^F& zFdW zTu-2={3SJupYBk{yyrPur?#sy_iHp^!3<^nR6s*}6R`z(R0W~cPPjA3Gtpn{All^h z!wy9CIvdAI__VhYFx)EENDqi=OHa2=^DhOmhIwxS6viiTgoV)ewCxsM<}*iKyVx{- zX`1XA5Qd4FqQg%B6kt`79UU%KB&QDkwMNn|;Yn6!^B;kJfZh1!paX@9l$_nKoXDLP zCHv=rU!q=;{p>*;PQHI$x!}AifWqnJAsV(CY|og{B5=}(Gqe8nv4f7yst69EFnj(9 z?Lz}>sn{=WID#F`ncRC$z`sCYcnu+DLL+pLV!30;C5GT}r*r-V{g8SrZw%YMYN)5C z&oKt#0m6n&2PZ3z=VBd)zHv+hSC?&>bB%TMaL5Oc3eW`hCWBw(`#1J6Y%S!a*sWar zrD*NE)d7fKkYq#>mY94$-24f0$k50G-RdH9f6>KZu7k#eWAhv#6J;=YJ=Du4qSNQ3?g$)aTdVVhp`v}Kw zv?Fd*;t0VEts~@z-ReyI@@KQJh1i|DaBPL-1^+}XsLK@UUu&>i88N&U=N0tmjZx%v z;8sdqL_ZYIO!KdWw3&NjmD}YR9f;v8l5L}k+|`Syel%wb;8zPP^{>l6PeSJ9o+!30|N8Lr9Kqp( zBy_e81jgz94Mj@9H*jPipV6g(>$n63nQ(F_3`cYEFw4JWmMhv$gPx#o+4g1_`ZpBh zNHfllf_A}?t4kt=G2=p)$?b|D#+=75Fiq6{kUt-Q(6M6sZPF{V{f9?${$MRIuR#xQ6*S~C$jv+#JV^0KL zlqN4EC`g;;`!||s1F!0Xo1c$wP5u|#==YA%K?P?GJ%OZ$%l8caMRDHm{3yuM=HsT{ zHj3M}V6g=+oje$l52MwmhvgqABX)HA(bvha3K-!y&^^ussB4Wr06&TE&t7h4E} zVg6?FpVvSWcBb)5ViVFHoF5f?foB~Jcv|^g0x|q3_nswwZJ=u$;MYlPVR)(-&NyFr zN~z_WJD8KhFWG+>-)`NNxSoBa?;#)Q?zRB-69ovp&FNfR9hf^nN6h9CO4^E_=Sy1t+ud4C6__{3s^AiUo!PT9%Ul>{g`3`_ee!Cz+Hc`fB86t;FZ;51c6=pS4$Sr z;9rh9gdoWVLfRy(h@Oa7 z@y)bE=%1oCxNW5VoN=juUpKQ(VcGtDE;mvLtK0P$VKWp34#U6l_%#o*VU^7NuA*+S zz{aMkGO;mPJGx@V`G-0k&Y_iCpl&5@F%36EN1}sRm&dRD^qKkc5L#$1(Emubc6<;q@Y+ptUii9Oc6G4-8{e!hTT!+4J6An#p?5_3S5R3f%?Y5v1{@a8;zJzaTR z3`(?Gi+J<1cjWf#uxb-Yq7tQTr0HgtHYE?xrlfEo#lHjiH)bRM<`zk}n@ zu@TG)ty!5=HGbF*#@zD?`r%z*3c#j+ZTkR5>FX#>w)wzr2Gj9@*AS^{N9{@RTh0NK29{O^_;|!tFI2= zAdZOK*G6DKW}$!M6eYM<7@f#qvm3#1tSBzL6meYn{`psBx5l3Xwlv-eNJ1!(vsi>` z*Npy+>`aX$Vj*BFf*$)ND1^zqZ~60kW&Mi=p&x>Of$)M-VeW^iiElBh^ZoPKzbp~f ztR9lE#bG8nK>%4&E#McH-}5H;spZ2uv^)Zb&Y}=zp#YJuf9bTz>$UaM?E3Dl0{ak$ zL6@fb5C4RJ`7&5z4-|JY+fkP?H(0;hF@mU(<>Hu9D)HhpumHl{mZ~GhA0d6nLYTn| z{7ar6wIt(iG9E+Q#^Q|UAB@YGJO~jT9W~SVwHrDcB7aI*iI9SeL4@~g=R=-<$@4dm z8)txDVO%t1W=*J4QEZhb1Jg8q?bMzFj7DxRzmlG-tQs)@QmosoZP%l&DNT7{JJ16QAnOYe}QhohAGcKs?uKA zIWV5Oi_l)~!=?rc`C$RSuz%U?!)6!n?*Z9feRFCPvSsv37&Gt- z`@cl+)2+ZJc35CupDmxo-YkcMq@ep{F*l#>wezHN>AFA^(1S_f(1OS zWkQ2hKM z)*qS&@55|YU-e(p10&zH=5?wo*J#dyG3@^`JfDQm-*9KUu2FmFmx&enI(xf9SV(_8 z_^T{`c!5tlJgYs{_XbYht^ElOu6$o`Nq5L!Sf@w!OEJz2U|Yeib>rG%5cGH!${5C9 zyWL}Zq3@?ycXHRYsg2N!Pn@`}y_~u6rcUu+@U`KY3W`a6Yos3#2UyWei#gc8;Bk+6P4KP+Az zK-jgQ;c#YY#uypiM2F?WPITn5GX6SzDdxXSwYhMZ_MT|r^&9`9?-lq}Mc^Om0&3;V zYfvM~0nsdshUy-1K(=J?(1!fA5$7W%2|iL1_Y6NF&l{cifh^5`;rtD(EflqI|!-64OyNt2Mlc;Wm*ajl3wcT6|m!VW&PtHQH~9DniohioPELo!ME z9Vv?r;p%W)L;iB7!bKkZr5~V0*#DK)*-B)tGn1;~>P3R{8%$ff7A;^ylv;$g1MKCs z%@slXbz1$=gNSPH*A^P*^UDXYeZJYeqfn3gDXl-;&r>bnFAaxH6;`HezP|4b6ZVix z%K1y*f@q85Q-S!4=3BbMhNyh~A>F%ipF}F=S`7A{G3{5{X1bS>Lnyh3zmTrMjBqAO z)@@odjQL(_VgE4XuQ=_@f&vCpSRZAB2h+(rjs5ynJh9v2jVZ66|2NrG#P-$Y`ZI;L z!n)4r6)NWsYtNO=pZ~T;TZl?{D}=-*f-_@qEOymCI()Pu!#05;zoVxm&hLG%o2R{y zk9tmf+<7{S^Eb|w@t3<=qvqFeAr2~hKdA)H-)K6XK>jd@za9kVUi}N`;D*e>1h$5e zx_c;R&Nr(D)R4cB_HosFY)FepVjYe3`1%J_?;Ehh&4vM?b#6q}m6 zCHEe6bVbYZhnw{6`PN?`n)sD`jI2V<2`xj1#a@Da4)TYQX4)CgLyNwv2jO<&RbSr^wgU1^m@4-FA&&bl{?+UD+#_Z1dW+)EkRp zqz}2=y-tf&U4tdfqXi`DYm9GL7S@ml{8dygqixU~?Ekug9+Fq>HMZjP?r-dZ$GBBp z;njov%Y@f{IWbF%sXYG`vk`y&%(PF$?BS5VM(JIS5cgxZV z>DTB@Ph%Dj*;F(~M*uF7B6uC`YM+c@E4Ih)C-8ovZSdk+24D)Z1pWGA>Qo9d2#&EO z+aCCA-=goxj}_6JE9gN4k2px`1=?2F^J>f1Y737VKA8W4cL8q@dp*o=qJOTl>oKN; z6^ScC{)&8;UV|xU-5+gHpQlH%pe;VXx1%Ckq}h z(gKb+-c;@(#9wT~IkSyl9rwn<&>QFn!kzYdfbPOV4#RA3=J*Rwc`1L06(({i&wstF zo&;^R;vgv%n++_i-w5}Az2YvLU$=Yi-_bkHs?62*Yd<&M5}z<@HwE$6E}SpQ&6)E} zZJ`7&i`W!m8RQRfkW_S`$2*`ceql2#o)FpHfK0liLrpo8fqc_U=i+Fkw?%X?6 zj}GViQCDsS@Z+z|N)BH=-nAXmUi5K#eBkO4Z2~1L`f3}s=e;rY=D)^it?ahI?;Si$ zHY^D;ITOQS{DqV8B-E+^miZy_buRFI^^m`C{svk69LA8Y!Mr&G%nD)kS}FcQcFt&; zGQNPhq=R&|tlFAQ5E31Pq+G~fb9AgfEVQ1BUP8YHZB=z@JR`;tS$X^gJ1?P4MKos# zEgp-$s-DBG;W<32X1EVUgyXM{4C1fHk%#Ok)SS~+(u=aASo=B6tRG+*y#Gu8f!QQl zZovMpZ6>&hC%Ld%gQDv(Gm>E$lXk-l?xAW-QzGZtWI?8puzz_Xy1ByVuZ$aiS%jgq zXsBp4gR(LCLM=ADuY_k;4`I#QodkCd=iJh3eMzTg48l0@Wa+xyrSp5S)J?!w-w)OM zJr*Kj&(S2kD;}LfUeu4jM$GfbS&hqD>@CG|#eJgEu4U^vA`QQw8sozd`Uz@~a z=ULhz=BJ~F)sNElDRm0|MiEWIM@D$YCn+?E9QD@}?Ee}=D@Vn{3HVyYK)+(lR$@D; zNRU#C6Sb2$(p(VemvqnXZAXOonF(@eIg@WecMlJdT2V>!wMy^*!tv~w_7as-*nIsv zTIQ?+e|feJ`9nF;vJCOMX3M8AS6y=qAGJ2cq{08n&#b6HBhY&9gsve`<(iucvQx|H~*dbC)IJe zvn>8{=q%p$HAfCR^d1&EFU}1+^=GY%_>0evGHn5W1GGi;4qn*z3i7=ir$oc}>$9r+ z{(}2KN&g`*|Fv8FFT4?~oljg3;x7gHL#UoHmHj@zqA7T6uYiT8#b3zeY)mKm)d%Q- zp4N1YHLCZjC*|@*mG=(+=U&bq?#zehM_u}JLR2zaHU$2jLY{tH}g_e8p;E49N^&`YzXlWRK{Wl?h2;&{ysE&$# z0P4$XzW6YMF#dXl_TjWcEH&v@@ACL-qA-;AbDpkUb=Pm;(K4ozUtpWblzsYZLl%NH zv&3JM^b+_Bt9>?sMgg#YS^kKS&m5^P%O4^yik=6xeVW18TzL3$1($^J*B%x7mzlOO z5k{XUOive8BoZlB7JqeG_nIz$U8O!OUH&>pUju^}1#OL|UoDtl=FC!JOkGS^$Wchx zn9>4p@UVsP7f$cwcA4ts^c`ct2nhN;6>A}!{8@FgR}Zh>n3M;swVSI~sz>GgV)F*= z7j$f-<8134<@|-yT9~bF=d_^{%`q=q*#GrNY5wbddXM?*9QJ=bB@bG)??smbbQCX+ zzmV1t@ElCK$H2tg7oceWPH-5?;x9LUNL7|<3Y;;OiQ=#+c$JW`q3ssyvYS7w*bm<0 zA)t0`NQ|+Q`AOl`IQ#O5uRXERfGAI7pH{lH~wD5v1|nQ=?pzjOVK~-O7S89 z>~j!*DcH8`BoR)jMfz$5YNHh{?xRfzyQ=ki?5^T= zsS1m@=g(svgy7ORgvUl8)!7Vt*v9Q5&Ev02v40uM=68C_He7p%GehVJ2lmju!r*3#2Qrg=ku7wqyv2&2P_`%@h_nNI z#0sx9DJTO*sUStp1pYlw7a1)#UeK2EJ96 zNE((4EEhyLJTkicYfXwsM)@@TgV#Twrkh1vR&G-I-2MsfS!mp2SnwqQko=%XUdgD> z;a4?byHdI>V^+6e9>qI0d|;#bC<(`l@brL93G5yKvmH+!mssR}WJu z32U`cmjy6Au;fUUwYsk^Y*!|-LAjZ3lJOFt1WMvEE`sNZJy=1}Wml8gr&BOqtF;^Ot7{T9t2ISF%iy?n!_aO9!L=q=M+Q-H zOCo+;863LR1(ggwnZUE^U8{GsHYiVJmhsOAhdiJR-o@Z@r!J5|J-2S;dKkF%Gz`iZ z1ESl6Y{>lR{&)Vr^o8hwE|)H{M-h zDJl5qwi2UmG94Fuh7t~Cz^~o9=>#IKeu;AZnxba(q+8+(Me5pm)~44t=#xsDSeu>; z5NQ*A48nTmM>Ze%tAR^)#P>00l>tFoF!PBq5!{F=7PT%v+wOjj+&pmMZ z%pIYOq7I1N=129aBLIycXa-#HL=rsK#Uc?2CFR8BELhcYwlhMx5-NkW%F zJw$(iPYp1v|1os#`A=GPC&~ad${VeQQ05QTL*@1Obc`j}9xnqhQ)kSuo<;haq54A4 zC^CvAAl;JSZk!mcXVYb4E_*r<9yNj4sKm>PYc~ktB$!$#AU*yVj&PL(YQx&%7I|vJ zC83O-Q4+KoTl?XMn6%vFHUahjcs*__kL-G@#=T0B%JB zH^}_18HCK_G~l=*#Mdh0(~wwQAU)eFlvIh1LtgfQ^y*0~f2^M1T0&1N4b)3@7XiT~ zDeqc+R6$+R%;*VaCh)4EK5$&X%QJv4BfzIOcyv4y2%l4MF#h0BBUrfZ_zd9q_pGc| z2j%X}M-x@YX8=cWh0?vu?;ah`07v~koXN|9elahnxgvqKZW`%XnER!q=}dwem|Eq<^hHreA>!`mj@(L*3FW z&H#QNrU{zQxdUGGGaWeowJ1VuB9_(~F!ehf9Q9>-yYPygeku6{igrjb{Ypd0sN zAl9mYZ{1;0Crlc-axQ4MN;1_rwk$R(7MW{ui#RiXm3i4+m)%FBU5m_8J!n@OQ7JkvhX@(NT+%HXRIcmjYE=OKZ!*h*p98$>gmo}bb2?O5R5zw_ zROn%)R&yuPn+yc83d4!fT@Y55i?#8y3Khmf8)Fs5L+d`hp-78s69hF1 zJ;u+x1*6LjFjp9SSeH-c+k6$yTS+`OzE=7o-UEoIi&fZ`tjkjMo-X$*7K1L!3L6K= z;It;z(H*F#N>;eqtwY$Cf#%|Xf3E2=q9Kep=4en8PJ|C-s&n=$rV6_HKDkg%md+Y1*MP0W&AN*VE{{7{P#s4({lebs3mNQR}x5t+O+D4 zzwy+8OGNOs`+rI1{UR~8emzZf`yxs%K#1UFT%H}Hv-R{0q z{P@1loy<)7$3CwozFvBq9PXTR&-r}bpZELoIR`58O=kWfQZ~>{UupZh4ga(CEB|xx z9W`waZg}9!8$;iCU?bg6p1OZn68@)$7Kg+102y`Rx+S&N9kq2!X(JUaURuAnuKteY z^kt&{wj20)<_CZIl`si~h-QVAnEbCERxE`?V@;SG`TsQi`=T)6^ZfrSVdB(6RS!_9 zDL?)%el+3!;{V(yDf=kQ?fGB*OSr%Izv)x@Up+#8t_l2$=>MkA9Jl9x@h{E&{JN>w z)JiwgEa5iFokCIs-aH!N#u0a3PQewr(OH}J4tE@;8`^TqH>$4hew~)Yd=IN_)FvM! z%#ZXJJ40!GD+}l^3cqb6*k`<_)4##^8MCyo?2{-MrTr9K6(}!EnER=Uj4*4Z-J*)4 zaZYic3z(i7s>A!B0fP+i-pmiR6M1{OU}4QgyRPNVVfbXUyxkh+Q7=Wuf`U7?8M?NiUv zXB6SSUUfo$mFjr$KEu>3`BkF@K`}(Z6A>We~|NXd}(zm_Mg3O=tDQ+w6qZg>6(`aMm&StHK zd+Jze<~=+7N%4|caLzNuN|ndO?wB#f{+hOknzQAbSQ}aLyP{<$yHd_Zr|8bY_|g4j zoiSFhD8(r_;%UHh+;yLrJ3!aZEVoO>D|Ni^df|Id-Na5&#P%NT_;%*IqLij77BPLI z0}YChuU)liN<bCk*wRJvC5Av${K;Q{8p%n?FwfC|Bn`4D~~~ z$6Az2bd6SWpQFBC*yfI>V4RMlkGEybQaUao+$-nxnRu8NKhbe4vtBFA2})3i0)kn3 zf`>>KEKP@7s!1PVr!sTb@tk&SKRxN!sGZlu^!5JJ^fRjDMJ;SNV_)TS_m*}kA>Nu~ z3#p4jTpweX=x5gLvT-c47Is-D9gj9_^p?=V18I#$m zjY4hz;Ph{*XVD6UhM_(s;EE<(-iuXgK&Y%hhaw2120qu4=Otpi?M4?XI zFtnn6Hi7+9mo#j4BC{5Of^}Akf+=G@^OB(88Dkj?t%EGbu+YbS&z3UJIzTm!F~;VJ zEocsVdp7&Ar?HRhBNCW%=cWl(Nip7 zCdmJWKE%9yGxnHX;mP6GYjE#=M-Q_BEP-_f4KKAT7B9Cw_h;E$uF_v_Xl=%;7l@Q3pF^%*S1mr^I_1l2huDLm)6UiWja-I2qustk;#*r?L|kbg9a z@la3K9`23BbNJOP_LJ=xDZrNC)|4mAg1kfc-|VW& z^*+5S*B$fH;6UE-4yi%@iB)&PXB*X-^@_s29;F(dX!D<;=e63CdK(P?dA-6}v(b~q zFZv$+SbQBrWpC3#QFCt5CUz_R41+f&7=l5$#eiS*lnA|}uYe~>X~D^^u)hQ=h__+k zIqsg9_;ucH6y9glE8;qDq+;9fi%%7QVtbm^XVw(>#rm*CYo%L;-%v_~F%4v$dHjNh zR3fXq$v=?}Kf+3qFulw1I%$1~y^Q@FSP;~7la25f&8p@#v-9}XWKU58 z%!;Mi=s@JI5~2Rao|+gmecO6MS^WA`za|=EzBB5l(kDFaGv{0s*X(b%`u_Tl@vBb4 z)&hE!?+=%Z84IoB!u_N$vtBFAb0T5y2?V-5{=`<>zZCAGf+eVq0*!SOWwhB@AhC&M@vD9`~9okg>0T(odJINQ-Z$`hF7{ru2vSi%h+lwPv0(php-`25@6M!d@4qmyFE zq<2ESj^`{+dp99;b$#Z*>|`wSp8aKdC(H`tnG~I71r>8o4!?S7D^)VxVM}A1h2<2* z*cs}iN=Ki-Xe>D%t1L|-X)o4`n8vysYw8OYJ4PKz%PKPS`1Ks@J$woFUag(rgHtt@ zdLjNQuXErKBMfm?Ec6RJ;-UN5WRArGHF=4%}COCa|Nh7Br1t z^C#IQY9t?5#}F2}ZtxO->@EimKZjrcK_k`@9Z^#${h7AE1aO=Z?*x{6iih*~bwPBA zx{XGk8lYDlf4RP^bYV2%_`}7!^89N;>@fSqE#^%Q?Kfjw*MPY@sEQX=F#j}u&3>k| zhZZ`jBvz6}{-y~@6wEE!Zg>EC#LOQ>GW z;a5>PXPAxuUa# z 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 ZMfoGYeNB>b{Cn`F_&uYQw3OfS{{^O35heft diff --git a/fpga-xc2s30/fpga_lf.v b/fpga-xc2s30/fpga_lf.v deleted file mode 100644 index bb9116f10..000000000 --- a/fpga-xc2s30/fpga_lf.v +++ /dev/null @@ -1,245 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// See LICENSE.txt for the text of the license. -//----------------------------------------------------------------------------- -// - - -// Defining commands, modes and options. This must be aligned to the definitions in fpgaloader.h -// Note: the definitions here are without shifts - -// Commands: -`define FPGA_CMD_SET_CONFREG 1 -`define FPGA_CMD_SET_DIVISOR 2 -`define FPGA_CMD_SET_EDGE_DETECT_THRESHOLD 3 - -// Major modes: -`define FPGA_MAJOR_MODE_LF_READER 0 -`define FPGA_MAJOR_MODE_LF_EDGE_DETECT 1 -`define FPGA_MAJOR_MODE_LF_PASSTHRU 2 -`define FPGA_MAJOR_MODE_LF_ADC 3 - -// Options for LF_READER -`define FPGA_LF_ADC_READER_FIELD 1 - -// Options for LF_EDGE_DETECT -`define FPGA_LF_EDGE_DETECT_READER_FIELD 1 -`define FPGA_LF_EDGE_DETECT_TOGGLE_MODE 2 - -`include "lo_read.v" -`include "lo_passthru.v" -`include "lo_edge_detect.v" -`include "lo_adc.v" -`include "util.v" -`include "clk_divider.v" - -module fpga_lf( - input spck, output miso, input mosi, input ncs, - input pck0, input ck_1356meg, input ck_1356megb, - output pwr_lo, output pwr_hi, - output pwr_oe1, output pwr_oe2, output pwr_oe3, output pwr_oe4, - input [7:0] adc_d, output adc_clk, output adc_noe, - output ssp_frame, output ssp_din, input ssp_dout, output ssp_clk, - input cross_hi, input cross_lo, - output dbg -); - -//----------------------------------------------------------------------------- -// The SPI receiver. This sets up the configuration word, which the rest of -// the logic looks at to determine how to connect the A/D and the coil -// drivers (i.e., which section gets it). Also assign some symbolic names -// to the configuration bits, for use below. -//----------------------------------------------------------------------------- - -/* - Attempt to write up how its hooked up. Iceman 2020. - - Communication between ARM / FPGA is done inside armsrc/fpgaloader.c see: function FpgaSendCommand() - Send 16 bit command / data pair to FPGA - The bit format is: C3 C2 C1 C0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 - where - C is 4bit command - D is 12bit data - - shift_reg receive this 16bit frame - - LF command - ---------- - shift_reg[15:12] == 4bit command - LF has three commands (FPGA_CMD_SET_CONFREG, FPGA_CMD_SET_DIVISOR, FPGA_CMD_SET_EDGE_DETECT_THRESHOLD) - Current commands uses only 2bits. We have room for up to 4bits of commands total (7). - - LF data - ------- - shift_reg[11:0] == 12bit data - lf data is divided into MAJOR MODES and configuration values. - - The major modes uses 3bits (0,1,2,3,7 | 000, 001, 010, 011, 111) - 000 FPGA_MAJOR_MODE_LF_READER = Act as LF reader (modulate) - 001 FPGA_MAJOR_MODE_LF_EDGE_DETECT = Simulate LF - 010 FPGA_MAJOR_MODE_LF_PASSTHRU = Passthrough mode, CROSS_LO line connected to SSP_DIN. SSP_DOUT logic level controls if we modulate / listening - 011 FPGA_MAJOR_MODE_LF_ADC = refactor hitag2, clear ADC sampling - 111 FPGA_MAJOR_MODE_OFF = turn off sampling. - - Each one of this major modes can have options. Currently these two major modes uses options. - - FPGA_MAJOR_MODE_LF_READER - - FPGA_MAJOR_MODE_LF_EDGE_DETECT - - FPGA_MAJOR_MODE_LF_READER - ------------------------------------- - lf_field = 1bit (FPGA_LF_ADC_READER_FIELD) - - You can send FPGA_CMD_SET_DIVISOR to set with FREQUENCY the fpga should sample at - divisor = 8bits shift_reg[7:0] - - FPGA_MAJOR_MODE_LF_EDGE_DETECT - ------------------------------------------ - lf_ed_toggle_mode = 1bits - lf_ed_threshold = 8bits threshold defaults to 127 - - You can send FPGA_CMD_SET_EDGE_DETECT_THRESHOLD to set a custom threshold - lf_ed_threshold = 8bits threshold value. - - conf_word 12bits - conf_word[8:6] = 3bit major mode. - conf_word[0] = 1bit lf_field - conf_word[1] = 1bit lf_ed_toggle_mode - conf_word[7:0] = 8bit divisor - conf_word[7:0] = 8bit threshold - ------+--------- frame layout -------------------- -bit | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ------+------------------------------------------- -cmd | x x x x -major| x x x -opt | x x -divi | x x x x x x x x -thres| x x x x x x x x ------+------------------------------------------- -*/ - -reg [15:0] shift_reg; -reg [7:0] divisor; -reg [7:0] lf_ed_threshold; -reg [11:0] conf_word; - -wire [2:0] major_mode = conf_word[8:6]; -wire lf_field = conf_word[0]; -wire lf_ed_toggle_mode = conf_word[1]; - -// Handles cmd / data frame from ARM -always @(posedge ncs) -begin - // 4 bit command - case (shift_reg[15:12]) - `FPGA_CMD_SET_CONFREG: - begin - // 12 bit data - conf_word <= shift_reg[11:0]; - if (shift_reg[8:6] == `FPGA_MAJOR_MODE_LF_EDGE_DETECT) - begin - lf_ed_threshold <= 127; // default threshold - end - end - - `FPGA_CMD_SET_DIVISOR: - divisor <= shift_reg[7:0]; // 8bits - - `FPGA_CMD_SET_EDGE_DETECT_THRESHOLD: - lf_ed_threshold <= shift_reg[7:0]; // 8 bits - endcase -end - -// Receive 16bits of data from ARM here. -always @(posedge spck) -begin - if (~ncs) - begin - shift_reg[15:1] <= shift_reg[14:0]; - shift_reg[0] <= mosi; - end -end - -//----------------------------------------------------------------------------- -// And then we instantiate the modules corresponding to each of the FPGA's -// major modes, and use muxes to connect the outputs of the active mode to -// the output pins. -//----------------------------------------------------------------------------- -wire [7:0] pck_cnt; -wire pck_divclk; -clk_divider div_clk(pck0, divisor, pck_cnt, pck_divclk); - -lo_read lr( - pck0, pck_cnt, pck_divclk, - lr_pwr_lo, lr_pwr_hi, lr_pwr_oe1, lr_pwr_oe2, lr_pwr_oe3, lr_pwr_oe4, - adc_d, lr_adc_clk, - lr_ssp_frame, lr_ssp_din, lr_ssp_clk, - lr_dbg, lf_field -); - -lo_passthru lp( - pck_divclk, - lp_pwr_lo, lp_pwr_hi, lp_pwr_oe1, lp_pwr_oe2, lp_pwr_oe3, lp_pwr_oe4, - lp_adc_clk, - lp_ssp_din, ssp_dout, - cross_lo, - lp_dbg -); - -lo_edge_detect le( - pck0, pck_divclk, - le_pwr_lo, le_pwr_hi, le_pwr_oe1, le_pwr_oe2, le_pwr_oe3, le_pwr_oe4, - adc_d, le_adc_clk, - le_ssp_frame, ssp_dout, le_ssp_clk, - cross_lo, - le_dbg, - lf_field, - lf_ed_toggle_mode, lf_ed_threshold -); - -lo_adc la( - pck0, - la_pwr_lo, la_pwr_hi, la_pwr_oe1, la_pwr_oe2, la_pwr_oe3, la_pwr_oe4, - adc_d, la_adc_clk, - la_ssp_frame, la_ssp_din, ssp_dout, la_ssp_clk, - la_dbg, divisor, - lf_field -); - -// Major modes: -// 000 -- LF reader (generic) -// 001 -- LF edge detect (generic) -// 010 -- LF passthrough -// 011 -- LF ADC (read/write) -// 100 -- unused -// 101 -- unused -// 110 -- unused -// 111 -- FPGA_MAJOR_MODE_OFF -// 000 001 010 011 100 101 110 111 -mux8 mux_ssp_clk (major_mode, ssp_clk, lr_ssp_clk, le_ssp_clk, 1'b0, la_ssp_clk, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_ssp_din (major_mode, ssp_din, lr_ssp_din, 1'b0, lp_ssp_din, la_ssp_din, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_ssp_frame (major_mode, ssp_frame, lr_ssp_frame, le_ssp_frame, 1'b0, la_ssp_frame, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_oe1 (major_mode, pwr_oe1, lr_pwr_oe1, le_pwr_oe1, lp_pwr_oe1, la_pwr_oe1, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_oe2 (major_mode, pwr_oe2, lr_pwr_oe2, le_pwr_oe2, lp_pwr_oe2, la_pwr_oe2, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_oe3 (major_mode, pwr_oe3, lr_pwr_oe3, le_pwr_oe3, lp_pwr_oe3, la_pwr_oe3, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_oe4 (major_mode, pwr_oe4, lr_pwr_oe4, le_pwr_oe4, lp_pwr_oe4, la_pwr_oe4, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_lo (major_mode, pwr_lo, lr_pwr_lo, le_pwr_lo, lp_pwr_lo, la_pwr_lo, 1'b0, 1'b0, 1'b1, 1'b0); -mux8 mux_pwr_hi (major_mode, pwr_hi, lr_pwr_hi, le_pwr_hi, lp_pwr_hi, la_pwr_hi, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_adc_clk (major_mode, adc_clk, lr_adc_clk, le_adc_clk, lp_adc_clk, la_adc_clk, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_dbg (major_mode, dbg, lr_dbg, le_dbg, lp_dbg, la_dbg, 1'b0, 1'b0, 1'b0, 1'b0); - -// In all modes, let the ADC's outputs be enabled. -assign adc_noe = 1'b0; - -endmodule diff --git a/fpga-xc2s30/go.bat b/fpga-xc2s30/go.bat deleted file mode 100644 index d9704e08d..000000000 --- a/fpga-xc2s30/go.bat +++ /dev/null @@ -1,68 +0,0 @@ -@echo off - -rmdir/s/q xst - -del fpga_lf.ngc -xst -ifn xst_lf.scr -if errorlevel 0 goto ok1 -goto done -:ok1 - -del fpga_lf.ngd -ngdbuild -aul -p xc2s30-6vq100 -nt timestamp -uc fpga.ucf fpga_lf.ngc fpga_lf.ngd -if errorlevel 0 goto ok2 -goto done -:ok2 - -del fpga_lf.ncd -map -p xc2s30-6vq100 fpga_lf.ngd -if errorlevel 0 goto ok3 -goto done -:ok3 - -del fpga_lf-placed.ncd -par fpga_lf.ncd fpga_lf-placed.ncd -if errorlevel 0 goto ok4 -goto done -:ok4 - -del fpga_lf.bit fpga_lf.drc fpga_lf.rbt -bitgen -b fpga_lf-placed.ncd fpga_lf.bit -if errorlevel 0 goto ok5 -goto done -:ok5 - -del fpga_hf.ngc -xst -ifn xst_hf.scr -if errorlevel 0 goto ok6 -goto done -:ok6 - -del fpga_hf.ngd -ngdbuild -aul -p xc2s30-6vq100 -nt timestamp -uc fpga.ucf fpga_hf.ngc fpga_hf.ngd -if errorlevel 0 goto ok7 -goto done -:ok7 - -del fpga_hf.ncd -map -p xc2s30-6vq100 fpga_hf.ngd -if errorlevel 0 goto ok8 -goto done -:ok8 - -del fpga_hf-placed.ncd -par fpga_hf.ncd fpga_hf-placed.ncd -if errorlevel 0 goto ok9 -goto done -:ok9 - -del fpga_hf.bit fpga_hf.drc fpga_hf.rbt -bitgen -b fpga_hf-placed.ncd fpga_hf.bit -if errorlevel 0 goto ok10 -goto done -:ok10 - -echo okay -perl ..\tools\rbt2c.pl fpga_lf.rbt > ..\armsrc\fpgaimg.c - -:done diff --git a/fpga-xc2s30/xst_felica.scr b/fpga-xc2s30/xst_felica.scr deleted file mode 100644 index b069fab13..000000000 --- a/fpga-xc2s30/xst_felica.scr +++ /dev/null @@ -1 +0,0 @@ -run -ifn fpga_felica.v -ifmt Verilog -ofn fpga_felica.ngc -ofmt NGC -p xc2s30-5-vq100 -top fpga_felica -opt_mode area -opt_level 2 -resource_sharing yes -fsm_style bram -fsm_encoding compact diff --git a/fpga-xc2s30/xst_hf.scr b/fpga-xc2s30/xst_hf.scr deleted file mode 100644 index dd2fdc859..000000000 --- a/fpga-xc2s30/xst_hf.scr +++ /dev/null @@ -1 +0,0 @@ -run -ifn fpga_hf.v -ifmt Verilog -ofn fpga_hf.ngc -ofmt NGC -p xc2s30-5-vq100 -top fpga_hf -opt_mode area -opt_level 2 -resource_sharing yes -fsm_style bram -fsm_encoding compact diff --git a/fpga-xc2s30/xst_hf_15.scr b/fpga-xc2s30/xst_hf_15.scr deleted file mode 100644 index d8bb5ae7c..000000000 --- a/fpga-xc2s30/xst_hf_15.scr +++ /dev/null @@ -1 +0,0 @@ -run -ifn fpga_hf_15.v -ifmt Verilog -ofn fpga_hf_15.ngc -ofmt NGC -p xc2s30-5-vq100 -top fpga_hf_15 -opt_mode area -opt_level 2 -resource_sharing yes -fsm_style bram -fsm_encoding compact diff --git a/fpga-xc2s30/xst_lf.scr b/fpga-xc2s30/xst_lf.scr deleted file mode 100644 index 2d6c7e951..000000000 --- a/fpga-xc2s30/xst_lf.scr +++ /dev/null @@ -1 +0,0 @@ -run -ifn fpga_lf.v -ifmt Verilog -ofn fpga_lf.ngc -ofmt NGC -p xc2s30-5-vq100 -top fpga_lf -opt_mode area -opt_level 2 -resource_sharing yes -fsm_style bram -fsm_encoding compact diff --git a/fpga-xc3s100e/.gitignore b/fpga-xc3s100e/.gitignore deleted file mode 100644 index b21d41545..000000000 --- a/fpga-xc3s100e/.gitignore +++ /dev/null @@ -1,68 +0,0 @@ -# intermediate build files -*.bgn -*.bit -*.bld -*.cmd_log -*.drc -*.ll -*.lso -*.msd -*.msk -*.ncd -*.ngc -*.ngd -*.ngr -*.pad -*.par -*.pcf -*.prj -*.ptwx -*.rbb -*.rbd -*.stx -*.syr -*.twr -*.twx -*.unroutes -*.ut -*.xpi -*.xst -*_bitgen.xwbt -*_envsettings.html -*_map.map -*_map.mrp -*_map.ngm -*_map.xrpt -*_ngdbuild.xrpt -*_pad.csv -*_pad.txt -*_par.xrpt -*_summary.html -*_summary.xml -*_usage.xml -*_xst.xrpt - -# iMPACT generated files -_impactbatch.log -impact.xsl -impact_impact.xwbt -ise_impact.cmd -webtalk_impact.xml - -# Core Generator generated files -xaw2verilog.log - -# project-wide generated files -*.gise -par_usage_statistics.html -usage_statistics_webtalk.html -webtalk.log -webtalk_pn.xml - -# generated folders -iseconfig/ -xlnx_auto_0_xdb/ -xst/ -_ngo/ -_xmsgs/ -fpga_hf_xdb/tmp/ diff --git a/fpga-xc3s100e/clk_divider.v b/fpga-xc3s100e/clk_divider.v deleted file mode 100644 index 9a57879b0..000000000 --- a/fpga-xc3s100e/clk_divider.v +++ /dev/null @@ -1,25 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (C) 2014 iZsh -// -// This code is licensed to you under the terms of the GNU GPL, version 2 or, -// at your option, any later version. See the LICENSE.txt file for the text of -// the license. -//----------------------------------------------------------------------------- -module clk_divider(input clk, input [7:0] divisor, output [7:0] div_cnt, output div_clk); - - reg [7:0] div_cnt_ = 0; - reg div_clk_; - assign div_cnt = div_cnt_; - assign div_clk = div_clk_; - - always @(posedge clk) - begin - if(div_cnt == divisor) begin - div_cnt_ <= 8'd0; - div_clk_ = !div_clk_; - end else - div_cnt_ <= div_cnt_ + 1; - end - -endmodule - diff --git a/fpga-xc3s100e/compile.sh b/fpga-xc3s100e/compile.sh deleted file mode 100755 index 741ed0bb8..000000000 --- a/fpga-xc3s100e/compile.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -( - cd iseproj/fpga_hf - xtclsh fpga_hf.tcl run_process - mv fpga_hf.bit ../.. - git checkout fpga_hf.ise - git clean -dfx . -) diff --git a/fpga-xc3s100e/define.v b/fpga-xc3s100e/define.v deleted file mode 100644 index adced9003..000000000 --- a/fpga-xc3s100e/define.v +++ /dev/null @@ -1,49 +0,0 @@ -// Defining commands, modes and options. This must be aligned to the definitions in fpgaloader.h -// Note: the definitions here are without shifts - -// Commands: -`define FPGA_CMD_SET_CONFREG 1 -`define FPGA_CMD_TRACE_ENABLE 2 - -// Major modes: -`define FPGA_MAJOR_MODE_HF_READER 0 -`define FPGA_MAJOR_MODE_HF_SIMULATOR 1 -`define FPGA_MAJOR_MODE_HF_ISO14443A 2 -`define FPGA_MAJOR_MODE_HF_SNIFF 3 -`define FPGA_MAJOR_MODE_HF_ISO18092 4 -`define FPGA_MAJOR_MODE_HF_GET_TRACE 5 -`define FPGA_MAJOR_MODE_OFF 7 - -// Options for the generic HF reader -`define FPGA_HF_READER_MODE_RECEIVE_IQ 0 -`define FPGA_HF_READER_MODE_RECEIVE_AMPLITUDE 1 -`define FPGA_HF_READER_MODE_RECEIVE_PHASE 2 -`define FPGA_HF_READER_MODE_SEND_FULL_MOD 3 -`define FPGA_HF_READER_MODE_SEND_SHALLOW_MOD 4 -`define FPGA_HF_READER_MODE_SNIFF_IQ 5 -`define FPGA_HF_READER_MODE_SNIFF_AMPLITUDE 6 -`define FPGA_HF_READER_MODE_SNIFF_PHASE 7 -`define FPGA_HF_READER_MODE_SEND_JAM 8 - -`define FPGA_HF_READER_SUBCARRIER_848_KHZ 0 -`define FPGA_HF_READER_SUBCARRIER_424_KHZ 1 -`define FPGA_HF_READER_SUBCARRIER_212_KHZ 2 - -// Options for the HF simulated tag, how to modulate -`define FPGA_HF_SIMULATOR_NO_MODULATION 0 -`define FPGA_HF_SIMULATOR_MODULATE_BPSK 1 -`define FPGA_HF_SIMULATOR_MODULATE_212K 2 -`define FPGA_HF_SIMULATOR_MODULATE_424K 4 -`define FPGA_HF_SIMULATOR_MODULATE_424K_8BIT 5 - -// Options for ISO14443A -`define FPGA_HF_ISO14443A_SNIFFER 0 -`define FPGA_HF_ISO14443A_TAGSIM_LISTEN 1 -`define FPGA_HF_ISO14443A_TAGSIM_MOD 2 -`define FPGA_HF_ISO14443A_READER_LISTEN 3 -`define FPGA_HF_ISO14443A_READER_MOD 4 - -//options for ISO18092 / Felica -`define FPGA_HF_ISO18092_FLAG_NOMOD 1 // 0001 disable modulation module -`define FPGA_HF_ISO18092_FLAG_424K 2 // 0010 should enable 414k mode (untested). No autodetect -`define FPGA_HF_ISO18092_FLAG_READER 4 // 0100 enables antenna power, to act as a reader instead of tag diff --git a/fpga-xc3s100e/fpga.ucf b/fpga-xc3s100e/fpga.ucf deleted file mode 100644 index 4cb06a9d6..000000000 --- a/fpga-xc3s100e/fpga.ucf +++ /dev/null @@ -1,56 +0,0 @@ -# See the schematic for the pin assignment. - -#NET "cross_hi" LOC = "P88" ; -#NET "miso" LOC = "P40" ; - -# definition of Clock nets: -NET "ck_1356meg" TNM_NET = "clk_net_1356" ; -NET "ck_1356megb" TNM_NET = "clk_net_1356b" ; -NET "pck0" TNM_NET = "clk_net_pck0" ; -NET "spck" TNM_NET = "clk_net_spck" ; - -# Timing specs of clock nets: -TIMEGRP "clk_net_1356_all" = "clk_net_1356" "clk_net_1356b" ; -TIMESPEC "TS_1356MHz" = PERIOD "clk_net_1356_all" 74 ns HIGH 37 ns ; -TIMESPEC "TS_24MHz" = PERIOD "clk_net_pck0" 42 ns HIGH 21 ns ; -TIMESPEC "TS_4MHz" = PERIOD "clk_net_spck" 250 ns HIGH 125 ns ; -NET "FPGA_SWITCH" CLOCK_DEDICATED_ROUTE = FALSE ; -#PACE: Start of Constraints generated by PACE - -#PACE: Start of PACE I/O Pin Assignments -NET "adc_clk" LOC = "P65" ; -NET "adc_d<0>" LOC = "P79" ; -NET "adc_d<1>" LOC = "P78" ; -NET "adc_d<2>" LOC = "P71" ; -NET "adc_d<3>" LOC = "P70" ; -NET "adc_d<4>" LOC = "P69" ; -NET "adc_d<5>" LOC = "P68" ; -NET "adc_d<6>" LOC = "P67" ; -NET "adc_d<7>" LOC = "P66" ; -NET "adc_noe" LOC = "P62" ; -NET "ck_1356meg" LOC = "p88" ; -NET "ck_1356megb" LOC = "p89" ; -NET "cross_lo" LOC = "P90" ; -NET "dbg" LOC = "P22" ; -NET "FPGA_SWITCH" LOC = "P38" ; -NET "mosi" LOC = "P43" ; -NET "ncs" LOC = "P40" ; -NET "pck0" LOC = "P36" ; -NET "pwr_hi" LOC = "P85" ; -NET "pwr_lo" LOC = "P83" ; -NET "PWR_LO_EN" LOC = "P94" ; -NET "pwr_oe1" LOC = "P84" ; -NET "pwr_oe2" LOC = "P91" ; -NET "pwr_oe3" LOC = "P92" ; -NET "pwr_oe4" LOC = "P86" ; -NET "spck" LOC = "P39" ; -NET "ssp_clk" LOC = "P33" ; -NET "ssp_din" LOC = "P32" ; -NET "ssp_dout" LOC = "P34" ; -NET "ssp_frame" LOC = "P27" ; - -#PACE: Start of PACE Area Constraints - -#PACE: Start of PACE Prohibit Constraints - -#PACE: End of Constraints generated by PACE diff --git a/fpga-xc3s100e/fpga_hf.bit b/fpga-xc3s100e/fpga_hf.bit deleted file mode 100644 index df1fb45f68487469f520ec7b21916ebd11098bc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72742 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 diff --git a/fpga-xc3s100e/fpga_hfmod.v b/fpga-xc3s100e/fpga_hfmod.v deleted file mode 100644 index 53040aead..000000000 --- a/fpga-xc3s100e/fpga_hfmod.v +++ /dev/null @@ -1,193 +0,0 @@ -//----------------------------------------------------------------------------- -// The FPGA is responsible for interfacing between the A/D, the coil drivers, -// and the ARM. In the low-frequency modes it passes the data straight -// through, so that the ARM gets raw A/D samples over the SSP. In the high- -// frequency modes, the FPGA might perform some demodulation first, to -// reduce the amount of data that we must send to the ARM. -// -// I am not really an FPGA/ASIC designer, so I am sure that a lot of this -// could be improved. -// -// Jonathan Westhues, March 2006 -// Added ISO14443-A support by Gerhard de Koning Gans, April 2008 -// iZsh , June 2014 -// Piwi, Feb 2019 -//----------------------------------------------------------------------------- - -//For ISE 10.1 PROJ,IDE cannot apply definition to all files -`include "define.v" - - -//For ISE 10.1 PROJ,IDE auto include -//`include "hi_reader.v" -//`include "hi_simulate.v" -//`include "hi_iso14443a.v" -//`include "hi_sniffer.v" -//`include "util.v" -//`include "hi_flite.v" -//`include "hi_get_trace.v" - -module fpga_hfmod( - input spck, output miso, input mosi, input ncs, - input pck0, input ck_1356meg, input ck_1356megb, - output pwr_lo, output pwr_hi, - output pwr_oe1, output pwr_oe2, output pwr_oe3, output pwr_oe4, - input [7:0] adc_d, output adc_clk, output adc_noe, - output ssp_frame, output ssp_din, input ssp_dout, output ssp_clk, - input cross_hi, input cross_lo, - output dbg -); - -//----------------------------------------------------------------------------- -// The SPI receiver. This sets up the configuration word, which the rest of -// the logic looks at to determine how to connect the A/D and the coil -// drivers (i.e., which section gets it). Also assign some symbolic names -// to the configuration bits, for use below. -//----------------------------------------------------------------------------- - -/* - Attempt to write up how its hooked up. Iceman 2020. - - Communication between ARM / FPGA is done inside armsrc/fpgaloader.c see: function FpgaSendCommand() - Send 16 bit command / data pair to FPGA - The bit format is: C3 C2 C1 C0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 - where - C is 4bit command - D is 12bit data - - shift_reg receive this 16bit frame - - ------+--------- frame layout -------------------- -bit | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ------+------------------------------------------- -cmd | x x x x -major| x x x -opt | x x x -divi | x x x x x x x x -thres| x x x x x x x x ------+------------------------------------------- -*/ - -reg [15:0] shift_reg; -reg [8:0] conf_word; -reg trace_enable; - -// We switch modes between transmitting to the 13.56 MHz tag and receiving -// from it, which means that we must make sure that we can do so without -// glitching, or else we will glitch the transmitted carrier. -always @(posedge ncs) -begin - case(shift_reg[15:12]) - `FPGA_CMD_SET_CONFREG: conf_word <= shift_reg[8:0]; - `FPGA_CMD_TRACE_ENABLE: trace_enable <= shift_reg[0]; - endcase -end - -always @(posedge spck) -begin - if(~ncs) - begin - shift_reg[15:1] <= shift_reg[14:0]; - shift_reg[0] <= mosi; - end -end - -// select module (outputs) based on major mode -wire [2:0] major_mode = conf_word[8:6]; - -// configuring the HF reader -wire [1:0] subcarrier_frequency = conf_word[5:4]; -wire [3:0] minor_mode = conf_word[3:0]; - -//----------------------------------------------------------------------------- -// And then we instantiate the modules corresponding to each of the FPGA's -// major modes, and use muxes to connect the outputs of the active mode to -// the output pins. -//----------------------------------------------------------------------------- - -// 000 - HF reader -hi_reader hr( - ck_1356megb, - hr_pwr_lo, hr_pwr_hi, hr_pwr_oe1, hr_pwr_oe2, hr_pwr_oe3, hr_pwr_oe4, - adc_d, hr_adc_clk, - hr_ssp_frame, hr_ssp_din, ssp_dout, hr_ssp_clk, - hr_dbg, - subcarrier_frequency, minor_mode -); - -// 001 - HF simulated tag -hi_simulate hs( - ck_1356meg, - hs_pwr_lo, hs_pwr_hi, hs_pwr_oe1, hs_pwr_oe2, hs_pwr_oe3, hs_pwr_oe4, - adc_d, hs_adc_clk, - hs_ssp_frame, hs_ssp_din, ssp_dout, hs_ssp_clk, - hs_dbg, - minor_mode -); - -// 010 - HF ISO14443-A -hi_iso14443a hisn( - ck_1356meg, - hisn_pwr_lo, hisn_pwr_hi, hisn_pwr_oe1, hisn_pwr_oe2, hisn_pwr_oe3, hisn_pwr_oe4, - adc_d, hisn_adc_clk, - hisn_ssp_frame, hisn_ssp_din, ssp_dout, hisn_ssp_clk, - hisn_dbg, - minor_mode -); - -// 011 - HF sniff -hi_sniffer he( - ck_1356megb, - he_pwr_lo, he_pwr_hi, he_pwr_oe1, he_pwr_oe2, he_pwr_oe3, he_pwr_oe4, - adc_d, he_adc_clk, - he_ssp_frame, he_ssp_din, he_ssp_clk -); - -// 100 - HF ISO18092 FeliCa - -hi_flite hfl( - ck_1356megb, - hfl_pwr_lo, hfl_pwr_hi, hfl_pwr_oe1, hfl_pwr_oe2, hfl_pwr_oe3, hfl_pwr_oe4, - adc_d, hfl_adc_clk, - hfl_ssp_frame, hfl_ssp_din, ssp_dout, hfl_ssp_clk, - hfl_dbg, - minor_mode -); - - -// 101 - HF get trace -hi_get_trace gt( - ck_1356megb, - adc_d, trace_enable, major_mode, - gt_ssp_frame, gt_ssp_din, gt_ssp_clk -); - -// Major modes: -// 000 -- HF reader; subcarrier frequency and modulation depth selectable -// 001 -- HF simulated tag -// 010 -- HF ISO14443-A -// 011 -- HF sniff -// 100 -- HF ISO18092 FeliCa -// 101 -- HF get trace -// 110 -- unused -// 111 -- FPGA_MAJOR_MODE_OFF - -// 000 001 010 011 100 101 110 111 - -mux8 mux_ssp_clk (major_mode, ssp_clk, hr_ssp_clk, hs_ssp_clk, hisn_ssp_clk, he_ssp_clk, hfl_ssp_clk, gt_ssp_clk, 1'b0, 1'b0); -mux8 mux_ssp_din (major_mode, ssp_din, hr_ssp_din, hs_ssp_din, hisn_ssp_din, he_ssp_din, hfl_ssp_din, gt_ssp_din, 1'b0, 1'b0); -mux8 mux_ssp_frame (major_mode, ssp_frame, hr_ssp_frame, hs_ssp_frame, hisn_ssp_frame, he_ssp_frame, hfl_ssp_frame, gt_ssp_frame, 1'b0, 1'b0); -mux8 mux_pwr_oe1 (major_mode, pwr_oe1, hr_pwr_oe1, hs_pwr_oe1, hisn_pwr_oe1, he_pwr_oe1, hfl_pwr_oe1, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_oe2 (major_mode, pwr_oe2, hr_pwr_oe2, hs_pwr_oe2, hisn_pwr_oe2, he_pwr_oe2, hfl_pwr_oe2, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_oe3 (major_mode, pwr_oe3, hr_pwr_oe3, hs_pwr_oe3, hisn_pwr_oe3, he_pwr_oe3, hfl_pwr_oe3, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_oe4 (major_mode, pwr_oe4, hr_pwr_oe4, hs_pwr_oe4, hisn_pwr_oe4, he_pwr_oe4, hfl_pwr_oe4, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_lo (major_mode, pwr_lo, hr_pwr_lo, hs_pwr_lo, hisn_pwr_lo, he_pwr_lo, hfl_pwr_lo, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_hi (major_mode, pwr_hi, hr_pwr_hi, hs_pwr_hi, hisn_pwr_hi, he_pwr_hi, hfl_pwr_hi, 1'b0, 1'b0, 1'b0); -mux8 mux_adc_clk (major_mode, adc_clk, hr_adc_clk, hs_adc_clk, hisn_adc_clk, he_adc_clk, hfl_adc_clk, 1'b0, 1'b0, 1'b0); -mux8 mux_dbg (major_mode, dbg, hr_dbg, hs_dbg, hisn_dbg, he_dbg, hfl_dbg, 1'b0, 1'b0, 1'b0); - -// In all modes, let the ADC's outputs be enabled. -assign adc_noe = 1'b0; - -endmodule diff --git a/fpga-xc3s100e/fpga_lfmod.v b/fpga-xc3s100e/fpga_lfmod.v deleted file mode 100644 index 5982a74e8..000000000 --- a/fpga-xc3s100e/fpga_lfmod.v +++ /dev/null @@ -1,236 +0,0 @@ -//----------------------------------------------------------------------------- -// Jonathan Westhues, March 2006 -// iZsh , June 2014 -// Piwi, Feb 2019 -// Anon, 2019 -//----------------------------------------------------------------------------- -// Defining commands, modes and options. This must be aligned to the definitions in fpgaloader.h -// Note: the definitions here are without shifts - -// Commands: -`define FPGA_CMD_SET_CONFREG 1 -`define FPGA_CMD_SET_DIVISOR 2 -`define FPGA_CMD_SET_EDGE_DETECT_THRESHOLD 3 - -// Major modes: -`define FPGA_MAJOR_MODE_LF_READER 0 -`define FPGA_MAJOR_MODE_LF_EDGE_DETECT 1 -`define FPGA_MAJOR_MODE_LF_PASSTHRU 2 -`define FPGA_MAJOR_MODE_LF_ADC 3 - -// Options for LF_READER -`define FPGA_LF_ADC_READER_FIELD 1 - -// Options for LF_EDGE_DETECT -`define FPGA_LF_EDGE_DETECT_READER_FIELD 1 -`define FPGA_LF_EDGE_DETECT_TOGGLE_MODE 2 - -//For ISE 10.1 PROJ,IDE auto include -//`include "lo_read.v" -//`include "lo_passthru.v" -//`include "lo_edge_detect.v" -//`include "lo_adc.v" -//`include "util.v" -//`include "clk_divider.v" - -module fpga_lfmod( - input spck, output miso, input mosi, input ncs, - input pck0, input ck_1356meg, input ck_1356megb, - output pwr_lo, output pwr_hi, - output pwr_oe1, output pwr_oe2, output pwr_oe3, output pwr_oe4, - input [7:0] adc_d, output adc_clk, output adc_noe, - output ssp_frame, output ssp_din, input ssp_dout, output ssp_clk, - input cross_hi, input cross_lo, - output dbg, - output PWR_LO_EN -); - -//----------------------------------------------------------------------------- -// The SPI receiver. This sets up the configuration word, which the rest of -// the logic looks at to determine how to connect the A/D and the coil -// drivers (i.e., which section gets it). Also assign some symbolic names -// to the configuration bits, for use below. -//----------------------------------------------------------------------------- - -/* - Attempt to write up how its hooked up. Iceman 2020. - - Communication between ARM / FPGA is done inside armsrc/fpgaloader.c see: function FpgaSendCommand() - Send 16 bit command / data pair to FPGA - The bit format is: C3 C2 C1 C0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 - where - C is 4bit command - D is 12bit data - - shift_reg receive this 16bit frame - - LF command - ---------- - shift_reg[15:12] == 4bit command - LF has three commands (FPGA_CMD_SET_CONFREG, FPGA_CMD_SET_DIVISOR, FPGA_CMD_SET_EDGE_DETECT_THRESHOLD) - Current commands uses only 2bits. We have room for up to 4bits of commands total (7). - - LF data - ------- - shift_reg[11:0] == 12bit data - lf data is divided into MAJOR MODES and configuration values. - - The major modes uses 3bits (0,1,2,3,7 | 000, 001, 010, 011, 111) - 000 FPGA_MAJOR_MODE_LF_READER = Act as LF reader (modulate) - 001 FPGA_MAJOR_MODE_LF_EDGE_DETECT = Simulate LF - 010 FPGA_MAJOR_MODE_LF_PASSTHRU = Passthrough mode, CROSS_LO line connected to SSP_DIN. SSP_DOUT logic level controls if we modulate / listening - 011 FPGA_MAJOR_MODE_LF_ADC = refactor hitag2, clear ADC sampling - 111 FPGA_MAJOR_MODE_OFF = turn off sampling. - - Each one of this major modes can have options. Currently these two major modes uses options. - - FPGA_MAJOR_MODE_LF_READER - - FPGA_MAJOR_MODE_LF_EDGE_DETECT - - FPGA_MAJOR_MODE_LF_READER - ------------------------------------- - lf_field = 1bit (FPGA_LF_ADC_READER_FIELD) - - You can send FPGA_CMD_SET_DIVISOR to set with FREQUENCY the fpga should sample at - divisor = 8bits shift_reg[7:0] - - FPGA_MAJOR_MODE_LF_EDGE_DETECT - ------------------------------------------ - lf_ed_toggle_mode = 1bits - lf_ed_threshold = 8bits threshold defaults to 127 - - You can send FPGA_CMD_SET_EDGE_DETECT_THRESHOLD to set a custom threshold - lf_ed_threshold = 8bits threshold value. - - conf_word 12bits - conf_word[7:5] = 3bit major mode. - conf_word[0] = 1bit lf_field - conf_word[1] = 1bit lf_ed_toggle_mode - conf_word[7:0] = 8bit divisor - conf_word[7:0] = 8bit threshold - ------+--------- frame layout -------------------- -bit | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ------+------------------------------------------- -cmd | x x x x -major| x x x -opt | x x -divi | x x x x x x x x -thres| x x x x x x x x ------+------------------------------------------- -*/ - -reg [15:0] shift_reg; -reg [7:0] divisor; -reg [7:0] lf_ed_threshold; -reg [11:0] conf_word; - -wire [2:0] major_mode = conf_word[8:6]; -wire lf_field = conf_word[0]; -wire lf_ed_toggle_mode = conf_word[1]; - -// Handles cmd / data frame from ARM -always @(posedge ncs) -begin - // 4 bit command - case (shift_reg[15:12]) - `FPGA_CMD_SET_CONFREG: - begin - // 12 bit data - conf_word <= shift_reg[11:0]; - if (shift_reg[8:6] == `FPGA_MAJOR_MODE_LF_EDGE_DETECT) - begin - lf_ed_threshold <= 127; // default threshold - end - end - - `FPGA_CMD_SET_DIVISOR: - divisor <= shift_reg[7:0]; // 8bits - - `FPGA_CMD_SET_EDGE_DETECT_THRESHOLD: - lf_ed_threshold <= shift_reg[7:0]; // 8 bits - endcase -end - -// Receive 16bits of data from ARM here. -always @(posedge spck) -begin - if (~ncs) - begin - shift_reg[15:1] <= shift_reg[14:0]; - shift_reg[0] <= mosi; - end -end - -//----------------------------------------------------------------------------- -// And then we instantiate the modules corresponding to each of the FPGA's -// major modes, and use muxes to connect the outputs of the active mode to -// the output pins. -//----------------------------------------------------------------------------- -wire [7:0] pck_cnt; -wire pck_divclk; -clk_divider div_clk(pck0, divisor, pck_cnt, pck_divclk); - -lo_read lr( - pck0, pck_cnt, pck_divclk, - lr_pwr_lo, lr_pwr_hi, lr_pwr_oe1, lr_pwr_oe2, lr_pwr_oe3, lr_pwr_oe4, - adc_d, lr_adc_clk, - lr_ssp_frame, lr_ssp_din, lr_ssp_clk, - lr_dbg, lf_field -); - -lo_passthru lp( - pck_divclk, - lp_pwr_lo, lp_pwr_hi, lp_pwr_oe1, lp_pwr_oe2, lp_pwr_oe3, lp_pwr_oe4, - lp_adc_clk, - lp_ssp_din, ssp_dout, - cross_lo, - lp_dbg -); - -lo_edge_detect le( - pck0, pck_divclk, - le_pwr_lo, le_pwr_hi, le_pwr_oe1, le_pwr_oe2, le_pwr_oe3, le_pwr_oe4, - adc_d, le_adc_clk, - le_ssp_frame, ssp_dout, le_ssp_clk, - cross_lo, - le_dbg, - lf_field, - lf_ed_toggle_mode, lf_ed_threshold -); - -lo_adc la( - pck0, - la_pwr_lo, la_pwr_hi, la_pwr_oe1, la_pwr_oe2, la_pwr_oe3, la_pwr_oe4, - adc_d, la_adc_clk, - la_ssp_frame, la_ssp_din, ssp_dout, la_ssp_clk, - la_dbg, divisor, - lf_field -); - -// Major modes: -// 000 -- LF reader (generic) -// 001 -- LF edge detect (generic) -// 010 -- LF passthrough -// 011 -- LF ADC (read/write) -// 100 -- unused -// 101 -- unused -// 110 -- unused -// 111 -- FPGA_MAJOR_MODE_OFF -// 000 001 010 011 100 101 110 111 -mux8 mux_ssp_clk (major_mode, ssp_clk, lr_ssp_clk, le_ssp_clk, 1'b0, la_ssp_clk, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_ssp_din (major_mode, ssp_din, lr_ssp_din, 1'b0, lp_ssp_din, la_ssp_din, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_ssp_frame (major_mode, ssp_frame, lr_ssp_frame, le_ssp_frame, 1'b0, la_ssp_frame, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_oe1 (major_mode, pwr_oe1, lr_pwr_oe1, le_pwr_oe1, lp_pwr_oe1, la_pwr_oe1, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_oe2 (major_mode, pwr_oe2, lr_pwr_oe2, le_pwr_oe2, lp_pwr_oe2, la_pwr_oe2, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_oe3 (major_mode, pwr_oe3, lr_pwr_oe3, le_pwr_oe3, lp_pwr_oe3, la_pwr_oe3, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_oe4 (major_mode, pwr_oe4, lr_pwr_oe4, le_pwr_oe4, lp_pwr_oe4, la_pwr_oe4, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_pwr_lo (major_mode, pwr_lo, lr_pwr_lo, le_pwr_lo, lp_pwr_lo, la_pwr_lo, 1'b0, 1'b0, 1'b1, 1'b0); -mux8 mux_pwr_hi (major_mode, pwr_hi, lr_pwr_hi, le_pwr_hi, lp_pwr_hi, la_pwr_hi, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_adc_clk (major_mode, adc_clk, lr_adc_clk, le_adc_clk, lp_adc_clk, la_adc_clk, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_dbg (major_mode, dbg, lr_dbg, le_dbg, lp_dbg, la_dbg, 1'b0, 1'b0, 1'b0, 1'b0); -mux8 mux_ant (major_mode, PWR_LO_EN, 1'b1, 1'b1, 1'b1, 1'b1, 1'b0, 1'b0, 1'b0, 1'b0); - -// In all modes, let the ADC's outputs be enabled. -assign adc_noe = 1'b0; - -endmodule diff --git a/fpga-xc3s100e/hi_flite.v b/fpga-xc3s100e/hi_flite.v deleted file mode 100644 index 6cb87825e..000000000 --- a/fpga-xc3s100e/hi_flite.v +++ /dev/null @@ -1,368 +0,0 @@ -/* - This code demodulates and modulates signal as described in ISO/IEC 18092. - That includes packets used for Felica, NFC Tag 3, etc. (which do overlap) - simple envelope following algorithm is used (modification of fail0verflow LF one) - is used to combat some nasty aliasing effect with testing phone (envelope looked like sine wave) - - Speeds supported: only 212 kbps (fc/64) for now. Todo: 414 kbps - though for reader, the selection has to come from ARM. modulation waits for market sprocket -doesn't really mean anything - - mod_type: bits 210: - bit 2 : reader drive/power on/off - bit 1 : speed bit, 0 : 212, 1 :424 - bit 0 : listen or modulate -*/ - -module hi_flite( - ck_1356meg, - pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4, - adc_d, adc_clk, - ssp_frame, ssp_din, ssp_dout, ssp_clk, - dbg, - mod_type -); - input ck_1356meg; - output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; - input [7:0] adc_d; - output adc_clk; - input ssp_dout; - output ssp_frame, ssp_din, ssp_clk; - output dbg; - input [3:0] mod_type; - -assign dbg = 0; - -wire power = mod_type[2]; -wire speed = mod_type[1]; -wire disabl = mod_type[0]; - -// Most off, oe4 for modulation; -// Trying reader emulation (would presumably just require switching power on, but I am not sure) -assign pwr_lo = 1'b0; - -// 512x64/fc -wait before ts0, 32768 ticks -// tslot: 256*64/fc -assign adc_clk = ck_1356meg; - -///heuristic values for initial thresholds. seem to work OK -`define imin 70 // (13'd256) -`define imax 180 // (-13'd256) -`define ithrmin 91 // -13'd8 -`define ithrmax 160 // 13'd8 - -`define min_bitdelay_212 8 -//minimum values and corresponding thresholds -reg [8:0] curmin=`imin; -reg [8:0] curminthres=`ithrmin; -reg [8:0] curmaxthres=`ithrmax; -reg [8:0] curmax=`imax; - -//signal state, 1-not modulated, 0 -modulated -reg after_hysteresis = 1'b1; - -//state machine for envelope tracking -reg [1:0] state=1'd0; - -//lower edge detected, trying to detect first bit of SYNC (b24d, 1011001001001101) -reg try_sync=1'b0; - -//detected first sync bit, phase frozen -reg did_sync=0; - -`define bithalf_212 32 // half-bit length for 212 kbit -`define bitmlen_212 63 // bit transition edge - -`define bithalf_424 16 // half-bit length for 212 kbit -`define bitmlen_424 31 // bit transition edge - -wire [7:0] bithalf = speed ? `bithalf_424 : `bithalf_212; -wire [7:0] bitmlen = speed ? `bitmlen_424 : `bitmlen_212; - - -//ssp clock and current values -reg ssp_clk; -reg ssp_frame; -reg curbit = 1'b0; - -reg [7:0] fccount = 8'd0; // in-bit tick counter. Counts carrier cycles from the first lower edge detected, reset on every manchester bit detected - -reg [7:0] tsinceedge = 8'd0;// ticks from last edge, desync if the valye is too large - -reg zero = 1'b0; // Manchester first halfbit low second high corresponds to this value. It has been known to change. SYNC is used to set it - -//ssp counter for transfer and framing -reg [8:0] ssp_cnt = 9'd0; - -always @(posedge adc_clk) - ssp_cnt <= (ssp_cnt + 1); - -//maybe change it so that ARM sends preamble as well. -//then: ready bits sent to ARM, 8 bits sent from ARM (all ones), then preamble (all zeros, presumably) - which starts modulation - -always @(negedge adc_clk) -begin - //count fc/64 - transfer bits to ARM at the rate they are received - if( ((~speed) && (ssp_cnt[5:0] == 6'b000000)) || (speed && (ssp_cnt[4:0] == 5'b00000))) - begin - ssp_clk <= 1'b1; - ssp_din <= curbit; - end - if( ( (~speed) && (ssp_cnt[5:0] == 6'b100000)) ||(speed && ssp_cnt[4:0] == 5'b10000)) - ssp_clk <= 1'b0; - //create frame pulses. TBH, I still don't know what they do exactly, but they are crucial for ARM->FPGA transfer. If the frame is in the beginning of the byte, transfer slows to a crawl for some reason - // took me a day to figure THAT out. - if(( (~speed) && (ssp_cnt[8:0] == 9'd31)) || (speed && ssp_cnt[7:0] == 8'd15)) - begin - ssp_frame <= 1'b1; - end - if(( (~speed) && (ssp_cnt[8:0] == 9'b1011111)) || (speed &&ssp_cnt[7:0] == 8'b101111) ) - begin - ssp_frame <= 1'b0; - end -end - -//send current bit (detected in SNIFF mode or the one being modulated in MOD mode, 0 otherwise) -reg ssp_din; - -//previous signal value, mostly to detect SYNC -reg prv = 1'b1; - -// for simple error correction in mod/demod detection, use maximum of modded/demodded in given interval. Maybe 1 bit is extra? but better safe than sorry. -reg[7:0] mid = 8'd128; - -// set TAGSIM__MODULATE on ARM if we want to write... (frame would get lost if done mid-frame...) -// start sending over 1s on ssp->arm when we start sending preamble -// reg sending = 1'b0; // are we actively modulating? -reg [11:0] bit_counts = 12'd0; // for timeslots. only support ts=0 for now, at 212 speed -512 fullbits from end of frame. One hopes. might remove those? - - -//we need some way to flush bit_counts triggers on mod_type changes don't compile -reg dlay; -always @(negedge adc_clk) // every data ping? -begin - //envelope follow code... - //////////// - if (fccount == bitmlen) - begin - if ((~try_sync) && (adc_d < curminthres) && disabl ) - begin - fccount <= 1; - end - else - begin - fccount <= 0; - end - dlay <= ssp_dout; - if (bit_counts > 768) // should be over ts0 now, without ARM interference... stop counting... - begin - bit_counts <= 0; - end - else - if (power) - bit_counts <= 0; - else - bit_counts <= bit_counts + 1; - end - else - begin - if((~try_sync) && (adc_d < curminthres) && disabl) - begin - fccount <= 1; - end - else - begin - fccount <= fccount + 1; - end - end - - // rising edge - if (adc_d > curmaxthres) - begin - case (state) - 0: begin - curmax <= adc_d > `imax? adc_d : `imax; - state <= 2; - end - 1: begin - curminthres <= ((curmin >> 1) + (curmin >> 2) + (curmin >> 4) + (curmax >> 3) + (curmax >> 4)); //threshold: 0.1875 max + 0.8125 min - curmaxthres <= ((curmax >> 1) + (curmax >> 2) + (curmax >> 4) + (curmin >> 3) + (curmin >> 4)); - curmax <= adc_d > 155 ? adc_d : 155; // to hopefully prevent overflow from spikes going up to 255 - state <= 2; - end - 2: begin - if (adc_d > curmax) - curmax <= adc_d; - end - default: - begin - end - endcase - after_hysteresis <= 1'b1; - if(try_sync) - tsinceedge <= 0; - end - else if (adc_d> 1) + (curmin >> 2) + (curmin >> 4) + (curmax >> 3) + (curmax >> 4)); - curmaxthres <= ( (curmax >> 1) + (curmax >> 2) + (curmax >> 4) + (curmin >> 3) + (curmin >> 4)); - curmin <= adc_d < `imin ? adc_d : `imin; - state <= 1; - end - default: - begin - end - endcase - after_hysteresis <= 0; - if (~try_sync ) //begin modulation, lower edge... - begin - try_sync <= 1; - fccount <= 1; - did_sync <= 0; - curbit <= 0; - mid <= 8'd127; - tsinceedge <= 0; - prv <= 1; - end - else - begin - tsinceedge <= 0; - end - end - else //stable state, low or high - begin - curminthres <= ( (curmin >> 1) + (curmin >> 2) + (curmin >> 4) + (curmax >> 3) + (curmax >> 4)); - curmaxthres <= ( (curmax >> 1) + (curmax >> 2) + (curmax >> 4) + (curmin >> 3) + (curmin >> 4)); - state <= 0; - - if (try_sync ) - begin - if (tsinceedge >= (128)) - begin - //we might need to start counting... assuming ARM wants to reply to the frame. - bit_counts <= 1;// i think? 128 is about 2 bits passed... but 1 also works - try_sync <= 0; - did_sync <= 0;//desync - curmin <= `imin; //reset envelope - curmax <= `imax; - curminthres <= `ithrmin; - curmaxthres <= `ithrmax; - prv <= 1; - tsinceedge <= 0; - after_hysteresis <= 1'b1; - curbit <= 0; - mid <= 8'd128; - end - else - tsinceedge <= (tsinceedge + 1); - end - end - - - if (try_sync && tsinceedge < 128) - begin - //detect bits in their middle ssp sampling is in sync, so it would sample all bits in order - if (fccount == bithalf) - begin - if ((~did_sync) && ((prv == 1 && (mid > 128))||(prv == 0 && (mid <= 128)))) - begin - //sync the Zero, and set curbit roperly - did_sync <= 1'b1; - zero <= ~prv;// 1-prv - curbit <= 1; - end - else - curbit <= (mid > 128) ? (~zero) : zero; - - prv <= (mid > 128) ? 1 : 0; - - if (adc_d > curmaxthres) - mid <= 8'd129; - else if (adc_d < curminthres) - mid <= 8'd127; - else - begin - if (after_hysteresis) - begin - mid <= 8'd129; - end - else - begin - mid <= 8'd127; - end - end - - end - else - begin - if (fccount==bitmlen) - begin - // fccount <= 0; - prv <= (mid > 128) ? 1 : 0; - mid <= 128; - end - else - begin - // minimum-maximum calc - if(adc_d > curmaxthres) - mid <= mid + 1; - else if (adc_d < curminthres) - mid <= mid - 1; - else - begin - if (after_hysteresis) - begin - mid <= mid + 1; - end - else - begin - mid <= mid - 1; - end - end - end - end - end - else - begin - end -// sending <= 0; -end -//put modulation here to maintain the correct clock. Seems that some readers are sensitive to that -reg pwr_hi; -reg pwr_oe1; -reg pwr_oe2; -reg pwr_oe3; -reg pwr_oe4; - -wire mod = ((fccount >= bithalf) ^ dlay) & (~disabl); - -always @(ck_1356meg or ssp_dout or power or disabl or mod) -begin - if (power) - begin - pwr_hi <= ck_1356meg; - pwr_oe1 <= 1'b0;//mod; - pwr_oe2 <= 1'b0;//mod; - pwr_oe3 <= 1'b0;//mod; - pwr_oe4 <= mod;//1'b0; - end - else - begin - pwr_hi <= 1'b0; - pwr_oe1 <= 1'b0; - pwr_oe2 <= 1'b0; - pwr_oe3 <= 1'b0; - pwr_oe4 <= mod; - end -end - -endmodule diff --git a/fpga-xc3s100e/hi_get_trace.v b/fpga-xc3s100e/hi_get_trace.v deleted file mode 100644 index 2b1cf393b..000000000 --- a/fpga-xc3s100e/hi_get_trace.v +++ /dev/null @@ -1,164 +0,0 @@ -//----------------------------------------------------------------------------- -// -// piwi, Feb 2019 -//----------------------------------------------------------------------------- -//For ISE 10.1 PROJ,IDE cannot apply definition to all files -`include "define.v" - -module hi_get_trace( - ck_1356megb, - adc_d, trace_enable, major_mode, - ssp_frame, ssp_din, ssp_clk -); - input ck_1356megb; - input [7:0] adc_d; - input trace_enable; - input [2:0] major_mode; - output ssp_frame, ssp_din, ssp_clk; - -// clock divider -reg [6:0] clock_cnt; -always @(negedge ck_1356megb) -begin - clock_cnt <= clock_cnt + 1; -end - -// sample at 13,56MHz / 8. The highest signal frequency (subcarrier) is 848,5kHz, i.e. in this case we oversample by a factor of 2 -reg [2:0] sample_clock; -always @(negedge ck_1356megb) -begin - if (sample_clock == 3'd7) - sample_clock <= 3'd0; - else - sample_clock <= sample_clock + 1; -end - - -reg [11:0] addr; -reg [11:0] start_addr; -reg [2:0] previous_major_mode; -reg write_enable1; -reg write_enable2; -always @(negedge ck_1356megb) -begin - previous_major_mode <= major_mode; - if (major_mode == `FPGA_MAJOR_MODE_HF_GET_TRACE) - begin - write_enable1 <= 1'b0; - write_enable2 <= 1'b0; - if (previous_major_mode != `FPGA_MAJOR_MODE_HF_GET_TRACE) // just switched into GET_TRACE mode - addr <= start_addr; - if (clock_cnt == 7'd0) - begin - if (addr == 12'd3071) - addr <= 12'd0; - else - addr <= addr + 1; - end - end - else if (major_mode != `FPGA_MAJOR_MODE_OFF) - begin - if (trace_enable) - begin - if (addr[11] == 1'b0) - begin - write_enable1 <= 1'b1; - write_enable2 <= 1'b0; - end - else - begin - write_enable1 <= 1'b0; - write_enable2 <= 1'b1; - end - if (sample_clock == 3'b000) - begin - if (addr == 12'd3071) - begin - addr <= 12'd0; - write_enable1 <= 1'b1; - write_enable2 <= 1'b0; - end - else - begin - addr <= addr + 1; - end - end - end - else - begin - write_enable1 <= 1'b0; - write_enable2 <= 1'b0; - start_addr <= addr; - end - end - else // major_mode == `FPGA_MAJOR_MODE_OFF - begin - write_enable1 <= 1'b0; - write_enable2 <= 1'b0; - if (previous_major_mode != `FPGA_MAJOR_MODE_OFF && previous_major_mode != `FPGA_MAJOR_MODE_HF_GET_TRACE) // just switched off - begin - start_addr <= addr; - end - end -end - - -// (2+1)k RAM -reg [7:0] D_out1, D_out2; -reg [7:0] ram1 [2047:0]; // 2048 u8 -reg [7:0] ram2 [1023:0]; // 1024 u8 - -always @(negedge ck_1356megb) -begin - if (write_enable1) - begin - ram1[addr[10:0]] <= adc_d; - D_out1 <= adc_d; - end - else - D_out1 <= ram1[addr[10:0]]; - if (write_enable2) -begin - ram2[addr[9:0]] <= adc_d; - D_out2 <= adc_d; - end - else - D_out2 <= ram2[addr[9:0]]; -end - - -// SSC communication to ARM -reg ssp_clk; -reg ssp_frame; -reg [7:0] shift_out; - -always @(negedge ck_1356megb) -begin - if (clock_cnt[3:0] == 4'd0) // update shift register every 16 clock cycles - begin - if (clock_cnt[6:4] == 3'd0) // either load new value - begin - if (addr[11] == 1'b0) - shift_out <= D_out1; - else - shift_out <= D_out2; - end - else - begin - // or shift left - shift_out[7:1] <= shift_out[6:0]; - end - end - - ssp_clk <= ~clock_cnt[3]; // ssp_clk frequency = 13,56MHz / 16 = 847,5 kHz - - if (clock_cnt[6:4] == 3'b000) // set ssp_frame for 0...31 - ssp_frame <= 1'b1; - else - ssp_frame <= 1'b0; - -end - -assign ssp_din = shift_out[7]; - -endmodule diff --git a/fpga-xc3s100e/hi_iso14443a.v b/fpga-xc3s100e/hi_iso14443a.v deleted file mode 100644 index 26ab0f9d9..000000000 --- a/fpga-xc3s100e/hi_iso14443a.v +++ /dev/null @@ -1,584 +0,0 @@ -//----------------------------------------------------------------------------- -// ISO14443-A support for the Proxmark III -// Gerhard de Koning Gans, April 2008 -//----------------------------------------------------------------------------- - -module hi_iso14443a( - ck_1356meg, - pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4, - adc_d, adc_clk, - ssp_frame, ssp_din, ssp_dout, ssp_clk, - dbg, - mod_type -); - input ck_1356meg; - output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; - input [7:0] adc_d; - output adc_clk; - input ssp_dout; - output ssp_frame, ssp_din, ssp_clk; - output dbg; - input [3:0] mod_type; - - -wire adc_clk = ck_1356meg; - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Reader -> PM3: -// detecting and shaping the reader's signal. Reader will modulate the carrier by 100% (signal is either on or off). Use a -// hysteresis (Schmitt Trigger) to avoid false triggers during slowly increasing or decreasing carrier amplitudes -reg after_hysteresis; -reg [11:0] has_been_low_for; - -always @(negedge adc_clk) -begin - if(adc_d >= 16) after_hysteresis <= 1'b1; // U >= 1,14V -> after_hysteresis = 1 - else if(adc_d < 8) after_hysteresis <= 1'b0; // U < 1,04V -> after_hysteresis = 0 - // Note: was >= 3,53V and <= 1,19V. The new trigger values allow more reliable detection of the first bit - // (it might not reach 3,53V due to the high time constant of the high pass filter in the analogue RF part). - // In addition, the new values are more in line with ISO14443-2: "The PICC shall detect the ”End of Pause” after the field exceeds - // 5% of H_INITIAL and before it exceeds 60% of H_INITIAL." Depending on the signal strength, 60% might well be less than 3,53V. - - - // detecting a loss of reader's field (adc_d < 192 for 4096 clock cycles). If this is the case, - // set the detected reader signal (after_hysteresis) to '1' (unmodulated) - if(adc_d >= 192) - begin - has_been_low_for <= 12'd0; - end - else - begin - if(has_been_low_for == 12'd4095) - begin - has_been_low_for <= 12'd0; - after_hysteresis <= 1'b1; - end - else - begin - has_been_low_for <= has_been_low_for + 1; - end - end - -end - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Reader -> PM3 -// detect when a reader is active (modulating). We assume that the reader is active, if we see the carrier off for at least 8 -// carrier cycles. We assume that the reader is inactive, if the carrier stayed high for at least 256 carrier cycles. -reg deep_modulation; -reg [2:0] deep_counter; -reg [8:0] saw_deep_modulation; - -always @(negedge adc_clk) -begin - if(~(| adc_d[7:0])) // if adc_d == 0 (U <= 0,94V) - begin - if(deep_counter == 3'd7) // adc_d == 0 for 8 adc_clk ticks -> deep_modulation (by reader) - begin - deep_modulation <= 1'b1; - saw_deep_modulation <= 8'd0; - end - else - deep_counter <= deep_counter + 1; - end - else - begin - deep_counter <= 3'd0; - if(saw_deep_modulation == 8'd255) // adc_d != 0 for 256 adc_clk ticks -> deep_modulation is over, probably waiting for tag's response - deep_modulation <= 1'b0; - else - saw_deep_modulation <= saw_deep_modulation + 1; - end -end - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Tag -> PM3 -// filter the input for a tag's signal. The filter box needs the 4 previous input values and is a gaussian derivative filter -// for noise reduction and edge detection. -// store 4 previous samples: -reg [7:0] input_prev_4, input_prev_3, input_prev_2, input_prev_1; - -always @(negedge adc_clk) -begin - input_prev_4 <= input_prev_3; - input_prev_3 <= input_prev_2; - input_prev_2 <= input_prev_1; - input_prev_1 <= adc_d; -end - -// adc_d_filtered = 2*input_prev4 + 1*input_prev3 + 0*input_prev2 - 1*input_prev1 - 2*input -// = (2*input_prev4 + input_prev3) - (2*input + input_prev1) -wire [8:0] input_prev_4_times_2 = input_prev_4 << 1; -wire [8:0] adc_d_times_2 = adc_d << 1; - -wire [9:0] tmp1 = input_prev_4_times_2 + input_prev_3; -wire [9:0] tmp2 = adc_d_times_2 + input_prev_1; - -// convert intermediate signals to signed and calculate the filter output -wire signed [10:0] adc_d_filtered = {1'b0, tmp1} - {1'b0, tmp2}; - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// internal FPGA timing. Maximum required period is 128 carrier clock cycles for a full 8 Bit transfer to ARM. (i.e. we need a -// 7 bit counter). Adjust its frequency to external reader's clock when simulating a tag or sniffing. -reg pre_after_hysteresis; -reg [3:0] reader_falling_edge_time; -reg [6:0] negedge_cnt; - -always @(negedge adc_clk) -begin - // detect a reader signal's falling edge and remember its timing: - pre_after_hysteresis <= after_hysteresis; - if (pre_after_hysteresis && ~after_hysteresis) - begin - reader_falling_edge_time[3:0] <= negedge_cnt[3:0]; - end - - // adjust internal timer counter if necessary: - if (negedge_cnt[3:0] == 4'd13 && (mod_type == `FPGA_HF_ISO14443A_SNIFFER || mod_type == `FPGA_HF_ISO14443A_TAGSIM_LISTEN) && deep_modulation) - begin - if (reader_falling_edge_time == 4'd1) // reader signal changes right after sampling. Better sample earlier next time. - begin - negedge_cnt <= negedge_cnt + 2; // time warp - end - else if (reader_falling_edge_time == 4'd0) // reader signal changes right before sampling. Better sample later next time. - begin - negedge_cnt <= negedge_cnt; // freeze time - end - else - begin - negedge_cnt <= negedge_cnt + 1; // Continue as usual - end - reader_falling_edge_time[3:0] <= 4'd8; // adjust only once per detected edge - end - else if (negedge_cnt == 7'd127) // normal operation: count from 0 to 127 - begin - negedge_cnt <= 0; - end - else - begin - negedge_cnt <= negedge_cnt + 1; - end -end - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Tag -> PM3: -// determine best possible time for starting/resetting the modulation detector. -reg [3:0] mod_detect_reset_time; - -always @(negedge adc_clk) -begin - if (mod_type == `FPGA_HF_ISO14443A_READER_LISTEN) - // (our) reader signal changes at negedge_cnt[3:0]=9, tag response expected to start n*16+4 ticks later, further delayed by - // 3 ticks ADC conversion. The maximum filter output (edge detected) will be detected after subcarrier zero crossing (+7 ticks). - // To allow some timing variances, we want to have the maximum filter outputs well within the detection window, i.e. - // at mod_detect_reset_time+4 and mod_detect_reset_time+12 (-4 ticks). - // 9 + 4 + 3 + 7 - 4 = 19. 19 mod 16 = 3 - begin - mod_detect_reset_time <= 4'd4; - end - else - if (mod_type == `FPGA_HF_ISO14443A_SNIFFER) - begin - // detect a rising edge of reader's signal and sync modulation detector to the tag's answer: - if (~pre_after_hysteresis && after_hysteresis && deep_modulation) - // reader signal rising edge detected at negedge_cnt[3:0]. This signal had been delayed - // 9 ticks by the RF part + 3 ticks by the A/D converter + 1 tick to assign to after_hysteresis. - // Then the same as above. - // - 9 - 3 - 1 + 4 + 3 + 7 - 4 = -3 - begin - mod_detect_reset_time <= negedge_cnt[3:0] - 4'd3; - end - end -end - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Tag -> PM3: -// modulation detector. Looks for the steepest falling and rising edges within a 16 clock period. If there is both a significant -// falling and rising edge (in any order), a modulation is detected. -reg signed [10:0] rx_mod_falling_edge_max; -reg signed [10:0] rx_mod_rising_edge_max; -reg curbit; - -`define EDGE_DETECT_THRESHOLD 3 -`define EDGE_DETECT_THRESHOLDHIGH 20 - -always @(negedge adc_clk) -begin - if(negedge_cnt[3:0] == mod_detect_reset_time) - begin - if (mod_type == `FPGA_HF_ISO14443A_SNIFFER) - begin - // detect modulation signal: if modulating, there must have been a falling AND a rising edge - if ((rx_mod_falling_edge_max > `EDGE_DETECT_THRESHOLDHIGH) && (rx_mod_rising_edge_max < -`EDGE_DETECT_THRESHOLDHIGH)) - curbit <= 1'b1; // modulation - else - curbit <= 1'b0; // no modulation - end - else - begin - // detect modulation signal: if modulating, there must have been a falling AND a rising edge - if ((rx_mod_falling_edge_max > `EDGE_DETECT_THRESHOLD) && (rx_mod_rising_edge_max < -`EDGE_DETECT_THRESHOLD)) - curbit <= 1'b1; // modulation - else - curbit <= 1'b0; // no modulation - end - // reset modulation detector - rx_mod_rising_edge_max <= 0; - rx_mod_falling_edge_max <= 0; - end - else // look for steepest edges (slopes) - begin - if (adc_d_filtered > 0) - begin - if (adc_d_filtered > rx_mod_falling_edge_max) - rx_mod_falling_edge_max <= adc_d_filtered; - end - else - begin - if (adc_d_filtered < rx_mod_rising_edge_max) - rx_mod_rising_edge_max <= adc_d_filtered; - end - end - -end - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Tag+Reader -> PM3 -// sample 4 bits reader data and 4 bits tag data for sniffing -reg [3:0] reader_data; -reg [3:0] tag_data; - -always @(negedge adc_clk) -begin - if(negedge_cnt[3:0] == 4'd0) - begin - reader_data[3:0] <= {reader_data[2:0], after_hysteresis}; - tag_data[3:0] <= {tag_data[2:0], curbit}; - end -end - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// PM3 -> Reader: -// a delay line to ensure that we send the (emulated) tag's answer at the correct time according to ISO14443-3 -reg [31:0] mod_sig_buf; -reg [4:0] mod_sig_ptr; -reg mod_sig; - -always @(negedge adc_clk) -begin - if(negedge_cnt[3:0] == 4'd0) // sample data at rising edge of ssp_clk - ssp_dout changes at the falling edge. - begin - mod_sig_buf[31:2] <= mod_sig_buf[30:1]; // shift - if (~ssp_dout && ~mod_sig_buf[1]) - mod_sig_buf[1] <= 1'b0; // delete the correction bit (a single 1 preceded and succeeded by 0) - else - mod_sig_buf[1] <= mod_sig_buf[0]; - mod_sig_buf[0] <= ssp_dout; // add new data to the delay line - - mod_sig = mod_sig_buf[mod_sig_ptr]; // the delayed signal. - end -end - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// PM3 -> Reader, internal timing: -// a timer for the 1172 cycles fdt (Frame Delay Time). Start the timer with a rising edge of the reader's signal. -// set fdt_elapsed when we no longer need to delay data. Set fdt_indicator when we can start sending data. -// Note: the FPGA only takes care for the 1172 delay. To achieve an additional 1236-1172=64 ticks delay, the ARM must send -// a correction bit (before the start bit). The correction bit will be coded as 00010000, i.e. it adds 4 bits to the -// transmission stream, causing the required additional delay. -reg [10:0] fdt_counter; -reg fdt_indicator, fdt_elapsed; -reg [3:0] mod_sig_flip; -reg [3:0] sub_carrier_cnt; - -// we want to achieve a delay of 1172. The RF part already has delayed the reader signals's rising edge -// by 9 ticks, the ADC took 3 ticks and there is always a delay of 32 ticks by the mod_sig_buf. Therefore need to -// count to 1172 - 9 - 3 - 32 = 1128 -`define FDT_COUNT 11'd1128 - -// The ARM must not send too early, otherwise the mod_sig_buf will overflow, therefore signal that we are ready -// with fdt_indicator. The mod_sig_buf can buffer 29 excess data bits, i.e. a maximum delay of 29 * 16 = 464 adc_clk ticks. -// fdt_indicator is assigned to sendbit after at least 1 tick, the transfer to ARM needs minimum 8 ticks. Response from -// ARM could appear at ssp_dout 8 ticks later. -// 1128 - 464 - 1 - 8 - 8 = 647 -`define FDT_INDICATOR_COUNT 11'd647 -// Note: worst case, assignment to sendbit takes 15 ticks more, and transfer to ARM needs 7*16 = 112 ticks more. -// When the ARM's response then appears, the fdt_count is already 647 + 15 + 112 = 774, which still allows the ARM a possible -// response window of 1128 - 774 = 354 ticks. - -// reset on a pause in listen mode. I.e. the counter starts when the pause is over: -assign fdt_reset = ~after_hysteresis && mod_type == `FPGA_HF_ISO14443A_TAGSIM_LISTEN; - -always @(negedge adc_clk) -begin - if (fdt_reset) - begin - fdt_counter <= 11'd0; - fdt_elapsed <= 1'b0; - fdt_indicator <= 1'b0; - end - else - begin - if(fdt_counter == `FDT_COUNT) - begin - if(~fdt_elapsed) // just reached fdt. - begin - mod_sig_flip <= negedge_cnt[3:0]; // start modulation at this time - sub_carrier_cnt <= 4'd0; // subcarrier phase in sync with start of modulation - fdt_elapsed <= 1'b1; - end - else - begin - sub_carrier_cnt <= sub_carrier_cnt + 1; - end - end - else - begin - fdt_counter <= fdt_counter + 1; - end - end - - if(fdt_counter == `FDT_INDICATOR_COUNT) fdt_indicator <= 1'b1; -end - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// PM3 -> Reader or Tag -// assign a modulation signal to the antenna. This signal is either a delayed signal (to achieve fdt when sending to a reader) -// or undelayed when sending to a tag -reg mod_sig_coil; - -always @(negedge adc_clk) -begin - if (mod_type == `FPGA_HF_ISO14443A_TAGSIM_MOD) // need to take care of proper fdt timing - begin - if(fdt_counter == `FDT_COUNT) - begin - if(fdt_elapsed) - begin - if(negedge_cnt[3:0] == mod_sig_flip) mod_sig_coil <= mod_sig; - end - else - begin - mod_sig_coil <= mod_sig; // just reached fdt. Immediately assign signal to coil - end - end - end - else // other modes: don't delay - begin - mod_sig_coil <= ssp_dout; - end -end - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// PM3 -> Reader -// determine the required delay in the mod_sig_buf (set mod_sig_ptr). -reg temp_buffer_reset; - -always @(negedge adc_clk) -begin - if(fdt_reset) - begin - mod_sig_ptr <= 5'd0; - temp_buffer_reset = 1'b0; - end - else - begin - if(fdt_counter == `FDT_COUNT && ~fdt_elapsed) // if we just reached fdt - if(~(| mod_sig_ptr[4:0])) - mod_sig_ptr <= 5'd8; // ... but didn't buffer a 1 yet, delay next 1 by n*128 ticks. - else - temp_buffer_reset = 1'b1; // else no need for further delays. - - if(negedge_cnt[3:0] == 4'd0) // at rising edge of ssp_clk - ssp_dout changes at the falling edge. - begin - if((ssp_dout || (| mod_sig_ptr[4:0])) && ~fdt_elapsed) // buffer a 1 (and all subsequent data) until fdt is reached. - if (mod_sig_ptr == 5'd31) - mod_sig_ptr <= 5'd0; // buffer overflow - data loss. - else - mod_sig_ptr <= mod_sig_ptr + 1; // increase buffer (= increase delay by 16 adc_clk ticks). mod_sig_ptr always points ahead of first 1. - else if(fdt_elapsed && ~temp_buffer_reset) - begin - // wait for the next 1 after fdt_elapsed before fixing the delay and starting modulation. This ensures that the response can only happen - // at intervals of 8 * 16 = 128 adc_clk ticks (as defined in ISO14443-3) - if(ssp_dout) - temp_buffer_reset = 1'b1; - if(mod_sig_ptr == 5'd1) - mod_sig_ptr <= 5'd8; // still nothing received, need to go for the next interval - else - mod_sig_ptr <= mod_sig_ptr - 1; // decrease buffer. - end - end - end -end - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// FPGA -> ARM communication: -// buffer 8 bits data to be sent to ARM. Shift them out bit by bit. -reg [7:0] to_arm; - -always @(negedge adc_clk) -begin - if (negedge_cnt[5:0] == 6'd63) // fill the buffer - begin - if (mod_type == `FPGA_HF_ISO14443A_SNIFFER) - begin - if(deep_modulation) // a reader is sending (or there's no field at all) - begin - to_arm <= {reader_data[3:0], 4'b0000}; // don't send tag data - end - else - begin - to_arm <= {reader_data[3:0], tag_data[3:0]}; - end - end - else - begin - to_arm[7:0] <= {mod_sig_ptr[4:0], mod_sig_flip[3:1]}; // feedback timing information - end - end - - if(negedge_cnt[2:0] == 3'b000 && mod_type == `FPGA_HF_ISO14443A_SNIFFER) // shift at double speed - begin - // Don't shift if we just loaded new data, obviously. - if(negedge_cnt[5:0] != 6'd0) - begin - to_arm[7:1] <= to_arm[6:0]; - end - end - - if(negedge_cnt[3:0] == 4'b0000 && mod_type != `FPGA_HF_ISO14443A_SNIFFER) - begin - // Don't shift if we just loaded new data, obviously. - if(negedge_cnt[6:0] != 7'd0) - begin - to_arm[7:1] <= to_arm[6:0]; - end - end - -end - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// FPGA <-> ARM communication: -// generate a ssp clock and ssp frame signal for the synchronous transfer from/to the ARM -reg ssp_clk; -reg ssp_frame; - -always @(negedge adc_clk) -begin - if(mod_type == `FPGA_HF_ISO14443A_SNIFFER) - // FPGA_HF_ISO14443A_SNIFFER mode (ssp_clk = adc_clk / 8, ssp_frame clock = adc_clk / 64)): - begin - if(negedge_cnt[2:0] == 3'd0) - ssp_clk <= 1'b1; - if(negedge_cnt[2:0] == 3'd4) - ssp_clk <= 1'b0; - - if(negedge_cnt[5:0] == 6'd0) // ssp_frame rising edge indicates start of frame - ssp_frame <= 1'b1; - if(negedge_cnt[5:0] == 6'd8) - ssp_frame <= 1'b0; - end - else - // all other modes (ssp_clk = adc_clk / 16, ssp_frame clock = adc_clk / 128): - begin - if(negedge_cnt[3:0] == 4'd0) - ssp_clk <= 1'b1; - if(negedge_cnt[3:0] == 4'd8) - ssp_clk <= 1'b0; - - if(negedge_cnt[6:0] == 7'd7) // ssp_frame rising edge indicates start of frame, sampled on falling edge of ssp_clk - ssp_frame <= 1'b1; - if(negedge_cnt[6:0] == 7'd23) - ssp_frame <= 1'b0; - end -end - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// FPGA -> ARM communication: -// select the data to be sent to ARM -reg bit_to_arm; -reg sendbit; - -always @(negedge adc_clk) -begin - if(negedge_cnt[3:0] == 4'd0) - begin - // What do we communicate to the ARM - if(mod_type == `FPGA_HF_ISO14443A_TAGSIM_LISTEN) - sendbit = after_hysteresis; - else if(mod_type == `FPGA_HF_ISO14443A_TAGSIM_MOD) - /* if(fdt_counter > 11'd772) sendbit = mod_sig_coil; // huh? - else */ - sendbit = fdt_indicator; - else if (mod_type == `FPGA_HF_ISO14443A_READER_LISTEN) - sendbit = curbit; - else - sendbit = 1'b0; - end - - - if(mod_type == `FPGA_HF_ISO14443A_SNIFFER) - // send sampled reader and tag data: - bit_to_arm = to_arm[7]; - else if (mod_type == `FPGA_HF_ISO14443A_TAGSIM_MOD && fdt_elapsed && temp_buffer_reset) - // send timing information: - bit_to_arm = to_arm[7]; - else - // send data or fdt_indicator - bit_to_arm = sendbit; -end - - - - -assign ssp_din = bit_to_arm; - -// Subcarrier (adc_clk/16, for FPGA_HF_ISO14443A_TAGSIM_MOD only). -wire sub_carrier; -assign sub_carrier = ~sub_carrier_cnt[3]; - -// in FPGA_HF_ISO14443A_READER_MOD: drop carrier for mod_sig_coil==1 (pause); in FPGA_HF_ISO14443A_READER_LISTEN: carrier always on; in other modes: carrier always off -assign pwr_hi = (ck_1356meg & (((mod_type == `FPGA_HF_ISO14443A_READER_MOD) & ~mod_sig_coil) || (mod_type == `FPGA_HF_ISO14443A_READER_LISTEN))); - - -// Enable HF antenna drivers: -assign pwr_oe1 = 1'b0; -assign pwr_oe3 = 1'b0; - -// FPGA_HF_ISO14443A_TAGSIM_MOD: short circuit antenna with different resistances (modulated by sub_carrier modulated by mod_sig_coil) -// for pwr_oe4 = 1 (tristate): antenna load = 10k || 33 = 32,9 Ohms -// for pwr_oe4 = 0 (active): antenna load = 10k || 33 || 33 = 16,5 Ohms -assign pwr_oe4 = mod_sig_coil & sub_carrier & (mod_type == `FPGA_HF_ISO14443A_TAGSIM_MOD); - -// This is all LF, so doesn't matter. -assign pwr_oe2 = 1'b0; -assign pwr_lo = 1'b0; - - -assign dbg = negedge_cnt[3]; - -endmodule diff --git a/fpga-xc3s100e/hi_reader.v b/fpga-xc3s100e/hi_reader.v deleted file mode 100644 index c5ffa7b85..000000000 --- a/fpga-xc3s100e/hi_reader.v +++ /dev/null @@ -1,335 +0,0 @@ -//----------------------------------------------------------------------------- -// -// Jonathan Westhues, April 2006 -//----------------------------------------------------------------------------- - -module hi_reader( - ck_1356meg, - pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4, - adc_d, adc_clk, - ssp_frame, ssp_din, ssp_dout, ssp_clk, - dbg, - subcarrier_frequency, minor_mode -); - input ck_1356meg; - output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; - input [7:0] adc_d; - output adc_clk; - input ssp_dout; - output ssp_frame, ssp_din, ssp_clk; - output dbg; - input [1:0] subcarrier_frequency; - input [3:0] minor_mode; - -assign adc_clk = ck_1356meg; // sample frequency is 13,56 MHz - -// When we're a reader, we just need to do the BPSK demod; but when we're an -// eavesdropper, we also need to pick out the commands sent by the reader, -// using AM. Do this the same way that we do it for the simulated tag. -reg after_hysteresis, after_hysteresis_prev, after_hysteresis_prev_prev; -reg [11:0] has_been_low_for; -always @(negedge adc_clk) -begin - if (& adc_d[7:0]) after_hysteresis <= 1'b1; - else if (~(| adc_d[7:0])) after_hysteresis <= 1'b0; - - if (after_hysteresis) - begin - has_been_low_for <= 12'd0; - end - else - begin - if (has_been_low_for == 12'd4095) - begin - has_been_low_for <= 12'd0; - after_hysteresis <= 1'b1; - end - else - has_been_low_for <= has_been_low_for + 1; - end -end - - -// Let us report a correlation every 64 samples. I.e. -// one Q/I pair after 4 subcarrier cycles for the 848kHz subcarrier, -// one Q/I pair after 2 subcarrier cycles for the 424kHz subcarriers, -// one Q/I pair for each subcarrier cyle for the 212kHz subcarrier. -// We need a 6-bit counter for the timing. -reg [5:0] corr_i_cnt; -always @(negedge adc_clk) -begin - corr_i_cnt <= corr_i_cnt + 1; -end - - -// A couple of registers in which to accumulate the correlations. From the 64 samples -// we would add at most 32 times the difference between unmodulated and modulated signal. It should -// be safe to assume that a tag will not be able to modulate the carrier signal by more than 25%. -// 32 * 255 * 0,25 = 2040, which can be held in 11 bits. Add 1 bit for sign. -// Temporary we might need more bits. For the 212kHz subcarrier we could possible add 32 times the -// maximum signal value before a first subtraction would occur. 32 * 255 = 8160 can be held in 13 bits. -// Add one bit for sign -> need 14 bit registers but final result will fit into 12 bits. -reg signed [13:0] corr_i_accum; -reg signed [13:0] corr_q_accum; -// we will report maximum 8 significant bits -reg signed [7:0] corr_i_out; -reg signed [7:0] corr_q_out; - - -// the amplitude of the subcarrier is sqrt(ci^2 + cq^2). -// approximate by amplitude = max(|ci|,|cq|) + 1/2*min(|ci|,|cq|) -reg [13:0] corr_amplitude, abs_ci, abs_cq, max_ci_cq; -reg [12:0] min_ci_cq_2; // min_ci_cq / 2 - -always @(*) -begin - if (corr_i_accum[13] == 1'b0) - abs_ci <= corr_i_accum; - else - abs_ci <= -corr_i_accum; - - if (corr_q_accum[13] == 1'b0) - abs_cq <= corr_q_accum; - else - abs_cq <= -corr_q_accum; - - if (abs_ci > abs_cq) - begin - max_ci_cq <= abs_ci; - min_ci_cq_2 <= abs_cq / 2; - end - else - begin - max_ci_cq <= abs_cq; - min_ci_cq_2 <= abs_ci / 2; - end - - corr_amplitude <= max_ci_cq + min_ci_cq_2; - -end - - -// The subcarrier reference signals -reg subcarrier_I; -reg subcarrier_Q; - -always @(*) -begin - if (subcarrier_frequency == `FPGA_HF_READER_SUBCARRIER_848_KHZ) - begin - subcarrier_I = ~corr_i_cnt[3]; - subcarrier_Q = ~(corr_i_cnt[3] ^ corr_i_cnt[2]); - end - else if (subcarrier_frequency == `FPGA_HF_READER_SUBCARRIER_212_KHZ) - begin - subcarrier_I = ~corr_i_cnt[5]; - subcarrier_Q = ~(corr_i_cnt[5] ^ corr_i_cnt[4]); - end - else - begin // 424 kHz - subcarrier_I = ~corr_i_cnt[4]; - subcarrier_Q = ~(corr_i_cnt[4] ^ corr_i_cnt[3]); - end -end - - -// ADC data appears on the rising edge, so sample it on the falling edge -always @(negedge adc_clk) -begin - // These are the correlators: we correlate against in-phase and quadrature - // versions of our reference signal, and keep the (signed) results or the - // resulting amplitude to send out later over the SSP. - if (corr_i_cnt == 6'd0) - begin - if (minor_mode == `FPGA_HF_READER_MODE_SNIFF_AMPLITUDE) - begin - // send amplitude plus 2 bits reader signal - corr_i_out <= corr_amplitude[13:6]; - corr_q_out <= {corr_amplitude[5:0], after_hysteresis_prev_prev, after_hysteresis_prev}; - end - else if (minor_mode == `FPGA_HF_READER_MODE_SNIFF_IQ) - begin - - // Send 7 most significant bits of in phase tag signal (signed), plus 1 bit reader signal - if (corr_i_accum[13:11] == 3'b000 || corr_i_accum[13:11] == 3'b111) - corr_i_out <= {corr_i_accum[11:5], after_hysteresis_prev_prev}; - else // truncate to maximum value - if (corr_i_accum[13] == 1'b0) - corr_i_out <= {7'b0111111, after_hysteresis_prev_prev}; - else - corr_i_out <= {7'b1000000, after_hysteresis_prev_prev}; - - // Send 7 most significant bits of quadrature phase tag signal (signed), plus 1 bit reader signal - if (corr_q_accum[13:11] == 3'b000 || corr_q_accum[13:11] == 3'b111) - corr_q_out <= {corr_q_accum[11:5], after_hysteresis_prev}; - else // truncate to maximum value - if (corr_q_accum[13] == 1'b0) - corr_q_out <= {7'b0111111, after_hysteresis_prev}; - else - corr_q_out <= {7'b1000000, after_hysteresis_prev}; - end - else if (minor_mode == `FPGA_HF_READER_MODE_RECEIVE_AMPLITUDE) - begin - // send amplitude - corr_i_out <= {2'b00, corr_amplitude[13:8]}; - corr_q_out <= corr_amplitude[7:0]; - end - else if (minor_mode == `FPGA_HF_READER_MODE_RECEIVE_IQ) - begin - - // Send 8 bits of in phase tag signal - if (corr_i_accum[13:11] == 3'b000 || corr_i_accum[13:11] == 3'b111) - corr_i_out <= corr_i_accum[11:4]; - else // truncate to maximum value - if (corr_i_accum[13] == 1'b0) - corr_i_out <= 8'b01111111; - else - corr_i_out <= 8'b10000000; - - // Send 8 bits of quadrature phase tag signal - if (corr_q_accum[13:11] == 3'b000 || corr_q_accum[13:11] == 3'b111) - corr_q_out <= corr_q_accum[11:4]; - else // truncate to maximum value - if (corr_q_accum[13] == 1'b0) - corr_q_out <= 8'b01111111; - else - corr_q_out <= 8'b10000000; - end - - // for each Q/I pair report two reader signal samples when sniffing. Store the 1st. - after_hysteresis_prev_prev <= after_hysteresis; - - // Initialize next correlation. - // Both I and Q reference signals are high when corr_i_nct == 0. Therefore need to accumulate. - corr_i_accum <= $signed({1'b0, adc_d}); - corr_q_accum <= $signed({1'b0, adc_d}); - end - else - begin - if (subcarrier_I) - corr_i_accum <= corr_i_accum + $signed({1'b0, adc_d}); - else - corr_i_accum <= corr_i_accum - $signed({1'b0, adc_d}); - - if (subcarrier_Q) - corr_q_accum <= corr_q_accum + $signed({1'b0, adc_d}); - else - corr_q_accum <= corr_q_accum - $signed({1'b0, adc_d}); - end - - // for each Q/I pair report two reader signal samples when sniffing. Store the 2nd. - if (corr_i_cnt == 6'd32) - after_hysteresis_prev <= after_hysteresis; - - // Then the result from last time is serialized and send out to the ARM. - // We get one report each cycle, and each report is 16 bits, so the - // ssp_clk should be the adc_clk divided by 64/16 = 4. - // ssp_clk frequency = 13,56MHz / 4 = 3.39MHz - - if (corr_i_cnt[1:0] == 2'b00) - begin - // Don't shift if we just loaded new data, obviously. - if (corr_i_cnt != 6'd0) - begin - corr_i_out[7:0] <= {corr_i_out[6:0], corr_q_out[7]}; - corr_q_out[7:1] <= corr_q_out[6:0]; - end - end - -end - - -// ssp clock and frame signal for communication to and from ARM -// _____ _____ _____ _ -// ssp_clk | |_____| |_____| |_____| -// _____ -// ssp_frame ___| |____________________________ -// ___________ ___________ ___________ _ -// ssp_d_in X___________X___________X___________X_ -// -// corr_i_cnt 0 1 2 3 4 5 6 7 8 9 10 11 12 ... -// - -reg ssp_clk; -reg ssp_frame; - -always @(negedge adc_clk) -begin - if (corr_i_cnt[1:0] == 2'b00) - ssp_clk <= 1'b1; - - if (corr_i_cnt[1:0] == 2'b10) - ssp_clk <= 1'b0; - - // set ssp_frame signal for corr_i_cnt = 1..3 - // (send one frame with 16 Bits) - if (corr_i_cnt == 6'd1) - ssp_frame <= 1'b1; - - if (corr_i_cnt == 6'd3) - ssp_frame <= 1'b0; -end - - -assign ssp_din = corr_i_out[7]; - - -// a jamming signal -reg jam_signal; -reg [3:0] jam_counter; - -always @(negedge adc_clk) -begin - if (corr_i_cnt == 6'd0) - begin - jam_counter <= jam_counter + 1; - jam_signal <= jam_counter[1] ^ jam_counter[3]; - end -end - -// Antenna drivers -reg pwr_hi, pwr_oe4; - -always @(*) -begin - if (minor_mode == `FPGA_HF_READER_MODE_SEND_SHALLOW_MOD) - begin - pwr_hi = ck_1356meg; - pwr_oe4 = ssp_dout; - end - else if (minor_mode == `FPGA_HF_READER_MODE_SEND_FULL_MOD) - begin - pwr_hi = ck_1356meg & ~ssp_dout; - pwr_oe4 = 1'b0; - end - else if (minor_mode == `FPGA_HF_READER_MODE_SEND_JAM) - begin - pwr_hi = ck_1356meg & jam_signal; - pwr_oe4 = 1'b0; - end - else if (minor_mode == `FPGA_HF_READER_MODE_SNIFF_IQ - || minor_mode == `FPGA_HF_READER_MODE_SNIFF_AMPLITUDE - || minor_mode == `FPGA_HF_READER_MODE_SNIFF_PHASE) - begin // all off - pwr_hi = 1'b0; - pwr_oe4 = 1'b0; - end - else // receiving from tag - begin - pwr_hi = ck_1356meg; - pwr_oe4 = 1'b0; - end -end - -// always on -assign pwr_oe1 = 1'b0; -assign pwr_oe3 = 1'b0; - -// Unused. -assign pwr_lo = 1'b0; -assign pwr_oe2 = 1'b0; - -// Debug Output -assign dbg = corr_i_cnt[3]; - -endmodule diff --git a/fpga-xc3s100e/hi_simulate.v b/fpga-xc3s100e/hi_simulate.v deleted file mode 100644 index cf951279a..000000000 --- a/fpga-xc3s100e/hi_simulate.v +++ /dev/null @@ -1,152 +0,0 @@ -//----------------------------------------------------------------------------- -// Pretend to be an ISO 14443 tag. We will do this by alternately short- -// circuiting and open-circuiting the antenna coil, with the tri-state -// pins. -// -// We communicate over the SSP, as a bitstream (i.e., might as well be -// unframed, though we still generate the word sync signal). The output -// (ARM -> FPGA) tells us whether to modulate or not. The input (FPGA -// -> ARM) is us using the A/D as a fancy comparator; this is with -// (software-added) hysteresis, to undo the high-pass filter. -// -// At this point only Type A is implemented. This means that we are using a -// bit rate of 106 kbit/s, or fc/128. Oversample by 4, which ought to make -// things practical for the ARM (fc/32, 423.8 kbits/s, ~50 kbytes/s) -// -// Jonathan Westhues, October 2006 -//----------------------------------------------------------------------------- - -//For ISE 10.1 PROJ,IDE cannot apply definition to all files -`include "define.v" - - -module hi_simulate( - ck_1356meg, - pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4, - adc_d, adc_clk, - ssp_frame, ssp_din, ssp_dout, ssp_clk, - dbg, - mod_type -); - input ck_1356meg; - output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; - input [7:0] adc_d; - output adc_clk; - input ssp_dout; - output ssp_frame, ssp_din, ssp_clk; - output dbg; - input [3:0] mod_type; - -// Power amp goes between LOW and tri-state, so pwr_hi (and pwr_lo) can -// always be low. -assign pwr_hi = 1'b0; // HF antenna connected to GND -assign pwr_lo = 1'b0; // LF antenna connected to GND - -// This one is all LF, so doesn't matter -assign pwr_oe2 = 1'b0; - -assign adc_clk = ck_1356meg; -assign dbg = ssp_frame; - -// The comparator with hysteresis on the output from the peak detector. -reg after_hysteresis; -reg [11:0] has_been_low_for; - -always @(negedge adc_clk) -begin - if (& adc_d[7:5]) after_hysteresis <= 1'b1; // if (adc_d >= 224) - else if (~(| adc_d[7:5])) after_hysteresis <= 1'b0; // if (adc_d <= 31) - - if (adc_d >= 224) - begin - has_been_low_for <= 12'd0; - end - else - begin - if (has_been_low_for == 12'd4095) - begin - has_been_low_for <= 12'd0; - after_hysteresis <= 1'b1; - end - else - begin - has_been_low_for <= has_been_low_for + 1; - end - end -end - - -// Divide 13.56 MHz to produce various frequencies for SSP_CLK -// and modulation. -reg [8:0] ssp_clk_divider; - -always @(negedge adc_clk) - ssp_clk_divider <= (ssp_clk_divider + 1); - -reg ssp_clk; - -always @(negedge adc_clk) -begin - if (mod_type == `FPGA_HF_SIMULATOR_MODULATE_424K_8BIT) - // Get bit every at 53KHz (every 8th carrier bit of 424kHz) - ssp_clk <= ~ssp_clk_divider[7]; - else if (mod_type == `FPGA_HF_SIMULATOR_MODULATE_212K) - // Get next bit at 212kHz - ssp_clk <= ~ssp_clk_divider[5]; - else - // Get next bit at 424kHz - ssp_clk <= ~ssp_clk_divider[4]; -end - - -// Produce the byte framing signal; the phase of this signal -// is arbitrary, because it's just a bit stream in this module. -reg ssp_frame; -always @(negedge adc_clk) -begin - if (mod_type == `FPGA_HF_SIMULATOR_MODULATE_212K) - begin - if (ssp_clk_divider[8:5] == 4'd1) - ssp_frame <= 1'b1; - if (ssp_clk_divider[8:5] == 4'd5) - ssp_frame <= 1'b0; - end - else - begin - if (ssp_clk_divider[7:4] == 4'd1) - ssp_frame <= 1'b1; - if (ssp_clk_divider[7:4] == 4'd5) - ssp_frame <= 1'b0; - end -end - - -// Synchronize up the after-hysteresis signal, to produce DIN. -reg ssp_din; -always @(posedge ssp_clk) - ssp_din = after_hysteresis; - -// Modulating carrier frequency is fc/64 (212kHz) to fc/16 (848kHz). Reuse ssp_clk divider for that. -reg modulating_carrier; -always @(*) - if(mod_type == `FPGA_HF_SIMULATOR_NO_MODULATION) - modulating_carrier <= 1'b0; // no modulation - else if(mod_type == `FPGA_HF_SIMULATOR_MODULATE_BPSK) - modulating_carrier <= ssp_dout ^ ssp_clk_divider[3]; // XOR means BPSK - else if(mod_type == `FPGA_HF_SIMULATOR_MODULATE_212K) - modulating_carrier <= ssp_dout & ssp_clk_divider[5]; // switch 212kHz subcarrier on/off - else if(mod_type == `FPGA_HF_SIMULATOR_MODULATE_424K || mod_type == `FPGA_HF_SIMULATOR_MODULATE_424K_8BIT) - modulating_carrier <= ssp_dout & ssp_clk_divider[4]; // switch 424kHz modulation on/off - else - modulating_carrier <= 1'b0; // yet unused - - - -// Load modulation. Toggle only one of these, since we are already producing much deeper -// modulation than a real tag would. -assign pwr_oe1 = 1'b0; // 33 Ohms Load -assign pwr_oe4 = modulating_carrier; // 33 Ohms Load -// This one is always on, so that we can watch the carrier. -assign pwr_oe3 = 1'b0; // 10k Load - -endmodule diff --git a/fpga-xc3s100e/hi_sniffer.v b/fpga-xc3s100e/hi_sniffer.v deleted file mode 100644 index c2dc844a7..000000000 --- a/fpga-xc3s100e/hi_sniffer.v +++ /dev/null @@ -1,50 +0,0 @@ -module hi_sniffer( - ck_1356meg, - pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4, - adc_d, adc_clk, - ssp_frame, ssp_din, ssp_clk -); - input ck_1356meg; - output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; - input [7:0] adc_d; - output adc_clk; - output ssp_frame, ssp_din, ssp_clk; - -// We are only snooping, all off. -assign pwr_hi = 1'b0; -assign pwr_lo = 1'b0; -assign pwr_oe1 = 1'b0; -assign pwr_oe2 = 1'b0; -assign pwr_oe3 = 1'b0; -assign pwr_oe4 = 1'b0; - -reg ssp_frame; -reg [7:0] adc_d_out = 8'd0; -reg [2:0] ssp_cnt = 3'd0; - -assign adc_clk = ck_1356meg; -assign ssp_clk = ~ck_1356meg; - -always @(posedge ssp_clk) -begin - if(ssp_cnt[2:0] == 3'd7) - ssp_cnt[2:0] <= 3'd0; - else - ssp_cnt <= ssp_cnt + 1; - - if(ssp_cnt[2:0] == 3'b000) // set frame length - begin - adc_d_out[7:0] <= adc_d; - ssp_frame <= 1'b1; - end - else - begin - adc_d_out[7:0] <= {1'b0, adc_d_out[7:1]}; - ssp_frame <= 1'b0; - end - -end - -assign ssp_din = adc_d_out[0]; - -endmodule diff --git a/fpga-xc3s100e/iseproj/fpga_hf/fpga_hf.ise b/fpga-xc3s100e/iseproj/fpga_hf/fpga_hf.ise deleted file mode 100644 index 40e5eeffdff1dad9e67d8e59ede83f95cc6f6c8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257463 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 diff --git a/fpga-xc3s100e/iseproj/fpga_hf/fpga_hf.tcl b/fpga-xc3s100e/iseproj/fpga_hf/fpga_hf.tcl deleted file mode 100644 index 114f0df18..000000000 --- a/fpga-xc3s100e/iseproj/fpga_hf/fpga_hf.tcl +++ /dev/null @@ -1,479 +0,0 @@ -# -# Project automation script for fpga_hf -# -# Created for ISE version 10.1 -# -# This file contains several Tcl procedures (procs) that you can use to automate -# your project by running from xtclsh or the Project Navigator Tcl console. -# If you load this file (using the Tcl command: source fpga_hf.tcl, then you can -# run any of the procs included here. -# You may also edit any of these procs to customize them. See comments in each -# proc for more instructions. -# -# This file contains the following procedures: -# -# Top Level procs (meant to be called directly by the user): -# run_process: you can use this top-level procedure to run any processes -# that you choose to by adding and removing comments, or by -# adding new entries. -# rebuild_project: you can alternatively use this top-level procedure -# to recreate your entire project, and the run selected processes. -# -# Lower Level (helper) procs (called under in various cases by the top level procs): -# show_help: print some basic information describing how this script works -# add_source_files: adds the listed source files to your project. -# set_project_props: sets the project properties that were in effect when this -# script was generated. -# create_libraries: creates and adds file to VHDL libraries that were defined when -# this script was generated. -# create_partitions: adds any partitions that were defined when this script was generated. -# set_process_props: set the process properties as they were set for your project -# when this script was generated. -# - -set myProject "fpga_hf.ise" -set myScript "fpga_hf.tcl" - -# -# Main (top-level) routines -# - -# -# run_process -# This procedure is used to run processes on an existing project. You may comment or -# uncomment lines to control which processes are run. This routine is set up to run -# the Implement Design and Generate Programming File processes by default. This proc -# also sets process properties as specified in the "set_process_props" proc. Only -# those properties which have values different from their current settings in the project -# file will be modified in the project. -# -proc run_process {} { - - global myScript - global myProject - - ## put out a 'heartbeat' - so we know something's happening. - puts "\n$myScript: running ($myProject)...\n" - - if { ! [ open_project ] } { - return false - } - - set_process_props - # - # Remove the comment characters (#'s) to enable the following commands - # process run "Synthesize" - # process run "Translate" - # process run "Map" - # process run "Place & Route" - # - puts "Running 'Implement Design'" - if { ! [ process run "Implement Design" ] } { - puts "$myScript: Implementation run failed, check run output for details." - project close - return - } - puts "Running 'Generate Programming File'" - if { ! [ process run "Generate Programming File" ] } { - puts "$myScript: Generate Programming File run failed, check run output for details." - project close - return - } - - puts "Run completed." - project close - -} - -# -# rebuild_project -# -# This procedure renames the project file (if it exists) and recreates the project. -# It then sets project properties and adds project sources as specified by the -# set_project_props and add_source_files support procs. It recreates VHDL libraries -# and partitions as they existed at the time this script was generated. -# -# It then calls run_process to set process properties and run selected processes. -# -proc rebuild_project {} { - - global myScript - global myProject - - ## put out a 'heartbeat' - so we know something's happening. - puts "\n$myScript: rebuilding ($myProject)...\n" - - if { [ file exists $myProject ] } { - puts "$myScript: Removing existing project file." - file delete $myProject - } - - puts "$myScript: Rebuilding project $myProject" - project new $myProject - set_project_props - add_source_files - create_libraries - create_partitions - puts "$myScript: project rebuild completed." - - run_process - -} - -# -# Support Routines -# - -# -# show_help: print information to help users understand the options available when -# running this script. -# -proc show_help {} { - - global myScript - - puts "" - puts "usage: xtclsh $myScript " - puts " or you can run xtclsh and then enter 'source $myScript'." - puts "" - puts "options:" - puts " run_process - set properties and run processes." - puts " rebuild_project - rebuild the project from scratch and run processes." - puts " set_project_props - set project properties (device, speed, etc.)" - puts " add_source_files - add source files" - puts " create_libraries - create vhdl libraries" - puts " create_partitions - create partitions" - puts " set_process_props - set process property values" - puts " show_help - print this message" - puts "" -} - -proc open_project {} { - - global myScript - global myProject - - if { ! [ file exists $myProject ] } { - ## project file isn't there, rebuild it. - puts "Project $myProject not found. Use ${myProject}_rebuild to recreate it." - return false - } - - project open $myProject - - return true - -} -# -# set_project_props -# -# This procedure sets the project properties as they were set in the project -# at the time this script was generated. -# -proc set_project_props {} { - - global myScript - - if { ! [ open_project ] } { - return false - } - - puts "$myScript: Setting project properties..." - - project set family "Spartan3E" - project set device "xc3s100e" - project set package "vq100" - project set speed "-4" - project set top_level_module_type "HDL" - project set synthesis_tool "XST (VHDL/Verilog)" - project set simulator "ISE Simulator (VHDL/Verilog)" - project set "Preferred Language" "Verilog" - project set "Enable Message Filtering" "false" - project set "Display Incremental Messages" "false" - -} - - -# -# add_source_files -# -# This procedure add the source files that were known to the project at the -# time this script was generated. -# -proc add_source_files {} { - - global myScript - - if { ! [ open_project ] } { - return false - } - - puts "$myScript: Adding sources to project..." - - xfile add "../../clk_divider.v" - xfile add "../../define.v" - xfile add "../../fpga.ucf" - xfile add "../../fpga_allinone.v" - xfile add "../../fpga_hfmod.v" - xfile add "../../fpga_lfmod.v" - xfile add "../../hi_flite.v" - xfile add "../../hi_get_trace.v" - xfile add "../../hi_iso14443a.v" - xfile add "../../hi_reader.v" - xfile add "../../hi_simulate.v" - xfile add "../../hi_sniffer.v" - xfile add "../../lf_edge_detect.v" - xfile add "../../lo_adc.v" - xfile add "../../lo_edge_detect.v" - xfile add "../../lo_passthru.v" - xfile add "../../lo_read.v" - xfile add "../../lp20khz_1MSa_iir_filter.v" - xfile add "../../mux2_onein.v" - xfile add "../../mux2_oneout.v" - xfile add "../../util.v" - - # Set the Top Module as well... - project set top "fpga_hf" - - puts "$myScript: project sources reloaded." - -} ; # end add_source_files - -# -# create_libraries -# -# This procedure defines VHDL libraries and associates files with those libraries. -# It is expected to be used when recreating the project. Any libraries defined -# when this script was generated are recreated by this procedure. -# -proc create_libraries {} { - - global myScript - - if { ! [ open_project ] } { - return false - } - - puts "$myScript: Creating libraries..." - - - # must close the project or library definitions aren't saved. - project close - -} ; # end create_libraries - -# -# create_partitions -# -# This procedure creates partitions on instances in your project. -# It is expected to be used when recreating the project. Any partitions -# defined when this script was generated are recreated by this procedure. -# -proc create_partitions {} { - - global myScript - - if { ! [ open_project ] } { - return false - } - - puts "$myScript: Creating Partitions..." - - - # must close the project or partition definitions aren't saved. - project close - -} ; # end create_partitions - -# -# set_process_props -# -# This procedure sets properties as requested during script generation (either -# all of the properties, or only those modified from their defaults). -# -proc set_process_props {} { - - global myScript - - if { ! [ open_project ] } { - return false - } - - puts "$myScript: setting process properties..." - - project set "Compiled Library Directory" "\$XILINX//" - project set "Use SmartGuide" "false" - project set "SmartGuide Filename" "fpga_hf_guide.ncd" - project set "Multiplier Style" "Auto" -process "Synthesize - XST" - project set "Configuration Rate" "Default (1)" -process "Generate Programming File" - project set "Map to Input Functions" "4" -process "Map" - project set "Number of Clock Buffers" "24" -process "Synthesize - XST" - project set "Max Fanout" "500" -process "Synthesize - XST" - project set "Case Implementation Style" "None" -process "Synthesize - XST" - project set "Decoder Extraction" "true" -process "Synthesize - XST" - project set "Priority Encoder Extraction" "Yes" -process "Synthesize - XST" - project set "Mux Extraction" "Yes" -process "Synthesize - XST" - project set "RAM Extraction" "true" -process "Synthesize - XST" - project set "ROM Extraction" "true" -process "Synthesize - XST" - project set "FSM Encoding Algorithm" "Auto" -process "Synthesize - XST" - project set "Logical Shifter Extraction" "true" -process "Synthesize - XST" - project set "Optimization Goal" "Speed" -process "Synthesize - XST" - project set "Optimization Effort" "Normal" -process "Synthesize - XST" - project set "Resource Sharing" "true" -process "Synthesize - XST" - project set "Shift Register Extraction" "true" -process "Synthesize - XST" - project set "XOR Collapsing" "true" -process "Synthesize - XST" - project set "Other Bitgen Command Line Options" "" -process "Generate Programming File" - project set "Show All Models" "false" -process "Generate IBIS Model" - project set "Target UCF File Name" "" -process "Back-annotate Pin Locations" - project set "Ignore User Timing Constraints" "false" -process "Map" - project set "Use RLOC Constraints" "true" -process "Map" - project set "Other Map Command Line Options" "" -process "Map" - project set "Use LOC Constraints" "true" -process "Translate" - project set "Other Ngdbuild Command Line Options" "" -process "Translate" - project set "Ignore User Timing Constraints" "false" -process "Place & Route" - project set "Other Place & Route Command Line Options" "" -process "Place & Route" - project set "UserID Code (8 Digit Hexadecimal)" "0xFFFFFFFF" -process "Generate Programming File" - project set "Reset DCM if SHUTDOWN & AGHIGH performed" "false" -process "Generate Programming File" - project set "Configuration Pin Done" "Pull Up" -process "Generate Programming File" - project set "Create ASCII Configuration File" "false" -process "Generate Programming File" - project set "Create Binary Configuration File" "false" -process "Generate Programming File" - project set "Create Bit File" "true" -process "Generate Programming File" - project set "Enable BitStream Compression" "false" -process "Generate Programming File" - project set "Run Design Rules Checker (DRC)" "true" -process "Generate Programming File" - project set "Enable Cyclic Redundancy Checking (CRC)" "true" -process "Generate Programming File" - project set "Create IEEE 1532 Configuration File" "false" -process "Generate Programming File" - project set "Configuration Pin Program" "Pull Up" -process "Generate Programming File" - project set "JTAG Pin TCK" "Pull Up" -process "Generate Programming File" - project set "JTAG Pin TDI" "Pull Up" -process "Generate Programming File" - project set "JTAG Pin TDO" "Pull Up" -process "Generate Programming File" - project set "JTAG Pin TMS" "Pull Up" -process "Generate Programming File" - project set "Unused IOB Pins" "Pull Down" -process "Generate Programming File" - project set "Security" "Enable Readback and Reconfiguration" -process "Generate Programming File" - project set "FPGA Start-Up Clock" "CCLK" -process "Generate Programming File" - project set "Done (Output Events)" "Default (4)" -process "Generate Programming File" - project set "Drive Done Pin High" "false" -process "Generate Programming File" - project set "Enable Outputs (Output Events)" "Default (5)" -process "Generate Programming File" - project set "Release DLL (Output Events)" "Default (NoWait)" -process "Generate Programming File" - project set "Release Write Enable (Output Events)" "Default (6)" -process "Generate Programming File" - project set "Enable Internal Done Pipe" "false" -process "Generate Programming File" - project set "Allow Logic Optimization Across Hierarchy" "false" -process "Map" - project set "Optimization Strategy (Cover Mode)" "Area" -process "Map" - project set "Disable Register Ordering" "false" -process "Map" - project set "Pack I/O Registers/Latches into IOBs" "Off" -process "Map" - project set "Replicate Logic to Allow Logic Level Reduction" "true" -process "Map" - project set "Generate Detailed MAP Report" "false" -process "Map" - project set "Map Slice Logic into Unused Block RAMs" "false" -process "Map" - project set "Perform Timing-Driven Packing and Placement" "false" -process "Map" - project set "Trim Unconnected Signals" "true" -process "Map" - project set "Create I/O Pads from Ports" "false" -process "Translate" - project set "Macro Search Path" "" -process "Translate" - project set "Netlist Translation Type" "Timestamp" -process "Translate" - project set "User Rules File for Netlister Launcher" "" -process "Translate" - project set "Allow Unexpanded Blocks" "false" -process "Translate" - project set "Allow Unmatched LOC Constraints" "false" -process "Translate" - project set "Starting Placer Cost Table (1-100)" "1" -process "Place & Route" - project set "Placer Effort Level (Overrides Overall Level)" "None" -process "Place & Route" - project set "Router Effort Level (Overrides Overall Level)" "None" -process "Place & Route" - project set "Place And Route Mode" "Normal Place and Route" -process "Place & Route" - project set "Use Bonded I/Os" "false" -process "Place & Route" - project set "Add I/O Buffers" "true" -process "Synthesize - XST" - project set "Global Optimization Goal" "AllClockNets" -process "Synthesize - XST" - project set "Keep Hierarchy" "No" -process "Synthesize - XST" - project set "Register Balancing" "No" -process "Synthesize - XST" - project set "Register Duplication" "true" -process "Synthesize - XST" - project set "Asynchronous To Synchronous" "false" -process "Synthesize - XST" - project set "Automatic BRAM Packing" "false" -process "Synthesize - XST" - project set "BRAM Utilization Ratio" "100" -process "Synthesize - XST" - project set "Bus Delimiter" "<>" -process "Synthesize - XST" - project set "Case" "Maintain" -process "Synthesize - XST" - project set "Cores Search Directories" "" -process "Synthesize - XST" - project set "Cross Clock Analysis" "false" -process "Synthesize - XST" - project set "Equivalent Register Removal" "true" -process "Synthesize - XST" - project set "FSM Style" "LUT" -process "Synthesize - XST" - project set "Generate RTL Schematic" "Yes" -process "Synthesize - XST" - project set "Generics, Parameters" "" -process "Synthesize - XST" - project set "Hierarchy Separator" "/" -process "Synthesize - XST" - project set "HDL INI File" "" -process "Synthesize - XST" - project set "Library Search Order" "" -process "Synthesize - XST" - project set "Netlist Hierarchy" "As Optimized" -process "Synthesize - XST" - project set "Optimize Instantiated Primitives" "false" -process "Synthesize - XST" - project set "Pack I/O Registers into IOBs" "Auto" -process "Synthesize - XST" - project set "Read Cores" "true" -process "Synthesize - XST" - project set "Slice Packing" "true" -process "Synthesize - XST" - project set "Slice Utilization Ratio" "100" -process "Synthesize - XST" - project set "Use Clock Enable" "Yes" -process "Synthesize - XST" - project set "Use Synchronous Reset" "Yes" -process "Synthesize - XST" - project set "Use Synchronous Set" "Yes" -process "Synthesize - XST" - project set "Use Synthesis Constraints File" "true" -process "Synthesize - XST" - project set "Custom Compile File List" "" -process "Synthesize - XST" - project set "Verilog Include Directories" "" -process "Synthesize - XST" - project set "Verilog 2001" "true" -process "Synthesize - XST" - project set "Verilog Macros" "" -process "Synthesize - XST" - project set "Work Directory" "./xst" -process "Synthesize - XST" - project set "Write Timing Constraints" "false" -process "Synthesize - XST" - project set "Other XST Command Line Options" "" -process "Synthesize - XST" - project set "Map Effort Level" "Medium" -process "Map" - project set "Combinatorial Logic Optimization" "false" -process "Map" - project set "Starting Placer Cost Table (1-100)" "1" -process "Map" - project set "Power Reduction" "false" -process "Map" - project set "Register Duplication" "false" -process "Map" - project set "Synthesis Constraints File" "" -process "Synthesize - XST" - project set "Mux Style" "Auto" -process "Synthesize - XST" - project set "RAM Style" "Auto" -process "Synthesize - XST" - project set "Timing Mode" "Non Timing Driven" -process "Map" - project set "Generate Asynchronous Delay Report" "false" -process "Place & Route" - project set "Generate Clock Region Report" "false" -process "Place & Route" - project set "Generate Post-Place & Route Simulation Model" "false" -process "Place & Route" - project set "Generate Post-Place & Route Static Timing Report" "true" -process "Place & Route" - project set "Nodelist File (Unix Only)" "" -process "Place & Route" - project set "Number of PAR Iterations (0-100)" "3" -process "Place & Route" - project set "Save Results in Directory (.dir will be appended)" "" -process "Place & Route" - project set "Number of Results to Save (0-100)" "" -process "Place & Route" - project set "Power Reduction" "false" -process "Place & Route" - project set "Timing Mode" "Performance Evaluation" -process "Place & Route" - project set "Enable Debugging of Serial Mode BitStream" "false" -process "Generate Programming File" - project set "CLB Pack Factor Percentage" "100" -process "Map" - project set "Place & Route Effort Level (Overall)" "Standard" -process "Place & Route" - project set "Move First Flip-Flop Stage" "true" -process "Synthesize - XST" - project set "Move Last Flip-Flop Stage" "true" -process "Synthesize - XST" - project set "ROM Style" "Auto" -process "Synthesize - XST" - project set "Safe Implementation" "No" -process "Synthesize - XST" - project set "Extra Effort" "None" -process "Map" - project set "Power Activity File" "" -process "Map" - project set "Power Activity File" "" -process "Place & Route" - project set "Extra Effort (Highest PAR level only)" "None" -process "Place & Route" - - puts "$myScript: project property values set." - -} ; # end set_process_props - -proc main {} { - - if { [llength $::argv] == 0 } { - show_help - return true - } - - foreach option $::argv { - switch $option { - "show_help" { show_help } - "run_process" { run_process } - "rebuild_project" { rebuild_project } - "set_project_props" { set_project_props } - "add_source_files" { add_source_files } - "create_libraries" { create_libraries } - "create_partitions" { create_partitions } - "set_process_props" { set_process_props } - default { puts "unrecognized option: $option"; show_help } - } - } -} - -if { $tcl_interactive } { - show_help -} else { - if {[catch {main} result]} { - puts "$myScript failed: $result." - } -} - diff --git a/fpga-xc3s100e/lf_edge_detect.v b/fpga-xc3s100e/lf_edge_detect.v deleted file mode 100644 index d086f95fc..000000000 --- a/fpga-xc3s100e/lf_edge_detect.v +++ /dev/null @@ -1,77 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (C) 2014 iZsh -// -// This code is licensed to you under the terms of the GNU GPL, version 2 or, -// at your option, any later version. See the LICENSE.txt file for the text of -// the license. -//----------------------------------------------------------------------------- -// input clk is 24MHz -`include "min_max_tracker.v" - -module lf_edge_detect(input clk, input [7:0] adc_d, input [7:0] lf_ed_threshold, - output [7:0] max, output [7:0] min, - output [7:0] high_threshold, output [7:0] highz_threshold, - output [7:0] lowz_threshold, output [7:0] low_threshold, - output edge_state, output edge_toggle); - - min_max_tracker tracker(clk, adc_d, lf_ed_threshold, min, max); - - // auto-tune - assign high_threshold = (max + min) / 2 + (max - min) / 4; - assign highz_threshold = (max + min) / 2 + (max - min) / 8; - assign lowz_threshold = (max + min) / 2 - (max - min) / 8; - assign low_threshold = (max + min) / 2 - (max - min) / 4; - - // heuristic to see if it makes sense to try to detect an edge - wire enabled = - (high_threshold > highz_threshold) - & (highz_threshold > lowz_threshold) - & (lowz_threshold > low_threshold) - & ((high_threshold - highz_threshold) > 8) - & ((highz_threshold - lowz_threshold) > 16) - & ((lowz_threshold - low_threshold) > 8); - - // Toggle the output with hysteresis - // Set to high if the ADC value is above the threshold - // Set to low if the ADC value is below the threshold - reg is_high = 0; - reg is_low = 0; - reg is_zero = 0; - reg trigger_enabled = 1; - reg output_edge = 0; - reg output_state; - - always @(posedge clk) - begin - is_high <= (adc_d >= high_threshold); - is_low <= (adc_d <= low_threshold); - is_zero <= ((adc_d > lowz_threshold) & (adc_d < highz_threshold)); - end - - // all edges detection - always @(posedge clk) - if (enabled) begin - // To enable detecting two consecutive peaks at the same level - // (low or high) we check whether or not we went back near 0 in-between. - // This extra check is necessary to prevent from noise artifacts - // around the threshold values. - if (trigger_enabled & (is_high | is_low)) begin - output_edge <= ~output_edge; - trigger_enabled <= 0; - end else - trigger_enabled <= trigger_enabled | is_zero; - end - - // edge states - always @(posedge clk) - if (enabled) begin - if (is_high) - output_state <= 1'd1; - else if (is_low) - output_state <= 1'd0; - end - - assign edge_state = output_state; - assign edge_toggle = output_edge; - -endmodule diff --git a/fpga-xc3s100e/lo_adc.v b/fpga-xc3s100e/lo_adc.v deleted file mode 100644 index bba090afb..000000000 --- a/fpga-xc3s100e/lo_adc.v +++ /dev/null @@ -1,91 +0,0 @@ -//----------------------------------------------------------------------------- -// The way that we connect things in low-frequency simulation mode. In this -// case just pass everything through to the ARM, which can bit-bang this -// (because it is so slow). -// -// Jonathan Westhues, April 2006 -//----------------------------------------------------------------------------- - -module lo_adc( - pck0, - pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4, - adc_d, adc_clk, - ssp_frame, ssp_din, ssp_dout, ssp_clk, - dbg, divisor, - lf_field -); - input pck0; - output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; - input [7:0] adc_d; - output adc_clk; - input ssp_dout; - output ssp_frame, ssp_din, ssp_clk; - output dbg; - input [7:0] divisor; - input lf_field; - -reg [7:0] to_arm_shiftreg; -reg [7:0] pck_divider; -reg clk_state; - -// Antenna logic, depending on "lf_field" (in arm defined as FPGA_LF_READER_FIELD) -wire tag_modulation = ssp_dout & !lf_field; -wire reader_modulation = !ssp_dout & lf_field & clk_state; - -// always on (High Frequency outputs, unused) -assign pwr_oe1 = 1'b0; -assign pwr_hi = 1'b0; - -// low frequency outputs -assign pwr_lo = reader_modulation; -assign pwr_oe2 = 1'b0; // 33 Ohms -assign pwr_oe3 = tag_modulation; // base antenna load = 33 Ohms -assign pwr_oe4 = 1'b0; // 10k Ohms - -// Debug Output ADC clock -assign dbg = adc_clk; - -// ADC clock out of phase with antenna driver -assign adc_clk = ~clk_state; - -// serialized SSP data is gated by clk_state to suppress unwanted signal -assign ssp_din = to_arm_shiftreg[7] && !clk_state; - -// SSP clock always runs at 24MHz -assign ssp_clk = pck0; - -// SSP frame is gated by clk_state and goes high when pck_divider=8..15 -assign ssp_frame = (pck_divider[7:3] == 5'd1) && !clk_state; - -// divide 24mhz down to 3mhz -always @(posedge pck0) -begin - if (pck_divider == divisor[7:0]) - begin - pck_divider <= 8'd0; - clk_state = !clk_state; - end - else - begin - pck_divider <= pck_divider + 1; - end -end - -// this task also runs at pck0 frequency (24Mhz) and is used to serialize -// the ADC output which is then clocked into the ARM SSP. -always @(posedge pck0) -begin - if ((pck_divider == 8'd7) && !clk_state) - to_arm_shiftreg <= adc_d; - else begin - to_arm_shiftreg[7:1] <= to_arm_shiftreg[6:0]; - // simulation showed a glitch occurring due to the LSB of the shifter - // not being set as we shift bits out - // this ensures the ssp_din remains low after a transfer and suppresses - // the glitch that would occur when the last data shifted out ended in - // a 1 bit and the next data shifted out started with a 0 bit - to_arm_shiftreg[0] <= 1'b0; - end -end - -endmodule diff --git a/fpga-xc3s100e/lo_edge_detect.v b/fpga-xc3s100e/lo_edge_detect.v deleted file mode 100644 index d91bf3845..000000000 --- a/fpga-xc3s100e/lo_edge_detect.v +++ /dev/null @@ -1,70 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (C) 2014 iZsh -// -// This code is licensed to you under the terms of the GNU GPL, version 2 or, -// at your option, any later version. See the LICENSE.txt file for the text of -// the license. -//----------------------------------------------------------------------------- -// -// There are two modes: -// - lf_ed_toggle_mode == 0: the output is set low (resp. high) when a low -// (resp. high) edge/peak is detected, with hysteresis -// - lf_ed_toggle_mode == 1: the output is toggling whenever an edge/peak -// is detected. -// That way you can detect two consecutive edges/peaks at the same level (L/H) -// -// Output: -// - ssp_frame (wired to TIOA1 on the arm) for the edge detection/state -// - ssp_clk: cross_lo - -//For ISE 10.1 PROJ,IDE auto include -//`include "lp20khz_1MSa_iir_filter.v" -//`include "lf_edge_detect.v" - -module lo_edge_detect( - input pck0, input pck_divclk, - output pwr_lo, output pwr_hi, - output pwr_oe1, output pwr_oe2, output pwr_oe3, output pwr_oe4, - input [7:0] adc_d, output adc_clk, - output ssp_frame, input ssp_dout, output ssp_clk, - input cross_lo, - output dbg, - input lf_field, - input lf_ed_toggle_mode, input [7:0] lf_ed_threshold -); - -wire tag_modulation = ssp_dout & !lf_field; -wire reader_modulation = !ssp_dout & lf_field & pck_divclk; - -// No logic, straight through. -assign pwr_oe1 = 1'b0; // not used in LF mode -assign pwr_oe3 = 1'b0; // base antenna load = 33 Ohms -// when modulating, add another 33 Ohms and 10k Ohms in parallel: -assign pwr_oe2 = tag_modulation; -assign pwr_oe4 = tag_modulation; - -assign ssp_clk = cross_lo; -assign pwr_lo = reader_modulation; -assign pwr_hi = 1'b0; - -// filter the ADC values -wire data_rdy; -wire [7:0] adc_filtered; -assign adc_clk = pck0; -lp20khz_1MSa_iir_filter adc_filter(pck0, adc_d, data_rdy, adc_filtered); - -// detect edges -wire [7:0] high_threshold, highz_threshold, lowz_threshold, low_threshold; -wire [7:0] max, min; -wire edge_state, edge_toggle; -lf_edge_detect lf_ed(pck0, adc_filtered, lf_ed_threshold, - max, min, - high_threshold, highz_threshold, lowz_threshold, low_threshold, - edge_state, edge_toggle); - -assign dbg = lf_ed_toggle_mode ? edge_toggle : edge_state; - -assign ssp_frame = lf_ed_toggle_mode ? edge_toggle : edge_state; - -endmodule - diff --git a/fpga-xc3s100e/lo_passthru.v b/fpga-xc3s100e/lo_passthru.v deleted file mode 100644 index f0f2847a0..000000000 --- a/fpga-xc3s100e/lo_passthru.v +++ /dev/null @@ -1,29 +0,0 @@ -//----------------------------------------------------------------------------- -// For reading TI tags, we need to place the FPGA in pass through mode -// and pass everything through to the ARM -//----------------------------------------------------------------------------- -// iZsh , June 2014 - -module lo_passthru( - input pck_divclk, - output pwr_lo, output pwr_hi, - output pwr_oe1, output pwr_oe2, output pwr_oe3, output pwr_oe4, - output adc_clk, - output ssp_din, input ssp_dout, - input cross_lo, - output dbg -); - -// the antenna is modulated when ssp_dout = 1, when 0 the -// antenna drivers stop modulating and go into listen mode -assign pwr_oe3 = 1'b0; -assign pwr_oe1 = ssp_dout; -assign pwr_oe2 = ssp_dout; -assign pwr_oe4 = ssp_dout; -assign pwr_lo = pck_divclk && ssp_dout; -assign pwr_hi = 1'b0; -assign adc_clk = 1'b0; -assign ssp_din = cross_lo; -assign dbg = cross_lo; - -endmodule diff --git a/fpga-xc3s100e/lo_read.v b/fpga-xc3s100e/lo_read.v deleted file mode 100644 index 8ac58721e..000000000 --- a/fpga-xc3s100e/lo_read.v +++ /dev/null @@ -1,74 +0,0 @@ -//----------------------------------------------------------------------------- -// The way that we connect things in low-frequency read mode. In this case -// we are generating the unmodulated low frequency carrier. -// The A/D samples at that same rate and the result is serialized. -// -// Jonathan Westhues, April 2006 -// iZsh , June 2014 -//----------------------------------------------------------------------------- - -module lo_read( - input pck0, input [7:0] pck_cnt, input pck_divclk, - output pwr_lo, output pwr_hi, - output pwr_oe1, output pwr_oe2, output pwr_oe3, output pwr_oe4, - input [7:0] adc_d, output adc_clk, - output ssp_frame, output ssp_din, output ssp_clk, - output dbg, - input lf_field -); - -reg [7:0] to_arm_shiftreg; - -// this task also runs at pck0 frequency (24MHz) and is used to serialize -// the ADC output which is then clocked into the ARM SSP. - -// because pck_divclk always transitions when pck_cnt = 0 we use the -// pck_div counter to sync our other signals off it -// we read the ADC value when pck_cnt=7 and shift it out on counts 8..15 -always @(posedge pck0) -begin - if((pck_cnt == 8'd7) && !pck_divclk) - to_arm_shiftreg <= adc_d; - else begin - to_arm_shiftreg[7:1] <= to_arm_shiftreg[6:0]; - // simulation showed a glitch occurring due to the LSB of the shifter - // not being set as we shift bits out - // this ensures the ssp_din remains low after a transfer and suppresses - // the glitch that would occur when the last data shifted out ended in - // a 1 bit and the next data shifted out started with a 0 bit - to_arm_shiftreg[0] <= 1'b0; - end -end - -// ADC samples on falling edge of adc_clk, data available on the rising edge - -// example of ssp transfer of binary value 1100101 -// start of transfer is indicated by the rise of the ssp_frame signal -// ssp_din changes on the rising edge of the ssp_clk clock and is clocked into -// the ARM by the falling edge of ssp_clk -// _______________________________ -// ssp_frame__| |__ -// _______ ___ ___ -// ssp_din __| |_______| |___| |______ -// _ _ _ _ _ _ _ _ _ _ -// ssp_clk |_| |_| |_| |_| |_| |_| |_| |_| |_| |_ - -// serialized SSP data is gated by ant_lo to suppress unwanted signal -assign ssp_din = to_arm_shiftreg[7] && !pck_divclk; -// SSP clock always runs at 24MHz -assign ssp_clk = pck0; -// SSP frame is gated by ant_lo and goes high when pck_divider=8..15 -assign ssp_frame = (pck_cnt[7:3] == 5'd1) && !pck_divclk; -// unused signals tied low -assign pwr_hi = 1'b0; -assign pwr_oe1 = 1'b0; -assign pwr_oe2 = 1'b0; -assign pwr_oe3 = 1'b0; -assign pwr_oe4 = 1'b0; -// this is the antenna driver signal -assign pwr_lo = lf_field & pck_divclk; -// ADC clock out of phase with antenna driver -assign adc_clk = ~pck_divclk; -// ADC clock also routed to debug pin -assign dbg = adc_clk; -endmodule diff --git a/fpga-xc3s100e/lp20khz_1MSa_iir_filter.v b/fpga-xc3s100e/lp20khz_1MSa_iir_filter.v deleted file mode 100644 index 2dbfd6945..000000000 --- a/fpga-xc3s100e/lp20khz_1MSa_iir_filter.v +++ /dev/null @@ -1,81 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (C) 2014 iZsh -// -// This code is licensed to you under the terms of the GNU GPL, version 2 or, -// at your option, any later version. See the LICENSE.txt file for the text of -// the license. -//----------------------------------------------------------------------------- -// Butterworth low pass IIR filter -// input: 8bit ADC signal, 1MS/s -// output: 8bit value, Fc=20khz -// -// coef: (using http://www-users.cs.york.ac.uk/~fisher/mkfilter/trad.html) -// Recurrence relation: -// y[n] = ( 1 * x[n- 2]) -// + ( 2 * x[n- 1]) -// + ( 1 * x[n- 0]) - -// + ( -0.8371816513 * y[n- 2]) -// + ( 1.8226949252 * y[n- 1]) -// -// therefore: -// a = [1,2,1] -// b = [-0.8371816513, 1.8226949252] -// b is approximated to b = [-0xd6/0x100, 0x1d3 / 0x100] (for optimization) -// gain = 2.761139367e2 -// -// See details about its design see -// https://fail0verflow.com/blog/2014/proxmark3-fpga-iir-filter.html -module lp20khz_1MSa_iir_filter(input clk, input [7:0] adc_d, output rdy, output [7:0] out); - - // clk is 24MHz, the IIR filter is designed for 1MS/s - // hence we need to divide it by 24 - // using a shift register takes less area than a counter - reg [23:0] cnt = 1; - assign rdy = cnt[0]; - always @(posedge clk) - cnt <= {cnt[22:0], cnt[23]}; - - reg [7:0] x0 = 0; - reg [7:0] x1 = 0; - reg [16:0] y0 = 0; - reg [16:0] y1 = 0; - - always @(posedge clk) - begin - if (rdy) - begin - x0 <= x1; - x1 <= adc_d; - y0 <= y1; - y1 <= - // center the signal: - // input range is [0; 255] - // We want "128" to be at the center of the 17bit register - // (128+z)*gain = 17bit center - // z = (1<<16)/gain - 128 = 109 - // We could use 9bit x registers for that, but that would be - // a waste, let's just add the constant during the computation - // (x0+109) + 2*(x1+109) + (x2+109) = x0 + 2*x1 + x2 + 436 - x0 + {x1, 1'b0} + adc_d + 436 - // we want "- y0 * 0xd6 / 0x100" using only shift and add - // 0xd6 == 0b11010110 - // so *0xd6/0x100 is equivalent to - // ((x << 1) + (x << 2) + (x << 4) + (x << 6) + (x << 7)) >> 8 - // which is also equivalent to - // (x >> 7) + (x >> 6) + (x >> 4) + (x >> 2) + (x >> 1) - - ((y0 >> 7) + (y0 >> 6) + (y0 >> 4) + (y0 >> 2) + (y0 >> 1)) // - y0 * 0xd6 / 0x100 - // we want "+ y1 * 0x1d3 / 0x100" - // 0x1d3 == 0b111010011 - // so this is equivalent to - // ((x << 0) + (x << 1) + (x << 4) + (x << 6) + (x << 7) + (x << 8)) >> 8 - // which is also equivalent to - // (x >> 8) + (x >> 7) + (x >> 4) + (x >> 2) + (x >> 1) + (x >> 0) - + ((y1 >> 8) + (y1 >> 7) + (y1 >> 4) + (y1 >> 2) + (y1 >> 1) + y1); - end - end - - // output: reduce to 8bit - assign out = y1[16:9]; - -endmodule diff --git a/fpga-xc3s100e/min_max_tracker.v b/fpga-xc3s100e/min_max_tracker.v deleted file mode 100644 index 5e8bbedf1..000000000 --- a/fpga-xc3s100e/min_max_tracker.v +++ /dev/null @@ -1,65 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (C) 2014 iZsh -// -// This code is licensed to you under the terms of the GNU GPL, version 2 or, -// at your option, any later version. See the LICENSE.txt file for the text of -// the license. -//----------------------------------------------------------------------------- -// track min and max peak values (envelope follower) -// -// NB: the min value (resp. max value) is updated only when the next high peak -// (resp. low peak) is reached/detected, since you can't know it isn't a -// local minima (resp. maxima) until then. -// This also means the peaks are detected with an unpredictable delay. -// This algorithm therefore can't be used directly for realtime peak detections, -// but it can be used as a simple envelope follower. -module min_max_tracker(input clk, input [7:0] adc_d, input [7:0] threshold, - output [7:0] min, output [7:0] max); - - reg [7:0] min_val = 255; - reg [7:0] max_val = 0; - reg [7:0] cur_min_val = 255; - reg [7:0] cur_max_val = 0; - reg [1:0] state = 0; - - always @(posedge clk) - begin - case (state) - 0: // initialize - begin - if (cur_max_val >= ({1'b0, adc_d} + threshold)) - state <= 2; - else if (adc_d >= ({1'b0, cur_min_val} + threshold)) - state <= 1; - if (cur_max_val <= adc_d) - cur_max_val <= adc_d; - else if (adc_d <= cur_min_val) - cur_min_val <= adc_d; - end - 1: // high phase - begin - if (cur_max_val <= adc_d) - cur_max_val <= adc_d; - else if (({1'b0, adc_d} + threshold) <= cur_max_val) begin - state <= 2; - cur_min_val <= adc_d; - max_val <= cur_max_val; - end - end - 2: // low phase - begin - if (adc_d <= cur_min_val) - cur_min_val <= adc_d; - else if (adc_d >= ({1'b0, cur_min_val} + threshold)) begin - state <= 1; - cur_max_val <= adc_d; - min_val <= cur_min_val; - end - end - endcase - end - - assign min = min_val; - assign max = max_val; - -endmodule diff --git a/fpga-xc3s100e/util.v b/fpga-xc3s100e/util.v deleted file mode 100644 index 0842ac64f..000000000 --- a/fpga-xc3s100e/util.v +++ /dev/null @@ -1,27 +0,0 @@ -//----------------------------------------------------------------------------- -// General-purpose miscellany. -// -// Jonathan Westhues, April 2006. -//----------------------------------------------------------------------------- - -module mux8(sel, y, x0, x1, x2, x3, x4, x5, x6, x7); - input [2:0] sel; - input x0, x1, x2, x3, x4, x5, x6, x7; - output y; - reg y; - -always @(x0 or x1 or x2 or x3 or x4 or x5 or x6 or x7 or sel) -begin - case (sel) - 3'b000: y = x0; - 3'b001: y = x1; - 3'b010: y = x2; - 3'b011: y = x3; - 3'b100: y = x4; - 3'b101: y = x5; - 3'b110: y = x6; - 3'b111: y = x7; - endcase -end - -endmodule diff --git a/fpga/Makefile b/fpga/Makefile new file mode 100644 index 000000000..e5bca0dfb --- /dev/null +++ b/fpga/Makefile @@ -0,0 +1,221 @@ +# +# FPGA Makefile for all targets +# +# The top part of this Makefile is used to define custom options for a number of compilation targets +# To define an additional target simply look at the other defined targets and add a new TARGET entry with a unique number and the custom options required + +XILINX_TOOLS_PREFIX= + +# Copy update (only when destination is older or missing) +CP = cp -u + +# Make directory, no error if already existing +MKDIR = mkdir -p + +# Remove recursive, force +RMDIR = rm -rf + +# Path to make +MAKE = make + +# Custom prefix for build directories, each target is built into its own separate directory name formed by combining the PREFIX and TARGET names. +# This way the source is not polluted with build files and the build directories are left behind after compilation so logs and reports can be +# examined or can be easily deleted with "make clean" +PREFIX = __ + +# Options to be passed to XST +XST_OPTS_BASE = run +XST_OPTS_BASE += -ifn xst.prj +XST_OPTS_BASE += -ifmt mixed +XST_OPTS_BASE += -ofmt NGC +XST_OPTS_BASE += -lso xst.lso +XST_OPTS_BASE += -top fpga_top +XST_OPTS_BASE += -resource_sharing yes + +# Optimizations for speed (default) +XST_OPTS_SPEED = -opt_mode Speed +XST_OPTS_SPEED += -opt_level 1 +XST_OPTS_SPEED += -fsm_style lut +XST_OPTS_SPEED += -fsm_encoding auto + +# Optimization for reduced space +XST_OPTS_AREA = -opt_mode area +XST_OPTS_AREA += -opt_level 2 +XST_OPTS_AREA += -fsm_style bram +XST_OPTS_AREA += -fsm_encoding compact + +# Types of selective module compilation: +# WITH_LF Enables selection of LF modules (and disables all HF) + +# To enable these modules WITH_LF _MUST_ be defined +# WITH_LF0 enable LF reader (generic) +# WITH_LF1 enable LF edge detect (generic) +# WITH_LF2 enable LF passthrough +# WITH_LF3 enable LF ADC (read/write) + +# To enable these modules WITH_LF _MUST_NOT_ be defined +# WITH_HF0 enable HF reader (see also WITH_HF_15 below) +# WITH_HF_15 select "iso15 2sc mode" extensions instead of original +# WITH_HF1 enable HF simulated tag +# WITH_HF2 enable HF ISO14443-A +# WITH_HF3 enable sniff +# WITH_HF4 enable HF ISO18092 FeliCa +# WITH_HF5 enable HF get trace + +# RDV40/Generic - Enable LF and all the LF modules +TARGET1_OPTIONS = -define \{WITH_LF WITH_LF0 WITH_LF1 WITH_LF2 WITH_LF3\} +# RDV40/Generic - Enable all HF modules except Felica +TARGET2_OPTIONS = -define \{WITH_HF0 WITH_HF1 WITH_HF2 WITH_HF3 WITH_HF5\} +# RDV40/Generic - Enable all HF modules except Felica and ISO14443, select HF_15 instead of HF +TARGET3_OPTIONS = -define \{WITH_HF0 WITH_HF1 WITH_HF3 WITH_HF5 WITH_HF_15\} +# RDV40/Generic - Enable all HF modules except ISO14443 +TARGET4_OPTIONS = -define \{WITH_HF0 WITH_HF1 WITH_HF3 WITH_HF4 WITH_HF5\} +# ICOPYX +TARGET5_OPTIONS = -define {PM3ICOPYX} -rtlview Yes + +# Here we list the target names +TARGET1_NAME = fpga_pm3_lf +TARGET2_NAME = fpga_pm3_hf +TARGET3_NAME = fpga_pm3_hf_15 +TARGET4_NAME = fpga_pm3_felica +TARGET5_NAME = fpga_icopyx_hf + +# Targets can be compiled for different FPGA flavours +TARGET1_FPGA = xc2s30-5-vq100 +TARGET2_FPGA = $(TARGET1_FPGA) +TARGET3_FPGA = $(TARGET1_FPGA) +TARGET4_FPGA = $(TARGET1_FPGA) +TARGET5_FPGA = xc3s100e-4-vq100 + +# Assemble the final XST options for each target +TARGET1_XST_OPTS = $(XST_OPTS_BASE) $(XST_OPTS_AREA) -p $(TARGET1_FPGA) -ofn $(TARGET1_NAME) $(TARGET1_OPTIONS) +TARGET2_XST_OPTS = $(XST_OPTS_BASE) $(XST_OPTS_AREA) -p $(TARGET2_FPGA) -ofn $(TARGET2_NAME) $(TARGET2_OPTIONS) +TARGET3_XST_OPTS = $(XST_OPTS_BASE) $(XST_OPTS_AREA) -p $(TARGET3_FPGA) -ofn $(TARGET3_NAME) $(TARGET3_OPTIONS) +TARGET4_XST_OPTS = $(XST_OPTS_BASE) $(XST_OPTS_AREA) -p $(TARGET4_FPGA) -ofn $(TARGET4_NAME) $(TARGET4_OPTIONS) +TARGET5_XST_OPTS = $(XST_OPTS_BASE) $(XST_OPTS_SPEED) -p $(TARGET5_FPGA) -ofn $(TARGET5_NAME) $(TARGET5_OPTIONS) + +# these files are common for all targets +TARGET_COMMON_FILES = define.v +TARGET_COMMON_FILES += mux8.v +TARGET_COMMON_FILES += clk_divider.v +TARGET_COMMON_FILES += lp20khz_1MSa_iir_filter.v +TARGET_COMMON_FILES += min_max_tracker.v +TARGET_COMMON_FILES += hi_flite.v +TARGET_COMMON_FILES += hi_get_trace.v +TARGET_COMMON_FILES += hi_iso14443a.v +TARGET_COMMON_FILES += hi_reader.v +TARGET_COMMON_FILES += hi_reader_15.v +TARGET_COMMON_FILES += hi_simulate.v +TARGET_COMMON_FILES += hi_sniffer.v +TARGET_COMMON_FILES += lf_edge_detect.v +TARGET_COMMON_FILES += lo_adc.v +TARGET_COMMON_FILES += lo_edge_detect.v +TARGET_COMMON_FILES += lo_passthru.v +TARGET_COMMON_FILES += lo_read.v + +# Add the files that are unique per target and all the common files +TARGET1_FILES = $(TARGET_COMMON_FILES) fpga_pm3_top.v +TARGET2_FILES = $(TARGET1_FILES) +TARGET3_FILES = $(TARGET1_FILES) +TARGET4_FILES = $(TARGET1_FILES) +TARGET5_FILES = $(TARGET_COMMON_FILES) mux2_onein.v mux2_oneout.v fpga_icopyx_hf.v fpga_icopyx_lf.v fpga_icopyx_top.v + +# List of all valid target FPGA images to build +TARGETS = $(TARGET1_NAME) $(TARGET2_NAME) $(TARGET3_NAME) $(TARGET4_NAME) $(TARGET5_NAME) + +# Verbosity type for ISE tools ise|xflow|silent +VERBOSITY = -intstyle silent +# Echo (Q=) or not echo (Q=@) build commands to the terminal +Q=@ + +# Pass the custom variables to the lower make rules +$(TARGET1_NAME).bit: TARGET_FPGA = $(TARGET1_FPGA) +$(TARGET1_NAME).bit: TARGET_FILES = $(TARGET1_FILES) +$(TARGET1_NAME).bit: TARGET_XST_OPTS = $(TARGET1_XST_OPTS) + +$(TARGET2_NAME).bit: TARGET_FPGA = $(TARGET2_FPGA) +$(TARGET2_NAME).bit: TARGET_FILES = $(TARGET2_FILES) +$(TARGET2_NAME).bit: TARGET_XST_OPTS = $(TARGET2_XST_OPTS) + +$(TARGET3_NAME).bit: TARGET_FPGA = $(TARGET3_FPGA) +$(TARGET3_NAME).bit: TARGET_FILES = $(TARGET3_FILES) +$(TARGET3_NAME).bit: TARGET_XST_OPTS = $(TARGET3_XST_OPTS) + +$(TARGET4_NAME).bit: TARGET_FPGA = $(TARGET4_FPGA) +$(TARGET4_NAME).bit: TARGET_FILES = $(TARGET4_FILES) +$(TARGET4_NAME).bit: TARGET_XST_OPTS = $(TARGET4_XST_OPTS) + +$(TARGET5_NAME).bit: TARGET_FPGA = $(TARGET5_FPGA) +$(TARGET5_NAME).bit: TARGET_FILES = $(TARGET5_FILES) +$(TARGET5_NAME).bit: TARGET_XST_OPTS = $(TARGET5_XST_OPTS) + +$(TARGETS): + $(Q)$(MKDIR) $(PREFIX)build_$@ + $(Q)$(MAKE) -C $(PREFIX)build_$@ -f ../Makefile $(notdir $@).bit + +work: + $(Q)$(RM) xst.prj + $(Q)for item in $(TARGET_FILES); do echo verilog work ../$$item>>xst.prj; done + $(Q)echo work> xst.lso + +%.xst: work + $(Q)$(RM) $@ + $(Q)echo $(TARGET_XST_OPTS)> $@ + +%.ngc: %.xst + $(Q)$(RM) $@ + $(info [-] XST $@) + $(Q)$(XILINX_TOOLS_PREFIX)xst $(VERBOSITY) -ifn $< + +%.ngd: %.ngc + $(Q)$(RM) $@ + $(info [-] NGD $@) + $(Q)$(XILINX_TOOLS_PREFIX)ngdbuild $(VERBOSITY) -quiet -p $(TARGET_FPGA) -nt timestamp -uc ../$(TARGET_FPGA).ucf $< $@ + +%_map.ncd: %.ngd + $(Q)$(RM) $@ + $(info [-] MAP $@) + $(Q)$(XILINX_TOOLS_PREFIX)map $(VERBOSITY) -p $(TARGET_FPGA) -o $*_map $* + +%.ncd: %_map.ncd + $(Q)$(RM) $@ + $(info [-] PAR $@) + $(Q)$(XILINX_TOOLS_PREFIX)par $(VERBOSITY) -w $< $@ + +%.bit: %.ncd + # Hacky hack, make empty files for icopyx + if echo "$@" | grep -qi "icopyx"; then \ + truncate -s0 ../fpga_icopyx_lf.bit; \ + truncate -s0 ../fpga_icopyx_hf_15.bit; \ + truncate -s0 ../fpga_icopyx_felica.bit; \ + fi + $(Q)$(RM) $@ $*.drc $*.rbt + $(info [=] BITGEN $@) + $(Q)$(XILINX_TOOLS_PREFIX)bitgen $(VERBOSITY) -w $* $@ + $(Q)$(CP) $@ .. + +# Build all targets +all: $(TARGETS) + +# ALWAYS have some hardcoded text after $(PREFIX) to avoid rm -rf * or rm -rf /* situations if PREFIX is incorrectly set to empty "" or just "/" +clean: + $(Q)$(RMDIR) $(PREFIX)build_* + $(info [-] Build files deleted) + +.DEFAULT: + @if [ "$@" != "all" ] && [ ! "$(filter $@,$(TARGETS))" ]; then \ + make help; \ + else \ + make all; \ + fi + +.PHONY: all help clean + +help: + @echo "################################################################" + @echo "# Valid targets are: $(TARGETS)" + @echo "# - Builds only one of the above listed targets" + @echo "# all - Builds the FPGA bitstreams for all targets" + @echo "# clean - Keeps .bit files but cleans intermediate build files for all targets" + @echo "################################################################" + diff --git a/fpga-xc2s30/clk_divider.v b/fpga/clk_divider.v similarity index 91% rename from fpga-xc2s30/clk_divider.v rename to fpga/clk_divider.v index fbb3250f1..0bcc2e608 100644 --- a/fpga-xc2s30/clk_divider.v +++ b/fpga/clk_divider.v @@ -14,7 +14,12 @@ // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- -module clk_divider(input clk, input [7:0] divisor, output [7:0] div_cnt, output div_clk); +module clk_divider( + input clk, + input [7:0] divisor, + output [7:0] div_cnt, + output div_clk +); reg [7:0] div_cnt_ = 0; reg div_clk_; diff --git a/fpga/define.v b/fpga/define.v new file mode 100644 index 000000000..b7423278b --- /dev/null +++ b/fpga/define.v @@ -0,0 +1,155 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// +// The FPGA is responsible for interfacing between the A/D, the coil drivers, +// and the ARM. In the low-frequency modes it passes the data straight +// through, so that the ARM gets raw A/D samples over the SSP. In the high- +// frequency modes, the FPGA might perform some demodulation first, to +// reduce the amount of data that we must send to the ARM. +//----------------------------------------------------------------------------- + +/* + Communication between ARM / FPGA is done inside armsrc/fpgaloader.c see: function FpgaSendCommand() + Send 16 bit command / data pair to FPGA with the bit format: + ++------ frame layout circa 2020 ------------------+ +| 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | ++-------------------------------------------------+ +| C C C C M M M M P P P P P P P P | C = FPGA_CMD_SET_CONFREG, M = FPGA_MAJOR_MODE_*, P = FPGA_LF_* or FPGA_HF_* parameter +| C C C C D D D D D D D D | C = FPGA_CMD_SET_DIVISOR, D = divisor +| C C C C T T T T T T T T | C = FPGA_CMD_SET_EDGE_DETECT_THRESHOLD, T = threshold +| C C C C E | C = FPGA_CMD_TRACE_ENABLE, E=0 off, E=1 on ++-------------------------------------------------+ + ++------ frame layout current ---------------------+ +| 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | ++-------------------------------------------------+ +| C C C C M M M P P P P P P | C = FPGA_CMD_SET_CONFREG, M = FPGA_MAJOR_MODE_*, P = FPGA_LF_* or FPGA_HF_* parameter +| C C C C D D D D D D D D | C = FPGA_CMD_SET_DIVISOR, D = divisor +| C C C C T T T T T T T T | C = FPGA_CMD_SET_EDGE_DETECT_THRESHOLD, T = threshold +| C C C C E | C = FPGA_CMD_TRACE_ENABLE, E=0 off, E=1 on ++-------------------------------------------------+ + + shift_reg receive this 16bit frame + + LF command + ---------- + shift_reg[15:12] == 4bit command + LF has three commands (FPGA_CMD_SET_CONFREG, FPGA_CMD_SET_DIVISOR, FPGA_CMD_SET_EDGE_DETECT_THRESHOLD) + Current commands uses only 2bits. We have room for up to 4bits of commands total (7). + + LF data + ------- + shift_reg[11:0] == 12bit data + lf data is divided into MAJOR MODES and configuration values. + + The major modes uses 3bits (0,1,2,3,7 | 000, 001, 010, 011, 111) + 000 FPGA_MAJOR_MODE_LF_READER = Act as LF reader (modulate) + 001 FPGA_MAJOR_MODE_LF_EDGE_DETECT = Simulate LF + 010 FPGA_MAJOR_MODE_LF_PASSTHRU = Passthrough mode, CROSS_LO line connected to SSP_DIN. SSP_DOUT logic level controls if we modulate / listening + 011 FPGA_MAJOR_MODE_LF_ADC = refactor hitag2, clear ADC sampling + 111 FPGA_MAJOR_MODE_OFF = turn off sampling. + + Each one of this major modes can have options. Currently these two major modes uses options. + - FPGA_MAJOR_MODE_LF_READER + - FPGA_MAJOR_MODE_LF_EDGE_DETECT + + FPGA_MAJOR_MODE_LF_READER + ------------------------------------- + lf_field = 1bit (FPGA_LF_ADC_READER_FIELD) + + You can send FPGA_CMD_SET_DIVISOR to set with FREQUENCY the fpga should sample at + divisor = 8bits shift_reg[7:0] + + FPGA_MAJOR_MODE_LF_EDGE_DETECT + ------------------------------------------ + lf_ed_toggle_mode = 1bits + lf_ed_threshold = 8bits threshold defaults to 127 + + You can send FPGA_CMD_SET_EDGE_DETECT_THRESHOLD to set a custom threshold + lf_ed_threshold = 8bits threshold value. + + conf_word 12bits + conf_word[7:5] = 3bit major mode. + conf_word[0] = 1bit lf_field + conf_word[1] = 1bit lf_ed_toggle_mode + conf_word[7:0] = 8bit divisor + conf_word[7:0] = 8bit threshold + +*/ +// Defining commands, modes and options. This must be aligned to the definitions in armsrc/fpgaloader.h +// Note: the definitions here are without shifts + +// Definitions for the FPGA commands. +`define FPGA_CMD_SET_CONFREG 1 +`define FPGA_CMD_SET_DIVISOR 2 +`define FPGA_CMD_SET_EDGE_DETECT_THRESHOLD 3 +`define FPGA_CMD_TRACE_ENABLE 2 + +// Major modes +`define FPGA_MAJOR_MODE_LF_READER 0 +`define FPGA_MAJOR_MODE_LF_EDGE_DETECT 1 +`define FPGA_MAJOR_MODE_LF_PASSTHRU 2 +`define FPGA_MAJOR_MODE_LF_ADC 3 +`define FPGA_MAJOR_MODE_HF_READER 0 +`define FPGA_MAJOR_MODE_HF_SIMULATOR 1 +`define FPGA_MAJOR_MODE_HF_ISO14443A 2 +`define FPGA_MAJOR_MODE_HF_SNIFF 3 +`define FPGA_MAJOR_MODE_HF_ISO18092 4 +`define FPGA_MAJOR_MODE_HF_GET_TRACE 5 +`define FPGA_MAJOR_MODE_OFF 7 + +// Options for LF_READER +`define FPGA_LF_ADC_READER_FIELD 1 + +// Options for LF_EDGE_DETECT +`define FPGA_LF_EDGE_DETECT_READER_FIELD 1 +`define FPGA_LF_EDGE_DETECT_TOGGLE_MODE 2 + +// Options for the generic HF reader +`define FPGA_HF_READER_MODE_RECEIVE_IQ 0 +`define FPGA_HF_READER_MODE_RECEIVE_AMPLITUDE 1 +`define FPGA_HF_READER_MODE_RECEIVE_PHASE 2 +`define FPGA_HF_READER_MODE_SEND_FULL_MOD 3 +`define FPGA_HF_READER_MODE_SEND_SHALLOW_MOD 4 +`define FPGA_HF_READER_MODE_SNIFF_IQ 5 +`define FPGA_HF_READER_MODE_SNIFF_AMPLITUDE 6 +`define FPGA_HF_READER_MODE_SNIFF_PHASE 7 +`define FPGA_HF_READER_MODE_SEND_JAM 8 + +`define FPGA_HF_READER_SUBCARRIER_848_KHZ 0 +`define FPGA_HF_READER_SUBCARRIER_424_KHZ 1 +`define FPGA_HF_READER_SUBCARRIER_212_KHZ 2 +`define FPGA_HF_READER_2SUBCARRIERS_424_484_KHZ 3 + +// Options for the HF simulated tag, how to modulate +`define FPGA_HF_SIMULATOR_NO_MODULATION 0 +`define FPGA_HF_SIMULATOR_MODULATE_BPSK 1 +`define FPGA_HF_SIMULATOR_MODULATE_212K 2 +`define FPGA_HF_SIMULATOR_MODULATE_424K 4 +`define FPGA_HF_SIMULATOR_MODULATE_424K_8BIT 5 + +// Options for ISO14443A +`define FPGA_HF_ISO14443A_SNIFFER 0 +`define FPGA_HF_ISO14443A_TAGSIM_LISTEN 1 +`define FPGA_HF_ISO14443A_TAGSIM_MOD 2 +`define FPGA_HF_ISO14443A_READER_LISTEN 3 +`define FPGA_HF_ISO14443A_READER_MOD 4 + +// Options for ISO18092 / Felica +`define FPGA_HF_ISO18092_FLAG_NOMOD 1 // 0001 disable modulation module +`define FPGA_HF_ISO18092_FLAG_424K 2 // 0010 should enable 414k mode (untested). No autodetect +`define FPGA_HF_ISO18092_FLAG_READER 4 // 0100 enables antenna power, to act as a reader instead of tag diff --git a/fpga-xc3s100e/fpga_felica.bit b/fpga/fpga_icopyx_felica.bit similarity index 100% rename from fpga-xc3s100e/fpga_felica.bit rename to fpga/fpga_icopyx_felica.bit diff --git a/fpga/fpga_icopyx_hf.bit b/fpga/fpga_icopyx_hf.bit new file mode 100644 index 0000000000000000000000000000000000000000..b62cdace60a2f3d95eac23c61b26a334a08dc47a GIT binary patch literal 72749 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 literal 0 HcmV?d00001 diff --git a/fpga/fpga_icopyx_hf.v b/fpga/fpga_icopyx_hf.v new file mode 100644 index 000000000..b7730875d --- /dev/null +++ b/fpga/fpga_icopyx_hf.v @@ -0,0 +1,227 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// +// The FPGA is responsible for interfacing between the A/D, the coil drivers, +// and the ARM. In the low-frequency modes it passes the data straight +// through, so that the ARM gets raw A/D samples over the SSP. In the high- +// frequency modes, the FPGA might perform some demodulation first, to +// reduce the amount of data that we must send to the ARM. +//----------------------------------------------------------------------------- +//`include "define.v" + +//`include "hi_reader.v" +//`include "hi_simulate.v" +//`include "hi_iso14443a.v" +//`include "hi_flite.v" +//`include "hi_sniffer.v" +//`include "hi_get_trace.v" + +module fpga_hf( + input spck, + output miso, + input mosi, + input ncs, + input pck0, + input ck_1356meg, + input ck_1356megb, + output pwr_lo, + output pwr_hi, + output pwr_oe1, + output pwr_oe2, + output pwr_oe3, + output pwr_oe4, + input [7:0] adc_d, + output adc_clk, + output adc_noe, + output ssp_frame, + output ssp_din, + input ssp_dout, + output ssp_clk, + input cross_hi, + input cross_lo, + output debug +); + +//----------------------------------------------------------------------------- +// The SPI receiver. This sets up the configuration word, which the rest of +// the logic looks at to determine how to connect the A/D and the coil +// drivers (i.e., which section gets it). Also assign some symbolic names +// to the configuration bits, for use below. +//----------------------------------------------------------------------------- + +// Receive 16bits of data from ARM here. +reg [15:0] shift_reg; +always @(posedge spck) if (~ncs) shift_reg <= {shift_reg[14:0], mosi}; + +reg [8:0] conf_word; +reg trace_enable; + +// select module (outputs) based on major mode +wire [2:0] major_mode = conf_word[8:6]; +// parameter to be passed to modules +wire [3:0] minor_mode = conf_word[3:0]; + +// configuring the HF reader +wire [1:0] subcarrier_frequency = conf_word[5:4]; + +// We switch modes between transmitting to the 13.56 MHz tag and receiving +// from it, which means that we must make sure that we can do so without +// glitching, or else we will glitch the transmitted carrier. +always @(posedge ncs) +begin + // 4 bit command + case (shift_reg[15:12]) + `FPGA_CMD_SET_CONFREG: conf_word <= shift_reg[8:0]; + `FPGA_CMD_TRACE_ENABLE: trace_enable <= shift_reg[0]; + endcase +end + +//----------------------------------------------------------------------------- +// And then we instantiate the modules corresponding to each of the FPGA's +// major modes, and use muxes to connect the outputs of the active mode to +// the output pins. +//----------------------------------------------------------------------------- + +// 0 - HF reader +hi_reader hr( + .ck_1356meg (ck_1356megb), + .pwr_lo (hr_pwr_lo), + .pwr_hi (hr_pwr_hi), + .pwr_oe1 (hr_pwr_oe1), + .pwr_oe2 (hr_pwr_oe2), + .pwr_oe3 (hr_pwr_oe3), + .pwr_oe4 (hr_pwr_oe4), + .adc_d (adc_d), + .adc_clk (hr_adc_clk), + .ssp_frame (hr_ssp_frame), + .ssp_din (hr_ssp_din), + .ssp_dout (ssp_dout), + .ssp_clk (hr_ssp_clk), + .debug (hr_debug), + .subcarrier_frequency (subcarrier_frequency), + .minor_mode (minor_mode) +); + +// 1 - HF simulated tag +hi_simulate hs( + .ck_1356meg (ck_1356meg), + .pwr_lo (hs_pwr_lo), + .pwr_hi (hs_pwr_hi), + .pwr_oe1 (hs_pwr_oe1), + .pwr_oe2 (hs_pwr_oe2), + .pwr_oe3 (hs_pwr_oe3), + .pwr_oe4 (hs_pwr_oe4), + .adc_d (adc_d), + .adc_clk (hs_adc_clk), + .ssp_frame (hs_ssp_frame), + .ssp_din (hs_ssp_din), + .ssp_dout (ssp_dout), + .ssp_clk (hs_ssp_clk), + .debug (hs_debug), + .mod_type (minor_mode) +); + +// 2 - HF ISO14443-A +hi_iso14443a hisn( + .ck_1356meg (ck_1356meg), + .pwr_lo (hisn_pwr_lo), + .pwr_hi (hisn_pwr_hi), + .pwr_oe1 (hisn_pwr_oe1), + .pwr_oe2 (hisn_pwr_oe2), + .pwr_oe3 (hisn_pwr_oe3), + .pwr_oe4 (hisn_pwr_oe4), + .adc_d (adc_d), + .adc_clk (hisn_adc_clk), + .ssp_frame (hisn_ssp_frame), + .ssp_din (hisn_ssp_din), + .ssp_dout (ssp_dout), + .ssp_clk (hisn_ssp_clk), + .debug (hisn_debug), + .mod_type (minor_mode) +); + +// 3 - HF sniff +hi_sniffer he( + .ck_1356meg (ck_1356megb), + .pwr_lo (he_pwr_lo), + .pwr_hi (he_pwr_hi), + .pwr_oe1 (he_pwr_oe1), + .pwr_oe2 (he_pwr_oe2), + .pwr_oe3 (he_pwr_oe3), + .pwr_oe4 (he_pwr_oe4), + .adc_d (adc_d), + .adc_clk (he_adc_clk), + .ssp_frame (he_ssp_frame), + .ssp_din (he_ssp_din), + .ssp_clk (he_ssp_clk) +); + +// 4 - HF ISO18092 FeliCa +hi_flite hfl( + .ck_1356meg (ck_1356megb), + .pwr_lo (hfl_pwr_lo), + .pwr_hi (hfl_pwr_hi), + .pwr_oe1 (hfl_pwr_oe1), + .pwr_oe2 (hfl_pwr_oe2), + .pwr_oe3 (hfl_pwr_oe3), + .pwr_oe4 (hfl_pwr_oe4), + .adc_d (adc_d), + .adc_clk (hfl_adc_clk), + .ssp_frame (hfl_ssp_frame), + .ssp_din (hfl_ssp_din), + .ssp_dout (ssp_dout), + .ssp_clk (hfl_ssp_clk), + .debug (hfl_debug), + .mod_type (minor_mode) +); + +// 5 - HF get trace +hi_get_trace gt( + .ck_1356megb (ck_1356megb), + .adc_d (adc_d), + .trace_enable (trace_enable), + .major_mode (major_mode), + .ssp_frame (gt_ssp_frame), + .ssp_din (gt_ssp_din), + .ssp_clk (gt_ssp_clk) +); + +// Major modes: +// x0 = HF reader +// x1 = HF simulated tag +// x2 = HF ISO14443-A +// x3 = HF sniff +// x4 = HF ISO18092 FeliCa +// x5 = HF get trace +// x6 = unused +// x7 = FPGA_MAJOR_MODE_OFF + +mux8 mux_ssp_clk (.sel(major_mode), .y(ssp_clk ), .x0(hr_ssp_clk ), .x1(hs_ssp_clk ), .x2(hisn_ssp_clk ), .x3(he_ssp_clk ), .x4(hfl_ssp_clk ), .x5(gt_ssp_clk ), .x6(1'b0), .x7(1'b0) ); +mux8 mux_ssp_din (.sel(major_mode), .y(ssp_din ), .x0(hr_ssp_din ), .x1(hs_ssp_din ), .x2(hisn_ssp_din ), .x3(he_ssp_din ), .x4(hfl_ssp_din ), .x5(gt_ssp_din ), .x6(1'b0), .x7(1'b0) ); +mux8 mux_ssp_frame (.sel(major_mode), .y(ssp_frame), .x0(hr_ssp_frame ), .x1(hs_ssp_frame), .x2(hisn_ssp_frame), .x3(he_ssp_frame), .x4(hfl_ssp_frame), .x5(gt_ssp_frame), .x6(1'b0), .x7(1'b0) ); +mux8 mux_pwr_oe1 (.sel(major_mode), .y(pwr_oe1 ), .x0(hr_pwr_oe1 ), .x1(hs_pwr_oe1 ), .x2(hisn_pwr_oe1 ), .x3(he_pwr_oe1 ), .x4(hfl_pwr_oe1 ), .x5(1'b0 ), .x6(1'b0), .x7(1'b0) ); +mux8 mux_pwr_oe2 (.sel(major_mode), .y(pwr_oe2 ), .x0(hr_pwr_oe2 ), .x1(hs_pwr_oe2 ), .x2(hisn_pwr_oe2 ), .x3(he_pwr_oe2 ), .x4(hfl_pwr_oe2 ), .x5(1'b0 ), .x6(1'b0), .x7(1'b0) ); +mux8 mux_pwr_oe3 (.sel(major_mode), .y(pwr_oe3 ), .x0(hr_pwr_oe3 ), .x1(hs_pwr_oe3 ), .x2(hisn_pwr_oe3 ), .x3(he_pwr_oe3 ), .x4(hfl_pwr_oe3 ), .x5(1'b0 ), .x6(1'b0), .x7(1'b0) ); +mux8 mux_pwr_oe4 (.sel(major_mode), .y(pwr_oe4 ), .x0(hr_pwr_oe4 ), .x1(hs_pwr_oe4 ), .x2(hisn_pwr_oe4 ), .x3(he_pwr_oe4 ), .x4(hfl_pwr_oe4 ), .x5(1'b0 ), .x6(1'b0), .x7(1'b0) ); +mux8 mux_pwr_lo (.sel(major_mode), .y(pwr_lo ), .x0(hr_pwr_lo ), .x1(hs_pwr_lo ), .x2(hisn_pwr_lo ), .x3(he_pwr_lo ), .x4(hfl_pwr_lo ), .x5(1'b0 ), .x6(1'b0), .x7(1'b0) ); +mux8 mux_pwr_hi (.sel(major_mode), .y(pwr_hi ), .x0(hr_pwr_hi ), .x1(hs_pwr_hi ), .x2(hisn_pwr_hi ), .x3(he_pwr_hi ), .x4(hfl_pwr_hi ), .x5(1'b0 ), .x6(1'b0), .x7(1'b0) ); +mux8 mux_adc_clk (.sel(major_mode), .y(adc_clk ), .x0(hr_adc_clk ), .x1(hs_adc_clk ), .x2(hisn_adc_clk ), .x3(he_adc_clk ), .x4(hfl_adc_clk ), .x5(1'b0 ), .x6(1'b0), .x7(1'b0) ); +mux8 mux_dbg (.sel(major_mode), .y(debug ), .x0(hr_debug ), .x1(hs_debug ), .x2(hisn_debug ), .x3(he_debug ), .x4(hfl_debug ), .x5(1'b0 ), .x6(1'b0), .x7(1'b0) ); + +// In all modes, let the ADC's outputs be enabled. +assign adc_noe = 1'b0; + +endmodule diff --git a/fpga-xc3s100e/fpga_lf.bit b/fpga/fpga_icopyx_hf_15.bit similarity index 100% rename from fpga-xc3s100e/fpga_lf.bit rename to fpga/fpga_icopyx_hf_15.bit diff --git a/fpga/fpga_icopyx_lf.bit b/fpga/fpga_icopyx_lf.bit new file mode 100644 index 000000000..e69de29bb diff --git a/fpga/fpga_icopyx_lf.v b/fpga/fpga_icopyx_lf.v new file mode 100644 index 000000000..0ca4739b7 --- /dev/null +++ b/fpga/fpga_icopyx_lf.v @@ -0,0 +1,218 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// +// The FPGA is responsible for interfacing between the A/D, the coil drivers, +// and the ARM. In the low-frequency modes it passes the data straight +// through, so that the ARM gets raw A/D samples over the SSP. In the high- +// frequency modes, the FPGA might perform some demodulation first, to +// reduce the amount of data that we must send to the ARM. +//----------------------------------------------------------------------------- +//`include "define.v" + +//`include "lo_read.v" +//`include "lo_passthru.v" +//`include "lo_edge_detect.v" +//`include "lo_adc.v" +//`include "clk_divider.v" + +module fpga_lf( + input spck, + output miso, + input mosi, + input ncs, + input pck0, + input ck_1356meg, + input ck_1356megb, + output pwr_lo, + output pwr_hi, + output pwr_oe1, + output pwr_oe2, + output pwr_oe3, + output pwr_oe4, + input [7:0] adc_d, + output adc_clk, + output adc_noe, + output ssp_frame, + output ssp_din, + input ssp_dout, + output ssp_clk, + input cross_hi, + input cross_lo, + output debug, + output PWR_LO_EN +); + +//----------------------------------------------------------------------------- +// The SPI receiver. This sets up the configuration word, which the rest of +// the logic looks at to determine how to connect the A/D and the coil +// drivers (i.e., which section gets it). Also assign some symbolic names +// to the configuration bits, for use below. +//----------------------------------------------------------------------------- + +// Receive 16bits of data from ARM here. +reg [15:0] shift_reg; +always @(posedge spck) if (~ncs) shift_reg <= {shift_reg[14:0], mosi}; + +reg [11:0] conf_word; + +// select module (outputs) based on major mode +wire [2:0] major_mode = conf_word[8:6]; +// parameter to be passed to modules +wire lf_field = conf_word[0]; +wire lf_ed_toggle_mode = conf_word[1]; +reg [7:0] lf_ed_threshold; + +wire [7:0] pck_cnt; +wire pck_divclk; +reg [7:0] divisor; +clk_divider div_clk(pck0, divisor, pck_cnt, pck_divclk); + +// We switch modes between transmitting to the 13.56 MHz tag and receiving +// from it, which means that we must make sure that we can do so without +// glitching, or else we will glitch the transmitted carrier. +always @(posedge ncs) +begin + // 4 bit command + case (shift_reg[15:12]) + `FPGA_CMD_SET_CONFREG: + begin + // 12 bit data + conf_word <= shift_reg[11:0]; + if (shift_reg[8:6] == `FPGA_MAJOR_MODE_LF_EDGE_DETECT) + begin + lf_ed_threshold <= 127; // default threshold + end + end + + `FPGA_CMD_SET_DIVISOR: + divisor <= shift_reg[7:0]; // 8bits + + `FPGA_CMD_SET_EDGE_DETECT_THRESHOLD: + lf_ed_threshold <= shift_reg[7:0]; // 8 bits + endcase +end + +//----------------------------------------------------------------------------- +// And then we instantiate the modules corresponding to each of the FPGA's +// major modes, and use muxes to connect the outputs of the active mode to +// the output pins. +//----------------------------------------------------------------------------- + +// 0 -- LF reader (generic) +lo_read lr( + .pck0 (pck0), + .pck_cnt (pck_cnt), + .pck_divclk (pck_divclk), + .pwr_lo (lr_pwr_lo), + .pwr_hi (lr_pwr_hi), + .pwr_oe1 (lr_pwr_oe1), + .pwr_oe2 (lr_pwr_oe2), + .pwr_oe3 (lr_pwr_oe3), + .pwr_oe4 (lr_pwr_oe4), + .adc_d (adc_d), + .adc_clk (lr_adc_clk), + .ssp_frame (lr_ssp_frame), + .ssp_din (lr_ssp_din), + .ssp_clk (lr_ssp_clk), + .debug (lr_debug), + .lf_field (lf_field) +); + +// 1 -- LF edge detect (generic) +lo_edge_detect le( + .pck0 (pck0), + .pck_divclk (pck_divclk), + .pwr_lo (le_pwr_lo), + .pwr_hi (le_pwr_hi), + .pwr_oe1 (le_pwr_oe1), + .pwr_oe2 (le_pwr_oe2), + .pwr_oe3 (le_pwr_oe3), + .pwr_oe4 (le_pwr_oe4), + .adc_d (adc_d), + .adc_clk (le_adc_clk), + .ssp_frame (le_ssp_frame), + .ssp_dout (ssp_dout), + .ssp_clk (le_ssp_clk), + .cross_lo (cross_lo), + .debug (le_debug), + .lf_field (lf_field), + .lf_ed_toggle_mode (lf_ed_toggle_mode), + .lf_ed_threshold (lf_ed_threshold) +); + +// 2 -- LF passthrough +lo_passthru lp( + .pck_divclk (pck_divclk), + .pwr_lo (lp_pwr_lo), + .pwr_hi (lp_pwr_hi), + .pwr_oe1 (lp_pwr_oe1), + .pwr_oe2 (lp_pwr_oe2), + .pwr_oe3 (lp_pwr_oe3), + .pwr_oe4 (lp_pwr_oe4), + .adc_clk (lp_adc_clk), + .ssp_din (lp_ssp_din), + .ssp_dout (ssp_dout), + .cross_lo (cross_lo), + .debug (lp_debug) +); + +// 3 -- LF ADC (read/write) +lo_adc la( + .pck0 (pck0), + .pwr_lo (la_pwr_lo ), + .pwr_hi (la_pwr_hi ), + .pwr_oe1 (la_pwr_oe1), + .pwr_oe2 (la_pwr_oe2), + .pwr_oe3 (la_pwr_oe3), + .pwr_oe4 (la_pwr_oe4), + .adc_d (adc_d), + .adc_clk (la_adc_clk), + .ssp_frame (la_ssp_frame), + .ssp_din (la_ssp_din), + .ssp_dout (ssp_dout), + .ssp_clk (la_ssp_clk), + .debug (la_debug), + .divisor (divisor), + .lf_field (lf_field) +); + +// Major modes: +// x0 = LF reader (generic) +// x1 = LF edge detect (generic) +// x2 = LF passthrough +// x3 = LF ADC (read/write) +// x4 = SPARE +// x5 = SPARE +// x6 = SPARE +// x7 = FPGA_MAJOR_MODE_OFF + +mux8 mux_ssp_clk (.sel(major_mode), .y(ssp_clk ), .x0(lr_ssp_clk ), .x1(le_ssp_clk ), .x2(1'b0 ), .x3(la_ssp_clk ), .x4(1'b0), .x5(1'b0), .x6(1'b0), .x7(1'b0) ); +mux8 mux_ssp_din (.sel(major_mode), .y(ssp_din ), .x0(lr_ssp_din ), .x1(1'b0 ), .x2(lp_ssp_din), .x3(la_ssp_din ), .x4(1'b0), .x5(1'b0), .x6(1'b0), .x7(1'b0) ); +mux8 mux_ssp_frame (.sel(major_mode), .y(ssp_frame), .x0(lr_ssp_frame), .x1(le_ssp_frame), .x2(1'b0 ), .x3(la_ssp_frame), .x4(1'b0), .x5(1'b0), .x6(1'b0), .x7(1'b0) ); +mux8 mux_pwr_oe1 (.sel(major_mode), .y(pwr_oe1 ), .x0(lr_pwr_oe1 ), .x1(le_pwr_oe1 ), .x2(lp_pwr_oe1), .x3(la_pwr_oe1 ), .x4(1'b0), .x5(1'b0), .x6(1'b0), .x7(1'b0) ); +mux8 mux_pwr_oe2 (.sel(major_mode), .y(pwr_oe2 ), .x0(lr_pwr_oe2 ), .x1(le_pwr_oe2 ), .x2(lp_pwr_oe2), .x3(la_pwr_oe2 ), .x4(1'b0), .x5(1'b0), .x6(1'b0), .x7(1'b0) ); +mux8 mux_pwr_oe3 (.sel(major_mode), .y(pwr_oe3 ), .x0(lr_pwr_oe3 ), .x1(le_pwr_oe3 ), .x2(lp_pwr_oe3), .x3(la_pwr_oe3 ), .x4(1'b0), .x5(1'b0), .x6(1'b0), .x7(1'b0) ); +mux8 mux_pwr_oe4 (.sel(major_mode), .y(pwr_oe4 ), .x0(lr_pwr_oe4 ), .x1(le_pwr_oe4 ), .x2(lp_pwr_oe4), .x3(la_pwr_oe4 ), .x4(1'b0), .x5(1'b0), .x6(1'b0), .x7(1'b0) ); +mux8 mux_pwr_lo (.sel(major_mode), .y(pwr_lo ), .x0(lr_pwr_lo ), .x1(le_pwr_lo ), .x2(lp_pwr_lo ), .x3(la_pwr_lo ), .x4(1'b0), .x5(1'b0), .x6(1'b1), .x7(1'b0) ); +mux8 mux_pwr_hi (.sel(major_mode), .y(pwr_hi ), .x0(lr_pwr_hi ), .x1(le_pwr_hi ), .x2(lp_pwr_hi ), .x3(la_pwr_hi ), .x4(1'b0), .x5(1'b0), .x6(1'b0), .x7(1'b0) ); +mux8 mux_adc_clk (.sel(major_mode), .y(adc_clk ), .x0(lr_adc_clk ), .x1(le_adc_clk ), .x2(lp_adc_clk), .x3(la_adc_clk ), .x4(1'b0), .x5(1'b0), .x6(1'b0), .x7(1'b0) ); +mux8 mux_dbg (.sel(major_mode), .y(debug ), .x0(lr_debug ), .x1(le_debug ), .x2(lp_debug ), .x3(la_debug ), .x4(1'b0), .x5(1'b0), .x6(1'b0), .x7(1'b0) ); +mux8 mux_ant (.sel(major_mode), .y(PWR_LO_EN), .x0(1'b1 ), .x1(1'b1 ), .x2(1'b1 ), .x3(1'b1 ), .x4(1'b0), .x5(1'b0), .x6(1'b0), .x7(1'b0) ); + +// In all modes, let the ADC's outputs be enabled. +assign adc_noe = 1'b0; + +endmodule diff --git a/fpga-xc3s100e/fpga_allinone.v b/fpga/fpga_icopyx_top.v similarity index 61% rename from fpga-xc3s100e/fpga_allinone.v rename to fpga/fpga_icopyx_top.v index e766181f2..81aacb73c 100644 --- a/fpga-xc3s100e/fpga_allinone.v +++ b/fpga/fpga_icopyx_top.v @@ -1,37 +1,61 @@ -////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. // -// Create Date: 16:09:14 05/13/2020 -// Design Name: -// Module Name: fpga_all_in_one -// Project Name: -// Target Devices: -// Tool versions: -// Description: +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. // -// Dependencies: +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. // -// Revision: -// Revision 0.01 - File Created -// Additional Comments: +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- // -////////////////////////////////////////////////////////////////////////////////// -module fpga_hf( - input spck, output miso, input mosi, input ncs, - input pck0, input ck_1356meg, input ck_1356megb, - output pwr_lo, output pwr_hi, - output pwr_oe1, output pwr_oe2, output pwr_oe3, output pwr_oe4, - input [7:0] adc_d, output adc_clk, output adc_noe, - output ssp_frame, output ssp_din, input ssp_dout, output ssp_clk, - input cross_hi, input cross_lo, +// The FPGA is responsible for interfacing between the A/D, the coil drivers, +// and the ARM. In the low-frequency modes it passes the data straight +// through, so that the ARM gets raw A/D samples over the SSP. In the high- +// frequency modes, the FPGA might perform some demodulation first, to +// reduce the amount of data that we must send to the ARM. +//----------------------------------------------------------------------------- +//`include "fpga_lf.v" +//`include "fpga_hf.v" +//`include "mux2_onein.v" +//`include "mux2_oneout.v" +//`include "util.v" + +module fpga_top( + input spck, + output miso, + input mosi, + input ncs, + input pck0, + input ck_1356meg, + input ck_1356megb, + output pwr_lo, + output pwr_hi, + output pwr_oe1, + output pwr_oe2, + output pwr_oe3, + output pwr_oe4, + input [7:0] adc_d, + output adc_clk, + output adc_noe, + output ssp_frame, + output ssp_din, + input ssp_dout, + output ssp_clk, + input cross_hi, + input cross_lo, output dbg, output PWR_LO_EN, input FPGA_SWITCH ); -fpga_hfmod hfmod( +fpga_hf hfmod( hfspck, hfmiso, hfmosi, hfncs, hfpck0, hfck_1356meg, hfck_1356megb, hfpwr_lo, hfpwr_hi, @@ -39,10 +63,10 @@ fpga_hfmod hfmod( adc_d, hfadc_clk, hfadc_noe, hfssp_frame, hfssp_din, hfssp_dout, hfssp_clk, hfcross_hi, hfcross_lo, - hfdbg + hfdebug ); -fpga_lfmod lfmod( +fpga_lf lfmod( lfspck, lfmiso, lfmosi, lfncs, lfpck0, lfck_1356meg, lfck_1356megb, lfpwr_lo, lfpwr_hi, @@ -50,7 +74,7 @@ fpga_lfmod lfmod( adc_d, lfadc_clk, lfadc_noe, lfssp_frame, lfssp_din, lfssp_dout, lfssp_clk, lfcross_hi, lfcross_lo, - lfdbg, + lfdebug, lfPWR_LO_EN ); @@ -75,7 +99,7 @@ mux2_oneout mux_ssp_dout_all (FPGA_SWITCH, ssp_dout, hfss mux2_one mux_ssp_clk_all (FPGA_SWITCH, ssp_clk, hfssp_clk, lfssp_clk); mux2_oneout mux_cross_hi_all (FPGA_SWITCH, cross_hi, hfcross_hi, lfcross_hi); mux2_oneout mux_cross_lo_all (FPGA_SWITCH, cross_lo, hfcross_lo, lfcross_lo); -mux2_one mux_dbg_all (FPGA_SWITCH, dbg, hfdbg, lfdbg); +mux2_one mux_dbg_all (FPGA_SWITCH, dbg, hfdebug, lfdebug); mux2_one mux_PWR_LO_EN_all (FPGA_SWITCH, PWR_LO_EN, 1'b0, lfPWR_LO_EN); endmodule diff --git a/fpga/fpga_pm3_felica.bit b/fpga/fpga_pm3_felica.bit new file mode 100644 index 0000000000000000000000000000000000000000..a903f180ead332a29b109b75c0bc01e7ce0b6c51 GIT binary patch literal 42176 zcma&P4RjpEnJ)ZJbxUqdk2G!BW(6428VMN0Xf&3LZGd*o_j#Y^eXB%8{z>;gM4pFf;iH{@{qTS5e7x?z zJ^JOx{^m;$hrjxzb@T{%Yrjz!`Ma+#jYQ~6q}N7j>uMr**3?C49ThFTtA5$C`lYq> zWuk%3Yxw!$vw!tygoKBP=0!X)`M+AkV|qw5RY%B{|DR@lUlbvHp8x-z2ytqs$}dr= zAwT{<{HVhD#eblW$^H+Ia6fjR^B?I``hROSW`(r3Z{^*PQje{Xnf>ZFAf~#~*)Mb5BN+Z41vo!1LP`)L8-?4yv>y=LYYy1e~V|s-G zHW@77+bja7wZWEE{70h!;Tu*=H6r^Y3T)a(maRoth&EGzYbIMw-KNQlk}Z#Toafk! z_Ne;|b3{ur)9qt1A3aZ|t?gwIH71`!i{7V8R&Bd)Nb%7K)e4_++hgoa+E-S*QfXJ6 z=VU$mW7k9z_h-5%wX4Y{QIq+z%XEnv)tX6Vik#U+dds?~hkl@R@w z>iOrBilLhFtI`D_dL zEr>C9v%xNJgssFD!;k4%Li@$;el5ys%b!kGoQY1bCA6_?cUGI)5p|yv)rh8Oc_L&g zTj+3^$+wsbLhN-~X)lQ=rS8VzH@!-i={4cEl??s+LQL?ia+&`dHQD}2B~uua-!)k9 zv9PI@#?00**`ihyCzX%vH>sBUhFh!L^@`5lWuBnjq;YSO^-#Ic+u135Bfo=do!(OS zJ=^pQZ4u>WaDsiCdeA6Z%if`Gt30MnnJ^~#UD1VaiKNG>)QE8sWEyW8Y>YOus)w-3 zrS7^0>5I*jBV)S&9DK_4~TJX2YbU^3v1y&W2h8e_&z(7?q0^m;``K~eQ)HR zO*8h@d=u^Wlp9(bGm7?W)ueNFD)1fiN9n{A8=QHLw#2+9R$zZAJLpehmFZur97p4> zY{`1%hfFR7X*cbWOUY{lJ0}}he#!qWerL>=R<3IqORlnf z9s0NF+Tn`xzV+A{&U+r5zjN)DmfbzUPgoh>NYz~XtM0}0no*wiKEbMH{1|`L{65_# zZLqAZhoKK=2LA`T#g2CF;I4he7QQ9T%GM6DLbIDfLR-#a@S>F&?@AVR*L`r&9-5%# zwlAgJF4A)UBo>(Tdv+j`Na-QVac&MH^M?bL63jB;=e6LD(kyk;8Cy#+%UuhN`+ygg&?4R~WJypknXP<>Vz!h!CX_uA3oyY2S$d1=6+{PI_VTO5%$=m^U2nX5_IiL;@4$SXReMa zaEfU7(+bv0G#&PJDv|jyXUxXO>Om1O;ll&k57E&3SeRZB;jH#5%i-4;-h7pfc~#O6 zus*tA*qIcvwPh^eao!K`3;(KWL=*8!`jHlh;W>{_A699T6~_>x@(awxL?k~EF!PRh+vQDmGI&F z=&_6zsmkM*`J!DjsZEzIp%=yDDLq>F4jmAWXN%Uua=CnmQO!qxQ>??w$eBKDzdIZ?*tZ4+#an@Ag*Kt}Qd>>alnfO>ViJP-ZkSX$_?53kpg?1SjRSol#i#_3>TeXF*^YtG`AO3!NHsGcl5XC9<5$C{!K`zr8@70%d~ zT8U63#C3y>(q1%fbQ>L9E8W55YDxU!bW)Dl0y4_M>lQEtjjGl0*0AE(a^Fqk^zXDv zF4G0=3L)N@lw)S~05awMd7bh(Wd#?sf1)A2CaH|GBWU%D*Cj`K9*-CqRMhx?<~A58yUQWQ`pZz zp~cvQ`t=`6ra~aEwbUeMgk5{93Zf#B*}^)khmxwbsp)$QPevI$sW*o7x^erLM zOt0py`ylLVgu((bQdXVf2<#IT(vQKugffGbg3>fC8e^EnIq^Rdm`+M@d|fj>$}93c!HQtAc8pIRy0Cc z1Rm$zwUGR49|cFe5jGIF)L`0cumbAlp>}OqU}`2l^en+Lm7CySHxzD^jR|iFZ4@;z zZ9NQ@%jJ^zHAyQyC8Q+i4^&SjW-GDRsexl&Z{tT_r>HjdG%GPTit4OB#b)`J@h^5abMPz7{xK1@l?d|-1d18GmhEuuYhuyMfYB#J zv87beZ?cVI-XOaRj;HAb|5xYmFPhnYlXOmQzr%OWAlh8~0$Q!-Sf=;I5u+Z_y5i!O zKdI;NYaO`N@(1CK$F*KN(4O9@4B!)hlw|Y{rnvm;ju@!N1<%teDCdcmarK}lY~MEr zzf{n!at=>&fZx<-n8r>XPiVTB)w=3zZRp96OWy$d`d2y-7+QvGwkPh4!@QFts*g~Mpx-$ zQD^zelm}^4tTI8wa`?4}E8?0_C8M)>E>MgLLcEpsLy|B!1N@UeT6-e#+v5v%O`y% z*CL26`T@r}wb(RF9hA2(iC>rSoRZXnaW(5fERkGs4xiN8Yf^d+zkpWiorJJ((&1k> zXXZI%U+%FSeqE%EVrlmNsn)CXmZ;16Cl=HTG_2zFO2l0+VSLDXMIhTc%sy7(=d=1? zOIh}(yh=oq-W-0N1GEM0vdBFX^dsu9Z=_PKtD6VxqLtuZE>?nn_3|qF#v#^0KWhF; z=0@NbI#FEB|N0!zLhbN^Wb;&1Ek(3CL9eKx_RT4_p4y##=(&MjP2LvMjgRI!weXmkqQRoOsD%swqDQ-~B?#@*#FEU_ z56{y|;8#VEj;hdmEoCJgW%~yG<9bd%JPqb@9Z?S?f+;G+_FIr;Q@l~4VNO4MA086! zbh{!2x5f_Hpu=KF0$C2fzGfcefp$a}@6o~bP^Y#F-0IgbEzOAM@k<=^RkUg+*abkz z*QB2xr{1!_XZV-IuieeTcJ@o~WAQH6492?M^x9mC4+e#qov$;LZ8FGhAB)X(i~j; z!gmR(B1DWi{xwSb)W^7|_R|K!O zd5xi{beJOC_w23X3_!L%XmscKm!lt+Nd55FosE5$9Eq9AUTFq|#W0qzBvYo#7*d{lw3l@A{;@4` z4ix-O+RP$i^t$$Cc^1=4;+9xZCtF+e5>>~cC!FHnteo>N)sIyO<8=B!>>MiiOR>K53t2;8|Ig*(RSz?J#96l&B3oedQmGs?2R#lzHdCt zi(>Hx2*1@f`sDB{Z47nA1ZJwi&zn?af*?Q{s6^zM!><8;Nz}s6gQxt6Oa!h<10vW) zGgP0)ulHnh(Ox`&CHO7Jbo!Ms`h+|2Mvi}dN>`yD!t+bmYV!CpAY#XMFxS3(qN0J)9%LetdHk9}+`EeWT*=S{<}^;Z%q5%0 zFTfVnrNLY#3&&U;`4D9j1Oe`Q5)Bu3jB~I8z}7InYY>B%bdta{AJ(qU@~?Ek80!X? z(IZ$Li%fwr6UJQ0wWaYKe!T#U3rPDKH3umWkIJw)LASPGUNiXBj{Mipff(?{S$@pe zXM_$HEo(Vu9C*mL7r5h$C+kURVDvU{`Mf$U;O7$+@P3K4AgY^Dl1o{u>I+R{pqSm`CRLrZyc`1QEiWr7Pw*fHuCR!j?eds&=Y zBAD{d=!YrK68f$v&+6;haoQltV;b8OP|WDN+3aPQC$)n9pnBKo(bGx#NFhj~CE?0Q7G5T>%Aipbev%-WOQS^l+f zM0*8}8*@KL-4wGCP=$=|5OkZn^7wU-UbY+s2B{4m5g|*tosRN45fXFx*Nlq;ka-(v z8{M5Xr!*|woc!1LBS)-S4iEW0J8jjr`JPiM>8#bT&PRFv_2-0Tl5A^St`~<}uEZx{ ziA_2Dx<&3)+2=jz*cHvt*_K6q%xgY_UzNNI8oq9@QSQX^?Q9_$NK%x}+ShRL!$x{y zs0t%|*P0j{stRq|Trn^)*i;oN$n&pH#TCo(5}%4ssFBYD5px<4({lN*3;dXH=5?8l zS@4IyQ9dm@_QE&*pDm?d%Hh{YJdy4vUDReN!4UvkrCFYk_|-FuU(te5(G_vWY;?7m z?b<>(2RRFEVM|Uw++y~c?)x!&sXr=-D)oB8&B0_Kk6&~IQ32lb2Mdp=wLApDmK~8m zmQ-f&tHbjG|3oBD*b za1Tdz+lIY=1ah>}4yANc`z?isF`k@$_>uGpvd_e9XO>zEPe^~+w_`UC9^qMDX;OwaOp=T2#bYJ=IDn9yBrN|40sw&Ybj*6 zf0U4nEHDSZQs6Sd2(~Du!_lxYK}*y}yllRlI`qRBMmS`{8#}au`%?uN?mxL!gfkg4iB}5D*eQr5=x<5Z$L1KH|yoFT9O%xSc`ToCvgN$+%_q zCIaLYtaFBUFB+o>5eXJ2lzy`96{7gG(!@`(reMvf=lLvtK|k~~*=ub5?^+N`2!B>N z3Fg$OR_|4YDJEYJH>5IvXmGExho5b)-Lj=isU|Rmbcvy4R8#gz7c_`{nZSN+mDkTV zXRK^-8O&ibRh`#{lp)tH9Q{z3!fOI!;sn28Fz$Jtf*E`=OzrYHvVP-0UwKTs1TOQm zD329=f!#wJ#qHVXT9$C16OH8`1h|1z#aX1@Zl76crr zZ%9&82>!K$oabo9xR|zTJ09x;Y#p&89VPRj4W5Ok^%;5mdX&zN1UeIoy#?N`k^WBF z<*lTHJ^k>{EQeoG69z}y9>0b6f~YLdUhn*P+_kT=KOZo9wTgDsrCdOaFq{8U83$5taM!|GIKU1! zFMq(dQ+eNaL|yiv@1MGFrRkH){|;yS25-4($aIu|T`NNLP|~0f2OfC-O(TX;6A~?l+Y&;}`V3X1~z)fVsTXjI8Sn ze(^ozxyu<`eXJ^~Zmue1ZQf z-5I_A>-qdwlJ*;4dk7=^TiJ&o^CB57Di4>fjl*Tg@x;_L?CUXsw1r09iBJaoYqj|u zUdf9ZSea{IGXDi^nn2ogH61Y<+e>!Bk0G%F!`E~8H9;4JOM%UcYD3?ezyjpfW#Ns{ zox`sSp37ZL<=f8c!~B@l7(<*H!p>Zp4NdBz&9T8QRqBT*16UlmjUe-;Zr;iE7(b>v zI<*Y5X7gWv!(TDN3CM;PICOZEHxB-Vh;c2f$#VUnh6REO%7N4&Nhi5C!nOb%1_dfQ z;vPA5EXF$cK4;7p?5mL=bcD3GsFwTM6~P?8iuw&7V9Q?9+3KXdB#=1`fyTtVPWc$S zU<&!lx@<|>$ycs2QBV}&rz)F@`~Wg{y@W9iukK*(IRxY=czB7G^F%T{pwFq_I8NQ@ z<2BeAIAbWGmB%&2>X^m+yngr-wwd8M7VPw8`YPAcYIH^7!>8HDp5IDV|G4 zW4w4=xq^QsnM;@9+G)BVWXNv^dS*S~%kA2599nKyI9qZkU%#;~zL`P-CSx0^Xt=XT zl%^@gL+f=P%jt)Wd}A_fdDpXdG>{rADD}hr;_-3sH(8XNdCB}2vR%SwC}Zkgwc$6# zCiKJeQCO3qKj_*QziF4@sGwPd83;Vce;U(~5r{tdrDS1DzMnzxuQ#D5K&F%LN7f?& zwvHll$0t8@*9-NBh^)$m)*d(op{!bfe`zdENG?S3^@rc1jq!2|wCkOM1HIK*c!RTb?H&0NeQU4i><9`nTux!*xb454TtC zl=>kzqx6i4&Q`b$Y%7mntXB(XpdbD_y~w}BDOoyh&g94n-L=rvTd0fIw0j?7|B61l z+k*2!#IR{?`1zUmaJaa|vN2{&R7j|;GfK90ziUkmHdd|Kv^j@gpBh&LGFg2Jie_cP z2;52_-r(4ov-nl;KD96tm)S-`+gOIf9mMD^Yj zyJrT!7QN37i`;l3v68+8$j6zb+?!N7-1so)d4ZQ?L&+%1728X?e0FIg4LZ@F_c% zY>N3$D$8k1Ank=j7)OO$416c2A0{7sDuQo+0AbIlR$W^BfO4|^PsW|X->m%5ea}QY z31x?*^SFU{1K=BDCq2lz_ULo;!x1iahDndZoj%J$hUVFjSZI;Sy_GDXI(C8jL+)g^ z_p`8Zls6`Wec;qD6Ik~CynZ;rX86~+#D~;q_zl$Cd=oLGKcQHzeR+&AsTRUKA?dtT zR2TPUlv)9AWBE?Jp3@K4v#nGiI>2)P60FGA1K?4Eu9p1 z-HRt(wa|v&xI(M=&1lF>x>#f9`PXmQnAv2mNmta;WzjSSYSv&~6RYfyWNn>tj|t-p z^#;Qa>xq_I0h%@E94GXOsQE<#Ow)bOiGnnV2s{Avc~HubU9=RMCj@QO>9I4eecAH| zDPf1(?h}C;8a8FwVQGk7DGb}-r<3lwbMUVtBaQvrR(9Vei)!p*w?HLqgZXA=`PY8B zqTbB>Bl>0Y)gBPcl!MEt1e=3j7ENHe{rjJn`IH7b6j4I$a+N`xbNs8E5}nvTTT9Q; z1l%jA^eW?(Y|RPn0z2>8SGM4D0SnXF9ASs$bZks#wb*BdvWaDI%FcT>J*D(ivicD{ z%HH-22w;KK;ts^C&uHrbc3i&0sHQ>24B7rVC2h+hDCmc)>5ma-U~e+u3;oD{ z@hJmoWzh;yXm+BnT>k4E9eD#f+s*~!K`fI@grU-)3k@TWUu~k-?(e+M!7mDP5c&6v zgDfN)dHkZ@w!nYZcd~T|CZSzGLo*MSg?VsCo`1pfyZRwwEhBWVRvLHeH~zQ$SNfcz zkHu)JrE#$@t~m7@FNe0~@oS7-8EE2bGR>C(qb^~Q4u3BHDi}rZUCT?_m38b0^3+df zkO(^lV}y`6%fC=R?^XMOR+vR%0QK{ZMo+T-(3``raVRiVKpD)d%NycFE`DKx3*i$S zJ1tu@Fu&KVN^40DUg;^3ohupY5BZ>x&wss7XYG|OTa(@Q&=I`e>Ll>=h$qB-$<|!{ zYY+cKU2gk#J%29wO{;;|82YF=&72A5^uyiqwG@{0C}_|SLOccj2a8)GHs|oGh_+Hm zN{f}=F5q%S)aqU@4zg%p0jvO^58SEcAnag(mcsdHh<8Fs#Pb zVjFgP4s_jaM?2XU2(=JW4-dM}k@>GrMfDlL)^+rnSeZp3#|`wSuK&+k1D(yaFXX>i z8m_>f@_d;tsmo75%y$GgX-#wW!<|i8U$pgZ0{@!CbC%Q3lix5y={$bzBGeYXuEjPj z=D(tvQH*CHJw;13L>C{reoWSH^w8s@L8QjajRw+Q4=?~3tTM`(O{TPW6Z%F1o&;wH zN(iC84TtZ8$b-1W$mhR)B98FJovWWxZsTw9COed@@G+cNv8BDc--Y^l@3bAx_y?5J zbSVNM(SX=^k=N7Q`oqiYSV7${{F%B72;-Y<(9)GIqMcOiwul^0m%5q|?M#AAyeD2G z>6Qbg09u*Ynb}$X6*SSu*1O^;1HhPJR+T)_4vn!to^{tkQ<3dbEgMxIl3>btwE#sh zY2eq0M}C!Cf9R<_3`Q@@HZYzfj$%Q77Kn)K8T`6QX1i7$_S?!SXUzUgMMi#ty^zPR z^S-w{b#2AJRzBs3H!Q5z61pOmmT!qFIsRqKd1O2@xadzYP9$ZQ%-DoK@Dl@gX;M zQ@Xj<2;n*WhyX9>SAqcgMjr$&Lp9|qOc#{P_^<-#iSdX~02KIEankh3Xt35@i)=x& zh{wT>BkW^uckHoP(L(P%BHrUmdOS3f{{nt#8(%ITlw3yLAgZmR4)!GdgI%31S_@@> z%kRSZFZQ~bf)uQb(Fku4)e)r)kl5fUHuClJDY{nKq)FJKYsM|VL<4Z;^xOq%B4-F-@~ej{lhzbv%Q7FlMDv`)LMkD}WT-y1{SU`&q3rsuF% z%ty5Kh40WyqNcMb4e|4kxFhSGD9rJ%w_@nifw?0jrs~O}m8DydWbep$m*(pahw19% zzGTpXE0FxF`X|cm{JgkJl$^`wzfQ}@iV&Hj;kmhV>zMKhT`pUqDm~pf{2HfEj7U4S zF=GBAz?LL6(?)HJZ_fFzFIOI9&<2s)G7s`lXJTjRxHt%OzzM!A8FF4u{h=oSX&Pbb z&!{S@ZD$vnU-Lly-pSr@*FsZOur1T2T`wkU_(~KadVa2y_NBh>d$iP4vFE^Z4~1KWh%P>v+%V^vM+8A~EhrtTDExEMGtW z6Z&5m;kG{I169J7zC$jG`dR$41hVZ0((Wc|A%;+jqny_q!ZMoAf5G|_6@B1e_2ST` z3LNc&L)&DBB_qq>*ZuGtRvLS(Kww^@dObVUf}{z~-NbYJYq7SCObhlUflMZq;wNY) zuQ8+9!aRO4l+9;DQ~Gt%eVz7qD8Hni3n+on9RIp$kM+lUoswPn4NMR<+Y{P{Fe2z| zIsCc^*izQ{rn*tTVXYe9G9`tnd>bJC`x;8wpDj-fr2*AIvJ zMh!MN$s)8d^f;BZ#}Q1@*BCy@<-gL@?HPc#@iIg3(Dt%2@kRsz)kyRfrn!D~aM6$H zb$jTI&=h3eBX;9tXjnNc5ZF(KJbC@_T=J3zUMYRuv{S$UfKahIV0Bx`)30u&kY>XN8*tWktk6%|vp8qOJx7N~CaWjW3FHeLuRbstz{Ocn^ z{k%n@-&9`~z%SJNn|%WDVLZ>jj>!;<^Z-*W$-h=gr-z1C#^SU53-yNwg8}XxjF;1} z5zYe0&e3yap)=9Jc#eO)PZwbq+Y%K4h`J3=zf-XQi%EQs!S zhxUu=n71R3Un+GMeXDF+Z8x4{H1Og|0NHuiPKn6l*M5HOo*J${@)uL$vRd2*B6iu) z5B=FZex0K?t=jWMfWIHc8f>i(I`$``)(rLOIsDqCZDhM`m=(&RimJuET={}De6G#S ze`)hXc{Vs!`ghufu9_@z6HDkdyP{t^35#>yPjn&5Hn{nA*)rziNM%lVi9JU9xRn9E zm#R+8hWr;hYS;GpI_`c_L)pB*>kMMdbv?ch^Z13MD@LOS*{(B$wNTgew1R)hy_!(w z;MbdpMte zM=6(PRR#PyEgJ?t$>G460{t(nmy2{Lr%bYXL z4nRw#R7tkx@Jq_+VX;}@)eU>X6h*k};+HiCzi6)t50DI~P9s=WI7)IBK(svn!bvy0 zjh(1JJg8#s+u=ZZD=~MYWlsGDyx-sYcP+R@>Kki)eGA6fktjIhE(D4Wj|+O_+5g7V z{v9_C&?{!cBpf5~i#105&(5je5NWC}^^48rap`too>)_kHSNjQ&#%;eNZ~;})^e97 z%jSzMHle<(h6PgfN8Pmu7ObIe4LO)Q1I5kVX6UlEGVa*dVR*lz)GpV{@+_(RK8Id6 z$(9%!5q$SP#7-q}mde(@0YQ?>K7(2#+qnIkYKPbB_+T>l@+lN^B9=}RwYq-$MEvox*b^uwLB zzvyuf^uv|*Mt*x+acqI)gSVrQBc9`5JL!N?-K@X8qn-Yzfn22IjIU9JjfU;om$?v` z2obs-XWu;FUmaAmFtD2TnN?Fbk(ze*yv%=1+l?dJ7VCe#9J*nsL3t2{M?PI)8o4NvP6Fcv{jSwiB z2ySnc`Q@0S+n93yqzlH`5C!gm;=v$SK=dwci4iy>KWYR5T}~f+(F^J(yC46GZY9() zrq^0=v%S{{Sl+&P#I+q-bR1R?dBXRcek+}}p+_zJ%XNf{COWp3DKyK!US-G%!6(41 zen(B&ZR6b+QK0ho0{m-=Vi*o_(ZUJu0I5bD055XH zL>I!J)xRb87~lE;lH;gITBc0?>E%nK*JS);YfRJ^WT zq@DbiDT1BAuWo4Tz6aP^*w-qKPfA_v7W6%OL6pbJg7GEV22mraBFltBS+FK9m2t2T>ff zL3xs^mqKensmA%ikw9#78EnUS&t(N6C}sg<#JumdZH_}Wltc_w_c+lU&*i^-_~)iX zs{sg!VP1y(7YK_5beN3~<@qneo&gQ?0Whg88m;P7uGi#N- z?KuRuSJ)~jipm++zWQ+P_~)J#&7q7UX;%}Ea33LzgSk2 z`7dP2XZTmN;2i5^$RH#)Rcc*0k}NS-&LVbWA1ihB4d{orV(w9tG|M{#!csqcpEjG1 zU|ub^y1d(3^d21^ST1>Pp^WD{OLpM!+TrZb!`lqtmnrvHhi5=T*+z>DiN$nt;}g{m z|C0EX)Ny@=>=QJ0n`u5|!0nh^HsFY|fpoM{gY!JTkoe`SspTm{UZ%XgsFN+Djho6x z^v*|qM;m1RE5_1>(`Qh-jz+uc%8Q>w-37`HvuoBbc!%B)t70HxN14+{)^A*-o2g`_ zjv`*qx21UHRP)*Z=o$XS3*NSWo?2k~r#3fg&=1E~|N1Yk(x-^<@f?FX<(LQO_q9D` zl&iXw4N(^LbM60)XTZP8lls>KRqlHxN_9PLo+k8Z2*|SeC^$X@f%3SXVKep>TWGT` zfn#5h9rLKGGV}}WnZmSz*M*9ueEkM=q;##=c2TJzC!sIn@Qb`Q;ve|0Rjxl2l#Nf7 zH=dAThPWgeU-$3#oQ@$@-|l}Eg;Fs&W?@Xyn5XUuq%9gbd`reRsYo5WE)FkBZKl&l zZ58m?c5srtAR#HEi54#j8zjq{=U?#rqMre+swK2#v}9>ODvDWD)SIq9)Kq+*fLa(~ zJu=j9Mnhu>V8Ldf1Ad7g;o2AXrIbn;;Mv%aL1}Ru8;RWYvTj1UT>5!rj-*);hAIzaT9{79aEofD}b)WR*SIesu_Qzkv#UJsR6n1K zUpVVATKmwpBaF8X*v|u-W|}b~Juu{k#l~)|_8}gUssPw*Oz1%h+tI zM*XL8pF~Xd87w#_V=ddCSb%w9-M76eCy00+0%@Lq(Sb#XPJv(IfQiP;{Tre<5U+LZ zOP>FF(SH1lUdEOjK9H);>T3(XN2o}QX@7%#Xv*)B{0kEIBqSZ5Y}lI()Di7tp;VDM zhkwz<3?$qMJ&1)v>}M&`ORRdq7xU)pH?%2+$h->_M%EuHiJ}-ysrY10{rvl&U9}I& zyO`*RS<8!4f9V_qTsHGcQ-aalwJDHJJ)P8-!nMNSs-d>xGj7u0LF9*d%Y; z09s|$Vd^K`^{BjpP#&shws_vzSxh^$NWQF+c?Z~=1ezj~-5B0Ke8fYb_ z9B6}VD9=-WjTdEd=a(0avm+Yc20^bX


q9;T#W}0See3llhEyhTv0e_pP@BQa(^`AWFSsKcK7fm)a8Voi=G?#W4E0cjNOT5H zK>Db*Z;&?l50axr;nhvK$4uClFwEVUyVQG;1SI(RBpZxqgkpQgugd$QP@Q!?)TcO5 z+h4LD4j=d6orLEfbZuGCI8E_GK;gs4e_;uVb|_gS^sl3m{ho)(d5*`pKw}A{)K9iv zptlg}`?EM`fRj@rsP{A7?~?V02_Ej;yf^T^x_Q9akT%JrthNJ-YsfK+f)FLla8^&2 z%FrmBglsr2WK~{b4*yaKa*eGUOeU2=BpdPoDFMiG{Ocj)FeF24%^F8MxM0M>1m#JA z5E5ZZyZkPBe-yG^60My2d54Ix%V4qiWR`yw;8;pm-RXIkp<<1BR#f_4SB6@ScQt8S zI+TcOU%3CUbaOB;a^DaOnu!tU^BWN0;oMCGLgLKa69vcMTafD)EF=UEYgHZ@+)}7O zGg|^P_%(lzhO&7Z=g2}dXjJthKCGfmJ>iHki2B2r95XGtOs{jCci7)uz-)2IEJ-OF zL|Qa-YJ+iO7Qc3BSD|$Qwx*0z>I(L>lnvqen;n7Fd5)}~KT0pze(M__$@(Y*`VY=T z*tKh`2b3KDT7?qye$-~Pd}N-C1B_(-;cz@qmMF^eulog#1K4_`<@IurG$&EyJZeCw zH>#><`B%)dMEmZJa=;e5NISdAV^I`x&`YD`mENy_e{nf2;8*MjEwlZ#tw*qMwIe={ zg8D;B5$fklXYlL#UFH?YBim&D3uQK=HNW^X8R4($^1a=fnZ>Wm^ogeyi7~~bv{`E} z9$FxC(BH7PSab2~MNhfCnX{FeD3Y>a{|VUpZXRq$lFNBN62E>X%CkjNPu$?`NmNLw z^LzBFsI<}(Ejj&gj1C%>y;+vce<#u3=B;IKqT0DK1yMM!AJQRF+jakk_m$C6yUr@H zluPufx?<2b=ln95i;!qlk?qM+qxm;Io^1P+TF=&Wb-#^Ux$uMfdAQT%9AO5waWcT4 z-mi?C(-e_~9L%*Zp+2e}Z0T=DZN>-Kejv`zz;+Hc2Y7T2|Ed%R`3n!A&wCt4AwE|m z`PVCnN5EXz26ru>AEIo-0{1w<`2LPV!7A0d{+SIZErI0Wqwet;zh{)x%MURkDB&jJV`*( zk&*gX$&S(w)Ngi1I*WJB#mD)R^BB4zfxAT`gHDb@4`=grUIPHZTkf9ku^dHui z?eH1TQ)uMAJJlS1-9XzkS$~NA{EW8S4z3?rtRC=$cr*q#&E@_XME(35qRv9y$8{7J zG7fKDLLUIX{Oj}hH3*A4BwghwJ&8bZ-Xw~Xfw_EJ4!?N8d3sOO#nzl`eUh$+bQfIM7jFFlDwvu(9w3^|*?&S{{{yb`ma^FQ zdHEZ<9S3yDF@t}RNSmbl;{U>j+5^4US6-*7+sQ27yf~l#8lZP==ls`wbkVLi{Q_rH zFNsua-aqHhe<8v*fM0vrgn1tN{A#9rx#y&4jQjU1F&DptF$(<<=a;i=|H9+iK2mMe zA3jbs?Y?Zje&aEc^@n=4AD$FLG5;22yamT9Z5%N>-GcK(7!Po#Q_el>d6lMYguC)8 z)T;vS!dA{3xX72IPfkC?U7coa6yaqhL66E7Z%}@YH-=1vrDRl7J_r1Z_L+gTh}Bif z#A@tfdFT~+bFQyr=iRlC{0mpRwCma%TVzlnFH0PYJ9&oy%hey^{@!@`I(_YiL$uRI z*+vI@hfp*d1EQtf=ScpQf;aZhSGJICpzLs&a)d^xf#WpF+e{9};a}j(hu2IhU*MM+ zXqUugSwD|?WeQ`mkK|udqP7`+BaLX!j6gI zm=hbn?fO;ZzvwEj6RXcDQ|vfz5FwmGq?c{zwAnfJhlFc;OKUcGvSMl}fUHN6T3n+n zq|fPx@T(SB$qx7y)Z6eaDTgnEAfUF{{VtjRI@pY34uCB$%!MYdK!^tO^&9F^_yn(U&p0$;)JI|PbWk(-efj!B;Fp{! z!oqPl5Jx{84;?hXMpOCv4Sc&8;^F5iP}ncR5?Jwx?Y!qX`L9pRhIH{k1^Qtn<|Wr+ zx(E7UWOE+BJlKb(tlyAk#a8zyrjRwIYv$a47^Ed?0B4awE8cmqy0_SBsiGm|zi=aB zF8>9#C1PD#y}Fv>&7rO$87xWur5NbbF892=f8#|CTy7}*7Cl4Nyy#o(dIIsWfetzR zT7qhTz5TxRo4<&I%&W}e;AVNF6!7aa_eY(?Jr!$kbv3R%gz3Gc$aB760lD*ERN$&l zsGrCAuVhmejX%+~9yCtn@oSgyBD<>@=Ux``jcco;;KCU>o)Kika{A#e!kM)ZjIe=l zbsO-Do#4)x+hOgdoR_RWOj$v$YtT2kY`98ehr9(nl+}$n=a=bHtkLqnxH-hq9BZ*3 z4i@KtY%I#mcL{Qor6}qTu}rcL?iF$8H2_14$nWwPmn8}dxRg`cnAXH$o(*(O!RacT z3utrtNdC1C_n7HDxc2bZU7;tmfp|5&<_X*S{v3XJknM`G5vcL!AasOJ!-z~%=D+lQ z*dUkRCF>7|AUL9IW6ao2urI=t_Z5JVeWv~pRv`QWLv`{6VxH-Yd0Q%vUy^?z|HTo{ zJLi|}3itkARCG+Z_67a0?W$U*p=_g8(#aTrY&~5ms%t4m{>$};!pJ6Hemn4Af~D~= zb!YlxkUGQ0Fvm$!a7NXcd!oP=L#o*m1plJVgj#D4<2)6FRR;3+Z~T~E-qhcmz?CB{ z-M+vPJm*#;)%6JBAXpB+-la*q_Bxau&ZDEauBRl?{S|XMJ@kNYe;&UMVx|oySfng( zc+En+=mb0@E^3?9bNICzucfYMwb*RpUcOojFX~~Q<|{>bKkiX9<$F#S1PNhk7Wa=~ z%rG>4N6T$oGndCuSdzo9C_{Xx1r4UfzSCx|#iB%+#|}LRFOkEqTA)?=IzYe;Y@65} z(^nTRp`M;wVrAdTUlH;JV4nZWjAWo)aI(u$IvdIBhdbfx9A0^fy9eAVocfKn zHJ{}1YXbAC<*O~7=nsIc)plzTj&TKF9m(@Aoc)(^cqc>gjJ6vM?_!2e>>%=A6q9qe zAqaNa$-gtca+hG>T3hVA1n2U^j_;K#))P(=8saAA+vA%v`g6?n*?ly zdz37nXj>?Qt{r$O_>uhU7o)WuzCPtP$Owm^#j!SemKxhWKj;3ab%+K7G40v-t?2KyRnwUud}p|`!Yy3ob}WO zzRGKM%;8@&5rdiv*rG2q*U@U*TqAkLf1q*`eCSGG{I8P)tSr(?oZl^=$^Sib8 zvDvtM&%uJn7;32A)?SSFh-8;V8WncaKGU*`mZ49(>?83DX{Hu!lI>J+F54bl$^Hp= zVU8T>fFQ|bpFyojyw}@g`PS;s&rAZ( z@Jn3c^^5#g>ksH+w9zOTRvt5^dKyMcdb;P}S4PA6FI#C8P68y^J!#@E2=E@6|H|Q4 zq7;AiAi1MPK$tR7CJH@jWVrwlGiUf0@T*UIWF(j<4WaNRFj{5>_Rzla7w)}bIBw3` zmplbva{TiUlXqSK<0LLu@(*$T%e60g|KUlh_4t4nOv;9c!}nlb%lX!nLau$e`eBX4 zuM9N+$nF6DQc=j^d3thouL8g5in%X~YnB@U>o`!qUYX*!X`f(mle75sF&%t6kPQy8 zkcR7ssd%tug5)h&!M=R`p**&1+OQ@c;npWP=Cnv*q0l(v>Kiiuh4^qJm;zoPpJEp6 z9hork3ByGkldgS9{smmlgtp**+H0Q1!B9#$YfKuEg}(2CH+9M_Cixf6Nr`zUfM3^W ziEwzzv*J(yF>MaN_TV{43%&$=$NT9i#vdR+pa>yxCveb|&yoCVFOI!ey&6Bqwk4{@ zwfze^B%+zH_gZ%?B>&oLhDM6^1jeA{nnuyGxX*}tvXen`_WmfD|9Vl>jNbv;#c}P1 z1t9x8!(B{gfDW4b94G%pp?|@#WjUS*p?=WOXB>qbcuw%M`7Z+PdQ6!> z{b5}a!w4d9jtE4NdHjMt--r_HZU7nZ%P(}BCUFA7Z~t%nD+Bj_iv!Tu&*Ov}r8<0b z&VQ}b4x;?kyUTkE6q$a9XlPPML@Y4}zht&6INXnmq*?+zff^5bnpLzUGN}6Ca_*X{ z!kR!&wzsH!w_&zPEsjgX_qONrU&!VFwtPJm9!j6ZwHrct*GdmUKRlX0{{{Yq^70y> zReaidtwYkT__PGy&+soDS~Z#h<}1 z*q6jFdDN(!2g{hu*;yR+mB%k>UywE8DoX2jp8yF3BV)LObPj%jZ6$}+!U`}Rs*Q!d zi}x(~Al`f)zhv60c@6GAltvV*kzynMR)WkN<@pype{Gq}f5EI)P)NX4!Xu%Puipq_ zjmt&w40NPT*oV<^)E{mV6~b>}i#TiH{QVRQJ2MrR_El+V3k#v-2y0l26wcvaDPC@4 z8=sPMPvZRYI|V(OEaaHWzy2ilW|9ATo3@G-7Sdi+fBu$OVfth}z-9U5Ip>#m(Tio(W7-4pQ*Hlh+^K3`$H4Ye`KY&( z&0q@AF3HG5w5>2hFHpJZ3?8RiP_WE{bNV;;ZY)kQ-F zaosuN4{(fdXqV|C$9k>o&f}Myj_pk6KYLJ!xL+BgNm-GY!b}}(n&Dq^*G)iaHB=hNdJ}Q{m-;hs1MNA?RkXbP*up-6aWiA zpIQ6z(OzNNRp4JvdqqRb_D$5O6|(FXKi;7r$)z_rH1|#SAmVy#i9_ z4)9_$vdCo3)NkPaL%9|<`beoW6fH7YmUeW3Ge$mBzflRwIm{|G6k*y?i?IkY&UR}G z&xygcApZsCD^Rkq9N^Tj(&*yJe!MC(0k9q|M6Wa`THr4 zXZ7`1I8!c##IL=oX=;(cD4@-}y{rKkw6EPpfc_MZ|~}3<2bJSo4q}9$vcXB6fZuzvb&^c`@~Z6$(C)wlBMDC!>r6E zXIo!2RP>Y>g$t+vr4)$@G|}AYEU1y3Ds>7dfd4qjMxZt+%ESe#3Prq>MV4`tT4;>4 zaRh`0+@ffl#zk7xjvKSTH?y<1)H#7r^uO?6Q$Iewo7wqz?>BG07JkF~hTDr_q2w2V z!QzthhbTL|s0+XP&{Mr<=mY?2W99rIZF(FYdkeP2V^yf3bqT3T0=(+856sg5wHkQ@s)K3r@qqTCF@)u=DeJ{*b_5Dl^!`MsZ#UI}f0r zIWd2z@8-RR_XYeH9|U_c_4{TbG3KwcY2B2v=N;V-naFUTOtjJ$@84J=?AB0Tb1-nR z?g0LB5CH;Yuz$n&AKZVapSjEDen^9(p5NE+V?UehPVC>{`NK_9@FeKZbROGL>i1*+ z#@%7&S}Xp-t{8>m8$KT6O^FS$e=2Z)l!Fu2F@ItIA-xyuxQre3S7_S{JC2|U{zbkQ zUgEY$?B9UTB(EC#Li|O1E+F&I4&H6HbkBM3U+YEshYBPs z`3sx}`^q}UmqxB-X1nKtGlWHd0gf|%OrZDD#%t)k7>2pO7ouZ-1A8GhhN+p3#QY)8 z7H0Nm?x4S`VNdeAsW;s3)*o*2{2}*dj9YMjFRTeS`J~`vM!9RPeToTMeynNZFNyIy z?_TSDSAf4l97H{u`V@Uz?F@Jf>Fe<`$6v4}zU}b3)5r}hW{x-ob;93x1rv!8r}&1y z!i>amHoWuY@}o=6A956_P>RslR~7aJ-$IY#+9<*{zq!l~Cq+1|BQeSIPp;;jix~66 zM^$<+;+aojm8{1-{t2~sQm@%Xc{K>dA?*D8B5#|oV4#R|0Vfd4oPpnn_)GEpAydFo z>ZriR_ z+B6Q&&tqDgfx18qJ}f`VI@Z3jx?DVeNLX{3o5JNXh{({&@%c&x{=zfM-sal31(t_G zjC)U;7i!>{WB&4A#%dRyS?>o3JC_WRiQaI1%wH%Mn)~zb>iA0sm?gq{5F{8aj=%oR zXFpGTpA`;yHTnFqbD^#oEh;jH;e7;ANp(8ccI z5OzA`{~0_9_}#`|IWz%^vt~B6G5D!Gt1zuGh;hP>Yag8*i{r10+!i5N_yhHUd{Fg% zFZG?^0B-b6C(eI;RlSepA^71|lpMR;>o z0Lh|hQ}9>t6Xex{unU_9wujk)RMvSV$AMU9%wM)#m<9cx3SMXSX6kQoka=hD+wXM7 z{Ppkjt=dE3v$L5Y?^{aYiz> ze|=u@4UKrh2MD1eFLK@CKgWUC(Q>^0wMftLcz)LD4UW%Xko>?P_spQVYXyJd9EU>p z`xW(SIIFTRW{UnB^wI@L;`=vv=L4n<)mRjN(fTD?;+gFPe_^*gUpvpu^c8e$fDZLd zSsDk3*S`+2f1W{fjMz$kmX9r)iA3*As%h81?o`m>GtPH*{Lwhp$Z#(mJxl9DNRs>| zM=FJW#Bnu=`T0t@pXXO4n6WO{Ofi4>aYTsQVRLKYpVg-Bk@~6N{9^H?Zj2Z$f8B~m zO6{ojo=tt1z8Bsm^@U6CoA~R?9opCN{9zQ`aQD-J7~cP7K!+J0>i1VVdbY6XoTl@t zTXh!+8#$QBTI*jht8;i%hvTn64l|L}0PxIZGrxiT^Uy&lD%j)kjL!>UgM2sLd5N-5 znsG}rXPzfA2V7^3fYO zZzUb6gTJm)i8s;}1q&Rm7+XIu*{VDfF91LT{%2TZH?glvk>+8#*qFJSi9RS0DX1SO#9}A?GzU+eFy4 z1`A<-6O1I{uXDjR^uyj+d<#xS_0DE+xm@*AkXZi0{ZX{6wk`E8rf?Cy+SVL_W9$Ht zVMl$cHGjx_8iJd)1lV?{P~kkoInV)aia3Rc@6g^r(5X;OZD1RmhBXZkbd=#Qy#FiU z<53y4>lMG|q3nK{b()kZwc;;K3DQF$p70R8Dq(1|nM2O^F^>evpWCtMoAgt-I7mi# z|AxZ7B7Z?YWJZhmi{D>~m2}GTmEd?mmBK46w$LAkn*&JV^{?Mmmn6ayexKC)G^lzn z4z6)kkTOK6KMq5t5eNQxic{ULpw;K#z4zYxFUnlHp(7#2RP*34kgjssI_O&ovG z{Ag-MUiTk#d*)&wW=603pLTn~&D?#6=Eu{A#R0j`&tC!99RYe?KJMqk&AN|ao23ZU zRM6+S^){daoea2GRB1o*EtNSHa6Xr|l zX#-{e_K^&8xUn%V7fHBJmjp2oE{&RLL;OBEV9GvU#Z)3@h1qsvP)ygk`;SI>&C7IE z{HCsrE)8T}bv`BbLy}kanPsYqd71~PM@1lgQdCoXw!bIVDZAjaV9fL3`D@t$1C*B7 zI#fg@?maw}Xn}vP>uO0r`hzwtsp(*?=OV&4;Fa{fp_YV^&U`stt?du?dilBrlV0w4 zx;m#N%9g8qL%F#EN~#c~JW4!swN?o5^|~8_Ew!#-aw-?=RMY##UfQGb2222mf^g_D zm6x`?I>e}|RQn6*1bECys8udfGVndu5e)jg{ivbD7H}S` zX^G8ielmTycA&biaOXk<@(Z0tg1&0%aAGobSY59^Sm;@Z!0k|e=6dzhh16;CVdYiF3i&W+?2DWm&1$?ZN{y-D7SB~C8KMqxQ0+hXkwW@J?qFkol|lMo zZK}GrkheM$GCd;>&_2pDSVvD#e<)_$X}X2tye7(2MeB5UqOJk)0(=!c7ZPQkx$Fk; zxn<9a^sCEQ)gXVYT|pmqm& zFD-4kJSvl~&6k0Q>`P0O8Mn|x*&(GcWb_;c&7jDjrX@Bnl-;8$t!6+*Y_X8kc2MlzKACbcBe zN#{0?PtUCFcjv`sIbAV8Xb`8fKK=CElcl|<^Do4}jU+103cVJSECde=pqv2g$$4o> zq~wi%JXcVY1G$q7(vt$9nlCgUX{9q!$?bOch`iJwF9d*ZBsMQ^fZM!3!0q~FOyuSb z*v%5FLfHJE@GjD#3(%0~DjI~ul2|93dV*dL?=SUCYY>#O0HVPXX_Y*2gbt`%g7l)x zr0__PJK1q$bRC1x>Z~tJE%=)orw>LTdvLuk!@g4E^ng{Noy#9v{?77$F8{0@#5y+v zM!uhU;FTZEzI2GeiJ{Pp{`PrtVICs(fihX(g0L9DawvmgDzbASETkKSYOCl9{$ z?0egePA#nc+FNh`L98R38Tq__x7#(B1Xo!SS|vBh%P~PuGeO5XZGOY8TTh~FIz%7B zr_8VgFl_Yk&;+{Xxh)dl@kCqv+;o_!<8*H1<%poGSo@DY!|twHUvvCIt{vD^!mM^( z>5`ak1JXBIAyJZ-$r3cVQh@aME02u=?J|tnJgS=uIZ2|aaFsw4Z zSBf$`c5*xt4@|(zCY_4-Md{eQq+1dFG(ou}AeQtyCa)>#pi$*l-GXQbCK;Ln$0d1r zASP&lNJoNC+jtq0E6mg~;uJCI9iO#3g|3ApxXO~y zWLBB5{GM;|JD7SJ1f9Pe)nPj?x7n9O*$=8h71ng34XCJK6IJ)9xPu;1xurH>`v%%; z1uw@0&Ae>VL7T4R<(QxWtPc7HA0Px}J8gh$xl&XKHM@QG2p;ZB^0ppApk2}v=$1$nqd^af@l`|+^=?s=n*uNp2u8S_#N zAHkq>S~`U&KtT-KVO(Ru0-H>$OL=hR*lh}P)7@?}dYkzeLX+GT%is$_;6siiSScjY z$D^&ajzCYEom6-EbaHTz&Z^-+U$q&fU7#MF5x2Z^0y*3C!9s~3msfQMC;1xkggxD4Sg~d zKw*lJE6TTd`2pzUDt(gHEp-kVQ0XiQF6O$rVGIllAW^KQ;&B@RYEVW`gXhM>C#n>oq@ZSsTk}5r zkJ{FsxOL5f24ub^TcbeRxBFGpGWV4hkddUfH_{>sZ#B?S=vs6uz7ZNh;-?DCFWuxQ zjRFb`Fmn71^nU;zW+kl@!o+9i^73-XzyGQQJC8+@SZiner#A2lb&kCp#(!t58t3eh<#UZWYNH+Sk z2B#imO7}PB;E;Q-wF@e+MRGa?1+N4^UxF=X`P$r;4n`%MfZIwEe;nr|V;#0-*VrDW*MH(Lh7>jMt zL-o31k!@La_G?=%gs|nSbU0zlKB|{(8LrafbR7RoV+i#FP_{MXz?RvwdH3q#!In`! zwQ)8~WpxOy5+>}p1ZyWRz~gG`M#*KQCUovGIu9>L;6u`RIWl47bu5hk&LGZx=ki}JDj|8kQbY>O1!wM$g~ z^_%?4s@iG|tk%G44XoC{Y7MN`z-kTrQq_PSFJZuh@sj+dD)?$)S8HIk23BiewFXve tV6_HTYXCJ+!WAe)UwflO3jb27M6&B3H literal 0 HcmV?d00001 diff --git a/fpga/fpga_pm3_hf.bit b/fpga/fpga_pm3_hf.bit new file mode 100644 index 0000000000000000000000000000000000000000..76dcb8d98b9abed252a733ac03141958baf91129 GIT binary patch literal 42172 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 z�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 literal 0 HcmV?d00001 diff --git a/fpga/fpga_pm3_lf.bit b/fpga/fpga_pm3_lf.bit new file mode 100644 index 0000000000000000000000000000000000000000..593a9031f9bc0765bcbf12e5b1b63a0e88037c42 GIT binary patch literal 42172 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
  • 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 From 1292a572cbac59fc86c242b6417af9b90cb9e325 Mon Sep 17 00:00:00 2001 From: AloneLiberty <111039319+AloneLiberty@users.noreply.github.com> Date: Wed, 12 Jul 2023 23:32:35 +0300 Subject: [PATCH 0184/1034] Don't require valid key or proxmark3 for hardnested with --tests Signed-off-by: AloneLiberty <111039319+AloneLiberty@users.noreply.github.com> --- client/src/cmdhfmf.c | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 3419fc1b7..b48fd3d0a 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2241,28 +2241,29 @@ static int CmdHF14AMfNestedHard(const char *Cmd) { snprintf(filename, FILE_PATH_SIZE, "hf-mf-%s-nonces.bin", uid); } - // detect MFC EV1 Signature - if (g_session.pm3_present && detect_mfc_ev1_signature() && keylen == 0) { - PrintAndLogEx(INFO, "MIFARE Classic EV1 card detected"); - blockno = 69; - keytype = MF_KEY_B; - memcpy(key, g_mifare_signature_key_b, sizeof(g_mifare_signature_key_b)); - } - - if (known_target_key == false && nonce_file_read == false) { - - // check if tag doesn't have static nonce - if (detect_classic_static_nonce() == NONCE_STATIC) { - PrintAndLogEx(WARNING, "Static nonce detected. Quitting..."); - PrintAndLogEx(HINT, "\tTry use `" _YELLOW_("hf mf staticnested") "`"); - return PM3_EOPABORTED; + if (g_session.pm3_present && !tests) { + // detect MFC EV1 Signature + if (detect_mfc_ev1_signature() && keylen == 0) { + PrintAndLogEx(INFO, "MIFARE Classic EV1 card detected"); + blockno = 69; + keytype = MF_KEY_B; + memcpy(key, g_mifare_signature_key_b, sizeof(g_mifare_signature_key_b)); } - uint64_t key64 = 0; - // check if we can authenticate to sector - if (mfCheckKeys(blockno, keytype, true, 1, key, &key64) != PM3_SUCCESS) { - PrintAndLogEx(WARNING, "Key is wrong. Can't authenticate to block: %3d key type: %c", blockno, (keytype == MF_KEY_B) ? 'B' : 'A'); - return PM3_EWRONGANSWER; + if (known_target_key == false && nonce_file_read == false) { + // check if tag doesn't have static nonce + if (detect_classic_static_nonce() == NONCE_STATIC) { + PrintAndLogEx(WARNING, "Static nonce detected. Quitting..."); + PrintAndLogEx(HINT, "\tTry use `" _YELLOW_("hf mf staticnested") "`"); + return PM3_EOPABORTED; + } + + uint64_t key64 = 0; + // check if we can authenticate to sector + if (mfCheckKeys(blockno, keytype, true, 1, key, &key64) != PM3_SUCCESS) { + PrintAndLogEx(WARNING, "Key is wrong. Can't authenticate to block: %3d key type: %c", blockno, (keytype == MF_KEY_B) ? 'B' : 'A'); + return PM3_EWRONGANSWER; + } } } From 82d80cc2507bb3a62e2dab2ace32fdb5b697910f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 14 Jul 2023 11:33:47 +0200 Subject: [PATCH 0185/1034] better memory clean up, thanks @gentilkiwi --- client/src/cmdhfmf.c | 9 --------- client/src/fileutils.c | 1 + 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index b48fd3d0a..3f704ad62 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -577,9 +577,6 @@ static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t n size_t alen = 0, blen = 0; uint8_t *keyA, *keyB; if (loadFileBinaryKey(keyfn, "", (void **)&keyA, (void **)&keyB, &alen, &blen) != PM3_SUCCESS) { - if (keyA) { - free(keyA); - } free(fptr); return PM3_ESOFT; } @@ -1339,9 +1336,6 @@ static int CmdHF14AMfRestore(const char *Cmd) { size_t alen = 0, blen = 0; uint8_t *keyA, *keyB; if (loadFileBinaryKey(keyfilename, "", (void **)&keyA, (void **)&keyB, &alen, &blen) != PM3_SUCCESS) { - if (keyA) { - free(keyA); - } return PM3_ESOFT; } @@ -6289,9 +6283,6 @@ int CmdHFMFNDEFFormat(const char *Cmd) { size_t alen = 0, blen = 0; uint8_t *tmpA, *tmpB; if (loadFileBinaryKey(keyFilename, "", (void **)&tmpA, (void **)&tmpB, &alen, &blen) != PM3_SUCCESS) { - if (tmpA) { - free(tmpA); - } goto skipfile; } diff --git a/client/src/fileutils.c b/client/src/fileutils.c index f266da9b2..7ca59ef85 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1609,6 +1609,7 @@ int loadFileBinaryKey(const char *preferredName, const char *suffix, void **keya if (*keyb == NULL) { PrintAndLogEx(FAILED, "error, cannot allocate memory"); fclose(f); + free(*keya); return PM3_EMALLOC; } From 5022e21db525a6c757089e4bd787992175f0c174 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 14 Jul 2023 18:13:18 +0200 Subject: [PATCH 0186/1034] added a iso4217 currency table. Borrowed and converted from the Cardpeek project. Thanks to them! --- CHANGELOG.md | 2 + client/CMakeLists.txt | 1 + client/Makefile | 1 + client/experimental_lib/CMakeLists.txt | 1 + client/src/iso4217.c | 35 ++++ client/src/iso4217.h | 222 +++++++++++++++++++++++++ 6 files changed, 262 insertions(+) create mode 100644 client/src/iso4217.c create mode 100644 client/src/iso4217.h diff --git a/CHANGELOG.md b/CHANGELOG.md index 56daf055e..1981a2e8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added ISO4217 currency lookup (@iceman1001) + - Fixed bad free in loadfilebinarykey fct. Thanks to @gentilkiwi - Changed `emv reader -v` - now can decode track1/2 data if found (@iceman1001) - Added `emv reader` - act as a EMV reader (@iceman1001) - Added support for Apple Wallet NFC Passes with the Value Added Services protocol implementation (@gm3197) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 91742b711..385e5b29a 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -349,6 +349,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/fileutils.c ${PM3_ROOT}/client/src/flash.c ${PM3_ROOT}/client/src/graph.c + ${PM3_ROOT}/client/src/iso4217.c ${PM3_ROOT}/client/src/jansson_path.c ${PM3_ROOT}/client/src/preferences.c ${PM3_ROOT}/client/src/pm3.c diff --git a/client/Makefile b/client/Makefile index 8b9e469ba..2e241ee1e 100644 --- a/client/Makefile +++ b/client/Makefile @@ -678,6 +678,7 @@ SRCS = mifare/aiddesfire.c \ generator.c \ graph.c \ jansson_path.c \ + iso4217.c \ iso7816/apduinfo.c \ iso7816/iso7816core.c \ loclass/cipher.c \ diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index ca8243dbb..377a5ea58 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -349,6 +349,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/fileutils.c ${PM3_ROOT}/client/src/flash.c ${PM3_ROOT}/client/src/graph.c + ${PM3_ROOT}/client/src/iso4217.c ${PM3_ROOT}/client/src/jansson_path.c ${PM3_ROOT}/client/src/preferences.c ${PM3_ROOT}/client/src/pm3.c diff --git a/client/src/iso4217.c b/client/src/iso4217.c new file mode 100644 index 000000000..a385f69ec --- /dev/null +++ b/client/src/iso4217.c @@ -0,0 +1,35 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// ISO4217 Currency information lookup +//----------------------------------------------------------------------------- +#include "iso4217.h" +#include +#include +#include "commonutil.h" // ARRAYLEN +#include "ui.h" // PrintAndLogEx + +// get a Currency description based on the currency number string +const char *getCurrencyInfo(const char *cn_str) { + size_t slen = strlen(cn_str); + + // skip last element of AtrTable + for (int i = 0; i < ARRAYLEN(Iso4217Table) - 1; ++i) { + if (strncmp(cn_str, Iso4217Table[i].code, slen) == 0) + return Iso4217Table[i].desc; + } + return Iso4217Table[ARRAYLEN(Iso4217Table) - 1].desc; +} + diff --git a/client/src/iso4217.h b/client/src/iso4217.h new file mode 100644 index 000000000..a35ff8f93 --- /dev/null +++ b/client/src/iso4217.h @@ -0,0 +1,222 @@ +//----------------------------------------------------------------------------- +// Borrowed initially from +// https://github.com/L1L1/cardpeek/blob/master/dot_cardpeek_dir/scripts/lib/currency_codes.lua +// +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +#ifndef ISO4217_H__ + +#define ISO4217_H__ +#include + +typedef struct iso4217_s { + const char *code; + const char *desc; + int digits; +} iso4217_t; + +const char *getCurrencyInfo(const char *cn_str); + +// atr_t array is expected to be NULL terminated +const static iso4217_t Iso4217Table[] = { + {"008","Lek",2}, + {"012","Algerian Dinar",2}, + {"032","Argentine Peso",2}, + {"036","Australian Dollar",2}, + {"044","Bahamian Dollar",2}, + {"048","Bahraini Dinar",3}, + {"050","Taka",2}, + {"051","Armenian Dram",2}, + {"052","Barbados Dollar",2}, + {"060","Bermudian Dollar",2}, + {"064","Ngultrum",2}, + {"068","Boliviano",2}, + {"072","Pula",2}, + {"084","Belize Dollar",2}, + {"090","Solomon Islands Dollar",2}, + {"096","Brunei Dollar",2}, + {"104","Kyat",2}, + {"108","Burundi Franc",0}, + {"116","Riel",2}, + {"124","Canadian Dollar",2}, + {"132","Cabo Verde Escudo",2}, + {"136","Cayman Islands Dollar",2}, + {"144","Sri Lanka Rupee",2}, + {"152","Chilean Peso",0}, + {"156","Yuan Renminbi",2}, + {"170","Colombian Peso",2}, + {"174","Comoro Franc",0}, + {"188","Costa Rican Colon",2}, + {"191","Croatian Kuna",2}, + {"192","Cuban Peso",2}, + {"203","Czech Koruna",2}, + {"208","Danish Krone",2}, + {"214","Dominican Peso",2}, + {"222","El Salvador Colon",2}, + {"230","Ethiopian Birr",2}, + {"232","Nakfa",2}, + {"233","Kroon",2}, + {"238","Falkland Islands Pound",2}, + {"242","Fiji Dollar",2}, + {"262","Djibouti Franc",0}, + {"270","Dalasi",2}, + {"292","Gibraltar Pound",2}, + {"320","Quetzal",2}, + {"324","Guinea Franc",0}, + {"328","Guyana Dollar",2}, + {"332","Gourde",2}, + {"340","Lempira",2}, + {"344","Hong Kong Dollar",2}, + {"348","Forint",2}, + {"352","Iceland Krona",0}, + {"356","Indian Rupee",2}, + {"360","Rupiah",2}, + {"364","Iranian Rial",2}, + {"368","Iraqi Dinar",3}, + {"376","New Israeli Sheqel",2}, + {"388","Jamaican Dollar",2}, + {"392","Yen",0}, + {"398","Tenge",2}, + {"400","Jordanian Dinar",3}, + {"404","Kenyan Shilling",2}, + {"408","North Korean Won",2}, + {"410","Won",0}, + {"414","Kuwaiti Dinar",3}, + {"417","Som",2}, + {"418","Kip",2}, + {"422","Lebanese Pound",2}, + {"426","Loti",2}, + {"428","Latvian Lats",2}, + {"430","Liberian Dollar",2}, + {"434","Libyan Dinar",3}, + {"440","Lithuanian Litas",2}, + {"446","Pataca",2}, + {"454","Kwacha",2}, + {"458","Malaysian Ringgit",2}, + {"462","Rufiyaa",2}, + {"478","Ouguiya",2}, + {"480","Mauritius Rupee",2}, + {"484","Mexican Peso",2}, + {"496","Tugrik",2}, + {"498","Moldovan Leu",2}, + {"504","Moroccan Dirham",2}, + {"512","Rial Omani",3}, + {"516","Namibia Dollar",2}, + {"524","Nepalese Rupee",2}, + {"532","Netherlands Antillean Guilder",2}, + {"533","Aruban Florin",2}, + {"548","Vatu",0}, + {"554","New Zealand Dollar",2}, + {"558","Cordoba Oro",2}, + {"566","Naira",2}, + {"578","Norwegian Krone",2}, + {"586","Pakistan Rupee",2}, + {"590","Balboa",2}, + {"598","Kina",2}, + {"600","Guarani",0}, + {"604","Nuevo Sol",2}, + {"608","Philippine Peso",2}, + {"624","Guinea-Bissau Peso", -1}, + {"634","Qatari Rial",2}, + {"643","Russian Ruble",2}, + {"646","Rwanda Franc",0}, + {"654","Saint Helena Pound",2}, + {"678","Dobra",2}, + {"682","Saudi Riyal",2}, + {"690","Seychelles Rupee",2}, + {"694","Leone",2}, + {"702","Singapore Dollar",2}, + {"704","Dong",0}, + {"706","Somali Shilling",2}, + {"710","Rand",2}, + {"728","South Sudanese Pound",2}, + {"748","Lilangeni",2}, + {"752","Swedish Krona",2}, + {"756","Swiss Franc",2}, + {"760","Syrian Pound",2}, + {"764","Baht",2}, + {"776","Pa\'anga",2}, + {"780","Trinidad and Tobago Dollar",2}, + {"784","UAE Dirham",2}, + {"788","Tunisian Dinar",3}, + {"800","Uganda Shilling",0}, + {"807","Denar",2}, + {"818","Egyptian Pound",2}, + {"826","Pound Sterling",2}, + {"834","Tanzanian Shilling",2}, + {"840","US Dollar",2}, + {"858","Peso Uruguayo",2}, + {"860","Uzbekistan Sum",2}, + {"882","Tala",2}, + {"886","Yemeni Rial",2}, + {"894","Zambian Kwacha",2}, + {"901","New Taiwan Dollar",2}, + {"931","Peso Convertible",2}, + {"932","Zimbabwe Dollar",2}, + {"934","Turkmenistan New Manat",2}, + {"936","Ghana Cedi",2}, + {"937","Bolivar",2}, + {"938","Sudanese Pound",2}, + {"940","Uruguay Peso en Unidades Indexadas (URUIURUI)",0}, + {"941","Serbian Dinar",2}, + {"943","Mozambique Metical",2}, + {"944","Azerbaijanian Manat",2}, + {"946","New Romanian Leu",2}, + {"947","WIR Euro",2}, + {"948","WIR Franc",2}, + {"949","Turkish Lira",2}, + {"950","CFA Franc BEAC",0}, + {"951","East Caribbean Dollar",2}, + {"952","CFA Franc BCEAO",0}, + {"953","CFP Franc",0}, + {"955","Bond Markets Unit European Composite Unit (EURCO)",0}, + {"956","Bond Markets Unit European Monetary Unit (E.M.U.-6)",0}, + {"957","Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",0}, + {"958","Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",0}, + {"959","Gold",0}, + {"960","SDR (Special Drawing Right)",0}, + {"961","Silver",0}, + {"962","Platinum",0}, + {"963","Codes specifically reserved for testing purposes",-1}, + {"964","Palladium",-1}, + {"965","ADB Unit of Account",-1}, + {"967","Zambian Kwacha",2}, + {"968","Surinam Dollar",2}, + {"969","Malagasy Ariary",1}, + {"969","Malagasy Ariary",2}, + {"970","Unidad de Valor Real",2}, + {"971","Afghani",2}, + {"972","Somoni",2}, + {"973","Kwanza",2}, + {"974","Belarussian Ruble",0}, + {"975","Bulgarian Lev",2}, + {"976","Congolese Franc",2}, + {"977","Convertible Mark",2}, + {"978","Euro",2}, + {"979","Mexican Unidad de Inversion (UDI)",2}, + {"980","Hryvnia",2}, + {"981","Lari",2}, + {"984","Mvdol",2}, + {"985","Zloty",2}, + {"986","Brazilian Real",2}, + {"990","Unidad de Fomento",4}, + {"994","Sucre",-1}, + {"997","US Dollar (Next day)",2}, + {"998","US Dollar (Same day)",2}, + {"999","No currency is involved",-1}, + {"NULL", "N/A", -1} +}; + +#endif From 78fe406f508a825e24696e405fea9c8ccbe7034a Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 14 Jul 2023 18:16:40 +0200 Subject: [PATCH 0187/1034] changed emv reader in verbose mode to extract and print transaction logs stored on card --- CHANGELOG.md | 1 + client/src/emv/cmdemv.c | 287 ++++++++++++++++++++++++++++++++++++-- client/src/emv/emv_tags.c | 1 + client/src/emv/emvcore.c | 4 + client/src/emv/emvcore.h | 3 + 5 files changed, 287 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1981a2e8e..463a379a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `emv reader -v` - now tries to print found transactions logs (@iceman1001) - Added ISO4217 currency lookup (@iceman1001) - Fixed bad free in loadfilebinarykey fct. Thanks to @gentilkiwi - Changed `emv reader -v` - now can decode track1/2 data if found (@iceman1001) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index e1518971b..b2459c79c 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -35,6 +35,10 @@ #include "fileutils.h" #include "protocols.h" // ISO7816 APDU return codes #include "commonutil.h" // MemBeToUint2byte +#include // DES +#include "crypto/libpcrypto.h" +#include "iso4217.h" // currency lookup + static int CmdHelp(const char *Cmd); @@ -75,6 +79,193 @@ static void PrintChannel(Iso7816CommandChannel channel) { } } +static int emv_calc_cvv(const uint8_t *pan, size_t panlen, const uint8_t *expiry, const uint8_t *servicecode, const uint8_t *atc) { + + uint8_t key[16] = {0}; + memset(key, 0x30, sizeof(key)); + + uint8_t d[32] = {0}; + uint8_t *pd = d; + + memcpy(pd, pan, panlen); + pd += panlen; + memcpy(pd, expiry, 4); + pd += 4; + + // cvv/cvc + memcpy(pd, servicecode, 3); + pd += 3; + + // atc + memcpy(pd, atc, 4); + + uint8_t encrypted[16] = {0}; + + // zero padding?!? + + mbedtls_des_context ctx; + mbedtls_des_setkey_enc(&ctx, key); + mbedtls_des_crypt_ecb(&ctx, d, encrypted); + mbedtls_des_crypt_ecb(&ctx, d + 6, encrypted + 6); + + // xor + for (size_t i = 16; i < 32; i++) { + d[i] ^= encrypted[i - 16]; + } + + mbedtls_des_free(&ctx); + + PrintAndLogEx(INFO, "key... %s", sprint_hex_inrow(key, sizeof(key))); + PrintAndLogEx(INFO, "d..... %s", sprint_hex_inrow(d, sizeof(d))); + +/* + mbedtls_des3_context ctx3; + mbedtls_des3_init(&ctx3); + mbedtls_des3_set2key_enc(&ctx3, key); + mbedtls_des3_set2key_dec(&ctx3, key); + mbedtls_des3_crypt_ecb(&ctx3, d, encrypted); + mbedtls_des3_free(&ctx3); + + PrintAndLogEx(INFO, "enc... %s", sprint_hex_inrow(encrypted, sizeof(encrypted))); + + memset(encrypted, 0, sizeof(encrypted)); + des3_encrypt(encrypted, d, key, 2); + PrintAndLogEx(INFO, "enc... %s", sprint_hex_inrow(encrypted, sizeof(encrypted))); + */ + return PM3_SUCCESS; +} + +static size_t logtemplate_calculate_len(const struct tlv *tlv, size_t data_len) { + if (!tlv) + return 0; + + const unsigned char *buf = tlv->value; + size_t left = tlv->len; + size_t count = 0; + + while (left) { + struct tlv cur_tlv; + if (!tlv_parse_tl(&buf, &left, &cur_tlv)) + return 0; + + count += cur_tlv.len; + + /* Last tag can be of variable length */ + if (cur_tlv.len == 0 && left == 0) + count = data_len; + } + + return count; +} + +static struct tlvdb *emv_logtemplate_parse(const struct tlv *tlv, const unsigned char *data, size_t data_len) { + if (!tlv) + return NULL; + + const unsigned char *buf = tlv->value; + size_t left = tlv->len; + size_t res_len = logtemplate_calculate_len(tlv, data_len); + size_t pos = 0; + struct tlvdb *db = NULL; + + while (left) { + struct tlv cur_tlv; + if (!tlv_parse_tl(&buf, &left, &cur_tlv) || pos + cur_tlv.len > res_len) { + tlvdb_free(db); + return NULL; + } + + /* Last tag can be of variable length */ + if (cur_tlv.len == 0 && left == 0) + cur_tlv.len = res_len - pos; + + struct tlvdb *tag_db = tlvdb_fixed(cur_tlv.tag, cur_tlv.len, data + pos); + if (!db) + db = tag_db; + else + tlvdb_add(db, tag_db); + + pos += cur_tlv.len; + } + + return db; +} + +static int emv_parse_log(struct tlvdb *ttdb, const uint8_t *d, size_t n) { +/* + The Log Format (9F4F) is a list in tag and length format (i.e., "TL" instead of TLV) See description in Table 33 on page 141. + + In your example, "9F 27 01 9F 02 06 5F 2A 02 9A 03 9F 36 02 9F 52 06 DF 3E 01 9F 21 03 9F 7C 14" means: + + 9F27 01 (Cryptogram Information Data) + 9F02 06 (Amount, Authorised) + 5F2A 02 (Transaction Currency Code) + 9A 03 (Transaction Date) + 9F36 02 (Application Transaction Counter) + 9F52 06 (Terminal Compatibility Indicator) + DF3E 01 + 9F21 03 (Transaction Time) + 9F7C 14 (Visa Customer Exclusive Data) + +*/ + int pos = 0; + struct tlvdb *tp = ttdb; + while (tp) { + const struct tlv *tpitem = tlvdb_get_tlv(tp); + + const char *s = emv_get_tag_name(tpitem); + + switch (tpitem->tag) { + case 0x5F2A: + if (tpitem->len == 2) { + + char tmp[5] = {0}; + snprintf(tmp, sizeof(tmp), "%x%02x", d[pos], d[pos + 1]); + const char *cn = getCurrencyInfo(tmp); + PrintAndLogEx(INFO, "%-30s... " _YELLOW_("%s") " ( %x%02x )", s, cn, d[pos], d[pos + 1]); + } + break; + case 0x9A: + if (tpitem->len == 3) { + PrintAndLogEx(INFO, "%-30s... " _YELLOW_("20%02x-%02x-%02x"), s, d[pos], d[pos + 1], d[pos + 2]); + } + break; + default: + PrintAndLogEx(INFO, "%-30s... " _YELLOW_("%s"), s, sprint_hex_inrow(d + pos, tpitem->len)); + break; + } + + pos += tpitem->len; + + tp = tlvdb_elm_get_next(tp); + } + return PM3_SUCCESS; +} + +static int emv_extract_log_info(uint8_t *response, size_t reslen, uint8_t *lid, uint8_t *lrecs) { + + struct tlvdb *t = tlvdb_parse_multi(response, reslen); + if (t == NULL) { + PrintAndLogEx(INFO, "root null"); + return PM3_EINVARG; + } + + int res = PM3_ESOFT; + struct tlvdb *logs = tlvdb_find_full(t, 0x9F4D); + if (logs != NULL) { + const struct tlv *tlv = tlvdb_get_tlv(logs); + if (tlv->len == 2) { + *lid = tlv->value[0]; + *lrecs = tlv->value[1]; + PrintAndLogEx(DEBUG, "Logs EMV... SFI %u Records # %u", *lid, *lrecs); + res = PM3_SUCCESS; + } + } + + tlvdb_free(t); + return res; +} + static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ if (d == NULL || n < 10) { return PM3_EINVARG; @@ -96,14 +287,26 @@ static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ while (token != NULL) { switch(i) { - case 0: - PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", - token[1], token[2],token[3], token[4], - token[5], token[6],token[7], token[8], - token[9], token[10],token[11], token[12], - token[13], token[14],token[15], token[16] - ); + case 0: { + size_t a = strlen(token); + if (a == 16) { + PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", + token[1], token[2],token[3], token[4], + token[5], token[6],token[7], token[8], + token[9], token[10],token[11], token[12], + token[13], token[14],token[15], token[16] + ); + } else if (a == 19) { + PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c", + token[1], token[2],token[3], token[4], + token[5], token[6],token[7], token[8], + token[9], token[10],token[11], token[12], + token[13], token[14],token[15], token[16], + token[17], token[18],token[19] + ); + } break; + } case 1: PrintAndLogEx(INFO, "CardHolder............... %s", token); break; @@ -228,7 +431,12 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen, bool verbose const struct tlv *acc_tlv = tlvdb_get_tlv(acc_full); if (acc_tlv->len == 2) { uint16_t acc = MemBeToUint2byte((const uint8_t *)acc_tlv->value); - PrintAndLogEx(INFO, "Currency Code........ " _YELLOW_("%02X"), acc); + + char tmp[5] = {0}; + snprintf(tmp, sizeof(tmp), "%x%02x", acc_tlv->value[0], acc_tlv->value[1]); + const char *cn = getCurrencyInfo(tmp); + + PrintAndLogEx(INFO, "Currency Code........ " _YELLOW_("%s") " ( %x )", cn, acc); } } @@ -2087,6 +2295,16 @@ static int CmdEMVList(const char *Cmd) { } static int CmdEMVTest(const char *Cmd) { + + uint8_t pan[16] = "4000340099900505"; + uint8_t expiry[4] = "2102"; + uint8_t servicecode[3] = "101"; + uint8_t atc[4] = "1001"; + + emv_calc_cvv(pan, 16, expiry, servicecode, atc); + return PM3_SUCCESS; + + CLIParserContext *ctx; CLIParserInit(&ctx, "emv test", "Executes tests\n", @@ -2462,6 +2680,33 @@ static int CmdEMVReader(const char *Cmd) { // decode application parts emv_parse_card_details(buf, len, verbose); + // transaction log information + uint8_t log_file_id = 0x0B; + uint8_t log_file_records = 31; + struct tlvdb *tlogDB = NULL; + + + // try getting the LOG TEMPLATE. + bool log_found = false; + bool log_template_found = false; + if (emv_extract_log_info(buf, len, &log_file_id, &log_file_records) == PM3_SUCCESS) { + log_found = true; + } + + uint16_t extra_data[] = { 0x9F36, 0x9F13, 0x9F17, 0x9F4D, 0x9F4F }; + for (int i = 0; i < ARRAYLEN(extra_data); i++) { + if (EMVGetData(channel, true, extra_data[i], buf, sizeof(buf), &len, &sw, tlvRoot)) { + continue; + } + // Log template tag + if (extra_data[i] == 0x9F4F ) { + struct tlvdb *ttdb = tlvdb_find_full(tlvRoot, extra_data[i]); + const struct tlv *ttag = tlvdb_get_tlv(ttdb); + tlogDB = emv_logtemplate_parse(ttag, buf, len); + log_template_found = true; + } + } + for (TransactionType_t tt = TT_MSD; tt < TT_END; tt++) { // create transaction parameters @@ -2498,7 +2743,6 @@ static int CmdEMVReader(const char *Cmd) { } const struct tlv *AFL = tlvdb_get(tlvRoot, 0x94, NULL); - if (AFL && AFL->len) { if (AFL->len % 4) { @@ -2524,8 +2768,33 @@ static int CmdEMVReader(const char *Cmd) { } } + // only check for logs file if we found 0x9F4D + if ( verbose && log_found && log_template_found ) { + + for (int i = 1; i <= log_file_records; i++) { + res = EMVReadRecord(channel, true, log_file_id, i, buf, sizeof(buf), &len, &sw, tlvRoot); + if (res) { + continue; + } + + if (sw == 0x6A83) + break; + + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "Transaction log # " _YELLOW_("%u"), i); + PrintAndLogEx(INFO, "---------------------"); + emv_parse_log(tlogDB, buf, len); + PrintAndLogEx(INFO, ""); + } + tlvdb_free(tlogDB); + } + + // free tlv object + tlvdb_free(tlvRoot); + } while (continuous); + DropFieldEx(channel); return PM3_SUCCESS; } diff --git a/client/src/emv/emv_tags.c b/client/src/emv/emv_tags.c index 0d5ddbc31..0ae242905 100644 --- a/client/src/emv/emv_tags.c +++ b/client/src/emv/emv_tags.c @@ -373,6 +373,7 @@ static const struct emv_tag emv_tags[] = { { 0xa5, "File Control Information (FCI) Proprietary Template", EMV_TAG_GENERIC, NULL }, { 0xbf0c, "File Control Information (FCI) Issuer Discretionary Data", EMV_TAG_GENERIC, NULL }, { 0xdf20, "Issuer Proprietary Bitmap (IPB)", EMV_TAG_GENERIC, NULL }, + { 0xdf3e, "?", EMV_TAG_BITMASK, NULL }, { 0xdf4b, "POS Cardholder Interaction Information", EMV_TAG_GENERIC, NULL }, { 0xdf60, "VISA Log Entry", EMV_TAG_GENERIC, NULL }, { 0xdf61, "DS Digest H", EMV_TAG_GENERIC, NULL }, diff --git a/client/src/emv/emvcore.c b/client/src/emv/emvcore.c index 45a415f41..b2aa524ac 100644 --- a/client/src/emv/emvcore.c +++ b/client/src/emv/emvcore.c @@ -586,6 +586,10 @@ int EMVReadRecord(Iso7816CommandChannel channel, bool LeaveFieldON, uint8_t SFI, return res; } +int EMVGetData(Iso7816CommandChannel channel, bool LeaveFieldON, uint16_t foo, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv) { + return EMVExchangeEx(channel, false, LeaveFieldON, (sAPDU_t) {0x80, 0xCA, ((foo >> 8) & 0xFF), (foo & 0xFF), 0, NULL}, true, Result, MaxResultLen, ResultLen, sw, tlv); +} + int EMVAC(Iso7816CommandChannel channel, bool LeaveFieldON, uint8_t RefControl, uint8_t *CDOL, size_t CDOLLen, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv) { return EMVExchange(channel, LeaveFieldON, (sAPDU_t) {0x80, 0xae, RefControl, 0x00, CDOLLen, CDOL}, Result, MaxResultLen, ResultLen, sw, tlv); } diff --git a/client/src/emv/emvcore.h b/client/src/emv/emvcore.h index 6cf646c60..6ff2b6ef9 100644 --- a/client/src/emv/emvcore.h +++ b/client/src/emv/emvcore.h @@ -71,6 +71,9 @@ int EMVSelectApplication(struct tlvdb *tlv, uint8_t *AID, size_t *AIDlen); // Get Processing Options int EMVGPO(Iso7816CommandChannel channel, bool LeaveFieldON, uint8_t *PDOL, size_t PDOLLen, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv); int EMVReadRecord(Iso7816CommandChannel channel, bool LeaveFieldON, uint8_t SFI, uint8_t SFIrec, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv); + +// Emv override get data +int EMVGetData(Iso7816CommandChannel channel, bool LeaveFieldON, uint16_t foo, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv); // AC int EMVGenerateChallenge(Iso7816CommandChannel channel, bool LeaveFieldON, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv); int EMVAC(Iso7816CommandChannel channel, bool LeaveFieldON, uint8_t RefControl, uint8_t *CDOL, size_t CDOLLen, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv); From 3c6d1c492fdd978a729e5fd02ad2c3550732b78e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 14 Jul 2023 18:23:36 +0200 Subject: [PATCH 0188/1034] text --- client/src/emv/cmdemv.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index b2459c79c..e148e19bb 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -2600,8 +2600,10 @@ out: static int CmdEMVReader(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "emv reader", - "Act as a EMV reader to identify tag. Look for EMV tags until Enter or the pm3 button is pressed", + "Act as a EMV reader to identify tag. Look for EMV tags until Enter or the pm3 button is pressed\n" + "In `verbose` mode it will also try to extract and decode the transaction logs stored on card in either channel.\n", "emv reader\n" + "emv reader -v\n" "emv reader -@ -> Continuous mode\n" ); void *argtable[] = { From 23eca8fecc20e26965689dc520e3099520851d5e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 14 Jul 2023 18:29:50 +0200 Subject: [PATCH 0189/1034] remove debugging code --- client/src/emv/cmdemv.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index e148e19bb..52c3db0e9 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -2295,16 +2295,6 @@ static int CmdEMVList(const char *Cmd) { } static int CmdEMVTest(const char *Cmd) { - - uint8_t pan[16] = "4000340099900505"; - uint8_t expiry[4] = "2102"; - uint8_t servicecode[3] = "101"; - uint8_t atc[4] = "1001"; - - emv_calc_cvv(pan, 16, expiry, servicecode, atc); - return PM3_SUCCESS; - - CLIParserContext *ctx; CLIParserInit(&ctx, "emv test", "Executes tests\n", From b997a78bca1f88c54b94521484c374d3eb39b45f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 14 Jul 2023 18:30:50 +0200 Subject: [PATCH 0190/1034] remove debugging code --- client/src/emv/cmdemv.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 52c3db0e9..1f96605e2 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -79,6 +79,7 @@ static void PrintChannel(Iso7816CommandChannel channel) { } } +/* static int emv_calc_cvv(const uint8_t *pan, size_t panlen, const uint8_t *expiry, const uint8_t *servicecode, const uint8_t *atc) { uint8_t key[16] = {0}; @@ -118,7 +119,7 @@ static int emv_calc_cvv(const uint8_t *pan, size_t panlen, const uint8_t *expiry PrintAndLogEx(INFO, "key... %s", sprint_hex_inrow(key, sizeof(key))); PrintAndLogEx(INFO, "d..... %s", sprint_hex_inrow(d, sizeof(d))); -/* + mbedtls_des3_context ctx3; mbedtls_des3_init(&ctx3); mbedtls_des3_set2key_enc(&ctx3, key); @@ -131,9 +132,11 @@ static int emv_calc_cvv(const uint8_t *pan, size_t panlen, const uint8_t *expiry memset(encrypted, 0, sizeof(encrypted)); des3_encrypt(encrypted, d, key, 2); PrintAndLogEx(INFO, "enc... %s", sprint_hex_inrow(encrypted, sizeof(encrypted))); - */ + return PM3_SUCCESS; } +*/ + static size_t logtemplate_calculate_len(const struct tlv *tlv, size_t data_len) { if (!tlv) From 5f8cd5caca3cb1e8006c5aaccf8091a9b24c1bed Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 14 Jul 2023 18:34:14 +0200 Subject: [PATCH 0191/1034] make style --- client/src/cmdhfmfhard.c | 4 +- client/src/comms.c | 8 +- client/src/emv/cmdemv.c | 88 +++++----- client/src/iso4217.h | 370 +++++++++++++++++++-------------------- client/src/nfc/ndef.c | 2 +- doc/commands.json | 12 +- 6 files changed, 243 insertions(+), 241 deletions(-) diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index 090dcf531..be7b3a4c3 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -373,8 +373,8 @@ static void init_bitflip_bitarrays(void) { exit(4); } - bytesread = fread(bitset, 1, filesize-sizeof(count), statesfile); - if (bytesread != filesize-sizeof(count)) { + bytesread = fread(bitset, 1, filesize - sizeof(count), statesfile); + if (bytesread != filesize - sizeof(count)) { PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); fclose(statesfile); exit(5); diff --git a/client/src/comms.c b/client/src/comms.c index 1c3d1f686..3b7509a38 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -670,10 +670,10 @@ int TestProxmark(pm3_device_t *dev) { bool is_bt_conn = (memcmp(g_conn.serial_port_name, "bt:", 3) == 0); PrintAndLogEx(INFO, "Communicating with PM3 over %s%s%s", - (g_conn.send_via_fpc_usart) ? _YELLOW_("FPC UART") : _YELLOW_("USB-CDC"), - (is_tcp_conn) ? " over " _YELLOW_("TCP") : "", - (is_bt_conn) ? " over " _YELLOW_("BT") : "" - ); + (g_conn.send_via_fpc_usart) ? _YELLOW_("FPC UART") : _YELLOW_("USB-CDC"), + (is_tcp_conn) ? " over " _YELLOW_("TCP") : "", + (is_bt_conn) ? " over " _YELLOW_("BT") : "" + ); if (g_conn.send_via_fpc_usart) { PrintAndLogEx(INFO, "PM3 UART serial baudrate: " _YELLOW_("%u") "\n", g_conn.uart_speed); diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 1f96605e2..8a0b7f82d 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -89,7 +89,7 @@ static int emv_calc_cvv(const uint8_t *pan, size_t panlen, const uint8_t *expiry uint8_t *pd = d; memcpy(pd, pan, panlen); - pd += panlen; + pd += panlen; memcpy(pd, expiry, 4); pd += 4; @@ -129,7 +129,7 @@ static int emv_calc_cvv(const uint8_t *pan, size_t panlen, const uint8_t *expiry PrintAndLogEx(INFO, "enc... %s", sprint_hex_inrow(encrypted, sizeof(encrypted))); - memset(encrypted, 0, sizeof(encrypted)); + memset(encrypted, 0, sizeof(encrypted)); des3_encrypt(encrypted, d, key, 2); PrintAndLogEx(INFO, "enc... %s", sprint_hex_inrow(encrypted, sizeof(encrypted))); @@ -195,23 +195,23 @@ static struct tlvdb *emv_logtemplate_parse(const struct tlv *tlv, const unsigned } static int emv_parse_log(struct tlvdb *ttdb, const uint8_t *d, size_t n) { -/* - The Log Format (9F4F) is a list in tag and length format (i.e., "TL" instead of TLV) See description in Table 33 on page 141. + /* + The Log Format (9F4F) is a list in tag and length format (i.e., "TL" instead of TLV) See description in Table 33 on page 141. - In your example, "9F 27 01 9F 02 06 5F 2A 02 9A 03 9F 36 02 9F 52 06 DF 3E 01 9F 21 03 9F 7C 14" means: + In your example, "9F 27 01 9F 02 06 5F 2A 02 9A 03 9F 36 02 9F 52 06 DF 3E 01 9F 21 03 9F 7C 14" means: - 9F27 01 (Cryptogram Information Data) - 9F02 06 (Amount, Authorised) - 5F2A 02 (Transaction Currency Code) - 9A 03 (Transaction Date) - 9F36 02 (Application Transaction Counter) - 9F52 06 (Terminal Compatibility Indicator) - DF3E 01 - 9F21 03 (Transaction Time) - 9F7C 14 (Visa Customer Exclusive Data) + 9F27 01 (Cryptogram Information Data) + 9F02 06 (Amount, Authorised) + 5F2A 02 (Transaction Currency Code) + 9A 03 (Transaction Date) + 9F36 02 (Application Transaction Counter) + 9F52 06 (Terminal Compatibility Indicator) + DF3E 01 + 9F21 03 (Transaction Time) + 9F7C 14 (Visa Customer Exclusive Data) -*/ - int pos = 0; + */ + int pos = 0; struct tlvdb *tp = ttdb; while (tp) { const struct tlv *tpitem = tlvdb_get_tlv(tp); @@ -237,12 +237,12 @@ static int emv_parse_log(struct tlvdb *ttdb, const uint8_t *d, size_t n) { PrintAndLogEx(INFO, "%-30s... " _YELLOW_("%s"), s, sprint_hex_inrow(d + pos, tpitem->len)); break; } - + pos += tpitem->len; tp = tlvdb_elm_get_next(tp); } - return PM3_SUCCESS; + return PM3_SUCCESS; } static int emv_extract_log_info(uint8_t *response, size_t reslen, uint8_t *lid, uint8_t *lrecs) { @@ -269,7 +269,7 @@ static int emv_extract_log_info(uint8_t *response, size_t reslen, uint8_t *lid, return res; } -static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ +static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose) { if (d == NULL || n < 10) { return PM3_EINVARG; } @@ -283,31 +283,31 @@ static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ } // decoder - char *tmp = str_ndup((const char*)d, n); + char *tmp = str_ndup((const char *)d, n); uint8_t i = 0; char delim[2] = "^"; char *token = strtok(tmp, delim); while (token != NULL) { - switch(i) { + switch (i) { case 0: { size_t a = strlen(token); if (a == 16) { PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", - token[1], token[2],token[3], token[4], - token[5], token[6],token[7], token[8], - token[9], token[10],token[11], token[12], - token[13], token[14],token[15], token[16] - ); + token[1], token[2], token[3], token[4], + token[5], token[6], token[7], token[8], + token[9], token[10], token[11], token[12], + token[13], token[14], token[15], token[16] + ); } else if (a == 19) { PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c", - token[1], token[2],token[3], token[4], - token[5], token[6],token[7], token[8], - token[9], token[10],token[11], token[12], - token[13], token[14],token[15], token[16], - token[17], token[18],token[19] - ); - } + token[1], token[2], token[3], token[4], + token[5], token[6], token[7], token[8], + token[9], token[10], token[11], token[12], + token[13], token[14], token[15], token[16], + token[17], token[18], token[19] + ); + } break; } case 1: @@ -327,7 +327,7 @@ static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ token += 4; PrintAndLogEx(INFO, "CVV / iCvv............... %.*s", 3, token); - token +=3; + token += 3; PrintAndLogEx(INFO, "Trailing................. %s", token); break; @@ -358,11 +358,11 @@ static int emv_parse_track2(const uint8_t *d, size_t n, bool verbose) { tmp++; PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", - tmp[0], tmp[1], tmp[2],tmp[3], - tmp[4], tmp[5], tmp[6],tmp[7], - tmp[8], tmp[9], tmp[10],tmp[11], - tmp[12],tmp[13], tmp[14],tmp[15] - ); + tmp[0], tmp[1], tmp[2], tmp[3], + tmp[4], tmp[5], tmp[6], tmp[7], + tmp[8], tmp[9], tmp[10], tmp[11], + tmp[12], tmp[13], tmp[14], tmp[15] + ); tmp += 16; if (tmp[0] == '=' || tmp[0] == 'D') @@ -378,7 +378,7 @@ static int emv_parse_track2(const uint8_t *d, size_t n, bool verbose) { tmp += 4; PrintAndLogEx(INFO, "CVV / iCvv............... %.*s", 3, tmp); - tmp +=3; + tmp += 3; PrintAndLogEx(INFO, "Trailing................. %s", tmp); @@ -2694,7 +2694,7 @@ static int CmdEMVReader(const char *Cmd) { continue; } // Log template tag - if (extra_data[i] == 0x9F4F ) { + if (extra_data[i] == 0x9F4F) { struct tlvdb *ttdb = tlvdb_find_full(tlvRoot, extra_data[i]); const struct tlv *ttag = tlvdb_get_tlv(ttdb); tlogDB = emv_logtemplate_parse(ttag, buf, len); @@ -2764,8 +2764,8 @@ static int CmdEMVReader(const char *Cmd) { } // only check for logs file if we found 0x9F4D - if ( verbose && log_found && log_template_found ) { - + if (verbose && log_found && log_template_found) { + for (int i = 1; i <= log_file_records; i++) { res = EMVReadRecord(channel, true, log_file_id, i, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { @@ -2786,7 +2786,7 @@ static int CmdEMVReader(const char *Cmd) { // free tlv object tlvdb_free(tlvRoot); - + } while (continuous); DropFieldEx(channel); diff --git a/client/src/iso4217.h b/client/src/iso4217.h index a35ff8f93..594a0bb38 100644 --- a/client/src/iso4217.h +++ b/client/src/iso4217.h @@ -31,191 +31,191 @@ const char *getCurrencyInfo(const char *cn_str); // atr_t array is expected to be NULL terminated const static iso4217_t Iso4217Table[] = { - {"008","Lek",2}, - {"012","Algerian Dinar",2}, - {"032","Argentine Peso",2}, - {"036","Australian Dollar",2}, - {"044","Bahamian Dollar",2}, - {"048","Bahraini Dinar",3}, - {"050","Taka",2}, - {"051","Armenian Dram",2}, - {"052","Barbados Dollar",2}, - {"060","Bermudian Dollar",2}, - {"064","Ngultrum",2}, - {"068","Boliviano",2}, - {"072","Pula",2}, - {"084","Belize Dollar",2}, - {"090","Solomon Islands Dollar",2}, - {"096","Brunei Dollar",2}, - {"104","Kyat",2}, - {"108","Burundi Franc",0}, - {"116","Riel",2}, - {"124","Canadian Dollar",2}, - {"132","Cabo Verde Escudo",2}, - {"136","Cayman Islands Dollar",2}, - {"144","Sri Lanka Rupee",2}, - {"152","Chilean Peso",0}, - {"156","Yuan Renminbi",2}, - {"170","Colombian Peso",2}, - {"174","Comoro Franc",0}, - {"188","Costa Rican Colon",2}, - {"191","Croatian Kuna",2}, - {"192","Cuban Peso",2}, - {"203","Czech Koruna",2}, - {"208","Danish Krone",2}, - {"214","Dominican Peso",2}, - {"222","El Salvador Colon",2}, - {"230","Ethiopian Birr",2}, - {"232","Nakfa",2}, - {"233","Kroon",2}, - {"238","Falkland Islands Pound",2}, - {"242","Fiji Dollar",2}, - {"262","Djibouti Franc",0}, - {"270","Dalasi",2}, - {"292","Gibraltar Pound",2}, - {"320","Quetzal",2}, - {"324","Guinea Franc",0}, - {"328","Guyana Dollar",2}, - {"332","Gourde",2}, - {"340","Lempira",2}, - {"344","Hong Kong Dollar",2}, - {"348","Forint",2}, - {"352","Iceland Krona",0}, - {"356","Indian Rupee",2}, - {"360","Rupiah",2}, - {"364","Iranian Rial",2}, - {"368","Iraqi Dinar",3}, - {"376","New Israeli Sheqel",2}, - {"388","Jamaican Dollar",2}, - {"392","Yen",0}, - {"398","Tenge",2}, - {"400","Jordanian Dinar",3}, - {"404","Kenyan Shilling",2}, - {"408","North Korean Won",2}, - {"410","Won",0}, - {"414","Kuwaiti Dinar",3}, - {"417","Som",2}, - {"418","Kip",2}, - {"422","Lebanese Pound",2}, - {"426","Loti",2}, - {"428","Latvian Lats",2}, - {"430","Liberian Dollar",2}, - {"434","Libyan Dinar",3}, - {"440","Lithuanian Litas",2}, - {"446","Pataca",2}, - {"454","Kwacha",2}, - {"458","Malaysian Ringgit",2}, - {"462","Rufiyaa",2}, - {"478","Ouguiya",2}, - {"480","Mauritius Rupee",2}, - {"484","Mexican Peso",2}, - {"496","Tugrik",2}, - {"498","Moldovan Leu",2}, - {"504","Moroccan Dirham",2}, - {"512","Rial Omani",3}, - {"516","Namibia Dollar",2}, - {"524","Nepalese Rupee",2}, - {"532","Netherlands Antillean Guilder",2}, - {"533","Aruban Florin",2}, - {"548","Vatu",0}, - {"554","New Zealand Dollar",2}, - {"558","Cordoba Oro",2}, - {"566","Naira",2}, - {"578","Norwegian Krone",2}, - {"586","Pakistan Rupee",2}, - {"590","Balboa",2}, - {"598","Kina",2}, - {"600","Guarani",0}, - {"604","Nuevo Sol",2}, - {"608","Philippine Peso",2}, - {"624","Guinea-Bissau Peso", -1}, - {"634","Qatari Rial",2}, - {"643","Russian Ruble",2}, - {"646","Rwanda Franc",0}, - {"654","Saint Helena Pound",2}, - {"678","Dobra",2}, - {"682","Saudi Riyal",2}, - {"690","Seychelles Rupee",2}, - {"694","Leone",2}, - {"702","Singapore Dollar",2}, - {"704","Dong",0}, - {"706","Somali Shilling",2}, - {"710","Rand",2}, - {"728","South Sudanese Pound",2}, - {"748","Lilangeni",2}, - {"752","Swedish Krona",2}, - {"756","Swiss Franc",2}, - {"760","Syrian Pound",2}, - {"764","Baht",2}, - {"776","Pa\'anga",2}, - {"780","Trinidad and Tobago Dollar",2}, - {"784","UAE Dirham",2}, - {"788","Tunisian Dinar",3}, - {"800","Uganda Shilling",0}, - {"807","Denar",2}, - {"818","Egyptian Pound",2}, - {"826","Pound Sterling",2}, - {"834","Tanzanian Shilling",2}, - {"840","US Dollar",2}, - {"858","Peso Uruguayo",2}, - {"860","Uzbekistan Sum",2}, - {"882","Tala",2}, - {"886","Yemeni Rial",2}, - {"894","Zambian Kwacha",2}, - {"901","New Taiwan Dollar",2}, - {"931","Peso Convertible",2}, - {"932","Zimbabwe Dollar",2}, - {"934","Turkmenistan New Manat",2}, - {"936","Ghana Cedi",2}, - {"937","Bolivar",2}, - {"938","Sudanese Pound",2}, - {"940","Uruguay Peso en Unidades Indexadas (URUIURUI)",0}, - {"941","Serbian Dinar",2}, - {"943","Mozambique Metical",2}, - {"944","Azerbaijanian Manat",2}, - {"946","New Romanian Leu",2}, - {"947","WIR Euro",2}, - {"948","WIR Franc",2}, - {"949","Turkish Lira",2}, - {"950","CFA Franc BEAC",0}, - {"951","East Caribbean Dollar",2}, - {"952","CFA Franc BCEAO",0}, - {"953","CFP Franc",0}, - {"955","Bond Markets Unit European Composite Unit (EURCO)",0}, - {"956","Bond Markets Unit European Monetary Unit (E.M.U.-6)",0}, - {"957","Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",0}, - {"958","Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",0}, - {"959","Gold",0}, - {"960","SDR (Special Drawing Right)",0}, - {"961","Silver",0}, - {"962","Platinum",0}, - {"963","Codes specifically reserved for testing purposes",-1}, - {"964","Palladium",-1}, - {"965","ADB Unit of Account",-1}, - {"967","Zambian Kwacha",2}, - {"968","Surinam Dollar",2}, - {"969","Malagasy Ariary",1}, - {"969","Malagasy Ariary",2}, - {"970","Unidad de Valor Real",2}, - {"971","Afghani",2}, - {"972","Somoni",2}, - {"973","Kwanza",2}, - {"974","Belarussian Ruble",0}, - {"975","Bulgarian Lev",2}, - {"976","Congolese Franc",2}, - {"977","Convertible Mark",2}, - {"978","Euro",2}, - {"979","Mexican Unidad de Inversion (UDI)",2}, - {"980","Hryvnia",2}, - {"981","Lari",2}, - {"984","Mvdol",2}, - {"985","Zloty",2}, - {"986","Brazilian Real",2}, - {"990","Unidad de Fomento",4}, - {"994","Sucre",-1}, - {"997","US Dollar (Next day)",2}, - {"998","US Dollar (Same day)",2}, - {"999","No currency is involved",-1}, + {"008", "Lek", 2}, + {"012", "Algerian Dinar", 2}, + {"032", "Argentine Peso", 2}, + {"036", "Australian Dollar", 2}, + {"044", "Bahamian Dollar", 2}, + {"048", "Bahraini Dinar", 3}, + {"050", "Taka", 2}, + {"051", "Armenian Dram", 2}, + {"052", "Barbados Dollar", 2}, + {"060", "Bermudian Dollar", 2}, + {"064", "Ngultrum", 2}, + {"068", "Boliviano", 2}, + {"072", "Pula", 2}, + {"084", "Belize Dollar", 2}, + {"090", "Solomon Islands Dollar", 2}, + {"096", "Brunei Dollar", 2}, + {"104", "Kyat", 2}, + {"108", "Burundi Franc", 0}, + {"116", "Riel", 2}, + {"124", "Canadian Dollar", 2}, + {"132", "Cabo Verde Escudo", 2}, + {"136", "Cayman Islands Dollar", 2}, + {"144", "Sri Lanka Rupee", 2}, + {"152", "Chilean Peso", 0}, + {"156", "Yuan Renminbi", 2}, + {"170", "Colombian Peso", 2}, + {"174", "Comoro Franc", 0}, + {"188", "Costa Rican Colon", 2}, + {"191", "Croatian Kuna", 2}, + {"192", "Cuban Peso", 2}, + {"203", "Czech Koruna", 2}, + {"208", "Danish Krone", 2}, + {"214", "Dominican Peso", 2}, + {"222", "El Salvador Colon", 2}, + {"230", "Ethiopian Birr", 2}, + {"232", "Nakfa", 2}, + {"233", "Kroon", 2}, + {"238", "Falkland Islands Pound", 2}, + {"242", "Fiji Dollar", 2}, + {"262", "Djibouti Franc", 0}, + {"270", "Dalasi", 2}, + {"292", "Gibraltar Pound", 2}, + {"320", "Quetzal", 2}, + {"324", "Guinea Franc", 0}, + {"328", "Guyana Dollar", 2}, + {"332", "Gourde", 2}, + {"340", "Lempira", 2}, + {"344", "Hong Kong Dollar", 2}, + {"348", "Forint", 2}, + {"352", "Iceland Krona", 0}, + {"356", "Indian Rupee", 2}, + {"360", "Rupiah", 2}, + {"364", "Iranian Rial", 2}, + {"368", "Iraqi Dinar", 3}, + {"376", "New Israeli Sheqel", 2}, + {"388", "Jamaican Dollar", 2}, + {"392", "Yen", 0}, + {"398", "Tenge", 2}, + {"400", "Jordanian Dinar", 3}, + {"404", "Kenyan Shilling", 2}, + {"408", "North Korean Won", 2}, + {"410", "Won", 0}, + {"414", "Kuwaiti Dinar", 3}, + {"417", "Som", 2}, + {"418", "Kip", 2}, + {"422", "Lebanese Pound", 2}, + {"426", "Loti", 2}, + {"428", "Latvian Lats", 2}, + {"430", "Liberian Dollar", 2}, + {"434", "Libyan Dinar", 3}, + {"440", "Lithuanian Litas", 2}, + {"446", "Pataca", 2}, + {"454", "Kwacha", 2}, + {"458", "Malaysian Ringgit", 2}, + {"462", "Rufiyaa", 2}, + {"478", "Ouguiya", 2}, + {"480", "Mauritius Rupee", 2}, + {"484", "Mexican Peso", 2}, + {"496", "Tugrik", 2}, + {"498", "Moldovan Leu", 2}, + {"504", "Moroccan Dirham", 2}, + {"512", "Rial Omani", 3}, + {"516", "Namibia Dollar", 2}, + {"524", "Nepalese Rupee", 2}, + {"532", "Netherlands Antillean Guilder", 2}, + {"533", "Aruban Florin", 2}, + {"548", "Vatu", 0}, + {"554", "New Zealand Dollar", 2}, + {"558", "Cordoba Oro", 2}, + {"566", "Naira", 2}, + {"578", "Norwegian Krone", 2}, + {"586", "Pakistan Rupee", 2}, + {"590", "Balboa", 2}, + {"598", "Kina", 2}, + {"600", "Guarani", 0}, + {"604", "Nuevo Sol", 2}, + {"608", "Philippine Peso", 2}, + {"624", "Guinea-Bissau Peso", -1}, + {"634", "Qatari Rial", 2}, + {"643", "Russian Ruble", 2}, + {"646", "Rwanda Franc", 0}, + {"654", "Saint Helena Pound", 2}, + {"678", "Dobra", 2}, + {"682", "Saudi Riyal", 2}, + {"690", "Seychelles Rupee", 2}, + {"694", "Leone", 2}, + {"702", "Singapore Dollar", 2}, + {"704", "Dong", 0}, + {"706", "Somali Shilling", 2}, + {"710", "Rand", 2}, + {"728", "South Sudanese Pound", 2}, + {"748", "Lilangeni", 2}, + {"752", "Swedish Krona", 2}, + {"756", "Swiss Franc", 2}, + {"760", "Syrian Pound", 2}, + {"764", "Baht", 2}, + {"776", "Pa\'anga", 2}, + {"780", "Trinidad and Tobago Dollar", 2}, + {"784", "UAE Dirham", 2}, + {"788", "Tunisian Dinar", 3}, + {"800", "Uganda Shilling", 0}, + {"807", "Denar", 2}, + {"818", "Egyptian Pound", 2}, + {"826", "Pound Sterling", 2}, + {"834", "Tanzanian Shilling", 2}, + {"840", "US Dollar", 2}, + {"858", "Peso Uruguayo", 2}, + {"860", "Uzbekistan Sum", 2}, + {"882", "Tala", 2}, + {"886", "Yemeni Rial", 2}, + {"894", "Zambian Kwacha", 2}, + {"901", "New Taiwan Dollar", 2}, + {"931", "Peso Convertible", 2}, + {"932", "Zimbabwe Dollar", 2}, + {"934", "Turkmenistan New Manat", 2}, + {"936", "Ghana Cedi", 2}, + {"937", "Bolivar", 2}, + {"938", "Sudanese Pound", 2}, + {"940", "Uruguay Peso en Unidades Indexadas (URUIURUI)", 0}, + {"941", "Serbian Dinar", 2}, + {"943", "Mozambique Metical", 2}, + {"944", "Azerbaijanian Manat", 2}, + {"946", "New Romanian Leu", 2}, + {"947", "WIR Euro", 2}, + {"948", "WIR Franc", 2}, + {"949", "Turkish Lira", 2}, + {"950", "CFA Franc BEAC", 0}, + {"951", "East Caribbean Dollar", 2}, + {"952", "CFA Franc BCEAO", 0}, + {"953", "CFP Franc", 0}, + {"955", "Bond Markets Unit European Composite Unit (EURCO)", 0}, + {"956", "Bond Markets Unit European Monetary Unit (E.M.U.-6)", 0}, + {"957", "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)", 0}, + {"958", "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)", 0}, + {"959", "Gold", 0}, + {"960", "SDR (Special Drawing Right)", 0}, + {"961", "Silver", 0}, + {"962", "Platinum", 0}, + {"963", "Codes specifically reserved for testing purposes", -1}, + {"964", "Palladium", -1}, + {"965", "ADB Unit of Account", -1}, + {"967", "Zambian Kwacha", 2}, + {"968", "Surinam Dollar", 2}, + {"969", "Malagasy Ariary", 1}, + {"969", "Malagasy Ariary", 2}, + {"970", "Unidad de Valor Real", 2}, + {"971", "Afghani", 2}, + {"972", "Somoni", 2}, + {"973", "Kwanza", 2}, + {"974", "Belarussian Ruble", 0}, + {"975", "Bulgarian Lev", 2}, + {"976", "Congolese Franc", 2}, + {"977", "Convertible Mark", 2}, + {"978", "Euro", 2}, + {"979", "Mexican Unidad de Inversion (UDI)", 2}, + {"980", "Hryvnia", 2}, + {"981", "Lari", 2}, + {"984", "Mvdol", 2}, + {"985", "Zloty", 2}, + {"986", "Brazilian Real", 2}, + {"990", "Unidad de Fomento", 4}, + {"994", "Sucre", -1}, + {"997", "US Dollar (Next day)", 2}, + {"998", "US Dollar (Same day)", 2}, + {"999", "No currency is involved", -1}, {"NULL", "N/A", -1} }; diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index 3e2e1973f..44ef70ee6 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -1050,7 +1050,7 @@ static int ndefDecodePayload(NDEFHeader_t *ndef, bool verbose) { if (str_startswith(begin, NDEF_BLUEAPPL_EP)) { - ndefDecodeMime_bt(ndef); + ndefDecodeMime_bt(ndef); } if (str_startswith(begin, NDEF_BLUEAPPL_SECURE_LE)) { ndefDecodeMime_bt_secure_le_oob(ndef); diff --git a/doc/commands.json b/doc/commands.json index d4cbf628a..40ae8cbc9 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -901,18 +901,20 @@ }, "emv reader": { "command": "emv reader", - "description": "Act as a EMV reader to identify tag. Look for EMV tags until Enter or the pm3 button is pressed", + "description": "Act as a EMV reader to identify tag. Look for EMV tags until Enter or the pm3 button is pressed In `verbose` mode it will also try to extract and decode the transaction logs stored on card in either channel.", "notes": [ "emv reader", + "emv reader -v", "emv reader -@ -> Continuous mode" ], "offline": false, "options": [ "-h, --help This help", "-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", + "-v, --verbose verbose", "-@ continuous reader mode" ], - "usage": "emv reader [-hw@]" + "usage": "emv reader [-hwv@]" }, "emv readrec": { "command": "emv readrec", @@ -2653,8 +2655,8 @@ "hf fido auth --kh 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f -> execute command with 2 parameters, filled 0x00 and key handle", "hf fido auth", "--kh 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f", - "--cp 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f", - "--ap 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f -> execute command with parameters" + "--cpx 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f", + "--apx 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f -> execute command with parameters" ], "offline": false, "options": [ @@ -11687,6 +11689,6 @@ "metadata": { "commands_extracted": 679, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-10T18:33:37" + "extracted_on": "2023-07-14T16:33:40" } } \ No newline at end of file From 6cc59848d55bdcc9017526a948f181ebaf570fd0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 15 Jul 2023 11:51:08 +0200 Subject: [PATCH 0192/1034] fix bug in return code for hf mf writeblock where it would say it succeeded when it didnt --- armsrc/mifarecmd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 145527a7e..ef6b6022f 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -145,7 +145,7 @@ int16_t mifare_cmd_writeblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t write LED_B_OFF(); LED_C_OFF(); - uint8_t retval = PM3_SUCCESS; + int retval = PM3_SUCCESS; if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) { if (g_dbglevel >= DBG_ERROR) Dbprintf("Can't select card"); From 772b9121f627383d728d6fd967fcd0dda3f8fc93 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 15 Jul 2023 11:51:47 +0200 Subject: [PATCH 0193/1034] some output can be at debug logging instead --- client/src/cmdhf14a.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 8acf021cc..a8ec8a60d 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -1009,7 +1009,7 @@ static int CmdExchangeAPDU(bool chainingin, uint8_t *datain, int datainlen, bool *dataoutlen += dlen; if (maxdataoutlen && *dataoutlen > maxdataoutlen) { - PrintAndLogEx(ERR, "APDU: Buffer too small(%d), needs %d bytes", *dataoutlen, maxdataoutlen); + PrintAndLogEx(DEBUG, "ERR: APDU: Buffer too small(%d), needs %d bytes", *dataoutlen, maxdataoutlen); return PM3_EAPDU_FAIL; } @@ -1021,19 +1021,19 @@ static int CmdExchangeAPDU(bool chainingin, uint8_t *datain, int datainlen, bool } if (!iLen) { - PrintAndLogEx(ERR, "APDU: No APDU response"); + PrintAndLogEx(DEBUG, "ERR: APDU: No APDU response"); return PM3_EAPDU_FAIL; } // check apdu length if (iLen < 2 && iLen >= 0) { - PrintAndLogEx(ERR, "APDU: Small APDU response, len %d", iLen); + PrintAndLogEx(DEBUG, "ERR: APDU: Small APDU response, len %d", iLen); return PM3_EAPDU_FAIL; } // check block TODO if (iLen == -2) { - PrintAndLogEx(ERR, "APDU: Block type mismatch"); + PrintAndLogEx(DEBUG, "ERR: APDU: Block type mismatch"); return PM3_EAPDU_FAIL; } @@ -1046,11 +1046,11 @@ static int CmdExchangeAPDU(bool chainingin, uint8_t *datain, int datainlen, bool // CRC Check if (iLen == -1) { - PrintAndLogEx(ERR, "APDU: ISO 14443A CRC error"); + PrintAndLogEx(DEBUG, "ERR: APDU: ISO 14443A CRC error"); return PM3_EAPDU_FAIL; } } else { - PrintAndLogEx(ERR, "APDU: Reply timeout"); + PrintAndLogEx(DEBUG, "ERR: APDU: Reply timeout"); return PM3_EAPDU_FAIL; } From 71369a3007bff587f8c0259c3f1ba74910dbfa35 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 15 Jul 2023 11:52:42 +0200 Subject: [PATCH 0194/1034] text style --- client/src/emv/cmdemv.c | 164 ++++++++++++++++++++-------------------- 1 file changed, 82 insertions(+), 82 deletions(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 8a0b7f82d..2282698d5 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -1350,13 +1350,14 @@ static int CmdEMVExec(const char *Cmd) { // https://www.openscdp.org/scripts/tutorial/emv/applicationselection.html if (!forceSearch) { // PPSE - PrintAndLogEx(NORMAL, "\n* PPSE."); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "* PPSE."); SetAPDULogging(showAPDU); res = EMVSearchPSE(channel, activateField, true, psenum, decodeTLV, tlvSelect); // check PPSE instead of PSE and vice versa if (res) { - PrintAndLogEx(NORMAL, "Check PPSE instead of PSE and vice versa..."); + PrintAndLogEx(INFO, "Check PPSE instead of PSE and vice versa..."); res = EMVSearchPSE(channel, false, true, psenum == 1 ? 2 : 1, decodeTLV, tlvSelect); } @@ -1369,7 +1370,7 @@ static int CmdEMVExec(const char *Cmd) { // Search if (!AIDlen) { - PrintAndLogEx(NORMAL, "\n* Search AID in list."); + PrintAndLogEx(INFO, "\n* Search AID in list."); SetAPDULogging(false); if (EMVSearch(channel, activateField, true, decodeTLV, tlvSelect, false)) { dreturn(PM3_ERFTRANS); @@ -1391,7 +1392,7 @@ static int CmdEMVExec(const char *Cmd) { } // Select - PrintAndLogEx(NORMAL, "\n* Selecting AID:%s", sprint_hex_inrow(AID, AIDlen)); + PrintAndLogEx(INFO, "\n* Selecting AID:%s", sprint_hex_inrow(AID, AIDlen)); SetAPDULogging(showAPDU); res = EMVSelect(channel, false, true, AID, AIDlen, buf, sizeof(buf), &len, &sw, tlvRoot); @@ -1402,13 +1403,13 @@ static int CmdEMVExec(const char *Cmd) { if (decodeTLV) TLVPrintFromBuffer(buf, len); - PrintAndLogEx(NORMAL, "* Selected."); + PrintAndLogEx(INFO, "* Selected."); - PrintAndLogEx(NORMAL, "\n* Init transaction parameters."); + PrintAndLogEx(INFO, "\n* Init transaction parameters."); InitTransactionParameters(tlvRoot, paramLoadJSON, TrType, GenACGPO); TLVPrintFromTLV(tlvRoot); // TODO delete!!! - PrintAndLogEx(NORMAL, "\n* Calc PDOL."); + PrintAndLogEx(INFO, "\n* Calc PDOL."); pdol_data_tlv = dol_process(tlvdb_get(tlvRoot, 0x9f38, NULL), tlvRoot, 0x83); if (!pdol_data_tlv) { PrintAndLogEx(ERR, "Error: can't create PDOL TLV."); @@ -1421,9 +1422,9 @@ static int CmdEMVExec(const char *Cmd) { PrintAndLogEx(ERR, "Error: can't create PDOL data."); dreturn(PM3_ESOFT); } - PrintAndLogEx(NORMAL, "PDOL data[%zu]: %s", pdol_data_tlv_data_len, sprint_hex(pdol_data_tlv_data, pdol_data_tlv_data_len)); + PrintAndLogEx(INFO, "PDOL data[%zu]: %s", pdol_data_tlv_data_len, sprint_hex(pdol_data_tlv_data, pdol_data_tlv_data_len)); - PrintAndLogEx(NORMAL, "\n* GPO."); + PrintAndLogEx(INFO, "\n* GPO."); res = EMVGPO(channel, true, pdol_data_tlv_data, pdol_data_tlv_data_len, buf, sizeof(buf), &len, &sw, tlvRoot); free(pdol_data_tlv_data); @@ -1446,14 +1447,14 @@ static int CmdEMVExec(const char *Cmd) { tlvdb_add(tlvRoot, pan); const struct tlv *pantlv = tlvdb_get(tlvRoot, 0x5a, NULL); - PrintAndLogEx(NORMAL, "\n* * Extracted PAN from track2: %s", sprint_hex(pantlv->value, pantlv->len)); + PrintAndLogEx(INFO, "\n* * Extracted PAN from track2: %s", sprint_hex(pantlv->value, pantlv->len)); } else { PrintAndLogEx(WARNING, "\n* * WARNING: Can't extract PAN from track2."); } } } - PrintAndLogEx(NORMAL, "\n* Read records from AFL."); + PrintAndLogEx(INFO, "\n* Read records from AFL."); const struct tlv *AFL = tlvdb_get(tlvRoot, 0x94, NULL); if (!AFL || !AFL->len) @@ -1471,14 +1472,14 @@ static int CmdEMVExec(const char *Cmd) { uint8_t SFIend = AFL->value[i * 4 + 2]; uint8_t SFIoffline = AFL->value[i * 4 + 3]; - PrintAndLogEx(NORMAL, "* * SFI[%02x] start:%02x end:%02x offline count:%02x", SFI, SFIstart, SFIend, SFIoffline); + PrintAndLogEx(INFO, "* * SFI[%02x] start:%02x end:%02x offline count:%02x", SFI, SFIstart, SFIend, SFIoffline); if (SFI == 0 || SFI == 31 || SFIstart == 0 || SFIstart > SFIend) { - PrintAndLogEx(NORMAL, "SFI ERROR! Skipped..."); + PrintAndLogEx(WARNING, "SFI ERROR! Skipped..."); continue; } for (int n = SFIstart; n <= SFIend; n++) { - PrintAndLogEx(NORMAL, "* * * SFI[%02x] %d", SFI, n); + PrintAndLogEx(INFO, "* * * SFI[%02x] %d", SFI, n); res = EMVReadRecord(channel, true, SFI, n, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { @@ -1521,7 +1522,7 @@ static int CmdEMVExec(const char *Cmd) { if (ODAiListLen) { struct tlvdb *oda = tlvdb_fixed(0x21, ODAiListLen, ODAiList); // not a standard tag tlvdb_add(tlvRoot, oda); - PrintAndLogEx(NORMAL, "* Input list for Offline Data Authentication added to TLV. len=%zu \n", ODAiListLen); + PrintAndLogEx(INFO, "* Input list for Offline Data Authentication added to TLV. len=%zu \n", ODAiListLen); } // get AIP @@ -1529,20 +1530,20 @@ static int CmdEMVExec(const char *Cmd) { const struct tlv *AIPtlv = tlvdb_get(tlvRoot, 0x82, NULL); if (AIPtlv) { AIP = AIPtlv->value[0] + AIPtlv->value[1] * 0x100; - PrintAndLogEx(NORMAL, "* * AIP=%04x", AIP); + PrintAndLogEx(INFO, "* * AIP=%04x", AIP); } else { PrintAndLogEx(ERR, "Can't find AIP."); } // SDA if (AIP & 0x0040) { - PrintAndLogEx(NORMAL, "\n* SDA"); + PrintAndLogEx(INFO, "\n* SDA"); trSDA(tlvRoot); } // DDA if (AIP & 0x0020) { - PrintAndLogEx(NORMAL, "\n* DDA"); + PrintAndLogEx(INFO, "\n* DDA"); trDDA(channel, decodeTLV, tlvRoot); } @@ -1553,8 +1554,8 @@ static int CmdEMVExec(const char *Cmd) { // 9F26: Application Cryptogram const struct tlv *AC = tlvdb_get(tlvRoot, 0x9F26, NULL); if (AC) { - PrintAndLogEx(NORMAL, "\n--> qVSDC transaction."); - PrintAndLogEx(NORMAL, "* AC path"); + PrintAndLogEx(INFO, "\n--> qVSDC transaction."); + PrintAndLogEx(INFO, "* AC path"); // 9F36: Application Transaction Counter (ATC) const struct tlv *ATC = tlvdb_get(tlvRoot, 0x9F36, NULL); @@ -1564,24 +1565,24 @@ static int CmdEMVExec(const char *Cmd) { const struct tlv *IAD = tlvdb_get(tlvRoot, 0x9F10, NULL); // print AC data - PrintAndLogEx(NORMAL, "ATC: %s", sprint_hex(ATC->value, ATC->len)); - PrintAndLogEx(NORMAL, "AC: %s", sprint_hex(AC->value, AC->len)); + PrintAndLogEx(INFO, "ATC: %s", sprint_hex(ATC->value, ATC->len)); + PrintAndLogEx(INFO, "AC: %s", sprint_hex(AC->value, AC->len)); if (IAD) { - PrintAndLogEx(NORMAL, "IAD: %s", sprint_hex(IAD->value, IAD->len)); + PrintAndLogEx(INFO, "IAD: %s", sprint_hex(IAD->value, IAD->len)); // https://mst-company.ru/blog/ekvajring-emv-tranzaktsiya-emv-transaction-flow-chast-4-pdol-i-beskontaktnye-karty-osobennosti-qvsdc-i-quics if (IAD->value[0] == 0x1f) { - PrintAndLogEx(NORMAL, " Key index: 0x%02x", IAD->value[2]); - PrintAndLogEx(NORMAL, " Crypto ver: 0x%02x(%03d)", IAD->value[1], IAD->value[1]); - PrintAndLogEx(NORMAL, " CVR: %s", sprint_hex(&IAD->value[3], 5)); + PrintAndLogEx(INFO, " Key index: 0x%02x", IAD->value[2]); + PrintAndLogEx(INFO, " Crypto ver: 0x%02x(%03d)", IAD->value[1], IAD->value[1]); + PrintAndLogEx(INFO, " CVR: %s", sprint_hex(&IAD->value[3], 5)); struct tlvdb *cvr = tlvdb_fixed(0x20, 5, &IAD->value[3]); TLVPrintFromTLVLev(cvr, 1); - PrintAndLogEx(NORMAL, " IDD option id: 0x%02x", IAD->value[8]); - PrintAndLogEx(NORMAL, " IDD: %s", sprint_hex(&IAD->value[9], 23)); + PrintAndLogEx(INFO, " IDD option id: 0x%02x", IAD->value[8]); + PrintAndLogEx(INFO, " IDD: %s", sprint_hex(&IAD->value[9], 23)); } else if (IAD->len >= IAD->value[0] + 1) { - PrintAndLogEx(NORMAL, " Key index: 0x%02x", IAD->value[1]); - PrintAndLogEx(NORMAL, " Crypto ver: 0x%02x(%03d)", IAD->value[2], IAD->value[2]); - PrintAndLogEx(NORMAL, " CVR: %s", sprint_hex(&IAD->value[3], IAD->value[0] - 2)); + PrintAndLogEx(INFO, " Key index: 0x%02x", IAD->value[1]); + PrintAndLogEx(INFO, " Crypto ver: 0x%02x(%03d)", IAD->value[2], IAD->value[2]); + PrintAndLogEx(INFO, " CVR: %s", sprint_hex(&IAD->value[3], IAD->value[0] - 2)); struct tlvdb *cvr = tlvdb_fixed(0x20, IAD->value[0] - 2, &IAD->value[3]); TLVPrintFromTLVLev(cvr, 1); if (IAD->len >= 8) { @@ -1607,9 +1608,9 @@ static int CmdEMVExec(const char *Cmd) { if (GetCardPSVendor(AID, AIDlen) == CV_MASTERCARD && (TrType == TT_QVSDCMCHIP || TrType == TT_CDA)) { const struct tlv *CDOL1 = tlvdb_get(tlvRoot, 0x8c, NULL); if (CDOL1 && GetCardPSVendor(AID, AIDlen) == CV_MASTERCARD) { // and m/chip transaction flag - PrintAndLogEx(NORMAL, "\n--> Mastercard M/Chip transaction."); + PrintAndLogEx(INFO, "\n--> Mastercard M/Chip transaction."); - PrintAndLogEx(NORMAL, "* * Generate challenge"); + PrintAndLogEx(INFO, "* * Generate challenge"); res = EMVGenerateChallenge(channel, true, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { PrintAndLogEx(ERR, "Error GetChallenge. APDU error %4x", sw); @@ -1624,23 +1625,22 @@ static int CmdEMVExec(const char *Cmd) { struct tlvdb *ICCDynN = tlvdb_fixed(0x9f4c, len, buf); tlvdb_add(tlvRoot, ICCDynN); if (decodeTLV) { - PrintAndLogEx(NORMAL, "\n* * ICC Dynamic Number:"); + PrintAndLogEx(INFO, "\n* * ICC Dynamic Number:"); TLVPrintFromTLV(ICCDynN); } - PrintAndLogEx(NORMAL, "* * Calc CDOL1"); + PrintAndLogEx(INFO, "* * Calc CDOL1"); struct tlv *cdol_data_tlv = dol_process(tlvdb_get(tlvRoot, 0x8c, NULL), tlvRoot, 0x01); // 0x01 - dummy tag if (!cdol_data_tlv) { PrintAndLogEx(ERR, "Error: can't create CDOL1 TLV."); dreturn(PM3_ESOFT); } - PrintAndLogEx(NORMAL, "CDOL1 data[%zu]: %s", cdol_data_tlv->len, sprint_hex(cdol_data_tlv->value, cdol_data_tlv->len)); + PrintAndLogEx(INFO, "CDOL1 data[%zu]: %s", cdol_data_tlv->len, sprint_hex(cdol_data_tlv->value, cdol_data_tlv->len)); - PrintAndLogEx(NORMAL, "* * AC1"); + PrintAndLogEx(INFO, "* * AC1"); // EMVAC_TC + EMVAC_CDAREQ --- to get SDAD res = EMVAC(channel, true, (TrType == TT_CDA) ? EMVAC_TC + EMVAC_CDAREQ : EMVAC_TC, (uint8_t *)cdol_data_tlv->value, cdol_data_tlv->len, buf, sizeof(buf), &len, &sw, tlvRoot); - if (res) { PrintAndLogEx(ERR, "AC1 error(%d): %4x. Exit...", res, sw); dreturn(PM3_ERFTRANS); @@ -1650,36 +1650,36 @@ static int CmdEMVExec(const char *Cmd) { TLVPrintFromBuffer(buf, len); // CDA - PrintAndLogEx(NORMAL, "\n* CDA:"); + PrintAndLogEx(INFO, "\n* CDA:"); struct tlvdb *ac_tlv = tlvdb_parse_multi(buf, len); if (tlvdb_get(ac_tlv, 0x9f4b, NULL)) { res = trCDA(tlvRoot, ac_tlv, pdol_data_tlv, cdol_data_tlv); if (res) { - PrintAndLogEx(NORMAL, "CDA error (%d)", res); + PrintAndLogEx(WARNING, "CDA error (%d)", res); } } else { - PrintAndLogEx(NORMAL, "\n* Signed Dynamic Application Data (0x9f4b) not present"); + PrintAndLogEx(INFO, "\n* Signed Dynamic Application Data (0x9f4b) not present"); } free(ac_tlv); free(cdol_data_tlv); - PrintAndLogEx(NORMAL, "\n* M/Chip transaction result:"); + PrintAndLogEx(INFO, "\n* M/Chip transaction result:"); // 9F27: Cryptogram Information Data (CID) const struct tlv *CID = tlvdb_get(tlvRoot, 0x9F27, NULL); if (CID) { emv_tag_dump(CID, 1); - PrintAndLogEx(NORMAL, "------------------------------"); + PrintAndLogEx(INFO, "------------------------------"); if (CID->len > 0) { switch (CID->value[0] & EMVAC_AC_MASK) { case EMVAC_AAC: - PrintAndLogEx(NORMAL, "Transaction DECLINED."); + PrintAndLogEx(INFO, "Transaction DECLINED."); break; case EMVAC_TC: - PrintAndLogEx(NORMAL, "Transaction approved OFFLINE."); + PrintAndLogEx(INFO, "Transaction approved OFFLINE."); break; case EMVAC_ARQC: - PrintAndLogEx(NORMAL, "Transaction approved ONLINE."); + PrintAndLogEx(INFO, "Transaction approved ONLINE."); break; default: PrintAndLogEx(WARNING, "Warning: CID transaction code error %2x", CID->value[0] & EMVAC_AC_MASK); @@ -1697,20 +1697,20 @@ static int CmdEMVExec(const char *Cmd) { // MSD if (AIP & 0x8000 && TrType == TT_MSD) { - PrintAndLogEx(NORMAL, "\n--> MSD transaction."); + PrintAndLogEx(INFO, "\n--> MSD transaction."); - PrintAndLogEx(NORMAL, "* MSD dCVV path. Check dCVV"); + PrintAndLogEx(INFO, "* MSD dCVV path. Check dCVV"); const struct tlv *track2 = tlvdb_get(tlvRoot, 0x57, NULL); if (track2) { - PrintAndLogEx(NORMAL, "Track2: %s", sprint_hex(track2->value, track2->len)); + PrintAndLogEx(INFO, "Track2: %s", sprint_hex(track2->value, track2->len)); struct tlvdb *dCVV = GetdCVVRawFromTrack2(track2); - PrintAndLogEx(NORMAL, "dCVV raw data:"); + PrintAndLogEx(INFO, "dCVV raw data:"); TLVPrintFromTLV(dCVV); if (GetCardPSVendor(AID, AIDlen) == CV_MASTERCARD) { - PrintAndLogEx(NORMAL, "\n* Mastercard calculate UDOL"); + PrintAndLogEx(INFO, "\n* Mastercard calculate UDOL"); // UDOL (9F69) const struct tlv *UDOL = tlvdb_get(tlvRoot, 0x9F69, NULL); @@ -1721,7 +1721,7 @@ static int CmdEMVExec(const char *Cmd) { .value = (uint8_t *)"\x9f\x6a\x04", }; if (!UDOL) - PrintAndLogEx(NORMAL, "Use default UDOL."); + PrintAndLogEx(INFO, "Use default UDOL."); struct tlv *udol_data_tlv = dol_process(UDOL ? UDOL : &defUDOL, tlvRoot, 0x01); // 0x01 - dummy tag if (!udol_data_tlv) { @@ -1729,9 +1729,9 @@ static int CmdEMVExec(const char *Cmd) { dreturn(PM3_ESOFT); } - PrintAndLogEx(NORMAL, "UDOL data[%zu]: %s", udol_data_tlv->len, sprint_hex(udol_data_tlv->value, udol_data_tlv->len)); + PrintAndLogEx(INFO, "UDOL data[%zu]: %s", udol_data_tlv->len, sprint_hex(udol_data_tlv->value, udol_data_tlv->len)); - PrintAndLogEx(NORMAL, "\n* Mastercard compute cryptographic checksum(UDOL)"); + PrintAndLogEx(INFO, "\n* Mastercard compute cryptographic checksum(UDOL)"); res = MSCComputeCryptoChecksum(channel, true, (uint8_t *)udol_data_tlv->value, udol_data_tlv->len, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { @@ -1754,18 +1754,18 @@ static int CmdEMVExec(const char *Cmd) { // VSDC if (GetCardPSVendor(AID, AIDlen) == CV_VISA && (TrType == TT_VSDC || TrType == TT_CDA)) { - PrintAndLogEx(NORMAL, "\n--> VSDC transaction."); + PrintAndLogEx(INFO, "\n--> VSDC transaction."); - PrintAndLogEx(NORMAL, "* * Calc CDOL1"); + PrintAndLogEx(INFO, "* * Calc CDOL1"); struct tlv *cdol1_data_tlv = dol_process(tlvdb_get(tlvRoot, 0x8c, NULL), tlvRoot, 0x01); // 0x01 - dummy tag if (!cdol1_data_tlv) { PrintAndLogEx(ERR, "Error: can't create CDOL1 TLV."); dreturn(PM3_ESOFT); } - PrintAndLogEx(NORMAL, "CDOL1 data[%zu]: %s", cdol1_data_tlv->len, sprint_hex(cdol1_data_tlv->value, cdol1_data_tlv->len)); + PrintAndLogEx(INFO, "CDOL1 data[%zu]: %s", cdol1_data_tlv->len, sprint_hex(cdol1_data_tlv->value, cdol1_data_tlv->len)); - PrintAndLogEx(NORMAL, "* * AC1"); + PrintAndLogEx(INFO, "* * AC1"); // EMVAC_TC + EMVAC_CDAREQ --- to get SDAD res = EMVAC(channel, true, (TrType == TT_CDA) ? EMVAC_TC + EMVAC_CDAREQ : EMVAC_TC, (uint8_t *)cdol1_data_tlv->value, cdol1_data_tlv->len, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { @@ -1791,56 +1791,56 @@ static int CmdEMVExec(const char *Cmd) { uint8_t CryptoVersion = 0; const struct tlv *IAD = tlvdb_get(tlvRoot, 0x9f10, NULL); if (IAD && (IAD->len > 1)) { - PrintAndLogEx(NORMAL, "\n* * Issuer Application Data (IAD):"); + PrintAndLogEx(INFO, "\n* * Issuer Application Data (IAD):"); uint8_t VDDlen = IAD->value[0]; // Visa discretionary data length uint8_t IDDlen = 0; // Issuer discretionary data length - PrintAndLogEx(NORMAL, "IAD length: %zu", IAD->len); - PrintAndLogEx(NORMAL, "VDDlen: %d", VDDlen); + PrintAndLogEx(INFO, "IAD length: %zu", IAD->len); + PrintAndLogEx(INFO, "VDDlen: %d", VDDlen); if (VDDlen < IAD->len - 1) { IDDlen = IAD->value[VDDlen + 1]; } - PrintAndLogEx(NORMAL, "IDDlen: %d", IDDlen); + PrintAndLogEx(INFO, "IDDlen: %d", IDDlen); uint8_t DerivKeyIndex = IAD->value[1]; CryptoVersion = IAD->value[2]; - PrintAndLogEx(NORMAL, "CryptoVersion: %d", CryptoVersion); - PrintAndLogEx(NORMAL, "DerivKeyIndex: %d", DerivKeyIndex); + PrintAndLogEx(INFO, "CryptoVersion: %d", CryptoVersion); + PrintAndLogEx(INFO, "DerivKeyIndex: %d", DerivKeyIndex); // Card Verification Results (CVR) decode if ((VDDlen - 2) > 0) { uint8_t CVRlen = IAD->value[3]; if (CVRlen == (VDDlen - 2 - 1)) { - PrintAndLogEx(NORMAL, "CVR length: %d", CVRlen); - PrintAndLogEx(NORMAL, "CVR: %s", sprint_hex(&IAD->value[4], CVRlen)); + PrintAndLogEx(INFO, "CVR length: %d", CVRlen); + PrintAndLogEx(INFO, "CVR: %s", sprint_hex(&IAD->value[4], CVRlen)); } else { PrintAndLogEx(WARNING, "Wrong CVR length! CVR: %s", sprint_hex(&IAD->value[3], VDDlen - 2)); } } if (IDDlen) { - PrintAndLogEx(NORMAL, "IDD: %s", sprint_hex(&IAD->value[VDDlen + 1], IDDlen)); + PrintAndLogEx(INFO, "IDD: %s", sprint_hex(&IAD->value[VDDlen + 1], IDDlen)); } } else { PrintAndLogEx(WARNING, "Issuer Application Data (IAD) not found."); } - PrintAndLogEx(NORMAL, "\n* * Processing online request"); + PrintAndLogEx(INFO, "\n* * Processing online request"); // authorization response code from acquirer const char HostResponse[] = "00"; // 0x3030 size_t HostResponseLen = sizeof(HostResponse) - 1; - PrintAndLogEx(NORMAL, "Host Response: `%s`", HostResponse); + PrintAndLogEx(INFO, "Host Response: `%s`", HostResponse); tlvdb_change_or_add_node(tlvRoot, 0x8a, HostResponseLen, (const unsigned char *)HostResponse); if (CryptoVersion == 10) { - PrintAndLogEx(NORMAL, "\n* * Generate ARPC"); + PrintAndLogEx(INFO, "\n* * Generate ARPC"); // Application Cryptogram (AC) const struct tlv *AC = tlvdb_get(tlvRoot, 0x9f26, NULL); if (AC && (AC->len > 0)) { - PrintAndLogEx(NORMAL, "AC: %s", sprint_hex(AC->value, AC->len)); + PrintAndLogEx(INFO, "AC: %s", sprint_hex(AC->value, AC->len)); size_t rawARPClen = AC->len; uint8_t rawARPC[rawARPClen]; @@ -1848,10 +1848,10 @@ static int CmdEMVExec(const char *Cmd) { for (int i = 0; (i < HostResponseLen) && (i < rawARPClen); i++) { rawARPC[i] ^= HostResponse[i]; } - PrintAndLogEx(NORMAL, "raw ARPC: %s", sprint_hex(rawARPC, rawARPClen)); + PrintAndLogEx(INFO, "raw ARPC: %s", sprint_hex(rawARPC, rawARPClen)); // here must be calculation of ARPC, but we don't know a bank keys. - PrintAndLogEx(NORMAL, "ARPC: n/a"); + PrintAndLogEx(INFO, "ARPC: n/a"); } else { PrintAndLogEx(WARNING, "Application Cryptogram (AC) not found."); @@ -1861,7 +1861,7 @@ static int CmdEMVExec(const char *Cmd) { // needs to send AC2 command (res == ARQC) if ((CID & EMVAC_AC_MASK) == EMVAC_ARQC) { - PrintAndLogEx(NORMAL, "\n* * Calc CDOL2"); + PrintAndLogEx(INFO, "\n* * Calc CDOL2"); struct tlv *cdol2_data_tlv = dol_process(tlvdb_get(tlvRoot, 0x8d, NULL), tlvRoot, 0x01); // 0x01 - dummy tag if (!cdol2_data_tlv) { PrintAndLogEx(ERR, "Error: can't create CDOL2 TLV."); @@ -1869,15 +1869,15 @@ static int CmdEMVExec(const char *Cmd) { dreturn(PM3_ESOFT); } - PrintAndLogEx(NORMAL, "CDOL2 data[%zu]: %s", cdol2_data_tlv->len, sprint_hex(cdol2_data_tlv->value, cdol2_data_tlv->len)); - //PrintAndLogEx(NORMAL, "* * AC2"); + PrintAndLogEx(INFO, "CDOL2 data[%zu]: %s", cdol2_data_tlv->len, sprint_hex(cdol2_data_tlv->value, cdol2_data_tlv->len)); + //PrintAndLogEx(INFO, "* * AC2"); // here must be AC2, but we don't make external authenticate ( /* // AC2 PRINT_INDENT(level); - if ((CID & EMVAC_AC2_MASK) == EMVAC_AAC2) PrintAndLogEx(NORMAL, "\tAC2: AAC (Transaction declined)"); - if ((CID & EMVAC_AC2_MASK) == EMVAC_TC2) PrintAndLogEx(NORMAL, "\tAC2: TC (Transaction approved)"); - if ((CID & EMVAC_AC2_MASK) == EMVAC_ARQC2) PrintAndLogEx(NORMAL, "\tAC2: not requested (ARQC)"); - if ((CID & EMVAC_AC2_MASK) == EMVAC_AC2_MASK) PrintAndLogEx(NORMAL, "\tAC2: RFU"); + if ((CID & EMVAC_AC2_MASK) == EMVAC_AAC2) PrintAndLogEx(INFO, "\tAC2: AAC (Transaction declined)"); + if ((CID & EMVAC_AC2_MASK) == EMVAC_TC2) PrintAndLogEx(INFO, "\tAC2: TC (Transaction approved)"); + if ((CID & EMVAC_AC2_MASK) == EMVAC_ARQC2) PrintAndLogEx(INFO, "\tAC2: not requested (ARQC)"); + if ((CID & EMVAC_AC2_MASK) == EMVAC_AC2_MASK) PrintAndLogEx(INFO, "\tAC2: RFU"); */ free(cdol2_data_tlv); } @@ -1892,7 +1892,7 @@ static int CmdEMVExec(const char *Cmd) { tlvdb_free(tlvSelect); tlvdb_free(tlvRoot); - PrintAndLogEx(NORMAL, "\n* Transaction completed."); + PrintAndLogEx(SUCCESS, "\n* Transaction completed."); return PM3_SUCCESS; } @@ -2786,7 +2786,7 @@ static int CmdEMVReader(const char *Cmd) { // free tlv object tlvdb_free(tlvRoot); - + PrintAndLogEx(INFO, ""); } while (continuous); DropFieldEx(channel); From 3190cc5a3ddaf4892fc689bc5f53acbbb0ba237a Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 15 Jul 2023 14:27:44 +0200 Subject: [PATCH 0195/1034] text --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 3f704ad62..16e32fd61 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -1822,7 +1822,7 @@ jumptoend: static int CmdHF14AMfNestedStatic(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf staticnested", - "Execute Nested attack against MIFARE Classic card with static nonce for key recovery.\n" + "Execute static nested attack against MIFARE Classic card with static nonce for key recovery.\n" "Supply a known key from one block to recover all keys", "hf mf staticnested --mini --blk 0 -a -k FFFFFFFFFFFF\n" "hf mf staticnested --1k --blk 0 -a -k FFFFFFFFFFFF\n" From 1e44a26b5462c68898703157593bca60930bb83c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 15 Jul 2023 15:26:01 +0200 Subject: [PATCH 0196/1034] text --- client/dictionaries/mfc_default_keys.dic | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index d32346428..345d1a702 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -36,6 +36,9 @@ D01AFEEB890A 2612C6DE84CA 707B11FC1481 # +# QL88 diversifed +03F9067646AE +2352C5B56D85 # B0B1B2B3B4B5 C0C1C2C3C4C5 @@ -935,9 +938,9 @@ FBF225DC5D58 # Data https://pastebin.com/BEm6bdAE # vingcard.txt # Note: most likely diversified +96A301BCE267 4708111C8604 3D50D902EA48 -96A301BCE267 6700F10FEC09 7A09CC1DB70A 560F7CFF2D81 @@ -2053,6 +2056,9 @@ D144BD193063 # Data from "the more the marriott" mifare project (colonelborkmundus) # aka The Horde # +# These keys seem to be from Vingcard / Saflok system which means they are diversified +# and not static default keys. To verify this, the UID from such a card is needed. +# # 20230125-01, Elite Member Marriott Rewards 43012BD9EB87 # 20230125-02, Elite Member Marriott Rewards @@ -2133,7 +2139,6 @@ D23C1CB1216E # 20230413-78, Caesars A1D92F808CAF # 20230413-79, The Cosmopolitan, Vegas -# 96A301BCE267 # 20230413-80, Aria 1153C319B4F8 # 20230413-81, Aria From 83e083100ba9b65874ccff7d386c56d1ecce253d Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sat, 15 Jul 2023 16:52:48 +0200 Subject: [PATCH 0197/1034] Bring LZ4 support for hardnested tables Testing perfs on an old 8-core laptop: BZ2 : 2 Mb, average decompression time: 5514 ms LZ4 -9: 9 Mb, average decompression time: 837 ms RAW : 704 Mb, average decompression time: 368 ms Other LZ4 options don't help: -1 is slower and bigger, --favor-decSpeed does not do anything To enable: apt install liblz4-dev cd client/resources/hardnested_tables for i in *bz2; do bunzip2 $i; lz4 -9 --rm ${i%.bz2}; done --- client/CMakeLists.txt | 18 ++ client/Makefile | 3 + client/experimental_lib/CMakeLists.txt | 18 ++ .../bitflip_0_001_states.bin.bz2 | Bin 2801 -> 0 bytes .../bitflip_0_001_states.bin.lz4 | Bin 0 -> 27811 bytes .../bitflip_0_003_states.bin.bz2 | Bin 1531 -> 0 bytes .../bitflip_0_003_states.bin.lz4 | Bin 0 -> 17673 bytes .../bitflip_0_005_states.bin.bz2 | Bin 4901 -> 0 bytes .../bitflip_0_005_states.bin.lz4 | Bin 0 -> 34843 bytes .../bitflip_0_007_states.bin.bz2 | Bin 1591 -> 0 bytes .../bitflip_0_007_states.bin.lz4 | Bin 0 -> 19198 bytes .../bitflip_0_009_states.bin.bz2 | Bin 1780 -> 0 bytes .../bitflip_0_009_states.bin.lz4 | Bin 0 -> 18034 bytes .../bitflip_0_00b_states.bin.bz2 | Bin 1069 -> 0 bytes .../bitflip_0_00b_states.bin.lz4 | Bin 0 -> 12365 bytes .../bitflip_0_00d_states.bin.bz2 | Bin 2204 -> 0 bytes .../bitflip_0_00d_states.bin.lz4 | Bin 0 -> 22975 bytes .../bitflip_0_00f_states.bin.bz2 | Bin 1214 -> 0 bytes .../bitflip_0_00f_states.bin.lz4 | Bin 0 -> 13684 bytes .../bitflip_0_010_states.bin.bz2 | Bin 1557 -> 0 bytes .../bitflip_0_010_states.bin.lz4 | Bin 0 -> 19000 bytes .../bitflip_0_014_states.bin.bz2 | Bin 3138 -> 0 bytes .../bitflip_0_014_states.bin.lz4 | Bin 0 -> 27232 bytes .../bitflip_0_01c_states.bin.bz2 | Bin 1120 -> 0 bytes .../bitflip_0_01c_states.bin.lz4 | Bin 0 -> 22128 bytes .../bitflip_0_021_states.bin.bz2 | Bin 7328 -> 0 bytes .../bitflip_0_021_states.bin.lz4 | Bin 0 -> 42330 bytes .../bitflip_0_023_states.bin.bz2 | Bin 2080 -> 0 bytes .../bitflip_0_023_states.bin.lz4 | Bin 0 -> 23829 bytes .../bitflip_0_025_states.bin.bz2 | Bin 13155 -> 0 bytes .../bitflip_0_025_states.bin.lz4 | Bin 0 -> 52945 bytes .../bitflip_0_027_states.bin.bz2 | Bin 2632 -> 0 bytes .../bitflip_0_027_states.bin.lz4 | Bin 0 -> 27144 bytes .../bitflip_0_029_states.bin.bz2 | Bin 2402 -> 0 bytes .../bitflip_0_029_states.bin.lz4 | Bin 0 -> 27204 bytes .../bitflip_0_02b_states.bin.bz2 | Bin 1408 -> 0 bytes .../bitflip_0_02b_states.bin.lz4 | Bin 0 -> 15338 bytes .../bitflip_0_02d_states.bin.bz2 | Bin 3826 -> 0 bytes .../bitflip_0_02d_states.bin.lz4 | Bin 0 -> 35762 bytes .../bitflip_0_02f_states.bin.bz2 | Bin 1660 -> 0 bytes .../bitflip_0_02f_states.bin.lz4 | Bin 0 -> 18867 bytes .../bitflip_0_030_states.bin.bz2 | Bin 1119 -> 0 bytes .../bitflip_0_030_states.bin.lz4 | Bin 0 -> 20011 bytes .../bitflip_0_034_states.bin.bz2 | Bin 1317 -> 0 bytes .../bitflip_0_034_states.bin.lz4 | Bin 0 -> 21179 bytes .../bitflip_0_03c_states.bin.bz2 | Bin 924 -> 0 bytes .../bitflip_0_03c_states.bin.lz4 | Bin 0 -> 15502 bytes .../bitflip_0_040_states.bin.bz2 | Bin 413 -> 0 bytes .../bitflip_0_040_states.bin.lz4 | Bin 0 -> 15230 bytes .../bitflip_0_044_states.bin.bz2 | Bin 3460 -> 0 bytes .../bitflip_0_044_states.bin.lz4 | Bin 0 -> 26186 bytes .../bitflip_0_04c_states.bin.bz2 | Bin 1219 -> 0 bytes .../bitflip_0_04c_states.bin.lz4 | Bin 0 -> 21042 bytes .../bitflip_0_051_states.bin.bz2 | Bin 2568 -> 0 bytes .../bitflip_0_051_states.bin.lz4 | Bin 0 -> 28974 bytes .../bitflip_0_053_states.bin.bz2 | Bin 1356 -> 0 bytes .../bitflip_0_053_states.bin.lz4 | Bin 0 -> 16061 bytes .../bitflip_0_055_states.bin.bz2 | Bin 5503 -> 0 bytes .../bitflip_0_055_states.bin.lz4 | Bin 0 -> 35521 bytes .../bitflip_0_057_states.bin.bz2 | Bin 1890 -> 0 bytes .../bitflip_0_057_states.bin.lz4 | Bin 0 -> 21878 bytes .../bitflip_0_059_states.bin.bz2 | Bin 1820 -> 0 bytes .../bitflip_0_059_states.bin.lz4 | Bin 0 -> 18328 bytes .../bitflip_0_05b_states.bin.bz2 | Bin 1077 -> 0 bytes .../bitflip_0_05b_states.bin.lz4 | Bin 0 -> 12349 bytes .../bitflip_0_05d_states.bin.bz2 | Bin 2472 -> 0 bytes .../bitflip_0_05d_states.bin.lz4 | Bin 0 -> 24131 bytes .../bitflip_0_05f_states.bin.bz2 | Bin 1448 -> 0 bytes .../bitflip_0_05f_states.bin.lz4 | Bin 0 -> 15388 bytes .../bitflip_0_064_states.bin.bz2 | Bin 1324 -> 0 bytes .../bitflip_0_064_states.bin.lz4 | Bin 0 -> 21807 bytes .../bitflip_0_06c_states.bin.bz2 | Bin 926 -> 0 bytes .../bitflip_0_06c_states.bin.lz4 | Bin 0 -> 14984 bytes .../bitflip_0_071_states.bin.bz2 | Bin 6959 -> 0 bytes .../bitflip_0_071_states.bin.lz4 | Bin 0 -> 45965 bytes .../bitflip_0_073_states.bin.bz2 | Bin 1861 -> 0 bytes .../bitflip_0_073_states.bin.lz4 | Bin 0 -> 22696 bytes .../bitflip_0_075_states.bin.bz2 | Bin 12922 -> 0 bytes .../bitflip_0_075_states.bin.lz4 | Bin 0 -> 52098 bytes .../bitflip_0_077_states.bin.bz2 | Bin 2916 -> 0 bytes .../bitflip_0_077_states.bin.lz4 | Bin 0 -> 28775 bytes .../bitflip_0_079_states.bin.bz2 | Bin 2400 -> 0 bytes .../bitflip_0_079_states.bin.lz4 | Bin 0 -> 27204 bytes .../bitflip_0_07b_states.bin.bz2 | Bin 1404 -> 0 bytes .../bitflip_0_07b_states.bin.lz4 | Bin 0 -> 15338 bytes .../bitflip_0_07f_states.bin.bz2 | Bin 2054 -> 0 bytes .../bitflip_0_07f_states.bin.lz4 | Bin 0 -> 21315 bytes .../bitflip_0_081_states.bin.bz2 | Bin 5982 -> 0 bytes .../bitflip_0_081_states.bin.lz4 | Bin 0 -> 35433 bytes .../bitflip_0_083_states.bin.bz2 | Bin 2134 -> 0 bytes .../bitflip_0_083_states.bin.lz4 | Bin 0 -> 22127 bytes .../bitflip_0_085_states.bin.bz2 | Bin 2460 -> 0 bytes .../bitflip_0_085_states.bin.lz4 | Bin 0 -> 26212 bytes .../bitflip_0_087_states.bin.bz2 | Bin 1352 -> 0 bytes .../bitflip_0_087_states.bin.lz4 | Bin 0 -> 16061 bytes .../bitflip_0_089_states.bin.bz2 | Bin 2505 -> 0 bytes .../bitflip_0_089_states.bin.lz4 | Bin 0 -> 24763 bytes .../bitflip_0_08b_states.bin.bz2 | Bin 1469 -> 0 bytes .../bitflip_0_08b_states.bin.lz4 | Bin 0 -> 15328 bytes .../bitflip_0_08d_states.bin.bz2 | Bin 1788 -> 0 bytes .../bitflip_0_08d_states.bin.lz4 | Bin 0 -> 18328 bytes .../bitflip_0_08f_states.bin.bz2 | Bin 1080 -> 0 bytes .../bitflip_0_08f_states.bin.lz4 | Bin 0 -> 12349 bytes .../bitflip_0_090_states.bin.bz2 | Bin 1281 -> 0 bytes .../bitflip_0_090_states.bin.lz4 | Bin 0 -> 17300 bytes .../bitflip_0_094_states.bin.bz2 | Bin 6279 -> 0 bytes .../bitflip_0_094_states.bin.lz4 | Bin 0 -> 31544 bytes .../bitflip_0_09c_states.bin.bz2 | Bin 1431 -> 0 bytes .../bitflip_0_09c_states.bin.lz4 | Bin 0 -> 23829 bytes .../bitflip_0_0a1_states.bin.bz2 | Bin 13572 -> 0 bytes .../bitflip_0_0a1_states.bin.lz4 | Bin 0 -> 51284 bytes .../bitflip_0_0a3_states.bin.bz2 | Bin 2973 -> 0 bytes .../bitflip_0_0a3_states.bin.lz4 | Bin 0 -> 31041 bytes .../bitflip_0_0a5_states.bin.bz2 | Bin 6943 -> 0 bytes .../bitflip_0_0a5_states.bin.lz4 | Bin 0 -> 47188 bytes .../bitflip_0_0a7_states.bin.bz2 | Bin 1863 -> 0 bytes .../bitflip_0_0a7_states.bin.lz4 | Bin 0 -> 22696 bytes .../bitflip_0_0a9_states.bin.bz2 | Bin 3825 -> 0 bytes .../bitflip_0_0a9_states.bin.lz4 | Bin 0 -> 35946 bytes .../bitflip_0_0ab_states.bin.bz2 | Bin 1924 -> 0 bytes .../bitflip_0_0ab_states.bin.lz4 | Bin 0 -> 20159 bytes .../bitflip_0_0ad_states.bin.bz2 | Bin 2419 -> 0 bytes .../bitflip_0_0ad_states.bin.lz4 | Bin 0 -> 27204 bytes .../bitflip_0_0af_states.bin.bz2 | Bin 1409 -> 0 bytes .../bitflip_0_0af_states.bin.lz4 | Bin 0 -> 15338 bytes .../bitflip_0_0b0_states.bin.bz2 | Bin 513 -> 0 bytes .../bitflip_0_0b0_states.bin.lz4 | Bin 0 -> 17155 bytes .../bitflip_0_0b4_states.bin.bz2 | Bin 3041 -> 0 bytes .../bitflip_0_0b4_states.bin.lz4 | Bin 0 -> 24777 bytes .../bitflip_0_0bc_states.bin.bz2 | Bin 1129 -> 0 bytes .../bitflip_0_0bc_states.bin.lz4 | Bin 0 -> 18407 bytes .../bitflip_0_0c0_states.bin.bz2 | Bin 415 -> 0 bytes .../bitflip_0_0c0_states.bin.lz4 | Bin 0 -> 15231 bytes .../bitflip_0_0c4_states.bin.bz2 | Bin 5975 -> 0 bytes .../bitflip_0_0c4_states.bin.lz4 | Bin 0 -> 32577 bytes .../bitflip_0_0cc_states.bin.bz2 | Bin 1614 -> 0 bytes .../bitflip_0_0cc_states.bin.lz4 | Bin 0 -> 26454 bytes .../bitflip_0_0d1_states.bin.bz2 | Bin 5983 -> 0 bytes .../bitflip_0_0d1_states.bin.lz4 | Bin 0 -> 37196 bytes .../bitflip_0_0d3_states.bin.bz2 | Bin 2082 -> 0 bytes .../bitflip_0_0d3_states.bin.lz4 | Bin 0 -> 22943 bytes .../bitflip_0_0d5_states.bin.bz2 | Bin 2460 -> 0 bytes .../bitflip_0_0d5_states.bin.lz4 | Bin 0 -> 26212 bytes .../bitflip_0_0d7_states.bin.bz2 | Bin 1352 -> 0 bytes .../bitflip_0_0d7_states.bin.lz4 | Bin 0 -> 16061 bytes .../bitflip_0_0d9_states.bin.bz2 | Bin 2498 -> 0 bytes .../bitflip_0_0d9_states.bin.lz4 | Bin 0 -> 24482 bytes .../bitflip_0_0db_states.bin.bz2 | Bin 1444 -> 0 bytes .../bitflip_0_0db_states.bin.lz4 | Bin 0 -> 15340 bytes .../bitflip_0_0dd_states.bin.bz2 | Bin 1792 -> 0 bytes .../bitflip_0_0dd_states.bin.lz4 | Bin 0 -> 17854 bytes .../bitflip_0_0df_states.bin.bz2 | Bin 1084 -> 0 bytes .../bitflip_0_0df_states.bin.lz4 | Bin 0 -> 12349 bytes .../bitflip_0_0e4_states.bin.bz2 | Bin 2793 -> 0 bytes .../bitflip_0_0e4_states.bin.lz4 | Bin 0 -> 25961 bytes .../bitflip_0_0ec_states.bin.bz2 | Bin 1145 -> 0 bytes .../bitflip_0_0ec_states.bin.lz4 | Bin 0 -> 18459 bytes .../bitflip_0_0f1_states.bin.bz2 | Bin 13180 -> 0 bytes .../bitflip_0_0f1_states.bin.lz4 | Bin 0 -> 50780 bytes .../bitflip_0_0f3_states.bin.bz2 | Bin 3234 -> 0 bytes .../bitflip_0_0f3_states.bin.lz4 | Bin 0 -> 31642 bytes .../bitflip_0_0f5_states.bin.bz2 | Bin 7153 -> 0 bytes .../bitflip_0_0f5_states.bin.lz4 | Bin 0 -> 46378 bytes .../bitflip_0_0f7_states.bin.bz2 | Bin 1983 -> 0 bytes .../bitflip_0_0f7_states.bin.lz4 | Bin 0 -> 23053 bytes .../bitflip_0_0f9_states.bin.bz2 | Bin 3834 -> 0 bytes .../bitflip_0_0f9_states.bin.lz4 | Bin 0 -> 35946 bytes .../bitflip_0_0fb_states.bin.bz2 | Bin 1940 -> 0 bytes .../bitflip_0_0fb_states.bin.lz4 | Bin 0 -> 20159 bytes .../bitflip_0_0fd_states.bin.bz2 | Bin 2702 -> 0 bytes .../bitflip_0_0fd_states.bin.lz4 | Bin 0 -> 27930 bytes .../bitflip_0_0ff_states.bin.bz2 | Bin 1569 -> 0 bytes .../bitflip_0_0ff_states.bin.lz4 | Bin 0 -> 16786 bytes .../bitflip_0_104_states.bin.bz2 | Bin 3524 -> 0 bytes .../bitflip_0_104_states.bin.lz4 | Bin 0 -> 25780 bytes .../bitflip_0_10c_states.bin.bz2 | Bin 1230 -> 0 bytes .../bitflip_0_10c_states.bin.lz4 | Bin 0 -> 21042 bytes .../bitflip_0_111_states.bin.bz2 | Bin 2568 -> 0 bytes .../bitflip_0_111_states.bin.lz4 | Bin 0 -> 28974 bytes .../bitflip_0_113_states.bin.bz2 | Bin 1352 -> 0 bytes .../bitflip_0_113_states.bin.lz4 | Bin 0 -> 16061 bytes .../bitflip_0_115_states.bin.bz2 | Bin 5503 -> 0 bytes .../bitflip_0_115_states.bin.lz4 | Bin 0 -> 35521 bytes .../bitflip_0_117_states.bin.bz2 | Bin 1888 -> 0 bytes .../bitflip_0_117_states.bin.lz4 | Bin 0 -> 21878 bytes .../bitflip_0_119_states.bin.bz2 | Bin 1806 -> 0 bytes .../bitflip_0_119_states.bin.lz4 | Bin 0 -> 18328 bytes .../bitflip_0_11b_states.bin.bz2 | Bin 1077 -> 0 bytes .../bitflip_0_11b_states.bin.lz4 | Bin 0 -> 12349 bytes .../bitflip_0_11d_states.bin.bz2 | Bin 2469 -> 0 bytes .../bitflip_0_11d_states.bin.lz4 | Bin 0 -> 24131 bytes .../bitflip_0_11f_states.bin.bz2 | Bin 1448 -> 0 bytes .../bitflip_0_11f_states.bin.lz4 | Bin 0 -> 15388 bytes .../bitflip_0_124_states.bin.bz2 | Bin 1327 -> 0 bytes .../bitflip_0_124_states.bin.lz4 | Bin 0 -> 21807 bytes .../bitflip_0_12c_states.bin.bz2 | Bin 922 -> 0 bytes .../bitflip_0_12c_states.bin.lz4 | Bin 0 -> 14984 bytes .../bitflip_0_131_states.bin.bz2 | Bin 6964 -> 0 bytes .../bitflip_0_131_states.bin.lz4 | Bin 0 -> 45965 bytes .../bitflip_0_133_states.bin.bz2 | Bin 1861 -> 0 bytes .../bitflip_0_133_states.bin.lz4 | Bin 0 -> 22696 bytes .../bitflip_0_135_states.bin.bz2 | Bin 12922 -> 0 bytes .../bitflip_0_135_states.bin.lz4 | Bin 0 -> 52098 bytes .../bitflip_0_137_states.bin.bz2 | Bin 2914 -> 0 bytes .../bitflip_0_137_states.bin.lz4 | Bin 0 -> 28775 bytes .../bitflip_0_139_states.bin.bz2 | Bin 2400 -> 0 bytes .../bitflip_0_139_states.bin.lz4 | Bin 0 -> 27204 bytes .../bitflip_0_13b_states.bin.bz2 | Bin 1405 -> 0 bytes .../bitflip_0_13b_states.bin.lz4 | Bin 0 -> 15338 bytes .../bitflip_0_13d_states.bin.bz2 | Bin 4000 -> 0 bytes .../bitflip_0_13d_states.bin.lz4 | Bin 0 -> 36355 bytes .../bitflip_0_13f_states.bin.bz2 | Bin 2056 -> 0 bytes .../bitflip_0_13f_states.bin.lz4 | Bin 0 -> 21315 bytes .../bitflip_0_141_states.bin.bz2 | Bin 2798 -> 0 bytes .../bitflip_0_141_states.bin.lz4 | Bin 0 -> 27811 bytes .../bitflip_0_143_states.bin.bz2 | Bin 1533 -> 0 bytes .../bitflip_0_143_states.bin.lz4 | Bin 0 -> 17673 bytes .../bitflip_0_145_states.bin.bz2 | Bin 5397 -> 0 bytes .../bitflip_0_145_states.bin.lz4 | Bin 0 -> 36138 bytes .../bitflip_0_147_states.bin.bz2 | Bin 1057 -> 0 bytes .../bitflip_0_147_states.bin.lz4 | Bin 0 -> 16220 bytes .../bitflip_0_149_states.bin.bz2 | Bin 1763 -> 0 bytes .../bitflip_0_149_states.bin.lz4 | Bin 0 -> 18034 bytes .../bitflip_0_14b_states.bin.bz2 | Bin 1058 -> 0 bytes .../bitflip_0_14b_states.bin.lz4 | Bin 0 -> 12365 bytes .../bitflip_0_14d_states.bin.bz2 | Bin 1196 -> 0 bytes .../bitflip_0_14d_states.bin.lz4 | Bin 0 -> 16299 bytes .../bitflip_0_14f_states.bin.bz2 | Bin 895 -> 0 bytes .../bitflip_0_14f_states.bin.lz4 | Bin 0 -> 12439 bytes .../bitflip_0_150_states.bin.bz2 | Bin 1557 -> 0 bytes .../bitflip_0_150_states.bin.lz4 | Bin 0 -> 19000 bytes .../bitflip_0_154_states.bin.bz2 | Bin 3137 -> 0 bytes .../bitflip_0_154_states.bin.lz4 | Bin 0 -> 27232 bytes .../bitflip_0_15c_states.bin.bz2 | Bin 1122 -> 0 bytes .../bitflip_0_15c_states.bin.lz4 | Bin 0 -> 22128 bytes .../bitflip_0_161_states.bin.bz2 | Bin 7268 -> 0 bytes .../bitflip_0_161_states.bin.lz4 | Bin 0 -> 42238 bytes .../bitflip_0_163_states.bin.bz2 | Bin 2071 -> 0 bytes .../bitflip_0_163_states.bin.lz4 | Bin 0 -> 23829 bytes .../bitflip_0_165_states.bin.bz2 | Bin 12956 -> 0 bytes .../bitflip_0_165_states.bin.lz4 | Bin 0 -> 52098 bytes .../bitflip_0_167_states.bin.bz2 | Bin 2901 -> 0 bytes .../bitflip_0_167_states.bin.lz4 | Bin 0 -> 28775 bytes .../bitflip_0_169_states.bin.bz2 | Bin 2437 -> 0 bytes .../bitflip_0_169_states.bin.lz4 | Bin 0 -> 27204 bytes .../bitflip_0_16b_states.bin.bz2 | Bin 1400 -> 0 bytes .../bitflip_0_16b_states.bin.lz4 | Bin 0 -> 15338 bytes .../bitflip_0_16d_states.bin.bz2 | Bin 3478 -> 0 bytes .../bitflip_0_16d_states.bin.lz4 | Bin 0 -> 32892 bytes .../bitflip_0_16f_states.bin.bz2 | Bin 1526 -> 0 bytes .../bitflip_0_16f_states.bin.lz4 | Bin 0 -> 17556 bytes .../bitflip_0_170_states.bin.bz2 | Bin 1119 -> 0 bytes .../bitflip_0_170_states.bin.lz4 | Bin 0 -> 20011 bytes .../bitflip_0_174_states.bin.bz2 | Bin 1314 -> 0 bytes .../bitflip_0_174_states.bin.lz4 | Bin 0 -> 21179 bytes .../bitflip_0_17c_states.bin.bz2 | Bin 919 -> 0 bytes .../bitflip_0_17c_states.bin.lz4 | Bin 0 -> 15502 bytes .../bitflip_0_184_states.bin.bz2 | Bin 6184 -> 0 bytes .../bitflip_0_184_states.bin.lz4 | Bin 0 -> 32658 bytes .../bitflip_0_18c_states.bin.bz2 | Bin 1614 -> 0 bytes .../bitflip_0_18c_states.bin.lz4 | Bin 0 -> 26454 bytes .../bitflip_0_191_states.bin.bz2 | Bin 5983 -> 0 bytes .../bitflip_0_191_states.bin.lz4 | Bin 0 -> 37196 bytes .../bitflip_0_193_states.bin.bz2 | Bin 2082 -> 0 bytes .../bitflip_0_193_states.bin.lz4 | Bin 0 -> 22943 bytes .../bitflip_0_195_states.bin.bz2 | Bin 2462 -> 0 bytes .../bitflip_0_195_states.bin.lz4 | Bin 0 -> 26212 bytes .../bitflip_0_197_states.bin.bz2 | Bin 1352 -> 0 bytes .../bitflip_0_197_states.bin.lz4 | Bin 0 -> 16061 bytes .../bitflip_0_199_states.bin.bz2 | Bin 2498 -> 0 bytes .../bitflip_0_199_states.bin.lz4 | Bin 0 -> 24482 bytes .../bitflip_0_19b_states.bin.bz2 | Bin 1444 -> 0 bytes .../bitflip_0_19b_states.bin.lz4 | Bin 0 -> 15340 bytes .../bitflip_0_19d_states.bin.bz2 | Bin 1784 -> 0 bytes .../bitflip_0_19d_states.bin.lz4 | Bin 0 -> 17854 bytes .../bitflip_0_19f_states.bin.bz2 | Bin 1084 -> 0 bytes .../bitflip_0_19f_states.bin.lz4 | Bin 0 -> 12349 bytes .../bitflip_0_1a4_states.bin.bz2 | Bin 2795 -> 0 bytes .../bitflip_0_1a4_states.bin.lz4 | Bin 0 -> 25961 bytes .../bitflip_0_1ac_states.bin.bz2 | Bin 1141 -> 0 bytes .../bitflip_0_1ac_states.bin.lz4 | Bin 0 -> 18459 bytes .../bitflip_0_1b1_states.bin.bz2 | Bin 13188 -> 0 bytes .../bitflip_0_1b1_states.bin.lz4 | Bin 0 -> 50808 bytes .../bitflip_0_1b3_states.bin.bz2 | Bin 3233 -> 0 bytes .../bitflip_0_1b3_states.bin.lz4 | Bin 0 -> 31642 bytes .../bitflip_0_1b5_states.bin.bz2 | Bin 7149 -> 0 bytes .../bitflip_0_1b5_states.bin.lz4 | Bin 0 -> 46378 bytes .../bitflip_0_1b7_states.bin.bz2 | Bin 1984 -> 0 bytes .../bitflip_0_1b7_states.bin.lz4 | Bin 0 -> 23053 bytes .../bitflip_0_1b9_states.bin.bz2 | Bin 3840 -> 0 bytes .../bitflip_0_1b9_states.bin.lz4 | Bin 0 -> 35946 bytes .../bitflip_0_1bb_states.bin.bz2 | Bin 1940 -> 0 bytes .../bitflip_0_1bb_states.bin.lz4 | Bin 0 -> 20159 bytes .../bitflip_0_1bd_states.bin.bz2 | Bin 2706 -> 0 bytes .../bitflip_0_1bd_states.bin.lz4 | Bin 0 -> 27930 bytes .../bitflip_0_1bf_states.bin.bz2 | Bin 1567 -> 0 bytes .../bitflip_0_1bf_states.bin.lz4 | Bin 0 -> 16786 bytes .../bitflip_0_1c1_states.bin.bz2 | Bin 5975 -> 0 bytes .../bitflip_0_1c1_states.bin.lz4 | Bin 0 -> 35433 bytes .../bitflip_0_1c3_states.bin.bz2 | Bin 2125 -> 0 bytes .../bitflip_0_1c3_states.bin.lz4 | Bin 0 -> 22127 bytes .../bitflip_0_1c5_states.bin.bz2 | Bin 472 -> 0 bytes .../bitflip_0_1c5_states.bin.lz4 | Bin 0 -> 16936 bytes .../bitflip_0_1c9_states.bin.bz2 | Bin 2501 -> 0 bytes .../bitflip_0_1c9_states.bin.lz4 | Bin 0 -> 24745 bytes .../bitflip_0_1cb_states.bin.bz2 | Bin 1466 -> 0 bytes .../bitflip_0_1cb_states.bin.lz4 | Bin 0 -> 15328 bytes .../bitflip_0_1d0_states.bin.bz2 | Bin 1281 -> 0 bytes .../bitflip_0_1d0_states.bin.lz4 | Bin 0 -> 17300 bytes .../bitflip_0_1d4_states.bin.bz2 | Bin 6278 -> 0 bytes .../bitflip_0_1d4_states.bin.lz4 | Bin 0 -> 31544 bytes .../bitflip_0_1dc_states.bin.bz2 | Bin 1436 -> 0 bytes .../bitflip_0_1dc_states.bin.lz4 | Bin 0 -> 23829 bytes .../bitflip_0_1e1_states.bin.bz2 | Bin 13795 -> 0 bytes .../bitflip_0_1e1_states.bin.lz4 | Bin 0 -> 51276 bytes .../bitflip_0_1e3_states.bin.bz2 | Bin 2971 -> 0 bytes .../bitflip_0_1e3_states.bin.lz4 | Bin 0 -> 31041 bytes .../bitflip_0_1e5_states.bin.bz2 | Bin 6318 -> 0 bytes .../bitflip_0_1e5_states.bin.lz4 | Bin 0 -> 55696 bytes .../bitflip_0_1e7_states.bin.bz2 | Bin 676 -> 0 bytes .../bitflip_0_1e7_states.bin.lz4 | Bin 0 -> 14767 bytes .../bitflip_0_1e9_states.bin.bz2 | Bin 3842 -> 0 bytes .../bitflip_0_1e9_states.bin.lz4 | Bin 0 -> 35946 bytes .../bitflip_0_1eb_states.bin.bz2 | Bin 1928 -> 0 bytes .../bitflip_0_1eb_states.bin.lz4 | Bin 0 -> 20159 bytes .../bitflip_0_1ed_states.bin.bz2 | Bin 724 -> 0 bytes .../bitflip_0_1ed_states.bin.lz4 | Bin 0 -> 15310 bytes .../bitflip_0_1ef_states.bin.bz2 | Bin 414 -> 0 bytes .../bitflip_0_1ef_states.bin.lz4 | Bin 0 -> 9882 bytes .../bitflip_0_1f0_states.bin.bz2 | Bin 511 -> 0 bytes .../bitflip_0_1f0_states.bin.lz4 | Bin 0 -> 17155 bytes .../bitflip_0_1f4_states.bin.bz2 | Bin 3035 -> 0 bytes .../bitflip_0_1f4_states.bin.lz4 | Bin 0 -> 24777 bytes .../bitflip_0_1fc_states.bin.bz2 | Bin 1127 -> 0 bytes .../bitflip_0_1fc_states.bin.lz4 | Bin 0 -> 18407 bytes .../bitflip_0_210_states.bin.bz2 | Bin 1680 -> 0 bytes .../bitflip_0_210_states.bin.lz4 | Bin 0 -> 8655 bytes .../bitflip_0_225_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_225_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_227_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_227_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_22d_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_0_22d_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_0_22f_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_22f_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_0_240_states.bin.bz2 | Bin 369 -> 0 bytes .../bitflip_0_240_states.bin.lz4 | Bin 0 -> 8357 bytes .../bitflip_0_275_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_275_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_277_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_277_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_27f_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_27f_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_0_294_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_0_294_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_0_2a1_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_2a1_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_2a3_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_2a3_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_2a9_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_0_2a9_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_0_2ab_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_2ab_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_0_2c4_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_0_2c4_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_0_2f1_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_2f1_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_2f3_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_2f3_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_2f9_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_0_2f9_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_0_2fb_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_2fb_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_0_335_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_335_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_337_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_337_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_33d_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_0_33d_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_0_33f_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_33f_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_0_350_states.bin.bz2 | Bin 1680 -> 0 bytes .../bitflip_0_350_states.bin.lz4 | Bin 0 -> 8655 bytes .../bitflip_0_365_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_365_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_367_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_367_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_36d_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_0_36d_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_0_36f_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_36f_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_0_384_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_0_384_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_0_3b1_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_3b1_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_3b3_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_3b3_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_3b9_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_0_3b9_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_0_3bb_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_3bb_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_0_3d4_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_0_3d4_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_0_3e1_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_3e1_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_3e3_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_3e3_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_3e9_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_0_3e9_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_0_3eb_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_3eb_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_1_002_states.bin.bz2 | Bin 7733 -> 0 bytes .../bitflip_1_002_states.bin.lz4 | Bin 0 -> 41681 bytes .../bitflip_1_008_states.bin.bz2 | Bin 6132 -> 0 bytes .../bitflip_1_008_states.bin.lz4 | Bin 0 -> 31271 bytes .../bitflip_1_00a_states.bin.bz2 | Bin 8688 -> 0 bytes .../bitflip_1_00a_states.bin.lz4 | Bin 0 -> 49879 bytes .../bitflip_1_012_states.bin.bz2 | Bin 2678 -> 0 bytes .../bitflip_1_012_states.bin.lz4 | Bin 0 -> 28218 bytes .../bitflip_1_018_states.bin.bz2 | Bin 1623 -> 0 bytes .../bitflip_1_018_states.bin.lz4 | Bin 0 -> 25258 bytes .../bitflip_1_01a_states.bin.bz2 | Bin 3415 -> 0 bytes .../bitflip_1_01a_states.bin.lz4 | Bin 0 -> 35928 bytes .../bitflip_1_020_states.bin.bz2 | Bin 1536 -> 0 bytes .../bitflip_1_020_states.bin.lz4 | Bin 0 -> 18953 bytes .../bitflip_1_028_states.bin.bz2 | Bin 3493 -> 0 bytes .../bitflip_1_028_states.bin.lz4 | Bin 0 -> 25815 bytes .../bitflip_1_02a_states.bin.bz2 | Bin 6158 -> 0 bytes .../bitflip_1_02a_states.bin.lz4 | Bin 0 -> 41308 bytes .../bitflip_1_02e_states.bin.bz2 | Bin 2012 -> 0 bytes .../bitflip_1_02e_states.bin.lz4 | Bin 0 -> 22053 bytes .../bitflip_1_032_states.bin.bz2 | Bin 3614 -> 0 bytes .../bitflip_1_032_states.bin.lz4 | Bin 0 -> 35067 bytes .../bitflip_1_036_states.bin.bz2 | Bin 1975 -> 0 bytes .../bitflip_1_036_states.bin.lz4 | Bin 0 -> 19614 bytes .../bitflip_1_038_states.bin.bz2 | Bin 1274 -> 0 bytes .../bitflip_1_038_states.bin.lz4 | Bin 0 -> 21459 bytes .../bitflip_1_03a_states.bin.bz2 | Bin 2736 -> 0 bytes .../bitflip_1_03a_states.bin.lz4 | Bin 0 -> 29421 bytes .../bitflip_1_03e_states.bin.bz2 | Bin 1515 -> 0 bytes .../bitflip_1_03e_states.bin.lz4 | Bin 0 -> 16874 bytes .../bitflip_1_040_states.bin.bz2 | Bin 415 -> 0 bytes .../bitflip_1_040_states.bin.lz4 | Bin 0 -> 15231 bytes .../bitflip_1_042_states.bin.bz2 | Bin 7642 -> 0 bytes .../bitflip_1_042_states.bin.lz4 | Bin 0 -> 41483 bytes .../bitflip_1_046_states.bin.bz2 | Bin 2351 -> 0 bytes .../bitflip_1_046_states.bin.lz4 | Bin 0 -> 24386 bytes .../bitflip_1_048_states.bin.bz2 | Bin 4419 -> 0 bytes .../bitflip_1_048_states.bin.lz4 | Bin 0 -> 30085 bytes .../bitflip_1_04a_states.bin.bz2 | Bin 13641 -> 0 bytes .../bitflip_1_04a_states.bin.lz4 | Bin 0 -> 50357 bytes .../bitflip_1_04e_states.bin.bz2 | Bin 2913 -> 0 bytes .../bitflip_1_04e_states.bin.lz4 | Bin 0 -> 28775 bytes .../bitflip_1_052_states.bin.bz2 | Bin 2732 -> 0 bytes .../bitflip_1_052_states.bin.lz4 | Bin 0 -> 28172 bytes .../bitflip_1_056_states.bin.bz2 | Bin 1540 -> 0 bytes .../bitflip_1_056_states.bin.lz4 | Bin 0 -> 16732 bytes .../bitflip_1_058_states.bin.bz2 | Bin 1573 -> 0 bytes .../bitflip_1_058_states.bin.lz4 | Bin 0 -> 24608 bytes .../bitflip_1_05a_states.bin.bz2 | Bin 4469 -> 0 bytes .../bitflip_1_05a_states.bin.lz4 | Bin 0 -> 36991 bytes .../bitflip_1_05e_states.bin.bz2 | Bin 2026 -> 0 bytes .../bitflip_1_05e_states.bin.lz4 | Bin 0 -> 21231 bytes .../bitflip_1_060_states.bin.bz2 | Bin 1534 -> 0 bytes .../bitflip_1_060_states.bin.lz4 | Bin 0 -> 18954 bytes .../bitflip_1_062_states.bin.bz2 | Bin 13374 -> 0 bytes .../bitflip_1_062_states.bin.lz4 | Bin 0 -> 50633 bytes .../bitflip_1_066_states.bin.bz2 | Bin 3290 -> 0 bytes .../bitflip_1_066_states.bin.lz4 | Bin 0 -> 31576 bytes .../bitflip_1_068_states.bin.bz2 | Bin 3548 -> 0 bytes .../bitflip_1_068_states.bin.lz4 | Bin 0 -> 25815 bytes .../bitflip_1_06a_states.bin.bz2 | Bin 7596 -> 0 bytes .../bitflip_1_06a_states.bin.lz4 | Bin 0 -> 43554 bytes .../bitflip_1_06e_states.bin.bz2 | Bin 1976 -> 0 bytes .../bitflip_1_06e_states.bin.lz4 | Bin 0 -> 23053 bytes .../bitflip_1_072_states.bin.bz2 | Bin 4289 -> 0 bytes .../bitflip_1_072_states.bin.lz4 | Bin 0 -> 36987 bytes .../bitflip_1_076_states.bin.bz2 | Bin 2101 -> 0 bytes .../bitflip_1_076_states.bin.lz4 | Bin 0 -> 21096 bytes .../bitflip_1_078_states.bin.bz2 | Bin 1284 -> 0 bytes .../bitflip_1_078_states.bin.lz4 | Bin 0 -> 21459 bytes .../bitflip_1_07a_states.bin.bz2 | Bin 2730 -> 0 bytes .../bitflip_1_07a_states.bin.lz4 | Bin 0 -> 28127 bytes .../bitflip_1_07e_states.bin.bz2 | Bin 1565 -> 0 bytes .../bitflip_1_07e_states.bin.lz4 | Bin 0 -> 16786 bytes .../bitflip_1_080_states.bin.bz2 | Bin 413 -> 0 bytes .../bitflip_1_080_states.bin.lz4 | Bin 0 -> 15230 bytes .../bitflip_1_082_states.bin.bz2 | Bin 10172 -> 0 bytes .../bitflip_1_082_states.bin.lz4 | Bin 0 -> 48522 bytes .../bitflip_1_086_states.bin.bz2 | Bin 2874 -> 0 bytes .../bitflip_1_086_states.bin.lz4 | Bin 0 -> 28568 bytes .../bitflip_1_088_states.bin.bz2 | Bin 3510 -> 0 bytes .../bitflip_1_088_states.bin.lz4 | Bin 0 -> 26100 bytes .../bitflip_1_08a_states.bin.bz2 | Bin 4415 -> 0 bytes .../bitflip_1_08a_states.bin.lz4 | Bin 0 -> 38962 bytes .../bitflip_1_08e_states.bin.bz2 | Bin 1569 -> 0 bytes .../bitflip_1_08e_states.bin.lz4 | Bin 0 -> 17232 bytes .../bitflip_1_092_states.bin.bz2 | Bin 3608 -> 0 bytes .../bitflip_1_092_states.bin.lz4 | Bin 0 -> 35067 bytes .../bitflip_1_096_states.bin.bz2 | Bin 2013 -> 0 bytes .../bitflip_1_096_states.bin.lz4 | Bin 0 -> 19614 bytes .../bitflip_1_098_states.bin.bz2 | Bin 1255 -> 0 bytes .../bitflip_1_098_states.bin.lz4 | Bin 0 -> 20720 bytes .../bitflip_1_09a_states.bin.bz2 | Bin 2287 -> 0 bytes .../bitflip_1_09a_states.bin.lz4 | Bin 0 -> 28859 bytes .../bitflip_1_09e_states.bin.bz2 | Bin 1236 -> 0 bytes .../bitflip_1_09e_states.bin.lz4 | Bin 0 -> 14735 bytes .../bitflip_1_0a0_states.bin.bz2 | Bin 1303 -> 0 bytes .../bitflip_1_0a0_states.bin.lz4 | Bin 0 -> 17302 bytes .../bitflip_1_0a2_states.bin.bz2 | Bin 7248 -> 0 bytes .../bitflip_1_0a2_states.bin.lz4 | Bin 0 -> 41970 bytes .../bitflip_1_0a6_states.bin.bz2 | Bin 2013 -> 0 bytes .../bitflip_1_0a6_states.bin.lz4 | Bin 0 -> 23007 bytes .../bitflip_1_0a8_states.bin.bz2 | Bin 6270 -> 0 bytes .../bitflip_1_0a8_states.bin.lz4 | Bin 0 -> 30841 bytes .../bitflip_1_0aa_states.bin.bz2 | Bin 8940 -> 0 bytes .../bitflip_1_0aa_states.bin.lz4 | Bin 0 -> 48574 bytes .../bitflip_1_0ae_states.bin.bz2 | Bin 2675 -> 0 bytes .../bitflip_1_0ae_states.bin.lz4 | Bin 0 -> 27316 bytes .../bitflip_1_0b2_states.bin.bz2 | Bin 2723 -> 0 bytes .../bitflip_1_0b2_states.bin.lz4 | Bin 0 -> 28229 bytes .../bitflip_1_0b6_states.bin.bz2 | Bin 1541 -> 0 bytes .../bitflip_1_0b6_states.bin.lz4 | Bin 0 -> 16732 bytes .../bitflip_1_0b8_states.bin.bz2 | Bin 1630 -> 0 bytes .../bitflip_1_0b8_states.bin.lz4 | Bin 0 -> 24606 bytes .../bitflip_1_0ba_states.bin.bz2 | Bin 3614 -> 0 bytes .../bitflip_1_0ba_states.bin.lz4 | Bin 0 -> 35489 bytes .../bitflip_1_0be_states.bin.bz2 | Bin 1951 -> 0 bytes .../bitflip_1_0be_states.bin.lz4 | Bin 0 -> 19786 bytes .../bitflip_1_0c0_states.bin.bz2 | Bin 415 -> 0 bytes .../bitflip_1_0c0_states.bin.lz4 | Bin 0 -> 15231 bytes .../bitflip_1_0c2_states.bin.bz2 | Bin 13885 -> 0 bytes .../bitflip_1_0c2_states.bin.lz4 | Bin 0 -> 49914 bytes .../bitflip_1_0c6_states.bin.bz2 | Bin 3025 -> 0 bytes .../bitflip_1_0c6_states.bin.lz4 | Bin 0 -> 30418 bytes .../bitflip_1_0c8_states.bin.bz2 | Bin 3523 -> 0 bytes .../bitflip_1_0c8_states.bin.lz4 | Bin 0 -> 25815 bytes .../bitflip_1_0ca_states.bin.bz2 | Bin 7147 -> 0 bytes .../bitflip_1_0ca_states.bin.lz4 | Bin 0 -> 47118 bytes .../bitflip_1_0ce_states.bin.bz2 | Bin 1663 -> 0 bytes .../bitflip_1_0ce_states.bin.lz4 | Bin 0 -> 21442 bytes .../bitflip_1_0d2_states.bin.bz2 | Bin 4937 -> 0 bytes .../bitflip_1_0d2_states.bin.lz4 | Bin 0 -> 36987 bytes .../bitflip_1_0d6_states.bin.bz2 | Bin 2083 -> 0 bytes .../bitflip_1_0d6_states.bin.lz4 | Bin 0 -> 21096 bytes .../bitflip_1_0d8_states.bin.bz2 | Bin 1270 -> 0 bytes .../bitflip_1_0d8_states.bin.lz4 | Bin 0 -> 20720 bytes .../bitflip_1_0da_states.bin.bz2 | Bin 2316 -> 0 bytes .../bitflip_1_0da_states.bin.lz4 | Bin 0 -> 23063 bytes .../bitflip_1_0de_states.bin.bz2 | Bin 1273 -> 0 bytes .../bitflip_1_0de_states.bin.lz4 | Bin 0 -> 13839 bytes .../bitflip_1_0e0_states.bin.bz2 | Bin 1292 -> 0 bytes .../bitflip_1_0e0_states.bin.lz4 | Bin 0 -> 17302 bytes .../bitflip_1_0e8_states.bin.bz2 | Bin 4522 -> 0 bytes .../bitflip_1_0e8_states.bin.lz4 | Bin 0 -> 29435 bytes .../bitflip_1_0f8_states.bin.bz2 | Bin 1589 -> 0 bytes .../bitflip_1_0f8_states.bin.lz4 | Bin 0 -> 23792 bytes .../bitflip_1_108_states.bin.bz2 | Bin 3508 -> 0 bytes .../bitflip_1_108_states.bin.lz4 | Bin 0 -> 25815 bytes .../bitflip_1_111_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_111_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_113_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_113_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_115_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_115_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_117_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_117_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_118_states.bin.bz2 | Bin 1261 -> 0 bytes .../bitflip_1_118_states.bin.lz4 | Bin 0 -> 20720 bytes .../bitflip_1_11a_states.bin.bz2 | Bin 1788 -> 0 bytes .../bitflip_1_11a_states.bin.lz4 | Bin 0 -> 18328 bytes .../bitflip_1_11b_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_11b_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_120_states.bin.bz2 | Bin 1301 -> 0 bytes .../bitflip_1_120_states.bin.lz4 | Bin 0 -> 17302 bytes .../bitflip_1_122_states.bin.bz2 | Bin 7248 -> 0 bytes .../bitflip_1_122_states.bin.lz4 | Bin 0 -> 41970 bytes .../bitflip_1_128_states.bin.bz2 | Bin 6269 -> 0 bytes .../bitflip_1_128_states.bin.lz4 | Bin 0 -> 30841 bytes .../bitflip_1_131_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_131_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_135_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_135_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_138_states.bin.bz2 | Bin 1656 -> 0 bytes .../bitflip_1_138_states.bin.lz4 | Bin 0 -> 24606 bytes .../bitflip_1_145_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_145_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_147_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_147_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_148_states.bin.bz2 | Bin 3546 -> 0 bytes .../bitflip_1_148_states.bin.lz4 | Bin 0 -> 25815 bytes .../bitflip_1_158_states.bin.bz2 | Bin 1263 -> 0 bytes .../bitflip_1_158_states.bin.lz4 | Bin 0 -> 20720 bytes .../bitflip_1_160_states.bin.bz2 | Bin 1300 -> 0 bytes .../bitflip_1_160_states.bin.lz4 | Bin 0 -> 17302 bytes .../bitflip_1_161_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_161_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_163_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_163_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_165_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_165_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_168_states.bin.bz2 | Bin 4419 -> 0 bytes .../bitflip_1_168_states.bin.lz4 | Bin 0 -> 29435 bytes .../bitflip_1_178_states.bin.bz2 | Bin 1617 -> 0 bytes .../bitflip_1_178_states.bin.lz4 | Bin 0 -> 23792 bytes .../bitflip_1_180_states.bin.bz2 | Bin 415 -> 0 bytes .../bitflip_1_180_states.bin.lz4 | Bin 0 -> 15231 bytes .../bitflip_1_188_states.bin.bz2 | Bin 5993 -> 0 bytes .../bitflip_1_188_states.bin.lz4 | Bin 0 -> 31274 bytes .../bitflip_1_191_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_191_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_198_states.bin.bz2 | Bin 1605 -> 0 bytes .../bitflip_1_198_states.bin.lz4 | Bin 0 -> 25258 bytes .../bitflip_1_199_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_199_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_19d_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_19d_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_19f_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_19f_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1a0_states.bin.bz2 | Bin 1541 -> 0 bytes .../bitflip_1_1a0_states.bin.lz4 | Bin 0 -> 18953 bytes .../bitflip_1_1a8_states.bin.bz2 | Bin 3543 -> 0 bytes .../bitflip_1_1a8_states.bin.lz4 | Bin 0 -> 25815 bytes .../bitflip_1_1b3_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1b3_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1b5_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1b5_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1b7_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1b7_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1b8_states.bin.bz2 | Bin 1284 -> 0 bytes .../bitflip_1_1b8_states.bin.lz4 | Bin 0 -> 21459 bytes .../bitflip_1_1b9_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1b9_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1bd_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1bd_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1c1_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1c1_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1c3_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1c3_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1c8_states.bin.bz2 | Bin 4359 -> 0 bytes .../bitflip_1_1c8_states.bin.lz4 | Bin 0 -> 30085 bytes .../bitflip_1_1c9_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1c9_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1cd_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1cd_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1cf_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1cf_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1d8_states.bin.bz2 | Bin 1561 -> 0 bytes .../bitflip_1_1d8_states.bin.lz4 | Bin 0 -> 24608 bytes .../bitflip_1_1e0_states.bin.bz2 | Bin 1535 -> 0 bytes .../bitflip_1_1e0_states.bin.lz4 | Bin 0 -> 18954 bytes .../bitflip_1_1e1_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1e1_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1e5_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1e5_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1e7_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1e7_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1e8_states.bin.bz2 | Bin 3479 -> 0 bytes .../bitflip_1_1e8_states.bin.lz4 | Bin 0 -> 25815 bytes .../bitflip_1_1e9_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1e9_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1eb_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1eb_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1ed_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1ed_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1f8_states.bin.bz2 | Bin 1274 -> 0 bytes .../bitflip_1_1f8_states.bin.lz4 | Bin 0 -> 21459 bytes .../bitflip_1_208_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_1_208_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_1_220_states.bin.bz2 | Bin 1680 -> 0 bytes .../bitflip_1_220_states.bin.lz4 | Bin 0 -> 8655 bytes .../bitflip_1_24a_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_1_24a_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_1_24e_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_1_24e_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_1_25a_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_1_25a_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_1_25e_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_1_25e_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_1_262_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_1_262_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_1_266_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_1_266_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_1_272_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_1_272_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_1_276_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_1_276_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_1_280_states.bin.bz2 | Bin 369 -> 0 bytes .../bitflip_1_280_states.bin.lz4 | Bin 0 -> 8357 bytes .../bitflip_1_2a8_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_1_2a8_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_1_2c2_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_1_2c2_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_1_2c6_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_1_2c6_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_1_2d2_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_1_2d2_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_1_2d6_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_1_2d6_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_1_328_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_1_328_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_1_388_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_1_388_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_1_3a0_states.bin.bz2 | Bin 1680 -> 0 bytes .../bitflip_1_3a0_states.bin.lz4 | Bin 0 -> 8655 bytes client/src/cmdhfmfhard.c | 236 +++++++++++++----- .../Linux-Installation-Instructions.md | 4 +- .../Windows-Installation-Instructions.md | 2 +- .../Windows-WSL2-Installation-Instructions.md | 2 +- docker/debian-bullseye/Dockerfile | 2 +- docker/kali/Dockerfile | 2 +- docker/opensuse-leap/Dockerfile | 2 +- docker/opensuse-tumbleweed/Dockerfile | 2 +- docker/parrot-core-latest/Dockerfile | 2 +- docker/ubuntu-18.04/Dockerfile | 2 +- docker/ubuntu-20.04/Dockerfile | 2 +- docker/ubuntu-22.04/Dockerfile | 2 +- 717 files changed, 220 insertions(+), 79 deletions(-) delete mode 100644 client/resources/hardnested_tables/bitflip_0_001_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_001_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_003_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_003_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_005_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_005_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_007_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_007_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_009_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_009_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_00b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_00b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_00d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_00d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_00f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_00f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_010_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_010_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_014_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_014_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_01c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_01c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_021_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_021_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_023_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_023_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_025_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_025_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_027_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_027_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_029_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_029_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_02b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_02b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_02d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_02d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_02f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_02f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_030_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_030_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_034_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_034_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_03c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_03c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_040_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_040_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_044_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_044_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_04c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_04c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_051_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_051_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_053_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_053_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_055_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_055_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_057_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_057_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_059_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_059_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_05b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_05b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_05d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_05d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_05f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_05f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_064_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_064_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_06c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_06c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_071_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_071_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_073_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_073_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_075_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_075_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_077_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_077_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_079_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_079_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_07b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_07b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_07f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_07f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_081_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_081_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_083_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_083_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_085_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_085_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_087_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_087_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_089_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_089_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_08b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_08b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_08d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_08d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_08f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_08f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_090_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_090_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_094_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_094_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_09c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_09c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0a1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0a1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0a3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0a3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0a5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0a5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0a7_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0a7_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0a9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0a9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0ab_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0ab_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0ad_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0ad_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0af_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0af_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0b0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0b0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0b4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0b4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0bc_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0bc_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0c0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0c0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0c4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0c4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0cc_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0cc_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0d1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0d1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0d3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0d3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0d5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0d5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0d7_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0d7_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0d9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0d9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0db_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0db_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0dd_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0dd_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0df_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0df_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0e4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0e4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0ec_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0ec_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0f1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0f1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0f3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0f3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0f5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0f5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0f7_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0f7_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0f9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0f9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0fb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0fb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0fd_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0fd_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0ff_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0ff_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_104_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_104_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_10c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_10c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_111_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_111_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_113_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_113_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_115_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_115_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_117_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_117_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_119_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_119_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_11b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_11b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_11d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_11d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_11f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_11f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_124_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_124_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_12c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_12c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_131_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_131_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_133_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_133_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_135_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_135_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_137_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_137_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_139_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_139_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_13b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_13b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_13d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_13d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_13f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_13f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_141_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_141_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_143_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_143_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_145_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_145_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_147_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_147_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_149_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_149_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_14b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_14b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_14d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_14d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_14f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_14f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_150_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_150_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_154_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_154_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_15c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_15c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_161_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_161_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_163_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_163_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_165_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_165_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_167_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_167_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_169_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_169_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_16b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_16b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_16d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_16d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_16f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_16f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_170_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_170_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_174_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_174_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_17c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_17c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_184_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_184_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_18c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_18c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_191_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_191_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_193_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_193_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_195_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_195_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_197_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_197_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_199_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_199_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_19b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_19b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_19d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_19d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_19f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_19f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1a4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1a4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1ac_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1ac_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1b1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1b1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1b3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1b3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1b5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1b5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1b7_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1b7_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1b9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1b9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1bb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1bb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1bd_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1bd_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1bf_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1bf_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1c1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1c1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1c3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1c3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1c5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1c5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1c9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1c9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1cb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1cb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1d0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1d0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1d4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1d4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1dc_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1dc_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1e1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1e1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1e3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1e3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1e5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1e5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1e7_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1e7_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1e9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1e9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1eb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1eb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1ed_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1ed_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1ef_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1ef_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1f0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1f0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1f4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1f4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1fc_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1fc_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_210_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_210_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_225_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_225_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_227_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_227_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_22d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_22d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_22f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_22f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_240_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_240_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_275_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_275_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_277_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_277_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_27f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_27f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_294_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_294_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2a1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2a1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2a3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2a3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2a9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2a9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2ab_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2ab_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2c4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2c4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2f1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2f1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2f3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2f3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2f9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2f9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2fb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2fb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_335_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_335_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_337_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_337_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_33d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_33d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_33f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_33f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_350_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_350_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_365_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_365_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_367_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_367_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_36d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_36d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_36f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_36f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_384_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_384_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3b1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3b1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3b3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3b3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3b9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3b9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3bb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3bb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3d4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3d4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3e1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3e1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3e3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3e3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3e9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3e9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3eb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3eb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_002_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_002_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_008_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_008_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_00a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_00a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_012_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_012_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_018_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_018_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_01a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_01a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_020_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_020_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_028_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_028_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_02a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_02a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_02e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_02e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_032_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_032_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_036_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_036_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_038_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_038_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_03a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_03a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_03e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_03e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_040_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_040_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_042_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_042_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_046_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_046_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_048_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_048_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_04a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_04a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_04e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_04e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_052_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_052_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_056_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_056_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_058_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_058_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_05a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_05a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_05e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_05e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_060_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_060_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_062_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_062_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_066_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_066_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_068_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_068_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_06a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_06a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_06e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_06e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_072_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_072_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_076_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_076_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_078_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_078_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_07a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_07a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_07e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_07e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_080_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_080_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_082_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_082_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_086_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_086_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_088_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_088_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_08a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_08a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_08e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_08e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_092_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_092_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_096_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_096_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_098_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_098_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_09a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_09a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_09e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_09e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0a0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0a0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0a2_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0a2_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0a6_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0a6_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0a8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0a8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0aa_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0aa_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0ae_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0ae_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0b2_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0b2_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0b6_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0b6_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0b8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0b8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0ba_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0ba_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0be_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0be_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0c0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0c0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0c2_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0c2_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0c6_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0c6_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0c8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0c8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0ca_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0ca_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0ce_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0ce_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0d2_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0d2_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0d6_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0d6_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0d8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0d8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0da_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0da_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0de_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0de_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0e0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0e0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0e8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0e8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0f8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0f8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_108_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_108_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_111_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_111_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_113_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_113_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_115_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_115_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_117_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_117_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_118_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_118_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_11a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_11a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_11b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_11b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_120_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_120_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_122_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_122_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_128_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_128_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_131_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_131_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_135_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_135_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_138_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_138_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_145_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_145_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_147_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_147_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_148_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_148_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_158_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_158_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_160_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_160_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_161_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_161_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_163_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_163_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_165_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_165_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_168_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_168_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_178_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_178_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_180_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_180_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_188_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_188_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_191_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_191_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_198_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_198_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_199_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_199_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_19d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_19d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_19f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_19f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1a0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1a0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1a8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1a8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1b3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1b3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1b5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1b5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1b7_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1b7_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1b8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1b8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1b9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1b9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1bd_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1bd_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1c1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1c1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1c3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1c3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1c8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1c8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1c9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1c9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1cd_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1cd_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1cf_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1cf_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1d8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1d8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1e0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1e1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1e5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e7_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1e7_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1e8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1e9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1eb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1eb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1ed_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1ed_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1f8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1f8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_208_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_208_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_220_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_220_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_24a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_24a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_24e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_24e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_25a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_25a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_25e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_25e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_262_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_262_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_266_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_266_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_272_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_272_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_276_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_276_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_280_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_280_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_2a8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_2a8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_2c2_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_2c2_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_2c6_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_2c6_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_2d2_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_2d2_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_2d6_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_2d6_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_328_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_328_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_388_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_388_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_3a0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_3a0_states.bin.lz4 diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 385e5b29a..ce7e36938 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -183,6 +183,13 @@ else(EMBED_BZIP2) find_package (BZip2 REQUIRED) endif(EMBED_BZIP2) +find_path(LZ4_INCLUDE_DIRS lz4frame.h) +find_library(LZ4_LIBRARIES lz4) + +if (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) + set(LZ4_FOUND ON) +endif (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) + if (NOT SKIPWHEREAMISYSTEM EQUAL 1) find_path(WHEREAMI_INCLUDE_DIRS whereami.h) find_library(WHEREAMI_LIBRARIES whereami) @@ -457,6 +464,11 @@ if (BZIP2_FOUND) set(ADDITIONAL_LNK ${BZIP2_LIBRARIES} ${ADDITIONAL_LNK}) endif (BZIP2_FOUND) +if (LZ4_FOUND) + set(ADDITIONAL_DIRS ${LZ4_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${LZ4_LIBRARIES} ${ADDITIONAL_LNK}) +endif (LZ4_FOUND) + if (WHEREAMI_FOUND) set(ADDITIONAL_DIRS ${WHEREAMI_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) set(ADDITIONAL_LNK ${WHEREAMI_LIBRARIES} ${ADDITIONAL_LNK}) @@ -495,6 +507,12 @@ else (EMBED_BZIP2) message(STATUS "Bzip2 library: system library found") endif (EMBED_BZIP2) +if (LZ4_FOUND) + message(STATUS "LZ4 library: system library found") +else (LZ4_FOUND) + message(SEND_ERROR "LZ4 library: system library not found and no local library implemented") +endif (LZ4_FOUND) + if (SKIPJANSSONSYSTEM EQUAL 1) message(STATUS "Jansson library: local library forced") else (SKIPJANSSONSYSTEM EQUAL 1) diff --git a/client/Makefile b/client/Makefile index 2e241ee1e..bb15a9944 100644 --- a/client/Makefile +++ b/client/Makefile @@ -242,6 +242,9 @@ endif ## BZIP2 LDLIBS += -lbz2 +## LZ4 +LDLIBS += -llz4 + ## Bluez (optional) ifneq ($(SKIPBT),1) BTINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags bluez 2>/dev/null) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 377a5ea58..0cd148fa3 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -183,6 +183,13 @@ else(EMBED_BZIP2) find_package (BZip2 REQUIRED) endif(EMBED_BZIP2) +find_path(LZ4_INCLUDE_DIRS lz4frame.h) +find_library(LZ4_LIBRARIES lz4) + +if (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) + set(LZ4_FOUND ON) +endif (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) + if (NOT SKIPWHEREAMISYSTEM EQUAL 1) find_path(WHEREAMI_INCLUDE_DIRS whereami.h) find_library(WHEREAMI_LIBRARIES whereami) @@ -457,6 +464,11 @@ if (BZIP2_FOUND) set(ADDITIONAL_LNK ${BZIP2_LIBRARIES} ${ADDITIONAL_LNK}) endif (BZIP2_FOUND) +if (LZ4_FOUND) + set(ADDITIONAL_DIRS ${LZ4_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${LZ4_LIBRARIES} ${ADDITIONAL_LNK}) +endif (LZ4_FOUND) + if (WHEREAMI_FOUND) set(ADDITIONAL_DIRS ${WHEREAMI_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) set(ADDITIONAL_LNK ${WHEREAMI_LIBRARIES} ${ADDITIONAL_LNK}) @@ -495,6 +507,12 @@ else (EMBED_BZIP2) message(STATUS "Bzip2 library: system library found") endif (EMBED_BZIP2) +if (LZ4_FOUND) + message(STATUS "LZ4 library: system library found") +else (LZ4_FOUND) + message(SEND_ERROR "LZ4 library: system library not found and no local library implemented") +endif (LZ4_FOUND) + if (SKIPJANSSONSYSTEM EQUAL 1) message(STATUS "Jansson library: local library forced") else (SKIPJANSSONSYSTEM EQUAL 1) diff --git a/client/resources/hardnested_tables/bitflip_0_001_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_001_states.bin.bz2 deleted file mode 100644 index e65f2247125203d5685229230b8a857e03ce5c57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2801 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 diff --git a/client/resources/hardnested_tables/bitflip_0_001_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_001_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b343718e708a4cce45237838852a4cd4d8181cbe GIT binary patch literal 27811 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 A)&Kwi diff --git a/client/resources/hardnested_tables/bitflip_0_003_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_003_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..61f52563f94e70b098196200eee1c89ef122f432 GIT binary patch literal 17673 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 S{g3=&Qg>PbZ$o@X*#86RrkWZ6 diff --git a/client/resources/hardnested_tables/bitflip_0_005_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_005_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..5e6ab2676e074d45df5ca41d18977aba49f9996a GIT binary patch literal 34843 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_007_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_007_states.bin.bz2 deleted file mode 100644 index 0cfda87cb7ecf925a5280777a88cf09bc69db73c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1591 zcmV-72FUqBT4*^jL0KkKSrk613jk6KfB(S|0TGkknIHVUfEb7xoSev=fE|Dl03HAy z03Zk&2r1wUzW@LL000000000000`qIO&SA6n2e1KLjq{i5MneKKmmstGHB2mG{j_R zVi*%fn1d0Z!T=07$&*Ha(WWCKLlD54G{hK<1`q&Y#!Q+t28}Tp8W@HI(WW58XfS{S z4l-oXpfqWS$k4s)Uo{6AlQ$Tv25*Z$uPq*%< zf*!K&r*g8yIHwmCM+){GE(_RXV=Id%VO$K4c_v6Rfc8& zPAph5qt1>80r;NVE-sg0a3{*}Tp3R)%HqX)j~5cUSRIdb@xAwuzGiqXGdx$FM8S&5 ziz+iFT`6TtC6tn}Ss`b%r5z&*u@zw%WPSBL)btip-Z~C1z;-$-@IOnr-S}Tg(dAVh zmB7lzPb#>qEWbL#p@g_POMzTn7ZsJk#LJ5#jxGy}iziEqESwz%F~>^j94vGkXGcRB zQw&`(aLXeoV#(6P=`i7jFvd(`#xTs7Wth5IIO8rmkEn5U%Q_vLW_0<_s5)H?ju!`u zBPKq>A;;}Jqow9WdJ?C!Jx?;=zZskiOVI4#>0#(FxUjfc44FT~VfkMR((b-jm7Zto zc%P~3sUGVwjQ1C;4mvZ6Sz@?xe;Ma~b>?0R!2HYGIy;@03m+o-j-5VZ-b3<+RaQ!v zsvm@|%Pg{n3?j=Z@g`XlvO6lH;4bTnp*Xl-sbxnNN}kvq%Or5Vb`K&Q*A_0z7Z-8R z=qxau7Ao;aMV4GH3l0v#;KK|ji1~-iKOxaxDtMMzQ!HP|%Em9!%J|L~lyrxXV0SRX z()d}QG1!Omk2vujyZeuE!`3`sK>E%Hurc(rv0aWnqoaY`k1+m$!uJeWk9@CrC*EGA zipl)Xeb|NAuIPFMWXc9Br8+N4yQ{)prHjIGcyq~7E;WnV9aKC6&5TU zD->{HVTl2=LhY^z((Er5ZzN4{ppS3&}a+#HkO9o@a;9=~M@;o1Np~A}yU7p)G zvcZdvoN>jO+567t3^C&N6CNszr($s7SbL16=p7IEVgGKNE-%1;Vf&Ygq1;|)1B{Hp zJ+bTuLx&TGOFJ`*J!1|P!Pz)v(0cBUh9|noe)sTuCr5O|Wn^O_|K>-Llf~IS131b1 zkFEC)1p7|w4n3BArXFLb5c3_E6TsocUuT^XPvMGD>I$l-ESj)o ziJ6pTMv!Jq3`~qgmQxlo%rh!tV=BsG%GAuVF)uTcBn1zug1~lA$FBeY diff --git a/client/resources/hardnested_tables/bitflip_0_007_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_007_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8864efd2dfe3f555eaebf1b3d1ffd7619236192f GIT binary patch literal 19198 zcmeHP4Qy5Q6+icV_4R{$9<&TbTOMCAAe2_<5(G*gQzJr4+s!x`)YeIY3YD_#gH3_E z#EorID4WJODb$a+B^%Ny$+Ec0Tgc)z3VSXlZo;Axx5d>$m4#$TJ^P*ieed~HvP2{g zO?8~0HYT4)A5*Zly!rx#@E$<7oM$Q!*~R_AC{tLZ3ggihl!N9~7BUsd2OJ3>G5}-+ zQ|=)wA@^wq0KPGWnL@IME39&+S%;aXDqOuTV4PVkB3pD(jBjC@EA{MzlJhYtqL{QA zGyq9)KF1UjxsGXuLUFIjx+X>?o3@pUP^HMe)N+?Wf4#*$)_e>s1+LwI)qq}*48qH7 znh2^++Z1B*-{aB-$lK8P6!8B+x&@7I*%VB{l}DKJ*0^|qB_W9!cpaFx(lGMvBqPBe zB|L)07+DyU3q)Gju|Tr_Wp@1XLuG5fnFIv<@|!d@hQtM?N7fol%9tWYn5F@*i1q^d z1YLTL2$r5Ja+6`dnfN1j<>w(e^RBnWHsxb|tdn}HGUYt;qy1o73mGM@&^U_AEPRKW42kPEbFhuw*h!8&E5)eFt9vJ=oNV^GBy zJb*>s1pDV?y#$g9xuyuP{CJ)m#Y`h4|Dy`fe*$9U@}&gwl|OULpATJumUBCmyLf+r6QL;V{xm>VSQyw|05W{C z$KYJ0VBb+23aFt6)vPCo3}~nQH)D%!z^W<5d=V&_l6QvVbEBX^-hnP2!BX#IB8Upy z3}7)@W4A__u4&PgegTqavy-!%9bcIpvEY*?qG>aC27zs8GoH(^Uf1OHFp@%mUuL)Z zIT9#kCkR%lky?^8{9NOk0Qv7m7lh`k;+g;u^n(cS4G1{?YP&VW@i4Fo zRVhZ{7dXZcTgeWv3ZTQX0H{H6LtsY)YvvE=I+6=yzo=lo&raY@Wo~#kFf8ME?ri*S z;-djzACd(&*dj-g{ea1b7(O>C{G^X z3RMAyhKD2!kh-k<}%?D9~e7%~6`%XC1@;$G|sG+>4Z49P!J7yWpCrAX~%B4nTv z170Dc$WSx8!s3L_Ol=>cD?6wWS~uFH>iswX zI!L3&enl0P73q17UDKIKa;l@#rhRaU9f-WCrsOXY1(TG(BX1nmmHpLZPD_ow{;m)>L2(1em_B1NUe&jL<3qDAwb@|M{!kjBL#H z$d`<#444Svm+f|E0EDGoY)C3>`aC=ely@2xylxZ;O zeJStK%G6lxjtk3++&OgrxZVCYV+W~TH8USY@Mn$}9Ci~@{A%1i2?haDmV`8(WBkdO zQqrSWB_*|;Tab{}*^WB6n~k4)PvF2l(JZuGw&R{>AH~+HUVd-KiV;7gfKUxM(lD6GSfmYOzM5=$nCX%0nSPA9$Zwx4hfFlpAAdIUU>XZ#Gv6~uen`tl zxQ3)M@4C8>F%*b>6R&U?)-I;4_b@%bjp-YZvg*%LG(V+V6ZZnF2RgEyN1Zx^Q={Y{ z{Cu6eak!aqF&BQ}TE9U%!r+Zs^g_Sd@m(w!WegX5v7ejxBQF3NEx{YHA!Tlz_(!rdK@h1-|33`@iGCt5K z=4?v8&0oeYzA}yZ=pV4jeuXoqzJfFQ+JYDk++xF^;6oM8v`VB$xm40UTj~w zSV7l&zzrmQ?&Z~3c{Nt9Cam*nth^d4ug1!&v2s6$jOl}xS7YVXSa~&8UX7JkW98LY zX*H@>W98LYePRXEIO6eYtXlQl;i~;fj#p#VX3j|Ry&5a8#>%U)au0~S8Y{2HN~4Tb z<<(eufBk2^f3L+S2=A}|yc#Rth<{b=)mV8oR>@C|89!c)RR%Lge)MXrz#DAuy&5a; ye{(>Mg!jKWT!sJ5VPtQke-Y@_SS9&$k-ZwLk5H9QRgKkg_m8Cs*KO}zJo;a<=7O;R literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_009_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_009_states.bin.bz2 deleted file mode 100644 index 1103e29bc6263b22d3155916d735792bee147b5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcmV7hs0g5kLS07GMAZ z6j5Dz;0)gY000000000000000<`YInhK553(8y_{Kn5cwKrnz{IfT)Xp`nn%G%^}! z&;f|akPILg4q-H8XlP_GjSPmGGyq~UWCI8W1DH)28X6f4BSRskjQ|*onE=88faViM zMuvt%2++uBqd*2DCO|NNU221_v*WK$MY0bzR=MID@9+C6Li%ig~8iSoX6 z@t2ZLi=ttNd&tbi@(w2+E7ZThf9Q2DH>kZu+`6v>nc%Pf7e#yG!OkGdy#?6CQjaAkj@{cH8F&b{lfpQy60&OOZWGJR+GzPDqj z>{z{PhkN5?!TSr)d8|DLA3*3heen6lA28zMKk`1&^t}M|Uh#jKJ%^FmeM<`YMD-7G zV)vF_MDQ723m)-@MZ<-X`IG(*i0m?1lJ=+G4}^S5@_xnKJJE{|)cBX|bSvD12J?FLF z=y$u0Cm!L)dg>lWbM~JjxbRNl_8&7n2f#mo@IT1^qscvNC#_?PBQa;R=sG$VqQ@DY z=2NQ2ayqA-N@N_tn+8;3-Qo)emcMqU^Z=8IChj{N< zFy~R+u3^F4IL?lxhd|75xWMl^IDYpN`-dGJ4=0)VkIFkQTRxHEKS|L~BR;p^KLOBr zk6Y;<1CEQ>dfZ)D>iokv$7RF3JxphNgNuWOj{~y)VUK}+Ws}i=L+w1zzWxUu#(v|X z#!p9}^fLCZTK(sl{%5TI#a-_MA5-|hi}b&#^c~9m3-maiEPN-u=EFZg^`1<6&Ob5G z{Db>eABpphiu~!-U%~Y~7Cjz^W#Ybd-o6*SzM{URRsQm=zdeo?7so%cn*Q}7s3xUFYs7W z;+$Mk;3e@7m3CRxnfD!6dmR^5n0nak%k=+`XP9;!m)L)j>UB=3>JOdvyB=nJVeVfN z{we(*Li~rC`X4d=$K!o#*nMxbdlUAb_kFHD$I|=DGJVy@^_?9bDaVTF;`X0#%iv6( ziT7Q{6~*+QI{DM#KiYYx-Cu=1CGCDC4~0J($^B>UKI7(mFInzPdzHsRdM*!AT^1~K zc_(4~oleKbN8w^dKjf2uxJE3P65>biSw=Fkl4C5zkJO)tXYwpl62&@-PUTUK#f**x zIxDf4^DwZm>Z`Drr0iTPBu*sDv66l@QTxltvdahX88X8REHPm^7X-zLaSj+*oEA7- z88FON3;(X-j^o7QbaxauGJ%*5rak%hbYQg^Rhs z%$UO?46Y6rigXw-V+)0JVqOBg6BFrG??Ra`B07$zsKC5e8H*|`GGUNBlgZg}WsF#* z#$z(!W3kY2KE*-&RJa#p5#W;WWU^t=c&1YIrwcC-F61(b^$G9=-cgd7D!-teT~u@| zld5=_ILbPTox&-A>{b(jjuNiL{L$v8n##(21BVtpj)Q}PiN(=niH2i3l)Zx)FJSg5 z(SJdPUBibL6NI?P%*JO22M2ML(Q##qqoFdx21X24Oq>~9S!P|zxGu_cEOceZ7Z*oF z%Pg62;;DQi;2yGk1rGI3B6<|;FkzL9W2ky6dMu_{8G6C%F9GIxk62;R(Bir}lc8`~ zVmyn;yw!Ot2dPKGuM}JddE$02S=j6>JxcOjlf_+?b|x(FcPqJfF6VH(Q@n8)%$T|! z1JpX5&a1IJT}jo|)Do%o}wLn|v8jF~7&KdB-XMIjtjfhwIvDbQ9#z_CeTQvrm= zCRK{W=vgXOSgBcXNpO@7913tzlBi$gyOMU<|BGvkNB~WMmb= zmBT8@Wy377MTR2F7ZxTgs^MfTWTs<_A;iGqVv^y4SYcK$RtzzcVSsRCIHw#g7*-f? W!jpp%oH20!_`8xR!i0o~VJztO+gs)U diff --git a/client/resources/hardnested_tables/bitflip_0_009_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_009_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..187763ee6c5b4ee85b5d6b9d1eb9dfe270163b3c GIT binary patch literal 18034 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 diff --git a/client/resources/hardnested_tables/bitflip_0_00b_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_00b_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..085a4301c910cf1e46bbf159689d539319a59de1 GIT binary patch literal 12365 zcmeHNX>3$g6h1R;0c-nCfkL`LhYE<&WhAJ$Qj0&5?oO+!osyWwD zOVjcw3%&Q5vPGl<&Ci(f@F%^l-;HEIMO){S;A~G2qM05JGUHmj!v7BH99pITNAlxMIhr5*lc4RB|t@NCmlFO39hBZ2pd~g zvUspsiL^mEXrEGn#dI_JEHe@?O*z9&kCby;{vvKEt5V)JLg;TYV!|STvn!ni})y2bf|8=Y%7SHj7|4 zAvp}xB(1(oFJb3}*fc$<&Sod)E@=(r#{6ka-^pV2z?A2&q_hiF9IEd9O!HGfye4d? z!*u>(s>2S(i>zTPm%U7HctB`?<~*6Iepe$aGl~Mhy?K9gIn!V`NJ%OYe|v!P_Np0! z4BQ=H%Z`|S(COF=qZAcjZYvjz@>6hoPczNAJXbEX|2v3jqMXX3H+8wV)G;-P6r;0$ z46MD(5A5|uxr(V!`||7PoVpp@3Zwg&7JE3I8fTd{&(meMh`>SL4BJtp$-ZL5dS5@bmKQnzojF0$#_4eQF2Oc zW4UjpL&=7fsN?)$rZ0T}DV;NBxg{$1r=ar)rhpf!w_-CdXKg7|dZu{{TtqJBXEa_p z>dLIsn&mn(v(s><0XX0OO!L=b?g@suODmX-(KKZl!S4#5J{G}0;?krif1GKfhYQnh z^EyuB0A$%;y=kw{08i_(l?np&!$uJNqN?`km!PNbc5urrh=H{!5bq%1!tY`_blNe! z4m}CdK10-nntQ~`Dw!Ts*MBJOVreEyIo_;^My7a){OMDJj_o)OhJjYOLF{2O$}GowrlIuHjEdM(bIaFb3$ptkt9%ifT*@ zc>p3{Qg%)z0>FW_o+eX8U&B5VL%R)WB;J1j<8$r2kL$;*gb_aG$;*KGUT-;0@Hf*P<|LFl)yrNV z%oTQyC`UNo_uw0wkjSjMPooc06?PGq=a~*C(SC$Dl09vmN1(zMSNX0HaCu$6i)ilz zwIqpOG9CaoKn&3mWIMa$1PI!+1OxUioYuoV61BQg2sc!lo>Qsmy|qLWwH!?(9sjSz zCUELJ=^>$kenbC+{}ueT0Kt5+qk9FaP=z#dLZu$s!_a3d(*bWl8;H1xCBcjJY+!I7&Xaq-CZmU($(4$#kj~o0#Zd=dh=LC~(_|#Yo*MM9lyQwL3>&_j8q}de?%RCPi*Tk^?s^!m7kuH@0v0E3-*6Uk<-cGNi@v3G% z8B*h}Xz7n#WbRj(ZFf>9Z6I+9Y63w`z;(K1DHqnDCSV*Xs0jo$fn-DtY63}FNKg|< z5r#-m69{SoK7;5+C#VSoHG!Ze&<#fs32Fk}5>ppIK}{g233z4^)C7W>fM*OrO~4by z|I`R-0-bBLK}|r7FXc}bC_|gSHc99IM+P;4peE2osJiN!z%l1vPK4)%qjygD7XVq} AQ2+n{ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_00d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_00d_states.bin.bz2 deleted file mode 100644 index c763016381ad805e6c5bccac58280e495fd192c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2204 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_00f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_00f_states.bin.bz2 deleted file mode 100644 index 39e7afc470e0d56ea57eb3b710dfb73e6a1a0452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1214 zcmV;v1VQ^kT4*^jL0KkKSI5G_y0Li8yrh_2FFoB>n zVq!D^0B~d)Gy#)LLrn%jh+zXjXvD;5007{~G-v}Rn1-4RgAl?7fYFJF&;S9!kZ8~b zO)(8L83rMQ4FRJQ5ugA7q^N=*nh0e*G7+?y9--b${aOzT$mn{-22OFI*=_EuaE z1^&lFqw8O6>bZ3>{ED8?nI5wC*?a1IC7d~9lH_nYBdDt)%3~>o4>2&i9`V9Qod1Nl zELc0N8FV_H>5ued@}B|n9gdF9<{TfT!p?`lJ_Yozc|FtiyoZa_GnbX=r{h*12!V&G+r#x53M%e2XG3*)o%d&Wq^-Qp_cV;sygMp3%EVF^g zvxZ|R!z#rwWqnT+?(lfH7mKS0vcC%bDe|8S_a~i`vGbfKC*4aW=uQQY`_2U5WO>iH z74*11)6^5eipChr46tItxiE0cgMek}hvOWcu0zU|QftA1x?98XQ&gTiqT&2}vOQFi07X}=zRxVyA z)c$wod7Vu8j^_pai-({xDL?0M0daL19t>^L|)PE*e1-@4^EqLpqO!DxWUR?av6f9t6fu;e7|DXnV+D-M3T8sg zWf-Ytl(B%uC6+8Os~JdTkjaUL6*DC>5W^zORx+`aGb)*o$%STAEW`|8EXcz%1&jk2 cteIv8VOYjuq{c-vBR~9I$rRy2Lppc^C|HV2bN~PV diff --git a/client/resources/hardnested_tables/bitflip_0_00f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_00f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..65e43f1589b2a903d037bc7ff4eef2e06b04ddcb GIT binary patch literal 13684 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 T0)uZ-uI5}ISJltHcL?!+RbPMp diff --git a/client/resources/hardnested_tables/bitflip_0_014_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_014_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..44acd9e897302c5253bc7a73a58dbd52f9f7d0a5 GIT binary patch literal 27232 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 OcCgvHW&Q6;v-}_0I>G}0 diff --git a/client/resources/hardnested_tables/bitflip_0_01c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_01c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..81d4d9de3b52c2819e271a3dc23f22b3c643fc31 GIT binary patch literal 22128 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_021_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_021_states.bin.bz2 deleted file mode 100644 index b2fef5781e88b30b5e63963a650864fae5102c55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7328 zcmYkAdtB0o|NUDRD=%HV5RhHGKq63r(9G2;FQi;7xx9t9Y07QzR$G?#>0YxmFIXvp zg4I$4D{G&1FKumWpRQYN-~Imk{d3MgufNWDJpVYaBv7(}u$6~q z@q`x#1aq-A_HW)@pO`zrH-wKh(5?H0~Iw z{QotAdLjrxT&Ry}C9#TjTxU{~{Dqe${*Gxl{g1PL-tlOC(x-RRSpR(FZ|sYCcl?XI zNnu{r|NJ+bjS)|IQR9$W$0;#cMPmPFG)l~3swMTVbxjplGt#ja(5H^e0+lX_3&9_C zQJd5pwW1@$Ck9p8>a2O6vnY5iaG*G zuO;SkGAbc`d2!T~0$fvrn-U3KDN*4tKlx)37S zgQ$Zef6$e!liO3Sq_QI5RZ?R_{mbORb*O{rC=M4LaZX*8O|p`RDKlC1Sx&l_7|(>; zoObEr($J^X*TIblKnZf0GU;Li4U`VHC<9GCve7DJayz>d^EF)dnJ_xPS^}zEbk$Kl!cp z&b4gs5mpEZoxXYNsoG>V&+in;)UqrX>X8zKl3QgG z(sd^ffluaOs^AfI>tZ>E^PKuldcbODm?p9_)*DvMSXwflU5fUbJ%pqIxoNCl4XwHC zIk=W_YEKA?m@ZKUP>B((LF`It6qUf{cL3#i0NXrw++aE?(UCd2r6xH7W)Bmi=*U!C zHd0RQx7uW#wc>GKhueZ1Y8t&MZtyay^NRd^N@H@I*)S0a#{{2lQjqFO{+A6pvM?u;Y+cr2rm7d~N2N88fi~v4i(khc|E;qfJ+?dI6Z3n03b(6-7Da!5CC^ z`-^M<*{Zb2M$bF(!1agf^U@|284%;?Vj~tA=$^Pa#;RQ^nqOU|Q`KTcW&xZ`CMan% zggA=MAh2*|0s}^p*#K3w)l4SRtyU3;$Zsejt1aAyJ+>w+S0s1g6UqDgCSf*dn-a?$ zA?kQvC4QE*UgsNTY6eBZkv0)7)~Z*L)Oe1R-W^mwwR>3|c^h0P;!vOv950CJ#zA1<0I6KfX(FTY=Ngib%rXQD?ax9Iy948- zH3+qZphK9f&asYRUW*YHcHe$iCg%>@MPzB-NVpgRR5YAQZO&|xo{za{%i&(`bm@n= z)3_n-1hVk6ukD#wvpoVA>4hbz2i_adDRF3lk)=7VR{K|Hm|Ns%BLl+O7} z__ZPPu{HB!Mf$->$5qJ%qKFG|AyKO<1d#zmF$eeJAQANN`%IN;MX52PbK-o@1|wkq z43%$=CyhZ20ZhfKVV1_aaaj@bVJoDHhKC!f&e(|LjKp5&^pCvm70LROV3RYyez6$|%J=w76xlw&Vpu>4LXf{l= z2VSo0bCCp;$Ite6?`x?Vz5nctTs|Mh8gH+xzUatonX^QMVmdjzXvW;Q%0Z;T4(q6E z9oNL-{bj*)74!2-kphc?*FB1r96?o+F0&uyE+Al|zja#z<@#Luh51#37tuzi{*q_j zeO6y`y{Xz2JlO9^aYgpObUS-6*Vo3DT<-Xl|Hx$7kdeu`ANMMK98^YOpI5y?AjE0^D7k#LUE*X(udGPMX zhtE#Bc3uCJ{i%GRn)44VxTmTXK2q9feZBelt4&qEe2Q*qkyi_|?z-FEZi~#qAH#`_ zd4ec3olMcNDE8v4HA)r&*(bXwXW;=J_m55KIqB5_u`=frP$eU9B}0adyLu!=GHqg= z!>yyG^@JHt(-;W-IndCz=#s51Lq&vmdlQ9(4AW&g#ezjsAM0x}f|BJ~46-VY?_n)* z3Xz(=*hdjs_%aNjQxiJ!kVvA$*`BIh8GU8-#GE9Nx0aZ|YZ}8P7F^h8H12SE7;H~Q z9%LnWgA;6}qn;dcEnunLGxLQb+zN?O->P7nSA8je{R$d-v3*2?jTp`#4J(>%ynXv} zoe_1E!*B09R`BrMrtK#~hs)JsT~oWad@a?j+E2cbIShIkbb$$rP8;!xLDSwRU~y^x z0Al#+^l9>h=I`Uqly$$Hqen_Jk+pM&b|5*ZssId+EoDmC^Zzt#d01D)_D1A!>R?NG z`1Jhh0Y7a6+-eJq6-n{-WdAXh$hcLZQz4~lx}s)lMU2%Y>VS}5IYVT;#GVSHt{Pbt z8<2LLi>`)8de^jCyU-v4eQDT0z|)10sb&jAsUpL`4kA_E629Q*M-ZiTGH}PAt4sJ` zE>A2njQT)VRmMjKb<%5`oNnxUn6vP{jXEI#>9#)aiX4(dq1A$5LveBxf=66Cui9y+ zVaf|-QP*)D(;*yIEP>O~#-A{v5!taLC!HOCWGN{K$b~3DND{QC?mr9{ZH!;=_S0#D zTINCWQX4u=Ksf^jCt(cqmgBl~QI#z6sTHKnnZLGbviSbpZ(2yF%OTY1;runrJ4&Rh93~49V$vF2S|<&1-;F zUGkYDTJv{jmcc0Mv!3l)Z-0>erIx-~6?2p}jbF99y=?rSg+vN@+03|r(v&wW;1=MZ zc#avt6D*U5Y-%rrze;&}(Kfd2_G{t$E4Msoz327et-riHO!(zh`m2x~e~JkSyRO6@ zq>0r|7je8Rpdd^crdFZE(a>bRf;2`^k+n#*j)6~A0I5bi;ppt0HJM7CZL|piLIQf8 z)NB$C6Nn;Pw`2@GE-LHv8X-ToBF*lH*yi1Kf>KbsZ+5G4)gdfE);Bpf2^5Ta;rJ zmj-RFC026KY={m}a2B}BFVj*3??MsPH268I6fOt|Zfg1P=fl6AfA`O!gy~}FMaj!m z&B#f6d*j6iD{`3yFJG2IZx3HB^^Cmzj?(G7a{JMqFAF25JiXU29Zv0QFdYv| zM;$-@*RPk7Xungprv!HB{QH+prd&Pep6k$-vzrS|3)Z~uo+YI&au4hYHOyZyPpE87w7^tGeY;AX!_1hX9~Te?rQIj|fP^2%^-8 zAaZND!w}?yg9CvC9emi1r&jL`)aeJ1j1n&Hn2-Xoao}u1Y8QtBt_e__>UM= zskDwo5~@tw;)AaJxcgOt~KJCY&`I)>9UBX^^^_ix(G(HSk!Qz_()n|(F74i2J9C*NeX?H zC{G7g;CVqv5rKQzkRzpAHOVJ>7qRMU{l{WS1E3Ga;8f6MDrBpqnP?pq+v@FHc&FzS z*DTcn*i3v(uT+>vAgO^+uDgb4z9QX4my#Ok zLE$rE=){6q{^azWi+EeqOzUl98bDkP4Vr!oCdzi7AJG)B~NlnELtdX zmD(Xww2-4BkvxB^G!BB*L`6GrY2M__lT-<=N{{5=bY*oosQwlIiw~T zFC%cO5IG51E%_F(>-v|_Q!MOSAkE2n z#SQZ3#>ZKla`FBPgoO81$Lr?okiWjvYiOC=`WDVHxI0N&ts?Xha)SnuO@-_g6u2E+ zc*0>~|Is>m)dXZ#=Sgab1ehUD%JHsUK|v&kwfPPPe|ndBFd}DR1~$f7(KeFj)}=VL zoO69`NRA(E%cKfZ9nt7xd&}*CZqTO7huOk(sn%wIMhBqv*?e}i5MS-|84IZV=Jd8( zfH>d29I2C2osd#5g3@pM?T)NG@pcnFC_X!m|J?)jh>_m@6CMBC{>0wJS-Tf;#6s*BpdqC(r41Xb8wCl-&| z#Dr|J?4*vQtXfI4_cnK8fl-EO>s)uwtxt9X&Phh+fm=$DZd_VkXtRjoQi;t#PmhU3 zZtX5=HATnS@{=s>~C8JH0v0d5a!nLt`;rENDdEX_&%d@FFa#g|Wnz zs-uCCQ-f7S(w1-5Etg=hbi1-3Xi7sX;xYU0CgLw>N-{nH?}T;RUlE*iGyojJv?cE@5daN?HS?N>U^mJ=YIp0QnG#pNMX^@vy;U2(5&_TlJJ6rkj z&8e+-E;N75o%w3Rt%3DCbGaQFi$}JzC8nOxt2b_m98a>7d@VmYKlxbbwcxK;KD`*@ zUBp_6(R2e;r?X*y54%;~{1tdv|8>v>{=ST!)0_b#e($r6;-0bW$Z*f5z~9@>@;Qcp zm=S+fFk}ESNl`n7;;aTW7&}Pba$Q4|AE`Yx$X%wOZ5x7&tUBlKv{=#hV!k!;EOO5u zy;!I71ubymVAy?Z17wy+C8J6k>5xUEO_wIk7XXKj3h>f^IGy~Tr_5M5X|C6$l z4hF5cH1imIw5fGX?EFgFM?@8WQu}d>Or#MVyYcOSy{Rb`0A#76ONUv8qkojeX}c=PGc>l*dHx(lMj zUNcIN+V}+dWKq8-{@-3Jx)jTHqkj$F*E2O$@V7hqLtF9!DXJg>(x#rG7y!){hcZU~ zW_3oZsTy3$$8|Vmagf_<7!uO0ZXy~9OldGJWHZqt?N;BcyjicR7!&)RmaS?z5|J-O z`<)ZA*oS~xBUfmnySZkvUa48AkmAnuR~Qy?vicYt&6ev&sJ#T<#@oxY*cUMJ=$C55 zm37PJI2~4@(??3!`4m8sJ9d^=aD6pxcGCDrU8nOvx}wxiLFCZ@c@UVdTn`8wD`}$^ z_2>;9bl19}ICqWf1CNleuBedX=kdKdst`)1u>z9utPCg-oB9Eao6aeP>~NKeFD>4= z^2zmo=x4Th#~&9UK+cEnMe&UF6UvquZ{wGjbHP{P#4GjpHl|*y(hqC7{84mD)FGeE zF2^bP=-Z(0V(@QX>GR!3iXUvNyGUMkYDfy@$0y$qFb+HkzkdMDz=2LuLC$_LKGT{A z?ONY?QJNdIU28Z%Qk5OSo%C{TUv&$x&Zfq0#LFL^xBvO$z|EuFV!gUOhPeI?PN8V;+Zu&qx{_&&fBl%~;x7+1^p>_$I;^Yx+eJURDSc56_yMfFun9=DN zbl5DL=6C&=eC9{HS@~nN?beU!m%P4<$^)u1AocgU!BVJ#qeAl#%G{-Q-{d|%xGgb< zID2G2xr?l|EtY!FHZ|tw&7ZXU9>4k7E&e%+Wtbe@wg2!d)yr?O_g>id@m>-UxX%?< zo;0{2jeVAMh<)gGLE$T@;N|=61JB2Z`~G+r_Q&gY1&?N~v%n9|_QTG|W0qm{~t9J*0w)zyejTK7tjaofR3&eJ6i6DqVgXty6 zw5cd=;Y_ATIW;w6Mlj4M3r1VqHI3rjIya4vxcWo2hoUke=qA!D4Jr~(x^Gk5 z(bfoQp&X{}v{x;>bg4$F7V&ub5wKRPy55&>%7=56gGQm(7!8cUV95oz0%B&1t@zhgBUkq zW|-w+1WqRn%_i_k_0>Fs5#d+jYYlJ?&9Js27Vg=$ zp$ky0747easkl`uR@@q7>MDKB3HhV0tzNf>h~LJ(=Ycf_D-K+8Xu;rX54=kbC0%u! zw`cCJm^AanW7OXt%ksRLC41cyGA#Ge_u%Co@|wM{JvEf<0W qJ>{FS>joTQ25wcub6z10=1U+ZipX{7YxjRmYxfVHv-8^X>;DH`dRpxO diff --git a/client/resources/hardnested_tables/bitflip_0_021_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_021_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..fd5d540d75780fba33fc7f21383557ef44ac1a24 GIT binary patch literal 42330 zcmeI54U|;Xo#6kk>ecJ&>R0bJG#~xJM`44~G!5MY9c3LSFA-Ek(nJn1O0pI!2&f%k zkqPKzc{z!*7{W3eNS1g!o64%|u8O*&OoGP~Dkn3uIZ*?%jARlRrLz5o0FzW@8b|8mb++`4l8{!8x>+4Rdho{@tGV@LkQ zw)r~;b`JRBw#p^j=5L!{l5_Omxd*mRm(qc)%~A+u_RfJ&vQu{s1TuZw{53NBz}84E z^h24UAM8IPP8=U|U2#L1x^4a#k?C@-c9eA~7X8DN7?A?Kk3enaH_t zb{ton@p)HfDct;{ah^Wh^Xb~D59vQFL91Q`UatMbNHHG63`^qVBcTs*96)RGS^?SN z$v!4ZXCco7@t9fKvLHU7O*7)}GErufkvxw$O|#-SWSs0eQ)$SVDAz=9Wv|HX`x%Kz z=RORa=LcmP<>R;sz;CBnr(ac+RuwJ5puM%x&YT9V@w0$1K3~n!A_N|3EOH_KjFD0t zXN|OvFODF+oUHe$A#Bhmp> zTTN8#F#^5X!0$u)X(p4N%|LO6`>TwM?lLkaj^js-6#9cohIY_!(mLLs2c33GqgT*B zZEiMlZhV8q#70wTV&08lWNx>S{?+vIS^yQArC3lJ&+6o9uyz5@#jo=GWFx)t!(8MG zn2O^!nG$$pb^_sMG2$3T%qWB^Mse|X1GP?#Q#vLz?KX0N*T=fnF@Tho~Cq2^XX0QpP_}_!RgSIIbT_|?GksgpT zdYKab#RL#;f#dc#HYS=%=j}|w2kMMA@bn*;(ig43wtfAIJ2@Z*u3Q7qE@pxZl!-rN zqKg+mLoO7O0eF6B+D?pzJ$LG5mE;`IkmD3Y;8DjT5*9j;po zxLM1TA)S|%g4s*CzspDiQ*~4VvI?X_&$rzOj~-Js04p@dkAvLFg`)^~wkN-Y(Tj6b zKDW)^Q$+fLml?6sM4O>yb_Y#g12pFBEP@RNxEJ%FGWf3*+do&hUpJNUS>S!jM9thS zIZcc#WBcjgE?^k|_HI>O%(D7zX3(e*(tT?&sCwG89j^cWUdHM}0-2islClcGo_i4f zAIspd2%1Dn09S}%gxoLa;)R<0b$ko3J3ZNLWEwr}UW<0>)P4g%@K%GW#U^UmUYFMY zVr1Ma%;7d>zRbuSJ+L2ty>Se}kE}JljX4DN!rO)QF6u9~Al~BUgfzs2M@|*!_&ZewdVm<0jJIGY}8bOyU8AidQpS&4q3*C|6ra zvC@E$&_$QBkt)TxiufO_HPJK_LI}Ie1Qo+ro6bLl*h$DV=e}U1teu}oNQT`17<7c| z0O@&vi2o6>WUxdRRr8|?y^V@D4?x!N*w+GKVwd*?@+U?*K4&C4X5^D9Vv+WG>Z>uC zWnH_>flR7)i>GLpT|v~WK*sTRf(i;^QVTfPXDT!n?_c zH-D$76F)wl4|{^v246fsRI#0dSwpx&nNtuisMhTrydFB34>&oaENs=9Jb9g|K9SSL zMxF!~7i^c3IqqR>uK4=`8E2v~v*D9b_OUqL8&umFX@Rvd^3iTus>BS!v?!}F3-f|u z$gHZVCWy&=oSvYnhIcFtdo21-cbi{<4XK|Ley7LL7iSz33Dm>X%X@b7@7DnbT=LRfi*6EOHj)4SbtDf z!p%mnfcZ&?WbY@2^F{~IU!nF-b&#?bvBVi}pb0h=#nq^cWqjsgoTq!v(uuK_Bo5@HnIIhN^pXbLb zVq!*^!Dx+hXucPM0^7&7m~e4}U%gyaliSaQRTjx_(BwI0|1%>`y~)Eb8+r6ouG;G71Kw2J}g80P?_jC92S zMM0_?Dem|71-;m?#vXsYWA4l*bL8s(Px-3gIe=*B9I=aHXBrRL5O9_1BkN@!D|bx z)oJW!BKf^M!eejesdWbOAiytR`uv?$C;n6iVI-?)cR>P1Z@@) z(Nj!(sl@#Yv0X8nTVS4n>zq#sa{TppBi(BYeW9zk}i5-jS! zjj)vDUL$`I|0Z!@CQLN)fU>9or$v^#I90Il9Z;`o(Wd{f_|xNauo2&4{7zQ3aJx*S z+3rmkHTAhv%NJLjbe2l;3aH1P6%m0dQ%oGC0({cjXL_@ZG*_Op3XGAT)8S4e%=Rii zP!^9ObaOsNKZ4O6m0r_^PoNgiGLrgBWxTp-v538vGS_iCuAQT9??~TC8glezN##GI z{i@G@(tiSV!+fWB2Y87OBe(w@{&|zGP)u12o5WvZdV~H2eD7nF>1NM)S(o*B^+yc> z>pYo0g+?^&fT$hF^xV$|5zuzEd9i3KvZ)EAS=GSgWU0`lIY#Y#{M33!&`YV%TD-WC42!I@;>ax$}YeS zES|?lJOEl6#?)16l!aT=+jUt}MrJY{@ue9m=3WgdxH;nNdzR!G8vIq?lSF{SLRa*RN);sE2ISeJ|6J-biTUE8Y5lHXlvAtGHM*azO|3{2W zz7cjlmVlTiL=t8Qksz>9PBHHAARso-SRD|JJ!H=3E;pC}S4(uEEAK>gPS6L5>PTjW zejor7;G0=~w|cHE;o0M+G!Dj)4+m&pU0p@y>}zAtXsx2UE>%};!#iIWuYgII|7f^& zq_Ra%zvw=US&4?k_T-1(sJ^;M125t&FKkvHiMij%jFt5>tiK{hS6h*S%vgJ?o_~UQE=r# zBRkN`VI1FTWTO+5vgn4Z3VZYcKJH!w1Inyr}T4xRpae&zyi&m~4K$p+QC zA<818WAQM_3$5fW1>yTa_&vrI)UK=3*T5Bnf$3Mc+X)}WA)VqpT*Kr9TM($~_{4G$ zGsuD_E&=6JG*$Nt6_3-m4jQj8at#7F8okbyjY^1Ls!9Ie$VdqR`DgUi9h4;q)ia%^ z7k5BT%pbqs>o-d$)f7q0a-=h~>;|Ty)gnTTIkXF$n&W-k6E%8vKsG|DD3jsJF=0pL zf%yL@j}{oQgTFDznA@xY*qNrWFr67VZ6JHA_eth^H}9ILTyBR^+g=LADmrAeDP z7(9vZAda7B<@|NGvL^Gxl|<~IqUx7yA91lD;=!y5_K08AU4e%sj~f?BmPXbcU>Uwf zFXR+EH!EjgT-Jz(uq0p^^1Y5W&7~W8nx_GKhd@y$$3|BXi*#^}1%`c5a0D3*f#Tu=6n!`ERI{ zG{^r7$DtVX7NHOR2+nU*T&Rr5V%9GP5r!=XO!Sn*_@?kQk;Xq{s6N9RGkB_oY1q0D z|Fupt?g-Q(j_J`rh_nJ;DfU5`bz)k!+fPrU274eK6D+`9?b+!&2bA)J`$Er}7iryK zP4D9j;xmH@pvq^kyz>9KFjKQM*`POpNAb2Z$V&==#{J+~(YX2aSD+}Jb}(9Tl&`94 zI_^=AQZ2f7nW?fraYRkbPz;c6lGr_CSgEH68w2b%dvcgO5B_cMA98P5FN}js6G2&P z+-kz6Q7UV#P%>a*BjbUQdY1UC>f1^VpJ2FOt08XGk=_sW{vUQj)8PTZsygoP!kz7U zE>S5q68Jjt$}TuCTz1AtAlPvLw+V`dsH`&t1Pg$BiZ=){RAnf-i^2EZ0zO-$PR1H8 zqD21WHjE|&j*h)mFt7`3(Ehjyt@fHjXGt({q&u~X6+(g>8xdTB7o~b+AH)M!gacWW zB(E*-$7(L=x7Xm^K}bfEv&8{(?jBb~-ODARK#e#pu2Tk8GZgbHBfyC%MJLwuT0P!( zS6yAQNct$u+P+-H9OqM3Gc*POnHXe0Pq{f%iO#oZgACGpDSEN)ay`UNpnlAn@2IUW z|G?F5M)Egb&%kN}$NNcS?}%W>aVM(nMNs^4I`2XnKTa#v?Hk~m6(+iJRWb`gcEsye zF_TTi>TX1Yy&K4kAjBrkKvvG( zsq$WP%0MK_T6E#7Q97@zn}_)l(ivVAL^_3OCiFo`FF4fxc-;cKX>hf!s|iA!DL%J9 zD76!x`yXfl_*(IQT6`{?+X(Yv7R$C{033ZC+kfaYbVnH%!E55_fg#TeI!s~)bXv!cxK^{u0q=A0AC>JEJR3$gOXx@Fw!j{H4Q^y zy=v1G9yk9FLwmmbsR`AQ$DSq8y^l4S^1|AZ^3*8bfJXUf}J+&q|ki0s1M67`m9r+_(6wQO^%15_rSG#8ZSU9guA)>V)|ZZRrlJG*OH` ztf;K^&f?J0+18D3 zQI|^mrLfXFbr5Bbbsg?A^3{8dd=0s}0}JwXllXJkHLJgZbP#IgcZz{w+FbE3$Li*6a>~gy4HhkM-7shfw^W0BZ0Y zfp~u?10(kWe#)?oS_1QrAUWs+4?)8BnuqWYIc@mZ&LVJx@_TO^v(k+Uz|%s-Eo;Oz02R2R*Bce}J1>;`y~X$C3KJ_ssL?%LLak&ST0TkYKXW%UUnx5N zHO_GnfMo}b{L!l_Uayn0a=JE^zoS7G;Qkhl&vzD%z{NoqLlXSPr&TSVgbIP{XNkcE z&>s&bdnSD+_e`GGF;Ee}RI^z}`S|Pnnv2*inPSSf8&m!Pws>Hjkte1BrCoI!*?tBU zy1m=%j+=CRM=j5IG-zWWSDNUGKIBUv%@TIeR{-T(YtIiE`9~YLIQvEl67?J9(=iVz z4c=-8MXotXO`8c*TVS6>ZPqhkR2dD=gn9S-EBMN~*=GHe{5a?nSyyM|zh4zDU~z*l zsOe0y9)^kHnd*8*Y+ka}tYPUWv-+gpxeu1=Id!WUM!94V=3@(jwX!?mq(5REe3<=jOaYg$^y0;?p{7O(!Hz)0nurl7CgK2i}}$_ z_J%1+kJ|1pzTN$S^qMGKpdyJgw=G#gFy3YYlw(aeI@x5`yOknr7NCI6;$3b*&=AhT zBSvnZugmtLzmhdtRo(Owoid*#F>0)a=`RxB`w{Nss(PQGwTQeZs)t4OczDF#Z}hLT zuxp6sc(hFw`lGtkruSQ1_Y$&Q8a!Xl**SnCsPQ3LY<0!{iJ&5=UdDwR6$6CbO1CTN z7lKn8=kwevG_KTp0FkJI_dc3BEQvISsKvChXgDSC7s=-ty<{`|K;JzeCl0)$O@5Nf z7dc3yzr#Dq9tRI=NLR93f|AFed?b6XsHy7!RzJJtH2w^o33wDNxpoYv2 zPYJ5LO&DKaLLI(~s9#X(VKLJgl!u2P2>~*JBytjHBv9l39z=H<0-Q|=rud=bHAggB zKxlAhEvYY(my*!n(StMvB}rINq4#l%rYqkM1qNRrF!QteO{1adh$ub26rID7y6bGWhq{ zYACreiQ(R10%=DYkgo6FN^-Mspv8Hp zn}@8cSkL?G;XL{|h_K#S_Cj|L0ELi03hcr%(_4=bMs#yNogzboqgTA?_ zQ*)ygxacBu^$&0#&qdv0HROkP6%N5eWJgC%r#`0p*kfIp?nRic%plO*W(~+wn!2c2 z$ApVje+}CNEU|QtE|`datfIP|F)@#71I99d-LyV;vaV3X$2^%`+}FU~uB4wUR1dhC z;4>fia|cnb>es6I#@GCxY{v7@l~>c|1&u1|7L8`1oGCN$hWMt$YEM!_(S&aPz3VvgLI#2iXH>uPrq|Et48e^)D|fRCBde%iE?jdZi~k$+EZ!bVrShI`}nY z$Ds7K*^O6$4a=Ua&fl->#{2{KxOW5E2a?^WUPAQ16cepSTGQM{B(1h)2sC+BOWC<~Amq$=LQZw{cKCX6qlOxs9uE#9mEv8|!fb zb%oR1#(j3NVFPe~oaQ#-xUo`8a~nT*GKTp}UDTzyjjRRPbZKtm37F%j zNmKxwd@;>!jMx+)7?tKW>PEB;k3CJyyJu*l{GUQ@ zU$^WvZHB0`?tGSbzWNo;0T# zf~{myMvvmSWe45nv1F;+B%0OTL3BOx^I5ymp+|*u-<~}ckF716D?MnhtW$&jB3ag- z<^!F2$GifWyh3H4lCZV2Q1hee8~Oo2>WR@+qk`(nLdf3Av@SC`*T|uDU2o<(bW8uv z9D7W9)ZS)`Ci+&B;N=Dqh={Uh`ZUu?Q=B};{Mnlb`YYs}$o(MV*=q9sf^Zz2K=s?JaW5COe$-WW?Xu`&6 z2?^|3$A7CC$??6=31U7DI#vL~CeRKXnhMICN((jIeX%|3ttEe|RIiDgL9cesXM63O zPmdv6iJiPrym#w)pXxVs8x5jVjOKQX$oy1>*b9`$NRd9FdDakI>kRz|-NyLsa^%=Zm)Qj~>sE%G^2z0(Ow>-kzc_=nK3 z>Gn1!iL~I!@8Tqp?D+>HUx!VSw{ZA}fr4lqiKGa@@8k#&8Kh`~-=}jw zluICMElDIrSRa2%RnvRT1o%LX{`h6rFS)1;-Rjn3!j}%IlTEsl&e7U0Atu{bp{|DI z1CUk*C-{#jyYK)xR4qtlk~<2oe|kjHsFuHIkAH>csEGULq6bsUY-X29xv%T$islqh z4@uRvJ7Jo8QS^~7W}n@1T$5-OSD+o%#Ve0t)@Q&)|HquFP+HYSs&AqlT%IXs^EimQ%`<~o;fK2G6GHV`<-`B`!* zA!KmB<;;2(q+;KOKGsiRfQ8n|>uK^Rm(vsr7l>B}rP_I?F2r`|ywe6ORQ)9MinORa%DbN2o1TK(s=*r<5B&s_3eIplLFM=IfOlDaDluA~HhC zS10*tU07-6+B;lYtNv=z85gM%CFS}Zq?|Tr#i2}yW#2gkV-Jo?dT8zK5>BOzXy~D~ zQxZtXr`VOFe0F-=J-5*i zq9MooA=7;nC(PS}uPOIw7OQB!uRZnq=vtoJ4_Oc@$7Xl#Y~#SgwrpYeDH!;i zZfR*NU7oS*q$!Qf=9LO9ocb7Ron1ioLp@LvVo=|v-lVq~K(brXYLjsKL+b64n3PtV zR28)u-hq|>zpgfk`j-DXEPpkK{t97B>r6hC)|tcxBsr&Pok=~w@Y|$hI_jd-G|5CX z$vzt&N$X6ebtcm~lc<-p&Scdt>eD)tXUKx@PwPx_?j)@<$tiKdmua0z;&X@7I+K1{ zXHwnrw9cf)tEqFY2guk#N$X6ebtcm~lh37fCJC#bUhGy?1%dpu&SY9=QuqDRI+JOg zN!=zSzMs~a>`v=UrgbJY(7!IpFG}l7hH0J2w9ce1vXdm16C_3qJF%12nM~_U)_&P0 ztuvX{nY6!+o7R~`RocvOt;)uxcUosMtutw}`#2<$)|u2&{b`*^&1gRTcW2T%li%dT z5IJ}CjNf6!dD1$QniBtk{>V&PXELobnbw(XAxr<{k7uWKCaEYt@>jIeI+N*dXmi*u ztuvX{nM~_Up2?LZ%~g-1+Kb&oZaEjnAjKjY9{V)7(Zf zbwEP;8`|v5r@4)3ZX>^Nl;$?3zo9*aqp0a`Xxkr?*ocLAH@~5s)|oW#;}7hlbtWkQ zV~q4HMo;sX)|m{d`jfT%23p}}$%m`mX7OZ={k5MCLdt2K$@o@IF-_z5=?(;u{y_QD z1P6X%>-e1h1Le_ND*f;qoKcbYe!>W4Ei9nbl14A*B8B!wb8Xq#eq<-DGpPZnw9aH& zXYvd`oQvL0>r86sC9O00u4}NTbtcm~lT=P4a!G;9w9X{uNf%N-agdNz9Dm-Nt=KP> h)i{t@wJr=tGt)YgVB?=!oyqk}Ecu1kWA6Ut{}(%PdshGe literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_023_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_023_states.bin.bz2 deleted file mode 100644 index 32c7adfd59bd1b0a0c6ab194de8ccb355f5708ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2080 zcmYk4YfMv%0msWz&=V92c)B$7qPC^wg!UXv)+RiHULM+BlxKTP$L%?NsM)g6@?jl% zQ3P5kXCQsi-Y}fvV<1teUtrOzeVn%Ev>QIQg`34YC?M!{87MNY&#`a&efTH;Z~y%A zKXl@h6s|yd4d`Yb>SCNY`f=;=o`g#Yzt7A}>C4V4QDy%wS~hVVno%vpI}y-u*BB zpTPdF4o3W1^|wi>te>5}QN`S!{0J0Bo_>XhJs|JA&s_EG>A~)Z?_g^3wcjQDfpLn# zs6Sfc*fkTW{qk-WEO}kHfsjI-m}&BToNiYrwTP) zEOmSm7Lj$GKUuwlZ_=HLYorr|39zYq#4pV^A1JBO-m-C$kF@l*WZ&<0OGxEtDiho> z`sweg6q9n&9}-GPB8Onhn_>#fr}CfoJ)xSL;r7zv5r7l;cu$n=y`MMx8`0xW!zG)_`rqRX{MxL9y7S>5<;rQ ziYyW#Wce@hS94wn%AYjSb@7{{bJ1Mf1h9AzHh(nk*kVw-8F*p$6hB>S{SP!|eW>uY zHx#mTT};HIRnoMNn8b0MrARB~+IOuXi_nx^w1mvQV~^ylRXRI<>2%zd+4<%p_SIoa zkDXT~cL&4e|9D@zTMxPrgxciXdfCzS;r`QShvN_GSP~!J`ei|DW#`I>&H zVf(7vtz|w#TlhiEOAo5};k)=xBHOvcYh~Pys{>a88%HqF{U+^5f~_!EUSW%}P=wR~ zK9`<{d6clbxtO1Jtn!RxrqU?0sm8syr{N0&lq>6gpsSBG1cG#^F&IE(g9MCOUgc~s zgCS*Lr>_TbRmuDqW(JEli_O(w>+Brq>+)H$H$>x8YPW3OwlUDQW2P@}@mbyr^Mg384JxBhR79z!m&2mAA<8ryi#~~7JR6H?Ucu9fuZ%dZDcapO-(JdtHF4>g zvcAXh4d@=27b`7xmvL4`Jf06_w}xh%mpQl2Uf#DZZ7G|T5%2Rn0yC=yL#&|#8xs?H zs9#(QMg?c1>mt(B(z{W{jjUvFV3#-wQL9rZe|l@TfqJ6}npXbYvxaSyEiK(U*}Z;F zsEAd%kU)+ZN*UCOu9nYq{0Q;Ty^;JaC&s^uM0A)2h#l~B!l%&Id=jh;SMumD)KbN0mKbJ>^)jRl?vYG#i zXSO#&DQH$udz^xuxSLGxRl0lIq2r4TLnmo<@!(!Xu7Jc;G_MK92@DelK>3tyYLI~1 z_6=)Rd3Q>eiCgxdQB>!TOhCCtql#yLS3jm{F@D$?k`UEVvEwGKCR8p+JNHtv_hI_hPRRuE!7+<3LSKsn-5Wgn!O(~BkS6my+9L zLB?1Vi4{vI58K!p*GMJH@V2TIV3Dv}ASGrWo|4R<8iZApV@g|>Ibj}ymYZvI$~v2O z*G}zNdx=o_OY3%)=U1nRCJk_BFP{e)j8SNc&YE$K1UqE36x-@aJsjtT>kn=RnFahcHlT4nduEf`}XkfJ9; wJR)KzuUPsGvnhomz;xOoGc38X(B%s!u7?K_2l9XiAAUh)FC02N_glU4zrk3WtpET3 diff --git a/client/resources/hardnested_tables/bitflip_0_023_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_023_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..d3fd78ebb4d69f995f7da0f95316af0d8e422988 GIT binary patch literal 23829 zcmeI44{Vj!b->Si&we)M`8yBl1couZkY*#;#wM^Tj2ORcq)i3JCfV97l;A2^o5V43 z+NmUQDPI&#B1;UUYpan3c+<2cX<&Fw)h11-UsSDY8kihSDorVZMyfW_IHgskbq(Y0 zckcI||6vGOP{*Y2lir{2e)pbx?)iVuJ?~X4=$L&+-wVkNBJ0-7IxQ|C%ZIk|zGz2h zRx&x!gfz4aZS9g;4P`~kj?RKyrjl^Z)hrs?niHN$V!eNF^zY3o$<-~}R!P#iN35lC zo%OF~_!9q zak1uVrfXi@KdMZ3u9ntR(3RAz+z^D7JZLur64O-D0Gj)hh7}z_U(!Dq+8QQ%nZdbd zG)yejFvVTUy%{Yk07i>S<+Gp}%Cpg3U5|#f&4zg0l?aMTHPQmz{vTQRuE1>s5T87z^d*fv~*20ECu9K zDzoYJS8&8S&tqcMow7bCR;bMA(e6aMb&$$7(Ch7fv*j^gzTxjSO zOK2OoD-C+Lwfc*7&T$|(*GO*D`s-npg{7~*3i8)!u6~0SZ`=SFuuZy`G@oEv>(0=o zQcveTIDrhK&HhUz$Yo_Z{K_F4+g63*_L)et+GIT6Ws>`6e1pmqN+ZlS7^}9~PU@udQLQkZnx09C|Z%1~ApIU8ckK8WPD;b1o7}{n6=S*7Xwb<9DKxQLFOq)TR zb8kX-;|V}7Gs)_K{&IQr&QMkZux?uu^4(tQ>_y4w3&ueg)I;F7P6SeCZAeeDq_z81 zu5N)lhTsR8Z<*T^$Vx=xAhN=;^L}9Twm@ZhJ55kx*=v4M+F8G8*(u2IfoNDs%@Es} zFB?sqyGP|tKF+9o-iv*|V}@ItYX;{HUTTg9g1%IuTD7*)klqun#%N*8a_fjG?69mh zW_`jsZH+{!!kCjb(-@5mA)u##-3}X;YXg~CT7F4+9x^#OV;H1+wC^hDi6C|-R-47} z6f#BCK}=KMN|;kIpvFCa0V&gKICzVAT=Un@hm7mBD3GWQ`H*BUfQxmjHM>gD!44CY z?OqX&1(HA%M9DT4+q3#u7!&kUEE zpXrG?oo3Y5M$}!b(sf{r(AVf-8v3tj(_$41jL_^u{93qyAt=w5Kx$B*!{FYl^5@o2 zfc^h8nZSRq@(-VmoZJ;G`f6_5y?UTU52&oebR>=hf>z%2s1bJ!But=)Yay~x1<6c6 z&5Wt}%aADPTDf~x<&ddQH3%IVF#&T+RK7*?%*Xv5pp$0SagtYHd7P`qifk;wnbVLd z-l5_0W(_Niqs4S%CJQM)rAYJj<|i`&)bn#`4H5qzFHx61*#nj0xyf>(=l%iXf2AW{8F6qy~(N(Hg_Zd#=ggUPA+I2$nr^ zK6PG?-1qyFJn{@=x$KdD$ddf^Ff#6KO6YIDsB(HoBxv4lo@F?y_d^6Q^yXr=S=Go{ z|8mSLyNA6@6%GTZS7p$f>>3A?fd=jKrK!h%tc+OUn|^8}!o(sSCOr+>ooqw@m5EtF z5z-X55i&gj>>{tEdzzm4#8${xulbhM@SDB`IMrxl5UP9nGx>xTH%&)yYE^a)@c12- z1w5|h@$<~~pq^0oOC7AC?U4JmhWA6Lo0o}j8Tjhki5r5eZqzybh>TW0O z+pOVC1n#8{ul@sG{fms9?M3yVhS(&@?a{I?7@KMGw?9x>Is{&<<3X>t3yD#dG<*A- zbej-R)$r;S{(hMY0;$rS2h8_if6dxr36c*%hZZ#Bq{<$Hztx8(3UYSr_5u_9qGO+ctZ< zf7{w~z@EJPbKQSTrPoIrk*z?p8}t2K!#!bezUoD9Tg*iF$~;Z*DRKI6ZCcr2KG z?)@|K3~Ne4tiE>CXe?B18b9OtzCUN!FWMg|q-O|2k6~Q~ll|KFIf&aj5Uptv6j~#< z=2B*hGJx=#(40BEu1TF2`8d0qK4r2j2nxhr&rFWTo>BSg#CYthWARuZ7{af^(ZmtN z%L_-Mlk5i0Oos0=-Gl;$%;d=I1y7_>WcIw98wj#wZhC0M0tpMwzJ0;L857k_H)2rD%zb%>%2&)jJwYI|s}~L6MaZV|%*(csj4u!qZ0iX=-K z00jvKY)RX_p+qa$xy^^-CNnA0QD{g-8_M!d=EPNIQCBMO`8mJGYO+^N4{ZB}q?xZ- zf*e*Ew;S=1T__n_Sy|=xXg^U|`KmF)5s6Q!@+r+vXPRFTefxb{8va=VX^OpC{^Mk= znuBg;NhNHdlecVU0P-sT!N-}Pdj>#Q@@ih}yFvoH2{~X?J}9t=o7QXCWgsu5oth;b zEW$|t%-$=;BHa*TLT)TPR}NAuzJB*qc7Scc+uC{~&#PY@3v0bem%WT z=f25&5J-ZW;|eLUwdpw6DHJ3$+ZX<`rdB!0t+0Lbn%5?%YGjJ-SizVjy>e>d_!y zkJmr!jpTnL&Bx2;(mAqO+gLI4auF5RF|M0&5AwCchXE|&i>45>57?+NHS{BS&5N*h20Y2J~jm9fyAw(FLqwy^hxr-W}KeliT#R`AvG)_N z+iKz9GW%Rd`n%cE-+@nmN2y431nUeXyuy;YvFmRQ{|m@{=lm`(a?Ceb7JsG1dHFeZ zXco3L1~}Nf)Mr8{@qGxr5{>@Xr|en9ic&fbZ)^dasek$bT*R@+-e={HI3S?G9}p;p z`vxpQhtG#xYu3Pg@wCkoGjeO(X)TcCw#dS4 z2xIH)t;-g3%LokI$dC>n8KFO|?hsSIR#sg6Qkt!;V2Kvr$4FGhPPQb+^cK_5@sN=d z=jYcy8#*N2=e1z5?@Vs6#akw3-{nVsfVUpi%pG~v&{TEi1~bm^s}wGwvS%mX|L%W zfH-81;P1f^f4_y$uasS%SwZS-`7439t+PmsQhd%rv^hRyC5p-X7~OC z*{@yY?3XkAM*Jb!eLca>D%;%Kk!u5~kMLf9hFvHnh1jUS?>vsX)z_@;gG2wzbJuql zCtLVRm6JPE-n1k}t0fEGvQ}vK5xeO^ChYtwI&sW#pbdfEi3nsPrV90ZHH!h6a52w+ z9hh1uLdZtCqRMi}cHkNnS41MwomfE)f$*f}x(iT{2~$qGp~RwZLW#w`pzn5-&r&no z-~JwoEdDMKBx>|f_mudt$2cTKLf*Z|A{EFSOT>^E+QER#IqNKVXxa3!BVDVLD;??X z==53cYdFm+pUm>L9=kwBF*-FQz4?gB*KUU9DDrcz$!J_UVLZ?fsW#)S49rT-zXmEj zBYB?q!Ei{*ZiO$&K3iG(a9N8p7u;ZCi=sl6M6{eq^1HUIaUpo_5 zm~Z#_^|->^8#VX1d6~GvJgzWjLlIY)M>4#TDkIp8&=c=9j`R1Ffv8 zbj20s6}=p#lLZ|66@FY{9#@$A9|gx1=Hn_GIqZll%;O4ka_&}m6jzvAJ$77S9#@#3 zv@_bc!klCz=WX$SyTt$P692c0{Z7aKe@*<~F81@F_`hA^|8|N0+l7Qn{NFC+wA0j| z)Q=V7|8_CjP+?lGN{cJZ?GK0I3Uhv>9bIvSx%~upKrg|6X^bn(;|lY8sqIHm->?&f axWe3ibP!jVmwoxHE^oqx>*J55ulgUpCgN8B literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_025_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_025_states.bin.bz2 deleted file mode 100644 index e21a5ee9374aec68eaef5f2cb0a7cce6e3f82c17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13155 zcmY+~d00~UA20CAa#FFyg@DR(BLys0ry5%fB}FKeMWE7HW6}9lQ!`mjWhS{`xc~uK zsR+teir}vrr*b0&EJd)inW-tQrkZKrrkc6ld!KvnbI)_m`Sbj7o^!sR&*$}hZ(s>m zp^}+U3iH^PZq|&iXkQ3Es&86WX7bGS)7DR$Ic@#SBkR}Cyobp>SS~MnEv|2%Dv$U{ zGI3S(+YRya!!|%X@>#e>1*~alW5cYOMq+4U4J|8wx*;quSeUhbTDEkISf;-d5bH;+ zF@cLiTH=fWI9(QTT3BZJw5cO=>Y8z6>NYzo-mqr7}#Y^fg%bLy8HAWgV{)qWd}PY2d_(l$$&MxDM!l1&nm7(5HX zz7XNybE9dbeplMyyiw(Lfkp>kdIbiY&oZF#Gjs=!d}M`))#1etHBlY}wHxf03dYXx zG&%9q8jrlYc1A9NB(=J z9W<_QJFK6-q_K5*+=gYU{b%KeF7A?Nt~Jji*&}B~C(KHSp}@v#j((m9At$G|1bsRA zd}%>q5MNCpXIW?&D1n^2VU#Ec7FnP+yONJdRdWGCK3P5(jqXT51CiEYWv~!svyMO^ zK#gix%&%nh-ztloP^2E6vl&VdtF=fi3r+&LNPY}4_^68G)(l)qJ1(!LH|8{45EU*YP0=_;PLrxVM8wK~=;_R~rSwexc0tIo7{IxR`2nHjRkhi)1M_f!CsJtQ zDtm0yqKc00(L|uVqYWOq0Rt78CE1vTarrhZnFDFCRJOJG50=3pvswmZS}1miyL1>O z6}B12%n&gKGfR)EWl0DSoZiP}ZWlVqc#(=+2A&P#&`RT!0(MbRWpI`@AU^@eH*088 zn`c-vtj|b5^m1V;ozp&uVF*pIt_qmFQB9x@d30XtzT(N( z*E|~n=%6=)=v}ERcir}e@9lusd+98PhuvZugv6KfA#|g4MfF>uBT`Yu)-U}#YsD*k z8o>B-GC#%%iRzR)bBc^e5fV<+2h@;sp)(6Zu8CNFX)J<`l!W5sZ=)W zXm=k;nodVSKz5^r;xBB^fRcI=B9jQ2KkpdmIpwN*wDt1dfA-u|3f~#_pG(+Oz2HOI zy4k1R9KByPbiS5IH5tPi( zMf(wTOE)Oi<6@<~qfU3e)2$bFNP!TGqBsL=PHZX&Wi14_SmXxtu*4rd3UC%=!Iy5Y zjIFZW76b>=j2?RYh4zV@EK2z%KGQtR-GD1mi9LNfKfs(=( zO42)U%AWY*`3BO^7@j2wF5rv%$51kHA4?z>osQRUSz)bi39U`()sUx`VjXlamW6aG z8g{2f_=28n)|c{DxQ}bG<4pKKU@s!%UHLiU(GSFfA)0bV=N#%b z&#l1OQQb&Bo9DCD5=vH-=E;}W7b2L1*gVCGZ^06Po{{J%F%K@p!m}X|5t0HVsRhPd zrlBH1QRPF=8nS0h3^$56GG-_VSV0{yO#l@v=~wXv%_-swVs0b@U|>Q!YvC|&o1UM0 z%-O1e&tl8jI554YPj2;5houQZJ8}YPa{<{AgMp)h+1&67^k9A^TjjvP`z9XrcIa|b4S!=zjC9L*PoS<0|e>3nNZ5I>q zThIqt_VzO&$Ei=#NCa)NMO^=B!$~`X4ktob5CXlD5*qSz>c+3)oMJ+h2bs6K`5AEl zTN`$zX74h5*@|NolMc&|u4ef2-p(KV$&J`EMU?oX&`8kU{ut?dH)lrx5-KXip{^nM z3eVoW(AXCqS7`sln$5Glh0E-DM_v`^IPcc7+~9-&r9##36SF6CN%Ecm8UL32{t20h zpnj=w(f6*Xz{4}3@`0Lz<-KM_{X_rU^{-y|u)Hh(ZmxKekJ+->`lCuJE7LlwKS9b4 z2bxK$jeQ3(()M_53)?eua(Ste!K&>{LJ#* zzxvdq-$!O1%v1@sPFMTUnUU91km7BiI&%bw;cPR${V3TM&n8;!2wqBa|5lQlO79&B6U z@PseBSD$ZK&{EswkEh!#VuwKs%uR!Jo~br84VOdg5+)j;GXT()a3aIQbBbGV2w|c=Qp68?q~$fV8loy6rgQXnr>7=Pzhl! z($v3BZ^QW$m`$fcp>SGWzM{cc-Gi-lVgY~$7KsI{jAsN(5R;6SQ6~*bmVjDetl1v4;F-yP zzQrF*b;a}#4H%4F+c7|XzRk|Ih1{;ZkU)AjQH zdESSQg-PeYK+coZ-bv3MRW7(<#R}NPQ=Wl+ox6UQs<|1I`IBMyQa;Bfe_D!;^Z~z` z$EL_nwjuQ=|FZLN2)m*GS#?qZ9-qC@=9jg+OpI7wu11D>NV@ufk8a{^z zYbW5LpZ@uGucYnUZ%`Nh$QvQpmwfd%GjGY91${41MNfM6ZhUndVKnLjbI0Ul-Q}pv+xt5&Cst9mnE#dH_8Vyex*E97LO3j zH|Y(U{KOI^U%hR$*35@W8Qj>WPqD__G!NR5KsQluRfs}g&YC#0fD%4(eR5oqG8co(jnB2BPHMPVJFP z^ImkOmTas^SnqA69f;#;bdUhEUdIH44S~v^z;<7=nVZi46)3wwGtsf606|S~hc8;v@KdtInA4t9dJ+0(-`)xwqn6B-HlF5R7!{*8Fzuo_K z&Do@gn>k5)dv1@rem}cr_swm8y}okskK>#E_${#c2MTfILZte7beQ@(R107ZA3WUG zO@;=MzFBjA*~!|<^Ve7Xg#V)j2Pl&dk?{fY6%|h;fHPSh)rS@9zsFUq*D~<40g_b_ zw%6AeS9E{a^~3l<>+3(MnQtAL_rEJ*c8_g~NZNVkKXI>;_TG4YD(SmNC;oHg-|4e! z-(-CZ-ar=C(n~ZJhC(K{WJ-b%F1m{}NUQL7-y|MiZWk+Y)2TK1n3=JWi1ug_a#mb# zYx+!gR4Bkn23ZwTgG}HUAL$B8t>O)e36<#_Q9(ePJ-(4MA|V8e2PFum)Xk+j`(%PK zNOqsxBVlprssaQ{RBZ|uF*SoZGd6{M4tK(S zlw%Ng$XL1-=Iv&Yh)!>sD{ufos}|rvmHy?TrVcumOemgO9ZjT0O?`q6d3&6v#Ycl_ z5R#RT#yZxw`|G(RyJectsF8O|XQLod&KO~oLkGbDyZifb+x1?Nh{Lz+pw7?Nt0wDX1KCh z0uo=Z53dC<$lHB9R|3imk`OAw%_bl!k+qO$bs;cJ3StBb@Kw-cbn{^9^iNA_FE9El ze5;{{(sJhvXO%^ZB}*;TUwv?^Aog~h_xqMVH(5dF|I2P1!4OBMx>DYE%l}%y`}3>M z8}Sp=oA1d<_KXo?zMFC|de+NFM?3AGmK^vY`s+Eryr1_XYER^=dfvM4@Afcj-$G&k zIJNh~H*;E^)DNYK<7HKRV0ej9RxYbW;QfQC>$+>5WkOEHhP|oi1V7?^=oJk>;)!?%b^_HMG1hM3Pd~MoD98E2ALrLv{&fYDtB(ysN4zxo<`3VSX z{|FF^i5F;O9_OJ}Hnc$iEJL~L`Dg)Dx9-NNaix1$=W^HBwK zje8V5f*izYSjPN{uk11$xW4D9l(>jbGE!h6J!kHP|mqjcXi0N1e^CK3ugn zQ>J`~Xh{W)YX{q%RLQB-N@b$VlT42?b z1Il%oal)ZlA@zab>!-~y%$qi?ep+B$)U-P@k4#UUAq7EaUc(c}NMsihIs<|h6-fh% zkn@IXNi$&^&Q|rWAp1sKv&;*+Yd5bWH{_}Ka6NQx6XjW^;vY*SF5bc_QA1VqeI zzFle#x2dZO(lwsbLbSWYlCK=~SV(jM7i@J`@R0+;Zg;v;izZv8|Keubsf4oKEtFLoI#W*xg`Mtcn#+AE0Uio|XJ5!3DZv+Cx}v31m7xTvMs!qT8y= z)x`)CjwXS#$YM`Q|K_;b07MOkK+Nte$)z=A#8=s_h^k3({i^5`bw6kGG9i{5tOiJ<0(1f()G*@y4 zCDFcceZ%4S@YtecL%_S#JXWp95`=)`Lacq7PzbP9&&QBC0+I`@ZgjUPv5eEP>Q=iB z!Wma@XW3XNQ85dU&*VZ`hDs8f=Yq7AUr+xkyHwM(YPnKjpZ@Q$U$RDjqYPE zpwNA~+OHv&PJ>^Rr8n@ioiZA@0?b#JvlYBPw7Dnb%rr)LO|>CeE~7#kbl_xR5D}V< zo`qEi(djjSqv9-aYSbDU%!e4{qV*t;0E1Er&`zex7fcLJmIi?t+xe{6EZG)F_pp+0 zVyZc#c1%J-!x4QIx|gj`D}(3r3^+VmWyaBvVSU_brBKGw263ZM85dP#Y3y*%(1geU zQ>uJ=A<(>#F6a}4MG70>F-@NMGHNfRgdA%OorW}WD6lR{W^{_jz?|u+8ioxud4ljT zUK86t4Gd=-?KMXq{&^O4SQh}Hvf|V86}H(4Y-<+X<6ciXVfLVdi7P`}xOAOyJDy<7 zUyXrolRxPIM>Rt$`4zD74)b^Fdd|gvof{Surleegoo~U#^bfQ6ES#9F0>kI|g#1P! zfAh=P)myV;6QUN==KmU-C70&qDF?tE=JPE*U) z0DAkh83-S%W<*jnBfqRAz=m~DLNFmTwgDvunCJ;1oQm{HI7oX_$@ zVPHInv<=%LYthb>5$suNnk)fFVCyaQV?vs$#ywC(XQns0;!T+@>Zlf?MQLPXmG!p~ zhAEVc*H_S#l29goS_f2(0Xjz4l>T`1g75GSSWc)0ILdQy-0lvXU5%j$>@tyBEhP;n zG6p&@U@b=YB>mR6GcKQT9!6&n&&kWaPe1%u`o!Fa`@h7$8n}FU*R54Qt-Ex4aAXds zYu-QtGNe}+qsN;R=MFvzf6If*YL(Tyemi4M+ef1D5u^b@TU(hDr5XStbaF3(UhI+l*$FkwS*-ql&!g*h=<&9G>&1C2Jw?Onp8zQx&bRxe0Ld<0-)DKNI90C8Vm@6XPS_i38ruvp06)=RHS#9 zz*4$E#%^-K5oYhm#_XWdhjoE3SyJn0G&74|BM{IB%)R5-p((bsvaEtF*hEvhg_5Xo z^aN3_^_z#rqo>?5U&tknvszscfZePTctlFq6YBQrfkrl%8Lp$N`jmPom?tgk+wgPB zh4L$I81lrGNni!`HZLbNzFgV3&3U|$mQOg&#r9XfR>b^Ljt*NfTU3cZ^2WMKxG z@_E&Ro2$ldJcP7O^xe7f=Y_{FUSBsMZy_$Bn?D|AJ}M(^G>XrxGptq|4k-2E@E=th zkMR_b`#V(?(%`%~fBg~rtZieTrhu@R#%I^}Nj>_6lyiX>CUU43fV!i=u9OP zvXCur#{{d>di6k=vK(uj`bbR<-jJhbgV3IGQQz`G!-6IRlvQJSEG31KQ>Bs_TkC*` zuKpM0XK9pd84U}$4D&jzC_Vd^is00GFN6gQ3Z*I7$6PTgzCnY)?g6p5K=x)qwq32G zRZ`#}?!st>041}cOvJC!I{mZNRuIxH;B*~TW2ML~SeCuR*R^N?9C*yb=b*X%38_5x z3+n1)=jk(?_H-jiWuXbZkOcLDtNSO9f4^wdg>-DGyL@bQc~xB!bF;|%MV;lQ?dy{5zLadZ-}>Uoi$vH9 z?4eO0%jO1Sl5KBOE|df`Qv1vK8!ij`SZzuztdGYUsBUU4sTQJftoXdf2&e4=3)=9% zDHEmY%)C^%5r%K^@b53VjEZkanm-4wj8jz-iV;@7KZt9cPKZ98VP#-NB}QAVHNg1< z0`@N#o0m<-fAJw|!^9b$O;Pt(QFB8QzC@e{jea~$&Y81Tk~;BPnKX75_Yn5|D27?% za<%EVd_FTO**a1wk)S4?9tT)2Z`$bft(7Do(2`}<-rQ4i){2lfSC4hFZlm{~1Gqt& zEF}fhRRN8F56IQqx!~1>8v}RS(AHZnrXJV(5k1vQib$G@NkB1;zmWkhgiVnqdick6 z&3$hZ!ItK+weD(d2!8_q9!xzPYvB3d69-SFZY~?isQyFT)_BmYz4m!dl10>FujD^* zE*UChniD`}Wu=mM0ox$W;tNGbH_KPV+|L!WT&92uj|$z@Vm+w)YV4~_<0t$un~#G) zM*U5QQ#A5I#^!^$R^P6H8(;5LgMGUlhyAdFE18N(zHHb1mEyYA-L3oBT$p3Uy1fH0 zKef+U<=}$;f6rXfk%3V11~=YYVcgOCVHN!4z9&1R$AeC+++X(h)?BEu(+)T}(%?$J zATh1HaGDPb`sLU+<;`XP3p4pLy-ZygS2Ve|I5?3)P$0yktwXqsKpYZ<&Hy2u{7kV0 zO}&j3n{A;2oY>0+i5)gQpRW_~O_4H`v3-g&W%<{OLa;bYT9>it$gl~b>ZM+@mUks& z50k@LE{IIXP7GfV*$1-```Jj{E*Q=@#!%CPTL=wDZG9*pg+#LX_03uvC^hC}MMt9L zoP*h$VJ*VyzCC4S+oE_%d}LKuLnTR+b>te4!&p{jN7oOr5n>BJ14JNc6BE>u_$+ zNe78YEk2nZLBWGT1SzwqfFLvZk3%r%_Cx_ot>#IgM`(*qELroDKx$aQNk<8CFmyP| z`+ld(wPp zKQ3a)@&C%-{!w=Vmlr{NxMWF0#1ar`VCZ4<@@1jamjcksiIpdNqI<4KfVc<|ufH&C z_xwCs+`1@O+gBl)6H7&*WlM-+gW;cQsXrVc-j%&iMJA-2^%Q64q}eIa3TX1qU?NlO zLxao<-zc6KobZY4-c#kW6(_IWI8@ln6{!AUKP8~oZhXmDyEZ4__sJ8nlRLMjzJ~p- zw+LD%P6k@(v?VsPwh~Sq;?DgAp>5z#)dU&a=$e{`fy7}X|7c(7aEp(pDY365hTfKO zvpM@(>MGOzxp4E&nZ?`qPhP#c32^P(_`B?j^8w1}SR(wG7gRC)(tGec=!X2HGc{B` zSlHE=aU5}( z%iMcICy0Fq#P>|uCNR@sX=r6QRKu>4??`3UN|KnhxwUOYB#$Nb3`>Fgj2G^g+~3*^ z)Sl|j0n+@NmbC0ffzBUao5z2rC?l5$E2#y_5i&N9%CT{Ny@L+GV9|41-K&CCQaVladHl5bQSlvv$7wbGhV*Tc|US@?aheq z|GEp__x9}HooCyTJ1o!p_aooF?ey*2 z|8}tOKcj^as~`Q~I=kxi^{?+9*0iK%+>8E&RsBDqvzWon#&L?%5rf5$L32JA18~TK zEfTL`mz#%ncieWMl=>bzvqGR=NOiaAF(`yXILHtij*20vZN&h#kOva*WVVc~3eLiX z8$=Lw{%|oITL6RcX z^lWa*_~`^Gwi1YEup*lB7qpqO5kNH?3e56i%Kh8<{v^=T7eUE+m_CXfoP7Hd>yYkM-fcR-7yYoLS% z8KHveu9j711ktHB)hNV{Yr$2Gmf&Kn{ft4-2nkD98hw0_Pc#*~P&u?vw1@#25^=Ly zyX-V2ldTy*yV=D!o{tOb!350veCo-ip+|da?tkacxLkQ@)c7zTLw9y4&CtJ6$8g4< zLS@aYiq?lsgT{x?Sfn;JSY5`hcK@(<@p0bO-pfm-W4_RurH1{y?9!r)4agOL-44Iu z@)X`Hbs?72U4DM*!q@9&evW&y`IoGtAMgB#Xj8nQ$J~9T@ zEG}?CH3eF&r-lDN_Dn{)PzexqgNR&IOU5$AT%Z`?(E9iNU-d+48VoJmSm_jxLLqKO zpR9KA;xtgLHj88~l)10zG>vsZAwvpi$8Q13`q8cv7?g|)lz=to zce!t+d`S6+x0iOGzvNHAn&jgtpD&L5Lo*A^pMEGmR161D-l)4|CQ8uUz0io*AF}7R z`HV~nQsA%tM9T%3+bGY_U%}e=Q!PeMnrF7BW!cLZEi4-yyFF%=BvLGb>hR%g@lGEG}8SW%paL$%Lq_?yw!bmfYI53)|Y%mAZO#qz%mKom?F-8NOg_Zrmo{E_58~jZ{UZQKHg@8?<;lAsH7> z(5<72Y^qAX8G`!ktf<+BzpJ01g3*xun?EmIWW0l>qZ34-IDf1~zfeTN4(r>Yt?oh6 zFz@Te^eRR3bkwpx5*ypFsxv?DKGCwcp_)bAMX0}DRQ0N2fPKW5rCSr8ku3LWLe3k{ zt16aH=$3}vJ2PM%YZ|;* zwz?i`>bD|$2deH-vYn=&)Fw3<5w3$w)h~E*L*sU&EF(32ZU|l3R$yf^Y;Dj6Tkotl>rzIF4OnnQ}v%jPL=gyF(zrB-86*CtWBh_rnS+NPFiA^3a`Q_CBn z5Tdt02XrcDTQ!sEkE}|YH!FSv4V&Vwj%5opb{V-c5oPa)7LFe8ZNC2g{&`#azgZWs zi%La%l0SSpbT0V&=k;^_hGP!ah0gYeE-eMcY9Aj@e@a|7yEOg2e@ycFUd;5AAv?gA zm4zqS?uM=Dn%xx?I`6y;XFSvL(~`pX?{CqP$Ph8_&Dk-G_(xjC=Lbu@h4H1^dw=3Q z8!&;f*e)F6(_klv%Xm^|y(iH8Ql0dk8 z-!TWkhV;GYC;*Iv?=~OzEYg;kAT|rc0I~yGdr~D(Y{T=BldG<;x_bQ9O=IraxBWRU z2la!j-N%yR_pfOqWL&LBw{04- zvX;MsI~A)lblF|o+YY4`=3*09o=1LpxYqo1`TLUtBUd6A-owWqeKX9zf8)@%;qUmW zb%4c;x!`U5mHT&Yl$}gJK@gA|G!0KoFSgcRlw@BGe*{*I;u42(P_xKbK)VCz9gBDT z4CalKP+U0jx0(qt=fRf6Eh`OG9`%lBrWP}Rp{v@18G;0!Jd-(3KLCsbMn&;wb#GHc z)gq+_SJvBJDQ1lGO`CL!W=^uXpsG!kOyG`=HqUz%q*SVe1_At`eN6fCC`CXUec4Rk~Lv_fY)NOpFjN^h-5ID^*bq-{s`n?DyS~%SJ^UxZrhSMh1b7Sx0Pq6Gb2LH{~dbN>tVD~EL-1T3-`uV1Q^`a~K z)z4%u{o%3`E4gOZGR|wXqpe5&oYuT~$FJW!7?s%>qkoRl*(WZqTn<*QfZ!C925E+_ zM|t+q;}0v6*W~tp2AlWZ3eqpTvtV=WkTDyn%r?(@>&os3D`a=%}(n0NV@m8*&^ zjG<2Awcq)t;(8}+7SVt1e^r9?b55VObI0B1Kk3`Y-c>zn`K{Cb!||XeE62K@wTbdl zkE8VGG8Qp30Ld%8eS5|)egKOrT-qgi$+zJ); z0FJKouU*Ynf}A4>r|>!8O3b^1S8B&U>?~Ey4H?nmiu@Y`P6tOeZgh|1mSvxQbe*vu zE%?s@bm4K`x%gifqFdixTHPjiw&F6^JJlsEnX_rp0ejQt6YA?YvLc1|*Q%4S zorc++m}vj}8>KHKD_z~0wMVR#BzIx%ql?2`*WFj9Z!LAM`YN(|=T9OO$8~#A`F*r0 zy?6KWpEze^5MRz7Q45nkGD}bGo!&F8DpG#uM&+q<`V)&DTCu(Cl|s8NsmT9xoo{{* z|J%eZJ(d$Y>qOnZ4}wIaH(9?~1$7Pk)BPhO-|UOC?Y-v;yzaO}cwAGZ@(S;+5MNAsIK@>f^1JEU?)QfN? zfnB4=fE-;KZkh{R3@FG4mNd;sj;s+%Rfck@l7$|VIef8eH=kOS+0{L}#xF)Szo9#; zg~L|)Jz2E=5c^!-$^Mg{Uf&&?YrQhDW_H+Bu8x!PkT8c*i@}k2T{eM)B9P=; z`AUZud#L!A|0dqq6jA^A{GwCu)^U%$JkWBk{$Q6QF}YfHCsEMAYB@C=lrojsEG{x9 zgn0%f$!e>&?2qP}kE|Q38HDJ^!rcol=T0Sbyc&J{X)w$1O?brRJ>*TVE!fQZ~46skGbk( zr5e>0vA>m{va)?;x2w1A)(0Njy46;0sFbUw#Xi5MsFRfPm1^fd)vt7<`glBL>()rA z(Mr8XO;pNClB96*)~$`ITb|eEdX!ey>w-vrH3uP`S+=9ROQiX1r(^~EJyiw$mR7kW zS#4jaoO-1mvD}j_FH%zuJQgXZq#Tv=LS>hfTak|L*DBwkBWrebd~4FytpoI6)tXW3 zx(__2taJFRtj=jNE4PtmHn7$6(qmc`6Tf@6E-M*B$I7BXsOqLANhom5qFeK%pjE(| z0AbYz^>mS&sFi=CJjk{9?TYyr$n$H1ut0YOe@MD2tGuo#t(AKt!xgnE%m&!L?j#wo zM)5RB@>)6TbyR2zdh(3VIE|~!7aIi)|68lE@=m1mlqBK*Aswn*kq5~;v??br>1a%o z+aov*gC@IVxnJ-TWteWQ^afhD=*XT$4--9=<0b76<^)+e#&vGg zah>MjU0RirsWQ{ZYSU4E6Vw5`8Xa0)I?Ugp)wn*b#wW@3py34_d4(XV5k)M_Sg{f0i0@A2$8L6`h6 zbU{#NAXL-nyfJA9ExUNYoID0q#ROcm4>3{ov7?~MUVG%a2$Kzh;)s;QJ}vEQQtH4Z6&nl7B=)7IS&VV2Ox zgM6mXdMH`|?=HA*ycXW81^EEw@OuQ`yUDXaC%FAM59Z0VljLu8bTWMkcaEh`2fz{k zO*#tt{1pLQUqZ5&zqO3EyBL^%$S=H7N}kbCW0N0`f*xOo*$N^f7JuaFqXF1g!d%Hq z$YH&@6eiv%EKmxz)$;C{d@WjtnQBH&PWEG4M>V}cRGrr)8x!vum^N? zg1O|kGCtE0o&xt{dAkI!w)67TT}N8N>?azgVkIq0wxu z2DX5_({!}@(jd<3A=S)VwdlAa{iEYfVw@J3s79E&i`D|9)olJRY(GuZD_jDH6n_QB zhHgNG;#K(n58!_ z`Gw5n*RVz{p#Q6m>JvwotvZ?`GNQVyg-o+kl(2$0V-b#V9gHC$PxL}7h#lZnWBING zA2x#-pO)j`Zl7^n(H3JL(y{0zVfpe4GU~rGtDW?~zjk?}`5|C!b9V!2+pIt_!STXx zo@#VIHIiOhnH{~>GaZ|MU3AvINBD`398sBl;9{+jSqJ2f<=q~mZoTok-UBzbVAUu` zv@N3H?Xb1#=m1Cq6TDNl-7w7A%C^LmdhIILAL^2-wE-iQs+51GDYaQ7EJ;B3sL6bS zf(3Amu2G{Gfh<0c?h>>nDEIT|-})k`1aX!3gI|o64QssNvXrld51(T4Nr2WXpwC9> ze)ywD%|@~GC`?2EMWPA9aSY_&z&!dzFHK;GJa|~K9{j*eRxN)s?-e{Vy2H5vrP2vA zHqpm&c_{GYl3#+KB%$LD`l}#e*XXFDO+1dMi`TPZiCkYpexcwf3peFpD)~)b3)^Oe9Ecla?v|VH}{b9;CA_hVO%Y z#<*|lr32IfPMb4?c-ga3r&9VZ%2PLHC~U-YG<|`YZihWu+<0Vn?1!pJtNqX@CyMKz zpc7p4zE)nkPOG8hBypw8Ti823sQd;UeSf0xx-ZH}L53&6z1yW@Yo5LdLmaE=K$o2C zYy%V*P?+*d=fEL*4f!I=sIIuN*^g>K?ou7qEfIZz?SN-b7yJaV-~mGAK)Y~N&fV%% zQDEuH7_A4!)CE0r0(Fs~47Kc)mG28aoAC|MvRfu5xjbtflF} z)J^aOYDgsA`Z6z2zlldbOm%VsBE;c_(K{vseDe3kJa+i;$#f4nrfkq^(v`GNJ_j0L z&E7l2ZmAjc+qFvfyo!EjKj;ox_RzUH@@ox@J*Nb*uWv%F$BmPN2&jAZ=;+n>46hCZ z)DQq?{?v?QiJbwgW~RCTT~W^%p*Wi2N`zv`#V8}xo=9mfdAkUocpzs1%P0_;zlYh( z;wgZRMM}m2(EJUCdz*?{%|-W>mg=w>meRmH4pu5ZEdtc8)kV{*z0v#6w3?Wl1a7}3 zHlhULK`<;^uP#F_TST3=^#$<^B=zE|aJ~p|uuOpwE4VBUzsJrB24%WQLMu;%mWN`C zNvrAXcd%|uBZkCfFZkriV6mVf0AT>u=_3`D0-Is z-4$3Wi0-`&WWC^ZppOv)^l9EDZ@uVF^`$kxOl48V5>M7bjvK$dJ4GgfN= z7Gexhgnk_=Fh&Ut@c0*{vvzNr&nryBf!aZf2Wy2^fsZ(p;yg4>HtQZh^%*&?8>OQ; z9eOBOPmir2YCXdNb{&&tH#2I_m)K?Shr$l7jT(m z4y0a#;23)dhVGHn5FAbk}N_zL}=W#wB9L1 z1BYYpM>96~gSNkoMVJvjW-L0?6KYHp{&K!p6{TigE_OIjgmpa1gpS0Se)1s@xR_QD zzx}5|4q6gRiHfUrGy*vWUthV`=uPCnqvijANW!rtg#O1U5e?z|YlDFTC~9E9KJm`& zxo`Ac;#romgLZ}YT<3#0*6l=K5s@^xIaoUq>K6OMQ4%Fy(($pNN8cmkfX#sgC_lMb)OpZ>YX zqvKQ>5yygFA>O)wgC0UhhnVagxpjzYjkBTvq`(%6Np;^3)mTVL!0fOq%{s^dLNqK$ z1I|38Nd8T$)4-p#pTS$uc`UP3@(GZ-(w~XFn%*0zcD;ErAWkm0Pr^jaeAmQFD9C0g z+uV&ZTNgyU@IyYfTh1WJoxv>d5n~ViQ_-DRlOnLO{t$gsKMHj3k(d>RC>XQ>2HLO+ z-7PRfj1uOkUm|AtWkv->`7O*)ev8`e*hA0~VwOkJj1F zHDJJM^?|npK3qQ-!YE6ut|O>t4*AOfgs}?u^7a;fzX(tW%eYICl|?kI0!cU|ENJx! zkWiRxA}MY~nxidh_NF+Ncw|n3x3sF^u`I01bTeTNQ%WZA($f$~mWf0tvke$66RRb0*JjjetV7HR#W6}5d3ag%H~#yvCs2p-6Bv4HP_K$8m%Ixz+wYrh)XYA ziv@oDDog?~^^+i`rJXm;gN}Kz3Me;O&F(=_qcb-q-x0w~Srhu^*FwyWDlKRl32K1e zgKMlsTK&zQ0V%9Tw^H%8B^CIhjmGJUBi2#o< zO8}5jFHztH$v)}$wAp@Sf`wo?56pAZ*S>Xx%qQOvFg|RY_p5^^MK&+i(a5U$9XlCm zW32h`4w^7*LP_?4?S8RvHAL@%h&Nr!9!_>6`P;d z@l{YK=mq;rk6D`+J9z+q;Ax zbg7QscpZH#mOgShq))vWo~wZczLa<(jp`GlL zTX`F}zWw|+@oAvochfhk%-5vD+72D(x{owC-$^N%%mz{L#v~fZS^%qeC7c5` z8%4YbR!!A)LAz)mY^4uwXNq(_FAVc24@lg=h?A9LrsaQ; z+49q@qwm}e*1L%pI*kfLl7@Ixbni3w z>#!b`lkbL+nuI>(2KYO-I%WLS^GC;9r-0G*y#F{H&2N-D{|{b3r7S@_HyCz|S)bU7 z$p%QB3&^6;_W{KrJNS88B1W`RjlyEsV+U%FfXas#2IxIee|u4fOURso%CU?EDnV80 z`&Bd&l8uUeIywWI!TDg%Y7@>smA1=KAL{mHRd$p=ZX>~A!9f35BidRG+@_;jyMRv| zu92uo#{blHSVQarI;0xW%CFN;vi^*jyO_fPtKgnoL(8D{G*hv>AvZOI2FQRLlRifU*#Z#;$yoox5Uu%F73YKfZPan2qEz~?6Lf;5>b`gZy zBL?L+IGIJWO!7wpCaSJD57H!~A%9H}5ri(Ziqj-k1~wbcT1XOD-Fq3}Kat|oIGL%z zNt(3!H8}k_Y+j;GIdMdfm(`gVA38@2%Ia}JurWcP+gl6veEjgRDNti!r#4!y6J!yO zI-Iy*sMG`@`Vw4KWu|ph_G02n=8(M8S042K32Nn6Os~!O9&Np%zeiW6TL`Nx8%%DfxZVIn9WfTtuLXe>-(Bfz_x z9MWi)ND@s)-)nIzN|FI8zm`=VhytV?qKJR;h2SO&;Ua-t1K|s^7^X}2h%+Th{49Qx zA5dqIADAPdM!LwY66scXNk*V@TvMz;+FhO9fD&I?RpPkrvr_ED7(u`r)8&`uV3HYK z6jYNpPPwE5#4ne!3%Ud)5Hi;a1}@+&v_}rUu$M6{^g|ubMQkMCA6dqKdk6koelxK9JNW+r;S?1^e3G;66w6zDeZGm4$97F=dI!iq`c^ zzOCx<cYAlgbEKe(Mo z#{H+4GSVozH*)xc%)&+)4B;#Y)sqOL6!sW@hf-QAzJuO!VZx?Fz|9|fO}+Jdt@5m z9!M!`h!dv)Fujx0WPh3mkYKU#JG4>w2ZT^lTD2O(KhbzUgE3h*z+PVkWq(+LAPic3$|Rz~cwqR$ za|B|`Jz6q$2{%I_0e?ioK;}RB&yp~JTb%V`uvsY`mos=nr+XH}Tu^W;cuD=NzON3# zH;B>;=hF^TDM^EcIFpBy2BV04BH1{f0(QGypF@QnJfjiic*Bf&Nj zT)3alCrT|ykwh^$=}($kh)m)R>DrjQ%TX{{glV-Xj2f2~MiISQp`*23==;)N@>!l$R~egNob8A*EL^`Tt#;`o+SYIqwaivY9 zA8SmI(ej9C#-9>TMDes`8zD zml`Y%YU*}T{HlG?p;ZWI9*N$Pw0V1s;4~o!29VVme>eGP@&dpVa37 zZ8(=AVdi6to$mV;5Td^7{UEkH{L{$7n3GxwO`)Y~YCrJUKD2;ci_IMaM*sh*fcnZ_ zQNQi5^k01i6po&A)9Em}r!7hs`w0^Es6O%b;0#!WrM+K4g*}4xw|XgAvEOVW9I~=d z-$ObKSrJei?5kaSo+*Kui*35Oj|MPXo>e-G{Gm&|N}WAGqOiW;ho}~-+a9RX>Z6Md zlfK9U)P=uGDzX~gu%C_#rWmXLxMD0($D0wx99V9h%aw)HtgG7&4L&ff&pY>*aZx-NDzvkvs*@FnQJ=!m8#cO9`K(_LbdD zUnF40$^yKNWiSEWu`S+!(raFihe^;NwU=0kZ%m)K)iO2)EIqm<7_jsSv+8KQ3l0Jh zj(8{7?th&ChZig{sMF>!I)A(t6-oA{KpOo-R3rc*e~4fEeguW2&>W`^KPQsd%8g@OJ0Gm!+oQ}Si>W^23gyM4 zeI<5s|I=a%PX3eH$pz@tbGBerWbL4Sc^BY=0I8AMAxM#|fQz?pN``x(*9J)dUt;ty zj3lPilq#H8wB@wy zPDF|`Hzv=RLYB+)pk3p(8xL3HRInwhCzGx$_&3??RxnYj{9>4IRXT+)1$dCk2T_uV ztpnn#Ox=f_L_B)Dx*S1nWI6S0u%^reC2VeiN7efg-q{0Nw6f~Z{RFTpicAn{YDk^! zhae?r5!^``)pTCJhs6{l%w$rh?q%bIj-F_uf&o)@PK&5PwHi1`m*8ZRmkAAwkEr2y5v{XGQY1FgNNT1C#g;PL~2ZAS<=Mm`= z^)|knNk65lNtHk~o4?1==WuDQCGPcD0Ar;D52T3_m`M^wrj$nV{~w^y4}fw74J*RA zvY2j!4Ot8)jo1~1Df?ds0Nmk58=u> zGv)+a?{o(r;L-VvDtakzN0i&Wo+qeYSkvSiD<3St;VrluCV~3^WVP;Q>JO3rKqc5{ za#^ribNp-M*ZAOpG_xjz741W`FbyehbT*Ih%gT$y*Si-QCT_4fFWv|Kiv_0q_lv(2 z^DneE@lIPB@>qz#NsyV2tk3h=tcje(u=px)!9SjC6nGC9)+i<4f|3#-XpnUb-es%k zEK@)ZI27v=YQ7Lr#O;_?0ygfR{&{OKvzU3j%jjNSdV6K`%R=M2eY5b(-I{k6!f3q^q~*w@3u0&3LhKXC4K*n_DV;k=J2*VI86z^uo4= zE$|7kWMwZxOWw;XTloDP-2po+dc9bsAy6FhUKv<^A@OV`%*2KI<#~KgGx7ZKHSv!5 zX=YPOywq9oR>L`OWu&hYN(+|<(NesFS{?lywot1W?bvjDfOm{4pr6GsPm7sHTnOe$ zhV!x`6Z1q^h%ED7CvySTbW6!!MPmNulraCs))6R%4m@(}2(g=ny{WwWyNn`5ce7VR z7DBh=?Vd*A#>UQLnQjy+M}j6_Uug0;xAvJu#~24MLPC0#(VcjZq7Y%k@-98_dr~&1 z7tsAC!RDUg3u%u_-q2O8R%f0KcDrGp@VL|szzaW^nzAl(m+*5tbePKXP@bnh(7EL& zfIiW{E6*NEdHV9yh@b=FM;h!nc3?{NwLW&xfwI|wdc>1zjz?(v9K#dGbY3lr3h$9} zAJmUpNzNwsnajPw748l?J7Lboe)lpxleN-;$A)t@`h+zFhGp0v5EW#0RPqHZ9evw$lI{Gsj%PVa$%Z3WWPxfGj1Wl zMP$n=qFQC)#pj^QC|jJWwWzdoze%9xW*J zyU3nS`!bB0Y=^lIqBSN zkdfjxqYA~%lN~w}fba0m%`JQjkYX73opAFEr0O4!+qzL4smN@ef$kLRuz3c5_d*)} zn%S*lSnAsuVvk>uqT`W(+W{Qci}TOWf6U$)$9~vDb4BUincE)@E)+kn@Jjd2ctbZB zB_|Q<-?wqbq1y$i1pJxy&ID>dECYselDqgP7^7`?`;0+t;}}-`t(fEM{oPGEI#|O- z4w53IsC@H5<&hPu$-M?uneP%M9-s>YaEiuGK-jO zXHB-VCfiw)?W~byoG5XYW7*Ccmbux^n&e%nBL-S&mp~*5d%8RLcBhhsH(PmkOhMeJWaoy>pg1RWM22mv1q{v4S zh}qd^J%~_t_Sx{Jr$6ZIGdqqrw%RXWPkJ0)`d`{oQt@^kl}_{cP3V*Iz15uANKtc# z9D_t2*}8*N;{7_FKhmQNWh%(093dhxFWcr!D>+16Meoy(0MUPN43iPg3$VjA$zTiX356pfbjs9K<2f(G^ndQYergWe=5{ zBS6IdT3&9U;oYXHAWy7zWm?U5$Ex zqpzQutog`*!Zfw47%U(;+t#5+6p*;DQ*%&g@_1Xhb*8o`a%ZvDT}#iC2?HUFZ(9}g zQ1ZtPii#p#D{wBzHkCh)Tth zyO^;lT&NOst^1q#E_+xi^Eh8_0jF>9V$mE|Km}*-I?5%@vsva4=k%9i^O* zakxw~vQE)9Bp;%h(pH^>1Sthg_cu|&r}B;}dq-7m-vgOG58%%+)jgCrLXqKzPX ztkXG|0glPPqJtR>e6sgIHt^QHU_ylJ;r18OU7;lO<+zZT8j_>WXMhQ)B~Q2U+X ze}PqGc&lsyfZ$#vJ7h&zk3P`d?16$I)6=?v4UYf&kFamja{Kch?buPJa(TX>DCW>X z4pMjCm6ij_=|3-bl7m*ChP9o&)T+g|bMn9|DFl4(JPAZ|l$jq|f7vq}Hg5+P{QLM~ z_(M+m`s7L~Gt92mqfckh>T|0>%Sv5dA*E2*il#qXW#3mA?LWnd4F8T1MeRQC zS8Ts*qdO^zWA9+B&gS5D11`On)u{c_kw z5A|ytbB4U8{RIa(uaELKs}Q|F)~H&K(f3qWWg zYIhcVDu-{I5<1l2uu=OSPJ}sVu7-J@$04eik`joUDpS5nhf~gEa*Qb_ZWLY!Ue?;B z!->NoMPJ8TJof5bt#{7{iVuwvV;6l8Of6jP4=FK%;kP(q;}zODb|o#Lh!EVp1forG z`sX<(VK4Ioh+~bK(=*0t^m1V?V9?4-v#W+p3{Z}$3pwu~*B4Y!Vp2z4BhOy~;m6rI z6r8JijHO$bS~_*lP7be-lCmuvf5PeAN9;%1!+s=;6+W49Hy(MMh9Lg%DM1fz$GY42 zd8rM;HMmb45DFy^-B0j}?a%s@*D(-h!GXtfxw{MUwh5PWI2u@&eRE|-qQ0QY*3pZ^ z7s7Y4g~Fbc9vJb?;}3%?$_BA|W$7z0J^jcA`x2RaUdv9VF`RCu)xiru??xUx=WwFe z8i<{WrtgSJyv>2d)$C!H%A<=sXxBQO;O zXF0$+0|xE76h)oL6)?j)nF84rIAbI`nV9aOolJE z$DOqlLN&a5=_fK#Cg1*Z_EkOq@;jHz5roy9OOXDS%WxFW6A1y*tIU-sZkJu59N4a< zo_;E|@1F@G+!O^DI#v)}55B>%tJOWV!65TIblnb?oA(|x8*zp&+ws-sWV*=)N8PBS zFVyPj%PsKkiEh@>(ZjHhB@Qzlq}cFRey2`2@^}YKN_f7fm+#4Z+!7XyT6dm^oekrR;$cj95yo=sl8m3;5xpM{d0fpWjVnhhm!52 zrxMmZhr-Ej%gKXQb`i;`N`KY2<*+G#qO;BNhaL$;iGN+JVDec4Ni6qPIe8BIe9@M zEd+Y9YjD=G1kbL)A<$8-MtibraI$M~vTJb6Nr>4sIEn~!b`8#z#MO!36T2v7*WhH= z;AGd}q!}nVuPnO;hg3{<4Ni6qPIe7Wb`4H;4USyMkX?iGviFYKX@QCYewSCz&I8hEx$*#famm(-C<&G(WLhEMN;AGd} z+z|}0nZ%Yl$5tt|FeQ(ixHlv#wUW8gF1rRNy9S3^)L%&fXm$+_64E7guCi?e5y@xQ z;HZ;o)4RdAIg=uJf}T{3Mpm==|7^4wx=Qr6kIN3EgVsU;c7U%8N-5+KLTXqeOY#GX~!NG0FuEEK! z!I_7{Igy=vb!>TM-$g)dE@1bT+;n@?ZpAGuu5gWm{kXGSXj5Qow$sM;R!W!;U!Z-n zY=B6(!63T^hyA=!b`1`DGqY=OJhn0YgaiPq%3_<`hOF9p<&NSgy9P(LTyp(&b`4H; z4Ni6q&Q>DZWo0=-?5?(Fnd444sww2a9-g{VrB}_Ly?}k*PI#!rjYp=J*<{z?M9mGT z*wb0=v=B<`la1kQV;Rv^oz6 ztt}D_1{d(kIpc$8=JRMGfUYvKX|7Ry91cT3AN~;&JZSFah0pGrle*Mj;^c(5)a1z) z;T9$#$Hv4z6vQPs-(TKI8@l2zc9rLnA24Y)|iHzo))xt5!VmMX7>OWR)W$^le3*Q zP^D%+2fAE}ejpm3?W`$fJ8MW1aWa(Es@0dWoi*9cnrvrHSuOT(Q?s2l>Y{9C4d-yl z?Xov1Iex4pS6r9mifePneSW15$8dTl9=dA37FUNu>~`RB6z~Pb^=dXzlAX;MTGHp$ zlf>e;*XV88H8}Bt>>3<3VIIzZb`6fsuEEK!!TAduV61LmCS{kLdxjoYx1EpX9;wwo z)|joM1GnkuRuuW6bBS3le(E}w_Vr5Zmp_&`+gX$CtjTuPWY^$i*Wi#fzlvKR8oVBY zd=A>wCE~=50up{C7I>jtsqPmfUYg^Deu+2O#1#u)ARc)d>bM)%dbomhCway_5-ycC zPgf5>k(eO|=Bo+Ri%wf9HK`mwo!i227{fl}{J9_2ZMFG}9Q7ri_otT=b0 ziTy5Y;1R&}6SlmBG(T{qcU<#6=N}Ukb@uobk4;bX^dCOm%&{N#)?jtGry_Km+aC@t zlzS8kuF9pxs9O%m_hwXsy53O19^fo2hqqZuSY6)G4P*fnCr?w|!10S5qaU;UAV{2D zgJX)8^k%;r6;E60YYkWCG5o3-*Fo5Cs_}ZIWGsqk8W!H=|_N;AGd}pkr2& zbwTGHnXJjK!NF)r8g)H-1KeP^vTJa%YjC1maw-h5oP}d{4UTwha#x1jXCAfel60-) z#m&z{={}*$(@b)*QLF44oa`DL9gUwS{yFsmg@&NV!e5_`YrT};*)=!_P<9PYGA6qQ bC(5qD$*#fC|Cg@8+25~*e|FFMbm#v8=uS6Z literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_027_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_027_states.bin.bz2 deleted file mode 100644 index 7b51fd6b164ffc0f88bfd552eb8e808ed6b3a12c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2632 zcmZ{mT}&H?0mn%Q5by~|4CYR=Ncb|?K4IVSFpwZ=l0u3(l{m(5w^`t?gFRxmoje3t z5~l|269L<2Ooc)Tfd*q0pLu~QDY4C+Kb5BK6fFTkK6EUr_?@ictapw)0KWg#>8$@B z@ZQ_)e^pNP%?p1LwSW4DPSI!IMv$JR3k}szQk&-w%y+bj)mMt2rZkH`8dHd!tAbO= z40SJ+nx`G&9-mp7KS^O?dXl1ivf~bMy+ZafM>_fXhs8tQ^8&^wV=IBE0^9FP-( zskv8)CjI8X%bgxa_OYH_iFb8fS8Lb$8EE7YVKb+LiBo?o+nNh5##V!g4)J6nrH?~( zUy8|&8hfifE?N6W$$V4SaDjJ8GBjoB8n>Je&y?;VRy6#>G~~qtjD3YtAkK4wYIFao zXWzy5xAvJ!fB!CVL(ry{#p(`@n%ehSYY8Vou7$=TrC3|nk^r9MFqm;NV+>7AU8VdC zeYWQ43ZYQ(Na%FbX_@=X?u)b6H z1~W(CW_>1nsl27A#6+=kd4+m8JL(vX6hSBSpCcMwlkkqPDZ+bc8E!uReQaO*Z~l)L zPkh3=y!wUoWPm8X_w%OqaAq^qSD=p;&n{{(hL(pnT2FkqsNGPe;Xya6P8K}LPy6u2 zaC4ggGP@JPw)YjI*H&H~p6yhVDo3dABde2xG4=L1{tSErAiF!(`yHPgNgawSOK-SafOM<50XA4u+z#qC8#=O|2l*NcpNjV>vM1m4}EzuS2=(`;y-ixz?V1FP|o=Ay;j!NAtRNKtrsulMGTks1{>LXc+IEaT^aPgv@+ z@3#|=%lLU!)1fpuz0@mf|EgTLCgax+Jqu@|67M;o=~!lKuQ48mE#AcXEt7@XoX@oGws|xbaEtoc}$0=XTyJu3ryF z-$1iw7qIOyVr$Zxz6YC+%(O+tN-`?8UUEm7K40;CUtgqjKUIBv)#O}XX75XF08+qM z(RS+77KQ&~=x|(5oEe8T89Zk8dw9HJBcl(Ux8K^UwONovzoz>;NZl|ts9WLIi zF!zHRR)io9_kD1~(}36pgirg)WMKokVHmB`8zjkz_pvolA4h|0z*BSF{P04AYX0@{o*Cof3hv>WHTv>g)D)mox5z^fGC>KWaPAr}_N z4Zs?(gsvR%m&LLcU*7yI++{>A5>gmP0R}`t{|d~@7vZi_S|47<{Bc55I#aFZ{8C5GRJ|k|4n#l?EZ1&@uGl~WUjWKk8!QhwSL{S81vbEV0$ucCR{kMs zAs6BS3lJWnNfZ-b74lEwxz$0}aiW5~5CK%B=H&5Y&Qv2l>62XU0x?~c1!#*Xr&gZGt_NPp@P)P-O?BMIDL)0c7w7CM39^H5IV{qr)&gH zcDywK#psC%LI7$4XxJbO#&uJ)JpzM+J24JjXBva^tc|DwmLYk!oa+FpQ@*DvsR&Y2 z!I`)GCPf|K76*3M7G7kjEnPge26$5+0EvFHKR!bxILy#!(hzk|0dm*+4b+dpg51_I z5?8)?J!B-Qp!y2D6^naHF%C$goD@*cxCD4U-6ks0%XLm(+GjG!BVuR#>RZb~4G`eJ z9RX)RZ9+|#x|4ziey)-VGH9?XiDJ}RMYp;GCOue?z|oYSL1@xzs0(@e31jTxZ$&8J zT>^Bp4u}Q)0zE{!B*Dan#55RVT>$1+Wed97AU%gTM3_e<(2b9K2(!silNxL;nLExn zQ!7x;9!cxT-}BvUWV#BNw;p0UyS^-SMyg;5OSGNzFQC?%;bUV+^XVrF-^t`6_!)t6Ip{hD*MX(&|QM0`f}I^AApewUV^`!;l$s_u2V6t0ipCs wlqCD*5ua6K0J-VW1>S?~s6VxKncBHG^HsTR=+NVbvR}%~t&JBZ|N9*O14w&%>Hq)$ diff --git a/client/resources/hardnested_tables/bitflip_0_027_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_027_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b1816f47ea5a89ff5a14076ddc4019d70f6b3d80 GIT binary patch literal 27144 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 C#r=H% literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_029_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_029_states.bin.bz2 deleted file mode 100644 index b5555669281a061aa00ffa30d77d5ec7ef037a8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2402 zcmaJ?`BPH|0!ArN;SEBTrF+4hjnZh5G`#jg&M7Z)U`XaGyBtiKYZW! z2Ykn|KfNvF9aXTZ6!(vOvKe*y%x^EgsQIEIwL0l!YSL>-Q7Klbw4x#@D(Z67TX&bz zilTl;^xA*qf2ird{{NV)!xTqwR11usi;(q?A9mjQm$SlYk$)Ic&nGPTbzgO)0cd-iQGB$_?hC1TGZ`XUeS$vS`viiEcuQhF<-{-A7S3`MDRgl>!SDU-n%R4Sc_{?R|p5yTd!Ry7rcJ$^QNK2Kr}& zVaEe+!?Liqe&D;Sn+18ICEbkj=ls0)TGK)0%6`9G*kPib*2pam;AWo<*mHG zJkM|Y^sz1v zyIVK6w37z5b*<$ycmoV({Wc33AF?U;HZ#Rwt7y6Ce(G+~#B0*_GuzD0@s+C&HT852HN4G4i-&0mEBxTi%q#radX`{_ub#r z9Oee69qO7$ZU3m_tmy~k)i&zSEkiGd`!HMb(RvSH~d!eWywJlmlukqeh;oz ze(_?!ex70B6r$oeU)s^Ww4{3p(J{aD6(88RaBk`1>qWON)(~|(N7xaXpRMS#<Gv;T8qSa)!hC>7NEgE+mDZ_j8;j))I? zU~BLtqTW*6}vzFRFYw0hh4S`hg0PPPm!uA(#KnfBN;1$742Kb0I1DR_*yE+ zXL|BwaqF`3Opdkh@ra?Pw}bB34LoHp%{J}^HYJ^7gE5Vg3&9Oku9@2Y7c1`rAvj=m z^-36tlGp~6dy5M3Q=J_?`p4x>f)&9j+9SaNpwTMU%Pi&~T+_W2B5Gw2GA5zwWyt92 zSPe_+lYF!zxpzC~=|FIsIT69PzhWCEBW;WVW(@mFR0yAq`{)U_(#)Q|d}sfS{x*g^ z7k4;uo1*>0gr_}+A)rw( z?O2Sh)s`owv(y0_efm_QB%Q8Bnp}(NfKL8ArN)&i=d%=$-=#l+%W)hWg2~e;F{$8U z@V0rlF;T`6%PR3|zq~`OzT!Q4iKra?Y~)Hu>j}I(%UT?Bo{o$X6#v8yG3ECTMzheh z0p3Dps!a@VRj3JItlC|B=i=tBi)taKCZGwJVvqZ@)elpDIf139hSw_t2|t#`t#-dK z1LoO{PCr4|j?7dyApKl;Y}8`)NA$eRz?ZV)G~SbJ=o&11Fug1q8vf7$&LI?ht%?svxL ziCV;25|5SumOiUv3WKgas>_GUpQ70CIl&U#sJQ*!j8bWH`qY*rfLAjQaJ7g(`o)-BsP7cmf-#PtfHEZMB4 zKb(8Wk7Ll9o9j#v>9vVgBJ$g>*1Wl##^AHK?kr2@>mN6C(Suq|7iI9$4u`rgy;zL!?D5nRD_nudW08QwdY|GcULn{VtRXm#*W1&3`tCNU#X7fa9 z6Q|5$t#Z+&^CZPv`RJrO4e5%76Jh~3K%fPOTBz}1J(s}Mb6RYFI>85RZ#~o9rjuih z({;WaJ>d6(1i7errqIk}=^7qnZ=pmZk

    I;EhrlKp<W1i8@zrNPoMc%ATx;)6c=Wcmt&_!FAp=|Gw40*ylSk z{@S&T?BMYk8mEh>&ABjd_Nvl2i2`d6kE*i0hopLC38r{ds#f)@%QK9nM$d%YmW6VN sw9MG(J@QG2CL;Fw4!BcX-Q4+FT9qleD?09__kLe_%Ar3dy^(+9-#zUu3IG5A diff --git a/client/resources/hardnested_tables/bitflip_0_029_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_029_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c5599605a5544e38ef81ef8acd870fcf107c39e6 GIT binary patch literal 27204 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 O{}*yaI8cx`0uTmV1eR3* diff --git a/client/resources/hardnested_tables/bitflip_0_02b_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_02b_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..d0906edb9e6e365542178b40e15a5df4d0031fd4 GIT binary patch literal 15338 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_02d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_02d_states.bin.bz2 deleted file mode 100644 index 54170b83b35031af02b477d6a26d694d3528b39f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3826 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 aF7s=|nY_g2^WPuc@(tWNa`m&RWB&_8CrQ5m diff --git a/client/resources/hardnested_tables/bitflip_0_02d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_02d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..3c1e1727b5c496fb033f6aa9b9ec805e7c97fdff GIT binary patch literal 35762 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_02f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_02f_states.bin.bz2 deleted file mode 100644 index e20b10f3d944a193fa743956d646b035b01a5634..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1660 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 diff --git a/client/resources/hardnested_tables/bitflip_0_034_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_034_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f6270b397614828b9959c302670673a721533649 GIT binary patch literal 21179 zcmeHPeT)@X6+iR7cG#Ua2Npt~Z

    XUAL6wOF$&F$}|eaupn8nt_9oIvY?h_vxx*N z7PxIzEGQk5rTc@7)6Z!qbIZEQN)@N}r z$10&$V#K%o9`Z4JKum5{V>H#DGkaUpw!GiODFvR z&?mmjit8{!*Z{f{=K)uc%4proxCVR2fLupJ5>$6!>IU%iD}Z#58Ha-|kh_~zCc#v{ zTF^Tk35rvIF|T#TSIyXY4i^|chcQqFc^DB5DnSL^W`I^f6anLLHHIeSE2n#mv=|OC z4EVofnuRfep%H%_0FZx(&^AZ@6LIpjvH-$TFn2mrtNtoeSJBu@oljjbsvB8t20@q@ zbbCEuaSlSAm^|Wha%3Q$?gnGSRTRxkNe=g4huI+Hff{W8$n;>nn8(dkhEQVld%|Mc zR~ZrU*@(x|IjvJni?p5twY2*V%x>YFizlm$)i4!0x&crKTUA)VT-F0kPakC}%J_E- zEPuOrGH6p(le=jDEQkHC`|u&EU&Ay_PXpPdvHitEAHXbNKr9@eDNTcr>3G#N?{bjd zB0f)0~9Au+JR%4rcBY%#3^L zSB-VGz-e&y2&ZTUtB=k1ikrOfDzV7+`n?r07)BRuLVGnWa=<@!Ng0Rg}6YO4G0R`;Hj{%%qqbVB1q^uQ=U{@ zT&-vp|5(qodMyWcLRRM!*oR&q?gjiBVw!H~!_Y(hm=KynCZo4Awau;tYyoAj)e8JCxR>dXmtFdy>k{vM zc!DR1WABgL7qEF8ic3LVX~`}KS84o?qoztfF3`4s?|+;5O;9o{?To}Yb9tvQLp=mY z;N(7Sm@L^e0F9&CeHC&4g(2{>!ZLW#p9L*rzA^Utb)!ybdltkA4DI;qBz*ssiUA1r zqOGr2VGT;x0%k-rKb*{($sfQV1hXOcYvIrZvP2~ z6D9uN2DkQ}VYOD`e=n;e5=L4vdSj$y*QDsfFG>}Y7OQ_U4)0Pd8s2meB_kA!QY;P; zf^!DtD2hcyG4Wxfwj?}onua9@bT?D8$t0e>)9?l}E%9cI8%f0&w~FYGAojo^^UpBV z;#vreY;dMe@Iu+FCwY78Of2-GShyGyBJPYQ{JqkJDUg<^men<@fbDA5&NdFX1^ZE^ zuBsFhD3~(81&?=>O$g!7|2S}jQ@AjFWP7dOM#|bUM*6`icq-yVx36GFc_3>_gnFDv zBW1z#M7h-XqcKKD^o zjx7lDYv$VO(N>Re47jSem#rQ@g6c7gFo%-RTZSz{^ZSOoW~xC+=lul%Z{<}N@O;(4 z;ciq|AM9=!{f^TdOy0!m;jVK2iGum4Z=b{8AOScBm>P&x!#1Yh;r7z`5)udW&{7_Z z8{A)@2Dsr-sWeg2R&IMPDKw+Im7g=cAy=dNdkEF*9we(TY-M`uw5wKnCp6E~S)>d~ z-Nai_fDF+jlm|0ewSk-V*`WV43XBhUpYp2V`pp`2cf$WM4Oia zz)V-XD~TG$ltK_HkK2~3sw+8s-jrF1^oM=h14Tohwjo(*3K?g^7wT!-khBd++mPIC z?gUSnoDaXS4auMsB4m5gHY9CB(l#Wk>PXv=G!0MNkhBd+cm>+{<<6?f8>#U=%C-$j z`#9S^&b|VVvu#7ttlf#8z}SYQZAgwzWVRuR^nSTzlC~ik-6-Qhwp}6FjaIu|AsHD2 zz8}DIBs@-t7xLK^lJQ-FT_I^#NX9;5S4iTyqFo^=E7{~@S4e8RLej2~M9E!Qt7un9 z%DXjoh2*I9&=M@|`!)9c8d+I>>llll{*NDL+lHiVNZJ*W@~)lq4eScZ@xHfh8U& tgOvV3hHXgNhGewp)mD#JclBr+lC~jf87P1k+D?!UfIL+}6q literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_03c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_03c_states.bin.bz2 deleted file mode 100644 index 1a354ec8a441b7e60d1c5d2e50c2669d27a52b6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 924 zcmV;N17rL`T4*^jL0KkKS^H&50{{?Y|Ihksz6}T{7y=8hu#BJp1CT>&00IjT0D%f9 z1E}B!UjP6A`Tzg`06BmHWWWMpFiatUBLE!00Wx3#FqkF~z!88BU;vpg0GLb@2w(`n z2QUCkm;g*B34|~NU;!#oh&0d!fMPNlG8zV$hD|aBB`88BQ^`FVnrZ1YG|`A?(?-%^ z8I<Ji*3uwGKUWrOvGA&M}a1v-+3BNZ?f0g8%w2XJ1Z;XWYpk5N4Z z@0XCT09+#hV!Iv#7-4*c=`Rs=Db(;U7{}5t0w;(%mtgK8!-sJmvll}QaQg#?Lmdl) z9e}$SdV4h&b7+8t!7l>l_ig2+%5$hhY^N%>} zQ|b&S&^_Y}FnEQE{|DASqp3QR$~Z58@G)WblgwU0i_BabW+P7{LmpBayUzd>{_V5JPe zDhvQ$0F)3u1+YUPXapo5Kv;W4<}YdY9|(BLdQZUdp2Ml|j85~10r{Aops(CZg-#WC z%jOrvUlD%t#ojLQbD?(=mw32c3%p!9mtyQVE`q}y3xgLz>Nrk^L;eU11&Ms+U-ZH; zFj!b7BNbfR2Vze-jv3QgFB~0-jR3j98d4SQ8MZi0 z4```k!A1NqsaFaTsqvN+N>(lrR9ImpMl2}C3am+lm4L)bv5Jvkj1hujMkR@fh%6={ zfr&8-5@Hyu5@4{F1|qS9V*;@l5@Cs0m@F(X7!wl}V!&enVqsy7Mii`A7>p@lg0W&^ y!ZBe?U|3*cVv5EIVTD-1STT$i7zP*^Sh0m+hA^bV5}3u0{x0N-aG@dg%9IAJmVe&> diff --git a/client/resources/hardnested_tables/bitflip_0_03c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_03c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f89025de1721dd08cc4d4e0f3269d2f64ecf6811 GIT binary patch literal 15502 zcmeHOeQZ=k5T8fyuGjYZ1}v6RXs>}%jYS~{NQ98HiczU8;s*vRG^8RLL1IKqFtSyH zNU)N|K%+)$jNuOj3GoXNt@sh61pUj4F#!V+(eSARjVR-9_uajFcU&t?3i!vqSTo%zkq^))o==8CqZ+g3~?S{j`rBuQ~-oc>4<;)FAjsh~5qx`=D&2Bzp*?jaXMm=KkJm?AB#!jNX@ zeBB`(TCUTqLXBvkJF?f4UIs&^(oy)TtU~WvR+SaFqdijOc~-^cPyjq564sI&WL40@ z6c$mK|2xyA5M5tKKvK&pG7Kw<9A&D|z1>U+eaCeoo~)q-ypKY>q{IQ!dQHO|rJ;~| zj8U!2s76yj{<>aGUnNju4^!b`sIlKLzt5OhkF8-x@4zuml-DtpPK60q!3-f*!!HLB zK0^+;O~f>Kg4RGza!*KWx6|E+&d3aJIykJrYOrSvibj_iQgjw!<@r!4WDMAxQc2`7 zrb>}Qm#}8#S6Ub-e~}0b9m6z{Co*O+b^%?@cEjYLroKmWT8KVFJOoU%Om8raU7RtO z8GC_g;%7!@^N2-_5P$e`iyY>}xLT%q!QAfU*pnGBLWH-(YvFY8t7@i6G0!c+(9RR^ zR%ix4h{+O2wK>4eEYkpq%CXQcaDwg?;P|Dqf*hWj-tLq<+N3lTpQ!9MqWS$IP;9cu zJXSL!xhn*yGt>FcVMr2 zWzdfSIHl)%Q0__WmZ#VRZFGY)KC8d}Yr!F`whH!qCBo)?e_C$i8(1F%&d1>YVtVZ? zB7iOs&x`(S5k56L{|G!dYeMkhY0dHg_yaS4c!gOf;6)QCU1W z3q2Yu6IAUEhA$P|5B_kL@JAJ&U%#T%4JzS8B>}T0OtDCPBv*Ysq@F- zv6o<%48~~7GEAAa_UK%{0-OPd%CkVq=j1hh=AMN>nDHLM0I|+MOSu@E39yK2w9`&= zOe0_J^&Hb&^wqGsO+!Z~s~y(+tYd4s&yWr%ALoZ2-oPsNw{x+9jafD}^Z$Tg=A^{n_czQ}) zWJ^J^Dy?AE087`HnIdIOU3;0w%zW}0D{PF5~X37RQF#!H~c04c*g06T}Y%zOL= z&2a?AM-L7osVkj3sV&`e3b_+jGP!eev)hHE20^U>PM@DM?S`~x_`*pDhmXyiHgm$M z2QqU`WIBY<{1r#S^w~6jv|UyhMnZ@IuM*CAjW?{ivgup}+;^--xB!H&&m!oK_lb{b zpg7BWBh#8XR?h&@X8VxZ`~|DV>8$4J^bHIQr%pvEuku|fj5Sz_YGFM9FAv13Z~$Uy zAa&3(jbhb~jM>NO^IP{A4u5Arnl49j4@KKqy^TW-fiI3L+i-H(hV#w`#y53U+JlVy zpAS1FJ2G^P#riXG>xv4s+Y%CIzaj8qGbl$~w=kFjoTiOWS61_uEK0R~YA2L=WX2gW}ooGi=^K*W?4%Ix@x zRaMl)R&B1TQ|L!EFOO5oElr-2Rvz+Mu}0;PkLN+H5WfdPg$fgsS~+cAc`VfnRpeUB zs2;?r=Akk(L~GSamdURQJ)1lmlDsPYURo^knKb3qWTr`3zA6_aJy)7c<}_8AzhJV; zQdzcOq()eQml|S2tH7Gpt Cew&K` diff --git a/client/resources/hardnested_tables/bitflip_0_040_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_040_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..016ecfe67461561c6ebaf7087b6c1f051ef62fd9 GIT binary patch literal 15230 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 F{{S7z=AQrn diff --git a/client/resources/hardnested_tables/bitflip_0_04c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_04c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0ee52357e10e89099011e21ca1f3769576aa924d GIT binary patch literal 21042 zcmeI4e{7Xk8ONXZ_TJl4Zr`UXZPyj(y+J_KItr|V=rC8^@FqZqgw2K&Q)f4((oGRI z+(meuj>N6FUuIS%6Jw?(YJz5&u%TXwe=HeW_(O@y&^3{aWf6wDn2C(D&w1bbqqi$9 zjU{Sw-lTos`<`>2bI$j9&i8rFx#!&YytQoupFfmdFS4Vz>0e^<#*<|^ldBW;BoS{H zf1YSouJGGL12M+zNaq8Ym(B&UC6%*Dwf4oJO3avVXrsin%S&lSJj&Orct1>t|2SUSD(}YT?b4->;bxByI+XgP95>lha^81NkZ6{ zsFq%*o&hDANLH>|pd)wJYL%uNEPQVk`)15NAQfhqALr?3ln6Br22D0sDl8BDC2-6h zvMdA=vNqG%P*yC$^rS7s^$?Qi#UehZuD88yh_DM~@$X*Jeiwlpy{e5Y=WP7}ip^_D zKHCghbLce5U$+(+nWYX(OX_xy_x&M;do7uZr`-wuQhc`hF;9cd36))x6>~?3*!RmCdc+T!5q?yqeiJX>LYCRCh2h&M zw9P_akS03&ewAkpZNe^%hIN)qdn7b%OtI#aN`uu~ARiiq<`6L4hp?M8NOt=N#D5ia zA|_T;(AJWP1aWI31AY&qwV|Cy+RwlYRQ4Ei7yUb4Hi55dwsj6YJf6;Fy|pD9xPn>$ zsaj{K9z`s*_C?dbqOx$X{unx7U}mKuofGdPBrQ*yKxR|l;wnA1YA_>3UX!tQ0(AYz z_;pFIAB=kNVkFv*$OMh5`(9*W0a-6{J+5-pCVhbtaizZq+5pf=?f_jL5L6HYwirNQ zEkdjYk#_+8LeO((Bx`41qz4=5N{*5nz!F$2k2RvmTCq~CyL`z^ah zy&v3jTps+-Dhk+zS@*o>!T`lExNe2$oQKBLXN>254zS zVWW%udlGeh8~Q;@-!;Ef+0Da23jg>WC|HRY|3UL7m8XnBZSBDLoquxoRgQg8rBJD~ zuDXR4jDZkz?<%(lL#(S1LUR=%U^e(VLH|{xAhn5fE+aKlVTP^>GjyJyZ5L1xje2Qw zIPQY@J}dEgxa)kG^@5t6A@gRvBI^|$Y>&!yjHM!5V2#8ImJRofA`BZoyou-{_5T(n z{a)o9W@cj$ztMw>Kb0&p`uPHbZ`q7XZwR zF~b_X7mM=Y#VWmL2j)yc<$+gG`KpPWLC!2kQ#b1rj6hPSY4Yr}ncNCSik1!$MUD^G z^wZD`g3!;r4n=M*j|PIClpS9-Yzr?uK%3cQ--g%M7;FqsoP&Ipr1rHceKuhSPQ!vj zOay?&yjU52HqHq>Gj@AVDbBG3H=ehExi+4#t%C_Sl$oD_ox#lVD!(}p5+x&Y;|mdG zs?CkV7(m@&YDo{izEfBW1&6c6_)H(uI)3KmWB5@+FnO!tSq4$a%>^lBgtU0}Uo#tZ!5? zUl06Maw5~fd@7F;g- zG}zAc>%t{Zcydf1UI}|cDDM&4jPc@yFzsXr=qHO226O4448VW*uqq6|K=5kAzl+aN zzooL3F87Aj{e4tqWnb6{DiK-#6JawM-C-bfuLe(+3|r+8IB&$W9|Gs6%X0uGP=zBZ zhc9pkeCa0KZ;m1YxAGWb?N%P$%Ht4oaJ#7PRvz8T{cG#%A;F(wBK;O?p7Y%%476BwOe^~UtWhZuFAj1-Iv$y%j;?T^4hIDR`1i9uJ2mh z%A;F(bSsZ;&!gM(c*);eyFHI#kmvS1vgyO^d31Xo-JVCc=kfBMOYq#DN4Mv(va;g# zJc5PW^B5V#P;qlETcF*snFtcM^5~AuOy98?xAN##9*?WIJ&zH&x;>8^*l?$<-Dzuf z9J|xjV-MK5)7G4C7>StD{-A(6ZS785+k=u-I|?}~;7(gJMke?j26x&zIz+c?gx8{lwfZUvL;NB;eN2^|N94f+{&X{d2}m} VWnR0CD~~(Zg|!IRk`MO{z71!dD=Gj0 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_051_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_051_states.bin.bz2 deleted file mode 100644 index 3c889d07cc75ba1944dcf73cce55cd0da73b48dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2568 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 Lc(o)tu)XYm{7RK; diff --git a/client/resources/hardnested_tables/bitflip_0_051_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_051_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ae0d8a050b71752132a01705a60b2ce4f114870d GIT binary patch literal 28974 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_053_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_053_states.bin.bz2 deleted file mode 100644 index 751724d3d866193c6811d7a55f2d58155109fa41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1356 zcmV-S1+)4>T4*^jL0KkKS*>MckN^}4|Np~X9UbwXuQ>>~;~$8Tz#qUJRS|$4T?hbx z062g_?1|tBzW@LL000000005QKmarv4FQ4xXlbTEG&E_D0}wO-aL@n^27^FgfEpTU zkPQtQWB|ks030*`13{qB7$63Qnq&h*MwtLH13(82007WvGzJI(p{AJt(9xzq3_#EU z!$1Hu8Vv!00BC8ZKr}RIkOL4j02GxG0!)dTDY9t?r=%K6yXP=9YzmGekJre6QNjO!Qe3b z4#CyY_uusDb~{E#z-BSPz2W#qFGX@PN5F@W9G;jsDp+KfsFld9j2FJX!!yi%voEf@ z0q+cs(7Ro%&v}j&!}1(B9Y<09?t_JQrXKnE9m}ab)2dzxm&Cd+%01UcW1`2PA8_E8 z0&pfrX?sl1@m_Sv&<90T!e1+d;W{tUW&0eLd;>MB3 zJ>l*ghm2jR-d)CC`D8q6m5T|&#p5p!c83M(FI|4~qU;Xy4&xR%SmZKZAn05UjAH+T zp>XJQP97qj$$U!&OvWDp^BkNn&Yv1`y0WtRix^>+84swuqx{dR_gS4$`JbryU89rC zcZ0F`&JF`Fp?zb3_89vsE*@8j!}GuO!`MYXSGxK~rxiQh73)*>Kc>f1$wDb$Pe1oHhjIwYX6R`G|`Yukz!1o_$UtLcHn7DBJ z#U7yX6RIoK9IEk?10{)mwev0xrTpq-#lkXUEKJ4JFpQ3=)qkq}FO}Yf-Yc+q)$co= z1b8LYaIcKze5OuNyo$Y1h8>1j%PtNKj)BNOsgyA#n=due1Z zC}Bn&33;AJkY$%qPmJa19#ZNu`QEd=JP#W323b8f z&~S7~)qU5_@}Gt6zK8q1XL;ZrGbUUl;futaj#CUdRdVE>PdeW_vDj1B9jhEJ6^2$> zn916*xHudPBABl?2wWt{RK;agVPd70P%M>Ul*$ZK6-y*!Rgr?GNXZseWlUL8)J90e z%4&=mOw3F&OktHWm6lAH!enBsS&@Ze$g->|%*Mrv%Sgr;$}AX6875372BBuDV+=7F zG(m={88WOH85mfm2+XC7rVOF07P3*9lNJ^rv4%4;OfY4cF*2}>VOYVHg3K|IV=EXF z7|bRzOtM(TR!lL4hC*gc%2O;xF^r^TlCvu^V;N&GLoiIj#tE3S48kTbt1^`tj4?|e O{x0N-aG@bu%E=&1w`zX? diff --git a/client/resources/hardnested_tables/bitflip_0_053_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_053_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a1d8359ae4fe59bcb9690720bf9c4d9affad6263 GIT binary patch literal 16061 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_055_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_055_states.bin.bz2 deleted file mode 100644 index 1cf3f2ad935916102ba1f429ad761ae628fdd45e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5503 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 diff --git a/client/resources/hardnested_tables/bitflip_0_055_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_055_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a7e1e35228da266368e48e1c7eadb92563388885 GIT binary patch literal 35521 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 diff --git a/client/resources/hardnested_tables/bitflip_0_057_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_057_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..525db3d7ef091d08359b0e070a268210ddbc355b GIT binary patch literal 21878 zcmeI4e{ft^b;r+JY2~%Nx<`&gP%QZu4vCE|OG(5S$C0%mv^154th8lnjANxSIL30~ zbW)s&1m<%`{Ug6<9p9N_q@BRep64=rtObk`zInBZ+r78@sZSA&~-8| zZ@K-IdeKPcw%JWqV|k|@kOq~=dtXa!UZ|01efV5T-7MP7R>^ojs*>$#>pCelyHu)a z?|)(aUWD9!Yp_ox*Up2#lZO5(o@lb%2-(f`)}&pf(ff6j6(pkbOo&^}0`EID&Mbs_ zoLy0>j%!-2&zd&xC9{>nIMbt21N8>)VaYw9an*d4CS%1nYMcw))%yWsl5w`d=DjNC z`Xd_G91lZ#kF2$!U9Ept7`QDF{zXXlCOqF0${(UP)M1V5CS!Da`N`jCJW;caVmj5r zQ^Li9;|Kf<_9?QBPsebH?-xuMrxlI*Qi($IV11LZ>a1 z`LChQkJ8|2l`e$NjaEeUeup(PHK3RJ{VH>iw%r(Jm^$NOu|3$eC($u_4cd4&LMIh` zUg83j7%ldBjc;I-EX7Z$%nEJZtMN+8X87F*c&o}~tH<|F$jo)}F_o6b%Y8!Wc`D6M zs(kKfLeRrugPAI@_zNdZDtT1&#)Jf)aNO6$AkU(dHkA(ael-mY(U($;30%_l-xEcw zuJp8tdKg__G%*2A62WdlLKjF{D?`+so#%&wcd@@oZz^d^Xz_(P2R(Q_eiPzQUl-qqo)otvWX- zJlq1I1}(@FnEwhV836T7IGXKnHBx=tC|B(XpV%qapv9<1>t%x>_-zzG{uID;FGFS< z)4a&o#YXc`apqQyXZ;bV_a6dx-aiiutyBbeb(K5uK9%cMxnYKR&km}pps>pA{s2-? z3LlxfbhjuXtk8B7BZK0q??47cofjDc;OY8}Xz^a7TGdH4(9iN$=lugJ7eF#kX~f8R zT%9Rm7mr^pc@w`N6k&nl;`yk+Gs(}#Rt3K-@V|=Bf^@s0>1iSGUI`O^pJ@+}7mTM4 zWRz=kC_4*&wsOA+ue-vmwIW3yozG*>NR%sOb9$fg|hA2{C2{Pezu z`G9yG{)oAldg;?b6|-&zv#uER;$^{m4G_RV`ctObW5&`+1}+&@2L(hlp{CmBU5pmr z@I40dEm*+ZOgxiuGmP*y6qwt?2n`z7&ShTiG^a5@;X@_uzHDx?W*fz*uh#pSFbcyF zT92!*F+}9W<+g=WKNcX6SGgtT6XG88LXpnF!zHm#HXv%ddl(UybuDfVvO+n={Zhm3OT-me(ME zac^Q-L;WFb%!hf$e9o=X!I^)}w?8zFOsIwa9Ol85Fwlgk5v^K$&TtUf@>N7oKvceR zTAYOd`6soA!Q$u(IMSnG%q!vXK1B6Ez^nvE2y=zi;kTgxoy%c%X`jjvwQqr&UUYRU z-#r01tkyeSOs@_Af4~2ji>qk5)wNgYaP>ls^IM(SxZ2Pb=Zu<4+3?zpH23O#-lP18&`IDjV9pTevOrVg1LLQcKez#TROt$QP zYaX5(_NbiGW!22$z~Su_nCa2rhgIIH++uSJZcKetGFFp+4^&6TpzsQ|K})ulv z2-{d)7uxvKdA#7|5H!vLlZ$O;WqJ%CnYk>#txVC1+q*vS`hd#pUK=>9!E^eIeuO+V z8(e#&!`7|Edp;XrIruaed==7Vf0DSe0E;}j#K!|6+!UT{Cy$597+a92<%w~qzSs#6 zY+b1%0=AYi&m;2+m#7S!r}DRc7-xjWs}1ZQ;rk%tjp|6UP_<}$GwkHCLou3

    N2!S z+yf)61HeP*%jrFC+zp_lE)f^eJ8W%I+X4+r(V_ItLOQ*si5aZGe*E|skyuZYM1rPi z(oT|t&=cu8{Q!wqq_0?{7)Mm+GFiisV8~Dopr61XDJ8EAVlPpCGzFly>PALhH!)j- zYot|RayLSB>uQE==y0i1oKOHI>6Dv|C(K$f-gIg}KN6ne@0kXaJiz3>&@9NF>YKKy z5f72#37l8Fpix7|+D8_z0E>E$WB`lF&7b!OG5;hQj1E6ulZKmqla(7XdMoTEvKGTj z4%gLFm89s@$pIjREND}SMf@Rq-vj7kEEvXsJvNDwFB|qLd2&Do;c_Plbq6n$psD0r z<FfP!d2gZT71CkBc}JX{I+r|>lwD8qsvb4*Kv5Y7fOH8v zO^cJ8THzL@fP-NO>VvV>1Zkt_&=z%Tv(PzfxkPZuLcNivWR+z3`{?V~Sg|8AEL0D1rB|jy)!^pkVLWb~b$_n$){o(OPd@|E~=lM{4QHt(FQstA)mO@}afoDVE?Obl}8Q^PP zdSg_{%;k62nX;NUUBRHV3(V9tgBWRTUkRVYIuCNivjYSoX zLwF;=#`z)b~qtO5H58Dq}L&07KzPZmV3X0F{DJ2-Ij?f+*6ZGxI~byAl7g zPVAGLKsOCoyd&`yNA_&4dsR!((<%VfuSoRFqm*a>J;oorYW%>yP0tYNDm;9urv;6M&rT0 zm3ux}Rlo{<%kE=w(_m_QG6Ov1vC6nQB~Nau-HV4gFlqNY@qnB3XsgY_bi#~ZKOC!M zDiJq6EDGICe{vJu(aNKh{7o}hzrS8NotaBaY$ZSM_TTmU@BmGJdM?+r%kER!b)=^h zxcUhkhJ7eGDXN5b@0g&uWI#+jJdvs!9+|I9SW;Z8hyw() zVAR2r39RBsg2-ogShBR%}ipLel)zRaf;Qg_uk5Kem4YZ z6v8Cxxj+_g-|sxUlx?iDWkz;qd1pr)CTWMAeN2MMHMrwwwLRh|ZBC5pPNF@{llhB> zN5Zbph4)Qw&-jCF#V53w^2vmkAuU8d=D%v_F_j!U`L92y{{wiYEJy$V diff --git a/client/resources/hardnested_tables/bitflip_0_077_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_077_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..4e9d451b5d965d85118dbc277642ee5edccdf55c GIT binary patch literal 28775 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 diff --git a/client/resources/hardnested_tables/bitflip_0_079_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_079_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..3b71ddcd2e6aa574949dc151c1dadd1ccb5a992d GIT binary patch literal 27204 zcmeI4dwf*YoxsnXS0(1kjs=>y74>jDQg$(u%5bP@4mhJ_)VR>cVAMa`=~*C z_w`YFj7oaS_-fo>Ykk$zD9>6O89aN->8h;%>@7((c<(;tjTp3Ghp+gv+GJJv-~~IB zS5Bu9Mn$ZBz$*^zF*5iIy>-ij6iEUYS{@2Iwlf#~3>$EsZL-eNq*1 zVDOb2&ST(4x@2W2ZF}gfmsV-UuQw`vr^&0jL=|nkl30R)qVsenVKQonQOQ;O*$*gv zZytBn)*6+V&uAkUH?KUSdW>_=zwdzMzL&ip*sYyuREEoDeX;T5qjXl*cZPn7pTr=e zdjFg8Bh$=gW%!+KRMne|`7cIwvx7`N-DLdeA^`0PNJC9F`Zygbjf(%$s9GAOtt~Nr zYJyv<@2xhffu-9~4D}8G$@K$9rE0kEXH=grgPIGB8fGm(X60Y`l=9>(qiSxHXAxGj zrYz3zjSeAdq%?U=7BbAJv*l(Lvq8X&{W&YB){}&+HAW4(gxe{y_?=p4SS4-04bAx3 zWA-#&4A>A;-@{)ZJ8})(-qn7DrJhDlYnPa8pK7jt=DH{TF6c_{Ye9ekn)TrK8rPJE zut1#F%_{}z?-i!AcD~@ED$Dh!)j5tAJ{@HmY9PQrmB`-_`zXyJUSgr~ubU1p&M|7S)h2%f z$n;8#%H649o}Eeth?^Ew&MZrex_7)$CD1TF7ru=qW%3-0Kp=8PRoFbZsL{LN{Ag1u z2>|6yW}S+POhmNL^wF*Kf10_M3&u|M{t6L&&~H)QgC;9p47V9(?)2(|5Dqw4AWuX9YUq)u?AhqJ=zkl+@iXRb7b8RFkI z>bTu3V-ah;!1�)C;ak{>0=^9je(r=p;ooGgcoUtg;QvITVQK5n(}zz6^V{aSUxi zXV1|rjuGNb`W!*vRL8d^h(bgFTnr!h0P&B79@c&hKx-LqtGQYF^#L8QJ)a7o&MKyA zENSCHINFT@Gp{m!f3OA%iRf-JYRpvlZwYu{Ig#=Fjt9Vn40e~J$FmUb1CvJ{{pfrc zqp#B)ndnOGk2K1#iqtKTW@bBS%2~sQJbB%ye-NyS`Wd#vs1^rYA|U-9y3J%>ct3Wz zkjXAWaxWA1%EJr2IF>0rb#b+KX z1J%K8mB|k*0bD57%%I)CNxKeuqn+GA$Kd;RkjTj1kNKr_Kz7#fGNig6obUNp_ zj(%H>I-k}R_A^FZ0bdRIDcWSPQD1n+sG+ov+ba(^TgM2!#OT%4340?0Fw;Rk-_y^{ zFzR#eU*s<%t(__1$*)Bz@cBMG{=AIDtVqY(=A%Z}zSGxjM!kv@N6^pekqaD~sr*`_ zW=N}1Mm@USE!eX5lzm0UY5$ytPzs+9m#0_g&1nr&DE&+Q7X_}%VI+UcdZ$5Dt$=Vt zd(ZtYmWi^vR#!w!vnp|lH)q!vHOYQS@X>p}_Q3;8(TtZ+C>?))y}(q3Cuc(f&@O9N zgF0GuT;1D-HJIC3m6b-Varin#`V=jeJ|7&0b}Izdoc*I#@MX@vY}7h1_R;Yj)3se0 z`RmU{{ij&AUT>mZ!QoRpt(s$0zO9wB^bmD`V`Jwx35i$0l2aiq!W|LARbhVzZFbWc z@|+lSPNLWIh)o4HN3}Y2cRWsoa(!6X>DDeqoJ;kl2v3J_`Jz#$1buJTN-SAMj7xf} zr~_|en*?A~!s6<~uF zZ?t%APbu)>fsfena9UpMgepztD$?RBL@(hvWQjjb^X2@0X#Dj1PAjhx{CEKzc$)Fi zv;^dmSA~cfE*`?R@pnR$NaPPf7w2BbW)~y?qP!)`sx-OsxKS59jFAG7RcFx7d4*_0 zxWc)F`524ua0%59q@%TqQ4B!7ze@-f{ui*@)iG`7i=4gHS(4o#@>ODTy*v#EsKkXj zk^lvLQU2utPe!1E?=_moDunyssmSPb3tFNND{{ITh59%x3Y72zHHW2~k2EHgST)$Q z$O!w>zS{L2ai;{DP;9vf3p0FSH)VOA~xQ? zh}C{>tMR`9p?WiXh6Y%NN%qU_NL;M*1Xv9hFqX`v^u)GN+k6>cEa^X>|7 znC4pw+!c&eD@NTwMEdOG0lbOn=Cv51T0AwY`VPq1KTM|pGy?&`S?HQbzn3;`EQx>A;aUh5{^ zto;K{B%Q_Wa=xHEM*RsnLQ(Z)X(0#Sgiq)pjKOQcmsuNa!ad29dr&`MNo)o@st??h2 zV;)4$?iAZo6dEa_AlF~Te^nG3H4@eVJLW4f9LT`~0z41cVKve$el2ULdKX@Jjm5rF zkY9Slgf9Zupl7jbuozB7csqqb`QEiG^+Hjae$C!N++`lCy7ZF0Y`mx#4}I_dM}iC2IC6edN3)P zvx$YBN842pV0FM&egTM%pU)WeUvf8_1`?7$Ez>IYImm+$kr=S;A`*!MW)?z`d<@(Z zitJP@xN9gfU09OOyXX$C_qB@tcu&-awTF&CHWY#wQZM76Z>u>+5=v**$qJ#9$0AQS ztDrBsgd*37uw)2DXl#B=C~`i=Z8xhrjQX_Jg&{*MY)S$+bjwiW$JV`XVj^nf0FgZ^FM@X>B3{TA=l&Et%=Lt zG$Rawp|@}UQqg7lg&j@Oo+SVF#9RgCdfZXa%`ZZi8vAsQ;*7) zEW21_?GdAvUI}UJ7&PNF<1e4x&_aVhhT2 zPRzKN160?>iwoue{ymypSi@?)ryEP^mzwk-ihsD-H8jcyBUo>->i@*DVgWO>ePc4~ z5DD)!2^iIh&@|wvh?amP-V@)h&IuhH&^7h(6GCkiW`+HoKW!6s{>5wiIwNQ7Wf)K-s#$dxx%&6VjeqtKqb9-?QO4YSSaB0i&OwgXBpGV) z=FUM~6nS%bH#Jc|Dg@ez8Ww$DEP|bYo1iygxW(=B?cL_H9*$@P^WUlcuOyCGM>>lE zW$`~;+oeIL5xD_LE!N^aoI;O-E7@;pbyXqP^O~S1`1}b8h8kaRcN+y!E!#UZEKe8m zEFZyPlPKh2Bu?@08z#T5GTA&utBZJmJy>5)vqEBkSl&MPmwhX zqE5O?k!Cu^gmE%G<4`)QRtsMB$qRPiu4fb#B*Yu_lU^dz6ZB@i>yeQmx>H?-*vLbS zK|V~CAi9c!3rV!`WQnMekAx<_)&3TsTq$0XX9pViL00iSN;B00buT=??Zf5YM77x_ zE_7lfDLUM&-k6J*_nK|jF;VI~I*pQ6RW?I{03`&-qhwz3XY<|8NX^2Kl7shac8fvS z2K4_!zX`Y`x4^O0;&xd}GAU-i1Oi^b`;w%00s#>h^D$siv55u8=7(yc*!Vr@E=Lr$u}>7n9vLi8UoJxj=7CO;*4@5t+c zZw}^*!gfzczQ<&a!-eVjMZ8OJ-cieeh0kRe!FZRb-SwmECtS$!KOJTM%duDI1@)tL_EzATd)`)evW8QKF4aE)r6?hYJA^4QI_ED;9)3 zm49W}b3OEK3wsvaC&WBvVNa7(dXnVf+hd+@?toQ6zZkfW8}LBWN|V2TD7;AgapzG- zI{K?|{NdAz0-gMtR)QQjLV}#!Yp_a3kfX{8fbic{xhwf7?Mgm=9Km&7)m7HsOOmwU z&65LdWBjj?x2a{dQu#qcRbv$cQ`nX*Q6sTNMQKnt4F$eRZ^ES^;TU*IjaR}Ik}euE zz*Swnlk}{UAXp6wkq8?#v}rVd0^cxxCGYw42T zYl*uV>!3vMveNR%a*u!1)Lz<6am53lVu+RLuO3{_av{G~{#sFGMdJE&j=L)c~&}lm+RWABysvA|pMCRz~Gi?paMPa!pEEk34B2+`?yjD|KE(*&ob)${qW(f;P#i^l5Jpk^?X?S| zsK9U>==*Q5=`Mch_RSN6W^dUOA$!OvhhwyTf{NMe zvPXxCMk&dswge(uPke6tFk61|2Z7PT;!%!GZqmf-YmeAtf|Yh^s)g|Af<1of{Nj zX#XKa*J5qdoIV6bZnpi8u#RS{AYoyU$BeoefC_~)l7HN^+}Bo0yF*$ngpN_;KSHKi zN(f1GucSk%-2S>!Z=THE;AD2au;O|)OUbT!4n(O($@NnAVH>t+8#xBG5$z3q@?X?` z-aM5rDy%V-2U`^t*1A(V3r{|UC!bvH(Xr}HaA7@si=sHl=8k}+Ki`O$tM*cqWJrE@*CtiJo1h^<#~AWDLnbqo~^yX zgeRY<6Xda`WYxoyPapSvK*b8j%C7nFP_R}`y&cR z1CH=@9)g1v90nh;uAsB&`0TDqF5Eo$( z6;OaxOI z8Be@=m)0?KzcKpHTeGnJr)9;%GG)WbTnw_AdM+0XWbsFlnR^M-3hC%CGahDtDUWo_ zvoj>{KOyFE;+GB&6DNt&vaIxH_AZ{MqugTgDf8l!`_zQV{z_FegVvrZd?5GL@uRWP zSWJC!K0&}bE4g?l3h*cU7FfnOPr^I|?5>0LtSrHdtgvO17>`h8pL}sL;<&Ngr@U4e zvbq^j@;qEem@=4|J1c^mOqGmqaNtH54kx@aIGFNZm3=GdPec7znc}Ckk0kdKCQL4j zPc+KC!~37LkMKJusIp~bv4!mu$zDg@SMRtzjz4iv6Z0&v;;`bb=)Y6kc)v5JPgySH zu@8`ZZ^nJ0_}>EjPMPgI);yKN2fq7{nEbEU`A^P$mUyY;WXbO;;ynzk>G&UQ$HxEX zcY!@c+-1b!!JJvapKPW4MK82iCL`4jmj5u$gqQyQzwCVzG`HbSHFQ5_c2*6~vYd znLCb^#c?`JN98?--7d>4vc?%xy2@NwxWr>F<_o7VoGVC3Xnb>A07Isb3+lKJ)-rWJEiiy6Q`K^ef4`w%@#4ioHAI*p4E!4 zVK}(1!!XM(i-x`CoI5&CrF{#rhtlv}GWZS`fbl$C&dVK^Ot`qQbTf>d7@e5ojt-77 z#&qC!KWP$!N>E>06$qbFYRe^3EAj}INGwH)sl!T@D$;0F76-_ZzMxq|!eT}X3?@-! zFqq1*mQuvT$(BeSvx6I>0r7+ z(-viu1~M_03{1+&jIoUA!s$saF_kQpSxVtLRxX06bP2^c6NXhRmjf7_DZ>?1$Z=;2 z7Z(x5F<8Q4v605&sgo-sh~iU`E{w3@CkVDnJTg}F)(6`Rb`@N$ibymnkyQV z$jHRNWtLc2%C%)`GOEJLtjLVAGZmH?$c(bAtcw_>mLX-8Ok*snSj=HE%8bb&mPE@a zGc2-1-EWsFHtjbuymIDlySY}c&lx9@SRvAjhRWk-yOvuayh5=#!;_gVN K3K9}X#in3uEs9M5 diff --git a/client/resources/hardnested_tables/bitflip_0_07b_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_07b_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..e8f500c82e9e2769b970061afe4967e14e7d51a3 GIT binary patch literal 15338 zcmeHNdu*Fm6+fTtI$0Wj$9-){)5NA5r7g{~1-7M~JvIs0RyA~DunjgdCLYbUq;#S{ zY4afjs9QtKL$Hi)%a{PMHcO=o(;wbI2D z+=(u6s%Kif6Ky&kMolnPi9|R~@+i|nk$!Gkx`>_X9jFTFBsC#U)SLuugdJZyr!D=x zpQ#KZ*kp66auo*OXU7+E+`68r;2 zpU7?r!&XS2@=~tHEK8Bx+w{%oY6Y0^--hwelu=01Xiba_FIQNy!$8)>R6FAu@lJY~GmtjW8 zc>`88G~-@c?X>6_eY%9S#*sdxavd+yXN{^EM_Kp^ zD7FtU9T34HTT}+|!e)7!=|WM(_?Iv1@*ZI70y6sq^9?EkhR2hMK!FTOlId4aAUOT4 zOpiXvbPTLW<%!>C*1L!)EizwWu@Y@R0kT?gc)>ZGT2(g{=v{>s8{M4mUGfPBVl4!> z4votdMSjc(#Z-$b9EY+HW=X``?P1cbx7lI*`mO=ed+cz46Baaw|05g@>)0`jPu(n%Al%0GQfUx4=GU@Z>Np00&eCscdTpCj%Sw zP*efDO1~NB2%>*h1gou-yP$-6v?XC5sB=*#>K&{+lY3ELWiiY`-H+@8I7UrIYbV@! zr~m#S>==$_ypVF6!a7&;S$Dkv1V%1huyrTf^1>Wti`j4zJAf2?U>jyvehf!qnjU+= zYezldd>Lf=xpCc8L=y|n!=UVPu{#LuvKpVifUM3Y2vP0i>!mD2>Vi58IJ0UcQWqHm zykw`pQ_N*d(Hq9IbM$uPV%r>VKssH9j1@pz_eAQ zSKCwh&i?@3fT}SKu~ysFf$c0-JnskHz&Oa5QD7)=U^HfUB$joQvQ8}Q0+f9(l>O89 zt4agQ_rm>|*X{bN5ur-zg62%^nvb*NSgY9Sisd4VK=sT#Sf-)FYItCj_X9nxvR|W+ zaCS$~^Rx0_6GJ!aF<$mCJXw`wJK~iHb`DMO-*ICr0GUv~+C*5pB~V7ep^}Gdjjis# z1ys6@E2LH3Xn=|D3N=cF9@ynf&0tPg;?VH0xazvxDDcyl$Uw>AbNF~s(Rhzqw>%o_ zrnhq+=6Ib66UO{97#X8U4!Va2mEn^DpOLPw+T8C zE+x|mYzm`+d5PQ@C4aAGrv(G6ZJeS&+HJ}zby>9hEyv~M@LkXyI{`PpHx2LHzW5F? zZ5v^F5D}zu@-+a2C2tbz$ALlCW=Q|P9t zv~m}Dy*1aGZkLtHgg)7C zC(_fH(e-*&KxIeW{ij@;DIMsac+-T5VXO!?bchjliu?{I7PRF@W^Y1ahq47o^{Em> z5D4KRTryWF+UV1DPa8L;-fiN>$Bi1bcz8WtH+;^H5;PpEl8LqJH)2TJu}~KS42lEE z8~y}E$=s=m(ccAiScA)yW)Ay-{+2GLjs4iC2Ih`c!^GVt*0f=15G0<$lCkVrgqz=C z+G0XQk=^--Q+@O{k$Qxj2p8D z5sbcQeD>$`*m;4dk=`U)cM)k0=;+>c`(O{o$xOBe?0+NZ}U<6z1v-Pd($rRviD6@PvVfdUYEgnMhHp2BAPN zR-W^n_lkT4&RnBjRj$D>$?}~V<+iOx^3Kxa9?jq`Y7!@UlB+1coKOd;QvM1@x@Xpo zbf%}&wkE5)%{ZBG7xk*JZIm;U5&lQ&A)-$CvmFQ1ks%GY%yN>|Q-ovkCgO4(577kN z=%RwF)xmCZ+A9=Z5Xj(6~ z>*aRU>Uz0dS1;tgz1*&s+s$EN>R&Ino9B<0+jajv>g9I5+^(0~#s9Ls+%D53*HT_? z*URl@E$3{4Q7^Zv|4;P(WbFOPIPZ2AJ>ja|`;&1IN9OQ?%t7C!_9tU6x9jD0i;s+# f+x2q0#fT_;gTX=O^U}`kUg73`3FY`t_dW10RS9E& literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_07f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_07f_states.bin.bz2 deleted file mode 100644 index b56e0f7a0227fced7d53ea61f77645536cc678a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2054 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_081_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_081_states.bin.bz2 deleted file mode 100644 index c5426ace646e99581c9bf3e599aea1c528cad147..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5982 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 nCu1T<#&Jbt8vf3JPERN!i0IWH5AwEbTwjmw0z zY>-Ykun1iJiw3v+^P=oMzc3vQ+T4d%$5w?|3ORD1dFZ@BGx24OZR;W1K;N&$R~{rD zJX7YJ8~gF_^rij2;vb8H%EVc@Svve^@i2)dnVQN2J#GJ=G?y_FP;s*IJdV)_wL%ea_i6J7vFsQ zVD7`SBhP!VFP}V~`rZB^{1y3Kdl#GQrF{&6ZhcM58qeHyMYBgl90D z7^+!+e!XtZP{79ZK{~kxdT6bwMH`)(fYptWQN7*96lIs&3h%P|jO%R{MHQE#RDsdhRE#_lGbH<$&EPX0@mkvZx$=dcIAo#iSbf&9GZbhsR7KKrIboA> zPw|o=mcPMAH0|rsf@b#duq_y0JCTgSVV8fum0qGvd4)fxjdcYf4NP36uBrwovtE zB~wcfI90d#fOszb-x;eAP_29%IQ9r?I2ag=1$q-xtQTNJr{_ez-pQX)x(-4^NgG(h z+IxMy4i`#UC1atXax>4wm^22M(GwiRf4-(}EbSNX`w#0nF@Jv_9davb4m}4bM{PHw zEI0SvvzBtep5q0XTO`|k3H`@?`XW}fI-#5ENwd=txHg^;jY*luA=Fpk~owGnL*BRmyn{l4Pu_9rR;Y2l>wvU~4t za8>bmlD@fUq$HlX>ZHa;if=FKZ(fcCh4+i<$G{DQ!ALX2_Qkp#CKBDqHqDW}Wf`*X zatF?yQYYB5JwG0B9bDZyd`Rqg_UL+|ai_&`2AMy#ch|?n+4}u$YtMBa`s4orRf7G` diff --git a/client/resources/hardnested_tables/bitflip_0_081_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_081_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..6cc5d4be6ed7882308c33a9716d549dbf6f8eff1 GIT binary patch literal 35433 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_083_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_083_states.bin.bz2 deleted file mode 100644 index 3421417ed6aa076fbff9b816bde26644e88992f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2134 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 K>u(EhFZf^Dm4ey; literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_087_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_087_states.bin.bz2 deleted file mode 100644 index 5b9302627461b3b91a7215180682458fcea124b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1352 zcmV-O1-JS_T4*^jL0KkKS>h99UbwXuQ`ag;~$8Tz+b=}RS|$4T?hbx z062g_Xo%nm-v9sr000000002s(W5}nXbhNu$k50D4K&CA0APRz28|j9gFs}&21bTJ z0BNQ`00RU7I5cR`G#UdYATl&E00T`j000;u0l}k2fuPVCF#(aGkN_HKkN^O|01gcr zGz|uT$%qV%41fUBOn?9e2mln75duxBO_~!Xpn9GpdXH02N$NBhMn;~YZ8HAJFU_T^{T8x}A>E zk?)y|a4*0=2*vi7BP4t1c!QJA2L($ElJpX}6_JAci}#tIzI!HKs_X~4GCM-;cC$U! zI9CtKaNu7wQ=N z!ghniFtEiQdRGC#9q4fAA(ytiOQFe?W>j`6qZvnHrSuk9a#sr`SQ$*REFG%H++D-( zBN*>G7DsU4u*NxDE>nXp2VsjYtCYi(>XhI6NQV)UO?>*3(#Jo^xYR=cbIn=vC79GlJW;a;B;dbz;rGh4vE9aQ`Rqu zV9A)n^dBk7!uV7Elakbw|GahyFW9C$M*evG~po123(8 z(}49@_Lf{c&m)Jx`5Zk|Q{hMOEG)3WhA{L+>WPO$WrWFOrwbTigA6i^zUnR#91OC= zv57LX8JU(cs=AddlIpGoRmxYa3|^pPfVf#%V(PeDE)E#Ow8sl8hF`F`R|b3krb_yna(oAZ;JXv;Dm|347nm@k4urjji^OG@ zQQ|!(3Bi}LlQ=Vi@gHbj1~H6d%%4Ha_Kz`j8GR2)-kt}Qc!pU#_tbE7N!5Fgo#sES z?7pYM|L1w&9#bYL_BnNRGapIb?^m=`eR)bRvsF|+#3?C(0{1k9NWP>}Fi{2P*8~*HAPXZD z#K?%oMKNC22wWt{RK;agVPd70P%M>Ul*$ZK6-y*!Rgr?GNXZseWlUL8)J90e%4&=m zOw3F&OktHWm6lAH!enBsS&@Ze$g->|%*Mrv%Sgr;$}AX6875372BBuDV+=7FG(m={ z88WOH85mfm2+XC7rVOF07P3*9lNJ^rv4%4;OfY4cF*2}>VOYVHg3K|IV=EXF7|bRz zOtM(TR!lL4hC*gc%2O;xF^r^TlCvu^V;N&GLoiIj#tE3S48kTbt1^`tj4?|e{x0N- KaG@c@CrHHaQe;v9 diff --git a/client/resources/hardnested_tables/bitflip_0_087_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_087_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..859ab9b290b797bd96d41312acde9bb405b9fb0d GIT binary patch literal 16061 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 diff --git a/client/resources/hardnested_tables/bitflip_0_089_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_089_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..046fef513f9a200091e15738ddb0c345b3e3a59b GIT binary patch literal 24763 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 U&vQ;-bUK@>m{5D)+mKmY-l0r6lFK!i{^ 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 V88Llv&UOFgCU}JF)?eIs_TK@fIN1OI literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_08d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_08d_states.bin.bz2 deleted file mode 100644 index f7e2d1674d4fce897625e0221dabbd6710bbdf9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1788 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_08f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_08f_states.bin.bz2 deleted file mode 100644 index f66b803eb3a6730a605ed054f1187db6273e5ae5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1080 zcmb`*`%}^f003}IXPY_n(kW~RQx@Xn7?NH1YNy`J2b1{-M;Xdjz}9U$mr5d<5%bOY zh*Z9vv9+m;#QDB-rpfS;O6su-Jl7JCJYPM%H>7nrBG20k;Sb9F%e^PLEDmq8@Dx&T)c zu;`!3khlM@@oxHP5p(yes5s2ctMz25%tS$BXG~`zt3}(=b?*!2!eBd6i?&n1u==9I z)`h2_M%lZ>U9pq~?uGjvjy?3y>@F3@+`(i0aYY(pb*K zkwEPcv>kCzFe=<}*NfQ{=Y8L5-By3(1~<<(6taG~c6>8=avSwQ7uPpI9p3T_r#t9n zei%L%N`6ECiJdsP1yb5)NIvi{$A3dM7D@2^FUtPh%)bF`*SuoWm3&3fD1KESvgGYZ zSUcT@vG>&0h)Uqbd4GlB^>z5Zgqn#!t_uDlaqAMTejOptIU~skp}5b;FkW78mOmEo zm!p(N6&W}8n`}dz?hm(IQKN;Ad4pLwijvN8o;B%vB{ERH@1idesw_kkGPk|OSUSCY zElPQKALzLtjqZ<(XepoS%E^-Y|UD;TY~ zdndxlQ>YG$gfbtQlI>{h03(zVA==pyGVq_VTidma}@ zPpx}=an89>*ehYKNyqb(8naZTNe<{s`*ZE1gY$1nHey$a#nZR+xy5@Ree#Kk1Sj!o z@2{vOQbZ+S_KTH8C}!CB%9w&WfeoQGzTzMju(~x4es$0oF44{}92K_2So{M0jn{{V zhuw82?Zh^lE^YZi>L51J9@-QvW2V7awZZSendx2|K}4}kbP5i1e9R}MR5gTlnkI}g zRu#a&D&OLlmzT%UM8{O|j0ROYFk3Unrq63-zk?5$>$3*`(9ISD5RQ<)QSKpHHV*j|w!q%v@Q57+@JX98HB W1`D|b-ljPW)_AGgNtFL^CFEbVcL|ID diff --git a/client/resources/hardnested_tables/bitflip_0_08f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_08f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..fb72246273a56827ea242caf7e9595e68b537a89 GIT binary patch literal 12349 zcmeHNYiv|i5T5OWLTT?5sn{2?t*EGdtPLTUsJnuXsMIbd8WTYF2T=_6p;5yROE3H| zM2ZrBs6o(;)<>csJ`$s%pw_72)%r+$VHzY5Q=qjiQ6o5hbMEfl-IiUfRKt&Zf9%dV zXJ*dKoS8XucQ&W0p=4R>yO#!t7Ow3Q5+4PFL-;(%7^ma+xNIEM%I{#&&LvZdTl8=GFsAI+#jCmhf(3wn>_q{2~p&3gk{YSjHsqrT>o}ZK2#k=gl0(^8D!PJc zy2xq^lF|h-kptPx#IJHu4tDl|&nyvq<{Sld)bN%C5D7@dFo4XrD4%KS2f%ojsX%_h zZf`J!bPdl|h}f>futl{TDSb-Ctrb7e7ctER#u}#5@|cbb#4?IvI)Et%>|c$2z&K0p z#h}GlMP6hdDf35}&VwAjK8_SUr%UHULy?n~ABLUhIqqGGkBn|je9FK>6&d7ET^-0}8&msatEe63Xkfb~$W$fEnJ$NR zo0{Q1j&w4G0~5gV5!si-#PGfWDjE0sTnexan0COoMH1?WT*$Ps$AW#-segf{El}a4 zk#Ig!Km>=Mf0+vTCeuZRt@CkwG1DS->e<&YMGVam z#~uTg2`@PS(gd$5OboZxUk(l)SmN0m+I-#C;H&b&G ziVMPhhRxtFrg_lddXdMOX2@QqXI&%!;MpX%Dz`dWm(dhJ&g1T$8BFIRRLYW>q{8Pa zwf;AfrT&$AM!##MA+j*Lk7<=lGYUA)w6#gM-6jGzT&pqV*kcsx zDJP~e)xylSe2mB})o@Aoe2s$u=EjebLfhaX91#aQR0xex2!MM)bJpZfn0`#hZp8dK zO!ab1c|4M`GOSZs%G8PfET#`r5RwK%X1jJ!bl-(D_hSikzD6r@=jpsHiOcwahatuG z=E985D~D9ML|#kU*~i;cLMLe{4OnW?AX9gm)&FezW`@H{Kc8q>qRJrojp3PS5#l2% z8?*w5GQH-~!u1E-fdhOGTTazz+MD8lzv{Ntih|>ZEs^{JdhClwkf$FGbMGa{fuSUf zmymD~cM+ZX)p5OHy$RAjl^Q}lA|(bc1OuC(w3ckAt4ZD(7cY$q z8PJ?FXbmi2YV6}>4+WVX7eP3sz4fdp3e-b}9tRu0vIRv%%>NGK?&~vVPn4ta?auJ~ zVz!6ikr@h#Z}co&q0Dx(a7D)U?ZVv#`X_MRam+b0OLR5UOknJ^2_~ZoK(Oof zr^xb7GE1=dHe=$S1TKLxR5`ok2tb>fxa%=Q9R$DTrW_GA++?wS08q zJ_HqT*WBR}0l+vsH5PkCzpda+gA1LLSEMREj#eh;KwYvMahm;1-@6kEAkW6K3)sO@ zJxmXzAjAj6bgqGM>(6T$ucF(Ew!yFVXABXq=JsmtxEHG9BdvKgw`-990XS=G?xf6a z%9R4Bc=XLZUM|LY-~!9|>~f?owIyk5ZQNE!Q#*9#cC%^V7^7vS{*V!q?`0=!;;n?}4|fcO6!_y0Fu gFW{{2%X+;4uNUAZZwENzUclk7VMKVIU)Ood-vIw%F8}}l literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_090_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_090_states.bin.bz2 deleted file mode 100644 index 7f559b40cffa9346afc8c0b947457dc34d5a1ebd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1281 zcmXAo`%fAN0Dvh9Dnf>Uj923%ZR)KLRZFSLP?Jq^D8_+fJf!(rni81?SP1dAI>$0WUX0qh_2fpO{Ivt+< z?FzfVY##~@{z*J|<_Y|qPA3qWjf6%yf#4?)*jqL49LnmO5f;E=z@16A%jIHi@R&?` zCc&PZ9F`TAmzSAvtn!*^io^#vndHaHS0?z%BU0zF=B#LjbTQ%;M~c~S7WRO4zE@{% z=HQr5?X)Sv#6?0$&#}bAtQkC{gX$SdU92TljLb>u5i7Zza*tIZ)+{*$lrjcJoRX_& zi2*k_#}0Ufsa&*ChN7Jhp*h^SK2f}hDpd;wmjQ7nL~(;iYIjN83I0h|g72V#9Auo&r9MH1XKCUJEd+{xk^KmQbWU6%?04!uj7glK}O*kZbf>2}yh z;H9@RGzsOqIjI9*nB?ddZUH?v?Yux6>#7pG>VFkI{Of+%_Ay{%`z+;bw6+X>o`w_$ zNdA$CEF2SaeZeKY-DLT4y;dU>Ixv!laJ`(?uY$Tkd52}$z*l>jl%`#qPvLC-uIgx? z9o*0LNU7RB8b4BYeVgcpGG?;bOwwf3J?E~Op&md7eBRws!vF8pY; z>SB+Ne-e9hsBLS2bx>7Js3wq%yRDLCd#>EjV@6%)&=f^DMED;j9AP$OD0*#&tg`WU zfO}`Lvq{rL69i(g#xEL8hEd{*64XVyEt@n-AUMM3$#1dJ$f_f@vMdUXx9Y5pQ@8_v$@laQBUrBerHhB&}TmJ>NNegu5mfoo@=d78WJ$%47c+NA*Io zZR-+n^2qnp9662`JfV`Ip=;sjRjd+(GU9{KQ>6Hi~%Z%Pv2*KQkjpdL}e9Xx&q zPqo0cH)vlW+;%Qos6mM5{O|%s>1m{?Q{6h6wqOR=>(+$qeXOINK3;6xiUi-F8QKJ* zgsc>$CY_oDyi>~cOJ>0Vu)o3o^sjgJ@wR^|d!9ob+Z(aL%-*UpZ&NzbmCrCvTW7&_ z4F~UGEGlCUIvUUHUHN(I_Jez8>hEdNM^`BCTY@!z(82p<9P}`_zgtEta=d_;_mElm z%;l61BpWX=tg}K+I3z>% diff --git a/client/resources/hardnested_tables/bitflip_0_090_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_090_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ad7aab465b6a73d3740c40d7f074c1f17426ca37 GIT binary patch literal 17300 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 diff --git a/client/resources/hardnested_tables/bitflip_0_094_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_094_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..eb996434c0f0f360da1f5452687761f41a05602e GIT binary patch literal 31544 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_09c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_09c_states.bin.bz2 deleted file mode 100644 index 4b0316dc307db99d1790c4fc1e4b8fd22edb5571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1431 zcmZ9IO>EP40L9ZJ4M}XZ&^YdYQ`MAy(KH^7IZT-Z3`)O3GD=gD{+Srq|7a4sH77d8 zN4{JV*RYjR>H}&ig%;Xqwb`YUCgeCa8k)2*X_LljNj7QK)I&D0j*XA4*X_N-d$*_G z>wfq2TlB%>?Zd}S&hNfA_8k9^{T1W+q+&1|stny$gTWBD7Hfap%Kzx5;q+^J>;_9> zs_FmLcs10#C!2Y5s_t(8pUJt>xvL7zcFO3Iq!Eh7G06Rpifq|6<@Cu^r0u2nYOw$5 z#s1HJ=vV0Qb8%+JVDXsi^YBRZ@Vc~uSyk;GBY77s9U@JVbvl|d3V|J2CLf2Q5Dq;J zAL(4yBIfIzLYt*JZOR{DTi1?)&}z5yEU~g-yi@GB7wL%04qkO9l0kfc4z^%6UWB)m ze1d}z$iX2#=TB>T+Oji?Kt5$@4jv+j_U5yMmK(O<5nCb%r*YS=ZKiQ2uj_CDt4?9- z7i{WS#6wc>u#Tum(^GVQ_M4yIW;bTlIfJsgg?3>}9DlzcPeBB*ZdW%qSXER9j*4TTChG*3t)Asxp%KW&slmsGEEJw+9 z-1Uh*_~_NwT|G*{`Le#Ib^$1B;s~ddM^(MD+p}3OU--qPY>vpax0t`Ms*Cez$z*0; z%*>Zg;P^0xk<~oXX&{Z%)NbQOIHr(4fine=-#}}F-KesPO-$rts5on{e0*^I3e|hEi1luu+os@aWQdQuwex>a~W9bA9D?^-3`u$`N!uLrZMzD7JC_O!4o zM4 zMh<(0UX&sPcSc#Tw71x0#Ims7VH5n>jGm=|;O&WS*ApRCT-G#|0*kmi<)qoDiFBs7 zwx-!08nckE`!9#bDHt=Zq)oQNw!fk(j-@JbZCjt5VK z^>I@+O9ca@rDm6tmqby_?QYXXSw>HR5j@7|u_K;KB-Q6+ee=lznA8VuxOEO7Rh4|O zp@k&0HL9+tl#69A&DVHRj*QRii^YVYq{3#0Ie&wL_xez|aHZoX5CspZ&^2{>G!*Q` zxK6ESElkyg$~S$JT)@tf&P<0UhoMZ8lvfv^3EX1PN@A#xVRTxcF_7DOE(#X0I$h4; z!EiWvQ-^K5;O4af#?MqG3k02JST9R@EEEod6cC^!Qxv$f_y&s#W}SuOO)Bz&Lxj3B z%jd^2t4_8SEF?){M3lrC^pGUM#pJHILpfFnv5|IbaA;?7CVp4>0#ihe-)k=w@OBFg uWrkt*TF(HPy&T2zjfRG?D3Fyt-W}x4D=jgwMO)&%j diff --git a/client/resources/hardnested_tables/bitflip_0_09c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_09c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ffe57e55e078c95c76e0e825ae8ac311b6ff028f GIT binary patch literal 23829 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 RTKTs46EDJc<#hG;{tNc=({}&> literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0a1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0a1_states.bin.bz2 deleted file mode 100644 index daa61d3b736109c5a4f1239f010d7152d9dc5aba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13572 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0a1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0a1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..716e2ec82bc6b1a89d1135422d380f407ebfff94 GIT binary patch literal 51284 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0a3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0a3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7f045d83f18f0932eeead942ef1aaa02f010044c GIT binary patch literal 31041 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0a5_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0a5_states.bin.bz2 deleted file mode 100644 index 958b8ed3d39035f65d4f5c940e5dd24c7383dfa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6943 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 L+_@>jo3Z}`DCiJi diff --git a/client/resources/hardnested_tables/bitflip_0_0a5_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0a5_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..bb045bb43b809509cdee554f9df8a10baee0af3e GIT binary patch literal 47188 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

    oE!5$udsaoiC!- zsF4PVG1cHqR-KY5ZB>+>jd0j)0ZII=?>-ZmA@{u5YfPr_XCX7@xN3$I)e*glr6am>Bi>UUiH2XB&S-kh%l?4wK~wWW(5eE4|G@YIX}f zNwTk&%$O)jw^{6n+P;CQ=EDgF|7RMShGTB|FzHNP@Yru8F#W_SM0o3gr(Hx7e_O-Q zsw6ADQ7p8?eNbgxC>7bJO3m|BmUHu=SZLlOb2gQ_KnC?#|HV0$`e__;Zpw9NM~6+iibdke44c`a30*sFH0b*@}5sS17H9iOm`?MmjF*i5(CX!U@w!cpMccMma zXB4#6o5{ll#JI3H0%ldg3Z>a9FQUVkfcWo+CS-q5GP)%=Cn$Q$N!e>ai4Cmp2K=SW z=GRNgF5duUpA|R;(8v(a+L?UnY`u`BXj?}#OVP%)%2KrP0kahCEJd3%hAc%}yz(qX zJ4?~dQna%a?JPxG>K24qigp?ZBym}f5viC=M%iN{Wj5TJrD)4aR6c|*vlQ(tMLSE; z&Qi1qcV{WuS&DX+qRnpU+m)i7#m2MPI9UT(Y&1L0Zkrfk@96;E8Jh->X)IQlD`EviUU&pjnY}xDAj@q~6I8NdHhX&svuj)R! zBtfcSobE`@cI7lXdyV(80hk*PuA%o?a!g-srVH}^gG+d>nKlne5)`#0$U~3iypm)k zkXZxUNJc}=JBu$|@?Q%+TA(6gtCI3RV`@3z)K6qOi3ZH%MJ?$jn@XVLv^JyW^_ix8 zA^HR<0g_B#FlYKRIkD42S74y^Lb_!SGf$$QWDKxl_`zj*A=ykE{36Ry_G10N}5~p^{&@r_|qyWOy>3o~@C3}pdVz7zsk)qNo zDLDD3H94C$%giRB+>s{3{4K`>=TUBpX7&}$ar+AbPjenF zWW`@rC$eR0iRdc6QA*Me_bs_J&6DC-FA0vi_8FnbVN%M4KXwD0f=fHlvFFWitYBY%qB{ni=w>8fl#4MetxFRSqxIGst`RdUc$ouILIeQY{Npiwn z=L=cnw5PiDN5Ad?&wB36>yCI*_YW%Xl!Ujp<&5W7cY(rxN@qL2mY!OG<&Uyi71`m= zXv~Ys9;!@|L*yvoa{i)fr!w7xO3@d!*~mdZ3IW=Keyh-`)6aOuO{n#VB!=&E zqRKpu_T?#m)uzcUuBR5u0Y5ncR-nUyqm24imt-DO!?c4MG96eQo4|R{;ym&?i?fLw z`5yu9Yo>ZM8fpz`d17nUa0opfAi*SeHCa1*MXe??{!x2Vi8wNZwJ(Y(M*aTxi_HTZ z3ylLG_{cVq`Y)9Ql90NN^co(>A9zy+iEI@~ucT8segaZISx*m_y0nP;bW^nYTymPQ zW^cw6k>y1>)<ej5jQhu)xP5X~qzs*3CoZqfuxZy}H%jqt zDFPPO>@n5%kt6f1QkcC1-fQIYe;pPi{u-}p_He?b9-Ukv&Q)(OsYg7xv#%E>Z>0+|PwkIUof7v@Hi7)mEhb z)=+rk$$mxk?pyLXKe~qE1hQ_>KM$#aZN~m+9%#ZzdCN7xzl~E&YGQe2E+R{}LfZRL zB>;d6Mk!=Ujym75-~Z3*f6prdN>=|ntN;D~Q~hrpKZHojG1aX0cUJpbWwpP>jcCP| zzR8?(oCRVWzarIq3kEo={Vm>^WL{*ozq8ukDKETH1sHL7+lN>>ux{ym%KFMugDtE5 z%^8`j_IFnMo5dyTWP4O-@^v^_?eA`)g<0+ItoC=sAw*I?KuMg3P)k<(JFETu`t3)m zZe+E;ldSf4R{J}R!xQVxYJX?7zq8ukhpRbg3n8&+WsfGS{T(YdnX=m7S?%wv_IFnM zdlb()Er65N{+6;lS?%wv_BXF0B3EK|nm>`ga4xI;eVeX2|M<%y!?Gmkq%{*SmeO-s z?e7ZN%vtU4gYV!W@y&kl!?W7oS?%wiNhaccJdmeJV%hg=zA!zj{VgwQuO~)lwZGH1 z2B+E0S?zDpv(z7ySMfY!HEve>o1<+~H#e*Ooz?zMcNFE7MOp3dtoFBR{Y}66H>>?U z?FE%t?Qf2(yd$rr?8s_=AO01TS$z}M4O#8)N6Gx&%<6M@R{I-A=*M;~d8NK7k~4P? zL`yi*WnT$7%5S}&!(HA7(p+8^6ubhbrGe9Yd*qE^am!Hnd*tKDE9q_K)^1&!_U4}x z`Xv}h0x)mhj43zKvf5T`aL*RCmlnhSGVA|AUE?^pYUa5?elmy~4z$_#P~q>>ISlPpC$OVQ5lG+ByvmZE*s$jA{YcwnP_TgaF@ z%#K)=qK&EHkoLoi0^hao*>X9a-MYl6nvJo^e^}96P7c7x8{B)Jq6*M_jGDX@ZJk&> z`_A_75A*s%lhyvtYJX?7zq8uk6qN`%L}R#%v)bR(vnj2VG7^oGRWuUbeaAXsi=j3g2;keotDS5qXSKiCQ;)Xt zy80K4J=Jj_%4&aSwZF64->9XtS$|wYy=Sah6ZMOxuRnH*uw=Erv)bQk&c`q=H`v2UVI}jj?LYa6yMor?OjAd zC=Jk(IyQ;#L}NR4d>T*)fdH}6*oX~5H{!QjY)36o*Ok6ZN_Z1#8A6EiGN4<2-}4uI zo{t_qJAd`-pMy6ky_Ld7hR+lks}CJqDl6_RK90x_%Ztm3Y+Xe~^0K0$bsL~%#fL@z zmlBxxrDQ_}$D&T@=*cAPGb-R=abLyoRO@EyDosJ^2 zUw&=6=Xh~#LUAun^_|$#yQk&Btq=bFs!?irT=jI4v;~j+u-kIKsV#)K5Kdz?aA=Hm z6D;1}`84ih@xBP-CXzyw5E;hGBje_+iV4Mqj}0p*pgl^oMc^{l|7(ZQZ}|X7_titD&X+_z5WP-nJtdWW=qBA@z+n zw{HyVF#n$Eb0>BHV7XCJZL)b_O6UJ;5yQ}q)FQs!3MM4motsNan`QDF>C(F~Qm=S2 zb+sjAxLw%ti+9Y1I|#NgpP7qWORk^0IjdC+(4tE>iF8hA#IHmcPwStwfVwW2?!f4*i<8$AC?9-hHXnnpMnoZ<%UbOnO4RO$=3-G12>_3#JCQHwTs_yiJ!hV@vW*qzri+)lM)z^5 zqaKwjrt9y%d_nfPcFr`C*LQDwcnS|z=#~cviAB9nqZ0Fz6PsV zj{GEt31lixvW8KHAIqAXYg0m3Fp<_Em}o&6!R1uzp<{?aKv z!C6Pvh?{M^-A3UFhQvuQBHF@^bj@1f8AxzS@C&ZQ%zFRXs&olNha(hVqDeNaC}=co zzRoxwZR5M+<1-KuLl}W22&WbnTix~QE`Q315>zE+z{XuM!)Qp6AgC@f2W3vH9nsWy z#uoN+)e9h)B?zOja)^U~9k*i(SOTDCRo-mlHkF{UKrrWnF{d=5Vrk5c6(j^gZK_>E zLr8bM5hWuyMQvXyZ_%{7e6{%;9d_$c4R#TPG%%J=xZo&2^azYl5FWP!r-XI8osgVA z4MXjWxKm^UEX&C`Ep*n577!gN5`UtRY!T&M&TdC+TfE%(c(Dc2%^O|NJ|uF)G2WM{La0*Nt(0`f+Ebl zGrM~q=lss^e1DJgJHK=Gre>^~d|~0<&z)_|+R1yLH`X(YpKIe=vc`yKrbxS~l@_z4 z+1eH}Q;cV=t(o^+Th?%XPV;kZ`%EL>#%mIjIHP&tLX)ru#iS`_w~EQE39E25UQAW9 zm`Z(O?R+sl&#LTdF*RDFj+-lJ)%J-w(b^^{B-TPWZyeF|rI5Fma3e@?3X$7sP9F|CFi!$= zzL=b~ZFDR!G@QCs*@eY~{VDJ$)v01cq}QwmA|vai(`(bm5eR<`OTme@>5i+Ft4=NB zj(52h!t=wwFOXbCoAjT0E>#=?-|_R_QOaxmKZ(glbbcU3Qw!@kPqj#*gKv{;^z+8wXDB%iJ|nT-#^pkg*{onq;pAKud?gf$*6sio`t2!3 zd@8ukC^T6_?SztyD9a+?GQQ0~1qG;Grv*=uz`q5G2SS0_iHb6E%7ldN2c$hQPC654 zO%e%s&8j0=396y+J^L03Qq#mtpU4a%(RUbFq@6Vg|8}LlAX# zF0AMc`kAy;&0PjbYquk)Jz`FPc%XHL9M^^Y!^TFjf*oQyUD*~mRDZ(7v%^hcg7P#; zF_;`uy;Avn(aCAO6lQ{`hj6P_MIcR})Q$Qy7Z$gdQy!MX%XSQ=TLzXfTCmP*_f|tVFdfowR>7%YHxNwN@6Z`~h!)|k>V!UbQDhoLHiQ^c6>Y1h!b*E{ zi8eP+QUt(T8|Q$l6{`IS2i@5?<#RNXR>y`DDe)i3rub1pBct|LKnO|~)ntScV01ZEtr-?ZmVc>MU9(CL<2#V`*Xnst~BNN^kKE-P!jSROEn|hKHR9JjuUj zIf?}1)z=_EL4aM7N04T=j({db+1b13(IMG)+;1ZADP032vw=pfGcs)KCxsO!PjKGY zzMo#Mq1`TiQJoqpfpxdv2NxCKvTzlEDRQZGDi?FZ8uwGQ_9-6FWUXCE&+^88!?D@~ zNFw=UkD?cLDo8*hZC7UcQ}7MXQ{kqL>In+ulQ5%$r5g2TBc()w&PR0kg*S>BUmhwm zQW%e39}kU?rnS+qNoDjYvxin`IrN$q2_{sDNBE1Xos^+m!l`l?e?Y<7zd1nNslD3I zo`%7EQOv2d7dnaaq<=*hB5YQ*r^8SN0%w6?rSkXENCJzSWVPGtuE<8%l!Tgs0>o<{h}1N zAhzN^C~In=Sl#86D79XC7qq(JXy_hL~BpxLGY`=2ykcf?iY?U453GpsQ0M@Fw*& zIZoccNjh`jQ?p_WT^!NOkQ---S>}R|&|hHO4KjcgcB(cJ?TqdCzB<~uI}|bM7aIk= zYZbFV4G71+b%?eP6711YB|46$TkiDK(nw!=GREIs{=nPCJUBRFgz}uOa(ieK>;(@t zMl!t_4L_gzL84lNY-PO?f&M&n@ps~0U7I;H@B(DXY@#HL{W>}wzw78S)XHxPyYsx# z&e>(s^&F|;DRkgVyBJ;Jpd|us zf}38%dJ_ui6kMBU(5&99)iSD$6^?wmq}lyq`n1q*oJne(->Q$;;F}vL%UCmIZHUb` zpxBJ*+*_hdEKvWE@R_wgiVOt(=~QxKInMIULx*|WE0oQARQaM%Zb+i#NaRi*j7#r+ z`NBGNm|@)|g*Jkp)0-pMd6p2ducd~yAaAV_BJ#GUiTc(;6PpRcQM8Z+uRlXJXWBU_ce$LDjET- z6l&>k^KwG1Akj!brE}jPc`X5#wNF6s1<9p|VhGn>(SS=Q4`uKuJ%}c2lvei?S|NEr@0<8n#hA zS1LE+mpM>gLsPt)9$!X?LlPL~Q#uuL%KCXbMI)lzwH_f(s|4F=<__1?5mOZfZ>xhh zMBSe4x1;Md1cM$Sz{tc!9}~52?|wzo6<;FK2~w!Ze=%Kg&*hkDB<6jsoVzTxy!mrEpfs zRc<=rvP*|DEi-A>%woE8a<%#kYriFC{(U-CCXLiMUaeGTdg;r=yvt?J!ppA1kVcs;wY`^Q5i>xB$|Q6~PMXw)^J4zY z53#}--`5!DV=mrasT%WIwNtutWhmR0cOu)WhX;d1mvSPTLJ+=05m{QcNwqjL35nv( zi3p_q6y~(`*Gu~cT*|{ggv7a1dA$S|l5|L1s!=s+fMrvON5)$w=KSUSQh#ccXYv%r zig1A9ENyc--RUDzak39*$b0{RfKGGHa5EBp0WxbS@Hk`anbeKp-qtBbYN(@a`Oou?;h_d3fC z?@Ba%8nX3z2gw9;v(ygSda4w*L7jjw z!$=)YRl@1b2o{j_;hy@1F)%s`@8w%eUA_d?t#}YvZIJz6Id91Pyj*OQlRXOX{T-71 z5p_L)E?9g1*dpT-!n}whdPRuA@5d4k+d^3QLa?II8`LROjEshXwdiOEM8lK|F)KyG z`ech{YdO}kRDk+?_&(qG3IN^`$9YR+fgjf*99N0?7^sBqcGNs^&Lu8gPT!nqzl+11 z=(kkif0rvrNe!lgR`g7B2}?1@pWMo@vzAqrad`h`eX4frlKD?)SUQ)BJ(5kTOBQ5*Ay+{7m}07mjX zZt$(YS8LI_W?zn+cc!Dt&!Z)1TYQtI$;DhVYLwDWCb!GEA^T{gqd1>9Egh$&Ft0>Q75-K7@E2^ zS_n>@10zBfWGw64uAL)%kx98}kC@xsO6}|;6dHD$(qFhm%ys~!v-7FXs`+*jqw5q+ zTMJVZxtzxvZJ*0~x?ND^g>of!)OExGvSM0ji`-U~^_v-E&M#$O6YT2Gt-ZyN1 zJY-2H-Y^_*7>+j##~X$j02mq6UA4QhzzqTMhT-xqmUzQ(ykU4qJoSe#1E zsMV`U!07m0ykS^({gFch5|U&!NBw_uykQu%i8l=YFaJcZ*6TioT49TnZ9t)MkmUzSP{o&TF8{yaV= literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0a9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0a9_states.bin.bz2 deleted file mode 100644 index 5893a49389626f26c5dcca5449c013fdf95c4fab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3825 zcmXY!ZA=^Imd7C!!pm$37|e_okpyFd?YUuQxOWw_B!p5(z_WxHY-S?F^^9lS+ubif z_5*730s$Ma=MwyieTDJ{m;hd4++L}v(iXpBkFB=Jz16l=tK~Jl)uxrHST3a@UAo#M zJ?ESckIsklJm>eCs?j=9(njVp{a>Wk==y&8yyJ6KL2F7%e}8}a@syO~DVhBz z&yTED)TX4QoV(S3=u^)hx{HVB|1JI3Sa78O*YJONsv&CtIsVj&0|=hgZ{Yr

    ApL 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0a9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0a9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..dab0fdca9034fdac7e1d7f6929919d4cd8a52b5e GIT binary patch literal 35946 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0ab_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0ab_states.bin.bz2 deleted file mode 100644 index 7deaece19bf2f1710c86173a2344ace19972ea04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1924 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≧@GvP}zhFJCoPHO&%)0M~Jrqrbr~Er5}(Z&H!uF z8xj9g(eG*GhwttG2`36z7Z|C3L`Gf-%06ZEi=Tw@KK@I}Y{79Ek5X4O~A#Qc@U9fOB*9#cx*9QiD znWyT~FTY*hA0{h6Syf?}cXKGNaC3n6_0g+?1dqZShOj{uLkeqT&n@ZPNqvLkx%T1c zlbUIr7gPyie~@Gdl3&JCI$qyrCJg#Kdt#^S(ZVfJJL?tmU-OjLqi*3@dn?5&q;nkI za>M4<8@Tnm0b+*>ghOk=-8$;ISQv4_G7C)}2>!yqMb|XkLiP1ad6+dgoyi?eQx}sS zy4?zw&lSqRl)kw_cOzD%JWg6`k6oEBeLgXBI6BOGGA+pJpWUBn7M?93x`N)lFY}lC zd$+AyWv_)J4g0g{Rel)pbL~f)$&+VGb}8-4-JnduI2Td!vxzH06b&RsB#8kgkrYcP z$?yxCu$(5_%&ScD%mudsR(Rth8XvH*^u)zhN!Jokrj*|C$Rr|T)NS*f_LX7w(J3rf zXE!wDygD6I&9>ovKuur>Q@Y%}+iELsqj5^Wq1k8hX#M9_mGaGRoy&ULqv$Mc=PkM! zG;0xCAox@z`hp94Hnva!*g#}tR1tj)Y2&k@OhHux0Y5%1sDjtgwbGhXlG*^FoT5jA zEL@Hcs=zVtT@B(^I`sZu3vo}TlmKM~xHv@-)vMD|qA$aR6NOeyREULVm?R`BxdC|q z6gryRuZATqkcrwSI7X!(V^i&Eryy?u@T892}->kGo~3CT#ybD;=xKUOJ91^ zJYAH^`}}HlDl>Rni61MeSCmS7)W)z*x!!?eRYMQ*zd{lhzf|M|({S}ge5uj{Sx^!J z40G6g_P8F$O$hhiKp#tklJ1{Uy1Azo6!#1cT$5mAfNdZ4c*(8g)-v#lk1F06IiqBh zIXb$S-CSD`lS*kLMX{_*U%=hn7_Up*uXib3Hb0naV}m;%$)iiXL^ zc-O3J^rn?O|LMkDBw=KfE?P>RsX+*RA{Q#ug&BZtBt<3H7%&!#k?&hKuyO!eJhJCZ7NXC`mqSr{h>NPjXUE>%fAk?nwqK?k9>7o*&9*U@OG zSiGtTTlAC3KZbk{aB_lv>OdQZ1g1!B$_WC^{v^ZRG&s8&>fP`ke(5=g zPduda&=^hra!53%4c9HGGam=TnJ;R7kcXrget1(|9r;@`@bJdh&X>NQwX}d!+v{|N zYU=l>jYFczy*QeBye_jiyQp{DFAN?eHy#!(9>(nRzON6rPr27a!q48&xiEGBV16WP zZmzjDjK1stM{B{lIF!x5IY+vupVT^VRkD0YL_#KPhcRJUQ&^as?=e%^c;$H8C229OFOwX+b?g4?EFoNz3QJ)3s8YT=-3|-P0adv z9a-_SnwkW4$y(2u_8Z@f_2j-WBy}Kc2-hi0mofGN8nGyiPW0R%V9c;2H%6<<^rj*X zV6*vQvY+ihNj5tI!xdNc4F#3IC)^O8VDqjHe_K*G#u?Q43d+}G4T`UWh0_HNF}vbo z-X+FmsPoLEh=6S4M1_bD0rx>uv}gobDvE{;b{{~%U4grV1@F}(FUksW=v z(#tCo2JiNEN#$a)mR9Jp^xnOB4F@>7@gypFam?LE%F!3BxSnz^S|&TAIspK%093NY sp@3>3N?)R*OS(vfB^s6nasl#m63gA==;%D&cyV>~Y+}@1WzX7w0fp;Hxc~qF diff --git a/client/resources/hardnested_tables/bitflip_0_0ad_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0ad_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..171ee031255b5e6ab89955f7986b4b1af9da13ad GIT binary patch literal 27204 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 Po8|^me6AZ`_T~QrlUAK> literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0af_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0af_states.bin.bz2 deleted file mode 100644 index 3e99de95cdec72738ec5d80a2ab21418fae2076e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1409 zcmZvUZBUX20DxttRxr{Ofll2TQ>VV;0FvSSkJ?El&YO#1yS&y0b&-JSul?Hd=lS#86L}%)I4Ob=kjP+4 zNU2UiGkbeGb@%&WVe`JFD3}T64#Qlpfq6uDxT7=NQRkfK;~4Y7bf^D7W*lQ@WwD7j z5Q4^IPE3&Pyx-MXdKP=+2o`~hI@)o=2_uv_X<&tmp3%_)LDYWJXtv^%D=y#^vGCII zlBt^3)|;AR;E^m7tlV%D@hRs2hE8p56(m%6bXQ~iS=tm9%vL}2dv9U6XX#}X&j9#XXh9HrX>i<)m01P?TZ`l3qobDk?m z*i@Qvh?0CgoCFD3CGVUElv335L66Eb$n-FH$!KvwCI0nNmY^{9;jG;kV=(; zQdww7Q4>up+y6xeKEJohBJie40UjY=OgeQXJ_TPUUxM< zf<0zn!Jh@zJ`k-Wo6PI#?H_VmYM?Sy87k-W>O+0i>IvTZ;pJHOo#KUj+$+(WYjAsC zX7}5a)nvpc=N+GPzx!FXEi&cV-XxA1>Ymeee427;qlKaWr{Hb>U~|zjXyKSA0Q00W zVYjH^Dd6c*nIh%}LjVg<0!qA#y>kX^_^#UJI>!jGhj}EOj;Ug@b%u)Cp<3yv(bRNa z5LH^A6R9nu?z07?0r*$UrW7Shkal1mt&!{A#aLopX>xsxMJ*4&*_(T94UmMvLUheT zcp#NYYPjO&7k6?N(zajaA@TU?>LykPFE!K3d!ZOL@P$Yrt>2C12u0{D69z3FVY7_i z^#NsRfpKE#l9kI9n?@Jd{k|^dZZnq)kaEM~R$x}L+R>TgVu8%mHk;)k4)t=aH=JXQ zv)vs@mX&TN$BXl4kec^Y-VT!T{>Og&B;%!sRXpv$K*6r^@tC!tSYt1ei z&2Og@c5@E%2CUjj8{B_!;Iz45b{5PHgck#<&Ji^?6yQCme$l$b)vbn4rMh| zPWZ~2>N}gen@=#=(+_W$HQ-&{Q3!H z^;(Pr-3YLXDeRt_uqxC=6_=YP$dII=KhAqZx%#2soM9cRG50}s9|Fvh+b@@d0x~X_ zY0bo*Acd0jKE6II;nJX^E6K6#UOyMHHDzUQmA&wZuQzs1ggu?kW5g;vH+(1joP)OF zBR3FfgzP=HuGwdKNMn_NZ7i!*VhV4UZ2lEum#1a+n~zd%TzYxjh`V z$h9;e4|xVwJXR^!dguE1ehup3ozZ%~bAJ+kDmhcI@2RBCpYYP-ORw7tw~unFf@0bY z#6RfQcczm$jBho}XgDI^JVca^^+*zQI)fw;)RIyd7?x|YH+?n;P5p@1_XVi{VUr7J z*cg_V#nztK8J(iy^}*YGNtYQ!77lw!H?EW#F%$A2f2mdNTtP2a$BD}#l6p)5J_p3w zA{r>6I%ArGw5X&}ZYJEDiuPJa(J*^zMl4;$A>J`up9&r{73j9#BA}N-Q2{YZp^%1A zpcq*)keE%sTshJXf+Qjql6ZrEF)j#icdPDzI6ycI2|nmf$Y&!#P&ori#2AAmWDHHE z0M9@*;26RPD6q8QMB+#S8BUDGgn$wvRH*frVC#htR!l|-5_-h6A&DnQhGi6{6m0g_ N25Cx)y?QFm{{leGm=pj2 diff --git a/client/resources/hardnested_tables/bitflip_0_0af_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0af_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..cb3b19e4447f979f4da6e1ba29d39cb17edca2f3 GIT binary patch literal 15338 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0b0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0b0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..4bf9b403e682b7d810d377726cec2c6525826eae GIT binary patch literal 17155 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0b4_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0b4_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8de773b3fca79d8ab3cf7d50175b0af5b8d42454 GIT binary patch literal 24777 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0bc_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0bc_states.bin.bz2 deleted file mode 100644 index 19e1fe89ad8578ad77686020ca213fb0b21ec1d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1129 zcmXxYT}%^q008iV&g<8W3T?0dEHH=AO5s-Tl08&DZ4uZ?gF>O6%Lu)Hw`DF_(kx1F zn^^h*v{#FuxLe|Mb%M%>-udJ-#@>17nCw9_A29KuO`5D(409UrbGp6k_xN*v_}Mnf zwa4b$^CG$b4-mAe8Su&+C5}^#OyQo0@PF%=II$;4XYzyj+}MYjIkR@ih_WR<%A~FuGcGl zCtu0=mS4149(G9319vYCE#*DWEJ1v$Dl_WYXD!&9YA={D9DIL7A*kIiQKSBD>)2YE z+&pd_btPKVJCvQ_L1XxaS<2-pYRCtq3**F420p0LzMOsCH9cx@U;DK%os_0};@W!;VPHGTPG+w+;t}8tjW;VI|_r} zx|#H{>Mmf04VjkZOBZV@*3_AgHm_Us1z#*5j6(uGw(;>BRZ3 zP{Z`!t!F!ip}<57Tfb}#h*HrRICpvELYrl`dO%)FtGEFwTWqH-}O=PN% zKi4Ymjuht_bv?1R3nd$e?!0p`8)rQH0+*!w=~+lYP9SO0)}S)#QG1-lt&r!LNtyH4 z%J4@N$FNQ-Yl1SA1t`Q*Sal_C_Qkv3Y$)v&-DieY&K!zlk7NA=IJO|C056bGGHR4W za*_C8(pM_@?GeQb&c`T^GB9S3ZI^y331EH=SHYcDpsd&4>*!HZFh!^kDIhIKfq8VJ z!s=u$<%VLnQ71UHJJuG==Mt#0Vv3e?6GsXE0&Kbsj-}}X}!SA@|Sny>0>;Xfl6c9a_sD< Y#`sDO0~?~R*`GI`sC)mQ()c+1FCw_aTmS$7 diff --git a/client/resources/hardnested_tables/bitflip_0_0bc_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0bc_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..60ed5333257ba446924cbe82895667b175040bad GIT binary patch literal 18407 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 JBn46Y{s4xXro{jN diff --git a/client/resources/hardnested_tables/bitflip_0_0c0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0c0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..2d542516abf581ab8171fcecf5bd40d17d1bd607 GIT binary patch literal 15231 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0cc_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0cc_states.bin.bz2 deleted file mode 100644 index 38fc1e0aeb04221a6f2f8cd7fc34f59a21bdf331..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1614 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0d1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0d1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0c9ca6ebd3b62b85fbf99c1cdb80cfc5465a89ec GIT binary patch literal 37196 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 OXZ#6&x8Ag^>3;#3G%1Gw literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0d3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0d3_states.bin.bz2 deleted file mode 100644 index cb9afb002e694c10a1d31d3a22625ab80daba6f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2082 zcmX|~%XEsJ(}TRot8z}U)lTnhtGdAK7Q?OO81a3m%F2Jhl&9P5l`26PJHl zvDa>5G2rjx%1#Lud~ggf6L5DC z>vDd${WvQe=*j%s_L<;r`@OZ-yl;dk)8r{=pb?`-IWFt%n~9&!{&2zDh$QZ3{ZMOt zH9LJgH~V5*FmV;0>{=uykm-|<%`?bC_bp;L$m6lF4WKjlB>g+HpovP#@yM$D1#Ln? zIBXL!al$s3XKTRD&-Xjm<)DF4md|f^sJVU*Win-)xayohpaVl}k~zRJPrC+XpvO#T zIo(sy^lLr(fb_JY@cbGB^AnT>QFtXZWhO|v%ZPK0qwmtgK}e&Hr}xZ7m6Kt%IhAP< zrCT)`b)wRS1r)eO&4I?0H8FHS^)=%yhmxj2(wmRD;#8a}ZPqa1_6l6zw{VS0dO}_e z+RQo~36JY6pmGtzQ5;9jiV#u{aO5fgmgEIcoRdwP01iZrC3`&4}b4!m`L$)35;Q&9HA3dt>qgX)=ku80aR z3CULbO2>}y&CVrwE40nDwNIPA8LEF4J-KjlY%SODOl2L|hsMoDf6J8bR{ixjCgLF` z1T$S*UyR~j-rFnu$-Re7Q%d(v?f#>stgtKG72eAAGITq|Lx1jW|5MObY!L2d+N}S&^VxRpgB?yQYFd@BRL_?6v84maXy>he zoVYpri?pm&#haLC@afV@gf`Eu{aWZTJqrFw&CfSA?lK2CS?us6Z~k2E}HSu9nGC}F88llUl%Sj*V0`HZ(D+F z{zLrDqhrwJmyyeNffDx0fj3ir+5V0-UmUGTd8GF@ZA>#HRMOs2SFWz4!^I^-=&Oe9 zw1}I&@}HHdH2ZF2(|h)*uVC12NmCAYGRXu}i+;+C5dEAY{s?j8as)n{Zs5WYSEnF7s2LO5^gaQtK57g(7RitY zqhM9Qo;%kdQB{}A;LWMa4 zPNgT$H=Q_rnv%3B6kZ{!vxqoClEN9EIH9M%<4tT47i!?ks@Ua&q_1 zFCNp|V_UeA6V7gvlO@Ns%nM3cqjFXm@)s2{PCKM9j`mYJWst{#0=U8}M_iz)P-WpU z7|^FX#?8Y-b2HuH0+k&+Vyf)|YJNFzc-SnEl#22!$kW?=Qbx-w=%NPZWd+6f`Fy` zMfLDn-fL;23uKarizA`E706#tZNcL17M2QJ*8;Hf2a^-*^H0{>csD%_xYE9ewF^RC yndE-HRDrCcg!B;YZx$E?NwzG)#Olxrn$(Hivxow>eGI>;yqlQvv%mj0Y4rc(6RM2> diff --git a/client/resources/hardnested_tables/bitflip_0_0d3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0d3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..dcf6b9deb2eb8d00d0c1a047da227ae71b6af4fb GIT binary patch literal 22943 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0d5_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0d5_states.bin.bz2 deleted file mode 100644 index ae6e859a852ad98d1948f29dfcdd3a1f87f102a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2460 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 NE`SoQn#SkO`Cpxp%0>VH literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0d7_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0d7_states.bin.bz2 deleted file mode 100644 index 90c5626138b4bc1800acefa498926d675510c665..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1352 zcmV-O1-JS_T4*^jL0KkKS*c#7asUt}|Np~X9UbwXuRRF3;~$8Tz#qUJRS|+6T?l}H z062g_Xo=tn-v9sr00000000DV0MHr+fCidm02(yN0MU~K1|R?q02%{8&;Zj+fCEOE z02(r2fW!a+zym;N8UPw;kN{}YAOl8B5Ey^}H~?r313&{!G5`%4WB_Q%f&&l$2LKHL zplASTra%FsOn?m;FhF7e04XXW1gDZSMK%-Kb}RjXh6MlW2`IQ`CB7 z#GkfN0rKS~FJl!~qK`z&9^yUY9-2H6UdlZ2FsBGSfz)902fn_SLUbz(7(50adDuF- zJ;(hzosQ9w@R^KoFLZxc#pW(XNcd3l1Cz}M1xpN)^OCt0k%IUas?7U`vSsQnzl_aQp`j2T|02gP`GE>4(662Xg99Z0eVSW$~_y@egg$nCP+g1Ne>!a3=y} zc9*Km{43~8od9%ITqW|jP7|X1=3lYNej$nUnON>eh*PbKrv_XO!xmjvDTgW5FlFGlGZ$eyi-dSAeMflhF<|KE zccv^Irz4Y*cP@#BIA!&*(6Hp4R|Yt6a_Vs4#!Sv!I4S4@z)WC2Qo{QK0oXV``1gmj zavm{ur+If7dYW@U`3uBA&Px~qYea+T@>7or&8E*4f;x~>-sgN88eF~Z8>m+3B5 z!Jil9<;jkW{I6BzduQQxyHBuP%k>V99x}xTn}mNi}zIUS&N4cY@^N| zB6UT1R#fRF>s8S%M&qm3?n0|bzc(v?~&ex-Yc+vwR_IzfgTBU zTr2b(uaL>g7m-(deF^pp#RQe8IWb&6$m(KJZ>EL+RkTS{UzN3Sp zPOI*|ca-PwerHnAdWYGp1 zsAS5pWMpAtm?JWlGMF-ktXj!NW=vREg2ouk$uPl|WW>tCF@<9WRtqr3MU1RqOk*&Z z$uh}f6!mP?vW-!Gpe;0B^ KI8czOUZrwNNMVuy diff --git a/client/resources/hardnested_tables/bitflip_0_0d7_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0d7_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..400120c8fe30437f1e8c8ec33ea81abcf10a8ee7 GIT binary patch literal 16061 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 U|IE?+74w}agwN*(zrOFk0OE`y_y7O^ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0db_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0db_states.bin.bz2 deleted file mode 100644 index 353c48c88208403f0cfd3208d24d7edde9bed999..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1444 zcmV;V1zY+;T4*^jL0KkKStIjv)&K_ffB*GYLAQzYK^#C45D)+mKmY-l0r6lJKm<@Z z0Dy=9L)qX9UjP6A00000000004rs}VfC-4ejW8g@V3{xo!P2<#9)~)2*9MI zh>7U~L8Uz>qe<#)C~4%$s69N~ET%y=rg1jJv8 zE)=+taVyqPtLy~-l!!45D;82%CIc9zDVAU{OcM(#hDJ)oD8Ry)uohueCKx1-*SYqd zXPEUIaOnOo;CK^;DTk?e7w%qTK2q*So!m~wcO5aAXSmF`anPNXI$_|ulg0KdJ_pP* z*m)T+%3~P7_79x+PeUxi_KTyj?3u;>XX1XRO1qBcTt6}SuNCyC{+>@0#oc@7)UT|5 zqs3n-e52h%-+2|}dx7ztjt_}DoJZ{CxK@Z+x)nCSo&XC{hnuZ?zs5Z@?N*|JH4m2&uP)c{x4F`w0@7d ze8-A-nL9CjDSS(TlZEa+CHu!0Vcj|Grtmnsot=kEhZ)$*k29rv$7XbW3D|V$-I>N8 zQ^C=nFyp(}4@?MEi_X0UUXkwu$na-( zWz(aHV+>`6STSHT46wW-^&f86zyL#w#WkF;+#BGcuV>7YQ9OW-}?4 zSz^q%QIeB_bhmE}0fGmJArm!evZmWLPs9jthV~Rl^2jDqJFTz|58` z7&3HH=~QB~3|3WwWmu_(8I_rgt|})}8G^Vmm@Hrz#bnDcafM?mj7d0UDbp*D{}*yaI8cxy^K;hM{h`wU diff --git a/client/resources/hardnested_tables/bitflip_0_0db_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0db_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..d89176694a8af46986518d0f2970ef9de7e9682a GIT binary patch literal 15340 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 Axc~qF literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0dd_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0dd_states.bin.bz2 deleted file mode 100644 index 2d2e1970706f031b6d3402a49d506a482bc3fc07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1792 zcmV+b2mkm&T4*^jL0KkKSr+e4tN<5A|NsA0etZ#8Fw_@ea4}E-7hs0g1OO30fCQEx z00I(9kDL#J-0U<$u9@OU)-sq{9yvnVE~^98Nt8(!WUm z(Cl8Pq`f8JyDub}vkyPbz}#p_%=Un?#T{g<$MmL9>!-W?7f zz(0V)?hY<9`$yV86W9l_dxiSR@SbON`4$!L6YvjlV)+X%GIHofYn8J^_zoqosT=BaVV>3UjIy1<;xT1~ zkHlEKkn}vCBNK~*i!4@8F@w-uJe+5>(DWUgN%9`oi=)NhaX9x5JXc`zJRjbB-UpI+ z58Qn0`G>$iX!1V8`W|WPVLfXcSs9ByGojO>_AGIk?qxeL>4PlHA3^RozNh*>#rub~ z=^hD&E6sVhPbWtbd&B1=idZrn4*~c`%=!nsaPb~1CLHWM70ft12N~0`VbEqcTwr*e zIDV%S^Nu=ndA&#IKa_V~wtgY#AND#^%+LG30rZ^@Q1!nM_#AY;6V~GF$7kpn#yhSa zA?ag0TpU~+EO{N*@CR#SkG}sikA0>9c>>k4}je6JXJxBPSv+=6& zc^Lf9+WoK6`JaIBSJu9_6VS)Rd!D8l^^aNR$E@S@9UoBtn#1$Haniq;J1hMkmF!sd zJ%@GZUpnz$6Wm{vuga>wAyzCUk5cwM1I&ICi|SXoU(`RKaPU4=(ef|pU(9_cxcuwh zxV^*XV={lq@w49H`wwZ+{HLhyzLVH_4ukU-ydI@5>{wFboLo}iCGwBByR7WY`>xBy zj+bSadf4vE^#5;ns5_49_8(&Gc23FZ525zEo})jk2O=Ga?jZO`5nLIFkU$89VKE5; zXV4N5Z6Eo4u0Lb&zVghUb#e5aI(yDN3#S*xeFk3wWd29pcpO(3;XZZqr^J5|>QB1A zjXp*3zmY@YPpM@3Pt<)6xcHv4+L-pMj*0AC9+bLRvD3{vkKF8cKaGAvB>ak_^%r8x zEFa`DWri47V#0J>6BZ@JIALONSmAJF!!cMd@OTt>A7RAl;85Vo24FiG1N4|yV#Q*f zM~QICzVfeP6v=c)bHEo8Tx7Cg;JYSL@J<$90(t`OQIeS|zj&P};bfgBiGz%z$W-iB z6B4e);yVt+?o)#X8Cb?Us&`pTvNGtpE|u6kRg1FeS!YR$?~?4qjCdsAE)k0+1h|p@ zYbeH6GE8NdvErVQpXykqC5m~J$CFv!CzgN5*?Lk0|CaITn_fUg9^@e*7dJQtHOWkrTeG6#}* zJFYCTixjxbW?U?HIvh{hs6TR-0`7u5l1sn~h-DSU1(*`xiejO_I2iv_cq!nrvYtbS z7CkP92L}_2rIsccjOA+Fw4Mj;^J_Z85x+&;Nal!GP+z@V(HN`!v;nS zR!p23Tv=vb3b-!nbXe(^99&&GOtQ(B4l0+KL(-J)spL+B$R0)5c%CE3FzM07bnH%x zg3A%;$4peh3Gq-#nEtiE5$o1?1y4-v&G$A*I@2UGOpu`h{eM=xS2R! z1ITteyN=}XaoDkjJ3A#y_+pj*!c?Ows#Ep-swx%50;&Gtm6eRfOp+v@B19~NgmG3S zD7YlNiX`Zi;x#g$mH7BW*YmO~~6Oj20EEHJBv3gBUk ilQ_5ogCT{B7*-f#3QRF6j9JJ3#oUoj6eI<^)9V1_Kwu^S diff --git a/client/resources/hardnested_tables/bitflip_0_0dd_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0dd_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..9e7ae09257a2360e24323e133171e82dbe75cef2 GIT binary patch literal 17854 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0df_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0df_states.bin.bz2 deleted file mode 100644 index 14ca3fcdae9965c792aaddef798e1defde36cdb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1084 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0e4_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0e4_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..07135ccf2e2f291985cc0dafbd9b360add6b89b1 GIT binary patch literal 25961 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0f1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0f1_states.bin.bz2 deleted file mode 100644 index b263afc60d64c784d8f33710139047f9bba33d80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13180 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0f1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0f1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f54d02f01b60a16f526c1c3173d0576cefa56280 GIT binary patch literal 50780 zcmeI53z!^LwWwEBSJ%|^bl09_CS>v;=`cxV!Z4Z12{A-O$_Mg{4CJ7opv@y>0t`tQ za&rQDQ(O$9KtM!A^lEz$9|&GNz=d#B+6xFGO89(%uQMEZ1R*3C0tO9r|Fx@U@-)Ix z&*we2=KGTFuE*YMuf5)Tt-Zbd=C_@(bnTJf75V3DzHyb@y)j7+eb|%#v!?6Ho-2Ej zL?lVt68|U zrRVOAu^e2CWPklqzI$UJek?|uB-!A3;zcrbO;@WvJzZOOV{JMX3H6y-@^&$?dKLJ&_KcBI z63)D`rz`~q3$`2wNSkIRNu(goD@KZfNXHNkKPW{Y?J`ol!o=<ww-#1}#2#r!Dz8 zpp4z0HU;2vMjA_8NX|7$DZY z(@dQcE*->636QletYfM8f?|rlZ478^pkouBoyoXc6(n~9_kpjCM_z>TVo&;HKLa-0 zR(a>44;x14wTU!~*Qw0XqqlaZ5v5F~&M5^`9k>Thf>_1L&D0xHje+dX5Pzaxt@D$9 zag`KZM(iXZq%+^h*lwN(WE2G0%)Pc2?l%}2wIHlXVMwoZn_g$ES?bI%0aGh&vq5P$ zPm~HjmN3>U^Fc80@TB+yN=h#pIfS`%dDLGCXxwi!@@DSm2Ejhh9ZsQL-dA)7TbVWHD!-QRGmJDdi}?*a!}ZpSphjTn zUSMLs#GC>~kUS4?Ivw!D=)-mJN%G&AP1;i;9Y4V5BDzhI9;D z+cR{`l)}RswI!NshkwQc;r&o;P8mhH7%G81V_}**lUKuLpIJE8#JQE`78x6=Y$*Q% z{^XUzLAnw#+#r5ZF4jB~H*{Fg5nDzEz+9_NkxTbEAbOh;F)%hM{?hThlG4~F2GCsy z>_nHKh|bR_Asld@QtHUxzLssINV5)Db79Y7l3b)if>oRiDQ6_<7?VxjCfT2PaJ;HW zP28IhbNfx_YpVzJ061N5B3v13^2PnH?1^RnHC>T-{d#2#TA)sHYq}u0eHf#&1!=u* zu_p_?>KU#pezO#+)~H9YEdg%QZ%((ZV$Y zrrOZ1?S_D${OYZSUykEx-YP3?wXSB+Cm6X7+>Ym=UMqWt7Kgn|)g+MKmUMzUDJ$NW z@X{6tqU;4xCsHI`{@rD$6=0Bm2O% z%60nysIp_wdz6vm-pkEfL07wxOBjs9=Q(r>J2GG$Cn^<8OxF7b83DJ8+T?#<1_<0c z-_(Lp1x0f|zi9pg1CZxJBQbMxqS8~$_1*p&&C<8F80kwM07TwcpsM;VIyr*j+y$^l zFp>xOesa>U?eNEs9po@@oXj9k0j7QxJ7Jy?>pP%%1ok>cy0LFu?vL)Nqsofb72ZS_ zi)bm+?B~PiJl~b@L=_hKKnhj`pv9!YDIAzi{>z1^+iPR0{f1&hYfiUc%cHzvz1_rn zqkQrCUBj}&f{@v2CLWoa$^YNAv@sCS^f5Z`IpZ?ZskBD8A<|=KF0(&29QwYCRFWJ* zw-9|Fe9sGQ`>IY$uw*Wfhb$d2esqzPe#7ie32NgJp^-3$TUXK7zC8UcBQIhl2FbyaivG)h?fiFrAFR$Jul3KjgmyE`DLrx zG0FJOtZ0*#)ZtpFObuaWh6H4AC3)U`hf}DOOI_sJrgh^>;N`woq?5wRIUS0AD0z*^3z%1 z@~aGOo_8tA<1BE8VrC-Z64*X!B|2%WuSUQT^Du2&idJPq0ifJbdYgbQEbNQ53(b|E zR^9@z>7cGJ`K8jut41a(h|bz#Zz04`8a5z;<>4(fJK^0!9kNH}Fl(qcL=s4>##6b9fsF)%`-g z5AeXvseC{F;xL*YO2utf??k*Vpy3fn*jITWL@I&4#45GFb9|j(FsS=DrQNz z0`mj&L00g4hH7X?Z3kcFW-~MfmQXTN3xWoFXNA4MJZS-s!B+<+$zrrF_jQQDacF6} z_$Y)3GP!?DR}lY0f$5RUp}N_CcTIvjlX&76dExQ~=+4L+FaR%K)x7*sZIWPlPMQX!$=5-p^&QocnGa)FAUdHJwR`9nVF%d)@1#KmA8g>{L^=4h zz@w@n)X@=O8cd$xCOSP%E=ctpBgIBXo*Q{oXDQavby-)g2mx68xkZJPxQJH4A;IaB zaGpN-DA3bMo=)OnPPUG~=^+osc{=P}VEWWQnF@5gSX|s>M>K$=Bv_DxK@xo5QG;JypE5RYgiAhw5H>+Dv@$$vEnQQYQ z0m$EsGxCgTVQ{Gysej^;ruLpjUlH|Q82LRw;Cv0aaC;aRO|9hkQFD=R;z51VV2zje zcZ8~onWvX|SS3gD25v6LUVT#e%J+sEz*B?iS6jHa8ci_<713eVyMxe9gWsPA)Iywx z6Tw;VVPptV3Fr1YJzHB9KSGUpgdL~?(gu}wD2~}bLuf!>ATG`sx=pSIdjrLT_&sZO zD4pioj-2;Pae1Kj7~VFbp>vADj+p?mC-m_CpgQ{TFZkN&_^NCU+=?-mFVqSUPsMa0 z&PyN<3tx$;8K1;|Aw=G(CQy0fG9y5@NpO!bzuV9Uea;wId!ZF4aqeat?TMXFFn*<+ zGv04xKD2R$S{x-45aAG_C?Pts1U8FACwS7(XRQf?C5PxxcgDklj*Yrw{1}c4{Np1j zc_ws-M2%3k2W$2;_W2QW`6;0hBMw6Qz% zVI*@4XuZlu^SFofco;8D<|^jKWf+z@W*0O%v&@N-!y0DhOWbAf(o(GD{PiBQ$TW+c z+lT?=5Dp&QB8g+?3w&-cvHE%wA@0cwc)t!Wc8)&&$sDxNp|OX2P@#E`*Bf};Wzsb2 z=V}y{w;%*{O3SpON~ASuK5nU$PR6(=d+s%m*HKdd?tT+5_&5Ut zWljPw=6+#t#~rIDZu zLC*rZnunl=rngIev{kGl-SMx{?|V_Hm7aHYArB_#?Dsu_?FF`fkMd*IutS}Bs`%8VQfouKQ&l8*r!$`BGCw0#cUJ&x4gmLuVWwXOjL8Kl>2PZl z;~7L2tX3~bx(_yT>lR=xSr!Ru#~_7)e+lC_kTG2Y3VMH#suY+GQ=8_GNnX_E4mr3O z=PfDI+X77FWVH7G;0}zdKiuSUHHVYs;iGkOYpDy-@lfGJgv?Rk_^fF(K*wiYXyi(e zRzwy|T*&7mN(D^F^i$JTR8;{(en63WF0$=OWcn6UJ0A)S8FN1`RqD90F%d>kL4s+# zX*{wJ!+E)>#rhP8ZBv-f$Br4g$a_ALDkyRBgx?Am(Z;_72OQ>K`wk=T$b~hHWgQLa z&*yVMhm{N#hCWg(e*_Xb8sw`0xB+XK0eSO~t;#0z?fh)!E=HQ0ypd*4!W0JNP-Wz8 zXX9wX;twTlA<`lKHl&bWhE{w=2d&y*2XmN7bCc&_#rG=MAM%IhdDVlAyb&2M9nh~| zofAe7v&;$w3r1Nf5KAlu*RYw9}K! z0UL``v+Fzp{%523fS@%I|4v7vt9NhgO-h9-a`Au`-dk0V`qO?dJX2F6SA7l8gf-`X zn^DYUMZ|OHY+t@JRjJ?wsPgx8ocxXPI!`n4nW}u2qanOj3EHF>BTnRI#-!8woQALV zX$fMnvhcTKXfuz2S)z#r<^hzn3g3ftS<C2+pAu9iHo7HVrv6z1G8Mhzwz*?np1%PE8g73G%i84Pc!jbp_$a&R%xb$ z9?K%NDn7fgPLmL*kt#%Vb4DTSu)^>8gh?YRj=NR6iUfp9CJlC!>UiGV8q7% zxl&D{Yf-6sm^jXVW(kIfF_?*K3GJO%nyTt6|z#J{ly-Y554({)v6AfNWC{a*88 zbQj@Rpp@J!0@^kNmNVhCg5A=&rt207uudQz9p#1aV0)ug0W4t!OBv3?)53U_i9e4tS*qW}Ybp%U zgWD8FzWSpTrQ;k^SJuei92=>x$ze?C6<}rqX3$2}7r)08EQP%#rWu<+ZOPJ+D*lkW z#ZnkI;#$n29WZU9@-Vup-LFHgJ~Lpo9KaS*O_Gc?@)BOilQW<}UMVNOGErIHX5to_ zb!PGX2T&^Loyb3pmR{H3uV*~0BFlJ7RMNIABzh;`WJ-2dGca(oG}#$d16b|R@|HS* zY*#wa*@UMVna1tZ9FIdd^vjTTgBc217$5j(rgJq7%K+A?Cb*nernT zo{hot`U8C5a|}L~4cuA{RWX=;HMPT1YK0VOqXHCm{a`hc=mb008mK^`qt&b~S>Z<- zE@!1B_KT4Z8}Y_1ew3ej=)=!Xl`0C!Cw_;Rl*6qxF*2D*Lo4U4)$xU(=DMASdIe#; z5FZiq3PEa?F?SKlk(}ZCGK1!hoi@KjItAnRXp8=ro*ZlH!Ha5Bn_vZe4&oJ}DQSvy4N~=KNb=PJYooQ73R9I&% zL;~=8i-=>0qZ)f3gTB@F8k!MCGYYbQNI+b26R^ln8nMW&AeJudsbWN|_5fhOvO7?X z6kv;<@i#f{mkMOO5C}X=!ycXuJ`*ALhnh6KCUSE@P3;a4snP1*XHEQuL00h@&Os1n zq)SiDy1Ybed>l*pvuzA0LKPf=?v6B=rScW;;Y2=Ew)SCQ#_vQ-6xmzY+m#-?geYt;3N~n7k!-`_me_Q*{!C{gI8wrRZPl@_M z2*LXm0&CvMtfE|EqEdq*MdRr2)Hr$=9b+n|8QxhLR#DCfwX1mrFG8ba$IkUV&HLIh z`Rff`L6kE~b-a$+GL7b?%UX!D2Q@~k-axfO?I;@`fJHsXQrDhx?P1&pN_y0di6BGC z18FJQPe}se{%3HrQ}`X^Hf+U4KP44EuRZ!6Cm5zK9B`rLIgRZOQqMxpf$S~-7Y=Jl zq4dM9a|`E4*bB)0YWkL?!4kG6`NT;AKL_{NZ{uJcnj3Z@kZ*HSmQBOj8o30ZuV>~(@qAh~AVfP{IEkIbm zf~TLQy(K<)jY~9r2s~AHB6v$P?ld|hP_ha;`97%LEo)~0l%}DJ0+Geq=hT@3DJ0$1 zB!@t%i6(Af>1(bY&Zavqpu0#$agQio2$wW#1k8>*P4{7G6`qOlKFCN2;|5?r0XxU? zM)^-={}33Gl1kH%c><0)d zW8T&F#aU3cw|pQY*Dhulx+eRHFB5r0v|Kk};!ndTH!fC=`J$1}-eIDi`QQWKog5>5 zH$jPwP>!rhy#b>6n^@>}up?JZ4x-^S$9UB!Kx1hPmf9&}XTOG2Hm<#b2FZmze#_uJ7D#LP51;b)-|a2qJPuJ zX{}v7x*eT^Zl+?_9G-Y|yRM_|;1|q5;jyIHm_~z#GkNAf0ITr{e&Uk8bJbg*vKWvSQC8&tbY_4{l_`zBQm@2-OFI-#eenX81K@f3p?tjZMtw*L;#A@2&;`Ut~7>n zyoryQg}ctG7%E7PN0x8bN+PNZ8J?NUwA#?Z$$z(o z>joJLGZQ1VWf|{)3=}7R!ymg-nWXF0u``d`9Y{AC@spW;d=7D3L}b3*?*j`<=j&S@ z=)>qpa}Q*Y^(`05X<51sX~)>IMISdGZZ8q_brXYP7$$ zdI7EhNQe))l`oI0zwyeh;`^MsO8}Bc{UZsLSLysm3~_jEps)g~W*RLp{Igafq^FUY zjtJ05^>9w5qn4Xyuj?v<>ISfwhu1a0X0ypPoAOc`c^CgQd9b4RT989p;$YDD`zVwCAutG7`iO1{0pk3BOq`T>%PZQiB%UtX^aXorPx z&}F%iA`7)j+LDQkqQTzRJTbd&s>@kULl`6b!zsY)H^)457|Rf!sFxtbvawic46009 zV-r{b6^*ChVLhhwp{}ut>yf30`%*IHdeqor`Wun#%5Zl5;bX9dP3DP|g!FGrSZx8L zZy7E$2#5v|mr``AM|Y4uvjw$9tE!5MX&{h`+e|dM0g_M~)TXv-oUp#oi&DQw(av9e zX}3^2-S0n5=QchK6y1lL9W4rDNOd6=(*}Gn!MNMQa&I1fRH?|yLk&s2>#}bSv4#FY z$LK_~bud<_RW+k7JiN|zUn{@=h|Bm_UHbhP5Q2!Gns_SUA-Q%={*Om(1#sA1uSPgi}}fg5Ea7kgiAsILpl zA)q#(NnIBnUTny5?I^4(mruJW459A6&|nJz;1L91=d#`MhzMd77C<^{EtEGFqz*>U~i`RLQaWGY3BlNn5?$R1lCA7|T`#c=^H*aPPLT5XTI> zVF0p)mz^t+=^I|dqQVCOVAs`zRZAf0N9t@nMknDxE8WJ1Rq)%|&3YqKx3>j_y9RiR zf0r`*d0~eB#hoaVuH_g-9zFPfymJw=Sf(co>R*@fnoFbmTWD%iu%i^6D z5JFwzD$fAbfNzujDK{R*A4>4J*56?NUMz8gyd$Flnc(qYSu;PH@641-(%WG;|bB>!yM9XtKyDA zpdNzedl1CE8TfyAePJCmN=+QL3XKt>B-rdprynzCE>QWa!^A^$E&7gIb^_Ns( z-3|gz)OfHik4y0x6@dI9U#Xr+b=08tjd$SkW*IbGN`?nd$7o|L4>GB0ygkVG zJ+Gozy?8Rv>{iL}=#m|5HJxDE>BbUu^Z0;0^_jO?@-MGs2rAzV(HUt3aL;uNga_i8 zmfV;8`8o!Y$^7#7DK*8n+jAX5u}lsH3JWyvp^hOWqbe2BC;A$4iYpHfBerccL;8}!7Cs3w<&j6XynHX zdC#Q|#rP%@FKx&Q9kN0PWMWq6fRxP&9jyM^u;;*5R_Kt1P*@wz3LUaS2erquLWiu- z0b3Fq%frvfuf;Fujonz1oa9_ zQkv-QvG(xyv{XU)hV;)0vgHb0QOTAoSShRT!-QX%EmzccX3CZ;&Q+=PUv*z5uNG6! zQ!HN$^&TW@x%6E6>giVB~gFJF10EmPlYHi9$5H z>@d4__y=Vk7DU;bq|E!Zt0}r-bx^+3p<6h`!s1xSHmbL38um>-H*RC;(Ak$HZ& zi`=9JwNb?p-^Nm6Zh*QzeKI0RjBU@tnEb7vz8(!6th8%6icf-pRzjvpLTO3L^P~z9 z2y$uF-{2P5erk%{Nu%bFYe^m8J2O@2@YdqlTLJcixdBxnK9_H(t&^9aaHwpF2hpMWV)ODaP&2Bdn{F`}JiI z%-nqwY@AAG%NbZYZ_9l4a2h&V_ZBJ0F+N$;kxtY{z}W1SB>8II9lt?7du8(d*tAI9 z9B^492{_D3x90YelBqeqT|Vgswa0wWJK zA@p7P&g~2wyi}8ftb+1!Jadu`jDfmOr`aF{TXgCszYPvL&D74)G)5AY$UQiRe%a}! zcG{>yS#t}&N@wcE=bojm9pv?EN+LBcp)s{fn!x=?Rl9j~5&4mf^YyrTc0Jo=!Y9-B zZl&#-{zT%UOJQft*|of#*$rNX6HW&eijuW_J`U0V@-sPShvcvv{Y2qenn&PTk3>}XY z!4J^R>@*uqcQ)B`5j=eTg^iHk3uHysKAZP8-5l0PI1bp;C9mK}px}^#k}ok9!nE#( z!D54vjSFm|WT1(XLG%rn0sXssQrgayDSt`zyIc!4KMgiNaU_J1e3JaB#bNwq3Q?#m zzg)k`jf23al}(?0dbmm*tmUD-kpwcEMwZv&6z{on$W4k$m{FL5+^bislRXLsAIH$nEz)Wg(5#gV`8lDy37TUP--H4F zmnE9Lrpk3Tgp=Vq6)54Gk1*fL*wbH6*4ckT@w%2wXa%7riD^Z2d6RKecy1|Hykgly z2&%Bq#MHz298fA?^)bE_>^jQLsJ)L)gS&aX%H4X^$&)lj8GN5^LeLA1w@Impn6eG1 zvZD^o+7LTbn8YnK!3suvGEmejOvt)cv}tw8BKQOeuzOia-mi2PtDVJ|jHd*>;QU6* zL6TfBbVyoNGGs)nO8jl6Iuo7QcdTuVM09l20f&+ObrD|K1^~82sff6Fjk*h@6sMq$ zNbdOqQ%8g27~BRE?f*7L(U?~H=eLAa2y6#!RQn}LcZWT&*s}^;swN`GI<2;V1V7r% z9&(KK*i*D+DXvSX8#cX(@kZ~eWM)uB0zQtPW8zm;aDD;2-Ar}(W^@WLZ@q^B^BLOG z;8(T8MzwhfSZTXx$sc;x`fiu4Tp&m-2lc|CL^A|=L6CVD#*vpX3E8z9VS_3Dcx`3~-Pbe!n;-?m=qDP=i{`r`9 z!wJR%JYo}!L3zw|caf>Rk83&RW2c>`Ai-Gaf_5llwuUAJ2mN{p@~|Z)UmL~lA)&-6 zpZH9|LywKTm2Nt9JNLTxUS(3>bZVVN<7l>)>HwPA)VL3ravsR0&(~SLASHlNP>u@6 z(=nnxNERPc8nI6gVl4g<)ZaVD)XwD{-E(RQ&-HGhmL0env0Dz({c9p+RNZ~5R)kwi z4DuMItv8dV*~K4L6+Zd--s!$=lyY6+;3HyOo$Q-m{pQE8C%N z=6&LFKI@{@kyE#qm;9TKcpFyZla#$|p|k|@33+J`r6uVGA3d5;sd*JwGo(ojsZF7z zwgiOG>BTJ?*||87FNHDIfKWK$hjJ0^m&;824Vu2IBZyF{-{3u@*^UQeP){H=f0Nzg zK~K@J`GaiI8PjUoNolXAVwi~Xt6dGC*LEg`-@G2ep|&SG5d+GG9{%4w5rh3?(mnOC z%iMmPiqmv+>pdQVF~DXy2vKVIVcqySm4j%7?1&2r2?lnlaLJChu$z?pwB4_@7KiQ) zRo369sxtYCEqu8jf%%}45?SUg(9qx0xfRjR5zfQ)@7bvpt5N;vzg;Wdvr{XudAi18 zYcEotL`{Y4)QZ1dt%skTT7eyIqdwWG71^m3NF3rD)7PqpLnVK9Y6UjLYE1p?)CwEi z*Cl{)Z04XFha*uxfSrFTA-LuI#NQ`Smz`RXom!EdTA}L)M`Da#raY0IT9KVvk)2vm z-$d$#bX$(>)C&C6?9__v)QarXijmdnzq`br?9>XoQ8Ak+QTDLw*>&s=s2%{@H)W?* zWT#eSr&eUAR**|{zD*F!POZpJtymdW$;~4tkl7WT#eSr&eUARxCqNK9ikVk)2wRomzoTUWT#e;4x61?@%ok#vQsPMU{0;-)e_O{)QT0j zr|k&V?9>X$POYF0J3F-k>tdRk7BPHr3)>X*YMHKX`{#C(5J(|#c4`Gx-RGu-+N_kG z$eQR&oNIEnmLdF?-UiCOn*EVD6P9}IDwXROdvcMtkL>M?@*CJxV5c+6Z$RAc?Tqr{ zG+cNyBuH8M@fWjmR45g45`Wde5 zcQl3VFzz>5p+i>akQF*e>uUD9VdH}e`;caZ4q2f?R_O2_+rX4q!X^BB{TrCdXBX;b zI`vJM)wXhsTJ8F+ep;z z?2zqzdk{_1&GqX_kK9&giYnn+>x4jeLv_*QP5+_YnX*H+HzR8*x)XR@Y$}xTz+05|NpsMk)2wRE|Zj#gxw{xQ!5v(jJHt&%2YxAo)r%_wS1x`#aAn{s;|k;4FoVJ9|EQ5md)NQt zZ2Zc(+{{b27`fMf*;>N5^ys6R%P6_fpLvlnkXyoNZpl5L+kdg-f|hY%iy=e$&#M?b zaO<3qkprk04o2pHq~+JY_)B@PVE*f`{^7y$qby0u)J(l8QvZyd5MVwR&j`=)%D;=Ebl@BkK1|a-WnEw2vndC-p{lwra z$6jQ7EzZi0EeQTQ*ED;D@yW=`<&~gaVlGk-(DUyWF@bdwe#X_+__J-d4*5T}QPjQV zclTZ#k?gk}6KxHydnQEA%0<(AiczH+bef`ap7 z(Pygu9wrAMaMDtOc|o_=qfJ-j0V^cxgvikfC_AkbX&$CY0>LXlI|oEzGcy}-+ho80 zJMCB+dKa9{7Wm`7Rqs}yEm`V#GL-pq{-8IYdQJI7dYmj=_KC|MSJN$r?Iu}Glmm|{ zR2tf`viwqJ_2P|Q`?Y|#(VgVikO5WXAWyh)cXB_39q*lV&pl(WMVW}vckl0AkS69N zgzqJl+h+4#bnFMTihAEx_*Lun>50o;|7UFsO88IJNA*MRe2R-Bc6KhK=04 zQ9)7NE#b$wn57USBC%y;Dp*~zN9$^+vpI20SMytw{citi4 z7$PI-xb~~N+Hd{eye~dRSCe;b1u`(XfwvL958wt$M5o`gS5k{80rwW?0E7BI{N6)L zBzdwqm)@9aPqv&&y80uC!~oAkpsRy@r*aQohsd1q1**CL4vc1KXc`lJD4nC%NU{*%IvoBrol%ijV{IESsd~ zhDMRcH93Y+pFwRKQTd!w4qR)a6kweI0M**lu0#D8@E++>CH?WY`KM=-F!!bOi>4dX zFD4GYP~_!-Y-wrz|FkyJ4`3{e?N*yh#l+^eC1avPtVbw2Kh=vxqq{r#Iq}_5nX9}& zR@h{YGTEK~em6t#>g@2AV>@w)|`P0KG1jnSbAnfCisAEe$b#P8MKNG(=> zQ%Z*W2tx?JQ~6xU{B~&eHT`8(S@#^XfUGX858m}x|5A-83hVB?etx_APtU8yAj6Q* z0m$U@-caF8h9^A#&2J(CS3pU_AGS8y}ukAo)Ms5lx6@T*A2J zKW%K74p)s#dbcK8p5`W(t($E<^)n)7+U}B)E%ZHIg*~Lj+2*5Ngga<(kkP>tOU$^r zzpnCMEBHtnkRkUcgzN5hR6?0LTUPm!DcH`nf-^y*LvE7{FIR|DyWAd>2$Ogvtpu0K zI&yaT5l!W~n=Js4;k{6OdObg=aj1n`hp$|&)u3G~Iw~GH0*IjHa%DHApM}w2LhLU9 zyC;->I2McA*>{{BSe%9wXn-Vj3VB&&r8k7^ih9rva;LP1oJ2Kr!b+3YgNls2<_LOH zNm*cHBrypl68k-BN2ov;x4}5(_Num>t~#xFWmC4K5I<#!m;ef(6iMMyt_@|Dya^Xz zpisPQ+cvIg5T}avUypL~IIIBv*{eD5Ea-GPO1now#qcsuZGr8ixT(U=>(C-yVQ(cB^lcuFMS%zVB?2A43{kPB$N_ z+xO=ofVt&mj(@C-i1ho1N$Gd9FTb=AkKeKaFzfAGr0s24Gx30Fn!l(lQDB{y;Lj8N zLDTJ9W*)qnS4xh4dbn^{JFcvB3v5ck`NJoiCM@uU$GLFK>`c}ONw8eZl9AwS1I;!oG^9f0ApCv|eJ zT87nLwUI({T((r3!yN@MIo}jCg>Wi7`S1ukGtACf1nGdEPwiIC2b2Cu*p44W;gooz z1A8if4RQ5bqp_6Pyc~CTXOh>4L zQP4?jQ2w}uJDouK%FD-Q?DJ>ttg!ER3*Pw$C9j@hS3=zAc%`OK~lo+i8U5}K~;e#1AH?VQJZA8Rg zoN3P_o@8H^_{e&$Ucns>7;fjG6G}+6J&G#H=eWbOBdUNOv)K>&vpPvub!M|o)@o0K zy+kxC%1P&%!cL7tf(9J!)x6djwI&KlOJzWAD7(~p7=i)pk!l+e+DxHrhGWsXu#H~q z*GTyYcZR)SZ(--%7#JAb@?Yv~%eF~^@Dgm(cv>}qh=o@Rkpv3M1)0;6*H^jZ)H-q* z#ME6oKqYFKDZcMdXZdIzh>?w54$mMw6&}47a7%NSYO_e3OW3o>PlHBPP*c{(k1$ea|la&T3rie4a$~y zbHKZVj8l!6M*#dr&AFzyUI=tO7u-~ZwOl_ke88e)q;^7^lLxx%_#+SxRiHXBfS8^E zUq0**-1K_WF)I;vper$}2oeBJ9JfHYMiZc8!q_S>WWH(*88%w{LuHs775V|M6QS0- zg4;n`F^2;b^W?CDR45SAlEb$H-ar&oW6s;4N7rpy@7jy`v-uPeg6ukx<^b{Yg99Qv z!m(o>G*C5bRrM(yO79Mvtz7-5eS%4C_j#nr1ut;k-K!@G9rRZ4&=(Hmk;Z)ms*s!ndRUC~B!IMRs zQ<26<>y~h}0uBDn&n!^7Od*4`Kzo4#hbgCublpmrd0=2u3%ffM;;CbFlmj5#o{r2w zGE8h85@lqbio|6REB&;1S}%6us-RVy!&5Y|4Njv@V?ifJa*pfJ3D_yau{BMI2Oi16 z+jwk4l-l&7@mWr}DWRfwsm&fNx%Y|x)we!`A< ow8oV1OGZIe1>(AJr|iP>-YQ|NmvNHv|CDdIRr%S}|9_JI146^F6951J diff --git a/client/resources/hardnested_tables/bitflip_0_0f3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0f3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f9141026d8223634391d330dd648e03e393d4421 GIT binary patch literal 31642 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0f5_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0f5_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..daee6304420f5bb71f8f83bde161fcd5aac784b0 GIT binary patch literal 46378 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 G{r?XGaJUIKtY%*V4-w24Sqlil!jBeZPnMKmK0- zr~dFq8GI5GHDXnf-8PnqzWR14J1INq?>XRCIVr59?87WpQv-{Ym(60Ouz+Rm3D*C{ z|Mk*0ZWMK=e~#;a|M{P~!_lv4 zTOJlCJ*kt0TZe1a4pnqdV96m@+hiM zz?Y9py}+UPr-ix@qq%(CyHWn^i)mGMuJ_&VjoVO&+2Ci)?Le=mO{G^ZBMT>ruF?} zZR0wm*}X*3Dl_lvjhZcY^{BI3tD&8snF)fJ#!6KyZFL>5ZVWTn2w zl)HTYs_V#VVYm_nD=VPEzqPmU*s#M?wYaprgZB`SfADG7&)@Hx_K&+JBp35`PZYm+ zd%S#mZ`^h3!^4UFMeAEGKe_`)c#Ui{BA8j*t3o}x^;m!W)nIni#5Ggrt^3Kn9R#v1 z+4*#3kpA&~dFRp<_W9`6``<)Yrjm=l-f9`tf4?z&`O3`jW{k0fqMI@Lr}xseBVDIx z{#`j+I6B-eQ#y5Vj`cDX($5>O#Z?0xY%#6 zED*6#fImFvGeZ2U={-G(v^VIP6Q60g8Oo;ciYsLru@zOcOE4aaVW1weh){nWFj|9* zh^b#TafLB)(1XlI0GzC8h*zc-98mYA>QIqFGFDs6;r6TQa-$rsS!HZ8$OKKj6J-#L z+W>Nc$c>qb!A3`+-Zq zuz$Pu_1qm{tq@01k9;}iU>Iwl!5SFJ&t8@BF8GSVH%dwCisxjI>(HG0oh(m-on=ba zRcfDZLWW6#CJ`K@OQJStM4;2T+pSS!^ZD!1lC?{Q8YD2^x*$#N9T^DpsxFxk zDrccKec-fe6v9L&DW_PCV;BG^@qV}`a)tzTGC@ESCM&3cBhKc`{4~ym6%S7y(YPSN z1KPlsQAp6nR-BsilQFgeq~>BgA?3u3hZ41gjMZBNHXxC6|N;jkOX&-v#>;s zpoo*L$V}$@^vJjrHgXWEwE|F)kQU1?gOoQgjm6jqBI5`xf`Uef3g~Ed9wSIT=xg&y zBn%RtUgb4%`9{g88X=XVb^Hb=X8+4~NUCIwXkI>OjaF4T$YU?P)~R^~w-&`{e8KJKd6fFrs@&YbG5S;Cf+ zNVPabIc_Q&g=oFEv}w6RhEsm67PI_HME;9_XldAwsn`5b%0DB(?Q82a;1XJdz4IPe zE3HJD%yU~#>EVbr;*KiA9%FgtF=dcChHDyaF7865GT84HHCs5q^h%fp1*$jQZOe0r z`k$p8r&Z^(QvaHf*g_aLLPPYulU^i>8<^kz0!~b??&wRc?c+k_fG!@d=AY}BNs@X6 n8wDB7dQ*}>-La8dDN#>PtkTm%Ga&JadES36ws diff --git a/client/resources/hardnested_tables/bitflip_0_0f7_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0f7_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c1ff0c76b1c422380b72076af0ff248d9dd53d70 GIT binary patch literal 23053 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0f9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0f9_states.bin.bz2 deleted file mode 100644 index 476895cd19fe9e94779382d70fb4e6d41c175619..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3834 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0f9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0f9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..383b8a8f27f8aa4022cbd8ca86e8e22e139b1c53 GIT binary patch literal 35946 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0fb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0fb_states.bin.bz2 deleted file mode 100644 index 39a913d6471d13473e8e60d8766208c0fcf912ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1940 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0fd_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0fd_states.bin.bz2 deleted file mode 100644 index ffc3cf53955d76b67b578c7051d0ac663f04f2b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2702 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0ff_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0ff_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..86670f0b94be7a81d9985ba72d37880e61ee3f0b GIT binary patch literal 16786 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_104_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_104_states.bin.bz2 deleted file mode 100644 index a5c2ad9bf9770ff9abfbad766017373e701e7c70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3524 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 LggUuzyz>752-^lg diff --git a/client/resources/hardnested_tables/bitflip_0_104_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_104_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a52ca97705a1ff3008c28c6ef96bf96abeb703a2 GIT binary patch literal 25780 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 diff --git a/client/resources/hardnested_tables/bitflip_0_10c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_10c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8c633bac5bc8218f3262bccd456e239cdc2cd2cd GIT binary patch literal 21042 zcmeI4e{7Xk8ONXZ{%R?=@6(mG>k9PVARuZT9jrohm>b;~3D7aZW<$W#*^Q~d6k)@O z@H!o-vutBCvzugM%$$jupjjsDqF#xAEE!w)Ly61KHIa;E5r(?xM8@%R-uM3K?Mh2y ziJF`@Y2Ww0=bY!9^L?K4eV%jfIX5wDWozH(4`o)1Z0~9OrAbS5v} zM#{HqtM?w21ahX3)~-R!e4O|9Wbz9nHWQ%;{DF#Z>eD$dlh1iEYVzKzk{-~4_?q)} zkYl0$@D!?8s!|)h4!k2go7YuRU(q1BMy2T!_604XT^DG=G~^_Z6Zsj z8npS88{po`eF>SjsLU{DR9b20Sq-gP|Eip69zW~%LMSWEJcDm8xsmD8c%&xDBDEDwNW zm?hUT7fDGC>R0%lQ15cT0AP!+B`eKWpVU5G1x!Kgn{>r?zmTwUb)In)Z-|6wbH^gwa20Li2m&9bcRrZ@MR1A`z+lst|4q=tGGFv6S zfzM=2{)lwio#ZdgXR9Cc9N3&t*-2S3n?uCDSJu!Ye$a&QqbhaldHD{q%r-3y-a(ap#uhHPUqV|7RgT)EFHj<(^cO*E06N7Tpvwb-3Sz((0|=}< zU_hYi)U&9aoGH3GRIC6Kuk9;-JO>K)`F4wPaTJ^?BR9N75780q++!d$-4a$oYMkQh zLIvH0Nm#3Isgyacvbsm5!7NeP2vd27EsqAhpc_9;XUturR#XviReQccv@=M*KRUU|d;~XZXepBxhN5*fo`Y1D5T#>>T!f z#N!6dEys-Zn>~nWw-3L-oI5G_J6dtSW$aNeSj2l#WeiIiS&SiALg}ptpllhS1rdb} zFY>Q()b%*@gOPcyb6%14iVn70So# zx2QS_7_0nTt9h&#*ctN%@djO}+hp5+CVH*fBl8(~A%sY}MrH6-mB&&9^&lNdwBg4J z$o+QPe;n_-L&gr|&O>fFK(~#xYJjsDo@L!ykS$S^qDA7vt#hy|UX2+m=H}l39W-n1 zg#!%Nc6Gei(FTjTE1~Y;@#BXu zggaDT!i23qbs=P=Y?#cB4;MnZ5R&-kzZOEiqVi|h{f#j>FI7kpm85K-!NiO8jVk8r zhQCTqWD=N9NUp@KEcUw6?fJMreYS4%$_D+U# z>1k~x4^`#!Mw#1PQ<~d-fJS%BK>`NRvFXw#cX;e`c!3{aF*}PRM~S_gB9Hx zY-9R$;gTmj%a}gA7WRfv-XpXb;l&GK+Q|^mPZlE#=F&kKfdBAeX&8Wk;MInI7oVek zTV)Gf?g^{=>#)emzOWNiBC_76!e%nM!$9ah4W20(w#p%JUW;cx1kTTu=KxHg3P)59 zU*Hb-(nYx66h#DXsPtiWe@f?nb`Z ztvtGwN4N55zu|h*tvtGw$LM=%xAN$|ybfnvm48pVFR$H~*OT_;wOe_t-lsEJ-?g}v zN4N6mRvz7+N4MwklE1fhdmh6e&+U0+(}&yh==MCiJ&$hB>H#+MTwx2PLa^6mnL;owjC-jPW}R?zDAuVCO79U||op z5C1_FciP&Wwk~>@J?^x%J8kVwTQeHm5B3x(!QLKXO_(6V{b0}k_Yd~Cl}ESo=vE%f UymlE^9(Sw?YZ0z}oA>_X-?ze2K>z>% literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_111_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_111_states.bin.bz2 deleted file mode 100644 index 8cd2e0ba04289538fd82541fe8ccda473d4fd259..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2568 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 LYtFu}t}Oc>T3VES diff --git a/client/resources/hardnested_tables/bitflip_0_111_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_111_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..199eb6377e4fe350b77184168eca251c07c65daa GIT binary patch literal 28974 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_113_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_113_states.bin.bz2 deleted file mode 100644 index c1b73e1cf088cb8bc3ffca8623eeeee29ff0bfc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1352 zcmV-O1-JS_T4*^jL0KkKSu##sT>umc|Np~X9UbwXuQ>>~;~$8Tz#qUJRS|$4T?hbx z062g_{E6TRzW@LL000000005N13+jR02*nK0BF-714c{`7=Qpc0B8*ZKm$!O01X;s z0BFgA0}ucQ01W}4XaH%ZKmnsnfDIWiKw0Hmmh5@d|gO_NAHJs{L+wHr~UK=gs9siCIP9;V7^?Iu&o zeK*sg0X{82_;Pya^~|yO5&XtIgm{r(aUQ6cQ-mIfbr?RN{A=fQCql5ngTP_~@Tge9U8kd!z9TUW(*ok9`jyIXxh7RIte}O)HUE7%zE!mS>pzhF@WJ1Kk-N zp?14jp6eVdhvYbLI*z0Jod*ihg7^1FM)JllzWbh$3>4oKIy?O1mH}L z()L-O;JoRRpbm!33U@EMhos2pPJ!TMV;LWW|Ui$il-07)M3G%a!IX0q>uT`@^)mRb@Ma&iy9~ z;7nhnWBf$z2aqtZ#U7GZ0l^*UaOfeIw!DSVjw{!|kIO?>ZJoaNw}UIb1GNgDwYQi!Q5_!<6cnGVoj(i?E%=!aNo}gS>W_uyk}g z(-scXk;%xrmqf!HGWuBPSaMFQgB&dMRNtYL;&WIn3$kMcgV+-7x0=6#_EhTs*H6hv$Fehpvi$!amBv%M2J}4^UpXm~=*1OqNP;v4$8h!zjz^ zqTwOH%PdP6lPfWqnPV!esZz-jpRrg_V{rtA)bg;fy;>aI&~%`pcDY zXXgDJxiQh7q3pb`zJGhQ+Ij`tz9G@W##uNH3D|op{MRR9;CpYjFR-VA%v?Bq@{de- ziPaVA4pn%`fs(|(V)+*bQvOvkV&NGvmL_8A7)D1_>c7!`r^fF>?-kfQ>i1pG0z4Ax zxL3k*zB4B%UPWG@!w$nNWtRsAM?mB_K2!ECtL0egyyKwc|5L$mU5V(bJ*2W1lrW~<9Ohib;9(YUtt6`JQHc?p<9>$If@V)%K5}3QB2E7ty4GrSzhas8lKSD}oATkOh&7 zVq`>PBABl?2wWt{RK;agVPd70P%M>Ul*$ZK6-y*!Rgr?GNXZseWlUL8)J90e%4&=m zOw3F&OktHWm6lAH!enBsS&@Ze$g->|%*Mrv%Sgr;$}AX6875372BBuDV+=7FG(m={ z88WOH85mfm2+XC7rVOF07P3*9lNJ^rv4%4;OfY4cF*2}>VOYVHg3K|IV=EXF7|bRz zOtM(TR!lL4hC*gc%2O;xF^r^TlCvu^V;N&GLoiIj#tE3S48kTbt1^`tj4?|e{x0N- KaG@Y%oVdDvZEi3C diff --git a/client/resources/hardnested_tables/bitflip_0_113_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_113_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..9b91cc4e26d819dfde2073da18bbe38bcbe12928 GIT binary patch literal 16061 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 diff --git a/client/resources/hardnested_tables/bitflip_0_115_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_115_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..062d0f4b86e489e5c118e5b9ce76f4d626a76fa3 GIT binary patch literal 35521 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 TKN;mMexQ(-;??n+3E%r)X2UIS literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_117_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_117_states.bin.bz2 deleted file mode 100644 index 87f7542d37b95ab83a16069c551561665b434711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1888 zcmZ9~`%@DK0>JSg5?h=JWsz^V`l*@4~Vmk5ZX2#DDOAttx$Am+89^?tbIjzVp< zJYoWbZ7@JWGKH!Id_-!Kwa!F`TJl0j80<0aoHuuECEC^~RS>W0p~v0*df$KG^UHVd z;dgeTdq{zlTuc8+%{qE`J?4Xwt@r-!+%kE+C#f48-q;SZ;@Y!W+gNYhP20ly|8}-- z&`fPmBKX$!?JWLO9Hxjv9D+?#Y3&>Z%ZacYI5$a=G?j?3a0d$)B%eYyD&ie10nQR| zH~PU12&=w+U#0cz!pE^%Ja5h$&ij&#q?YE;Z=`^LtmMyn&1~Cl-_BlW-kdl-4ws^1$pa9IrimB4O}l zjiL8p319SMTO#N7=f4)0X5dU@$Cpp58!8qUH}gu)Q~LGw_clk8qKqAxJ`@lR&Jv85 z=@kGCWRbyg?;pik@Y08tU#gnCtC^B>R{vtiI zN*!H3ntUhrKHOIEbhu6ZWBHOa|8lxB{Yp1n)%k2fUMqS1eKG2|Jrd|OsWU%6nRuUi zSbMmo#8YbHu096E3=lC3tUC%=w zBrJrU7KIc~OSqlU5Uu^-sOW;T`sbY19h0jT;m^o&Nn2T0QxkA?SKq@Aj~ISv6g#344c4m5nI^{4S?>jA|f+`#sqnhH1E`HoC&}*UTsS#*#htdQ z=tq`p_4SuU-vEn&j^(t*r>X!%cr;o_FZ9#!+Y_eE=t@se*B8&bUtDqGT{yG-X50$h znB0sFjc_=??u)-!68D9W$$OkY-(Nm0j4s|SO^y|T&*Deh7wZE#Udf{}wpLyC-4cFg zvSwzf92-eB7>uvJ&nkHI2wT6^xx3D`gn53cI(=b&XhgZn6u-G$1kOCqPRL4rzl2`v zyBJw+Om0lEJh>h{lX~IYf;VE0%$>RO@5d2O+3Ng|`J@F{%Y5&-<(4G-#TQ?mKTvjP z1Qy_(>l6{mJ(8cn0pv+xX3WgA+=d z#vP92M7B{%tDOts9?-1@RSE{j9Fe6e2|z%EYTOQ0?f3QvMtQU;FF1!yABpov`GiN` z&>(>t(BMogKj+m3m#eMtyOaaXDk34rwrj7Baz79@@`17{jJWUJ%EKj0&s9Q&~q1;uv`TU;v>&CPY%QQ|>TZ zo_w02Dn&wTFGP|3VFsB)6+QW#B|`e|6iW`ju3F;j#Np!R(ch^Fi81mjX^Xt&Y?U?j*$x%tR6 zN)uWv*E*Tyd~40s%_WtFLH9Ar9miv@XqI;9-0Fmxp*CP=#*s?vfrT%)ck zU7r!(G0+96t{1T3D}X|)Hsd?EX#uesxSmhwP)A4+IprC<2jQ;pH5rES-@3S{-np7}Qe*O)o&q`YANcDr3;+NC diff --git a/client/resources/hardnested_tables/bitflip_0_117_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_117_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8a5df1fc346bb866ba3491ba86f7bc16a626da9e GIT binary patch literal 21878 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_11b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_11b_states.bin.bz2 deleted file mode 100644 index cce41a523836421c9e48409e39178b3fcae34d8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1077 zcmbWr`!m}I008hWX}C!)QRE_bUY%atF1a-MvJt5`4E5G2_3auG@jY5&xgcJPM-6M5 zD;kf)p>eLmVMFJ;Gt%(P?& z#Kf5zx=&jP=E=mrM3i@B1)ghx*K*y$hm1#1+czxNnme0pbYr{iQi@mQjB)o@g4!bB z>qQq(2#Yvd!pSlY$JWn|@ShgFU@7#ue!`5kV!eVwoPpWDoL@?Y`POSi7|l-pear!S z-*<6?lk*z3xZp6_)oni}dk)WAOHDh$tZ-;6Dv_6J)$d{oZ6#3q4n~moet|*iY2j7D z7US;9(>H?EbZxUI9^5W;g->&AGY{~Gq!iR1WltsQqwm_d3pd54SK>bORtjo&h~|hb zY*(*4R(%-s{@L)L*e!Zw!W?)*cYrO4gAgHo^CE(Xnth+|`MZC%Fse^A7UFJhB!#g< z>V_-kp)bcC+!lRW6V#E7?{JRQ`1u4J;| z_U7kH$Kf8!Z{sdmSkmtvAJ6ITrwK}<4u|XCw0$ezYpY#Y=NNzL+-I^7S$}a87@M)1 z8lljSm4%>Zi*OlG6DZ(NXoKi#!9X5$-P>8*l`hEtL}zj&M$Gdcf=#ZGOUhX2>Lm{Dq~W7#l|_u-aE(~RMKSXH9Xs>fc~hmdIiAsS7nhN? z%}U|-n8n!rVMB)qC#$ot78Vw&1*5|~k+U6?$B|XcUI`!D5A!^!l3S%PIe`GCE2&qs z@m_X}#Lyd8U)@OAQ>&MQ=gM}Ya6kObWLwMReD*%0|%668^P$R z+gzXC`pimlvKCA?B61RyI;NQ%kUx=RKALjSWX2l}R2`hDyD2eH!1)%)$v{vfg@sbN z5Ivcz(UZY}$uM4%6Yrja5e*Wg-HcnkAQq7}@*UI|Qu27Tya|H9PW=y3O&2{0j>5{E id&eR8iZN7f!}GT5qVv(-=lhR1dZ*>!kizmlmwy3X$@B*R diff --git a/client/resources/hardnested_tables/bitflip_0_11b_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_11b_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f147874a3ccc8daf672ad1b7e6bf2b9c452a2a7c GIT binary patch literal 12349 zcmeHNYiv|i5T5OWLTT?5DA<-FO9e#fVg)vpE%YC9|4#-W?#CvTuWs_^3A8fzK06K9N6bq8<32tY29o%eW}FUKdI* z5v1t_l#S6grW_He0Qd=0q1?kOd^H^LRWVr-u8wy2^Elk&D=agIX%tiTD&Fn`W!5v8 zJ8T7VnR<#$Vd}Af?c6HetayQ$TLvUq%2XmUgZB}$O)`(kFH#4rKyDwlOJ@VxTRenm z;9R9F|HumDv7I%O1J)o+*jWu=ywURa;~;He>MNCOLq6*98i#TUff4i#;b1nFipDby z5?N$HQo2KWav++@|pU53XGjh1@aqq zd!H$&Yk0Oo#AY3aEUM;k=_(bsTKqtt&NL1fiZA|Egdv>g0VWZdf;DZn;hx)i=Gl2Auv7}M%j3-(c`{vDb&LWL_v z!ih`)5gdO0NELDi({RJq`MB75x1=?Z9H#qbGF9ri#2o?%FIw~@({y#}G50ft4b2(H z9_^M1FF6L%1g}0!FGKTUsb-p{L1!n{IzdCZsSuv^wJg*~OnNRQ3|_2Gs3+dSG%pFo z1>rs&X7D%D1ZeP($a1E^a)9Y=7YP7(Hpo=vRwJ)vGzF0JxTSS4)9nbAvScQyaDU~t z(#*jIaSfodW2WzQIXuH0iW)G#jf+O7a)^&+GtIfaRB`Oo??FtHPcG~btL zw475OOHx)kbSg`kI`N;y^jQi*(%^#Gt{D_9Pvgw}SOT4|-U>f;J#S0m(mmiQNU>{P zVMgbbld4=IuO;p5<6SACleCluEVU@g)RJcPKbxM!aCm9s%Z)Qs86>|hJUuN!d_-i0 zRsa#E%`Pomzug@;z#-VOpGMPx6bC%7+g2(Hjvux}@(bv(KiP>q{jh_N-h~_(Ov2cJ zgp0Tf>(qJ2^*Zz>Nc#-Y5NhofFRNsFKtun*w40?_7|4-UEjcpfOVm*x8*-?V>Ubzi zG94Zg((W|-W}HUG2uW0>3Z2I1tg&@WQ{_#7E5>co>D6h-C+Ol6X7L!)d&yY1M{IL0 zC4w8LDZX^vNwqNDy}O<0*Ok%i&pQHM;Q=~o1GFb+5UP>4cn=lo9;x-n7`+K&u7Hy- zZ!@)qk{Sm?QG@)Ku$)th0P#Zy1)s&JMcC9L)_NcN?Otp*YuUNi4=0ILBh|cSalN@E zlx&EKQ7^dD@2TaZueh8Pm>=`{?@Yy6a+vLbU|#-hN(>AG1Dl|8nQK%Ac zK(*XdElaWCdY?~=@bH${8&Ix!P1$Eyqvk#Vid{O`h8K{TG534iwUH<_NP3R*u%n~eq&Y1XnflHtaRnB*E2B1w1y!UlP<#3llQ1|iS{nV!C6htsdnU-g{T0S~) zAA}0HYo@tG05A^qi^X2irMbK&I>kA8MXJ!_Xku~>)Fpcar`g7I$emCCc{Y|^zz&vb zWqKh6AwD3c{szXaKcTU^if${i0Dg5OV~BV)w^wt=y-*z=Y0ay-U4#4&z%5&ICuMeH zh8xVrf8As@&W01F%f?9JksbTJT#WO;1(x4t6@|LB{_A#ke}UWAviS*NKh7@PwYT6B zlxiTZl6|0E@9S;(aZMJuGM-SrEuCvqlu2bEx}g`#wp-hHuBKf9R%)S>p(MT*Fa2?g z%o`O}&Fh{11{?#tUVzsN@Ol9<(Y&FZ^?CtbFTm>sc)ftaj4#z*FTm>sTwQ2+y#Qkq zuNPp-7S>UVxjt9pI*W0jENS5#iZVGJfqp=-Se` literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_11d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_11d_states.bin.bz2 deleted file mode 100644 index 6aa3f463894ee13622fdc39dcea8890d629c9a88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2469 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 diff --git a/client/resources/hardnested_tables/bitflip_0_11d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_11d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b03da0135fbd8582d294ba1ac2f7164aae1dc5ab GIT binary patch literal 24131 zcmeI4e{_`9na7`ZGLuXullKw`F#M7rrbHnmA_#1j&A6*AEug6Ncd1zy6-5kIsamUf zj|VFjDXUwpE3(d3QTqp#W92OP<2bg*Q(CmuZBhK$XmzF4RIEx-e%$>$_nk>5X+k+_ zyJwH@oRiEu?|Xkd_j$h0bD#UYcP4)5yv)L-o14EXVrAjp52bxq$9~Jp?6jU_CUxu| zEGL+qt$U|PrD>ByERe|^`?F#KnPuvv%!p_0pPJftiMKeuLT}gmS@G+H2i1IpKd)p+Q5t9?opW#vXF(c&@P2f%EI?>dzU&^ZZKf7!QrS)UH z#SgU6p(ZQU=?z@Qky7t$Gg57b#Wuv7TKDFqjKX=T_H){(L4uZKR?>B@4d43lK}kPf zj!>hFq}Qb>62z+0ZIWJ^)IpTpRGv-586HC`4-$Spp+jk7?2^3B^)87Pq@3orc_!y2 zxNUbK`PC*!G$k7(z1>$~YtPmPc9jl(zmbf6-FPxV6(cc3vKJevv$n>_$f15+g`f3( z$(Ufobkmk7qorzkI?4}5((n)?qc{6?l_rQY7;mOtq5xzKVoP|w#t%~5_>qypb}9uX zaBroLQuAW6UcJedZKj3cM#fnCJ(_(_%LkS8kRD^CawWIMBGCw{(p-bJGg0hadNspH zVm#WhgF-XbDk`X#syEV1-9s**;5$aLS`h6|J;lhVbM>=t21%8l z#8{KjSo&%sGqj9N(USdd?pQmDVOKe=*e&#TFGW#Ld6#N%1~ulp#Yk8CF*2y>t5_Du@L}6%BHDG0zsj%TafiQBW3nzBf}f1 znUtFHf0gtg?33a7Sv;>cV5wYX&NP~4Z-iNjZj;(x=B_j?N#;o8`%h5%oExsf} zJtb`#ErX`S!|vXoRb0M75gRvBdwGbJ<}VbbaO%0Ap3u^EBh%)Au$$)UJGcoaJ0ksPe?q5Opi# zpoccbRI|XyoD;)wV|VZQ9?9kW)^J#8UKTN|{|hkiprK;C(y2BWub&>7D}4yBS@QIVdc9pGrsBTFkIt z>+tc*`mol>27T7|Mf(knDyzQoL@p%E*&DU=&kI_fU0Me{XZifH>#+1e>2-q%nwSV< z_C`%6HkCf=b-h;+EMNMqmdgCHG=fma5gIJyw#_nyT$~ts~d+OMFUdPh)qyFv}c-v;= zaBcc(v+1Rp(sIPQg?5tzVEU)7vr1nk;xCUIIR=4TzF^D!fLSH+1q!TkQR{c46eoi> zI=fM)v_J@OHMB}=T;K1v(k&6jMwT!UXCYZrN!j;Rv7tZ0%`F5eXVXf zvrNilFy6GZ&eh%+=ltqz@v2m_xHL${r0TeeG3$bk_%i(YVQSpTJLXKQjz*tMU4$kR zxj{omkZ5&jX*Ft0?=kYy`EGWM9oa%F|6gjuFad z(aOp&wQFQ9Mqn}vvH;mbO@bX+MgD!HWe!vo3HjRxl`i)9N1DK|XE5h#gMcJVDhg_N zqi;qr&vlDSxWSxP5*M&ol74|(Y5ae}&&@QQWPL$qg5QRim8(p4gigie5DnM+IigbX z$GxfmfFaJuK^ST;yatmKq1A7$GIANW79yzqI^7XU6;Q-%CsDDu<_lBR6xkQ)V>0f9 zm9yjq!O;u>fXj?^-Jl(USHx0M9lvA}=|7lN_OuZRQ7z%rt^SR3}o#4`$! zyG;Hv#?!FA7<%cyR)xSxpELOY6=yWXzwEUVy>&}mW8`sUI@8TbPYyNm7&HAX22+By z{JU=4i;aABi8FzkDyBIyb6D}kRQ1d;+Q$kbf9x{y^ob@I^^T_a?frFFti~)Ae7L~P zQhs2WqpJ1V+FW0qx(ci|zI~}C&d*wVzmc~eHNi0M{hrP<>-`-#*xNX+hFQ(^|G^#x z`iR^qO(F*A+9voA_#`!=)}z@Zvq0eg2Ad?@^XI})eGQ*zqrE7???H@<{io5E*Xkm| zn>=I&sI{1O)>`Li|A-li%Rd|;X8)dg=lVG`f5$0>HGsO}nlk{n(W~6!CireW#$RRR z)@t(6WjNYVu4{Nm(4iw$;oh5euYA8ad3wjnSPhvO?`21*V-vIB!5oJBCQW{Q4CW%}%wNI!_SxxX_we@8wD*uR6qDB?&?Vq;TLF)~!%6xWBVSw6o%!Ot;oS0<;z=Rv zT^`SQB)+@nYU2C3*1a$`1de9=L&7k<&#+%BHE*}B#-O0{HSN^^^Z9kfyf+n0k8gK; zP3DP0@{4EAx4$lk?);(3B_0h!i>k{5E>zM6kTg|VMA->Um}9l$O9zaKgVl##9Pn|s zr2Sk>F>-v1$Ww*mE>T`oz9ON`vD`Oe{*!5zIZCRjK3MI*az!e^20(_!jPt9v zFu#kdZ$D2hloV0|ed4Oj!aIv`^<_t^r8ks?In-7&y9Q2R81uQTBL7K{yJo#gMw*XR z`#JTeHFQ#inu6AncjM;|DH?5d zZn1^l?;Z&IIM#yG=vrqKYMlD9mxg=EIKE-8Ny%J)#T>I?j$0ERjh0T@W*~lze7)ct z2}Zj51XP8+LhqQ{OCj#VYNi3Ke!Q;G0siMu3?J`%SA!-m{Ow7k-ffo_Vui~@S+Zd-DM4o4ElS(`_M1B(UGX;mq)#a%+Pkp!p?ti_m z7W`CmMLGjls|iMW6-;`#E&*C)tJyXn64wa;C!@-fQ3W2gdbn~PXs(3OR%$HT553JT z$7t^{a@fgqjl+&}k6)O^iUy#RuQY)s>E$DgnCo>-Myq9-+>M^-{)70JK45DA>Lt%g zB*o_nh;3=nrx}~^b1{;l2F4s~GC>thcolv?zT%Hk6-e1>8D2D7uRGM#ygF5LpNYo0T+Q?YW| z-3v@|^d+n=Cs6rQTwT7;vhLGdUEYNB3{Cm!yBK$?0>Zv&f|@sw`vdfX$_tYcK^vke zotp;zA1s8eX0ZucJ*@4loE@XbXLDmC)>#KgUv*GKv4<3wy|?=EI)lsijdP5+7q|T@BP(kTkl*L; z!2@;mJ7993->^Ud`)7%LJcF-XaspE7yh0zx6TYTCI$&-u%Rz(Ap%up&xo#f9zgFT} z>JYHoTdK#ZgU_#`=xT)ekeIdBWJy9gfkL+!9$jf)o_R=)~%>h4@+M8O?2MG;#%v9Tt|Gr5L-rv|GJD%*f9f$-(g9 z+Zn>Az=ywVWbYfPz%2?`>8Fb$b?;ohg8U!%t|VWft@jj$H)XYcdhpHlKWp5#15=UV0Z zp+^4iw>^U*eAtGY%!;;goJx7E?!M>&057@2(k=96S|WLK3bp*^m5K_ zZ`ZAVjzVyxRZjYu3Fbl)!5ZU@J2gFM-Xqcv{r*R6|K80ej@lzrc&r_dH!i${m7>z|ju4O`b^ zSI~4JTwCUuJ`_AySOMDFT+N3_J1DGsjhmQ)i6`pb%fS$r8<&7JKBg6q9_;L94iza! z$z%Yxsi)!NvJ%oNcqlw()N}e>Z$3UMo{RY_m`n53gtgLx@BVfm3J0~14p<`m)y}C;cNtGl!{Khhsc8h{aB~oja-z_=wDe$pwFLE&Gi5$-k1CfSO=X4IOuMI z-zi9=Q|{3zcNfpXf2Pk)Ky=FeKy%Ka(JA-nlzVi_y(E70zKjU{h|rhllsoH&Mb?t7 zb26mxiU|FP(ARG`MW@`uudl2xS!z%FtPuLqDff^xiB7pkr`+9Wj`skE6gF$ zPrpQ`+@mjvw(kA^@g>pdl)F30Tk?~O?ct7&jZV39j`$P)xL0(_y=2LDFqdqeM5o;U S7N^`h<~wr;uRROSv;PZm=g&L< literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_11f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_11f_states.bin.bz2 deleted file mode 100644 index 5892009d2624d8eb1f78105f0770f6603a698095..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1448 zcmV;Z1y}k)T4*^jL0KkKS*-CAKL8_H|Nr$@L9>bUK@`9d5D)+mL;!)90r6lFKm-&y z0Dy=91Kr>YKL7v#00000000009MO{#022{`8el<)!7^YGhcslwzy!o#Mwk#{Fie;P zVa*vaFaa?b5vBwfj1wjS7;{EUOaM$q1ZjZ=BLvBSMjX+T695wtff`^zh`};o5rIic z5RFDgnomU3^l3j*JwwT<>VBpuVt6U$si*f;LV8Z&eJ(zs=Reu|k4kr`#bGk)eapFc z2Z7j*50vP~(m3dHtMxyltK40mg7&Z2p40L_(C{x&9;3># zy(#BElKK`udg`m%`rJeLK4+Bjh`t5#od*|-51nKB40#qW75Y9Ff9vOXyOS7U;<$U` z^gYq|A2alKj`e+y$@#mTPrdM};{OGg2ZH>Lr&qOlj?1I5kEv7l36b|NnTq^N9Akxp zqB@|)MU=5j6lGRiI=Y-PW-}P*oke8ItYTuAGF3cDkxLU9PXJ7(aX!Nliz#K3EU}8r zF_pxfS3|LsGQeXMmRV&(p&q5xVUr<&KJu3ngE5sd2MA<8vRPGOWUBBfb_(J^${&h5 z2YSOMTmj@}V&QaHjs?)H%ZrM`BMhmGI2mPwj4Uv?Sz{fMaI3*MJBif071-crCkumt zj9p523B_C&R~ea^oy_QrWn|3koEK#1%ZrT3oktu-XGRDguX*;KXNll(!=d%Or*Sx9 zn0$-4y=%bF;$4XHI|6~9t{g2S-tFY{4!|)%1?_WZHQ^nqQyDv%ftJps=-mh7D$G(T9;#Z09 z2kknX9};#rkIc(2FnlY}zSPIw?4JAo59V}FLE^l}pg(!<1v-bwF=dR(#vX%*yqym7 zxU-4p`}leo`X0macsnO$$L(KY{a^BSd7gH8oenSJ^(^~G#JCwa zUi0E#z;SgQlb-5spe$Q_Za>H@-J}9&^`cooy_d&x;h+B74jVy=6tVt zbUiH0nVFZ7`nB;uV_&>c&mJ36NnaCUK7Fra&K zqN4o)N?z4cmBc-{RFx>=7!DIGqlCCr<0@H(GA1lc z#b!v%GRaJsqmn}u;g&}!Ck4YQ##wPLCRH%FF@=;I6yalwhFNkPM-wZQlPShW2+Fll zg{o5q31%ZQq-6_YH%#ubdNF(l!Xrx{#-_`8xR!i0rqh>`d% Cg`fuj diff --git a/client/resources/hardnested_tables/bitflip_0_11f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_11f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..cfa31da6f4a53f5d6a7bbd8e32e6849fee0422de GIT binary patch literal 15388 zcmeHO4{TNC6+idAS7_<$J%u8a{#jquEx7g1Gr%Y^!eg?947wIs23ui1C)pTMXo5>z z1bbmKxD{xf$)?uHv#`ZP{w*;ZGLU9$#t4B*$flwLoyim^2sA}Mu^ z0rVGO)>4eaWMf4D7wBdx+sKslCetYKF^zwn%zB?ho7PNznY~?2~2Ld?(L82k+3_4}3O(W6S2-X%D zRAAo_{{&_Q4_{@PuDrC^G(uaJVDLE1_@QffpHt{lP(~^6Md%>!w{qE;PzgrwGnyE~ z`80S{1ETS-h@SuW;9 z(q_}=6{}wRG3#kHP1v7W=IaAFQK0iMzt|y&_(G!!1fV?#Q)mpARYG<9nBIVZri=VW zO(q*?ziy&LE+WJ*SsFKTok`@kOu2iQmWniTm#pot*7yYe^$c`Q&a zU=vEYYZRF&3`4{{*Q8&kPkW7Fngt?b@}%O6$w{SZDV~@3Ak{P~UH}##QS?A#i{vd6 zQAElhemNW;F&T|6jNHZaytEnX7P(D<5nUZMxb5laIc?KerA9B<{nl!I*$l76&=_3V zmDY^pp-;F*IyWt~eSq5$=rM%@rA1dT(~iE5tA4>l(VeQSr=cjLmIMgQ8qNX>9*Zul zH4uO*=oBB;wXAR})7uHyYd^q##$w2L!I(%tC_HT8-nf&4=W_;&%HgqonB*sD=tUK- zLAwnB%`E0a5xznunD|fF(eDk;E)1IAbC(QJ{PNL`7B#wT|BO0 z=z9n!CI+QW^9#ry3M$cMAW8gZY{H5Vbz$FyU;q=Avx%nENix3m*o2VTh5oPIfLt<8 zpQhtD(=)4#YG6~lR~qd;rS=u5)4NaBVx9gG9+zZ6oqKgvjDff8=a@P~#;E9WX9lCB z51J9UzL5q|x~91{RWVgUdogL#9B~8F<|M#Z_}G!8S3JVH%~B=@(ulu8VgIRQ!}^T^ zP9dD9PH>GkNd96&iowg%Oivw+EAdRi+}CEFM~*{dVMa#HmZ)?BLoY8bZ#vM&POY`j6|ePCy8n%{55XWeN;rZaVBnn;E) z?aA1gxnrkdH5lqo0MA0IWx7Y6#1hqr*GvIlq#CgZgliUt)p?BC>SEZc<6W_EaZ{Ei-TAZtiR2nPM#y3sIAm!sk0BX#OaYNTDYZKR zT_E{j6b70uBOR~FP)K=bhhv;h%|~QF!D=Q`HTbeDM;~4+fuq%aaIaH?n@QZH({d2Wm;Sx zdxdGgb{6YvFVikK`WMyXPoi;qQbqz4P#o+o-Nb-31~jT#RT(#Vo%Xt~x3FrCQxAVb z+1QbB++lXQ0k;@lleF#u9BD_?jQTUIr_3e%Wu{-A)0FE!UqwuRIBG1d+a?f$WTBDi zO$hRBsR(X&o#}--<3RzL0rR(XrSNlfi`h*8-%(wfw7&bmpu-aNKE$<4U$!B4##EzW zv#@N6&(`J{DOVYM&U45C^}kmG@+A{40Dg zg8avh`PCV&E!| znc4t+tbg7|wcuDfsJih2HjXBhE3Zs1i{vOdYc9bw62+smdc|YEsITt{j^-7Q$)Y-p z#nmewU5R+bW3puo?)m?|c>J%fYag3+?c$b{b?p)suK5Y+>$-;J3%iAmg@Av}Rn6>y zVlr=KONeja19F|u@V4kcYH#NIX6|Y?TW9SJ$U4kP&nDnUof4?kjP!T%Jhnbyf-h>(ivB z?)KY(>q<>eXR7{grmQpKiZWf9GssO#*=4p0Qxo@OOg)-I)}vDBk1lTauiQ-eBkk`i zhOkkY4N7#=W4*TDl!M=C+*GsxNWFt!RZIsA0gm-a9{if}vk^6ycj)UK`ntiO(>wGv zhYEV!>>c`ghrX^?q~5(l-@R_ifO5|}^u20B)ZP5Xp`Ul?o9Z_i-n>KKG=d3vhrZsS zZ)#HN9r_OX`$X^1H%*91Zt@O&pZ9s0&4;T`%KL3oG0__P3fQGMTkB}a{m-WS8- zeKDMD5sByF*p9E(t?aESUv%J$3h#^I_!n*77sLM}UkrPPzQ(P+&zU}n|Ak3J%unIL bJM{e&ggy}EXXnuOUv7>^xR&p}|KPs?A3Dsm literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_124_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_124_states.bin.bz2 deleted file mode 100644 index d3601defe79670a2d8d49849506795807643a4b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1327 zcmYk)?N1YT0KoA=<=WB?EPeV(3fRh1&j#)sFPQiMh()ABpe>vRuy>dY-`$+qM1-`I zt8M8-qCz#OAk-<4c$c^YH+8+E2hN!VA}@&X#WgWYw-_aW%*l}Xa^HX8^X6NAtnCZ5 z>}am-Xx+B^WWvq2=f2upe=qa7M6OhqcrzkO=n<7FL|c4?UHFsfcDtOGZgUe8EVc6>VP8TTG4aPeMq$$%j; z`;Bbc%?44*oAtHigXZIJQ?Egvk>^6ZfG)Q5{16&xVM~dz1B^*P+6U#CBVESz+5U5u zlB7TO8)r|&r@oU@D_8dXy5|Y*?oB!GTh83EoWTmfdZrH}Yap464G=@x46VwGM1>gJ zgbab9$6b0P{<>09`ELK8?1rQ)5-Yj#65oe+Car3g_suV66{DGkzo5LSW*xD?3&-!S zWL7S8$d2q<>!%ifO3{_m3`YtaPi7fAW>4LV;(%GitcuK}zV@?Pz2x`fWoLCGd*v@P z*wsOQmajvSK)K(VTUK6Y^sHT)>!7@n;m3)NP9ufeBaq4T&QBoa5rlDa{9(Sq)T#vt zK{zA4FIweQfe=FQxHG6ta_Z4E-n#>Yn5rHGVF?`J1Hq~Q?|1u2Ksy4V2}lKS7aC{< z(+Z4^^8R4MPOWqrFb8|?vUXyeQFn631(gQ7#iBN;TtoQ-Ge(Qa>Zn$HQbJ)ed35-C zxSS1IP!D82#4hWqeZe#7Wg}(0H^Tp=n3>bfdS85ce`7IFC7>6~!1T{lgi+|k5A^WfZlt-J z3o%YMkBAh5-i6%-fb~cYsHh7(PO$T6jTf}8r2675E0OCw^(traQN=9oLP0Yy;DevWLNBoMCZVOg<)D6htkM||lNh5Y zgJuJT*4nX2Lx6MAleRTMsKAmao6?ea=balXr^9GP5GERv4%d-NM2ZX-SE!^45uZH? zANq*aTT|4dkckR}anzzU{@5xPgB-VyA#T~IEhJ%+Z;|yTQvuRZlVB%{4Q7qcCQiOA zjInSO$|mj3CiPS{maDWXOhkdo-K6OrfMdmp0?pCk?g)a&#hbkkj6?Z{@`EpmMgIZ! C))>kF diff --git a/client/resources/hardnested_tables/bitflip_0_124_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_124_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..5fe6d13ba44bbbf3064adfcde7bb432bfe79cae6 GIT binary patch literal 21807 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 diff --git a/client/resources/hardnested_tables/bitflip_0_12c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_12c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..18d8d20f291f40bdf3b6f9c3d5104af159ee78f4 GIT binary patch literal 14984 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 H%MbiNqgbT3 diff --git a/client/resources/hardnested_tables/bitflip_0_131_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_131_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f3993558a6b4f448496b999921639c13a4134f70 GIT binary patch literal 45965 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_133_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_133_states.bin.bz2 deleted file mode 100644 index 400272bccf895b3c847ba1e1225b2de1852f81c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1861 zcmaizYfKx50mq#{FTvb+`H{0`N)uy)?NhnCOqH96LBjec*#F~S z`b)nLzyHa1fAuDMg4DH;Kh3Wll{|jB^J1}RPtl&6#l@21Jw-*5+igt}NpX=RSJES0 zF1aH4p8!Am#f7^vnQkw@TOXT0v7wmtwF~V3DdoPtp|{_@+Fg!TSA6qhSMzk_;(>5S z(%7A&FwHR>Z?XW|zqeX{Es}NHx#`!lI-G<=sIBK#uJa&Uex#0`?k}wLJkYwD|5+Z5 zD<}@at)(OLnJ(jK?;s?;1rpJAUFE9iy8PGg8$a`eLexJtZ@7@lWzQ4yu;tA8kB1LL ze|qBFIX*n9|FGxWTBB4rz2krMLtz)4BmqkFrKyZjMS4~Ejn?X{Er<^@e9((H95R&W zecu2~@yB0`C#LR8FE)aNHIY%EUQiGN78o4PE9~mE$rnz&axu^QDRsTJeZMQ`P60}= z()GYeYNF`%N2OhJz7cxTH#Yvx9|2-kcH5dl?S;9^fKLB`BvqiWCYANny{i;uv&OR6 z@fvg(INov~XJ1W0@lt%>A`!;5>z>V5@d+<{N%0h#@X>KiPDxC}3r~&>%yDfi#bRA* zqqSkZ&qW|TSgUfdy)>?>9TYdiI{_ zL0Np`@+s>6CCIukB_bnktaZh03I(zLNF=VqM&ojVPN(8(934neQ^__?>osz$x#JJ$ zp=AnVG)vE`L%|Lwoe~r4M*&$y2(!gH_{jE1$@*q{={)MX_UF29JK+Z^yX;Tr6G`UW zTb`Ah(8`fg6XSnujHExfqCPvb5*#@{wmh#{!oJ8^m{{BX&Cj2FTQ;;^P|>q_u558> zE;D-+-y%DiM+;lwPK@E5kZ3)uRPUK+nA zW?&+lat9o3s5_vvI1UCK7CPBr2khvu)cx$R0fBL7U}16ziwSnf@yjGgHe`&j-`)ID zURpI(qhH^wH5CkSjdzGUE@(_^GYmvxqUqmdgjatis)7m z4h;FRGxy5ZdyOwzC-po3F6n-muI#z8T-HU^_oQ|5@U$d~fOi%+9O3aGN++>dfK=i^ zI-nwPI@Gry1_-->7Sdsdg(RXJ+?USlnE`gUNyR{1k2lI`)_|!j@-*iUK;aaNk#>1T z15G0InsoGd>A?dHz5V%z2+jwEMQe;~IlMoDg-#;@kVrHtEA0}yVo(9&Xuk!v824x0 zHWuMQnj>peIL(W;pgf6K^gfLg)74SqeR2Iz8j;DTVn(STBvr3?vUnSV&G=}xoC>tH zfFMFy-&_FdRcL0b-~Sl?2n-Y!cF_%n0NYxn3@FD4kJilx7vqkpV1;I;dD85|?N4 zc3+NDP!x$J>*)j&AVR{76`Nt3I2Osk={MdLtP2Yi7t~?4LBxR)UTM^;f!UT_ER2pD zK|T};-9^$u9CrITRg0ddlSnv7(hL^IY+iU476Yl)?LMDwyjrXd@X#pA-LD1 zRugtO7z|MH`ru(AgJj3!1}7Y5=qTrjrGoB$wh>DWWJ!0-+0JljBD?fhRRcL{2bH89 z!1P{i)@cXK6eh&A!P-GZx;Pq1V+_p^v-+4}r2`S)l&*Hn=EDrDo&=nMdRDE^^arpE z`bK@U>7kM!sg6;uLT$f_uV&};?P~R26Xkp;RU=enZgsioAvp6N@rnB#dHL~spBF^_ E3(l7mCIA2c diff --git a/client/resources/hardnested_tables/bitflip_0_133_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_133_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..03c54fd526a27b5b9d5d6b63c373c429c82fb139 GIT binary patch literal 22696 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 vIla66rGBSeykXeH8;13*Y~y-An9uV);Cw-y;o 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 diff --git a/client/resources/hardnested_tables/bitflip_0_135_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_135_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..84a6ba3af751764cdda710a7c7c8dfbd3dd975c5 GIT binary patch literal 52098 zcmeI54R{sRo$$}xJ9jdQ<$6p>JiK#?M4 zU5B-{){pm5tGm3dyPI8gt+ll2t6gN<-JNa~ZOdD*zU}I^-Nu(%(Mp94)KZJHzyFyV zKtNktw@=^qnfPFG=gyq@pa1vyf1G2VG{1QHs;w)(t<=XKK6rx~*b&FJ3YKge*x{WH*s<$zTe*Q!u9_5O1NFgy9ZR+;eOHkCtW3Em~#Ub!g41z+jEr^>{BM zSk>muHIoN+DC=DQR@THxyB;qo{#WEdJC0+Q+jeMGh`q^sbxB#gKu5~rkwDcax;Wxi|B= zf>ya%fZH`Wj(e?PT#e(bR?a#d=34#EEbr$%^()L58w3&mSE~_nPpI^SIOhKW1FB4c z3-MK2mEzZQ*x2B93Z?_U!7f^E3Al63KKBL6;?D+N7LI7)HIuc{>v_6ahxSZH7?W2S zZqi;~M$nbvz0S=#s?l7$Ppe{lvdlEJT6LJ+2!#NzN(WYl4zl-XHL^>qQE_}dXm~}3 z`J5kC^JlA8)x5(R!}t?<_F6Curs|n?p+l>-zZK-)%O8*~w_JyrLy+)NZh#^&l*@Bd zXR}tLmviH4t)|5>h#0b%A-Un>S_S<271tMNH64KKV-Fzx-8?#dBJbzYq=Q<`;I3aX zQv7|c?Gr@t!>e+FD+8LE#2f14Ht?~B3rr@@g`(VN!Ppb_>Y#p-Fb2%#L__4Wf>Dm; z4RZzHa&1v|tc7I22+o|ENlFzJoH}-|t`$j9S)PT}J!B=yhAJamm|=ca?16xbbvS&y zc2&Xe=6bP;@8FK&V!vNLPSu^3)~jHjPBn_pz?z$)Rb932(-z~Z;`tzwhqzPamKpAW z@}rv=hWnfiLc0*AQBFHATfJO;TGbXHY}eW&u(NZ21T zy0DO-*agKlG|6q{Z^o=$!r!m*_sih)T9~dH+yj)u?;(8e#y)fxD!z9DN=8jsvJJ)8Bg{KYv`)fHOSZvF z!v#qPCZU;^+P#-&GAiG9xnXmtkNRa2bH?Nk0vd45zrw46DLVa;%0A%jR78E{tX zVDi~OFw~C}%zv>~6NN^zwCddq@=nv?%1iwytNT?GcU7a@3XG3(JBjx+!$eiW)Ezu6 zKw3@a|HAf@M6bdna7f{2aEyqjHzvPZ*uTSt&S7Dy$5TtTZ7Lwl{sG!&goB>)5Bo&%C0|{msEg%0>X7USIqZ-ivw+?G#N0+P`9!F$EXITrF=0wrH3gV1F zI7YVf4gq;gKCt}A0bVtN?~3qY6PWRMawOdC@g7&S#fY!!NR*SXeCZW=>whw<7Z`zm zZE{D`SAn(F-3z3xGkwJbM>T16Cxg1R-avfUua*vhuVdSW#*-GMHuYCBN* zM4A%5nWWSvVVXET0CIo|bgCRUM#re(3qcZp5AP6k#_P2@kGWb8fkF^g{v>$K0Sqkh zUQ~dXQoyjDVbZaWw#%W%hUsqjqEpR6p>!&2f)6Fa(ZXrG$h(1gbc;S3%`37Xp=TY) zfr+eYJ~Qtgt{I)-+<-Ef2op9i#xl7m@MPi_!A~4Ba699b0pS`Qw)62@(~&?PK3)

    )MwYu4F|9qo2`{N3j3%b%Y8|s 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_137_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_137_states.bin.bz2 deleted file mode 100644 index 293c1f93f818c8de4363209e0e4828e85cd48c32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2914 zcmZ{l`%fAP0)XjSwd&mZ1epz2YgH^bQD(fm;Du;gt5zkoO2Oem&>0xLP3{MAFF8rn zS}jZXb=-RD0=e?c{GpFTCTu_)yWH z#UD;xEzOUFS6+UUJ>(J1G4smJX6_1LQ-%Y1P#AU?o`l1z2x7%Cq3foS zXjGqbn(Ob8q3dcd9&FBNUvTwA~w z%wAW1boer6Dd&Q;V68PVNm395EaM|b=>?rLrE|s4m4F+1ncv$+z<6!DKyJ2%AbAqd@?C?_sumD7JX55YbN8} zH&yD3X6O3ty56Kc5*|@{KwMG;CW!I_qLa$CKov2fBqf*Z^+{%Q?$pPA(xjx$d8{yD z%cPH>M@&UF1Hf!-^wAN^7}?TXe{@`_=}n1QlyyhpVle%{ zxzzP|rZ=mzv3DQ=tS(A#-V|kFM1c}MrAP|}*i3d2zebnIhsYpfgBT{uU(iz=&%4``lPMZ!KISHxW>*CyxX|njzDkAf;4X;t&fZ1OI?99RUu z8hTx@Y6B2L8C)&0Z?P01MJd=OKsv%(EU*rK$usQYt`s|ez#Yh3LpStAPiD=3dou?xDX0J?&fxNy)RDSyO#((M`J4l z?fm%-mb%8;O67SM5W-H`SZGkIV6GOQmaDpagXdmrOftjg15Z0K$nhmbtp6#rprN7Wim|7>AjCuJLNjVqS9~Wf*P-!ih%n{S~ z2HwiVA0oTgV!Hjha(YWsEIp#{FWL;|oPzFb_mR2=o&L;j6Fyuw%yd~bya(cryF;vd z+uSa5WR~LC&{3`%YJMKMv(FD8{4Q60GVWmlGqx&0tXsBZ*k8JWxEIP4Y#EOvS6TC& zly#6kN)L^Z-9i^Y41hc2UTm28epM^$a$r$nr-e}zqF9g6Zux0e46~4XkBxJ0J3Jq< z`-1rTj#Uw-v3S*uE#e*kR4N|>&G9w}DFt|K&3|o}=>b0_JiZ@+s^LuPp9$rx!Tep4 z(l%=0)$ct6Z+qktc}XHY%*3CS+zi1cEiXvybr`imVC=hPm)H`%7PPpmJXfuWK<6C^ zVu)SMDB|c`mxHagQ)K`@zE##0DRS>TY$y* zLciZaLK-If{5()gu=D2&`u#i}4`pI07IW;rTwJJ=bL-7+a^MV=KJaO(gq2x~`0cJa z#(8n1eh|__rgiT)Z{E8x%b7b?{&tqt=8W z^W$!cjn0)a1I^GR6*s}(F>-FbO3X|^E+4jN;Zb<|WINr?Thniv_^&GImIVy)jJ?S6 z=`aZbT#jkal;@+_1{A|AncPry)9AYy||Cze66RprH-tY zq}%FZhy+A1eI^j{@d6TMKq3X;N_~Qe8=i(Zg9$P>iu)44Rv+{T-vU*wo53s9B0$qg zG3u@e=?2*B%XjFOETN!QOeh#qL;-<>IRL|2`jAD2*r3JS!NRj)L;;6OIgZdGyRDP~ zD?p!a)4wzTc3heWhExJU@XKOR_UAGKq6HG^vo807&%HxfU|UzE{`yHTsbjSQJ|(&{=Q+RMr5<9E)G;^&X2 zf3Vf8AEst&Q}f~mhKz-w%;+Jk`=dS@6DmHb0l9)!n*#Xl{a*)Q!$rUe{LA*={|9^`7BK(- diff --git a/client/resources/hardnested_tables/bitflip_0_137_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_137_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..e5a76bf3394b417fee66e3e14ecfcfdf844ef498 GIT binary patch literal 28775 zcmeI53vgG}oyX7pKSC02?)d{gcm)FZ0AffeC@?XSbvh%0A&K}bK4NjZQjCV$U9>E6 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_139_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_139_states.bin.bz2 deleted file mode 100644 index 97761432b480e33fdf4936541ea334c37ef6223a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2400 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 S$)~F(yMYv+9%nt&>;C|TRVgX} literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_13b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_13b_states.bin.bz2 deleted file mode 100644 index fb869e7cbc765ec821c8731a591402c6200914b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1405 zcmV-@1%moQT4*^jL0KkKSv223`~Vgo|Nr}wxw`>9)g1v90nh;u5g37$0TDqF5Eo$( z6;K3K)EM9jUjP6A000000000EVKiiDXk;*r42GIC0Aey^0|*8Km`xcP8W{{DLm{S( z02qv!0Kx%)<`YInhK553(8y_{Kn5cwKrnz{IfT)Xp`nn%G%^}!&;f|akPILg4q-H8 zXlP_GjSPmGGyq~UWCI8W0HmaeFqHIaCzQ=ikq=O4G-%PIMi38C>8YABn^WqDC*svX zE692jxT=;E!f?f7-v(niGGgI$A9zX9xMV{3QTxoF5co$ExtCA4J_XWz%%#zZ_Ri-I z0hIg4seNM?OY@(s^}9O{+IC!AGbUU-mB7m>m!jct#!nP^8JDn~Fs`10^D*XU@|gEb z%QG@h1M;3{9w~6(@iKUwJ1Wmce`4wCdOgN35}!U&pWdVsVQX8ChV60nL8_joJ^IBaB$#87!D`AGB}v>UzvR?=uboaSDE6cw2vhB6DCY9 zj88Pmy~F#TwU6*SC#bSzWU+pdlM^L_B{7kgsW_tyhYKj~g@+D~3D``!SY6b`II&pA47wA#FNr&e{)*yD z227pDO5(VkCL{A6!|s=5mRVyAsoiBREL>tSmvaXmPChcrhf3_|99&%;9XQ8K=(x|3 z(~gfLCF?LcF*58OkD1tJCl+>28E|K37G-eZl*;KkbgaiuQ;UqQhDQq}*yt|>hXad= zVT-}*cX$s`oyXx$?hC}rz>h<-iu4$-C!;gy9SPl)*vj)Tzom5jEA=>b7w9{u+;PXu z%d+hD9!U1MJs#D?*?1W~!QIewK2?t6yMe`hhksWgXy=<&bjwW1jSHMm&@IE7= zKFRKt;Jt=k*Y&tpG5Xx%`PtyElj&YaeJ|9$bLbykK8L<>+pGx`{V-Ka^x@GVjF9G6syPcLhESYg}V(4cXIx#yj#~d9T zV~pv*?taoG29%(_wki=mq}7&6q*vt;ERa}>6;pB8wrE-{rXm03#RI#w=%sdNd&I1`3dESCcqoGHT z3l|p=#W7gIVzH6N;;EA>BZ%TtkuHp|;U@^n8CDgQ44EpjGBGe>j8$c#WXQp#Rhlar zl*q`$z-5+LSjx3!YBH+A%B;wYvNIKy7|4vWtgMR|rIsOOl}uwSs#wfnGRlm}A(lkT zC^IawjAb(wOv4#S%q+neV64hm!IlFImRM#|F_dOh%vKpn##J*0SWL*w1%?4(|KjdQ LrwS4Vo9G{a5t@&= diff --git a/client/resources/hardnested_tables/bitflip_0_13b_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_13b_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8bffa0f2eda37eb0bb268ac62b037bab700a5c0e GIT binary patch literal 15338 zcmeHNdyJe_6+hq1ba&bAd}sQC-EMbhELhvxeYPsFEi(v-3N&3yM4<{J5+7Y~x0G15 zw)+{Qq|kNON3@Ft7D+Thmu*sGwp(h4N3@0}EYXA*2^|f8NZRg>wPJv_$KSc%Ja=Ya zSv8t|H<_95yZ7AJIlp@z_e@~<#_D^z4!_z)bl2W;A+g98J$nv6Tbs_Fi_s^TERnaH zy2tT*i~jgTdf1{(Xt)Ev5;kpznF1oR95qLnY&^C$c8^CYK=me5#fGN)-=GTAN;gy4 zE_8`e1JmMNXw&g9YMiNBB+N0AN0=6h407|*MeNkhLW2!ld)nlM4 zk#8}@w81S4Y-&VxKhxEw;woKTyAs~P6fsrJsPZ#44q`+M;gb_+VY3&sFH;VQq|Ey^ zcIJVs78NaSy^ioVuwW>?9DP5O>3cuZQq#Ol#xiwE@Br&RTJpMV*S HIdfJrYq0kN6BBj+*f z`8(?n;J6IZ zuz);TCl@g}7EpGSoif=E4u$hr3{Is%zX#_HBjcb$n)F3oQ`DwK+_$<1^!R*A&n7G#3IGL6SUhfC zHo0K`UY0C>4hXOYWGga#&^f9itCVMy@wxI9#oFCA0S1<=SM{-0PTe!p z(1;voYL{j(I@9qGI}Q4L$lxMVTkzY;^xQEOUc{zfx=X?-Fsy#qrV*D5uPa0o?)KBY zp?_cL)U9A2ql}K<#4qqY2;SCV&(5xbX(qh1*-6ne`cw&NO(1SBT zV|wHXrsH5mB1ilIv))BaNs;*qi>*y!e5?~+eA5Njd0 zb!c3!DDq=QD5g48;W(5BF-ttwVULn-z1f9Jio3{2${`NXL#sHNDJq zBOb3~+Aq?ikOh#`6s0(%t1Bv-*ch6miswqBP9mTg0}?*2%ZV5pT-0mk6}K^UG1mU5 zyDd8f?R^;FS~JrjUSPWSai*V{?R*`*z=3AnpfRw8qhOLBx;1}S(4?3)D`wgYspMMI z*DEJ)plRGjvI$Vm3WLttq*14HLp!c05G+yZh?JH;mKiI01l`O66w}X?h9`XAc|ag3Uc){eXL zPXGO3*fAW|Op^X_^92#j31VCzo0<%K!Q7PH|bb^8o&!?5gju{#XyvKpT^Kvr)Pgs67%^->lhaY3C0oLRLJiHnQ@ zUbd6!;K6_M_oofToyGHIYs%CsHR{d!rz$k{o>KrthSyobNgg&Utcr-=W%}d|Oxr~I zwLOvR{14y_sLE=Hwc4%@Y*(S;`5@?qCP2oF0z-iVqcOw2XxdRqJF&0}Q1<;$_D|iX zDh({(5BFzYkL$07g{r6Z7-dG$7o`8sOe0-{pBc18^X_KpCfZP9x zVDv@fvp=WD&I?41^d|Z80@2cpfx+KTh$ar{rg69yg{)NR~XOi`)^p+G-Y zp7EXci+l~vT$5f^uE8*U6}vRbZC{P#ou$b=n!#PvBu?}sS5baBp$<}&{1uLL@2nl^ zRBx$mO;&fCaWdg9>Q!O;7^fy9{EyT_L|yV1I|imBLmFzG0t#N|33q6xUs z1qD~D@u6H_1bUi$)Xa~2{gcb_+72%FL-Lvm#DaGnPzRRHU{_U9`Tu2hcT2%t(lv9> z?mG7*aO}kBpbw d^>Vv~h{%6~!9nKp($4K(;pTn`h4*b4{ulFrY0Cfr literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_13d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_13d_states.bin.bz2 deleted file mode 100644 index 46b67bf8390c313cda54c091e96c87bf6d9ee92f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4000 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_13f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_13f_states.bin.bz2 deleted file mode 100644 index 33b2abfc2ddf80b050eaff7da949a19d7e184dc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2056 zcmZXUTTD|40*1i~9WJ&jNI54dAS$i2Cxvq$yJs6f#Za_#0n6=l!>yOoagt58-6;v) zP(*>k8LE_)b^^>GgACXdT6QyC!pfzz(3UWOvg%|uTMD>{vrI)qSrm63H`)LBd-xu{ z{F%SM_*?jlh*2Pl)v&Jzi03}y&kon#3H)bJ)WM>tz)u2h1O*;FbE7f9MR+5w2mIfH zNxZXXZjnx>&IbU8z(c{mIu!8ebU`}3rGO=70aniJm$7iTRr%B17Q0!G|r%iaOE|EmLTC+1U_Dz{9A zZ4qjCNK$M69V4)rp~@?1>{^FTW`_(r8OQLFDe)Rii#&lgqwYRXs9nER8k0bnj!a4z zXF+86#E=`7Fc5K*J&2p%(o0?26Y92$z$}n2J1H^r0?4iR1Xd4yW6549grSIWi9UY{ zDO5UT$vBQlKk=}f1;=~}>-DVoQv*!&z<59KfZ4-&RAQn zMh2zv?IU}?So=IbqtXVj++edB@um8hbn4Q?o@QY)UH3jt`k^c%seiiyb}a5UJY{Yk zbzIdjwHni<>|0wJGWF@`V5NBH;dgnBZxzGT{^Hp7nU9$nndKe^BHUY0^p2YoYL1S< z@G)oBZrl6EHc!GO(vSDt;k3M3O%uVP1Mk537d3T#p?;CVUmf?EcaS}~zN@o8&3OGR zofwUcwp^l8w26CEa#^xrr~G-vXG`PWQF6}%x83dC-r>fuX|cJK1g%TExqp>A-RB)^ z9u#c3cgd^QqF<#^`>&Q_yX}8BPR$KEw&J(5sxo>Y<(1fw&GOuby$(Ax;!rh?tsXpDBK=smWytb^ppT_-9L+zTtKC$|c#2IAL zrFO5GV;&jpn!dU9@OZOEt~6@!O>V~+w8Xt;gse0$qKI|i-?z!0O6_e zWkL!_oY<^lrGXp_t*<}|AIeu2M-rgAjO!M`2m;cAv+6<|^WrMhX0g{UEpBv_K}v1! zq}2m#a7_fAUP3;v%=uP@P3VESCa!hH6Q$=N79C=6=x|6I;S$KC!O6~ISQF9DLQ8mj zEiE`40|Z0Pg4>D9h35W*n_WR(@i?3vsh(Vx(X%67O!9;sMY17-OJINo%pibFw7F-c zNAMJO_(;FQ$W>USfTtlBZoWM!am#>W%%RT-B66d%qr%iFp;N;N)#@Vt{(R0y9aLWg zU~C#@#R)4ez^qOwOc)7gyqLOaEF$1L2#!fWLFkY}FaS5Xal}eVEO{5SBvkb-B`$Ek zR^469x!0L6p*C16J&f@C0t2oWZoC8xf+0JqLR^i$6sU#GhG0E1{Odo+nPkC$RV2U{ zdzu*qVaHj>aH2%}^<<)>ltK(MBqL<39tR{3n54b~D!5fLGfUtFjC?z?k+^83g#$*u zYR2l)3l&H^jSj2q^^|_qT!==zi43zuZ7EUm$Z&zYa(0&QIl3+JPP8pc6i!^JyeyYv zRWRNVE?Ay-k0_N=5UD|MYrlh=eIozs6a4AD1^BmZo zj(Sp7&^=v>pp!oDN;tt)y=${&q0UX+}Bob?d z<>Ba)?G$rMJLX9Vn|KnP%YiVz!`nqKCq;u{DKL=&S%_DeqV zl!oM@w$Sf6#&Y{aq}>iGE{N?E77g_^Sbj=r(mvCnqx8VlN?P1LXSGSueKb9`c>liy CVynLZ diff --git a/client/resources/hardnested_tables/bitflip_0_13f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_13f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..29de4add8d57179c1e1f3770bd2a7e23db2a42b0 GIT binary patch literal 21315 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 AzyJUM literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_141_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_141_states.bin.bz2 deleted file mode 100644 index 3be41189ce654db39049df6172e23ca7bc971cc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2798 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 diff --git a/client/resources/hardnested_tables/bitflip_0_141_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_141_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7df6d080bcd223ff9e22eb137be8eceacfdac4bc GIT binary patch literal 27811 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_143_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_143_states.bin.bz2 deleted file mode 100644 index 99328786c5ff4f95d8ed77c676ed2652d6f20ac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1533 zcmaKs|5uXt0>^14YCh935I)ZtjAJIHK4}e^hhARyvNc1B$p?DOjup+qU7vy>8(DsPK0ByY};`TO%?b;^;{AcI`PaM zGY^v4*^HC9y^djLBm~Mhoz#*}v(F@bT=evcXvj6X0+v_spW!GlLykI| z*)o&}cuaDaEabey$*Ar-6h)h?;1!nUiyIbqVX@QsFAPX>zTe2X-yAr3DKc(YXLXD0 z1If8>!NhDm#w^)Mx2eWK85%aZc?-{<81H2syoLj)Q*aBl_IYN?>Hq! zc5kU!7F9c!xFP3PGKNVtaV~4r@cJt240`hYA4@luS&bS}AcPUib5@fZ;QEZw6ZO~E z2A9Scf@yK9$D2RTnGdU-()sbt{$JS9|9tbSPVUU3@)uqGi`B7m4|mCGb5ena)N3J} z)N&6DZZDe#pv?fvY9WDTFx(zLa%wCRNQy9ku`-&HbCa`5yr!ITs*pc4QKr5Wl|*kO zv_%Rn;?|j2F{i8UCo2taPByz1a{~SAJZf&J<7q-0i`E9Kd>ksRrBRIw+>ilMo}h_o zm4$OagBp#%WzHl_8QVASgk|sq?qVYQ)DvcLP6`t{zu-(dZsgM<#)X?E8{#YHr!qOF;!~81^5oeG%uo8h**}ENms;09e{dpm3&p(UK)Oy;oN3vHX1-B#q&p(>-dxJ; zl;AElfeds!qsJ}-pSPKvmVW!o8JP;xUqE!9NlS0mQzeozeT=bTw8gX^a`Fx~XLhrOH&YYa#ni-$dF=oS zZFOhtz#z4kuwlG?M&ACrYA39)jz|qVq-}|4odS41ZPiG&dell>bB$&Iz>6xZ8WK?! zB%-Z1^IgpmO;>gWdd%BZB#s++N+yExF)D-`ZSGvef@3^{Fl8ApVnFTVB>)4|3FzU& zc0nQ9PSy?R3mc6lsl|c|MfRov>A|-Ugp}g7Nz8~kk(mv{K!d?bg^8(_MJ37*VvH$8 zu_Oe6ydERryT;dR21w*0-zT+UG*ZZvDr-+ey`p|YLnp(_Px6iuU3J9$y*hl&|<1@-L0a!H}e)AB>;y>8ET5x=UddM&Y$DX)A9sY;5eg2BZGPm T0jalk_a^IDmgvBl-|zl6lH;V2 diff --git a/client/resources/hardnested_tables/bitflip_0_143_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_143_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..d6fcf319d006ad23de643a64670324b66c779ad1 GIT binary patch literal 17673 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_147_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_147_states.bin.bz2 deleted file mode 100644 index fab2780c76e4def6fab2111ad3e2d35c4353a87f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1057 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 pZBE|iS3oJtsfGPv#ST*RAf&{|O~1jBWq` literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_149_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_149_states.bin.bz2 deleted file mode 100644 index eda7650e5a575c3a57ae66ad65c9becfbcb4809e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1763 zcmV<91|0c9T4*^jL0KkKSyPR|EdUt+|KI;retZ#8Fw_@ea4}Q>7hs0g5kLS079aou z6j5Dz;0-?j2gyW=lmbBj00000001M5nKWn(8e%duF$@W#OhJgyVE_gkWXYpIXwwmq zp@?8j8e$Aag9rdH<0efS14fvPjSNEqXwwj4G#EeuhZ!A$vWN2a-6GoVW5um~V z3<{D;V2qxl5l>C2so;<^N$PC`^&3&385oZg%|KF8O+si>)Sl8z$pN5fG&BLDN2oLd zCe*<{8WDbf&`PDkky%wBeoU&U{oJ8WmufN$lK{n)5W^NMSz-$^l*nNe!HO6$C5))1 zRamPQ62?-j3`k`$Rs^t0a3%iy9TLi`9Mc{-eQrUZvXUd8E%Zd<;A|f4Jk0ml<3*^Bzb~CSN&)#xm_5!He2_7iKuW z0gtjLnC)Tq6>w#K75Eq6Uv+#}Vt;{UUvzv~>@t1h=zZsBf!SjBt{9uDOAp|ejHyEL zXArnp_y-7~zATng^c};Ico(LTJ)~_Or)&5Y74r%4FOtJt%{o3Sp`Rl9!z`y@@))wh$J#7j zk2lK1;^5-T6_eO7dKXVO8S*+FhO)?wCUzypCKAZAK(i8S2DydoH<(Ol!aEK1H%7?o z7|+!7HPM+ud)7FzGZuV@L#IXXSmQI|%6MVZ23eRs$?}|E%KT6KeIw%bk0iqt>b+bi zqoavFax#fQNH7jDy3{v?j3WwCD09H_S1{o69A{4jhe4R(SwOOnddTJ$T)4>CIu9Vg znN;K%2T5{9xlc=oGa$bAfUKsHHVVq;N!^}ObXPbkGVPa8?z@Gr4WjYd( zdVEgfDZ=Y4+Ed(Ilu|EVFDWyoWcQg*X_)XNn3&2uPScPq@EH_sDx}L%NWQw%O^Tb2|Xju zEMYei<4SrH%5s_xWZp|Afx4oUkD;AS<&MKaapW?X6O_EhE)Nkl5+~xYrIu3q!{%NV zbj&wvKe9cn@*kZ?@Tu2%|zvE+X`>*hIM~lyvn@$K-fBKaEin>!f|QBxCwga2E*0 zlLA~w{3|HNRx(Uwn6dOH+!^@`6vVMl0+Y#9W3t9a0-Y$AfRl#W zPp***6d@c{l}f4LmujO0F<~)fCNQxuv58&rWHP2Qt}Ilnx)NMUE{MuhT^$8FNp#6%!--YWqogdrSy(}iBu)x+QNpezI66xr zt_j65u*q<-M+PIHO8~4?IN%x4Tq?w?DyVQv3```#bd<=rsgYu0Wfm+QDrJ<*BPlK` zDPZETa4}^VE}52KvmuoXCK*<7SVl#XFfwp5WXh)oQHv>XvZ~>cF_lXTDsZtXI58_L zA(kwebgbg6j+Da|5aBW`StA$&D-$fsrVb}evN8(b%Hfq{vf-9kqQenoi;EK$RdBKv zGE*_dkm6u*F-dU2EHJC11#mFNNt|2((8zSB94;7E7;wUqgA$x5mR$eE+>uTcBoyOt Fi$JmJ9lrno diff --git a/client/resources/hardnested_tables/bitflip_0_149_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_149_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..d22b15e0e9f5d369ff9c15610ac9e49a8e258401 GIT binary patch literal 18034 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 ZOpl7>pNi@IRLtWIhGm57s+M8H{smo9gM0u0 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_14b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_14b_states.bin.bz2 deleted file mode 100644 index c3c3dfaf3d1ac2f608bfee1a78d9a28f64125595..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1058 zcmV+-1l{{WT4*^jL0KkKSuXDDQ2+>;fB*Z{ZIgjF0hB=*0GR*~02l%pK@b5D0RRLT z5SWS?&A8wOzW@LL00001#!Q(p7?=SvV3`0kVHg4!4l-oPh{V7NlLW{CqX@tdz;Tl% zOhzUEOqeD>4H!lMh69Y5GGZ|>0%XB50BFK61TY+A$&(R@fDNkTLP z^qOg-NXj(YX%9)7f#{xz>K;VepQ?AoDnCqDDKUvyT;?g**qRm$RJ==T7{-iR6Xt9a z(y<}x69C+-QKpkhG{VL(W7?%t0Z*5m)UQ+jHXm8_CgJm+2IJz!H?VTK4yUa3pCfAf z-Az8%r0*ZJbQ_nnI-b?k#PS+AIL*ri(8o&YF?bi&y+>K^9iZqvZg(K*VUHljn8A!r z2fVt@4yG~G>{@rUVcNMD1A=ldu=KaCWyEm~HRK$tpy+NkEykM|@)+?8fx)=&zZc}( z{G4lhk&Iuk(9v*soaT*>?9;UFUd8yX<;3SX$0B?UgGXDf&SU9xF=)}@Xz?0&4T|R+ zrWkXau2W5hCKfG*4rR{ZZ!dF0lz2~Y#c&^Ly{$P{Fz^Ns!Eb&JReyH{=UfMsv1u@2 z)^{F}Fm$|ZUjzIe(_z$M=sQgo!v^yUl(xLjD{IbkFR5Sfb`8qoRwECX*uEq4Ud5&P zyeGlnU*zvP*Sy|zyBA{@u*H7%F|^v9&CFQAwP}vC8ybWXxM0CY1Fp5K7{f$uyQUj#xWXc zHji1gf2R@7FxYXfV|$qIdRXsqmhrgI=WIK~s-7xPmHzUo656q0gBA={1}rL4jf$$V z1w_(}6;W9#`f#7BrHcq*Fc#4RLju5PSS%Ak4J=}47Bom;#(}1aj4c{SX)$7HOG>R6 zg^0q8DWNf1RACsYi7^WaXbhF4iy{psEHI{%6Bxk80}{bwNu@MQRf=e=(M*c0WJ?Ih zP{uK0(-6|KF$}1zSgc~qCQA`aSXMDsBN0ms1*E{RU|}&N!xg29Mwm3PQG*hgm{SHJ zS}{;)z^euz(*s5&S}>M|3k+5mB*em4v07+pQet5dj3qQ+Rxwi0#F$}N!7Ny+nqd~0 c156W46-^izU{g#S$VGynhq diff --git a/client/resources/hardnested_tables/bitflip_0_14b_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_14b_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..139d6cbb64100c32f86b1d4745ee9f9f10eeec6e GIT binary patch literal 12365 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 Kg$W2Y=0C9BIS$zX diff --git a/client/resources/hardnested_tables/bitflip_0_14d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_14d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ed8fe08c682fcd4bc8014338ce6fffd4f45ee111 GIT binary patch literal 16299 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_14f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_14f_states.bin.bz2 deleted file mode 100644 index f61babefa8e76d23efc26e18d7899761604907df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 895 zcmV-_1AzQOT4*^jL0KkKSHYybmGfB*GYL9>bUK@`9d5Rd>6KmY-l0r6lFKm-su z0Dy=93)tWWUjP6A0000EVK51R6A6UV000S-O#>XlU=si)6A7jO023yf204VlCICz( z6HEXACQUR9a|wV<0GLcBm;eAwnrIm269AY2Fqlm+005aZ&@fU|L?W2UJr7jLjSWD_ znv9t;9+OOZQ`V$Q|6x*>x^|1{TqmS?PoX{)=U(!=g5ekzS66YE#r{{Fc$Y;wJC}^k z^6o_O4vVPlLx&E;e`Z{$l+yW+`1Lxc*j;8FO+BC`p>bCXisQm z7_ukqUL!AkP8LtZ^d5ulJf~GZF^Tq`W-*6|vb|3O)aacP**Grub1Z!c~{LAz_s-9EbN2p)HDf`!%SshaIET4Igbh6~m77QOCeaq=s=q|jGQpSeeCK-lmqK@*+V>9f#t)pm;YHB&Gcv4YlNi9uy>Q^2 zg~Nxk<;yrc!NJOQjNy{##Nfr=^Ll%Z)OAM-wSAAt^_@p!s&JeagXU+xy`{?iOZ0pP zjq#6cerf4FmFGSc%kVvifq55${k{R?Q{H->H-n?#GIqFd9t@swUn*QGaI40?g7}xj zzGatbc9$Hk#N)KMT&~jL(RE!;3zEiixH9E*I8I!@;EzF7h5uFbtULxoD8%HaM4^$D zFf0aCQ>ZMe43or#GM$RQCL<;mEG9-(a3#@lb!IG5a=0!6oD_K#(90$nSSCWBqLj&B zn5zmd;JcP2b_@(DIVz(7@FTGf<&y>@g-fuq%4FeXSuo1NjAb}0BP_DS&Z06$a&S8d zbrYd=6D&t*bpyF4D!3O@gBa~+D92)OQ-sSnP73OdP8SO<7|Dl0!-Qd&<-(}Gyh4}i zs)U(JQFvuiRGzd|7LtKaNS`KCkdbATRAR_W86{$j6nJG*x7GV}Ci7N{#78w;8 zlMDkA%2a6~glb8WGFdXIkXTa|GMX7Cq?sloD%D07sZ1Cpn2gGiv7v!RGLe%JV#5O| zSumMpOEF5xl^Dw-5>{D8MiFBrSzu*~Ws+Hlv4N8)R$!JgLoikt%oZ>VVzOnJGYZC5 VVo8jpGb=y%yOJrwgoJ;AyI>NZi_`!B diff --git a/client/resources/hardnested_tables/bitflip_0_14f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_14f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..3ce07c452106b55d1133b80351508184fae9ef8f GIT binary patch literal 12439 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 WZ`sJNt!FpCiVR8QKOFjP59@!*!%pD< diff --git a/client/resources/hardnested_tables/bitflip_0_150_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_150_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..798da8c6f7fbe3d526f256ee7d09334fbf68d4c1 GIT binary patch literal 19000 zcmeHPPiz!b82@&hPSOP|dBpf9#DfQe#YRo$ z-{1Sq`!iwRc+ceQ;+8R@Pm`aXq1sBiLTO0DI16Yy5fx}4rEcn~P=A_MX*0!St^GC% zDIZY2n~D`G6p0P(=7h#^oM8&AJr-4{JAH~eW8wF%>8)(a+i>??zDSSY_&8Iqy~@-he?@uN{>fBz zC-|GkBU_oeaXRc8vv!s#uHRnmSfU>4fQC8IFkhswx32gC$6b#>jwd(?JE1}s(}OSK zSY*?&9oI$ZZES*3Z;fDxO()F7NdUV^0oElm*^juHD~U-A5aeF19w^d2g^~r={tD#L-(!Ml`?k z?^Io2niym=v4c;CTiBE&h(d3L=ONxp;!?PA4wiTYXCiT?>K{x8>Q%qvje)3h;qW$_ zLcfnMh@OWqOL+2wrbs(oNCKt{uKcA|k+bNlI*alMhKG@N6SK&>M>(F_SxU;#d>>4O zTR|2lF37Dt387!kg#OysVV{O*xR(0?uGs9{dQv?5*)X3pZ0G5tHD!U>dk|u0889Xpu!HG2 zgzow?V6y!TK#&(I-pW71=`|PtaX=6;5K#O?G?O2202uqb3v_4fW{5q;rZ(s+xe0MD z&VZK@@;V6sRtjLwl5;-i?-c+ug@IMV$93bS_(SMBj)-rg3rBp7-5y_OV9s{p3the7 z-javZYaEXNQc0lnSsa0xz7NR5Q}inE;v7=6A4fq`YuAGRuBZBjlaU$phz|h#7{@-Q zT|-QX3x*B-p>q`Qg8U~0-I1^80x25KfGfJmW+ZK^SsP$V0+c{|2Uq93*UmDHBI$Q! zN&g>Go$>{iJ)XD8qku1QE8QOgk76^ObxBRY^7>)dk0@tae~+P@NjZ~prZ(RilrsUk z^`&p)FMZ0HtX=J$SviyAMIdhf9(z*Gq~lC7DyHL1w~SEgIMba+TXmdCfK&&{?~#FW zb2>Mt>zQ;t z6V|=ydZzWR=+pH~x*+raUXZEdOghe_<4m`V7GN&2&;RmH zfw53}%cWAbb6EmX!LhNOGhQUwvb6KVj(0eAFwwwXPppi`GV_QYk=*5)X~HuT4GRoO z9}7cvL|n?8<0`rw6{_oVD5j_cw3=(d$mlY#pH>^SWjO&OqAA^2*Xe7sKN_^Jq8OXW zdwVrAsTC5vW=>3y&SR$kOqa?VW_b58f_fS?3?=p=rs{BBxRR+!ST2nk@rLQnn>(xircv#~ zaEO?0_Nc-WfQEf-(h#*jN7-oBSp0T}8YT3(%X+;^r%tpCUlM2Jjoq!70uyy&y2%Ki zn-tBoBm0Xf4LW}@L2;K*FC47Y410+H8O?5RBOyj_qQA%s^-+{~UAj}TjKsH7-Qprr zW5wdAzt*91Vz$JYLtX@+r9vQ7ZkyjDcq1^EV>Yp=^_D` zP@6m`$?W@K5TLZ6JA8MlkLDy?W&}_E766H^7@Vh#uTBnK(bBac$ z{gV;Rr@VW|`P;)cQOC)j4Q_CrB2ivh9sfDK;@3H=tQVGKSh$ITWy-T^hg1R(qbw5V zBBA~wWy%aT%5Q|l`#ASX-b_DMn0p!w&uG!&gZ99T!uUoSjc2r=**Xi`Eyt8${7wgOac-^S`bEBR7}cda!Y5rAK3YnU??l z zI|A(6L;dXAKUGz6exdGTZy((K-J<{%`}v|`O$p;hCHQ_D-z1Pi`s8gVZj6L27YT~s z*GG89l9F}XWN?1@#rW0Z-~Uqes>i*s)pA?&VvoK0hgZ6u2gCP6auBd_r*NF`%AVv_SY>#hlKl1*^Gi8Dl>jWQTc4Cuu?*oYUzSr1k?)-5O_t7yfhMk z<}QTfLV5s88Y|%4Cki3qpOS z4{Oor60@}If)E14v9RF_Y-=+OX9yt4a;Xx#RAC`dqId43vK!R`S2Wq7!h1ARZ1?~( z-AP;kjd*Pm9>(cV(1G}%jvm*dbkP>L=1eLFs~8L=W6m(_qNEaM(tZYa6Dll4S_RHT zb|f-@KywKg#b87bkExjEXQPsW`odp|mXjCRN^NC6-$vh`a>9}4#hiXKrP;0jZ5D$o z2sa(7|GRPGjdF?k{haui_?VcO{F^a5V`8&or~Vc-9<}8p`mL>p&tp>S26q&wVv~wG zmP#8tdC89ROFJDItXM~mieGEqu_J0QEW}4+=|y=XV-;6=o-u~2^}lumaLLbG7e&1{ zYukm(9QwS`K3C;fddV zc*fhfFs?Qp^?#cly)?;D30mII(mW>}Dbno4aW0eqtdbD8r({KWBXW~zHIs<|j4_>> zpU@jfxiZN)e!gs|Y)xBmwXG+}c;LDg2a2g}SDm|hIWBgI^-8j0*r&r5ww85azTrSn zf+0SD==AyGAu6XH-VkBTx{7g?AD~7o8f?CR~L;w8;{10|6k-Y#~D2>iFQN#U67ck_>7n8dsYEcuCOmdj6 zcN0XEM%Plq7s9d0_FUcFw*k+)LLV_?BaqY$D}Qe6^WwP?r5J2irVRoChdWo~Q7)%a z(fu@Um&Y7|3xu3T1?V$L&`3Pow94Ck?m2C%4~dhf!+Ygx@}`mewOL4}9#N z+&u)t*?s!S@9MVtMwf;=1Ru@cf)wk;gNMdo-rOC&i@2TE?hWlUp zljA9;nX5|2y}GJ3!=5k~!5$4(D6hqt(tF|Y$(#zT|B!FIDL_M;AroSh_5Dt8+kBZHF1%4 zXLe_1WjI zPd;zCw*J$jtyc$YZg1?fJ)D1%e-U)N>%VTgC_0I_^w(2OVgf@nmTf`2$6r5S;{oBz zSubmlwcj9h1FF%#{M+sSD}K^^Uw7cy%d@usfBfL=!95r38~?prHMK{dt@#;R{v(^L zBIFCmX_z_5XyEXySEOvvGYJS#Xd+H%GpTIrihe=lqd-Ue8cUA-aVMC}9e46`^-$`! zL(ZbM?!$ospo|O|)mE7FjRMeEG$ z$jjA2On8VH8&b)_ob&QJHJvQwboF`jzkYOBEYR#; zr~nvfsM?6CWkFqUVGI`61x(JS#<|w2;V;vc=^e93MMRs>N)lwyjLO`Sw)U)w_amna jo0SSLo6_gHksOrTM@x=n7@N-pAJaxsplNB`r>p-2&<<{^ diff --git a/client/resources/hardnested_tables/bitflip_0_154_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_154_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0ec51234e3ef702e8d93e89f2b2ca9466fa9ce36 GIT binary patch literal 27232 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_15c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_15c_states.bin.bz2 deleted file mode 100644 index 0180aa9014181cb4afb0745471954ee40853da63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1122 zcmX}ZYfKY&008hS75ciNw7v5GP(dsduuXfH@S#qZO&-O_$$;|syYRSP-J;7r)U0tx zoItNFeO%aNsHfS81cM;Wyt;j0)Xm%I;GyQ9pK{F;?=kDPR_aewb{|0IJ7z8S+6g>E1fQD*mT|mK zp^yze@Xi`7xqsysss;aM?74mYv}vL1_KBsNnyh_l<&@@yEwWaW`^?(2$P0muL0j~~ zw@o59gT1LwO-G=9d9oDJLdc4-?LcDj888uuLjnw|C5P1vI*TUm7#$8T?|GL0EUjJd zSlEBXmmjiV;jFK|I(w;Y>BmlU<>qHFJ-!H~GbT(F(+rcpB4)Yt-O6`;rDNG{CgDXP zOMm~(Vkh7>&TE!-E_lnH?r+3=z@x@->g2vJjXU!|J5d=b4?Z4pDm?jyGL~S8jbiV= zx2cn0>?Q4JeTmkr?kl_jevnTTRcGhydw<@#t@&=XZz!^ClU7d!Ulu-c*bhp-fw9ef z=TR_YuwcRHSo7c8kKMYH92(`X_jb3e{AsXL$qS-g_Q`s2?|N64V$hQqavB{yT(U5n z9Ex~md5QVM`1U}@PcHSSq!mm1{mJmFg9%U~7;Q3R#iz{gCME%=`x!nE0l8ivdCeeX`TyNkZjz-H|B7Bqh2Uq0n&L;KjpoAvLtq|qmGXF>4ZDN z=;UZEMY{<+{!UuUaR~xaX&{8>6F2}2X7XnnqR~SQ~Drnr@^x8La$PTAQ z-`{=Bg0&33NbP7zku9olE@(g+0Yg diff --git a/client/resources/hardnested_tables/bitflip_0_15c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_15c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..aea4d7a5f30aa5dd331d4afc8f9024ad794ec8ac GIT binary patch literal 22128 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 OQwi%C`+vH0;Qs)zpnpOD diff --git a/client/resources/hardnested_tables/bitflip_0_161_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_161_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c0d488db2fa09c5fa2fdee9c22226f0636c443b8 GIT binary patch literal 42238 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_163_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_163_states.bin.bz2 deleted file mode 100644 index b68ad5995eaa9d79fe86283dd62d9cc5fb27860c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2071 zcmZveZBHAA0f3=NOaTi62Ip?F!VJa~d;;I`VYb9eQxXW_280*;yjqSq-?3Et5}Qq8 zNnlB#CVmmd2HWR}5eR{{UWZm~YKjHcC z==tPVmn86Mxu9A8IK{wAC|`QpxtyLjkoc#JjD+mO^y96|2?-hL3D=n`Svd*+2e>!* zSCy$MFIgv|{>aR@NwkT=Z1(BTVWvp{`0-1kYM!Mx0HD8Qd>BMTRF>7s|8{5D0z4L6 z`mFNS+eSmfiy^-GFZ`T@{nYQpVWEyur0xM#aW`CY@4}4(gV*vZ*(SRavH`FOXzd;G zOL#hd**Rj`dg=%3z08HetH~mb!Bfo?h*&k7-W8!gq~pLB!jQ_PisN_jh04II&U=uJ zRG%FGn`FgzSoshCcAao}V^8~TX6Je3i+2^rCk`#wmZ73Z)sZmt#ymxYau7U>bui7D!X&%ePMH9jbX&BhUEGc5kYzS z-ZbXkJ3f=ryqRb{bsZP>dJ2*W!#<}aq!Ml_hv=|e6^u>FIf&P-h5(Avwfb4Lg#W;) zv11X(9&`36ts!MUm%e|Nre*n&!2mzVj%ud*>~9eeDhlGExr$n?4T%;yy==@$KltgYx>#!v1{LbQ?d4A zMSi#6JQmogZ7Z=(MaquxWjDKf^6iM1G=#w(D24_Qw_4}s@zXAb^+D-l8_ zKaOLNBe}~~$7^7*g*Sv`qR59Z}k6$?IORs4V|!9cTh+aV04*QEn#ly z2EO832^g-NeCEOgnTJ-TWmB~WtN(d*{An=;0vPTwTcCbraK5Qx{me|}Ff`4`TMXHg z7-@nuAPsPPdKed5yX#&lGhT~!Ay~iqQat{Y+^uZ$?^k}kQBl~lw5u3?dvSUv|5ZT{ zr->jIg`y=9#oYQ*Nr&T`&f!?}ar9=lpdCH{ylcZVfH_lvrsm}_QFXov-yWvJ9ZY|W z3nPb*2EUIu3V^MgtcYzxi{t8IR>#VfasjN4ORiQJm*YFo0≺UP@Ku{5axtzJD~e zzDfRi=|BJaMQov7W`46X7Y#Wkmii)HFaECS^O(tvikYW-+{;H_?DO`YUp!y0?bwr-EGL+@HQM}nz%z$U3Sfw26Ff~(kB15n$w(euc&5J za$*Rbnm*Lytz~tOEXw1f@3aP9&LS)MX2VNC6V>FuTaYy;NE~wVYzkD(R|Oxq zi7;Yhx+W26D`>}PKtj0NrE-)+5JFcCj3l1=z0vOC->j>?BY@Qs$~y zTh%+~;L+|c^M<_7hEakNi=s?-xK5|&5R~?J2uNFA&)|cUwixa#L#MKC07wwcEHa9)SRg4+MpwsBrjM40BNPY z;cC3U=M5IiMf9p(3sGL5+B6CKqIT{atX-GX_RF}%Y4wa| zF-ekve#II$CZ?%HO?5HCLF;UGsD@L+oUDeTkjLbtv?jL+pG5UW?kp0UWj;jOYq-N= z>S4VE{YjN1AYS9IMmYfS9I7vtVliFa7s?OHn%2?U>&PI_3QDsG*XMp`QRm&de8kz} zIo)}R#o~&iP|W9SNB>+Z_zl<&j(}^4wuU4SRE1H6LOVBYiwa6%vYoVpAmTJdRwZRb zxc$?gsk5k_rt>PbY+TpHTbE6ztz&Im@P17uU44~j7y1<)wSUc n-}&b~#UF@++YdkLRBdS%7c^^&<4Zjy?@wyaiW>+1Hv<0!T<4z1 diff --git a/client/resources/hardnested_tables/bitflip_0_163_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_163_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..34af1d6f792885318b632d0a06b35ed152e30b0a GIT binary patch literal 23829 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 V2XTdY*_Y4j_9k4oYBs!)`d>;fKkNVi literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_165_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_165_states.bin.bz2 deleted file mode 100644 index 69e051fbf05a89ead34b54cac35931df8479c12a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12956 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 diff --git a/client/resources/hardnested_tables/bitflip_0_165_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_165_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..fc5eab95130277112400fbe7ded21802a815db33 GIT binary patch literal 52098 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 JpSiu}{{z|J{gMCx literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_167_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_167_states.bin.bz2 deleted file mode 100644 index bb2c8cc48e2a75953ff0d0e18b970e7997b0fd52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2901 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 diff --git a/client/resources/hardnested_tables/bitflip_0_167_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_167_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..438806c68115f44652bb57826eea49bafddf674e GIT binary patch literal 28775 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_169_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_169_states.bin.bz2 deleted file mode 100644 index bbec52e26030ba94e8c3dc47586683d466565dd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2437 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_16b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_16b_states.bin.bz2 deleted file mode 100644 index 0a34da2f642ae62699e95538d6530b16f252d182..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1400 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_16d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_16d_states.bin.bz2 deleted file mode 100644 index c6758b6a2deb35274757eb0d16e7ca0c107cdb30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3478 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 diff --git a/client/resources/hardnested_tables/bitflip_0_16d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_16d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7df5b243e9ca4c95f4e04d6517b3c8897e0dc9ad GIT binary patch literal 32892 zcmeI44U|;XeZc>3zV_|T%)7g=E3>c*gDbFPT^8iKfQ(TZ6)9M2K#eDB)QAvR3`s3D zhG)^BqKzgRQIohHlZdezl9~u=;#dzcCRny7p@JV#)25Ol5j5$EIqL22f8Q)DxPl+l zr02XjXLn}ad-vY|{eOSWO&vL>aNe?w7ltA?u08!(v3B!j>&Z&9+w2zMlbZR59Ez zl!^WINxhw#7Pv_V>7=>!%%5U$pXV5tw@s-X)w!bhJOc6_=rdtR2)`E@93KOPBaMNQVpa^(W>O0)+yL9(&8X0VV1vGVjIniNlNgDWKml`Qr zTgS}?f2`>Bfa{GQELqJa6c^)zaBv_QBTY{PJzfx|SpFoSu2vi+maz8yrkpiAeUFg= z_9%zOFu4+flm$9?!%Zpq9fmV$v$dD8>0KtQVJErKMyhpJ!vLj`aZJ`~?Nso4hklyE zep*<`)&kCK_5;@KKqEEnM#eIJ=!HCax{(Rivd5C%)fY&aFxSWsW-Hm8sfCSvP(KFr z@h3^RDD~uF$TovqBN>!y6LfHCh zzR18VJNNu@Dk64=BXdKwBfx;O^a&=Br2UkULG8vDa9y}dFBfK;vECrF%p0Y1U#*v* zB|y($YYDb^?A;wAax9;cR{_FB%4?QS-m{=D$!0)Fa)puXIXbp!HQdEWpXYU(K3kX6 z$3fwPeBtq0Fr9u{Z-9*YtCU}I<-kY-`(t4+=5}~D3$W2&82Rwa$~blxRGk_WBnZcG z>k=O0O77W62ogH#x4M4Auv~cnsMrJ@)4nqPL?lYia3rmRqif}C6DIjyv{QnfY92eD z`^^kd0F;N7cdDiW7~5DjM+sB}f@$nhrKE$MvV|J^5^J(Ne9H@}6#)HI*s96e*Y;-v zn904iIo^TNDz|o5uIGFcju^qp`C$DBfUw^Vb|ly$9~(1MoXnyKz?o;^lSPKrXRCfm zwmF3}7udZqeE*~(=*Ns=2br5qsbe;C8YO*E&H~hlT!!mDwZ@b`pJY&rk?vJNkC^9W z7<}2x&TcYc$RooC8L3*rg6-%KC;1^5>HaJvW2<>EUTbXwc&`g~K-Xjk%E5&BcC$gj z3~a)LQ|I&GDyG>L2w%OA0QF)3fQn9V(u%vM97!93?m>X~f(dJPnWC4?JoE$9@}%|^-_E;3;?kloTAlrsoYu)ER7Pwp{c3VCiqE^?13{~#P5TQZs~4%rF!P3-%~q62V#!mj=ch0}@PEcdLp~-D3T(oW0b@ z5#R*Q-U;7;G}YqhFX_D9$n*yzCPCeKPpZHThECOpZG)L7c{5fftC)}FtE%!K9LhxC zZKM;`kpQBidI7*VZC%B8z+I@{?QUqX3g(Vbo37St3Ic%e++b_-a0atG>WST;dhMrZ zffiFjuEPX$E`heAcQFKJO6B|Tx-ElO9>}$zQCCHJkKsLRiXF4EasY3?1d`GjY>`QF z)-qziaqN_vR{|z)sysgjQHOx(aJ!KOYB)l@ap0>ecilj6QwMIK!SQQ?WvG?Ewx4Fp z_M=7~I2D38tQ6Xf%wyex4Rk(UEMC!Ofa+~E@-bFa+AdU`H3Dp;!CDSDeIC#W#2obdPbWD~pj*s1P(K1jl3(%+WaINZzrGsFKM@`t-0S?$vEgCy* zyZQlbAD9KG%+yotH2^nExq7{k$xhu$O0R#avcr8t^b?w69@bp`UALm}Edq#nJF&=8 za8%E!T5?k$09`=9%KOGtJ7e6UKJD{r zMr#?YoN)^Z;w;oFGOOG$2Ebba`Cdf7wKW@Rf^yQxz=@HG6dtH*7GRlPG#yhha4$cN;rQS3hJ>)V(u`7Tp!>2pUj?rn|(u6m#r|Dd+S5s6a z(5%`=&3nZ_O4jBAy!~3qIu|oB0(j6Q9#14%^wK=%(_gPnd^m6uwic`GUGJ2yXXLzD zk-DA^ALhYuZYD-5%%9}sB-a>hU?*Gyx|AyDwx6p)K_mXnrix8(gi>kHtC$a~&)BQj zn@u?BG@u0S{|KJuIc3;{gi+sxtQzhAD1)qZsQ%5kyB;Rbb*m!Y}SKiush8u zj~SkM4&=V7=1#nsJPb2F0tZ&9Pxmn%9*VH5Pbi6BE6zoYdFrByQW;{xliOJPF;<$- zJtkHkyL7}L03N|ZcPld%W(NyAF3iwT*XR|PWQi%KFsPY1tlP_P?YJ9z)ZSaH433d6 zA7{c#pt*CdvlqjwNmC~9d5d$scc+nKtyb!ERYj}>-krU;Hl=o^#O4mvB42?^VYJAO z9^hj@+%p#k*MX^J>^ij1WCE{-xYEgk2@B0ZC(Z)cO`dB?jUzxryOAR=aR~Ki63d0& zApVQr=KeQ;%~zQV4dgpv^YeUTLw~QLnSgncYl0ABEN^Dp=T~3_&&ovz&qCgiw@d6F zzzz|cHx8U#j4O+S!pdP15~QtN0fuhHy++LCb4;33=MDM47T0A7{~Ma(N>M3zC| z(cgg-wh5t`$#ORv`G&5P(2SSsn38j>YVEy5dGK5yHIN2I%fnYE+9P@&P}hh6VS#Qhz}E}wN2xja2Ei^HJp;L| zD67GBF!FdKC!A4c}$TA@X$MEX5Vje#So6k7*7Nnx_?4zLEP*1C5|^ zGl;kmc+!_*n-M`c5zYSq*yodaVF?ZI9B1n4>Uqi-VoGrH1h^^KCj4lBcLzK_H4@J| z_-J4dVu2w5eP~M^KF&mVH5#UjRcCDq%XIIzs9TwTbtb&Ji#za2!iFsJvOe~b6JM?= z$m*ybYd^M^$57S&YXCe~Z{s=Thv|oh!0HP+tQLH#9ka^n@K3bU-HwxAR+A)fM- zz+JsMP&4?TR!Wr-acja(=kfE2RI1@oRsL(8=O4ZNZau||Qu*=-$EFM(YxJ$K<3x>mbRnPYjpKNkiz$_#$a8e2( z<+aH8E24Hd!Q2y}K>hRoy2!|Ha1mhKPx}J;Z>huEV)dy?QAv{1!RD=9!2{I@C-%@R z)W;I`%DuXph*-veqxO?bdCS0DcU7j9Cwjon&wg*@wk(K1pLLr~a&)pKAA~DSc-uJD zTPwj#iab=shJqnUemN)?iIb0GhA)EW7H3j59g%(k)B|#@<71}EO>OK_-^9YZNay*)VQ4p^vPvBu- zjhexTkl5&0)jmg3g8Y6*wI zA>7ChBA+R(#6%q?ymLvgK5w4)*+Iax8eOEAK;x!XcCs%>c3R}`()b{mslW+D2*V1N zK~Yzsx0->tfZa{=hQ4)iBQO?iO7W)J{iSJ; zDhLk3-qriQj|w&nfC=_s9l=`Ulq@2Law@1kAQ-*|WUF#pVmgN!BY$N#L!mC{smp}| z^@)misPnwg`T=}Z_Tc?~gW@^CI|+wd%ej%YiB_De>GK0pb@Fk@p#gC?9bFv-#3^;m z!Z#+G@>WekOPZZ;ds2Bsx41!qDxVpm->ya6mK@;1C-^ z_vxS!aW)CTFH{ZICo1-wf0INTCI6W{0qLQwF35NjO*Hnl2JrG|AVn<6cq5a*&O+5b z=q~v_)~&bB(Jv1VVq;)1siv^k4#RnsXNM~aahKLbB*3o-cLMn%eIIayf<4G9A%!nF zdvp+U`?NBB6Df66dZy^#Iav54K8F$jta2Op^U;!nHYpspJkW+WW1Yqkd?j{$$D2=>DsIN(JZ-uoT>~zTTMfqU1X#M%6cdk zEt{ObiV-LpuZ8b;e`hXN%|ht0QzaD*ts3{htQ+z7rDuvNS}zQq}qBOHsLAbn5I#=x<|SFi{QN<%?xAT1y4jCeV36PZccpF;%fj4 z_chv_SYT0k)!ktqE7V3|wkv5MHi&LNns!4Rxup)nm52?i?Dl-o_CSZEq6Dl-EF` zYeu_djt5=6yUezSlc+&>#;a7khak<_DBZ)HhzHCUMzPTfGIM+D-X*yk#99ACs-k`L zGxhC|IEt8vHOshDC2usyU#U8`D084_6fA|_J<7X(KxbWw%XJ!i1Wji(WG za?~^Vl48nvak^nLBu4g2mz3=hzN2 z;W4N67P5V`9r~E8OP?w>&hA+CU2>XH0W-X61Fb7&l!(K*29y4UC4xx2z?X+BqB;Z_ zD-X!RmE{4du-``#4I&)d>+BO-{2wOK?u;0Fn+cD5S($?{HLT-PEwcL7a`aTK(dUW? zd%e;((YG1Hlp3mxZ0f>kKskU=B~u2Yrlr1xM~tcj?6VZ5O+mK@Ln5sGgz1%B8miET z*O&2kK$PxMX;-OQu0-h(kuD)he=aKJl^oIBKVpt*B-%+n7rx*aWe+@}cVV3;x>|E( zs?+ksNf6iiIk*+$q`5b-Uv*LXqJE?F^LgMMMCs}=6(w+Sx+>33sngJY=nTl(fG7Dw z7pZqvr!%!lcDoqJ_T{-XnoNF~Vm1s*0<+ar!6kj8rlaqwqAkj!T69*o9_8!d9VS=e&SJK_ z;ijlvM`j3gKF7!$r-{861A5FtzvBB=uZooZ9gH2JSz;0&DXlo1a0hIwZq*UUT_t_+ zt0lo$2(aKI`V6-gXke-BLXIZ)f(CjsQhZ~kGeN!vkZ7q}^~v99oT`&wz`Xac)5$J$ ziM(khs#ZOYp(7o^ZWG#QW_W6qQ|gd9!&Sk&HFqgEQ(^Fym zyOpMYcGdVF!9^}~|H6vYl_ZN(4Y_$+*?->UAC%)70)crk+M%?gm)tiW-yr-X*oe#Y zY8`rCL0qQqMMd9ttXEv7H*uLhF4MY+5k_35kIVFNnSQU9(AZJ_L}mK-k`d^-7`yjioDn!|83Fx$$HERRH}abX z_d|?0F%WrHhoenDP7L6jtgARDE-6fkY+pHuJMXH0zx*W%CH16?t{<)iolr=M(KQ&9 zzemX@PXg?_q*_S5-RJs^Nj;SxBg;FSppdTJ%%Cni`l&CZ{-hRdp?cP4ZN%sfk+ek)F(*ooq5@adz zN9i8|-Pigp+0i{vKcC$K!oj)=KWZnCZ@aOAZFUJpK7jVZ(hcdTOyP(6<56vBpp`Jy zw^%_9!`0mH-9_=In(hbErIOIbKvJ-KTMoPUJ}xR@^yxXgeK|=q?MaJT4$n7oyCxI& zKslFcr4Kl&UHpl<4A+vM_DGX{Wse%wuhPwM0i}0}3O9G4PubtMVY2>P3i~Nm`0EJl z?%Tx=E;WUn$d1gFVf0S2%axi1eTA;OQ2U_|(POw#%ad*WmN4j~{STTQXrQCU>H3M` z!u^^H4|DCJzvjYRmKI$y+imZsg7E?O7rtUVtxWIt$^`{F6Nb}|;v{qzou{q`7?EAD zuiv4fdWg*q)$8ymIH6`ov!==JG$#@$l(>VAuzc>v;H|V4M4O5#0~8 zuAM?XD~ZHuuS4jeYqa2gz^m@-U2Z`YJq46f_Z8MqMxt*Ao`^em->0pgW)>$-q4@fxGso!|E3zKfF7U< z5_RfY1rd&_v6tWcu{V@ne8mE|;_1 zn&z6IJ#B){2iwZ~TDXh zq8JF9w8IG|J`6y`dj--R9|rL54g;VOq{S}}K=MmcxBqbf+CM5kU4p=WkjDW0f~qF1 zQ++xw<6{8gV*u!th>ro#W)oMrIUM0p9|I5{17Hg#J_aB@1|U8L;C=qk-~&$6$HxG~#{k5~01)Bnp?L8z0P!&Z zRCy@+^f{pxzKD+jAT=Hz13(FW-?=+9GQ`IK9FQ4%+tPS^3_yGgz#Oz{d<;N*3;+iv zR1T^Sdru90`yc7V#{k5~0PtJx_jXQSd3 zF4G?ni0Ie2Os^;8$7TAsOdpr&<1&3*rswBr@oD`wF4M=S_45muxJ>{5uuLBx1E9ZL z{u3Vz7#{;LksrXGp}%CL9;Uz2JDhF$abn=GCI;eT0ODf+;$r~xcfKp*V*vOO_6L7{ hQG5)5T1q`&Bt8ZpJp9K1tc*?`;HYEymj#Uv{x7E7V8#Fd literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_16f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_16f_states.bin.bz2 deleted file mode 100644 index fe936f3bfe2ff4e117c94e3b1b5b8ee9ac4c2710..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1526 zcmZw5{Zo<$0Kjpa#x5jxX28Qv@hwpFIo{mvh%;uICiu*kP=pc+J8^j%xlQUBO!#>RDTzc%z$Nr#l_Z@iDIrF7jpJ~_Q#c%MN9}+7*CO%! zQ67-($gLpaf{xSKz3;0&X!+my@!@kgT*4skC_$WGcX9bc-q`uEFDgI&W>?J2{8^wo$y%|y zG14W8T5k9k*|x-D~TOlR0mF`LF03 zWTI2Si=EUfnq*sK_QRXcbwaj!(_|teFxz?Kv&^M9UDPa|w0NNO7F^0L7Hb^IY2WebHC{{_<2R%01fn(}}qaRj&DUiv@68vER zy3C_WKyIs?vuuM7n09ioz@U$$PiiljFTKvYAbQI&cB@2Yu}dm$e43lg1QY)%XgCKj z&6B4hp*>D@C>wQ@`=jdZr==~;Nq!TR(mS@t6QXy2Q!w^B+d0KM(2IR{$p3mIIxO-f zo*@b0y(e!4+UCmFmSfQy@a+c|{>V#P8n$5D`n>vW8VU!avJFjlse2=H;$-3UCPLeI zm6v*gLV3)$%VAUD*|qkC(dK|j;L_;?#UsTiyOoa!$A9TtCBhH4*ptuL$xNg7PtCgZ zS4dLxq!x2E!uJOk-FOPH#KcAA#IX88AX)kEy z(dNS)#iJ)eDeOa!oxe_a*w_B(%sjsQ%Kf^Zg>Qp@(l%1#c(pJ&D5znYgjHJ;U468d z$~14>A<#a6u5*H`w2aRt7vm0PB;M>}&E=)T51SQD3T@|pS~B)Jg|)v34eOepc-QYn z;%?=W=)LyMnr{VY}^lcmU2)V@^NMo+Cq&3s9BY z4$Yi?TK>^%N=Xy5-P~S%<%}pJTfn@VUImVT>YxRLLAMWd+FP^&M;gdk$p9h1g{Zw6 zs;wFb^L&MAAlDcoD@VQt152v~Gd2lTOV_9|l^ifwZHKXo*nAU}YHgJ`pz`|-pqGPL zEj_C}f(CRtFc_9{Y|ymQ)>I&n*0p&3K{C;*bQhC9L4oQOc#2I(pXD&+PdTltXL zWw2LBm_1=RepI_ofD4QZ0@99aPs&@zjG z2i!0f)b_Q7zedBRo)HzI@~p2qQf5;?fkMH3kd}TVD8VM0&7*W$iH?stF>loDSq`NZ zF{C`i2DvDB3K`Jo)M3G;vf250Rg9~i#}wMOd6ym4w}h={sz)`lU#ITf;Lp#y?hX1~ zg&Euw($I*ndY9%Vu#%S!KI+fV-iHKm|Ln-hg*$d>Jxr0)ZM82+>!Q|HalmXMm#+mt z8;ixS;_A65%(b;LQJ2vZo6T=64ToW32!!{QHj8O{5J+|dh+mq5C$v?k6YO{p;uU2_ z9}j`oNRVjpYz(Mqami+6XrRTx)Klf4D!@}(z^P$Eye}&DC<=S*L>(_ZozK0g?#y>4 z6XGbu36VLWG(#2Hn!)NU>o1$28+s)~!Yv}gKNxdP__01)?M4SRAc|V~3+V~^1m)Y< P^U6zv-8<1EKYsNuFEXhY diff --git a/client/resources/hardnested_tables/bitflip_0_16f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_16f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0ad58f0325a1779a96f7a55f8b4be4a857e0d23f GIT binary patch literal 17556 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_170_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_170_states.bin.bz2 deleted file mode 100644 index 5180aae930ffb5b4c369a91db97c8d3049bd9a0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1119 zcmV-l1fcsuT4*^jL0KkKS#yf?i~?c%?Lpby!~g&wL4W`Nfq(!400`g)-h5D1QdFTR zN(mqo0Ae)LMuh+vjWp4rKn5dCG-yx(h|^6P38^YgKr{?MQc^;mqYz}rzxqldk0P3= zQ&d%;7KJj9Mij!DO2JeHg)}LUriC#?ybO?XRunb}Sf;47ttwyWjUcpBM0AVnk5qb^ zuQXm!k-ku-gs1*W$diOg>_U|ER3x~R2)c?$YN}FN1gu0N)KzGrmmx(hR1rA}DR@Ff zI6;aPEU2*tAjC>d3TY~XN=rhTDy*oqAuxjyCL)D>1x8S03sp>_%8W5hBO*+sRWc-0 zD5JDB!U=&^ocT}#2Ha)Mp87WWhiP!C1hG4tb+<_460c{?4tNZ;+0+y zi}w#_OD0MM3xp`}no81E8B!_9CsLv;ja3mkQl)THi5!&{l`SY(Xctux$mnrOt}<4O1mzZ@ zHC$sx8n5|^3du5>%KtL<006HyDg@5%AOH*i00ayG07ifx_mEP8fj}vf6ClXKnK3d9 zj46{7AjrWrDv9YbW}wh1B}6oU(@(V$M~J}~Sq4U_3o9#3q>BtRFw&;9OIE8fT$+`P zab4bCc&-}vMDOXX61M7@fW&{v&iMUw`^+7{Net*vV&7)?zXm}r+&hKb0)$&A)n)k#V; z1YhcbfJ;>a6;-MdbE*avDqN@)UGcl}c)-6*))`cH=DlBAiV%04ZSt|yqsci_=kjpKqmB`|% lwSf*)oeqGGy79yom<425y7&K5n07;1=F6h$*DSojaP5~31gND0LhqXv$@bKjeJEt!FdAT)U1;(grv?z#7T zpL^cDFYFuX8QpWd=NY0;qDQAmWK4uZ>Sqb)9xhS7LRB7HMI50{zRZTyD?LQ{JcZrF zjy7|R9>;YzQ$}PWTcNwg9-$>;5pjivnSvASf+K)fWeNw2uM*zhgj^AxIVzd<9Jblya2EpJcQSo^4d_Fx}}#; z{-Q6L)K1SPead6#6hqD}XO{!a;yA7e%uYGa)Kdomw9j)bd;_rYe%GiDEUgzg;79*k z^TAI%$Qbv4fMN;3JQb%nD)ggbEdb{*z%HilmvCLoF1rrpyU@vMAT@-t5nTJ(b%-42 zS_U;a3?uwBriyI9+n`nO4T!wNqj^x#{0T+pm`aMo?{#D@GL`Xsf$2W^D{fZ;J@WF7 zXU9z3Mp=P2E{pcy2TDugk=Al~pDFS;*Ekh8P*KrimZN3Q6(I@~e2x)Lac$@QxF2A* zOR*5SjHlBv!!R!8|4iE2gOHGG2hgY+a#ZfnvCAo@RdHQIr;XzlapBGoCE0koXRB*brPB7R2_@!N8(1z&J&SjGNfc2B?N zUu{q9N81&9$g%HV0`Q|Z=FNAI8CZtgTMg1paI~=l>>WuMb^}J)?Ao1b*D8>pzLpXM z?_P`!L5ASLZ`83b5E)X%`8Czs%j`N+hY=O}_=5l@vJ$(iW=^Bw?9|qZx~nHu@jqs| z_X(yUH2}jfVe4aGQ-8^I!PMkWFjYIW;^bVjpl%!9(1#!}X4iGN3bU8#J*a!|k$TAQ zn>a{WG|#)pVBHPS5ZXO8&rBS;NoK-gH;dgYcC*+mnH*Z|7F+-198Xy+b^|$VPU`)C zv+$xl_wPl@VmFK3B8%Oi3kzg!5hoEX?`C;7$fV`n)JY+MY%a+1y&EsyIJ1N@@|%Qv%K4>CSO7fv3$+@6`FJa#xS4 zt#?b7zSw#CYtWo9XTUf7bsrcAI_HOCjNy+5Y3o Fe*nbXXyE_= literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_174_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_174_states.bin.bz2 deleted file mode 100644 index 00e4f95b49ce7a6f56dd375a4aed4e5dab77ec55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1314 zcmYk*?N1YT0KoCq(u1}q(5K_4LqICb(yqN*Skj46R0{I2F({OCQSALH2{C(dBLq={ zmZQZ!MI$Qf3^EV}LBe`_)nvG}*B&xsvZ5{_i^+N>b1WiJ)I~+-e7W!6@cHikvi(zH z*S=!gzCl~`uy`c>P20P*mol$QoLn+c%P>PDyZ)}$oyOM_xS7T$v#lz6qxbaYF z@~d;7e6Zy$FMb|tsyV?~D+`AQp6b-|FtyYo+lJqKg8!7{lOW8W>PT3?3T2@!L_Z#m zKPh-)J;|(;A-V)hj}zT!SI+GDRgK}^R`5er@n6ruszb$LEXLX@8(|&3|k-T z6l`a%$wN8aLd@e&?S#i~c6{&U2xmAP0^1dNtIv#F_p3n& zhdkv7Vp2ygq2l{>AjDR?aXbbooc9N-{k*T&M}u&)KXe^Y1Ik7Cogj{q;RNps+6`Dn z9I#gRWUL8Jv6_=#o0nz&=>|t=(k=CK3ErvHX~s*g_M>&6t}!BQNPd22)G?<6u|Di0 z$oBee@;HbE04hBp*7oX?9yqz_*0ME_fsf@#Jw~0D4ut?Y-C&_Sjx&@AOmxJR9{;pH zI)@8zCKKI{sKu{TOLLf*f_>4;RT6Dkj_aG=stilR;x_$$%vdFHcgyFD1Y}!~Gy#?c zWbV#d)tkM7Nfq<%VMwbzO#oY04XgR$_~jf(G~W*gNg@a#wNo%B*@KfNzFW(HX2RUN zD_>j^u~upf8MD=pv?+bv0}jHV!pT9@`dZ`QZiv=`2ah^lp-1%fXRD@Le4FIQD!B76 zvISUQIB~D!l6<0rK=q3Wa*k;B+&4+Rj>x8Yq2ZB|S;jPc0Fjkp;%K7v>;gT9f^A^P z*kw>)nLd9f9?!pa!Z~_$IBmsfR+{*~i^~+^fCdo8I+KsU;e?!<$Y80~ff+yb2pmh# zYG2A*ICcBv-FJDLkLK;R)b=sqX-W11O`O)=%8|x66QDSHN}z|*XK%FCceg~INXEw8 zOMvaqB@X0defxN;?zT9!#ZqL?h9!7|DFVWT?o~x$c!)en2i!${ka| zy^4o>buYbDY0b4GE!HG!ByB1#LE$r6IzoUrlVabW$Z?Cm1=N^9t@X1(Du@|L)(QB2 z)X7}Z7R439QvJDl;gv7Z5sT vOd6x8TE@yynkY9|C|I;HQV(a;E|UT^$VsC_A`0((`Qw0|bGv^SmVEIaA{P?U diff --git a/client/resources/hardnested_tables/bitflip_0_174_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_174_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..5db556ff5a41114a734b7bba898615aae7e85a6c GIT binary patch literal 21179 zcmeHPeT)@X6+iR7cG#Ua2Npt~ZvqfXB~T<-Wg3NISdgq(*MjY9Sy0Qe*+haB z3*0sJyj=Tc@7;i2MQK93^pB>vK4m zW0laWG2&Z(5BZoqpeLDp&FLJa`jS3*pm`IMcfciwLl6p_R;Fa{{Ncd@-Oe=W0FEXx zXn@Jp7nm{+uu8WvP1`C5^lst&C8nHyJ(5_1m;8;a@+}yvu$_$UBBn;I_sTG>M_DC1 zn9^F`k4x@kYQaJC=>=Kr+#QYE$yAWT?=Us%FGUD3Eq;JU!B9X;WE8VYQ!%btM1V|S zHiw^wn3ih&XOR@2i-yo?LmXTKY5DA7M>GU(vI#Cw7QB4M4^zCH(xBV{N=^LpbkYw1 zed0T;xDF$P4WK)D0dNJWjMlx3Yp{15$aO>{L3J0VZU9fe21xgsaX9D#xqDb;5=`}L z1-&zopg08>^IB(o)r6gAae?7;1OsJ|hY``B5>(J_251#T5ilNCV`xIYa=OPzi{TK% zfd4C|IT#Zd8u8ab0QtuVZFA&55hq_Q3m_~7^Jg)&>aQ?$6^*^r`P2oYx{1|R5QK?A zw>JP5=MdD1$s<0eMh4>PZZI}dMbXTZW6tikqAOb^wIdE8QE2qjj(D=emc zl@Sr2iFhoX(>lepMC*A_OS|vD>=w_vbh64=4O5|Gn*fEdRfPr2Wh2n^^f9KQjDOp} z^7l(8gEmz)xl8uXaX9dr4}09nQ>43 zim|R{I1SDohZplNh)3INJ30gVKGbV$RCNMJ5j^nGa1@o!< zShYXSp{tiNb#DQy+gTN1)X6i(qjzGC3#@AI0J#u`F

    _Wx!UziZe^X(X9~%FUF$p zij?+G@$${F%nKp2J9>fxFP$nNl%{U=hw4B&!$Ee5uK;f93uRqHSWiP=F|azeWv$;d zV(&CwM-IHs{Tl}jkhBr@S^yMDrVfJ_OuXb-hzpe2grKkko(c=gtPva`f`qQK1M6O;@~yCX5qUfC(kP!9nT zIJr+5CQCLAK;x)(e?{DXVF>)JumWE67eULIZ;ZWu&8QRFo&#|LLp%OD1>b+UVgQ1@ zXzOcLScB5_fEm%u4`(yYT;|gr4)4v*)YN}SV1J7o4 zRx&ib0haP)f!_eQb)#tJ3vlQcl?yY z$rAr>hg*A3vsy3lzn9ff2_vl-y*W~{Yf|))7o>_wi`737hj%F!4R1P#k`W3;KHaOcac%f|8Q@s6kCKh^8EL@5S5qBmM{$B3F6i7={%j&u{z;-QbX9ow|jQuE6 zS5=A$6ik`lfyX<`CWP?ke+)RnDO{L7vc1-CA!ThFC;i|QJQZ=G+gGroJdiadLOo8T zk+NX_pIQLwT`*Fiqcws~-zh0e0taP@A+D!Evv9>r>qbC1$6WId*jT6N0FgpeU_Qu- z$dJRvL!%=IF>-eNlF^hg*=4wkXrg3lU7cs5fCJF?Y&I$a5EHK)%hA?BJd?`t*$=C7 zY(|)0H{Vu|wt9qPz*WV)Z1wmdRF7GNIh2In3TzRY-!t4bQ4LBu@2?1WtFO6$=c@(| z_oBjje|O91cbws1>K0aybd~c@6wJqb`yBoj3BWnX)Ih8nb};=Ox0lWrkvO1-=JH_N z;QkUdz>SYerHPWZa@%uRp&8w+{DSFqxf<2q!>C^OAz6KXJJXwIT(#Oesd<6UB4tqO zle`@T$Pi6Ic`%z*8@Oqo3;Iu?z<8hcDX$o=->5-%C;T7NaP?iF^pV0^Kw9@+kbYK> zI)X~907xOsDpXER+c=OedUr@it1_~Y2QjD}r<2)~ABeNRC+#Ey2>hUt`~|k(K4QjkEaa|M+pXZAjXNq+KB?@7hV&00IjT009c9 z1E}B!UjP6A000004qyP8FaVfL69`}kzy~k@Oqc*nCJBTv1YiT0047WTCKCk07y>W> z%m5Q6022vQ5-(z4O4uhu%*yc?K^raP=2L;p-Qyu)d=DMmh`b7qDM=_R5~v z_lW$$`H4@6yyap$67!ZPkYVnN7eS5|1_#IwthPmpuZC8C!l+U=N^G!f&9hi3NEAfn8qr@7A6>AF?tJ!1nw6O9#f&v#|NAo z9SPnT;fZxHoETn%&v?8Cc^!!1cbDXT2l*X?xa>|7g7zOFk9@yTbT3f9GvFRG;}38@ zGJiqkFWNpL=zrnlJ%aNWto#pzJY_ux^Lrh!yOBQ7eeYdPKQJO2n+>@eFb0i!Z9#dSSBMC zT?sqLQxxi0CDeZt7+6wpxGn;oQo4*-m@!xr5U1!;n3dR3`UPAHF7RFjgpQ$r!Aa0n zMga8)?jhh5S2mvFISn4BzCiGvk_j4@6M#A3yZ368-Sk>E}TaF<}6Mc5`RBfMRJ zcoK9f;9Z9X7NC!yj^Z*_Of0+OP diff --git a/client/resources/hardnested_tables/bitflip_0_17c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_17c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08843ca7b911d540e5b51814ffcb8c07d8dc816b GIT binary patch literal 15502 zcmeHOeQZ=k5T8fyu19-)Qv^#XwAav5ji59LNQ96R#Tcn=#SaWtXh=mg7Ksrt!N^t( zBEd?Cfkuti7{ebb65@{NI@_hv@n`3X)n@k&#$YQs_AwP6ff@%5^ZSj7_1Ic=^bQ>7L|GkE$#j@-HOvrVHR?(b z;WO-z+el2Mle7kMihDv@yIt-9bVg=-)4^dSR)albP&B&SkfL)aR$d5|LdJkiDV0PX zXQ~h>bO~!#?AF3S`AbA#=oqGnJee_zu?y&`cNiwUn)+VNX)*c?@h~vaGQG((p*>?R zGxj3WL^meD@(I%x4_(Wx|5zX%xfnrld z7OR(@J5bC0LY38tk%%2Zo1%{v=M&D*_YqoPVl)_ z!~-J#A+5_9ruzJ>UT0c@cr}5PpQ6v+`DEAb0%TsKUHo8F?pVeRgwcs#T+XQ>Q3Ssl1KP|WMEvyd$=Tq>1DZO?U z5kMD+=S6?E2%npse-s{^H6i%$jAnTV{DGN2zRI*ZGkAmc`q#Xq06)0y<+N*JJ9VP? zlc{)&2i~7SgrCv8Q;Q*;RT4deY|sjj4ObhAGq5uF3T)z!`9;EDNN3PF^F)J&S=b^&Y|ivCcwExfGiTu!w53(@t|- zBVX?IJkxyiRkONXL&pYIJF&x?-todID(^Ebz<3AvwB&U_nTu|S8b zAG_1Qw%ersT$%LqBKRxTo@K`FhLa->y(BGi8m?&i+gyUh5uRGMmby^!`SUpNKf@UfZGW==Tu zU}nzAOotJgzv4)kKAYx`wkrz5NC+|DRl>QT@rG4bHJ-14`<~Tk7l821IRxE_e(^C4 z6z6zvU|L(p>RBM#Tpv=KzGBrdlhu5kzJY<^)Ts#NRlX~Qu?9;~Eo=nf<$+ig4nQmo zrVd)Bv8+0fG5a}ve&-&?;qNR+)8$C+p=bxIcX7xe@WpXuJ5Da!ao+jJ_@=H(dysKI zmTS;x2i5qCT@-t{2w9;5=cSTLsAEfFTN2|KZA)TvV6`Q2KGgR6Y)Op7VGbR(B))*Z zO4^dxmc-?@B(^^$`-#Z@m>e*Lh%Je2Nu1>n1AMS0u`P-1Ux|Z3V@qQDSK^>Q^x3v0 zu`P)&!ize#B(^27Es4dJ#DT(W7!niET-oiMfHd2DK!9uh|Gd KxK{5j?EM!y;%_1V literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_184_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_184_states.bin.bz2 deleted file mode 100644 index 5da967674a75bdd3793978b52649b9ed0f65156c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6184 zcmZ9Q`FGL>-tTcq%tCAyK%mhkArQ7Gd;_`at=4RWEhel1sxc7A0P6FoHFMRmZ5D$G z5Df$nsG|V_0TMJI^r%-Ivl>Wj1A<+i>5OKyQ*(OeQAcg=iFaD=k*u7&g=88 zmMFK8tHc?r2fv|K?R$3GMHV6dz|4yb4hyTR;5(HZ3g&2(myi%3t^oqXhA3nxT z<{&HIX{%*@AKZ0MP<;i;{|fZDG%A)1G~#y=k1fu9R{88NxwV0!W_*66cB~ukfn;+s zPB&qdwda`C*9GX=)rJH!&*)S-glJ?DW5zUY0B1yMbC?Zlx8ex7EIu<>65|>_men5e zS3U4ajC#DV_B7V3HseXPf_>}$Z}p@P8I~j(0zOFtP(cHa%xaefn@bN%MnVdr1XB(u zp!RPB8t;Tz2i27`rw+CoL%^88UD&;`9)7g@6J_!6hJHR`?fd)iHeO$Hk9AHoP57;1 zVDTFNY3wdW!wi}}(Hv6@teJJ5xO!oOK4h2Zx9=WBzPXn={%}WCuQu%at>wp+7J529 z1xkprH@I@jn{m5#7Qq~N_lxQ^&%J(o)y@}YOUwoX#xi@UeE#pzoEa5!djp4?XoWoP z_Gpk`bO&~c#vSA8&-X8wmgXujV1HB|MskS)c~6O$&l2P=W%G5VF@~Q7g*W8*XmndS z+2hpIM%P0avvQioX{8B>7Vo*D2tQT&XkytTQf$?$^w!5V#Fay2jCmjP zwhkg8ImU8SIE9WmjUQLe!b>fsNwq-j>vKOi`Q{=z%X^{b&;9>U1@aYg7<{o8(K!P?{~s)d2tF#rC{Cn4 z{@{a8e|q`dMe!@wgNwP!2tHQ!?~CicI+oSq7xXg!-L&fGCTBAD#z=41Ae9-!yQbhH z+sHnvV!U5;Th~iMch1brFH|!h5=~UU45tl{`{o?|!*exQ7q^CAnnEC93e2#w-@M8P zKSgrrkSb{f!iCYpzm@2{4XEq__PCHAHG4VsaUz zh!01)MaW^h(Ie?8ozn2t1$gqV*icENB&;c>nMsn8S;A`GmmM#vU)=nMfB7cb)-F=G z^=;DKI}GM+>)BVz_41ETccwRgz3F?_ zhPxfdh50Y6#2}y`UT}C^E+pB-!p5cN0~^IsYrFlz4#g(p34w-VAU6p1jFaRni(3e` zwfaux@604}Fj@82u=QGh8{b~ln}a3!s8tSD9gKP6yg*cF_gM08cL==aFs5^$@;qhj zR1z<-7?@L02`SRXsutBzTHVg_{Hd9s5LS}6a#PfRowtbzDA-_}nL?I>W2&YlIp9aa zgsYWP0R%_m4+mvo6>^{k>P#fB_Mf=f_|b;zl5N85sKoVw8TAjF-N4CTZ#26K0I?3!cJKV&`fY~}#pc9hg-X9T2ken2UI}qeuk8h7?+c-3 zv%*NxA4T@0#bdJr%olCsnQ83P=mJ!KD|zmQWo@!x^(%h=ak_@kSVt|aptQFEqC3U0 z`FkitkbQgkZ^RWqr9Hxo;r=xVv9IdDo4#NVWtwHOg69IbF~TJo?{pOy zy*C8%6v_K3p7B%ZC2r$4e+Uj?CJ^?@zQ4Zxr76<<}4Yns_ns z)1HOz3P;!JF5cOa&#|P58`tk6%+BuS3|ii*gg(v#k309J_|obh<{S>AQstFayvx-T zd%+Tc4_Io;S*y?{<49dCDU?!@5|*qP57Hk6cm#SYg-D?<2w2#AHF>6>L=K;o>Zt|) z4H@~RG>``K@zpkqt*>klGZH90n^yd|j{k%%)OH;&^7vL$*cLMd=_@x%DOL%*cwHwm zf@NotX&E!z1cOz@{Q-rS%M<;_i$)>!B^I!+20S<+-}Sg;`V@(R63|A*T`+`96qG=H zju}_}*<6N}ems*DcVWa7K+u*SA0bUQ@epW=a%r|M3Aw!586mtCv4@rKA^N&J`c2dC z{BrUt>DkW2^k(s)1+&MdmM@(@-u&|CXPXx5L$6%C26Eq1Tl%Fl1IWF|BZcejM-M-o znmi@#KirpkfBV*G{?8kE-kG_P8wT?k?_T)G9R2A88yHC;F|?j4jmd+MMKx*VRm`dU z(HPtg%)o}{!9$?e{Ht~!iz8uit=ur8X@b`@B4dvE@v$|7FdR2D5^Xgb+z3Q@I)0pu ze>jKMm5cdNnL9;ponNN-hR}PlM`p58O+r)^3f-?Hac*yGy*^4{7`tSg>{A2`O&^Mj zsXS=!h^iicra=I|LhhwMYz3yq(wupt7>@QHPSwC(fG=9COB1sl632Pjk!y#R7w0zj z&DCkrH)rP1TZ-vsJ>8&89vwVL-Z^68AU*5>#HLZ-Z$B{4Ju>0Kojr7ac^c<6vWP6NRrsp!@OO7x&Dt1n zfp5-!2iyj>>Azfmvj`&7ZXXu(Lsq)$+-V^%t*>Nb6FrG$IdFR+^=Wi-(u@`{$}?zq zp}BZ7vnjdC+1tNsl83M9<+#0t=u^N4s$6M8hU!tcIW~Vr;zjoa9zL&^{jiob7!J^W~Beu;lbBN0pQ*; zVz5LAoOV>YF$^uJa;!rMm^Nhh8Byt^yH|M{J8lp+DWJOEZHGzw5iUWmEW&o>>p-y{ zPB{+k#;U4h=)Nd-lI;u$n<)Iyc+kS7K_(0RryhlC(!I8HY=m8Vwax)B4~vfYEQs9> zeNb0;1=tNQ9GtRM16&!Vc26HYhF51}ny8BQ5+K^|_EHrpn3k(zLHkHVW+QZ;Azv#R z`v&!(O;Qr~@d(smf)K9~gX87Oh^zsyB8jDoerc~Y=q4~HMH2y0Zy-lzpQX6>b4wmL z_s)xl^|6#o6tVd*y!@1@oW_IM#Ch#vMNYnspOCk4B_30vyh;bFp!U+(7)qvBZIKi( zoL~)=Me~N$>~WZ`bWv#Y5Xl3=aimh*IW;925^B6lF}+wzilyXHZEV5?nIij)DPn|S zOZVH`((Oz#E2lPPB>O0F@eq+2nkSzMMKKl@94tmgP!fJn(p)G;CVgUsLY=L0oqvH7`kUb3k76Us%-_KdAVX$@6=xr*%OU+Qnw1OXq# z=TRV&RJMkU;0|zdxD2O?$^$S(sZ7V3jCgLsp+hL772>xgg<+3xZg7rvLw$nn)zX|A?pV`gL9Nd+JRgS2g^&=T1Zm_+#TAB;EHAit+t;`K`PK ziI}*b0G~=MhQ1=43A9NPFCN_>T3k~d=(zNOY-UM@jBee2wWEGr)(;qwP8$_@XlF&y zGq~)(RU_&eGpJ4D#UpM9K9w8Ac-gsA&V-{ghLd~XOX`3C*%`)593rqOS+BkRxJ@7t zi_a8jOr)v3O_zqp*4N``$iB-0JYe)Nb3iw_t^7%f)z2QJ;KTMzc~GISHgH7HF{~t; zVGy*cNMz={9BHYYfQOfc{Z(cp+FhDj^U9yU4N|t&!{I^e2G#Fiz0Zm_miSh3AB~!{ z>T0A@8n1r6^X$V^r*iAdB_n@Pp*2e%FAfs{TPdPYI=L15SS({ zM&5s$QOOe;1ctA)364%on#+iJgK>|b?zwSiwP&?uQ1EOQ{+XbnHY|{%I5~OjVh4uN zz`uFEs`If_7Hgm%77kyhu3jk$_4c{_t(pC1e53&dE*B-1ET$pahy_aV`PB_I*%0H7 z=CRT#zy;&ZM4eP_fa6@c%PU5J&0c(*ltkrZP3IP3*hI0Vfg(BbXnLCaFW^}C)pZK6G@ZWlNrHIU9A8OBM(z`BXA75Cwk`B%gg{g$ zuvApQqla~b#L_K-|GHXvIVT-XiRoR1E_&y0Rgl(5J`6>&ki5o{GR0k zzP+)z;+seJChy&O@f-N{A9h$zexZ7PhUI_$(bMH;Sjr5mU|}@*{HUvM9%j%Gxe^Rg zGW;iM0aiBz*AFmyh_2GPE2RTfMzA%9zd*mQcT%RJM!?e~3(YS{{T6FgaSdpFVNfY({SbJlQhn+T!A;uSsSy?4k7d2cUp|(k{k4~8T0N;=2UMZ zv<|54!AaFHZ4$+w2vS5o^zS+JmrzuGK?%&D6!bIvyX^UmP=bIGC~s=4s+(dysh!4Z z$R*R98Xx0~GmujqEGP}2FmKIB5!bo>mmJ7b$LnZm_-A;Dh@?=MhZ8yk3*(h)_&oS< zB9VwNwho@f(qjP}nM{_fjv8b@wC92PP0y2*bot|z>D~4Y)ucrtPbSW6Vm<%0rRHJZ z&lj`g3&hsrw5ro(81^Oh^?Ll{(XvhJc>*IEkt=}FdO4{;Nq_S+DK(&{7J0xx96oyQeL8w{n z7V;p82~KjoXtOVtP-KYuOCDD%lvJ_8sE|w8mVWQ~(&Z_(*qRcoAIcAqnNgA#cp@bM zDWcD3YeN_p;1)zPid&%{C7fF?Y$tc15HL9Wy03=eowhV1gyf~=wl~({@gdxJ>@UiS zPBm~#{^>tw-%e3$L75=XuAEhGVeO&x%cqkgC#^<~dJrq?-a-Ja?i^<<|a3vgG`uejE5fv)!;v;DCk79%-9EptVuLLU< z)PV!Q0ZMFcv+3=y)B$~MLgcM*!^1!QXuZ~Y$lw1HcA`Mh&3C-~bF*~o-!AFj&L@xF z@O0OowTssMcFVqe0vl1)4XxP++m^fU6wSZGc#plfddD#!2_o7G(wM(FABWu*nBJ{3SfW)eBLg>3@}V3`9h9(YDMl+~o zX=bsY926UTWc<@r`~yK_^Rq(+$k!Pdy2^@k7d(6y0Wx%wr8?uzJ6~P?>htzb&;RQE z_j`vH2e5Av|GNC$^64pk)oXs)_xa=8Q3J-}Fv&9?sn)%l6XAcGIWwuED2(P=1=K4& zIN%YgF=hl^7VjFFvZIv~7^o%wd7$>n0scgcmnCgbQjQB+x1ktrlS)~>%I;EC)~clH zwoIYI+=Cyzb=LGt==J5U&p-b!^qocd%4hXIe6`l<45QATyoFdMCii- z_ZQc%{=Gi)9*@92@dbKkAC>cj3Q5S2nFhEAk_@~3R6qM&K!_*tU=!*c#2+gvk6fRj z8fIr~_l)AMDcVWVUOjab<|mam zqPG-p;Wp-WG;1wh3k~kyxbe$({`}8^@Rh%={qHn%r3o&`tI$g~)o*p0E^|L3%{<*da zOtD4fu9Q>m7f1rK{p>|dHM|>@x4UrV1Pbx{{vz*zL-*FjD!s-+_yk30#(O)M!zW9C7mE}SZGp+5TTgz8>r7P8wznMoaeTKNg`mpt2 z4ORASyprk?+Cwqr{&$6TOdR-j0eqnOJbs^vnx}^L27vq6XJ8iha>fPpI;Mt!euxj? zQ83a1-`a*$RA0csm?B2c8YY!*!EOzZ>reTw75FL{AEqY?hYq)op|}V4Q*{*%WeZbW zdI6`u`?>W)Sa0Rmm#SOvF4%Cf2Hw<{f&VS-(S>t=?B$U(>8HQ+{8OLUXiQ%m50a1E z1%GpJ(*(wzyopF2cxReMiGfdrp<6-=T$KW0_=yvDmJ7_r6i)#Jv(%ucmd}MIqaW4KFNG>;$gb-P@A7Dhj-d+O V@L}uU-)uNix3y_-^yS5|{|9%^aN7U? diff --git a/client/resources/hardnested_tables/bitflip_0_184_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_184_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8369142ee47ddd3ab9f04af1878512dd16039e2c GIT binary patch literal 32658 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_18c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_18c_states.bin.bz2 deleted file mode 100644 index 88f05ef653b311820c96a49684ec4709828078dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1614 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_191_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_191_states.bin.bz2 deleted file mode 100644 index 7303065d9be963180254f5752241a133eafbb26c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5983 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 diff --git a/client/resources/hardnested_tables/bitflip_0_191_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_191_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..3563685d659b82b46e10231414b94c887a2ea166 GIT binary patch literal 37196 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 z zzkv;#0UYt){*f6QmFXIbnC|{bxTz23CCS?@@Sq8& z@aKFQ=`W<^Yp^*PvQiHUjQT4YEk2(qft!iPyr=6Raj_uUiyQc%x!#YugNQyHVx#bFbM5{DOyuC@#H%N- z{JqAc98Z4M)4gWfzS;ddO!x-=WGT~WXBXqy0HNEc;t;$v=bPqyF-B?5*SxSD{iHeH zH0PV4r8(bek&#PtzGZ3<%UfRGZ$`S=Z5~MSmd7W9;Zny7h@Xjx z&uaW^apZ6-&BX7dW}<9g zDt&VJM14(?H+e~WI><6yKjpR zr_Ku9sU5(S@trY6g)f{GkQbi3{+Dx8Qb;H4#QjVe_e=5`ukZ934erT7UFqzdg92*F z$O_M~W4bpXVshrb4mQKwDl3YTx~qRp{u%U0#v1@0y3a)8fj^cTSq(0T2ecpmFpC6o=QgT*2X<5w{Sa;AW8Cnj_$ZD2&G?IYOO74ozg%UtNU;{iDUG)GA z2T(f(TcPreUdsx8gLJ>IUHc8Il}8)@-&ZT6X)B!DkX9?F)yk%PC|r9~qo(p_TCL26F|AfEi^C~D z^R}-}tCdelpP{r`xkQ^Uus3@$tyZQSeOmQnTCIF?@nc%8T+)~d|5Tk;E2q`UX|;0M z+uG@IH@WaVcJ%Q`aw?HlD-*Y-)yicNIn`%5ZrzerE2q`UZ|mnN(rRUXUnBj63j3v! z^cN~l`|n?AwQ^dmoK`Ep{lX^dY|>w-NPnRs{e=n(*4fXc)yh-5mh`{<>=y#kUwG@F wGBEvxw=?{Ow<$F``6;bdPOFtqmI~fbW}a3npJ}!7Q^TH?!ga?FZ#nn>01v%k?f?J) literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_195_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_195_states.bin.bz2 deleted file mode 100644 index fa5060af8db68f386cced888df79c883b860b2bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2462 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 KI8czbwa_fkiDD%H diff --git a/client/resources/hardnested_tables/bitflip_0_197_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_197_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..de5d1d9cb8d03b2e31bc114022773c09f393a71d GIT binary patch literal 16061 zcmeHOeQZ@{8Gp|0ZMo3PdCEsvp|o5&aL`ijWj4mi*9~EAq?ESs$Hq3+!cd1Rv@xi0 zSaPN_*#aFb`iF@tyEri@Fd9P)b3(7qugzkLF}ej}uA9b0sq2))YBV+0d+X?un#lE8~R$y6#ecth_N zovxJ~7;=eex=62qSdF!`ahAw(Z76#Lze%##DQi$@gLrj9%~%WIDn(AQQ!>ZY04&B- zA!!3mRv2^+x-T+~X_9=IDJJreyNf{=5y50M?&C%UgIYnk3T#?1)m=*t>NZU2R;(;p zY!6NF+wx}q&8DdyQl|NkVw2P*L8f_mBi-r+CR^6&*0_2s7ImD)PGuESW8uv26|5oh zHam}YF*y=trwiLD#qbnUxtX<}ojcGrL7rj98Q>G0g|MW~rYD$YA7fgX>jBB?Q)m^j6BZ*I!rVg&KJ|IPGD6VoE)gQV9e@_D8Qu*_0D`9`eO zVY(9T;f*l;v5F}y>k8(`7noWHu=KF*xUggZudt=)+kK#TW`o-`g)?Ph+sjEZ)nMDS&Y|)2ar{r}NUuBg{;zw=>>SgM60`$)Se}TB&}5M- zE?lrhRJke)5dzc~vmCF&pj`9yEYWsjbjK}wIAdeo3ZNR2A9K>0!!bzhDS(Vk+r=ZL zSUvope}WEXr?<$qrY}(efC_O553)2#h0_IEfiF8>qzary8L($I-Ry z+&+gZB1i0w$sV5F>`abxW@?||sy?8ZER|(IejgS%hPhAq=!krUsSV)kL33KS$)+X_ zM?sWzZD#+OmE=Kofwb;hzEf~3rK-8k2KrP zBqhD{C_&3EDH2vQCoCWu-o}ZNIMnG9rV>5rVIy?VJ(HzI$wKnH>It#9f|hc!q*tXm z%4w^GU6rUv(q>Mh7g#OALcLpmHl1fGUr0_sk94F>xVgY;q6n zEuUs7?B`jae#+ZvtDP#vpk^g4_)eJ&IvKAnA z(jzv3W4g2M7U%6q zPC!!5+Oz=7{4E^@9+{~}tosN7*VovY3JHeZ#BM^EUnxHTX-8v=U&m1bvbfAM;8?VByukn->kzdppu;kIeh~}#|kwNrCK?PrMBys zNso>f!=h{5=*Ek{DRam5L!Hm`^DZa}cjs;P$jeNF@+x-QW5bnkH87lo!6x1OA5?aS zva8kDsWAMDzhia_CzSn_b~Sn?yP?J7Ot)l31P064$6{!H22@7-WtTTDVD@peoaUW> zE;jlmwrynk+^rmY++PCvya&o4B+Z`-qZlV^!+k(Op69uIJokj|YC%dXX+3X^OMcRL!w`)$JdlseGL2V`5a7DmFN+ zc_rd0Za78>8FHPsx!1zqpA1dZY5Wpc@QWoP;GJJQXLPoS#o)#a+YZchCq%2lp9Q8W z*=79NH{GojvCs*2<<*~r$}8i-DSyWMt~VoQfYjy8avIUE-f8R_1^R$zk}1z5Lt?5t zna!DG`q8MlcVE*=PlP^+&4O)c9Z>Zhhu%p_6xAevqai1(tHC&M8I~fDa5Ruud)6?~ zYbvQRPkT*gdL90*3E%Us2}IyYMS<)l54n}@3H)??vAfP%1$5pee%Hve*X|E-_Yc7e z;a(3Lk=Jbk1EL!xi69<$+sm2mM7&fyjMqI6?$KXk$$}t02;zevJ_zE2Al|6Z>-Y(R z`0F5A(J32mQV<_|j~;^^p2b6F7P38J4OMjnzid5hR zYfc4jGcK;|Mnn{!ZPReZEAx2&l5(aE?v<}bIP3Jv^eJ`cydbCeH7Npu*-sj;4>2f0 z`ChG;;C75c$bY2dn`mvxyDvSkjp-TZLx~vnd%M-!;gtMFFBcE>vQy=^yA|9?9L+WT z3&BEHHo(_b`1$ER?i~O99o+v5IdF23>2f>MCA|~P5;}x;lk?4zy7Oy!<8xI6i*J7w zHv?k`-Q!-YPC&<1sr4?Vq4iAiYzYz@3wdu2&IeNai%Cwu>r&v4er8%+WWZJBporT6 z+>avo(THLTs>9kw_=gao>tt zXmgJ(!58qs7x2Dk_5oLdL!bB$G_C6q literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_199_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_199_states.bin.bz2 deleted file mode 100644 index c4f58b53d09f574c5b5a08dd430562f2f7e8d66b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2498 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 a#ubJb!jlY2V-|7$@pmLsg$WB(dYo_pNlzyL diff --git a/client/resources/hardnested_tables/bitflip_0_19d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_19d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..2ea815311f8c75f8bda4b4389d2cc11ff05834cc GIT binary patch literal 17854 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_19f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_19f_states.bin.bz2 deleted file mode 100644 index b4a434889f68703025f7cccb7cef90f2e89856ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1084 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1a4_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1a4_states.bin.bz2 deleted file mode 100644 index ca79aa9b070e16f0df927e6d7d8da60d705d57fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2795 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1ac_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1ac_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..bdee2aa730bb16d80b0d72301f06dc6161a2136d GIT binary patch literal 18459 zcmeHPeT-aH6+dsj7WZaZu~`~zfDl>{vS2J` z#87%gg`{kYAq9y6vWX4&2Wq3(SlsF~pozLELY7(*2#rxv48;;kMcm~0JNM0-c{APO zx~YiazCZTe``*3ho^$RwzjNMsZ#FgW>ikV#-kL7P!8yaOun4w4n8B=a|prW_@-WVGaXz1^ zTVyv=9=x4klN@A9ix|w>!=@8l(qi1faU6@_^x1HzJi$~%_b3KFiKW|_TE55>i0oln zwvK5zR%lgD*Fu~j&Vp+yE>zKQew8V89TpnJ{l`HNeILY5gfvBFf;0KFl?9h&$Lz8G za|>g6N)@C?i2?<5h&^g8kn#G!z)+}=q+H5DM_*wqOT9j{M~N@+QCbB0%lyCt3meef z0|h3T+LmC6$E?m)a3!^pO$GzKVZTDqdM^|Kd7+4}f&4!)72GE8@;A0{$;)B2HMl%q z?W4_07KHpOK?!QjZB~ji8l_ABMWq8f?c1#u% ztUMaZQNOdAO+U6z{mdJJIUZp8%=%D-bHEH#A2M?Rn=LR;Zy(0(vHYk3$Brdz`qnV@ zDz{ZP(7WWD7N$+unVc?ugPpO;YHB3nWdW0kQ95I@1e5J%8rTOuGB}UJHle?P+JxJ& zl0c6wIi{P(eOicBpNJM^ED9rn=O42Rzuc@*CDZPkdzfB$j_Gm{;L%Z80WA!o@eb3K zBKHECKtaBwM)OB|DO$Z3++grm(0_nw<2v<;+b3Hinjk%FmTqENAv^sO+u3x(NzoCh zDW*138*`afZ(%wtvX`mK)Yx&6AkI}rk4Z9k7qZ*0DVEm*|#J$a--+tHwI zpP+aciyzr}bmv($(@UTR+_`Ox&Gow`bGVk$-MJ!ySwMX;zXLin`ke?i%bUxl7w#Lo zwZX3Ci0XT+gSp`oS2qEtQ1mTRVvrq_bexKAJx+#YcUL>`!faWnx zOccslIF<1(0gwav1Ilq80Yn1<^*~=KSk`7N_*EExHDIM*4Fi@)EAZ?Uu=Fmpf{VaP z>qS;8JJ?*c07SszK4?UN@U#&1#+^XPESNt_A&Ti0K(@ae>~w%F@IAeF1e~ZtJ%r32 z$A&1Lj((t_Mbyx1e*gSNYT9dKvjd>htl}jCUOM2*jmRAg-I*TJ=R73#&m5w+o1em zwc%E#%f71~Vy=Lis!4|?MPb(3&*s6Euxltkaf<2Tn_y_WZLklJj#2VkVZM~T7uVWD zyUz-i%G|H{k8d(o9(W6K=o!jSEJf)B1B_G;*lFhI(i9P%ibuLM#TwT~GfgQm z%^nQH>V1HucK|8yUQIfuf*9o%JT`@KzX}@XATKQ9d9IAO>l=gv?;Fvh*Z&qko{l_y zasV-{eSBfw`Y zMgJ!-SHhF$z@HsYs!!f$Gv}XB(%p3yI89ImtARI9bm& zng_nb^!2wO%JY+8xkxvgAKNgiL+sRpY@UuKoOpnyXLi}xhQF0VOrsi4D?`2^Y*Pu^>API zM4GT?_sYzw;iLJ=tYN3n3G536SM0%C5cg%zfBx~QEB3fzkNdI*IO>W$?gM0M4zBgS z`vAGFi>b6+v8Vd$1y}5;nTsp-s485s#}#|<>00#7zkd4Te#Yf~##KYfc*DIi`*^=H zi`#;>U9rb%#QltGdcQPw#U5Aeam5}$h%5HEVvj5KoV8z@yJC+k_SnQM_Qw@_R2e@D O|KkSXSbFftFa8BzZg!&p literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1b1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1b1_states.bin.bz2 deleted file mode 100644 index 860f486bffcd827f7f6660d602e9c3d710fdc917..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13188 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1b3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1b3_states.bin.bz2 deleted file mode 100644 index 8afe0ffb979e9e9982588f6c9ee65ca488b04014..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3233 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 IxY^_X0Y=IQE&u=k diff --git a/client/resources/hardnested_tables/bitflip_0_1b5_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1b5_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..04723ba94005c8208a49e6f0d167c0752a597eca GIT binary patch literal 46378 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 z z)3%&B?YGAC4Ew0S}N2f1*Si^1MT+k%_(uw zs-(cQ6bnfTOeY1VlLFI8foYD862D3cOjCPVmx+bd@Ucz3a!AK4mc?^<2BWY-F z@vgw6!1UNx3MK`ny@OybW&hCDKPz8enV?gVEO}p(O^kmR~NI6qrs5 zOeY1VRnviQM&!+jT9Uv{A)awEuT{bG;^m083i+6qBXUTJx1YV|WaXq<2d69TJD(|4 zu$9;9O_wv)=tGWI3j2mO&hXv9D7=o68yxeKV;S-yZ8^VJe;*^o z*?auzczZsqs!rvb^I&G0#CX2NOFnwy<9bQ5a+0j99@)e3?j%|HgMIr}lB~Q#9peWM zhndryhfR`|({jvMk{*%*)99b1z_i0&fBbI4q`-7iVA{UNFiBR6sqFK;~^M|mHraQ&yL8RtJJ#cn7kc?dNX8`b+= zG7hvn`Js3t;=oh0L&qCNZgdZ%g51BauS84=OkW>wyL(G{jU*x|5ya%3h)IEIUcH=z ztZQqDb!4azg3oVD3QQ*jrrA|V3QU)i0@Jvz)Py}6dpYLJ&F7N>(@BA8c5J)n8I=^6 zj&}J;f$5~cH19Y_3QQB_pw#g@f3ZPQVA>|AMCTg27yiQkCk3Y04%^)e#i#P`T@(Kw D2#=x8 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1b7_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1b7_states.bin.bz2 deleted file mode 100644 index 8d541ff7d5bf9730a5de808f688ea99c23acf52b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1984 zcmXZQe@t450l;y*D*k%$$58vo7}j41_(FM)<^ox(_1gLidbS|?SWJb-!`|i6OlYz( z+p|^#3cSO~Z!WC%M{3t z|L=cMOwWFaD-iDKJRR`Gk*^zyrzbuEK>X8LFDN1?$K{cR(?=3vT>j;O55xxDX;R(| z(g!wi7lR^Uu>N}CM6cvR_wM@ z@Lrnm+Y76&nm(@vYj4c4YR`C2y$a*8Y2vIN?S9>01F;iPL(g*E-%mPUIoE{Wbn6JI znX7=uN8A3U3b%yx7BJQc`X_>(+pd<#yGOr|eTUDrfGc$GQ*!y*zR#^Ur?xL0`@_)f zHy3AqxxH(1@72GpN2NC7n*qyi?YD>$(!p3t1*@FIe3F>`xUZE^ct!488Bx;1;}v@{ zBHLoms1QKq(R4L84S^vS=$CQChecFJM=j<)H1+x>dJ3V09~9fe*wpAkk%o-Tzoo3Rq0N)wkluq|(ZO!u3Yi1Y z0shnpp!Swu?h(GQZBMBkyHw@3^yJXEx8cR5;?(qJU(XgRbZrwJE+m&R%D^&k$&U=F z#y@r_@~~?T$qD& zMHM>cRJC5Ax0FvLvhRAM%VP&1#VZ`!X;qefeb_s5@+o%j?Y*J88cLI@zv}X{w~Jq4 z(G|zyw8|hIC8PEhAO_>JGMNf#Ciih$?+8j3GdI?aP0bT)$hmD)OZYn{7wApdzR|v^ zDA`rTk>6Za2 z9TZTOLMj-T(-#`JI2J0SH>NV4xbjdmoKZGVhdYKbBzXUvEvf$=$wAaMdAe>0 z&A{trS0fV6XXy;!I<2NR#$PNw z0Hz`{=hrtcaig$H*89!aKN3F_zB@KK-u^frb?4)`g5t;i(6g#SUHgsj8w!}*f#Wq2 zvM5e_vbxtQ@@h8H(`&D1Dw0NuiRiVx)0wqOWShIQ|Eo6R%FemnTYJEaF1Pb@d+ai~ zw>!Ji`ts(}p6xeN!e?&FLB0K%+xX|5^NEk%6&PS~T%_8wSMWoZrmn87Z4G3!o3X55 z(7*bU_k7G^d3B6NLmmJ?dFhMAi5=N+^H;UVSl)K)`9D5v-johKUo)BGZR!s8;ysT9 zx~K%MNAWk0G3K*sJIMK*-#Y*J7s+;*9p+ek@W*fR|i*FT8~T>tTH!+ zRoWJt0`coL0{)24oJD85MtnW%$UG~NotGwM3Jc&-Hl@MYK>Z14>5D20{zUFRKBH-dd%km8ajTy=)T!04&)JW|N6j{m)_oIFY4`jIS zF##QNY}J{UWe_qSjZNfAc~n@T1Lhd*CS9dX;aEbJP%uVNon9}&RXdbt4I-YT)9a$b!vKt{A})}-z+45L7QN}Jf#ohM1OpyV6xJ&%?e#GX4HJRPZPgs( ztQDjtoynM0otkZ#R-nQ44RzXzpJydqfK}w<21k^(jS)?RLm|AL)OyZN<5?IQ86vZQ z=!jr2=`>K4Ms5UHej>2)+~Zd9hNycSvDewC{Z;t`O<3k$l!(y(SE^vs!ISV!&u}K_M4)_$Oju%OwOj ztiSwc1TsISM78XrTCYN@beETa;fry8v2XJwe^dN`#xKfIp73w3>1qm|(&+_se!6y_ Pvu+-_SvPzk{)>MD3xaID diff --git a/client/resources/hardnested_tables/bitflip_0_1b7_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1b7_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..864a67df55e298350666235d809940f7b9cc101d GIT binary patch literal 23053 zcmeI43vgW3d4SK|)ylHGy8q$_xRzwEA!&>yS+XH1jANr{ltPTB&--nP>~03$Q)&;W6?4ATTxPDiAkW*F?CGM%~1}tH;`iM=~UH&&)pVz5hAqKmYsx&)KcIc=O_&xhH?}abvdr#%*Ve^~~Bc9lR$~ zrsG6AUskrBXzwz05}5YZGaYSakr>ZfTf6c^dti8Gyl(g2Uu$CaRWa27 z+5s_1KE|cX%#*BXmo_6n*-K7gmiEVQ;y(x!ze z0%LC#v&7mK31VAy&bZDTBN_N5PKudtoB48?1aWS}ZG)J_%)<03 zTX19BRSwn1!;5h-SMZ$XmU=A2#4Zz4uWO2dYMbJa4uMMVXLZ%?-f8g+cNym*k$q-& ztF=aUOI8;dyI)a`*=FC&4e9e*2z{zJjShDgPax5JyI#zNI;Y}GyHhEd)o$F=shA>J z`tBg~?H?qa=#zp0;gBF#O7M{m$$0Q)8qP<>WQzTMHC%l0>hnrS+662s4deH(h3=1n zX(Mt_$AWklQ?*WIA+=JUDoCtbX%KJnGsYh=K+a>BqBK0j#iI+utB*)9m%h*06%tf|LIW4jsu4-sqx6OmN;KV?xP>5x6#EHvvi}FQG30w*e16E_e1fFQkUTtO-RT* zCnp!u&8f~do_`+_n<6YEchG1^v)|<@Qrbp+vrr`mfpFbWj6-6&?03ant~dXQxj%dx zXy03AHQoM5%=KsC2umGhsh8U`Or`i_tu3m7g<#*OcZS|o&?OYT`Ok#ve~Xw;>ii7Q zt9X74LKqJQC#+?vI>_6Kz_=L#1uVC@;fgA%$Mp)fR~NTEggP}VwSb(jt~$}4ucGHJ z$-N&UdWiqGHW#S^t@`C~tOvo!m=@O4uN(>6d{(Apa93So-WWutusII8uwbKat_dZn z*52bZ@g&cL3A$NbiweA&!;Ag#--RSM>Gf|nB{K$qO8{(7cByK#RbT7${t-X$WW+RK z0~-}IhB#DR2L`=jZeh@02lHy%;4_1%evvWai~$pFy&JIy7V6%?-LpEFXSXR+U~-k3 zN8>$RQsK0_WuGmwe2eOX>Bb~%24!aPnI&ewfk}W!Ypm7b3Jbdt*xY1ks|R$GJy05z zRkEU5H9%_5Y1pG*Q`=c{L{e=4H$c`jFBMHFsn!R1a&3*|+L=`+3~!Cg==@GqkuBk! zRl20)A$qa=JhJ}y?rHS>TQOg~$!7s0W;r8W%4LVs1S}Oq*}8+9-}AAYX4~CL+f68m zw^qy+r7=h#-5z92+D&4f8Bz+garKCpg5Iea5cBOZCvB_6JjLz#Uv^ilCx#@e%UO zc%JFhHw9iR(A&j~s7Z-)w{h6f*ptj}UgzU3NBmxA&;!#e88z%H)c=_(KvxVR6{lrn z(MutpP{Ud@cLfVydYdlXX|4(h${GJ9F?mSw30Bt0oV|P^6SXR3j)?b%lC@h>ohl>D zRJGf0`p_@y$;A8B{3fN~b+XFMDhN#PV_dLk0B_P-qk!{P2?VP{zd^f;_=&&oatYg5Ur{*k_C!Y<+a ze_}U>CMkz~pOPD=j2x((G)gwME(~_m)fHHJ;R{3|U+m$6SIj;HWX9XeoYyfrepZ4O zm7>t&nkHzjLezJ+k8ub*n75DB|C8X;pda6?0@MH} zZk*}{RXjBGiK)f^Iy#Xu17e;CT^(}MfZRMapleMz$GsSVtFMW9&}I zsx(3#59m~TT~v_*v7OHcJq83&@h3|Yu`I)8AW3l;A~EIZ;5igl`;zVi#WDWwoip<4DXRFW})NqeiZt>KVT`BlvZ zrnZ$33J##)u3hZs39Y_1J>2@5n1`o^TMw7RE#Iud;=^d~dq|m+60ehrKn5c_vdh_8 zZTIC&}MWQilPeRq#q%f}@bKCN+hGUvM5XaZ_ zfiwKA!A+LKu^)rnWy{3u==Hmdv~58zJ8wkec4Gc4qkX2ivYAO>U30?&-l5K)D#Wi1nRB25^IU9VPqH6_m- zEY~y^_GqUoSzRGjue^_OqgLg7p(bdhF?1+WfiNh%Mq?ERQJlfr&+90(3&i|o2V$V+ z?kfXg{#;}5`v_R>W!Q(^Tn~xaKSWGZEL-emQZtA0f~RrPXzK^Swy>wp58_%~S|VmS zd^}$b^TPBY&Q$NDbP=NrV!lB2LM;UFR9z@`p&%VZA}wJg0*U*?BOaH`W1`_&hhDiB_~sIZ zdC?!oyOD)x#6(L;uAbrjezgejlMzn362IkI^menP=k&>_ zk}A}9L<8MMG+Zs_Dlyxkn9`hB<&%66tMsb41f(Wf1*nGlk6Ln$KyhznA-ud7=?}Fh zS5fXRIamymdaq|Eswn%{nw5vd{4(-1Q9YqdcSzEkJEZWL8*r(&mc^Tltk21EzK#wx zyfh|p?GiOuStp2keJApbb**LW4W~)B_#XOh7NhZ8^$|!!e}_5n^Gkuw=Tw5S!}`8N zXLn^FH}W51UQ3GRrmXlznet!ImQpYY;fTRsC?!%B_MEUjtQc*boIc$MT_C2WPZ|Nb zM&KC7bB9S!7*Efb{`3T+OTFybSs*z9T;WTFEJ)G)YlyL;0{DzuLrUIf%273h&SCs! z7gghL^Q960Af&~=6F=XfV+KFF=vh(Nt0i38R!SpC&&^N!##bRl{-3h;U{TFJqad`; ziTN~44DD^j0&?0VVxd#qX1|HqZ1mGhB(uah+;vTAEiXXbX#yIRlAdd_8(A|_YSmfRB%v8um>ti^~X zzf;^40K1nYxQa-(9;umz2pzGAB6Jdh_uQ$Idx~kCD(<=3 zeSSXAv5j(qH0JWt<-XAziQE6U%s>1sO*cQ~vk7f(?)7sV*B}UTxl_PkiyM{Fdk*N6sq$3Ku>H|ZXrb_&6~6pJ)^qf##u$>h;hE6D>O33QF-&!SxGW$aqr|()P5eV!lq5x$D|y%C)^sYw2%3y?n=Ud#7#iuWR+93m)k%P?zh5RGb+Sb2_An_Na6yq4K;)!t3;{ zBn1I1f*fFsPn8lKc%ISYlDzPicR)aG*2w?%ifO5Rfb-uYH` zMSb0()55C?l|OD=-;-495r#G`A5YX(%hS_?!jZNGy4Iu~{2TxtjW}2$Z}?o_*$~yk zC)o!kZ;I+cvf`#F0d=yAXLu^xiw{Y`#5drztw+9G!BGPB}-XoUv3IVWoL#9gn>Q-I>esRa%B{)X(topKJ3hapd{g2zd&H~oQjbjn%l#ap6N z&iY%r^ZlsQRez&X&e17nYok-n(JANXlru+{qf^fACnM1*=jfk1_{B~1&mGY}ca(}7 z?+ee`ME~3o{d0#)(@(Lj$FK6Df9@zLNX5_SpF1j&Wy;N8?0@dirS6SRIlmm8a*lq7 z$p5J65BT5P|E(9Da-L$H-{Qqbqf^e6Pa99CV|2>-=i`*~Md3knL;K?eh1dTdC3M;O literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1b9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1b9_states.bin.bz2 deleted file mode 100644 index 42269c116bd60f0272e78bf41208d4fe45285bb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3840 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1bb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1bb_states.bin.bz2 deleted file mode 100644 index f1f353e416336decc3c10ac6b97518cb5dfb97d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1940 zcmY+CYfw{(0fhs&q3SJ2f_c~|i;`gEjwCm3CuMk}xI%`=BXF++NRoRa`)iXCXLP{_ zj|4GSBqWh!7g0n&NGeITouSmahCE4Fbrcreu`S6;C(!ATW>En_t3P|rpYP21cjn}u zsQ&{u4`G!f_n-eoLpZ#7@q#@e${6+c*P<>_X~K>z1aiXf35N-UhlERnhuh{8E)wEz z5&mDak1^`j6XK!FixfCVLQzWExk`8z7&6&>YGL|BVXXGItmx~-d zmLtp)v3++Bf6ymG-M82J2E{qlSL15~IdEh&CpHOrwx0ek>uP#*Sn?X8H>Up#d8m|= z(*c#DcA5c)g2DNe=v-yq@w6|RpJ#20vgBuIukOk_{gwBD#`Sa~zH6dE`VxEE@Ppj- zZ2KC$*q7N0htDxC-1e1+GKc$nghv)4!rVw$F#P;n_GjPp)e2ag#&qJzn8|s0ZOqi{ zf_OpRm=#AA)Rr(Pkl?;Cdn_FIDeES4V|Qa#UuQ4U7v4Pj<3+MJ^0!A|Q}Lo8c&h5h zWzt54X`TVSU!Z>Gm{}3tdh}pld+c4ym`D^dkB(K`$Z-ZFu)V#t1GXVXW1T-XQDQU5 zosSYPYD(X#nA)Aj5|Uj(1D#%%#JBS0N;Y#jt9IwLKQ~e1Ti*3B%AdbArH=CTyW{hg z&p#S?-t>>EJ%QzH>#|(N3y#;Y8sg_i~n z%%b+L#b+u6_9QfEJ2GTa9OR{Ju8Ptk-V6OLc$ts6N(A|EHG4^IYGstYCY`C~biJwl z^^HZo+IMdPdsmPuID6*TJ<*XN@qFYY>^Dt$XyNr)*X&%C*5q*Tr#;FA`NWxz(^Yw8 zGMZZ)`nSn!efH9w+I@a%@~pU~DQao@5p8v(AslJUSSfmZdhE2{!SBsjpEIqJL`mQ3 zg_nQOgcLbDdtSx-mwjO&J-Bi6yU8r-sMo*7sM^llO#0*6#Mw-~eB+^vRnLi zu<9v1*dZ)MuNUl)nEPj7wiBTelQq|(F@fRy70)y{wsnP433Dt<9nEy;zD!3)rMDQ%B?FkHJxeo}In2cYYDX>W0W$xdQVP2;p!CZje~)CAxhh z1#gP(6uoYVvxl}-H?2S0(NsHZKN%z$I?`3Y@N@WlUprH ztr#wP+^_ zGBU?OiWmeYeozs|5*YaignAM^WL6xYZ3n6aj#M3nO-|6OMBSZ0e01Wo8E sq-n{d&d&s$y_A$+xXoZ)G1Ojy2e;!r)RHYp?+?DZBJWQ=XFa|5e`M!vy8r+H diff --git a/client/resources/hardnested_tables/bitflip_0_1bb_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1bb_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..026830879371ea113b6572ad04dba4857aa113bd GIT binary patch literal 20159 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1bd_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1bd_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..5195b6cb01e35135f6bab7960250d9c96120135f GIT binary patch literal 27930 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1bf_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1bf_states.bin.bz2 deleted file mode 100644 index 43164354dedebfbdaf3016b280bf34c44326aa3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1567 zcmWmC{ZkqT0><&>%;8u#6;Onnrg;|4sD^gZN2ImoFYKbf|F-p$igUpfR?qI~$*W`c1KAJnF}CVC$FrWi(twDH+Ga)z zp3+xjxGsd-LYvZy(zd7BA0IH88nwvIue&#!V!pPU|Jq|fSYBT0O3CHd8cQERP}HZ1 zfoL;bf_{2FfrpLQ`$dPHP0Z`bV?#iKbQa%y%7`j>*F&_GUBU{M6wO>>JQk39IiGjb zKA8Mb@SzjcnsgnXi5?AMJJ?U-wq9UUp|NsiSphetvmtMuiWUZ&epccdZfxc@Kjd7k2@sJnozDpQANF}m+0}$ z;wfeyy|F(W8c60*!-@MbvvHM&t`SMd)S|W8P5v6;6#>&v#_|*B28Jei zI=^Pq%DgEySNq3Dy5{~W^{OvuDBD0Z(KYR>fo8&kLaUNZ(pnrdZ0R; zZ?3m@r2kNTJLX-%yiInMQebb&(JNOuee8&QTojrhaYqZVaeLDWIaFE_qa!X1-gv!g z><&o7L>_Pd&`32(HD|Xof+c8YXwNFBXgb^epm21v|G(DN^dw#Tj}D2td1~Wy;ad1E zWtOxzra-gJcyN<&r)|}^bUVE7*0z0}SC$%Gq;4&mB>Y{ek${`>c2 z>mB0R$vv9s9p}kEFaH#L2g#n65B&DpE1mCEx037c79JC;=Zy0m5o!NQ5`y>sUYzk< z5hmI?lQZ{Y$q@FRx7TiPnMix(p2DkGjn* zm_JI5esE^;@vCPRg{Ey7TZ&3Aa&hs*W=}{Euf28jI9(c_gz+rrWy(Up=A+L1 zD7xUIMjdkPv+~yS@iM1wVWG}&0`G~7xbPr!++4@y%^T_jU(HW2{-%+~8bren?di;U z2Lx)(1*}1?th@NS8q}&tFG^7A`GzAz1I8-7^v2nps)v`OAcqal%6+5+-+z`)r^U^< zS?BS=5vGg>LgjrI5gWfOl!@3CEWOa;WH1N$HZ;PFp|``slx`M;(3nV1IZ!wv!EJm; zgBDlfW|XpD0hNUQ+21(~X?BP53j_KG2c*Pp&>~C`Dp1TM$%PvrAF;q>(4c^q2YkyT ziY%{0fwWw>LtPQg!i#*}a^SusisM?l`KStZA}9${7=%U;B618O#XO%wNQQYHl2R!3 zUfk|b8JZ4n4Wh9E*dT@=Ni>cVhTObtW^_hJ*&T39=#)ekC}r45#^dn@heA0)8X(Ui z-)>MDU_%|@kl=(a!c{5QuF9&QNl?zRTSi7_4Jiyrhoy;yny^EK6Np0|0ol$06sdqD zgwUeLxY?Hj@lWb3p4(bm0f%Qm;C0y)&-kJ--}6?LQ!%Z$&>iFBim7L`SHoPq9J;~e ziiKus8~+2bWUFNW diff --git a/client/resources/hardnested_tables/bitflip_0_1bf_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1bf_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0136c6877eb28676395114bcf0f7be56a95e7348 GIT binary patch literal 16786 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

    3K?F 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1c3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1c3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..4c8bc7add1cb4680c9582529ca3d212ea9a11a48 GIT binary patch literal 22127 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 Oi@744C`eWki6Q_~$+DjS diff --git a/client/resources/hardnested_tables/bitflip_0_1c5_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1c5_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7a03cca135e07354574fd92a83184561d037d45d GIT binary patch literal 16936 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 Nsg(4d@$v0k{2y-&WUv4L diff --git a/client/resources/hardnested_tables/bitflip_0_1c9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1c9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..10be732e147a744f91994098b290e9dd8ce29854 GIT binary patch literal 24745 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 DUzjXq literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1cb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1cb_states.bin.bz2 deleted file mode 100644 index e9caa94a63d622ff914f025d06bd0661b2da5c6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1466 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 V5z|-aT=!pYf=9USZ+PN{e*@A&I-URk literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1d0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1d0_states.bin.bz2 deleted file mode 100644 index 26a43e303678add8ae61b14c78774bb6217abbba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1281 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

    &(g^eaCfk1r>=zIHY#? zr<3aS5Yv&-Vmw40Axs72jsx50K0^5~)P(XQIs!n{h>qzy_!!r{67#tk*?e#+{84pf klk5XMrSih!IzC-~V5nT@Zd4He@N?;1?LK=!BqvGxKam@fzyJUM diff --git a/client/resources/hardnested_tables/bitflip_0_1d4_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1d4_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..5734c0aa7707869e7ae3ea88428529170b68553b GIT binary patch literal 31544 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1dc_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1dc_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0226241f927daecd4013a0f8f112b8b2f0fa2845 GIT binary patch literal 23829 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 Rt$bVji5Fpe<9q+P^S|@T%LV`d literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1e1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1e1_states.bin.bz2 deleted file mode 100644 index 7e4c4e5a876efa998dba9e5ddc0d52e073236520..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13795 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 IQ5QY&p9@bz%m4rY literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1e3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1e3_states.bin.bz2 deleted file mode 100644 index 887da78ed508beddae7bfe7f297d5781e24624b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2971 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1e5_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1e5_states.bin.bz2 deleted file mode 100644 index 43b2cee21b78aa1d46490d5965bce370d876b408..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6318 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1e5_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1e5_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..6f2431a301e998115063217d20972b314e4e8daf GIT binary patch literal 55696 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 X!j$}`$&|9(hRiJrp`5&9@mK!<78&s0 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1e9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1e9_states.bin.bz2 deleted file mode 100644 index 64ab8f4cebd1c24d3f9e5bfa4061d15784f3e251..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3842 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

    pwY@z`Kz?La@t6@5Is%1bqkdl1_()rvk~0m zzKKGn4zVA1f{zpe>9qP`wZC;K@94POEFW#gw8+z39?tJB3@#A~|Aa{HZYams?DOQ(<(mrtD8*lk0+dX8Tx&@@IM|3_4Mv zSA2OIkDh>Rcq9x$wC5vXc;bO>VHZD~u1lxCY5ah}>R;@aqywcLK?{$55hI%=Bl<1b z7LN2Pp>h@P$fI94vY^Q~XQ1H|9sJ@<#)AaGJWCNC`;rcieJS@C)nQ|$7c)HeB|P?J zg4oq3ND7aA+3m?IHg9ilHYYsx<;L*XmtcPo9{W;7j1nIEvcvUy&LnNISm+TR`?4TB z_9Z;_#r465$G&ug$G%9Wj0|3Q?8_S-fC`U&36Fi58XPSZ9{cj56x|Zxu`dLW@9{XZBGBZ5( zB|P?phRN{Qmvo+ng7Dav@Yt8|*ca)*2#0b{SCz>4deF@>Q fFC0t~9{V!luSfs?IUV~l7@Rbt`1#q+e<}Sh89nOL literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1eb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1eb_states.bin.bz2 deleted file mode 100644 index d76993719f09a579fb5c6d66f5c959d14c725613..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1928 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 V?Hf2c_tx-~9S17;Y2oIT{{m1QFI@lt literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1ed_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1ed_states.bin.bz2 deleted file mode 100644 index 8574c08f7f7377b2817d99a4b2eab74d1bd2793f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 724 zcmV;_0xSJOT4*^jL0KkKSxfJE=VpHfOeg(|PM68xTTnZ(LuoI-jGDa5Wb@k!93#K~DQ zr(%~GSbZ1tUqp6Y-f4>rrc%i~l6=ZcrGz;A5q(z&6kJ9|S>?wG>H3|M7WPU@#&lCvf~7ozk-vUwn4UCdp~e2(GZ zUxUozuT|~`6gY?SaX6Xo7wAK|JD4zV>`1)Cqa{pPEbf^nnpYVyD~PxzM8X+mm1JC2 zF^Pq6vS3*pGBB{NI5Kc?V}pspJ;l;=j9|kPgieA}780k>E`)mp@e9~L(EQ9e50PI| zb|b-6cqMoj0^n28Rwh-9p@Rj63^I{ABEQ&PqAm(L0(Sy*_p(^U`3%9txM7mW$%hh7%^h8 z{P+}9eXx)R-lIsxVt|wFia{p{SW!`c`-%aHg%rhNr5LOVs>Tpef~-o!m`h<*YKX;y z6V-R7AV8R$;j2M-R5rYE<{}*yaI8cyF G?|J0XGCb4( diff --git a/client/resources/hardnested_tables/bitflip_0_1ed_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1ed_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7f18cb77d521babc89861c2657abaddad18445e3 GIT binary patch literal 15310 zcmeHOU2IfE6h7N_+fv(mDweiX&_#igQ0PW}gb?T^*vJD&Lx2c|qzMLVK#E4I5rM0y zm?#29j3!iS3~3@Z<-sUIl)e}+gxF~O4H}}Li3F&EJfP|EJ9B^bZg)%BShXd0AG&jA z=boAQ=A7@GGc(P*ZBga@8$LWdhiLDCOT8p=u}&h?#5RiZOzp+GIF;~0nuF54G>sEf zz?C!#KhI#wk@HOXXeXUcdx>z2I++Tk2JH_NOvYa-+|OM!0i{NYvYq=qQ&gl?U)&6F zw{lx_6q8l2Z%Ky=?PV%cq4FcgEr#T^+z_c|iY?P$Pg^!IRf?QoySRcWZ$Brv&eVwP zfF$Yi-Zw%fFcnFhsn|Tpx27NY2IAxZ(^QeMT1@}+a6}>K;aEAwP$I?LSW(M1%X)Xt zOPmJi5(9TW7x7aEX4)2=!c;D@*d3P0E*(IFz6r>*yB@7@%iil5zCUG3xYaXLrnOtK z5P5`Yo%h;SfPX~0sNt^7wTcXel8DUpK*zu>ZF@IUi_8j0+nR*vBc_`a7YrV_RLMlE zkT?;EqPJB#;^hIbj+>bmpc6ZSB`kXk^3lkk(T;K*VB5qrW)V}VS=u69niv+zAPXSv zk_$Qwz@S?6n_F){AHymMppQkt=$OKHJEjHs=kzT+R_Sz9LqxVP&BJJ^Mt?eKbi@Nr z4(r4*sp;}^=2@$lpkjzWDQK6Yyk^m~UCO838S-E#$u58P!5;o%8V!sb05$+>oqn^f z7eK=z`JWaAc{9^Om_($N=^n{fLu<|`)qhK#hY3Kw0Ww*eRw`nOp;=?v55bB;rl#OC z${7BkuN{>r*M({H4Z>;IiNT&>>Mmfi`@AahK2uxYO6XI1!@i9MdK%jm<(>OrwTg8TChp#y6U(E5* z?CC@U>I~iVYZjAM6*myu)%9wq^pJ{v3AXSH*y4mrF;tyvsM^tX-bqny>rl1F8Wq~P zC2Il}v{CgCX6RBYI1Yml0R%V8S6m2gr`TaW1(%VC)F)90!X?|-kilSB5aeb@vwNAA zn893OTB;MdPh`6pw;{B=x2@7BhVBz6=57d7WONb*tf><5+9Xlq=~bp#D)|dX8?-2J z4rOLxUGg`T0)1Mb?kPndKX8$h&#^!m97-mxxWe|0N(xJ>9RgU2mA+HtITdx8Y2{~* zOiPE`)W;0B)QXUG*8H6TcOkd1J@ve^GR`p5{yyu@P#y)tr~T?w zf~i5E-H~%lBem{frY`q4eC=j?t^(7RtV))~1q>!xn_7C&=sW5VPrQ4S=}AxZ_oS$P z+@4~Bh_o2x+7urq9(0&ztS;zA)f}r4K}rtTs_-oAV{u@8Vc)s1j;>->K<2qC4IZ#I zAsnjaozW7u^H=FIjaPC21VtjFxJS*YvIB6oxC=Ab{&S-IfL{NA7MSP`3XI9cRi|dj zF?aRgU8bx0H~|{K9bz1i$uf)^%EF7bz>5Owq2NV()g+ssLI{NS5eFFCxhEn^zYQxmmf=_Qjv+I~<%bRS^7P$a3(%{&oNJ)CD2chb22nU<&>#fQ( zDvJdKm%Ho)@|@Y*Btr9rvv2(ROPNC0|$O!Zy;XH2P5t9f%QKAlRb}^ zIvVFG4^d@vKSAKrS!vOUpp*pDnoQj}bp=@o_T;pB+<#dyT)A5F0ei)KQ)~1Dq-K!a z;U=ylyu@`p{692G6PiN!{}HbL|I%cw&_2yt?dW3Y3n&`l4m2;2vHq$JAUo%b$D&A7 z_c7EEc5z(8iLR0Jjc-7`$m1G$!#(-BCqEDKkjh&Ck!&*8jX?jXLZ`84eBG1*9J1!G z{rI5k#~pX)YhtTgANsx8N=#HuJBcz(Vw&!ts8$8p4Q6a8eVgH6_0*s?s~>99g$h&N zq`Ib+!j#v8Busge1U0fxu{20RY?wt#i=cjxGT{{iWx@%>a!%eMnf7h}StfjaZgP3l=6q+L7E=uZ z;mA*1sbO?(>oumvCT)x%Oa_D1KFNc$l4bO5NCdqKCIXuhF_|I+OS+1us?)PgAra<_NzvK0$zX5ABfl>ef literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1ef_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1ef_states.bin.bz2 deleted file mode 100644 index 7a9012f472da88765c2e52c0bacc57dbcd68cd7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%|^T4*^jL0KkKSyqOJvj7KmfB)zZ2si*32oQh}AP@pD2mk;PK^0K|5kW){ zKp2Do2w1=Z+yDRr01X-%FpQcF8fXkK0MVhN2+5$)rhvl$4H_CSjG7G^XbcKUkrFdg z6CtC`Bo9+*Hm8*I3aiMV8B(XiD!g*+KU28q9p_=xOb(}b;Olf<=gs$n^B=hN2Wk2f zgX-YKxKYWBnN^kyCn0u~F$`76Uc!3}UgCS-C-nar&3(?}gShc{F0jAt-;k#!kK%`XKU$%@7uLgb~`KAe0@(O~i%2MeJ-PKP1l@IG%)=CJEEHEHKKNq{y{Z9++G#77GPfSXp8# z3=w5mkyyw^7zP;a!6+1%)EK?=9~Av zeW`69XgM+VaB@4*vBZKP;Ugi$^3Gp9J;kcTM1PdGC z5rVjvI+>csnd*f&&zKy;Bc|Xp!QG8*oNBx#wMIr|=Sz;&FjH8FM@+S^IJB{iquk0A zQ8Rv;bLHbXrak!i%G9fR)mM`gb{iA2a@7i(7Uy(${0Ik4mr{vMZ4z6VuC^J*Vs}aF ztT~Qg`|$vrmmFpaiO-nQux5rXx_1H0;Px=dIIrGxduf6*>nYQcQ2v zett8(Q;k8U7V8e@IpM#_lmPxpo|$!C8QWo|xJCVtYs>BcQ-ITJiK~dxkc+8#+_iY% zhD4J%&2-nYjAQejyra9+kQAD>%bvN;=KSxR8EH!L8^MYpAb;&LNsa>6l%wsIu)KScodf8D$k2!Xry|fv!CgKh%!CN zI1)kWncb&T@Mpr0+z|XL56lrzFPKvH*_C}7QOPSlg=jLPviB)g2n)h;6(DLqpw;Ue z$Zl8}IG4`i?Uv17lF6`(V?Hw(X0~#LXX_rr8{NJepgB|E>( z)Q5FCV0RzvP6x`O3O37xwcr8fIy}4{MXh!2Xka?yFruF6tn6Mg4$z=;tBLRd*ICQK zBCoodfiLjNLPx!pDE0=9O6^embsvxf{tAI)qo1anr7kpo9+bc8)Q7l zgxaT)k3|fad?{?N(0t4*RJhfn`IuWzt*3FCj~S7~#i{%+k<7(b^M`D+zi;Ias4mH2 z@G=LBk>%BUK*=l*9pG21c?~$}uzaDe8K!8|1Bz8h_qvcBXL>Ia{YP0lOJ+^FoXfOi zUCq%y5XoJla~!kKv`JZR{`S-ul>;Y|OLnU4yaL>JC%?x>On j&Bs>2$8_PWN>J^>OkFs0;iSq9iAL30giqJrKg<6BdfMkd literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1f0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1f0_states.bin.bz2 deleted file mode 100644 index 058cbfd8224ddb270471570d8f18cc296e763c80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 511 zcmZ>Y%CIzaj8qGbeDUz*TSkuqUs7-0T*1)6z{$WE>cDW2frEiT;sUE30|;m^NMR6M zUID>b^L*XrUFw-P`5UM9YYq>;1sn7Z7Kk&gEKp_%Y?R?mBzK9XZFw zPvQ-S4mXxF+BwEG%5crlXV@U}fQOmofDKE6`wDG_7tBlvKr^+OxnhrREkC^AFv}a! zrai6yxcL^^G;fG)Z1^DXh3SQ8>l+@u!#7I!8f_206Te`8;b8M8gAam#I5vnezOi-Y zZ+uevMr_3fgVoGj1_pLa_7mC<#JX7M@G%|QP!Pl2P@unHPh;Q}fdsELtOE=i0YL*%A4cbIngt@=4Iu@=jGhs~jhY3XdR#r? vOoyhkbh8}NY;4uhIv5eg6`{tMnAn==&DxNVAjbYr?@3p|LdA=RFW&+Hc!0T_ diff --git a/client/resources/hardnested_tables/bitflip_0_1f0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1f0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..63b4270d1f5b05949c19c8dab073e076f5f22dff GIT binary patch literal 17155 zcmeHO-Afcv6hFI;YstFDAZlHOT@=)czUZ-t=}R|735*gcijclkh!A>_Z3wc2UVZkZ zpqE~vh%jQFe31GZ3bII|*dPg_I{ogQ-F3IM+AJaBTyU>5bLZUieSdT2j?>%|AH47| zyO-#xKl6!%r$l5*LKNpZil(Thp4cUvyXQExMI=tqC{>RVd(_W9?M6Ss6c)+EJD!ZA{M2*h#`*oOVPOaIu-a@LQ%B=-y{qh3*a0T9F}33Wstfm^EuD zcy;Ye5s#l!0{sT2Cb?v9JIxd|qs@4)VF7a-v1i83Os{ei$sWuECL>AqA|Ql$FdH}# z@$$3y&M6SQ$W%KRNW&C21JFKLKIfNaGs7XHoGiO_tx$y<^Bs_^W~x7m!+nO914XQ7 ze+{G$<1Zp|mHn_0-oIgm*2OU;H#OZ8Jl*Gi{PSrs3<*S_^waP#9G71xL>U9)e{RO!UmEQ>FTShv?5Bb980t~y}6?o!$xE0m#RCK$NLa$d=`+(9+0HP7Ba zgz1>fGMz0Ow7Q&Ig27(EfuNVLF@d!sJ;~h)3q*~v;9Eh1VGtBXuR-(#e%t`=21en> zt?ZuL$bO<8(E_7}+Yk_a&_E}8kOA>=ILQG1gHJj)10s@UuNLQQY^}3asnpTO3V!O0 zK-m#Y)rG!97&n^0sl&L`@w<*`yxEU==vE!5*hSA2Sv$jCy2ZHQai(6d&;{{A@X6lu zmAj!oSg9M%S)#B`2ntOG%6$ypPe6>}yjmo~?!j<*HoIZMw$e1F`9c1X{E&jFTYhNj zq_`8Ia$7HF(kvFL?^+?v+QnFQ<#Q#a z5s4iokvOqLBreA~iYpXXD6UXkp}4|6xF8|xbH^V&cPOqlIqB(0YYI<7is1(CXffe$aY_)+^v_TCdQ0h1M&yUZM30tygHhB8R^I R?|Q|;AuA@KP2QcJ{RS{iO9%h} literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1f4_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1f4_states.bin.bz2 deleted file mode 100644 index 69262a53fdb8a13e507af155ae5d0056251e95b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3035 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1fc_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1fc_states.bin.bz2 deleted file mode 100644 index c3d5507871b8e41bbb6254aa53afcc2c63c3235b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1127 zcmXxjUrZBs0KoBs{-f=MuK#~ofX;Ok+Fsyy%N{yVRG?)*(=8Utxd`+QP3FteC?ibf z*8fP0ofD9I&>;9H2qa!jmejB;y`u-1_`nC7g4ZE} z^toN?hX{gRyvBW!MT)NDz(pg7qOG~HYW%`+ulWT}K?;HRh@Zj`gsK#}Y% zH@^E%m3-Ubkwi2#T8&rptK=}HdmJuMywG3!%oF`3R&{=Y3x$`oPr!q??cX3rUKw6* zU^j+uNCqS z8K3Gh`^F?XG>z?_a2`Znp3|Qj(5T|nc#8@V6I%OoK~=Eb{j5m72zF_PJ#>&mf=phs`09GpiT;UWZ@%8R!GIDx9zKo zHPNN=Te4Zm6-;M_CNK23Dz{XP8E2u!$a=J~ls>7P$!EHywMAULezPK*Co)7&`)dC9 zEvwMu(Hd$mt+?vocR%uf&I|&tN)#3N-G*49_v3oIE(a@encluVN4HFvVg^m2zg1^; zP?PNWVYz-Y!N*mhp`Ui7rN+}s(LWr$zg?AdF(Spj%KXfueXS}Q=n8pOg8A15qo|@~ zg9+qaxGA5%4eM3w2UF(k5ZXKK2&^b8R+{_kY9ccgLf?D)lc8?;CQNVlhP^`dYr7({ ztsksOc<tGXflWw7t(9q4OjWHm+emCsBe~ zXuX!RV7fG10Fd!#(`1kz!R#PSk~lGDlvn2=WcyIyRVN7EXARmlw>7CC978(|7Ci;* z29bix5)2JzIiijC>dA-*&@|v9fPrLOo*?GMCLy(|e8QX6qwYQtdMpXpkvK+>qZZtP z5fE)Ex#X1=%;8~boW}s}ZbwmT(kR)KLa=D< z68qmR=hdd2>z&bhvxbcr>?nBJmQqd+G?kgBHJpE(4H1jVs7F82E>9RR@7+SCZGd!i Vrw}$soZMTyY2~89%e!Cr{{uNrzNY{H diff --git a/client/resources/hardnested_tables/bitflip_0_1fc_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1fc_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..3fd553268765df8b2b7a61e6d22b0b6caa1857be GIT binary patch literal 18407 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 N1v(9kpXaZ)+&Az7G@$?h literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_225_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_225_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_225_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_225_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_227_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_227_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_227_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_227_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_22d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_22d_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_0_22d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_22d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_0_22f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_22f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 zcmeI4PiP!<6vy9hW@odTo&9|$T@tc?lAUa7jizZ9nqtsMgGID0Eh&aZsnIQ{6jY2N zc+l1Xizfr=$zH@%yjk=jh(T$3RS&uKB;=sSLV_(*wDsqkO`2cZK`0XHBeP!0+W0H1Z(Y>LY1ad#cZ*Gs~a@zuD{o14 zeo_EA{lyPy)Wqae7y#;Q`1#1G#|w)1)a!hruQ-$im8{gfZ%BWsIMNbMdc%6vML;L8 z?rA1+2u-KROFp6u=R_~C&9t%;%;KWIkoA)kvqzI?^vOK`@gKD-J_;pW?%fNrH3D@0bc2b8*_T47t~orP;fyFGlZ~G0{P!z${DH0k;BytIC3|KkN5;* zdJ>o|&0wX%unhJ0V7~M^rnt~ib)p`t#HTSw(QGJu?(xRKDsJuKDs*sGoyNRVk6S~# zH9e%Mlf8PN!UfC`G4sA8g$W%!%o#tyYX`StWsi^J<|FfXYajEf81pV@oB>sMOR$91 z;Q-XV1gbUp^<_QCh3R8%VLKLjy(`h<+WrzNoP%lW z24UzS8u&r462bv94r=kXKN4~p%dL=WF#`gF+eq7(0np(Pbm%c&D(a!vuvqLuRKAi_ z^lQDMb!~(*%VW*wP0X{*6?XOH4o-oEWdxE!ExPc zV7YO)8gtvo>`dB*hp;?ekCz8$K|7PA-G0vY{Ox`b)jnpaapwv9xT@`DaT+%}Odrl> zS<;cJ{d=!iY{xvhJ#^Xt*8d;D&|e2cDWa77Xf2`?=_&U&ghVN#6j6$i&nesZ!B%>T z^c3kS(o?qc%d+$o=_%4vq^C$vXbUc@D8Y%CIzaj8qGb{2#f!mZ4-zEaMdh76t|u76umv4h9B>1B`b{7!=r87!LRbHLEpx zdP=2y@Cub+)cDM@xItA)H7I;u!;}J+#SC610m^%X`kMlkmupRo6m(MwR|(@X)i~+4 zs4vu2zA3O}@r5b1LQ~z7R!kG>QP6kw3T_bU(b853v`bm+DyeZ~v8t5D>xQYE7rYDt zLwZytR3*F&ybM6Js)Wjt2b^w-E25pmhTrK6!`#njEP=zvH>z|w<` zfiD6plzIZI7M;=oqQC-?SfGksB5_omySq;rsxM&F-DOBAmREbB*^`)q6@o2koE(P#XojW(md4C J*tQ|90ssyfbqxRj diff --git a/client/resources/hardnested_tables/bitflip_0_240_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_240_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..e835ce4179c307e40e9ceb5e2d400f569a1b826c GIT binary patch literal 8357 zcmeIup$fuK7{&3kv5hgqS8Wc1MbTF65b!G66%41zBp z{7<-W&pmMA7xfq2dUHPI(psuiUqcP&&L`8rxm1>`W0fZ6dpoGHX%PEvX$t-5(NmyN zGE-D2E8B7G$7A#5kFi~nl__;wQ|9ibr2WU|*_Pk;{Qbg-00IagfB*srAb zyzldW{{P?eW=j+YQ?kVIJh49%ld+|;_k;T57w1%dS$CL+{kCmu+P1@QhhJgQxq!u# z`Z_=KUcUrW!#T2z$TIZV{epL99q#k%3krycARh+({I;Isf=u?#29V3{W3wZ;`Uo_k zIib%l$d6@?GnokNZ71S;{Nq(wx`A!dwq6;cH!3iNSjR6EGFBTLdhE?4=s@vzR59e=8Oo(3jRveUxJP$JSn-Dy(g}id4$k(iz(ospCA&N zt06<>g4J=w-U%4Aa-JMiumUzsfWLl3dxk1(i8%PgoUqz`)?zicx_$6>}L~v0yn{ zRkEm5L56N=$3hYk1uvP)Y=I1T>mZUVu?w&YB@=>lN?dcR1cTGK#}dt60b~_pR1l<4 zNN^aY)yeWq4`#cNTO9Ay~$zi9F zp(@Bl*i0DuE|P2b04eIFvH*o7-#QqQr);{d1o9#u^}Wi0noG*T{EW#r>R;7=@qCP3 z;I2lqKezzT2KiQysJRvy3c13s8@+VHO+?0aKn)Cg#4JTgX}j^7^Y{Fp6UM@b^dj<;gS{zg*2?|isQ^G>eF~zQV4q-tsW;Y z6y`&x(90QWzR)0up)=3qi4nWkVDFXDpWM*p-EBh@=(sJv`zVLA* z+b85k&NaO0<2}khbGVj;%ZFCa*Tn36w3@Itu3pjY+L#c{9-`-a_gd03NqG5!5 zN6>7B?*o~q?DL^*xsW~{Ydq&{q3LwWK_C!nBvCD`qE7at9f#0@GKnKh(aA?9Ob@iu z&zH3|3lPl4-~mXcLWa+E`;*JJ&d2j@*4(^a%JrSx#hVEt%lh1o;`*A9D%k_#E70V)-NJiddO*`pk z_XuTL0v7>fJ=k&nbRzn z5N({7e5}Ra1HMxvn+!N&Uz8x?YL00XOg?YeeuLu+dLB>>eS)4whTnt)W@8kElqf)184jR-?@sd1DOL z&6b-kjsH2J5npW+HVB&}YPPp;wN*oz%x#>)*{|jWyt{k8kZKfY25?5u!0LhwDTKKo zd2E7!B@f{j1t7La_A;2I7Dx#Oyh1%bnD1GsL|3KCj&U6TWN>6p?YA7guU$5JEbjUp zBa!zrI-cyaN(;i|p=#izx?`objd1ZLWLK%s5*$+nts$&eO-UenE((Lg;V=NaTsj%e zBEb=>v;fm zCvuv=%nrN9_$eaQs1Cj$qvR!;7aG^e9h^(beo`Dh+8I7-chac~MFejrz{M&Q zQpmtyFSSZ+7`WN!6lLg_sJ{|ZveYAX_?nd4fiVn{v5w$IC?93a$@I(oh7+i|27V5{HiSjC{3hxBRoUF;Q!O~_2b-{CKd(MFm-n!!9p>iC)mc?y0~|09eZ zyqQ`q$(|9>n(f)sj({lgOjs4zbTEQu$Efng5vEQvH~B5gUh-@3k-vNhRGWnFP^+o+ z!=FU8AOMgU0AVAwDjmU^a=;e|ZTM&+J%wTtlG_PSBiCYfdR#vClHpRSar)ZsL(w~j z_!%aB#&W{xyfvYnr^7HIm1#VL1GhYTS({CNjdh*V9JMC|!F-2;UZF-@YHKY=V!G*q zH7&ByI;0p&N1gBlhL*d#;eyneE+`?WJ`RhD+bDj*+YObFb;EI)g>V7MXwpH;|=G z&MZ;@6e5pD26T-Vz#rxfh0`B`)N$w zu`E(jg2fRNgpH2lPci`RVF zw(oJo&9JjAXLWiW**-!6$hgBkf{M>|I*6HNv2XB+Ep*dhP&}AD?c6#ZJc!U{d)o91 z@#o~RTqkH@#OBa*6hK})R;nK`b(zMI*%E^nwBTAwd90KG1+g(ljJ9j02T7WgToygw zf+G)?$0M*R{Qy%TM(f0AgFvNfZW&9oh|<_s4JnkTu{*8?I!K@KXLjp7^OR=69snRL z;C+E+WyrPx(0<<9%Mot7#ym-BIfdXlH4A|V?y;@oIjhY5SS@stl07}hl>KI;o+b?a z#9Al{2|qHYBITb32*c&uhVlzcNdSj|*xkZ=XZm!SUxpxzLWO#w49L%^u|;z)2M8C< z(%c9IKok>O9NZK^!c=>niaaCXF{3cBhchTO(_)0VAP@bW|XGJpUx1CJCU%h9MGX zl^2Gk_WSrkQ#4dCn=r(R$}gRRWDaH^YdFv_&0|kCOlPcuM`eS|M2;0bn(b3G+jWKl zbk2gaV>qu&z)8v*)3T?cLh{=22DpM6B{_jviR1~L%TX_1^eMxAyVaDCHV5n__w)(TpsDxE~d zp65V{5_>TJW5q}6TUNS)gK z?K@W^H`EJ>nck}868{(Bw<9{2YjjF1oFeQv71plAI(!K|JIlUKSallUe-xve2ARru z1P)+drzbaOAKGbb&gmg72_j^UN6_4EWoi}mrbTEx$=N(Q7d+(VuR%xyE+dJ0DR~A%|3R=Zr>8niJM*pU;KD0ufEe{sTmiMfoWp3YeTeWg@ba~~IwWR^8l#beuPPD$UJWy&&+ z$0{wIR1OOe*bLy&0BXx(F<2cPRs-1!^6I#sCDbHTGpCE^>)Jy&CHiD#{)$aNn2a0` zlUZtgrDM$-hRH_m&=Xdg{(>*GHG>qfjx$G_ulVEb5o)rV`5l?W0(R zz&<&TY1B!fMqg0+UjJF%N8&-IGCIPDE{}|$lM`tHR;NWAJeIA5GXEKT!-+3zPw2+m zVM}4rZD$?*6@gded5KmLSrS}^HYJi27W*!AY_@f7luZZFa{eem#sJvUPS~Zu8UdMU z{9M?i(6u=dW`~!CBg`44T&J}i0Jy3SFVq3|;C%9E6oBt=%UPpX2rAFg5B%>yHtZGf z9e4|p;L4|Kft?zi0;*Jpt38cYSEbL_uK6^Fi;g6RC6TIl&*~BZD*HV)6s#xJs{6M z>QCMmE(R%~rZH_Gq#~A+=Zavv&i0IH@o-RX87H_UsywBdy?~{b2gxL+ae)R)tSH-0 zRLBHYC02zbtjHwIus2jA3}f`vL@oYUs`8qB6$c^k=wVkQn9-+fk6u` zRgT8(ER6Y-0OugM#}TcQ-c%gVU;i~|EOmfoNdR;*GO)qP;5!X7$846}I9?-*S~{s| zLts;Pb1UTN$#Vj@z)uAt0X)?3UFaUTG@axdI29a@ttT;2%u@m+*l0f13EF)pj|7Gq z7JU^sUZ7!eiMZm}#>1NmSzav?$PrOJN=jhI4694045ooLX0kFaq26!?Qel7V<&XuG zqxJ2~V$>rQE-HL1c?ro>z~+epl?^ntv!n%FMwZPjrQp4EM)qlrWan!ut#1wk+H*l$ z(T=jg2r0=HMbeBFkY@|6j4TZt!L@q@dMO6rNV4=rIqp)!hQGH1&f%1B`)K|Vd?+}_ z<730TSJ9Q=M#oTJe}ey#fcp)35@9?U{6v)RrE84SA_kHyP_cwR0O7+PZ)doYBabCA zawcPm;(~~7_`XeJ5#Ge#5$w~0u(#qQg>YlyC_gdHG+a&!g}sodGVs)mY!@++HD3@W zg?>x4HVKdg$qwdBKuv?N;G!X`BYapPfiZ~=wk$0p07n4i4do04vPb(rb@w?tNzT8^ zSH5eA{f}vPJ{`CN`0ZUJG;Gb@8XtdW>kI6aTYX#kegRt!`=Oa({BxjRKtSFW!ntrT zI6Q%1I_$?z2-pG=n*HosS$#y18Q}+I?e*JX*xDTA=jRu&EjtS#O`&6BceVnf0LW{^yBT}oVUg{elRE3pp zq+dul%X#sC;L+dyA9(aD`xD!xim7m^J#Sl&{cm_QWj{$FxJZ!zWZ7joM1%me>|Cuk z_62_-7PMe(`o=d?E5||hhv^T8y26LOY0Vz5u$5IY&pp)PRX3XUoA_RpAGr8JYLykUjIOOiA5EVCJ_BKP zA%VOx>S?a&*deZnX2xkIOdZ>CX7 zAhR5UEhh<>jd|l}sy5q8bs?E&eL49rbhYX+3IG4+Mw+W@|CbwWGQw|qHt3nvQr8;* zcoqFUv_XA^YTQ(>anCT_)+gKv%>}~6mI*kuvX^wV5yHP|Ev&NLCo)*VY|_39la>6Pb-mJ9%l4t*ta%*O2)xMb-pur0 z=+r5s9x3q{ZNKRTwyKkvsLdOppo}m!GP`eR)?;*2zhNUjb80^VhXlC$qpcM$O5ZXq z$C@?1*?}y*T0jH>j0bv-c*d;@xiZx~f?? zE#}t|HX*|yO)+80LD)ECn$Q%-JuPI(^G9;cH%CUT;#|}0*QTCPDc`p>OzAm zZh26%D33nS;m^0}l*V{Ck{M~Rvbehpvm^^u<=9cyhSxB*Sm*@_Wt#Z{f_sEQ@WE}O zs^bzPoVxuwnd80=N;yVE!)PMYNcJqK*i<8ojLh*ctE3!`;wwZlIt_>I43=o-3RQ65 zq$ko7Q!petc{JBnXp#nK7&}U*C0HX}%fjJU3q9~>otN+8GcB=sg<60hXjcE?_t6SM z>Yrk^{}YkflotKi_BPtCevK|hWS)F>ntb80mT!JdU8(Raxwza-*yOp`p0&u(=+NC- zxWJoBf<#7@p$9{(*22x4&Op6JOAJ@!{zw-6@Lp~EIXK)R&Li8%qOe+k{4?m}eB zibJ6{dRa-Iiw*NknW%Gaw-&}l67@>GP6ipX?tXj@BmIV7B$E(fShVsREUF-{RJd=n(5~61aJ>A_`fe$c zO+rqAwSLE#b|sU3Fn<+CD#utWD(aV(Q!`W~;->@{6cR;@5ajk@ucn6JC044MRS5V| z!4$+jjtq9fE+8Zjz(2`en(SMROsG^@D`EGeCR|ryV6Wk z&q0d>v?g-Q`1&AZaK`#IgYvuVTYHNRkMH86=E*boLmY81#fP?_fEHM05`N7piMR^o zS~7eAQ|fGQB1xwGJK+i>7m6-TV^2Nj#l1G=pTn z(EbY8quH<6i}u_3yiK-y9Bn<#zRVXcQcD*uar)GI8LR?b5h=|kw3fpZdySvbbPak5 zu-{L<4-mpTF$zNpA@m1=lpL7ZBN1Q{i?J(Wp`8RXC#yJT>ZoDIm1Xo@#`Iu)jn$v* z#aIYlP-F{Qg=aJJY@XrB`CVD=5!QD>&BvJ`aKvXR0(ElEvIU2iQY$ICW2qIVSr^TjGLvvQ zd?=_G@M>ZG8HQUO!7G3_#%~?wAYc+$ov;ir->aAFT+b?&R?_Dsrdxqb11)(wrzA{K z6SLh~nOw1v0*Zlk?Q?aXEANKJJ-nja!-UNM>QOYXoaw)w8H?JMdHubYf!<_!mKGK4 zbxy0mK8->vRAkwq(B?^lpxG-7h4BsAUO)st?0{!eu*HN8n4C3SX)6xC0zIpPiLpzi z*2Sw~=wvC>hD%#%NqIdOAiPYVQhPdEj+1=b7l0LMw8H8%e<43Gl*)s#uCx#sm4~3(K^UpoCDvgTSgPL z@LMBT?$JKa2u3fDH{H-2CFZ}(GnW%zuqN2KSq&GblJewa7kdOY1BuXLRU!l3ocJ3f z>N_45@{Hc9&^|I$nv?fhAZCUwK3nkGTE<!Sk#!dZISLncvjA#neWgbJ{eF zEUOMegfS$80#*-KjJC>%En`rth&&QL?MxWVmf#4}&hT*{+l%cd;d0=>BNvk($R5Rl zsactTSOyDTDGb4wFpg_6uOl??P2;TnZFDAFiVH~yQxyO%48jO^$Fhp4uvwXn;r%2k z>pJly#d^(Ji6xIv$Ven{e}};EO;&-5uzXD89;LvTkf}0VPZ)ZpSt!(kVK4D^^Tif; zq1ddK+~Z*~S|=WIGc(_6-_PfwC1e^@l%pR8z-?#v!lvScm>H&&!WZz{(Xy`a!Gr}T zr^%@YJK%9af@c)l$;`DnnH>uz35>*Xu$RC!jgaA5HYM-egq9*McX%xf7A-+0V8fY{ ztdPe|i@8JovxsQxHH`=!x9smb!WHEkFbNC$vadOsQUsvKac9>fcv{I|*08`;XvHu= zM6UwOBm}7lZ$GaeJS;Cv7<0rD=3*+rqXt1=x6vGAp9u+wiW?^+s)&VgIE{}Z#lZ7d zm^gFkDl5Dln#TIdvt*+1WI`gyq6bKWAQ^SRmXV*qfk7gY;4bHMzz^7LX+&VDWkn(U zffi-%YyBm|3r*yMZTp(+43_TW^wsxS5}l~@{BM+q3_`I444NUaaTNjfEb1ie&fq6t zj}kPDIY2973uOO|649{I7Ugg(*;m$nn5qhwN4UjXeIPv0oTuRJSiVdgX|<8hD$eHB z^Dl0&Cz_Y(L)(N+S0l=Fg|P8^@{ut{{wcKi zATp5u0zV(ZmGI!$=T(Qoxf5E5cEjy&r&}RQ-z(%^#Y0j^iL;0?VKO+nwPHm zSv^_vKJLnPUkF|WgqI^!II@fuZQaEQOnCe?sFye$@a85eDI_|brqaPP@`|v9h&Cu+ z8QG%L%tb#9?RcDM%jF*BtM$=OQ5;gbkwI+6@xYGgwaA=e&pgj9lD3Qlon1q{ht^HE za*A7SPF-}15p=p*!zp-HqjzeVNvJzZUO`yJ2h|?t>8-caZ+55Ylt&hZjKr1mGcl~8 zov3h~p`FOsVxp`W6|B`r{OjoLO|}mnx71q0RH@9}3aL&eJl~jo2QGnVJUn2lFv25L z!g6uMH-vSSO5Jpfy=0YIo!Y5FE&t;1>)qKC;kTttLmi&6Bm^yy)`_6LPA9nBFw(0| zBfN$5UF`SfOV%2Gn(kzzyW|AHD_qe&*4L21mQh_T36ni!l}U`5JBM8fXS}k+*svtRT+Ra1#%V1y zmG2_QHwg9$5LUa7>{bRZGa1gUp(q<}8-~k!?Js27K&Gyo zFc`8eQ8R7tg>B6ayL*i59?NzR0?Ig29x2!}v)7xS#9jbZY>#_1iO~Ftc=Wdfq;s_% z+UhCawhA88=H196yR3s*9>P3p2G=ojEY7$6@FDUg$6lK0RGb$rg%1uWWK^%fCWwQj zB?_SpQ(~o%LJNB{yb+0a%VFA!PYU4+a0yB{BWbNptkKLsvOV7Y$dJ4-z6jK+R1jG z#Ngn+cLCPpAqeVYA>vRZ;t=c(GliT%pl?RX zeUaeHT4R?1oI)J26qez^!0=(FbuimqRu~l$;UEdZ$_fe7Xmbw%wgwgiR~`?Y=Xp?h z&1HhV-UJ+(b4LwU8oa88gQS_`=$gJEFc$QCZC~JN#_-L@SgCaG3KgWZjM1a`PAs}E z0ajLIxICUy#1V%ullVphEfGF{z{RRyR^AFkC=D~>oL*k|P{Ka_fMz5rhk@>ZXW(|j z(xO{xFW`u{)1uO8m;<5V10_0HYWNzGBce{Wil}z404Cp)jU0HADH~vl0C;>nazr!M zY>Rn66Cmp;`eMC0pl!?f*q^q)xx5v-W&4(ho#8vfQhx6jd9Lz(T>#8;$mh`f0Io5M z9I%DS?(^G13`nr+brCFUP{20gw)5a&eaGEhyRsTm5N+|;sWJsM7q4q_VGD}_cTCf$ z-6w)t`zEof++Ewe2L8;B`ToOxeq2`e;g;Np8kvfb`RvNmvvaA^`ny9L|ALC@x$^w= z#kVz;`&x!Zy9$~Sg*MGSMBN2T#_qRAzkSsI0aZRU-f~h9w^;<*PfQww7U21n{QLJ$ zM0I`fpyy8q5U&rk-G6(gI`fY|e&2TQ(uo+~k5|;hrzIy|)VV$(eyT_O{9xr9VJHQ0 z&32G}zyIr$&yEfHBMGm)SeRQ&t z_qwS5a|7M$DoWh-nrOOmBmG?Iht-JspO-&=v2BI0iBE{44s6RK*ubW%Fj#a;;E3J=6BR zT{yYE&z>w9L`J13zuhC57LBmV=`HW(o8E`?3k2T~e+_vO{4QYg$X~j@^(7bo*=1Rr zyHynFeU-F7cGmvjLF4r4LuKW{g^a8FZp^Np>8-4b;l8A9oS@PMlak`;0LNShtSIJf zgY>tYj}d1L-dIl531q%rBFJsEeXbO1BPI=lRE@V+X>dQtALx~qo67C?vC83@a%}-9 zD<5d5jh>v`FUM$J@tOB5(i8?IQGy%mF2sry;{GtRbKsAH6AZd@u<-MC+F$>WSlERt zLgu)*4>qS?m)}o${Bzn@UGknI)3e>q(duCr*7ae&xjsnTtjX=iok;175-0W(K0Wv` zsx#`|qdL^lgt33qocxN}cDktY=QPLnp#4FVbincSBlgpOfAM4Hk%Q0fe>l3Qr1HV~ z!;Dvy#Nyp!H=bUYdXJ&q6VZAqCOW;n)2~zTecnAdr*n*s_~)4?U;Q*s zd4ugym4A8k+pwB$HKp+3nD1^%*I=Ohc;ekO%fHc|R#hpURQOyyjDg-0g}9@$M_JXl zn}3S^yV7THo6KaSQUjl-&Bq=8?@@8hl1^+&)rp;6M~2sfhZZkk*5{aD)A6G3G-` zVPeBw@&FfWIl+kMx23en%8EoTzP!X!GT^ixTbIyB4@B9tr1pZ8w!04h9(pJJ^MRC@ zBmX36zWp(<%`J}b(QzX@X#0KAOY#S+4*Atcv)6 zS44@AjJN;e8fPPuFFEpkid{a|%_H_LczG84BE7Xe7fYHmoHaln(UD7UPk7G?H@|vy z+wxphHhb~E9^3RO?u+h$U0;TVYWMM8-|YP}=PTZ&)UUodz1{wS9aCdpOH1cj%AKxw z+=D{;!qZCXmjkko$^Y#|{qCO~f06rMj1;uzQa;%3|Dd>++l#D>CcQaR zm+{ZK6@qiiKLVisbI6Cdy6vldpW&pc-p}{2&t_?h2yeSc$w)yt`6k770&~C|`62na zHkL45l$Gc}3(eJ+`M2BXRJlYnlE{!Y`uQA%UA-d;iKC!U|1G0?q?Zz;x_(*sT{Wvl z(%RsQcf_Zd?rRHx?{$|Qy2hfa?L3ZN;jK930>3%ZTI~ECcn0up2%8+%Zd3&N@jIR`!6CcvKHB`EDC8@peQ|{f!UCSNR{kr_)jvCqBbg#yn0viQT+4 z+q>-SPCp`Wwx>tjeAwSlaTKKqgS1h~A>Or=p4rWd#$xRK8uIETxpPD%PLzL6|1x&| zL(i#_kl3dmi!B>#&o9_vy_2MPpZ+jW%v$?#?nY(hS>8VnygPKJuJ0ZH_1hw`1A~2t zNm(_Tl{c;_|KkHh8-p>J_)Yoq@TF{Dj%(QW$D|xd%sZBt82oR z(&-sx^2+G7{TV~i0q^dA39ddY{|^iY_#N0SAu9m4$0L= zf6%`3EtcGPnr=xO7TV98_`_NHaj@)92Pjd41Aq7?{`i4^$xA;x6#MZWq&9-&nVGV9 zS+{Z&7qVlr2ZJr*x_cKG+)q=t=NsmdcEyKTXoUm)`8p*c@4imOppd&~+XZd+5=T12 z3s2z0Nr@+LNl3i4cTiN=lS}WhW9QpW#A3UBi38;W*z#_2hqXZ@HzNWUYu zBneF7&qcYSUS+VS*;16-GTt({L$3U`04KNYS|dGOsVw;BGxI(6^=mz;|qr8 z?iZeDPxt?oPd$?l>5^H;)qSFn$%ypK@#f3vL)1Rl{&Qg$HO7_rXQM4Y~w+@b@ zYq&UY`?Op#Fpirw${Ta$I|WG!_;5(~Sa)t>k*G|nRJt#Byxci!D02{Y+yBvOY}DG9 z-&)^-tucs;SbEh}`n7Jr(kuJCe|0dbZ6Jy7p10m9FK_Ng_s7kin>XJ@%k8zs+I#V| zcmabUKa!^WA-6rZ@L^k&Kp>G%otEH!P&{mN-izuLi)LDF?a_{V#0wwyFKa3wJnDD1 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_275_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_275_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_277_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_277_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_277_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_277_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_27f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_27f_states.bin.bz2 deleted file mode 100644 index b6c1eb54c9a47adde8f344c3c51fa06cddd1c782..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1135 zcmYL{Z%k8H7{<>zx3{<4)_aQudL%pNmAXuJlKBCWeP|3g z;vk$`NED|Ar!LjFtQ#A{LEQb~LS~&u;|vnFbcSu+vgn;_93s=sKO1qNtDp9MdXx8; zC(oPbS^rvxZ*5@vs@Cl%Hcv#r#@zm;r%!J$mM_tL-6x$#)4;Y`0~&x65G-F0_Jbi) zyaE27TgO*8Vk<{-qP5?TIBTyQreJUF)YQ%k%ama5=s`sv4ITg%-)Q58Rkn_cGa*bn1daHzPmgmqIJ#v?YY(+&+`tQGWSeWO zdW#egLJHbtW8)_DgOfV;=soOfAO+T$>y(Bhu8Mc@Gy|EG*_zQG4#fTDKQJZ7Jz&nt zKVfxfLGP#Ssggl=#I0dmWxo0soTm|S5;5#RtTiFOCBa?xu~mF8F>@b*wAe>To0>ID zngjTG)hJ`tO<=EjPQ5ig+&aT8M7`)dE{dK8i}7M->rcE+!Uep^-+{jiWCy${0E~Uy z7*-_evv|3y_N#*W`5e415WnhIKTNuZC7Pgq?Odo{YlyVRE2iytxXF@V-K32wN`6`Z zZ-g7n2CXmdrym4TZX!YE@803#uS+ymAb@@|BLB_51G@O@LQ0B1M49Nna5tYSj(gDq zNQyX+7QPfd@nnIN41B^b(r~GPEAH|$p1@QUHL5@avSQk&?t$}YR)~1mS$#_GD9%*H zyM<8mnKsjkX1Ou1pjAqgcmf1tOMRWV&(C7+udLa!l1eL3oCL2qAbzB0cbrSNLGnsA zz(x*@BSYcPgoT}=`-zgTJ4B-r#l&O<`e8FsT-vEpNb<-_w>fa^lDHAe5m9lbUGU{J zQu69mvU<+?tO!td-=M8VDf*aH+Smv%9LUSlPlFD=6)|Sm7%rnMY}c~hD#bI~cuKbM yq?CJhtAP65h{epMM&USMEUYYNF$V`pBbvxclPu2&Ubk@ez4D8LgVzqeN&f>&!H^vQ diff --git a/client/resources/hardnested_tables/bitflip_0_27f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_27f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2a1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2a1_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_2a1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2a1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2a3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2a3_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_2a3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2a3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2a9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2a9_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_0_2a9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2a9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_0_2ab_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2ab_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2f1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2f1_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_2f1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2f1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2f3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2f3_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_2f3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2f3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2f9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2f9_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_0_2f9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2f9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_0_2fb_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2fb_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_335_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_335_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 zcmeHQO>A7(dHwF2``)~nxpVIuj)ofkh%=NednEJcNg{=DOw%uNinxhV6Kxj;TA;IF z1GQBvp_U5=rHSiC3!x|)Ewa!eD8@ihc##DcS-86gbdyyfpc^fxplS$kKr)elva&SO zb00}jk|mi+Q6K?63F7;^@BVz>`OZ04q(<`S_v*`+{q zee$Z|d!z-KROA~gR>YwseM6X(M!Y&1>mA2kZ@jURh*#17DZQ05B>$q(PlPO<&l#J0 z!)$v+ow~lxnnW~RD?#G*{$^j&?=Nij+lwKch!^Wrh$t76f0G&uR^(5#7h5DSjU^02 zIr-02TUevnLH{!%vqZzCi2Uo6zd_*|$#KfJs9-5i!e62=CQSlw1)4Ag3bCRyx+xHz zvB|+^hy1Qk9Ty#?6QQke(@W@t?s+EmWTS1pNWJG~JW}Y8L;w=uQ*L4fy)|=6cLg53 ziN%Y?3dv7!vW%4-Ll^Tu+W6uZn-?~Ju^CdSax0|9azsRbNM4J)&TdK!)k*$5e{^Hh zBT_^i3ey15tPT{(kOCwuq1+{s=P0CNxP*XXE~4b6)VS57KwiypjxwpIv4UK%hKPA16Bn$9 zM?>Bm>9k-dS3vN_=$gAJFSTxOv}Srh#=E3%>xd>!VYv~>CCYUKMn5DYA4sDZGY@ir zVVXl!jv!a%l$0RVB>KJ(b;_kQzp=4-h~_pnHqHmWb&+s$wxok|0!2*x%{zC{US-70Byk=SpIPgQ^fcZXW~q^N2y&q(RwFeTg{RfO2)r8>0jZej;-3(M$b>#LMPl#k`FdX79Hb%>599 zWd(Qk^5EhiqUJ@U56iBsWOY}S*VRrW3aQHP6kicBxMnKtCUQtJF%qNLvM*x{roH^9 zWB^UTP4!4NsoJhni26(-OtF9%R4Agumv;u0f*P0Ya1r^J33{#JRY6VMOotW9Ln7Jr z@DepHrdVD=0H;{QaavvTKmdqTxwi5xVA}&4kQI9V2@_lBVsDLSwAcQn~B9;O}Cr>@e1twH|H;i>NN0pr>4| z82cv4*9KzwiwpR@ypH4g^7@7Kh>nO(Q2;}o-MXpngR3WjeJtlC6_LVdkup8<-rc;l zxlBqSpbE&r6jZl_+QnH3I2rSkQe8jK!skI2P zF?O<|;-ayIT4O~bok)*zc`y1d>5e}Ya*j0UF8UXfCe9ZDV9X{!q*2GMOqVYCg^nWwUjpTwO;*QJ2O}%qWj^$GugR?My>bP$`g`Oei~1 zUry=JI)+aue`J{^@B#{^5qndzws{@Ugx-;nD9Df|-Kcg3sXVOKUT$2bctN-3OfS}G za}-izXb$yo@+`7&+`RJ|LW35co-j03YQ!|PFcU-IaI=7#!r`QDP2o_=dcr&4*s!nd zQ4N`**6-q=sfBy5>t-IqLzOco8*Z#q_-*h~5aq)(?`j6K_W@1h3R)y)Oz$=1P8!uY zp*z6NRLR(5G>gd}142rRPC`({L&{FMn^VJhab~B8Tf?YejQ+N60%WbKxlyi_+@xC{ zHbt0!Qe{CzyVq~TPyt0UDI=iST0o!ONM9G-x z3SqWggcn0B@6ab$&_kPGX!K;Eb4GU~L+uH~xILM-6-8}hD+SYQS3H-G(QjvU*ad@Q zR1?2pOs5KTFM?vme{AeG{tN@1X{=lLGdffO*aw5brt2G^ISvdBE`ospiaI>q@H}!o zj&p!z^sjLIOWmv>mt(=XDCo?Dod|A&_ zG1lx3vv&m$GmHU;k%*Bo^!pb2{~JskldQjEwoXF2*Cf-Vm7D>xEeDkzFmhcCy^0oIRbX zbH}N(+QRxsmwKmF4@{Y*1Nd|+kFr63g;?Kt`SwgmV;CA2wM>G-O54)Qt=87N;P~9p z+cOUAp-=eFTJ>-g4@6~-(Cx^9DlHYq9^L3Wa*_dHN zONjE;ezNbNuia$-+K1Ww?)Lh)-&ptPHPMM+EngX6O9iM@{p+WlIxVl$+!K~#$XO0p zSwpXsvUFoH&T(KB0%s2$huQk3TQP!j{w>`>^Yf+BXU^$@KvJp5<)h<3*+dNgK=`&X{T*x zFs3=oOP9Kj!8j}6eHg<-Tm@r6i;3vjdw+ptY%uXT4*3+nnmqj~1n?5Z&Y?tQ2kpF)iZ)p3DruU5po^;3DvWgA@QHapB(k0k6sr_5T+T26F-(|jPa7JIE{ z6Bx4=vlg?~fW6l4_d$7w$U8*dAwF9#_n$oN@7&mHvDey1$dhO6wb*O1*J7`=`;Fld z_FC+<*lRthl25y4uf^X(d>SsEeUH5sdoA`_?6ufy?f!%t|KtPzfve#m-#a@fO7JDuBTKrR{2N2AMP1tL(*Lnzs1D&wfVz0$si@g?mE%sXMwGJei zyN%duvDbPLybK2Hwb*O1*J7{5UW>gJd#xAIPWD>twO#}-?6vqaAAU1GMTh@I5C4mv zXEPb^5P65lJ4D_g@(z)Ah`d95woZQa3GWbjhxk=gJns&BE%sXMwb*O1*J7{5Uh8>E z`Q$V9TI{u+#KiNj*=w=aVz0$si@g?mE%sW^*UHDAve#m-^*AEF?uxw@doA`_?6ufy zvDad+^>u3b=yUd3?6n@n!`Gj)*J7{5UW>gJdoA`_?6tmLFZWxp*J7`=kA{PsvDad+ z#a@fO7JDuBTI{tBqL_Pa*lV%Z+QY)Zj_kGAYq8g2uf<-Ay%u||gK6eYEB0FKwO#}- z{7E(ZNj3aQHK>?h8VWZIT`g$}4c%KP(^cip@c&FvIBjS&Ha3_vc4Qvc$BZ5Qz$D_B zNod||{ZJW_#-#lzZ66fZa>jn7j4jQW-WA_;1~qN3C@YP=N zSL@7L%v#h2*6M9T$!;v}8tUwyZr{=LzOjRvv3IALwV1Vjt63{pqP<`L{pWxCpZ^PA CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_337_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_337_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_337_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_337_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_33d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_33d_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_0_33d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_33d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_0_33f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_33f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 N1v(9kpXaZ)+&Az7G@$?h literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_365_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_365_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_365_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_365_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_367_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_367_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_367_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_367_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_36d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_36d_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_0_36d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_36d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_0_36f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_36f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3b1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3b1_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_3b1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3b1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3b3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3b3_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_3b3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3b3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3b9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3b9_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_0_3b9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3b9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_0_3bb_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3bb_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3e1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3e1_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_3e1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3e1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3e3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3e3_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_3e3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3e3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3e9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3e9_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_0_3e9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3e9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_0_3eb_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3eb_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_008_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_008_states.bin.bz2 deleted file mode 100644 index 89d88b572a733280b375bc66523de7d8ea338bdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6132 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 diff --git a/client/resources/hardnested_tables/bitflip_1_008_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_008_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..9230a93a45fd7470b742964627542f3d1fa743b9 GIT binary patch literal 31271 zcmeI5Ymi(;701t=S7v5sZf}wynO#CMgph3FZW6LVqK5L~1ENU~NWchDSBw}iK*)m) z5lEw{Rgf=gl}7krN=phg;0KWk1lcLeSBVx@N%=+>OCD+x5{WM!X@93@W_Kb1iKQZC zPu1?7xpTYw^f~|Y>T_>TX8Q8#n)UZowu&4m-n?V8>~VXBrGJkT*YEZW^2v$FBsq7m z-${Q(Ru1yza7m(?RQh|QQz|lkxF#l%a;7HZ2NOQ#WuAx?=iKJhBFW}u!eEb_v}ZUY zU4tdzvT;3PtSmPYm7|Q9x^J8Np-dc{qhDNRB<0-3q7_*rg+wL~TRDzFj(3fLvQ~%J zGxTu3vC(HcBz^pFJypy|OxKb*y=?Wnve_X~yjx6F(wuefDNgnnn{sC`%%9q*5}DSYNChcoI%TTZ z2wL9*BN$cE51C|A-!#b!+{$tyRf3+CuqwxKVVp!zc9F5BkE!w}<#I+!bwt%U6RE(u zoM+!5Q_pZB*Ut%Cl!y+>h(KHI^9;I@wolX7yBYI?`8*`q;sl5|i}NQ!a0-cMO)_JF zu`xU@X|GR%fB{T}SgMMP{3@DO? zd`D-w_j}fDHg-JSM$;NVC;=}(_M|qYcNO1r5P2bO+Ta2h;7pFQHKbLcC-Ab__m|g} z4>n~~0526|%h2BgoO&Pkf>vqiYm%{DkNBZmFuAJ%5|jrToZH$tm=o!iVqMazm^Cy( zvNF9(>_7_5Nxafc8l0pW$MsvxjxDKagDJ_xUOUhJNByzF#KFr3W3T01Bxu5g#$H-u z@~0VDH)QJ9t47Q)vU6)J88aeN7^Pqa1Qet{0$u1w_VZ2l!zD$edlt_B9udLt{G)yf zgMJwOZqV3Dfnk1NY$r^!5gnx6Ri?hI24J0+IRc=s*Yk?N$Q!f}bI%UJlh@sD+>XFvC4&WB}@(G4gGo(8HL$u(n45 znJ7>76&qRY&SxZdN#kmy;4KVSd(_|5nBp&xS0Vl`W=vJl1E0CsMkh!6kC4w{BySD! z@{o~x5mJ`+XI{X2_)wjLI8Nh&J|*D^rM;!>uVNGo-73IPgbvK0YB?}jy&WdO<+Z9e zagjDisf46;o}Tg#^Ij!*BHBA&`((y`9@ot2@9)i(s#3DKQi2&5T70ErA&*vC< zbs)pa}+NU0=XT4C2`>fL2doy(A1pE{Sz-oo)JD8n9~2T(e@nIa@z0aVlc4XhhA zpzG=I8Dop@g0}mZ9eJqIqR69Nlfx1$u@Ncc5+$I0;CjTUTTu#XPLwRt|?rd2hpn(7u$gmHWr<~nz?dz zROdg)i0_94wfBobOjXHX?jA9NsZU7mZpqcvywT0iO-jW9n>~BSY~V7qEBXSg+imJ^ zoo?!>Q;l5;DB&Qw7oFJ9a5a%Ke3;oCFml&B;4+M>yKUI9)w}_xfFO--V9R54i%%Pr z6?^f3T#&k+p^;i%C9SiFn9g^nwg(WK5HG`>;GAWkb!}6=x*^Xi8{$-N zvy;xCGml=WrMstyQ0Vs~= zIEU_-q7t0daO_r&@YBos5RCpA)aXo~^He}YE9x*WW=nLs&f)iU;s@XdfapfTx8q^s zH3eMnw+Jls)XY^9yW6phGlxdsvqJu{6c7K529(>?z;Dd~A>ErWsj#r!d&NM{#|bksR>O9>x2iy4eijc%Me2^ZE%ql}aLwm*xxIJkT)<;+Q&i zrT6DdAE5SP3xC1X7dsOV7>51^EI1gGBjkm+3T)f-RbYGeSm@w`aw&o2gbo&?TkYl& z<<!{a4?t2g*8uv6j0Qf-bfmCMXdkp)o%t$_46Q6=$*Ak7IpWWY} zgG?b>U{*jlPMxSJljnLE03 z0bW95qq>ic_|WDAQLhQt`H5{*rl77>cYlL0cd8%Ar_Z@-@qSa$sy-t|*#`kr+}x(= z(li>C@m^4~dfNpVEuJ6%)l@XVTWr{t@KIkxLkEA!w}*{&oo2qvGdadkQdM#|7B$Kk zyzyJfa8BRTH z?B5Q@do_OTZbfFzc$C(MG~dmjGX%$*$f>9jaW5^P74;KlzK6k$9S>HERo`-l}l zc@d3k;Jx}VOnVMffJrEyZ0sBGWbhV#MZF4v#Wbb)C&12D^lMTa6~IgeS>Y?IM3WKgCqv*he+E24e%OtWAZzeD z6UlU8HhNHvUJw$J-aNh0{8`&nf z;|i6if6W~eh}H??^1s!fk5%bb)b~Q`(=V4hCglMF2g(DP(oQW@!Kc|;;mf_rdIgXa)QVk}u zCZ)l=oj|}xM(?9!T?9`7m5GEQ_l4L zzVv06!HcU2bq{MiJn-3G-za zF>VpyjfMI5JU`6;t6#yT#W9BWTN=1|(j;%1^?byz`uM1kjej!rViO=Wn9>dq^Us&@ zbV}{7DNU%FBy%}g&MZ?SyRq5621t!v33wLqr>iXkENac2#e4D&O~oA9Gt4D>Uef$j zX{O)$kwp2(_2aE{vxN0ApFYp!NWQ+>k-w~JTyE1`;FpOdzGO5-aNYy*%|K&)OeT=0 zv@H`Gdlyhv&}=nwk1pcHPpsm^*#NI>>^+2*t(+O-fq}Y@nbeu1RuQ7{{|klbRti-l zRbaX4f3q+>P3*dGko4G!aV4FV7vIp_Cj-$)S`SO37-Gefkng$)S{dw7U?%NBh0jp_J^k zCERbV<%w{=b-3U9h}+C4T@?UO{>QjdxfWxc@Qo< zl^mW*w&AJd7urlHl#)X!Ih2w^DLIsq!&Aw}vTau=C5KXS*t(0mW5d>6nu7AQTKkSA zp_Ck+N(L3r@~~uhDmgrr9G*%JPbG(^l6eaE(zYkJDQ&3Ba_!X$|D^ULzzXBCD pxDFd!^V4WygX^%twJtdy+wa$e4X%%QgX<0FNbB{5-`srG-vJ43Az=Uj literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_00a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_00a_states.bin.bz2 deleted file mode 100644 index 38af88dffe626c1b4415b38407451f87793ea280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8688 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_012_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_012_states.bin.bz2 deleted file mode 100644 index 492261923c4d616d11d5ac062798b52ba6eff1ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2678 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_018_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_018_states.bin.bz2 deleted file mode 100644 index c0a5923785f3eabbbbfee990284b0948b5d123ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1623 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 IzxOBq3wtNyR{#J2 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_020_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_020_states.bin.bz2 deleted file mode 100644 index 333dab4c5991cf7676aa290c4561dd90ce101966..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmZY8drT7t90%}&_L}Rp!@jOu4Njo6w57(DK!TYMT3Q~Zh&{M+5_CNt3Djii%>Gd0 zOzCSBi-S@SiHj&Lwnx>IVB(AqI6;9wwu-o9S+an-#W}MuB=eDF8~-eG@t^M>zrVh} z&!}Q zQTgmSwgOAN%p@~y?iy(L269zZvm=utDkQ>YVhvN{&xtGR_jLDwn^Lx2&e64Sl%S7n zX72J3f9ASonnBC_oqJ(smlQcxv5MaPttI%1f1+Y3{+dseJ=f3yE-CyAzRj#yUcM3$ z<=DPidA*DqkKmr@X*M0_q&Wmkz!D#gAWhqi>t#$WL=uByj?OlHOb)rc@x?nWKYlS5 z{#vGf(Pleb)IM*OQ+AqcuVzq^OU`Y~$7#?DD0ffNoi2~4|3xQTS=tv5zu_{ug)`hxs1s19` zu2};m$3YImtQwQNyLU-=`Idan)Wxiz=mv9rUaH4#JLFEdf5CZ=^%nBr25*;Ur=A@~Jwmry6v2lQI)Qut2Re zX2L0hug{TW`$OeY7H6Z|m_js61u2753@!CKDJ4@RmR!*FHFsHK2`78%5^h>h_)g{& znj52=si4Q)dq!MStnHDhV<$~=Y&M%Vc*d|;VV~7pc{YCTXH`Mo!lC?MkKQc3eCx*C zN1vnv>Dds#q9Fh>@Y7h!pQ~U11k&B?3!P(ua;x#ZG!$z_l~!erCu}npZcHQo7Oz*V zBZ!YL*}D3l|DfqT|M9R=p>EFOu_F@^TL~6MeF>R@hv(IBxlwkC8Wde05G*3lLO4cA zt{De&OKFResvJsJIHN%-R{fx1zWGkMKA;1a>D;TR-izvWS~*WDMTw;9&Ut%=fXULr zF1zp_NW4{e8(Rk$v6K^LOzpfj&csCa}`zAL`-U-9ez6Tf`5L`&eyBtg_) zCknjm6W?YiwbnXrt!X{eb5qLCPrXJ~^DmCv1|3A^az>uZ7~+AT9|g&S0;VM*tXSlV z?mT7B3iX)xrJ4OSfjOpl9IoGwcaj#8kRk!G=)9N35+vmiS`PY^2w_JkGJM`QRR^{Q zeXU{A!I#jDrrb$0nMV|)<+KR>?rATNqYj$J+&z+h3tHZ5?;6!4jT94|!DPyQi#L6e z-5O=03*%~YWK@%Aj8~UV??1B*ePG{sMz+m@IlQ1XOgY0f3f1=E;EMzEk`<#dkiBj7 EAEV|+qyPW_ diff --git a/client/resources/hardnested_tables/bitflip_1_020_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_020_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7b0d648cb37407765180e0eb54bcf64e19c40ee8 GIT binary patch literal 18953 zcmeHP&1+m$6hHHPc^${e9H9Z@klG=MWU7s}i;9baPY9Z%jka_bqz)RjNgJEC#F%Q~ zB2v+vu3QEbDK1=;ni^Die}F4j($xq>LaB9-v=lA9{?5H`rc=^(lF34>=PllQypMa& z=kK0(?zu1Q9qXQ$S-Lhtv`|f+r+rteSE&|KT*GNVJBcVq{Wa>M&Jy+2s%6?rFljLnEBf7>?6Sfwd>15^b(NOOI4z;u7s)%6!iz^96@gW(s!~Dun0v z;?&v|++1cVpj~^7DT_mmDY8?pCAm7suGbpg-o~c59e3a7Dm{kdQ%pVf3RAc2^763# zld0@Zu$#vt+nBm=y2Ev5?F>^~zkRo3fx4*!EM|noY@WiNI_HZVcRmR^p5`Rn1Qt4( z9zK9$o=wM2Tom>WsvuZs1$0PgCt(VnNXav`UlgYdeiTDVZiE~ zIlRjz*XQjEq-R0QGM+r$WN8bzBw+f*y??Ql8 zz8|8(tsu1%XXMtN0?`LkqQCKN*ylhRu4R6JDz-Yco)Qg0{^I6`G3Eg%p;08lVR0fq8vP_Xk40*UG#R|kl%8sd|V?L2+5CND614}IYW2CZid(sY$^l3 zky{Yw>4lk30Td;lW^3s1-KLi{oK9fQShUg+L3aooLm)*vQs9biMKj{I<+Kk(N&=KXdk0tN zz1Ge#4a4d0Ma`%F$rTUe8w{Xe8F4G7HzR;zGnI}-O^EX5Q8$2Su(bZ6LW3m@mNZz} z;OBw{OMq_u+H3!7PlF|E@Ak2*!P2U1lLkwgS&}@MW|nTtNor>4&iPf%EXkLprpE7+ z)VKyq8Z512YEFYC4VE-mlIdR!mew#Ct-+E8OOSw0!>zrNMyKJ#Wg44K!)eWu)+}kw z62dL5S#lMaKtyCK?_IU0HA`A_`EM6pYGz3@OPX2ofh;P-S{7vKlz;nE{%%@Z3%q3^ zfEIYK_j5smB@LD|SZa3xffjgUh}Qydw>(H!!|7@`T@B|${#AQj4VNy8(E@MShJNj} z|Fx%?CCw~pX2}mQnpx6c2Q+?Cp}!8070~s?xcch=SzIlf{yM-fC;vbG`$U7K|7Ngs Pd>{Vpv=q?eqzmQI%1|NzX~Blpi%Nh_DXA~f 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 Q$K%sckFqjDs^9VcA5+vH@c;k- diff --git a/client/resources/hardnested_tables/bitflip_1_028_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_028_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..e0e9538cab661161322b4540cdd06d7e0012c145 GIT binary patch literal 25815 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 KcC5T+%YOlrZ%8u$ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_02a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_02a_states.bin.bz2 deleted file mode 100644 index 18c04fa4739a7f9220c05a5b4791308e8a916bcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6158 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 diff --git a/client/resources/hardnested_tables/bitflip_1_02a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_02a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a1347c78835cdaee13e355497f25ca5f5c0109f4 GIT binary patch literal 41308 zcmeI53y>Vud8q%M>6z*6?dhY(N?Pr%q!E(P>ap6@U13;btfoMgg`@~06GMc;st^b) zEfSHrwoE9s3S$T4M3)NzDiQIzY%aOHL;}Q!*k-6oQp8~6D#yMKIKB(EW4Ks63M-(; z()asM&pxvfSOTX~>8X--ru+0c|M}nN|NnE^J!N&{#%=pod{yMy|JC)T99^0?a_VdE z1TuSXSA!HMix)_-RkrTyPm+E8kxVSk7I%x7Sk}(p*B{Fw{m+P#Brl(`x62c6ukiO0 zkw|hp8B6gJz1_(Jb^IMKu9&LS7c1h9lT%)MC#PL4Z>4L;r*S~zT#{_}mdO00OX;Iq zid*#S8R9WcB*tr$P>OW*fRW-<6Fch^4oCLp!Z`1Fa_Zi$zsq^!By6QC_jG!9blmVx z397=dUW3pDx02))Zv4zhISKSiMV$5|iG+T`BybyLQIgPH0>+qYB-riIQ&sXNauyrO zU*|=I_M=NHvf7BZn;V99JnJQI1K2JT7cMl?(4!ZU?RHXmBaO+605q3zq;4ADlB?BE!8u6K@JHyEIt^B>l$dV+v&d7ufMj{&M=gSrYml|narxyd`$wYvh2fCQ^8QKI8 zq+KWM3`}^{K|ARr=?7+p6`C(%hz8)!DJ&I$VoD&=5&pbxqRC8MmWEX~gaf2;eFzfb zsXUjv!^8&6%UZsdxYfoqm_Z#xFDA(@Q+1p9_C%;$Q2c1xA$@)UR80fQZ$KaBLsLHE z!1;zSh71#+od>Nf7~HuL0wqbw#Ip@IpmGty=8{)wsjUM0xV8eT_Va6+K)MP|Qy%!R zk)@#0y9~4@hqYrKUZ`#N(073+0c9b*4xrX{a|cL&Hl>ICeI$kG=pvO+Bd3&uKCviq z3g94ly#2LzV%a@k|L3bXhiK@D+q*HBlVU0paju=Fbt)6E(s=J7v8*I*rqO}vWV}x7 z5xywrZ8GuB?MMc2Edaa4HY2@1NabN01a|YLPnwa+I@2xn2*p)g+ij$@2E3P3c_<_e zkOcBLP$0kE#NOo!>gT~)yTTZ3=6^H-|KC}rN%)3|KewEwe@u(FcnqMNm2|O&@srp@(R>k!>=Bm2iCmGTGIj(O@VEEE;#k{GS_mf zJhjirI40b}1cKL;_OM|+7lIpWEM3P?H$l)hco@A=P#QWf)PzS{-i{o${;iSQkiypF zF~ksZr=oQa&@-c1P_rRb46$OeiI#m^jdWOk*r&*tK2r&Nh7rS;U^C;rUSnA#(?uW1 z`fv$^pS+H*ogf+vpe}bA`C^hh5AwIwnk$EQPllGk57AfWDC+dn!j!>d%91c(PPrG( zeiH6f5mOv3Q3ZA?zuG!2_rQ`!!@^&VV9iNJE}=JxzRCmOqg#7Flyd6pMt%y?>z4ap z$kPH4U0T4`4kLgEw*=~F{uxvC#)ln>S*8M8Nby=bolQn!tI;k}At{_~f9e3kKM>*> z{mo;Al39XYmd2|rUsR;5(DB)W#-P_{;Znvdt_I(FnGfvet>cpY;le2ZT%^qe+6))` zTNIx!`cYf)nO2$?!bk;eaccD<>GY+DE>i8nRVWxa1#6vh%8m5C%U!j`1Gb9fv7*eq zD~#2QwTBh)t9s!|h-{%q{s-tYQ0!|)er>OW(B>Z1+XYnB1USVz1TSNR8dem4rRpC< z`HCVa_$WAS3#$qTw8_C=1b;avg7Rv7_)R9aIDiWYf zUY9a6Y2Vk6Ec%}jFWQ8G&IO)IXA?@D#?nl;xuwX`oRI!vXO?-0(K-a2Il7Bk0=8p3OcV_Zk=Y)OU&ZVEF zJe8mcxPr;HCgC7fdzQatGGLtp%~!&(^p#5XMt z6aGz(x!yBKPsAbQu`8Kxx231@B53M4k&g81#5W zkiiPHlc^9QmNQ|8UR(`JUH26Au^{hwA2$m6n+v2+3@tlGGS%dy5WWtb@d;lQcyh)0*Twsh0PY%M`-c_I5_Az;-Yjg8dmq*GRw%5NL|?P zFJ#n5E)6?MG((!OC~>Zg9Vz%%sFUTN56@Kh8JWW1c_v!@g-VyYJH@Mzx#djeB~{`R zU=%O;sY3XU>2>SO`E(^ExIWiI+kVrFeXB^4ltDsw?lgJ>0K6M?Xi(i~;x5!xp$vT& zgAEkQ6;QNDvzD)gy^iU2=P0u>S`}2p^x3EK?sqEtt9+?_D*;2;NjqRIUT?og4u}q6 z?)<}w{QM-w-Nm?z@vrVu?l^3s3*kRcskItzxRu8N3?~4*x=g$^S%`YV;O2l;VOGxy z_3CrKV{zDlZL4bwwmD{R9;DQKtk;Zm>hzKX5_snT&aLQoKuqbks?G0S0pw+ceD$0B{p)WC5khH zE+a`EWY#JJIH5YPD9?kX1i#(6n3-(lMlwHu;jK=XzK2=8tiUa#<>|}~*i-LK{y^FO zdR4;eB1q#}9)VYI(j|e!m>j z8%i+MQm-SyCCjk&!(>=)OKxLnH6XOjraQM7!JG->Ou|B)6TojdY(;nKgMD3z;q0Ir z==9g%q-_Oj7pny(2HmOK*HOSRgS5))*I(nly~=AroVFBv7G1G}1G4RURx!6p*bArS z>XmDJk^q_jSyY_^`$^u>91_)lKX{_T35AD?V zFtmop%HS~-^S^>rZ^8_ymI8{T%tKWkLdS1Un|5@Xj(j=X;#fRb{S24AKr>t?Yu8wS zMdOTOMAqZe7-R(1rRpj5@~|Uy_#SF#{wEAO+}-0LBpLF&Cx`EzFi5?Y+0)QA^zS51 zcG%<}m`;y>KO|b*RcsMY)kEu);*wKCJbh`^MO?j!o54WqS#bZgCVqaoFRgz3Jip#D zkx|C~F5c8z^yi6c-g)47I~+dOE}i3i(g;eEWF^2JKn(-*#^u3m^lUw~p^F+78Kw zFuv+Xxc(0z;s(G1{2F$l(bG=4ob{@rU&hy4b-2{)Mc8f*<*14KKSg`kMhv&)S*Kl< ztWL4hTqKV7W2WSk2_4X)pqOivLQu`?g(_0a#h@a^y=W4Ub5HYYsws_-4f zbek_n{g?-TAFW_jC3yK2m`LhaUK?5*Yk56RZ?2`E5^JQknw+V69{qQNmGNAKr%l-N0z?iR+&P*>;(eB-3%s z6k05)<=7`-z{EW!%f1GZtsGm9g>#&{=nGE7U*n#e`~jEL{YgHSvLK5fi{BE0uk$sPkR)F+@q{|H$<<+|25R`pC6+&Q z9y?6+3OJznEhC@iR?`nmd^5jW9)%eayyvQ_NwB29k_2)N*gv&x4L2ey7p5zqrq%FK zE%b4Z&hIHda*FpxFhD^q6#hYyJmM`}=Bm&6F|I9RQlEgqR}4~YyVrM9P`L?3KxfW= zFm<xp9d6~%m}Ngpg!RDMqk3_+iNAd|xZg=jd~WA! z3Y!i*e~RWgJ?{IX#Sk z7cz0veF24V2oU%?`RN)LOoaow7<^_;$-Qiu0nv+;#C(vML;phKeotl)84W*T%$2$b zUx*3_z}*?z=#3l`k*QCB-~-BIlWQ!}U;MTkL^FbFi(N!d=b6eHI%AZaMI=vH4hM{y z9*M0UAwtOtA5Vk(Yt^}nr=G?$+p%mad+DkvwbsXR@-#q)W*b@zWAYB~fK4~RrUhsZ zEF;}MIc!DI-=qNI>P=vBL`}-{a#mYyQd}zH?SjSI0r3tvD~$lO(6LUgr`Drt8bariKjLRw_^(c}w%TG{6}2Vp<(_mX4sz3v{)g}!c ze1eYWp~!1SGw&a7EDq6X3p zWquez)A>lqse6>3pI1FVbV(za_5S_nbYf_qb-ft`FTG0MeQJ7e27DK>S|?8AY3@3xL*jVYi0xrXj6nSV*mb z9>xx-F}p@)hl@r?t?>g4sVzbRXW}8Kmdq1{CGx02qV{G|p&jDkU&!}a2oS<>7KhPF zAET)05RK8rD;?_!9pTCgP;g|l&8w~RC!wzPU#`xPjk!JcE-|J2=JQ(#y;bXHGO`AAKhV%yC>~TC&(eLFTF)BSt7dEBl7$C4#PO>h>nD^i7UU*j`;r?>Wgzpl{seq)as28viCa)}CP=TMzN{ zH;wEp40&p+p*Ybb+`o7;*;rQVg1>camyNK%Nn~HEBp)M8)u8|OTS>p-(nZbV-Rc+B zo3bmR6HUa<#I3^-YyDdrGSV`WKyFj_j*RxZCuHHenv-|@Z0y0HTSEo0OGMQ@%kOp5 z7_$0brfE77ts!#Q}EE%?atN<;sL%KW* z7^2OuV0h{^o&%$m`Z2!^4x!OH%d@PnZQ=tZ9_PrVIODwzC%{z2dBw(v^v6fhZ!SYR}qw#Itye&e%g~}LKY8YLSEMX z@!Du`B(;n$*|zcFwXBA`Pp&fYP2*Fgy9WR3X$)$|7V2-a)p!+!Fq-n>w4IOwno?!g>KuUm%WjNf!7X@$w9u%h&C zuVt2d3v)+vpq$Bwqa$c&R;VkjWyT%i!7GOIV5cfo%|VAOsKwiaMzTrhuv=B#rRx3y z+p&_+2Z<8(Fa(JNcVS7#A_%Xpj}5>nU($0uoN-<9->r8O^E<}^PqT0}W*nJP%wJri zm`ySSZ-l+T;jdO$sLDWO6J z6Up7me(It{+=}y4Nx(2P@GYvOebCM4$eTBFCRRsW z7Ms=tHZJ+!VU^xncBW>JILr*DQ)D`olo#GK@<;Hb$JOwhfzCC;fvhpIXygv{buE*e zJ1U_p?!;n5=-^AIGf8^;y!-YSP4%%7^>#K@B&Zo~@1JHB=ErE%qgb$YcqV$h-o%eD z1-1L3{M~6{vEzyH1i!^SleP#8bh;B0^_YgdS@DmI?ZvVq?7KB=084V8a?uA^T}S9t zxm9eaTx_WP$CH2$#DT`OegvkUn*q{Fsz(}1LEL2Gf7Z16$e7=km_I5*6FE}$e#I19 zrf8!U)sD-J{NyVp)|Cemxdtk=Gp#*v2ztww-o=6%t|#W>gN=Z@zu1rJQ|}GtY1LGO zxLftx7RGp*F6m@4%`C@2N1sp`YeJdMb@vt)?UvP}lo2!!u9b&K-tp`1G)n<02=CFg zqF|MVr!716n`lNUhr6Qe=P=SDMjA*LNaebku32HMsJvSV-h0atybtAf1=#!>;2Zqa z{KXel)a~a+i&^`Xu*JyoJM`12nBE?GqPG($yNfrL(YLj@-W3|xyVzFTh2J>^R3?EM zOG$=edxNESa+0yV%Z63sXQp0a`4*@j?$7-ub$3A@DxZ=Q7zRynffh1;w9V`N zZWxi_b|%&e@II_Hmi6JCb8LO|ciM>BDBFR(?>!L4tP!IP7%<9$Tm5gUNxlj~-3V+p zs9GACh~29BfjjZiQ0TUb(Pp&T8GxCYTaBEl!LeImD~!l04FI~y5}I@O7m#W&)ynsp z`}QLCXH>BtQNc33oXNu_m5DKn{a~e-J697#1Sr0upfr%k!$0I<^*RJ~32JBpl&Rvv zh8Gub5%#Gd!vjUbwqDh}JXKrxP|v6yxP}f-tTqr0-={qgI)2x<<8QMz@L{YDur-vy zf`X?@ghBW0eJc_4?!VjpI;PM34w-O&q(rNj!G!CUK2K>W1Ph#z<1~gV=wZ#TW_k&&053R+~(wDwm(7ahd;8 z+mK0e-JbKRy5+DU#G0QoIreaj-s`cI{jcQn=TR}j=2~H=N9;Ums^?7%BkJ*D7q`}GQ?$;}39Ek{-d{{>Q^?xtj)kFe z024n#`Xi4jnonxGVB#y<2!(4C&5S*&^%8^ojLA=E!jLQE88i)8b=UKS#>E5PCv)Vy zsf1zpZdqY-cQzaBu#bvqlaRT5d|2J+N1KeynP(;x>ezmWN{kE5;oo^?Z-KF!=FkAvI( zrv+7+q5G0u4u$CzP+2n7!Yn2*h3{)U`3gHy%tvTP}isddd2Kn|>>cYy0J1rcKh4mSQd7KC>gkpCs_#7X3@6ZZd@uWCE!S*U57K z#5cM8MVe0xmqS+H82D4$z)ZPy-Kj;O4tiI^Ui{pchzKS#mQvL@n+-ZvRA!%s5%l^ zJ?WhJ`@ikwV9@Ob71zr8!2XJXN}^g3WcB7vCf*JBBQoZ-3P=O zKWimqm$K>wRwQ?NH%qZsf~s!y>vmMm^>B#cCuF=*)8D^BvZy%@tnQWiX4D184QXY} zx-hP1po172trU7FmmZdI;z~G-yHN6Q#7G?+p)#DVFgnAY?1Ij4(OdJ;L#qDMg2-d( z;_6Q@8&(gano#wIQbs=L;UaqNCH+oS(P0$Ac8t%j4|ws);KzySphReImsSp^dbMnh zCi8;tBbBQzrp}<<#P47S3hXc$Q;i-%?>T>();#*pcqS_99XAi1VTUPX&mqQ*)G1A?u>aP?{bZ#?vt?e?bm9Y&lA5~Rj z)jx*SV)!>&S^igp94LbYkawlKcEMNyBQhcJncIf2GGZ4HPD~$a)*eBHhTfx$mn1(j z)pOIr$9gOqCiY4$E@Bw80~Lx^GK%WxDDU0R0R^p)$C(LbuLTZWXz5uhPIzTnR2SzD zK(SiMBV4wDMvwA9oAL!pyymIa+$(F#2P*Arn~;C*`EKiL@0{Uk)oA3N9rn6@tR{Po zsj&SqR<~tfE6@xCil5y{^5+%-(aJDhZJS0x8FxvoYR4yyB_q?K2r@vj%PZCTLTT$s zaDD7;K(_J`UHS1J(cT^dl<}qE&Aa|gL}bEQ7G8fI!Nl2Y%$&A z3)FM#RYswU^!!0BA(iSB?~;|e$3v=+Ldz_5EUk*nBOfn40l(-C_SJ&Z?W z%uXB}e%f1h;-I*;ypA#|)W;D@bY4h{>v%g(cH$r?sl8RHH#>1~EAILmVK1e6*@=Tg zwRhQxgV~9L2k|$u69-w*_h_;Dzu#6tS!#CT;IUpBlASnc-&XS_%D7S!+C4G!#9(BhlyrNr4wiL;jyXD=m26|l`cdns`tdnvKLBOrSz z@fYmT5t`t9Pp@aqUP?Ura0TiqvX>Hv5&J6}*X!Fc;;HlS#_lljdwb!)ih)zSlN;HW zN~$n>DX~4xB6}%u_EO>yL83xDdnxf;R{q&biL;jyV=PYmjV9TNgS>}_qc5He`Y_g` zUucq@IGDZFq`mfDI>};;cBh(ihz#=SxTLtHyuUe%G4kfR?8L$B#6d#pR7EdIlI+C6 z?8HHRRU(C11E)!iJdGwhaS*G)2_o5vgPgZk8d}ATI`l0&agcZMWhV}%N7ZE~4rV6~ ZvR&eXIdO2?`D6guyT#}APd<42{|EWNQ8@qr literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_02e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_02e_states.bin.bz2 deleted file mode 100644 index 2ecb621b35216213e87ace8d2da09f65d36e9910..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2012 zcmZ9L|5HNe5O~>ADFgyZ-XwXrE!je%ri1~xqI^m6dK{3v_t5rkH;B6l zsK~d322!GgK(eDyi!Fj_ft>bW2b!;tQ z(GdY}Kf)|Qe)~^OFyg?Uwzk}{B-)ul5-sArrq~FY<2`5Dep-b2M{wtvh}fMZN9RIp zWyJpz17rSAJ&tJ8b{}bIhhwLs*2I)anGrGzbKkq5G(tx$m2zEgC=W1B{WV ze<3H5b9)jq(3BU9`!wfN-FrZSmj5(e{Eg`EYT^-ixz#5GTC=Wd#w66dZ1HdC0!w2% zmC~2R5@uwjhV_kcmcH)G_?r?JYfLGd@8b%JOY0|eS-#4f^yL4D?5j!R6=N3{H*Sb-fUDH{HXAm0D`VE& zV@nNJ0LFK?*r`v}30Lyxcqgl&W5SdgXfTTo5bMC`m6_vtj#+6*7R6*3Q)#=vD+|!( z;ht4!cToo8x-O~Jdh%IRx7%OOC;C^@*CiAn{*IiP6cv+YSQHr3SH^yr3Km|+HSYD~ z{`!hvZ5YolK7|GkJ?NhX*Tx#ER?%go_62?G@RQ@EB5dZNCg&b>ftfP6zi5`zHn&NB zK2Yk#grje>j+4cnrHz7S&?Gt76>8SZew@=|YxSDiPCS;ITz6`O$ zr+tNS)1%V-lb?jJ*$>%abIzzY=fm>jfrT&%ul0(L{Y1FMreI_GN)EMld27qIn~Eroxyi9IWxI43s?x ze@~_QUS$6~Gq0RQfpH>Io``~dErWW<{7jnZ_J^vAz7Sq+Srw51@z3|42$RWMf93RL zNp2lCzy8IyK9C%-$_RZ}$AwiNZ%|Vpx)1;n7h`$Ye@8=&f;f z@Vv%rlM8j6NY-NpV0w_C(J#lRE6hBsfx`|=lm^=qW@$Ovw9Td0<}GYaE1Tv#fkQ#7 z*av@qTOj_p@YcaqRyg$zV@w57hVs#){lE}o>DuaC%_VEK6FB;D?evk*E(f-AQuRyoxeth$q=ns>qyZzED zg>YK1s41^Mti4(vp89EU1btdDY<^JBJ=$N#YD{C?%5Cyjk`_)4b+%gguuaYuvaK@n zV*zv$&(bT_-p=_=juqIgRAA|mV)EH*_c1qv1g)Yx|DOyEK;3p=24=U^!k^7t!2%NvsZ?vU&g-4 zn_{0x5T#yVs}btwxS0IrPA>68C|+7=h#H;fRl+FrHQ>WLHj1Yytd&Vycrbs#-AT~u zK>zBw)k^0ZM=bSK+dS_O~rN+JPO z{7!_!26B1IQjg1~JdbWe*-|_m)|GM+5Sh1dSKtD9`?$9?p}QLAC16&b8CSaADs^R@ z2^ddyK&_I?AXOndU~=I}~ zM^klJ0;*016H(7wF*^w0daVKBj^i>NO2ZK(MK7l@OA-Ml4BNN}49LoK5CB8-YBW+w zumhedbuSX12+7ng+)`bQ#(dzhEznQnkTfkY#7v7`3hH{{QU6QVn?(&v~7%{XO zM-Z3URiEO}XmvHCyJnayfHU|D{A_T3lmO>dU8oKL?5-(DW4Fqcy@?2no7k%Ba+bqs z0uTezgVN9xkAQyH01BEd{h`^sgXIFECm3SVL4$9JKdFSIN`l5mS@>L}fL3@``HvBS z!N&JY;eH)m9qiKB?SJd7xbXDCeo^)pSx1g+Q Xq}$xb=WRVdmR6#T-uCY=FYo&wFg1+% diff --git a/client/resources/hardnested_tables/bitflip_1_02e_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_02e_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..16254a7e45a0b2cd889d9733998873cec9fd47af GIT binary patch literal 22053 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_032_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_032_states.bin.bz2 deleted file mode 100644 index 083f1f0a58e4f2902e760bbeb89947f979a759e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3614 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 MJ1za)*Z(g5e})KgDF6Tf diff --git a/client/resources/hardnested_tables/bitflip_1_032_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_032_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b3f9ccbfa70b4a081fd7f718e711d7974e484bce GIT binary patch literal 35067 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_036_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_036_states.bin.bz2 deleted file mode 100644 index 7fa414bd8b7405f400b7b4a1ef837582843f6607..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1975 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_038_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_038_states.bin.bz2 deleted file mode 100644 index 15f739f1b73f21f7825dee226ce83821a7c83b31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1274 zcmYk4?@tqV0EgQ`D{U{7aLr z_?T!px`8^ny6+xm=s&ys_q;tFirpzIEi)JmW#bcLW3^=lLuh5T0`lJQf8eFm$Z@zC zKVXa?-)#BGW4*+kK)~^nsq27DqPv;A=fIX9)#J=aiDmT%CsVDcr*sC`{O$X0ji9BA zl#b6X-Tr>5;cDma+`tpl0IWZzmDuPGx^rWUnq99SjHS$^Un@7UnqFh&_c-H`N}|Rk z1nD+2ugZZEWCMy;=xi4bBuQiCnZq}I`?<@ebPi98LlgfB#XxqfFj#Gi@DApUQ<=?l zOj+!xh3G;^LSesC9l`1s9fRggh4ipV6QhmJL$jI2i8hlcwN)t_b9k0A75fH4eFIN- z6;In14)3tN7J_LQuqIrB%u+dt$ptg@dGp-Yjt9wp&&)#G+;*dI@tM-o^7fOpo8R3m z=axa?<%d7K+qUMjEUInyEno8$Yrr%@%YT`&KG{o;@^wIR+_5wu>&RAIBpc0~Cfa2S z!3(3$tFEe@h#9*2Tncc;GG#eUWg#7odI^GN@_^2?dgGy-28J>otB|t0Kop_(>9J`* z0vN?e0!BCCc@&TVpzyRb&fRS`+^>}G$_-h+*cjn@5q2^s-FI>~s?rZ_nf=duewiw% z(7}R-${yuS$IITW)cU5Tq>D8SNC# z>MTrl+tCU5CAhgN)?*H~7xq{MiKU#gYg%GOK`k_wJJmuB);LdtbJdUEI4+%Ps{E(= zy81^CKXYsJp!0k@H1*qD(L2X7Ol}%Y}^p0jtip7Pm%#&hrWLOq<&RnhJdvgRdRL(??M| z!sJ)^nA-)|-BckxO44VV!e8kxt8?cZvHWZk^UCwA`tjtlc_y=ar+Sy>ah}24s6%1d zgiC2OyKB{yEhq+1>+a=3Rro#US)xoGImp5~M$*VGJdYrsUeHo?8Y{_r8CV~V9|}hR zeZNZ0ASB|?>4{2xt7 zgxwmB;vAzeqReR-m;^#g(xjzq9%sOyrH5UVtrHs5F{Ms*h7%T~b0uz70R*IzjC>Mo zC4rnIq9qm#!i1%k=CMQW29oH)>J#=dRR^p>p_NQ-++8Wkf^LKtFgi)otPVE-Nps^c zp6qo27SNQ%?#2*Wlv!~_rT@;2`i3Hj0a0|Rg>f`Alr@I^QhTx4!|6nTZ|*#@l9>ya zTfs1Z5f|Z&mTEHFhzlA{C;ch~kiDS{J&dfM eHuhFPfl&cFXz>PRfaCqI&eT!7)p%{>Z0&yx&jaWH diff --git a/client/resources/hardnested_tables/bitflip_1_038_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_038_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7bb6d96485e24b1699a8061d2a6223bf272906d1 GIT binary patch literal 21459 zcmeHPX>4586+Um~&3G~yzhe?RnK-s*zSOi4hN6;^BKMkwNZl;_q7x_F> z$kHmN*N!D;AZk7+zmjRGtu$2$xR~i8efk}!d&Bnj3(H9@+X)fic9e57=ArKL zfMVQ5adg;ir@r)TR0Y9|`O^BJiTY73UoU#zsI!uaR_1#?px8V&mT}5goEekMm(c_ z>~A4@VtbhC@f;`-Pk}v`p|7V^X1}yd`*T@N_XVaAW4ywYT!%t{E-G6%Kez#nHltAr zkc?r%82lvxZGfS$9W+G50Eh^HZM`&nH*=+kVerDG0#I~G~5AnDH;xChH~C2J2P~61_tXI zDL$Y8a#^fsLzUZ@=50zIR9Vc2qSj}I$XgC^{&ToEzhE;Zg&LAopn!3`X!%@8xS&MI ze=F=z8o+#zlK2y-0OKuWdhp&}U;!lYCSYYBVKU+Zm4?yLYlNymF=9S+g;iI;ebpIo zzpN}6I09Z4HN`+v0D$;D$N@FuU1jE!RK;q9j&n^>5M2;N3EDb^kIPN8R_XdJYC{o# z8fpXrp_I6yVC`Bfz3TuN)rc9T`XYxQs2-@XoX2!+H<~`9HrDil=h4s90$o>gph^d` zlBQ*Lp@Dc&Cc(5&FfWL0jO!6=8k(0eg>3%MFvw|>ouC=?_d@3ZHjrCU;OZWs&iA$k z`TN-1tDrkqYc5HyhAw(DnEK}GL^$m=r49qJ(S<0|_CG-PYrzdDo~lHhO7lH!T6Mup zM!_$gI^9zBrt0A;i@^fzmV3}oYes)P3#0?Zu_r(W<^Y3U>$(Eez0PE6y{laYCG9A_ z`8;G%w#=f%D$(jGd_9iLeh)(hIsH*!4R6JdC(-v~BRjFg|nI361}-_V_B4>Uh~MnrOc@&Skq;biWYjGALBhq=4CoAa;Swhlg1e z4JwYI>z2^69DtBMV)_aeT!WN0Nt}Sa?v2AR6k`pz$ebF+f@%iBu6coLXIM^cx9*Y0vZegYX2@e3;}Fo0COF*Hi1Hf38&=PYZ$A^^y~;Q zjwJW`Z00lt=EvYxC&-3ntoRL>+dAGG^_jA;f>l7st#6qC28>t1z>3k1!%&)OrNGNY zF5?LRf>NKcNrI4CfT-y7k3z&Fk_$Z~oY&ti8jSTx1=z}sWu<`GPpO(|Y-cZcg|w{G zQhVJAor9jjVbIlh)x3&nt-iP!jzn1kMuBbW*veX{L6LRgfbaGz)!-cqHN2MRfCXFg zj#3Ac*j@1g-3d19U}K-{VR~p!XwzUgq3dg23r#3%qeG)i$1Ipoj60t9n8{}GS|z3qJfKvm^+)Nnrs-W{6pkV{k zYk)Jb;^IyP91OjBXcu=XGwcPM;o{B`Gs63~B<_5h=~MWEPsTHj@q8S?OprySlKL0I zlgTrYO!p&nBXH@IOykG}xS{?`A@4RZoE z9z-s|E|~7w$L69gHd_#5oPekGP;vZq(@LGw0XA(qm(l(|F_!;Fs~aY?>Ke|w(Z5&N zI1V%{6#N-`&HE73jR**OY!9^-ya?=iAF(J1*GeL{vw6IPc&7c}`WnOr`@!|6uyoZG z1=e0~Fg=4+O&)Tf1*KG!&0Ar~>$00JyIF+nAY#uKPZD{$?54|Z>IV^*-5hP>#br0k zYjc;~wD{2cD|~Y?ha7rrm)&&PO@L#&M%^yE*(*|T*-a6b-IUT7beG+-B)$@ zRejv=BI4rC$@;49vYV%Ax6#-ie_VFcWjDj6v~K5d*-d=;wHH1#yS!ZZtC|Lw|CR+-NaVVi5wOh zd-=Y>?cKx|40mS8of+!W=K?HNn= uACcUDL~{QT2?ugd%YQ_2*-e+-blJ@j3$PlGlbGG?Uv0-DT={KZ9{3-kGjGKJ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_03a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_03a_states.bin.bz2 deleted file mode 100644 index 61ef022680304d5eff1863b388b5631e1da6bb29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2736 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 F>c2w&vupqW diff --git a/client/resources/hardnested_tables/bitflip_1_03a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_03a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0f3512d2132780e04976bfa5fba9468ba4b71cdb GIT binary patch literal 29421 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_03e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_03e_states.bin.bz2 deleted file mode 100644 index 7dd251575056ef45d9a285da96701d14f2424500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1515 zcma)wTTD|206@zSm~dxtrKL3lM4+|w26}HbfrLj;2SRT^tkB-20s3@?4=HSksD&X| zEbTyS3p7EAIv>KHSsz-BIl}c4_UkL4L})2ye_|>lAxVeniImELzht zzM#dGdx!zr+2+Mr5h6~alvcT+tn`{Rxdgg4SDN*Nxe@%QETj6*0sYQ zfGp#%Ot+js2vqK0so)Nsn+R0g>EFiB^ga62J+_GrFj(rstpZH8&VH?Ln8>XTWCQZV z=Gf#_Bjfjt;niUJt$KOMGkJldVtINrz<*5KZk@sR2d~Y(g>pjFIdxZpn(27eqUhyQ z-Q4Mi!xJr^K$!KX{6VPg;znena#b_UG}~vO&M6C!*Cw*B5#@i`(|`7?4rI}iKW6uo zi0>B{Z6r9bk2MY9QP0k%Oveq0~M_#gnMJd1u0b>f;n318fTmzXBr4cp>C5yyxvOX-{&nyJx3md`igRdT}9ot z!gu&G*5wLAmC30IQ^Xradi6!M!?sTM`^ul>s`--3+XsVq@!I&gU#7UtT0eo1=%U%6 zT>3`$+eVh>94R)ae8*ilkFGsE;X%1$s+9y;M}7KEc$gDGP29wrmpgph=8q3-(|yo; z-ez^60YA4jx|wjjPgn6Fi8fp2d=IhgzV%nZ%E0nj&C8*1es9ea)Sfe*TgZ-i>}31Y zD%_hAqq1ep%>MF03Y#d9A3`=y|9TSYXmVhF0_;yivk0Mj{hMA?rczsHK{Mu0#Y7!> zzTQW1dQjB9O9DZ~lv)V02oxN(QsXWzt(9m}<{)>Q1BJUHy&h4gJ$cfT9X+HA(DrTm z7vKT>@#$KGXPt#sz@rSfPLGt(v{?}fE+`Y%6Lbz#qM;U-b7>cN1z;L)@X`{} zkwo_EtAhzk#CNdpFu2kz{ec($5~K`LZBwQ>L{%dR~j;p-^wK(*L}EESm2*L zVYstpG?e~OScuH#7ZMMsSn8P+Ln-anaE>4$F zi-cpy5dp-G6q5FPKnc%F)OD39bsCsyVOnP?3Rry`B#T{TY91z35WsSnf|RzEbAa1r zLN{>4o=A3sN5(k7QHKkV=%s9s$03o$?k*7l)a+ECLZR45b_k?oFM}c$+d+Upf_QGd zCa=keVO|nqmWn_rPg>Vji(#pQUNs~Zdl}Rs^TmuBpJ_zs@TT&5%vD~n2XVnt*uwN^ zU9guTQ5#{{S%vAeBaShX2SVB5BBBCPfo6Ds0DJdhpj)rVs8dV2j$<0K(ZyoH911G# zLbRAP9Fp{SjAFC8$Jx@~sR7O60lJ>MySUKfq!JjP-_)KYqhND8{}z_)9#Rc%77zBp!kW^alj#%e;C_W&x>;7Vemopzj` bSeH5j2%rnRDpJB$+EiQ3^}T~f&+qvg==-~f diff --git a/client/resources/hardnested_tables/bitflip_1_03e_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_03e_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7d66dd7eb9bb109464bffbe3e4f91fb6034bb271 GIT binary patch literal 16874 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 CPwQ;} literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_040_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_040_states.bin.bz2 deleted file mode 100644 index 87d8693df1453a2c5d4ad7917b0252b1228fc130..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu?@T4*^jL0KkKSrY>VjQ{`uTtU$Q5C8xGkN_1x06+)`zybU@P@w<-2mk;k zr9=UsDJdzFBhkJj5>Nb)Njk|DRCP%wVM!)ZNveQVsU*@sNzy?i=P4xAl4?mcNhYL| zAQ>g1StYbfB(W@#(pX7s2^F$SB(g-Ox^<-DnKVkB0KpQ#d8(4)N-ki1q_mG*lO{}> znocUN$udsKJgO_oOo?_0IFJuX1e4l9B*_Gm`5=;FK_tLQ&calH;wqIAxss_Rpou|= zP?da1l9Dha#F52-;GMdSn562J%$Y$aOhyZ{900e*lssKPn01fVxP#_ur zAQ}J@QmAOjpeZR+Pf&iN+7PO_B%KK)$t2Q%jFMQ8DS3z_w32d3G?HYJX(YfcNs?(M zq|#)WOrWKtu_RoLEVS8Bygcr81o<;wte>sdNqKl46xfFcj!efMlvwBZ^fd$V5XFN>%MlqN4(srbSp&3SyrH+>uTc JBn46Y{s4xXro{jN diff --git a/client/resources/hardnested_tables/bitflip_1_040_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_040_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..2d542516abf581ab8171fcecf5bd40d17d1bd607 GIT binary patch literal 15231 zcmeHOu}T9$5S@felpqX(g{a?O>5>@jzu9(QS%<64jVwf!8~pIMiW9MwwLhMfOK@*PwBvw+2}n%t?Z zWNUp{3L8!Mp${2ki+C#UB3wP3CDfXk&`h|$48q+x0ot&(&qQqiT2G;waNh+`7;EFs z3DA1V-;<3dY6H-E3eAN3uH*q)xX0OP<&Wb6Knu{S4&Y21C^TSV>j7GT7N89m&jV-| zk1iq*h3GM&$3-&TokKrDFZ)|hxf({5-=4Pk+r6nAoMHyqklGf7derX8@ zXaQP)Hb^DBor?g_0<-`vKs(AseW%_j3ha>RbTeDi?1d3e+o#kOKMv|ckn%yw2W5;X bV-y6U=1RD^=6Y71mQKu6dict9bc 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 diff --git a/client/resources/hardnested_tables/bitflip_1_042_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_042_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ad1bd544cf04cbe72db5592ba6f3235d1d1d5e2a GIT binary patch literal 41483 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 diff --git a/client/resources/hardnested_tables/bitflip_1_046_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_046_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..d6bf3244556bd63dd6322fa6fd011c1ad92832ca GIT binary patch literal 24386 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 GZv8u;xz%d` literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_04a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_04a_states.bin.bz2 deleted file mode 100644 index b31851187c14f4aa24da5418dd70af61e1c18302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13641 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 diff --git a/client/resources/hardnested_tables/bitflip_1_04a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_04a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..557f84698d53d7ef081b6b5fb3a6f7fc4bacefef GIT binary patch literal 50357 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 Qj_(qUsrm6waw?nu2kM^3G5`Po diff --git a/client/resources/hardnested_tables/bitflip_1_052_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_052_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b5c4b3812dd4bea90bac978dfbace2c385b19048 GIT binary patch literal 28172 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 bOW~=6w3+DlC7w#S3TL8l5w55H*irpoIWI=s literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_058_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_058_states.bin.bz2 deleted file mode 100644 index ca2fe1a7a020fe5c20f77e1a395d16e40e0ce975..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1573 zcmZ9L?N1x`0e~G0Huha0#=hgmc&TmP3@38eMVm*U5O+Wfo@p>P*UB5dAFD<`Ou9`L zN;0zA#z*kstVsaXt!TxoW2gmow-4SlTKl*oRa+@W>LglK+tKxdmH7k7SZLnp_`K&| zc%H}d+UQTo3$NBYUj0d%y-;@Vv+?}>=1nfPgvr!}GM_pS56EOwg|cF)^q;c-W9LT2 zsTuvUChCtW&W&c_cTQtB&YdR6Sa`#KqvD*r{^f4t&*e6Fba&wgFIJEh zqZJ{Rf^kE79dU#$2|XNI&6e`G+is}xf1`v5h8UQs_adt@5=$C=1HGSr!K2BfuT z8iVPWtZRQ#J20=tt&N9gVA-&thKkCcLS;iLY>khr$)2xl-ezStY=dAA9i}35D71H> zt#C$0tYii@4PE2u>VNsi%*wB-5Ig_0cmLwSWo#QlQB$~FO}mN55&TL+K`u$9+${>t z9_ZNRND^$9cbNwdW%)H*Cl&8o%7NS+Nc->V#jMw%&@Q!i1#;!zVEsl!60fhB%N2M# z`$)dm-rKIc-Cl4g`zy(b;BqDMrB|U)?RtAUb0tdu7**YOT%$QWThNAl%WPSDAl=nS zf{%zbKits%w?qD*rYs*j>M*irW5bumhUH&x2?xKtbNEvF_hsUgkUL*WU#(eqtX!<( z4tlcJyPiOMDL0Oqro<7n{PkUL8~Y_Sr(H6;H2kgUfZ0kdKByL$F&u41YUGF~Lu3G; zCo;%`g5#zBSi+EVLW@qkC`5KQm*0%m3P~H3b2kU6sQ%lOOP}t>n_5c^kCm}&nd6ra z&l=tjzGXQorR`IZX}K;;*<8qdka9JNQ%P!_Y5y#EP5GCjx4!URY54ph@<{nf{#mL2 zdNRB9`S{($cQyHkm#e=yI`jPApI^Gb(8Rd??uA|O)EBqJ2Wmaf0=H9_F8SiUbKKw1 zTAEr)k<2tEvJ)zhBwZ#T0-MbW zJR}tX1QBh<=3r`ehYXcTEV14dq6R$62$Ko8wE+f@v_A~e`*eoeA*W&Hl`Ewd=DiYa z&=C|?C5EPfusQXyKK-6B~e9gsqM?0L=brh0I-e@}a)x0yoJ#iYqkSw8-)W0FX$@abq} z1Ekwlt)zNObn60^q^Mr;1(8J6Hp^PbRZCA2R-=jyh@{h(CP*8O8#O+H)XK}|{9L?| z7ltfK~KtDz$YhG8d+YP)`{1PIB9(?LpzE>CpIwZcIp)8%&0uU ziSn28pxn)G2Qcdc|Xxiu@@9f4a_ Y+nO=Z^6CEf;@7wAy4utCw0_zD0K{~8y#N3J diff --git a/client/resources/hardnested_tables/bitflip_1_058_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_058_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..88aee3f164be3bc12efa079a1cc6ed35565e312b GIT binary patch literal 24608 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_05a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_05a_states.bin.bz2 deleted file mode 100644 index 2771dced1a435e55080a106988b46d78dd04d33f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4469 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 diff --git a/client/resources/hardnested_tables/bitflip_1_05a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_05a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..18eedc09b9634f01be7172c894e73bc61467ea68 GIT binary patch literal 36991 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 hB??rN+@`9bGoE#t0he*w5~SL*-( literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_060_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_060_states.bin.bz2 deleted file mode 100644 index edc274c4bbbbb3830da0840d9bbadeb5297d5d5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1534 zcmY+DZ%iA98O9IeGv~9L@W*!?7Fi7bQ|^3S4n!t4r2&jFU<|Pj8y|>JpCJ=v`@p1C zi@GtLjqQK~9R@o!Q4=`@Gjq7qL_$i{CbKV)7^F$S5~|sU-2au;JPmL&i|_=pOSPsZRG5`Tb+!P87Gp1gp;&My}qy)-TUswCO)2U~!;cL!V5d6XyZL|aLxFi%7rs;5oEm0wd9r4GI|GkP}5~H#TPGI*fOcNnNM6^ zD635RgywL&!$#??x_Efis4FJv@oa~+i}v`2alUbw*TGtfVqF@dN`@2NHv6+Ak0D~Ww3yISO@EhQlg9pC2fI-=nOQQlZsTP%mYl_tSAX!=kMs84T~>W{ zqZNQS0O(8uK!f;c{!4BYc%O>_G&c>`4!)us9J0-;hW?~BOqJ!E=9G$|tg<${-C@2Q zlW=)$gl6N^{26?$9-4`tS8rQPNLmk5RtAM^K3CFF*Mydea!fb!3)Y=-XM&lFvV!bt z9n-@79|3>At8ia6K019j)Gt05_3X8N2g)82`cJj^mZHNxaZ;0ku7r*6J}IX3#X4xS zl~G0YAdA6KlgRE$Y8@;lEFL~dVJa0;+i_Q%epJLOZtzPM4H&c4nFZuEI6iS|bMq&v zk935dSeb1N%o=`4uh|x?SK0iDIq~Kx%}%@Vh7-O= zt=K;(uN~S+>_pesx}?j7r~2^8;jQee-PR}Px-#Fs<(y+BM@3i*SY8^!n*R7g`RnrY zMQ=;MJvB563QwC*If+>qc0l&MneX3HU4St$C4)KFC3vRK=X*jM)B6(IEiuPgthrxw zL7Y0IS?f*V-;fmohO_=dvRw?tETWV*wJQ1+8<5>wb>y5OXMu-x&b&T`jbfjVO6ni& z+kZQTmL_h2eR%&qAHF3r_bSGJBMz@>D*PuN`yBNV&79Vr=@Mh(9Xh+dYItk+XFZru z!)NFrXa@lLbR>w`kyRqHDXs`*ME#$AyoZjSvD8y3K6_D7F(@k(ZadUv4}Mbt*I`ZhAVn F{{lcKP-*}G diff --git a/client/resources/hardnested_tables/bitflip_1_060_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_060_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c440016cf23f99c71624edb9ef92ba445d68954c GIT binary patch literal 18954 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 diff --git a/client/resources/hardnested_tables/bitflip_1_062_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_062_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..de48057f69f1ea736a134507ed258c20b83c46d1 GIT binary patch literal 50633 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 Ov8z`G|0VA`Q~od9;nB1J literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_066_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_066_states.bin.bz2 deleted file mode 100644 index e599d531831036cfff71c167f4e616f70a2fb1c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3290 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 E0pAkN8~^|S diff --git a/client/resources/hardnested_tables/bitflip_1_066_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_066_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..dfd8b4e9e77619edbc87415377f37a02340b6095 GIT binary patch literal 31576 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_068_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_068_states.bin.bz2 deleted file mode 100644 index d52f1573d6d267762a2b234a99f07f885130ae00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3548 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 G|M>qwo+Oe0 diff --git a/client/resources/hardnested_tables/bitflip_1_068_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_068_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8ed807ea3cbd066d121bd52f86e42e412e3593cd GIT binary patch literal 25815 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 La1A~Ei*^46AE$FG literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_06a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_06a_states.bin.bz2 deleted file mode 100644 index 05cdc35567db4620c2bc20ecb115b9f5bbc1a92d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7596 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 bKu8CEM=&zo)_q9Q2a8An|Fko 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_06e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_06e_states.bin.bz2 deleted file mode 100644 index f1087952d9fb6fd1c4a10a676f346e18b3cdd1b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1976 zcmZvZTTohw0fu!=NK_V46wm1}nnbzD8Q~muI?%y2QKM0*t``(K)NnhP%ye2HFHB;h zD*-PsC?W{E>E^1t8m9t%(N0$7b_9--ZIao}w%cyOOJa613E4VvlWMlx%VYnSZ|0l% zp8lF&oD;&QWQ-2kp^s-cjXJi~A6O)wcjQ{TP z|M(v$9@T%Ogb~HD^OkqtJ3m9AFy0|}{;#ALo_qJ-NqbXc#;K}?xr^tke*WIq?N_R| za&mt7@*U1m)9acEkBHTN-Ja8&EX};!07P}G(H1#s^9bgN%{!m1zP&Yn=W-2Nd^_7o zt%vK2luV!fjB+He0Ib*=S}N$i)otb~86>!i6}*aN?!2YSPuv5fep{#B3UEe7g{phi z__LQ6WfcjG+c0w>Xxgv-dLr$Y^^El{;cr$RUE8mox;MFE;Lg#_GFHFKxT1VBBSy!y zkW4%S1^g~AJQ+_6eQD#fCw65cUOqvq4Qcw1jsB6&$UQuEUiigli}fAUhu$WJrwHMow{?$_UR&C5_{G3 zI(wq(iSOEM>EXJCf@{E77FD5BY$#F#DQhl;{)Y2x84vc?QoizG%%Sy-F$13NcZBv< zoL}{I92xt=)|0>O^{dXd_tisgaqV}MXOdJgSgzs)CmTjXzEE^1sL@~PeJo$Dg_JuQ z)vNbSxsSLvuXlc-n%!$(RzZxW#60Uw+4E(bN`E%pheOESKOzyYRLi!~kp#|m2#}i} zzAoIVSdJbk7qUgg*%N!W!Vz>-MAyCK7TkV#=VF!vtc#!CW33L2T%u*~e_voa_`dx* z89e?htB}?dZ=q{O_uNFp)6~%G+4zP-Q6!4s^UD_sp8i6Kt0sf z`kqqfZtr@{>s+F0+UCLk!8oQL+$+rrhc^~(yi8dmh9!0Ie(&O2-1==5jfUJK67zDu zSr~jJ(=s2F*7TXay_`4O*P5JLnGI8lZ2kKBiiOxZ+ue?R5U%hX8C0`Xa~q!vmWoNa zW)9IDEiT}uDgu+D5(Ys`1f~;y3k3B4tkf=!<(v_n7fQlpyV(hSPBue=xGxb zF4&dc#4nDiYjSwDxl6Dz|KS`;Yo~&%+O+=0$7{jgn=!n!wcuONhcR2 zE;la*O~J5aa$C)clgQyLBH-c003T0j$+w9?aAKaOf?c}i0^VxS;cj47$N|G@WRotF z%k)!hL{?Twl;!9< zPPg5{cA$_}W(eX$L7T}FhCm*wf$lQIK2+&hpZBYzanz&y;gCTjV{g+6i8-*koBM40XHExAn#cCQJ|imGKbTh#+OJa zy;fOL2w#0-(@}(}`}*XxQJ~Amn09?_m;mK|A`<0@^zQ2YU&aelH75&xJuUbb0FhJ) diff --git a/client/resources/hardnested_tables/bitflip_1_06e_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_06e_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..6adc3eead5fa3153b2f08147331e417dbabd1eae GIT binary patch literal 23053 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_072_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_072_states.bin.bz2 deleted file mode 100644 index 138c17c0f691eb84a5ab05462b1596a3c31e76de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4289 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 diff --git a/client/resources/hardnested_tables/bitflip_1_072_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_072_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8b29914469bd4a509cfb4a606d5f9b5656637913 GIT binary patch literal 36987 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 m4M^mE@olSjEHQ{yW)+W!Zt{iN0a diff --git a/client/resources/hardnested_tables/bitflip_1_076_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_076_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08f0dfa3a83e4fd9546f2c426596745d4cdf6faa GIT binary patch literal 21096 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_078_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_078_states.bin.bz2 deleted file mode 100644 index 2c6f9cd4dee91d031c692d7eb4a2cc7151aeb11c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1284 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 ORy!);daQMD*?$3ltZfef literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_07a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_07a_states.bin.bz2 deleted file mode 100644 index ea2f8386bd115eac8c22c27af9eeeeda6c9bc7f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2730 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 f#nZ7$x9KgIVS+wZFz diff --git a/client/resources/hardnested_tables/bitflip_1_07a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_07a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ddd8741b028f63304b81ef5d28f0bbdcb58cbd24 GIT binary patch literal 28127 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 z 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 afra3}0*(m<2NpD5O$R4%5iX|2_J09aPGAK9 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_080_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_080_states.bin.bz2 deleted file mode 100644 index 54b71e2cef53a5594ccb5dbe9a8589c3607d7cb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 413 zcmZ>Y%CIzaj8qGbl$~w=kFjoTiOWS61_uEK0R~YA2L=WX2gW}ooGi=^K*W?4%Ix@x zRaMl)R&B1TQ|L!EFOO5oElr-2Rvz+Mu}0;PkLN+H5WfdPg$fgsS~+cAc`VfnRpeUB zs2;?r=Akk(L~GSamdURQJ)1lmlDsPYURo^knKb3qWTr`3zA6_aJy)7c<}_8AzhJV; zQdzcOq()eQml|S2tH7Gpt Cew&K` diff --git a/client/resources/hardnested_tables/bitflip_1_080_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_080_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..016ecfe67461561c6ebaf7087b6c1f051ef62fd9 GIT binary patch literal 15230 zcmeHOy-EW?5dI>U8026OEYcZ-C>B0}O5bPcFu z6HPehUStKk(#5f4IMDBoV8y))YI@JD%dk&hP|ttn?OL+rTyMYS{hS*J(&7KZkDFrL z{eKP9MXschlRc1j(vcJFNVD3JZgp>r?9Zah#~9U0*oHg%jpSQF^JfF|UA3fLSuOVZ zx)e5=@Ixo*6`Oc0?$&nb1tQzYN0tH3{0dw$DUu2--lQnQ-3+P#kOHuSw7b z%0G~eCTc^_1`5rD`@ZA}TDr%@Y2}aO0zpgAst)i>8!0qkV(ST7f|j6-7tbST=Z`Kj z5XI;*qsNP85=<=5GLD9&CERBg15tsVRv;Tq)J7*^$|oetNW!ToS-FW z3EC)?@OCZ&K}*mQv;=K`Eb2S)PEllsM3%wPQsKAQ$8$XWErDl WAZn(Bn{TeCNyG-m}660&Dr+CFs+)s)nU`}pn4&?)U{V_2} zyiZ0{xc|nK3j|93SUsuv=Ve(h>{ZP5`=3Jvckr*`9x?t}1M?g==hTR%AOT(nrjb*s zdX|+nHH@emjfONB5>7XFY{y^?McHhgJ_cpuwvFF2EfWQXsz*AraxQz73Cl2m=CFGW^&j~ zJD_YwSD6STNsM6FK;_mixvS_wqKl3!N`8OCkXrKWU&(&MGSkIKi*yr7x7t5DaDP9t zYc>NYwbOq|j;G0sQOkadZkHEr0k?WhMZ1OM4A~SI81P-=56x$Zzy4~s#-cF)62G5r zo3rzU**|PPin9{6i{s;iuY}LOOS-#DC4ctp(633qT?_!!`&WA7#*ZfMzna>?gHlP= zQ5p)#dwojyCkYb(nVLuC_mUJ?t?cx$gpO@#Nbc$Dn^;xCFTwW+jFV%M8^4qltt77u zVw20&Mm2>cW#Pt^4qyZa9 z6@nfapX{-QQpqtB^pj^H`WXRmC$NBM5YUNj!m(nj7XHjr)sA`~H7)LcnmDwFSF2wFYusUXF9XkGmjsWM&c(H!DdvdzN zPxs^!*pZQbsmntEYJM-Lpr9bN```v1ZHhxQfc>qNxEO&03*0RL3esiSPIM1}&&C_& zdLR{Vz)euu2if+)0_vB3-eesyFOw%RpzxGjlb2C6>ZGU*8i^As!U+a$8<;#5oKp|* zB_skMm_dLbZX(~t7d9?$j6lKnP@JL>z4PPBvBF%r*hK+5?xV?XMJhT)fQ~^AM>x$e8`(wZ3n@CO=M) zi`tQ_z^;7YRM|!QMUBWD8?$ijP(BC0l)D=j%@i@KSt6Fc8eOhizia_-jg?KGsi;N> z7d_L4_pJ`f$H0LYn;Hh=&dsO)Q2b%Mcd_Zo2p$wgdl9(L^Owx$=Ja`91<*&jf6Hq+ zzO?Y^iyfa+tlR02|4`RIeDwyNy>0i}MXN;gwQ-ILeXx0)um48Ws~x;MP2jPP%pQ&T z6gr*7`uXCmZ;qh;X?rNbzlpApKfd$4%RDw7e?fERL*~%-`m9HZ_|7*PZg!U#p^IK! zUm^L1dHBjXO(WZR(N^+nJpt@_^=8&_G^=`k`+nBdrv-QWt&bmXkIAodtEYa3kDNzWZ#Xz=iNm zRfmAb%BnS`6 z$^158^a{B|Esc()umFjOf}gU%(-W`HAC11e6l_>sClom0@@-za;H*AOf!#@;h8I9L z#Y+n|#Y2_DPlk`}-MqDFa7EV_T>){>aW&g{ZBzH_tGn)e5v+N#$lLm44&I~`+(6C3 z(Wfm#@B0+WmCF+hf#^&Phtzq)6%MKVMHrxJ>2KYZC9`Lxrw)y{Kg`F<(@DEJo}Me8 z9ai9SgVm>`eB7Ni@fSKCK78m6Rb$(U*#QnHNOp_4e#-L}5P%MUvhiptS|x|$FE!r0 zcccJ5lE=nR9ch`Hu6iCVCwQ@1ONVT{dUkrQlx<{lM~Z3K#Dxw~J&clYNn@vXm2wZAQW}npPet&ti_&U`5Vlyt^N>vlGgW=GHB})3RMt_ty7mvR@_tA&S zpN|yiC&$mO0j8|*CNMVXTm6Oe5wq#XrA^UYlFR1o$JRRStFrzER>-|$7yFlnpVx4d z&l|UVoF4s;ta8cM*a$+KE=+CJDQaG zkAow>8rc+O*`*0aWr~x6)+SVaqV!I^DbO|Xqu$ypDd8vTnEp3D_+Yj{+48y^6$R}a zHLvvBM+0d?4ghCJ;XzWk;yO!HMjoKQFJr#jV@5<1+BAW%DcQ-y5>#JIGBL~O$ddUV_hF|qVeJ7_^+`BVsj z!!=I!_>cEds{Op(`&fMi6bSbH6cdOrD*V|1e)m9=Cxg?}inrtisfk)Ck1awwG)g`u zrk7MV7DWQ7D)t%(4-kT9H;kE?5{)5 z5)>19=d_5$(V;_#?`N%nfS#zDJ>8G4{Z~+&Uy#~_6*DH#Q!`?rcDRx!CzC$l$sxIM zlCX(P1)U&LnC>!-cUgB?d#K>ZGIAYT6M30OsTvFCLIQ0Z0(WRIlu6NO2l(_bE>4iTM(Qc6}gqn%RpprYeRU)Jj4wq(@+VJAi`LZCjG+zkf z>RD>EX=(%lNZqwl-XL5wgr?I-RdS_h1Oj@Zg7*0L$naTAi0>!pT^vYt+B{AgIq$zE z16@vKP*drCIaR{s{Z3Umo`A+Mxlp#frLa@tUP!8)>IT)ciNuGkJ|R*D%0n)Lc3x&g z)bq5%`WeFklf{0Z;_a8b0#fwXbAQ~5eevTR#~YtFp^H(+QGT;O&Y{L61CKKvb#PuZ zC;fFIYifJ-FSjfT`dIwSYs~B>m2yPHmus!Dm^=*kcI^9UxDelZZ&9O{^y`m_Z0)R? zk9*%DeR2ie0;46*#c9$xT*KPX;~8imb>K7GyaRPRb6Kq#RFt01$t{80 z&0wNpIcQ~N5E$1^LZ$GDC61w=nN83sJ_HB9@*P~L-TNJZ)yw89f4<^dhv+eINdVW% zts1xW3Dpv{{!HUqSOs)Tt<{sDytQ@hxE&G%q*~Y?T$QopVGr+ho@3}_@MJuaz`!FY zMhFha*IMD@^}31>eioIZK2tay&L@cQ0+ZQWG$ESfOAaWfDS22O5oFATJ8Bm$UtTLs z^5UtPTQ9>|L}tlhN{?m0T)t26DLH}y=Akd{H4^C3l?isWHZr#;?f5@>HLs2wzmaZ@ zzhr*$S|}QwrgZQ7;_}kbXMg@u)AeoC7xa+luh!ESw>1vphw>mw)T3p#BGh?ZoQlV* zhdyAgshc}@X3L>}{%pL&?>&Ebs}*Scm~y-y+4*jv?F6w7%9a7BsLc8>8#htXgcDOy zs0xOo2IjuyuCGec zuDYh4M7}w`qjlMi0Xd~gUhHy0h@rdIg19OR+K;nh6<`+hWah$xL^%1@9ft+FL{Zq% z&Z#S0n++vTtx~mZQeu#HeJ-EhZIfiIMJPvT#*|6X=sA?{SV0sv3&m1+#WFjrP*-`{ zXnTEB`U5YBHwl;aWX8!o$|`%Ja~;;K#rMcFi#WU74ox@(F10rg5Q`n=#5(Ekb0*Y-}4!ccomEo(1?Mll_|&`>+L3^;A}( zPZS}Fo2rR?mK9V>k%=2X-${Mh(%WyuhlL@wcX21SJAyDC;wnPw7z-3p&XQqIBi+a{w)9b zHa|L#Oikba`;D5{MN3_0e^-4W(>6BbW}n~{(kJ$~pv2uI^}jw&OF`* zp2k(_eBl}j?I%^|IFH+&OUziMYL)7<)AoR(hJl0?D#Mp60GEJzy9vR z50*clUd^(fN};IgT7O^bh2vF-uCOcCcli91A?uXAtUA-sak!;enT5#S8ctjJXogd~75Lo4#};z{}? zrYl<~M-;dtIXR2G^XXpP%OgjWg}5h$IN*F^W@XC~)*HJzVSab=JDL)Li!PCnMbt`3FM_hE$o!!x=~n)* zT6?vwFUboF*%KP#UK#m5&NH>m z!OIP1pA&+g!sqqZSPAv8D&x4N3s&GhCvA-T?SXRMG}AYV;?;%byH}o`X7}KPfT!=Y z=wO_89r7sj!mi5AfXFm8o%P|F8dQk0Qn81pnBex+7sLvdE@XU#i8qaq47)|eIixMi=ZnNSB3JFCMvjM@G@RvVf-4V@ zwb^hKb;?aCwx_C}uNBMN>^<%Z79~7XcAyN@ByEJJu`)|pnXgmV_VtU~cZ$OtB6>^{ zqlVdrsL$lL=xayy-Whrk#K16>pB!d8q!0vcq&nFKOO$CHQpTjEdyIIR3u)iL)Da1l z3bh&|Jm^kPb@zn%j}f(_Or8Yq-kxZ;B!En50$&SnrB&3@Z4@L=7}Q{rgB=14DvSfT z>g!Q%-OHymxKqnwbSZE`-Ef<|@y`uAOd>WOP?y?q5>}vtsId6_tZR)szXf^UiG zjsc`p2!g)K8tZ3h!}x{aDYtFNsXPuW7lZPh5w^Sxln)^Mgv$iJPXgmxx{#|&Sq-{6 zpFr)S=4Nm3XE@b-zArs$JXp(>2Y$ z%$uXDyQ?m13uyx}nzoLmlrtSyOS84@%h&sMETkRcDwmH!R&Aw`I?q7gmlOP#--jTFxfj0!5`-Pcxfi@^p z;Yoq(Jn_SwHtvAk3SjUYJ@p_*{wTzwXy;E=H(T4;!$3DMtb-9)oE*MJ&V{miggQLb z!K)?-HPR?fxJV43O+D)OISL0w0|SnB4xd+bIg?T-9LRjD8$I&XPmI^vQMueRK^?>k z>S)iswj`_M z)G5jSH{4PqMcq61=Jw2rtj;SZX1GMUeo&$|y6u#Or1g0bQ?zQmJu)NAgBZj(>FNRV#)!*ZTp}mEdtx)R zu9+bXTI6Y8uUzck?zjRwmSt)x-Xk@# zmVr3Q#rgc@mm2W<8#j0yb^F=F+8YOTX%~c2Mi(iiTPd2cCT+y`m`27r75~YQ`-NF! zl7f9%dYls)v`7MhhRvuTw!jb|uuI`)klzc(Q9zt(pnrE%y+JDO9Fv`eq_(G#ACtFl zd3U{aCN7Wm*WiQCw&9N%@5cRcrTw!{@6G)XI?J=JeAoQ@S=AyU&{m9+ZF+a4SN7=-8nyYqv0L2zaa z5HbIs2KnO4@YA!SGxVx4V6PNfm^$zIX3FPPCS#Z$9{tnb2KhzM$(O6|SgxL%Sm!46 zK~53~tc@kLsTd{tb|h6aA~~>(FbNxtkE+s7b_^>GL)!XndrSryrVNkB%eM`7xFWz97%- zfW>A6=_Ead<a>Okk+tMP zOVh&gl0>Iye5F&oM-b;-B5f*{ypJ(o0XlS?(&`Oda*ADjkgv6v$l<3*m27PYw4w^0 zni>v8r2L0Da$rI|dr&l@UIQGw+Mo-Nw6mhr1{mCi6;I-*$S%5z^az9YlShm`P zR;;#|J!jkOm6N!R7t3uCqtZw{Qzbx4A_qYF&d#@yYJWu8-_-bUXX&-(pO}Ii!v@>R zQ3~_0>x+ihR;H$@f;m?mVzF8o`vCgAlecG7MxW8^C{E$8*@W#HymC{0sbvin+ZQwU zYx*BMR@As%pE>gHwg?psFXcZg*m8?K0(D}isgi`!^)B})!4;(`V!ZlIhir$>w|CmV zt(K45mcBXo-W8n&{y(R;<}NORMqT`&c;yy}P^bHp{^;3-s3pNup78bl^sF06Pp|B6 z4yc=4Aiqn5(3)@B|5$RweAl%u9r%9tM@2j*LGyIzWj(Hce#R{edH=Bb{5QcTuZ}|h zYTHbmB@eR44f7U}S7v0KTotXDTPH*b8F zb=#0k2VM;|sF=BQ#RVua;tGnfbO0V7Ak@x11%JLpfTypHGHx7-bI zp#8o@t?)!}fYnY^W;XFL-Z30J(#(DO7_Hv#_RZca7v5bhUlL64<%@h?FWNZ4-?Z-| zj%qRI6}SZWkeKQ$4D*(zW%S`T?b9>Sd;@1uV0~M&(n~wWW1(R%`1P#e2f)2sf#Z4b zF-fj;7tCpzNT0TbSBL&uSpRy(Z#qK6{j7OO*LyX*a$xEk4hkYNZKJ!k(^a#=-CqZv zi9mpaZ6Mb;G-B&CH7~zG`#RcwY(1oU>TfZueKEZ7lIy&VFkZl_drIeQ2Hq_(0{aDa zzh}it`sSRXKjx3d=1MF)X~D2_y-vGup_wDDesO(c+o(iO$}F4eW+7M-VuPI(O3Y0k zsOoPhmWCWQLGcm8$F^2IdUB4E)4XD%L|Y77@BZXm`Fu5+@3+`C$C31rzD=*(x^?Rc zQj|ns%c@)?A!H@5q4AFy>k~B#sXTP2O?CKs1%0GP>GZ~5NIn*ACU~h^8-^^?9L<7R zN=VNUr539G2MtQ;G?46X?D<;;Wq7|TW0HquZ*AjER}Jm3ezG?sx1xiZ(Y=mUpPEHS z?h0c0Of4f8)@!srhaK{Rh?qRalyuGO^Ex`Ti3g-V!~@ax9Y>t7NBarj*K=ZtvAAYa zuv(3~A+s&6Z*IJ|xMfS%ptX5xzuDt_QHGm!|M-1MW7Crlk5*}#ui7tG%reHZ#|I?OcTb0Nyki{AGcJRNsNcYkQ$ zHupi}cKCQrps>WEo6TmaITXerNT|Hbewpg=*Wnas=Ih~10-yX_=yFU=YNR10?LT-tF zIz%?SBQL7zfViG}zzLBtloqkD7>9`88KR(D8)P%#b(1`m-Ym_u0&#xowG zhQC?POTCNOW{mLYoOdVq;ZiIKCoTTMWheRxL^)Tagv)dDGEnm59C96AF4M9BgxRyL zEWWgxAu1E5*`p@wviDF3v3tB`c|b8dEyqgN$)msL#(()& z;n!H@KG8aS!kMw|ZC`!mdpjO>#C^m4UE9uSyEy-o8rr*~};*7d^8 za6ABr&3yBrUQ!%IsKzQCZ4<~tbqk|Kd-r}wY8B(Ak$a20Q6bu!R}t*_TwvgmX^W~} zO~oq6=W+kt-cCf@?C-9fIMFq?ZC}BoSO4GMj-NaB`5(`gc0Kr`;YO6K_{PfnZ@;a3 z#aBwW(;vJ;>KbOZ{!+lj3st(c3+;t_Kb76ubp9J>1u#+c4Razkz--NWR$9LPi8kUj zx^`fw%En2PG$E>2ogS-48ZiG0-`b3EAVfPIq@yq(A>5ueM_idwJ1HY%uxSc8B*Aw< z7V^fCx-Kfx*tY)rK+WqYhNWYh%U}M0+B1y`Bk~|jVr`68usSOc7PxdjZ)X8OB`AZ1|)pv+QQa6K5;{PUJKy@CUgzU5cG(JC&-H zAKG1O2a{-P5xOLXQjF{NLPUxxK?6BO&=WAArceAYa-)f8L-n-G#s7ocmM!R*BD`4M zPRZbqZLZIef2C1#u^Dz4c@;O598j6%fHZ)s9A3M$5pq&Su9t?Q4t*5%a@UZNHmVCW zQCKi4(cI2xF5}^F=^<*G0~HYFsB9auJrDTh6b+O5UT;M4t2?$<2`)3}i;O`$ej74( z)feqvQLYKT^c2*~$1YnsSCu?+hlOw5{%>4^SKB9G+t8u(n#Sw|ekkP$iuSC}*%E9jY!d>BFiJlB!JbIMa+8#EUomq{C zaSu`}^8%;(Pwh_A-sqvwByHLuH!VHz@`l>7opq&4p1VKT^6cU7TYj(Dc_X#@WrY_R z#*d{1zr7OQ{UTTS=I!zA`@@UhU6Q}tFclD$-&s6YBBpfznuYS6dsXtz18GREnNK|I zx4Xe-K)uS6BLG^a@()LvRE6Z7=9FhN;aYlzh(&DWwj;<>`{l`qvMDGfNET>UxR(7F zxM>tA0tIacNRyB0|j*83Ackl)sYPdskQRD1*&^dN#-4+no ztNUv32OpTN@$&d?5}8DAl#LT&t=Si9wh`L;if&kl=_z;KrL`t~l*mZ9X3%Fa)MuZiMDagqlhT z%r7ti=TDJ+AW2Q#FfNn|TXhsQ4|5Q;p%&Fx^Z*aAO8+(JyxOlU@Z&eV<}z|2}fY7`){yz47)8jb-*F!;BGN(w)uR( zhO6tSQ#M5TE31-_yq%w8wh1LtY>}8Z?Kon<{jnRo)HG){7^4S2fvM$r#e5rdeXrEIS_f z&iBFfEC!-g;bHH14y>}Z{fDG^AqiY{3`I_0ilF}`Y0!pN?G%7xkG8K!#)?!JSr1Qs za5QmqaZ@vLej_w?Rs$jA<4-tj(q{2Ek7^CDcM8 z8!Yd)5QyumDIXh~jR)0rBB);NuCOAB?KGI69vvw`dwH)RR#sLjLg_F~P@6=dx2fxT z*sSj2piCRm;Taf^sG42&P`0qT6rXk|{C>Ed6iA+G&G+A*2u*&C#8oFS7o(Qw3DD|! zbRf54R9-CGk`hmKV{GoYsv92c5QabBa47A*sw|gIOue7EX+>S;lT58@yS8L1bNKX4 zNGdzzGLe-;^IYDAWIM!?fiVeBkOZ~*!2yP$0L@|7?dqs}+Tgw|9XjmAN$io|uPBdx zR1fLDGIWm zH6o?i#T$lza0RoqyhLOO0%K#5y|^JAO=%qGXf65n_odkB$Q6i;({5)e;)dOmW{KYU zD&$Cip*r0CD68Z+|=_ZoEb U=Hb5<|1FGO?!G*+2;uwx03G0Gt^fc4 diff --git a/client/resources/hardnested_tables/bitflip_1_082_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_082_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..3ebd8d8d5d76b2c33775da43a63da29462ab8925 GIT binary patch literal 48522 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 bH|-^y0>Sy73d{d_o}e^V{9Up8`quvg7Rt0s literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_086_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_086_states.bin.bz2 deleted file mode 100644 index 30d232f69b44a50cda0e6ef35ffd2620b54e94c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2874 zcmaKuTToMp9mZo(5ONA)NIYkn;w2JHat3k^4<#KC#To@t5klZ(hlX6vVLN>SoK7=F zQ7$2noB_#=WQT=Syl}}bN!$nMqL3@(vTk+Osol{nw?<*hEb$Y0)CAJ^Z=qntu>tP=)#W3=}75Tij4LMA4mbP>#F@@j3dz- z^`KWp14zsplpsbI0Vw$+b~1V+kV~ZkZigYmYiJiaN5_emBBBiz5mrEmqanluJ8mDg zG)flTL6o{L9IWUZFV2xFiN1-*vsC;JByD~{54}U@*Bhg%{H1{hf<{}wKENapK~FmQ z-IJIA!MAi9MVe=tq@e?E59Z|YW<87YZCjIKmiDmd^S9lyo-*@N{^s_y=jEFv`0bU2 zZPSMz+n%j99e=!yZ{~jb`2FC;4XOIltyNns5stuv71r|J&}OMj-@Mm-|718Iny`gu zLH80pk|q)sT<8`}M)Alq8KizM>n9d;x!Tn!&AkHkWS^Vx`{V9Q+?#9SC;pJN{LCKH z!*{tU>r#ZYUHC9KGXImpthp_M8m-vzwT+_9qOU)`__Jm(A$=?R;pKyd^@3XBecgqE z!lIU*z&aYN4CZAK@~}T(5#g#V?PXy1CeNgUDpYJ#-Q(}C%%859bp|hygVdG#hL730 zZ~lqI$GJR$YCFgJ zx`JYMRY2RNpO{z-%YzkUOSg#FnPiJT9+F1@w?c{srPm@X(19vCU`~r!?gJ1ja_Ug{ zSU~b&yj_llNOeITjOKwZdwo6p=-c|dqLbzckqCCRm_U(K%;Me)ympzAbxZ&fm(yxL zg#<*mpu73;)}AZH26N2Y&3m=hG(N^aC-HS!+vcO@$7O-Nu~OUz`*Snqb|{b;T4Pp# zl}O+E?#D=P0XCl52Xtdh_q6zLAsL)@Y73l}E(s#@_bdn|ikK%#ac3FbTy=Nz#Q1&_ z3ohe2i@pR1Azl3b{N`}vgO#q(HaR3s0g*C~>-I)+unU6lggXe2r^`a(J(_*)V=n;0 z3iIzmM1aO6PiJiK0#y1(o?m6=ICvfo-UiAZ!>qV)j@?_V$7O`KFAf z)U3`R3b*kfDds?s`g(#eB>=)Q*y#ft^+Nva(<$-MfMSQ7Q*4Hc$B>80xcsnMUOXfON%rs%WtvEV@dEi+#S$;^Yr*%ed`1C&GJ8zu37Ipm?+Ev@?wPt zLT?&0#><9uvS&DCbf1%a)EeVcr*zNHk8NCjb#O*w+*(lzR0D^g+7W_i_3;3HBoV?@ zkkVtYBt6ZlJM4YORMCA2bU~vPl`lGxTsnC0%d}8Q_{@yx##_D}!BrWG>iwF|GXGO5n;hx{Cezex)tJxR(j*dgAR4kuZ+!+;PN8PShIw*#b1A)x zb8Ub=FB+h6F6$dk^%m?}Y9-Vy7tdbY(^Po{9aORME7wO>HTE95jX$d~JQ>PbjO2FE z`k3#|2aF-BP$)}ewQ)2i9o3`lV1PaVl0@D2Nv8Y7YQy`e%cWZTE(wgmV|MK0;(=CO697QkUnG)wT2PUmX`;Q zK}4568dO_SiL;069*mB^6{a-*;b2%uZBaXiynT9|7Hsp^wA9M7^lAIzx2ux$TEbF| z0ocv83eaVCS1L&h=yVv4lGR6XM~SkcEuG+WRmDuOtpXk6=;sDF7M(#qrUS@$Pm1$4 zeAwu|4eJ{rDPo{<$Y4nal?M}lTD|Ey9Mx zfYjbEtxii0q$Nu7Lz(odxSMy>T@|+Rj=HEvFqae_c1b#=?B5U!R!S3OAWIdbw9?Av z0t_}NvZL~l#fHwg38hnEX%E6T{k|*%>gKxmI&}Y?IyjCdI%9E;~mGm_^{tG%m+v9Sr(<^ z7MkV9zgVOtce*U4jSaEdnk04}1ie;jBz5=YsC3|Ee3EDoFOrz-v?d`5G4gF8`p3k`GHv5xw!0XaPWgP zb1)U?uId+oN=2)0uV(?1he3a>-cbTym){7WqeDqu3rm5XglvvgISJRm&m}<~Lqghu zcsQif(Zg=ij)q;W{pzM6vUmy~j>lsQ=CxVwNRfV>UU+DVmw46(U~a68W83*5_yOx# zW#&$GzGDccjIN#Os8Uxg7l1fOfDzE`aKKVF6#|E79Mh3te)eHyfnR5xU;{J$u8qS6}@~U0j>;(Iyee!bbaci1v;JC$COBg zoJMt?eq7XOcCEk&e_f(JAD`-0hr?d~T0VkjN-~pue`yj31&EA0aO~^rp_Tey-}0lf z^c&JovKhO>^Apv=eX9KdJttzi+Wjf$m}4%rd1h0H)`8T9$txdz7s^;DKE<8*)5?DU D7&Z6h diff --git a/client/resources/hardnested_tables/bitflip_1_086_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_086_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..56a80b7e39d455387a506988f8016e372c344dce GIT binary patch literal 28568 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 diff --git a/client/resources/hardnested_tables/bitflip_1_088_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_088_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..1dde249a5df18eaa9631a9914a536b26fb52b25f GIT binary patch literal 26100 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_08a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_08a_states.bin.bz2 deleted file mode 100644 index b708bd851f5a361fb3c55758049634652d5ef935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4415 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 Kt?J#w?f+kzimiMA diff --git a/client/resources/hardnested_tables/bitflip_1_08a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_08a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..2a3ee14937a5e508de15e0fc69ad559cb37f0f4c GIT binary patch literal 38962 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 H^XL69b7QA% literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_08e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_08e_states.bin.bz2 deleted file mode 100644 index 79c5eec835299b6f639828cc891fcf7dc186bb0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1569 zcmV++2HyEXT4*^jL0KkKS&_YsJpeUz|Np_+ftx8i0iV#BfDs89z#F;ML7gy_P#+~2 z5D)=V%9!8_e*gdg00000000002Lnws&}e9AWM~FJ8X5yl82|thG&D3aGy@Q-#6ptZFR)*AT&6iHWy-$smqV3O#dgUxC>QByMylA*zy?lmFp*o=GvOZOQgR0?ORGzBtRu^jY&I5&$1~Vy^c?n)* zP7)Zs^YR$7;QU5Qsfw_>iwVGCF^auY0gsUXCkv1+rYnJi7^1}LP6PPNaA2-XRxnP5 zfyp^5fI6R@_S~J0rv@;_63WIdPg7-&vn(~XJHtyA8cgFjIs_4mj&&UgN9j5 zS!H7@GGoMw_YXqoat@{(7#&!{9g2r*7-#V~Cl0F&87v+H(>ZXtACTyooeoRnUJLXK zq0v6l$?+lH?sDPLaCe4Wu)eXu+RV;Q)$uRXJC}cB?Jf_Ua^du@_a!t6k1=?4v9TIuMW0b({7`=nIxh{#&z|6*C!vlh(bphHa%1m9s zh9)q$NOCIbJj`&hhn-GS$WDg{%gUeD{mbKe=incS;yc&Ao(qM^k?@S1k2yTy;}~A3 z!;}~qPOk-KSj^}SgASzXT#s~h916wA>cbWs3gB`ua6^TaS!X8-I+F#^O1E<0SFA$*5|JQb5K5S>rf=s#Nf>A~2$hp?Vy!togL9mA2z`A);{Ld&YV*NCx)-+u=M?H=1b0pNZW z!8(soGCB@N;AIX<$e!Bn9I16Kf!IA`wb6P*mDP1Cfb2uezH!v#$=W;--oNqrne~_Q z4@mDLxbH4cNct1zPa*ERhjH9^#pOqs@H(fcWbi-0o|^F|kn+Bv@SaDVkDJHK=4W|4 zhCzp%a2zYrR!&OgdW!1cxmh@LaJr6^a5}Qb4>_F&Me~^aukm=Evh7|EP1>CYLFi8s z=wbI=9JW~Pc+Ll7E`gV0qn2k3$I9gLI=C~d8P(C+<$ag@9qOqsqZK|y0xLw4pNB%E zF4VzPBk5ENCKbVOMM5%as#3ASlr32WD=bpO5SdvhjI5|zl%(BBKOfZ?0$*9b+h|Ij)6~LxgWrG?FnHCwDF{K%mWXdwsjAUfgrew1S z*#=ny7_$_{GZ1BlVJyj3G8vUJu*)i}%EKmPGbpPWGYn#8C0UkcWtcMsOko+3W(HwW T%##cl|M7PuQ-ui$8`#s(+fm=B diff --git a/client/resources/hardnested_tables/bitflip_1_08e_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_08e_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8cbee39dfb6bbd8506004b029d611dfc5f5ddcb6 GIT binary patch literal 17232 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_092_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_092_states.bin.bz2 deleted file mode 100644 index 917b8cc2f2aa99f9d5c773b442269cb003fda5d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3608 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 diff --git a/client/resources/hardnested_tables/bitflip_1_092_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_092_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..bf6423f2f37fec3ec8c16a4079d7f82beabb0503 GIT binary patch literal 35067 zcmeI53v^V~xq$bXIWw6|X7&z{zz`rAg+K}fqCA4~8m(5A0#e^vw9^(ar9@F_eW0>^ zpj1JvdRw)%rdM0NR=rsjdjYME>#BYDqAvBS)f&CErmfht)uM*F@AsdXgaA>|YVW

    )Ce$gVD}W_K3~R+Y1~-=M~Jb>)?xQ4^Uo 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 diff --git a/client/resources/hardnested_tables/bitflip_1_096_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_096_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ac2ec4cd59fb2b9affe51964e6cc467e50a27696 GIT binary patch literal 19614 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 Sk|f-^%ttxG^9ut6hF~X3yXGI3MSn zIdcmCbmR~49*j|eMeqVO5npRMj^7r(Q>)(|KYcRdk6^^c_@cMJArccKwy(3@TY@_} zBK{AefA5^;o8sl-h=`36kiJ0K@RFDx|6W8yj9mN{if%gE3G&xvjQGw^VNU$WCJDIC zO#J_qZO%yB$9NyjTFHMIIl4S_cA?}tKdtq({MUx>4TTKxKLqr#!D+kwJXo&EKT7&X z0N=gZ6UniM_tYtJOWcUpUv7O;(R~Ef9FvAkq>WB=L_)aVZug};rFP!iDW8_e9ce)~ zRL_}b_peISv@V({U%(AV+6VT4=L1}hO>1fe@Z|~WlR-QO|>90sy{MWQvbKA<3{f`E`an-yv^>vM@aFaMn`9Yjl62DrleWpKiqfoe& z_Ap1G>&t2bS5yICxT9kD)(zMp@8~o%t)Vyet~8unmU(_|=B{S{UGkf6+YE7R!>XO= z_md!z{qpmHI|bqJrCZ32%+u1P;m6w|N1qdjm$e_oaYponzN2R|)*P{mCK=+)8ps|E3T@7x1HpDy(P9c^EE zGa5d(?@~~BVp#3E^}eUKomPhO<_^a1--S-3hF#h<#{wKE|YUG%U zi`pLb#U-<7o*hqX>6s08PJP=(oxYZrNBzq&);(^XW|dc)Qf$6o_2YZq3&>b^A`hgF zk5n!~V<2>{(JTZK=4>R1&B{F6tRb83%riPmogM|)IfO(Fq@M17vK=a0jNb19uvQb{ zGN(Kq?Yol;KmY9Y<-uq(YUWtS&DE$GOB$MXo$)4L3hFoDPA;k!gDLqrA3%K zuy0;-B&0DcmmfRy#j9^+V?54_ zE2`Ywf_>p3@aK=Y*T4sZQ$r06A0CRn8nz&k7nXv+v!RA%YKajwq9!Ym;`!Gv$vq567pvw?m3qGna#m zUsAbbX@bC&yCkn#RiNx3>ESdHsHgfl zb-=}wNF6O5V2a&XmJ;fMNDRbb6$#)u=}d1@Ql*=fgpqCxGu1%=Y!o@|0I^<(oj}K{ zQP5=&yG%O9eqW-JfiW-?>!QI19nF|!tkOGeTIsaZ2jH__rw=^;WdIkEv1Td2-%(%9 zN3EofGl{r!09!rUPZ-Q#J%+k5(2a_4zxl*S9W;)+V=yLMBvogXsVX(wBH4~i&|Lvx z5~G0WEzjt08WAstn+GS>2jemp-TnS!D&9<^>A0arX)Y@1cQ7CdDW0uMtji)eUV=ue zgHdHkC;2hrQ>(tBHxzlcj#Q9l2qfHGKh8tkg0ygF_Ri#it!dQ>6NnPD;~;FH{yC<* zD=CL&P#8YHBV9>9Bf->)g(w;-UaWa&6EChBkTb*hi0teRg7fn*mO*|_gv^2 z*(i1?Azoa<60BnZCAkgFE;WuGXAxvA$V1#o=n|yMfjE9&_QtM%pDFwG z5wkpeutZrow!3ZW^u?^@gcG+a3!NF1g&uuduQd{8j-ZtcXxG@xiAvLjY1mNe(i@~4 z7^ai~c5+;~xz{)b?3xi!JX#8W2g6I9tI3N(ff|&ap!T!|N~HMFFM1J$z?Zg(4;* J@^Z%Xe*q-8`6>Va diff --git a/client/resources/hardnested_tables/bitflip_1_09a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_09a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0377fddff88c0a463bd3f47952acd8061a5c3098 GIT binary patch literal 28859 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0a0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0a0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..1feeb89e271c920f518817aed454e10d83cc6eec GIT binary patch literal 17302 zcmeHOO=uNY6h1SV_jpN@cM1tKKBNwf7`u=vmLdr9z=c1UR-2ve;(-y9X#9z_sXxe| zqBhGeN*6+0xRKJX1Zkl#be&}v#g$O{>rY}y7iq1>@7z1SH%(HLXI8;8iceq_DHJ(bh^c3GY70dr;+WoJ3clqexWN&vXNtCRjR+6y z!MVr`?*7D7M#u6GQ%U4!rY@0Ft}DGd#%|bYJpLvpm0qS|!gr~H<7TGS@{p-pckS9( z{$yJ3POv-edXghd35oKO7xqTK*#)B#TLEw!fxXtNs4}{;qbOfrv8;^14uJ^{Y zbB4$hPNN}c_aNsG*Z%`fFCD;*F*v0M{lBBi9CS}TMyErZvKGR zJQ@KodO0qPa8iIsp*pn&MaIzd(DUpH%!zDT+(MH;BU;WljgkVSD?*w?pI&&o!ZfLO zM)`WQ4jAZ%nmd?2)N5nVac$=H6M5+d=XqV^5Yv5qNVoG$Kl(ETzXBh3fq1{+Zl;by z{Vk9BRlQ96KLYC4adoK5X+;BTADY6!VdmfrjprcOe#kWnt9|W5N49a&hHF6zr^n7G z=hXa&G>ttsHgE?2%dcLOzZNlOt9R_b0C5FlrR4;N(#|EpS%-NPj4uhQdvZ|Stx(;_ z^zN_|wMnQBEFY?;V8z&5^gC#a4zI$<<3}^7evx@l(+<3fh($7!d(OU%Y|S;KZ?W-98m^b-iRUL;{F0OIiO*#y37SK1E;jb7-lH?iCK!ho$(pKt zr;q<8y=(blh2#ep4n{CUj9@g+g^gfn9eug~p%}q%9HH?y$OwkiXE2Oly!83O2!_pI zyf7Cwf?)*12!;`i|6L+6f?)&$Q)aeAg2hCe!LS(&S1R&5TVu^zV}bKYERxw02@GR1 z7!DnC-oY?}VFbenhP{LFqOS|t42I2M7{PFr)d+?W413AbVIaS=mptty&t<%iYy`sy zh7k-S7`8-WUy#(CduB@{b1gFGw=I!m2C*3oX9!y&!B>p-nQA>t p7{M@tVFaTd4)acoV9Ybge=iup$n3Eq2*$m=PFlit?ZB7cKLv<0;PU_g literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0a2_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0a2_states.bin.bz2 deleted file mode 100644 index 8aa9c25424b23905035281b997996390c11fdba6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7248 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0a2_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0a2_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0150dbd78e71d2576f1388e78a98061cd4c28ce2 GIT binary patch literal 41970 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 O)ujoyIa)g=R{jTN+*{26 diff --git a/client/resources/hardnested_tables/bitflip_1_0a6_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0a6_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b120016e21be975fbe9b69faa53bd6ef539fbc5e GIT binary patch literal 23007 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 WzVT>QbnV;3rjqxoy5IbGhW9^y`RADc diff --git a/client/resources/hardnested_tables/bitflip_1_0a8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0a8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..592af17d4163684fcbc25bf007aa6f7e47396bc8 GIT binary patch literal 30841 zcmeI5e~?^NmB-KPU(-E#-FK3VNv9J`2SXCDCleq@WM|8#f&@u4kgNubWuq|(F+#`> zNCt%Kni>Tut8}fE(khuMU2E43_{V0c1evwVDu0w{$sf9_DAr&JDCQRu6awb@IrnwX zOi0AAn_Xe+cGXNzzkcuDbIe|iw*6k2E+`Z@O^)li{4#~iX6F1;S zs(f-HGEJ^%3^*C+l~q-~JQPb*m)?N|@@8=(jYMW2N~Dsj%j9YzlMfZ8U&M-YZu^@@ z8Y8YKQ6iajGH0Yw#PqDbqx*N2XRY`o$(A8RxdQo4X{c z>=jd$ESH^onu`mJ&A0*X*!db)kItyprD(P3-9{>|t56kxNn)CA7>S3vB!beCN%Uj( z=3*M>Id7sTQ3ysWj2lXaiw;G#m8p-R!R<1R&K(Fd+C(ZH(ll+aFjU@g$zl@Q^D~()m zoqpG4iZX@X`jvPiOZfi3bZE{UPHAw*w54l2ZQ8=tsj{>b73HlWPF4#X=u>Ge96;Rg zWn}6=RU}dw#t42Ok=|5luN50X<28(*P9^&zlT7QIEk%J(c`jsP$XNx43cN3_BoTzY z$5_+H5c!dEIVW)oIrYp#BygL4 zr)kV{&d!AxS0M{XXl!jGee}ulPd1eAY5Pyaipt_En zdT9xSZ1?RI^~oQ$r2|}QGmI@m`T_vdcw&N}ottLtj7NRf9c1iDak0_U;M`zOwIEWH zQcH66>}22_RU|KGPM2gpa)UprbknNSRO6s@M``cc985$7a}}?j@1XheM9s0n(9z5- z#@@nTk%0cIjlH(c@Il#@Pnp)Oss(e63=cwvm{FNYMw})5&zsh3(Hf9HD!t>dDLeNG#!Dk(`m}={KSo>c25XF@_dabD%|RaeMgFkpCPQ0`ECxQS%57y zSX*FZw$sju?}&H>*!Py8C_gfCKO)Kl<+r_yzu`jl9E5>gMvtN4*GhRu(O*yN7`N3x zp&LRleX8MrWX&#E1dlhUd8u^s48+6`qoeese~iCXesfUYMcO9g^#j>?&cHyU5LYF( zg*d@@3r~ElH2SUV!MV{ebQSWGl04m93UlFQ8{ykaiI|*VDWdzKb+|nGU|fF?7y{$m zMU|%dEYu@ab~Q;E_cye?!pNf-)eOQp@?J>1)ySwrI(dfWjl^AEQh6gsAA#XF`A=T; zf1z>%4xYaI>H2K+``ps*t8y9X+P04Frd9B?t#x=w3^1U^eMz5b)yhzH1%2{B<_hk+ zjQ1NL4Rd@Y$m^NK7@_Gpu$twkxoOOPZl<^AjP34>5=DyDZZRtCP4t@-67F~Yidwa^ z=Z~Z4>&Bjkke2L(*1Bm$=kk7S$r%l6+XhZ3ffGyMd`IJ-0=XE@ zuJ0)akOB@3WyQ4U3udJlf`uz_gi^Z*zi#ZbUL#8f)f3q16}<|Qu%y+?O)_)7Net*( zgJ!MPHg@MnlBclZ6W9oi0y{)Hv+-l(>;8If(7`2DXP37irzFX}YZ9Hr;Dh9ag zx!Q)tW@DFaf<6BPF77j}x6d`L3|MZ$3>b&bMRODm7t+QWBj14anZri*Tm^HvrR8qJ ze(^=?fEPZRbw6gj0tisyEy{!a_&sjO5CISg*`f+qhjgWBtzC;SZzNp6c*q44!-Z`~ zmGPe8oTVe^8yoM9sTi+MrKpZ(n8u!?KhXMlxI4t%aDKCqWsQduj)3mN4iTX^pVxCU=dC!{{hB*ynnB0Q2zJQhbEEu@0r{qK5*$o*+i|#}W zdzF%-o>v%b&ni9@94Kik!Zy9>DI@o}-$F3vu{sa9(6#q@{k+q9hfy>}_|Osi5y++c zQNU6FEET{qj`ADwi>`c0r&gTc)TS>4Ybi|-{hsx3rR~(3D4aUAEqseSP`#5mwcM!k zDSr~bhGyn-`F51qKR`hF2B;iD(x>F*Tt9f24{?kflhJsX(ZlHmM($?}eZZMY)6n%d zVZl=s0{@~AG=W~5y#e%|JsuSJAY0;}Vy9?e0DYKf2T@Orx7E)uO5|a?v8~$cEs%Q+ zB7-kSQw{;92Q#_R@6qj5rQsU+N}5DOXjQ|=3kTze9CXZtj`PfF$#nhXa=2E`H?!Q3 zE1`CT7Lv;nd&7q5da+Dif`^hUWaa4PxX@MUdIqp#tGk|nnx{Rj=z1GL7`eCi(aJqo zAoa?$p)q=bH*Lr0AZq_M*l`x<8jHUxhD$wg>#rJ-%L@Q*+?@~RK9QM(rblUv zid&CUo_Tp7`HS1gwaS_Q=8FKaj)zbQV?5`nje(sAdGSyhha|ADwX6(3(a9#*Q`h!b zYW38zE_DuJ02=&oTM#=dR(Ke-?0yFqkyBO!gF%40lm<2uxYPj1Ml9AETEZ8gPOHh( zZ1zLmjcL@%lO6qb>c)otT-39pH2Tr(!6X_6OqqO4#+B%3{;kxwgm{8rjBA(B;4(nA zocA_(OQW~P_1nSjGGL-{&zCWSX9K&72;dcv%e@Lfe5BEa4|!JO<8CD;Pct}+RZ`bxW4EEEbvjI`5}I4U@paX^%0)Ld-tII<+F@^%VIBY zI2AQi-hQ&g*w2tpsYTI@MgDOWEKO~8@;RJA_M^a@-X~_fevl{2R@7r1m+&?oLb%W~ zJ`b`BzBN5N(sbX>V2H%h9SrPIxjEPI%Y#OK`8s1C#cnC$2TOZ*oN`i|^uLvXl}+o1 z-RJ-@#78vZxX{SGLu0c+!(4$Ew-GJaZ-~I9~Y4m*Cr3K}ZJOm9iCaoQa*=?#P( zE;n=WuvVA~uxcg3yOejln+9v8HJ33N9mTPh&5${cFVYzB-%aa|vxrUlm{H)?c3S?J ziQ?a9m-duNofgS!c(NSV30pOmCUUn^2=>U`ee|vq*;H)oRDut354)BSu}D-O5mrTC z;cpF;0cqif4;`e}3HSydQ1Yjp7|dBR0XsQ}YeY;`b zZrHa=Rg^WE?RB!Omivnf3d^jdBdpO^*tZ+@?VkK}im-2Ye3^0Bx2r34S$rGz?W)lX z`*t}%BkbEf*~0&@ZBI(p^rv$u1mI z#p2R{!2>O zw;T5DhJCx?Oy>4KXbJmv!0y+c$7qbTVl%6@h6}lN2EZp+_BCT)+)eK@i9^SqxC`X>)EXZAz08Ar%CL zRu@PX7Z9ClTE+zw#1aH6o6X8fTkf)D+Iza65AS=NAFof>as1EgI?rD$jU9=Mp+bq& zyT{FM=7*wwX59K*x_r6I*5wj!m-Hhp63>j~F5jwr+24r2HXm`Rby-$xVs#PfW71vH zmtzy_*Sfg4q^GB^^Y%_>Grt|5U#xc9>cUP;5AwppPHo@nve?tzZ=opIFa0+Nn{7KW z>~>@cAk0k;LDNz5&M$}q%v17&Ai)u~%UIvyHW>&fU*LD%Wl30SQle^>8|H9vnRni$ zwLU!^&yN;weS?m^pi+)|e_gCD|C+5@oN)bim`%@lQDj#=G{wF`Py(7-5pJY*g)(HJ zfqUCzY$JOlBam3WHvU7~8;*d{G}QuU+T~Cg&4-4`XaQLBtrAXfvw_ZZ=85`f(l(kx z1t=_(feRa1Y8{=cH>uXQ!(ZO~d?2m|?YKVs&#%8m{=qPdHL2nQmu99OHK-a89$$Z) zKBag}t5h94o}5+oE_?%^SQs!Z{571)Ivz1y^80Sv9Za4ehr9Qgrp&ooZHR+)Q3Mqs zeylcJi@#Z%0*1&a{Vkbz5|@WPM6!wT%)a_TWeN<}sN?2%uMdJ-R1{M(lUY$!lj62?UysvwsN~PKJ;8Vfmi#H&XZ{Jkk zlz=7uju#nmAGD?B#?|Q1xXjW|zaLC`6H-4w(kh%D0uH{L3>KIKT80m<%_wX%)hP-v zrwa2ir?zs)puwHaBuO=4AP$K9JlrCRKt`yY*-X^1OszTv*ELdk$Z%Jcj2sRMr#2#6 zN97!gH4la*iLzOifdnhPcaAW;PA$5QZm6T5l}U> zMypNsV)40qeqjVEDKyFdAMAJh?~b*ZgZCz1_?-ztahNPFPZ;3N=b}_XJf-b0J?mjz z7;fPXAir!Lsb9MyFD03|Q}Q%0H-2p&0M=mfOIsUSNx15yReJ!5gu%fcKPKJRXGd@y z8sFL_c3a|OIZ6@7iZev(0R#?*U^nKBeMp%pQ*~6&u8EicKkd+8e)gxL`DP*gU>ePO z@x|0*8U4*j)XVCD%?l2NrnH06Xop0+dp3kIN9SQFgO>#DAiv?aubhJS`=+ z$@8!p;c|db6SUWa^zETu9 z=qtIWZNY?%Cpv7rI&q4G4C~d8SsV<1n^F_Ybz?GnL@iPKvvr78%LSE)2loJ;qFA*; zvQ#3(t#9+#)<|;}q`09OAc0b8P-z`K?CxZWUAV-j+C00;OES%N%+_S`FFe}n4gT&! zkoaReAx!6Dqb3U)5h)85OmjVo$^H!k7qk;tO>8@rCK|M97DC;jA!H(O40ygj$pA)i z8R^DWU4U1hp9ovqY;U#meM*~Q>#LIA4+IU9_!z8;>~Cg=4yKp7hAh^^qYyFn?|9v$ z6u3m_&qDGBKysFlw$r4m@NTpLRlGD)O@FDF%Gq4Zi%4bLool>eb~>muwj&pb7WW-w z0E&H{a$fqLVbza}@7j=kb4x{A&L~)Gze<%ATJ`zeOF(;PCanj%N}*R$VwB6^>^`aB zV7up0%WAPLGKV|xKbrSDR$d>uv%5bG1w|_As(9CyWt~Kthy1M!P+v7(2#>gdl$Kqg ztXZE@^=dEa9ch`TsvYPlrR58J+N&gJx{jq{L*OCqs_&9J^_wMAC22jX61cW;fD~dc z*@R{!CgxI z(0VrN0S11e?}Ra|5d!PC82K`?hz(K(mf6CzM4So_0i?RmbzYnexzIXI`F0gofoNcv z>)#jEFX9(;a|Sw$imh z&eZP=s$qcIkn9X>K13YsS>lo2N9W@81?%G=It+j_9c1=hyuQ!x#XNo!KSLxqZ(yD*}6gFxBNJ`n+9p|V>z+l*ugl9!2NL)_~4#M^cvrp13zgaM|g0? z`0dL~eCB)i%Dr*7(w_~#({Cx9>r4y!$47QHvt)>WfR@I68Szqe@5QDoEfdYo>fEqH zOZA56+oQSeCpnwUZ`$}}_3q>(V5T>{3UWRdR`*cy`TAdTi%9Pr*tU7^PppyS;ZPy1 z0@sXh9+PmJj!BV~^`u&P@QyWsB5l1nX?m@3Pla1~ejQz=9WUb0@@SUq75iI`3YWSM z@&`ErE~yC@0I2GxlYyGx?4*dq!ItXaw6>jHERZFOet|d9?NwJ5U26uQbrp?Hjz5QH zqhExJW^cJR^B;s~P^d-ZaR8oMFs~{HhaP1WVA@nRgm+X}9&~O5--^vEHgjd=4p<+pC5F zLXTEAP2j@r01P{Y) zk=% z$Z7(OE@8PtGM!0cj|I3MOiR{Ga&aQ0TniK9J)V>B0vmhT&D8g&8@_A_&F%R2lcBy` zYz07})DE8f3%?rWRDZG-;fHSB8o7ICjp{$Mb6JjL$BDxiZa%$`u*)h>3$7hBrY*aj zygBww^5Zm1U?E3txA7Q6F9yV59~Blr$I;`UZ{kI=Xg_i|1|>jRq=PCrCx}^jLuu$yfjxA<3W^vKGizkCK_&gXxVHq%t)GB4bsj zK#+VEzmQW6t&|#i^t^VGGz1)MxNTL!C?+HkPDWDMU@;ACrcHX0-4&vOd7UZ}X5DaV zq8%K3WMLNJI1vpvlqDCjA-L0JjZ3Jj_E_HBo z%vLW~Z?rdmMZkQs*Yf1?Sc1ebx*bEHyQ>m^BYnVYPue09Of&phKyY@-g5ZZmux?Ug zK4vFs@cZQ#)1Vjz3Ke!^8xkoI;to^b+r#SOfMI- zuX}6XZ^|2`%$hpmNR%!}K5H37cY~al6MgbufBbP1X*1luI~gC*_P&-0t+nH@D8;?z z$G))_*p?ivG_Qb2Zdh*IZNYHWT_&~{SwyYhSQGPcblKnUJrrs2d&QDx+zUNo?Y7Q& zuU5Rt$!ZdnsG>Uw`>S5X%vnZL+j{t?lUk!3ls>IoA^g6uNX*gagLxmSRsUiknA7(c zo5U9?-BB$9X*HZZus{}07|oLwBoA6k?pNLajwtSHb_~#{S&=2oxo94lMtia6*vsfw z=IMJS#$B~9A8=1Z^&FQA!TI!lP?wcu8E=F zhcKt`Y|CWYBZv@EGy5m=#Y17*n$hcLPk*_o`LOB0uBU6yB}@_H$dLCJvV{-^q(@BV z-oa^e*MsbjBTSgAU*2}CCa00X&o1DQ0`=8fzx+~@(Bk)f0df$x9K~C1w8~BdvW^|& z^*}{tCPk^>V?0Ru!XnZ&`bVF-QmY0G(KFsE)y%=aKYT3+iT~1e_}f1*$jG|(@6&H)t6e+Ev2>y)x=_QZzhP9Gj@?!JI|@#e~r)T(Z9FS19+x>9nV z24}y*&=|oleR8Xai?20~f7WV?S0z-jc3L_E{I9fFP8TG-Wls=j8{EBwOXJagiv3Ns zF&534g)`m+>A8$oS%1}kT=vVoQ2t<9tA5rVhaZnguU~%5K3HpG4-s~;>Q3#-`q-SQ znhE%@nwCIA9_IuiBf;H46?pg>LZ zxDY3XZ993nIcIg|mjvU=l9f;HZbJ$>`7?dRGXvjKX5V#OzS~uacC5!3%V*#B6mv#bg*guM^xUtxy}5mB zIL|y@;1rH6H(WlOvtnt%bu0t{pDgeO2ZGeUftR0?lOU>$T19!qYlZ*ux9RGZj}pTC z7w+C!zpvOlg^nY_q}V!!k6RTN6KhmggH$OC0rm8HmK&Thw$qMDQZw`FsauX>v#fI@ zblouviJpg9-c?ynK0#3gI^4~Riq~%Pj5m`Gy3#c)iiPs_GO+zUXz9367H`B=WeyffoTpGD1aGugY-4(%n340gF7_MC;zc zRGZLbIRb7|R%HCVvV$^!SBVkvxs}NgSjv)OR;w)m-0L*_8Yj)iTOIdL?x|>(A9GVc z`0zSTVCd0hss))+S6U*ADo3-HE~QBZ6?@1rwfoDZB0Z=&6GYb2U<-UOF=44Iv;twC z$cSM8k6|zcDU0p63=Oq)EN-p*2%RiS32e@o4JKE{K^3k|DW48zCj3EmN2Yp8-CH;? z13jk>>sS@Ch-T0-KyY~#i-|AWdM6GYaA;7v_5g`!AWd0Nf$44Ib_ z^ePZj|DayDZrjz&rn5nfhhTNH622Il>Zt+=SU{JVrqu+slb9HNB>KU+tE*PFUfsYR zUt#E&pH)5=;}BPfg*iyjW0X!9a^q})dgOA%Pn9Lw9GV6Yb=jsp_sQtWl%?+4{$=d8 ztJCB2@!U5rwr-v05}TPmFV@CAa@$7kN)Fs=k0aZAxi~|z zhQ@YrS+KPgI}Zl2^G24qB8%!8A+_^)N80BL{n?{>2q2)a3A=b<{1KCUi3^Gi5TcRj zJRut5!W;ub*mU*)gpGDFpGTp`25m=)q!p>(#LC6Ri%y4EI6dtF~2@Yh2S`wsfuH(GiosC?S9^Q2Ub2i7a)cd3m+pSsxFXk5LV4u$C} zo@W`A;ZZr<5tI$H1j#1Y)DV=_dZ&_>%vB2Taz^k`4mzWi+H2=?PBgg}8EkU4*Zq{} zM_)GmpDEpY|HmJvpX+A+Yf6XqP2KWc!l8}%%Q*o)G~9~!|DThR zDSA{R0v+&A;+8W$sj;Q$Q_JqTW~)iBQHu8och$4|P<$^Cjor z01DFmuUGW(s!XOc;6dugZ7_x0zYO({ja$(+{m)a8jl^G2J$ zI|mv+*vc+IWBJTMYAU#h8N#%3(Yp3t+jc50F^JVXcC5L#d4v>Bo2YDWM;oY~{66%#{mL_$(qs=SA@x5Fik0xIQYuoSYL<9sfHE<;ezKILF*mlx>J0PvPSCu?FhHxr*q@IhV4Z_cY{{T>{B4IrPwR;g`#p0a*_gI5x& zCq@NnX{)1&mp9U3_w*!Avz&Ql8S22fpl<#F(u^?gTwt-}*1z6iayPI_dHZStg>xwL z^xV5E(VKVRS%>2rJzrnvZ5EWBkORL@o;d@u_K|H%9-D9cgkX(5 zM3dJJt*q&JaW(7n^y`mTHZS}9W#8S;vi%QU6;Ivm(b`aV34_(C8#e~eg*a~(#r%t!A3y8un$jC7DC|)}WJT_En8hY*1Mzs01PFI$} z0DHLR00oDqfqJ!VKJt!Ka*BylRt`UC&m1Q#q2cp~`rFV6CnYSfiYLb@1!#eMPe?!k z0!Z&>tgr|iM&dWGp>GtV+_Q)QZjec%MD64?%G3Cy1_T*o6VRKAw&$1orRvS)g(BPZ z%dDWsFL^6fFX}?x)+Gfiwt(udC)IMbJ_sLC95f(v5GF&h05V9JCevJ<*^W}eaRRSQ zVf8Ozm zK4Ti3W@-!-u=J-kZC>~I@nb+&qluE+tJ<8Kn#Avu&_BdZ0~6`IOuNl@FTlNcW z0so5roY&KfSMtNXz^jw5WgW{UVbyph1E9gRxKV&iRxh+AmBd0MGlzC&!$7GE(oqeL zoR)MO7mQB@=UqWrJuaLFa>r^ira=1qBcLu#Qd) zK0w0z@QL=kw4-C=G~?9M87p_ZNe)zZdh50&zH0mFL8*R=b5quUqtuwcOFcc=Sw9|q zE_%JW`oIs7ij%!1(ro*cG)>5TAthwMOM{o);dC3?)7T}ywfrv8^}WZ;)x^%|`ftVa28*(5=db7)ADt z3U6Yq)hly6Pw#A@<~OM}2=lv1a;s#+g86%BV9;eR*G4T;i2$>E1TpGtH~w$-teEN$ z0*Z`elPfZ4vE4+sz&aI{1MzBOPi%*1NE*;^+RVp{axOhvDY{9fb{R-@Ktz!?vwY)^ zM*+T*9Yic{0iap0)&`%qiJWNM@=LM#&1H%Tf?Y~R&?HeZr7BN(!s5{!I~V+1A|t6` z{cJ7YQIX>H+p-n8-m*j|%%W{bzqY7!xkZX))_n*_pGL0cf0L^`Ii$lGg(=9##`DP= z|9D>Vy)2e`EqSyWzT>Z<(l5`WmwkT|c7PZAxION9*3Y7u%;$D4M~6JwuJSeuW0T;F{9d7m%($DVJ9!pT}+XG0-_9hfD4;;7Tn>s_4*lCr>(T#GO+ zu`!TO!IR-itlr|>^DKZrY~BO6atco@A=m*shiyGYkS}{rsy$+WBoe27OAwFDMXNqO zIs81~)7P4z*EhbLF7tYg%&RZJk9B;Gh#pA|{e6U0kaccz!@n$7pIkrGdH_oiog4f3 zCBu2=AIPS#JbuX+Ea|PUap|!yDBfr|4V@RL$9NXNlM!rk3cQY)0;L%2g$QhKH@q8* z(9&QEDT?WZ8^wha37ZJ7?KIu?brVU_K>3ndN70GKDp9_)nt6)iq;*mGQl^!dhs3i$ z6aVKWVlw;$r-cQ?%dPx7#QfggNvI7(ZY|FfC8E}zn1mNW#WWqp02v$)p#l%g*Td|Z z1wL$LT8U8F4La z-P=hS2TQ8KW~-KNT8*UT$oKCX0(I!7Y|aAbnWa3;$)Svjz{d_@*oKf{)Bc2|8zM}| zk~bYWhP;}bE2}}X=dUEc-b1C~8q?NSqxXd)%L^F1W8J)URh&YK+&Y4%P767p;Ud^W z_0v1wdq3RWlhULM2Qb3MNy?7mo~1oLkMcweuNN__;Kw>74TGltkZ0<-0PitsOA*05 z52`F>H2k!7_{!^jKRthbXw~X0bag5QeP%=>IQ{-&(b8G3BbhBPs$RQv1FD>auwF75wSc|1L8$3Xce&x5GZ z?Sb+X1xPGQMcWbGDL&X#YHYmxNwxZS3(Y*#2v*&yTWnm}*Ft!RcXU%&a=R`(`cVjR zWF!^Y&WcnDbef!%{d50ZE&d^8@7cM$j0o$6fWVfJhAI5Uz)F>HPlbF$G<%nE%;ylDDKnXM+*xu zg>dJ`;)0b5Q+Ue2T*oT%hNnM5E`_5k*UshUye~a${krLT^~yHS z7IhO8LF5 zpHTQQ!?ojkPqk+Up~(%H3{pIe%2AAfvp+376Z ze;$TnM2FP+X}zgOlR*qRl{`uHrksvBBhcQB`dL&JR9bu8l78$H%L1q-K|Bbmohmh+ z|9Sr_I8d3tVfDqsZ}Z8amE!D6yM_ji%PzzEZV{!Kmw#ON0OC%I}3!9}i1YF>kNUG+NIAeh8g7wIkwl8S_7! zst=o;e?}gLT-Cq(qen0*yL5qZQdb%s{r>c4#H*2WKWmLcCXr4Qr zQd7gLjkKR@?yvc?(>zIf0^Sh#kzf5Jcy}eACKY5F{8UNoxOC1E&rk)H94{mVs*(;Z zf^B)WR^4e&JXW(PR`Dgw;}f?rL#m)OYJWq-k2wH6fsH3n!Kjd+RwUYfyHds|@bY)N z_8~b9Ygg>lxYmK>I6vCjF?@Z`){elX>de#p^~0WFOPzR9q1>kFK5_9LWu)>3k$)V! zij+mH3P}#L2hMqjI#-a>vtzFXhZ3@?AY17~Z}H#d4n#(3OnH|7UViEl3`f;Y1h7*m z!3zLWh9v|;kD-h1VHeb<37+5H1 z&HZ>$bYMxcCW$U*BlX@k(XT5aU59^@+b4R|oFk60J`qxl8ne>7>{PYZ24o`*!xU}1 zVX&YzQ01y7uyQP9&fcxE;E3lLklBE3!%JtCqDJE4!7g28UIMLZCX<68ZHhhnK(S`M zZ)T@hi)`)M-`eTnXb4`p@(lM?;K^pEQkFCQbh_i-%ug}1wucDBhDb4H%a;ug_`93d K4*Z>V`F{ZjJA%6a diff --git a/client/resources/hardnested_tables/bitflip_1_0aa_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0aa_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..21b477241bc893d63de9b52f3e079eee560ab3b0 GIT binary patch literal 48574 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0ae_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0ae_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ab5ece8cbd5d9ea0ef3d1345403e641463f1d427 GIT binary patch literal 27316 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0b6_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0b6_states.bin.bz2 deleted file mode 100644 index 34fd067ec122fd5cfed8dd889b55754c1a5cd948..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1541 zcmV+g2KxCzT4*^jL0KkKS;ZEfwg3PGfBn^2gO~xHiyFe4fPes)09XJS;D7)LD1ZnU z1Uv4D;0u2M0DS-e000000000Sz?hm0CQO+!FqkHqWMW_lU^#&?G#E^oGGt*eO*F{F zz!1Q50%B+|nKER^!eE+dk%@pIfaV0m&|xxU$&rM?G}9v!07C$jsh}D(85uOt10Wgz z8Z-a^q@;y3)XHptjWT4Oqtj8EPf?~#3{OIBN2&M^;gljy_*AdzrBec*f{>V%?io~J zFhkV1%)^EjUsC-FTu}I)N`7SgXGT5qIDSTFA0s$3-(Yd@9fwKK`3IrW^fQJdxsQzS zcRZbs3&?OjM@|mxXZ?)hKIO+5aP^(brTfmu1I=Q}$(CNFmlGKIN1#*Y3)XS#RpC8P z-1*LqNrPASHpBVX`w;X2+7~tW2 z$E@rh2*b13aeMkUcuzQ>3;?8FXFr&58nPs_nzr`-{8wI`WG4PGo(-TJ>!SY zUgCdc^*H*UobY4j3>duK8G)X+sN&L&PS6^u{l`%KRc2i#!14(jk-*O_)*Ct{3o zGL~dx3D~;^S#&y3@?kK^@h9mLs%20Y?kQxcWh{(~0R5s&t{8Y!c``k0UT40U94p{g zne0bJcN5e9NzB3ra#ly^c1mdrKJF9`kg_ttQjJ$>;C(1aPaa>sL z7qm>ShorpKSiFPM@M9)%*&*0hg)mrR$%4a!!nzdcGL+)Jk&(pnUqbiS=TA}k*U)+s z-dDUwntmmIBZ_du#K?CsJxPh}KZ^Qa$n2hi!u`T|tLb~J_>T$kD~Q7@ioIyRJMVs{ z`#9<9CEX@hw86y0KI7E`)deNWi#@J~T^8F4spXBKd0=o95BVi)%jFrSeYDPmR8QpH$bne)DLILAk%;Xbx@ zF*7b1c3C@<1G6(bGqUM%bYkeshfXZ9#&F8B9Uadh(Kxy|osq?yG2GyBl*Gk2?6|uJ zXAaD=Vc2Cm851XhoKbNy$&&II;$pJADTRrN#LBoZa4Rn9jw6F4;bk63UBt+~_vvHo zGP4gN;<%F*E*x=>uT!r?mLHL3FtdG6VRuH(~F}gOQ%86I!npfaI&YR zRI*MM7-ZpGPAtYISteHjWVkZR6B8w1##}~Kk;Rrr7-KA~Ws#E%usuh(yv$rCcswh> zOjm;8ipEUN#p`;F^ep*GP4sh%OK1w$(e>b4#FLg6yX%?ld`aO zNjn8m*+&&{sl$tkrNZKqi87UnQI(Z(Qw4#+ICF}Q3Y?)k7{h@$%0?1hI3tl$D%6U} zFdSSi6>cj?<1CSJoMeX=7X^k6IF1Tf#8|}^SyaiDD-4zyDvYpB99#j05yi&@xG<%{ r!7#$CFqp!t7>vPYM+O1I6>*hugBVO;mKX(x|BJaIoG3_Qi%(ksu|MG7 diff --git a/client/resources/hardnested_tables/bitflip_1_0b6_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0b6_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..5f3d72c5e5a21e4dbcfa2d1aa76513eabb4eb4fd GIT binary patch literal 16732 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 LgzL!Wc_05bPHV4% literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0b8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0b8_states.bin.bz2 deleted file mode 100644 index f638e4e1bc1b2cff3d02a10b5594d2fc107d141b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1630 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 R$})Z)fS2NR!es|8_+LHOHwpj% literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0be_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0be_states.bin.bz2 deleted file mode 100644 index 91e544e4c3ff6c63ff616062f8a7d8c18a0622d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1951 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0c0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0c0_states.bin.bz2 deleted file mode 100644 index 87d8693df1453a2c5d4ad7917b0252b1228fc130..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu?@T4*^jL0KkKSrY>VjQ{`uTtU$Q5C8xGkN_1x06+)`zybU@P@w<-2mk;k zr9=UsDJdzFBhkJj5>Nb)Njk|DRCP%wVM!)ZNveQVsU*@sNzy?i=P4xAl4?mcNhYL| zAQ>g1StYbfB(W@#(pX7s2^F$SB(g-Ox^<-DnKVkB0KpQ#d8(4)N-ki1q_mG*lO{}> znocUN$udsKJgO_oOo?_0IFJuX1e4l9B*_Gm`5=;FK_tLQ&calH;wqIAxss_Rpou|= zP?da1l9Dha#F52-;GMdSn562J%$Y$aOhyZ{900e*lssKPn01fVxP#_ur zAQ}J@QmAOjpeZR+Pf&iN+7PO_B%KK)$t2Q%jFMQ8DS3z_w32d3G?HYJX(YfcNs?(M zq|#)WOrWKtu_RoLEVS8Bygcr81o<;wte>sdNqKl46xfFcj!efMlvwBZ^fd$V5XFN>%MlqN4(srbSp&3SyrH+>uTc JBn46Y{s4xXro{jN diff --git a/client/resources/hardnested_tables/bitflip_1_0c0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0c0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..2d542516abf581ab8171fcecf5bd40d17d1bd607 GIT binary patch literal 15231 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 z%0D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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0c8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0c8_states.bin.bz2 deleted file mode 100644 index 6548e5270c3e85ef190a45a504ea181390f5e11a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3523 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 bD@lyuL0m06^8X&Z%xjw&6{b(ky!ZbA%ZmH1 diff --git a/client/resources/hardnested_tables/bitflip_1_0ca_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0ca_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a9f7fd04544fbf4736fd9f5f122428deadfe581b GIT binary patch literal 47118 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 bTNq-Tr~gr|=DqGHnX{&ff9L$>isSw-$iq75 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0ce_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0ce_states.bin.bz2 deleted file mode 100644 index 26fc3dcd4eb5a2050245bb37d385960bb2675764..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1663 zcmZ9M{ZAYB0f!+?O-xP<*BI_9ry0U_V*8Zd9ltP^WJ?GxFE{hzm)=#7*?0H#+WzEZ zEN|omFgRdNEyge0ZJ;JGpad+{b|=lvgl79}#|BqvT2<;MGzHR4bV4*uTdiS*+$`$I7DJRs3B{0*ho4wGvVHomY#xtd>>O-|iBvB116{c()%`Jc?B30DM>co< zGkcJ`|1p2Q=gm@=HQM2@Y`s7I+>UmBZ22CIW#-0#kA*0dw&sS12U{vSt01KZ76^5f zCJEP8h!;P6_tAp+A3wj-C;v=(cHA?5;kEBPsaSrn)TR2T(9HflvGGmQvtRsas^M>) zhVO7dF#N5qi4*C;QEA?BS>cW>*an(AZ=Kq{b0BEe);;M-HTlfbJ8tFnn6`P}q22Ky zrGNdK{i)6*j9MU(#&XjP*;(^+X?bMUPynY5OApc?0VB8Wl<4X^1_>Ht&~bcluX>gNTz69qKq*YwumzJ6Act z{aMFCtk%OXkKRjPwv!(ne`jFZf*>3Uw!yr5GJL;mE}4R;QmT zqO)dwwwQBDwM1`{vv?~vLY_}pUDL$CVjInDjBoH_JDlinJ4s6W*@cyg<=7722(Kt4 z#vJgB@rhVGjGNJmch&AEX9l9j?n~Rhd3^L<`ugxTeEs&( zPrpBZDVk7I+@oi%fzw}npcq_R2sCV7Gj4vMy%gC!^?W=N4V&5z73NgI!t=F%Gucv< z#KSZu(l}ET83uq+08A8Gqy*rEoC1M|_>JDBrTMk*iA_d0pn4#|VjWdl!>wVFi@ z85*9H5!Rf~uIJ+1!h}wXlVgrFzci`u@fE4K{bh$E4MJfwk);xhBM*@-QbZGLIs$kx zD%|R_W2HP?^pcAPm{^j~uqxcEGwxZWGDXviAF&@$V6jBq45>k4u{G4>?+JTI8Fc)ysMT57Na4}w;+wUKSVH8+{GFs1aQT` zeq#*?O2`zG$Gs{Z0KjpKq!npV^caWuJL)#jP6P}Yv^8v9Rk@pzJkEPi0qDp4f;$VD zYx)@4D!od_X)o+T{F6xNw43qku&eQ^lgU}!r6Xf!=V7lt z8BM&!ypVJxQlI0^HTdYG$sx1)NTnUx%PN~TTD%Zdr|zr7u6=u6V;Pf|%lcE*{{tf` B!W{qr diff --git a/client/resources/hardnested_tables/bitflip_1_0ce_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0ce_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..45d798574bd6734165ab8bc87e5b3f03af4e98fe GIT binary patch literal 21442 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

    ;GQH1uwn zKB3PBxisDrFR>q|vT}6{{i^yl?7_MXQVeiW_!&G8VC#orPEwg z+NGvC9A1caN#ltK02hNB!_HLP>aL7d1B_~U`&AS1Za9|-7s2-_$U{-DVR4aLyDZLIPh*ToPuKkBY>}raX%gF;8K! znPZ34I_`^M-kFi(4w(r0`j=}jjk$GU%q$hEZU%dw`9SRErAC%GQBk$PJ;Iu z=M=(r7|4(}ZqLZAggB=8hpEVf;~0HhUXKiBJC5NP%kKp0W$OH5} zxt-h2{<~47^eaEXX{74Qn@7&(6=Du_-rqNp8~_!HMbl!}W7u~z@;V)XYOgBlqHNFgxzhE>>2y%kVB|LJ zF=>}S#dL}aU%Rd_$~rX!sKg=i(5oyLB{>ZrlUu4rWIhtYA2l8cJsNVQax=~$(MmO- z5mok(XqK?p1{htqq7qxa@0dg4TF4^{`O{jo{S7z+Sr@Xm=B$32S@=SWSDvD~{dLyq9FT6Dp_M}aj%tIPyn1|y8F@LzH zIijpT-UJ3gPqqPEu|S3)^_r*88_*n?ix8)=r0_qSi;t;9O4tozizre`b^%O@ISyh= z{IdCUs7Kp3s}c8sAyo;=QyZd-q=8{}AB7O~sCB{|6cOEJ{1k}@kw>O$d{*TXQL9JE z^P^4pwaF2iRh3vnrMM8;Vtlw}V|S={8zVnQPIAbp>}7&qAil|~v18Eh8`~ z2}77VfoT8$5nxiL&ZrDLRDr(%6a6HNg{lF*UmJ%Ym3(lbf6BmEvG%=X)byk%(i$$OOQNn#aX-L(It;Ad34F+7a(~YO4&{Q$}*fg ziPT%4*n9e&gXG?HuD>$hT=AqiGLZ3~yC?nGtcn*kvYg26P9irP_Cgao%HaeCTF{^r zv|=*}X{zERi@g(*cu7LTs}|rTKTcVdc(D8)zO6TM>M^*W{h?*mJ$cD+ANm{1(m6>m zATIl}ahCZ`Ki8cCg)~sjz)frEp72Ivs=AKjOgJ?v0TLBOY3uzaxN|h1w2`25)((m9 z784GE&fE&l^%|qiaW60OgxejgoZ9@=53|yUoFW=j(Rb9tB@^)gn9&)TJZ2GTUSd?QH(_-s97#? zTUe*v3BEpv4zSr^Ld|l&(ZR*r$zut*{NQ*q(Pk&~_Gvy_Ti1!IT$d73ZhwH-^;YJ* z#mJUE4JP?$%8IOMGon(myD&mij}i3V!BjIe`R$Lym(Moxh91;{UWTyzF$f`lkmZl; zRHzGAzg(DA2PwsYSbB@b!v6f7V(4cHv54~HUdkASowK4c-jX;2+h~HLw79Sn!>Orl zLU{jwpeZDRsGkbq@U;thno7whN;W65E>Mk<&6zdlabY#N(iD?xI^(jB3_+F$ z0HNWr0&!GX0Q1#km`A6*j#ORLl4&>L>fkhxLoVewH{sT(X}2a4^ch4?p?Cx82tw+~-jCxT04|%xOqia1@d(E!(=vt3@ALQIhquR9| zX_)Ix(XId6k3+iFV^lNeeg*f`Blk=1;eHa=dUUNv*LrkMJyv>*wHw!ZbWc6Hrye7X za8Etf8irlIyQd!AQ;*S|y6&k*_tc|%>M?3?eGae8aZf$ESLRfo&vCEJAxv?v%=sK& znd4fIuJ!0zkM5~Q_tayhyXKyHROLcdCavQd7j?2 z9tU1@=3cn!UbxB|4crS?d7;A|?nj7w3$FF(T92;v80ms*J;o;CLw>u~qia37)*~<2 z;x$|Dg{$s`tNI2x*LrMp|E&WlaR04?8l(Gf9r~8NFWGSD+Ex*_oWU1{kz`x_&$ zfL};_cH<_DVoec*kT8;3!{`W;>7BZrhimiy_*tZ={-~V~WE@Fj^euyJ2KWWGPc^TJDLWrvC!9J&C0t`w zxe-~|{#w&*-*T*f7SXIV2UGW-e8`_vs{?Q5&X1{8PSulpC(jg*89>?~rv$e2!4`l1 z>5Bc_CO5yM_je0Z>bcg;Ypm?p(q3y~itf{@BjkA*D_a$xfCA5qzi2?doNRr56Te)# zGx}bG8<87YtC12J!*-*{YuM6V%4`(eZ*+yXiolasR~K_6*pf+1(V#4fRDXwrr)!uA zd$+({3;w5L!qS(-ZT^z|F)>}Wg&@@p(}kx+mNs?PptnC=F66 zN?Yt*3b{+-p~D*zY4w-Oys7j{!M^XBwHmVwW8&_ZYqPr`fu;e!1=;L9=l)w`5HUj$ zEIxbrDFIzxYr;qLGgE&pJ9Y;+Dzi?l96u`#Dh9xV!x(J9azQlV4YQjeU4EQ#Py>Ut z4?Xx0OVXGw93jVhd>fvn%0yazrb67f?x9neKkhX??__>tPGxy#{{A)JvFt!oiiB|k zK7t7mJD-{gig)Q?%%1(R^#}BH;K1&?8hEM}PfUNSc-+-|Y)>6635W56>1SVe{GIus z?kHMpJ!qWqjgDP^IWdNAA$!eGZ`wijNyC6!JQ3@G3%U$$r> zO6vVFB=`w209}qmYy?Jfe!my_wr^jjESdKPWyqhe#=-3)5wXD( zJ)J#8OJFnHAwFPe9Q8bzGsgzetMfXz3PJ9bET2!B1h*Q-CjbRXM7%OKqOJbE=@8fZ z923~`7b-1w?RL+2s*V)nI7ZXk%G0nTk2aGwqgl%U4-U*)^j4Te)5cq2BK4^<9EHuY z+7St6gD%D(^ilQI$beZfDlKV26Wi$7wzjFXpAe!Dne)?rj!yeBlq^ta zXbJVEt?2az-x9arcZu0Y9nm^Ju8!~tlDc>SV+$@htjPh8n`M&_J~So*3%*dQ7rdV! zE(PTnKS~e+4C5fd*hqq#gU&pvVKYp9CO1XGb0(bhqJU)3B({9OavHv@xAY6!7c>&_ zFN~#&lUic%u44l$85ydgs2X+gNw?G~$F8qfjX6KKqsmRTo+~Ydl5TPPLiVS_Or)rT zVbZ&k->iw~U_CDksu5^_=VBg7Tif~FnHW9KmC0x>{~n2~Dkt2Hr)_(zZ>5R+#tQxi DWJ`(3 diff --git a/client/resources/hardnested_tables/bitflip_1_178_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_178_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..05128e5d52f1e6d83ab6810594ec956025fd23fc GIT binary patch literal 23792 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 m$h(vR)(%+P?`v4$(zWwx1uKqXBm!m-d literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_180_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_180_states.bin.bz2 deleted file mode 100644 index 87d8693df1453a2c5d4ad7917b0252b1228fc130..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu?@T4*^jL0KkKSrY>VjQ{`uTtU$Q5C8xGkN_1x06+)`zybU@P@w<-2mk;k zr9=UsDJdzFBhkJj5>Nb)Njk|DRCP%wVM!)ZNveQVsU*@sNzy?i=P4xAl4?mcNhYL| zAQ>g1StYbfB(W@#(pX7s2^F$SB(g-Ox^<-DnKVkB0KpQ#d8(4)N-ki1q_mG*lO{}> znocUN$udsKJgO_oOo?_0IFJuX1e4l9B*_Gm`5=;FK_tLQ&calH;wqIAxss_Rpou|= zP?da1l9Dha#F52-;GMdSn562J%$Y$aOhyZ{900e*lssKPn01fVxP#_ur zAQ}J@QmAOjpeZR+Pf&iN+7PO_B%KK)$t2Q%jFMQ8DS3z_w32d3G?HYJX(YfcNs?(M zq|#)WOrWKtu_RoLEVS8Bygcr81o<;wte>sdNqKl46xfFcj!efMlvwBZ^fd$V5XFN>%MlqN4(srbSp&3SyrH+>uTc JBn46Y{s4xXro{jN diff --git a/client/resources/hardnested_tables/bitflip_1_180_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_180_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..2d542516abf581ab8171fcecf5bd40d17d1bd607 GIT binary patch literal 15231 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 Pe=!ioTN;0Rz%2P+De^o? diff --git a/client/resources/hardnested_tables/bitflip_1_188_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_188_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..01dacce880823f2ab841c5c8cc195577f0c52153 GIT binary patch literal 31274 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_191_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_191_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_191_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_191_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_198_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_198_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..1b64ec6b54b42048dfe9aac557a931d14b067eb9 GIT binary patch literal 25258 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 diff --git a/client/resources/hardnested_tables/bitflip_1_199_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_199_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_19d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_19d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_19f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_19f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1a0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1a0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..18008b8bb157da4af25f77192cbcee0bd41f5db6 GIT binary patch literal 18953 zcmeHP-D@0G6hAvort7-9M`*yfq;^Rn+1AFk4;3FOju13S8@2crid{6-CQaJ3CB{?> zgGfc+^vTD7BEbhAq^1TH<`3{8^htb*P$ZPvE)qh~((CWsJGQdt0&9It6JQUzyoo!@PM4rnRB3KOQe)u#k2-bQKCW^6 z;c0)Ei{pOVW7VeLbHaet zS#x-oqfEE6FOZ%FF)MiTe4VAuWnz!%7yJI@MwYYan!14ZVGNJM??$HJcRM*8+nFZii$=xyVM69A$EDuJ zg1^L6#M8In8QVZ0fB>Kn6$BJY>p{WHJ`5zPdR!GCzN(2&IySTP$%ecjI(QspCmt{) z9}JIx0$La^{;9M6XzgWq9Td<#Q3>}zPf zea%Cht=JcadcnOF2dOtW><6ThKn0r)YFT}&_bF~!yxn%ZG-6z~H5X9e9Ma14PI>`8ztxE;-i+m@0(5Ge^z0_`na zU36Nzz%&4-zaKT9x+hm1khd5>!7{=|Om9U1#nE^&7S$ojTPN)RqQTPUhYAgrG+5GL zsm0F)4VD1i`nA{m*PaGT#@y>;S%al@*(ME^G_xdmFwHF8k(1QS(%ti`npu)BOHGYG zAgOT;mNZz}#MGPyOByU`uq4yJ8Z2#KGFpQr4VEAQorc?ZC5=wQiObYBorcqzC9PS~ znk9r=TC-#;FoB53R^GpAPivO6=GZ4kx0BnR%gs;x153m=MgRZ+ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1a8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1a8_states.bin.bz2 deleted file mode 100644 index 034c96abd830555113bf0df7fc5f848cf7fbae90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3543 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 HJNN$pIaCu7 diff --git a/client/resources/hardnested_tables/bitflip_1_1a8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1a8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..483e921ffcf196e93f917ffc780610520cb23ea1 GIT binary patch literal 25815 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1b3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1b3_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_1b3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1b3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1b5_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1b5_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1b7_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1b7_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 zcmeHNZ-`V?6hE^wvu(Nij+(BME<1~m3F*3uyR3vYLB@i+>k=VSX+jo4xGJHTS@Vc2 z`;ZI$F%b-j+#*yqvr<3Ad=N8A*^dPUeX#$v?pmu-=IM9tdo%Oi{+StbGJ<MV`$LbdlJ^aZJLK30%$+Sx%axs}cMeWHnMf9fvHS-t^o0I9j z=>6P9@npI!HkT>3m)!|yl`Wj2UIyg{Ox622qZAZ9!VT2O6g>d8k%LTCBD?rf%`B$L zn@s7XcIjbC{KYgy`N({3avY|}FHDt{+S<(hRp608+uL9zw`t`7lOvm%W}|jXwySn; zX1Zw|Q~kY=t%GTy)`|SYl)_&>y9>Z-hV12uWo4$@xg#FXh?J0{!XTe$nIcj@=5;$1Jus)i}>q-(g#Lz%r}cX z$J8aVK}QZG=s)GN$G|Em(q}rwTBa3V(fnRwas$P1b|up!k=;yd!}TalHCn>3x~3SS zdlZFML~?U^0!B0dV^ULV3DQCUM_QoGb0V_~O%$D8U}{8vUF0#gIXRu`g?8<_?} z1lx)X9wN>a_Nw}?aGOlU6!xLIwU9z{-HK=WFo`@BwDe8BR4{ilG_3?MMgR>~$W@*9 z7wlsicV;aVYn3&~U@wJ!Ewv6gTA zn%!y}oqmWLJ8P`?dk--#V#|Mv>~b@Yoq)dWoQgXN1dF+f>d|x$x5XBtpToN&H9*Wc zScB*iQ~>Sbosi;S4u+<)YXA{wQYnYD3A6@}-tl2=5-Mt>#^8(F6ojKQobhexd|@mC zb2l*G@v{lDrTTNb1C%f2`)*^}rs(R)2SZJb&neJy3)6hlO;J3YM()-*;bxTJFdh*3 zi0L@I$uw<-<*dRV?D=C<86RQvrEQvE4iRaDW%V*W;#H0L3%h7V10~Zoz?1I|*RAD#O`TT8`B zH5i_NcF${?k_Y{ROlxujHXG~*o5Qe5pz28s@|EAZklkr2LD&M0fnv`I{3Kpus#ARh zR_6*+O%2+-s!uWc1+(=A0F;g{|MN`WDPoUu2)R*nqUAGjra3y*fYoefdI*Yw{|2+w zAcfEIX6o-eISVmX+ils$AIDeDg9i)FLX-_yQ`rHxQ41C=v-#k5XQf) zf#b+19TlkXoC6Gh-&7p6E^`}UGW$fZCBjxxfJeCLO(0~8T7B>Jw|ZEJIq?AF8NizH zB*UJ0F)ZU&16sruvSW&HGro^k8O z>4!7x`EDO_#=#uyn~0uqMjY$LVOVlCK(GVE8;jTiloiyY$RC(f0F8(8A%;r__~>y5 zj&Yq2*Z{y?SgBf6t>N8jeTXo;lcFDCII<*}&Q!uatASFf2;6D(EfZ$AxiAAr0S{1l zC%f^Lz>TNPF?y#C0RT$?{yiv}kCPeTrBczZ5?;7M4~ccF_*AsnSOmOoH6(C8=gegA zihd0zEsrT=Lq?tBiYzD9;aqTuNvAKZ$jb^D%M5^fX92_=%W)2XWYv(UQEtWLKpx*; zvfnog8j3;^;p)RQw^l6jY8Oce7Wa|N{d5=9omD%cy%mal<9S{ zwia|nnLbn}b70IFuSUpw^SFL9m0K5jpOVIK2?EpUs+<2FaL{Jgx$1%?kOc2 z8Lm%%fg91pD`OpdiiF^&p{B%{avuH>qTDA~jHTSvJ_UJPO}FESg*XLq;XjU3p4IsN ze-NkOeZf6;5K7Izf_M>1CL5vP`p~?A^w~F%Y{-d=Mf(Oq+7JBp=vWErZ3lBaNVvHeV3Tkv>aO`Q{r%%3*pXB@9 z|M7`Ebn`K%|Co1A-?HYy>DMnFS*F87V@ADEqtzJ4r>8rhn}zCBK08~g5{LK(y-(kIyPqF;u8{~i=v15A?eb} z@hB#i%g?LE=guUSep=*a{utm2Y9C%@Xh3@n*$r{wH{3RV!Lx;bxa&dh>`K>K)moGG z>_solfTm{U8nM!&)9D}mY8yLQJomf$uy^U{j+WKBZR+Yi&&(ZupMK3z)gsWMiOUF$ zUtB0U$;5r1Jlpu_W#gYKu2*gKZ-&$eN=r7H|4CMvPh-p3#a&LN#o)HHM`ZG z?tJxay}Q9;5Y*OXm?oSA<@165vg3u`rDUkK)zBs5_8iSjhWu8@qzo%PB*&y`?)Q+T z1sjfSD_&^SEmzBDDns309bLzkYLy#9GJQbhRJIo(d6;HIOqew1&Xl~j@O8<`;~jHP z%rA>?ENqnge6h9V++QWyrE`hI;;R06Q|AjldpDFI)IpTl(A=s3(-4cbN2!XvMc>Pv z0279v6kCi+5cObyNrBl4UmpP#RxC#Ys1r!}?X1Aa{&K5wLr_55P`WEKh|^*@LQ@@B zOvrSYM@j9#5Pih$@@QPSbS>3>%bGH0XAzL5Z3Aq;W&oE;^4bH{FKuhYQRqh<{}d*+ zl%|YOW_>&5X(mvlvXBu1wOk}ib>;~l9cd$c6kaQ&5tj@YhVj}oLFhyrqz+>yK-{BG z2dE>#OmzE9kN`JL9Au&>X_Q7CFynOEGqjT!B`rEr96~lq#~C(I6I2vpwoJq^0py)H zSzf$*k?5gkr3G9Anu_P^E_#*2*!odt`< zxQWnhZK9~X&^a^FW8>>gyx{IOUvv2UCLcwj9SGVYT4yBY!$l{iz^TGiA%WnIsKfn1 zXwlsci76@VF%0F>4mzA;%xWyCP(hqVh!k2A-C2O$ma;)z@tevoTil)B{r7tR0;qTN AKL7v# diff --git a/client/resources/hardnested_tables/bitflip_1_1b8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1b8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..77cf4f142cc85110fde93fec0c80f6cdcaeecde1 GIT binary patch literal 21459 zcmeHPeT-Dq6+dt0&FnDDzO%wE49o7$WXs1!wn%AF(qf&UQvQ&Y*2NM6aia*^R_aFq zE!pbr7g4gJqJgcNbeqPuNlU{Y2E~s$8k05=6%#{h{1_A43^5f+YYeH#>F?Y(A3M9V zESs>2P44?+-@NjQ$u#G7qveyqN*+dyx;-!KPeK|c-Anzy} z@AqM|0{JVLyoEuIxIYqM^3mlqlytC($dwr4&iD-CEO~LG?SIDU{Fcv|;y+;%>t$;Gt`^8%rSmLPT3!gJ zBTXQzu~YxFqxK-1)->+;-6rygRunnKCc2&}CUQ3#{fDUwg?gPtzqoxntR}-uIa@CB zNv4pcHB58Cn6xx40^AgFuO_Vzu?NiEw05#V-;bF&tp z?#h5-+(U76*lVZ0{A;KRf*JFr%|Q<_HMN3`7&5Li&HFl&mjd!|`&QT)`uj0h+6F?D zLwDM$C~N?iZeSDlnPyzAoH|{algKWnR$F0SfET|-3k(p^xyQ9u3av#>RGA{X@n!*2 z76UY6wze-@Kdp_rwK}HTilMrm!ZUg+b4_2#5XxT;8EcjpwV_T zN&%8FOc;azO+Xu9C~OA}5itlN0wDRTfLRfPs_YDXa|A~R!H!>|w{?)vvfvN}Cm>RE z1N~8a${l5-7+;ZMv0xg3g_2$xrtioZHce?1eFO76UO~gpfi6YE@k}x2t+6vhhZkY6 zp3&k13LuxIiZ)dFDbs>&$zv*ug;3PSOp&~m5a(Y{RiGF#AG*S-E8xEB z47guW77QE#FH4$YpeX=A{4nHzn(>|rbIPh>HA2VvK}irj5JVZ;I)!4TiPkD#51=*_ z0jQy7AP`E4D+<m3fKiQ@Rjw~`9D-U8HI~bnZs|qS=hViUKJYyHky@Zz>kd@y zU{2Ds%`G$$FUcgB77OMDv5j**VNFBp3Z{_F{~iH3ZL$Y6gZ@6~JirEWs|sA(Bh>k! z_8`BH%|i;h%e3aQ*V@hW z=%=^`Ovir2l&?|?*^i{K%4I7=*;%0oXiQX1MstnH0B|mcG=YE`dqEAcOfgH*$rz0# zRin}U4rqf1j)17Qw^}7M{^Q!?t5B*l6}xDn1J*cK>|)9NLZB<4P$iQBW+Q^w3o;)c zVO2D!IE}8`Ld)_Zg!E6Q|H6W6kkTQEv#{5FaTtbDtN|C9Q^ROtEu$t z2ry125BY57wFKrWaH|_+!!lO=2Fz^(ABy@+Sy;guAmlc;O#%bPt72f)SjS-~&9qwJ zCyNGSebUFUm0K%H0kfY{HPhJ6UhoQO z*`%fR`UP|jdJ2a@-^Z)gHB1}z#a(bD$`UXNY*WWp(LxQ1tP2Nxcip50?{ui)^*jeG z*oJqMI+(=Xsu$=@u-OC~`#e0vfrFtTDfK7A zVrJ8bU}fc(N~}b+nM^|kru|UB2?CW7ZVIC8!kpS_tTJQ)>j>?v2zYdiiKue>{Lpxu zGs4VWay86B3+G<(VNqaT%2DQ@2TN;~j>4%3MAgpbp6$?|DGWF@z|75tF|P?aF9jO5 zFuevi11m1>RKUT|tA}=Rr!vD{uo*7yEHfj#e?j8Tx0(J0U-02X#xb6cBbW)Yh*VN< zAUv5m6Up>2LN@}J&dW58UVs}K$Q1Hk#J4G(FM@g8!Den7%;P2S6L9hu-b~(Di7ZA! z3@&cQ0{F~-Xy(SuY_01j>nsqz0{3qhh>JjU_k8pKY#@trUMs}eOncxW?t@>wcA5It z%aX^CORx*3`wz3ZriaZA#29DcX+2b&c-^#G=ky|*4xP(b|DPDo|D)CIlUj9+)kS@S)l5-L#xIQM*mS z?cH>HHx(Cd@1}mydKPBF?cH>HH?5@{`^W9wbbB|;hcevWO}BSbzt6b6n{MwWwt`OP zu+aF+_bqPkCca>}GehpoP`^fB|5s;*Tz1oCH){{~xxJfXmrx?B+}=&QiPW7;cPG=4 zpm!(Jt&wmi)5V=kKgULWWM|#U^il5AolJKp)7{B*b|=%_$#fhlSL297zV2kYJDG0J xSi1j+8)J09U$x9aG={{fYbZZ7}; literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1b9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1b9_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_1b9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1b9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1bd_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1bd_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1c1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1c1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1c3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1c3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1c9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1c9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1cd_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1cd_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 zcmeHNZ-`V?6hE^wvu(Nij+(BME<1~m3F*3uyR3vYLB@i+>k=VSX+jo4xGJHTS@Vc2 z`;ZI$F%b-j+#*yqvr<3Ad=N8A*^dPUeX#$v?pmu-=IM9tdo%Oi{+StbGJ<MV`$LbdlJ^aZJLK30%$+Sx%axs}cMeWHnMf9fvHS-t^o0I9j z=>6P9@npI!HkT>3m)!|yl`Wj2UIyg{Ox622qZAZ9!VT2O6g>d8k%LTCBD?rf%`B$L zn@s7XcIjbC{KYgy`N({3avY|}FHDt{+S<(hRp608+uL9zw`t`7lOvm%W}|jXwySn; zX1Zw|Q~kY=t%GTy)`|SYl)_&>y9>Z-hV12uWo4$@xg#FXh?J0{!XTe$nIcj@=5;$1Jus)i}>q-(g#Lz%r}cX z$J8aVK}QZG=s)GN$G|Em(q}rwTBa3V(fnRwas$P1b|up!k=;yd!}TalHCn>3x~3SS zdlZFML~?U^0!B0dV^ULV3DQCUM_QoGb0V_~O%$D8U}{8vUF0#gIXRu`g?8<_?} z1lx)X9wN>a_Nw}?aGOlU6!xLIwU9z{-HK=WFo`@BwDe8BR4{ilG_3?MMgR>~$W@*9 z7wlsicV;aVYn3&~U@wJ!Ewv6gTA zn%!y}oqmWLJ8P`?dk--#V#|Mv>~b@Yoq)dWoQgXN1dF+f>d|x$x5XBtpToN&H9*Wc zScB*iQ~>Sbosi;S4u+<)YXA{wQYnYD3A6@}-tl2=5-Mt>#^8(F6ojKQobhexd|@mC zb2l*G@v{lDrTTNb1C%f2`)*^}rs(R)2SZJb&neJy3)6hlO;J3YM()-*;bxTJFdh*3 zi0L@I$uw<-<*dRV?D=C<86RQvrEQvE4iRaDW%V*W;#H0L3%h7V10~Zoz?1I|*RAD#O`TT8`B zH5i_NcF${?k_Y{ROlxujHXG~*o5Qe5pz28s@|EAZklkr2LD&M0fnv`I{3Kpus#ARh zR_6*+O%2+-s!uWc1+(=A0F;g{|MN`WDPoUu2)R*nqUAGjra3y*fYoefdI*Yw{|2+w zAcfEIX6o-eISVmX+ils$AIDeDg9i)FLX-_yQ`rHxQ41C=v-#k5XQf) zf#b+19TlkXoC6Gh-&7p6E^`}UGW$fZCBjxxfJeCLO(0~8T7B>Jw|ZEJIq?AF8NizH zB*UJ0F)ZU&16sruvSW&HGro^k8O z>4!7x`EDO_#=#uyn~0uqMjY$LVOVlCK(GVE8;jTiloiyY$RC(f0F8(8A%;r__~>y5 zj&Yq2*Z{y?SgBf6t>N8jeTXo;lcFDCII<*}&Q!uatASFf2;6D(EfZ$AxiAAr0S{1l zC%f^Lz>TNPF?y#C0RT$?{yiv}kCPeTrBczZ5?;7M4~ccF_*AsnSOmOoH6(C8=gegA zihd0zEsrT=Lq?tBiYzD9;aqTuNvAKZ$jb^D%M5^fX92_=%W)2XWYv(UQEtWLKpx*; zvfnog8j3;^;p)RQw^l6jY8Oce7Wa|N{d5=9omD%cy%mal<9S{ zwia|nnLbn}b70IFuSUpw^SFL9m0K5jpOVIK2?EpUs+<2FaL{Jgx$1%?kOc2 z8Lm%%fg91pD`OpdiiF^&p{B%{avuH>qTDA~jHTSvJ_UJPO}FESg*XLq;XjU3p4IsN ze-NkOeZf6;5K7Izf_M>1CL5vP`p~?A^w~F%Y{-d=Mf(OqVfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_1cf_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1cf_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 KE&cJ~e(Hb3NM_mq diff --git a/client/resources/hardnested_tables/bitflip_1_1d8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1d8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b77d70585853d835f9556c7048fd9a0b267b7f90 GIT binary patch literal 24608 zcmeI4e~ev4701tgzxH+a?VT;%ZeN#n-%EecDqFe~N=PX9BtWX!t`$pdwAu}}p-L+# zrX{%TPEZ6Ytq6^&gkoc?t&tKEkV*r(CW;!?@`te+17Ss=My)on3R+TeMcg~%AGc%SHS6}~VW4FlloePeO>vfTwyWjQaWm0dG%-5gU zOotR^h^a_prY!MNF;<*&8%n)aX6V0lg`$?$>G$iyeDc!z|nnt20 zjg9ss_4Z3<5ohLTvoZB0Gn{8~Cn~*fp9Rb?G+bqM6x7 z3U?GFiu)*z78ptQ6dsh4lx2yL{8vn$G;`HHzPp!<7ge3Fr( z`(`pA*JPxX?pvpG{T&?JI8HG#&AIJ*nR7>tO|LMLb#60NzGLiEB$c_8@Hs;396p>} z>UJ3^^YcX`XSoj;sW^9^k@FE@;Wc_iqsb$nl;<#vPwAzNAn-}rehjI&viOV+SiAJi zI5$z7ryQN|i-@CRyQ`Z8RQQ(SstiKw0d z`}x%Qi$~=~x;#!xj3eC>uc$X2Q2`0A;Pgy%nDcs$FQu^-hV2_2HSFvQI_xZC-H5`j zqB8_O1BK+>%L*HxJ86x>?~I*wmT%Z**CP;rKx2)a_&gW>llDOnn{tuX`$SbucP4Ox zY7QaGsG=G48JqRh>-5^6RUub%C}IXPxprQF{b zq;o$t@}8JpY4cViPtg3_Ug{Q%`~oMDqA1$Jxx=PnazOSg%<`2%2y7ZuI)0E0zv>$3 zWTp2qg?o*3)2stC?;bu<9r~`MJCu_J+*}FCF5>ttBi3I&=D+)Dc*%hqV#%6=Y9NEt z7%>iPVA29*suKYiRn9p)VWv!HGZAnzy2_!euB07@Rj+h8W9u2|+Jhje5bmi-jEnGk z(^|;ez^$aGD z`{giOcaEN#>A9PWa4SqVEdBa1Wd+}_PmlYs*1Of@uhB~zj64il47C_dj%6)U;HTEQ zCBV7ex0naPWgy7qw69@95lrUO(0C>S6Yab)OwxG~9;(iV=kwg=`lYIp>81U$%RSC4 z1CQ+E^u2RjyBz9w{BISH)H$Xa(tg5F=%AcHrH*>6p)lbq?x}J6$Krby8$|x9k=`~V zKSYeZCt#wowHSHG{np4M8qK7&9Y3dWxo=2r@U8jvV_uats1sFg7*u82*gPFqz1EcB zUW-|E0ia<&leuCQ;Ei@yrQWinhx@C`>pM2%5fwiY?j-bOpE9(+ODkl!A1T#GdPMv$8bU22v-rJ$}7j};gNYHu+asjUWwW{U*&-f zF%d;solG@FNmJ@$94@0qjvTrj`?mG<127~awP2XRHSCdc+NV86;o%q7EZ&*s5GS#

    vG2tmGP8|s zz+1eb2_oE_P1HR}+q2P-?Tr(&oJ&_FuSIzn@%^4k?I0u|Y~_gQ>m&kIuo|2*p9x;Q zc(ui~pUukPs?_((xD3w!%g9am#$1n)&oJj(=W(Q{qXg#v_`o-I z)IOe--By}W_pCteI-xaALQL(J^|B2Z;n<@($te=w!LE z6PUO4>%HpXhQji7k1!|L1d2y+pMh26FULKtWgE}br6?jO0Zdm(XotEw*VHY3kL zhyGBt{&7itW&ZmZ#+h;7QwgzuQvIF!OLXzTAhCy_D6#K-TZz4r`O1_zXbW;58LHF$Q0C~Wgz*?^p}%a5lFuJQx{0ShvD`95%nhF=Y{fH z--OGrCs&m4-^A-@2I}yc>6{esj?kEQlmEZFI^L7={XVJF1qW5iTgayiMcdZfL85~c z<|+Gp!e`%0#Jy*HOd{e|Inmh3oYUg-uTJRRD04B!o&oQVp7)G(5*%|GR4IZ^MbJK< zr?5(%l(zYWAbhW7s13$_?h2m~AUg)7YoAT!$2bxZ`g*Ut8 zCApwcC1m=2t~q4-{XLD4>6c>2^lSJ@J|WW|GW}z*wU&_ShX9c8Nrz1TJGJE@WcvL* zS+c3g{rr&WuSF@2A=4i+{UOu;1VL%{JGPZ4WctH)9+GomJI`CPohM}a$KJYGyUQCg z{YrO2rr+3>@`{)bF|*wa72{cyeMcyhOa!=C=Ir@#6X0-Nc=o_;n0ggyOX zPygVS)v%{O?CC$nhZ{qtKVKHHIP6A2R(R)6WyzmRtb$I>Os~!rOaJ>+3ngp8l|>KkVs$t6tF= eGW{XbA2R){3S4-5kAl#%RR25SbKRjYJn~=AVr#_! literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1e0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1e0_states.bin.bz2 deleted file mode 100644 index d701fc28569656e2e6c0dc994a11fe21af1282cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1535 zcmZ9LeM}n#7{-s5cE{0e?dX-WK?V9DcdhOqETX{;+R~MyAT4b<7KV3SmvpEJ8jZ$@ z7P#YU-K0>kESo8m5;!U;%Sfgn3wNUvnrL9MWQjAOi%SSGk@yieTr$zWjBoP1dEYHfuc&_pjcmB z1+16({xjyx5`l66a1yoZdRbri+;4lB!oB@jG!irfJW48>G|FQjPjVf-#+M|^$prR5 zNKvUCxJRWryu46Bo($a38J;9Kp_H{3v7REDF18N3skrme zuIp1$_r9%Xe$*B*4RjT~JJrrgA#O46`jr8`di8R6G+xK7IDV|-4q*`kT2*1U&wBmi zt@_c>yXaJc5z2}lDTWP_j!W>dqsm2Mv0A9GhJ{K+DC6_{+MiMTQ+T9a&F!AlmHSuI zliOhAgB_$40Dj496uy)CUE#;sen0)$~Qd^optcvC?b2n**5=VGa`A8+t$dpN8zi=aB zY|2HdNwTZ67ZLWxuqAlg&2J^=HlE7_kIUXUE`EM{Z}j=96#Ga1eYY^0!O&;1VLgbR z-tUtx_v7@yUXAUG9ajr6%r|8tQ>yr+;<|4-c(Ja&JR+3kWnXYRj@im;T5^~RC1czq z<%!nUq27MGmW(TgE=Q;1VsNv`)qU4xR}vH@@I6^<|LsyrYlN9l`;dQXqAZMGblBm* zSe~0WgQRHE1Cs zbcmk@I)TYR6mSNHpmN_qwa@Q}75cx|m@YmewvMZn{#AAP>UuqKIVufg)neLIW$bly z@dP*=|4_4Tx5CQ?2yY}+po5_j?h3OiU$nJ<`a85Y>E#Fc3%LhY|4l%vf@OQM8&u%d zN^}0d39w|2e-moU{n$SbKW)1yAF{vrYV;?>CRr(!(O;q@*A}gqXkGQ=c#RQ1OvevaJC- zCBm**B{L#+l0K9Bgy7oJg?$i`jpsrEY781~WtfLf%kqxY>6H?38mVa$^<^h}VN%zf zM1MCH2?$EFEXzD5!$UM-TiFE_t>_ zdq;H6X_>Ef&3*t4u$J|qaSS%pI%LW>78Sa1F-H?NFLo#gJ&O%R!f{4Q6c@nopu<`M kJ;9bIIxv9@-3p|7ak>GSmlYIvpQi4I8kAb#7x=;Q-?`;f+W-In diff --git a/client/resources/hardnested_tables/bitflip_1_1e0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1e0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c6e2f9438534ae43958a6a4e58cd9a8dfddedb1c GIT binary patch literal 18954 zcmeHP&2Lmy6hHHrd5pu%921&YCq*W0O$VWTEHExec#B5cLRI3fF*?yIv{0sn)LN9} z#Tbn4bmg*%#t;`SOf5EQ^8Nr;tc)AL5YrgM#xzQla`~Nm-%N)ToK9y!#Pb&KzP$T& zK7aST`|*;UL+v9I3x5p|%@z;-OqW+GD~6L4u(`bA(LQ5LhPv6bQLac`Tq)5WV*_YCle1)Dsx|^xP++b>#TUH92 zKbT7P0k;_x*}>F?$Gx^QV{H6|b&4 ziVcdlI}*W10Z))ihxx}fggd=7Pf%h6aTSnFjv0rsHFTgbWMbO~BTmF6}iH45H;t5c`#;|53X zABWf~P-!Rncv_fy!`8ZmMn^f^G!nCQrcR|`QPg>|rp|;Ayu?9roXgb1#nd<&1xYZ& zDGvLOf}}4&>^w(<-Kd0|vLp5;a<0XO_qXl$7u)u!8l?-3MR(B&Y}s-dra-a(7E>sk z-~0N2V}fb8hr{9hJez!y!@L+#(n;Y3koU5v6l$D?BwoXlP(0~s{?2r)+Vne47_d5P z4sUaq>2mf3($gSj5hc&nS=wwS@|b?K^{+LuoCVj^9O}au9*5rzPr&b<;$ZYZJ}Q9o zBM=p`yx2~xksEUsM86Uf{grFO90X~2m-rs4*lyK&Rx}9ti}Q;{#ra`E<~m2Ep2mW| z#8gD-+whESAP_(RPzVbG3Z=E6U}hcx5>-8}3J_n^#3vn_8Tx2lUJxEW4zgnp7!(iK z&-6S@w|Ng3Y25>0FmN&(DDa@zU)!vbJoru%O50gMnVJRZmM!H3{?2o~SM5DxnqTx(zF zAn;i53Qc0lnIi$c$HwL7kDS91vaRDycg;dbgnDyYl9jU(NsBau2 z;ue4(Bkg2*wwEcg#;~Cq21fxe(0@kI9RkM?NdDd!xct>mNZy$D~nk4 zY`Dg#v)H<4$?lcYU}+sY_cU12UGnnI%09S37s9r{UyKPxX9>o`#e2LUQS8ICnzo|9G5N zgCz}?G+1&tsKJs3OByWcuLFPs`s)Dw_lX-6R__<_=L!9Fz<=>H+^H9>775p-Evc0| DKT<(7 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1e1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1e1_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_1e1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1e1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1e5_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1e5_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1e7_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1e7_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1e8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1e8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..42fb9d45d1b25c09b945821e8a57e22ee10f7a2c GIT binary patch literal 25815 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1e9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1e9_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_1e9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1e9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1eb_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1eb_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1ed_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1ed_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1f8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1f8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..87fbc9d30c636c2c71a18e91a94affe398201b1e GIT binary patch literal 21459 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 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_220_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_220_states.bin.bz2 deleted file mode 100644 index fe85775bfe7cdafa269bb9b1c2202af269e763c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1680 zcmWO5e^8o-83*w9ec=Ve8^|jPD%aUJ78UUa%3)KRHojOO_%ld&K{=}?!<3NQW_r0* zW4gTA}og^VM8$|r|q6R(OnWR~`{MaGgcHl}b^VXfZWHZ*Jjcv2EG1<81`Q!QL zd-ptdpQplTE-R5Y<{WH1O#7h;Xu0$8z$+6;(&;#z4$uJ`fC5R0VTJKeW)uJbu2`3K zTGh+I%^Gve6K1p60$B#=m5-=SW3m+O0Iyv4Qhjp&M!!1MH{fek)$UqQmRG_574GLU z9NKv(Wa9L217-3uD7%qH!Ol|RsA8%+i1?7p@}DH}eU2&n!LOg*O-|D)%)a_FyC;-2 ztl#h|`MiS>F7}Y9(@0pXXHKc`64oeh(ilQgriHbcA#bo8}3Q33qDP=yD(kJnc{gUN3gp*s`(fOMkjF|?GFPfB5DfmV16UWA+Q06)>7 zC!GP3=AG8o;(=Uyj~*?u=b#1hVu7_qNq;bjZ-+j^E>Z!$M-Ms+Xy60`zlu_iD+apo zSuS71Cl@Qu4J!1gKTp(O1rH%{qKihmM*YY4Kn# z4U%m{gjx-7utT~7PiR=Cg^KnR;U<`(?yy$jPLJMsUQB(#Gcgj!%!~br6b)!)R@mB- z)8f!9xJCILR4W_!gHnEjSKYpcsG$J?rp3h;ad0!6(35eZV^SM{Uv7%M)#E{-;>8dW z;iXP%E6O$9Lvf9Dk>xOahqc%$E{W{H%K9(0>J6Lr5q1tO6zQVK_FdTIu02u<{3paY z^U*Wr4}%bZCIcu6pb!dR0FXioo+m^C9|NOMZw5`}7NnZP0$DgZqQYZisvd!q(JM`u z96VZkV97msqjEiUa{t8lGgBb$FyOMZo z)EsQ$K9$$7qcS)`nbpH&3=AWc3IkS(PlFb@0ec^B))aXX7(FsJX!S^0PtigR5k`oE zxDh6e6NEWC|KD;MesdXm2n7%uuhX73grJgA-B$OsT%VlCF~}f;{ET2tJ{U-l`i5!%*f1sTvwU9z)KQ&*YS>}lYH=IDLV618g; zifLJE415lD)#vDtp`Io@h+sz8DYH7I3_O~Vcvx=ThElIXygOXbtrXD5`%#zT(wtsL zuI;dTjPgbr)<^>R(}s6*IORbQlc1MosNxKc}Xct+CW!$B71VldVm?N)S#y4b8Xl{?R>8 zUtmz9tqAZ4h^COOGG>Hs_NGNyVdeq{{FZFzI5T+i38IiNLZNi3fccdR1$0(NXTpsnsm+>nEI}GLbbrs?7fum3)(2ciCq2>N>jB8@jv`&T0js z<2B(o$3*$U$gz?pA=3jGuLR2f>_h?54v-{3q9mBmcL6Y5LI+YsF{kY4fLC?aI#SaM z4UQhTTU)MsbL0!KQZY703U+O@to@H@FUdIa_Q;0|Lwj!*{7h9EzwZwo7F0!M5gN8+ z@k^GKUsKx0@wE=Yd3{~(?aW+v@z$Qsw_;_7+HcJmr%Re{bObjy?j1XpS?^lBaL-*R ze(|^Z=Y5Rf{A+s~u76|<&QF()=e2c_!|v?9p(`Kcelp_d`nhA@=aOkv>6X7>M%ej* ze)9eF5f?cu{X8|W&{x!a6sQ>Q)+x~E9I?dj8w6uN4$Czf zaBAX=yTZs+nnx<(sf1m5Dz?Ve)3QA z9gfIx6YKM=QE+!)8i=$)j+nVLqr!NCPC(xqj!Tb!gsQ!2LaokO*UED}n2-;LXgCc2 z3Be!7%PaySAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wVBF N1v(9kpXaZ)+&Az7G@$?h literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_24a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_24a_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_1_24a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_24a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_24e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_24e_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_1_24e_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_24e_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_25a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_25a_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_1_25a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_25a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_1_25e_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_25e_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_1_262_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_262_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_266_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_266_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_1_266_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_266_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_272_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_272_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_1_272_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_272_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_1_276_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_276_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 zcmeI4PiP!<6vy9hW@odTo&9|$T@tc?lAUa7jizZ9nqtsMgGID0Eh&aZsnIQ{6jY2N zc+l1Xizfr=$zH@%yjk=jh(T$3RS&uKB;=sSLV_(*wDsqkO`2cZK`0XHBeP!0+W0H1Z(Y>LY1ad#cZ*Gs~a@zuD{o14 zeo_EA{lyPy)Wqae7y#;Q`1#1G#|w)1)a!hruQ-$im8{gfZ%BWsIMNbMdc%6vML;L8 z?rA1+2u-KROFp6u=R_~C&9t%;%;KWIkoA)kvqzI?^vOK`@gKD-J_;pW?%fNrH3D@0bc2b8*_T47t~orP;fyFGlZ~G0{P!z${DH0k;BytIC3|KkN5;* zdJ>o|&0wX%unhJ0V7~M^rnt~ib)p`t#HTSw(QGJu?(xRKDsJuKDs*sGoyNRVk6S~# zH9e%Mlf8PN!UfC`G4sA8g$W%!%o#tyYX`StWsi^J<|FfXYajEf81pV@oB>sMOR$91 z;Q-XV1gbUp^<_QCh3R8%VLKLjy(`h<+WrzNoP%lW z24UzS8u&r462bv94r=kXKN4~p%dL=WF#`gF+eq7(0np(Pbm%c&D(a!vuvqLuRKAi_ z^lQDMb!~(*%VW*wP0X{*6?XOH4o-oEWdxE!ExPc zV7YO)8gtvo>`dB*hp;?ekCz8$K|7PA-G0vY{Ox`b)jnpaapwv9xT@`DaT+%}Odrl> zS<;cJ{d=!iY{xvhJ#^Xt*8d;D&|e2cDWa77Xf2`?=_&U&ghVN#6j6$i&nesZ!B%>T z^c3kS(o?qc%d+$o=_%4vq^C$vXbUc@D8Y%CIzaj8qGb{2#f!mZ4-zEaMdh76t|u76umv4h9B>1B`b{7!=r87!LRbHLEpx zdP=2y@Cub+)cDM@xItA)H7I;u!;}J+#SC610m^%X`kMlkmupRo6m(MwR|(@X)i~+4 zs4vu2zA3O}@r5b1LQ~z7R!kG>QP6kw3T_bU(b853v`bm+DyeZ~v8t5D>xQYE7rYDt zLwZytR3*F&ybM6Js)Wjt2b^w-E25pmhTrK6!`#njEP=zvH>z|w<` zfiD6plzIZI7M;=oqQC-?SfGksB5_omySq;rsxM&F-DOBAmREbB*^`)q6@o2koE(P#XojW(md4C J*tQ|90ssyfbqxRj diff --git a/client/resources/hardnested_tables/bitflip_1_280_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_280_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..e835ce4179c307e40e9ceb5e2d400f569a1b826c GIT binary patch literal 8357 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 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_2c2_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_2c2_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_1_2c2_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_2c2_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_2c6_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_2c6_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_1_2c6_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_2c6_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_2d2_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_2d2_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_1_2d2_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_2d2_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_1_2d6_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_2d6_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_388_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_388_states.bin.bz2 deleted file mode 100644 index b01f02208ef4ca4c78fc6566fd6e0c556e11ab30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5424 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 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_3a0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_3a0_states.bin.bz2 deleted file mode 100644 index fe85775bfe7cdafa269bb9b1c2202af269e763c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1680 zcmWO5e^8o-83*w9ec=Ve8^|jPD%aUJ78UUa%3)KRHojOO_%ld&K{=}?!<3NQW_r0* zW4gTA}og^VM8$|r|q6R(OnWR~`{MaGgcHl}b^VXfZWHZ*Jjcv2EG1<81`Q!QL zd-ptdpQplTE-R5Y<{WH1O#7h;Xu0$8z$+6;(&;#z4$uJ`fC5R0VTJKeW)uJbu2`3K zTGh+I%^Gve6K1p60$B#=m5-=SW3m+O0Iyv4Qhjp&M!!1MH{fek)$UqQmRG_574GLU z9NKv(Wa9L217-3uD7%qH!Ol|RsA8%+i1?7p@}DH}eU2&n!LOg*O-|D)%)a_FyC;-2 ztl#h|`MiS>F7}Y9(@0pXXHKc`64oeh(ilQgriHbcA#bo8}3Q33qDP=yD(kJnc{gUN3gp*s`(fOMkjF|?GFPfB5DfmV16UWA+Q06)>7 zC!GP3=AG8o;(=Uyj~*?u=b#1hVu7_qNq;bjZ-+j^E>Z!$M-Ms+Xy60`zlu_iD+apo zSuS71Cl@Qu4J!1gKTp(O1rH%{qKihmM*YY4Kn# z4U%m{gjx-7utT~7PiR=Cg^KnR;U<`(?yy$jPLJMsUQB(#Gcgj!%!~br6b)!)R@mB- z)8f!9xJCILR4W_!gHnEjSKYpcsG$J?rp3h;ad0!6(35eZV^SM{Uv7%M)#E{-;>8dW z;iXP%E6O$9Lvf9Dk>xOahqc%$E{W{H%K9(0>J6Lr5q1tO6zQVK_FdTIu02u<{3paY z^U*Wr4}%bZCIcu6pb!dR0FXioo+m^C9|NOMZw5`}7NnZP0$DgZqQYZisvd!q(JM`u z96VZkV97msqjEiUa{t8lGgBb$FyOMZo z)EsQ$K9$$7qcS)`nbpH&3=AWc3IkS(PlFb@0ec^B))aXX7(FsJX!S^0PtigR5k`oE zxDh6e6NEWC|KD;MesdXm2n7%uuhX73grJgA-B$OsT%VlCF~}f;{ET2tJ{U-l`i5!%*f1sTvwU9z)KQ&*YS>}lYH=IDLV618g; zifLJE415lD)#vDtp`Io@h+sz8DYH7I3_O~Vcvx=ThElIXygOXbtrXD5`%#zT(wtsL zuI;dTjPgbr)<^>R(}s6*IORbQlc1MosNxKc}Xct+CW!$B71VldVm?N)S#y4b8Xl{?R>8 zUtmz9tqAZ4h^COOGG>Hs_NGNyVdeq{{FZFzI5T+i38IiNLZNi3fccdR1$0(NXTpsnsm+>nEI}GLbbrs?7fum3)(2ciCq2>N>jB8@jv`&T0js z<2B(o$3*$U$gz?pA=3jGuLR2f>_h?54v-{3q9mBmcL6Y5LI+YsF{kY4fLC?aI#SaM z4UQhTTU)MsbL0!KQZY703U+O@to@H@FUdIa_Q;0|Lwj!*{7h9EzwZwo7F0!M5gN8+ z@k^GKUsKx0@wE=Yd3{~(?aW+v@z$Qsw_;_7+HcJmr%Re{bObjy?j1XpS?^lBaL-*R ze(|^Z=Y5Rf{A+s~u76|<&QF()=e2c_!|v?9p(`Kcelp_d`nhA@=aOkv>6X7>M%ej* ze)9eF5f?cu{X8|W&{x!a6sQ>Q)+x~E9I?dj8w6uN4$Czf zaBAX=yTZs+nnx<(sf1m5Dz?Ve)3QA z9gfIx6YKM=QE+!)8i=$)j+nVLqr!NCPC(xqj!Tb!gsQ!2LaokO*UED}n2-;LXgCc2 z3Be!7%PaySAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wVBF N1v(9kpXaZ)+&Az7G@$?h literal 0 HcmV?d00001 diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index be7b3a4c3..9c487a50d 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -30,6 +30,7 @@ #include #include #include // MingW +#include #include #include "commonutil.h" // ARRAYLEN @@ -51,8 +52,9 @@ #define IGNORE_BITFLIP_THRESHOLD 0.9901 #define STATE_FILES_DIRECTORY "hardnested_tables/" -#define STATE_FILE_TEMPLATE "bitflip_%d_%03" PRIx16 "_states.bin.bz2" #define STATE_FILE_TEMPLATE_RAW "bitflip_%d_%03" PRIx16 "_states.bin" +#define STATE_FILE_TEMPLATE_LZ4 "bitflip_%d_%03" PRIx16 "_states.bin.lz4" +#define STATE_FILE_TEMPLATE_BZ2 "bitflip_%d_%03" PRIx16 "_states.bin.bz2" #define DEBUG_KEY_ELIMINATION // #define DEBUG_REDUCTION @@ -135,7 +137,7 @@ static void print_progress_header(void) { void hardnested_print_progress(uint32_t nonces, const char *activity, float brute_force, uint64_t min_diff_print_time) { static uint64_t last_print_time = 0; - if (msclock() - last_print_time > min_diff_print_time) { + if (msclock() - last_print_time >= min_diff_print_time) { last_print_time = msclock(); uint64_t total_time = msclock() - start_time; float brute_force_time = brute_force / brute_force_per_second; @@ -256,34 +258,42 @@ static void init_bitflip_bitarrays(void) { #if defined (DEBUG_REDUCTION) uint8_t line = 0; #endif + uint64_t init_bitflip_bitarrays_starttime = msclock(); - bz_stream compressed_stream; - - char state_files_path[strlen(get_my_executable_directory()) + strlen(STATE_FILES_DIRECTORY) + strlen(STATE_FILE_TEMPLATE) + 1]; - char state_file_name[strlen(STATE_FILE_TEMPLATE) + 1]; - char state_file_raw_name[strlen(STATE_FILE_TEMPLATE_RAW) + 1]; - + char state_file_name[MAX(strlen(STATE_FILE_TEMPLATE_RAW), MAX(strlen(STATE_FILE_TEMPLATE_LZ4), strlen(STATE_FILE_TEMPLATE_BZ2))) + 1]; + char state_files_path[strlen(get_my_executable_directory()) + strlen(STATE_FILES_DIRECTORY) + sizeof(state_file_name)]; + uint16_t nraw = 0, nlz4 = 0, nbz2 = 0; for (odd_even_t odd_even = EVEN_STATE; odd_even <= ODD_STATE; odd_even++) { num_effective_bitflips[odd_even] = 0; for (uint16_t bitflip = 0x001; bitflip < 0x400; bitflip++) { bool open_uncompressed = false; + bool open_lz4compressed = false; + bool open_bz2compressed = false; bitflip_bitarrays[odd_even][bitflip] = NULL; count_bitflip_bitarrays[odd_even][bitflip] = 1 << 24; - snprintf(state_file_name, sizeof(state_file_name), STATE_FILE_TEMPLATE, odd_even, bitflip); + char *path; + snprintf(state_file_name, sizeof(state_file_name), STATE_FILE_TEMPLATE_RAW, odd_even, bitflip); strncpy(state_files_path, STATE_FILES_DIRECTORY, sizeof(state_files_path) - 1); strncat(state_files_path, state_file_name, sizeof(state_files_path) - (strlen(STATE_FILES_DIRECTORY) + 1)); - - char *path; - if (searchFile(&path, RESOURCES_SUBDIR, state_files_path, "", true) != PM3_SUCCESS) { - snprintf(state_file_raw_name, sizeof(state_file_raw_name), STATE_FILE_TEMPLATE_RAW, odd_even, bitflip); + if (searchFile(&path, RESOURCES_SUBDIR, state_files_path, "", true) == PM3_SUCCESS) { + open_uncompressed = true; + } else { + snprintf(state_file_name, sizeof(state_file_name), STATE_FILE_TEMPLATE_LZ4, odd_even, bitflip); strncpy(state_files_path, STATE_FILES_DIRECTORY, sizeof(state_files_path) - 1); - strncat(state_files_path, state_file_raw_name, sizeof(state_files_path) - (strlen(STATE_FILES_DIRECTORY) + 1)); + strncat(state_files_path, state_file_name, sizeof(state_files_path) - (strlen(STATE_FILES_DIRECTORY) + 1)); if (searchFile(&path, RESOURCES_SUBDIR, state_files_path, "", true) == PM3_SUCCESS) { - open_uncompressed = true; + open_lz4compressed = true; } else { - continue; + snprintf(state_file_name, sizeof(state_file_name), STATE_FILE_TEMPLATE_BZ2, odd_even, bitflip); + strncpy(state_files_path, STATE_FILES_DIRECTORY, sizeof(state_files_path) - 1); + strncat(state_files_path, state_file_name, sizeof(state_files_path) - (strlen(STATE_FILES_DIRECTORY) + 1)); + if (searchFile(&path, RESOURCES_SUBDIR, state_files_path, "", true) == PM3_SUCCESS) { + open_bz2compressed = true; + } else { + continue; + } } } @@ -291,7 +301,138 @@ static void init_bitflip_bitarrays(void) { free(path); if (statesfile == NULL) { continue; - } else if (!open_uncompressed) { + } else if (open_uncompressed) { + fseek(statesfile, 0, SEEK_END); + int fsize = ftell(statesfile); + if (fsize == -1) { + PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); + fclose(statesfile); + exit(5); + } + uint32_t filesize = (uint32_t)fsize; + rewind(statesfile); + + uint32_t count = 0; + size_t bytesread = fread(&count, 1, sizeof(count), statesfile); + if (bytesread != 4) { + PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); + fclose(statesfile); + exit(5); + } + + if ((float)count / (1 << 24) < IGNORE_BITFLIP_THRESHOLD) { + uint32_t *bitset = (uint32_t *)malloc_bitarray(sizeof(uint32_t) * (1 << 19)); + if (bitset == NULL) { + PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); + fclose(statesfile); + exit(4); + } + + bytesread = fread(bitset, 1, filesize - sizeof(count), statesfile); + if (bytesread != filesize - sizeof(count)) { + PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); + fclose(statesfile); + exit(5); + } + + effective_bitflip[odd_even][num_effective_bitflips[odd_even]++] = bitflip; + bitflip_bitarrays[odd_even][bitflip] = bitset; + count_bitflip_bitarrays[odd_even][bitflip] = count; +#if defined (DEBUG_REDUCTION) + PrintAndLogEx(INFO, "(%03" PRIx16 " %s:%5.1f%%) ", bitflip, odd_even ? "odd " : "even", (float)count / (1 << 24) * 100.0); + line++; + if (line == 8) { + PrintAndLogEx(NORMAL, ""); + line = 0; + } +#endif + } + nraw++; + } else if (open_lz4compressed) { + + fseek(statesfile, 0, SEEK_END); + int fsize = ftell(statesfile); + if (fsize == -1) { + PrintAndLogEx(ERR, "File read error with %s (1). Aborting...\n", state_file_name); + fclose(statesfile); + exit(5); + } + uint32_t filesize = (uint32_t)fsize; + rewind(statesfile); + char *compressed_data = malloc(filesize); + if (compressed_data == NULL) { + PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); + fclose(statesfile); + exit(4); + } + size_t bytesread = fread(compressed_data, 1, filesize, statesfile); + if (bytesread != filesize) { + PrintAndLogEx(ERR, "File read error with %s (2). Aborting...\n", state_file_name); + free(compressed_data); + fclose(statesfile); + exit(5); + } + char *uncompressed_data = malloc((sizeof(uint32_t) * (1 << 19)) + sizeof(uint32_t)); + if (uncompressed_data == NULL) { + PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); + free(compressed_data); + fclose(statesfile); + exit(4); + } + LZ4F_decompressionContext_t ctx; + LZ4F_errorCode_t result = LZ4F_createDecompressionContext(&ctx, LZ4F_VERSION); + if (LZ4F_isError(result)) { + PrintAndLogEx(ERR, "File read error with %s (3) Failed to create decompression context: %s. Aborting...\n", state_file_name, LZ4F_getErrorName(result)); + free(compressed_data); + free(uncompressed_data); + fclose(statesfile); + exit(5); + } + size_t expected_output_size = (sizeof(uint32_t) * (1 << 19)) + sizeof(uint32_t); + size_t consumed_input_size = filesize; + size_t generated_output_size = expected_output_size; + result = LZ4F_decompress(ctx, uncompressed_data, &generated_output_size, compressed_data, &consumed_input_size, NULL); + LZ4F_freeDecompressionContext(ctx); + free(compressed_data); + if (LZ4F_isError(result)) { + PrintAndLogEx(ERR, "File read error with %s (3) %s. Aborting...\n", state_file_name, LZ4F_getErrorName(result)); + free(uncompressed_data); + fclose(statesfile); + exit(5); + } + if (generated_output_size != expected_output_size) { + PrintAndLogEx(ERR, "File read error with %s (3) got %lu instead of %lu bytes. Aborting...\n", state_file_name, generated_output_size, expected_output_size); + free(uncompressed_data); + fclose(statesfile); + exit(5); + } + uint32_t count = ((uint32_t *)uncompressed_data)[0]; + if ((float)count / (1 << 24) < IGNORE_BITFLIP_THRESHOLD) { + uint32_t *bitset = (uint32_t *)malloc_bitarray(sizeof(uint32_t) * (1 << 19)); + if (bitset == NULL) { + PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); + free(uncompressed_data); + fclose(statesfile); + exit(4); + } + memcpy(bitset, uncompressed_data + 1, sizeof(uint32_t) * (1 << 19)); + effective_bitflip[odd_even][num_effective_bitflips[odd_even]++] = bitflip; + bitflip_bitarrays[odd_even][bitflip] = bitset; + count_bitflip_bitarrays[odd_even][bitflip] = count; +#if defined (DEBUG_REDUCTION) + PrintAndLogEx(INFO, "(%03" PRIx16 " %s:%5.1f%%) ", bitflip, odd_even ? "odd " : "even", (float)count / (1 << 24) * 100.0); + line++; + if (line == 8) { + PrintAndLogEx(NORMAL, ""); + line = 0; + } +#endif + } + free(uncompressed_data); + nlz4++; + continue; + } else if (open_bz2compressed) { + bz_stream compressed_stream; fseek(statesfile, 0, SEEK_END); int fsize = ftell(statesfile); if (fsize == -1) { @@ -346,57 +487,16 @@ static void init_bitflip_bitarrays(void) { #endif } BZ2_bzDecompressEnd(&compressed_stream); - } else { - fseek(statesfile, 0, SEEK_END); - int fsize = ftell(statesfile); - if (fsize == -1) { - PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); - fclose(statesfile); - exit(5); - } - uint32_t filesize = (uint32_t)fsize; - rewind(statesfile); - - uint32_t count = 0; - size_t bytesread = fread(&count, 1, sizeof(count), statesfile); - if (bytesread != 4) { - PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); - fclose(statesfile); - exit(5); - } - - if ((float)count / (1 << 24) < IGNORE_BITFLIP_THRESHOLD) { - uint32_t *bitset = (uint32_t *)malloc_bitarray(sizeof(uint32_t) * (1 << 19)); - if (bitset == NULL) { - PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); - fclose(statesfile); - exit(4); - } - - bytesread = fread(bitset, 1, filesize - sizeof(count), statesfile); - if (bytesread != filesize - sizeof(count)) { - PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); - fclose(statesfile); - exit(5); - } - - effective_bitflip[odd_even][num_effective_bitflips[odd_even]++] = bitflip; - bitflip_bitarrays[odd_even][bitflip] = bitset; - count_bitflip_bitarrays[odd_even][bitflip] = count; -#if defined (DEBUG_REDUCTION) - PrintAndLogEx(INFO, "(%03" PRIx16 " %s:%5.1f%%) ", bitflip, odd_even ? "odd " : "even", (float)count / (1 << 24) * 100.0); - line++; - if (line == 8) { - PrintAndLogEx(NORMAL, ""); - line = 0; - } -#endif - } + nbz2++; } } effective_bitflip[odd_even][num_effective_bitflips[odd_even]] = 0x400; // EndOfList marker } - + { + char progress_text[80]; + snprintf(progress_text, sizeof(progress_text), "Loaded %u RAW / %u LZ4 / %u BZ2 in %"PRIu64" ms", nraw, nlz4, nbz2, msclock() - init_bitflip_bitarrays_starttime); + hardnested_print_progress(0, progress_text, (float)(1LL << 47), 0); + } uint16_t i = 0; uint16_t j = 0; num_all_effective_bitflips = 0; @@ -431,9 +531,11 @@ static void init_bitflip_bitarrays(void) { PrintAndLogEx(INFO, "%03x ", all_effective_bitflip[i]); } #endif - char progress_text[80]; - snprintf(progress_text, sizeof(progress_text), "Using %d precalculated bitflip state tables", num_all_effective_bitflips); - hardnested_print_progress(0, progress_text, (float)(1LL << 47), 0); + { + char progress_text[80]; + snprintf(progress_text, sizeof(progress_text), "Using %d precalculated bitflip state tables", num_all_effective_bitflips); + hardnested_print_progress(0, progress_text, (float)(1LL << 47), 0); + } } static void free_bitflip_bitarrays(void) { diff --git a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md index e7fe580cd..455ad6254 100644 --- a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md @@ -50,7 +50,7 @@ Install the requirements ```sh sudo apt-get install --no-install-recommends git ca-certificates build-essential pkg-config \ -libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev libbluetooth-dev libpython3-dev libssl-dev +libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev ``` If you don't need the native Bluetooth support in the client, you can skip the installation of `libbluetooth-dev`. @@ -91,7 +91,7 @@ If you don't need support for Python3 scripts in the Proxmark3 client, you can s ^[Top](#top) ```sh -sudo zypper install git patterns-devel-base-devel_basis gcc-c++ readline-devel libbz2-devel cross-arm-none-gcc9 cross-arm-none-newlib-devel python3-devel libqt5-qtbase-devel libopenssl-devel +sudo zypper install git patterns-devel-base-devel_basis gcc-c++ readline-devel libbz2-devel liblz4-devel cross-arm-none-gcc9 cross-arm-none-newlib-devel python3-devel libqt5-qtbase-devel libopenssl-devel ``` Note that Bluez is not available on openSUSE so the native Bluetooth support won't be available in the client. diff --git a/doc/md/Installation_Instructions/Windows-Installation-Instructions.md b/doc/md/Installation_Instructions/Windows-Installation-Instructions.md index 6ac9e53b3..bc29aba6a 100644 --- a/doc/md/Installation_Instructions/Windows-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Windows-Installation-Instructions.md @@ -168,7 +168,7 @@ Install dependencies: ```sh sudo apt-get install --no-install-recommends git ca-certificates build-essential pkg-config \ -libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libpython3-dev qtbase5-dev libssl-dev +libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libpython3-dev qtbase5-dev libssl-dev ``` _note_ If you don't need the graphical components of the Proxmark3 client, you can skip the installation of `qtbase5-dev`. diff --git a/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md b/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md index 9519b4849..21cb8048c 100644 --- a/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md @@ -108,7 +108,7 @@ then, install proxmark dependencies: sudo apt-get install --no-install-recommends \ git ca-certificates build-essential pkg-config \ libreadline-dev gcc-arm-none-eabi libnewlib-dev \ - libbz2-dev libpython3-dev qtbase5-dev libssl-dev + libbz2-dev liblz4-dev libpython3-dev qtbase5-dev libssl-dev ``` _note_ diff --git a/docker/debian-bullseye/Dockerfile b/docker/debian-bullseye/Dockerfile index ff456b558..46cac1b2d 100644 --- a/docker/debian-bullseye/Dockerfile +++ b/docker/debian-bullseye/Dockerfile @@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get upgrade -y && \ apt-get dist-upgrade -y && \ - apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ apt-get clean RUN apt-get install -y python3-minimal && \ diff --git a/docker/kali/Dockerfile b/docker/kali/Dockerfile index 79d4bb9a6..0cf70c603 100644 --- a/docker/kali/Dockerfile +++ b/docker/kali/Dockerfile @@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get upgrade -y && \ apt-get dist-upgrade -y && \ - apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ apt-get clean RUN apt-get install -y python3-minimal && \ diff --git a/docker/opensuse-leap/Dockerfile b/docker/opensuse-leap/Dockerfile index 1af777d23..7e82c5f61 100644 --- a/docker/opensuse-leap/Dockerfile +++ b/docker/opensuse-leap/Dockerfile @@ -2,7 +2,7 @@ FROM opensuse/leap ENV LANG C # libqt5-qtbase-devel skipped -RUN zypper --non-interactive install --no-recommends shadow sudo git patterns-devel-base-devel_basis gcc-c++ readline-devel libbz2-devel bluez-devel python3-devel libopenssl-devel +RUN zypper --non-interactive install --no-recommends shadow sudo git patterns-devel-base-devel_basis gcc-c++ readline-devel libbz2-devel liblz4-devel bluez-devel python3-devel libopenssl-devel RUN zypper addrepo https://download.opensuse.org/repositories/home:wkazubski/15.4/home:wkazubski.repo && \ zypper --gpg-auto-import-keys refresh && \ diff --git a/docker/opensuse-tumbleweed/Dockerfile b/docker/opensuse-tumbleweed/Dockerfile index 169d087c3..04aaff64c 100644 --- a/docker/opensuse-tumbleweed/Dockerfile +++ b/docker/opensuse-tumbleweed/Dockerfile @@ -2,7 +2,7 @@ FROM opensuse/tumbleweed ENV LANG C # libqt5-qtbase-devel skipped -RUN zypper --non-interactive install --no-recommends shadow sudo git patterns-devel-base-devel_basis gcc-c++ readline-devel libbz2-devel bluez-devel python3-devel libopenssl-devel cross-arm-none-gcc12 cross-arm-none-newlib-devel +RUN zypper --non-interactive install --no-recommends shadow sudo git patterns-devel-base-devel_basis gcc-c++ readline-devel libbz2-devel liblz4-devel bluez-devel python3-devel libopenssl-devel cross-arm-none-gcc12 cross-arm-none-newlib-devel #RUN zypper addrepo https://download.opensuse.org/repositories/home:wkazubski/openSUSE_Tumbleweed/home:wkazubski.repo && \ # zypper --gpg-auto-import-keys refresh && \ diff --git a/docker/parrot-core-latest/Dockerfile b/docker/parrot-core-latest/Dockerfile index a33af1d4c..557ca4d17 100644 --- a/docker/parrot-core-latest/Dockerfile +++ b/docker/parrot-core-latest/Dockerfile @@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get upgrade -y && \ apt-get dist-upgrade -y && \ - apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ apt-get clean RUN apt-get install -y python3-minimal && \ diff --git a/docker/ubuntu-18.04/Dockerfile b/docker/ubuntu-18.04/Dockerfile index 29c958a4d..f2747bc33 100644 --- a/docker/ubuntu-18.04/Dockerfile +++ b/docker/ubuntu-18.04/Dockerfile @@ -7,7 +7,7 @@ ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get upgrade -y && \ apt-get dist-upgrade -y && \ - apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libbluetooth-dev libssl-dev sudo && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libssl-dev sudo && \ apt-get clean RUN apt-get install -y python3-minimal && \ diff --git a/docker/ubuntu-20.04/Dockerfile b/docker/ubuntu-20.04/Dockerfile index 72f6ec6cf..8a1cf03ef 100644 --- a/docker/ubuntu-20.04/Dockerfile +++ b/docker/ubuntu-20.04/Dockerfile @@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get upgrade -y && \ apt-get dist-upgrade -y && \ - apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ apt-get clean RUN apt-get install -y python3-minimal && \ diff --git a/docker/ubuntu-22.04/Dockerfile b/docker/ubuntu-22.04/Dockerfile index 9d867e785..e2d93c665 100644 --- a/docker/ubuntu-22.04/Dockerfile +++ b/docker/ubuntu-22.04/Dockerfile @@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get upgrade -y && \ apt-get dist-upgrade -y && \ - apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ apt-get clean RUN apt-get install -y python3-minimal && \ From 16812fe32b321e50437583873d21cf6ccd9cb2a1 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sat, 15 Jul 2023 23:15:25 +0200 Subject: [PATCH 0198/1034] add LZ4 to the lin & win CI --- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/ubuntu.yml | 6 +++--- .github/workflows/windows.yml | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 0ec56e054..e035578b4 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -41,7 +41,7 @@ jobs: run: sudo apt-get update - name: Install dependencies - run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev + run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev - name: Install Python dependencies run: | diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index acce10e3a..9887be49f 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -26,7 +26,7 @@ jobs: run: sudo apt-get update - name: Install dependencies - run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev + run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev - name: Install Python dependencies run: | @@ -58,7 +58,7 @@ jobs: run: sudo apt-get update - name: Install dependencies - run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev + run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev - name: Install Python dependencies run: | @@ -91,7 +91,7 @@ jobs: run: sudo apt-get update - name: Install dependencies - run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev + run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev - name: Install Python dependencies run: | diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 77c3dc70c..3c093f96b 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -110,6 +110,7 @@ jobs: gcc-arm-none-eabi libnewlib-dev libbz2-dev + liblz4-dev qtbase5-dev cmake libpython3-dev From 8c4404134da3749269ec8ffd6cb4963328d7d6a7 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sat, 15 Jul 2023 23:20:15 +0200 Subject: [PATCH 0199/1034] fix test and add changelog --- CHANGELOG.md | 1 + tools/pm3_tests.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 463a379a6..0c84a9e65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added support for LZ4 compressed hadnested tables (@doegox) - Changed `emv reader -v` - now tries to print found transactions logs (@iceman1001) - Added ISO4217 currency lookup (@iceman1001) - Fixed bad free in loadfilebinarykey fct. Thanks to @gentilkiwi diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 3a69dd5bc..ad50121f5 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -235,7 +235,7 @@ fi while true; do if $TESTALL || $TESTCOMMON; then echo -e "\n${C_BLUE}Testing common:${C_NC}" - if ! CheckFileExist "hardnested tables exists" "$RESOURCEPATH/hardnested_tables/bitflip_0_001_states.bin.bz2"; then break; fi + if ! CheckFileExist "hardnested tables exists" "$RESOURCEPATH/hardnested_tables/bitflip_0_001_states.bin.lz4"; then break; fi if ! CheckFileExist "simmodule fw file exists" "$RESOURCEPATH/sim013.bin"; then break; fi if ! CheckFileExist "iCLASS dictionary exists" "$DICPATH/iclass_default_keys.dic"; then break; fi if ! CheckFileExist "MFC dictionary exists" "$DICPATH/mfc_default_keys.dic"; then break; fi From b36d5fa04da2ef81763c9a8d808a640d5370fe4f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 16 Jul 2023 09:45:35 +0200 Subject: [PATCH 0200/1034] fix wrong memcpy offset --- client/src/cmdhfmfhard.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index 9c487a50d..e6581d830 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -359,7 +359,7 @@ static void init_bitflip_bitarrays(void) { } uint32_t filesize = (uint32_t)fsize; rewind(statesfile); - char *compressed_data = malloc(filesize); + char *compressed_data = calloc(filesize, sizeof(uint8_t)); if (compressed_data == NULL) { PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); fclose(statesfile); @@ -372,50 +372,53 @@ static void init_bitflip_bitarrays(void) { fclose(statesfile); exit(5); } - char *uncompressed_data = malloc((sizeof(uint32_t) * (1 << 19)) + sizeof(uint32_t)); + fclose(statesfile); + + char *uncompressed_data = calloc((sizeof(uint32_t) * (1 << 19)) + sizeof(uint32_t), sizeof(uint8_t)); if (uncompressed_data == NULL) { - PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); + PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); free(compressed_data); - fclose(statesfile); exit(4); } + LZ4F_decompressionContext_t ctx; LZ4F_errorCode_t result = LZ4F_createDecompressionContext(&ctx, LZ4F_VERSION); if (LZ4F_isError(result)) { PrintAndLogEx(ERR, "File read error with %s (3) Failed to create decompression context: %s. Aborting...\n", state_file_name, LZ4F_getErrorName(result)); free(compressed_data); free(uncompressed_data); - fclose(statesfile); exit(5); } + size_t expected_output_size = (sizeof(uint32_t) * (1 << 19)) + sizeof(uint32_t); size_t consumed_input_size = filesize; size_t generated_output_size = expected_output_size; result = LZ4F_decompress(ctx, uncompressed_data, &generated_output_size, compressed_data, &consumed_input_size, NULL); + LZ4F_freeDecompressionContext(ctx); free(compressed_data); + if (LZ4F_isError(result)) { PrintAndLogEx(ERR, "File read error with %s (3) %s. Aborting...\n", state_file_name, LZ4F_getErrorName(result)); free(uncompressed_data); - fclose(statesfile); exit(5); } if (generated_output_size != expected_output_size) { PrintAndLogEx(ERR, "File read error with %s (3) got %lu instead of %lu bytes. Aborting...\n", state_file_name, generated_output_size, expected_output_size); free(uncompressed_data); - fclose(statesfile); exit(5); } + uint32_t count = ((uint32_t *)uncompressed_data)[0]; + if ((float)count / (1 << 24) < IGNORE_BITFLIP_THRESHOLD) { uint32_t *bitset = (uint32_t *)malloc_bitarray(sizeof(uint32_t) * (1 << 19)); if (bitset == NULL) { PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); free(uncompressed_data); - fclose(statesfile); exit(4); } - memcpy(bitset, uncompressed_data + 1, sizeof(uint32_t) * (1 << 19)); + memcpy(bitset, uncompressed_data + sizeof(uint32_t), sizeof(uint32_t) * (1 << 19)); effective_bitflip[odd_even][num_effective_bitflips[odd_even]++] = bitflip; bitflip_bitarrays[odd_even][bitflip] = bitset; count_bitflip_bitarrays[odd_even][bitflip] = count; @@ -432,7 +435,7 @@ static void init_bitflip_bitarrays(void) { nlz4++; continue; } else if (open_bz2compressed) { - bz_stream compressed_stream; + fseek(statesfile, 0, SEEK_END); int fsize = ftell(statesfile); if (fsize == -1) { @@ -447,11 +450,12 @@ static void init_bitflip_bitarrays(void) { if (bytesread != filesize) { PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); fclose(statesfile); - //BZ2_bzDecompressEnd(&compressed_stream); exit(5); } fclose(statesfile); + uint32_t count = 0; + bz_stream compressed_stream; init_bunzip2(&compressed_stream, input_buffer, filesize, (char *)&count, sizeof(count)); int res = BZ2_bzDecompress(&compressed_stream); if (res != BZ_OK) { From 0094318515d7769d12ffb77e3c60681b01a3b28c Mon Sep 17 00:00:00 2001 From: kormax Date: Sun, 16 Jul 2023 14:46:30 +0300 Subject: [PATCH 0201/1034] Make ISO14443-A polling method more flexible --- armsrc/iso14443a.c | 138 +++++++++++++++++++++++----------- armsrc/iso14443a.h | 19 +++++ client/resources/ecplist.json | 2 +- 3 files changed, 116 insertions(+), 43 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 5416f2917..26a743114 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -142,6 +142,66 @@ Default HF 14a config is set to: */ static hf14a_config hf14aconfig = { 0, 0, 0, 0, 0 } ; + +// Polling frames and configurations + +/*static iso14a_polling_frame REQA_FRAME = { + { 0x26 }, 1, 7, 0 +};*/ + +static const iso14a_polling_frame WUPA_FRAME = { + { 0x52 }, 1, 7, 0, +}; + +static const iso14a_polling_frame MAGWUPA1_FRAME = { + { 0x7A }, 1, 7, 0 +}; + +static const iso14a_polling_frame MAGWUPA2_FRAME = { + { 0x7B }, 1, 7, 0 +}; + +static const iso14a_polling_frame MAGWUPA3_FRAME = { + { 0x7C }, 1, 7, 0 +}; + +static const iso14a_polling_frame MAGWUPA4_FRAME = { + { 0x7D }, 1, 7, 0 +}; + +static const iso14a_polling_frame ECP_FRAME = { + .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, + .frame_length=15, + .last_byte_bits=8, + .extra_delay=0 +}; + +static iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME }, + .frame_count=1, + .extra_timeout=0, +}; + +static iso14a_polling_parameters MAGSAFE_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=5, + .extra_timeout=0 +}; + +// Extra 100ms give enough time for Apple devices to proccess field info and make a decision +static iso14a_polling_parameters ECP_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME, ECP_FRAME }, + .frame_count=2, + .extra_timeout=100 +}; + +static iso14a_polling_parameters FULL_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=6, + .extra_timeout=100 +}; + + void printHf14aConfig(void) { DbpString(_CYAN_("HF 14a config")); Dbprintf(" [a] Anticol override.... %s%s%s", @@ -2508,57 +2568,34 @@ static void iso14a_set_ATS_times(const uint8_t *ats) { } } -static int GetATQA(uint8_t *resp, uint8_t *resp_par, bool use_ecp, bool use_magsafe) { -#define ECP_DELAY 10 -#define ECP_RETRY_TIMEOUT 100 -#define WUPA_RETRY_TIMEOUT 10 // 10ms - - - // 0x26 - REQA - // 0x52 - WAKE-UP - // 0x7A - MAGESAFE WAKE UP - uint8_t wupa[] = { ISO14443A_CMD_WUPA }; - - // if magsafe, set it outofbounds - if (use_magsafe) { - wupa[0] = MAGSAFE_CMD_WUPA_4; - } - - if (use_ecp) { - // In case a device was already selected, we send a S-BLOCK deselect to bring it into an idle state so it can be selected again - uint8_t deselect_cmd[] = {0xc2, 0xe0, 0xb4}; - ReaderTransmit(deselect_cmd, sizeof(deselect_cmd), NULL); - // Read response if present - (void) ReaderReceive(resp, resp_par); - } +static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters parameters) { + #define WUPA_RETRY_TIMEOUT 10 uint32_t save_iso14a_timeout = iso14a_get_timeout(); iso14a_set_timeout(1236 / 128 + 1); // response to WUPA is expected at exactly 1236/fc. No need to wait longer. bool first_try = true; - uint32_t retry_timeout = use_ecp ? ECP_RETRY_TIMEOUT : WUPA_RETRY_TIMEOUT; + uint32_t retry_timeout = WUPA_RETRY_TIMEOUT * parameters.frame_count + parameters.extra_timeout; uint32_t start_time; int len; - // we may need several tries if we did send an unknown command or a wrong authentication before... + uint8_t current_frame = 0; + do { - if (use_ecp && !first_try) { - uint8_t ecp[] = { 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}; - ReaderTransmit(ecp, sizeof(ecp), NULL); - SpinDelay(ECP_DELAY); + iso14a_polling_frame frame_parameters = parameters.frames[current_frame]; + + if (frame_parameters.last_byte_bits == 8) { + ReaderTransmit(frame_parameters.frame, frame_parameters.frame_length, NULL); + + } else { + ReaderTransmitBitsPar(frame_parameters.frame, frame_parameters.last_byte_bits, NULL, NULL); } - if (use_magsafe) { - if (wupa[0] == MAGSAFE_CMD_WUPA_4) { - wupa[0] = MAGSAFE_CMD_WUPA_1; - } else { - wupa[0]++; - } + if (frame_parameters.extra_delay) { + SpinDelay(frame_parameters.extra_delay); } - - // Broadcast for a card, WUPA (0x52) will force response from all cards in the field - ReaderTransmitBitsPar(wupa, 7, NULL, NULL); + // Receive the ATQA len = ReaderReceive(resp, resp_par); @@ -2568,16 +2605,33 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, bool use_ecp, bool use_mags } first_try = false; + + // Go over frame configurations + current_frame = current_frame < (parameters.frame_count - 1) ? current_frame + 1 : 0; } while (len == 0 && GetTickCountDelta(start_time) <= retry_timeout); iso14a_set_timeout(save_iso14a_timeout); return len; } + int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats) { return iso14443a_select_cardEx(uid_ptr, p_card, cuid_ptr, anticollision, num_cascades, no_rats, false, false); } + +// This method is temporary. Main intention is to move "special" polling frame configuration to the client +iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe) { + if (use_ecp && use_magsafe) { + return FULL_POLLING_PARAMETERS; + } else if (use_ecp) { + return ECP_POLLING_PARAMETERS; + } else if (use_magsafe) { + return MAGSAFE_POLLING_PARAMETERS; + } + return WUPA_POLLING_PARAMETERS; +} + // performs iso14443a anticollision (optional) and card select procedure // fills the uid and cuid pointer unless NULL // fills the card info record unless NULL @@ -2599,7 +2653,7 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint p_card->ats_len = 0; } - if (GetATQA(resp, resp_par, use_ecp, use_magsafe) == false) { + if (GetATQA(resp, resp_par, iso14a_get_polling_parameters(use_ecp, use_magsafe)) == false) { return 0; } @@ -2624,11 +2678,11 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint memcpy(p_card->uid, resp, 4); // select again? - if (GetATQA(resp, resp_par, false, false) == false) { + if (GetATQA(resp, resp_par, WUPA_POLLING_PARAMETERS) == false) { return 0; } - if (GetATQA(resp, resp_par, false, false) == false) { + if (GetATQA(resp, resp_par, WUPA_POLLING_PARAMETERS) == false) { return 0; } @@ -2827,7 +2881,7 @@ int iso14443a_fast_select_card(uint8_t *uid_ptr, uint8_t num_cascades) { uint8_t sak = 0x04; // cascade uid int cascade_level = 0; - if (!GetATQA(resp, resp_par, false, false)) { + if (!GetATQA(resp, resp_par, WUPA_POLLING_PARAMETERS)) { return 0; } diff --git a/armsrc/iso14443a.h b/armsrc/iso14443a.h index 104d6b680..186bebfb4 100644 --- a/armsrc/iso14443a.h +++ b/armsrc/iso14443a.h @@ -108,6 +108,24 @@ typedef enum { RESP_INDEX_PACK, } resp_index_t; +// Defines a frame that will be used in a polling sequence +// ECP Frames are up to (7 + 16) bytes long, this config should cover future and other cases +typedef struct { + uint8_t frame[32]; + uint8_t frame_length; + uint8_t last_byte_bits; + uint16_t extra_delay; +} iso14a_polling_frame; + +// Defines polling sequence configuration +// 4 magsafe, 1 wupa, 1 reqa, 1 ecp, 1 extra +typedef struct { + iso14a_polling_frame frames[8]; + uint8_t frame_count; + uint16_t extra_timeout; +} iso14a_polling_parameters; + + #ifndef AddCrc14A # define AddCrc14A(data, len) compute_crc(CRC_14443_A, (data), (len), (data)+(len), (data)+(len)+1) #endif @@ -148,6 +166,7 @@ void ReaderTransmitBitsPar(uint8_t *frame, uint16_t bits, uint8_t *par, uint32_t void ReaderTransmitPar(uint8_t *frame, uint16_t len, uint8_t *par, uint32_t *timing); uint16_t ReaderReceive(uint8_t *receivedAnswer, uint8_t *par); +iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe); void iso14443a_setup(uint8_t fpga_minor_mode); int iso14_apdu(uint8_t *cmd, uint16_t cmd_len, bool send_chaining, void *data, uint8_t *res); int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats); diff --git a/client/resources/ecplist.json b/client/resources/ecplist.json index 3902e2f2d..991f79f2b 100644 --- a/client/resources/ecplist.json +++ b/client/resources/ecplist.json @@ -58,7 +58,7 @@ }, { - "value": "6a02c3020602ffff", + "value": "6a02c3020002ffff", "name": "Access: Hotel: Hilton", "description": "TCI might be a wildcard before a reservation is made" }, From ad5b58436f163c4fd7d13043a87ecd7a9c0ddbb2 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 16 Jul 2023 15:22:24 +0200 Subject: [PATCH 0202/1034] text --- client/src/cmdhftexkom.c | 98 ++++++++++++++++++++++------------------ 1 file changed, 54 insertions(+), 44 deletions(-) diff --git a/client/src/cmdhftexkom.c b/client/src/cmdhftexkom.c index 2b54480ca..4164060f7 100644 --- a/client/src/cmdhftexkom.c +++ b/client/src/cmdhftexkom.c @@ -253,7 +253,7 @@ static bool TexcomTK13Decode(uint32_t *implengths, uint32_t implengthslen, char return false; if (verbose) - PrintAndLogEx(INFO, "raw bit string [%zu]: %s", strlen(bitstring), bitstring); + PrintAndLogEx(INFO, "raw bit string [%3zu]... %s", strlen(bitstring), bitstring); // add trailing impulse (some tags just ignore it) if (strlen(bitstring) % 2 != 0) { @@ -280,7 +280,7 @@ static bool TexcomTK13Decode(uint32_t *implengths, uint32_t implengthslen, char return false; if (verbose) - PrintAndLogEx(INFO, "bit string [%zu]: %s", strlen(cbitstring), cbitstring); + PrintAndLogEx(INFO, "bit string [%3zu].... %s", strlen(cbitstring), cbitstring); return ((strlen(cbitstring) == 64) && (strncmp(cbitstring, "1111111111111111", 16) == 0)); } @@ -324,8 +324,8 @@ static bool TexcomTK15Decode(uint32_t *implengths, uint32_t implengthslen, char return false; if (verbose) { - PrintAndLogEx(INFO, "raw bit string [%zu]: %s", strlen(bitstring), bitstring); - PrintAndLogEx(INFO, "bit string [%zu]: %s", strlen(cbitstring), cbitstring); + PrintAndLogEx(INFO, "raw bit string [%3zu]... %s", strlen(bitstring), bitstring); + PrintAndLogEx(INFO, "bit string [%3zu]....... %s", strlen(cbitstring), cbitstring); } return ((strlen(cbitstring) == 64) && (strncmp(cbitstring, "1111111111111111", 16) == 0)); @@ -420,7 +420,7 @@ static bool TexcomGeneralDecode(uint32_t *implengths, uint32_t implengthslen, ch } } if (verbose) - PrintAndLogEx(INFO, "General raw bit string [%zu]: %s", strlen(bitstring), bitstring); + PrintAndLogEx(INFO, "General raw bit string [%zu]... %s", strlen(bitstring), bitstring); return (!biterror && strlen(bitstring) > 0); } @@ -588,30 +588,38 @@ int read_texkom_uid(bool loop, bool verbose) { } bool crc = (TexcomTK13CRC(&card.tcode[3]) == card.tcode[7]); + bool printed = false; if (card.tcode[2] == 0x63) { - PrintAndLogEx(INFO, "TYPE..... TK13"); + PrintAndLogEx(INFO, "TYPE..... " _YELLOW_("TK13")); PrintAndLogEx(INFO, "UID...... " _GREEN_("%s"), sprint_hex(&card.tcode[3], 4)); if (verbose) { PrintAndLogEx(INFO, "CRC...... %s", (crc) ? _GREEN_("ok") : _RED_("fail")); } + printed = true; } else if (card.tcode[2] == 0xCA) { - PrintAndLogEx(INFO, "TYPE..... TK17"); + PrintAndLogEx(INFO, "TYPE..... " _YELLOW_("TK17")); PrintAndLogEx(INFO, "UID...... " _GREEN_("%s"), sprint_hex(&card.tcode[3], 4)); if (verbose) { PrintAndLogEx(INFO, "CRC...... %s", (crc) ? _GREEN_("ok") : _RED_("fail")); } + printed = true; } else if (card.tcode[2] == 0xFF && card.tcode[3] == 0xFF) { - PrintAndLogEx(INFO, "TYPE..... MMBIT"); + PrintAndLogEx(INFO, "TYPE..... " _YELLOW_("MMBIT")); PrintAndLogEx(INFO, "UID...... " _GREEN_("%s"), sprint_hex(&card.tcode[4], 3)); - crc = (MMBITCRC(&card.tcode[4]) == card.tcode[7] >> 4); if (verbose) { + crc = (MMBITCRC(&card.tcode[4]) == card.tcode[7] >> 4); PrintAndLogEx(INFO, "CRC...... %s", (crc) ? _GREEN_("ok") : _RED_("fail")); } + printed = true; } + if (verbose) { - PrintAndLogEx(INFO, "Raw... %s", sprint_hex(card.tcode, 8)); - PrintAndLogEx(INFO, "Raw Reversed... %s", sprint_hex(card.rtcode, 8)); + PrintAndLogEx(INFO, "Raw....... " _YELLOW_("%s"), sprint_hex(card.tcode, 8)); + PrintAndLogEx(INFO, "Raw rev... " _YELLOW_("%s"), sprint_hex(card.rtcode, 8)); + } + if (printed && loop) { + PrintAndLogEx(NORMAL, ""); } } @@ -753,82 +761,84 @@ static int CmdHFTexkomReader(const char *Cmd) { TexcomReverseCode(tcode, 8, rtcode); if (verbose) { - PrintAndLogEx(INFO, "Hex code: %s", sprint_hex(tcode, 8)); - PrintAndLogEx(INFO, "Hex code reversed: %s", sprint_hex(rtcode, 8)); + PrintAndLogEx(INFO, "Hex code............ %s", sprint_hex(tcode, 8)); + PrintAndLogEx(INFO, "Hex code rev........ %s", sprint_hex(rtcode, 8)); } if (tcode[0] == 0xff && tcode[1] == 0xff) { // decoding code if (verbose == false) { - PrintAndLogEx(INFO, "Texkom: %s", sprint_hex(tcode, 8)); - PrintAndLogEx(INFO, "Texkom duplicator: %s", sprint_hex(rtcode, 8)); + PrintAndLogEx(SUCCESS, "Texkom.............. %s", sprint_hex(tcode, 8)); + PrintAndLogEx(SUCCESS, "Texkom duplicator... %s", sprint_hex(rtcode, 8)); } if (codefound == TexkomModTK13) - PrintAndLogEx(INFO, "modulation: TK13"); + PrintAndLogEx(SUCCESS, "Modulation.......... " _YELLOW_("TK13")); else if (codefound == TexkomModTK15) - PrintAndLogEx(INFO, "modulation: TK15"); + PrintAndLogEx(SUCCESS, "Modulation.......... " _YELLOW_("TK15")); else if (codefound == TexkomModTK17) - PrintAndLogEx(INFO, "modulation: TK17"); + PrintAndLogEx(SUCCESS, "Modulation.......... " _YELLOW_("TK17")); else - PrintAndLogEx(INFO, "modulation: unknown"); + PrintAndLogEx(INFO, "Modulation.......... " _YELLOW_("unknown")); if (tcode[2] == 0x63) { // TK13 and TK15. differs only by timings. TK15 has impulse 0 and 1 lengths very close to each other. if (codefound == TexkomModTK13) - PrintAndLogEx(INFO, "type : TK13"); + PrintAndLogEx(SUCCESS, "Type................ " _YELLOW_("TK13")); else if (codefound == TexkomModTK15) - PrintAndLogEx(INFO, "type : TK15"); + PrintAndLogEx(SUCCESS, "Type................ " _YELLOW_("TK15")); else - PrintAndLogEx(WARNING, " mod type: WRONG"); - - PrintAndLogEx(INFO, "uid : %s", sprint_hex(&tcode[3], 4)); + PrintAndLogEx(WARNING, "Type................ " _RED_("fail")); + PrintAndLogEx(SUCCESS, "UID................. " _YELLOW_("%s"), sprint_hex(&tcode[3], 4)); + PrintAndLogEx(INFO, "CRC................ " NOLF); if (TexcomTK13CRC(&tcode[3]) == tcode[7]) - PrintAndLogEx(INFO, "crc : OK"); + PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); else - PrintAndLogEx(WARNING, "crc : WRONG"); + PrintAndLogEx(NORMAL, "( " _RED_("fail") " )"); } else if (tcode[2] == 0xFF && tcode[3] == 0xFF) { // MMBIT if (codefound != TexkomModTK13 && codefound != TexkomModTK15) { - PrintAndLogEx(WARNING, " mod type: WRONG"); + PrintAndLogEx(WARNING, "Mod type............ " _RED_("fail")); } - PrintAndLogEx(INFO, "type : MMBIT"); - PrintAndLogEx(INFO, "uid : %s", sprint_hex(&tcode[4], 3)); - + PrintAndLogEx(SUCCESS, "Type................ " _YELLOW_("MMBIT")); + PrintAndLogEx(SUCCESS, "UID................. " _YELLOW_("%s"), sprint_hex(&tcode[4], 3)); + PrintAndLogEx(INFO, "CRC................ " NOLF); if (MMBITCRC(&tcode[4]) == tcode[7] >> 4) - PrintAndLogEx(INFO, "crc : OK"); + PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); else - PrintAndLogEx(WARNING, "crc : WRONG"); + PrintAndLogEx(NORMAL, "( " _RED_("fail") " )"); + + } else if (tcode[2] == 0xCA) { // TK17 if (codefound != TexkomModTK17) { - PrintAndLogEx(WARNING, " mod type: WRONG"); + PrintAndLogEx(WARNING, "Mod type............ " _RED_("fail")); } - PrintAndLogEx(INFO, "type : TK17"); - PrintAndLogEx(INFO, "uid : %s", sprint_hex(&tcode[3], 4)); - + PrintAndLogEx(SUCCESS, "Type............... " _YELLOW_("TK17")); + PrintAndLogEx(SUCCESS, "UID................ " _YELLOW_("%s"), sprint_hex(&tcode[3], 4)); + PrintAndLogEx(INFO, "CRC................ " NOLF); if (TexcomTK17CRC(&tcode[3]) == tcode[7]) - PrintAndLogEx(INFO, "crc : OK"); + PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); else - PrintAndLogEx(WARNING, "crc : WRONG"); + PrintAndLogEx(NORMAL, "( " _RED_("fail") " )"); } else { - PrintAndLogEx(INFO, "type : unknown"); - PrintAndLogEx(INFO, "uid : %s (maybe)", sprint_hex(&tcode[3], 4)); + PrintAndLogEx(INFO, "Type............... unknown"); + PrintAndLogEx(INFO, "UID................ %s (maybe)", sprint_hex(&tcode[3], 4)); } } else { - PrintAndLogEx(ERR, "Code have no preamble FFFF: %s", sprint_hex(tcode, 8)); + PrintAndLogEx(ERR, "Code have no preamble FFFF... %s", sprint_hex(tcode, 8)); } } else { if (strlen(genbitstring) > 0) - PrintAndLogEx(INFO, "General decoding bitstring: %s", genbitstring); + PrintAndLogEx(INFO, "General decoding bitstring... %s", genbitstring); if (strlen(bitstring) > 0) - PrintAndLogEx(INFO, "last raw bit string [%zu]: %s", strlen(bitstring), bitstring); + PrintAndLogEx(INFO, "last raw bit string [%zu].... %s", strlen(bitstring), bitstring); if (strlen(cbitstring) > 0) - PrintAndLogEx(INFO, "last bit string [%zu]: %s", strlen(cbitstring), cbitstring); + PrintAndLogEx(INFO, "last bit string [%zu]........ %s", strlen(cbitstring), cbitstring); PrintAndLogEx(ERR, "Texkom card is not found"); } From 8fc05ad2a5bc01cf5bd00000fff297c19405f65d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 16 Jul 2023 15:30:43 +0200 Subject: [PATCH 0203/1034] style --- armsrc/iso14443a.c | 66 +++++++++++++++++++++++----------------------- armsrc/iso14443a.h | 6 ++--- doc/commands.json | 4 +-- 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 26a743114..da1bfbc2f 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -143,62 +143,62 @@ Default HF 14a config is set to: static hf14a_config hf14aconfig = { 0, 0, 0, 0, 0 } ; -// Polling frames and configurations +// Polling frames and configurations -/*static iso14a_polling_frame REQA_FRAME = { - { 0x26 }, 1, 7, 0 +/*static iso14a_polling_frame REQA_FRAME = { + { 0x26 }, 1, 7, 0 };*/ -static const iso14a_polling_frame WUPA_FRAME = { +static const iso14a_polling_frame WUPA_FRAME = { { 0x52 }, 1, 7, 0, }; -static const iso14a_polling_frame MAGWUPA1_FRAME = { - { 0x7A }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA1_FRAME = { + { 0x7A }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA2_FRAME = { - { 0x7B }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA2_FRAME = { + { 0x7B }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA3_FRAME = { - { 0x7C }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA3_FRAME = { + { 0x7C }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA4_FRAME = { - { 0x7D }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA4_FRAME = { + { 0x7D }, 1, 7, 0 }; -static const iso14a_polling_frame ECP_FRAME = { - .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, - .frame_length=15, - .last_byte_bits=8, - .extra_delay=0 +static const iso14a_polling_frame ECP_FRAME = { + .frame = { 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, + .frame_length = 15, + .last_byte_bits = 8, + .extra_delay = 0 }; static iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME }, - .frame_count=1, - .extra_timeout=0, + .frames = { WUPA_FRAME }, + .frame_count = 1, + .extra_timeout = 0, }; static iso14a_polling_parameters MAGSAFE_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=5, - .extra_timeout=0 + .frames = { WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count = 5, + .extra_timeout = 0 }; // Extra 100ms give enough time for Apple devices to proccess field info and make a decision static iso14a_polling_parameters ECP_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, ECP_FRAME }, - .frame_count=2, - .extra_timeout=100 + .frames = { WUPA_FRAME, ECP_FRAME }, + .frame_count = 2, + .extra_timeout = 100 }; static iso14a_polling_parameters FULL_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=6, - .extra_timeout=100 + .frames = { WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count = 6, + .extra_timeout = 100 }; @@ -2570,7 +2570,7 @@ static void iso14a_set_ATS_times(const uint8_t *ats) { static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters parameters) { - #define WUPA_RETRY_TIMEOUT 10 +#define WUPA_RETRY_TIMEOUT 10 uint32_t save_iso14a_timeout = iso14a_get_timeout(); iso14a_set_timeout(1236 / 128 + 1); // response to WUPA is expected at exactly 1236/fc. No need to wait longer. @@ -2587,7 +2587,7 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters p if (frame_parameters.last_byte_bits == 8) { ReaderTransmit(frame_parameters.frame, frame_parameters.frame_length, NULL); - + } else { ReaderTransmitBitsPar(frame_parameters.frame, frame_parameters.last_byte_bits, NULL, NULL); } @@ -2595,7 +2595,7 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters p if (frame_parameters.extra_delay) { SpinDelay(frame_parameters.extra_delay); } - + // Receive the ATQA len = ReaderReceive(resp, resp_par); @@ -2628,7 +2628,7 @@ iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_m return ECP_POLLING_PARAMETERS; } else if (use_magsafe) { return MAGSAFE_POLLING_PARAMETERS; - } + } return WUPA_POLLING_PARAMETERS; } diff --git a/armsrc/iso14443a.h b/armsrc/iso14443a.h index 186bebfb4..80a223379 100644 --- a/armsrc/iso14443a.h +++ b/armsrc/iso14443a.h @@ -120,9 +120,9 @@ typedef struct { // Defines polling sequence configuration // 4 magsafe, 1 wupa, 1 reqa, 1 ecp, 1 extra typedef struct { - iso14a_polling_frame frames[8]; - uint8_t frame_count; - uint16_t extra_timeout; + iso14a_polling_frame frames[8]; + uint8_t frame_count; + uint16_t extra_timeout; } iso14a_polling_parameters; diff --git a/doc/commands.json b/doc/commands.json index 40ae8cbc9..775087e22 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -4806,7 +4806,7 @@ }, "hf mf staticnested": { "command": "hf mf staticnested", - "description": "Execute Nested attack against MIFARE Classic card with static nonce for key recovery. Supply a known key from one block to recover all keys", + "description": "Execute static nested attack against MIFARE Classic card with static nonce for key recovery. Supply a known key from one block to recover all keys", "notes": [ "hf mf staticnested --mini --blk 0 -a -k FFFFFFFFFFFF", "hf mf staticnested --1k --blk 0 -a -k FFFFFFFFFFFF", @@ -11689,6 +11689,6 @@ "metadata": { "commands_extracted": 679, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-14T16:33:40" + "extracted_on": "2023-07-16T13:30:30" } } \ No newline at end of file From c4f1b0768dd290026b91dfb4d9a77242fabd48a5 Mon Sep 17 00:00:00 2001 From: kormax Date: Sun, 16 Jul 2023 16:49:31 +0300 Subject: [PATCH 0204/1034] Pass polling config via pointer instead of by-value, thus saving RAM --- armsrc/iso14443a.c | 100 ++++++++++++++++++++++----------------------- armsrc/iso14443a.h | 8 ++-- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index da1bfbc2f..8cab781e4 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -143,62 +143,62 @@ Default HF 14a config is set to: static hf14a_config hf14aconfig = { 0, 0, 0, 0, 0 } ; -// Polling frames and configurations +// Polling frames and configurations -/*static iso14a_polling_frame REQA_FRAME = { - { 0x26 }, 1, 7, 0 +/*static iso14a_polling_frame REQA_FRAME = { + { 0x26 }, 1, 7, 0 };*/ -static const iso14a_polling_frame WUPA_FRAME = { +static const iso14a_polling_frame WUPA_FRAME = { { 0x52 }, 1, 7, 0, }; -static const iso14a_polling_frame MAGWUPA1_FRAME = { - { 0x7A }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA1_FRAME = { + { 0x7A }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA2_FRAME = { - { 0x7B }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA2_FRAME = { + { 0x7B }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA3_FRAME = { - { 0x7C }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA3_FRAME = { + { 0x7C }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA4_FRAME = { - { 0x7D }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA4_FRAME = { + { 0x7D }, 1, 7, 0 }; -static const iso14a_polling_frame ECP_FRAME = { - .frame = { 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, - .frame_length = 15, - .last_byte_bits = 8, - .extra_delay = 0 +static const iso14a_polling_frame ECP_FRAME = { + .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, + .frame_length=15, + .last_byte_bits=8, + .extra_delay=0 }; static iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { - .frames = { WUPA_FRAME }, - .frame_count = 1, - .extra_timeout = 0, + .frames={ WUPA_FRAME }, + .frame_count=1, + .extra_timeout=0, }; static iso14a_polling_parameters MAGSAFE_POLLING_PARAMETERS = { - .frames = { WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count = 5, - .extra_timeout = 0 + .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=5, + .extra_timeout=0 }; // Extra 100ms give enough time for Apple devices to proccess field info and make a decision static iso14a_polling_parameters ECP_POLLING_PARAMETERS = { - .frames = { WUPA_FRAME, ECP_FRAME }, - .frame_count = 2, - .extra_timeout = 100 + .frames={ WUPA_FRAME, ECP_FRAME }, + .frame_count=2, + .extra_timeout=100 }; static iso14a_polling_parameters FULL_POLLING_PARAMETERS = { - .frames = { WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count = 6, - .extra_timeout = 100 + .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=6, + .extra_timeout=100 }; @@ -2569,33 +2569,32 @@ static void iso14a_set_ATS_times(const uint8_t *ats) { } -static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters parameters) { -#define WUPA_RETRY_TIMEOUT 10 +static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters *polling_parameters) { + #define WUPA_RETRY_TIMEOUT 10 uint32_t save_iso14a_timeout = iso14a_get_timeout(); iso14a_set_timeout(1236 / 128 + 1); // response to WUPA is expected at exactly 1236/fc. No need to wait longer. bool first_try = true; - uint32_t retry_timeout = WUPA_RETRY_TIMEOUT * parameters.frame_count + parameters.extra_timeout; + uint32_t retry_timeout = WUPA_RETRY_TIMEOUT * polling_parameters->frame_count + polling_parameters->extra_timeout; uint32_t start_time; int len; uint8_t current_frame = 0; do { - iso14a_polling_frame frame_parameters = parameters.frames[current_frame]; - - if (frame_parameters.last_byte_bits == 8) { - ReaderTransmit(frame_parameters.frame, frame_parameters.frame_length, NULL); + iso14a_polling_frame *frame_parameters = &polling_parameters->frames[current_frame]; + if (frame_parameters->last_byte_bits == 8) { + ReaderTransmit(frame_parameters->frame, frame_parameters->frame_length, NULL); } else { - ReaderTransmitBitsPar(frame_parameters.frame, frame_parameters.last_byte_bits, NULL, NULL); + ReaderTransmitBitsPar(frame_parameters->frame, frame_parameters->last_byte_bits, NULL, NULL); } - if (frame_parameters.extra_delay) { - SpinDelay(frame_parameters.extra_delay); + if (frame_parameters->extra_delay) { + SpinDelay(frame_parameters->extra_delay); } - + // Receive the ATQA len = ReaderReceive(resp, resp_par); @@ -2606,8 +2605,8 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters p first_try = false; - // Go over frame configurations - current_frame = current_frame < (parameters.frame_count - 1) ? current_frame + 1 : 0; + // Go over frame configurations, loop back when we reach the end + current_frame = current_frame < (polling_parameters->frame_count - 1) ? current_frame + 1 : 0; } while (len == 0 && GetTickCountDelta(start_time) <= retry_timeout); iso14a_set_timeout(save_iso14a_timeout); @@ -2616,7 +2615,7 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters p int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats) { - return iso14443a_select_cardEx(uid_ptr, p_card, cuid_ptr, anticollision, num_cascades, no_rats, false, false); + return iso14443a_select_cardEx(uid_ptr, p_card, cuid_ptr, anticollision, num_cascades, no_rats, &WUPA_POLLING_PARAMETERS); } @@ -2628,7 +2627,7 @@ iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_m return ECP_POLLING_PARAMETERS; } else if (use_magsafe) { return MAGSAFE_POLLING_PARAMETERS; - } + } return WUPA_POLLING_PARAMETERS; } @@ -2638,7 +2637,7 @@ iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_m // if anticollision is false, then the UID must be provided in uid_ptr[] // and num_cascades must be set (1: 4 Byte UID, 2: 7 Byte UID, 3: 10 Byte UID) // requests ATS unless no_rats is true -int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats, bool use_ecp, bool use_magsafe) { +int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats, iso14a_polling_parameters *polling_parameters) { uint8_t resp[MAX_FRAME_SIZE] = {0}; // theoretically. A usual RATS will be much smaller uint8_t resp_par[MAX_PARITY_SIZE] = {0}; @@ -2653,7 +2652,7 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint p_card->ats_len = 0; } - if (GetATQA(resp, resp_par, iso14a_get_polling_parameters(use_ecp, use_magsafe)) == false) { + if (GetATQA(resp, resp_par, polling_parameters) == false) { return 0; } @@ -2678,11 +2677,11 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint memcpy(p_card->uid, resp, 4); // select again? - if (GetATQA(resp, resp_par, WUPA_POLLING_PARAMETERS) == false) { + if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == false) { return 0; } - if (GetATQA(resp, resp_par, WUPA_POLLING_PARAMETERS) == false) { + if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == false) { return 0; } @@ -2881,7 +2880,7 @@ int iso14443a_fast_select_card(uint8_t *uid_ptr, uint8_t num_cascades) { uint8_t sak = 0x04; // cascade uid int cascade_level = 0; - if (!GetATQA(resp, resp_par, WUPA_POLLING_PARAMETERS)) { + if (!GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS)) { return 0; } @@ -3089,7 +3088,8 @@ void ReaderIso14443a(PacketCommandNG *c) { // if failed selecting, turn off antenna and quite. if (!(param & ISO14A_NO_SELECT)) { iso14a_card_select_t *card = (iso14a_card_select_t *)buf; - arg0 = iso14443a_select_cardEx(NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), (param & ISO14A_USE_ECP), (param & ISO14A_USE_MAGSAFE)); + iso14a_polling_parameters polling_parameters = iso14a_get_polling_parameters(param & ISO14A_USE_ECP, param & ISO14A_USE_MAGSAFE); + arg0 = iso14443a_select_cardEx(NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), &polling_parameters); FpgaDisableTracing(); reply_mix(CMD_ACK, arg0, card->uidlen, 0, buf, sizeof(iso14a_card_select_t)); diff --git a/armsrc/iso14443a.h b/armsrc/iso14443a.h index 80a223379..98793a02f 100644 --- a/armsrc/iso14443a.h +++ b/armsrc/iso14443a.h @@ -120,9 +120,9 @@ typedef struct { // Defines polling sequence configuration // 4 magsafe, 1 wupa, 1 reqa, 1 ecp, 1 extra typedef struct { - iso14a_polling_frame frames[8]; - uint8_t frame_count; - uint16_t extra_timeout; + iso14a_polling_frame frames[8]; + uint8_t frame_count; + uint16_t extra_timeout; } iso14a_polling_parameters; @@ -170,7 +170,7 @@ iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_m void iso14443a_setup(uint8_t fpga_minor_mode); int iso14_apdu(uint8_t *cmd, uint16_t cmd_len, bool send_chaining, void *data, uint8_t *res); int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats); -int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats, bool use_ecp, bool use_magsafe); +int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats, iso14a_polling_parameters *polling_parameters); int iso14443a_fast_select_card(uint8_t *uid_ptr, uint8_t num_cascades); void iso14a_set_trigger(bool enable); From 45ca9ab4d6e7f492ea8d0880231e80a8a33fa6e0 Mon Sep 17 00:00:00 2001 From: kormax Date: Sun, 16 Jul 2023 16:56:07 +0300 Subject: [PATCH 0205/1034] Reduce struct memory footprint by reducing array sizes --- armsrc/iso14443a.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/armsrc/iso14443a.h b/armsrc/iso14443a.h index 98793a02f..abe04ac46 100644 --- a/armsrc/iso14443a.h +++ b/armsrc/iso14443a.h @@ -109,18 +109,18 @@ typedef enum { } resp_index_t; // Defines a frame that will be used in a polling sequence -// ECP Frames are up to (7 + 16) bytes long, this config should cover future and other cases +// ECP Frames are up to (7 + 16) bytes long, 24 bytes should cover future and other cases typedef struct { - uint8_t frame[32]; + uint8_t frame[24]; uint8_t frame_length; uint8_t last_byte_bits; uint16_t extra_delay; } iso14a_polling_frame; // Defines polling sequence configuration -// 4 magsafe, 1 wupa, 1 reqa, 1 ecp, 1 extra +// 6 would be enough for 4 magsafe, 1 wupa, 1 ecp, typedef struct { - iso14a_polling_frame frames[8]; + iso14a_polling_frame frames[6]; uint8_t frame_count; uint16_t extra_timeout; } iso14a_polling_parameters; From a9cba025144419b8bf7b1ac784888ceca43b0722 Mon Sep 17 00:00:00 2001 From: kormax Date: Sun, 16 Jul 2023 17:39:32 +0300 Subject: [PATCH 0206/1034] Move custom polling frame generation logic to client --- armsrc/iso14443a.c | 65 ++++----------------------------- armsrc/iso14443a.h | 19 ---------- client/src/cmdhf14a.c | 83 +++++++++++++++++++++++++++++++++++++++---- client/src/cmdhf14a.h | 1 + include/mifare.h | 20 ++++++++++- 5 files changed, 102 insertions(+), 86 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 8cab781e4..3619155da 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -145,61 +145,16 @@ static hf14a_config hf14aconfig = { 0, 0, 0, 0, 0 } ; // Polling frames and configurations -/*static iso14a_polling_frame REQA_FRAME = { - { 0x26 }, 1, 7, 0 -};*/ - static const iso14a_polling_frame WUPA_FRAME = { { 0x52 }, 1, 7, 0, }; -static const iso14a_polling_frame MAGWUPA1_FRAME = { - { 0x7A }, 1, 7, 0 -}; - -static const iso14a_polling_frame MAGWUPA2_FRAME = { - { 0x7B }, 1, 7, 0 -}; - -static const iso14a_polling_frame MAGWUPA3_FRAME = { - { 0x7C }, 1, 7, 0 -}; - -static const iso14a_polling_frame MAGWUPA4_FRAME = { - { 0x7D }, 1, 7, 0 -}; - -static const iso14a_polling_frame ECP_FRAME = { - .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, - .frame_length=15, - .last_byte_bits=8, - .extra_delay=0 -}; - static iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { .frames={ WUPA_FRAME }, .frame_count=1, .extra_timeout=0, }; -static iso14a_polling_parameters MAGSAFE_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=5, - .extra_timeout=0 -}; - -// Extra 100ms give enough time for Apple devices to proccess field info and make a decision -static iso14a_polling_parameters ECP_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, ECP_FRAME }, - .frame_count=2, - .extra_timeout=100 -}; - -static iso14a_polling_parameters FULL_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=6, - .extra_timeout=100 -}; void printHf14aConfig(void) { @@ -2619,18 +2574,6 @@ int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32 } -// This method is temporary. Main intention is to move "special" polling frame configuration to the client -iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe) { - if (use_ecp && use_magsafe) { - return FULL_POLLING_PARAMETERS; - } else if (use_ecp) { - return ECP_POLLING_PARAMETERS; - } else if (use_magsafe) { - return MAGSAFE_POLLING_PARAMETERS; - } - return WUPA_POLLING_PARAMETERS; -} - // performs iso14443a anticollision (optional) and card select procedure // fills the uid and cuid pointer unless NULL // fills the card info record unless NULL @@ -3088,8 +3031,12 @@ void ReaderIso14443a(PacketCommandNG *c) { // if failed selecting, turn off antenna and quite. if (!(param & ISO14A_NO_SELECT)) { iso14a_card_select_t *card = (iso14a_card_select_t *)buf; - iso14a_polling_parameters polling_parameters = iso14a_get_polling_parameters(param & ISO14A_USE_ECP, param & ISO14A_USE_MAGSAFE); - arg0 = iso14443a_select_cardEx(NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), &polling_parameters); + + arg0 = iso14443a_select_cardEx( + NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), + (param & ISO14A_USE_CUSTOM_POLLING) ? (iso14a_polling_parameters *)cmd : &WUPA_POLLING_PARAMETER + ); + // This can be improved by adding a cmd parser pointer and moving it by struct length to allow combining data with polling params FpgaDisableTracing(); reply_mix(CMD_ACK, arg0, card->uidlen, 0, buf, sizeof(iso14a_card_select_t)); diff --git a/armsrc/iso14443a.h b/armsrc/iso14443a.h index abe04ac46..817ee7df4 100644 --- a/armsrc/iso14443a.h +++ b/armsrc/iso14443a.h @@ -108,24 +108,6 @@ typedef enum { RESP_INDEX_PACK, } resp_index_t; -// Defines a frame that will be used in a polling sequence -// ECP Frames are up to (7 + 16) bytes long, 24 bytes should cover future and other cases -typedef struct { - uint8_t frame[24]; - uint8_t frame_length; - uint8_t last_byte_bits; - uint16_t extra_delay; -} iso14a_polling_frame; - -// Defines polling sequence configuration -// 6 would be enough for 4 magsafe, 1 wupa, 1 ecp, -typedef struct { - iso14a_polling_frame frames[6]; - uint8_t frame_count; - uint16_t extra_timeout; -} iso14a_polling_parameters; - - #ifndef AddCrc14A # define AddCrc14A(data, len) compute_crc(CRC_14443_A, (data), (len), (data)+(len), (data)+(len)+1) #endif @@ -166,7 +148,6 @@ void ReaderTransmitBitsPar(uint8_t *frame, uint16_t bits, uint8_t *par, uint32_t void ReaderTransmitPar(uint8_t *frame, uint16_t len, uint8_t *par, uint32_t *timing); uint16_t ReaderReceive(uint8_t *receivedAnswer, uint8_t *par); -iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe); void iso14443a_setup(uint8_t fpga_minor_mode); int iso14_apdu(uint8_t *cmd, uint16_t cmd_len, bool send_chaining, void *data, uint8_t *res); int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats); diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index a8ec8a60d..61423cc48 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -434,6 +434,71 @@ int Hf14443_4aGetCardData(iso14a_card_select_t *card) { return 0; } +iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe) { + + iso14a_polling_frame WUPA_FRAME = { + { 0x52 }, 1, 7, 0, + }; + + iso14a_polling_frame MAGWUPA1_FRAME = { + { 0x7A }, 1, 7, 0 + }; + + iso14a_polling_frame MAGWUPA2_FRAME = { + { 0x7B }, 1, 7, 0 + }; + + iso14a_polling_frame MAGWUPA3_FRAME = { + { 0x7C }, 1, 7, 0 + }; + + iso14a_polling_frame MAGWUPA4_FRAME = { + { 0x7D }, 1, 7, 0 + }; + + iso14a_polling_frame ECP_FRAME = { + .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, + .frame_length=15, + .last_byte_bits=8, + .extra_delay=0 + }; + + iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME }, + .frame_count=1, + .extra_timeout=0, + }; + + iso14a_polling_parameters MAGSAFE_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=5, + .extra_timeout=0 + }; + + // Extra 100ms give enough time for Apple devices to proccess field info and make a decision + iso14a_polling_parameters ECP_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME, ECP_FRAME }, + .frame_count=2, + .extra_timeout=100 + }; + + iso14a_polling_parameters FULL_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=6, + .extra_timeout=100 + }; + + if (use_ecp && use_magsafe) { + return FULL_POLLING_PARAMETERS; + } else if (use_ecp) { + return ECP_POLLING_PARAMETERS; + } else if (use_magsafe) { + return MAGSAFE_POLLING_PARAMETERS; + } + return WUPA_POLLING_PARAMETERS; +} + + static int CmdHF14AReader(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf 14a reader", @@ -473,12 +538,10 @@ static int CmdHF14AReader(const char *Cmd) { cm |= ISO14A_NO_RATS; } - if (arg_get_lit(ctx, 5)) { - cm |= ISO14A_USE_ECP; - } - - if (arg_get_lit(ctx, 6)) { - cm |= ISO14A_USE_MAGSAFE; + iso14a_polling_parameters polling_parameters; + if (arg_get_lit(ctx, 5) || arg_get_lit(ctx, 6)) { + cm |= ISO14A_USE_CUSTOM_POLLING; + polling_parameters = iso14a_get_polling_parameters(arg_get_lit(ctx, 5), arg_get_lit(ctx, 6)); } bool continuous = arg_get_lit(ctx, 7); @@ -494,7 +557,13 @@ static int CmdHF14AReader(const char *Cmd) { } do { clearCommandBuffer(); - SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, NULL, 0); + + if (cm & ISO14A_USE_CUSTOM_POLLING) { + SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, (uint8_t *)&polling_parameters, sizeof(polling_parameters)); + } else { + SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, NULL, 0); + } + if (ISO14A_CONNECT & cm) { PacketResponseNG resp; diff --git a/client/src/cmdhf14a.h b/client/src/cmdhf14a.h index a811db66b..ff6d80318 100644 --- a/client/src/cmdhf14a.h +++ b/client/src/cmdhf14a.h @@ -52,6 +52,7 @@ int Hf14443_4aGetCardData(iso14a_card_select_t *card); int ExchangeAPDU14a(uint8_t *datain, int datainlen, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen); int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, bool silentMode); +iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe); int SelectCard14443A_4(bool disconnect, bool verbose, iso14a_card_select_t *card); bool Get_apdu_in_framing(void); diff --git a/include/mifare.h b/include/mifare.h index e66df50aa..cf3b51511 100644 --- a/include/mifare.h +++ b/include/mifare.h @@ -75,9 +75,27 @@ typedef enum ISO14A_COMMAND { ISO14A_NO_RATS = (1 << 9), ISO14A_SEND_CHAINING = (1 << 10), ISO14A_USE_ECP = (1 << 11), - ISO14A_USE_MAGSAFE = (1 << 12) + ISO14A_USE_MAGSAFE = (1 << 12), + ISO14A_USE_CUSTOM_POLLING = (1 << 13) } iso14a_command_t; +// Defines a frame that will be used in a polling sequence +// ECP Frames are up to (7 + 16) bytes long, 24 bytes should cover future and other cases +typedef struct { + uint8_t frame[24]; + uint8_t frame_length; + uint8_t last_byte_bits; + uint16_t extra_delay; +} iso14a_polling_frame; + +// Defines polling sequence configuration +// 6 would be enough for 4 magsafe, 1 wupa, 1 ecp, +typedef struct { + iso14a_polling_frame frames[6]; + uint8_t frame_count; + uint16_t extra_timeout; +} iso14a_polling_parameters; + typedef struct { uint8_t *response; uint8_t *modulation; From a54097e19cddf6ceee9dc9deccacb02d432cfd1e Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sun, 16 Jul 2023 17:25:43 +0200 Subject: [PATCH 0207/1034] fix archlinux and fedora dockers --- docker/archlinux/Dockerfile | 3 +-- docker/archlinux/README.md | 6 ++++++ docker/archlinux/run_tests.sh | 5 +++++ docker/fedora-36/Dockerfile | 2 +- docker/fedora-36/docker_rm.sh | 1 + docker/fedora-37/Dockerfile | 2 +- docker/fedora-37/docker_rm.sh | 1 + 7 files changed, 16 insertions(+), 4 deletions(-) diff --git a/docker/archlinux/Dockerfile b/docker/archlinux/Dockerfile index 93584c098..18f573cb2 100644 --- a/docker/archlinux/Dockerfile +++ b/docker/archlinux/Dockerfile @@ -5,10 +5,9 @@ RUN pacman -Syu --noconfirm RUN pacman-db-upgrade # qt5-base skipped # bluez skipped, can't be installed in docker -RUN pacman -S --noconfirm sudo git base-devel cmake libusb readline bzip2 arm-none-eabi-gcc arm-none-eabi-newlib python --needed +RUN pacman -S --noconfirm sudo git base-devel cmake libusb readline bzip2 lz4 arm-none-eabi-gcc arm-none-eabi-newlib python --needed RUN pacman -S --noconfirm python-pip -RUN python3 -m pip install ansicolors sslcrypto # OpenCL for hitag2crack RUN pacman -S --noconfirm ocl-icd diff --git a/docker/archlinux/README.md b/docker/archlinux/README.md index 872d46cb4..7c699e524 100644 --- a/docker/archlinux/README.md +++ b/docker/archlinux/README.md @@ -47,5 +47,11 @@ Or if you want to run single test, ``` make clean; make -j + +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto tools/pm3_tests.sh --long +deactivate ``` diff --git a/docker/archlinux/run_tests.sh b/docker/archlinux/run_tests.sh index 53eeda9a3..67715f92f 100755 --- a/docker/archlinux/run_tests.sh +++ b/docker/archlinux/run_tests.sh @@ -39,4 +39,9 @@ pacman -Ss '^gcc$' # sudo pacman -S testing/gcc # sudo pacman -S gcc +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto tools/release_tests.sh +deactivate diff --git a/docker/fedora-36/Dockerfile b/docker/fedora-36/Dockerfile index 007af68c3..3cb7b93c6 100644 --- a/docker/fedora-36/Dockerfile +++ b/docker/fedora-36/Dockerfile @@ -2,7 +2,7 @@ FROM fedora:36 ENV LANG C # qt5-qtbase-devel skipped -RUN dnf install -y passwd sudo git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel bzip2-devel bluez-libs-devel python3-devel openssl-devel libatomic findutils +RUN dnf install -y passwd sudo git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel bzip2-devel lz4-devel bluez-libs-devel python3-devel openssl-devel libatomic findutils RUN yum -y update RUN yum -y install cmake python-pip diff --git a/docker/fedora-36/docker_rm.sh b/docker/fedora-36/docker_rm.sh index ea2b28809..bcdd1d060 100644 --- a/docker/fedora-36/docker_rm.sh +++ b/docker/fedora-36/docker_rm.sh @@ -1,4 +1,5 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-fedora-36:1.0) docker image rm pm3-fedora-36:1.0 docker image rm fedora:36 diff --git a/docker/fedora-37/Dockerfile b/docker/fedora-37/Dockerfile index 930767853..122834560 100644 --- a/docker/fedora-37/Dockerfile +++ b/docker/fedora-37/Dockerfile @@ -2,7 +2,7 @@ FROM fedora:37 ENV LANG C # qt5-qtbase-devel skipped -RUN dnf install -y passwd sudo git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel bzip2-devel bluez-libs-devel python3-devel openssl-devel libatomic findutils +RUN dnf install -y passwd sudo git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel bzip2-devel lz4-devel bluez-libs-devel python3-devel openssl-devel libatomic findutils RUN yum -y update RUN yum -y install cmake python-pip diff --git a/docker/fedora-37/docker_rm.sh b/docker/fedora-37/docker_rm.sh index a9359d0fd..896b5ac82 100644 --- a/docker/fedora-37/docker_rm.sh +++ b/docker/fedora-37/docker_rm.sh @@ -1,4 +1,5 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-fedora-37:1.0) docker image rm pm3-fedora-37:1.0 docker image rm fedora:37 From 7f5e1c9657874b9de7fcad3d1ce87d60adc38cd8 Mon Sep 17 00:00:00 2001 From: kormax Date: Sun, 16 Jul 2023 19:27:38 +0300 Subject: [PATCH 0208/1034] Move custom polling frame generation logic to client --- armsrc/iso14443a.c | 12 +--- client/src/cmdhf14a.c | 151 ++++++++++++++++++++++-------------------- client/src/cmdhf14a.h | 1 + client/src/cmdhfvas.c | 28 ++++++-- include/mifare.h | 1 - 5 files changed, 105 insertions(+), 88 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 3619155da..4bb51f69b 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -144,19 +144,13 @@ static hf14a_config hf14aconfig = { 0, 0, 0, 0, 0 } ; // Polling frames and configurations - -static const iso14a_polling_frame WUPA_FRAME = { - { 0x52 }, 1, 7, 0, -}; - static iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME }, + .frames={ {{ 0x52 }, 1, 7, 0} }, .frame_count=1, .extra_timeout=0, }; - void printHf14aConfig(void) { DbpString(_CYAN_("HF 14a config")); Dbprintf(" [a] Anticol override.... %s%s%s", @@ -3034,9 +3028,9 @@ void ReaderIso14443a(PacketCommandNG *c) { arg0 = iso14443a_select_cardEx( NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), - (param & ISO14A_USE_CUSTOM_POLLING) ? (iso14a_polling_parameters *)cmd : &WUPA_POLLING_PARAMETER + (param & ISO14A_USE_CUSTOM_POLLING) ? (iso14a_polling_parameters *)cmd : &WUPA_POLLING_PARAMETERS ); - // This can be improved by adding a cmd parser pointer and moving it by struct length to allow combining data with polling params + // TODO: Improve by adding a cmd parser pointer and moving it by struct length to allow combining data with polling params FpgaDisableTracing(); reply_mix(CMD_ACK, arg0, card->uidlen, 0, buf, sizeof(iso14a_card_select_t)); diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 61423cc48..bf1ded102 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -54,6 +54,35 @@ void Set_apdu_in_framing(bool v) { static int CmdHelp(const char *Cmd); static int waitCmd(bool i_select, uint32_t timeout, bool verbose); + +static const iso14a_polling_frame WUPA_FRAME = { + { 0x52 }, 1, 7, 0, +}; + +static const iso14a_polling_frame MAGWUPA1_FRAME = { + { 0x7A }, 1, 7, 0 +}; + +static const iso14a_polling_frame MAGWUPA2_FRAME = { + { 0x7B }, 1, 7, 0 +}; + +static const iso14a_polling_frame MAGWUPA3_FRAME = { + { 0x7C }, 1, 7, 0 +}; + +static const iso14a_polling_frame MAGWUPA4_FRAME = { + { 0x7D }, 1, 7, 0 +}; + +static const iso14a_polling_frame ECP_FRAME = { + .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, + .frame_length=15, + .last_byte_bits=8, + .extra_delay=0 +}; + + static const manufactureName_t manufactureMapping[] = { // ID, "Vendor Country" { 0x01, "Motorola UK" }, @@ -435,67 +464,37 @@ int Hf14443_4aGetCardData(iso14a_card_select_t *card) { } iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe) { + // Extra 100ms give enough time for Apple (ECP) devices to proccess field info and make a decision + + if (use_ecp && use_magsafe) { + iso14a_polling_parameters full_polling_parameters = { + .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=6, + .extra_timeout=100 + }; + return full_polling_parameters; + } else if (use_ecp) { + iso14a_polling_parameters ecp_polling_parameters = { + .frames={ WUPA_FRAME, ECP_FRAME }, + .frame_count=2, + .extra_timeout=100 + }; + return ecp_polling_parameters; + } else if (use_magsafe) { + iso14a_polling_parameters magsafe_polling_parameters = { + .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=5, + .extra_timeout=0 + }; + return magsafe_polling_parameters; + } - iso14a_polling_frame WUPA_FRAME = { - { 0x52 }, 1, 7, 0, - }; - - iso14a_polling_frame MAGWUPA1_FRAME = { - { 0x7A }, 1, 7, 0 - }; - - iso14a_polling_frame MAGWUPA2_FRAME = { - { 0x7B }, 1, 7, 0 - }; - - iso14a_polling_frame MAGWUPA3_FRAME = { - { 0x7C }, 1, 7, 0 - }; - - iso14a_polling_frame MAGWUPA4_FRAME = { - { 0x7D }, 1, 7, 0 - }; - - iso14a_polling_frame ECP_FRAME = { - .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, - .frame_length=15, - .last_byte_bits=8, - .extra_delay=0 - }; - - iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { + iso14a_polling_parameters wupa_polling_parameters = { .frames={ WUPA_FRAME }, .frame_count=1, .extra_timeout=0, }; - - iso14a_polling_parameters MAGSAFE_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=5, - .extra_timeout=0 - }; - - // Extra 100ms give enough time for Apple devices to proccess field info and make a decision - iso14a_polling_parameters ECP_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, ECP_FRAME }, - .frame_count=2, - .extra_timeout=100 - }; - - iso14a_polling_parameters FULL_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=6, - .extra_timeout=100 - }; - - if (use_ecp && use_magsafe) { - return FULL_POLLING_PARAMETERS; - } else if (use_ecp) { - return ECP_POLLING_PARAMETERS; - } else if (use_magsafe) { - return MAGSAFE_POLLING_PARAMETERS; - } - return WUPA_POLLING_PARAMETERS; + return wupa_polling_parameters; } @@ -538,10 +537,14 @@ static int CmdHF14AReader(const char *Cmd) { cm |= ISO14A_NO_RATS; } - iso14a_polling_parameters polling_parameters; - if (arg_get_lit(ctx, 5) || arg_get_lit(ctx, 6)) { + bool use_ecp = arg_get_lit(ctx, 5); + bool use_magsafe = arg_get_lit(ctx, 6); + + iso14a_polling_parameters * polling_parameters = NULL; + iso14a_polling_parameters parameters = iso14a_get_polling_parameters(use_ecp, use_magsafe); + if (use_ecp || use_magsafe) { cm |= ISO14A_USE_CUSTOM_POLLING; - polling_parameters = iso14a_get_polling_parameters(arg_get_lit(ctx, 5), arg_get_lit(ctx, 6)); + polling_parameters = ¶meters; } bool continuous = arg_get_lit(ctx, 7); @@ -559,7 +562,7 @@ static int CmdHF14AReader(const char *Cmd) { clearCommandBuffer(); if (cm & ISO14A_USE_CUSTOM_POLLING) { - SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, (uint8_t *)&polling_parameters, sizeof(polling_parameters)); + SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, (uint8_t *)polling_parameters, sizeof(iso14a_polling_parameters)); } else { SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, NULL, 0); } @@ -900,7 +903,6 @@ int CmdHF14ASniff(const char *Cmd) { } int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, bool silentMode) { - uint16_t cmdc = 0; *dataoutlen = 0; @@ -962,8 +964,7 @@ int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leav return 0; } -int SelectCard14443A_4(bool disconnect, bool verbose, iso14a_card_select_t *card) { - +int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card_select_t *card, iso14a_polling_parameters *polling_parameters) { // global vars should be prefixed with g_ gs_frame_len = 0; gs_frames_num = 0; @@ -976,7 +977,12 @@ int SelectCard14443A_4(bool disconnect, bool verbose, iso14a_card_select_t *card // Anticollision + SELECT card PacketResponseNG resp; - SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT, 0, 0, NULL, 0); + if (polling_parameters != NULL) { + SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT | ISO14A_USE_CUSTOM_POLLING, 0, 0, (uint8_t *)polling_parameters, sizeof(iso14a_polling_parameters)); + } else { + SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT, 0, 0, NULL, 0); + } + if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { PrintAndLogEx(WARNING, "Command execute timeout"); return PM3_ETIMEOUT; @@ -1042,6 +1048,10 @@ int SelectCard14443A_4(bool disconnect, bool verbose, iso14a_card_select_t *card return PM3_SUCCESS; } +int SelectCard14443A_4(bool disconnect, bool verbose, iso14a_card_select_t *card) { + return SelectCard14443A_4_WithParameters(disconnect, verbose, card, NULL); +} + static int CmdExchangeAPDU(bool chainingin, uint8_t *datain, int datainlen, bool activateField, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, bool *chainingout) { *chainingout = false; @@ -1423,14 +1433,13 @@ static int CmdHF14ACmdRaw(const char *Cmd) { flags |= ISO14A_NO_RATS; } - if (use_ecp) { - flags |= ISO14A_USE_ECP; + // TODO: allow to use reader command with both data and polling configuration + if (use_ecp | use_magsafe) { + PrintAndLogEx(WARNING, "ECP and Magsafe not supported with this command at this moment. Instead use 'hf 14a reader -sk --ecp/--mag'"); + // flags |= ISO14A_USE_MAGSAFE; + // flags |= ISO14A_USE_ECP; } - - if (use_magsafe) { - flags |= ISO14A_USE_MAGSAFE; - } - + // Max buffer is PM3_CMD_DATA_SIZE datalen = (datalen > PM3_CMD_DATA_SIZE) ? PM3_CMD_DATA_SIZE : datalen; diff --git a/client/src/cmdhf14a.h b/client/src/cmdhf14a.h index ff6d80318..8d0c1d8bc 100644 --- a/client/src/cmdhf14a.h +++ b/client/src/cmdhf14a.h @@ -54,6 +54,7 @@ int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leav iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe); int SelectCard14443A_4(bool disconnect, bool verbose, iso14a_card_select_t *card); +int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card_select_t *card, iso14a_polling_parameters *polling_parameters); bool Get_apdu_in_framing(void); void Set_apdu_in_framing(bool v); diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index 2bb5c8341..1a0dca54e 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -41,7 +41,20 @@ #include "mbedtls/ecc_point_compression.h" #include "mbedtls/gcm.h" -uint8_t ecpData[] = { 0x6a, 0x01, 0x00, 0x00, 0x04 }; +static const iso14a_polling_frame WUPA_FRAME = { + .frame={ 0x52 }, + .frame_length=1, + .last_byte_bits=7, + .extra_delay=0, +}; + +static const iso14a_polling_frame ECP_VAS_ONLY_FRAME = { + .frame={0x6a, 0x01, 0x00, 0x00, 0x02, 0xe4, 0xd2}, + .frame_length=7, + .last_byte_bits=8, + .extra_delay=0, +}; + uint8_t aid[] = { 0x4f, 0x53, 0x45, 0x2e, 0x56, 0x41, 0x53, 0x2e, 0x30, 0x31 }; uint8_t getVasUrlOnlyP2 = 0x00; uint8_t getVasFullReqP2 = 0x01; @@ -336,12 +349,13 @@ static int DecryptVASCryptogram(uint8_t *pidHash, uint8_t *cryptogram, size_t cr static int VASReader(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t *cryptogram, size_t *cryptogramLen, bool verbose) { clearCommandBuffer(); - uint16_t flags = ISO14A_RAW | ISO14A_CONNECT | ISO14A_NO_SELECT | ISO14A_APPEND_CRC | ISO14A_NO_DISCONNECT; - SendCommandMIX(CMD_HF_ISO14443A_READER, flags, sizeof(ecpData), 0, ecpData, sizeof(ecpData)); + iso14a_polling_parameters polling_parameters = { + .frames={ WUPA_FRAME, ECP_VAS_ONLY_FRAME }, + .frame_count=2, + .extra_timeout=250 + }; - msleep(160); - - if (SelectCard14443A_4(false, false, NULL) != PM3_SUCCESS) { + if (SelectCard14443A_4_WithParameters(false, false, NULL, &polling_parameters) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "No card in field"); return PM3_ECARDEXCHANGE; } @@ -349,7 +363,7 @@ static int VASReader(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t * uint16_t status = 0; size_t resLen = 0; uint8_t selectResponse[APDU_RES_LEN] = {0}; - Iso7816Select(CC_CONTACTLESS, true, true, aid, sizeof(aid), selectResponse, APDU_RES_LEN, &resLen, &status); + Iso7816Select(CC_CONTACTLESS, false, true, aid, sizeof(aid), selectResponse, APDU_RES_LEN, &resLen, &status); if (status != 0x9000) { PrintAndLogEx(FAILED, "Card doesn't support VAS"); diff --git a/include/mifare.h b/include/mifare.h index cf3b51511..3bb8c9ba8 100644 --- a/include/mifare.h +++ b/include/mifare.h @@ -155,5 +155,4 @@ typedef struct { } state; } PACKED nonces_t; - #endif // _MIFARE_H_ From aca547aa4f956d6fde848cdf318572ab829850f7 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Mon, 17 Jul 2023 03:10:11 +0200 Subject: [PATCH 0209/1034] update docker stuff --- docker/archlinux/docker_rm.sh | 4 +-- docker/build-all.sh | 2 +- .../Dockerfile | 0 .../README.md | 2 +- .../docker_build.sh | 0 docker/debian-11-bullseye/docker_rm.sh | 4 +++ .../docker_run.sh | 0 .../run_tests.sh | 2 +- docker/debian-12-bookworm/Dockerfile | 26 +++++++++++++++++++ docker/debian-12-bookworm/README.md | 26 +++++++++++++++++++ docker/debian-12-bookworm/docker_build.sh | 3 +++ docker/debian-12-bookworm/docker_rm.sh | 4 +++ docker/debian-12-bookworm/docker_run.sh | 3 +++ docker/debian-12-bookworm/run_tests.sh | 11 ++++++++ docker/debian-13-trixie/Dockerfile | 26 +++++++++++++++++++ docker/debian-13-trixie/README.md | 26 +++++++++++++++++++ docker/debian-13-trixie/docker_build.sh | 3 +++ docker/debian-13-trixie/docker_rm.sh | 4 +++ docker/debian-13-trixie/docker_run.sh | 3 +++ docker/debian-13-trixie/run_tests.sh | 11 ++++++++ docker/debian-bullseye/docker_rm.sh | 4 --- docker/fedora-36/docker_rm.sh | 1 - docker/fedora-37/docker_rm.sh | 1 - docker/homebrew/docker_rm.sh | 2 +- docker/kali/docker_rm.sh | 2 +- docker/opensuse-leap/docker_rm.sh | 2 +- docker/opensuse-tumbleweed/docker_rm.sh | 2 +- docker/parrot-core-latest/docker_rm.sh | 2 +- docker/ubuntu-18.04/docker_rm.sh | 2 +- docker/ubuntu-20.04/docker_rm.sh | 2 +- docker/ubuntu-22.04/docker_rm.sh | 2 +- 31 files changed, 162 insertions(+), 20 deletions(-) rename docker/{debian-bullseye => debian-11-bullseye}/Dockerfile (100%) rename docker/{debian-bullseye => debian-11-bullseye}/README.md (91%) rename docker/{debian-bullseye => debian-11-bullseye}/docker_build.sh (100%) create mode 100644 docker/debian-11-bullseye/docker_rm.sh rename docker/{debian-bullseye => debian-11-bullseye}/docker_run.sh (100%) rename docker/{debian-bullseye => debian-11-bullseye}/run_tests.sh (80%) create mode 100644 docker/debian-12-bookworm/Dockerfile create mode 100644 docker/debian-12-bookworm/README.md create mode 100755 docker/debian-12-bookworm/docker_build.sh create mode 100644 docker/debian-12-bookworm/docker_rm.sh create mode 100755 docker/debian-12-bookworm/docker_run.sh create mode 100755 docker/debian-12-bookworm/run_tests.sh create mode 100644 docker/debian-13-trixie/Dockerfile create mode 100644 docker/debian-13-trixie/README.md create mode 100755 docker/debian-13-trixie/docker_build.sh create mode 100644 docker/debian-13-trixie/docker_rm.sh create mode 100755 docker/debian-13-trixie/docker_run.sh create mode 100755 docker/debian-13-trixie/run_tests.sh delete mode 100644 docker/debian-bullseye/docker_rm.sh diff --git a/docker/archlinux/docker_rm.sh b/docker/archlinux/docker_rm.sh index b4d9e7738..0c2d24f4e 100644 --- a/docker/archlinux/docker_rm.sh +++ b/docker/archlinux/docker_rm.sh @@ -1,6 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-arch:1.0) docker image rm pm3-arch:1.0 -docker image rm archlinux:base -# old ref: -docker image rm archlinux/base diff --git a/docker/build-all.sh b/docker/build-all.sh index aba45382f..ed56a0972 100755 --- a/docker/build-all.sh +++ b/docker/build-all.sh @@ -1,5 +1,5 @@ #!/bin/bash -for os in archlinux debian-buster fedora-36 fedora-37 homebrew kali opensuse-leap opensuse-tumbleweed parrot-core-latest ubuntu-18.04 ubuntu-20.04 ubuntu-22.04; do +for os in archlinux debian-12-bookworm fedora-36 fedora-37 homebrew kali opensuse-leap opensuse-tumbleweed parrot-core-latest ubuntu-20.04 ubuntu-22.04; do ( cd $os && ./docker_build.sh ) done diff --git a/docker/debian-bullseye/Dockerfile b/docker/debian-11-bullseye/Dockerfile similarity index 100% rename from docker/debian-bullseye/Dockerfile rename to docker/debian-11-bullseye/Dockerfile diff --git a/docker/debian-bullseye/README.md b/docker/debian-11-bullseye/README.md similarity index 91% rename from docker/debian-bullseye/README.md rename to docker/debian-11-bullseye/README.md index e86881019..3a7775b7c 100644 --- a/docker/debian-bullseye/README.md +++ b/docker/debian-11-bullseye/README.md @@ -9,7 +9,7 @@ If all tests OK, the script will finish with PASS. The script is to be run in proxmark root folder inside the docker env. ``` -docker/debian-bullseye/run_tests.sh; +docker/debian-11-bullseye/run_tests.sh; ``` Or if you want to run single test, diff --git a/docker/debian-bullseye/docker_build.sh b/docker/debian-11-bullseye/docker_build.sh similarity index 100% rename from docker/debian-bullseye/docker_build.sh rename to docker/debian-11-bullseye/docker_build.sh diff --git a/docker/debian-11-bullseye/docker_rm.sh b/docker/debian-11-bullseye/docker_rm.sh new file mode 100644 index 000000000..b8ce5b834 --- /dev/null +++ b/docker/debian-11-bullseye/docker_rm.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +docker rm $(docker ps -aq --filter ancestor=pm3-debian-bullseye:1.0) +docker image rm pm3-debian-bullseye:1.0 diff --git a/docker/debian-bullseye/docker_run.sh b/docker/debian-11-bullseye/docker_run.sh similarity index 100% rename from docker/debian-bullseye/docker_run.sh rename to docker/debian-11-bullseye/docker_run.sh diff --git a/docker/debian-bullseye/run_tests.sh b/docker/debian-11-bullseye/run_tests.sh similarity index 80% rename from docker/debian-bullseye/run_tests.sh rename to docker/debian-11-bullseye/run_tests.sh index 25e6d2a21..9c7128942 100755 --- a/docker/debian-bullseye/run_tests.sh +++ b/docker/debian-11-bullseye/run_tests.sh @@ -2,7 +2,7 @@ # Iceman 2022 # # This script is to be run from proxmark root folder inside the docker env -# docker/debian-bullseye/run_tests.sh; +# docker/debian-11-bullseye/run_tests.sh; sudo apt update && sudo apt upgrade -y tools/release_tests.sh diff --git a/docker/debian-12-bookworm/Dockerfile b/docker/debian-12-bookworm/Dockerfile new file mode 100644 index 000000000..92527289c --- /dev/null +++ b/docker/debian-12-bookworm/Dockerfile @@ -0,0 +1,26 @@ +FROM debian:bookworm-slim + +ENV LANG C +ENV DEBIAN_FRONTEND noninteractive +# qtbase5-dev skipped +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get dist-upgrade -y && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ + apt-get clean + +RUN apt-get install -y --no-install-recommends python3-minimal python3-pip python3-venv && \ + apt-get clean + +RUN apt-get install -y opencl-dev && \ + apt-get clean + +# Create rrg user +RUN useradd -ms /bin/bash rrg +RUN passwd -d rrg +RUN printf 'rrg ALL=(ALL) ALL\n' | tee -a /etc/sudoers + +USER rrg +WORKDIR "/home/rrg" + +CMD ["/bin/bash"] diff --git a/docker/debian-12-bookworm/README.md b/docker/debian-12-bookworm/README.md new file mode 100644 index 000000000..67c0f6a8b --- /dev/null +++ b/docker/debian-12-bookworm/README.md @@ -0,0 +1,26 @@ +# Notes on run_tests.sh script +This script runs a bunch of different builds with make and cmake together +with the different combos of RDV4, GENERIC, BTADDON combos. + +If all tests OK, the script will finish with PASS. + + +# Notes to run tests +The script is to be run in proxmark root folder inside the docker env. + +``` +docker/debian-12-bookworm/run_tests.sh; +``` + +Or if you want to run single test, + +``` +sudo apt update +make clean; make -j +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto +tools/pm3_tests.sh --long +deactivate +``` diff --git a/docker/debian-12-bookworm/docker_build.sh b/docker/debian-12-bookworm/docker_build.sh new file mode 100755 index 000000000..0059348cf --- /dev/null +++ b/docker/debian-12-bookworm/docker_build.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker build -t "pm3-debian-bookworm:1.0" . diff --git a/docker/debian-12-bookworm/docker_rm.sh b/docker/debian-12-bookworm/docker_rm.sh new file mode 100644 index 000000000..5818564e0 --- /dev/null +++ b/docker/debian-12-bookworm/docker_rm.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +docker rm $(docker ps -aq --filter ancestor=pm3-debian-bookworm:1.0) +docker image rm pm3-debian-bookworm:1.0 diff --git a/docker/debian-12-bookworm/docker_run.sh b/docker/debian-12-bookworm/docker_run.sh new file mode 100755 index 000000000..ae264581a --- /dev/null +++ b/docker/debian-12-bookworm/docker_run.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker run --volume=$(pwd)/../..:/home/rrg/proxmark3 -w /home/rrg/proxmark3 -it pm3-debian-bookworm:1.0 diff --git a/docker/debian-12-bookworm/run_tests.sh b/docker/debian-12-bookworm/run_tests.sh new file mode 100755 index 000000000..06837fc99 --- /dev/null +++ b/docker/debian-12-bookworm/run_tests.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +# This script is to be run from proxmark root folder inside the docker env +# docker/debian-12-bookworm/run_tests.sh; + +sudo apt update && sudo apt upgrade -y +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto +tools/release_tests.sh +deactivate diff --git a/docker/debian-13-trixie/Dockerfile b/docker/debian-13-trixie/Dockerfile new file mode 100644 index 000000000..c64707ceb --- /dev/null +++ b/docker/debian-13-trixie/Dockerfile @@ -0,0 +1,26 @@ +FROM debian:trixie-slim + +ENV LANG C +ENV DEBIAN_FRONTEND noninteractive +# qtbase5-dev skipped +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get dist-upgrade -y && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ + apt-get clean + +RUN apt-get install -y --no-install-recommends python3-minimal python3-pip python3-venv && \ + apt-get clean + +RUN apt-get install -y opencl-dev && \ + apt-get clean + +# Create rrg user +RUN useradd -ms /bin/bash rrg +RUN passwd -d rrg +RUN printf 'rrg ALL=(ALL) ALL\n' | tee -a /etc/sudoers + +USER rrg +WORKDIR "/home/rrg" + +CMD ["/bin/bash"] diff --git a/docker/debian-13-trixie/README.md b/docker/debian-13-trixie/README.md new file mode 100644 index 000000000..53d448546 --- /dev/null +++ b/docker/debian-13-trixie/README.md @@ -0,0 +1,26 @@ +# Notes on run_tests.sh script +This script runs a bunch of different builds with make and cmake together +with the different combos of RDV4, GENERIC, BTADDON combos. + +If all tests OK, the script will finish with PASS. + + +# Notes to run tests +The script is to be run in proxmark root folder inside the docker env. + +``` +docker/debian-13-trixie/run_tests.sh; +``` + +Or if you want to run single test, + +``` +sudo apt update +make clean; make -j +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto +tools/pm3_tests.sh --long +deactivate +``` diff --git a/docker/debian-13-trixie/docker_build.sh b/docker/debian-13-trixie/docker_build.sh new file mode 100755 index 000000000..22a5bdbc3 --- /dev/null +++ b/docker/debian-13-trixie/docker_build.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker build -t "pm3-debian-trixie:1.0" . diff --git a/docker/debian-13-trixie/docker_rm.sh b/docker/debian-13-trixie/docker_rm.sh new file mode 100644 index 000000000..0afb68014 --- /dev/null +++ b/docker/debian-13-trixie/docker_rm.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +docker rm $(docker ps -aq --filter ancestor=pm3-debian-trixie:1.0) +docker image rm pm3-debian-trixie:1.0 diff --git a/docker/debian-13-trixie/docker_run.sh b/docker/debian-13-trixie/docker_run.sh new file mode 100755 index 000000000..bc81286fc --- /dev/null +++ b/docker/debian-13-trixie/docker_run.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker run --volume=$(pwd)/../..:/home/rrg/proxmark3 -w /home/rrg/proxmark3 -it pm3-debian-trixie:1.0 diff --git a/docker/debian-13-trixie/run_tests.sh b/docker/debian-13-trixie/run_tests.sh new file mode 100755 index 000000000..dc76107e4 --- /dev/null +++ b/docker/debian-13-trixie/run_tests.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +# This script is to be run from proxmark root folder inside the docker env +# docker/debian-13-trixie/run_tests.sh; + +sudo apt update && sudo apt upgrade -y +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto +tools/release_tests.sh +deactivate diff --git a/docker/debian-bullseye/docker_rm.sh b/docker/debian-bullseye/docker_rm.sh deleted file mode 100644 index d9609e2dd..000000000 --- a/docker/debian-bullseye/docker_rm.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -docker image rm pm3-debian-bullseye:1.0 -docker image rm bullseye-slim diff --git a/docker/fedora-36/docker_rm.sh b/docker/fedora-36/docker_rm.sh index bcdd1d060..a14c31e80 100644 --- a/docker/fedora-36/docker_rm.sh +++ b/docker/fedora-36/docker_rm.sh @@ -2,4 +2,3 @@ docker rm $(docker ps -aq --filter ancestor=pm3-fedora-36:1.0) docker image rm pm3-fedora-36:1.0 -docker image rm fedora:36 diff --git a/docker/fedora-37/docker_rm.sh b/docker/fedora-37/docker_rm.sh index 896b5ac82..6f0bd7e56 100644 --- a/docker/fedora-37/docker_rm.sh +++ b/docker/fedora-37/docker_rm.sh @@ -2,4 +2,3 @@ docker rm $(docker ps -aq --filter ancestor=pm3-fedora-37:1.0) docker image rm pm3-fedora-37:1.0 -docker image rm fedora:37 diff --git a/docker/homebrew/docker_rm.sh b/docker/homebrew/docker_rm.sh index 717156495..aa782d4a3 100644 --- a/docker/homebrew/docker_rm.sh +++ b/docker/homebrew/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-brew:1.0) docker image rm pm3-brew:1.0 -docker image rm homebrew/brew diff --git a/docker/kali/docker_rm.sh b/docker/kali/docker_rm.sh index 4cc73265d..fee4f07cf 100644 --- a/docker/kali/docker_rm.sh +++ b/docker/kali/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-kali:1.0) docker image rm pm3-kali:1.0 -#docker image rm kalilinux/kali-rolling diff --git a/docker/opensuse-leap/docker_rm.sh b/docker/opensuse-leap/docker_rm.sh index 9f120b8e1..12302b6f7 100644 --- a/docker/opensuse-leap/docker_rm.sh +++ b/docker/opensuse-leap/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-suse-leap:1.0) docker image rm pm3-suse-leap:1.0 -docker image rm opensuse/leap diff --git a/docker/opensuse-tumbleweed/docker_rm.sh b/docker/opensuse-tumbleweed/docker_rm.sh index f4d019f2b..c4b1b1d53 100644 --- a/docker/opensuse-tumbleweed/docker_rm.sh +++ b/docker/opensuse-tumbleweed/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-suse-tumbleweed:1.0) docker image rm pm3-suse-tumbleweed:1.0 -docker image rm opensuse/tumbleweed diff --git a/docker/parrot-core-latest/docker_rm.sh b/docker/parrot-core-latest/docker_rm.sh index 4874bdec5..9bf1605e5 100644 --- a/docker/parrot-core-latest/docker_rm.sh +++ b/docker/parrot-core-latest/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-parrotsec-core-latest:1.0) docker image rm pm3-parrotsec-core-latest:1.0 -docker image rm parrotsec/core:latest diff --git a/docker/ubuntu-18.04/docker_rm.sh b/docker/ubuntu-18.04/docker_rm.sh index c566f0e8d..20dcb80b2 100644 --- a/docker/ubuntu-18.04/docker_rm.sh +++ b/docker/ubuntu-18.04/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-ubuntu-18.04:1.0) docker image rm pm3-ubuntu-18.04:1.0 -docker image rm ubuntu:18.04 diff --git a/docker/ubuntu-20.04/docker_rm.sh b/docker/ubuntu-20.04/docker_rm.sh index 37b6fd8b2..d71954339 100644 --- a/docker/ubuntu-20.04/docker_rm.sh +++ b/docker/ubuntu-20.04/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-ubuntu-20.04:1.0) docker image rm pm3-ubuntu-20.04:1.0 -docker image rm ubuntu:20.04 diff --git a/docker/ubuntu-22.04/docker_rm.sh b/docker/ubuntu-22.04/docker_rm.sh index e6a5f0302..d1b82948b 100644 --- a/docker/ubuntu-22.04/docker_rm.sh +++ b/docker/ubuntu-22.04/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-ubuntu-22.04:1.0) docker image rm pm3-ubuntu-22.04:1.0 -docker image rm ubuntu:22.04 From 9b2fb950ef5f34c75967131fb8a281701f303d8f Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Mon, 17 Jul 2023 03:31:11 +0200 Subject: [PATCH 0210/1034] fix docker/homebrew --- docker/homebrew/Dockerfile | 2 +- docker/homebrew/docker_run.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/homebrew/Dockerfile b/docker/homebrew/Dockerfile index 57e12dd87..fba5e84a7 100644 --- a/docker/homebrew/Dockerfile +++ b/docker/homebrew/Dockerfile @@ -4,6 +4,6 @@ ENV LANG C USER linuxbrew WORKDIR "/home/linuxbrew" -RUN brew install cmake pkg-config bzip2 && rm -rf ~/.cache/Homebrew +RUN brew install cmake pkg-config bzip2 lz4 && rm -rf ~/.cache/Homebrew CMD ["/bin/bash"] diff --git a/docker/homebrew/docker_run.sh b/docker/homebrew/docker_run.sh index 16c744594..efde1649b 100755 --- a/docker/homebrew/docker_run.sh +++ b/docker/homebrew/docker_run.sh @@ -1,4 +1,4 @@ #!/bin/bash -docker run --volume=$(pwd)/../..:/home/linuxbrew/proxmark3 -w /home/rrg/proxmark3 -it pm3-brew:1.0 +docker run --volume=$(pwd)/../..:/home/linuxbrew/proxmark3 -w /home/linuxbrew/proxmark3 -it pm3-brew:1.0 # if needed, run brew as user linuxbrew From 5b656ad4b01e330be07d9b6cec0b01a993145335 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Mon, 17 Jul 2023 03:32:07 +0200 Subject: [PATCH 0211/1034] Add CMP0114 policy to cmake CMake Warning (dev) at /home/linuxbrew/.linuxbrew/Cellar/cmake/3.26.4/share/cmake/Modules/ExternalProject.cmake:2271 (message): Policy CMP0114 is not set: ExternalProject step targets fully adopt their steps. Run "cmake --help-policy CMP0114" for policy details. Use the cmake_policy command to set the policy and suppress this warning. ExternalProject target 'bzip2' would depend on the targets for step(s) 'configure;build;install' under policy CMP0114, but this is being left out for compatibility since the policy is not set. Call Stack (most recent call first): CMakeLists.txt:178 (ExternalProject_Add_StepTargets) This warning is for project developers. Use -Wno-dev to suppress it. --- client/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index ce7e36938..9ea004590 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -162,6 +162,7 @@ if (NOT SKIPJANSSONSYSTEM EQUAL 1) endif (NOT SKIPJANSSONSYSTEM EQUAL 1) if(EMBED_BZIP2) + cmake_policy(SET CMP0114 NEW) set(BZIP2_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/bzip2/src/bzip2) # Specify SOURCE_DIR will cause some errors ExternalProject_Add(bzip2 From 03ae05a345e99f4eff1101188454adc734f9ba70 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Mon, 17 Jul 2023 04:24:37 +0200 Subject: [PATCH 0212/1034] cmake: allow to embed LZ4 --- client/CMakeLists.txt | 55 ++++++++++++++++++++----- client/experimental_lib/CMakeLists.txt | 56 +++++++++++++++++++++----- 2 files changed, 89 insertions(+), 22 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 9ea004590..be4e00a93 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -96,11 +96,12 @@ if (CMAKE_TOOLCHAIN_FILE) endif (ANDROID) set(EMBED_READLINE ON) set(EMBED_BZIP2 ON) + set(EMBED_LZ4 ON) endif (CMAKE_TOOLCHAIN_FILE) -if (EMBED_READLINE OR EMBED_BZIP2) +if (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4) include(ExternalProject) -endif (EMBED_READLINE OR EMBED_BZIP2) +endif (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4) if (NOT SKIPREADLINE EQUAL 1) if (APPLE) @@ -184,8 +185,29 @@ else(EMBED_BZIP2) find_package (BZip2 REQUIRED) endif(EMBED_BZIP2) -find_path(LZ4_INCLUDE_DIRS lz4frame.h) -find_library(LZ4_LIBRARIES lz4) +if(EMBED_LZ4) + cmake_policy(SET CMP0114 NEW) + set(LZ4_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/lz4/src/lz4) + # Specify SOURCE_DIR will cause some errors + ExternalProject_Add(lz4 + GIT_REPOSITORY https://android.googlesource.com/platform/external/lz4 + GIT_TAG platform-tools-30.0.2 + PREFIX deps/lz4 + # SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/lz4 + CONFIGURE_COMMAND mkdir -p ${LZ4_BUILD_DIR} && git archive --format tar HEAD | tar -C ${LZ4_BUILD_DIR} -x + BUILD_IN_SOURCE ON + BUILD_COMMAND make -C ${LZ4_BUILD_DIR}/lib -j4 CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} liblz4.a + INSTALL_COMMAND "" + LOG_DOWNLOAD ON + ) + ExternalProject_Add_StepTargets(lz4 configure build install) + set(LZ4_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/deps/lz4/src/lz4/lib) + set(LZ4_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/deps/lz4/src/lz4/lib/liblz4.a) + set(LZ4_FOUND ON) +else(EMBED_LZ4) + find_path(LZ4_INCLUDE_DIRS lz4frame.h) + find_library(LZ4_LIBRARIES lz4) +endif(EMBED_LZ4) if (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) set(LZ4_FOUND ON) @@ -502,16 +524,24 @@ else (SKIPBT EQUAL 1) endif (BLUEZ_FOUND) endif(SKIPBT EQUAL 1) -if (EMBED_BZIP2) - message(STATUS "Bzip2 library: embedded") -else (EMBED_BZIP2) - message(STATUS "Bzip2 library: system library found") -endif (EMBED_BZIP2) +if (BZIP2_FOUND) + if (EMBED_BZIP2) + message(STATUS "Bzip2 library: embedded") + else (EMBED_BZIP2) + message(STATUS "Bzip2 library: system library found") + endif (EMBED_BZIP2) +else (BZIP2_FOUND) + message(SEND_ERROR "Bzip2 library: Bzip2 not found") +endif (BZIP2_FOUND) if (LZ4_FOUND) - message(STATUS "LZ4 library: system library found") + if (EMBED_LZ4) + message(STATUS "LZ4 library: embedded") + else (EMBED_LZ4) + message(STATUS "LZ4 library: system library found") + endif (EMBED_LZ4) else (LZ4_FOUND) - message(SEND_ERROR "LZ4 library: system library not found and no local library implemented") + message(SEND_ERROR "LZ4 library: LZ4 not found") endif (LZ4_FOUND) if (SKIPJANSSONSYSTEM EQUAL 1) @@ -612,6 +642,9 @@ endif (EMBED_READLINE) if (EMBED_BZIP2) add_dependencies(proxmark3 bzip2) endif (EMBED_BZIP2) +if (EMBED_LZ4) + add_dependencies(proxmark3 lz4) +endif (EMBED_LZ4) if (MINGW) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 0cd148fa3..cec361446 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -97,11 +97,12 @@ if (CMAKE_TOOLCHAIN_FILE) endif (ANDROID) set(EMBED_READLINE ON) set(EMBED_BZIP2 ON) + set(EMBED_LZ4 ON) endif (CMAKE_TOOLCHAIN_FILE) -if (EMBED_READLINE OR EMBED_BZIP2) +if (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4) include(ExternalProject) -endif (EMBED_READLINE OR EMBED_BZIP2) +endif (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4) if (NOT SKIPREADLINE EQUAL 1) if (APPLE) @@ -163,6 +164,7 @@ if (NOT SKIPJANSSONSYSTEM EQUAL 1) endif (NOT SKIPJANSSONSYSTEM EQUAL 1) if(EMBED_BZIP2) + cmake_policy(SET CMP0114 NEW) set(BZIP2_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/bzip2/src/bzip2) ExternalProject_Add(bzip2 GIT_REPOSITORY https://android.googlesource.com/platform/external/bzip2 @@ -183,8 +185,29 @@ else(EMBED_BZIP2) find_package (BZip2 REQUIRED) endif(EMBED_BZIP2) -find_path(LZ4_INCLUDE_DIRS lz4frame.h) -find_library(LZ4_LIBRARIES lz4) +if(EMBED_LZ4) + cmake_policy(SET CMP0114 NEW) + set(LZ4_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/lz4/src/lz4) + # Specify SOURCE_DIR will cause some errors + ExternalProject_Add(lz4 + GIT_REPOSITORY https://android.googlesource.com/platform/external/lz4 + GIT_TAG platform-tools-30.0.2 + PREFIX deps/lz4 + # SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/lz4 + CONFIGURE_COMMAND mkdir -p ${LZ4_BUILD_DIR} && git archive --format tar HEAD | tar -C ${LZ4_BUILD_DIR} -x + BUILD_IN_SOURCE ON + BUILD_COMMAND make -C ${LZ4_BUILD_DIR}/lib -j4 CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} liblz4.a + INSTALL_COMMAND "" + LOG_DOWNLOAD ON + ) + ExternalProject_Add_StepTargets(lz4 configure build install) + set(LZ4_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/deps/lz4/src/lz4/lib) + set(LZ4_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/deps/lz4/src/lz4/lib/liblz4.a) + set(LZ4_FOUND ON) +else(EMBED_LZ4) + find_path(LZ4_INCLUDE_DIRS lz4frame.h) + find_library(LZ4_LIBRARIES lz4) +endif(EMBED_LZ4) if (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) set(LZ4_FOUND ON) @@ -501,16 +524,24 @@ else (SKIPBT EQUAL 1) endif (BLUEZ_FOUND) endif(SKIPBT EQUAL 1) -if (EMBED_BZIP2) - message(STATUS "Bzip2 library: embedded") -else (EMBED_BZIP2) - message(STATUS "Bzip2 library: system library found") -endif (EMBED_BZIP2) +if (BZIP2_FOUND) + if (EMBED_BZIP2) + message(STATUS "Bzip2 library: embedded") + else (EMBED_BZIP2) + message(STATUS "Bzip2 library: system library found") + endif (EMBED_BZIP2) +else (BZIP2_FOUND) + message(SEND_ERROR "Bzip2 library: Bzip2 not found") +endif (BZIP2_FOUND) if (LZ4_FOUND) - message(STATUS "LZ4 library: system library found") + if (EMBED_LZ4) + message(STATUS "LZ4 library: embedded") + else (EMBED_LZ4) + message(STATUS "LZ4 library: system library found") + endif (EMBED_LZ4) else (LZ4_FOUND) - message(SEND_ERROR "LZ4 library: system library not found and no local library implemented") + message(SEND_ERROR "LZ4 library: LZ4 not found") endif (LZ4_FOUND) if (SKIPJANSSONSYSTEM EQUAL 1) @@ -611,6 +642,9 @@ endif (EMBED_READLINE) if (EMBED_BZIP2) add_dependencies(pm3rrg_rdv4 bzip2) endif (EMBED_BZIP2) +if (EMBED_LZ4) + add_dependencies(pm3rrg_rdv4 lz4) +endif (EMBED_LZ4) if (MINGW) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) From 662ce8403e82d7c5ace687e4fd0a24cc9de01c24 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Mon, 17 Jul 2023 04:56:18 +0200 Subject: [PATCH 0213/1034] lz4 missing in some docs --- doc/md/Development/Makefile-vs-CMake.md | 3 ++- .../Linux-Installation-Instructions.md | 4 ++-- .../Mac-OS-X-MacPorts-Installation-Instructions.md | 2 +- docker/homebrew/README.md | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/md/Development/Makefile-vs-CMake.md b/doc/md/Development/Makefile-vs-CMake.md index c54e911ff..934e4b138 100644 --- a/doc/md/Development/Makefile-vs-CMake.md +++ b/doc/md/Development/Makefile-vs-CMake.md @@ -58,7 +58,8 @@ At the moment both are maintained because they don't perfectly overlap yet. | `SKIPLUASYSTEM` | yes | **no** | | | lualibs/pm3_cmd.lua | yes | add_custom_command **but unused** | | | lualibs/mfc_default_keys.lua | yes | add_custom_command **but unused** | | -| dep lz4 | | | (in_common) not yet used, future. See `get_lz4.sh` for upstream fetch & patch | +| dep lz4 | sys | sys | + in_common only used by FW. See `get_lz4.sh` for upstream fetch & patch | +| lz4 detection | **none** | find, Cross:gitclone | | | dep libm | sys | sys | | | libm detection | **none** | **none** (1) | (1) cf https://cmake.org/pipermail/cmake/2019-March/069168.html ? | | dep mbedtls | in_common | in_common | no sys lib: missing support for CMAC in def conf (btw no .pc available) | diff --git a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md index 455ad6254..3172fdecc 100644 --- a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md @@ -65,7 +65,7 @@ If you get some (non blocking) error at runtime such as _Gtk-Message: Failed to ^[Top](#top) ```sh -sudo pacman -Syu git base-devel readline bzip2 arm-none-eabi-gcc arm-none-eabi-newlib qt5-base bluez python --needed +sudo pacman -Syu git base-devel readline bzip2 lz4 arm-none-eabi-gcc arm-none-eabi-newlib qt5-base bluez python --needed ``` If you don't need the native Bluetooth support in the client, you can skip the installation of `bluez`. @@ -78,7 +78,7 @@ If you don't need support for Python3 scripts in the Proxmark3 client, you can s ^[Top](#top) ```sh -sudo dnf install git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel bzip2-devel qt5-qtbase-devel bluez-libs-devel python3-devel libatomic openssl-devel +sudo dnf install git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel bzip2-devel lz4-devel qt5-qtbase-devel bluez-libs-devel python3-devel libatomic openssl-devel ``` If you don't need the native Bluetooth support in the client, you can skip the installation of `bluez-libs-devel`. diff --git a/doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md b/doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md index 3ea25c20d..2f05f3b98 100644 --- a/doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md @@ -61,7 +61,7 @@ These instructions will show how to setup the environment on OSX to the point wh 2. Install dependencies: ```bash - sudo port install readline jansson lua52 python311 bzip2 openssl11 arm-none-eabi-gcc arm-none-eabi-binutils coreutils qt5 qt5-qtbase pkgconfig + sudo port install readline jansson lua52 python311 bzip2 lz4 openssl11 arm-none-eabi-gcc arm-none-eabi-binutils coreutils qt5 qt5-qtbase pkgconfig ``` 3. Clamp Python version for pkg-config diff --git a/docker/homebrew/README.md b/docker/homebrew/README.md index 07c92e573..549896b33 100644 --- a/docker/homebrew/README.md +++ b/docker/homebrew/README.md @@ -21,6 +21,6 @@ make -j fpga_compress cd client mkdir build cd build -cmake -DEMBED_BZIP2=1 .. +cmake -DEMBED_BZIP2=1 -DEMBED_LZ4=1 .. make -j ``` From 24938e3ed543dfdee18dd8cbc72b01c290f3c0f6 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 17 Jul 2023 11:21:29 +0200 Subject: [PATCH 0214/1034] remove some redundant code and fixed CID# 416023 with resource leak --- client/src/cmdhfmfhard.c | 44 +++++++++++++++------------------------- 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index e6581d830..d66b3eb43 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -301,16 +301,19 @@ static void init_bitflip_bitarrays(void) { free(path); if (statesfile == NULL) { continue; - } else if (open_uncompressed) { - fseek(statesfile, 0, SEEK_END); - int fsize = ftell(statesfile); - if (fsize == -1) { - PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); - fclose(statesfile); - exit(5); - } - uint32_t filesize = (uint32_t)fsize; - rewind(statesfile); + } + + fseek(statesfile, 0, SEEK_END); + int fsize = ftell(statesfile); + if (fsize == -1) { + PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); + fclose(statesfile); + exit(5); + } + uint32_t filesize = (uint32_t)fsize; + rewind(statesfile); + + if (open_uncompressed) { uint32_t count = 0; size_t bytesread = fread(&count, 1, sizeof(count), statesfile); @@ -347,18 +350,12 @@ static void init_bitflip_bitarrays(void) { } #endif } + fclose(statesfile); nraw++; + continue; + } else if (open_lz4compressed) { - fseek(statesfile, 0, SEEK_END); - int fsize = ftell(statesfile); - if (fsize == -1) { - PrintAndLogEx(ERR, "File read error with %s (1). Aborting...\n", state_file_name); - fclose(statesfile); - exit(5); - } - uint32_t filesize = (uint32_t)fsize; - rewind(statesfile); char *compressed_data = calloc(filesize, sizeof(uint8_t)); if (compressed_data == NULL) { PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); @@ -436,15 +433,6 @@ static void init_bitflip_bitarrays(void) { continue; } else if (open_bz2compressed) { - fseek(statesfile, 0, SEEK_END); - int fsize = ftell(statesfile); - if (fsize == -1) { - PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); - fclose(statesfile); - exit(5); - } - uint32_t filesize = (uint32_t)fsize; - rewind(statesfile); char input_buffer[filesize]; size_t bytesread = fread(input_buffer, 1, filesize, statesfile); if (bytesread != filesize) { From 73eb8d0de06bd3f28e4277e21cb1780786698cf8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 17 Jul 2023 17:30:15 +0200 Subject: [PATCH 0215/1034] fix lf cotag reader , make the grid command use the new syntax --- client/src/cmdlfcotag.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/cmdlfcotag.c b/client/src/cmdlfcotag.c index 7c4bf1541..4a3a5f6e6 100644 --- a/client/src/cmdlfcotag.c +++ b/client/src/cmdlfcotag.c @@ -75,11 +75,13 @@ static int CmdCOTAGDemod(const char *Cmd) { void *argtable[] = { arg_param_begin, + arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); + bool verbose = arg_get_lit(ctx, 1); CLIParserFree(ctx); - return demodCOTAG(true); + return demodCOTAG(verbose); } // When reading a COTAG. @@ -152,7 +154,7 @@ static int CmdCOTAGReader(const char *Cmd) { case 0: case 2: { CmdPlot(""); - CmdGrid("384"); + CmdGrid("-x 384"); getSamples(0, false); break; } From 230f1c654b6e0130ab775b244f1d8cb32ccffcc3 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 17 Jul 2023 17:43:23 +0200 Subject: [PATCH 0216/1034] hf legic einfo, now accepts card size params --- CHANGELOG.md | 2 ++ client/src/cmdhflegic.c | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c84a9e65..7f6503e33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf legic einfo` - now accepts the three different cardsizes as params (@iceman1001) + - Fix `lf cotag reader -1` - now doesn't fail (@iceman1001) - Added support for LZ4 compressed hadnested tables (@doegox) - Changed `emv reader -v` - now tries to print found transactions logs (@iceman1001) - Added ISO4217 currency lookup (@iceman1001) diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index b842ddf54..c8eb513ac 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -1226,15 +1226,36 @@ static int CmdLegicEInfo(const char *Cmd) { CLIParserInit(&ctx, "hf legic einfo", "It decodes and displays emulator memory", "hf legic einfo\n" + "hf legic eview --22\n" ); void *argtable[] = { arg_param_begin, + arg_lit0(NULL, "22", "LEGIC Prime MIM22"), + arg_lit0(NULL, "256", "LEGIC Prime MIM256 (def)"), + arg_lit0(NULL, "1024", "LEGIC Prime MIM1024"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); + bool m1 = arg_get_lit(ctx, 1); + bool m2 = arg_get_lit(ctx, 2); + bool m3 = arg_get_lit(ctx, 3); CLIParserFree(ctx); + // validations + if (m1 + m2 + m3 > 1) { + PrintAndLogEx(WARNING, "Only specify one LEGIC Prime Type"); + return PM3_EINVARG; + } else if (m1 + m2 + m3 == 0) { + m2 = true; + } + size_t card_size = LEGIC_PRIME_MIM256; + if (m1) + card_size = LEGIC_PRIME_MIM22; + else if (m2) + card_size = LEGIC_PRIME_MIM256; + else if (m3) + card_size = LEGIC_PRIME_MIM1024; uint8_t *dump = calloc(card_size, sizeof(uint8_t)); if (dump == NULL) { From 134f09be5eb2fbbe76a3cc07890a866f9f2773c7 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 17 Jul 2023 17:46:27 +0200 Subject: [PATCH 0217/1034] style --- armsrc/iso14443a.c | 18 ++++++------ client/src/cmdhf14a.c | 64 +++++++++++++++++++++---------------------- client/src/cmdhfvas.c | 24 ++++++++-------- doc/commands.json | 17 ++++++++---- include/mifare.h | 6 ++-- 5 files changed, 67 insertions(+), 62 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 4bb51f69b..62baab9fc 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -143,11 +143,11 @@ Default HF 14a config is set to: static hf14a_config hf14aconfig = { 0, 0, 0, 0, 0 } ; -// Polling frames and configurations +// Polling frames and configurations static iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { - .frames={ {{ 0x52 }, 1, 7, 0} }, - .frame_count=1, - .extra_timeout=0, + .frames = { {{ 0x52 }, 1, 7, 0} }, + .frame_count = 1, + .extra_timeout = 0, }; @@ -2519,7 +2519,7 @@ static void iso14a_set_ATS_times(const uint8_t *ats) { static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters *polling_parameters) { - #define WUPA_RETRY_TIMEOUT 10 +#define WUPA_RETRY_TIMEOUT 10 uint32_t save_iso14a_timeout = iso14a_get_timeout(); iso14a_set_timeout(1236 / 128 + 1); // response to WUPA is expected at exactly 1236/fc. No need to wait longer. @@ -2543,7 +2543,7 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters * if (frame_parameters->extra_delay) { SpinDelay(frame_parameters->extra_delay); } - + // Receive the ATQA len = ReaderReceive(resp, resp_par); @@ -3027,9 +3027,9 @@ void ReaderIso14443a(PacketCommandNG *c) { iso14a_card_select_t *card = (iso14a_card_select_t *)buf; arg0 = iso14443a_select_cardEx( - NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), - (param & ISO14A_USE_CUSTOM_POLLING) ? (iso14a_polling_parameters *)cmd : &WUPA_POLLING_PARAMETERS - ); + NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), + (param & ISO14A_USE_CUSTOM_POLLING) ? (iso14a_polling_parameters *)cmd : &WUPA_POLLING_PARAMETERS + ); // TODO: Improve by adding a cmd parser pointer and moving it by struct length to allow combining data with polling params FpgaDisableTracing(); diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index bf1ded102..21ad70be7 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -55,31 +55,31 @@ static int CmdHelp(const char *Cmd); static int waitCmd(bool i_select, uint32_t timeout, bool verbose); -static const iso14a_polling_frame WUPA_FRAME = { +static const iso14a_polling_frame WUPA_FRAME = { { 0x52 }, 1, 7, 0, }; -static const iso14a_polling_frame MAGWUPA1_FRAME = { - { 0x7A }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA1_FRAME = { + { 0x7A }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA2_FRAME = { - { 0x7B }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA2_FRAME = { + { 0x7B }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA3_FRAME = { - { 0x7C }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA3_FRAME = { + { 0x7C }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA4_FRAME = { - { 0x7D }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA4_FRAME = { + { 0x7D }, 1, 7, 0 }; -static const iso14a_polling_frame ECP_FRAME = { - .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, - .frame_length=15, - .last_byte_bits=8, - .extra_delay=0 +static const iso14a_polling_frame ECP_FRAME = { + .frame = { 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, + .frame_length = 15, + .last_byte_bits = 8, + .extra_delay = 0 }; @@ -465,34 +465,34 @@ int Hf14443_4aGetCardData(iso14a_card_select_t *card) { iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe) { // Extra 100ms give enough time for Apple (ECP) devices to proccess field info and make a decision - + if (use_ecp && use_magsafe) { iso14a_polling_parameters full_polling_parameters = { - .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=6, - .extra_timeout=100 + .frames = { WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count = 6, + .extra_timeout = 100 }; return full_polling_parameters; } else if (use_ecp) { iso14a_polling_parameters ecp_polling_parameters = { - .frames={ WUPA_FRAME, ECP_FRAME }, - .frame_count=2, - .extra_timeout=100 + .frames = { WUPA_FRAME, ECP_FRAME }, + .frame_count = 2, + .extra_timeout = 100 }; return ecp_polling_parameters; } else if (use_magsafe) { iso14a_polling_parameters magsafe_polling_parameters = { - .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=5, - .extra_timeout=0 + .frames = { WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count = 5, + .extra_timeout = 0 }; return magsafe_polling_parameters; - } + } iso14a_polling_parameters wupa_polling_parameters = { - .frames={ WUPA_FRAME }, - .frame_count=1, - .extra_timeout=0, + .frames = { WUPA_FRAME }, + .frame_count = 1, + .extra_timeout = 0, }; return wupa_polling_parameters; } @@ -540,7 +540,7 @@ static int CmdHF14AReader(const char *Cmd) { bool use_ecp = arg_get_lit(ctx, 5); bool use_magsafe = arg_get_lit(ctx, 6); - iso14a_polling_parameters * polling_parameters = NULL; + iso14a_polling_parameters *polling_parameters = NULL; iso14a_polling_parameters parameters = iso14a_get_polling_parameters(use_ecp, use_magsafe); if (use_ecp || use_magsafe) { cm |= ISO14A_USE_CUSTOM_POLLING; @@ -566,7 +566,7 @@ static int CmdHF14AReader(const char *Cmd) { } else { SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, NULL, 0); } - + if (ISO14A_CONNECT & cm) { PacketResponseNG resp; @@ -982,7 +982,7 @@ int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card } else { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT, 0, 0, NULL, 0); } - + if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { PrintAndLogEx(WARNING, "Command execute timeout"); return PM3_ETIMEOUT; @@ -1439,7 +1439,7 @@ static int CmdHF14ACmdRaw(const char *Cmd) { // flags |= ISO14A_USE_MAGSAFE; // flags |= ISO14A_USE_ECP; } - + // Max buffer is PM3_CMD_DATA_SIZE datalen = (datalen > PM3_CMD_DATA_SIZE) ? PM3_CMD_DATA_SIZE : datalen; diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index 1a0dca54e..ac0365cdf 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -41,18 +41,18 @@ #include "mbedtls/ecc_point_compression.h" #include "mbedtls/gcm.h" -static const iso14a_polling_frame WUPA_FRAME = { - .frame={ 0x52 }, - .frame_length=1, - .last_byte_bits=7, - .extra_delay=0, +static const iso14a_polling_frame WUPA_FRAME = { + .frame = { 0x52 }, + .frame_length = 1, + .last_byte_bits = 7, + .extra_delay = 0, }; static const iso14a_polling_frame ECP_VAS_ONLY_FRAME = { - .frame={0x6a, 0x01, 0x00, 0x00, 0x02, 0xe4, 0xd2}, - .frame_length=7, - .last_byte_bits=8, - .extra_delay=0, + .frame = {0x6a, 0x01, 0x00, 0x00, 0x02, 0xe4, 0xd2}, + .frame_length = 7, + .last_byte_bits = 8, + .extra_delay = 0, }; uint8_t aid[] = { 0x4f, 0x53, 0x45, 0x2e, 0x56, 0x41, 0x53, 0x2e, 0x30, 0x31 }; @@ -350,9 +350,9 @@ static int VASReader(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t * clearCommandBuffer(); iso14a_polling_parameters polling_parameters = { - .frames={ WUPA_FRAME, ECP_VAS_ONLY_FRAME }, - .frame_count=2, - .extra_timeout=250 + .frames = { WUPA_FRAME, ECP_VAS_ONLY_FRAME }, + .frame_count = 2, + .extra_timeout = 250 }; if (SelectCard14443A_4_WithParameters(false, false, NULL, &polling_parameters) != PM3_SUCCESS) { diff --git a/doc/commands.json b/doc/commands.json index 775087e22..5686c7542 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3534,13 +3534,17 @@ "command": "hf legic einfo", "description": "It decodes and displays emulator memory", "notes": [ - "hf legic einfo" + "hf legic einfo", + "hf legic eview --22" ], "offline": false, "options": [ - "-h, --help This help" + "-h, --help This help", + "--22 LEGIC Prime MIM22", + "--256 LEGIC Prime MIM256 (def)", + "--1024 LEGIC Prime MIM1024" ], - "usage": "hf legic einfo [-h]" + "usage": "hf legic einfo [-h] [--22] [--256] [--1024]" }, "hf legic eload": { "command": "hf legic eload", @@ -7631,9 +7635,10 @@ ], "offline": true, "options": [ - "-h, --help This help" + "-h, --help This help", + "-v, --verbose verbose output" ], - "usage": "lf cotag demod [-h]" + "usage": "lf cotag demod [-hv]" }, "lf cotag reader": { "command": "lf cotag reader", @@ -11689,6 +11694,6 @@ "metadata": { "commands_extracted": 679, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-16T13:30:30" + "extracted_on": "2023-07-17T15:46:12" } } \ No newline at end of file diff --git a/include/mifare.h b/include/mifare.h index 3bb8c9ba8..863734cb5 100644 --- a/include/mifare.h +++ b/include/mifare.h @@ -91,9 +91,9 @@ typedef struct { // Defines polling sequence configuration // 6 would be enough for 4 magsafe, 1 wupa, 1 ecp, typedef struct { - iso14a_polling_frame frames[6]; - uint8_t frame_count; - uint16_t extra_timeout; + iso14a_polling_frame frames[6]; + uint8_t frame_count; + uint16_t extra_timeout; } iso14a_polling_parameters; typedef struct { From c70e5beeac7229605690230985e029031ae37a59 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 17 Jul 2023 19:31:37 +0200 Subject: [PATCH 0218/1034] changed legic sim to have a different loop and exit message. Added some colors in output and the return codes on deviceside for legisim now uses the same PM3_E* styled --- CHANGELOG.md | 1 + armsrc/legicrfsim.c | 61 ++++++++++++++++++----------------------- client/src/cmdhflegic.c | 15 +++++----- 3 files changed, 36 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f6503e33..5711c1090 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf legic sim` - loop and return codes on deviceside updated to DEFINES (@iceman1001) - Changed `hf legic einfo` - now accepts the three different cardsizes as params (@iceman1001) - Fix `lf cotag reader -1` - now doesn't fail (@iceman1001) - Added support for LZ4 compressed hadnested tables (@doegox) diff --git a/armsrc/legicrfsim.c b/armsrc/legicrfsim.c index 58ca40320..f1bc40968 100644 --- a/armsrc/legicrfsim.c +++ b/armsrc/legicrfsim.c @@ -96,13 +96,13 @@ static int8_t rx_bit(void) { uint32_t bit_start = last_frame_end; // wait for pause to end - if (!wait_for(RWD_PULSE, bit_start + RWD_TIME_1 * 3 / 2)) { - return -1; + if (wait_for(RWD_PULSE, bit_start + RWD_TIME_1 * 3 / 2) == false) { + return PM3_ERFTRANS; } // wait for next pause - if (!wait_for(RWD_PAUSE, bit_start + RWD_TIME_1 * 3 / 2)) { - return -1; + if (wait_for(RWD_PAUSE, bit_start + RWD_TIME_1 * 3 / 2) == false) { + return PM3_ERFTRANS; } // update bit and frame end @@ -110,7 +110,7 @@ static int8_t rx_bit(void) { // check for code violation (bit to short) if (last_frame_end - bit_start < RWD_TIME_PAUSE) { - return -1; + return PM3_ERFTRANS; } // apply threshold (average of RWD_TIME_0 and ) @@ -235,7 +235,7 @@ static int32_t rx_frame(uint8_t *len) { // check for code violation if (i > RWD_CMD_TIMEOUT) { - return -1; + return PM3_ETIMEOUT; } } @@ -251,7 +251,7 @@ static int32_t rx_frame(uint8_t *len) { // check for code violation and to short / long frame if ((bit < 0) && ((*len < RWD_MIN_FRAME_LEN) || (*len > RWD_MAX_FRAME_LEN))) { - return -1; + return PM3_ERFTRANS; } // check for code violation caused by end of frame @@ -353,7 +353,7 @@ static int32_t setup_phase(legic_card_select_t *p_card) { // wait for iv int32_t iv = rx_frame(&len); if ((len != 7) || (iv < 0)) { - return -1; + return PM3_ERFTRANS; } // configure prng @@ -375,19 +375,19 @@ static int32_t setup_phase(legic_card_select_t *p_card) { // wait for ack int32_t ack = rx_frame(&len); if ((len != 6) || (ack < 0)) { - return -1; + return PM3_ERFTRANS; } // validate data switch (p_card->tagtype) { case 0: - if (ack != 0x19) return -1; + if (ack != 0x19) return PM3_ERFTRANS; break; case 1: - if (ack != 0x39) return -1; + if (ack != 0x39) return PM3_ERFTRANS; break; case 2: - if (ack != 0x39) return -1; + if (ack != 0x39) return PM3_ERFTRANS; break; } @@ -399,7 +399,7 @@ static int32_t setup_phase(legic_card_select_t *p_card) { // the gap by one period. last_frame_end += TAG_BIT_PERIOD; - return 0; + return PM3_SUCCESS; } static uint8_t calc_crc4(uint16_t cmd, uint8_t cmd_sz, uint8_t value) { @@ -414,7 +414,7 @@ static int32_t connected_phase(legic_card_select_t *p_card) { // wait for command int32_t cmd = rx_frame(&len); if (cmd < 0) { - return -1; + return PM3_ETIMEOUT; } // check if command is LEGIC_READ @@ -425,8 +425,7 @@ static int32_t connected_phase(legic_card_select_t *p_card) { // transmit data tx_frame((crc << 8) | byte, 12); - - return 0; + return PM3_SUCCESS; } // check if command is LEGIC_WRITE @@ -441,7 +440,7 @@ static int32_t connected_phase(legic_card_select_t *p_card) { uint8_t calc_crc = calc_crc4(addr << 1, p_card->cmdsize, byte); if (calc_crc != crc) { Dbprintf("!!! crc mismatch: %x != %x !!!", calc_crc, crc); - return -1; + return PM3_ECRC; } // store data @@ -449,11 +448,10 @@ static int32_t connected_phase(legic_card_select_t *p_card) { // transmit ack tx_ack(); - - return 0; + return PM3_SUCCESS; } - return -1; + return PM3_ERFTRANS; } //----------------------------------------------------------------------------- @@ -474,35 +472,30 @@ void LegicRfSimulate(uint8_t tagtype, bool send_reply) { goto OUT; } - uint16_t counter = 0; LED_A_ON(); - Dbprintf("Legic Prime, simulating uid: %02X%02X%02X%02X", legic_mem[0], legic_mem[1], legic_mem[2], legic_mem[3]); + Dbprintf("Legic Prime, simulating uid... " _YELLOW_("%02X%02X%02X%02X"), legic_mem[0], legic_mem[1], legic_mem[2], legic_mem[3]); while (BUTTON_PRESS() == false) { + WDT_HIT(); - if (counter >= 2000) { - if (data_available()) { - res = PM3_EOPABORTED; - break; - } - counter = 0; + if (data_available()) { + res = PM3_EOPABORTED; + goto OUT; } - counter++; - // wait for carrier, restart after timeout if (wait_for(RWD_PULSE, GetCountSspClk() + TAG_BIT_PERIOD) == false) { continue; } // wait for connection, restart on error - if (setup_phase(&card)) { + if (setup_phase(&card) != PM3_SUCCESS) { continue; } // connection is established, process commands until one fails - while (connected_phase(&card) == false) { + while (connected_phase(&card) != PM3_SUCCESS) { WDT_HIT(); } } @@ -510,11 +503,11 @@ void LegicRfSimulate(uint8_t tagtype, bool send_reply) { OUT: if (g_dbglevel >= DBG_ERROR) { - Dbprintf("Emulator stopped. Tracing: %d trace length: %d ", get_tracing(), BigBuf_get_traceLen()); + Dbprintf("Emulator stopped. Trace length... " _YELLOW_("%d"), BigBuf_get_traceLen()); } if (res == PM3_EOPABORTED) - DbpString("aborted by user"); + DbpString("Aborted by user"); switch_off(); StopTicks(); diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index c8eb513ac..a0b703453 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -536,20 +536,21 @@ static int CmdLegicSim(const char *Cmd) { SendCommandNG(CMD_HF_LEGIC_SIMULATE, (uint8_t *)&payload, sizeof(payload)); PacketResponseNG resp; - PrintAndLogEx(INFO, "Press pm3-button to abort simulation"); - bool keypress = kbd_enter_pressed(); - while (keypress == false) { - keypress = kbd_enter_pressed(); + PrintAndLogEx(INFO, "Press " _GREEN_("") " or pm3-button to abort simulation"); + for (;;) { + if (kbd_enter_pressed()) { + SendCommandNG(CMD_BREAK_LOOP, NULL, 0); + PrintAndLogEx(DEBUG, "User aborted"); + break; + } if (WaitForResponseTimeout(CMD_HF_LEGIC_SIMULATE, &resp, 1500)) { break; } - } - if (keypress) - SendCommandNG(CMD_BREAK_LOOP, NULL, 0); PrintAndLogEx(INFO, "Done"); + PrintAndLogEx(HINT, "Try `" _YELLOW_("hf legic list") "` to view trace log"); return PM3_SUCCESS; } From d08c6f404b6f27c65283a9630e50203b996d4d13 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 17 Jul 2023 22:54:43 +0200 Subject: [PATCH 0219/1034] first cleanup of hf_legic lua script. All io.open calls is problematic.\nfixed some colors in the help texts. makes it a bit easier to read\nfix loading files using the searchfile call\nstill problematic with save file calls since it should honor the user defined preference paths. --- client/luascripts/hf_legic.lua | 301 +++++++++++++++++++-------------- client/src/scripting.c | 3 +- 2 files changed, 175 insertions(+), 129 deletions(-) diff --git a/client/luascripts/hf_legic.lua b/client/luascripts/hf_legic.lua index cbec05f9f..663d02e36 100644 --- a/client/luascripts/hf_legic.lua +++ b/client/luascripts/hf_legic.lua @@ -96,10 +96,63 @@ Known issues; needs to be fixed: * last byte in last segment is handled incorrectly when it is the last bytes on the card itself (MIM256: => byte 256) --]] + +--- +-- requirements +local utils = require('utils') +local getopt = require('getopt') +local ansicolors = require('ansicolors') + +--- +-- global variables / defines +local bxor = bit32.bxor +local bbit = bit32.extract +local input = utils.input +local confirm = utils.confirm + +--- +-- init ansicolor-values & ansicolors switch +local colored_output = true +local acoff = "" +local acgreen= "" +local accyan = "" +local acred = "" +local acyellow = "" +local acblue = "" +local acmagenta = "" + +local acy = ansicolors.yellow +local acr = ansicolors.reset + +--- Helper --- +--- +-- default colors (change to whatever you want) +function load_colors(onoff) + if (onoff) then + -- colors + acgreen = ansicolors.green + accyan = ansicolors.cyan + acred = ansicolors.red + acyellow= ansicolors.yellow + acblue = ansicolors.blue + acmagenta= ansicolors.magenta + acoff = ansicolors.reset + else + -- 'no color' + acgreen = "" + accyan = "" + acred = "" + acyellow= "" + acblue = "" + acmagenta= "" + acoff = "" + end +end + + example = "script run hf_legic" author = "Mosci, uhei" -version = "1.0.4" - +version = "1.0.5" desc = [[ @@ -109,23 +162,23 @@ it's kinda interactive with following commands in three categories: Data I/O Segment Manipulation Token-Data ----------------- -------------------- ----------------- - rt => read Tag as => add Segment mt => make Token - wt => write Tag es => edit Segment Header et => edit Token data - ed => edit Segment Data tk => toggle KGH-Flag - File I/O rs => remove Segment - ----------------- cc => check Segment-CRC - lf => load bin File ck => check KGH - sf => save eml/bin File ds => dump Segments - xf => xor to File + ]]..acy..[[rt]]..acr..[[ => read Tag ]]..acy..[[as]]..acr..[[ => add Segment ]]..acy..[[mt]]..acr..[[ => make Token + ]]..acy..[[wt]]..acr..[[ => write Tag ]]..acy..[[es]]..acr..[[ => edit Segment Header ]]..acy..[[et]]..acr..[[ => edit Token data + ]]..acy..[[ed]]..acr..[[ => edit Segment Data ]]..acy..[[tk]]..acr..[[ => toggle KGH-Flag + File I/O ]]..acy..[[rs]]..acr..[[ => remove Segment + ----------------- ]]..acy..[[cc]]..acr..[[ => check Segment-CRC + ]]..acy..[[lf]]..acr..[[ => load bin File ]]..acy..[[ck]]..acr..[[ => check KGH + ]]..acy..[[sf]]..acr..[[ => save eml/bin File ]]..acy..[[ds]]..acr..[[ => dump Segments + ]]..acy..[[xf]]..acr..[[ => xor to File (partially) known Segments Virtual Tags Script Output --------------------------- ------------------------------- ------------------------ - dlc => dump Legic-Cash ct => copy mainTag to backupTag tac => toggle ansicolors - elc => edit Legic-Cash tc => copy backupTag to mainTag - d3p => dump 3rd-Party-Cash tt => switch mainTag & backupTag - e3p => edit 3rd-Party-Cash di => dump mainTag - do => dump backupTag + ]]..acy..[[dlc]]..acr..[[ => dump Legic-Cash ]]..acy..[[ct]]..acr..[[ => copy mainTag to backupTag ]]..acy..[[tac]]..acr..[[ => toggle ansicolors + ]]..acy..[[elc]]..acr..[[ => edit Legic-Cash ]]..acy..[[tc]]..acr..[[ => copy backupTag to mainTag + ]]..acy..[[d3p]]..acr..[[ => dump 3rd-Party-Cash ]]..acy..[[tt]]..acr..[[ => switch mainTag & backupTag + ]]..acy..[[e3p]]..acr..[[ => edit 3rd-Party-Cash ]]..acy..[[di]]..acr..[[ => dump mainTag + ]]..acy..[[do]]..acr..[[ => dump backupTag @@ -169,55 +222,6 @@ tac: 'toggle ansicolors'- switch on and off the colored text-output of this scri ]] currentTag="inTAG" ---- --- requirements -local utils = require('utils') -local getopt = require('getopt') -local ansicolors = require('ansicolors') - ---- --- global variables / defines -local bxor = bit32.bxor -local bbit = bit32.extract -local input = utils.input -local confirm = utils.confirm - ---- --- init ansicolor-values & ansicolors switch -local colored_output = true -local acoff = "" -local acgreen= "" -local accyan = "" -local acred = "" -local acyellow = "" -local acblue = "" -local acmagenta = "" - ---- Helper --- ---- --- default colors (change to whatever you want) -function load_colors(onoff) - if (onoff) then - -- colors - acgreen = ansicolors.green - accyan = ansicolors.cyan - acred = ansicolors.red - acyellow= ansicolors.yellow - acblue = ansicolors.blue - acmagenta= ansicolors.magenta - acoff = ansicolors.reset - else - -- 'no color' - acgreen = "" - accyan = "" - acred = "" - acyellow= "" - acblue = "" - acmagenta= "" - acoff = "" - end -end - --- -- curency-codes for Legic-Cash-Segments (ISO 4217) local currency = { @@ -237,7 +241,11 @@ end --- -- Usage help function help() - print(desc) + -- the proxmark3 client can't handle such long strings + -- by breaking up at specific points it still looks good. + print(string.sub(desc, 0, 1961)) + print(string.sub(desc, 1962, 3925)) + print(string.sub(desc, 3926, #desc)) print("Version: "..version) print("Example usage: "..example) end @@ -305,18 +313,6 @@ function xorBytes(inBytes, crc) end end ---- --- check availability of file -function file_check(file_name) - local file_found = io.open(file_name, "r") - if file_found == nil then - return false - else - file_found:close() - return true - end -end - --- -- split csv-string into table local function split(str, sep) @@ -330,6 +326,23 @@ local function split(str, sep) return fields end +--- +-- check availability of file +function file_check(file_name) + + local arr = split(file_name, ".") + local path = core.search_file(arr[1], "."..arr[2]) + if (path == nil) then return false end + + local file_found = io.open(path, "r") + if file_found == nil then + return false, "" + else + file_found:close() + return true, path + end +end + --- -- put a string into a bytes-table function str2bytes(s) @@ -358,8 +371,13 @@ end function getInputBytes(infile) local line local bytes = {} - local fhi,err = io.open(infile,"rb") - if err then oops("failed to read from file ".. infile); return false; end + + local arr = split(infile, ".") + local path = core.search_file(arr[1], "."..arr[2]) + if (path == nil) then oops("failed to read from file ".. infile); return false; end + + local fhi,err = io.open(path,"rb") + if err then oops("failed to read from file ".. path); return false; end file_data = fhi:read("*a"); for i = 1, #file_data do @@ -367,7 +385,7 @@ function getInputBytes(infile) end fhi:close() if (bytes[7]=='00') then return false end - print(#bytes .. " bytes from "..infile.." loaded") + print(#bytes .. " bytes from "..path.." loaded") return bytes end @@ -613,12 +631,13 @@ local function readFile(filename) print(accyan) local bytes = {} local tag = {} - if file_check(filename) == false then + + local res, path = file_check(filename) + if not res then return oops("input file: "..acyellow..filename..acoff.." not found") end - bytes = getInputBytes(filename) - + bytes = getInputBytes(path) if bytes == false then return oops('couldnt get input bytes') end -- make plain bytes @@ -640,12 +659,14 @@ local function save_BIN(data, filename) local fn = filename..ext -- Make sure we don't overwrite a file - while file_check(fn) do + local res, path = file_check(fn) + while res == false do fn = filename..ext:gsub(ext, "-"..tostring(counter)..ext) counter = counter + 1 + res, path = file_check(fn) end - outfile = io.open(fn, 'wb') + outfile = io.open(path, 'wb') local i = 1 while data[i] do @@ -660,17 +681,19 @@ end -- write bytes to file function writeFile(bytes, filename) local emlext = ".eml" + local res, path if (filename ~= 'MyLegicClone') then - if (file_check(filename..emlext)) then - local answer = confirm("\nthe output-file "..filename..emlext.." already exists!\nthis will delete the previous content!\ncontinue?") + res, path = file_check(filename..emlext) + if res then + local answer = confirm("\nthe output-file "..path.." already exists!\nthis will delete the previous content!\ncontinue?") if not answer then return print("user abort") end end end local line local bcnt = 0 - local fho, err = io.open(filename..emlext, "w") + local fho, err = io.open(path, "w") if err then - return oops("OOps ... failed to open output-file ".. filename..emlext) + return oops("OOps ... failed to open output-file ".. path) end bytes = xorBytes(bytes, bytes[5]) @@ -692,11 +715,10 @@ function writeFile(bytes, filename) end fho:close() - -- save binary - local fn_bin, fn_bin_num = save_BIN(bytes, filename) - print("\nwrote "..acyellow..(#bytes * 3)..acoff.." bytes to " ..acyellow..filename..emlext..acoff) + -- save binary + local fn_bin, fn_bin_num = save_BIN(bytes, filename) if fn_bin and fn_bin_num then print("\nwrote "..acyellow..fn_bin_num..acoff.." bytes to BINARY file "..acyellow..fn_bin..acoff) end @@ -731,10 +753,16 @@ function readFromPM3() infile=getRandomTempName() core.console("hf legic dump -f "..infile) tag=readFile(infile..".bin") - os.remove(infile) - os.remove(infile..".bin") - os.remove(infile..".eml") - os.remove(infile..".json") + + res, path = file_check(infile..".bin") + if not res then return nil end + os.remove(path) + + res, path = file_check(infile..".eml") + os.remove(path) + + res, path = file_check(infile..".json") + os.remove(path) return tag end @@ -758,16 +786,20 @@ end --- -- save mapping to file local function saveTagMap(map, filename) + + local res, path + if #filename > 0 then - if file_check(filename) then - local answer = confirm("\nthe output-file "..acyellow..filename..acoff.." alredy exists!\nthis will delete the previous content!\ncontinue?") + res, path = file_check(filename) + if res then + local answer = confirm("\nthe output-file "..acyellow..path..acoff.." alredy exists!\nthis will delete the previous content!\ncontinue?") if not answer then return print("user abort") end end end local line - local fho,err = io.open(filename, "w") - if err then oops("OOps ... failed to open output-file "..acyellow..filename..acoff) end + local fho,err = io.open(path, "w") + if err then oops("OOps ... failed to open output-file "..acyellow..path..acoff) end -- write line to new file for k, v in pairs(map) do @@ -842,10 +874,13 @@ function loadTagMap(filename) local line, fields local temp={} local offset=0 - if not file_check(filename) then - return oops("input file: "..acyellow..filename..acoff.." not found") - else - local fhi,err = io.open(filename) + + local res, path = file_check(filename) + if not res then + return oops("input file: "..acyellow..filename..acoff.." not found") + else + + local fhi,err = io.open(path) while true do line = fhi:read() if line == nil then @@ -971,6 +1006,7 @@ Mappings: im = insert am = add rm = remove CRC8: ac8 = add sc8 = show rc8 = remove : q = exit h = Help ]] + --if(#tagMap.mappings==0) then oops("no mappings in tagMap"); return tagMap end print("tagMap edit-mode submenu") repeat @@ -2293,25 +2329,25 @@ function modifyHelp() Data I/O Segment Manipulation Token-Data ----------------- -------------------- --------------------- - rt => read Tag as => add Segment mt => make Token - wt => write Tag es => edit Segment Header et => edit Token data - ed => edit Segment Data tk => toggle KGH-Flag - File I/O rs => remove Segment - ----------------- cc => check Segment-CRC - lf => load bin File ck => check KGH - sf => save eml/bin File ds => dump Segments - xf => xor to File + ]]..acy..[[rt]]..acr..[[ => read Tag ]]..acy..[[as]]..acr..[[ => add Segment ]]..acy..[[mt]]..acr..[[ => make Token + ]]..acy..[[wt]]..acr..[[ => write Tag ]]..acy..[[es]]..acr..[[ => edit Segment Header ]]..acy..[[et]]..acr..[[ => edit Token data + ]]..acy..[[ed]]..acr..[[ => edit Segment Data ]]..acy..[[tk]]..acr..[[ => toggle KGH-Flag + File I/O ]]..acy..[[rs]]..acr..[[ => remove Segment + ----------------- ]]..acy..[[cc]]..acr..[[ => check Segment-CRC + ]]..acy..[[lf]]..acr..[[ => load bin File ]]..acy..[[ck]]..acr..[[ => check KGH + ]]..acy..[[sf]]..acr..[[ => save eml/bin File ]]..acy..[[ds]]..acr..[[ => dump Segments + ]]..acy..[[xf]]..acr..[[ => xor to File Virtual Tags tagMap (partial) known Segments -------------------------------- --------------------- --------------------------- - ct => copy mainTag to backupTag mm => make (new) Map dlc => dump Legic-Cash - tc => copy backupTag to mainTag em => edit Map submenu elc => edit Legic-Cash - tt => switch mainTag & backupTag lm => load map from file d3p => dump 3rd-Party-Cash - di => dump mainTag sm => save map to file e3p => edit 3rd-Party-Cash - do => dump backupTag + ]]..acy..[[xf]]..acr..[[ => copy mainTag to backupTag ]]..acy..[[mm]]..acr..[[ => make (new) Map ]]..acy..[[dlc]]..acr..[[ => dump Legic-Cash + ]]..acy..[[xf]]..acr..[[ => copy backupTag to mainTag ]]..acy..[[em]]..acr..[[ => edit Map submenu ]]..acy..[[elc]]..acr..[[ => edit Legic-Cash + ]]..acy..[[xf]]..acr..[[ => switch mainTag & backupTag ]]..acy..[[lm]]..acr..[[ => load map from file ]]..acy..[[d3p]]..acr..[[ => dump 3rd-Party-Cash + ]]..acy..[[xf]]..acr..[[ => dump mainTag ]]..acy..[[sm]]..acr..[[ => save map to file ]]..acy..[[e3p]]..acr..[[ => edit 3rd-Party-Cash + ]]..acy..[[xf]]..acr..[[ => dump backupTag - h => this help q => quit + ]]..acy..[[h]]..acr..[[ => this help ]]..acy..[[q]]..acr..[[ => quit ]] return t end @@ -2325,8 +2361,10 @@ function modifyMode() --- -- helptext ["h"] = function(x) - print(" Version: "..version); - print(modifyHelp().."\n".."tags im Memory: "..(istable(inTAG) and ((currentTag=='inTAG') and acgreen.."*mainTAG"..acoff or "mainTAG") or "").." "..(istable(backupTAG) and ((currentTag=='backupTAG') and acgreen.."*backupTAG"..acoff or "backupTAG") or "")) + print(" Version: "..acgreen..version..acr); + print(modifyHelp()) + print("\n".."tags im Memory: "..(istable(inTAG) and ((currentTag=='inTAG') and acgreen.."*mainTAG"..acoff or "mainTAG") or "").." "..(istable(backupTAG) and ((currentTag=='backupTAG') and acgreen.."*backupTAG"..acoff or "backupTAG") or "")) + print("") end, --- -- read real Tag with PM3 into virtual 'mainTAG' @@ -2375,8 +2413,9 @@ function modifyMode() end inTAG=readFile(filename) -- check for existing tagMap - if (file_check(filename..".map")) then - if(confirm(accyan.."Mapping-File for "..acoff..filename..accyan.." found - load it also?"..acoff)) then + local res, path = file_check(filename..".map") + if res then + if(confirm(accyan.."Mapping-File for "..acoff..path..accyan.." found - load it also?"..acoff)) then tagMap=loadTagMap(filename..".map") end end @@ -2388,7 +2427,7 @@ function modifyMode() outfile = input("enter filename:", "hf-legic-"..inTAG.MCD..inTAG.MSN0..inTAG.MSN1..inTAG.MSN2) bytes = tagToBytes(inTAG) --bytes=xorBytes(bytes, inTAG.MCC) - if (bytes) then + if (bytes) then writeFile(bytes, outfile) end end @@ -2743,10 +2782,13 @@ end function main(args) -- set init colors/switch (can be toggled with 'tac' => 'toggle ansicolors') load_colors(colored_output) - if (#args == 0 ) then modifyMode() end + if (#args == 0 ) then modifyMode() end --- variables - local inTAG, backupTAG, outTAG, outfile, interactive, crc, ofs, cfs, dfs - -- just a spacer for better readability + local inTAG, backupTAG, outTAG, outfile, interactive, crc + local ofs=false + local cfs=false + local dfs=false + -- just a spacer for better readability print() --- parse arguments for o, a in getopt.getopt(args, 'hrmi:do:c:') do @@ -2755,7 +2797,7 @@ function main(args) -- read tag from PM3 if o == "r" then inTAG=readFromPM3() end -- input file - if o == "i" then inTAG=readFile(a) end + if o == "i" then inTAG=readFile(a) end -- dump virtual-Tag if o == "d" then dfs=true end -- interacive modifying @@ -2793,7 +2835,10 @@ function main(args) -- write to outfile if (bytes) then - writeFile(bytes, outfile) + + if (outfile) then + writeFile(bytes, outfile) + end --- read real tag into virtual tag -- inTAG=readFromPM3() end --- or simply use the bytes that where wriiten diff --git a/client/src/scripting.c b/client/src/scripting.c index c96d593df..613562978 100644 --- a/client/src/scripting.c +++ b/client/src/scripting.c @@ -1269,8 +1269,9 @@ static int l_searchfile(lua_State *L) { size_t size; // data const char *filename = luaL_checklstring(L, 1, &size); - if (size == 0) + if (size == 0) { return returnToLuaWithError(L, "Must specify filename"); + } const char *suffix = luaL_checklstring(L, 2, &size); char *path; From 0d682da6765d0e1e13a702e6391aaf6a6110c8af Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 19 Jul 2023 10:09:18 +0200 Subject: [PATCH 0220/1034] more fixes for hf_legic. missing zero padding, removed tab, more colors --- client/luascripts/hf_legic.lua | 131 +++++++++++++++++++-------------- 1 file changed, 75 insertions(+), 56 deletions(-) diff --git a/client/luascripts/hf_legic.lua b/client/luascripts/hf_legic.lua index 663d02e36..052f7ab06 100644 --- a/client/luascripts/hf_legic.lua +++ b/client/luascripts/hf_legic.lua @@ -122,6 +122,7 @@ local acblue = "" local acmagenta = "" local acy = ansicolors.yellow +local acc = ansicolors.cyan local acr = ansicolors.reset --- Helper --- @@ -137,6 +138,10 @@ function load_colors(onoff) acblue = ansicolors.blue acmagenta= ansicolors.magenta acoff = ansicolors.reset + + acy = ansicolors.yellow + acc = ansicolors.cyan + acr = ansicolors.reset else -- 'no color' acgreen = "" @@ -146,6 +151,10 @@ function load_colors(onoff) acblue = "" acmagenta= "" acoff = "" + + acy = "" + acc = "" + acr = "" end end @@ -156,68 +165,66 @@ version = "1.0.5" desc = [[ -This script helps you to read, create and modify Legic Prime Tags (MIM22, MIM256, MIM1024) +This script helps you to read, create and modify Legic Prime Tags ( MIM22, MIM256, MIM1024 ) The virtual tag (and therefore the file to be saved) is always a MIM1024 tag. it's kinda interactive with following commands in three categories: Data I/O Segment Manipulation Token-Data ----------------- -------------------- ----------------- - ]]..acy..[[rt]]..acr..[[ => read Tag ]]..acy..[[as]]..acr..[[ => add Segment ]]..acy..[[mt]]..acr..[[ => make Token - ]]..acy..[[wt]]..acr..[[ => write Tag ]]..acy..[[es]]..acr..[[ => edit Segment Header ]]..acy..[[et]]..acr..[[ => edit Token data + ]]..acy..[[rt]]..acr..[[ -> read Tag ]]..acy..[[as]]..acr..[[ -> add Segment ]]..acy..[[mt]]..acr..[[ -> make Token + ]]..acy..[[wt]]..acr..[[ -> write Tag ]]..acy..[[es]]..acr..[[ -> edit Segment Header ]]..acy..[[et]]..acr..[[ -> edit Token data ]]..acy..[[ed]]..acr..[[ => edit Segment Data ]]..acy..[[tk]]..acr..[[ => toggle KGH-Flag File I/O ]]..acy..[[rs]]..acr..[[ => remove Segment - ----------------- ]]..acy..[[cc]]..acr..[[ => check Segment-CRC - ]]..acy..[[lf]]..acr..[[ => load bin File ]]..acy..[[ck]]..acr..[[ => check KGH - ]]..acy..[[sf]]..acr..[[ => save eml/bin File ]]..acy..[[ds]]..acr..[[ => dump Segments - ]]..acy..[[xf]]..acr..[[ => xor to File + ----------------- ]]..acy..[[cc]]..acr..[[ -> check Segment-CRC + ]]..acy..[[lf]]..acr..[[ -> load bin File ]]..acy..[[ck]]..acr..[[ -> check KGH + ]]..acy..[[sf]]..acr..[[ -> save eml/bin File ]]..acy..[[ds]]..acr..[[ -> dump Segments + ]]..acy..[[xf]]..acr..[[ -> xor to File (partially) known Segments Virtual Tags Script Output --------------------------- ------------------------------- ------------------------ - ]]..acy..[[dlc]]..acr..[[ => dump Legic-Cash ]]..acy..[[ct]]..acr..[[ => copy mainTag to backupTag ]]..acy..[[tac]]..acr..[[ => toggle ansicolors - ]]..acy..[[elc]]..acr..[[ => edit Legic-Cash ]]..acy..[[tc]]..acr..[[ => copy backupTag to mainTag - ]]..acy..[[d3p]]..acr..[[ => dump 3rd-Party-Cash ]]..acy..[[tt]]..acr..[[ => switch mainTag & backupTag - ]]..acy..[[e3p]]..acr..[[ => edit 3rd-Party-Cash ]]..acy..[[di]]..acr..[[ => dump mainTag + ]]..acy..[[dlc]]..acr..[[ -> dump Legic-Cash ]]..acy..[[ct]]..acr..[[ -> copy mainTag to backupTag ]]..acy..[[tac]]..acr..[[ -> toggle ansicolors + ]]..acy..[[elc]]..acr..[[ -> edit Legic-Cash ]]..acy..[[tc]]..acr..[[ -> copy backupTag to mainTag + ]]..acy..[[d3p]]..acr..[[ -> dump 3rd-Party-Cash ]]..acy..[[tt]]..acr..[[ -> switch mainTag & backupTag + ]]..acy..[[e3p]]..acr..[[ -> edit 3rd-Party-Cash ]]..acy..[[di]]..acr..[[ -> dump mainTag ]]..acy..[[do]]..acr..[[ => dump backupTag - - - rt: 'read tag' - reads a tag placed near to the PM3 - wt: 'write tag' - writes the content of the 'virtual inTag' to a tag placed near to th PM3 + rt: 'read tag' - reads a tag placed near to the PM3 + wt: 'write tag' - writes the content of the 'virtual inTag' to a tag placed near to th PM3 without the need of changing anything - MCD,MSN,MCC will be read from the tag before and applied to the output. - lf: 'load file' - load a (xored) binary file (*.bin) from the local Filesystem into the 'virtual inTag' - sf: 'save file' - saves the 'virtual inTag' to the local Filesystem as eml and bin (xored with Tag-MCC) - xf: 'xor file' - saves the 'virtual inTag' to the local Filesystem (xored with chosen MCC - use '00' for plain values) + lf: 'load file' - load a (xored) binary file (*.bin) from the local Filesystem into the 'virtual inTag' + sf: 'save file' - saves the 'virtual inTag' to the local Filesystem as eml and bin (xored with Tag-MCC) + xf: 'xor file' - saves the 'virtual inTag' to the local Filesystem (xored with chosen MCC - use '00' for plain values) - ct: 'copy tag' - copy the 'virtual Tag' to a second 'virtual TAG' - not useful yet, but inernally needed - tc: 'copy tag' - copy the 'second virtual Tag' to 'virtual TAG' - not useful yet, but inernally needed - tt: 'toggle tag' - copy mainTag to BackupTag and backupTag to mainTag + ct: 'copy tag' - copy the 'virtual Tag' to a second 'virtual TAG' - not useful yet, but inernally needed + tc: 'copy tag' - copy the 'second virtual Tag' to 'virtual TAG' - not useful yet, but inernally needed + tt: 'toggle tag' - copy mainTag to BackupTag and backupTag to mainTag - di: 'dump mainTag' - shows the current content of the 'virtual Tag' - do: 'dump backupTag' - shows the current content of the 'virtual outTag' - ds: 'dump Segments' - will show the content of a selected Segment - as: 'add Segment' - will add a 'empty' Segment to the inTag - es: 'edit Segment' - edit the Segment-Header of a selected Segment (len, WRP, WRC, RD, valid) + di: 'dump mainTag' - shows the current content of the 'virtual Tag' + do: 'dump backupTag' - shows the current content of the 'virtual outTag' + ds: 'dump Segments' - will show the content of a selected Segment + as: 'add Segment' - will add a 'empty' Segment to the inTag + es: 'edit Segment' - edit the Segment-Header of a selected Segment (len, WRP, WRC, RD, valid) all other Segment-Header-Values are either calculated or not needed to edit (yet) - ed: 'edit data' - edit the Data of a Segment (ADF-Aera / Stamp & Payload specific Data) - et: 'edit Token' - edit Data of a Token (CDF-Area / SAM, SAM64, SAM63, IAM, GAM specific Data) - mt: 'make Token' - create a Token 'from scratch' (guided) - rs: 'remove segment' - removes a Segment (except Segment 00, but this can be set to valid=0 for Master-Token) - cc: 'check Segment-CRC'- checks & calculates (if check failed) the Segment-CRC of all Segments - ck: 'check KGH-CRC' - checks the and calculates a 'Kaba Group Header' if one was detected + ed: 'edit data' - edit the Data of a Segment (ADF-Aera / Stamp & Payload specific Data) + et: 'edit Token' - edit Data of a Token (CDF-Area / SAM, SAM64, SAM63, IAM, GAM specific Data) + mt: 'make Token' - create a Token 'from scratch' (guided) + rs: 'remove segment' - removes a Segment (except Segment 00, but this can be set to valid=0 for Master-Token) + cc: 'check Segment-CRC' - checks & calculates (if check failed) the Segment-CRC of all Segments + ck: 'check KGH-CRC' - checks the and calculates a 'Kaba Group Header' if one was detected 'Kaba Group Header CRC calculation' - tk: 'toggle KGH' - toggle the (script-internal) flag for kgh-calculation for a segment - xc: 'etra c' - show string that was used to calculate the kgh-crc of a segment + tk: 'toggle KGH' - toggle the (script-internal) flag for kgh-calculation for a segment + xc: 'etra c' - show string that was used to calculate the kgh-crc of a segment -dlc: 'dump Legic-Cash' - show balance and checksums of a Legic-Cash Segment -elc: 'edit Legic-Cash' - edit values of a Legic-Cash Segment +dlc: 'dump Legic-Cash' - show balance and checksums of a Legic-Cash Segment +elc: 'edit Legic-Cash' - edit values of a Legic-Cash Segment -d3p: 'dump 3rd Party' - show balance, history and checksums of a (yet) unknown 3rd-Party Cash Segment -e3p: 'edit 3rd Party' - edit Data in 3rd-Party Cash Segment +d3p: 'dump 3rd Party' - show balance, history and checksums of a (yet) unknown 3rd-Party Cash Segment +e3p: 'edit 3rd Party' - edit Data in 3rd-Party Cash Segment -tac: 'toggle ansicolors'- switch on and off the colored text-output of this script +tac: 'toggle ansicolors' - switch on and off the colored text-output of this script default can be changed by setting the variable 'colored_output' to false ]] currentTag="inTAG" @@ -361,7 +368,7 @@ end function bytesToTable(bytes, bstart, bend) local t={} for i=0, (bend-bstart) do - t[i]=bytes[bstart+i] + t[i]=padString(bytes[bstart+i]) end return t end @@ -942,20 +949,21 @@ function dumpTagMap(tag, tagMap) end if (isPosCrc8(tagMap, v['start'])>0) then if ( checkMapCrc8(tagMap, bytes, isPosCrc8(tagMap, v['start']) ) ) then - io.write("("..("%04d"):format(v['start']).."-"..("%04d"):format(v['end'])..") "..acgreen..v['name']..acoff..":") + io.write("("..("%04d"):format(v['start']).."-"..("%04d"):format(v['end'])..") "..acgreen..v['name']..acoff) else - io.write("("..("%04d"):format(v['start']).."-"..("%04d"):format(v['end'])..") "..acred..v['name']..acoff..":") + io.write("("..("%04d"):format(v['start']).."-"..("%04d"):format(v['end'])..") "..acred..v['name']..acoff) end else - io.write("("..("%04d"):format(v['start']).."-"..("%04d"):format(v['end'])..") "..((v['highlight']) and acmagenta or acyellow)..v['name']..acoff..":") - end - temp="" - for i=((string.len(v['name']))/10), 2 do - temp=temp.."\t" + io.write("("..("%04d"):format(v['start']).."-"..("%04d"):format(v['end'])..") "..((v['highlight']) and acmagenta or acyellow)..v['name']..acoff) end + + temp = "" + while (#v['name'] + temp:len()) < 20 do temp = temp.." " end + for i=v['start'], v['end'] do temp=temp..bytes[i].." " end + print(temp) lastend=v['end'] end @@ -1001,10 +1009,21 @@ end -- edit existing Map function editTagMap(tag, tagMap) local t = [[ - Data: dm = show dr = dump raw -Mappings: im = insert am = add rm = remove - CRC8: ac8 = add sc8 = show rc8 = remove - : q = exit h = Help +]]..acc..[[Data]]..acr..[[ + + ]]..acy..[[dm]]..acr..[[ - show ]]..acy..[[dr]]..acr..[[ - dump raw + +]]..acc..[[Mappings]]..acr..[[ + + ]]..acy..[[im]]..acr..[[ - insert ]]..acy..[[am]]..acr..[[ - add + ]]..acy..[[rm]]..acr..[[ - remove ]]..acy..[[mas]]..acr..[[ - map all segments + +]]..acc..[[CRC8]]..acr..[[ + + ]]..acy..[[ac8]]..acr..[[ - add ]]..acy..[[sc8]]..acr..[[ - show + ]]..acy..[[rc8]]..acr..[[ - remove + + ]]..acy..[[q]]..acr..[[ - exit ]]..acy..[[h]]..acr..[[ - Help ]] --if(#tagMap.mappings==0) then oops("no mappings in tagMap"); return tagMap end @@ -2341,11 +2360,11 @@ function modifyHelp() Virtual Tags tagMap (partial) known Segments -------------------------------- --------------------- --------------------------- - ]]..acy..[[xf]]..acr..[[ => copy mainTag to backupTag ]]..acy..[[mm]]..acr..[[ => make (new) Map ]]..acy..[[dlc]]..acr..[[ => dump Legic-Cash - ]]..acy..[[xf]]..acr..[[ => copy backupTag to mainTag ]]..acy..[[em]]..acr..[[ => edit Map submenu ]]..acy..[[elc]]..acr..[[ => edit Legic-Cash - ]]..acy..[[xf]]..acr..[[ => switch mainTag & backupTag ]]..acy..[[lm]]..acr..[[ => load map from file ]]..acy..[[d3p]]..acr..[[ => dump 3rd-Party-Cash - ]]..acy..[[xf]]..acr..[[ => dump mainTag ]]..acy..[[sm]]..acr..[[ => save map to file ]]..acy..[[e3p]]..acr..[[ => edit 3rd-Party-Cash - ]]..acy..[[xf]]..acr..[[ => dump backupTag + ]]..acy..[[ct]]..acr..[[ => copy mainTag to backupTag ]]..acy..[[mm]]..acr..[[ => make (new) Map ]]..acy..[[dlc]]..acr..[[ => dump Legic-Cash + ]]..acy..[[tc]]..acr..[[ => copy backupTag to mainTag ]]..acy..[[em]]..acr..[[ => edit Map submenu ]]..acy..[[elc]]..acr..[[ => edit Legic-Cash + ]]..acy..[[tt]]..acr..[[ => switch mainTag & backupTag ]]..acy..[[lm]]..acr..[[ => load map from file ]]..acy..[[d3p]]..acr..[[ => dump 3rd-Party-Cash + ]]..acy..[[di]]..acr..[[ => dump mainTag ]]..acy..[[sm]]..acr..[[ => save map to file ]]..acy..[[e3p]]..acr..[[ => edit 3rd-Party-Cash + ]]..acy..[[do]]..acr..[[ => dump backupTag ]]..acy..[[h]]..acr..[[ => this help ]]..acy..[[q]]..acr..[[ => quit ]] From b314d1ef1c8ae7a5d69dbbab9247af6bcd7864a3 Mon Sep 17 00:00:00 2001 From: DidierA <1620015+DidierA@users.noreply.github.com> Date: Wed, 19 Jul 2023 21:15:07 +0200 Subject: [PATCH 0221/1034] Add MIFARE Plus commands in trace list --- CHANGELOG.md | 1 + client/src/cmdhflist.c | 224 +++++++++++++++++++++++++++++++++++++++++ client/src/cmdhflist.h | 2 + client/src/cmdhfmfp.c | 2 +- client/src/cmdtrace.c | 19 ++-- doc/commands.json | 11 +- include/protocols.h | 53 ++++++++++ 7 files changed, 300 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5711c1090..292bd4c12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `hf mfp list` - interprets MIFARE Plus commands in traces (@DidierA) - Changed `hf legic sim` - loop and return codes on deviceside updated to DEFINES (@iceman1001) - Changed `hf legic einfo` - now accepts the three different cardsizes as params (@iceman1001) - Fix `lf cotag reader -1` - now doesn't fail (@iceman1001) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index 5ddd3f1fa..eea8378ae 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -1196,6 +1196,230 @@ void annotateMfDesfire(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { } } } +// codes for which no data is interpreted, returns the message to print. +const char *mfpGetAnnotationForCode(uint8_t code) { + struct mfp_code_msg { + uint8_t code; + const char *annotation; + } messages[] = { + { MFP_GETVERSION, "GET VERSION"}, + { MFP_ADDITIONALFRAME, "NEXT FRAME"}, + { MFP_AUTHENTICATENONFIRST, "FOLLOWING AUTH"}, + { MFP_AUTHENTICATECONTINUE, "SECOND AUTH STEP"}, + { MFP_RESETAUTH, "RESET AUTH"}, + { MFP_COMMITPERSO, "COMMIT PERSO"}, + { MFP_VCSUPPORTLASTISOL3, "CHECK VIRTUAL CARD"}, + { MFP_ISOSELECT, "SELECT VIRTUAL CARD"}, + { MFP_SETCONFIGSL1, "SET CONFIG SL1"}, + { MFP_MF_PERSONALIZEUIDUSAGE, "PERSONALIZE UID USAGE"}, + { MFP_READ_SIG, "READ SIGNATURE"}, + { MFDES_PREPARE_PC, "PREPARE PROXIMITY CHECK"}, + { MFDES_PROXIMITY_CHECK, "PROXIMITY CHECK"}, + { MFDES_VERIFY_PC, "VERIFY PROXIMITY CHECK"}, + { 0, NULL} + } ; + + for (struct mfp_code_msg *p=messages ; p->annotation != NULL ; p++) { + if (p->code == code) { + return p->annotation ; + } + } + return NULL ; +} + +// MIFARE Plus +void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { + + // If we are in Mifare Classic Authenticated mode, all the work has already be done elsewhere + if ((MifareAuthState != masNone) && (MifareAuthState != masError)) { + return ; + } + + // it's basically a ISO14443a tag, so try annotation from there + if (applyIso14443a(exp, size, cmd, cmdsize, false) == PM3_SUCCESS) { + return ; + } + + // ok this part is copy paste from annotateMfDesfire, it seems to work for MIFARE Plus also + if (((cmd[0] & 0xC0) == 0x00) && (cmdsize > 2)) { + + // PCB [CID] [NAD] [INF] CRC CRC + int pos = 1; + if ((cmd[0] & 0x08) == 0x08) // cid byte following + pos++; + + if ((cmd[0] & 0x04) == 0x04) // nad byte following + pos++; + + for (uint8_t i = 0; i < 2; i++, pos++) { + bool found_annotation = true; + + uint8_t *data = cmd + pos + 1; + // if the byte prior to the command is 90 the command is wrapped, so data starts 3 bytes later + if (i > 0 && cmd[pos - 1] == 0x90) { + data += 3; + } + uint8_t data_size = 0; + if (cmdsize > (data - cmd)) { + data_size = cmdsize - (data - cmd); + } + + // Messages for commands that do not need args are treated first + const char *annotation = mfpGetAnnotationForCode(cmd[pos]) ; + if (annotation != NULL) { + snprintf(exp, size, "%s", annotation) ; + break ; + } + + switch (cmd[pos]) { + case MFP_AUTHENTICATEFIRST: + case MFP_AUTHENTICATEFIRST_VARIANT: + if (data_size > 1) { + // key : uint16_t uKeyNum = 0x4000 + sectorNum * 2 + (keyB ? 1 : 0); + uint16_t uKeyNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "FIRST AUTH (Keynr 0x%04X: %c sector %d)", uKeyNum, uKeyNum & 0x0001 ? 'B' : 'A', (uKeyNum - 0x4000)/2 ); + } else { + snprintf(exp, size, "FIRST AUTH") ; + } + break; + + case MFP_WRITEPERSO: + if (data_size > 1) { + uint16_t uKeyNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "WRITE PERSO (Keynr 0x%04X)", uKeyNum); + } else { + snprintf(exp, size, "WRITE PERSO"); + } + break; + + case MFP_READENCRYPTEDNOMAC_MACED: + case MFP_READENCRYPTEDMAC_MACED: + case MFP_READENCRYPTEDNOMAC_UNMACED: + case MFP_READENCRYPTEDMAC_UNMACED: + if (data_size > 2) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + uint8_t uQty = data[2] ; + if (uQty != 1) { + snprintf(exp, size, "READ ENCRYPTED(%u-%u)", uBlockNum, uBlockNum+uQty-1); + } else { + snprintf(exp, size, "READ ENCRYPTED(%u)", uBlockNum); + } + } else { + snprintf(exp, size, "READ ENCRYPTED ?"); + } + break; + + case MFP_READPLAINNOMAC_MACED: + case MFP_READPLAINMAC_MACED: + case MFP_READPLAINNOMAC_UNMACED: + case MFP_READPLAINMAC_UNMACED: + if (data_size > 2) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + uint8_t uQty = data[2] ; + if (uQty != 1) { + snprintf(exp, size, "READ PLAIN(%u-%u)", uBlockNum, uBlockNum+uQty-1); + } else { + snprintf(exp, size, "READ PLAIN(%u)", uBlockNum); + } + } else { + snprintf(exp, size, "READ PLAIN ?"); + } + break; + + case MFP_WRITEPLAINNOMAC : + case MFP_WRITEPLAINMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "WRITE PLAIN(%u)", uBlockNum); + } else { + snprintf(exp, size, "WRITE PLAIN ?"); + } + break; + + case MFP_WRITEENCRYPTEDNOMAC: + case MFP_WRITEENCRYPTEDMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "WRITE ENCRYPTED(%u)", uBlockNum); + } else { + snprintf(exp, size, "WRITE ENCRYPTED ?"); + } + break; + + case MFP_INCREMENTNOMAC : + case MFP_INCREMENTMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "INCREMENT(%u)", uBlockNum); + } else { + snprintf(exp, size, "INCREMENT ?"); + } + break; + + case MFP_DECREMENTNOMAC : + case MFP_DECREMENTMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "DECREMENT(%u)", uBlockNum); + } else { + snprintf(exp, size, "DECREMENT ?"); + } + break; + + case MFP_TRANSFERNOMAC : + case MFP_TRANSFERMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "TRANSFER(%u)", uBlockNum); + } else { + snprintf(exp, size, "TRANSFER ?"); + } + break; + + case MFP_INCREMENTTRANSFERNOMAC: + case MFP_INCREMENTTRANSFERMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "INCREMENT, TRANSFER(%u)", uBlockNum); + } else { + snprintf(exp, size, "INCREMENT, TRANSFER ?"); + } + break; + + case MFP_DECREMENTTRANSFERNOMAC: + case MFP_DECREMENTTRANSFERMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "DECREMENT, TRANSFER(%u)", uBlockNum); + } else { + snprintf(exp, size, "DECREMENT, TRANSFER ?"); + } + break; + + case MFP_RESTORENOMAC : + case MFP_RESTOREMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "RESTORE(%u)", uBlockNum); + } else { + snprintf(exp, size, "RESTORE ?"); + } + break; + + default: + found_annotation = false; + break; + } + if (found_annotation) { + break; + } + } + } else { + // anything else + snprintf(exp, size, "?"); + } +} + /** 06 00 = INITIATE diff --git a/client/src/cmdhflist.h b/client/src/cmdhflist.h index 6499938eb..7c7e09ffb 100644 --- a/client/src/cmdhflist.h +++ b/client/src/cmdhflist.h @@ -56,6 +56,8 @@ void annotateIso7816(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); void annotateIso14443b(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); void annotateIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool is_response); void annotateMfDesfire(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); +const char *mfpGetAnnotationForCode(uint8_t code); +void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); void annotateMifare(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, const uint8_t *parity, uint8_t paritysize, bool isResponse); void annotateLTO(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 52f3da57e..e8e2c7226 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1811,7 +1811,7 @@ static int CmdHFMFPNDEFWrite(const char *Cmd) { } static int CmdHFMFPList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf mf", "mf"); + return CmdTraceListAlias(Cmd, "hf mfp", "mfp"); } static command_t CommandTable[] = { diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 326a646b9..0d47d2d7c 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -533,6 +533,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr crcStatus = !felica_CRC_check(frame + 2, data_len - 4); break; case PROTO_MIFARE: + case PROTO_MFPLUS: crcStatus = mifare_CRC_check(hdr->isResponse, frame, data_len); break; case ISO_14443A: @@ -603,7 +604,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr && protocol != FELICA && protocol != LTO && protocol != PROTO_CRYPTORF - && (hdr->isResponse || protocol == ISO_14443A || protocol == PROTO_MIFARE || protocol == SEOS) + && (hdr->isResponse || protocol == ISO_14443A || protocol == PROTO_MIFARE || protocol == PROTO_MFPLUS || protocol == SEOS) && (oddparity8(frame[j]) != ((parityBits >> (7 - (j & 0x0007))) & 0x01))) { snprintf(line[j / 18] + ((j % 18) * 4), 120, "%02x! ", frame[j]); @@ -701,6 +702,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr // mark short bytes (less than 8 Bit + Parity) if (protocol == ISO_14443A || protocol == PROTO_MIFARE || + protocol == PROTO_MFPLUS || protocol == THINFILM) { // approximated with 128 * (9 * data_len); @@ -747,6 +749,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr annotateIso14443a(explanation, sizeof(explanation), frame, data_len, hdr->isResponse); break; case PROTO_MIFARE: + case PROTO_MFPLUS: annotateMifare(explanation, sizeof(explanation), frame, data_len, parityBytes, TRACELOG_PARITY_LEN(hdr), hdr->isResponse); break; case PROTO_HITAG1: @@ -766,7 +769,6 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr } if (hdr->isResponse == false) { - switch (protocol) { case LEGIC: annotateLegic(explanation, sizeof(explanation), frame, data_len); @@ -774,6 +776,9 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr case MFDES: annotateMfDesfire(explanation, sizeof(explanation), frame, data_len); break; + case PROTO_MFPLUS: + annotateMfPlus(explanation, sizeof(explanation), frame, data_len); + break; case ISO_14443B: annotateIso14443b(explanation, sizeof(explanation), frame, data_len); break; @@ -901,7 +906,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr } } - if (protocol == PROTO_MIFARE) { + if (protocol == PROTO_MIFARE || protocol == PROTO_MFPLUS) { uint8_t mfData[32] = {0}; size_t mfDataLen = 0; if (DecodeMifareData(frame, data_len, parityBytes, hdr->isResponse, mfData, &mfDataLen, mfDicKeys, mfDicKeysCount)) { @@ -1200,6 +1205,7 @@ int CmdTraceList(const char *Cmd) { "trace list -t seos -> interpret as " _YELLOW_("SEOS") "\n" "trace list -t thinfilm -> interpret as " _YELLOW_("Thinfilm") "\n" "trace list -t topaz -> interpret as " _YELLOW_("Topaz") "\n" + "trace list -t mfp -> interpret as " _YELLOW_("MIFARE Plus") "\n" "\n" "trace list -t mf -f mfc_default_keys.dic -> use default dictionary file\n" "trace list -t 14a --frame -> show frame delay times\n" @@ -1266,6 +1272,7 @@ int CmdTraceList(const char *Cmd) { else if (strcmp(type, "seos") == 0) protocol = SEOS; else if (strcmp(type, "thinfilm") == 0) protocol = THINFILM; else if (strcmp(type, "topaz") == 0) protocol = TOPAZ; + else if (strcmp(type, "mfp") == 0) protocol = PROTO_MFPLUS; else if (strcmp(type, "") == 0) protocol = -1; else { PrintAndLogEx(FAILED, "Unknown protocol \"%s\"", type); @@ -1304,7 +1311,7 @@ int CmdTraceList(const char *Cmd) { PrintAndLogEx(INFO, _YELLOW_("start") " = start of start frame " _YELLOW_("end") " = end of frame. " _YELLOW_("src") " = source of transfer"); } - if (protocol == ISO_14443A || protocol == PROTO_MIFARE || protocol == MFDES || protocol == TOPAZ || protocol == LTO) { + if (protocol == ISO_14443A || protocol == PROTO_MIFARE || protocol == MFDES || protocol == PROTO_MFPLUS || protocol == TOPAZ || protocol == LTO) { if (use_us) PrintAndLogEx(INFO, _YELLOW_("ISO14443A") " - all times are in microseconds"); else @@ -1354,7 +1361,7 @@ int CmdTraceList(const char *Cmd) { uint32_t dicKeysCount = 0; bool dictionaryLoad = false; - if (protocol == PROTO_MIFARE) { + if (protocol == PROTO_MIFARE || protocol == PROTO_MFPLUS) { if (diclen > 0) { uint8_t *keyBlock = NULL; int res = loadFileDICTIONARY_safe(dictionary, (void **) &keyBlock, 6, &dicKeysCount); @@ -1387,7 +1394,7 @@ int CmdTraceList(const char *Cmd) { PrintAndLogEx(NORMAL, "------------+------------+-----+-------------------------------------------------------------------------+-----+--------------------"); // clean authentication data used with the mifare classic decrypt fct - if (protocol == ISO_14443A || protocol == PROTO_MIFARE) + if (protocol == ISO_14443A || protocol == PROTO_MIFARE || protocol == PROTO_MFPLUS) ClearAuthData(); uint32_t previous_EOT = 0; diff --git a/doc/commands.json b/doc/commands.json index 5686c7542..0618f5152 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -6159,10 +6159,10 @@ }, "hf mfp list": { "command": "hf mfp list", - "description": "Alias of `trace list -t mf` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t mfp` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ - "hf mf list --frame -> show frame delay times", - "hf mf list -1 -> use trace buffer" + "hf mfp list --frame -> show frame delay times", + "hf mfp list -1 -> use trace buffer" ], "offline": true, "options": [ @@ -6176,7 +6176,7 @@ "or to import into Wireshark using encapsulation type \"ISO 14443\"", "-f, --file filename of dictionary" ], - "usage": "hf mf list [-h1crux] [--frame] [-f ]" + "usage": "hf mfp list [-h1crux] [--frame] [-f ]" }, "hf mfp mad": { "command": "hf mfp mad", @@ -11488,6 +11488,7 @@ "trace list -t seos -> interpret as SEOS", "trace list -t thinfilm -> interpret as Thinfilm", "trace list -t topaz -> interpret as Topaz", + "trace list -t mfp -> interpret as MIFARE Plus", "", "trace list -t mf -f mfc_default_keys.dic -> use default dictionary file", "trace list -t 14a --frame -> show frame delay times", @@ -11694,6 +11695,6 @@ "metadata": { "commands_extracted": 679, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-17T15:46:12" + "extracted_on": "2023-07-19T19:11:10" } } \ No newline at end of file diff --git a/include/protocols.h b/include/protocols.h index 721dccaf5..772105c9d 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -428,6 +428,7 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define PROTO_HITAGS 14 #define PROTO_CRYPTORF 15 #define SEOS 16 +#define PROTO_MFPLUS 17 // Picopass fuses #define FUSE_FPERS 0x80 @@ -620,6 +621,58 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define MFDES_E_FILE_NOT_FOUND 0xF0 #define MFDES_E_FILE_INTEGRITY 0xF1 +// MIFARE PLus EV2 Command set +// source: https://www.nxp.com/docs/en/data-sheet/MF1P(H)x2.pdf in Look-Up Tables + +#define MFP_READ_SIG 0x3C // same as DESFIRE +#define MFP_WRITEPERSO 0xA8 +#define MFP_COMMITPERSO 0xAA + +#define MFP_AUTHENTICATEFIRST 0x70 +#define MFP_AUTHENTICATEFIRST_VARIANT 0x73 +#define MFP_AUTHENTICATENONFIRST 0x76 +#define MFP_AUTHENTICATECONTINUE 0x72 +#define MFP_AUTHENTICATESECTORSWITCH 0x7A +#define MFP_RESETAUTH 0x78 + +#define MFP_VCSUPPORTLASTISOL3 0x4B +#define MFP_ISOSELECT 0xA4 + +#define MFP_GETVERSION 0x60 // same as DESFIRE +#define MFP_ADDITIONALFRAME 0xAF +#define MFP_SETCONFIGSL1 0x44 +#define MFP_MF_PERSONALIZEUIDUSAGE 0x40 + +// read commands +#define MFP_READENCRYPTEDNOMAC_MACED 0X30 +#define MFP_READENCRYPTEDMAC_MACED 0x31 +#define MFP_READPLAINNOMAC_MACED 0x32 +#define MFP_READPLAINMAC_MACED 0x33 +#define MFP_READENCRYPTEDNOMAC_UNMACED 0x34 +#define MFP_READENCRYPTEDMAC_UNMACED 0X35 +#define MFP_READPLAINNOMAC_UNMACED 0x36 +#define MFP_READPLAINMAC_UNMACED 0x37 + +// write commands +#define MFP_WRITEENCRYPTEDNOMAC 0xA0 +#define MFP_WRITEENCRYPTEDMAC 0xA1 +#define MFP_WRITEPLAINNOMAC 0xA2 +#define MFP_WRITEPLAINMAC 0xA3 + +// value commands +#define MFP_INCREMENTNOMAC 0xB0 +#define MFP_INCREMENTMAC 0xB1 +#define MFP_DECREMENTNOMAC 0xB2 +#define MFP_DECREMENTMAC 0xB3 +#define MFP_TRANSFERNOMAC 0xB4 +#define MFP_TRANSFERMAC 0xB5 +#define MFP_INCREMENTTRANSFERNOMAC 0xB6 +#define MFP_INCREMENTTRANSFERMAC 0xB7 +#define MFP_DECREMENTTRANSFERNOMAC 0xB8 +#define MFP_DECREMENTTRANSFERMAC 0xB9 +#define MFP_RESTORENOMAC 0xC2 +#define MFP_RESTOREMAC 0xC3 + // LEGIC Commands #define LEGIC_MIM_22 0x0D From 8543db11b59f34ca120a1e6eea7f5b43adee8dac Mon Sep 17 00:00:00 2001 From: DidierA <1620015+DidierA@users.noreply.github.com> Date: Wed, 19 Jul 2023 21:46:20 +0200 Subject: [PATCH 0222/1034] Avoid useless loop by moving check to the default case --- client/src/cmdhflist.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index eea8378ae..64f885713 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -1264,13 +1264,6 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { data_size = cmdsize - (data - cmd); } - // Messages for commands that do not need args are treated first - const char *annotation = mfpGetAnnotationForCode(cmd[pos]) ; - if (annotation != NULL) { - snprintf(exp, size, "%s", annotation) ; - break ; - } - switch (cmd[pos]) { case MFP_AUTHENTICATEFIRST: case MFP_AUTHENTICATEFIRST_VARIANT: @@ -1407,7 +1400,13 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { break; default: - found_annotation = false; + // Messages for commands that do not need args are treated here + const char *annotation = mfpGetAnnotationForCode(cmd[pos]) ; + if (annotation != NULL) { + snprintf(exp, size, "%s", annotation) ; + } else { + found_annotation = false; + } break; } if (found_annotation) { From e056459c038fdc3de96369fb9ad0a6b6114542c7 Mon Sep 17 00:00:00 2001 From: DidierA <1620015+DidierA@users.noreply.github.com> Date: Thu, 20 Jul 2023 02:19:02 +0200 Subject: [PATCH 0223/1034] trace list: add CID info in RATS and PPSS --- client/src/cmdhflist.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index 64f885713..8bcb7fef9 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -273,11 +273,13 @@ int applyIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool i MifareAuthState = masNone; break; case ISO14443A_CMD_RATS: - snprintf(exp, size, "RATS"); + snprintf(exp, size, "RATS - FSDI=0x%x, CID=0x%x", (cmd[1] & 0xF0) >> 4, (cmd[1] & 0x0F) ); break; + /* Actually, PPSS is Dx case ISO14443A_CMD_PPS: snprintf(exp, size, "PPS"); break; + */ case ISO14443A_CMD_OPTS: snprintf(exp, size, "OPTIONAL TIMESLOT"); break; @@ -423,10 +425,14 @@ int applyIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool i snprintf(exp, size, "FAST WRITE (" _MAGENTA_("%d-%d") ")", cmd[1], cmd[2]); else snprintf(exp, size, "?"); - break; + default: - return PM3_ESOFT; + if ( (cmd[0] & 0xF0) == 0xD0 && ( cmdsize == 4 || cmdsize == 5 )) { + snprintf(exp, size, "PPSS - CID=0x%x", cmd[0] & 0x0F) ; + } else { + return PM3_ESOFT; + } } } else { if (gs_mfuc_state == 1) { From 87d43b87d1d74f70ece380844d53362f6f875bfa Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 20 Jul 2023 09:39:12 +0200 Subject: [PATCH 0224/1034] fix workflows/uniq.yaml Lines containing # were entirely ignored but some contain a key, e.g. in iclass_default_keys.dic --- .github/workflows/uniq.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/uniq.yaml b/.github/workflows/uniq.yaml index 89f845483..a770a4fde 100644 --- a/.github/workflows/uniq.yaml +++ b/.github/workflows/uniq.yaml @@ -18,6 +18,5 @@ jobs: - name: check unique keys in dic files shell: bash run: | - find . -type f -name "*.dic" | xargs -I {} sh -c "echo {} && cat {} | grep -v '#' | sort | uniq -i -d -c | sort -n -r " - if [[ $(find . -type f -name "*.dic" | xargs -I {} sh -c "echo {} && cat {} | grep -v '#' | sort | uniq -i -d -c | sort -n -r " | grep -v "./" | wc -l) -gt 0 ]]; then exit 1; fi - + find . -type f -name "*.dic" | xargs -I {} sh -c "echo {} && cat {} | sed 's/ *#.*//;/^$/d' | sort | uniq -i -d -c | sort -n -r " + if [[ $(find . -type f -name "*.dic" | xargs -I {} sh -c "echo {} && cat {} | sed 's/ *#.*//;/^$/d' | sort | uniq -i -d -c | sort -n -r " | grep -v '^\./' | wc -l) -gt 0 ]]; then exit 1; fi From 89cbe3c7df34f7a98828c56d2f6d1dea2a1d5d07 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 20 Jul 2023 10:54:37 +0200 Subject: [PATCH 0225/1034] should fix macos compilation error introduced by 8543db11b59f34ca120a1e6eea7f5b43adee8dac --- client/src/cmdhflist.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index 64f885713..5d8a9d343 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -1399,7 +1399,7 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { } break; - default: + default: { // Messages for commands that do not need args are treated here const char *annotation = mfpGetAnnotationForCode(cmd[pos]) ; if (annotation != NULL) { @@ -1408,6 +1408,7 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { found_annotation = false; } break; + } } if (found_annotation) { break; From c5cfe593f5a681416de997a0b76631b059493932 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 20 Jul 2023 21:04:00 +0200 Subject: [PATCH 0226/1034] fix exec mode on source file --- client/src/cmdlfhid.c | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 client/src/cmdlfhid.c diff --git a/client/src/cmdlfhid.c b/client/src/cmdlfhid.c old mode 100755 new mode 100644 From 216ad5740b9d8319a7d43823feb590d657151f60 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 20 Jul 2023 21:12:21 +0200 Subject: [PATCH 0227/1034] fix `lf hitag eload` segmentation fault --- include/pm3_cmd.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index 0983ee2e1..13dca3b6c 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -271,7 +271,7 @@ typedef struct { typedef struct { uint8_t type; uint16_t len; - uint8_t *data; + uint8_t data[]; } PACKED lf_hitag_t; typedef struct { From 173379b9991220646577d821ddf492904fdecea9 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 20 Jul 2023 22:35:42 +0200 Subject: [PATCH 0228/1034] Rewrote completely cmds & options `lf hitag read/dump/wrbl/ta` for more coherence with other pm3 cmds. Still there remain strange things but it should be a step in the right direction... --- armsrc/hitag2.c | 4 +- client/src/cmdlfhitag.c | 557 +++++++++++++++++++++++++++------------- 2 files changed, 387 insertions(+), 174 deletions(-) diff --git a/armsrc/hitag2.c b/armsrc/hitag2.c index 90a667105..7206b735c 100644 --- a/armsrc/hitag2.c +++ b/armsrc/hitag2.c @@ -281,7 +281,7 @@ static void hitag2_handle_reader_command(uint8_t *rx, const size_t rxlen, uint8_ } break; - // Received RWD authentication challenge and respnse + // Received RWD authentication challenge and response case 64: { // Store the authentication attempt if (auth_table_len < (AUTH_TABLE_LENGTH - 8)) { @@ -891,7 +891,7 @@ static bool hitag2_test_auth_attempts(uint8_t *rx, const size_t rxlen, uint8_t * if (bCrypto) { Dbprintf("auth: %02x%02x%02x%02x%02x%02x%02x%02x Failed, removed entry!", NrAr[0], NrAr[1], NrAr[2], NrAr[3], NrAr[4], NrAr[5], NrAr[6], NrAr[7]); - // Removing failed entry from authentiations table + // Removing failed entry from authentications table memcpy(auth_table + auth_table_pos, auth_table + auth_table_pos + 8, 8); auth_table_len -= 8; diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 8cd28b842..74c77b8f9 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -224,11 +224,11 @@ static int CmdLFHitagEload(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "", "Specfiy dump filename"), - arg_lit0("1", NULL, "Card type Hitag1"), - arg_lit0("2", NULL, "Card type Hitag2"), - arg_lit0("s", NULL, "Card type HitagS"), - arg_lit0("m", NULL, "Card type HitagM"), + arg_str1("f", "file", "", "Specify dump filename"), + arg_lit0("1", NULL, "Card type Hitag 1"), + arg_lit0("2", NULL, "Card type Hitag 2"), + arg_lit0("s", NULL, "Card type Hitag S"), + arg_lit0("m", NULL, "Card type Hitag M"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -243,9 +243,12 @@ static int CmdLFHitagEload(const char *Cmd) { bool use_htm = arg_get_lit(ctx, 5); CLIParserFree(ctx); - uint8_t n = (use_ht1 + use_ht2 + use_hts + use_htm); - if (n != 1) { - PrintAndLogEx(ERR, "error, only specify one Hitag type"); + if ((use_ht1 + use_ht2 + use_hts + use_htm) > 1) { + PrintAndLogEx(ERR, "error, specify only one Hitag type"); + return PM3_EINVARG; + } + if ((use_ht1 + use_ht2 + use_hts + use_htm) == 0) { + PrintAndLogEx(ERR, "error, specify one Hitag type"); return PM3_EINVARG; } @@ -288,16 +291,16 @@ static int CmdLFHitagEload(const char *Cmd) { static int CmdLFHitagSim(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf hitag sim", - "Simulate Hitag2 / HitagS transponder\n" + "Simulate Hitag transponder\n" "You need to `lf hitag eload` first", "lf hitag sim -2" ); void *argtable[] = { arg_param_begin, - arg_lit0("1", NULL, "simulate Hitag1"), - arg_lit0("2", NULL, "simulate Hitag2"), - arg_lit0("s", NULL, "simulate HitagS"), + arg_lit0("1", "ht1", "simulate Hitag 1"), + arg_lit0("2", "ht2", "simulate Hitag 2"), + arg_lit0("s", "hts", "simulate Hitag S"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -305,10 +308,15 @@ static int CmdLFHitagSim(const char *Cmd) { bool use_ht1 = arg_get_lit(ctx, 1); bool use_ht2 = arg_get_lit(ctx, 2); bool use_hts = arg_get_lit(ctx, 3); + bool use_htm = false; // not implemented yet CLIParserFree(ctx); - if ((use_ht1 + use_ht2 + use_hts) > 1) { - PrintAndLogEx(ERR, "error, Only specify one Hitag type"); + if ((use_ht1 + use_ht2 + use_hts + use_htm) > 1) { + PrintAndLogEx(ERR, "error, specify only one Hitag type"); + return PM3_EINVARG; + } + if ((use_ht1 + use_ht2 + use_hts + use_htm) == 0) { + PrintAndLogEx(ERR, "error, specify one Hitag type"); return PM3_EINVARG; } @@ -523,67 +531,85 @@ static int CmdLFHitagInfo(const char *Cmd) { return PM3_SUCCESS; } -// TODO: iceman -// Hitag2 reader, problem is that this command mixes up stuff. So 26 give uid. 21 etc will also give you a memory dump !? -// static int CmdLFHitagReader(const char *Cmd) { CLIParserContext *ctx; - CLIParserInit(&ctx, "lf hitag reader", - "Act like a Hitag Reader", - "Hitag S\n" - " lf hitag reader --01 --nrar 0102030411223344\n" - " lf hitag reader --02 -k 4F4E4D494B52\n" - "Hitag 2\n" - " lf hitag reader --21 -k 4D494B52\n" - " lf hitag reader --22 --nrar 0102030411223344\n" - " lf hitag reader --23 -k 4F4E4D494B52\n" - " lf hitag reader --26\n" + CLIParserInit(&ctx, "lf hitag read", + "Read Hitag memory\n" + "Crypto mode key format: ISK high + ISK low", + "Hitag S, plain mode\n" + " lf hitag read --hts\n" + "Hitag S, challenge mode\n" + " lf hitag read --hts --nrar 0102030411223344\n" + "Hitag S, crypto mode => use default key 4F4E4D494B52 (ONMIKR)\n" + " lf hitag read --hts --crypto\n" + "Hitag S, long key = crypto mode\n" + " lf hitag read --hts -k 4F4E4D494B52\n\n" + + "Hitag 2, password mode => use default key 4D494B52 (MIKR)\n" + " lf hitag read --ht2 --pwd\n" + "Hitag 2, providing a short key = password mode\n" + " lf hitag read --ht2 -k 4D494B52\n" + "Hitag 2, challenge mode\n" + " lf hitag read --ht2 --nrar 0102030411223344\n" + "Hitag 2, crypto mode => use default key 4F4E4D494B52 (ONMIKR)\n" + " lf hitag read --ht2 --crypto\n" + "Hitag 2, providing a long key = crypto mode\n" + " lf hitag read --ht2 -k 4F4E4D494B52\n" ); void *argtable[] = { arg_param_begin, - arg_lit0(NULL, "01", "HitagS, read all pages, challenge mode"), - arg_lit0(NULL, "02", "HitagS, read all pages, crypto mode. Set key=0 for no auth"), - arg_lit0(NULL, "21", "Hitag2, read all pages, password mode. def 4D494B52 (MIKR)"), - arg_lit0(NULL, "22", "Hitag2, read all pages, challenge mode"), - arg_lit0(NULL, "23", "Hitag2, read all pages, crypto mode. Key ISK high + ISK low. def 4F4E4D494B52 (ONMIKR)"), - arg_lit0(NULL, "25", "Hitag2, test recorded authentications (replay?)"), - arg_lit0(NULL, "26", "Hitag2, read UID"), + arg_lit0(NULL, "hts", "Hitag S"), + arg_lit0(NULL, "ht2", "Hitag 2"), + arg_lit0(NULL, "pwd", "password mode"), + arg_str0(NULL, "nrar", "", "nonce / answer writer, 8 hex bytes"), + arg_lit0(NULL, "crypto", "crypto mode"), arg_str0("k", "key", "", "key, 4 or 6 hex bytes"), - arg_str0(NULL, "nrar", "", "nonce / answer reader, 8 hex bytes"), +// currently pm3 fw reads all the memory anyway +// arg_int1("p", "page", "", "page address to write to"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); - // Hitag S - bool s01 = arg_get_lit(ctx, 1); - bool s02 = arg_get_lit(ctx, 2); + bool use_ht1 = false; // not yet implemented + bool use_hts = arg_get_lit(ctx, 1); + bool use_ht2 = arg_get_lit(ctx, 2); + bool use_htm = false; // not yet implemented - // Hitag 2 - bool h21 = arg_get_lit(ctx, 3); - bool h22 = arg_get_lit(ctx, 4); - bool h23 = arg_get_lit(ctx, 5); - bool h25 = arg_get_lit(ctx, 6); - bool h26 = arg_get_lit(ctx, 7); - - uint8_t key[6]; - int keylen = 0; - int res = CLIParamHexToBuf(arg_get_str(ctx, 8), key, sizeof(key), &keylen); + bool use_plain = false; + bool use_pwd = arg_get_lit(ctx, 3); + uint8_t nrar[8]; + int nalen = 0; + int res = CLIParamHexToBuf(arg_get_str(ctx, 4), nrar, sizeof(nrar), &nalen); if (res != 0) { CLIParserFree(ctx); return PM3_EINVARG; } + bool use_nrar = nalen > 0; + bool use_crypto = arg_get_lit(ctx, 5); - uint8_t nrar[8]; - int nalen = 0; - res = CLIParamHexToBuf(arg_get_str(ctx, 9), nrar, sizeof(nrar), &nalen); - CLIParserFree(ctx); + uint8_t key[6]; + int keylen = 0; + res = CLIParamHexToBuf(arg_get_str(ctx, 6), key, sizeof(key), &keylen); if (res != 0) { + CLIParserFree(ctx); + return PM3_EINVARG; + } +// uint32_t page = arg_get_u32_def(ctx, 6, 0); + + CLIParserFree(ctx); + + // sanity checks + if ((use_ht1 + use_ht2 + use_hts + use_htm) > 1) { + PrintAndLogEx(ERR, "error, specify only one Hitag type"); + return PM3_EINVARG; + } + if ((use_ht1 + use_ht2 + use_hts + use_htm) == 0) { + PrintAndLogEx(ERR, "error, specify one Hitag type"); return PM3_EINVARG; } - // sanity checks if (keylen != 0 && keylen != 4 && keylen != 6) { PrintAndLogEx(WARNING, "Wrong KEY len expected 0, 4 or 6, got %d", keylen); return PM3_EINVARG; @@ -594,48 +620,73 @@ static int CmdLFHitagReader(const char *Cmd) { return PM3_EINVARG; } - uint8_t foo = (s01 + s02 + h21 + h22 + h23 + h25 + h26); + // complete options + if (keylen == 4) { + use_pwd = true; + } + if (keylen == 6) { + use_crypto = true; + } + if ((keylen == 0) && use_pwd) { + memcpy(key, "MIKR", 4); + keylen = 4; + } + if ((keylen == 0) && use_crypto) { + memcpy(key, "ONMIKR", 6); + keylen = 6; + } + + // check coherence + uint8_t foo = (use_plain + use_pwd + use_nrar + use_crypto); if (foo > 1) { - PrintAndLogEx(WARNING, "Only specify one HITAG reader cmd"); + PrintAndLogEx(WARNING, "Specify only one authentication mode"); return PM3_EINVARG; } else if (foo == 0) { - PrintAndLogEx(WARNING, "Specify one HITAG reader cms"); + if (use_hts) { + use_plain = true; + } else { + PrintAndLogEx(WARNING, "Specify one authentication mode"); + return PM3_EINVARG; + } + } + + if (use_hts && use_pwd) { // not sure for the other types... + PrintAndLogEx(WARNING, "Chosen Hitag type does not have Password mode"); + return PM3_EINVARG; + } + + if (use_ht2 && use_plain) { // not sure for the other types... + PrintAndLogEx(WARNING, "Chosen Hitag type does not have Plain mode"); return PM3_EINVARG; } hitag_function htf; hitag_data htd; memset(&htd, 0, sizeof(htd)); - - - uint16_t cmd = CMD_LF_HITAG_READER; - if (s01) { + uint16_t cmd; + if (use_hts && use_nrar) { cmd = CMD_LF_HITAGS_READ; htf = RHTSF_CHALLENGE; memcpy(htd.auth.NrAr, nrar, sizeof(htd.auth.NrAr)); - } - if (s02) { + } else if (use_hts && use_crypto) { cmd = CMD_LF_HITAGS_READ; htf = RHTSF_KEY; memcpy(htd.crypto.key, key, sizeof(htd.crypto.key)); - } - if (h21) { + } else if (use_ht2 && use_pwd) { + cmd = CMD_LF_HITAG_READER; htf = RHT2F_PASSWORD; memcpy(htd.pwd.password, key, sizeof(htd.pwd.password)); - } - if (h22) { + } else if (use_ht2 && use_nrar) { + cmd = CMD_LF_HITAG_READER; htf = RHT2F_AUTHENTICATE; memcpy(htd.auth.NrAr, nrar, sizeof(htd.auth.NrAr)); - } - if (h23) { + } else if (use_ht2 && use_crypto) { htf = RHT2F_CRYPTO; + cmd = CMD_LF_HITAG_READER; memcpy(htd.crypto.key, key, sizeof(htd.crypto.key)); - } - if (h25) { - htf = RHT2F_TEST_AUTH_ATTEMPTS; - } - if (h26) { - htf = RHT2F_UID_ONLY; + } else { + PrintAndLogEx(WARNING, "Sorry, not yet implemented"); + return PM3_ENOTIMPL; } clearCommandBuffer(); @@ -653,21 +704,13 @@ static int CmdLFHitagReader(const char *Cmd) { uint32_t id = bytes_to_num(resp.data.asBytes, 4); uint8_t *data = resp.data.asBytes; PrintAndLogEx(SUCCESS, " UID: " _YELLOW_("%08x"), id); - - if (htf != RHT2F_UID_ONLY) { - - // block3, 1 byte - printHitag2Configuration(data[4 * 3]); - - // print data - print_hex_break(data, 48, 4); - - printHitag2PaxtonDowngrade(data); - } + printHitag2Configuration(data[4 * 3]); + print_hex_break(data, 48, 4); + printHitag2PaxtonDowngrade(data); return PM3_SUCCESS; } -static int CmdLFHitagCheckChallenges(const char *Cmd) { +static int CmdLFHitagSCheckChallenges(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf hitag cc", @@ -708,92 +751,169 @@ static int CmdLFHitagCheckChallenges(const char *Cmd) { return PM3_SUCCESS; } +static int CmdLFHitag2CheckChallenges(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "lf hitag ta", + "Test recorded authentications (replay?)", + "lf hitag ta" + ); + + clearCommandBuffer(); + SendCommandMIX(CMD_LF_HITAG_READER, RHT2F_TEST_AUTH_ATTEMPTS, 0, 0, NULL, 0); + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_ACK, &resp, 2000) == false) { + PrintAndLogEx(WARNING, "timeout while waiting for reply."); + return PM3_ETIMEOUT; + } + if (resp.oldarg[0] == false) { + PrintAndLogEx(DEBUG, "DEBUG: Error - hitag failed"); + return PM3_ESOFT; + } + + // FIXME: doegox: not sure what this fct does and what it returns... + return PM3_SUCCESS; +} + + static int CmdLFHitagWriter(const char *Cmd) { CLIParserContext *ctx; - CLIParserInit(&ctx, "lf hitag writer", - "Act like a Hitag writer" - "In password mode the default key is 4D494B52 (MIKR)\n" - "In crypto mode the default key is 4F4E4D494B52 (ONMIKR) format: ISK high + ISK low.", - "Hitag S\n" - " lf hitag writer --03 --nrar 0102030411223344 -p 3 -d 01020304\n" - " lf hitag writer --04 -k 4F4E4D494B52 -p 3 -d 01020304\n" - "Hitag 2\n" - " lf hitag writer --24 -k 4F4E4D494B52 -p 3 -d 01020304\n" - " lf hitag writer --27 -k 4D494B52 -p 3 -d 01020304\n" + CLIParserInit(&ctx, "lf hitag wrbl", + "Write a page in Hitag memory\n" + "Crypto mode key format: ISK high + ISK low", + "Hitag S, plain mode\n" + " lf hitag wrbl --hts -p 6 -d 01020304\n" + "Hitag S, challenge mode\n" + " lf hitag wrbl --hts --nrar 0102030411223344 -p 6 -d 01020304\n" + "Hitag S, crypto mode => use default key 4F4E4D494B52 (ONMIKR)\n" + " lf hitag wrbl --hts --crypto -p 6 -d 01020304\n" + "Hitag S, long key = crypto mode\n" + " lf hitag wrbl --hts -k 4F4E4D494B52 -p 6 -d 01020304\n\n" + + "Hitag 2, password mode => use default key 4D494B52 (MIKR)\n" + " lf hitag wrbl --ht2 --pwd -p 6 -d 01020304\n" + "Hitag 2, providing a short key = password mode\n" + " lf hitag wrbl --ht2 -k 4D494B52 -p 6 -d 01020304\n" + "Hitag 2, challenge mode\n" + " lf hitag wrbl --ht2 --nrar 0102030411223344 -p 6 -d 01020304\n" + "Hitag 2, crypto mode => use default key 4F4E4D494B52 (ONMIKR)\n" + " lf hitag wrbl --ht2 --crypto -p 6 -d 01020304\n" + "Hitag 2, providing a long key = crypto mode\n" + " lf hitag wrbl --ht2 -k 4F4E4D494B52 -p 6 -d 01020304\n" ); void *argtable[] = { arg_param_begin, - arg_lit0(NULL, "03", "HitagS, write page, challenge mode"), - arg_lit0(NULL, "04", "HitagS, write page, crypto mode. Set key=0 for no auth"), - arg_lit0(NULL, "24", "Hitag2, write page, crypto mode."), - arg_lit0(NULL, "27", "Hitag2, write page, password mode"), - arg_int1("p", "page", "", "page address to write to"), - arg_str0("d", "data", "", "data, 4 hex bytes"), - arg_str0("k", "key", "", "key, 4 or 6 hex bytes"), + arg_lit0(NULL, "hts", "Hitag S"), + arg_lit0(NULL, "ht2", "Hitag 2"), + arg_lit0(NULL, "pwd", "password mode"), arg_str0(NULL, "nrar", "", "nonce / answer writer, 8 hex bytes"), + arg_lit0(NULL, "crypto", "crypto mode"), + arg_str0("k", "key", "", "key, 4 or 6 hex bytes"), + arg_int1("p", "page", "", "page address to write to"), + arg_str1("d", "data", "", "data, 4 hex bytes"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); - // Hitag S - bool s03 = arg_get_lit(ctx, 1); - bool s04 = arg_get_lit(ctx, 2); + bool use_ht1 = false; // not yet implemented + bool use_hts = arg_get_lit(ctx, 1); + bool use_ht2 = arg_get_lit(ctx, 2); + bool use_htm = false; // not yet implemented - // Hitag 2 - bool h24 = arg_get_lit(ctx, 3); - bool h27 = arg_get_lit(ctx, 4); - - uint32_t page = arg_get_u32_def(ctx, 5, 0); - - uint8_t data[4]; - int dlen = 0; - int res = CLIParamHexToBuf(arg_get_str(ctx, 6), data, sizeof(data), &dlen); + bool use_plain = false; + bool use_pwd = arg_get_lit(ctx, 3); + uint8_t nrar[8]; + int nalen = 0; + int res = CLIParamHexToBuf(arg_get_str(ctx, 4), nrar, sizeof(nrar), &nalen); if (res != 0) { CLIParserFree(ctx); return PM3_EINVARG; } + bool use_nrar = nalen > 0; + bool use_crypto = arg_get_lit(ctx, 5); uint8_t key[6]; int keylen = 0; - res = CLIParamHexToBuf(arg_get_str(ctx, 7), key, sizeof(key), &keylen); + res = CLIParamHexToBuf(arg_get_str(ctx, 6), key, sizeof(key), &keylen); if (res != 0) { CLIParserFree(ctx); return PM3_EINVARG; } - uint8_t nrar[8]; - int nalen = 0; - res = CLIParamHexToBuf(arg_get_str(ctx, 8), nrar, sizeof(nrar), &nalen); + uint32_t page = arg_get_u32_def(ctx, 7, 0); + + uint8_t data[4]; + int dlen = 0; + res = CLIParamHexToBuf(arg_get_str(ctx, 8), data, sizeof(data), &dlen); + if (res != 0) { + CLIParserFree(ctx); + return PM3_EINVARG; + } CLIParserFree(ctx); - if (res != 0) { + // sanity checks + if ((use_ht1 + use_ht2 + use_hts + use_htm) > 1) { + PrintAndLogEx(ERR, "error, specify only one Hitag type"); + return PM3_EINVARG; + } + if ((use_ht1 + use_ht2 + use_hts + use_htm) == 0) { + PrintAndLogEx(ERR, "error, specify one Hitag type"); + return PM3_EINVARG; + } + + if (keylen != 0 && keylen != 4 && keylen != 6) { + PrintAndLogEx(WARNING, "Wrong KEY len expected 0, 4 or 6, got %d", keylen); return PM3_EINVARG; } - // sanity checks if (dlen != sizeof(data)) { PrintAndLogEx(WARNING, "Wrong DATA len expected 4, got %d", dlen); return PM3_EINVARG; } - if (keylen != 0 && keylen != 6 && keylen != 4) { - PrintAndLogEx(WARNING, "Wrong KEY len expected 0, 4 or 6, got %d", keylen); - return PM3_EINVARG; - } - if (nalen != 0 && nalen != 8) { PrintAndLogEx(WARNING, "Wrong NR/AR len expected 0 or 8, got %d", nalen); return PM3_EINVARG; } - uint8_t foo = (s03 + s04 + h24 + h27); + // complete options + if (keylen == 4) { + use_pwd = true; + } + if (keylen == 6) { + use_crypto = true; + } + if ((keylen == 0) && use_pwd) { + memcpy(key, "MIKR", 4); + keylen = 4; + } + if ((keylen == 0) && use_crypto) { + memcpy(key, "ONMIKR", 6); + keylen = 6; + } + + // check coherence + uint8_t foo = (use_plain + use_pwd + use_nrar + use_crypto); if (foo > 1) { - PrintAndLogEx(WARNING, "Only specify one HITAG write cmd"); + PrintAndLogEx(WARNING, "Specify only one authentication mode"); return PM3_EINVARG; } else if (foo == 0) { - PrintAndLogEx(WARNING, "Specify one HITAG write cmd"); + if (use_hts) { + use_plain = true; + } else { + PrintAndLogEx(WARNING, "Specify one authentication mode"); + return PM3_EINVARG; + } + } + + if (use_hts && use_pwd) { // not sure for the other types... + PrintAndLogEx(WARNING, "Chosen Hitag type does not have Password mode"); + return PM3_EINVARG; + } + + if (use_ht2 && use_plain) { // not sure for the other types... + PrintAndLogEx(WARNING, "Chosen Hitag type does not have Plain mode"); return PM3_EINVARG; } @@ -801,29 +921,33 @@ static int CmdLFHitagWriter(const char *Cmd) { hitag_data htd; memset(&htd, 0, sizeof(htd)); - if (s03) { + if (use_hts && use_nrar) { htf = WHTSF_CHALLENGE; memcpy(htd.auth.NrAr, nrar, sizeof(htd.auth.NrAr)); memcpy(htd.auth.data, data, sizeof(data)); - } - if (s04) { + PrintAndLogEx(INFO, "Authenticating to Hitag S in Challenge mode"); + } else if (use_hts && use_crypto) { htf = WHTSF_KEY; memcpy(htd.crypto.key, key, sizeof(htd.crypto.key)); memcpy(htd.crypto.data, data, sizeof(data)); - } - if (h24) { - htf = WHT2F_CRYPTO; - memcpy(htd.crypto.key, key, sizeof(htd.crypto.key)); - memcpy(htd.crypto.data, data, sizeof(data)); - } - if (h27) { + PrintAndLogEx(INFO, "Authenticating to Hitag S in Crypto mode"); + } else if (use_ht2 && use_pwd) { htf = WHT2F_PASSWORD; memcpy(htd.pwd.password, key, sizeof(htd.pwd.password)); memcpy(htd.crypto.data, data, sizeof(data)); + PrintAndLogEx(INFO, "Authenticating to Hitag 2 in Password mode"); + } else if (use_ht2 && use_crypto) { + htf = WHT2F_CRYPTO; + memcpy(htd.crypto.key, key, sizeof(htd.crypto.key)); + memcpy(htd.crypto.data, data, sizeof(data)); + PrintAndLogEx(INFO, "Authenticating to Hitag 2 in Crypto mode"); + } else { + PrintAndLogEx(WARNING, "Sorry, not yet implemented"); + return PM3_ENOTIMPL; } - + uint16_t cmd = CMD_LF_HITAGS_WRITE; clearCommandBuffer(); - SendCommandMIX(CMD_LF_HITAGS_WRITE, htf, 0, page, &htd, sizeof(htd)); + SendCommandMIX(cmd, htf, 0, page, &htd, sizeof(htd)); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 4000) == false) { PrintAndLogEx(WARNING, "timeout while waiting for reply."); @@ -841,56 +965,132 @@ static int CmdLFHitag2Dump(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf hitag dump", - "Read all card memory and save to file" - "In password mode the default key is 4D494B52 (MIKR)\n" - "In crypto mode the default key is 4F4E4D494B52 (ONMIKR) format: ISK high + ISK low.", - "lf hitag dump -k 4F4E4D494B52\n" - "lf hitag dump -k 4D494B52\n" + "Read all Hitag 2 card memory and save to file\n" + "Crypto mode key format: ISK high + ISK low", + "Password mode => use default key 4D494B52 (MIKR)\n" + " lf hitag dump --pwd\n" + "Short key = password mode\n" + " lf hitag dump -k 4D494B52\n" + "Challenge mode\n" + " lf hitag dump --nrar 0102030411223344\n" + "Crypto mode => use default key 4F4E4D494B52 (ONMIKR)\n" + " lf hitag dump --crypto\n" + "Long key = crypto mode\n" + " lf hitag dump -k 4F4E4D494B52\n" ); void *argtable[] = { arg_param_begin, - arg_str0("f", "file", "", "specify file name"), - arg_str0("k", "key", "", "key, 4 or 6 hex bytes"), + arg_lit0(NULL, "pwd", "password mode"), arg_str0(NULL, "nrar", "", "nonce / answer reader, 8 hex bytes"), + arg_lit0(NULL, "crypto", "crypto mode"), + arg_str0("k", "key", "", "key, 4 or 6 hex bytes"), + arg_str0("f", "file", "", "specify file name"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); - int fnlen = 0; - char filename[FILE_PATH_SIZE] = {0}; - CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); + bool use_ht1 = false; // not yet implemented + bool use_hts = false; // not yet implemented + bool use_ht2 = true; + bool use_htm = false; // not yet implemented + + bool use_plain = false; + bool use_pwd = arg_get_lit(ctx, 1); + uint8_t nrar[8]; + int nalen = 0; + int res = CLIParamHexToBuf(arg_get_str(ctx, 2), nrar, sizeof(nrar), &nalen); + if (res != 0) { + CLIParserFree(ctx); + return PM3_EINVARG; + } + bool use_nrar = nalen > 0; + bool use_crypto = arg_get_lit(ctx, 3); uint8_t key[6]; int keylen = 0; - int res = CLIParamHexToBuf(arg_get_str(ctx, 2), key, sizeof(key), &keylen); + res = CLIParamHexToBuf(arg_get_str(ctx, 4), key, sizeof(key), &keylen); if (res != 0) { CLIParserFree(ctx); return PM3_EINVARG; } - uint8_t nrar[8]; - int nalen = 0; - res = CLIParamHexToBuf(arg_get_str(ctx, 3), nrar, sizeof(nrar), &nalen); + int fnlen = 0; + char filename[FILE_PATH_SIZE] = {0}; + CLIParamStrToBuf(arg_get_str(ctx, 5), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); + CLIParserFree(ctx); - if (res != 0) { + + // sanity checks + if ((use_ht1 + use_ht2 + use_hts + use_htm) > 1) { + PrintAndLogEx(ERR, "error, specify only one Hitag type"); + return PM3_EINVARG; + } + if ((use_ht1 + use_ht2 + use_hts + use_htm) == 0) { + PrintAndLogEx(ERR, "error, specify one Hitag type"); + return PM3_EINVARG; + } + + if (keylen != 0 && keylen != 4 && keylen != 6) { + PrintAndLogEx(WARNING, "Wrong KEY len expected 0, 4 or 6, got %d", keylen); + return PM3_EINVARG; + } + + // complete options + if (keylen == 4) { + use_pwd = true; + } + if (keylen == 6) { + use_crypto = true; + } + if ((keylen == 0) && use_pwd) { + memcpy(key, "MIKR", 4); + keylen = 4; + } + if ((keylen == 0) && use_crypto) { + memcpy(key, "ONMIKR", 6); + keylen = 6; + } + + // check coherence + uint8_t foo = (use_plain + use_pwd + use_nrar + use_crypto); + if (foo > 1) { + PrintAndLogEx(WARNING, "Specify only one authentication mode"); + return PM3_EINVARG; + } else if (foo == 0) { + if (use_hts) { + use_plain = true; + } else { + PrintAndLogEx(WARNING, "Specify one authentication mode"); + return PM3_EINVARG; + } + } + + if (use_hts && use_pwd) { // not sure for the other types... + PrintAndLogEx(WARNING, "Chosen Hitag type does not have Password mode"); + return PM3_EINVARG; + } + + if (use_ht2 && use_plain) { // not sure for the other types... + PrintAndLogEx(WARNING, "Chosen Hitag type does not have Plain mode"); return PM3_EINVARG; } hitag_function htf; hitag_data htd; memset(&htd, 0, sizeof(htd)); - - if (keylen == 6) { - htf = RHT2F_CRYPTO; - memcpy(htd.crypto.key, key, sizeof(htd.crypto.key)); - PrintAndLogEx(INFO, "Authenticating in crypto mode"); - } else { + if (use_ht2 && use_pwd) { htf = RHT2F_PASSWORD; memcpy(htd.pwd.password, key, sizeof(htd.pwd.password)); - PrintAndLogEx(INFO, "Authenticating in password mode"); + PrintAndLogEx(INFO, "Authenticating to Hitag 2 in Password mode"); + } else if (use_ht2 && use_crypto) { + htf = RHT2F_CRYPTO; + memcpy(htd.crypto.key, key, sizeof(htd.crypto.key)); + PrintAndLogEx(INFO, "Authenticating to Hitag 2 in Crypto mode"); + } else { + PrintAndLogEx(WARNING, "Sorry, not yet implemented"); + return PM3_ENOTIMPL; } - uint16_t cmd = CMD_LF_HITAG_READER; clearCommandBuffer(); SendCommandMIX(cmd, htf, 0, 0, &htd, sizeof(htd)); @@ -909,7 +1109,8 @@ static int CmdLFHitag2Dump(const char *Cmd) { if (data == NULL) return PM3_ESOFT; - PrintAndLogEx(SUCCESS, "Dumping tag memory..."); + uint32_t id = bytes_to_num(resp.data.asBytes, 4); + PrintAndLogEx(SUCCESS, " UID: " _YELLOW_("%08x"), id); if (fnlen < 1) { char *fptr = filename; @@ -917,8 +1118,16 @@ static int CmdLFHitag2Dump(const char *Cmd) { FillFileNameByUID(fptr, data, "-dump", 4); } + // block3, 1 byte + printHitag2Configuration(data[4 * 3]); + + // print data print_hex_break(data, 48, 4); + printHitag2PaxtonDowngrade(data); + + PrintAndLogEx(SUCCESS, "Dumping tag memory..."); + pm3_save_dump(filename, data, 48, jsfHitag, 4); return PM3_SUCCESS; } @@ -982,16 +1191,20 @@ void annotateHitagS(char *exp, size_t size, const uint8_t *cmd, uint8_t cmdsize, } static command_t CommandTable[] = { + {"-----------", CmdHelp, IfPm3Hitag, "------------------------ " _CYAN_("General") " ------------------------"}, {"help", CmdHelp, AlwaysAvailable, "This help"}, - {"eload", CmdLFHitagEload, IfPm3Hitag, "Load Hitag dump file into emulator memory"}, {"list", CmdLFHitagList, AlwaysAvailable, "List Hitag trace history"}, - {"info", CmdLFHitagInfo, IfPm3Hitag, "Hitag2 tag information"}, - {"reader", CmdLFHitagReader, IfPm3Hitag, "Act like a Hitag reader"}, - {"sim", CmdLFHitagSim, IfPm3Hitag, "Simulate Hitag transponder"}, + {"-----------", CmdHelp, IfPm3Hitag, "----------------------- " _CYAN_("operations") " -----------------------"}, + {"info", CmdLFHitagInfo, IfPm3Hitag, "Hitag 2 tag information"}, + {"dump", CmdLFHitag2Dump, IfPm3Hitag, "Dump Hitag 2 tag"}, + {"read", CmdLFHitagReader, IfPm3Hitag, "Read Hitag memory"}, + {"wrbl", CmdLFHitagWriter, IfPm3Hitag, "Write a block (page) in Hitag memory"}, {"sniff", CmdLFHitagSniff, IfPm3Hitag, "Eavesdrop Hitag communication"}, - {"writer", CmdLFHitagWriter, IfPm3Hitag, "Act like a Hitag writer"}, - {"dump", CmdLFHitag2Dump, IfPm3Hitag, "Dump Hitag2 tag"}, - {"cc", CmdLFHitagCheckChallenges, IfPm3Hitag, "Test all challenges"}, + {"cc", CmdLFHitagSCheckChallenges, IfPm3Hitag, "Hitag S: test all provided challenges"}, + {"ta", CmdLFHitag2CheckChallenges, IfPm3Hitag, "Hitag 2: test all recorded authentications"}, + {"-----------", CmdHelp, IfPm3Hitag, "----------------------- " _CYAN_("simulation") " -----------------------"}, + {"eload", CmdLFHitagEload, IfPm3Hitag, "Load Hitag dump file into emulator memory"}, + {"sim", CmdLFHitagSim, IfPm3Hitag, "Simulate Hitag transponder"}, { NULL, NULL, 0, NULL } }; From dac7721cffe572361c4e6402e74f6f57e8ae785d Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 21 Jul 2023 01:31:09 +0200 Subject: [PATCH 0229/1034] hitag: coherence in hitag type options --- client/src/cmdlfhitag.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 74c77b8f9..9fd87b485 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -225,10 +225,10 @@ static int CmdLFHitagEload(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_str1("f", "file", "", "Specify dump filename"), - arg_lit0("1", NULL, "Card type Hitag 1"), - arg_lit0("2", NULL, "Card type Hitag 2"), - arg_lit0("s", NULL, "Card type Hitag S"), - arg_lit0("m", NULL, "Card type Hitag M"), + arg_lit0("1", "ht1", "Card type Hitag 1"), + arg_lit0("2", "ht2", "Card type Hitag 2"), + arg_lit0("s", "hts", "Card type Hitag S"), + arg_lit0("m", "htm", "Card type Hitag μ"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -560,8 +560,8 @@ static int CmdLFHitagReader(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_lit0(NULL, "hts", "Hitag S"), - arg_lit0(NULL, "ht2", "Hitag 2"), + arg_lit0("s", "hts", "Hitag S"), + arg_lit0("2", "ht2", "Hitag 2"), arg_lit0(NULL, "pwd", "password mode"), arg_str0(NULL, "nrar", "", "nonce / answer writer, 8 hex bytes"), arg_lit0(NULL, "crypto", "crypto mode"), @@ -803,8 +803,8 @@ static int CmdLFHitagWriter(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_lit0(NULL, "hts", "Hitag S"), - arg_lit0(NULL, "ht2", "Hitag 2"), + arg_lit0("s", "hts", "Hitag S"), + arg_lit0("2", "ht2", "Hitag 2"), arg_lit0(NULL, "pwd", "password mode"), arg_str0(NULL, "nrar", "", "nonce / answer writer, 8 hex bytes"), arg_lit0(NULL, "crypto", "crypto mode"), From a556434f3f0dd39e21c509c328424d8149b5fe8a Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 06:21:59 +0200 Subject: [PATCH 0230/1034] style --- client/src/cmdhfmf.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 970c63004..06b7c8a18 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7034,8 +7034,14 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { // --------------- CHANGE UID ---------------- uint8_t aCHANGE[] = {0x00, 0xa6, 0xa0, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0x00}; memcpy(aCHANGE + 5, uid, uidlen); - res = ExchangeAPDU14a(aCHANGE, sizeof(aCHANGE), activate_field, keep_field_on, response, sizeof(response), - &resplen); + res = ExchangeAPDU14a( + aCHANGE, sizeof(aCHANGE), + activate_field, + keep_field_on, + response, sizeof(response), + &resplen + ); + if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Super card UID change [ " _RED_("fail") " ]"); DropField(); @@ -7054,8 +7060,14 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { // --------------- RESET CARD ---------------- uint8_t aRESET[] = {0x00, 0xa6, 0xc0, 0x00}; - res = ExchangeAPDU14a(aRESET, sizeof(aRESET), activate_field, keep_field_on, response, sizeof(response), - &resplen); + res = ExchangeAPDU14a( + aRESET, sizeof(aRESET), + activate_field, + keep_field_on, + response, sizeof(response), + &resplen + ); + if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Super card reset [ " _RED_("fail") " ]"); DropField(); @@ -7144,7 +7156,12 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { uint64_t key64 = -1; if (mfkey32_moebius(&data, &key64)) { - PrintAndLogEx(SUCCESS, "UID: %s Sector %02x key %c [ " _GREEN_("%012" PRIX64) " ]", sprint_hex_inrow(outA, 4), data.sector, (data.keytype == 0x60) ? 'A' : 'B', key64); + PrintAndLogEx(SUCCESS, "UID: %s Sector %02x key %c [ " _GREEN_("%012" PRIX64) " ]", + sprint_hex_inrow(outA, 4), + data.sector, + (data.keytype == 0x60) ? 'A' : 'B', + key64 + ); } else { PrintAndLogEx(FAILED, "failed to recover any key"); } From 154d454f231bfe4293778a476f4c920ecb62e7e7 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 06:23:53 +0200 Subject: [PATCH 0231/1034] style --- client/src/cmdhf14a.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 21ad70be7..e6e0a20e8 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -605,7 +605,7 @@ static int CmdHF14AReader(const char *Cmd) { } else { PrintAndLogEx(SUCCESS, "ATQA: %02X %02X", card.atqa[1], card.atqa[0]); } - + PrintAndLogEx(NORMAL, ""); } DropField(); res = PM3_ESOFT; @@ -623,6 +623,7 @@ static int CmdHF14AReader(const char *Cmd) { PrintAndLogEx(SUCCESS, " ATS: [%d] " _GREEN_("%s"), card.ats_len, sprint_hex(card.ats, card.ats_len)); } } + PrintAndLogEx(NORMAL, ""); } if (!disconnectAfter) { if (!silent) PrintAndLogEx(SUCCESS, "Card is selected. You can now start sending commands"); @@ -903,6 +904,7 @@ int CmdHF14ASniff(const char *Cmd) { } int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, bool silentMode) { + uint16_t cmdc = 0; *dataoutlen = 0; From 09bd5c7bcdea6642196a34ff0c5ff911712a6247 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 06:27:02 +0200 Subject: [PATCH 0232/1034] prep for a asn1 selftest check --- client/src/cmddata.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 032d31f85..2492161cf 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -2911,14 +2911,19 @@ static int CmdAsn1Decoder(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("d", NULL, "", "ASN1 encoded byte array"), + arg_str0("d", NULL, "", "ASN1 encoded byte array"), + arg_lit0("t", "test", "perform selftest"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); int dlen = 2048; uint8_t data[2048]; CLIGetHexWithReturn(ctx, 1, data, &dlen); + bool selftest = arg_get_lit(ctx, 2); CLIParserFree(ctx); + if (selftest) { +// return asn1_selftest(); + } // print ASN1 decoded array in TLV view PrintAndLogEx(INFO, "---------------- " _CYAN_("ASN1 TLV") " -----------------"); From ba6d48dec8a2677b9d6b367c75ffec9134247474 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 06:27:41 +0200 Subject: [PATCH 0233/1034] include --- client/src/cmdlfcotag.h | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/cmdlfcotag.h b/client/src/cmdlfcotag.h index 9577dabdb..11f0b28ce 100644 --- a/client/src/cmdlfcotag.h +++ b/client/src/cmdlfcotag.h @@ -20,6 +20,7 @@ #define CMDLFCOTAG_H__ #include "common.h" +#include #ifndef COTAG_BITS #define COTAG_BITS 264 From 89e6f88522d359d61bab90cbb6381634b1a527c2 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 06:40:26 +0200 Subject: [PATCH 0234/1034] add asn1 selftest batch --- client/src/cmddata.c | 2 +- client/src/crypto/asn1utils.c | 151 +++++++++++++++++++++++++++++++++- client/src/crypto/asn1utils.h | 1 + 3 files changed, 150 insertions(+), 4 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 2492161cf..78f31c988 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -2922,7 +2922,7 @@ static int CmdAsn1Decoder(const char *Cmd) { bool selftest = arg_get_lit(ctx, 2); CLIParserFree(ctx); if (selftest) { -// return asn1_selftest(); + return asn1_selftest(); } // print ASN1 decoded array in TLV view diff --git a/client/src/crypto/asn1utils.c b/client/src/crypto/asn1utils.c index 4618c5028..34b9a8e80 100644 --- a/client/src/crypto/asn1utils.c +++ b/client/src/crypto/asn1utils.c @@ -20,8 +20,9 @@ #include #include #include -#include // memcpy -#include "ui.h" // Print... +#include // memcpy +#include "ui.h" // Print... +#include "commonutil.h" // ARRAYLEN #include "emv/tlv.h" #include "asn1dump.h" #include "util.h" @@ -103,8 +104,152 @@ int asn1_print(uint8_t *asn1buf, size_t asn1buflen, const char *indent) { PrintAndLogEx(ERR, "Can't parse data as TLV tree"); return PM3_ESOFT; } - return PM3_SUCCESS; } +typedef struct { + const char *hex; + const char *expected; + const char *desc; +} asn1_test; + +int asn1_selftest(void) { + + PrintAndLogEx(INFO, "to be implemented. Feel free to contribute!"); + + /* + + ICEMAN: + Problem to be solved, how to extract data back from our asn1 decoder to compare with the expected text found in the following test cases. + Thanks @Mistial for the suggestion and links. + + These test cases are from the project lapo-luchini's asn1js (ISC license which is like MIT license) + https://github.com/lapo-luchini/asn1js/blob/trunk/test.js + + + const asn1_test tests[] = { + // RSA Laboratories technical notes from https://luca.ntop.org/Teaching/Appunti/asn1.html + {"0304066E5DC0", "(18 bit)\n011011100101110111", "ntop, bit string: DER encoding"}, + {"0304066E5DE0", "(18 bit)\n011011100101110111", "ntop, bit string: padded with `100000`"}, + {"038104066E5DC0", "(18 bit)\n011011100101110111", "ntop, bit string: long form of length octets"}, + {"23090303006E5D030206C0", "(18 bit)\n011011100101110111", "ntop, bit string (constructed encoding): `0110111001011101` + `11`"}, + {"160D7465737431407273612E636F6D", "test1@rsa.com", "ntop, ia5string: DER encoding"}, + {"16810D7465737431407273612E636F6D", "test1@rsa.com", "ntop, ia5string: long form of length octets"}, + {"36131605746573743116014016077273612E636F6D", "test1@rsa.com", "ntop, ia5string: constructed encoding: `test1` + `@` + `rsa.com`"}, + {"020100", "0", "ntop, integer: 0"}, + {"02017F", "127", "ntop, integer: 127"}, + {"02020080", "128", "ntop, integer: 128"}, + {"02020100", "256", "ntop, integer: 256"}, + {"020180", "-128", "ntop, integer: -128"}, + {"0202FF7F", "-129", "ntop, integer: -129"}, + {"0500", "", "ntop, null: DER"}, + {"058100", "", "ntop, null: long form of length octets"}, + {"06062A864886F70D", "1.2.840.113549", "ntop, object identifier"}, + {"04080123456789ABCDEF", "(8 byte)\n0123456789ABCDEF", "ntop, octet string: DER encoding"}, + {"0481080123456789ABCDEF", "(8 byte)\n0123456789ABCDEF", "ntop, octet string: long form of length octets"}, + {"240C040401234567040489ABCDEF", "(8 byte)\n0123456789ABCDEF", "ntop, octet string (constructed encoding): 01…67 + 89…ef"}, + {"130B5465737420557365722031", "Test User 1", "ntop, printable string: DER encoding"}, + {"13810B5465737420557365722031", "Test User 1", "ntop, printable string: long form of length octets"}, + {"330F130554657374201306557365722031", "Test User 1", "ntop, printable string: constructed encoding: `Test ` + `User 1`"}, + {"140F636CC26573207075626C6971756573", "clés publiques", "ntop, t61string: DER encoding"}, + {"14810F636CC26573207075626C6971756573", "clés publiques", "ntop, t61string: long form of length octets"}, + {"34151405636CC2657314012014097075626C6971756573", "clés publiques", "ntop, t61string: constructed encoding: `clés` + ` ` + `publiques`"}, + {"170D3931303530363233343534305A", "1991-05-06 23:45:40 UTC", "ntop, utc time: UTC"}, + {"17113931303530363136343534302D30373030", "1991-05-06 16:45:40 UTC-07:00", "ntop, utc time: PDT"}, + // inspired by http://luca.ntop.org/Teaching/Appunti/asn1.html + {"0304086E5DC0", "Exception:\nInvalid BitString with unusedBits=8", "bit string: invalid unusedBits"}, + // http://msdn.microsoft.com/en-us/library/windows/desktop/aa379076(v=vs.85).aspx + {"30820319308202820201003023310F300D0603550403130654657374434E3110300E060355040A1307546573744F726730819F300D06092A864886F70D010101050003818D00308189028181008FE2412A08E851A88CB3E853E7D54950B3278A2BCBEAB54273EA0257CC6533EE882061A11756C12418E3A808D3BED931F3370B94B8CC43080B7024F79CB18D5DD66D82D0540984F89F970175059C89D4D5C91EC913D72A6B309119D6D442E0C49D7C9271E1B22F5C8DEEF0F1171ED25F315BB19CBC2055BF3A37424575DC90650203010001A08201B4301A060A2B0601040182370D0203310C160A362E302E353336312E323042060A2B0601040182370D0201313430321E260043006500720074006900660069006300610074006500540065006D0070006C0061007400651E080055007300650072305706092B0601040182371514314A30480201090C237669636833642E6A646F6D6373632E6E74746573742E6D6963726F736F66742E636F6D0C154A444F4D4353435C61646D696E6973747261746F720C07636572747265713074060A2B0601040182370D0202316630640201011E5C004D006900630072006F0073006F0066007400200045006E00680061006E006300650064002000430072007900700074006F0067007200610070006800690063002000500072006F00760069006400650072002000760031002E003003010030818206092A864886F70D01090E31753073301706092B0601040182371402040A1E08005500730065007230290603551D2504223020060A2B0601040182370A030406082B0601050507030406082B06010505070302300E0603551D0F0101FF0404030205A0301D0603551D0E041604143C0F73DAF8EF41D83AEABE922A5D2C966A7B9454300D06092A864886F70D01010505000381810047EB995ADF9E700DFBA73132C15F5C24C2E0BFC624AF15660EB86A2EAB2BC4971FE3CBDC63A525ECC7B428616636A1311BBFDDD0FCBF1794901DE55EC7115EC9559FEBA33E14C799A6CBBAA1460F39D444C4C84B760E205D6DA9349ED4D58742EB2426511490B40F065E5288327A9520A0FDF7E57D60DD72689BF57B058F6D1E", + "(3 elem)", "PKCS#10 request"}, + // Int10 + {"02102FA176B36EE9F049F444B40099661945", "(126 bit)\n63312083136615639753586560173617846597", "Big integer (126 bit)"}, + {"028181008953097086EE6147C5F4D5FFAF1B498A3D11EC5518E964DC52126B2614F743883F64CA51377ABB530DFD20464A48BD67CD27E7B29AEC685C5D10825E605C056E4AB8EEA460FA27E55AA62C498B02D7247A249838A12ECDF37C6011CF4F0EDEA9CEE687C1CB4A51C6AE62B2EFDB000723A01C99D6C23F834880BA8B42D5414E6F", + "(1024 bit)\n96432446964907009840023644401994013457468837455140331578268642517697945390319089463541388080569398374873228752921897678940332050406994011437231634303608704223145390228074087922901239478374991949372306413157758278029522534299413919735715864599284769202556071242381348472464716517735026291259010477833523908207", + "Big integer (1024 bit)"}, + {"02820201009BA9ABBF614A97AF2F97669A745FD0D996FDCFE2E466EF1F1F4733C244A3DF9ADE1FB554DD157C6935116FBBC80C8E6A181ED88FD916BC1048365CF063B3905A5C2437D7A3D6CB0971B9F1017284B07DDB4D80CDFCD36FC9F8DAB60E82D24585A81B68A83DE8F4446CBDA1C2CB03BE8C3E130084DF4A48C0E3220AE8E937A7184CB1090D23567F044DD9178418A5C8DA409473EBCE0E573C03813A9D0AA1574369AC576D799078E5B5B43BD8BC4C8D28A1A7A3A7BA024E25D12AAEEDAE0322B86B200F302854957FE0EECE0A669DD1402D6E22AF9D1AC10519D26FC0F29FF87BB30242FB50A91D2D930F23ABC6C10F92FFD0A215F55309711CFF451384E6265EF8E0881C0AFC16B6A87306B8F0638402A0C65AECE774DF70AEA38325EAD6C7978793A7C68A8A33976037103E973E6E2915D6A10FD1882C129F6FAAA4C642EB41A2E39543D301856D8EBB3BF32336C7FE3BE0A1250748ABC98974FF088F80BFC09665F3EEEC4B68BD9D88C331B340F1E8CFF638BB9CE4D17FD4E5589B7CFAD4F30E9B7591E4BA522E197ED1F5CD5A19FCBA06F6FB52A84B9904DDF8F9B48B50A34E6289F08724FA8342C187FAD52D292A5A717A646AD72760630DDBCE49F58D1F90893217F87343B8D25A938661D6E1750AEA796676884F71EB0425D60A5A7A93E5B94B17400FB1B6B9F5DE4FDCE0B3AC3B117060844A436E9920C029710AC065", + "(4096 bit)\n635048724432704421127930570668665246853305382538324205739741643121831497295424070220821366244137115920753022123888627038218427491681054376713237422498116573180444839575827154645186734602336866679804832661256616738257119870932328599495025506292424741581222812593482590762754785441060866630543522468678295806775919446210955958208696766307578451905771148370694894591388931494246786732600822191966681852303750991082312180670980233382216493445574638820565887523903118457551295241540793541306271618874366356869335229283992012581380459991160410157116077111142487644315609688092841697874946124416376553323373756926990721842430477982958383467149331238064901788481621489266725616974850293388387825359434286033332681714766010619113405542747712973535303497912234899589502990216128180823653963322406352206636893824027962569732222882297210841939793442415179615290739900774082858983244011679281115202763730964934473392333219986431517733237277686866318351054204026883453068392486990840498271719737813876367239342153571643327128417739316281558041652406500713712661305061745568036561978158652008943224271511931676512028205883718704503533046383542018858616087454820845906934069146870330990447993387221061968484774662499598623702280426558025111180066917", + "Big integer (4096 bit)"}, + {"0202007F", "127", "Padded 127"}, + {"0202FF7F", "-129", "Negative 129"}, + {"0202FC18", "-1000", "Negative 1000 (2)"}, + {"0204FFFFFC18", "-1000", "Negative 1000 (4)"}, + {"0208FFFFFFFFFFFFFC18", "-1000", "Negative 1000 (8)"}, + {"0210FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC18", "-1000", "Negative 1000 (16)"}, + {"0203800001", "-8388607", "Negative 8388607"}, + {"02020000", "0", "Zero (2)"}, + {"0204FFFFFFFF", "-1", "Negative 1 (4)"}, + // OID + {"060C69C7C79AB78084C289F9870D", "2.25.84478768945400492475277", "Big OID arc"}, + {"06146982968D8D889BCCA8C7B3BDD4C080AAAED78A1B", "2.25.184830721219540099336690027854602552603", "Bigger OID arc"}, + {"060488378952", "2.999.1234", "OID arc > 2.47"}, + {"060782A384F3CAC00A", "2.9999999999930", "OID with Int10 corner case (1)"}, + {"060881E3AFEAA69A800A", "2.999999999999930", "OID with Int10 corner case (2)"}, + {"06092A864886F70D010105", "1.2.840.113549.1.1.5\nsha1WithRSAEncryption\nPKCS #1", "known OID from Peter Gutmann list"}, + // OID corner case from https://misc.daniel-marschall.de/asn.1/oid-sizecheck/oid_size_test.txt + {"060A81FFFFFFFFFFFFFFFF7F", "2.18446744073709551535", "OID root 64 bit - 1"}, + {"060A82808080808080808000", "2.18446744073709551536", "OID root 64 bit"}, + {"060A82808080808080808001", "2.18446744073709551537", "OID root 64 bit + 1"}, + {"0620FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F", "2.26959946667150639794667015087019630673637144422540572481103610249135", "OID derLen20c"}, + {"0621818080808080808080808080808080808080808080808080808080808080808000", "2.26959946667150639794667015087019630673637144422540572481103610249136", "OID derLen21c"}, + // relative OID + {"0D0A0102030405060708090A","1.2.3.4.5.6.7.8.9.10", "Relative OID from GitHub PR 56"}, + {"0D04C27B0302","8571.3.2", "Relative OID from ISO/IEC 8825-1:2002 8.20.5"}, + // UTF-8 + {"0C0E4C61706FE280997320F09F9A972E", "Lapo’s 🚗.", "UTF-8 4-byte sequence"}, + // T-REC-X.690-201508 + {"0307040A3B5F291CD0", "(44 bit)\n00001010001110110101111100101001000111001101", "Example 8.6.4.2: bit string (primitive encoding)"}, + {"23800303000A3B0305045F291CD00000", "(44 bit)\n00001010001110110101111100101001000111001101", "Example 8.6.4.2: bit string (constructed encoding)"}, + // avoid past bugs + {"23800303000A3B230A0302005F030404291CD00000", "(44 bit)\n00001010001110110101111100101001000111001101", "Bit string (recursive constructed)"}, + {"0348003045022100DE601E573DAFB59BC551D58E3E7B9EDA0612DD0112805A2217B734759B884417022067C3FDE60780D41C1D7A3B90291F3D39C4DC2F206DCCBA2F982C06B67C09B232", "(568 bit)\n0011000001000101000000100010000100000000110111100110000000011110010101110011110110101111101101011001101111000101010100011101010110001110001111100111101110011110110110100000011000010010110111010000000100010010100000000101101000100010000101111011011100110100011101011001101110001000010001000001011100000010001000000110011111000011111111011110011000000111100000001101010000011100000111010111101000111011100100000010100100011111001111010011100111000100110111000010111100100000011011011100110010111010001011111001100000101100000001101011011001111100000010011011001000110010", "not constructed, but contains structures"}, + {"040731323334353637", "(7 byte)\n1234567", "Octet string with ASCII content"}, + {"0407312E3233E282AC", "(7 byte)\n1.23€", "Octet string with UTF-8 content"}, + // GitHub issue #47 + {"0420041EE4E3B7ED350CC24D034E436D9A1CB15BB1E328D37062FB82E84618AB0A3C", "(32 byte)\n041EE4E3B7ED350CC24D034E436D9A1CB15BB1E328D37062FB82E84618AB0A3C", "Do not mix encapsulated and structured octet strings"}, + // GitHub issue #54 + {"181531393835313130363231303632372E332D31323334", "1985-11-06 21:06:27.3 UTC-12:34", "UTC offsets with minutes"}, + // GitHub issue #54 + {"181331393835313130363231303632372E332B3134", "1985-11-06 21:06:27.3 UTC+14:00", "UTC offset +13 and +14"}, + }; + + int tot = ARRAYLEN(tests); + + PrintAndLogEx(INFO,"ASN1 decoder selftest. {%d tests}", tot); + int count = 0; + for (int i=0; i< ARRAYLEN(tests); i++) { + size_t n = strlen(tests[i].hex) * 2; + + uint8_t *d = calloc(n, sizeof(uint8_t)); + if (d == NULL) { + return PM3_EMALLOC; + } + int len = 0; + param_gethex_to_eol(tests[i].hex, 0, d, n, &len); + if (len == 0) { + free(d); + continue; + } + + PrintAndLogEx(INFO, "%s [%d: %s]", tests[i].desc, len, sprint_hex_inrow(d, len)); + + + struct tlvdb *t = tlvdb_parse_multi((const unsigned char*)n, len); + if (t) { + bool candump = false; + if (asn1_tag_dump(&t->tag, 0, &candump)) { + count++; + } + tlvdb_free(t); + } + free(d); + } + + + PrintAndLogEx(SUCCESS, "Pass... %s", (count == tot) ? _GREEN_("ok") : _RED_("fail")); + PrintAndLogEx(NORMAL, ""); + + */ + + return PM3_SUCCESS; +} diff --git a/client/src/crypto/asn1utils.h b/client/src/crypto/asn1utils.h index 691e574b2..e55a2926f 100644 --- a/client/src/crypto/asn1utils.h +++ b/client/src/crypto/asn1utils.h @@ -25,5 +25,6 @@ int asn1_print(uint8_t *asn1buf, size_t asn1buflen, const char *indent); int ecdsa_asn1_get_signature(uint8_t *signature, size_t signaturelen, uint8_t *rval, uint8_t *sval); +int asn1_selftest(void); #endif /* asn1utils.h */ From 78ea432b8c82c441d70237c55b7feca0549e3ead Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 21 Jul 2023 09:27:12 +0200 Subject: [PATCH 0235/1034] fix for killjoy windows --- client/src/cmdlfhitag.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 9fd87b485..6a590b4e2 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -228,7 +228,7 @@ static int CmdLFHitagEload(const char *Cmd) { arg_lit0("1", "ht1", "Card type Hitag 1"), arg_lit0("2", "ht2", "Card type Hitag 2"), arg_lit0("s", "hts", "Card type Hitag S"), - arg_lit0("m", "htm", "Card type Hitag μ"), + arg_lit0("m", "htm", "Card type Hitag \xce\xbc"), // μ arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); From eb61d0f45e9856cab54717f004d6e6cfc1c7223c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 10:57:47 +0200 Subject: [PATCH 0236/1034] change param names for data detect clock to follow client overall style --- client/src/cmddata.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 78f31c988..6b3138fa6 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1106,17 +1106,15 @@ static int CmdDetectClockRate(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "data detectclock", "Detect ASK, FSK, NRZ, PSK clock rate of wave in GraphBuffer", - "data detectclock -A --> detect clock of an ask wave in GraphBuffer\n" - "data detectclock -F --> detect clock of an fsk wave in GraphBuffer\n" - "data detectclock -N --> detect clock of an psk wave in GraphBuffer\n" - "data detectclock -P --> detect clock of an nrz/direct wave in GraphBuffer" + "data detectclock --ask\n" + "data detectclock --nzr --> detect clock of an nrz/direct wave in GraphBuffer\n" ); void *argtable[] = { arg_param_begin, - arg_lit0("A", "ASK", "specify ASK modulation clock detection"), - arg_lit0("F", "FSK", "specify FSK modulation clock detection"), - arg_lit0("N", "NZR", "specify NZR/DIRECT modulation clock detection"), - arg_lit0("P", "PSK", "specify PSK modulation clock detection"), + arg_lit0(NULL, "ask", "specify ASK modulation clock detection"), + arg_lit0(NULL, "fsk", "specify FSK modulation clock detection"), + arg_lit0(NULL, "nzr", "specify NZR/DIRECT modulation clock detection"), + arg_lit0(NULL, "psk", "specify PSK modulation clock detection"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); From b332a5bd602b769a1bc180212e7b8b9b8c77e616 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 10:58:30 +0200 Subject: [PATCH 0237/1034] added a new command data centerthreshold. It removes center values. --- client/src/cmddata.c | 59 +++++++++++++++++++++++++++++++++++++++++--- client/src/cmddata.h | 1 + 2 files changed, 57 insertions(+), 3 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 6b3138fa6..67fbafafd 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3312,6 +3312,56 @@ cleanup: return PM3_SUCCESS; } +int centerThreshold(const int *in, int *out, size_t len, int8_t up, int8_t down) { + + for (size_t i = 0; i < len; ++i) { + if ((in[i] <= up) && (in[i] >= down)) { + out[i] = 0; + } + } + + // clean out spikes. + for (size_t i = 2; i < len - 2; ++i) { + + int a = out[i-2] + out[i-1]; + int b = out[i+2] + out[i+1]; + if (a == 0 && b == 0) { + out[i] = 0; + } + } + return PM3_SUCCESS; +} + +static int CmdCenterThreshold(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "data cthreshold", + "Inverse of dirty threshold command, all values between up and down will be average out", + "data cthreshold -u 10 -d -10" + ); + void *argtable[] = { + arg_param_begin, + arg_int1("d", "down", "", "threshold down"), + arg_int1("u", "up", "", "threshold up"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + int8_t down = arg_get_int(ctx, 1); + int8_t up = arg_get_int(ctx, 2); + CLIParserFree(ctx); + + PrintAndLogEx(INFO, "Applying up threshold: " _YELLOW_("%i") ", down threshold: " _YELLOW_("%i") "\n", up, down); + + centerThreshold(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen, up, down); + + // set signal properties low/high/mean/amplitude and isnoice detection + uint8_t bits[g_GraphTraceLen]; + size_t size = getFromGraphBuf(bits); + // set signal properties low/high/mean/amplitude and is_noice detection + computeSignalProperties(bits, size); + RepaintGraphWindow(); + return PM3_SUCCESS; +} + static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, @@ -3324,9 +3374,9 @@ static command_t CommandTable[] = { {"rawdemod", CmdRawDemod, AlwaysAvailable, "Demodulate the data in the GraphBuffer and output binary"}, {"-----------", CmdHelp, AlwaysAvailable, "------------------------- " _CYAN_("Graph") "-------------------------"}, - {"askedgedetect", CmdAskEdgeDetect, AlwaysAvailable, "Adjust Graph for manual ASK demod using the length of sample differences to detect the edge of a wave"}, + {"askedgedetect", CmdAskEdgeDetect, AlwaysAvailable, "Adjust Graph for manual ASK demod"}, {"autocorr", CmdAutoCorr, AlwaysAvailable, "Autocorrelation over window"}, - {"dirthreshold", CmdDirectionalThreshold, AlwaysAvailable, "Max rising higher up-thres/ Min falling lower down-thres, keep rest as prev."}, + {"dirthreshold", CmdDirectionalThreshold, AlwaysAvailable, "Max rising higher up-thres/ Min falling lower down-thres"}, {"decimate", CmdDecimate, AlwaysAvailable, "Decimate samples"}, {"undecimate", CmdUndecimate, AlwaysAvailable, "Un-decimate samples"}, {"hide", CmdHide, AlwaysAvailable, "Hide graph window"}, @@ -3337,10 +3387,13 @@ static command_t CommandTable[] = { {"mtrim", CmdMtrim, AlwaysAvailable, "Trim out samples from the specified start to the specified stop"}, {"norm", CmdNorm, AlwaysAvailable, "Normalize max/min to +/-128"}, {"plot", CmdPlot, AlwaysAvailable, "Show graph window"}, + + {"cthreshold", CmdCenterThreshold, AlwaysAvailable, "Average out all values between"}, + {"rtrim", CmdRtrim, AlwaysAvailable, "Trim samples from right of trace"}, {"setgraphmarkers", CmdSetGraphMarkers, AlwaysAvailable, "Set blue and orange marker in graph window"}, {"shiftgraphzero", CmdGraphShiftZero, AlwaysAvailable, "Shift 0 for Graphed wave + or - shift value"}, - {"timescale", CmdTimeScale, AlwaysAvailable, "Set a timescale to get a differential reading between the yellow and purple markers as time duration"}, + {"timescale", CmdTimeScale, AlwaysAvailable, "Set cursor display timescale"}, {"zerocrossings", CmdZerocrossings, AlwaysAvailable, "Count time between zero-crossings"}, {"convertbitstream", CmdConvertBitStream, AlwaysAvailable, "Convert GraphBuffer's 0/1 values to 127 / -127"}, {"getbitstream", CmdGetBitStream, AlwaysAvailable, "Convert GraphBuffer's >=1 values to 1 and <1 to 0"}, diff --git a/client/src/cmddata.h b/client/src/cmddata.h index aaeae864a..1e4500d32 100644 --- a/client/src/cmddata.h +++ b/client/src/cmddata.h @@ -89,6 +89,7 @@ int getSamplesEx(uint32_t start, uint32_t end, bool verbose, bool ignore_lf_conf void setClockGrid(uint32_t clk, int offset); int directionalThreshold(const int *in, int *out, size_t len, int8_t up, int8_t down); +int centerThreshold(const int *in, int *out, size_t len, int8_t up, int8_t down); int AskEdgeDetect(const int *in, int *out, int len, int threshold); #define MAX_DEMOD_BUF_LEN (1024*128) From 152f1d4c6eb0cac6a44308aea0cc5ec9473e285b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 11:41:57 +0200 Subject: [PATCH 0238/1034] coverity fix --- client/src/cmdlfhitag.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 6a590b4e2..bd9f74ec7 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -729,7 +729,6 @@ static int CmdLFHitagSCheckChallenges(const char *Cmd) { int fnlen = 0; char filename[FILE_PATH_SIZE] = {0}; CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); - CLIParserFree(ctx); clearCommandBuffer(); @@ -757,6 +756,7 @@ static int CmdLFHitag2CheckChallenges(const char *Cmd) { "Test recorded authentications (replay?)", "lf hitag ta" ); + CLIParserFree(ctx); clearCommandBuffer(); SendCommandMIX(CMD_LF_HITAG_READER, RHT2F_TEST_AUTH_ATTEMPTS, 0, 0, NULL, 0); From 8aeed5e67c9796623b3d87f2ace8c789320aeee1 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 21 Jul 2023 12:05:12 +0200 Subject: [PATCH 0239/1034] doc hardnested compression options --- .../3_Commands-and-Features.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/doc/md/Use_of_Proxmark/3_Commands-and-Features.md b/doc/md/Use_of_Proxmark/3_Commands-and-Features.md index d0bff17b6..d7212261a 100644 --- a/doc/md/Use_of_Proxmark/3_Commands-and-Features.md +++ b/doc/md/Use_of_Proxmark/3_Commands-and-Features.md @@ -8,6 +8,7 @@ - [To get interactive help](#to-get-interactive-help) - [New Features in RDV4](#new-features-in-rdv4) - [Useful commands](#useful-commands) +- [Hardnested tables](#hardnested-tables) @@ -58,3 +59,31 @@ A good starting point is the following [Cheat sheet](/doc/cheatsheet.md) Or this compilation of links to [Proxmark3 walk throughs](https://github.com/RfidResearchGroup/proxmark3/wiki/More-cheat-sheets) + +# Hardnested tables +^[Top](#top) + +Hardnested tables are compressed with LZ4 for a good compromise between space and decompression speed. + +If you are under very space constrained environment, you can recompress the tables with BZip2 and delete the LZ4. It will break the git workdir but if space is a concern, you're not deploying the source and `.git` of > 80Mb anyway, do you? + +```sh +cd client/resources/hardnested_tables +lz4 -dm --rm *lz4 +bzip2 *.bin +``` + +If you want top speed, you can decompress the tables in advance. Keep the `.lz4` files, so you can always just `rm *.bin` to save space again. + +```sh +cd client/resources/hardnested_tables +lz4 -dkm *lz4 +``` + +| Compression | Size in Mb | Speed(*) | +|-------------|:----------:|:-----------:| +| LZ4 | 9 | 1 | +| BZip2 | 2 | 6.5x slower | +| None | 704 | 2.5x faster | + +(*) rough idea of relative speeds, real numbers depend on your actual system From 9324682873e74fe815e7d6584fab8b94b5efb57c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 13:53:32 +0200 Subject: [PATCH 0240/1034] fix lf search --- client/src/cmdlfhitag.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index bd9f74ec7..c3e30f61f 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -1220,7 +1220,7 @@ int CmdLFHitag(const char *Cmd) { } int readHitagUid(void) { - return (CmdLFHitagReader("--26") == PM3_SUCCESS); + return (CmdLFHitagReader("--ht2") == PM3_SUCCESS); } uint8_t hitag1_CRC_check(uint8_t *d, uint32_t nbit) { From 4d9f97954ef0b49e639f2dfb7341c59d2377acf0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 14:35:24 +0200 Subject: [PATCH 0241/1034] allow for clocks larger than 255 to be used from commandline. added the new command data envelope. it creates square signal, similar to askedgedetect.\n adapted find closest clock in order to make clock /8 less prioritized if there are more found clocks. use second best match in those cases. --- client/src/cmddata.c | 48 ++++++++++++++++++++++++++++++++++++++++++-- common/lfdemod.c | 46 ++++++++++++++++++++++++++++++------------ 2 files changed, 79 insertions(+), 15 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 67fbafafd..0ac3c0f4e 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -527,7 +527,7 @@ static int Cmdaskmandemod(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, true); bool amplify = arg_get_lit(ctx, 1); - uint8_t clk = (uint8_t)arg_get_int_def(ctx, 2, 0) & 0xFF; + uint16_t clk = (uint16_t)arg_get_int_def(ctx, 2, 0); bool invert = arg_get_lit(ctx, 3); bool st = arg_get_lit(ctx, 4); uint8_t max_err = (uint8_t)arg_get_int_def(ctx, 5, 100) & 0xFF; @@ -773,7 +773,7 @@ static int Cmdaskrawdemod(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, true); bool amplify = arg_get_lit(ctx, 1); - uint8_t clk = (uint8_t)arg_get_int_def(ctx, 2, 0) & 0xFF; + uint16_t clk = (uint16_t)arg_get_int_def(ctx, 2, 0); bool invert = arg_get_lit(ctx, 3); bool st = arg_get_lit(ctx, 4); uint8_t max_err = (uint8_t)arg_get_int_def(ctx, 5, 100) & 0xFF; @@ -3313,6 +3313,9 @@ cleanup: } int centerThreshold(const int *in, int *out, size_t len, int8_t up, int8_t down) { + if (len < 5) { + return PM3_EINVARG; + } for (size_t i = 0; i < len; ++i) { if ((in[i] <= up) && (in[i] >= down)) { @@ -3362,6 +3365,46 @@ static int CmdCenterThreshold(const char *Cmd) { return PM3_SUCCESS; } +static int envelope_square(const int *in, int *out, size_t len) { + if (len < 10) { + return PM3_EINVARG; + } + + for (size_t i = 0; i < len - 5; i++) { + + if (in[i] == 0 && in[i+1] == 0 && in[i+2] == 0 && in[i+3] == 0 && in[i+4] == 0) { + i += 4; + continue; + } + + out[i] = 255; + } + return PM3_SUCCESS; +} + +static int CmdEnvelope(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "data envelop", + "Create an square envelop of the samples", + "data envelop" + ); + void *argtable[] = { + arg_param_begin, + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + CLIParserFree(ctx); + + envelope_square(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen); + + uint8_t bits[g_GraphTraceLen]; + size_t size = getFromGraphBuf(bits); + // set signal properties low/high/mean/amplitude and is_noice detection + computeSignalProperties(bits, size); + RepaintGraphWindow(); + return PM3_SUCCESS; +} + static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, @@ -3378,6 +3421,7 @@ static command_t CommandTable[] = { {"autocorr", CmdAutoCorr, AlwaysAvailable, "Autocorrelation over window"}, {"dirthreshold", CmdDirectionalThreshold, AlwaysAvailable, "Max rising higher up-thres/ Min falling lower down-thres"}, {"decimate", CmdDecimate, AlwaysAvailable, "Decimate samples"}, + {"envelope", CmdEnvelope, AlwaysAvailable, "Generate square envelope of samples"}, {"undecimate", CmdUndecimate, AlwaysAvailable, "Un-decimate samples"}, {"hide", CmdHide, AlwaysAvailable, "Hide graph window"}, {"hpf", CmdHpf, AlwaysAvailable, "Remove DC offset from trace"}, diff --git a/common/lfdemod.c b/common/lfdemod.c index 73b580a6b..42ac2bcc0 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -436,10 +436,10 @@ static size_t findModStart(const uint8_t *src, size_t size, uint8_t expWaveSize) } static int getClosestClock(int testclk) { - const uint16_t clocks[] = {8, 16, 32, 40, 50, 64, 100, 128, 256, 384}; - const uint8_t limit[] = {1, 2, 4, 4, 5, 8, 8, 8, 8, 8}; + const uint16_t clocks[] = {8, 16, 32, 40, 50, 64, 100, 128, 256, 272, 384}; + const uint8_t limit[] = {1, 2, 4, 4, 5, 8, 8, 8, 8, 24, 24}; - for (uint8_t i = 0; i < 10; i++) { + for (uint8_t i = 0; i < ARRAYLEN(clocks); i++) { if (testclk >= clocks[i] - limit[i] && testclk <= clocks[i] + limit[i]) return clocks[i]; } @@ -613,7 +613,7 @@ bool DetectCleanAskWave(const uint8_t *dest, size_t size, uint8_t high, uint8_t // based on count of low to low int DetectStrongAskClock(uint8_t *dest, size_t size, int high, int low, int *clock) { size_t i = 100; - size_t minClk = 512; + size_t minClk = 768; uint16_t shortestWaveIdx = 0; // get to first full low to prime loop and skip incomplete first pulse @@ -622,11 +622,11 @@ int DetectStrongAskClock(uint8_t *dest, size_t size, int high, int low, int *clo if (i == size) return -1; - if (size < 512) + if (size < 768) return -2; // clock, numoftimes, first idx - uint16_t tmpclk[10][3] = { + uint16_t tmpclk[11][3] = { {8, 0, 0}, {16, 0, 0}, {32, 0, 0}, @@ -636,11 +636,12 @@ int DetectStrongAskClock(uint8_t *dest, size_t size, int high, int low, int *clo {100, 0, 0}, {128, 0, 0}, {256, 0, 0}, + {272, 0, 0}, {384, 0, 0}, }; // loop through all samples (well, we don't want to go out-of-bounds) - while (i < (size - 512)) { + while (i < (size - 768)) { // measure from low to low size_t startwave = i; @@ -655,7 +656,7 @@ int DetectStrongAskClock(uint8_t *dest, size_t size, int high, int low, int *clo int foo = getClosestClock(minClk); if (foo > 0) { - for (uint8_t j = 0; j < 10; j++) { + for (uint8_t j = 0; j < 11; j++) { if (tmpclk[j][0] == foo) { tmpclk[j][1]++; @@ -669,8 +670,17 @@ int DetectStrongAskClock(uint8_t *dest, size_t size, int high, int low, int *clo } // find the clock with most hits and it the first index it was encountered. + int possible_clks = 0; + for (uint8_t j = 0; j < 11; j++) { + if (tmpclk[j][1] > 0) { + possible_clks++; + } + } + + uint16_t second_shortest = 0; + int second = 0; int max = 0; - for (uint8_t j = 0; j < 10; j++) { + for (int j = 10; j > -1; j--) { if (g_debugMode == 2) { prnt("DEBUG, ASK, clocks %u | hits %u | idx %u" , tmpclk[j][0] @@ -678,13 +688,23 @@ int DetectStrongAskClock(uint8_t *dest, size_t size, int high, int low, int *clo , tmpclk[j][2] ); } + if (max < tmpclk[j][1]) { + second = *clock; + second_shortest = shortestWaveIdx; + *clock = tmpclk[j][0]; shortestWaveIdx = tmpclk[j][2]; max = tmpclk[j][1]; } } + // ASK clock 8 is very rare and usually gives us false positives + if (possible_clks > 1 && *clock == 8) { + *clock = second; + shortestWaveIdx = second_shortest; + } + if (*clock == 0) return -1; @@ -712,9 +732,9 @@ int DetectASKClock(uint8_t *dest, size_t size, int *clock, int maxErr) { } size_t i = 1; - uint8_t num_clks = 9; + uint8_t num_clks = 10; // first 255 value pos0 is placeholder for user inputed clock. - uint16_t clk[] = {255, 8, 16, 32, 40, 50, 64, 100, 128, 255}; + uint16_t clk[] = {255, 8, 16, 32, 40, 50, 64, 100, 128, 255, 272}; // sometimes there is a strange end wave - filter out this size -= 60; @@ -755,8 +775,8 @@ int DetectASKClock(uint8_t *dest, size_t size, int *clock, int maxErr) { uint8_t clkCnt, tol; size_t j = 0; - uint16_t bestErr[] = {1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000}; - uint8_t bestStart[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; + uint16_t bestErr[] = {1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000}; + uint8_t bestStart[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; size_t errCnt, arrLoc, loopEnd; if (found_clk) { From f54851be09b637cd65b0b8154364e3dff7643596 Mon Sep 17 00:00:00 2001 From: beckerj Date: Fri, 21 Jul 2023 15:07:07 +0200 Subject: [PATCH 0242/1034] Fix typo in hf_legic_clone.lua variable "length" was used parameter in function, but later called as "len" Signed-off-by: beckerj --- client/luascripts/hf_legic_clone.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/luascripts/hf_legic_clone.lua b/client/luascripts/hf_legic_clone.lua index d41046d65..d9a86dc81 100644 --- a/client/luascripts/hf_legic_clone.lua +++ b/client/luascripts/hf_legic_clone.lua @@ -168,7 +168,7 @@ local function help() print(example) end -- read LEGIC data -local function readlegicdata(offset, length, iv) +local function readlegicdata(offset, len, iv) -- Read data local d0 = ('%04X%04X%02X'):format(offset, len, iv) local c = Command:newNG{cmd = cmds.CMD_HF_LEGIC_READER, data = d0} From bc27847bc8de7defe4efc405d9209c42577c0025 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 16:45:12 +0200 Subject: [PATCH 0243/1034] added a new trace sample file --- CHANGELOG.md | 6 + traces/lf_cotag_220_8331.pm3 | 42523 +++++++++++++++++++++++++++++++++ 2 files changed, 42529 insertions(+) create mode 100644 traces/lf_cotag_220_8331.pm3 diff --git a/CHANGELOG.md b/CHANGELOG.md index 292bd4c12..f39a12af4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added new sample trace file for cotag w fc/272. Thanks s1acky! (@iceman1001) + - Fixed `hf legic eload` - now it doesn't crash client (@doegox) + - Changed `lf hitag *` - rework client side (@doegox) + - Changed data commands to handle ask/nrz clocks above 256 (@iceman1001) + - Added `data envelope` - almost acts like data askedgedetect (@iceman1001) + - Added `data cthreshold` - acts like an inverted dirtythreshold command. Remove center values (@iceman1001) - Added `hf mfp list` - interprets MIFARE Plus commands in traces (@DidierA) - Changed `hf legic sim` - loop and return codes on deviceside updated to DEFINES (@iceman1001) - Changed `hf legic einfo` - now accepts the three different cardsizes as params (@iceman1001) diff --git a/traces/lf_cotag_220_8331.pm3 b/traces/lf_cotag_220_8331.pm3 new file mode 100644 index 000000000..49e96ecb5 --- /dev/null +++ b/traces/lf_cotag_220_8331.pm3 @@ -0,0 +1,42523 @@ +28 +16 +21 +24 +14 +17 +9 +5 +13 +6 +5 +4 +2 +4 +0 +0 +4 +2 +2 +9 +2 +3 +14 +-2 +7 +-3 +-4 +5 +-3 +-1 +-1 +-2 +-2 +-5 +8 +2 +-5 +2 +5 +0 +-1 +-1 +4 +-2 +-2 +0 +2 +4 +12 +-1 +0 +-2 +-4 +-3 +-3 +-1 +1 +8 +-2 +-1 +6 +16 +0 +2 +-1 +4 +-4 +0 +0 +-5 +2 +5 +7 +-4 +-1 +7 +-4 +10 +-2 +-4 +-3 +-3 +15 +1 +0 +4 +0 +-5 +12 +-1 +-4 +-6 +0 +7 +5 +-4 +-6 +-4 +13 +8 +-5 +-4 +-1 +14 +-2 +-3 +0 +-4 +3 +7 +3 +-5 +1 +11 +0 +-4 +-1 +0 +-5 +-4 +0 +3 +11 +10 +7 +-1 +0 +-31 +9 +-28 +-44 +11 +-23 +-42 +29 +-11 +-37 +26 +-13 +-37 +25 +-10 +-33 +21 +-14 +-29 +35 +-1 +-18 +25 +-12 +-15 +29 +-10 +-22 +35 +-6 +-30 +25 +-5 +-26 +24 +-5 +-15 +45 +2 +-26 +32 +-8 +-31 +27 +-11 +-32 +27 +-7 +-18 +29 +-11 +-30 +32 +-6 +-29 +31 +-8 +-26 +36 +-4 +-21 +37 +-4 +-27 +39 +-2 +-16 +31 +-9 +-16 +28 +-10 +-30 +42 +0 +-27 +28 +-6 +-26 +32 +-8 +-29 +26 +-11 +-22 +37 +-5 +-29 +27 +-10 +-22 +41 +3 +-25 +34 +-5 +-30 +26 +-12 +-23 +35 +-5 +-24 +42 +-2 +-24 +24 +-5 +-17 +39 +-2 +-27 +28 +-10 +-30 +26 +-11 +-29 +27 +-9 +-26 +32 +4 +-23 +29 +-7 +-27 +34 +-3 +-18 +42 +7 +-23 +30 +-9 +-29 +27 +-3 +-20 +28 +-12 +-18 +28 +-9 +10 +25 +35 +24 +28 +19 +6 +12 +2 +0 +9 +18 +12 +-2 +3 +0 +3 +-1 +-2 +3 +-1 +-1 +9 +0 +-2 +4 +2 +-4 +0 +-5 +-3 +0 +9 +1 +2 +5 +1 +3 +-4 +-3 +-5 +14 +2 +-3 +-3 +5 +-2 +-3 +2 +1 +2 +-1 +-1 +1 +0 +12 +9 +-1 +12 +-2 +-5 +-1 +15 +0 +-1 +-1 +-2 +-4 +-3 +0 +-3 +-4 +-3 +7 +-3 +-2 +-2 +-2 +-2 +5 +-2 +4 +5 +0 +0 +-4 +4 +1 +-2 +1 +5 +2 +-2 +-1 +2 +6 +1 +-3 +5 +2 +-4 +-2 +-2 +0 +1 +-1 +1 +-1 +13 +6 +-4 +-2 +2 +2 +1 +0 +-1 +-1 +4 +-2 +-3 +-3 +-3 +8 +2 +1 +-3 +1 +21 +-17 +-40 +15 +-23 +-40 +12 +-23 +-33 +18 +-17 +-36 +21 +-15 +-34 +26 +-12 +-26 +29 +-8 +-30 +26 +-12 +-23 +29 +-7 +-29 +31 +-8 +-22 +39 +-2 +-13 +37 +-5 +-27 +34 +-3 +-28 +39 +-4 +-28 +44 +1 +-23 +25 +-13 +-33 +26 +-11 +-27 +27 +-10 +-20 +31 +-8 +-20 +31 +-8 +-28 +33 +0 +-21 +30 +-9 +-23 +28 +-9 +-28 +42 +-1 +-26 +32 +-7 +-30 +27 +-9 +-15 +37 +2 +-26 +27 +-10 +-25 +29 +-4 +-15 +32 +-8 +-20 +28 +-8 +-30 +28 +-8 +-29 +33 +-4 +-22 +32 +-7 +-27 +47 +3 +-23 +38 +-4 +-20 +30 +-8 +-31 +30 +-7 +-16 +30 +-9 +-30 +28 +-9 +-30 +29 +-9 +-28 +32 +-7 +-18 +29 +-9 +-26 +33 +-4 +-25 +40 +-2 +-20 +34 +-7 +-17 +31 +-4 +-26 +30 +-9 +-24 +18 +21 +19 +19 +28 +25 +8 +11 +10 +16 +6 +13 +7 +8 +0 +3 +5 +-1 +2 +0 +-3 +-3 +4 +10 +6 +2 +-3 +-1 +15 +1 +-2 +4 +0 +-1 +-1 +3 +0 +10 +4 +-4 +15 +1 +-4 +1 +-6 +-4 +-7 +1 +-5 +1 +3 +2 +4 +-3 +-2 +0 +0 +6 +0 +2 +8 +5 +0 +-2 +11 +2 +-1 +0 +3 +-4 +-3 +-6 +6 +-2 +2 +9 +-3 +-4 +-7 +4 +-2 +-4 +-6 +3 +1 +3 +3 +9 +-3 +8 +1 +2 +7 +-4 +-3 +-4 +-4 +17 +0 +-3 +-2 +-1 +-4 +-2 +1 +-3 +8 +-2 +-4 +-4 +4 +0 +8 +-1 +-2 +-2 +-1 +0 +9 +7 +4 +-3 +9 +-2 +14 +1 +-5 +-4 +11 +-25 +-49 +6 +-28 +-46 +11 +-19 +-38 +20 +-15 +-35 +27 +-4 +-25 +30 +-10 +-30 +30 +-1 +-16 +28 +-5 +-16 +42 +-1 +-27 +24 +-12 +-25 +21 +-15 +-32 +25 +-12 +-30 +45 +2 +-22 +27 +-10 +-14 +30 +-9 +-31 +34 +-7 +-27 +32 +-4 +-29 +28 +-10 +-27 +28 +-8 +-28 +27 +1 +-23 +32 +-6 +-20 +45 +1 +-21 +33 +-7 +-28 +27 +-11 +-28 +25 +-1 +-18 +31 +-9 +-28 +30 +-7 +-28 +36 +-5 +-25 +31 +-7 +-28 +30 +-8 +-24 +31 +-3 +-25 +27 +-6 +-25 +29 +-8 +-23 +31 +-1 +-25 +45 +3 +-23 +29 +-9 +-25 +30 +-8 +-25 +29 +-7 +-26 +37 +-3 +-29 +30 +-4 +-26 +49 +4 +-25 +34 +-7 +-27 +27 +-11 +-30 +40 +-3 +-25 +27 +-8 +-27 +37 +-1 +-22 +26 +-11 +-30 +30 +-5 +-17 +34 +-5 +-9 +33 +2 +-25 +24 +-10 +-31 +27 +-9 +-29 +32 +-7 +-25 +37 +-5 +-23 +34 +-5 +-29 +31 +-5 +-27 +40 +4 +-17 +28 +-7 +-25 +25 +0 +-26 +27 +-11 +-26 +32 +-2 +-22 +31 +-5 +-24 +34 +-6 +-30 +27 +2 +-24 +43 +1 +-19 +27 +-11 +-31 +26 +-5 +-17 +28 +-12 +-31 +25 +-11 +27 +-10 +-26 +35 +-7 +-30 +30 +-9 +-16 +44 +4 +-25 +30 +-7 +-32 +28 +-9 +-23 +39 +-3 +-29 +34 +-7 +-30 +28 +-9 +-19 +27 +-7 +-29 +24 +-12 +-30 +28 +-8 +-29 +31 +-6 +-25 +45 +7 +-10 +32 +-7 +-27 +38 +-3 +-29 +28 +-10 +-29 +25 +-9 +-24 +29 +-8 +-29 +32 +-8 +-27 +33 +-6 +-22 +33 +-7 +-27 +31 +-7 +-26 +29 +-9 +32 +-5 +-28 +35 +-2 +-24 +45 +1 +-26 +33 +44 +17 +14 +12 +11 +19 +12 +6 +22 +6 +2 +2 +7 +-2 +3 +0 +10 +-1 +0 +-2 +0 +3 +1 +0 +1 +-3 +-2 +0 +2 +10 +1 +-4 +-4 +13 +3 +3 +1 +2 +-2 +-1 +0 +-1 +2 +-5 +-1 +0 +1 +3 +0 +-6 +1 +6 +-3 +-1 +1 +0 +8 +4 +-2 +3 +3 +0 +-1 +-1 +4 +-1 +1 +7 +3 +6 +4 +-5 +-6 +-4 +-1 +-6 +13 +12 +1 +-1 +11 +15 +10 +-4 +-8 +-6 +1 +-5 +-3 +-3 +-3 +2 +1 +-5 +4 +9 +-3 +-4 +3 +2 +3 +3 +10 +0 +10 +-3 +-1 +-6 +-3 +-1 +-3 +10 +-3 +-1 +-4 +3 +-3 +-2 +0 +-6 +-1 +-4 +-2 +3 +-3 +-3 +4 +7 +1 +-4 +6 +0 +-6 +-1 +-1 +4 +2 +-4 +-5 +3 +-4 +-2 +16 +2 +6 +16 +4 +-5 +-4 +2 +-6 +-5 +8 +-2 +1 +5 +18 +0 +-6 +-7 +-5 +8 +-3 +-2 +13 +2 +-2 +-1 +-5 +-3 +-1 +-2 +8 +2 +-5 +0 +1 +-5 +1 +8 +-2 +-5 +-2 +0 +5 +-1 +-3 +3 +-3 +-6 +-5 +17 +2 +0 +-3 +-3 +1 +12 +10 +3 +4 +0 +-4 +1 +-5 +-7 +5 +0 +1 +-2 +3 +1 +-2 +0 +-3 +-3 +3 +-2 +-1 +13 +3 +3 +8 +-2 +-5 +-4 +8 +-4 +11 +10 +-2 +-9 +-5 +0 +0 +-5 +0 +0 +1 +-6 +-4 +-2 +2 +6 +2 +0 +3 +10 +-2 +-5 +-4 +-2 +-3 +5 +9 +-2 +-33 +-50 +19 +-20 +-40 +16 +-17 +-37 +29 +-11 +-33 +20 +-16 +-34 +34 +-7 +-29 +38 +-4 +-29 +27 +-11 +-20 +30 +-9 +-29 +32 +-8 +-29 +28 +-7 +-20 +31 +-6 +-19 +30 +-8 +-25 +38 +-4 +-22 +30 +-8 +-29 +29 +-7 +-24 +29 +-3 +-18 +38 +-4 +-22 +29 +-9 +-30 +43 +-1 +-27 +37 +0 +-27 +28 +-11 +-26 +36 +-4 +-28 +32 +-9 +-30 +28 +-9 +-21 +28 +-11 +-27 +35 +-5 +-28 +41 +5 +-23 +43 +0 +-25 +28 +-11 +-14 +29 +-10 +-31 +28 +-6 +-29 +30 +-7 +-23 +25 +-11 +-19 +38 +3 +-12 +31 +-6 +-27 +24 +-5 +-21 +29 +-8 +-26 +40 +-2 +-29 +31 +-7 +-20 +39 +-2 +-15 +26 +-12 +-26 +38 +-1 +-25 +23 +-15 +-28 +26 +-6 +-28 +30 +-10 +-31 +30 +-6 +-30 +29 +-3 +-27 +48 +4 +-25 +25 +-4 +-28 +28 +-10 +-29 +29 +-10 +-20 +32 +-4 +-24 +32 +-4 +-25 +29 +-9 +-30 +32 +-7 +-27 +28 +-8 +-24 +40 +3 +-17 +39 +4 +-18 +28 +-10 +-26 +42 +-1 +-26 +27 +-11 +-27 +32 +-3 +-25 +35 +-4 +-27 +26 +-2 +-28 +30 +-6 +-30 +29 +-9 +-31 +30 +-10 +-12 +32 +-5 +-13 +30 +-10 +-19 +32 +-8 +-30 +33 +-3 +-26 +32 +-7 +-22 +35 +-2 +-27 +27 +0 +-27 +35 +-4 +-29 +29 +-9 +-32 +32 +-7 +-28 +32 +-5 +-26 +25 +-7 +-23 +31 +-7 +-27 +28 +-10 +-22 +35 +-2 +-13 +49 +3 +-12 +29 +-10 +-28 +28 +-11 +-32 +43 +0 +-26 +34 +-7 +-30 +30 +-9 +-32 +30 +-9 +-18 +31 +-8 +-25 +29 +-6 +-28 +28 +-9 +-16 +44 +0 +-25 +28 +-6 +-29 +26 +-6 +-25 +26 +46 +22 +15 +13 +15 +8 +10 +10 +10 +16 +25 +4 +10 +6 +11 +1 +3 +-5 +-1 +-2 +-2 +-2 +5 +5 +-6 +-1 +-3 +15 +0 +2 +5 +1 +4 +-3 +-2 +11 +-2 +-5 +1 +7 +-4 +5 +10 +1 +-4 +-4 +-3 +-6 +-4 +-3 +0 +-1 +-4 +2 +-1 +-2 +-3 +4 +-2 +6 +1 +0 +5 +12 +2 +-4 +10 +-3 +-1 +-4 +-4 +6 +1 +-3 +-1 +0 +9 +1 +-2 +4 +-1 +-5 +1 +-3 +-3 +4 +2 +2 +2 +-3 +11 +15 +7 +-6 +-6 +-3 +-4 +-4 +0 +-1 +10 +-2 +-3 +-3 +1 +-4 +-3 +4 +-3 +-1 +16 +0 +-2 +10 +1 +-2 +-2 +-6 +11 +11 +-1 +-4 +0 +-8 +1 +2 +-4 +-3 +-35 +-52 +17 +-20 +-35 +30 +-11 +-38 +29 +-11 +-36 +21 +-9 +-34 +25 +-12 +-31 +25 +-9 +-31 +24 +-12 +-24 +26 +-4 +-27 +30 +-9 +-15 +36 +0 +-18 +28 +-9 +-29 +30 +-8 +-20 +32 +-2 +-25 +43 +0 +-28 +33 +-7 +-17 +36 +-4 +-29 +26 +-13 +-27 +25 +-3 +-28 +41 +-3 +-20 +33 +-7 +-24 +35 +-7 +-30 +36 +-4 +-30 +35 +-6 +-20 +39 +-3 +-27 +27 +-12 +-29 +25 +-12 +-21 +30 +-5 +-17 +43 +0 +-25 +32 +-9 +-29 +28 +-11 +-32 +27 +-8 +-28 +26 +-10 +-25 +29 +3 +-23 +32 +0 +-17 +30 +-9 +-29 +30 +-9 +-23 +29 +-8 +-25 +31 +-7 +-28 +29 +-9 +-29 +37 +1 +-24 +40 +-1 +-26 +28 +-9 +-30 +35 +-4 +-26 +29 +-8 +-27 +33 +-7 +-28 +35 +-3 +-27 +31 +2 +-20 +27 +30 +20 +26 +14 +13 +13 +9 +23 +19 +4 +3 +9 +12 +0 +0 +0 +0 +20 +4 +-3 +10 +2 +-2 +-1 +-2 +0 +-1 +4 +-2 +-2 +8 +5 +0 +4 +0 +-2 +5 +3 +6 +-2 +2 +-3 +-3 +-4 +-3 +6 +-1 +1 +-2 +-2 +8 +11 +-1 +-4 +-5 +-2 +1 +-4 +-6 +-4 +-1 +4 +12 +6 +1 +-2 +3 +-2 +1 +1 +2 +-2 +6 +-3 +-5 +3 +0 +5 +6 +15 +1 +-5 +-6 +-4 +-3 +3 +6 +-1 +-5 +-4 +-1 +3 +2 +-4 +7 +-2 +4 +-1 +-5 +-4 +-2 +-2 +18 +2 +5 +-4 +-2 +8 +1 +-7 +-2 +7 +-4 +5 +-3 +3 +-5 +9 +-3 +0 +-1 +8 +-2 +3 +-3 +-7 +2 +-4 +-36 +6 +-27 +-46 +13 +-23 +-34 +17 +-17 +-37 +24 +-12 +-31 +24 +-8 +-29 +41 +-1 +-28 +36 +-5 +-29 +27 +-10 +-20 +40 +0 +-28 +32 +-7 +-30 +29 +-9 +-27 +39 +-2 +-22 +29 +-10 +-24 +30 +-10 +-29 +31 +-7 +-29 +26 +-9 +-27 +40 +-2 +-27 +35 +-5 +-26 +25 +-4 +-28 +29 +-10 +-24 +32 +-5 +-29 +31 +-8 +-25 +36 +-5 +-23 +33 +-5 +-27 +31 +-7 +-26 +34 +-6 +-17 +30 +-5 +-27 +39 +-1 +-16 +28 +-9 +-19 +29 +-10 +-29 +31 +-8 +-26 +28 +-7 +-24 +29 +-7 +-28 +48 +3 +-21 +27 +-10 +-28 +40 +-2 +-15 +28 +-9 +-30 +29 +-6 +-19 +26 +-7 +-29 +27 +-6 +-28 +30 +-8 +-20 +32 +-8 +-26 +31 +-1 +-20 +32 +-7 +-27 +32 +-7 +-29 +30 +-9 +-27 +37 +-3 +-23 +31 +-8 +19 +27 +21 +15 +19 +21 +18 +13 +19 +5 +5 +3 +4 +2 +9 +-1 +0 +2 +0 +16 +2 +13 +16 +14 +1 +-6 +2 +-2 +7 +-5 +6 +7 +0 +4 +-5 +-4 +0 +-7 +12 +0 +-4 +1 +-5 +-2 +-4 +-3 +-3 +-2 +-1 +-4 +9 +-3 +6 +-2 +0 +-2 +-2 +-2 +4 +-1 +-2 +-1 +-5 +5 +7 +14 +2 +-4 +-1 +11 +1 +4 +-2 +10 +1 +9 +0 +-5 +0 +-7 +4 +2 +-1 +-2 +-1 +-5 +-5 +12 +2 +7 +-2 +4 +-4 +-9 +3 +-3 +6 +1 +-4 +-6 +-4 +0 +-5 +3 +2 +8 +-2 +2 +1 +0 +0 +7 +-2 +-4 +-1 +4 +2 +16 +2 +-2 +-4 +0 +1 +-3 +-3 +-1 +-5 +9 +3 +0 +4 +2 +-6 +-2 +1 +-2 +1 +-5 +0 +-2 +-1 +3 +12 +10 +3 +0 +-5 +-5 +-3 +1 +5 +-4 +12 +5 +-4 +-1 +-3 +10 +-3 +1 +-6 +-7 +-3 +-4 +18 +1 +0 +-3 +-1 +-4 +-3 +-2 +-3 +12 +5 +0 +11 +9 +-4 +1 +-1 +-4 +-4 +-5 +-5 +2 +-2 +2 +0 +0 +-2 +-5 +4 +1 +14 +3 +-1 +-2 +-4 +3 +10 +2 +-2 +8 +-1 +-4 +9 +-1 +10 +-1 +-6 +-5 +-2 +11 +10 +7 +-6 +-5 +0 +-8 +-6 +0 +3 +-1 +-3 +-4 +4 +11 +-2 +-3 +-4 +16 +1 +-1 +-4 +-5 +-5 +4 +1 +-3 +3 +-2 +1 +13 +6 +-4 +-2 +13 +-2 +-4 +-4 +2 +-3 +-1 +2 +-6 +16 +-23 +-42 +10 +-25 +-43 +12 +-20 +-35 +23 +-14 +-33 +22 +-6 +-22 +22 +-11 +-32 +40 +-3 +-25 +32 +-8 +-29 +26 +-9 +-30 +37 +-3 +-28 +27 +-11 +-30 +32 +-6 +-26 +28 +-9 +-28 +33 +-6 +-28 +30 +-2 +-26 +39 +-2 +-27 +32 +-7 +-25 +40 +-2 +-24 +37 +-5 +-12 +29 +-9 +-22 +26 +-12 +-24 +25 +-12 +-28 +27 +-10 +-29 +35 +-5 +-25 +32 +-8 +-10 +34 +-4 +-27 +27 +-9 +-28 +26 +-9 +-27 +36 +-6 +-26 +36 +-2 +-23 +43 +0 +-26 +29 +-6 +-28 +29 +-1 +-20 +27 +-10 +-26 +33 +-7 +-27 +28 +-8 +-29 +28 +-8 +-24 +32 +-3 +-25 +32 +-5 +-26 +31 +-6 +-24 +30 +-8 +-8 +34 +-5 +-28 +30 +0 +-24 +41 +1 +-27 +26 +-10 +-25 +27 +-9 +-29 +42 +-1 +-18 +36 +-5 +-29 +28 +-11 +-23 +30 +-9 +-24 +44 +0 +-26 +33 +-6 +-27 +32 +-9 +-23 +31 +-8 +-26 +45 +1 +-24 +27 +-9 +-29 +39 +1 +-23 +23 +-12 +-32 +32 +-5 +-26 +26 +-10 +-30 +38 +-3 +-27 +28 +-7 +-16 +36 +-5 +-27 +31 +4 +-24 +29 +-9 +-16 +31 +-9 +-30 +29 +-8 +-16 +47 +4 +-24 +28 +-5 +-22 +28 +-8 +-28 +34 +-3 +-23 +25 +-3 +-29 +27 +-10 +-25 +34 +-1 +-22 +30 +-10 +-25 +34 +-6 +-29 +26 +-4 +-25 +33 +-5 +-28 +41 +-1 +-23 +32 +-7 +-25 +39 +-4 +-28 +32 +-8 +-13 +30 +-9 +-31 +26 +-11 +-24 +26 +-10 +-27 +44 +6 +-24 +30 +-9 +-26 +41 +-1 +-27 +30 +-9 +-31 +27 +-10 +-22 +28 +-10 +-29 +32 +-8 +-28 +29 +1 +-23 +30 +-8 +-11 +32 +-8 +-21 +28 +-10 +-26 +24 +23 +27 +18 +25 +20 +12 +12 +8 +5 +8 +16 +12 +5 +4 +2 +15 +12 +0 +-4 +-2 +-2 +0 +3 +3 +-3 +10 +-2 +-2 +12 +10 +-4 +-1 +-2 +16 +0 +4 +-5 +-2 +-2 +-4 +8 +-3 +-1 +4 +9 +16 +-2 +-6 +9 +-4 +-7 +1 +-4 +4 +9 +4 +-6 +-7 +-5 +-3 +2 +-6 +1 +4 +-2 +14 +0 +-4 +1 +-6 +-5 +6 +-4 +0 +-1 +6 +10 +1 +-3 +-3 +-5 +6 +0 +6 +5 +1 +-2 +-1 +3 +19 +-1 +3 +-8 +-2 +-9 +-7 +-3 +-3 +6 +-1 +-1 +5 +5 +0 +-1 +-6 +-4 +1 +-5 +6 +5 +-2 +7 +4 +-3 +-3 +-4 +11 +1 +-2 +11 +4 +0 +-3 +-7 +1 +-2 +11 +-26 +-40 +14 +-23 +-45 +15 +-22 +-39 +15 +-20 +-38 +22 +-12 +-29 +26 +-5 +-28 +28 +-5 +-17 +38 +-3 +-30 +28 +-7 +-28 +27 +-8 +-30 +29 +-5 +-27 +28 +-9 +-29 +46 +2 +-26 +30 +-1 +-27 +26 +-12 +-27 +29 +-6 +-14 +43 +2 +-19 +31 +-8 +-19 +32 +-9 +-31 +29 +-3 +-29 +28 +-11 +-27 +33 +-7 +-30 +32 +-8 +-29 +29 +-9 +-27 +38 +-4 +-27 +31 +-6 +-26 +49 +3 +-24 +28 +-9 +-30 +36 +-6 +-27 +28 +-10 +-27 +33 +-7 +-26 +28 +-7 +-29 +41 +8 +-22 +32 +-7 +-29 +27 +-10 +-23 +43 +0 +-25 +27 +-8 +-19 +28 +-11 +-30 +27 +-10 +-11 +32 +-7 +-28 +27 +-6 +-21 +30 +-8 +-27 +33 +-6 +-28 +45 +4 +-25 +28 +-10 +-21 +28 +-10 +-26 +28 +-8 +-23 +45 +2 +-21 +16 +20 +26 +19 +14 +16 +10 +15 +8 +6 +16 +5 +21 +5 +6 +1 +-1 +6 +18 +1 +2 +-4 +9 +6 +-6 +-1 +-2 +6 +1 +-5 +-2 +-2 +2 +-1 +-2 +-1 +-2 +-1 +4 +1 +0 +8 +11 +-3 +-4 +9 +-3 +-4 +3 +-4 +2 +-4 +9 +14 +4 +-6 +-3 +-7 +-1 +10 +0 +-4 +-2 +7 +-3 +-5 +-4 +1 +12 +0 +4 +2 +-3 +10 +-2 +2 +-2 +5 +-3 +1 +-5 +-5 +-2 +1 +-2 +11 +8 +0 +-5 +-6 +-4 +0 +4 +-4 +-1 +-3 +8 +15 +6 +-5 +1 +3 +1 +-7 +-6 +-4 +16 +2 +2 +-5 +-3 +-2 +-1 +1 +-1 +2 +1 +2 +-5 +-5 +3 +-1 +-2 +-4 +1 +4 +-4 +-1 +22 +-18 +-44 +10 +-15 +-41 +14 +-22 +-42 +31 +-9 +-32 +24 +-16 +-32 +23 +-11 +-33 +43 +-1 +-28 +28 +-9 +-17 +27 +-11 +-32 +26 +-11 +-18 +28 +-9 +-29 +35 +-4 +-30 +35 +-4 +-23 +32 +-8 +-26 +43 +-1 +-15 +29 +-7 +-31 +25 +-13 +-30 +25 +-11 +29 +-7 +-30 +29 +-5 +-29 +37 +-4 +-27 +45 +1 +-21 +25 +-9 +-29 +28 +-9 +-30 +27 +-9 +-30 +28 +-9 +-20 +33 +-5 +-22 +42 +-1 +-20 +29 +-8 +-25 +37 +-4 +-29 +35 +-6 +-29 +32 +-7 +-18 +37 +-5 +-30 +31 +-5 +-21 +24 +-11 +-29 +26 +-10 +-29 +32 +3 +-16 +37 +-1 +-21 +25 +-12 +-29 +30 +-9 +-29 +31 +-8 +-26 +28 +-10 +-27 +28 +-8 +-10 +34 +-6 +-24 +34 +-4 +-27 +32 +-8 +-27 +31 +-7 +-25 +37 +-4 +-25 +26 +28 +36 +27 +13 +14 +10 +8 +7 +12 +6 +23 +8 +4 +4 +-2 +-1 +4 +1 +0 +-1 +12 +0 +1 +-2 +0 +2 +1 +8 +17 +0 +0 +-2 +-1 +6 +1 +4 +3 +-2 +-5 +3 +8 +8 +-4 +8 +-3 +2 +-1 +16 +-1 +-3 +0 +-8 +1 +-4 +-3 +15 +0 +-7 +-3 +-1 +-1 +-3 +-4 +2 +-3 +1 +1 +5 +4 +-4 +10 +8 +7 +4 +6 +0 +-3 +2 +-7 +0 +-5 +-1 +-6 +15 +0 +-4 +8 +1 +-7 +-6 +-4 +-4 +5 +-5 +0 +-2 +7 +-1 +-2 +-4 +-4 +-3 +3 +9 +2 +-3 +4 +-3 +10 +4 +-3 +-4 +-2 +3 +0 +3 +-4 +0 +4 +5 +-2 +1 +-4 +1 +2 +5 +-1 +-5 +-36 +-43 +23 +-16 +-39 +14 +-13 +-38 +18 +-19 +-35 +28 +-11 +-22 +26 +-3 +-28 +24 +-13 +-32 +28 +-9 +-19 +42 +-1 +-26 +31 +-8 +-22 +38 +-4 +-30 +31 +-9 +-29 +28 +-10 +-25 +43 +0 +-27 +25 +-12 +-29 +24 +-13 +-30 +31 +-7 +-28 +42 +-1 +-25 +32 +-7 +-25 +26 +-11 +-29 +36 +-2 +-23 +31 +2 +-24 +27 +4 +-24 +34 +-5 +-16 +42 +1 +-26 +26 +-12 +-31 +41 +-1 +-28 +26 +-9 +-31 +31 +-8 +-26 +44 +-1 +-27 +33 +-2 +-24 +31 +-2 +-26 +29 +-7 +-22 +25 +-10 +-24 +25 +-12 +-30 +30 +-6 +-24 +28 +-9 +-20 +29 +-6 +-23 +30 +-8 +-28 +33 +-6 +-18 +29 +-9 +-22 +30 +-8 +-27 +34 +-5 +-26 +35 +-6 +-21 +29 +-8 +-29 +32 +5 +-21 +45 +2 +-27 +31 +-9 +-30 +30 +32 +23 +24 +21 +12 +8 +9 +8 +2 +14 +12 +22 +7 +-2 +1 +5 +9 +2 +14 +3 +-2 +7 +-2 +-3 +0 +11 +0 +5 +-3 +-7 +-1 +4 +8 +-4 +-4 +-2 +-1 +3 +-4 +-4 +-2 +9 +0 +-4 +8 +-2 +-1 +-5 +-3 +-2 +0 +4 +10 +-2 +-2 +13 +1 +3 +-4 +1 +12 +2 +7 +-6 +5 +-1 +-3 +-2 +15 +-1 +-2 +2 +0 +0 +-2 +-4 +4 +-5 +-3 +-4 +1 +16 +0 +0 +-3 +3 +9 +-6 +-2 +1 +-2 +3 +1 +13 +2 +-6 +1 +-4 +10 +-5 +-6 +-3 +3 +-5 +-8 +-4 +8 +0 +-7 +-6 +3 +17 +0 +-5 +-2 +13 +-2 +-1 +0 +13 +-1 +-5 +5 +-3 +8 +4 +1 +-4 +-37 +-46 +7 +-27 +-33 +16 +-21 +-40 +23 +-12 +-31 +23 +-14 +-35 +25 +-11 +-31 +30 +-5 +-27 +27 +-10 +-22 +31 +-8 +-28 +40 +-2 +-19 +29 +-10 +-30 +32 +-8 +-26 +39 +-2 +-20 +27 +-11 +-29 +30 +-5 +-29 +36 +-4 +-26 +28 +-7 +-29 +31 +-7 +-28 +38 +-2 +-26 +43 +-1 +-25 +37 +-1 +-27 +26 +-13 +-31 +32 +-4 +-12 +33 +-3 +-22 +25 +-10 +-20 +41 +2 +-22 +24 +-13 +-28 +29 +-7 +-29 +28 +-8 +-15 +29 +-10 +-28 +34 +-6 +-21 +27 +-11 +-26 +28 +-9 +-26 +26 +-10 +-27 +32 +-5 +-27 +30 +-7 +-27 +44 +2 +-24 +29 +-4 +-17 +52 +6 +-18 +26 +-13 +-31 +34 +-7 +-27 +32 +-9 +-19 +33 +-7 +-28 +27 +-6 +-25 +46 +2 +-24 +27 +-4 +-28 +26 +-10 +-28 +30 +-10 +-31 +23 +26 +23 +19 +20 +15 +12 +14 +10 +7 +22 +25 +8 +14 +3 +4 +3 +2 +4 +-1 +-3 +2 +1 +-4 +-2 +-2 +7 +-2 +0 +-1 +15 +2 +-3 +0 +14 +-2 +2 +-6 +-3 +-3 +-3 +6 +-3 +5 +1 +2 +4 +0 +-2 +-4 +-2 +8 +-2 +-5 +-1 +2 +-1 +0 +4 +0 +3 +3 +-1 +-4 +-7 +-4 +13 +6 +0 +-2 +3 +-2 +-3 +0 +2 +10 +-3 +-2 +1 +1 +-4 +3 +-3 +4 +4 +3 +13 +1 +14 +-1 +0 +-4 +-9 +-2 +-2 +-2 +-1 +-4 +13 +15 +-1 +-5 +-2 +3 +-3 +-4 +-2 +0 +2 +1 +1 +-4 +-4 +0 +-4 +12 +2 +-2 +3 +12 +0 +-4 +-1 +7 +-5 +5 +0 +1 +0 +-2 +9 +18 +-1 +-2 +-6 +-2 +-7 +-7 +-1 +6 +7 +-3 +1 +1 +-7 +-6 +0 +0 +-1 +-2 +5 +10 +-3 +16 +0 +-1 +-5 +-8 +-3 +0 +0 +2 +-1 +2 +-4 +-3 +-4 +2 +-1 +3 +7 +3 +-1 +16 +2 +-3 +5 +-2 +-5 +2 +7 +-3 +-5 +0 +-5 +-2 +1 +-3 +-2 +-2 +10 +6 +2 +-1 +0 +-2 +-1 +-2 +-1 +-1 +-2 +2 +7 +11 +3 +5 +0 +-5 +0 +0 +-4 +-4 +-2 +-6 +4 +3 +-2 +-2 +8 +3 +-3 +2 +4 +1 +-2 +-4 +4 +-2 +0 +-2 +-2 +-1 +7 +0 +12 +-1 +-1 +-3 +1 +7 +5 +9 +4 +0 +0 +-2 +-3 +-3 +-6 +10 +5 +-1 +7 +1 +-2 +-5 +-3 +-36 +-51 +23 +-17 +-38 +20 +-12 +-34 +15 +-21 +-37 +22 +-14 +-31 +39 +-4 +-16 +36 +-6 +-29 +26 +-12 +-32 +26 +-10 +-27 +29 +-10 +-25 +46 +3 +-26 +28 +-12 +-27 +26 +-11 +26 +-11 +-32 +29 +-9 +-29 +32 +-7 +-27 +28 +-7 +-23 +27 +-5 +-27 +38 +2 +-23 +39 +-2 +-27 +28 +-9 +-30 +32 +-5 +-28 +30 +-2 +-26 +29 +-7 +-29 +32 +-7 +-28 +34 +-5 +-28 +32 +-5 +-21 +36 +-1 +-27 +29 +-8 +-26 +28 +-8 +-21 +35 +-6 +-28 +30 +-7 +-28 +26 +-11 +-26 +28 +-5 +-25 +40 +0 +-19 +30 +-8 +-27 +32 +-7 +-26 +35 +-4 +-20 +30 +3 +-22 +32 +-6 +-28 +37 +-3 +-24 +33 +-6 +-18 +29 +-7 +-28 +31 +-7 +-27 +29 +-10 +-25 +31 +-1 +-12 +31 +-8 +-29 +31 +-8 +-30 +30 +-8 +-29 +29 +-8 +-22 +49 +4 +-22 +26 +-11 +-24 +33 +-7 +-22 +37 +-4 +-29 +38 +-4 +-27 +36 +-5 +-26 +29 +-10 +-28 +34 +-6 +-29 +31 +-9 +-27 +33 +-4 +-29 +36 +-6 +-16 +28 +-9 +-28 +26 +1 +-23 +26 +-10 +-24 +31 +-9 +-29 +31 +-7 +-27 +38 +2 +-16 +33 +-6 +-26 +29 +-9 +-29 +44 +4 +-26 +31 +-4 +-20 +29 +-7 +-26 +38 +-4 +-28 +24 +-12 +-25 +33 +-3 +-26 +29 +-5 +-20 +33 +-8 +-20 +34 +-5 +-29 +26 +-9 +-30 +26 +-11 +-26 +28 +-10 +-24 +39 +-3 +-23 +30 +-9 +-29 +32 +0 +-9 +31 +-6 +-29 +28 +-10 +-27 +30 +-2 +-24 +31 +-6 +-16 +46 +1 +-27 +28 +-10 +-24 +25 +-12 +-30 +38 +-1 +-26 +34 +-2 +-25 +44 +4 +-23 +24 +-12 +-29 +38 +-1 +-25 +31 +35 +16 +13 +14 +10 +12 +13 +6 +4 +7 +13 +7 +3 +1 +1 +5 +11 +3 +-2 +16 +15 +-1 +-4 +-1 +-3 +-2 +-2 +0 +2 +-3 +5 +1 +-1 +2 +-4 +-1 +-2 +3 +10 +3 +-4 +0 +6 +1 +-1 +-3 +6 +11 +-2 +-5 +1 +1 +-3 +-1 +-1 +2 +14 +1 +-6 +0 +-1 +-4 +-4 +-1 +4 +1 +-4 +-2 +4 +1 +2 +1 +-1 +-1 +5 +12 +-3 +4 +9 +14 +-2 +-4 +9 +10 +-5 +-7 +-7 +-5 +-5 +5 +-5 +1 +4 +5 +1 +-2 +-3 +3 +-5 +-2 +-5 +2 +3 +11 +0 +-4 +-2 +-7 +-3 +1 +-2 +6 +4 +6 +4 +1 +14 +-3 +4 +-5 +-4 +8 +12 +7 +-7 +-7 +-6 +-6 +-39 +-53 +11 +-23 +-42 +31 +-10 +-22 +19 +-16 +-35 +23 +-12 +-34 +29 +-10 +-26 +26 +-12 +-25 +27 +-7 +-30 +35 +-6 +-16 +44 +0 +-25 +24 +-14 +-33 +25 +-7 +-27 +35 +-6 +-26 +32 +-6 +28 +-10 +-31 +44 +0 +-26 +22 +-14 +-33 +34 +-7 +-23 +26 +-7 +-22 +25 +-1 +-25 +29 +-8 +-16 +41 +-2 +-16 +34 +-7 +-31 +24 +-14 +-21 +30 +-5 +-20 +41 +-3 +-27 +29 +-9 +-29 +46 +1 +-25 +26 +-11 +-27 +44 +0 +-28 +28 +-7 +-32 +28 +-3 +-29 +34 +-5 +-16 +43 +3 +-24 +22 +-7 +-26 +27 +-10 +-33 +36 +0 +-16 +30 +-10 +-32 +25 +-11 +-25 +27 +-10 +-29 +35 +-4 +-28 +28 +-10 +-25 +28 +-9 +-29 +29 +-9 +-28 +46 +3 +-22 +34 +-6 +-23 +44 +0 +-18 +26 +-13 +-16 +28 +-8 +6 +18 +17 +19 +11 +18 +11 +8 +7 +10 +6 +21 +9 +6 +2 +3 +2 +9 +18 +4 +3 +-1 +0 +4 +2 +4 +10 +11 +12 +-3 +-7 +-6 +-8 +0 +-2 +6 +-5 +-6 +14 +15 +7 +-5 +-3 +-6 +-4 +2 +10 +-3 +0 +-5 +-4 +-4 +-5 +-2 +-2 +-3 +2 +1 +9 +0 +-2 +-4 +-3 +9 +-1 +-1 +-2 +7 +-3 +-4 +3 +1 +-3 +7 +-2 +-4 +2 +-1 +-1 +13 +9 +-3 +5 +0 +-3 +-3 +-3 +2 +-3 +3 +9 +3 +13 +0 +-3 +7 +-5 +-5 +12 +-3 +-4 +7 +-5 +-6 +-5 +-3 +-5 +10 +-3 +14 +-1 +-6 +1 +0 +-6 +-5 +2 +-3 +-1 +-5 +4 +5 +0 +2 +0 +0 +-2 +-3 +17 +-21 +-47 +11 +-25 +-44 +13 +-21 +-41 +20 +-16 +-34 +26 +-10 +-32 +25 +-13 +-27 +29 +-9 +-26 +35 +-4 +-27 +28 +-8 +-15 +37 +-1 +-9 +30 +-9 +-29 +33 +1 +-25 +32 +-8 +-24 +26 +-10 +-28 +28 +-4 +-29 +31 +-9 +-28 +28 +-4 +-24 +31 +-4 +-18 +27 +-10 +-27 +36 +-5 +-24 +26 +-6 +-24 +32 +-6 +31 +-7 +-29 +27 +-9 +-30 +32 +-5 +-26 +29 +-8 +-25 +31 +-7 +-26 +29 +-4 +-21 +33 +-6 +-25 +31 +0 +-24 +27 +-5 +-28 +30 +-1 +-12 +34 +-7 +-28 +31 +-7 +-29 +31 +-1 +-21 +29 +-9 +-24 +32 +-7 +-28 +30 +-6 +-26 +28 +-6 +-26 +34 +-2 +-25 +45 +7 +-20 +33 +-6 +-29 +30 +-8 +-17 +31 +-6 +-31 +29 +-11 +-26 +37 +-4 +-29 +30 +-1 +-25 +26 +-8 +-29 +26 +48 +23 +21 +16 +14 +12 +9 +7 +5 +7 +5 +6 +2 +6 +4 +3 +5 +4 +6 +4 +3 +0 +-1 +1 +4 +5 +2 +1 +3 +-1 +-2 +5 +7 +9 +7 +9 +11 +8 +11 +3 +7 +-2 +-3 +-8 +-7 +2 +-4 +1 +-5 +-7 +-1 +-3 +-1 +-5 +-5 +1 +-4 +13 +-1 +-3 +11 +9 +12 +-1 +3 +3 +7 +3 +-3 +0 +-2 +-7 +-7 +1 +-7 +-2 +-2 +-4 +-4 +4 +4 +-1 +-6 +8 +-3 +10 +-1 +-4 +-4 +1 +-4 +-1 +3 +-3 +7 +7 +0 +-3 +0 +4 +-6 +-6 +5 +12 +0 +-3 +-3 +0 +-3 +-2 +2 +5 +1 +6 +-3 +-3 +-6 +-5 +-3 +-1 +-2 +-1 +3 +5 +1 +5 +11 +9 +-29 +-49 +8 +-26 +-42 +28 +-12 +-27 +21 +-16 +-33 +37 +-6 +-32 +31 +-9 +-31 +20 +-14 +-24 +35 +-6 +-21 +28 +-12 +-30 +36 +-2 +-27 +26 +-11 +-29 +27 +-12 +-15 +30 +-10 +-31 +25 +-11 +-31 +35 +-5 +-22 +28 +-9 +-28 +31 +-9 +-23 +31 +-6 +-27 +34 +-4 +-22 +46 +4 +-24 +30 +-8 +-31 +27 +-9 +-30 +49 +3 +-23 +28 +-7 +-27 +25 +-12 +-30 +37 +-3 +-25 +33 +-6 +-20 +33 +-5 +-26 +28 +-5 +-25 +30 +-3 +-27 +29 +-9 +-28 +34 +1 +-18 +30 +-7 +-14 +29 +-9 +-30 +37 +-5 +-26 +32 +1 +-18 +31 +-7 +-21 +26 +-12 +-31 +43 +-1 +-27 +27 +-6 +-28 +28 +-10 +-28 +34 +-1 +-25 +27 +-8 +-28 +27 +-6 +-24 +38 +-3 +-27 +31 +-2 +-24 +33 +-7 +-25 +30 +-1 +-25 +40 +29 +24 +16 +15 +16 +11 +7 +9 +6 +5 +7 +8 +18 +16 +3 +14 +-1 +0 +0 +6 +10 +0 +0 +8 +1 +-4 +-6 +-4 +-7 +0 +-1 +8 +3 +8 +-2 +-1 +-2 +7 +-4 +3 +-2 +-4 +-2 +16 +0 +0 +-2 +-3 +-4 +1 +-3 +-3 +-4 +5 +3 +3 +9 +0 +1 +-3 +-2 +-1 +-4 +1 +-4 +1 +9 +-1 +-1 +7 +-4 +0 +3 +-5 +-3 +10 +-1 +9 +6 +3 +-1 +-1 +3 +7 +14 +6 +-2 +-6 +-4 +5 +4 +-5 +0 +5 +-6 +0 +1 +-2 +-5 +0 +-2 +6 +3 +6 +-4 +11 +-3 +-2 +-8 +1 +-4 +5 +17 +6 +9 +-4 +-6 +-6 +-6 +-6 +0 +1 +-4 +-1 +0 +7 +1 +-6 +-1 +-3 +-4 +-1 +0 +1 +1 +2 +-2 +-1 +-1 +-1 +-4 +3 +6 +12 +0 +-1 +2 +-3 +5 +7 +11 +0 +-4 +-1 +4 +4 +-3 +2 +-2 +-5 +16 +1 +-1 +2 +-6 +-5 +-4 +1 +3 +7 +7 +0 +-5 +4 +1 +-6 +-4 +-2 +3 +4 +0 +-2 +1 +0 +-4 +0 +2 +-2 +-1 +1 +-2 +5 +15 +7 +-5 +1 +-4 +14 +-1 +-5 +-6 +0 +8 +15 +5 +1 +-4 +-7 +-6 +0 +0 +-4 +2 +1 +6 +-4 +-7 +-3 +-3 +2 +4 +-2 +-2 +-3 +12 +2 +2 +-3 +-4 +1 +-2 +12 +-2 +-3 +-6 +6 +6 +-1 +8 +3 +14 +10 +0 +-4 +-6 +1 +-3 +-2 +-8 +8 +-4 +14 +-2 +9 +3 +8 +-30 +-51 +17 +-21 +-43 +11 +-24 +-42 +24 +-10 +-31 +25 +-15 +-30 +21 +-14 +-35 +32 +-9 +-30 +24 +-9 +-31 +31 +-9 +-29 +32 +-7 +-25 +31 +-8 +-28 +31 +-7 +-22 +29 +-7 +-14 +52 +6 +-21 +30 +-9 +-22 +30 +-9 +-29 +27 +-4 +-28 +28 +-10 +-29 +38 +-5 +-27 +28 +-9 +-28 +41 +-1 +-27 +27 +-1 +-21 +31 +-9 +-25 +34 +-5 +-24 +25 +-13 +-30 +29 +-7 +-25 +32 +-7 +-27 +32 +4 +-23 +31 +-8 +-27 +35 +-6 +-28 +40 +-3 +-27 +31 +-7 +-25 +32 +-6 +-23 +26 +-7 +-29 +30 +-8 +-28 +37 +-2 +-28 +31 +-8 +-25 +28 +5 +-23 +38 +-4 +-28 +31 +-6 +-27 +39 +-3 +-27 +31 +-8 +-23 +37 +-4 +-24 +32 +-4 +-28 +28 +-11 +-30 +32 +-7 +-22 +29 +-10 +-26 +37 +4 +-23 +35 +38 +19 +14 +19 +14 +29 +10 +14 +7 +2 +2 +18 +5 +6 +1 +6 +0 +-2 +2 +11 +2 +12 +2 +3 +-3 +-4 +-3 +-2 +-3 +-2 +-2 +1 +8 +-2 +-4 +-3 +-2 +5 +8 +-2 +-5 +-4 +1 +4 +-1 +9 +6 +-3 +-3 +-3 +2 +7 +1 +-2 +4 +9 +-4 +-2 +-1 +5 +3 +-4 +-4 +3 +1 +3 +13 +11 +-5 +-5 +-4 +-1 +-4 +-7 +8 +0 +-3 +-1 +-1 +0 +-5 +8 +12 +3 +-3 +0 +-3 +-4 +1 +6 +4 +-1 +0 +0 +-4 +-2 +3 +-2 +1 +7 +2 +-2 +4 +0 +-4 +5 +-3 +0 +-5 +-2 +-2 +10 +2 +5 +8 +-3 +-1 +2 +5 +-4 +9 +5 +4 +-3 +0 +-1 +-2 +6 +-31 +-50 +12 +-24 +-35 +18 +-18 +-38 +27 +-12 +-36 +21 +-15 +-30 +22 +-6 +-28 +23 +-14 +-31 +27 +-10 +-25 +32 +-2 +-26 +28 +-1 +-22 +33 +-5 +-24 +26 +-11 +-28 +30 +-8 +-23 +40 +-1 +-19 +33 +-7 +-27 +32 +-6 +-26 +28 +-9 +-24 +43 +0 +-11 +30 +-9 +-25 +27 +-11 +-29 +29 +-10 +-28 +44 +5 +-25 +35 +-3 +-9 +30 +-9 +-30 +30 +-10 +-26 +28 +-6 +-27 +27 +-11 +-29 +27 +-4 +-11 +34 +-7 +-17 +40 +-2 +-28 +28 +-8 +-30 +27 +-7 +-28 +44 +1 +-26 +26 +-10 +-30 +32 +-9 +-28 +33 +-6 +-27 +28 +-9 +-29 +35 +3 +-22 +27 +-2 +-26 +33 +-5 +-21 +27 +-11 +-30 +42 +1 +-26 +30 +-2 +-27 +30 +-9 +-26 +28 +-3 +-26 +34 +-5 +-21 +29 +-9 +-16 +45 +1 +-28 +22 +25 +21 +15 +21 +11 +10 +8 +26 +9 +12 +11 +0 +19 +3 +-3 +-6 +7 +-1 +-2 +-1 +-1 +2 +11 +16 +16 +11 +-5 +-6 +0 +-3 +7 +7 +-5 +3 +-4 +-4 +11 +-1 +0 +2 +-6 +-6 +-6 +-5 +-4 +-3 +0 +-2 +-2 +-4 +10 +4 +-4 +-2 +1 +15 +-2 +2 +-1 +6 +-3 +4 +6 +-5 +-5 +2 +-1 +-3 +2 +5 +3 +-2 +1 +-3 +-1 +-3 +-4 +-1 +4 +-5 +0 +5 +-1 +-5 +4 +6 +1 +10 +-2 +-1 +3 +-2 +4 +3 +-2 +4 +-4 +-5 +2 +4 +6 +-4 +3 +-4 +-6 +3 +-1 +-1 +-1 +-4 +-4 +-4 +11 +3 +1 +-2 +1 +3 +-3 +5 +1 +7 +-2 +1 +11 +-1 +-3 +1 +-34 +-49 +15 +-20 +-43 +20 +-14 +-37 +25 +-9 +-27 +26 +-13 +-33 +34 +-6 +-31 +27 +-9 +-30 +22 +-9 +-19 +32 +-7 +-30 +26 +-11 +-27 +29 +-8 +-28 +39 +0 +-25 +26 +-9 +-28 +30 +-8 +29 +-9 +-30 +31 +-9 +-26 +28 +3 +-24 +28 +2 +-24 +30 +-8 +-30 +30 +-9 +-24 +29 +-9 +-28 +29 +-9 +-25 +29 +-6 +-27 +31 +-4 +-25 +29 +-3 +-23 +43 +5 +-18 +47 +3 +-26 +27 +-8 +-30 +28 +-9 +-25 +45 +3 +-25 +25 +-13 +-32 +34 +-7 +-26 +31 +-8 +-28 +37 +2 +-24 +28 +-8 +-26 +28 +-10 +-28 +29 +-9 +-27 +47 +3 +-25 +33 +-6 +-27 +33 +-7 +-30 +28 +-8 +-27 +28 +-1 +-16 +28 +-7 +-23 +28 +-9 +-22 +31 +-8 +-21 +36 +-1 +-17 +35 +-5 +-30 +37 +-5 +-29 +26 +-8 +-28 +32 +-8 +-24 +38 +-4 +-26 +28 +-11 +-22 +26 +-3 +-22 +27 +-11 +-23 +29 +-8 +-28 +45 +6 +-22 +34 +-6 +-28 +32 +-9 +-29 +41 +6 +-23 +32 +-7 +-26 +36 +-3 +-28 +26 +-8 +-30 +33 +-5 +-26 +25 +-9 +-29 +31 +-6 +-28 +39 +-2 +-26 +28 +-11 +-28 +26 +-6 +-27 +29 +-7 +-15 +30 +-9 +-29 +35 +-2 +-26 +47 +2 +-22 +30 +-9 +-29 +30 +-10 +-26 +28 +-10 +-28 +31 +-7 +-27 +31 +-2 +-26 +42 +5 +-13 +29 +-10 +-28 +31 +-9 +-25 +30 +-8 +-11 +32 +-8 +-24 +28 +-8 +-19 +28 +-10 +-27 +29 +-5 +-25 +27 +-9 +-25 +30 +-7 +-27 +36 +-5 +-27 +44 +1 +-23 +37 +-3 +-26 +30 +-8 +-25 +29 +-11 +-28 +25 +-11 +-27 +32 +-6 +-28 +31 +-5 +-15 +46 +2 +-21 +34 +29 +17 +18 +10 +10 +21 +13 +13 +16 +4 +19 +23 +4 +1 +-3 +16 +1 +-1 +-3 +8 +-4 +-5 +-5 +-3 +-1 +4 +2 +4 +22 +2 +12 +-1 +0 +-9 +-7 +2 +7 +-1 +-3 +-1 +5 +-3 +-6 +-4 +-5 +14 +0 +-3 +-1 +-2 +-3 +-3 +2 +-4 +0 +-1 +-3 +2 +16 +-1 +3 +-5 +-3 +-4 +-1 +9 +7 +-3 +-1 +1 +-1 +-2 +1 +0 +3 +-1 +-2 +0 +4 +-6 +-2 +4 +8 +6 +7 +-1 +-4 +-4 +5 +14 +1 +-3 +-6 +-4 +-2 +10 +10 +-4 +5 +-1 +5 +4 +4 +-6 +-1 +1 +-4 +-6 +-3 +12 +0 +3 +-1 +-3 +-5 +-1 +-2 +-5 +-3 +-3 +-2 +9 +3 +-4 +2 +-1 +4 +9 +-6 +-3 +-2 +-2 +7 +9 +-2 +-1 +3 +0 +1 +12 +0 +-4 +-3 +-1 +-4 +1 +1 +2 +-2 +0 +15 +5 +11 +8 +6 +11 +-4 +-7 +-4 +2 +-5 +-6 +-6 +10 +8 +1 +-3 +-2 +5 +-5 +5 +2 +-6 +3 +5 +0 +-3 +-1 +-6 +-1 +-5 +-3 +-2 +-1 +0 +-5 +-1 +4 +4 +-3 +0 +2 +-2 +0 +3 +1 +-2 +-3 +14 +12 +13 +6 +-6 +14 +-2 +-1 +0 +3 +4 +-7 +1 +-6 +-1 +-1 +-6 +9 +14 +-1 +-6 +-4 +0 +0 +1 +-1 +-2 +6 +-5 +-6 +-1 +5 +-5 +-4 +3 +-2 +-2 +-1 +3 +0 +3 +0 +-5 +5 +8 +-3 +10 +-4 +-2 +3 +-5 +11 +0 +-6 +0 +-2 +-4 +4 +-27 +-44 +9 +-25 +-42 +14 +-20 +-36 +22 +-14 +-34 +23 +-7 +-31 +33 +-6 +-25 +23 +-3 +-27 +34 +-4 +-26 +37 +-5 +-29 +33 +-6 +-29 +32 +-7 +-28 +26 +-12 +-29 +28 +-8 +-26 +36 +-5 +-28 +36 +-3 +-26 +47 +8 +-22 +34 +2 +-26 +22 +-10 +-25 +30 +-8 +-25 +25 +-12 +-31 +35 +-5 +-19 +41 +-2 +-24 +24 +-11 +-31 +44 +4 +-19 +25 +-12 +-29 +35 +-6 +-26 +26 +-10 +-31 +27 +-10 +-24 +35 +-5 +-26 +31 +-8 +-25 +40 +-2 +-28 +31 +-8 +-26 +33 +-5 +-25 +46 +1 +-26 +31 +-9 +-30 +33 +-6 +-29 +28 +-10 +-29 +27 +-11 +-25 +26 +-10 +-29 +38 +3 +-14 +30 +-3 +-26 +32 +-8 +-29 +33 +-4 +-28 +30 +-7 +-21 +30 +1 +-25 +30 +-7 +-23 +33 +2 +-25 +38 +-4 +-24 +34 +23 +17 +14 +13 +27 +15 +9 +8 +8 +8 +22 +9 +3 +10 +3 +-2 +0 +16 +1 +-1 +-2 +-1 +6 +12 +3 +0 +-1 +14 +4 +-5 +-3 +-3 +1 +2 +-5 +12 +11 +0 +6 +12 +6 +-3 +-1 +-7 +-4 +-10 +-6 +-1 +-3 +-3 +0 +-2 +-3 +-1 +2 +3 +4 +19 +1 +3 +11 +4 +-6 +-1 +4 +-2 +-6 +1 +-3 +-8 +1 +-2 +0 +-1 +13 +-2 +3 +-1 +-4 +2 +1 +15 +0 +-4 +4 +-4 +-8 +-6 +2 +-2 +-1 +-6 +1 +18 +1 +-1 +-4 +-1 +9 +6 +3 +-3 +-5 +-1 +-4 +1 +7 +-2 +4 +-4 +3 +-2 +0 +-2 +11 +19 +2 +-8 +2 +-3 +0 +-4 +-6 +-8 +-3 +18 +2 +10 +-26 +-50 +13 +-25 +-38 +14 +-22 +-32 +19 +-18 +-35 +17 +-11 +-24 +25 +-14 +-30 +26 +-11 +-32 +36 +-5 +-28 +26 +-7 +-29 +28 +-8 +-25 +28 +-9 +-29 +39 +-4 +-26 +28 +-9 +-19 +31 +-5 +-28 +34 +-5 +-23 +31 +-9 +-23 +41 +-1 +-26 +27 +-10 +-28 +28 +-3 +-27 +28 +-4 +-27 +28 +-9 +-22 +31 +-7 +-27 +30 +-7 +-24 +31 +-8 +-26 +46 +3 +-25 +29 +-10 +-29 +30 +-7 +-28 +31 +-7 +-27 +41 +3 +-20 +28 +-10 +-28 +41 +0 +-24 +29 +-9 +-28 +40 +0 +-23 +37 +-4 +-24 +28 +-10 +-29 +32 +-8 +-28 +28 +-7 +-25 +28 +-8 +-18 +30 +1 +-24 +32 +-5 +-25 +32 +-8 +-24 +28 +-9 +-28 +27 +-7 +-28 +32 +-8 +-14 +39 +8 +-22 +34 +-6 +-27 +28 +-1 +-9 +30 +-10 +-27 +27 +40 +18 +21 +28 +11 +8 +12 +4 +11 +2 +13 +3 +16 +6 +12 +3 +-2 +0 +-2 +-1 +-4 +-4 +-1 +-1 +5 +2 +-4 +13 +8 +-1 +2 +-3 +5 +0 +3 +-4 +0 +-4 +-1 +3 +-3 +4 +-1 +-4 +-2 +16 +4 +0 +8 +0 +-6 +-4 +-3 +-3 +-1 +0 +15 +12 +13 +1 +-3 +-2 +-4 +-2 +4 +2 +-3 +3 +6 +-5 +1 +-2 +-3 +-4 +-2 +-4 +-2 +-4 +11 +-1 +-3 +-2 +-3 +0 +11 +14 +2 +3 +1 +4 +-4 +12 +9 +-5 +-6 +6 +-5 +-7 +-4 +-6 +2 +-1 +-3 +4 +-3 +-4 +4 +10 +-3 +-4 +-5 +5 +5 +-4 +3 +0 +3 +-5 +6 +-2 +1 +-2 +6 +10 +1 +-6 +-3 +-2 +-36 +-51 +9 +-25 +-33 +19 +-18 +-36 +23 +-15 +-33 +31 +-9 +-30 +27 +-11 +-27 +23 +-13 +-25 +26 +-11 +-24 +30 +-8 +-27 +47 +3 +-22 +30 +-6 +-30 +27 +-8 +-29 +38 +0 +-25 +30 +-9 +-28 +28 +-10 +-26 +30 +-9 +-24 +26 +-9 +-26 +30 +-3 +-12 +47 +3 +-26 +27 +-9 +-23 +27 +-10 +-27 +39 +-3 +-24 +29 +-8 +-31 +32 +-8 +-21 +36 +-4 +-23 +32 +-8 +-26 +26 +-9 +-28 +30 +-9 +-26 +46 +2 +-26 +39 +-4 +-16 +39 +3 +-27 +25 +-14 +-33 +36 +-5 +-30 +29 +-6 +-26 +31 +-8 +-27 +27 +-8 +-28 +36 +-4 +-29 +28 +-9 +-22 +46 +3 +-20 +27 +-11 +-29 +34 +-3 +-21 +31 +-8 +-30 +25 +-8 +-28 +27 +-10 +-27 +29 +-7 +-27 +29 +-5 +-25 +33 +-6 +-12 +32 +-8 +-16 +29 +24 +17 +18 +24 +13 +16 +10 +12 +7 +12 +5 +12 +12 +19 +14 +12 +-2 +-5 +-3 +-5 +-3 +8 +3 +-7 +5 +-3 +-1 +11 +-1 +-4 +-1 +-2 +0 +-5 +-3 +-4 +5 +12 +8 +-1 +-4 +2 +1 +-1 +-2 +-4 +2 +2 +14 +11 +11 +0 +-4 +0 +-7 +-1 +-2 +-4 +-3 +-3 +-2 +-1 +-1 +7 +-1 +14 +3 +0 +-4 +3 +4 +4 +-4 +4 +-4 +-4 +5 +-5 +5 +-4 +-3 +11 +5 +-6 +1 +1 +-4 +-2 +-4 +-1 +12 +-2 +-1 +-7 +-3 +11 +16 +1 +-3 +15 +-1 +-6 +-7 +0 +2 +1 +-6 +-1 +-6 +-6 +-6 +0 +5 +11 +4 +8 +12 +13 +12 +-2 +-9 +-8 +-6 +-6 +-5 +-7 +6 +3 +-33 +-51 +11 +-25 +-44 +20 +-18 +-38 +29 +-11 +-34 +30 +-9 +-29 +23 +-12 +-30 +25 +-8 +-14 +30 +-9 +-16 +26 +-9 +-32 +29 +-10 +-18 +37 +-4 +-28 +29 +-6 +-29 +25 +-11 +-31 +30 +-7 +-28 +32 +-3 +-21 +33 +-7 +-17 +36 +-5 +-26 +26 +-1 +-25 +32 +-7 +-28 +34 +-7 +-23 +29 +-9 +-27 +30 +-8 +-22 +29 +-9 +-28 +39 +-3 +-23 +31 +-1 +-17 +38 +-4 +-27 +31 +-6 +-30 +33 +-4 +-27 +30 +-7 +-29 +36 +-2 +-26 +34 +-6 +-28 +33 +-7 +-16 +30 +-5 +-29 +26 +-6 +-20 +38 +-3 +-28 +33 +-4 +-27 +38 +6 +-24 +30 +-10 +-27 +30 +-8 +-31 +33 +-3 +-14 +44 +1 +-28 +30 +-10 +-32 +30 +0 +-28 +31 +-10 +-31 +34 +-4 +-24 +31 +-4 +-26 +30 +-6 +-28 +26 +-11 +-28 +27 +26 +19 +34 +16 +15 +11 +15 +14 +8 +7 +5 +4 +7 +9 +2 +2 +0 +4 +3 +5 +1 +-1 +-2 +2 +1 +11 +4 +2 +-3 +5 +15 +8 +0 +-2 +5 +-5 +5 +-3 +1 +6 +8 +-6 +-1 +-6 +-6 +-3 +-1 +-3 +2 +9 +4 +-4 +0 +2 +-1 +-2 +-1 +2 +6 +-2 +-5 +-3 +5 +5 +-1 +-1 +7 +-1 +-7 +-6 +3 +-1 +-1 +-1 +5 +6 +-2 +-1 +3 +-3 +4 +-3 +-1 +-1 +5 +0 +-1 +1 +-3 +-1 +1 +-3 +7 +14 +14 +-2 +11 +-3 +-6 +-5 +-5 +-2 +-5 +-2 +4 +-4 +2 +-1 +-2 +16 +1 +-3 +0 +-4 +-3 +-1 +5 +-4 +0 +2 +-1 +15 +11 +12 +-1 +4 +8 +4 +-32 +-51 +16 +-23 +-43 +11 +-21 +-38 +14 +-20 +-35 +19 +-13 +-33 +22 +-14 +-32 +39 +-3 +-28 +39 +-3 +-29 +25 +-12 +-31 +29 +-9 +-20 +29 +0 +-24 +42 +0 +-17 +27 +-9 +-30 +38 +-4 +-16 +34 +-6 +-28 +45 +0 +-27 +25 +-10 +-32 +34 +-6 +-30 +27 +-6 +-28 +26 +-7 +-23 +26 +-10 +-31 +34 +-6 +-10 +31 +-6 +-30 +39 +-3 +-25 +28 +-10 +-22 +31 +-8 +-28 +45 +1 +-20 +41 +-2 +-18 +35 +-5 +-20 +33 +-8 +-31 +25 +-7 +-31 +31 +-9 +-27 +33 +-3 +-29 +32 +-9 +-28 +28 +-9 +-28 +32 +-3 +-27 +32 +-5 +-29 +25 +-10 +-28 +29 +-8 +-24 +32 +-7 +-24 +31 +-7 +-18 +35 +-1 +-20 +29 +-9 +-29 +29 +-8 +-28 +37 +-4 +-27 +36 +-2 +-25 +33 +-4 +-19 +29 +-2 +-24 +28 +26 +33 +20 +15 +16 +9 +17 +12 +5 +4 +9 +12 +3 +2 +2 +0 +1 +2 +5 +-1 +6 +5 +1 +1 +7 +0 +5 +2 +4 +-2 +-1 +2 +-1 +4 +-2 +9 +3 +-3 +-4 +-2 +9 +7 +-1 +6 +-1 +-3 +7 +10 +-4 +0 +-3 +0 +9 +0 +-5 +-8 +1 +-5 +-1 +-2 +-2 +7 +-3 +-3 +4 +-5 +3 +-1 +0 +7 +1 +-2 +5 +-2 +0 +1 +2 +4 +1 +-4 +-2 +5 +-3 +2 +-3 +0 +-2 +0 +-2 +-1 +-2 +7 +-1 +-1 +2 +2 +-2 +4 +-1 +6 +0 +5 +1 +-3 +2 +0 +-4 +4 +4 +3 +-2 +5 +-1 +-4 +-6 +3 +4 +7 +5 +0 +-1 +10 +4 +5 +-3 +0 +-3 +-3 +-36 +2 +-29 +-48 +14 +-23 +-41 +17 +-15 +-37 +21 +-9 +-13 +27 +-10 +-33 +25 +-9 +-28 +32 +-7 +-19 +27 +-12 +-22 +40 +1 +-21 +39 +-4 +-29 +25 +-11 +-32 +28 +-7 +-30 +27 +-11 +-26 +33 +-8 +-27 +31 +-7 +-26 +33 +1 +-24 +28 +-1 +-24 +44 +0 +-24 +28 +-7 +-26 +31 +-9 +-29 +44 +1 +-25 +28 +0 +-27 +31 +-8 +-26 +33 +-8 +-29 +42 +1 +-27 +28 +-12 +-31 +27 +-9 +-18 +32 +-7 +-16 +30 +-9 +-16 +32 +-3 +-25 +27 +0 +-27 +27 +-5 +-22 +32 +-7 +-25 +33 +-5 +-28 +29 +-7 +-29 +33 +-8 +-26 +29 +-9 +-16 +30 +-10 +-28 +38 +-4 +-24 +27 +-12 +-28 +29 +-6 +-25 +32 +-1 +-24 +28 +-9 +-28 +31 +-2 +-24 +31 +-7 +-27 +29 +-3 +-24 +39 +-2 +-24 +42 +-1 +17 +20 +28 +21 +23 +20 +9 +6 +13 +10 +7 +2 +0 +-1 +6 +9 +1 +13 +4 +-2 +0 +5 +-4 +-3 +0 +8 +5 +0 +-2 +-1 +1 +2 +-2 +5 +3 +-1 +-2 +8 +2 +-2 +6 +1 +6 +-4 +11 +-2 +-2 +-2 +6 +-1 +9 +-4 +0 +-4 +0 +-2 +-3 +0 +-3 +-3 +5 +-3 +17 +0 +1 +-4 +-2 +-5 +16 +0 +0 +-1 +-4 +-1 +5 +14 +-3 +-4 +-5 +-1 +-1 +-5 +2 +0 +-4 +16 +2 +0 +-4 +-3 +5 +-2 +-4 +-3 +-5 +-6 +-4 +-1 +9 +9 +16 +-1 +3 +-5 +-2 +-1 +11 +-1 +-2 +0 +-3 +0 +-4 +-2 +2 +0 +-2 +-1 +2 +8 +0 +4 +8 +8 +-2 +5 +19 +-1 +9 +-28 +-49 +4 +-26 +-30 +15 +-21 +-39 +21 +-14 +-30 +26 +-4 +-31 +21 +-15 +-34 +24 +-12 +-24 +28 +-10 +-27 +33 +-6 +-18 +30 +-8 +-27 +33 +-8 +-26 +27 +-10 +-14 +35 +-7 +-26 +36 +-5 +-29 +29 +-11 +-27 +33 +-8 +-28 +29 +-9 +-25 +28 +-10 +-28 +29 +-8 +-26 +33 +-5 +-27 +34 +-5 +-26 +28 +-4 +-26 +33 +-6 +-26 +29 +-7 +-26 +42 +1 +-24 +31 +-5 +-24 +33 +-5 +-19 +45 +1 +-26 +37 +-4 +-28 +29 +-9 +-29 +29 +-9 +-18 +38 +-1 +-17 +42 +2 +-27 +23 +-14 +-32 +27 +-9 +-20 +33 +-5 +-29 +27 +-8 +-26 +26 +-11 +-27 +30 +-7 +-22 +39 +6 +-23 +28 +1 +-24 +31 +-7 +-24 +38 +-1 +-26 +27 +-10 +-32 +26 +-13 +-28 +33 +-1 +-22 +48 +3 +-24 +28 +-10 +-18 +20 +16 +27 +21 +32 +16 +9 +6 +4 +10 +7 +5 +3 +6 +15 +14 +7 +2 +3 +-3 +-2 +-1 +-4 +2 +2 +-4 +13 +-1 +3 +-3 +3 +-4 +1 +1 +2 +-3 +-3 +-2 +-2 +5 +11 +6 +-1 +9 +3 +-4 +-2 +-4 +9 +11 +2 +13 +8 +-2 +-4 +-7 +-3 +-2 +-1 +3 +1 +-6 +0 +2 +20 +0 +-1 +-2 +-4 +-4 +-5 +-6 +0 +2 +1 +-5 +1 +-3 +1 +-3 +11 +8 +-2 +6 +7 +-1 +-4 +-4 +5 +6 +12 +2 +-7 +7 +5 +0 +11 +-5 +-6 +-2 +-6 +-5 +8 +-2 +-4 +-1 +-1 +4 +3 +-7 +8 +0 +-6 +-2 +-4 +-8 +-6 +-4 +-3 +15 +17 +-1 +-1 +4 +15 +13 +1 +-6 +8 +-29 +-45 +9 +-24 +-47 +14 +-22 +-42 +17 +-14 +-33 +19 +-6 +-30 +28 +-7 +-32 +25 +-12 +-22 +26 +-10 +-32 +42 +-1 +-27 +27 +-10 +-31 +36 +1 +-27 +27 +-10 +-28 +26 +-12 +-21 +35 +-5 +-28 +36 +-3 +-25 +28 +0 +-22 +46 +1 +-27 +26 +2 +-26 +34 +-7 +-30 +30 +-7 +-17 +30 +-10 +-31 +28 +-10 +-30 +27 +-10 +-29 +28 +-8 +-26 +32 +-7 +-21 +29 +-7 +-25 +39 +-2 +-25 +39 +-3 +-24 +29 +-9 +-28 +30 +-6 +-29 +41 +-2 +-23 +28 +-7 +-27 +27 +-7 +-24 +31 +-6 +-27 +44 +4 +-12 +34 +-7 +-29 +27 +-9 +-29 +38 +-3 +-21 +40 +-1 +-26 +30 +-2 +-27 +25 +-2 +-26 +44 +1 +-26 +28 +-10 +-32 +26 +-11 +-29 +27 +-5 +-15 +46 +2 +-13 +30 +-11 +-30 +24 +-11 +-31 +18 +23 +22 +26 +17 +13 +14 +24 +9 +5 +8 +5 +1 +15 +21 +4 +-1 +1 +-1 +3 +5 +0 +1 +-4 +0 +5 +3 +17 +1 +10 +11 +-5 +6 +-6 +3 +-5 +-2 +0 +-2 +1 +3 +-2 +1 +-6 +-5 +0 +4 +2 +-3 +-2 +-1 +-3 +1 +4 +-2 +-4 +13 +9 +-2 +-5 +5 +-2 +-2 +-2 +-1 +3 +10 +-2 +-5 +-3 +3 +1 +3 +5 +-1 +1 +10 +16 +-1 +-4 +-5 +-3 +0 +5 +-2 +9 +-4 +-4 +12 +-3 +-5 +4 +-1 +-5 +6 +8 +-3 +-6 +-7 +10 +-2 +-6 +-6 +-4 +0 +15 +1 +10 +3 +3 +-1 +-4 +-5 +1 +-2 +-1 +8 +5 +1 +-5 +-5 +-3 +-2 +7 +5 +-4 +-2 +-3 +14 +-24 +-47 +12 +-23 +-45 +15 +-22 +-39 +16 +-19 +-25 +23 +-13 +-34 +32 +-7 +-31 +24 +-11 +-28 +31 +-7 +-26 +28 +-6 +-9 +31 +-6 +-21 +27 +-11 +-17 +37 +-3 +-23 +34 +-8 +-30 +37 +-4 +-25 +27 +-11 +-31 +38 +-3 +-27 +31 +0 +-26 +41 +-1 +-25 +25 +-11 +-29 +23 +-11 +-15 +32 +-8 +-26 +36 +-4 +-16 +30 +-3 +-19 +24 +-4 +-24 +28 +-10 +-31 +27 +-10 +-29 +37 +-3 +-22 +41 +-1 +-21 +26 +-13 +-20 +26 +-9 +-30 +33 +-7 +-27 +40 +2 +-12 +31 +-9 +-26 +25 +-7 +-17 +27 +-11 +-26 +36 +-5 +-27 +26 +-11 +-19 +32 +-7 +-22 +42 +0 +-27 +30 +-8 +-15 +32 +-9 +-23 +47 +3 +-24 +23 +-3 +-28 +28 +-10 +-25 +29 +-8 +-28 +46 +2 +-26 +32 +-7 +-25 +29 +-10 +-32 +30 +-9 +-21 +30 +-9 +-31 +33 +-8 +-27 +31 +-7 +-30 +45 +5 +-13 +42 +1 +-26 +21 +-15 +-25 +24 +-10 +-32 +25 +-11 +-29 +28 +-9 +-30 +35 +-4 +-26 +32 +-1 +-22 +28 +-11 +-28 +33 +-5 +-26 +29 +-7 +-29 +32 +-2 +-24 +46 +4 +-21 +30 +-9 +-24 +27 +-9 +-22 +31 +-3 +-28 +28 +2 +-24 +29 +-9 +-24 +37 +-4 +-24 +37 +-3 +-26 +33 +-8 +-29 +32 +-7 +-27 +37 +-3 +-26 +35 +-6 +-22 +41 +-3 +-25 +35 +-5 +-18 +32 +-9 +-30 +27 +-1 +-28 +29 +-7 +-28 +42 +-1 +-26 +37 +-6 +-25 +36 +-1 +-29 +28 +-11 +-30 +40 +-2 +-30 +25 +-12 +-28 +32 +-8 +-21 +30 +-4 +-21 +25 +-7 +-24 +27 +-1 +-26 +39 +4 +-23 +27 +-11 +-30 +24 +-12 +-26 +30 +-9 +-25 +46 +2 +-21 +15 +27 +28 +19 +16 +20 +15 +12 +12 +11 +4 +2 +8 +5 +5 +1 +2 +-2 +5 +7 +10 +11 +2 +-4 +-4 +-4 +4 +1 +-2 +-1 +0 +-2 +8 +1 +15 +0 +1 +5 +-4 +3 +16 +0 +-2 +-5 +12 +13 +10 +-7 +-5 +-5 +-4 +8 +1 +-4 +-5 +-1 +-5 +-1 +-2 +-5 +18 +0 +-2 +2 +-5 +-8 +11 +-3 +0 +-3 +-2 +-4 +3 +9 +1 +-2 +3 +0 +-2 +-5 +-2 +-3 +-4 +-1 +0 +9 +1 +-1 +6 +-1 +2 +-6 +-2 +-1 +5 +-1 +14 +4 +-4 +-5 +1 +3 +-5 +-5 +2 +4 +2 +2 +-5 +-2 +5 +0 +-2 +2 +10 +2 +-1 +-3 +0 +0 +2 +0 +2 +-3 +13 +-1 +0 +-2 +5 +11 +-2 +-7 +6 +15 +15 +-3 +-5 +-2 +-5 +-4 +-4 +-5 +-1 +-3 +-2 +14 +2 +-5 +-4 +4 +4 +-5 +2 +8 +4 +-4 +-5 +-2 +9 +-4 +-2 +3 +7 +0 +-4 +-4 +-1 +-2 +-2 +-2 +9 +-2 +-5 +0 +3 +-3 +-1 +0 +3 +-3 +12 +6 +-4 +-3 +-2 +3 +4 +6 +3 +-3 +-3 +3 +-3 +5 +0 +13 +10 +-2 +-5 +-4 +6 +-3 +0 +-4 +6 +-4 +-1 +6 +1 +-4 +13 +0 +-4 +-3 +-5 +2 +2 +-3 +-1 +-1 +9 +11 +11 +2 +-3 +-4 +-6 +2 +-3 +-2 +-2 +-1 +-6 +0 +2 +6 +4 +3 +14 +11 +3 +-1 +-4 +-5 +4 +15 +-1 +-6 +-6 +-8 +0 +0 +-2 +6 +-2 +1 +13 +-25 +-48 +8 +-27 +-46 +18 +-19 +-36 +18 +-16 +-37 +30 +-6 +-29 +24 +-13 +-31 +26 +-11 +-27 +29 +-4 +-27 +30 +-8 +-23 +34 +0 +-27 +29 +-9 +-30 +28 +-9 +-26 +46 +2 +-11 +45 +1 +-28 +29 +-11 +-27 +26 +-9 +-23 +30 +-10 +-18 +34 +-7 +-23 +40 +-4 +-28 +25 +-12 +-31 +31 +-9 +-20 +27 +-8 +-27 +34 +-1 +-25 +27 +-10 +-21 +30 +-10 +-30 +29 +-6 +-18 +33 +-6 +-23 +43 +2 +-26 +27 +-11 +-31 +38 +-3 +-25 +27 +-11 +-25 +27 +-7 +-29 +31 +-3 +-14 +34 +-5 +-26 +30 +-10 +-30 +29 +-8 +-23 +29 +-10 +-24 +30 +-6 +-24 +30 +-8 +-26 +32 +1 +-23 +31 +-7 +-27 +43 +5 +-24 +37 +-4 +-28 +28 +-6 +-15 +35 +-6 +-30 +38 +-3 +-29 +33 +-8 +-27 +28 +-8 +-26 +17 +22 +26 +16 +19 +22 +28 +22 +9 +4 +11 +9 +2 +-1 +0 +4 +4 +1 +2 +5 +2 +0 +4 +0 +5 +-2 +0 +13 +5 +-3 +4 +-1 +3 +-3 +-4 +1 +0 +-5 +2 +0 +-2 +1 +5 +7 +1 +3 +12 +-1 +-3 +1 +-3 +10 +3 +-1 +-5 +2 +0 +8 +-2 +6 +-3 +-4 +-3 +-4 +12 +-1 +3 +4 +0 +-2 +15 +0 +-1 +2 +-5 +6 +-4 +14 +-1 +-6 +3 +10 +10 +-5 +-4 +-6 +-5 +-7 +-1 +-4 +1 +-5 +-1 +2 +0 +-2 +-2 +-2 +-1 +9 +-1 +-3 +-1 +0 +-2 +3 +-5 +0 +1 +-1 +2 +-3 +2 +2 +-2 +7 +3 +-2 +1 +-1 +-2 +1 +9 +9 +1 +12 +6 +13 +-24 +6 +-29 +-51 +9 +-27 +-44 +13 +-16 +-26 +20 +-18 +-36 +25 +-11 +-32 +25 +-13 +-30 +27 +-10 +-22 +30 +-9 +-26 +27 +-10 +-30 +39 +-3 +-12 +33 +-6 +-30 +29 +-6 +-22 +38 +0 +-25 +33 +-8 +-25 +33 +-4 +-26 +26 +-11 +-16 +28 +-9 +-20 +30 +-10 +-29 +36 +-5 +-16 +29 +-10 +-31 +47 +3 +-22 +30 +-4 +-26 +33 +-1 +-28 +27 +-12 +-29 +29 +-3 +-27 +39 +0 +-23 +27 +-10 +-31 +27 +-11 +-30 +33 +-6 +-24 +39 +1 +-16 +34 +-6 +-26 +33 +-5 +-25 +25 +-12 +-30 +29 +-8 +-26 +30 +-8 +-21 +42 +-1 +-26 +40 +-1 +-25 +30 +-8 +-25 +27 +-11 +-27 +41 +0 +-20 +26 +-6 +-19 +27 +-11 +-31 +29 +4 +-25 +31 +-9 +-30 +33 +-7 +-29 +27 +-11 +-19 +29 +-9 +-22 +29 +-8 +27 +23 +28 +17 +25 +25 +28 +7 +3 +18 +11 +0 +8 +-2 +9 +0 +3 +4 +-2 +-2 +2 +-3 +0 +-3 +5 +-2 +1 +0 +-1 +-1 +2 +-3 +3 +0 +0 +8 +0 +-2 +4 +-1 +-1 +18 +3 +-2 +-5 +-3 +-2 +1 +-2 +-2 +2 +0 +6 +9 +-3 +0 +-1 +10 +10 +7 +0 +-5 +-4 +2 +-3 +-1 +-6 +-3 +7 +1 +5 +10 +0 +-1 +-3 +-4 +8 +-4 +8 +6 +-4 +-4 +11 +-1 +-5 +-3 +-2 +-8 +5 +7 +0 +9 +-1 +-8 +-5 +3 +2 +-4 +-2 +-6 +0 +-4 +-2 +2 +-2 +-1 +1 +-4 +15 +10 +-2 +-3 +1 +13 +3 +-3 +-1 +3 +12 +-1 +4 +-2 +-3 +1 +-3 +-4 +-4 +-2 +7 +-21 +-45 +12 +-25 +-44 +20 +-18 +-37 +21 +-16 +-28 +27 +-13 +-32 +28 +-10 +-31 +27 +-11 +-28 +25 +-7 +-30 +31 +-7 +-25 +27 +-9 +-28 +33 +-7 +-24 +29 +-7 +-11 +33 +-7 +-27 +28 +-10 +-25 +29 +-6 +-23 +29 +-7 +-8 +34 +-4 +-27 +30 +-7 +-25 +30 +-8 +-20 +32 +-6 +-24 +39 +0 +-23 +39 +0 +-27 +27 +-6 +-29 +27 +-8 +-23 +28 +-6 +-28 +32 +-6 +-24 +28 +-8 +-29 +33 +-4 +-24 +28 +-7 +-25 +28 +-8 +-27 +40 +-2 +-23 +30 +-5 +-29 +28 +-11 +-28 +32 +-3 +-25 +30 +-7 +-18 +46 +7 +-23 +27 +-6 +-24 +43 +1 +-25 +26 +-10 +-31 +32 +-6 +-29 +31 +3 +-24 +37 +-4 +-26 +25 +-6 +-9 +29 +-8 +-31 +28 +-9 +-29 +31 +-7 +-30 +28 +-8 +-22 +33 +-6 +-23 +21 +23 +24 +35 +20 +20 +11 +14 +11 +4 +15 +6 +8 +0 +2 +4 +8 +3 +0 +0 +10 +-3 +-3 +9 +3 +-2 +4 +-2 +15 +16 +15 +8 +1 +-3 +-6 +-5 +-5 +-3 +11 +-2 +8 +-4 +14 +0 +-1 +-7 +-2 +-6 +-4 +5 +10 +-5 +5 +-5 +-6 +-2 +10 +-1 +2 +1 +3 +-5 +-4 +-1 +-2 +-3 +-1 +-1 +-1 +-1 +0 +2 +3 +15 +2 +-2 +-2 +-1 +-2 +-1 +-1 +-1 +10 +1 +-3 +0 +4 +8 +-4 +-6 +-4 +3 +-4 +-3 +4 +13 +2 +-5 +-2 +-4 +-4 +-3 +-5 +-3 +6 +-2 +-1 +6 +2 +-1 +-1 +-2 +2 +-4 +1 +7 +4 +8 +5 +8 +1 +7 +-4 +-5 +-5 +5 +2 +9 +20 +-17 +-44 +9 +-27 +-44 +17 +-21 +-32 +15 +-17 +-31 +22 +-9 +-32 +18 +-16 +-29 +30 +-11 +-30 +35 +-5 +-26 +43 +-1 +-24 +25 +-12 +-28 +25 +-11 +-24 +34 +-6 +-26 +34 +0 +-23 +34 +-2 +-23 +27 +-10 +-27 +26 +-10 +-27 +33 +-8 +-29 +29 +5 +-22 +27 +-11 +-21 +41 +-1 +-20 +32 +-6 +-20 +37 +-5 +-27 +32 +-9 +-21 +24 +-13 +-30 +28 +-11 +-28 +35 +-4 +-29 +27 +-8 +-24 +33 +-2 +-23 +34 +-2 +-27 +31 +-7 +-29 +30 +-4 +-27 +29 +-4 +-19 +31 +-9 +-26 +30 +-5 +-28 +35 +-3 +-27 +33 +-3 +-28 +28 +-8 +-28 +35 +3 +-12 +31 +-9 +-27 +31 +-7 +-29 +33 +-4 +32 +-7 +-30 +30 +-6 +-29 +28 +-6 +-27 +31 +-8 +-26 +43 +-1 +-27 +34 +-5 +-30 +28 +-9 +-29 +20 +34 +31 +19 +17 +10 +9 +14 +9 +7 +11 +4 +4 +17 +5 +7 +0 +3 +1 +0 +6 +1 +4 +1 +-1 +15 +15 +15 +0 +-1 +-6 +-5 +-2 +12 +-4 +-3 +5 +13 +12 +3 +0 +-5 +-8 +-6 +-10 +-1 +2 +0 +11 +8 +-3 +4 +12 +-1 +-3 +2 +2 +-5 +-7 +-5 +-5 +-6 +5 +-3 +-7 +6 +0 +9 +5 +2 +4 +-2 +-6 +6 +11 +2 +-7 +-2 +-4 +-4 +-2 +11 +1 +5 +2 +-4 +-5 +-5 +-1 +11 +10 +-2 +-6 +-1 +-4 +0 +-4 +-5 +-4 +3 +14 +-1 +0 +-2 +2 +-4 +1 +2 +-1 +-2 +-2 +3 +-3 +-2 +-3 +5 +4 +2 +1 +8 +-4 +3 +1 +14 +2 +-5 +6 +9 +-4 +-37 +-54 +13 +-24 +-38 +20 +-15 +-37 +20 +-16 +-37 +19 +-16 +-27 +24 +-12 +-26 +26 +-7 +-29 +28 +-10 +29 +-9 +-26 +27 +-4 +-24 +26 +-10 +-18 +30 +-9 +-28 +32 +-8 +-28 +28 +-9 +-28 +38 +-4 +-23 +28 +-10 +-27 +49 +4 +-24 +34 +-6 +-14 +31 +-8 +-29 +34 +-2 +-29 +28 +-10 +-29 +36 +-4 +-22 +26 +-10 +-30 +28 +-8 +-28 +46 +1 +-22 +31 +-6 +-26 +35 +-7 +-29 +30 +-8 +-24 +33 +-2 +-15 +38 +-4 +-30 +32 +-9 +-29 +24 +-12 +-26 +29 +-8 +-17 +36 +-1 +-23 +36 +-6 +-24 +26 +-10 +-30 +33 +-7 +-30 +35 +-1 +-14 +31 +-8 +-30 +39 +-2 +-24 +32 +-8 +-30 +26 +-10 +-24 +42 +-2 +-25 +28 +-9 +-18 +36 +-6 +-28 +30 +-9 +-30 +30 +3 +-23 +28 +-7 +-23 +26 +24 +21 +19 +22 +15 +12 +13 +10 +10 +10 +9 +3 +9 +0 +-1 +0 +7 +5 +0 +-1 +-1 +3 +0 +-1 +4 +2 +4 +0 +2 +1 +-1 +1 +-1 +-1 +0 +1 +13 +16 +11 +-1 +-3 +-5 +-4 +10 +9 +-3 +0 +-1 +11 +-1 +-2 +-6 +-4 +-3 +-7 +-5 +-2 +8 +12 +7 +-4 +3 +-5 +0 +14 +1 +-2 +2 +-3 +4 +2 +-6 +-5 +-5 +3 +-4 +-4 +-2 +18 +1 +14 +0 +-4 +11 +13 +6 +-7 +-5 +-7 +-2 +1 +-5 +-6 +4 +-4 +-3 +-5 +-1 +-2 +-3 +-4 +3 +1 +1 +16 +3 +2 +-4 +-3 +3 +-3 +-1 +13 +5 +0 +4 +16 +2 +-2 +-4 +-7 +-5 +-4 +-4 +-5 +-3 +2 +4 +-32 +5 +-28 +-36 +32 +-10 +-37 +24 +-14 +-38 +20 +-17 +-37 +34 +-5 +-31 +29 +-11 +-27 +26 +-13 +-28 +33 +-8 +-30 +33 +-9 +-32 +26 +-8 +-29 +30 +-10 +-16 +36 +-1 +-28 +45 +0 +-27 +31 +-6 +-29 +26 +-13 +-31 +27 +-4 +-23 +32 +-7 +-29 +29 +-6 +-23 +35 +-6 +-17 +31 +-7 +-28 +31 +-9 +-25 +25 +-12 +-27 +34 +-2 +-19 +33 +-4 +-22 +31 +-9 +-30 +31 +4 +-24 +32 +-8 +-25 +25 +-10 +-25 +41 +-3 +-27 +27 +-10 +-17 +35 +-7 +-13 +31 +-9 +-28 +37 +-5 +-23 +35 +-6 +-29 +31 +-5 +-24 +25 +-11 +-32 +28 +-8 +-29 +28 +-9 +-28 +29 +-8 +-23 +41 +-1 +-23 +31 +-9 +-28 +35 +3 +-12 +41 +0 +-27 +27 +-8 +-28 +24 +-13 +-29 +27 +-8 +-28 +34 +-4 +-25 +33 +-5 +15 +33 +29 +32 +16 +13 +18 +7 +16 +6 +9 +9 +15 +1 +4 +10 +4 +-3 +-4 +1 +2 +-2 +7 +-1 +-3 +-3 +-2 +5 +2 +9 +-1 +-2 +-1 +-2 +-3 +-3 +0 +-1 +2 +4 +3 +10 +-1 +5 +0 +5 +16 +1 +4 +-4 +0 +-6 +-2 +-6 +-1 +1 +-3 +5 +4 +2 +1 +0 +3 +4 +4 +1 +-3 +-2 +7 +3 +-5 +3 +-3 +-3 +-4 +-5 +-2 +-4 +6 +8 +2 +0 +0 +4 +-2 +-1 +-1 +-2 +2 +-2 +1 +3 +-3 +-1 +2 +7 +11 +4 +2 +-4 +-3 +3 +13 +2 +-1 +14 +0 +1 +-4 +-3 +-4 +2 +-4 +8 +-3 +0 +-3 +1 +15 +5 +-4 +-2 +-8 +2 +-2 +3 +-5 +-4 +25 +-14 +-42 +21 +-16 +-38 +10 +-25 +-45 +22 +-17 +-38 +19 +-17 +-37 +30 +-6 +-31 +24 +-12 +-33 +35 +-5 +-29 +26 +-11 +-26 +25 +-11 +-22 +34 +-6 +-28 +30 +-9 +-28 +33 +-6 +-20 +31 +-7 +-28 +34 +-6 +-23 +31 +-8 +-27 +31 +-7 +-26 +40 +-2 +-22 +41 +2 +-22 +32 +-9 +-30 +27 +-7 +-27 +30 +-8 +-23 +35 +-2 +-24 +32 +-8 +-25 +29 +-9 +-28 +32 +-8 +-24 +35 +-3 +-24 +43 +-1 +-24 +36 +-3 +-29 +29 +-10 +-29 +42 +2 +-23 +28 +-7 +-26 +30 +-6 +-30 +29 +-8 +-27 +29 +-8 +-26 +27 +-11 +-23 +33 +-4 +-23 +45 +0 +-26 +44 +3 +-26 +24 +-11 +-23 +32 +-5 +-20 +29 +-11 +-19 +37 +-5 +-29 +30 +-9 +-28 +22 +-14 +-29 +30 +2 +-23 +25 +-11 +-24 +31 +-8 +-19 +24 +24 +20 +16 +16 +18 +17 +14 +11 +6 +7 +16 +7 +4 +3 +5 +6 +0 +10 +21 +5 +-2 +-3 +16 +3 +2 +-3 +-2 +-2 +5 +0 +-2 +9 +-3 +-1 +1 +-4 +-4 +0 +6 +2 +1 +-4 +0 +-4 +5 +0 +-2 +-2 +3 +0 +11 +10 +-3 +0 +-6 +6 +14 +-4 +1 +-1 +2 +-6 +5 +7 +15 +6 +-2 +-7 +-1 +-8 +9 +-3 +8 +12 +5 +-10 +-2 +-1 +-8 +11 +-1 +-6 +-3 +-3 +-7 +-5 +-3 +7 +-5 +-4 +-1 +2 +-2 +0 +1 +-2 +4 +8 +0 +4 +9 +-3 +11 +12 +0 +-4 +-2 +-6 +-2 +2 +7 +8 +-2 +0 +4 +-5 +-5 +9 +1 +-2 +8 +-3 +-6 +-7 +-4 +-5 +4 +9 +-25 +-47 +18 +-21 +-44 +13 +-22 +-42 +22 +-13 +-33 +25 +-12 +-30 +24 +-12 +-31 +34 +-6 +-24 +26 +-12 +-29 +38 +5 +-23 +27 +-11 +-19 +40 +-2 +-21 +36 +-1 +-25 +24 +-9 +-29 +30 +-10 +-19 +40 +-2 +-22 +32 +-9 +-32 +24 +-12 +-32 +43 +-1 +-24 +42 +3 +-15 +28 +-12 +-27 +38 +-4 +-28 +28 +-12 +-31 +24 +-5 +-20 +42 +0 +-25 +41 +2 +-28 +29 +-11 +-32 +26 +-11 +-32 +35 +-3 +-25 +32 +-4 +-28 +22 +-12 +-28 +29 +-8 +-27 +30 +-6 +-26 +25 +-9 +-25 +34 +-6 +-25 +30 +-8 +-20 +42 +-1 +-19 +30 +-6 +-29 +30 +-7 +-17 +35 +-5 +-21 +29 +-10 +-29 +32 +-7 +-23 +38 +-4 +-27 +30 +-7 +-22 +28 +-9 +-22 +31 +-5 +-26 +44 +1 +-25 +27 +-8 +-30 +31 +-8 +-28 +17 +26 +24 +22 +16 +16 +19 +13 +14 +13 +25 +10 +4 +13 +1 +-2 +11 +5 +-3 +10 +2 +-3 +0 +14 +-2 +15 +0 +1 +-5 +-1 +-2 +-5 +-5 +0 +-2 +-7 +12 +3 +-3 +-2 +-2 +-1 +2 +-1 +-1 +-2 +-3 +1 +-3 +-2 +2 +1 +3 +-3 +0 +6 +8 +-2 +-2 +5 +3 +17 +-1 +-4 +-1 +7 +11 +1 +-2 +1 +-5 +4 +-3 +-2 +4 +-3 +2 +2 +-2 +6 +-3 +4 +-2 +-2 +1 +-3 +-5 +-3 +1 +-2 +4 +15 +2 +-2 +-4 +-3 +-2 +3 +-1 +-1 +16 +9 +-2 +-3 +-3 +-7 +-4 +6 +-3 +9 +13 +13 +-2 +-4 +10 +13 +5 +-6 +-3 +-1 +-4 +4 +-5 +9 +13 +-5 +-4 +14 +-25 +8 +-29 +-52 +9 +-26 +-44 +11 +-24 +-40 +16 +-19 +-30 +21 +-15 +-33 +34 +-4 +-27 +33 +-6 +-18 +30 +-9 +-27 +25 +-4 +-24 +32 +-7 +-23 +28 +-11 +-29 +34 +-3 +-23 +36 +-5 +-27 +26 +-9 +-28 +33 +-8 +-20 +27 +-10 +-29 +29 +-9 +-27 +28 +-6 +-23 +39 +-3 +-20 +31 +-8 +-22 +41 +3 +-17 +33 +-5 +-28 +28 +-11 +-29 +30 +-6 +-19 +51 +5 +-22 +31 +-7 +-16 +28 +-11 +-32 +35 +-6 +-22 +25 +-12 +-29 +23 +-1 +-26 +28 +-10 +-27 +34 +-6 +-21 +32 +-9 +-29 +26 +-8 +-14 +29 +-7 +-29 +33 +-6 +-24 +34 +-4 +-27 +29 +-8 +-25 +29 +-9 +-9 +32 +-3 +-28 +29 +-8 +-28 +34 +-5 +-28 +28 +-10 +-24 +27 +-8 +-19 +30 +-7 +-27 +30 +4 +-23 +33 +-7 +-27 +34 +1 +26 +25 +17 +21 +20 +13 +16 +11 +11 +7 +13 +6 +16 +6 +-1 +-2 +2 +-2 +5 +1 +-1 +0 +1 +0 +4 +6 +5 +6 +14 +8 +-4 +-4 +11 +9 +-5 +-4 +-6 +-5 +0 +-1 +7 +-3 +-3 +-3 +-1 +-3 +1 +-2 +-4 +1 +4 +5 +-2 +9 +-2 +3 +5 +8 +-4 +-4 +-5 +1 +9 +-4 +-3 +-2 +7 +-2 +6 +13 +-1 +-4 +1 +-2 +-6 +19 +1 +6 +-1 +-5 +-2 +3 +10 +1 +-2 +-4 +-4 +-2 +6 +9 +2 +0 +-4 +-3 +0 +-3 +5 +-3 +-4 +2 +-3 +15 +0 +0 +-5 +-1 +0 +3 +-4 +-2 +-4 +4 +-6 +1 +-2 +4 +2 +6 +-1 +-2 +-4 +-1 +14 +5 +-5 +0 +-3 +-3 +12 +-25 +-49 +11 +-23 +-41 +17 +-19 +-39 +20 +-17 +-34 +22 +-14 +-32 +25 +-10 +-30 +37 +-1 +-24 +42 +2 +-25 +39 +-2 +-28 +24 +-9 +-31 +30 +-7 +-29 +28 +-11 +-28 +32 +-8 +-27 +32 +-6 +-27 +37 +-4 +-17 +45 +3 +-25 +26 +-9 +-29 +27 +-6 +-29 +34 +-1 +-18 +37 +-6 +-26 +30 +-9 +-25 +33 +-6 +-26 +28 +-2 +-17 +29 +-10 +-24 +29 +-2 +-25 +26 +-9 +-30 +29 +-9 +-17 +50 +3 +-25 +26 +-5 +-30 +31 +-9 +-31 +44 +1 +-25 +30 +-8 +-30 +26 +-7 +-30 +26 +-4 +-15 +43 +3 +-27 +24 +-15 +-26 +25 +-10 +-25 +36 +-5 +-26 +29 +1 +-26 +31 +-8 +-25 +43 +0 +-28 +30 +-10 +-29 +43 +0 +-28 +27 +-11 +-27 +26 +-9 +-26 +30 +-10 +-28 +28 +-8 +-30 +28 +-7 +-21 +26 +29 +28 +22 +19 +15 +13 +14 +16 +9 +3 +3 +11 +7 +19 +9 +5 +4 +3 +-1 +1 +4 +-4 +-2 +2 +5 +10 +8 +8 +-3 +1 +-6 +-2 +0 +-5 +0 +-1 +-4 +13 +-1 +3 +8 +-4 +5 +0 +2 +3 +-3 +-5 +0 +11 +12 +-5 +-3 +-5 +-4 +-6 +-3 +1 +6 +2 +-3 +2 +5 +5 +8 +-1 +3 +1 +-5 +-2 +-4 +-6 +3 +4 +-1 +9 +-3 +2 +-2 +1 +-2 +-4 +4 +-3 +-3 +5 +0 +1 +7 +-5 +11 +-2 +-2 +-3 +-5 +-2 +12 +1 +2 +1 +-2 +-7 +-4 +-4 +-1 +-3 +-3 +16 +1 +0 +12 +1 +2 +-6 +3 +-1 +-2 +4 +-2 +-5 +0 +1 +-1 +-4 +4 +0 +0 +25 +-15 +-44 +4 +-29 +-46 +15 +-16 +-25 +19 +-17 +-26 +37 +-4 +-31 +20 +-10 +-31 +24 +-13 +-30 +28 +-11 +-26 +27 +-10 +-30 +31 +0 +-25 +30 +-7 +-28 +33 +-4 +-27 +27 +-10 +-27 +28 +-4 +-25 +47 +3 +-25 +33 +-7 +-29 +33 +-6 +-30 +28 +-8 +-20 +27 +-2 +-23 +45 +0 +-23 +26 +-10 +-31 +26 +-5 +-22 +30 +-5 +-25 +31 +0 +-23 +27 +-10 +-18 +34 +-7 +-29 +29 +-8 +-23 +31 +2 +-23 +29 +-7 +-26 +40 +-3 +-25 +27 +-10 +-13 +31 +-8 +-29 +33 +-5 +-15 +28 +-11 +-31 +26 +-11 +-30 +35 +-6 +-20 +46 +4 +-24 +28 +-2 +-23 +24 +-10 +-18 +29 +-10 +-30 +30 +-9 +-16 +45 +0 +-24 +40 +-2 +-30 +26 +-10 +-32 +30 +-9 +-23 +26 +-12 +-23 +26 +-5 +-21 +26 +-11 +-28 +32 +32 +22 +18 +18 +13 +12 +11 +17 +9 +5 +8 +18 +15 +1 +1 +0 +5 +2 +2 +12 +12 +-2 +-3 +1 +-1 +-1 +2 +16 +0 +2 +-3 +-5 +5 +-5 +0 +-3 +-2 +-1 +-3 +0 +-4 +-3 +-1 +1 +-1 +0 +-3 +0 +0 +8 +7 +-2 +15 +18 +-1 +-1 +-3 +-5 +-1 +-2 +4 +1 +-4 +1 +4 +6 +6 +1 +0 +-4 +4 +-6 +-5 +4 +0 +-5 +-4 +5 +9 +-5 +-5 +-4 +3 +4 +0 +-1 +2 +-4 +2 +0 +10 +0 +3 +-5 +-3 +12 +6 +-5 +-3 +16 +-1 +-1 +1 +0 +-3 +-6 +1 +-5 +3 +-4 +3 +-1 +-1 +2 +9 +3 +10 +0 +-2 +-6 +-1 +0 +-1 +-4 +2 +-6 +-1 +-33 +13 +-25 +-42 +9 +-25 +-43 +20 +-11 +-34 +24 +-14 +-34 +21 +-13 +-19 +27 +-11 +-24 +28 +-10 +-29 +26 +-11 +-29 +33 +-7 +-27 +31 +-5 +-26 +30 +-8 +-26 +30 +-6 +-25 +42 +-1 +-18 +30 +-7 +-26 +31 +0 +-21 +26 +-10 +-24 +31 +-9 +-28 +29 +-8 +-27 +34 +-6 +-24 +30 +-1 +-24 +34 +-6 +-22 +46 +3 +-26 +28 +-11 +-22 +30 +-7 +-30 +28 +-7 +-26 +29 +4 +-23 +30 +-9 +-27 +30 +-7 +-28 +37 +2 +-22 +36 +-2 +-23 +27 +-12 +-31 +27 +-9 +-27 +28 +-9 +-27 +32 +1 +-24 +33 +-5 +-20 +29 +-9 +-24 +40 +0 +-18 +29 +-10 +-29 +30 +-5 +-16 +29 +-9 +-30 +26 +-10 +-25 +42 +-1 +-23 +31 +-9 +-25 +31 +-2 +-26 +33 +-7 +-19 +29 +-6 +-29 +33 +-6 +-18 +32 +-7 +14 +22 +19 +32 +32 +15 +20 +9 +6 +5 +23 +5 +1 +4 +20 +3 +1 +-5 +-3 +1 +-3 +6 +-2 +0 +2 +0 +1 +-1 +-2 +3 +-2 +-2 +10 +6 +-4 +-2 +-1 +-2 +6 +0 +-1 +13 +2 +-4 +0 +-1 +0 +0 +8 +-1 +-4 +3 +-4 +-5 +1 +13 +9 +10 +10 +-4 +-2 +0 +7 +7 +-6 +-4 +-4 +-5 +-3 +-3 +-3 +-5 +16 +1 +0 +9 +1 +11 +5 +-6 +-1 +11 +-5 +-4 +5 +-6 +-7 +-3 +-1 +-5 +1 +-3 +0 +10 +6 +6 +-4 +-6 +-6 +1 +0 +-1 +-4 +-4 +0 +-3 +-2 +2 +2 +-3 +1 +-3 +3 +-2 +0 +-2 +13 +3 +1 +-4 +6 +3 +10 +4 +-6 +-5 +-6 +-2 +11 +-26 +-48 +21 +-16 +-41 +10 +-17 +-31 +32 +-9 +-33 +18 +-17 +-32 +22 +-14 +-30 +28 +-11 +-31 +29 +-9 +-30 +29 +-7 +-24 +32 +-8 +-19 +30 +-7 +-15 +50 +4 +-24 +23 +-13 +-32 +42 +1 +-27 +25 +-11 +-32 +27 +-11 +-28 +33 +-5 +-29 +39 +-3 +-23 +37 +-4 +-29 +31 +-6 +-25 +44 +1 +-21 +25 +-9 +-27 +30 +-5 +-30 +27 +-11 +-26 +34 +3 +-19 +37 +-4 +-24 +23 +-11 +-22 +39 +-3 +-22 +26 +-3 +-26 +25 +-12 +-25 +34 +-3 +-29 +41 +-2 +-27 +24 +-11 +-30 +29 +-6 +-28 +36 +-4 +-27 +30 +-8 +-21 +27 +-9 +-27 +41 +0 +-24 +29 +-6 +-28 +29 +-6 +-28 +30 +-8 +-19 +31 +-9 +-27 +30 +-5 +-26 +36 +-4 +-26 +31 +-4 +-13 +31 +-5 +-28 +39 +-2 +-24 +25 +-9 +-27 +21 +29 +24 +22 +19 +18 +19 +11 +27 +11 +7 +2 +2 +2 +2 +2 +1 +6 +-1 +9 +11 +1 +12 +9 +3 +3 +-2 +-2 +-3 +-4 +9 +-2 +-4 +-4 +15 +4 +-4 +11 +11 +-3 +-7 +-1 +-3 +1 +3 +12 +1 +0 +-4 +-4 +-5 +2 +-5 +-2 +-3 +17 +0 +5 +-2 +-5 +-4 +1 +4 +12 +-2 +-5 +-4 +-4 +6 +5 +11 +-2 +-3 +-8 +2 +-4 +-4 +0 +-3 +17 +1 +-3 +-2 +3 +1 +2 +-2 +-1 +-2 +3 +1 +11 +1 +-3 +0 +-3 +11 +-2 +-7 +1 +0 +-3 +-1 +14 +0 +-2 +-5 +-4 +-3 +2 +7 +3 +-2 +-1 +-4 +-2 +-3 +0 +3 +5 +-4 +-1 +-2 +-4 +8 +6 +3 +2 +16 +-22 +-45 +11 +-24 +-45 +14 +-22 +-39 +15 +-13 +-32 +28 +-11 +-33 +24 +-11 +-30 +28 +-8 +-28 +28 +-9 +-19 +27 +0 +-26 +29 +-1 +-11 +40 +-2 +-29 +32 +-9 +-21 +37 +-5 +-29 +26 +-12 +-28 +29 +-6 +-29 +31 +-7 +-24 +43 +4 +-26 +27 +-5 +-14 +27 +-10 +-32 +36 +0 +-25 +31 +-9 +-28 +39 +-2 +-26 +25 +-12 +-29 +26 +-11 +-24 +44 +2 +-22 +27 +-12 +-30 +29 +-9 +-29 +32 +-7 +-25 +28 +-9 +-29 +32 +-6 +-18 +34 +-3 +-27 +41 +2 +-24 +31 +-8 +-28 +27 +-10 +-29 +33 +-7 +-26 +34 +1 +-13 +33 +-7 +-26 +32 +-8 +-30 +26 +-9 +-29 +27 +-5 +-27 +34 +-3 +-23 +28 +-9 +-17 +33 +-5 +-18 +32 +-3 +-25 +27 +-12 +-30 +29 +-9 +-24 +31 +-7 +-20 +29 +-9 +-28 +24 +24 +25 +22 +17 +23 +21 +19 +7 +9 +6 +16 +4 +16 +11 +3 +1 +-1 +6 +8 +-2 +0 +5 +14 +0 +12 +12 +0 +0 +-5 +-5 +-5 +2 +-1 +3 +8 +-2 +-6 +-5 +-2 +-1 +-6 +-6 +-2 +0 +-2 +-2 +2 +6 +3 +5 +2 +5 +-2 +8 +4 +10 +15 +-1 +-6 +-5 +4 +-6 +1 +4 +6 +-3 +2 +-2 +4 +-2 +3 +-2 +4 +-5 +-7 +-1 +-1 +-1 +1 +3 +-5 +-1 +-3 +3 +-2 +-2 +4 +6 +1 +10 +-1 +15 +1 +-6 +6 +5 +-5 +0 +-5 +-5 +-1 +-7 +-3 +1 +1 +9 +0 +2 +12 +18 +-1 +-6 +0 +-7 +1 +-5 +-4 +-5 +11 +8 +2 +-5 +2 +9 +-2 +-2 +-6 +7 +-28 +-50 +12 +-24 +-44 +9 +-24 +-38 +22 +-16 +-31 +38 +-3 +-27 +23 +-13 +-33 +27 +-9 +-21 +29 +0 +-26 +22 +-11 +-32 +27 +-9 +-28 +30 +-6 +-12 +31 +-8 +-29 +26 +-7 +-24 +38 +-4 +-28 +32 +-6 +-15 +29 +-9 +-30 +31 +-3 +-26 +43 +1 +-24 +27 +-11 +-30 +29 +-11 +-29 +36 +-4 +-26 +29 +0 +-25 +36 +-5 +-24 +30 +-9 +-22 +36 +-3 +-23 +27 +-9 +-26 +29 +-9 +-30 +28 +-10 +-27 +37 +0 +-24 +32 +-7 +-19 +32 +-7 +-27 +32 +-5 +-24 +33 +-6 +-20 +38 +-4 +-28 +48 +3 +-23 +43 +-1 +-27 +34 +-7 +-27 +27 +-12 +-33 +27 +-10 +-32 +34 +-7 +-22 +26 +-12 +-27 +31 +-7 +-21 +29 +-5 +-29 +45 +1 +-26 +34 +-4 +-29 +29 +-10 +-25 +35 +-3 +-26 +26 +-11 +-29 +18 +33 +27 +25 +28 +14 +20 +15 +11 +9 +2 +3 +9 +14 +0 +12 +12 +-2 +-1 +1 +10 +5 +2 +-3 +-7 +-6 +16 +2 +1 +-2 +-4 +1 +-4 +-4 +-3 +4 +-2 +1 +-2 +-1 +4 +12 +17 +14 +12 +10 +-6 +2 +-3 +-8 +-3 +-8 +-5 +-4 +-3 +-3 +-3 +-4 +3 +5 +-4 +11 +2 +-2 +-3 +-1 +-1 +-5 +-4 +9 +-2 +-5 +13 +-1 +3 +0 +10 +4 +1 +-6 +-5 +-3 +-1 +-3 +-1 +0 +2 +1 +-3 +7 +-1 +2 +-1 +-3 +5 +-1 +6 +8 +0 +-4 +-5 +-1 +5 +9 +4 +5 +0 +13 +-2 +-3 +-3 +-3 +-1 +-6 +-2 +0 +-5 +8 +-5 +4 +-4 +-3 +13 +-3 +-4 +3 +-1 +0 +-34 +15 +-24 +-45 +7 +-27 +-33 +22 +-17 +-39 +16 +-14 +-35 +23 +-7 +-23 +36 +-3 +-27 +27 +-12 +-14 +28 +-11 +-32 +34 +-6 +-30 +27 +-9 +-29 +28 +-1 +-13 +28 +-9 +-19 +33 +-8 +-27 +24 +-7 +-28 +30 +-2 +-25 +28 +-7 +-24 +30 +-7 +-25 +45 +3 +-14 +37 +-3 +-26 +30 +-9 +-31 +43 +-1 +-28 +29 +-9 +-26 +32 +-9 +-27 +38 +-3 +-23 +28 +-9 +-28 +26 +-12 +-28 +42 +-2 +-24 +41 +-1 +-29 +29 +-7 +-16 +43 +-1 +-29 +38 +-3 +-30 +24 +-13 +-29 +33 +-7 +-30 +32 +-6 +-26 +30 +-2 +-13 +41 +-2 +-30 +26 +-10 +-29 +26 +-12 +-31 +29 +-9 +-25 +26 +-7 +-28 +28 +-10 +-23 +32 +-6 +-28 +30 +-8 +-25 +30 +-5 +-27 +31 +-4 +-20 +36 +-3 +-27 +46 +2 +-23 +32 +-5 +12 +25 +32 +21 +17 +13 +10 +15 +6 +4 +9 +11 +4 +8 +3 +3 +16 +2 +5 +8 +-4 +-2 +-2 +1 +-2 +-3 +0 +5 +3 +2 +6 +8 +0 +-4 +-4 +2 +13 +13 +-3 +-5 +-4 +10 +-3 +5 +-1 +1 +-4 +9 +5 +-3 +-7 +-6 +-7 +1 +-2 +-1 +4 +-2 +7 +-2 +-1 +0 +11 +6 +-1 +-4 +-3 +0 +-5 +-4 +1 +18 +0 +-3 +-4 +11 +9 +5 +1 +-4 +10 +0 +-7 +1 +4 +8 +-3 +-6 +8 +-4 +-9 +-7 +5 +-3 +0 +-2 +-5 +-3 +1 +-1 +0 +0 +-2 +3 +2 +15 +15 +-1 +-5 +13 +-3 +-2 +-5 +-6 +-5 +-5 +2 +-4 +-1 +-3 +-3 +14 +-1 +1 +-2 +3 +2 +-3 +21 +-18 +-39 +6 +-28 +-44 +11 +-21 +-39 +16 +-10 +-33 +25 +-3 +-30 +27 +-11 +-31 +42 +0 +-28 +26 +-1 +-27 +26 +-10 +-31 +27 +-11 +-30 +44 +6 +-13 +37 +-5 +-24 +30 +-8 +-26 +42 +-2 +-28 +28 +-10 +-33 +28 +-11 +-18 +26 +-12 +-32 +28 +-8 +-28 +26 +-8 +-27 +30 +1 +-22 +38 +-4 +-28 +30 +-9 +-26 +42 +6 +-22 +44 +0 +-23 +27 +-10 +-31 +31 +-9 +-27 +28 +-9 +-29 +42 +-1 +-25 +44 +1 +-25 +23 +-15 +-28 +44 +0 +-28 +26 +-12 +-27 +35 +0 +-16 +27 +-12 +-32 +36 +-3 +-26 +28 +-9 +-25 +28 +-9 +-24 +41 +0 +-25 +29 +-10 +-14 +33 +-9 +-27 +26 +-12 +-32 +37 +-4 +-23 +26 +-6 +-27 +34 +-6 +-19 +27 +-5 +-27 +28 +-9 +-26 +28 +-9 +-27 +30 +-9 +-24 +40 +-2 +-26 +31 +-6 +-16 +40 +-2 +-23 +37 +-5 +-29 +26 +-10 +-31 +30 +-10 +-24 +30 +-8 +-15 +46 +3 +-26 +27 +1 +-26 +25 +-9 +-29 +23 +-10 +-27 +35 +-2 +-24 +28 +-6 +-23 +32 +-4 +-23 +28 +-7 +-24 +42 +0 +-24 +29 +-8 +-23 +31 +-10 +-28 +27 +-8 +-22 +35 +-6 +-29 +39 +-3 +-24 +43 +-1 +-28 +28 +-9 +-32 +27 +-11 +-26 +27 +-8 +-27 +37 +-2 +-25 +34 +-6 +-28 +29 +-9 +-28 +30 +-6 +-19 +34 +-7 +-27 +34 +-6 +-27 +35 +-5 +-24 +30 +-9 +-23 +29 +-10 +-21 +27 +-8 +-28 +40 +-1 +-25 +30 +-6 +-25 +31 +-7 +-25 +36 +-2 +-25 +29 +-7 +-20 +30 +-4 +-28 +28 +-11 +-27 +33 +-6 +-26 +30 +-8 +-22 +35 +-6 +-26 +31 +-6 +-25 +30 +-9 +-24 +38 +-3 +-25 +19 +28 +26 +24 +17 +13 +19 +10 +9 +10 +13 +10 +4 +10 +16 +11 +1 +2 +6 +-3 +-4 +-1 +6 +5 +-2 +0 +3 +1 +4 +-1 +-1 +11 +1 +-2 +-1 +1 +-4 +8 +2 +-4 +-4 +0 +0 +-2 +0 +3 +-2 +1 +5 +6 +-2 +-1 +14 +4 +-5 +-4 +4 +6 +-1 +-1 +-3 +-2 +13 +3 +-5 +-5 +-4 +-2 +-2 +-4 +-4 +15 +0 +0 +5 +1 +-2 +7 +-3 +3 +-1 +2 +-2 +3 +-2 +0 +7 +3 +-4 +-4 +1 +-4 +0 +-4 +-3 +1 +-1 +3 +7 +17 +15 +-1 +-5 +-7 +-7 +-3 +10 +1 +0 +-3 +-2 +3 +1 +-3 +-4 +7 +4 +-3 +-3 +-1 +12 +1 +-4 +-1 +-2 +-3 +0 +5 +21 +-19 +-45 +5 +-30 +-46 +17 +-17 +-38 +21 +-15 +-33 +23 +-9 +-31 +38 +-5 +-27 +28 +-11 +-27 +26 +-11 +-30 +35 +-6 +-28 +29 +-10 +-25 +44 +1 +-27 +28 +-10 +-29 +28 +-9 +-23 +31 +-8 +-29 +36 +-1 +-24 +36 +-5 +-21 +28 +-11 +-27 +27 +-10 +-28 +45 +2 +-23 +28 +-2 +-26 +26 +-9 +-29 +30 +-8 +-26 +30 +-4 +-26 +33 +-7 +-17 +32 +-7 +-26 +32 +-6 +-27 +29 +-1 +-24 +29 +-9 +-25 +35 +-5 +-27 +32 +-3 +-21 +33 +-5 +-28 +36 +-4 +-24 +29 +-6 +-25 +33 +-6 +-27 +41 +-1 +-26 +32 +-7 +-27 +28 +-4 +-20 +37 +-5 +-25 +35 +-1 +-24 +26 +-12 +-23 +28 +-8 +-29 +32 +-7 +-27 +29 +-2 +-27 +33 +3 +-22 +29 +-8 +-21 +28 +-11 +-30 +28 +-9 +-19 +36 +2 +-24 +21 +22 +20 +27 +34 +24 +10 +13 +6 +9 +5 +5 +6 +5 +1 +14 +4 +0 +-1 +4 +7 +6 +2 +-2 +-2 +14 +8 +2 +-1 +-2 +-4 +-2 +11 +4 +-4 +-5 +-4 +2 +-3 +7 +-4 +-4 +2 +1 +-4 +-3 +2 +5 +-4 +-2 +11 +9 +-3 +3 +-5 +-2 +-5 +-1 +-4 +-1 +-1 +2 +0 +1 +0 +4 +-1 +-1 +-2 +2 +12 +15 +9 +7 +-3 +10 +-1 +5 +-3 +-3 +-10 +3 +-3 +5 +10 +1 +-6 +-5 +12 +2 +-1 +-8 +-6 +-2 +-5 +-1 +11 +8 +16 +-1 +-3 +-8 +-4 +12 +-4 +-3 +-5 +-2 +-2 +-3 +-6 +-1 +4 +12 +10 +-5 +-5 +-4 +-4 +0 +0 +1 +-6 +3 +14 +15 +0 +7 +-29 +8 +-27 +-49 +3 +-18 +-41 +19 +-15 +-37 +19 +-16 +-26 +30 +-10 +-31 +26 +-3 +-29 +32 +-9 +-31 +30 +-10 +-32 +22 +-14 +-30 +28 +-9 +-25 +37 +-4 +-26 +30 +-5 +-28 +34 +-6 +-28 +28 +-7 +-28 +30 +-3 +-26 +30 +-7 +-27 +30 +-8 +-25 +30 +-2 +-22 +31 +-6 +-17 +29 +-9 +-25 +32 +-4 +-26 +32 +-4 +-10 +32 +-8 +-28 +36 +-4 +-27 +37 +-5 +-27 +31 +-8 +-26 +32 +-5 +-27 +36 +-5 +-16 +42 +1 +-25 +41 +1 +-17 +36 +-6 +-18 +36 +-6 +-32 +23 +-8 +-27 +27 +-11 +-32 +35 +-7 +-27 +39 +-3 +-28 +31 +-9 +-32 +27 +-10 +-32 +28 +3 +-23 +29 +-5 +-29 +41 +4 +-20 +27 +-11 +-25 +26 +-11 +-26 +39 +-3 +-26 +29 +-6 +-26 +36 +-2 +-15 +38 +-4 +-25 +31 +-5 +8 +18 +16 +19 +13 +12 +9 +23 +19 +4 +15 +2 +5 +-2 +-2 +17 +9 +-2 +4 +-1 +-6 +2 +1 +0 +0 +-2 +1 +9 +1 +-3 +-2 +9 +1 +6 +-3 +-1 +-3 +-2 +12 +-1 +2 +0 +-4 +1 +2 +0 +5 +12 +7 +-4 +-4 +-4 +-1 +0 +-2 +3 +7 +-4 +-1 +-2 +13 +9 +4 +1 +-3 +-3 +-6 +-4 +1 +11 +-4 +-5 +-3 +-4 +-5 +15 +1 +1 +1 +-7 +-3 +3 +-3 +4 +1 +1 +-6 +10 +2 +2 +-1 +11 +3 +5 +18 +-1 +-2 +-4 +-1 +-6 +8 +-5 +-8 +-5 +6 +5 +-6 +-5 +-4 +11 +-3 +-5 +-3 +5 +-2 +3 +-6 +11 +-2 +-4 +-4 +0 +0 +14 +-2 +6 +2 +3 +-3 +5 +-2 +0 +1 +3 +4 +-4 +15 +-1 +-5 +-7 +-3 +4 +-4 +12 +9 +-5 +-7 +-5 +-6 +-3 +11 +-3 +-3 +-1 +10 +-2 +-3 +-4 +-3 +1 +9 +-4 +-3 +6 +-4 +4 +0 +-3 +0 +4 +-4 +3 +4 +-1 +1 +-3 +1 +2 +-3 +-1 +2 +-1 +2 +5 +-1 +1 +1 +11 +5 +-3 +0 +-1 +0 +-1 +0 +-3 +-4 +-2 +-2 +5 +0 +13 +3 +13 +-3 +-3 +-4 +-3 +-4 +-5 +-1 +-2 +5 +16 +-2 +-4 +-6 +-2 +-4 +2 +-1 +5 +-2 +-2 +2 +-3 +12 +2 +4 +1 +0 +-3 +3 +-3 +-2 +9 +-3 +0 +3 +1 +12 +12 +9 +-3 +-4 +-4 +-3 +-5 +-4 +0 +-5 +-4 +0 +-3 +0 +14 +12 +-25 +-48 +12 +-24 +-44 +24 +-12 +-38 +17 +-17 +-37 +22 +-14 +-31 +23 +-12 +-25 +33 +-7 +-27 +36 +-4 +-26 +29 +-6 +-30 +33 +-5 +-25 +27 +-11 +-29 +27 +-11 +-16 +36 +-1 +-21 +43 +-1 +-28 +35 +-6 +-21 +33 +-7 +-29 +24 +-4 +-29 +35 +-7 +-28 +29 +-8 +-23 +26 +-12 +-28 +37 +-3 +-26 +32 +-6 +-16 +46 +2 +-18 +29 +-7 +-31 +27 +-10 +-26 +32 +-8 +-29 +37 +-4 +-26 +26 +-10 +-30 +29 +-8 +-20 +35 +-5 +-27 +27 +-5 +-27 +33 +-6 +-27 +30 +-8 +-29 +28 +-8 +-25 +46 +4 +-16 +45 +2 +-24 +36 +-5 +-30 +26 +-11 +-21 +25 +-8 +-28 +29 +-8 +-28 +37 +-3 +-29 +30 +-7 +-17 +30 +-8 +-24 +27 +-10 +-30 +31 +-5 +-29 +30 +-7 +-28 +31 +-8 +-23 +27 +-7 +-27 +25 +27 +25 +21 +21 +13 +17 +26 +12 +11 +26 +8 +8 +5 +10 +4 +-3 +-2 +4 +3 +0 +-1 +-4 +17 +3 +2 +7 +14 +6 +-6 +-6 +4 +6 +3 +0 +-5 +9 +-4 +0 +-2 +-2 +2 +7 +-3 +-5 +1 +4 +10 +5 +-5 +-5 +-5 +-4 +-3 +9 +-3 +-4 +1 +-2 +-4 +-5 +-3 +5 +-3 +-1 +0 +11 +0 +-2 +4 +1 +16 +2 +-5 +-4 +-2 +6 +8 +1 +6 +-4 +-8 +-8 +12 +-1 +-6 +-8 +4 +9 +0 +-2 +1 +-6 +-2 +-4 +-3 +-4 +-2 +-4 +4 +11 +1 +2 +15 +2 +4 +-4 +1 +-5 +-5 +-5 +-2 +1 +10 +8 +6 +-1 +1 +11 +13 +1 +4 +2 +-4 +-4 +-2 +-6 +-8 +6 +-25 +-44 +20 +-20 +-43 +14 +-22 +-42 +19 +-13 +-35 +31 +-9 +-32 +22 +-5 +-29 +28 +-11 +-21 +35 +-7 +-31 +27 +-10 +-25 +27 +-11 +-30 +28 +-8 +-26 +27 +-11 +-28 +35 +-5 +-27 +30 +1 +-20 +27 +-9 +-22 +37 +-4 +-25 +32 +-7 +-16 +40 +-3 +-27 +38 +-2 +-29 +27 +-10 +-25 +25 +-4 +-19 +42 +0 +-22 +48 +3 +-25 +23 +-15 +-25 +28 +1 +-27 +30 +-8 +-23 +27 +-12 +-25 +25 +-13 +-32 +38 +-3 +-20 +26 +-10 +-31 +28 +-7 +-30 +34 +-4 +-22 +28 +-8 +-29 +37 +0 +-25 +29 +1 +-21 +28 +-10 +-28 +32 +-7 +-27 +31 +-2 +-24 +28 +-9 +-24 +35 +-5 +-26 +30 +-7 +-28 +33 +-7 +-27 +30 +-6 +-18 +43 +-1 +-23 +40 +0 +-25 +33 +-7 +-19 +29 +-5 +-27 +29 +-10 +-30 +34 +-2 +-27 +30 +-9 +-25 +25 +-7 +-29 +33 +-7 +-21 +31 +-8 +-29 +31 +-7 +-18 +32 +-8 +-29 +29 +-8 +-24 +34 +-4 +-27 +30 +-9 +-25 +46 +2 +-16 +28 +-8 +-26 +25 +-9 +-13 +34 +-7 +-27 +26 +-7 +-28 +40 +4 +-14 +37 +-3 +-17 +29 +-11 +-32 +26 +-11 +-26 +37 +-5 +-26 +29 +-5 +-29 +25 +-11 +-30 +28 +-5 +-21 +30 +-9 +-28 +39 +-1 +-27 +28 +-8 +-17 +48 +4 +-26 +30 +-8 +-30 +28 +-7 +-21 +31 +-9 +-27 +33 +-7 +-29 +29 +-8 +-23 +41 +5 +-23 +26 +-13 +-17 +28 +-11 +-30 +30 +-4 +-17 +27 +-10 +-29 +35 +1 +-18 +31 +-6 +-22 +27 +-8 +-27 +32 +-2 +-25 +42 +-1 +-27 +43 +-1 +-26 +29 +-11 +-26 +23 +-11 +-29 +35 +-5 +-28 +30 +-7 +-25 +26 +-10 +-30 +17 +24 +29 +23 +35 +16 +11 +9 +15 +8 +11 +9 +3 +11 +4 +15 +4 +2 +-2 +-1 +-2 +-2 +-4 +5 +-3 +9 +0 +-2 +-2 +0 +-2 +0 +0 +19 +3 +0 +-3 +-1 +0 +6 +-4 +1 +15 +2 +2 +-3 +-1 +-3 +10 +-3 +-2 +-3 +2 +0 +7 +6 +2 +6 +0 +-5 +-7 +-2 +-1 +17 +1 +0 +12 +9 +-5 +-5 +-6 +-2 +-6 +-3 +-4 +-3 +0 +-3 +8 +10 +-3 +3 +-2 +4 +-4 +-4 +-4 +6 +3 +0 +1 +-1 +-1 +1 +1 +-3 +1 +-2 +4 +-3 +1 +3 +-2 +16 +13 +-3 +-2 +-4 +-2 +0 +14 +0 +-4 +-3 +-2 +-8 +-1 +0 +-4 +4 +-4 +-2 +-4 +1 +2 +6 +0 +0 +1 +-2 +7 +5 +3 +10 +-2 +-4 +4 +-3 +0 +1 +5 +-2 +11 +4 +-3 +-1 +-7 +14 +1 +11 +4 +9 +2 +-7 +-2 +-5 +3 +-1 +-1 +-8 +-2 +-3 +-6 +0 +-4 +-3 +2 +-5 +6 +2 +-2 +1 +-2 +3 +-3 +-3 +0 +13 +2 +-2 +4 +-3 +10 +3 +9 +-3 +7 +14 +13 +14 +-5 +-10 +-6 +-8 +-6 +4 +-6 +-9 +-8 +-1 +7 +1 +2 +6 +6 +5 +10 +-3 +-2 +4 +-7 +-5 +0 +1 +-3 +2 +-1 +-1 +-1 +1 +6 +8 +0 +-4 +5 +8 +-1 +-4 +10 +-3 +0 +-4 +-6 +4 +-2 +-5 +-4 +11 +3 +9 +-3 +-3 +-1 +-5 +-6 +-4 +-1 +1 +10 +-3 +-4 +-2 +5 +-4 +0 +1 +-32 +14 +-23 +-42 +9 +-23 +-38 +14 +-21 +-30 +21 +-7 +-31 +30 +-7 +-31 +34 +-7 +-27 +31 +-7 +-29 +26 +-9 +-25 +27 +-10 +-29 +36 +1 +-26 +36 +-6 +-27 +34 +-5 +-30 +35 +-4 +-29 +32 +-5 +-27 +29 +-10 +-27 +26 +-11 +-28 +30 +-7 +-27 +29 +-8 +-23 +36 +-5 +-27 +32 +-6 +-16 +31 +-8 +-28 +29 +-8 +-25 +31 +-7 +-23 +28 +-7 +-25 +41 +4 +-22 +28 +-8 +-29 +30 +-6 +-19 +35 +4 +-23 +30 +-8 +-28 +33 +-6 +-24 +39 +-3 +-23 +32 +-7 +-25 +44 +1 +-17 +25 +-11 +-29 +33 +-6 +-29 +30 +-8 +-26 +27 +-8 +-22 +27 +-9 +-24 +40 +-1 +-24 +49 +4 +-24 +23 +-13 +-20 +49 +4 +-27 +27 +-11 +-20 +32 +-8 +-28 +22 +-15 +-20 +28 +-9 +-31 +27 +-11 +-30 +33 +-5 +20 +24 +19 +17 +20 +13 +11 +14 +6 +8 +4 +23 +8 +17 +2 +5 +-1 +8 +0 +13 +2 +-1 +14 +1 +3 +-1 +16 +0 +-4 +2 +-2 +3 +-5 +-2 +12 +3 +3 +13 +1 +9 +-3 +-7 +-11 +-4 +-7 +-6 +2 +0 +10 +-2 +-5 +-3 +6 +-5 +-1 +-1 +-2 +-4 +-2 +7 +5 +5 +-2 +-2 +-5 +2 +-5 +13 +1 +-2 +6 +-4 +9 +1 +-6 +-1 +-5 +1 +0 +-3 +0 +0 +7 +1 +5 +6 +-3 +2 +-4 +-4 +-1 +-2 +6 +1 +2 +-3 +-5 +4 +-1 +-4 +6 +-2 +-1 +-2 +-1 +-1 +2 +5 +0 +-2 +4 +3 +14 +4 +1 +2 +-5 +-4 +-5 +-1 +7 +-2 +-2 +4 +3 +-1 +0 +1 +-31 +14 +-23 +-33 +11 +-24 +-43 +24 +-16 +-37 +21 +-13 +-36 +25 +-11 +-29 +45 +1 +-27 +28 +-11 +-32 +23 +-13 +-22 +24 +-12 +-30 +37 +-1 +-26 +28 +-8 +-29 +26 +-5 +-27 +32 +-1 +-26 +29 +-8 +-26 +52 +6 +-18 +27 +-10 +-30 +33 +-8 +-17 +30 +-9 +-31 +26 +-9 +-29 +37 +-4 +-27 +41 +-2 +-19 +36 +-5 +-19 +26 +-12 +-32 +27 +-8 +-18 +32 +-9 +-21 +27 +-9 +-27 +27 +-5 +-19 +30 +-7 +-26 +37 +-5 +-28 +26 +-10 +-27 +27 +-8 +-23 +31 +-8 +-17 +43 +0 +-23 +40 +4 +-23 +35 +-7 +-29 +37 +-2 +-29 +29 +-10 +-23 +28 +-10 +-32 +27 +-10 +-30 +28 +-10 +-22 +31 +-8 +-26 +34 +-6 +-25 +45 +3 +-20 +30 +-5 +-23 +35 +-7 +-21 +29 +-7 +-29 +25 +-10 +-30 +29 +-8 +-27 +29 +-9 +-28 +29 +-7 +-26 +31 +-5 +-26 +32 +-6 +-26 +32 +-7 +-25 +30 +-5 +-22 +32 +-4 +-25 +34 +-5 +-25 +38 +-4 +-19 +44 +1 +-25 +33 +-8 +-26 +32 +-1 +-18 +41 +-3 +-25 +24 +-13 +-24 +30 +-6 +-29 +28 +-6 +-30 +29 +-1 +-27 +41 +-1 +-19 +30 +-10 +-30 +25 +-12 +-18 +43 +6 +-24 +35 +-4 +-30 +24 +-13 +-31 +26 +-7 +-28 +27 +-8 +-29 +30 +-6 +-25 +50 +4 +-23 +26 +-11 +-29 +27 +-10 +-23 +43 +0 +-27 +29 +-9 +-29 +32 +-5 +-23 +29 +-4 +-25 +35 +-5 +-19 +42 +-1 +-14 +28 +-10 +-23 +32 +-9 +-30 +26 +-10 +-19 +44 +-1 +-23 +25 +-11 +-17 +42 +-1 +-28 +22 +-13 +-27 +32 +-9 +-29 +25 +-8 +-30 +31 +-7 +-28 +27 +-10 +-24 +36 +-5 +-12 +33 +-5 +13 +22 +32 +17 +14 +13 +11 +12 +7 +11 +21 +6 +1 +1 +15 +11 +3 +1 +13 +6 +13 +5 +-6 +0 +3 +-8 +0 +9 +6 +8 +14 +-2 +-5 +7 +-4 +-7 +-8 +-7 +-3 +-5 +-1 +8 +7 +6 +14 +-3 +-1 +0 +-8 +-7 +2 +6 +1 +-6 +0 +-5 +-1 +-3 +2 +1 +-5 +3 +12 +-1 +7 +2 +5 +-6 +-2 +0 +-3 +9 +5 +-6 +-5 +0 +9 +6 +2 +-1 +-6 +-2 +-4 +-6 +-5 +0 +-5 +-4 +-4 +2 +1 +3 +12 +0 +-2 +-5 +10 +5 +-4 +-3 +2 +7 +0 +-3 +-1 +-3 +3 +10 +12 +15 +13 +1 +-8 +-10 +-10 +0 +-7 +-5 +-2 +-2 +-2 +-1 +11 +4 +-4 +-3 +0 +3 +-1 +4 +-3 +-3 +12 +3 +-3 +-3 +0 +-3 +-3 +8 +-4 +-1 +7 +1 +-1 +-4 +5 +9 +-3 +1 +10 +-2 +-2 +-2 +-4 +-3 +3 +-4 +-2 +2 +2 +3 +-2 +10 +8 +11 +-5 +-5 +-4 +-1 +1 +-4 +-6 +2 +1 +1 +-4 +2 +-3 +-3 +-4 +-2 +4 +-3 +2 +1 +0 +9 +-2 +-4 +-4 +2 +1 +16 +3 +-2 +-1 +1 +-3 +0 +-4 +-4 +15 +4 +-4 +0 +-3 +5 +-2 +0 +5 +-4 +5 +1 +3 +2 +2 +-4 +-2 +8 +-1 +-4 +-1 +-3 +-4 +3 +1 +2 +2 +4 +11 +5 +-4 +2 +0 +-3 +0 +1 +-2 +0 +4 +3 +4 +-5 +-4 +-3 +-3 +3 +10 +14 +1 +-1 +3 +-2 +-6 +-7 +15 +-22 +-47 +6 +-25 +-46 +10 +-21 +-40 +24 +-13 +-26 +22 +-14 +-28 +23 +-14 +-19 +47 +3 +-26 +29 +-7 +-26 +22 +-7 +-22 +25 +-12 +-28 +41 +-1 +-27 +31 +-4 +-29 +27 +-11 +-31 +37 +-5 +-28 +29 +0 +-25 +29 +-8 +-30 +25 +-11 +-27 +30 +-5 +-23 +37 +-1 +-23 +39 +-3 +-19 +30 +-4 +-11 +30 +-10 +-29 +28 +-6 +-27 +45 +0 +-9 +29 +-9 +-27 +22 +-10 +-28 +25 +-11 +-30 +40 +-2 +-27 +27 +-10 +-27 +45 +0 +-23 +29 +-5 +-30 +29 +-11 +-25 +35 +-6 +-26 +29 +-10 +-27 +29 +-5 +-25 +26 +-11 +-28 +30 +-5 +-23 +47 +2 +-25 +31 +-3 +-23 +27 +-9 +-23 +28 +-8 +-27 +30 +-7 +-29 +31 +-4 +-21 +42 +-1 +-25 +30 +3 +-22 +26 +-11 +-26 +31 +-8 +-28 +33 +-8 +-23 +36 +23 +24 +29 +22 +22 +11 +17 +8 +7 +0 +1 +7 +1 +4 +4 +18 +8 +11 +7 +-3 +-5 +-1 +2 +-2 +-1 +-3 +-1 +2 +1 +-2 +1 +-1 +14 +10 +-1 +-2 +10 +4 +-5 +-3 +1 +13 +10 +-4 +-3 +-6 +7 +-6 +-3 +2 +-5 +6 +0 +8 +-1 +-5 +-3 +0 +-2 +-4 +-3 +-3 +-3 +2 +1 +-1 +2 +0 +1 +-2 +-1 +3 +7 +-2 +3 +-1 +7 +1 +-2 +0 +1 +-1 +-5 +-2 +19 +2 +1 +-1 +3 +-3 +3 +5 +4 +-4 +-5 +-1 +-3 +-3 +0 +-2 +-4 +0 +-2 +1 +-1 +-2 +3 +-2 +9 +5 +1 +4 +-3 +-2 +7 +3 +4 +5 +3 +-1 +-2 +-4 +2 +2 +-1 +2 +-2 +8 +-27 +-48 +8 +-27 +-40 +29 +-12 +-34 +23 +-15 +-33 +19 +-16 +-32 +39 +-3 +-28 +24 +-12 +-30 +26 +-10 +-31 +34 +-2 +-18 +27 +-11 +-31 +25 +-11 +-29 +39 +-2 +-22 +32 +-6 +-28 +28 +-9 +-29 +45 +2 +-22 +34 +-5 +-21 +30 +-9 +-15 +28 +-6 +-21 +40 +-2 +-21 +23 +-10 +-31 +28 +-6 +-30 +28 +-9 +-27 +40 +-2 +-25 +30 +-8 +-25 +41 +0 +-25 +25 +-13 +-29 +31 +-7 +-24 +32 +-7 +-28 +28 +-9 +-19 +32 +-7 +-27 +27 +-9 +-24 +39 +2 +-24 +27 +-7 +-28 +31 +-4 +-13 +32 +-7 +-27 +28 +-5 +-27 +28 +-5 +-26 +29 +-9 +-24 +46 +2 +-24 +28 +-9 +-29 +36 +-4 +-27 +29 +-9 +-29 +32 +-6 +-25 +36 +0 +-17 +28 +-9 +-24 +33 +-7 +-15 +33 +-7 +-22 +26 +-1 +-26 +25 +19 +25 +19 +15 +14 +11 +17 +22 +24 +22 +5 +-1 +0 +6 +-1 +-2 +1 +1 +0 +1 +0 +3 +-1 +-1 +3 +-2 +6 +0 +-2 +-1 +0 +2 +2 +5 +0 +-2 +5 +-2 +-1 +-2 +-2 +1 +2 +-2 +6 +3 +0 +-2 +8 +1 +1 +7 +5 +-3 +1 +-1 +-3 +1 +-1 +-1 +-2 +-3 +-2 +-2 +3 +0 +8 +-1 +4 +11 +3 +-4 +-3 +3 +5 +0 +-3 +-1 +-3 +0 +5 +-3 +-2 +-2 +0 +-1 +0 +-3 +-1 +-3 +1 +1 +9 +3 +-1 +-1 +1 +3 +5 +-2 +9 +14 +12 +-2 +-2 +9 +1 +-5 +-6 +-4 +-5 +15 +0 +-5 +1 +-2 +-4 +-3 +4 +16 +1 +10 +8 +5 +-7 +-5 +-2 +-34 +6 +-22 +-45 +11 +-23 +-43 +18 +-18 +-23 +31 +-6 +-33 +17 +-18 +-36 +21 +-13 +-32 +29 +-10 +-29 +30 +-8 +-16 +29 +0 +-24 +37 +-4 +-28 +29 +-10 +-23 +30 +-9 +-28 +29 +-10 +-27 +30 +-7 +-28 +30 +-7 +-19 +32 +0 +-22 +28 +-10 +-24 +44 +5 +-19 +35 +-3 +-22 +34 +-7 +-19 +29 +-11 +-30 +27 +-8 +-30 +35 +-6 +-27 +27 +-9 +-29 +30 +-8 +-26 +37 +4 +-23 +28 +-10 +-20 +37 +-3 +-19 +34 +-7 +-24 +24 +-4 +-23 +38 +-4 +-28 +26 +-7 +-27 +26 +-2 +-17 +41 +-2 +-27 +29 +-9 +-23 +26 +-9 +-17 +42 +-2 +-26 +30 +-6 +-30 +25 +-13 +-30 +28 +-9 +-21 +35 +-6 +-21 +28 +-9 +-30 +27 +-10 +-10 +31 +-6 +-25 +28 +-7 +-23 +27 +-8 +-18 +30 +-8 +-28 +33 +2 +25 +26 +21 +14 +16 +21 +15 +10 +13 +7 +9 +9 +10 +2 +6 +16 +4 +0 +6 +1 +6 +2 +-2 +7 +-1 +-3 +-2 +-1 +3 +-6 +-1 +-1 +12 +15 +15 +-1 +-3 +-3 +-4 +-5 +9 +0 +-5 +-2 +-4 +-3 +-3 +-2 +-4 +13 +-2 +10 +7 +-2 +0 +-4 +-5 +-2 +13 +1 +-4 +-1 +-4 +0 +-1 +-3 +-5 +-2 +0 +5 +1 +15 +0 +-1 +-5 +-2 +2 +0 +-1 +-3 +0 +-1 +-2 +-1 +5 +8 +8 +-4 +-4 +5 +-2 +6 +-1 +-4 +-5 +6 +-3 +-3 +4 +11 +-4 +3 +-3 +2 +9 +2 +-4 +-3 +-2 +-2 +-4 +7 +-2 +-3 +-2 +11 +-2 +8 +2 +-1 +1 +-2 +-6 +-3 +0 +6 +2 +-3 +10 +-26 +-37 +15 +-23 +-41 +12 +-21 +-35 +17 +-18 +-31 +20 +-14 +-24 +23 +-12 +-29 +35 +3 +-25 +31 +-6 +-24 +33 +0 +-17 +26 +-13 +-29 +37 +-5 +-29 +29 +-2 +-26 +26 +-7 +-30 +31 +-8 +-28 +42 +0 +-14 +32 +-7 +-22 +27 +-10 +-17 +26 +-12 +-26 +43 +0 +-26 +37 +-5 +-26 +27 +-9 +-31 +31 +-9 +-29 +27 +-8 +-22 +32 +-7 +-19 +28 +-10 +-26 +27 +-9 +-22 +43 +1 +-25 +31 +-5 +-8 +30 +-6 +-31 +28 +-9 +-27 +25 +-12 +-24 +31 +-4 +-25 +32 +-4 +-24 +28 +-8 +-27 +44 +1 +-27 +31 +-8 +-25 +26 +-11 +-27 +25 +-11 +-29 +31 +-1 +-23 +34 +-7 +-25 +30 +-7 +-27 +46 +2 +-25 +33 +-4 +-27 +31 +-7 +-25 +37 +-2 +-26 +27 +-9 +-29 +30 +-8 +-28 +35 +-6 +-22 +21 +21 +24 +21 +17 +15 +13 +11 +11 +9 +7 +16 +5 +8 +5 +3 +6 +9 +3 +3 +-2 +0 +8 +0 +0 +5 +3 +20 +3 +-3 +3 +-2 +12 +3 +0 +1 +-4 +-4 +-5 +-1 +12 +-1 +1 +12 +-2 +8 +2 +1 +8 +1 +0 +-2 +-7 +-1 +-3 +-1 +3 +5 +7 +-3 +-4 +2 +0 +-1 +-2 +-5 +-6 +-5 +0 +4 +1 +-5 +-5 +7 +7 +-3 +4 +0 +11 +7 +-5 +0 +-5 +-4 +5 +-2 +-1 +-2 +-1 +0 +5 +3 +-2 +-1 +3 +4 +1 +-3 +-2 +-1 +-3 +12 +1 +5 +-4 +1 +2 +-1 +0 +17 +0 +-2 +5 +-1 +-5 +-6 +-1 +12 +15 +15 +-4 +-4 +-5 +9 +-3 +-6 +-7 +-2 +-35 +12 +-22 +-44 +7 +-26 +-41 +14 +-21 +-38 +35 +-4 +-31 +26 +-3 +-28 +23 +-14 +-32 +26 +-11 +-31 +37 +-4 +-16 +32 +-7 +-30 +37 +0 +-23 +41 +-2 +-27 +28 +-11 +-30 +25 +-8 +-23 +30 +-9 +-27 +29 +-11 +-29 +34 +-4 +-26 +29 +-3 +-15 +35 +0 +-23 +40 +-3 +-28 +27 +-8 +-31 +25 +-10 +-30 +27 +-8 +-28 +39 +-3 +-27 +42 +4 +-25 +30 +-7 +-21 +28 +-10 +-26 +30 +-9 +-22 +31 +-8 +-28 +48 +3 +-24 +35 +-6 +-30 +31 +-10 +-22 +27 +-9 +-29 +38 +-1 +-25 +35 +-6 +-28 +43 +-1 +-28 +27 +-9 +-31 +26 +-6 +-24 +29 +-8 +-24 +26 +-8 +-28 +33 +-6 +-27 +41 +-2 +-25 +37 +-3 +-28 +36 +0 +-26 +31 +3 +-25 +27 +-3 +-12 +37 +-3 +-28 +45 +0 +-28 +24 +-8 +-32 +23 +-11 +-30 +38 +1 +-25 +39 +-4 +-29 +40 +3 +-27 +25 +-13 +-19 +27 +-12 +-20 +25 +-11 +-27 +30 +-9 +-28 +37 +-6 +-27 +36 +5 +-25 +29 +-10 +-31 +31 +-7 +-25 +41 +0 +-28 +39 +-3 +-30 +33 +-9 +-24 +25 +-11 +-13 +29 +-10 +-30 +40 +-1 +-29 +25 +-11 +-22 +25 +-11 +-30 +41 +-1 +-26 +32 +1 +-26 +32 +-9 +-24 +30 +-9 +-31 +30 +-8 +-28 +30 +-7 +-28 +32 +-8 +-27 +28 +-9 +-28 +29 +-6 +-25 +41 +1 +-11 +33 +-8 +-24 +31 +-7 +-27 +28 +-7 +-28 +28 +-8 +-28 +31 +-7 +-20 +42 +1 +-24 +36 +-6 +-27 +28 +-9 +-29 +32 +-7 +-23 +30 +-8 +-19 +46 +1 +-25 +27 +-10 +-30 +35 +-6 +-22 +30 +-8 +-28 +27 +-9 +-24 +28 +-7 +-27 +31 +-5 +-27 +32 +-6 +13 +23 +22 +38 +19 +18 +11 +8 +24 +26 +6 +5 +1 +5 +5 +7 +-1 +3 +2 +11 +14 +6 +-1 +-3 +5 +8 +-3 +-5 +-4 +-3 +1 +-2 +4 +-3 +4 +8 +0 +-3 +-3 +-3 +-5 +8 +17 +-1 +-5 +-1 +-1 +3 +-4 +-7 +11 +7 +-6 +-4 +0 +5 +4 +-3 +0 +13 +-1 +2 +15 +13 +7 +6 +-9 +-4 +-8 +-8 +0 +-4 +-2 +-7 +-1 +7 +-3 +7 +-4 +-6 +1 +-3 +-1 +-3 +-3 +0 +-1 +-2 +13 +5 +4 +-2 +3 +7 +-5 +11 +-1 +2 +2 +-1 +-8 +-2 +-5 +-2 +-4 +6 +8 +-3 +-1 +4 +5 +-5 +3 +5 +-5 +-1 +10 +-4 +1 +5 +-1 +-2 +11 +-3 +1 +-1 +-2 +2 +-22 +6 +-28 +-41 +9 +-25 +-42 +19 +-15 +-27 +22 +-15 +-36 +37 +-4 +-29 +30 +-8 +-32 +27 +-12 +-32 +31 +-6 +-28 +26 +-12 +-30 +44 +1 +-22 +30 +-9 +-19 +27 +-5 +-28 +28 +-8 +-21 +41 +-1 +-27 +31 +-9 +-29 +31 +-6 +-29 +30 +-9 +-28 +29 +-9 +-20 +28 +-7 +-27 +31 +-7 +-28 +35 +-6 +-24 +29 +-9 +-29 +30 +-4 +-26 +30 +-7 +-27 +42 +-1 +-23 +34 +4 +-15 +28 +-8 +-27 +28 +-9 +-28 +27 +-9 +-28 +31 +-4 +-26 +32 +-2 +-24 +46 +4 +-23 +31 +-8 +-29 +29 +-8 +-29 +28 +-9 +-29 +29 +-5 +-26 +30 +-6 +-22 +36 +5 +-22 +41 +-1 +-27 +27 +-10 +-29 +35 +0 +-23 +27 +-9 +-29 +32 +-1 +-24 +35 +-5 +-25 +32 +-2 +-14 +49 +4 +-24 +29 +-11 +-28 +34 +-5 +16 +18 +16 +14 +10 +11 +9 +9 +12 +13 +3 +11 +2 +3 +6 +9 +2 +0 +9 +4 +1 +0 +-1 +8 +9 +2 +-3 +1 +10 +2 +-4 +5 +0 +3 +-4 +-3 +10 +9 +-3 +-3 +-4 +-2 +-4 +1 +-4 +-2 +17 +0 +-4 +-4 +-6 +14 +1 +-3 +2 +0 +9 +10 +-4 +0 +3 +11 +-2 +-6 +-6 +-2 +10 +2 +-4 +-4 +-1 +0 +-5 +-1 +-1 +-2 +9 +11 +5 +-3 +6 +-2 +0 +1 +0 +-8 +8 +7 +-2 +-2 +13 +-1 +-4 +-7 +-6 +-5 +0 +-4 +-1 +-1 +4 +-1 +-4 +-4 +-3 +-3 +-2 +1 +14 +12 +2 +-3 +7 +-2 +4 +-5 +-4 +3 +3 +0 +-2 +-2 +-4 +-2 +6 +12 +9 +3 +-2 +-3 +6 +6 +2 +8 +-4 +4 +-6 +-7 +-7 +-5 +-4 +0 +-3 +3 +0 +3 +1 +-1 +-1 +-2 +7 +2 +6 +0 +3 +10 +-4 +2 +1 +-1 +5 +-3 +-4 +0 +-2 +-4 +-5 +-2 +-1 +-3 +0 +3 +6 +11 +8 +16 +-1 +-3 +-4 +-3 +0 +1 +-7 +6 +-3 +-4 +6 +-3 +0 +-4 +3 +1 +0 +-4 +5 +-3 +1 +0 +4 +1 +-1 +5 +8 +6 +12 +2 +-7 +-1 +0 +9 +11 +7 +-4 +-8 +-4 +-2 +-7 +-4 +13 +0 +-4 +0 +1 +3 +-6 +0 +2 +0 +3 +-3 +1 +-1 +-4 +-1 +-4 +-2 +2 +1 +-3 +8 +-3 +-3 +-1 +-5 +0 +17 +5 +15 +-1 +-1 +-3 +-2 +1 +-3 +-5 +2 +-34 +-50 +12 +-24 +-42 +21 +-17 +-39 +18 +-17 +-28 +20 +-15 +-33 +32 +-8 +-27 +32 +-8 +-28 +33 +-3 +-26 +31 +-9 +-22 +44 +1 +-27 +38 +-3 +-25 +26 +-9 +-25 +37 +-6 +-27 +28 +-10 +-24 +28 +-10 +-27 +27 +-3 +-19 +32 +-6 +-25 +26 +-11 +-27 +35 +-6 +-26 +31 +-5 +-21 +42 +-2 +-21 +39 +-3 +-27 +42 +5 +-25 +30 +-9 +-29 +25 +-10 +-18 +25 +-9 +-28 +24 +-12 +-31 +27 +-9 +-28 +29 +-5 +-19 +29 +-4 +-27 +31 +-6 +-28 +30 +-6 +-25 +39 +1 +-21 +42 +1 +-26 +44 +1 +-26 +39 +1 +-28 +25 +-11 +-31 +24 +-11 +-32 +27 +-9 +-25 +29 +-8 +-27 +42 +-1 +-26 +28 +-6 +-29 +28 +-9 +-27 +45 +2 +-23 +40 +-1 +-27 +28 +-5 +-25 +30 +-7 +-29 +29 +-5 +-18 +29 +-9 +-25 +32 +-4 +-23 +33 +-7 +-28 +32 +-7 +-28 +32 +-3 +-22 +27 +-9 +-29 +35 +0 +-25 +28 +-8 +-29 +44 +1 +-16 +34 +-4 +-28 +30 +-9 +-29 +42 +2 +-27 +30 +-10 +-17 +30 +0 +-27 +26 +-11 +-13 +29 +-10 +-30 +25 +-13 +-21 +27 +-7 +-30 +27 +-10 +-26 +29 +-8 +-25 +29 +-10 +-24 +31 +-1 +-11 +33 +-7 +-24 +32 +-5 +-18 +39 +-3 +-28 +28 +-5 +-21 +26 +-9 +-27 +38 +-2 +-19 +47 +1 +-26 +26 +-5 +-26 +36 +-6 +-29 +27 +-1 +-28 +25 +-12 +-30 +30 +3 +-25 +31 +-5 +-26 +36 +-5 +-29 +32 +-6 +-28 +34 +-5 +-29 +30 +-6 +-27 +27 +-10 +-27 +33 +-3 +-27 +38 +-3 +-27 +37 +-3 +-23 +25 +-10 +-30 +28 +-9 +-27 +38 +0 +-24 +28 +-10 +-25 +39 +-1 +-25 +34 +29 +27 +20 +13 +10 +13 +18 +20 +5 +7 +11 +2 +2 +5 +2 +-2 +2 +-2 +-2 +-2 +9 +0 +0 +0 +8 +5 +6 +-2 +0 +2 +-2 +4 +-2 +0 +-3 +1 +1 +6 +-2 +8 +-1 +4 +2 +1 +4 +-2 +1 +11 +-2 +-3 +-4 +-3 +-3 +-1 +-1 +10 +-2 +8 +-2 +-1 +-2 +5 +12 +16 +3 +-5 +-1 +-5 +3 +-1 +8 +15 +-4 +0 +2 +-5 +-5 +-4 +-4 +-4 +2 +4 +-3 +-5 +0 +-3 +-6 +0 +6 +-2 +7 +2 +11 +2 +0 +8 +4 +1 +0 +-9 +-6 +0 +-5 +-5 +-3 +-5 +-3 +15 +18 +0 +-3 +3 +-5 +9 +12 +0 +-6 +-6 +14 +-3 +-7 +-4 +-5 +-6 +-4 +-4 +-2 +1 +-4 +-2 +-1 +5 +0 +8 +9 +0 +-6 +3 +-3 +-3 +-3 +12 +0 +5 +-2 +-2 +0 +2 +-1 +3 +6 +-1 +-5 +1 +0 +-1 +1 +4 +2 +-1 +5 +-3 +-5 +18 +2 +3 +-5 +-1 +-2 +9 +-4 +1 +-5 +10 +-2 +11 +-3 +5 +-3 +-3 +-4 +13 +16 +1 +-5 +-5 +-4 +-1 +-5 +-2 +6 +0 +0 +3 +7 +0 +-5 +-1 +-5 +-3 +3 +-1 +1 +12 +-2 +-6 +-4 +1 +9 +6 +14 +2 +0 +-1 +-7 +-6 +-4 +-7 +4 +-2 +3 +-1 +-5 +-3 +0 +3 +-5 +-5 +-3 +1 +2 +5 +3 +-2 +3 +1 +5 +-1 +-1 +1 +6 +-2 +-1 +13 +8 +1 +-1 +5 +2 +-4 +2 +0 +-7 +2 +-5 +3 +-33 +-33 +12 +-24 +-38 +14 +-13 +-23 +18 +-15 +-37 +18 +-9 +-27 +28 +-5 +-24 +23 +-10 +-27 +26 +-12 +-30 +39 +-2 +-18 +30 +-5 +-29 +33 +-7 +-29 +27 +-8 +-28 +35 +0 +-22 +32 +-7 +-23 +26 +-12 +-26 +25 +-9 +-26 +28 +-3 +-15 +38 +-2 +-18 +30 +-10 +-21 +30 +-9 +-23 +30 +-8 +-16 +32 +-8 +-29 +26 +-10 +-25 +24 +-4 +-9 +31 +-8 +-30 +29 +-9 +-27 +30 +-9 +-16 +35 +2 +-15 +37 +-5 +-22 +25 +-12 +-32 +26 +-7 +-14 +31 +-5 +-26 +32 +-9 +-26 +31 +-8 +-29 +31 +1 +-24 +33 +-7 +-26 +29 +-8 +-18 +27 +-9 +-27 +31 +-5 +-25 +32 +-5 +-25 +34 +-7 +-23 +31 +0 +-24 +36 +6 +-22 +25 +-3 +-27 +30 +-10 +-27 +23 +-11 +-22 +27 +-10 +-22 +33 +-6 +-27 +30 +26 +18 +19 +30 +30 +20 +23 +11 +4 +5 +24 +6 +0 +-1 +1 +3 +-1 +-1 +-2 +4 +0 +4 +-4 +17 +1 +2 +-3 +3 +5 +7 +0 +-2 +1 +1 +-4 +2 +-2 +-4 +1 +-4 +1 +-3 +-3 +0 +4 +1 +0 +-3 +-1 +-1 +4 +0 +-3 +-1 +-1 +-1 +-1 +9 +4 +-3 +6 +5 +3 +5 +-3 +8 +10 +1 +-5 +-3 +-6 +1 +-5 +-1 +0 +10 +10 +-3 +-1 +4 +-3 +1 +5 +-3 +-4 +4 +-4 +-3 +-1 +7 +-4 +1 +-4 +9 +0 +-4 +-3 +-2 +2 +0 +9 +-2 +7 +2 +-4 +-5 +12 +1 +-2 +-4 +11 +2 +-5 +-5 +-6 +16 +0 +-1 +3 +4 +-5 +-1 +6 +-5 +4 +5 +-1 +-1 +-36 +-50 +12 +-24 +-41 +21 +-18 +-34 +20 +-16 +-21 +26 +-11 +-33 +25 +-9 +-30 +42 +-1 +-28 +30 +-5 +-28 +29 +-10 +-17 +28 +-11 +-30 +33 +-7 +-18 +34 +-4 +-15 +37 +-6 +-27 +25 +-12 +-32 +34 +-7 +-22 +27 +-10 +-28 +28 +-10 +-30 +30 +-8 +-21 +50 +4 +-22 +36 +-3 +-28 +24 +-14 +-30 +25 +-11 +-31 +35 +0 +-24 +29 +-3 +-26 +29 +-7 +-21 +27 +-9 +-30 +28 +-7 +-25 +30 +-8 +-25 +30 +-1 +-16 +28 +-8 +-25 +47 +3 +-23 +29 +-9 +-25 +34 +-7 +-16 +34 +-4 +-25 +29 +-11 +-29 +37 +-4 +-28 +25 +-12 +-27 +32 +-7 +-23 +31 +-8 +-23 +27 +-7 +-29 +36 +2 +-21 +26 +-10 +-30 +31 +-8 +-27 +30 +-7 +-28 +36 +7 +-20 +40 +0 +-26 +47 +2 +-25 +27 +-6 +-29 +26 +20 +16 +18 +30 +16 +8 +10 +6 +6 +6 +13 +5 +5 +8 +9 +17 +1 +-1 +-3 +-2 +-1 +7 +1 +-3 +2 +2 +5 +8 +2 +-2 +0 +-3 +-1 +-2 +0 +9 +-3 +-3 +6 +4 +-2 +-4 +12 +11 +10 +17 +-1 +-2 +-1 +-7 +-7 +-4 +2 +-4 +1 +-3 +1 +7 +1 +9 +-4 +5 +0 +-2 +-3 +6 +4 +14 +12 +1 +-7 +0 +-6 +-4 +0 +-8 +2 +-2 +10 +3 +-2 +-3 +5 +-4 +-2 +9 +-1 +-1 +-1 +-8 +-5 +2 +5 +6 +-5 +-1 +-1 +12 +6 +-6 +0 +-1 +-4 +0 +-5 +-4 +-5 +4 +1 +7 +-3 +-5 +-5 +-3 +-3 +2 +16 +-1 +0 +-2 +-4 +0 +3 +3 +-1 +3 +6 +1 +-32 +-49 +5 +-25 +-42 +16 +-19 +-25 +20 +-13 +-19 +33 +-7 +-30 +27 +-8 +-22 +24 +-14 +-21 +43 +0 +-17 +29 +-11 +-31 +24 +-3 +-27 +29 +-11 +-25 +25 +-12 +-30 +30 +-10 +-28 +26 +-9 +-12 +32 +-7 +-24 +34 +-6 +-23 +35 +-6 +-19 +32 +-7 +-26 +29 +-3 +-20 +25 +-8 +-30 +37 +1 +-24 +27 +-9 +-26 +29 +-9 +-28 +26 +-5 +-27 +34 +-3 +-20 +31 +-8 +-28 +38 +3 +-17 +26 +-11 +-29 +38 +-2 +-16 +30 +-6 +-29 +30 +-1 +-17 +28 +-7 +-27 +32 +-8 +-29 +36 +-2 +-26 +30 +-10 +-28 +42 +0 +-18 +31 +-8 +-30 +30 +-7 +-27 +27 +-10 +-29 +30 +-8 +-27 +36 +-6 +-27 +29 +-8 +-25 +37 +5 +-22 +30 +-7 +-23 +40 +4 +-23 +31 +-8 +-31 +43 +-1 +-25 +40 +2 +-27 +25 +29 +24 +16 +11 +16 +23 +8 +3 +22 +6 +8 +-2 +8 +10 +13 +-3 +-6 +2 +0 +-1 +-4 +1 +2 +-2 +6 +1 +-1 +-2 +6 +10 +-3 +-4 +-3 +4 +0 +1 +-5 +1 +-1 +-2 +2 +16 +1 +1 +0 +16 +1 +-1 +-3 +-7 +-3 +6 +-3 +1 +-4 +-4 +-6 +1 +-2 +-3 +-3 +-2 +-4 +4 +-3 +3 +-4 +4 +-1 +7 +2 +14 +1 +-3 +-3 +2 +7 +0 +-4 +-3 +-1 +6 +5 +-3 +-3 +6 +-4 +-3 +-2 +2 +6 +-2 +-4 +7 +4 +5 +0 +-4 +10 +16 +1 +-5 +-7 +-5 +14 +0 +-4 +-4 +-5 +-4 +1 +5 +1 +0 +2 +-5 +-4 +-1 +-5 +-2 +-1 +0 +3 +-2 +3 +4 +17 +7 +-28 +-46 +10 +-25 +-42 +20 +-18 +-35 +18 +-17 +-33 +23 +-10 +-23 +35 +-6 +-20 +37 +-5 +-25 +30 +0 +-27 +22 +-10 +-32 +27 +-10 +-30 +32 +-8 +-27 +25 +-9 +-21 +28 +-10 +-25 +30 +-8 +-29 +32 +-8 +-27 +46 +3 +-18 +28 +-11 +-31 +30 +0 +-25 +27 +-8 +-28 +41 +0 +-21 +35 +-6 +-29 +27 +-3 +-28 +35 +-6 +-28 +26 +-2 +-27 +31 +-8 +-27 +30 +-7 +-27 +38 +-4 +-26 +36 +2 +-13 +28 +-10 +-28 +28 +0 +-21 +32 +-5 +-27 +29 +-9 +-24 +50 +4 +-22 +31 +-5 +-28 +30 +-10 +-30 +38 +3 +-26 +24 +-14 +-32 +31 +-8 +-26 +31 +-9 +-24 +25 +-11 +-27 +41 +1 +-17 +29 +-2 +-10 +29 +-10 +-27 +23 +-11 +-24 +30 +-9 +-20 +44 +0 +-26 +27 +-9 +-22 +30 +-9 +-28 +26 +28 +21 +17 +27 +17 +12 +20 +9 +7 +8 +10 +20 +3 +0 +0 +16 +14 +0 +-3 +-2 +6 +-4 +8 +-3 +4 +-3 +-2 +15 +-2 +8 +-2 +-3 +6 +4 +-5 +11 +-4 +-3 +-5 +-4 +3 +6 +2 +10 +13 +4 +2 +-9 +-5 +-4 +-4 +-8 +-7 +-1 +-5 +-4 +-6 +11 +2 +5 +8 +9 +-4 +1 +-4 +3 +-5 +-5 +-8 +-3 +4 +1 +3 +-2 +-2 +-2 +-3 +6 +14 +-1 +-4 +10 +1 +5 +4 +7 +-3 +-3 +-3 +14 +-2 +-1 +6 +2 +-2 +11 +-4 +-3 +12 +-4 +-7 +3 +4 +4 +-6 +-5 +-3 +-3 +-6 +-7 +-6 +16 +1 +11 +-2 +-7 +-3 +0 +-1 +-2 +3 +5 +2 +-4 +0 +-4 +-3 +-2 +-36 +5 +-23 +-43 +10 +-15 +-33 +27 +-7 +-33 +19 +-13 +-35 +27 +-10 +-29 +38 +-2 +-25 +27 +-7 +-25 +24 +-7 +-25 +31 +-9 +-20 +25 +-12 +-25 +25 +-6 +-19 +32 +-6 +-29 +35 +-1 +-17 +26 +-11 +-23 +32 +-7 +-23 +49 +5 +-17 +43 +-1 +-29 +21 +-9 +-32 +23 +-13 +-33 +25 +-6 +-30 +31 +-9 +-25 +25 +-11 +-29 +34 +-3 +-25 +30 +-3 +-27 +39 +-2 +-23 +28 +-9 +-28 +30 +-2 +-26 +29 +-6 +-26 +49 +4 +-24 +31 +-3 +-27 +40 +-2 +-16 +32 +-8 +-30 +26 +-12 +-21 +30 +-9 +-31 +28 +-9 +-21 +29 +2 +-24 +35 +-6 +-17 +37 +-5 +-25 +35 +-4 +-27 +24 +-12 +-31 +24 +-11 +-11 +31 +-8 +-25 +26 +-3 +-21 +30 +-5 +-29 +34 +-2 +-24 +27 +3 +-24 +27 +-10 +-28 +23 +-6 +-28 +48 +3 +-20 +37 +-4 +-28 +29 +-9 +-30 +24 +-11 +-14 +34 +0 +-17 +43 +1 +-24 +36 +-5 +-28 +37 +-4 +-29 +29 +-8 +-24 +33 +-7 +-31 +23 +-14 +-27 +26 +-11 +-14 +29 +0 +-26 +28 +-7 +-30 +27 +-7 +-16 +29 +-9 +-30 +26 +-11 +-25 +27 +-2 +-24 +42 +0 +-9 +30 +-8 +-27 +25 +-12 +-25 +28 +-6 +-12 +32 +-7 +-24 +37 +0 +-27 +30 +-4 +-10 +29 +-9 +-32 +27 +-9 +-31 +25 +-5 +-27 +27 +-11 +-25 +36 +-1 +-22 +41 +-2 +-13 +29 +-10 +-28 +25 +-12 +-30 +35 +2 +-25 +30 +-9 +-26 +32 +-5 +-23 +35 +-1 +-23 +41 +0 +-27 +36 +-5 +-29 +35 +-2 +-27 +29 +-11 +-23 +28 +-7 +-13 +28 +-11 +-15 +29 +-10 +-31 +42 +-1 +-27 +23 +-13 +-31 +29 +-10 +-28 +27 +-2 +14 +19 +19 +28 +15 +28 +20 +7 +8 +4 +4 +7 +10 +6 +6 +-1 +1 +-1 +14 +8 +0 +13 +-1 +-1 +13 +8 +-5 +-4 +-6 +-3 +-4 +2 +-1 +-3 +-5 +2 +9 +1 +-3 +13 +0 +-3 +-3 +-1 +-4 +1 +14 +6 +4 +-6 +17 +0 +-3 +12 +-4 +-5 +5 +-2 +-5 +-6 +10 +-1 +-6 +-3 +-4 +-6 +10 +-2 +-6 +-1 +-2 +-2 +-3 +-1 +5 +0 +1 +0 +8 +3 +7 +7 +-3 +-4 +-4 +-1 +-2 +16 +0 +-5 +-2 +7 +-4 +8 +4 +14 +-1 +-4 +-8 +-8 +-6 +-5 +9 +-1 +0 +6 +8 +-5 +-3 +-2 +0 +-1 +17 +1 +-2 +-3 +0 +-6 +1 +4 +12 +9 +-4 +11 +-2 +-4 +-7 +-3 +2 +10 +1 +7 +-5 +-3 +-3 +0 +10 +13 +-1 +-5 +-2 +0 +1 +-4 +6 +-5 +-4 +-6 +-1 +3 +2 +0 +-2 +-1 +4 +13 +11 +0 +-6 +-1 +0 +-5 +-4 +-2 +0 +0 +13 +9 +-4 +-6 +-1 +-5 +-3 +-2 +3 +-1 +-2 +0 +5 +0 +-3 +1 +-1 +-5 +-3 +3 +-2 +3 +0 +-2 +4 +-1 +-1 +-2 +8 +7 +-2 +-1 +2 +-2 +-2 +-1 +-2 +5 +0 +1 +-1 +1 +3 +-2 +4 +10 +9 +-2 +3 +0 +-3 +13 +14 +0 +-7 +-5 +-5 +-6 +4 +9 +0 +-3 +-5 +-4 +-4 +-3 +-3 +4 +6 +-2 +-1 +-2 +-3 +-1 +-1 +-1 +2 +2 +3 +-3 +-1 +0 +0 +6 +10 +-2 +5 +12 +16 +1 +-31 +3 +-31 +-42 +14 +-22 +-39 +18 +-18 +-37 +17 +-16 +-36 +24 +-13 +-29 +25 +-11 +-30 +32 +-8 +-23 +27 +-5 +-25 +39 +-2 +-19 +27 +-10 +-30 +41 +-2 +-26 +28 +-10 +-30 +26 +-10 +-24 +34 +-5 +-27 +41 +5 +-21 +26 +-9 +-26 +27 +-11 +-27 +32 +-5 +-22 +40 +-2 +-19 +29 +0 +-26 +31 +-9 +-27 +28 +-9 +-27 +28 +-4 +-13 +43 +1 +-12 +30 +-10 +-21 +25 +-12 +-32 +26 +-6 +-25 +30 +-1 +-26 +30 +-5 +-28 +28 +-9 +-16 +35 +-5 +-22 +28 +-9 +-21 +27 +-6 +-27 +37 +-4 +-27 +32 +-8 +-22 +32 +-7 +-29 +28 +-7 +-28 +28 +-2 +-20 +28 +-6 +-25 +32 +-7 +-19 +37 +-5 +-28 +29 +-9 +-13 +33 +-5 +-26 +27 +-10 +-29 +37 +-4 +-25 +45 +3 +-13 +33 +-8 +-23 +33 +-7 +10 +22 +13 +13 +20 +22 +13 +8 +12 +12 +7 +0 +15 +6 +-1 +-2 +8 +1 +-2 +5 +-1 +1 +1 +0 +1 +-1 +3 +-2 +-3 +9 +-2 +1 +-4 +6 +-2 +4 +6 +3 +-3 +-3 +3 +-1 +1 +-3 +5 +-3 +4 +-3 +4 +3 +-4 +4 +-2 +10 +3 +-3 +6 +1 +-6 +-4 +-4 +13 +20 +2 +-7 +-7 +-4 +4 +5 +-1 +11 +-2 +-6 +11 +0 +14 +-3 +-6 +3 +-1 +-4 +4 +-4 +2 +7 +-4 +4 +-5 +-5 +-6 +-3 +2 +-3 +-3 +-4 +-5 +17 +2 +8 +4 +-6 +0 +1 +-4 +-3 +4 +-2 +-4 +-3 +-2 +4 +10 +3 +2 +3 +0 +11 +1 +5 +-6 +12 +-2 +9 +9 +-2 +-4 +-6 +-4 +13 +-22 +-40 +4 +-31 +-48 +10 +-25 +-43 +15 +-21 +-32 +26 +-11 +-27 +26 +-12 +-29 +28 +-8 +-23 +27 +-11 +-31 +31 +-6 +-26 +33 +-3 +-25 +28 +-7 +-28 +34 +-5 +-26 +27 +-4 +-16 +31 +-9 +-26 +36 +-3 +-23 +37 +-4 +-22 +44 +0 +-26 +27 +-9 +-24 +38 +-3 +-29 +36 +-6 +-25 +25 +-12 +-13 +30 +-9 +-30 +27 +-10 +-29 +31 +-5 +-27 +30 +-1 +-25 +46 +2 +-25 +30 +-8 +-23 +32 +-8 +-14 +31 +-8 +-23 +30 +-10 +-28 +28 +-10 +-30 +32 +-7 +-28 +31 +-5 +-25 +34 +-6 +-26 +31 +-7 +-19 +30 +-10 +-29 +43 +3 +-21 +38 +2 +-15 +28 +-1 +-27 +28 +-11 +-32 +42 +0 +-27 +23 +-15 +-27 +24 +-3 +-22 +26 +-11 +-20 +27 +-8 +-25 +44 +0 +-22 +26 +-9 +-30 +31 +-1 +-12 +21 +20 +21 +16 +15 +11 +25 +12 +9 +10 +10 +5 +6 +20 +19 +14 +-2 +-1 +-5 +-3 +4 +14 +0 +-4 +7 +1 +-2 +-3 +-1 +0 +-2 +-2 +-1 +5 +2 +-2 +3 +-1 +0 +-2 +4 +9 +3 +-4 +10 +14 +8 +-4 +9 +-1 +3 +-6 +0 +13 +-3 +-5 +-5 +1 +5 +-1 +-5 +-4 +-4 +-2 +-1 +0 +20 +1 +4 +3 +-6 +-6 +5 +-2 +-4 +8 +2 +13 +-3 +2 +-3 +-3 +-4 +-4 +-5 +-2 +6 +-3 +-1 +-5 +1 +2 +5 +4 +-2 +1 +-3 +-4 +-1 +-5 +-2 +0 +2 +5 +1 +1 +-3 +7 +3 +7 +17 +1 +-5 +6 +-1 +-2 +-1 +9 +-3 +-4 +-6 +-4 +-5 +2 +-2 +-2 +11 +1 +24 +-17 +-45 +6 +-23 +-42 +11 +-17 +-40 +15 +-21 +-38 +19 +-16 +-33 +23 +-13 +-30 +26 +-8 +-28 +27 +-10 +-27 +28 +-8 +-27 +39 +-3 +-25 +31 +-3 +-25 +31 +-4 +-25 +47 +3 +-22 +29 +-10 +-29 +33 +-7 +-26 +32 +-8 +-27 +36 +-5 +-25 +40 +-3 +-29 +38 +-2 +-28 +27 +-10 +-28 +29 +-10 +-28 +29 +-8 +-22 +29 +-4 +-13 +41 +-2 +-25 +27 +-9 +-12 +31 +-5 +-29 +34 +-2 +-28 +24 +-8 +-19 +29 +-10 +-15 +36 +-3 +-25 +24 +-10 +-31 +27 +-6 +-28 +30 +-3 +-27 +27 +-11 +-24 +29 +-7 +-26 +34 +-6 +-19 +34 +-5 +-19 +41 +-2 +-26 +26 +-11 +-25 +32 +-6 +-28 +29 +-8 +-20 +36 +-6 +-29 +36 +-4 +-15 +36 +-7 +-29 +27 +-10 +-27 +27 +-8 +-28 +28 +-7 +-26 +29 +-8 +-18 +23 +37 +23 +24 +16 +13 +29 +14 +9 +8 +13 +4 +8 +8 +11 +2 +14 +8 +13 +3 +2 +1 +0 +-4 +12 +4 +-7 +-2 +-1 +-4 +0 +1 +12 +3 +0 +5 +-4 +-4 +-4 +2 +-1 +11 +10 +12 +-5 +-2 +9 +12 +6 +-6 +-10 +-2 +-8 +-9 +-9 +7 +-1 +-4 +0 +2 +-4 +-2 +5 +7 +-4 +-2 +12 +3 +-5 +-4 +11 +1 +-4 +2 +-4 +0 +-2 +0 +4 +-3 +-4 +14 +13 +13 +-3 +13 +-4 +-5 +1 +-7 +-5 +-2 +-4 +-6 +-3 +-2 +10 +9 +-4 +-4 +3 +5 +16 +1 +5 +-5 +-3 +9 +-1 +-2 +-4 +-4 +-5 +-1 +-2 +0 +-2 +-5 +-3 +2 +-3 +0 +-2 +-2 +-2 +6 +-3 +-2 +9 +-25 +-44 +7 +-27 +-43 +16 +-14 +-29 +30 +-11 +-24 +21 +-14 +-29 +26 +-13 +-30 +35 +-3 +-29 +27 +-11 +-28 +34 +-1 +-27 +30 +-7 +-22 +32 +-5 +-27 +42 +3 +-21 +25 +-12 +-32 +28 +-9 +-22 +30 +-8 +-24 +29 +-10 +-26 +31 +-7 +-10 +33 +-8 +-26 +38 +-3 +-27 +34 +-5 +-28 +25 +-10 +-30 +28 +-7 +-27 +27 +-8 +-27 +29 +-9 +-26 +32 +-6 +-23 +34 +-4 +-21 +29 +-7 +-24 +31 +-6 +-25 +31 +5 +-22 +32 +-7 +-24 +30 +-7 +-28 +30 +-4 +-25 +31 +-6 +-18 +31 +-6 +-24 +27 +-7 +-11 +34 +-7 +-28 +27 +2 +-23 +33 +1 +-23 +42 +-1 +-25 +29 +-10 +-29 +23 +-10 +-19 +31 +-8 +-22 +27 +-10 +-29 +33 +-7 +-24 +35 +-5 +-18 +32 +-8 +-28 +36 +-4 +-22 +30 +-8 +-28 +21 +30 +22 +27 +16 +14 +21 +15 +12 +9 +4 +6 +5 +9 +16 +5 +3 +1 +3 +4 +-1 +2 +1 +7 +-1 +2 +4 +1 +-3 +0 +-1 +-1 +0 +6 +2 +1 +-2 +-1 +8 +1 +7 +3 +1 +-2 +12 +7 +15 +-3 +-4 +-6 +1 +5 +7 +11 +-2 +4 +13 +-3 +-8 +-5 +-8 +9 +3 +0 +7 +-4 +-5 +-2 +0 +-5 +-8 +-1 +-5 +3 +12 +4 +3 +-5 +0 +-3 +-5 +8 +11 +-3 +6 +-5 +-5 +-1 +-7 +15 +-1 +2 +-5 +-2 +-6 +-5 +-1 +3 +-4 +-4 +-4 +4 +1 +2 +1 +3 +-4 +-2 +8 +-2 +-3 +0 +2 +-1 +16 +1 +0 +-5 +1 +-1 +5 +1 +1 +-3 +4 +-2 +-2 +8 +20 +-19 +-47 +17 +-22 +-45 +24 +-15 +-41 +17 +-17 +-37 +17 +-18 +-37 +31 +-10 +-27 +24 +-11 +-30 +25 +-11 +-24 +25 +-2 +-25 +29 +-9 +-28 +34 +-1 +-24 +29 +-5 +-25 +37 +0 +-23 +32 +-8 +-15 +38 +-4 +-29 +41 +-2 +-12 +28 +-11 +-32 +25 +-8 +-23 +29 +-6 +-14 +30 +-9 +-30 +28 +-10 +-28 +28 +-10 +-29 +29 +-7 +-27 +35 +-5 +-21 +35 +-5 +-26 +28 +-6 +-27 +35 +-3 +-24 +29 +-2 +-26 +35 +-1 +-24 +27 +-11 +-23 +26 +-10 +-16 +52 +6 +-22 +31 +-9 +-30 +26 +-7 +-20 +26 +-11 +-26 +27 +-11 +-26 +28 +-8 +-10 +33 +-7 +-25 +37 +0 +-25 +27 +-11 +-29 +38 +0 +-25 +30 +-10 +-23 +35 +-4 +-25 +29 +-11 +-20 +41 +-1 +-25 +27 +-7 +-27 +25 +-8 +-29 +37 +-5 +-27 +18 +20 +21 +25 +16 +15 +13 +9 +16 +13 +8 +6 +8 +5 +2 +3 +0 +14 +10 +8 +13 +24 +2 +-4 +-4 +-3 +-4 +-5 +0 +5 +4 +-2 +-2 +3 +-3 +0 +12 +3 +-5 +-4 +8 +-3 +-5 +2 +-3 +-5 +5 +4 +2 +-5 +12 +-2 +-4 +-2 +2 +-2 +-2 +13 +-2 +0 +-5 +-4 +5 +-4 +-4 +2 +-3 +1 +-4 +-2 +0 +1 +1 +-1 +0 +1 +0 +10 +-1 +7 +2 +13 +9 +1 +1 +-5 +6 +-1 +-3 +5 +-4 +1 +-1 +0 +-3 +-4 +-3 +-2 +6 +2 +-4 +-3 +-1 +18 +1 +0 +-1 +3 +-6 +-4 +-4 +-2 +2 +4 +3 +-5 +2 +3 +-3 +-1 +-1 +-1 +-3 +0 +1 +9 +4 +14 +13 +-24 +-41 +5 +-30 +-34 +23 +-16 +-39 +14 +-21 +-36 +21 +-5 +-30 +32 +-9 +-31 +30 +-2 +-29 +25 +-12 +-30 +26 +-11 +-27 +35 +-6 +-28 +29 +-8 +-17 +32 +-6 +-19 +37 +-4 +-27 +26 +-12 +-19 +31 +-8 +-27 +30 +-9 +-14 +42 +-1 +-25 +44 +0 +-16 +30 +-7 +-28 +30 +-11 +-31 +28 +-11 +-28 +23 +-13 +-26 +27 +0 +-14 +32 +-9 +-29 +28 +-5 +-26 +36 +-2 +-27 +25 +-12 +-29 +37 +-4 +-25 +29 +1 +-25 +31 +-7 +-25 +49 +4 +-25 +30 +-5 +-27 +33 +-1 +-16 +45 +0 +-28 +28 +-10 +-29 +23 +-13 +-27 +36 +-4 +-24 +24 +-12 +-30 +36 +-5 +-26 +30 +-5 +-20 +27 +-11 +-20 +33 +-6 +-22 +36 +-5 +-28 +31 +-9 +-29 +31 +-2 +-27 +30 +1 +-24 +30 +-9 +-27 +31 +-8 +-28 +23 +20 +39 +21 +18 +16 +11 +7 +10 +8 +5 +6 +3 +7 +19 +15 +-1 +5 +7 +-1 +7 +-2 +-3 +-3 +-1 +7 +1 +0 +-6 +2 +-2 +-1 +2 +1 +-2 +0 +0 +9 +-1 +-1 +-3 +-1 +7 +7 +13 +4 +6 +2 +9 +-2 +-5 +-4 +-6 +7 +17 +1 +4 +-4 +-7 +-8 +-6 +-2 +-6 +8 +0 +-2 +3 +-2 +-4 +-1 +9 +11 +-2 +-1 +10 +1 +-3 +-5 +2 +-4 +4 +6 +-1 +3 +-6 +-4 +-2 +2 +5 +-2 +0 +5 +-4 +-2 +-1 +9 +1 +0 +-1 +3 +7 +6 +-4 +-3 +1 +-1 +-2 +-3 +-2 +3 +-2 +0 +1 +-1 +5 +2 +4 +-1 +3 +-4 +-3 +-3 +-2 +5 +15 +4 +-3 +-3 +12 +-25 +-47 +18 +-15 +-40 +20 +-18 +-28 +27 +-13 +-34 +33 +-8 +-35 +26 +-13 +-32 +22 +-12 +-31 +23 +-14 +-30 +26 +-11 +-17 +29 +-11 +-29 +38 +-3 +-27 +27 +-10 +-19 +44 +1 +-26 +29 +-9 +-17 +39 +-3 +-24 +30 +-10 +-22 +25 +-12 +-32 +25 +-11 +-14 +28 +-10 +-29 +46 +1 +-25 +30 +-3 +-28 +47 +2 +-15 +40 +-3 +-31 +25 +-14 +-31 +24 +-12 +-20 +28 +-3 +-27 +29 +-7 +-29 +31 +-4 +-25 +26 +-11 +-29 +29 +-4 +-17 +26 +-7 +-25 +36 +-5 +-27 +28 +-10 +-17 +29 +-4 +-15 +32 +-5 +-29 +33 +-3 +-24 +27 +-5 +-25 +27 +-6 +-28 +39 +-2 +-23 +28 +-3 +-25 +29 +-8 +-25 +27 +-11 +-29 +38 +-3 +-25 +40 +-1 +-15 +36 +-5 +-29 +25 +-13 +-27 +28 +-9 +-29 +29 +-9 +-19 +23 +28 +19 +19 +21 +18 +14 +30 +13 +7 +14 +4 +2 +2 +3 +19 +5 +10 +-2 +11 +2 +6 +-3 +-3 +1 +1 +-2 +13 +2 +-3 +-3 +-4 +4 +7 +-4 +0 +5 +0 +-6 +-4 +2 +0 +-6 +8 +2 +0 +-2 +-2 +6 +-2 +13 +1 +8 +12 +2 +-1 +-6 +-4 +3 +-4 +-5 +2 +3 +15 +0 +-5 +-1 +-5 +4 +6 +-5 +4 +-3 +6 +-1 +4 +0 +1 +-4 +-5 +-5 +-5 +0 +-2 +0 +6 +-3 +15 +-1 +0 +-5 +-5 +-4 +13 +-1 +1 +13 +14 +5 +-6 +-3 +-6 +-5 +15 +-1 +-4 +-4 +-5 +11 +-1 +11 +-3 +-5 +-1 +-2 +-1 +-4 +0 +-5 +-1 +-4 +-6 +-2 +0 +11 +12 +-2 +13 +-22 +5 +-30 +-49 +17 +-20 +-30 +18 +-16 +-38 +16 +-19 +-34 +22 +-11 +-26 +36 +-2 +-26 +27 +-11 +-18 +25 +-13 +-28 +28 +-3 +-22 +27 +-10 +-23 +27 +-11 +-29 +41 +-1 +-26 +30 +-9 +-26 +27 +-9 +-18 +30 +-7 +-27 +34 +-4 +-27 +35 +-6 +-27 +28 +-8 +-26 +33 +-6 +-26 +27 +-5 +-24 +35 +-2 +-23 +35 +-2 +-25 +33 +-8 +-28 +38 +0 +-19 +32 +-8 +-14 +36 +-1 +-14 +29 +-12 +-32 +23 +-13 +-27 +32 +-7 +-28 +31 +-8 +-29 +28 +-9 +-24 +28 +-4 +-12 +30 +-8 +-15 +35 +-5 +-24 +25 +-9 +-23 +32 +-7 +-27 +46 +4 +-21 +28 +-9 +-31 +45 +1 +-27 +29 +-8 +-22 +26 +-13 +-31 +28 +-10 +-23 +37 +-5 +-26 +31 +-8 +-29 +28 +-7 +-26 +27 +-2 +-24 +37 +-4 +-27 +44 +2 +29 +22 +21 +18 +12 +23 +15 +20 +14 +2 +0 +3 +2 +-1 +5 +6 +5 +-2 +0 +6 +4 +14 +13 +-2 +-4 +5 +4 +-3 +13 +-1 +-7 +-4 +-7 +-2 +5 +4 +3 +8 +-2 +2 +-5 +-1 +-4 +1 +13 +-1 +3 +-4 +-3 +-4 +-4 +-4 +-3 +-2 +0 +-1 +-2 +-2 +13 +14 +6 +-4 +-4 +12 +-2 +3 +-1 +2 +-2 +-6 +7 +-4 +10 +16 +10 +0 +2 +-9 +-7 +-5 +4 +12 +-3 +-6 +3 +5 +12 +-2 +-6 +2 +14 +-3 +-1 +-3 +-6 +-4 +0 +-3 +-2 +0 +-7 +-5 +11 +4 +-2 +-5 +-5 +-7 +11 +0 +-1 +-4 +-3 +4 +10 +-3 +-4 +1 +-4 +10 +1 +-2 +7 +4 +13 +13 +0 +8 +10 +-23 +-39 +3 +-32 +-49 +12 +-22 +-41 +23 +-16 +-28 +22 +-15 +-36 +25 +-6 +-24 +22 +-5 +-30 +25 +-10 +-29 +26 +-11 +-21 +28 +-10 +-29 +34 +-4 +-15 +47 +2 +-24 +26 +-1 +-27 +25 +-13 +-31 +30 +-8 +-20 +34 +-7 +-28 +31 +-5 +-27 +29 +-9 +-29 +43 +1 +-20 +26 +-3 +-24 +34 +-6 +-30 +37 +4 +-24 +27 +-5 +-16 +44 +0 +-26 +25 +-9 +-31 +32 +-3 +-22 +35 +-3 +-21 +24 +-15 +-27 +26 +-11 +-28 +30 +-9 +-29 +25 +-10 +-29 +29 +-9 +-26 +31 +-7 +-16 +38 +1 +-18 +27 +-10 +-28 +37 +-3 +-19 +31 +-8 +-30 +27 +-11 +-27 +29 +-6 +-27 +30 +-9 +-25 +39 +1 +-23 +32 +-6 +-19 +26 +-10 +-29 +32 +-6 +-20 +34 +-5 +-24 +30 +-9 +-27 +38 +-1 +-17 +33 +-6 +-25 +18 +23 +19 +23 +16 +17 +11 +10 +21 +20 +12 +10 +2 +3 +7 +19 +4 +13 +12 +3 +8 +12 +-4 +-7 +-6 +1 +-3 +-2 +-2 +-2 +1 +-5 +-4 +3 +-2 +-1 +-3 +3 +5 +6 +2 +-1 +-2 +0 +9 +0 +12 +-2 +0 +-6 +-5 +4 +-4 +-4 +3 +7 +9 +8 +-5 +-6 +-3 +-2 +13 +1 +-4 +-6 +-4 +-2 +4 +-2 +2 +0 +6 +-1 +8 +0 +-5 +14 +-1 +1 +-8 +17 +0 +-1 +-7 +-2 +2 +2 +-3 +5 +-1 +-3 +-4 +-3 +0 +-2 +-1 +7 +-4 +2 +6 +-6 +-2 +-3 +2 +-6 +-2 +4 +0 +5 +-4 +-3 +5 +-2 +-4 +11 +8 +12 +7 +-6 +-7 +-5 +-5 +-4 +4 +-4 +7 +9 +9 +-28 +-50 +7 +-23 +-42 +10 +-23 +-26 +22 +-16 +-18 +24 +-14 +-33 +25 +-12 +-30 +21 +-13 +-33 +37 +0 +-26 +24 +-9 +-28 +34 +-1 +-26 +25 +-11 +-17 +50 +4 +-21 +33 +-7 +-31 +26 +-6 +-29 +25 +-11 +-30 +39 +-4 +-22 +30 +-8 +-18 +32 +-7 +-26 +26 +-11 +-27 +29 +-7 +-14 +44 +1 +-20 +30 +-11 +-30 +27 +-10 +-27 +27 +-8 +-24 +28 +-6 +-23 +28 +-9 +-26 +30 +-6 +-19 +34 +-4 +-27 +29 +-5 +-27 +33 +-5 +-25 +31 +-7 +-21 +39 +-4 +-24 +35 +-4 +-24 +28 +-8 +-29 +29 +-4 +-24 +29 +-6 +-18 +28 +-3 +-28 +32 +-7 +-16 +31 +-2 +-26 +28 +-9 +-25 +27 +-10 +-25 +35 +-6 +-25 +31 +-5 +-15 +49 +4 +-25 +35 +-6 +-30 +27 +-11 +-27 +39 +-2 +-16 +36 +-2 +-29 +19 +25 +21 +15 +12 +17 +8 +8 +8 +10 +5 +5 +5 +7 +2 +7 +5 +6 +2 +3 +7 +2 +8 +-1 +2 +15 +8 +11 +-2 +-8 +1 +-2 +-5 +-5 +-4 +4 +-3 +5 +-3 +-3 +0 +6 +-4 +0 +-2 +0 +9 +-1 +-2 +-5 +16 +3 +-4 +-3 +2 +1 +-2 +2 +0 +-2 +11 +19 +0 +6 +-6 +3 +13 +17 +-3 +-7 +1 +6 +8 +-3 +-10 +-4 +-7 +-8 +5 +-5 +0 +-4 +-8 +-3 +-6 +-1 +-2 +1 +1 +2 +-3 +-3 +2 +10 +-2 +-1 +1 +6 +-4 +14 +0 +10 +8 +-4 +-5 +5 +-4 +4 +11 +12 +-4 +5 +-3 +-2 +-4 +-7 +9 +-4 +-7 +-7 +-4 +-4 +-1 +-2 +-1 +9 +-3 +10 +-26 +16 +-22 +-46 +11 +-23 +-30 +17 +-18 +-39 +16 +-11 +-22 +21 +-16 +-34 +19 +-14 +-33 +26 +-9 +-21 +26 +-6 +-17 +38 +-4 +-25 +32 +-4 +-27 +26 +-8 +-24 +25 +-10 +-23 +27 +-11 +-25 +35 +-6 +-26 +36 +-4 +-27 +41 +0 +-22 +27 +-3 +-23 +27 +-10 +-22 +31 +-1 +-26 +45 +1 +-22 +32 +-7 +-31 +23 +-9 +-25 +39 +-3 +-28 +32 +2 +-26 +29 +-3 +-22 +30 +-7 +-31 +27 +-6 +-27 +26 +-11 +-25 +32 +-8 +-28 +30 +-6 +-28 +28 +-8 +-28 +30 +-5 +-20 +44 +0 +-24 +29 +-4 +-28 +33 +-4 +-26 +29 +-7 +-24 +30 +-4 +-27 +32 +-6 +-24 +27 +-10 +-25 +30 +-6 +-21 +33 +-4 +-26 +31 +-6 +-26 +40 +-2 +-24 +31 +-2 +-23 +41 +-2 +-24 +28 +-8 +-26 +25 +-13 +-30 +30 +-8 +13 +25 +27 +32 +16 +12 +23 +21 +9 +5 +2 +19 +12 +5 +-1 +0 +8 +-1 +6 +24 +2 +0 +-7 +1 +1 +-4 +5 +2 +1 +-5 +3 +12 +-2 +11 +-2 +-3 +5 +3 +0 +-3 +3 +-2 +-8 +3 +-2 +0 +7 +-3 +-4 +11 +7 +-5 +-5 +-6 +-5 +-1 +-4 +2 +-2 +-1 +0 +-3 +-2 +-2 +1 +1 +1 +4 +-4 +14 +-1 +-2 +-2 +-2 +-2 +-2 +-2 +-1 +-1 +8 +1 +2 +1 +0 +14 +4 +2 +3 +-7 +-6 +2 +3 +-2 +-2 +2 +-2 +6 +-3 +-3 +6 +-2 +4 +1 +-3 +-2 +2 +-4 +8 +-1 +-3 +0 +1 +0 +4 +-1 +-1 +-2 +19 +2 +3 +3 +5 +3 +1 +4 +3 +-6 +-3 +-35 +9 +-25 +-47 +9 +-25 +-33 +16 +-19 +-33 +19 +-15 +-28 +38 +-5 +-29 +31 +-7 +-29 +27 +-6 +-24 +36 +-3 +-28 +30 +-10 +-32 +26 +-11 +-30 +39 +-4 +-21 +28 +-10 +-31 +43 +3 +-25 +25 +-7 +-30 +25 +-12 +-21 +28 +-8 +-28 +34 +-6 +-27 +37 +-4 +-24 +28 +-11 +-19 +32 +-7 +-20 +33 +-4 +-21 +45 +2 +-27 +34 +-6 +-27 +42 +1 +-28 +26 +-12 +-28 +30 +-6 +-27 +27 +-12 +-26 +25 +-11 +-30 +33 +-7 +-28 +33 +-4 +-27 +31 +-3 +-26 +29 +-8 +-19 +36 +-3 +-18 +43 +2 +-26 +29 +-10 +-30 +36 +-3 +-28 +31 +2 +-24 +32 +-8 +-31 +26 +-11 +-29 +30 +-1 +-21 +38 +-4 +-24 +49 +4 +-20 +29 +-10 +-28 +29 +-10 +-31 +25 +-13 +-24 +28 +-6 +-26 +32 +-4 +-18 +44 +2 +10 +20 +25 +15 +10 +10 +27 +10 +3 +6 +2 +9 +2 +5 +6 +1 +5 +1 +2 +8 +1 +13 +-1 +-2 +2 +-2 +1 +-1 +-4 +2 +10 +0 +16 +1 +-1 +5 +-4 +-2 +-4 +-7 +-4 +-5 +-3 +1 +3 +1 +-1 +4 +4 +3 +4 +6 +11 +0 +-4 +1 +-1 +-2 +0 +-2 +0 +7 +-5 +2 +-4 +-3 +2 +-3 +0 +-2 +-2 +-1 +2 +0 +5 +17 +9 +-3 +-6 +4 +0 +5 +0 +-5 +-7 +6 +0 +12 +-3 +-6 +9 +-1 +-6 +-1 +-4 +1 +-2 +1 +-2 +3 +-4 +-4 +8 +-1 +-3 +3 +5 +3 +-5 +2 +0 +0 +-1 +3 +3 +8 +12 +-3 +-2 +-4 +2 +1 +-8 +-5 +-1 +-3 +-1 +7 +-28 +23 +-14 +-39 +10 +-25 +-46 +17 +-20 +-36 +24 +-15 +-36 +22 +-14 +-30 +29 +-9 +-27 +27 +-11 +-19 +27 +-8 +-26 +29 +-3 +-27 +28 +-4 +-29 +47 +2 +-23 +43 +0 +-27 +31 +-9 +-23 +38 +-3 +-27 +24 +-9 +-30 +27 +-10 +-29 +35 +-4 +-27 +26 +-9 +-30 +33 +-6 +-27 +28 +-7 +-26 +35 +-1 +-26 +29 +-9 +-23 +29 +-9 +-27 +32 +-7 +-19 +33 +-5 +-28 +33 +-6 +-25 +28 +-8 +-12 +40 +-2 +-25 +32 +-8 +-29 +30 +-8 +-23 +28 +-9 +-28 +42 +6 +-23 +29 +-8 +-28 +28 +2 +-25 +38 +-4 +-23 +47 +3 +-26 +24 +-14 +-26 +31 +-7 +-29 +28 +-9 +-12 +30 +-9 +-30 +37 +-4 +-29 +41 +1 +-27 +35 +-6 +-28 +37 +3 +-25 +24 +-6 +-29 +23 +-4 +-26 +26 +-11 +-29 +40 +1 +18 +23 +13 +13 +13 +33 +13 +7 +9 +5 +11 +3 +0 +12 +7 +0 +8 +26 +4 +-2 +-5 +6 +-1 +0 +4 +-3 +-2 +2 +-3 +-3 +4 +3 +-4 +7 +-1 +-3 +-1 +-3 +-3 +-1 +-2 +7 +9 +-3 +6 +-2 +-2 +-3 +-2 +4 +13 +5 +2 +5 +2 +-4 +-5 +-1 +-1 +-4 +8 +9 +4 +1 +-6 +0 +-2 +-1 +10 +15 +-2 +-2 +10 +5 +-1 +-2 +-9 +-4 +1 +-6 +-5 +-3 +-4 +13 +11 +-1 +-1 +3 +10 +2 +-4 +-3 +-1 +-4 +-3 +8 +-5 +-1 +11 +10 +12 +-5 +-4 +-7 +-7 +12 +13 +2 +-4 +-4 +3 +-5 +5 +-3 +2 +5 +-6 +-8 +4 +-5 +-6 +1 +2 +1 +2 +0 +11 +-3 +6 +-26 +-49 +5 +-27 +-37 +32 +-10 +-36 +31 +-11 +-27 +16 +-19 +-39 +23 +-13 +-20 +29 +-11 +-20 +42 +2 +-23 +20 +-16 +-34 +32 +2 +-25 +28 +-10 +-29 +26 +-13 +-16 +27 +-10 +-31 +42 +0 +-27 +27 +-10 +-29 +27 +-11 +-30 +32 +-7 +-29 +31 +-8 +-28 +34 +-5 +-28 +30 +-8 +-25 +29 +-7 +-27 +42 +-1 +-17 +28 +-7 +-22 +29 +-2 +-17 +32 +-8 +-25 +28 +-10 +-26 +29 +-7 +-28 +30 +-1 +-23 +28 +-9 +-12 +36 +-5 +-26 +28 +-6 +-27 +33 +-5 +-9 +34 +-4 +-27 +31 +-9 +-21 +33 +-7 +-29 +33 +-5 +-29 +30 +-9 +-29 +32 +-3 +-28 +33 +-7 +-27 +35 +-4 +-27 +29 +-7 +-11 +33 +-5 +-26 +32 +-7 +-26 +38 +-1 +-27 +25 +-12 +-16 +32 +-8 +-28 +44 +0 +-25 +26 +-11 +-20 +18 +19 +19 +32 +21 +18 +11 +5 +20 +18 +4 +7 +3 +2 +4 +0 +1 +7 +4 +10 +2 +-1 +0 +4 +-2 +3 +2 +-3 +2 +-1 +-1 +0 +1 +17 +12 +-1 +4 +-2 +-5 +11 +6 +-5 +2 +19 +-1 +-1 +-2 +5 +-2 +-5 +-3 +7 +8 +-5 +-4 +2 +-4 +-1 +-4 +9 +7 +-5 +3 +3 +1 +6 +8 +2 +-4 +-5 +-10 +-5 +-2 +-6 +2 +-2 +5 +17 +0 +0 +0 +-3 +-3 +-4 +-6 +1 +-5 +-4 +-2 +-4 +-1 +3 +-2 +0 +0 +4 +0 +12 +0 +-2 +-2 +3 +-1 +-1 +-3 +9 +-3 +12 +14 +11 +-4 +-5 +-1 +-3 +15 +0 +0 +-6 +10 +-3 +-4 +6 +-3 +-3 +-3 +0 +-1 +0 +-34 +9 +-26 +-45 +7 +-25 +-43 +33 +-9 +-34 +21 +-13 +-36 +22 +-14 +-29 +30 +-7 +-29 +37 +3 +-13 +26 +-9 +-26 +24 +-13 +-28 +28 +-7 +-24 +32 +-8 +-17 +34 +-6 +-29 +28 +-6 +-26 +27 +-8 +-28 +27 +-8 +-11 +31 +-5 +-22 +26 +-11 +-26 +32 +-5 +-22 +32 +-7 +-23 +28 +-10 +-23 +31 +-7 +-25 +30 +-7 +-27 +35 +-5 +-17 +46 +2 +-25 +28 +-11 +-21 +31 +-8 +-28 +36 +-5 +-14 +31 +-4 +-28 +26 +-11 +-27 +32 +-8 +-24 +27 +-11 +-29 +28 +-7 +-21 +30 +-9 +-25 +32 +-1 +-18 +30 +-7 +-24 +28 +-9 +-28 +51 +5 +-22 +28 +-9 +-29 +30 +1 +-23 +27 +-10 +-30 +31 +-9 +-26 +30 +-5 +-23 +34 +-5 +-26 +33 +2 +-25 +27 +-11 +-28 +28 +-9 +-14 +35 +-4 +-26 +28 +1 +25 +23 +20 +17 +15 +14 +11 +10 +30 +10 +12 +4 +1 +21 +4 +2 +3 +-2 +2 +8 +2 +1 +-4 +-5 +-3 +-1 +-4 +0 +-3 +8 +0 +1 +12 +0 +-2 +-3 +6 +1 +3 +-5 +3 +1 +-2 +13 +3 +-2 +2 +14 +0 +-6 +-4 +1 +-4 +-3 +-1 +-3 +2 +0 +5 +-4 +-4 +2 +-4 +3 +5 +6 +0 +-1 +-4 +-4 +-3 +0 +8 +0 +7 +-2 +-4 +-1 +-1 +-1 +0 +-3 +11 +1 +15 +3 +-1 +-1 +-4 +-5 +6 +1 +-3 +0 +0 +-3 +-2 +7 +1 +1 +-3 +-1 +1 +-6 +-2 +15 +11 +-2 +-2 +-3 +-3 +0 +-3 +2 +6 +-2 +2 +0 +-6 +-3 +-1 +-1 +15 +10 +-3 +3 +14 +10 +8 +-28 +-41 +8 +-28 +-32 +14 +-20 +-40 +16 +-17 +-36 +20 +-6 +-31 +33 +-8 +-30 +24 +-13 +-30 +26 +-8 +-20 +39 +-3 +-26 +31 +-7 +-30 +30 +-6 +-29 +26 +-10 +-25 +39 +-3 +-26 +27 +-9 +-25 +26 +-9 +-28 +28 +-9 +-19 +32 +-7 +-19 +39 +-4 +-26 +41 +-1 +-21 +28 +-8 +-29 +32 +0 +-25 +26 +-11 +-27 +26 +-10 +-19 +38 +-1 +-10 +44 +0 +-27 +33 +-4 +-26 +26 +-10 +-32 +25 +-2 +-26 +30 +-9 +-31 +32 +-8 +-22 +26 +-11 +-26 +30 +-10 +-22 +32 +-5 +-23 +31 +-1 +-10 +32 +0 +-17 +45 +0 +-26 +25 +-12 +-19 +28 +-12 +-30 +22 +-13 +-32 +33 +-6 +-29 +29 +-9 +-29 +30 +5 +-22 +28 +-3 +-25 +29 +-9 +-22 +27 +-9 +-23 +29 +-6 +-24 +31 +-5 +-26 +36 +-5 +-26 +27 +30 +25 +20 +15 +14 +11 +8 +14 +26 +9 +22 +5 +1 +14 +9 +0 +0 +4 +-3 +-4 +-1 +2 +6 +-4 +5 +6 +-2 +13 +1 +3 +-4 +-4 +-1 +-6 +2 +2 +-1 +-2 +17 +1 +3 +-1 +-2 +6 +-5 +-1 +-4 +0 +-3 +10 +9 +-2 +15 +-2 +13 +-4 +-9 +12 +-2 +-5 +3 +6 +-6 +-3 +-5 +-4 +-1 +7 +1 +-7 +-3 +1 +-3 +-4 +-2 +-1 +-2 +7 +0 +5 +-2 +1 +6 +-4 +13 +11 +7 +-3 +-7 +-1 +-4 +4 +-4 +-4 +2 +-7 +-2 +-1 +3 +-1 +5 +8 +11 +-4 +-2 +1 +15 +0 +1 +0 +2 +13 +0 +-5 +15 +-2 +-2 +3 +-8 +9 +7 +-1 +-9 +-7 +-3 +-4 +-6 +8 +-28 +-41 +17 +-22 +-44 +11 +-23 +-41 +18 +-15 +-27 +39 +-4 +-32 +26 +-12 +-22 +36 +-5 +-32 +34 +-6 +-31 +22 +-13 +-32 +40 +0 +-22 +37 +-5 +-28 +27 +-12 +-26 +22 +-14 +-30 +24 +-13 +-30 +38 +-3 +-27 +36 +-3 +-25 +30 +-8 +-26 +27 +-2 +-12 +36 +-4 +-29 +33 +-6 +-26 +31 +-7 +-24 +45 +5 +-13 +36 +-5 +-28 +26 +-12 +-18 +32 +-8 +-32 +25 +-13 +-29 +27 +-9 +-29 +43 +1 +-18 +31 +-7 +-29 +28 +-10 +-25 +27 +-1 +-27 +36 +-6 +-27 +33 +-6 +-21 +29 +-10 +-30 +32 +-6 +-24 +31 +-2 +-23 +34 +-2 +-26 +32 +-8 +-26 +26 +-10 +-24 +38 +-1 +-19 +31 +-3 +-25 +32 +-5 +-24 +29 +-8 +-31 +27 +-7 +-17 +38 +-1 +-28 +26 +-12 +-28 +29 +-4 +-27 +40 +2 +-22 +21 +23 +20 +25 +19 +24 +10 +9 +10 +7 +6 +9 +2 +4 +3 +5 +0 +2 +1 +3 +6 +3 +-1 +7 +17 +16 +4 +-2 +-3 +-1 +4 +12 +15 +6 +-7 +5 +-4 +3 +-2 +-4 +-8 +-6 +-6 +-4 +5 +3 +2 +-1 +-2 +4 +-4 +-5 +5 +2 +-7 +-4 +-4 +10 +-1 +4 +-2 +-3 +2 +0 +0 +1 +0 +1 +10 +6 +4 +-5 +-6 +-4 +1 +11 +4 +-3 +-3 +-2 +0 +14 +1 +-3 +-2 +2 +3 +3 +-2 +-4 +0 +-4 +-4 +-2 +6 +-2 +10 +0 +-3 +-6 +-4 +-1 +5 +-2 +-3 +-3 +5 +1 +-2 +5 +8 +2 +-3 +0 +8 +-3 +-4 +1 +10 +1 +-4 +-1 +-2 +0 +5 +-2 +-4 +-3 +10 +-26 +-48 +13 +-23 +-40 +14 +-21 +-39 +26 +-13 +-34 +26 +-12 +-31 +32 +-8 +-28 +27 +-11 +-28 +27 +-9 +-27 +29 +1 +-17 +38 +0 +-23 +28 +-10 +-29 +26 +-10 +-24 +42 +4 +-21 +35 +-4 +-26 +44 +0 +-26 +35 +-4 +-14 +26 +-12 +-20 +34 +-8 +-32 +23 +-13 +-21 +34 +-7 +-30 +32 +-8 +-31 +28 +-8 +-29 +30 +-8 +-30 +28 +-2 +-20 +26 +-9 +-29 +33 +-7 +-27 +29 +-6 +-23 +31 +-4 +-17 +30 +-8 +-28 +37 +-3 +-13 +42 +-1 +-26 +24 +-11 +-25 +29 +-3 +-20 +27 +-11 +-28 +34 +-5 +-29 +27 +-10 +-29 +44 +1 +-23 +30 +-10 +-25 +30 +-3 +-19 +28 +-10 +-23 +27 +-10 +-27 +46 +2 +-18 +37 +-1 +-28 +26 +-13 +-31 +31 +-8 +-30 +27 +-10 +-24 +26 +2 +-24 +36 +-3 +-19 +35 +30 +37 +27 +19 +27 +18 +5 +8 +0 +-3 +14 +13 +-1 +-3 +-3 +9 +-2 +2 +7 +4 +-3 +-3 +0 +-3 +5 +-3 +-4 +5 +2 +4 +1 +9 +3 +-4 +11 +8 +-4 +-3 +-6 +-5 +4 +8 +-3 +-4 +2 +16 +1 +-4 +-2 +-2 +-8 +-4 +4 +-4 +-2 +-1 +-1 +3 +-2 +5 +-2 +1 +-3 +4 +-1 +-2 +1 +-3 +7 +2 +6 +-3 +5 +4 +2 +12 +5 +-5 +-6 +8 +17 +-2 +-1 +-4 +2 +-5 +-7 +-6 +-3 +-4 +-2 +1 +8 +0 +-1 +5 +-5 +-1 +14 +1 +-2 +-5 +-5 +-3 +-2 +6 +-1 +5 +1 +-3 +7 +-4 +-3 +-1 +5 +6 +-2 +13 +4 +0 +6 +10 +5 +-6 +1 +9 +5 +-31 +10 +-27 +-43 +6 +-28 +-33 +33 +-8 +-35 +12 +-18 +-26 +23 +-16 +-23 +22 +-15 +-34 +34 +-6 +-27 +26 +-9 +-32 +25 +-9 +-22 +31 +-6 +-28 +26 +-3 +-23 +29 +-9 +-22 +31 +-10 +-29 +33 +-1 +-21 +32 +-8 +-29 +26 +-8 +-29 +39 +4 +-23 +30 +-3 +-29 +29 +-8 +-22 +29 +-10 +-27 +42 +1 +-8 +29 +-9 +-23 +27 +-11 +-27 +36 +-3 +-26 +27 +-11 +-24 +32 +-6 +-29 +31 +-7 +-18 +30 +-8 +-24 +30 +-9 +-26 +28 +-9 +-25 +31 +-9 +-24 +31 +-6 +-21 +29 +-5 +-14 +37 +6 +-23 +28 +-8 +-25 +29 +-9 +-31 +26 +0 +-23 +34 +-5 +-18 +32 +-6 +-28 +35 +-4 +-29 +33 +4 +-23 +27 +-9 +-31 +28 +-4 +-23 +41 +0 +-27 +28 +-7 +-30 +35 +-5 +-25 +30 +-10 +-14 +34 +-5 +9 +20 +20 +23 +21 +19 +24 +24 +12 +7 +0 +8 +3 +0 +-3 +0 +4 +6 +-1 +3 +-1 +-1 +-1 +15 +9 +2 +6 +-3 +-7 +10 +5 +-4 +3 +-4 +-4 +6 +6 +-1 +-4 +0 +-4 +-4 +-4 +-2 +-1 +0 +0 +15 +-2 +4 +8 +8 +-2 +-8 +2 +-6 +-7 +13 +-1 +-4 +-2 +-3 +-2 +9 +-3 +4 +-2 +12 +5 +7 +8 +5 +-6 +8 +0 +10 +12 +10 +-7 +-8 +-8 +-4 +-6 +-3 +-7 +-8 +-1 +-4 +11 +15 +4 +11 +11 +4 +-5 +-9 +-7 +-6 +-4 +-3 +-6 +-1 +3 +1 +3 +9 +13 +-2 +-6 +1 +-7 +-6 +-1 +-3 +1 +3 +-2 +1 +3 +3 +2 +-3 +-2 +-1 +1 +11 +2 +0 +11 +-26 +-41 +11 +-21 +-42 +12 +-17 +-39 +19 +-18 +-34 +31 +-9 +-33 +38 +-4 +-24 +30 +-4 +-26 +31 +-10 +-31 +26 +-8 +-28 +27 +-9 +-29 +24 +-9 +-25 +27 +-11 +-28 +33 +-6 +-28 +31 +-4 +-12 +32 +-5 +-28 +26 +-11 +-28 +29 +-8 +-27 +31 +0 +-22 +34 +-5 +-27 +48 +3 +-21 +27 +-11 +-22 +45 +0 +-26 +27 +-11 +-22 +45 +0 +-24 +43 +2 +-27 +27 +-11 +-28 +32 +-7 +-31 +24 +-9 +-30 +41 +-2 +-25 +28 +-11 +-22 +47 +3 +-25 +35 +-7 +-23 +26 +-10 +-32 +26 +-7 +-30 +23 +-13 +-24 +34 +-7 +-26 +31 +-1 +-20 +28 +-11 +-22 +36 +-1 +-23 +30 +-5 +-21 +32 +-7 +-22 +25 +-13 +-19 +30 +-3 +-26 +29 +-10 +-29 +29 +-6 +-29 +35 +-5 +-17 +50 +5 +-22 +23 +-13 +-28 +28 +21 +32 +34 +14 +8 +8 +9 +5 +21 +5 +9 +-1 +8 +1 +11 +-1 +3 +1 +9 +-2 +-2 +3 +-3 +-3 +-1 +12 +2 +-3 +-3 +-5 +1 +13 +6 +1 +9 +1 +7 +-4 +12 +8 +13 +-1 +8 +-2 +-2 +-7 +5 +-2 +5 +-5 +-6 +-5 +-3 +-5 +-6 +-5 +-4 +-2 +-1 +-5 +-1 +2 +3 +6 +1 +0 +-4 +-4 +9 +1 +5 +-1 +5 +-6 +-1 +-3 +9 +2 +-5 +-1 +9 +8 +17 +0 +2 +-3 +10 +11 +7 +9 +-6 +-7 +-10 +-5 +-6 +-1 +-6 +10 +0 +7 +-5 +-4 +-2 +9 +-5 +-5 +-2 +3 +-1 +1 +16 +-2 +-1 +-2 +1 +-7 +-2 +11 +7 +-3 +0 +0 +-3 +-7 +0 +0 +-2 +13 +-25 +-48 +7 +-28 +-46 +12 +-19 +-34 +32 +-10 +-34 +19 +-16 +-34 +23 +-13 +-29 +28 +-11 +-30 +38 +-4 +-26 +31 +-8 +-29 +26 +-9 +-26 +35 +-6 +-24 +30 +-9 +-25 +31 +-6 +-27 +46 +2 +-24 +42 +-1 +-27 +41 +2 +-19 +22 +-14 +-34 +35 +-4 +-28 +24 +-11 +-24 +25 +-12 +-28 +34 +-2 +-25 +29 +-4 +-21 +32 +-7 +-27 +27 +-9 +-29 +34 +-3 +-27 +30 +-7 +-22 +44 +6 +-18 +27 +-10 +-30 +47 +3 +-22 +43 +-1 +-29 +25 +-12 +-26 +28 +-7 +-31 +25 +-11 +-27 +27 +-9 +-19 +30 +-6 +-27 +28 +3 +-23 +30 +-8 +-21 +43 +-1 +-27 +26 +-6 +-26 +31 +-9 +-26 +26 +-9 +-27 +25 +-12 +-29 +30 +-4 +-27 +41 +0 +-24 +39 +0 +-12 +38 +-2 +-25 +37 +0 +-29 +25 +-11 +-31 +21 +21 +18 +19 +19 +13 +15 +8 +16 +14 +10 +5 +3 +17 +4 +2 +3 +4 +8 +10 +-1 +3 +-4 +7 +2 +8 +1 +-3 +1 +-4 +11 +15 +14 +5 +-8 +-8 +-3 +-5 +-4 +-5 +2 +5 +-2 +-3 +-3 +-4 +-6 +-3 +-1 +4 +5 +1 +16 +1 +-3 +-3 +-3 +3 +-5 +8 +3 +-5 +-4 +-2 +-2 +12 +7 +-1 +2 +5 +-1 +6 +2 +-4 +-1 +-4 +-2 +-1 +1 +-4 +3 +1 +3 +2 +7 +8 +-5 +-3 +0 +-4 +2 +-5 +-4 +-1 +-3 +-3 +-1 +6 +6 +-1 +2 +8 +16 +5 +-6 +5 +-3 +-4 +-6 +-4 +3 +3 +9 +-1 +-4 +-2 +-3 +9 +-1 +-4 +11 +1 +3 +-4 +-6 +-2 +0 +-4 +13 +-23 +-46 +21 +-18 +-42 +17 +-19 +-41 +21 +-17 +-37 +35 +-6 +-32 +21 +-16 +-30 +20 +-14 +-28 +24 +-13 +-27 +29 +-5 +-26 +38 +-3 +-8 +32 +-8 +-26 +32 +-8 +-26 +26 +-10 +-22 +32 +-8 +-27 +37 +-4 +-27 +30 +-8 +-28 +32 +-7 +-26 +28 +-10 +-23 +38 +4 +-23 +30 +-8 +-30 +36 +-4 +-27 +27 +-4 +-25 +38 +-3 +-27 +32 +-7 +-28 +33 +-6 +-27 +29 +-8 +-27 +38 +-2 +-22 +33 +-6 +-19 +43 +0 +-25 +25 +-12 +-31 +30 +-6 +-29 +40 +-3 +-24 +35 +-3 +-28 +28 +-2 +-19 +25 +-11 +-28 +35 +0 +-25 +28 +-9 +-30 +27 +-11 +-29 +33 +-6 +-27 +28 +-10 +-14 +35 +-3 +-15 +30 +-9 +-27 +25 +-9 +-29 +27 +-7 +-25 +34 +-2 +-25 +37 +-3 +-26 +33 +-5 +-25 +35 +-6 +-18 +28 +22 +21 +31 +17 +16 +14 +14 +6 +7 +12 +4 +14 +4 +14 +2 +0 +4 +-1 +8 +-2 +7 +7 +-1 +3 +-2 +-2 +-2 +-3 +1 +4 +2 +4 +2 +8 +-2 +9 +6 +19 +1 +-6 +-7 +2 +-2 +-5 +-1 +-4 +0 +-2 +-2 +15 +2 +-2 +-4 +6 +0 +-2 +0 +6 +-1 +6 +-2 +-2 +-3 +-1 +1 +-1 +-3 +0 +8 +12 +2 +-4 +-2 +-6 +-3 +3 +-2 +2 +0 +14 +2 +-4 +2 +13 +-1 +-6 +-5 +-6 +1 +-4 +2 +3 +2 +-6 +1 +15 +7 +-4 +1 +-2 +-5 +-1 +-4 +6 +-3 +-4 +-4 +-4 +-2 +-1 +1 +3 +14 +2 +-2 +-3 +-3 +3 +3 +-3 +-2 +0 +16 +0 +-4 +1 +9 +12 +-25 +-49 +6 +-29 +-45 +20 +-15 +-37 +26 +-12 +-35 +22 +-13 +-32 +29 +-8 +-27 +32 +-5 +-27 +33 +-7 +-23 +25 +-12 +-32 +27 +-9 +-16 +29 +-9 +-30 +29 +-8 +-27 +30 +-7 +-28 +29 +-1 +-25 +34 +-2 +-20 +40 +-3 +-27 +27 +-7 +-30 +38 +-4 +-18 +32 +-7 +-25 +30 +-9 +-29 +47 +3 +-24 +29 +-9 +-23 +29 +-9 +-31 +32 +-7 +-26 +29 +-9 +-28 +29 +-7 +-23 +30 +-5 +-28 +29 +-9 +-27 +31 +-1 +-21 +30 +-4 +-26 +48 +4 +-16 +28 +-11 +-26 +27 +-8 +-29 +31 +-8 +-23 +45 +1 +-23 +29 +-5 +-27 +25 +-2 +-13 +35 +-7 +-22 +27 +-2 +-27 +29 +-9 +-31 +32 +-7 +-22 +38 +3 +-25 +24 +-11 +-25 +32 +-8 +-23 +29 +-8 +-29 +27 +-10 +-15 +32 +-7 +-13 +29 +-10 +-21 +19 +33 +27 +22 +29 +13 +9 +12 +15 +2 +7 +2 +6 +5 +3 +1 +3 +2 +3 +14 +6 +1 +2 +0 +2 +7 +16 +12 +0 +2 +-5 +-3 +-1 +-3 +1 +4 +-2 +1 +3 +-6 +-1 +-5 +5 +1 +-1 +1 +1 +1 +10 +-3 +-4 +-1 +-8 +0 +-1 +-5 +2 +1 +-3 +0 +1 +0 +1 +4 +9 +-2 +1 +-2 +10 +2 +-4 +-2 +-4 +-4 +6 +14 +1 +-1 +1 +4 +0 +-5 +-4 +-2 +3 +-1 +-3 +2 +-4 +10 +-3 +-3 +5 +-1 +-3 +-1 +0 +0 +-3 +-2 +6 +-3 +4 +4 +-1 +4 +5 +4 +-4 +-3 +0 +0 +5 +-3 +-4 +-3 +-2 +7 +9 +9 +-4 +8 +18 +2 +7 +1 +11 +-4 +4 +-31 +-49 +7 +-29 +-45 +7 +-25 +-42 +19 +-17 +-26 +24 +-11 +-27 +25 +-6 +-28 +26 +-10 +-18 +34 +-6 +-28 +36 +-3 +-19 +26 +-10 +-23 +29 +-9 +-26 +35 +-7 +-26 +28 +-9 +-30 +30 +-3 +-18 +30 +-8 +-22 +28 +-11 +-26 +26 +-2 +-23 +28 +-7 +-28 +34 +-3 +-28 +41 +1 +-26 +30 +-7 +-29 +32 +-4 +-24 +30 +-5 +-20 +29 +-8 +-24 +35 +-5 +-29 +29 +-6 +-15 +29 +0 +-24 +38 +-4 +-22 +25 +-12 +-32 +43 +3 +-25 +28 +-7 +-19 +32 +-8 +-22 +38 +-3 +-28 +30 +-6 +-27 +25 +-1 +-27 +31 +-9 +-26 +30 +-4 +-14 +29 +-8 +-29 +40 +-1 +-25 +38 +-4 +-18 +39 +-2 +-30 +22 +-13 +-31 +41 +2 +-27 +25 +-12 +-27 +42 +3 +-24 +24 +-9 +-22 +24 +-13 +-29 +25 +-8 +-19 +32 +34 +19 +16 +24 +16 +11 +8 +16 +6 +4 +5 +4 +5 +7 +7 +2 +1 +3 +5 +5 +7 +3 +-1 +10 +7 +-3 +-4 +-1 +-2 +-4 +-3 +5 +3 +8 +2 +-3 +-2 +1 +-3 +4 +-3 +-3 +-2 +-1 +2 +3 +4 +3 +8 +11 +-2 +0 +-4 +11 +7 +11 +1 +-5 +-2 +-3 +5 +-5 +-1 +-6 +-4 +0 +6 +-3 +-4 +0 +3 +-3 +2 +-1 +-2 +1 +1 +-4 +1 +2 +0 +3 +8 +-1 +-2 +-4 +14 +-1 +3 +3 +-2 +7 +8 +-2 +-6 +-5 +3 +-2 +-5 +7 +16 +7 +5 +-5 +-5 +-1 +-2 +-6 +10 +8 +1 +11 +1 +-5 +-5 +-6 +3 +-7 +-5 +-4 +3 +-6 +-5 +3 +0 +2 +-2 +24 +-16 +-45 +7 +-29 +-44 +11 +-22 +-36 +15 +-19 +-18 +25 +-14 +-35 +22 +-14 +-27 +47 +3 +-27 +38 +-4 +-30 +30 +-7 +-30 +36 +-6 +-25 +23 +-13 +-32 +46 +1 +-27 +24 +-12 +-25 +26 +-4 +-20 +29 +-3 +-14 +35 +-7 +-22 +27 +-9 +-30 +26 +-7 +-29 +36 +-3 +-26 +32 +-9 +-30 +25 +-11 +-30 +29 +-8 +-23 +31 +-5 +-25 +42 +-1 +-21 +32 +-8 +-28 +33 +-8 +-29 +28 +-9 +-29 +34 +0 +-25 +42 +0 +-17 +35 +-5 +-29 +26 +-11 +-18 +36 +2 +-22 +24 +-11 +-31 +27 +-10 +-28 +30 +-8 +-28 +30 +-9 +-28 +34 +4 +-14 +38 +-4 +-25 +26 +-7 +-23 +29 +-10 +-29 +28 +-5 +-26 +29 +-7 +-14 +36 +-5 +-19 +33 +-8 +-25 +45 +2 +-26 +29 +-10 +-27 +25 +-6 +-21 +34 +-6 +-26 +22 +25 +33 +21 +18 +13 +26 +11 +20 +23 +15 +0 +-3 +7 +1 +-4 +-1 +1 +10 +18 +0 +4 +-5 +11 +15 +-2 +0 +-8 +-7 +-5 +-2 +-6 +5 +-1 +6 +-2 +-6 +-3 +10 +-1 +-2 +-2 +-2 +10 +-2 +0 +0 +-1 +6 +-1 +-3 +-3 +-3 +2 +-2 +0 +9 +1 +-1 +10 +1 +-3 +-2 +-5 +-4 +-1 +-3 +5 +1 +5 +-1 +1 +-1 +-1 +13 +22 +1 +-4 +-9 +-3 +-4 +1 +-1 +3 +0 +2 +4 +16 +9 +0 +-1 +-5 +-4 +-3 +-3 +3 +5 +-1 +-2 +1 +4 +-3 +5 +-1 +-5 +1 +2 +0 +2 +2 +-4 +-1 +-3 +11 +14 +2 +-5 +-5 +-4 +-3 +-4 +2 +2 +11 +10 +0 +-8 +-5 +7 +-29 +-48 +18 +-20 +-29 +14 +-22 +-41 +14 +-18 +-37 +28 +-11 +-31 +31 +-9 +-23 +26 +-12 +-31 +37 +-5 +-29 +29 +-10 +-29 +38 +1 +-13 +27 +-7 +-30 +25 +-12 +-30 +30 +-7 +-28 +42 +1 +-24 +33 +-6 +-30 +47 +2 +-21 +42 +-1 +-13 +27 +-13 +-31 +23 +-12 +-33 +37 +-3 +-16 +42 +0 +-29 +23 +-11 +-32 +30 +-7 +-30 +25 +-9 +-26 +33 +-2 +-27 +38 +-4 +-27 +30 +-7 +-30 +28 +-10 +-27 +29 +-9 +-28 +39 +-1 +-18 +31 +-6 +-29 +28 +-2 +-21 +35 +-5 +-26 +26 +-7 +-28 +26 +-3 +-18 +32 +-6 +-18 +28 +-5 +-16 +30 +-10 +-27 +29 +-1 +-27 +33 +-7 +-29 +28 +-9 +-21 +32 +-8 +-28 +30 +-7 +-26 +46 +2 +-23 +34 +-6 +-21 +39 +0 +-27 +27 +-9 +-29 +30 +-10 +-29 +22 +40 +32 +17 +11 +8 +20 +10 +7 +7 +5 +5 +13 +11 +2 +2 +5 +1 +-1 +0 +15 +8 +14 +5 +-4 +-2 +-4 +-1 +2 +-3 +-3 +6 +10 +-2 +-4 +-1 +-2 +4 +-1 +0 +9 +-2 +-1 +1 +5 +-1 +-2 +2 +0 +-6 +-6 +-1 +5 +17 +2 +-2 +5 +5 +-1 +-2 +-3 +-4 +-3 +-1 +0 +-1 +8 +15 +8 +-5 +2 +-5 +-3 +-4 +9 +11 +0 +-4 +-4 +-6 +1 +1 +-5 +-3 +4 +16 +0 +0 +3 +-6 +-1 +9 +-4 +-5 +-4 +-4 +-1 +3 +9 +-2 +1 +-4 +-2 +16 +0 +-2 +-1 +-6 +-5 +-3 +-2 +2 +4 +5 +19 +1 +-3 +2 +-2 +-2 +-5 +9 +2 +4 +-4 +13 +0 +-4 +12 +-25 +-48 +5 +-28 +-46 +11 +-23 +-40 +23 +-13 +-33 +25 +-13 +-26 +33 +-6 +-30 +23 +-13 +-31 +29 +-8 +-29 +28 +-9 +-29 +31 +-6 +-20 +39 +-2 +-17 +28 +-8 +-14 +33 +-6 +-30 +33 +-7 +-29 +32 +-7 +-24 +28 +-8 +-25 +27 +-9 +-29 +34 +-4 +-27 +30 +-7 +-28 +47 +3 +-24 +28 +-9 +-31 +28 +-10 +-25 +32 +-6 +-22 +30 +-9 +-28 +28 +-9 +-28 +37 +-2 +-19 +32 +3 +-23 +31 +-7 +-23 +30 +-2 +-26 +28 +-9 +-22 +30 +-4 +-28 +32 +-5 +-26 +40 +-1 +-25 +29 +-2 +-24 +29 +-7 +-26 +41 +-3 +-22 +33 +-7 +-21 +31 +-9 +-20 +27 +-9 +-30 +28 +-8 +-18 +30 +-1 +-26 +28 +-7 +-26 +32 +-7 +-28 +34 +-6 +-23 +37 +-2 +-8 +34 +-7 +-15 +37 +-4 +-30 +32 +-9 +-25 +20 +17 +17 +31 +18 +11 +11 +9 +6 +11 +7 +7 +4 +7 +3 +10 +8 +3 +5 +11 +8 +-1 +5 +2 +-7 +-1 +-4 +4 +13 +0 +9 +15 +15 +-4 +-4 +-7 +-6 +-5 +-5 +7 +-4 +2 +1 +-1 +14 +1 +-4 +11 +-5 +-3 +-4 +-6 +-5 +2 +11 +9 +-2 +-5 +-1 +-4 +4 +-4 +0 +11 +9 +0 +-4 +3 +9 +5 +-1 +-6 +4 +-3 +-7 +-4 +0 +-7 +10 +2 +-4 +-4 +-1 +15 +-1 +-4 +5 +1 +0 +3 +-4 +-6 +-7 +0 +3 +-2 +6 +11 +0 +-5 +-2 +1 +-3 +7 +-4 +-2 +-1 +0 +-3 +-1 +11 +-1 +-3 +4 +-1 +-1 +-1 +1 +0 +4 +-3 +4 +-5 +-5 +-3 +1 +-5 +-3 +11 +-25 +-36 +19 +-18 +-37 +15 +-17 +-38 +29 +-9 +-30 +37 +-5 +-33 +23 +-15 +-32 +28 +-11 +-33 +25 +-13 +-29 +29 +-10 +-21 +27 +-11 +-28 +35 +-5 +-29 +30 +-8 +-27 +32 +-1 +-19 +29 +-1 +-12 +29 +-10 +-30 +31 +-6 +-14 +30 +-9 +-30 +36 +-6 +-25 +29 +-8 +-29 +28 +-10 +-25 +38 +-1 +-25 +35 +-1 +-24 +34 +-6 +-29 +30 +-4 +-23 +25 +-11 +-28 +35 +0 +-16 +46 +2 +-23 +29 +-11 +-32 +24 +-9 +-28 +45 +2 +-24 +28 +-8 +-26 +29 +-10 +-21 +24 +-11 +-27 +31 +-4 +-24 +27 +-8 +-17 +30 +-4 +-12 +30 +-9 +-30 +29 +-7 +-28 +30 +-8 +-15 +43 +-1 +-26 +33 +-6 +-30 +37 +-5 +-19 +34 +-6 +-28 +25 +-13 +-29 +29 +-9 +-27 +32 +-8 +-27 +44 +4 +-21 +29 +-10 +-29 +19 +19 +25 +35 +25 +15 +16 +13 +7 +10 +5 +3 +2 +2 +5 +4 +-2 +-2 +5 +4 +5 +1 +-1 +1 +10 +2 +-3 +-1 +-1 +1 +1 +5 +2 +1 +1 +-1 +-2 +9 +-2 +2 +-1 +1 +3 +6 +4 +1 +20 +1 +-6 +1 +-5 +-4 +4 +5 +-1 +2 +0 +-3 +-3 +8 +8 +10 +-3 +-6 +-1 +1 +-4 +-2 +-2 +-5 +2 +-2 +0 +-2 +-2 +9 +-3 +1 +-2 +1 +-2 +-2 +-1 +-1 +13 +11 +1 +4 +-4 +5 +0 +-5 +-6 +1 +-1 +-3 +12 +2 +-3 +1 +-4 +-1 +-2 +-4 +3 +13 +1 +0 +-2 +4 +6 +-4 +-4 +1 +0 +-4 +1 +2 +-4 +-3 +2 +-2 +15 +1 +0 +-2 +0 +19 +-21 +14 +-23 +-40 +22 +-13 +-32 +23 +-17 +-40 +16 +-20 +-32 +27 +-10 +-34 +18 +-17 +-28 +25 +-9 +-18 +24 +-13 +-29 +25 +-7 +-29 +31 +-8 +-27 +25 +-11 +-25 +36 +1 +-24 +42 +0 +-26 +26 +-10 +-28 +32 +-8 +-29 +43 +8 +-22 +30 +-10 +-23 +26 +-2 +-21 +43 +-1 +-28 +29 +-9 +-33 +30 +-3 +-22 +25 +-9 +-25 +31 +-9 +-30 +28 +-9 +-29 +29 +-8 +-13 +35 +-5 +-26 +46 +5 +-24 +24 +-11 +-16 +30 +-8 +-27 +41 +1 +-27 +28 +-6 +-28 +25 +-11 +-30 +31 +-8 +-29 +47 +3 +-25 +29 +-10 +-30 +29 +-8 +-30 +29 +-9 +-19 +33 +-6 +-15 +33 +-7 +-24 +28 +-10 +-23 +29 +-10 +-27 +28 +-6 +-27 +31 +-5 +-26 +46 +3 +-24 +38 +-5 +-27 +29 +-9 +-29 +41 +-2 +-25 +30 +1 +13 +21 +18 +22 +28 +14 +16 +6 +9 +9 +8 +13 +3 +0 +0 +10 +-1 +9 +3 +4 +-3 +1 +-2 +-3 +11 +10 +-1 +0 +3 +11 +-4 +-3 +6 +-2 +4 +-5 +-5 +-2 +-5 +1 +-2 +-2 +-1 +0 +-4 +-1 +-2 +0 +5 +7 +0 +5 +-3 +1 +-3 +1 +-1 +2 +-2 +-3 +11 +21 +1 +12 +7 +-6 +-4 +-2 +-6 +-5 +-3 +2 +-6 +-5 +-4 +-3 +1 +6 +2 +14 +11 +11 +7 +-1 +-8 +-2 +-1 +-4 +3 +-2 +-3 +-5 +1 +-3 +0 +-1 +5 +-3 +0 +-2 +0 +3 +-2 +-2 +-2 +2 +5 +1 +-2 +1 +3 +8 +-2 +12 +2 +-2 +4 +-3 +-6 +2 +8 +10 +-4 +-1 +0 +-5 +-3 +0 +13 +-23 +-48 +6 +-18 +-41 +17 +-19 +-37 +18 +-18 +-32 +37 +-5 +-31 +24 +-13 +-32 +24 +-13 +-32 +32 +-9 +-15 +33 +0 +-26 +28 +-10 +-29 +24 +-12 +-29 +32 +-6 +-27 +38 +-1 +-25 +32 +-8 +-26 +31 +-5 +-23 +30 +-8 +-27 +32 +-6 +-13 +33 +-7 +-26 +26 +-9 +-28 +29 +-3 +-24 +35 +-3 +-27 +31 +-3 +-25 +30 +-5 +-17 +40 +-2 +-23 +31 +-6 +-23 +26 +-10 +-23 +25 +-9 +-25 +40 +-3 +-27 +41 +-1 +-29 +33 +-7 +-27 +27 +-10 +-21 +39 +-3 +-22 +26 +-7 +-30 +25 +-10 +-19 +37 +-4 +-26 +34 +-3 +-23 +43 +9 +-23 +32 +-7 +-17 +28 +-6 +-23 +31 +-10 +-28 +23 +-13 +-30 +26 +-10 +-30 +26 +-10 +-28 +36 +-3 +-27 +26 +-10 +-25 +32 +-7 +-8 +32 +-6 +-28 +31 +-9 +-11 +24 +31 +28 +17 +23 +14 +23 +17 +10 +13 +4 +17 +7 +-1 +2 +4 +-3 +6 +-1 +5 +4 +-3 +-2 +3 +-4 +-2 +4 +5 +8 +-1 +-3 +0 +13 +0 +0 +6 +9 +-4 +-4 +5 +-5 +-3 +-1 +-2 +1 +6 +-1 +-1 +-5 +-3 +-5 +-5 +-4 +-1 +3 +10 +3 +2 +5 +-4 +3 +2 +1 +-1 +11 +13 +7 +-5 +-8 +-1 +-3 +-6 +-4 +0 +7 +-4 +0 +0 +-4 +15 +3 +0 +5 +17 +-1 +2 +-3 +-6 +-4 +-5 +-6 +-5 +-5 +0 +2 +-1 +-1 +-2 +0 +6 +-1 +13 +0 +12 +4 +10 +0 +-1 +-1 +-5 +-3 +0 +-5 +-7 +-1 +1 +1 +-3 +0 +1 +0 +1 +-2 +1 +-1 +-1 +1 +-4 +11 +-20 +-45 +18 +-20 +-43 +12 +-20 +-41 +17 +-14 +-33 +22 +-12 +-32 +31 +-9 +-27 +37 +-2 +-19 +26 +-13 +-32 +29 +-9 +-27 +26 +-8 +-25 +29 +-6 +-25 +26 +-9 +-17 +33 +-6 +-17 +28 +-8 +-18 +35 +3 +-15 +43 +-1 +-27 +25 +-12 +-28 +28 +-11 +-30 +32 +-5 +-29 +32 +-7 +-28 +46 +2 +-26 +37 +-4 +-29 +25 +-11 +-26 +37 +-5 +-28 +27 +1 +-25 +29 +-8 +-28 +35 +-4 +-26 +28 +-1 +-25 +28 +-6 +-25 +45 +1 +-25 +32 +-8 +-27 +34 +-6 +-28 +26 +-11 +-31 +26 +-7 +-18 +32 +0 +-18 +27 +-11 +-27 +38 +-3 +-28 +26 +-12 +-23 +28 +-2 +-26 +31 +-7 +-27 +42 +3 +-24 +29 +-4 +-24 +28 +-10 +-29 +31 +-4 +-26 +26 +-5 +-27 +40 +-3 +-17 +35 +-4 +-17 +30 +-7 +-22 +16 +20 +23 +16 +24 +13 +17 +8 +9 +25 +8 +4 +6 +6 +6 +1 +0 +-4 +11 +4 +-1 +0 +-2 +-1 +0 +8 +5 +6 +9 +-2 +15 +5 +-4 +1 +3 +-1 +-2 +13 +-2 +-3 +-6 +1 +13 +1 +11 +9 +5 +-4 +-8 +-6 +0 +-6 +5 +-4 +-7 +-5 +0 +-3 +2 +4 +-4 +-4 +-3 +-2 +1 +4 +0 +1 +0 +0 +-1 +-2 +-5 +8 +0 +3 +4 +15 +-2 +-3 +-4 +-4 +-4 +0 +-2 +1 +4 +0 +7 +-1 +5 +3 +-3 +-2 +2 +5 +0 +-2 +-5 +-3 +-3 +-2 +1 +-1 +2 +7 +-5 +12 +19 +1 +0 +-7 +-4 +2 +0 +2 +12 +-2 +-4 +6 +-1 +5 +0 +-5 +-6 +-5 +12 +7 +-29 +14 +-25 +-46 +6 +-22 +-41 +13 +-16 +-37 +33 +-7 +-33 +36 +-6 +-26 +33 +-8 +-33 +26 +-12 +-29 +24 +-13 +-26 +46 +1 +-27 +37 +-4 +-30 +32 +-6 +-21 +22 +-12 +-27 +27 +-9 +-16 +30 +-10 +-32 +27 +-11 +-30 +34 +-6 +-26 +27 +-9 +-24 +32 +-6 +-24 +30 +-8 +-28 +38 +-2 +-27 +31 +-7 +-28 +37 +-3 +-28 +27 +-10 +-26 +30 +-7 +-28 +29 +-6 +-25 +28 +-6 +-27 +33 +-5 +-27 +32 +-6 +-15 +35 +-6 +-27 +30 +5 +-23 +39 +-3 +-19 +27 +-9 +-26 +30 +-9 +-28 +27 +-9 +-26 +32 +-7 +-27 +29 +-7 +-27 +34 +-6 +-12 +40 +-1 +-22 +32 +-7 +-28 +28 +-9 +-24 +28 +-9 +-23 +31 +-5 +-10 +33 +-7 +-27 +33 +1 +-20 +31 +-8 +-29 +32 +-7 +-25 +29 +-5 +-27 +30 +-8 +16 +40 +23 +15 +13 +24 +18 +6 +13 +14 +5 +15 +22 +6 +7 +-4 +-3 +1 +-1 +-2 +2 +4 +7 +-5 +-3 +-1 +0 +-1 +8 +1 +-5 +-2 +11 +15 +1 +5 +-5 +-2 +3 +-3 +-6 +0 +-6 +13 +4 +3 +-2 +-2 +-4 +7 +-1 +6 +-4 +-2 +-7 +-2 +3 +-3 +-4 +17 +1 +-5 +11 +1 +2 +-1 +4 +-4 +-3 +8 +12 +1 +1 +-1 +-5 +5 +-2 +-4 +-3 +0 +-4 +-1 +6 +-2 +-1 +-5 +-4 +-2 +5 +10 +11 +10 +-6 +-5 +8 +-2 +-6 +-6 +3 +-4 +2 +-2 +-1 +6 +6 +-3 +-6 +7 +6 +0 +3 +0 +4 +0 +-7 +1 +-6 +1 +2 +-5 +-2 +8 +5 +15 +13 +0 +-4 +-5 +8 +-28 +-50 +8 +-23 +-41 +14 +-22 +-42 +19 +-4 +-30 +20 +-8 +-22 +29 +-9 +-31 +31 +-7 +-32 +25 +-12 +-32 +25 +-9 +-29 +34 +-5 +-14 +29 +-7 +-27 +49 +3 +-24 +41 +-2 +-26 +33 +-8 +-29 +25 +-3 +-29 +23 +-12 +-31 +29 +-7 +-29 +45 +0 +-26 +30 +-9 +-29 +34 +-2 +-22 +26 +-12 +-26 +29 +-9 +-20 +30 +-7 +-26 +28 +-10 +-23 +42 +-1 +-26 +34 +-6 +-11 +28 +-10 +-26 +30 +-10 +-29 +44 +1 +-23 +45 +0 +-27 +40 +-2 +-30 +25 +-5 +-29 +21 +-15 +-31 +25 +-7 +-21 +33 +-5 +-27 +42 +1 +-19 +29 +-6 +-30 +37 +-6 +-29 +23 +-13 +-29 +32 +-7 +-21 +28 +-9 +-26 +27 +-2 +-12 +44 +0 +-25 +32 +-6 +-12 +30 +-7 +-30 +37 +-3 +-26 +25 +-10 +-29 +26 +-9 +-30 +20 +25 +20 +18 +15 +18 +26 +20 +7 +13 +9 +0 +3 +7 +10 +2 +16 +5 +-1 +-2 +14 +3 +6 +-3 +2 +-4 +-5 +-1 +0 +-4 +0 +-3 +3 +14 +7 +-3 +12 +4 +-7 +-1 +-5 +5 +1 +12 +1 +-5 +-6 +3 +-2 +0 +6 +1 +-1 +-3 +-3 +13 +0 +-5 +2 +-3 +-5 +-3 +0 +-5 +-2 +15 +3 +-3 +-5 +-2 +4 +0 +10 +-2 +-4 +12 +12 +1 +0 +-3 +-4 +1 +-4 +-3 +11 +1 +6 +-1 +-3 +-1 +-3 +16 +-1 +-4 +-1 +1 +1 +3 +0 +-2 +-6 +-1 +1 +-1 +-3 +4 +-3 +-3 +-4 +4 +-2 +1 +2 +-3 +-1 +-2 +-1 +4 +0 +0 +20 +3 +5 +-4 +11 +0 +-3 +-4 +10 +-23 +-41 +15 +-24 +-45 +11 +-23 +-42 +23 +-16 +-31 +26 +-10 +-32 +22 +-15 +-25 +23 +-12 +-28 +40 +-2 +-20 +26 +-5 +-23 +25 +-13 +-28 +25 +-11 +-18 +48 +3 +-23 +27 +-11 +-29 +27 +-9 +-29 +26 +-9 +-29 +44 +2 +-16 +27 +-8 +-30 +29 +-8 +-28 +31 +-8 +-27 +34 +-7 +-23 +28 +-8 +-28 +33 +-5 +-18 +32 +-7 +-27 +30 +2 +-25 +40 +-2 +-27 +28 +-10 +-29 +27 +-9 +-28 +30 +-6 +-26 +32 +1 +-12 +30 +-10 +-27 +36 +-4 +-23 +33 +-7 +-24 +29 +-9 +-29 +36 +-4 +-13 +33 +-5 +-26 +41 +0 +-25 +27 +-11 +-30 +29 +-4 +-26 +28 +-6 +-16 +35 +-6 +-29 +33 +-6 +-19 +40 +-3 +-26 +33 +-6 +-28 +32 +-5 +-29 +30 +-9 +-27 +34 +-7 +-27 +30 +-9 +-22 +32 +-9 +-26 +29 +25 +30 +18 +14 +13 +14 +17 +11 +5 +5 +6 +4 +4 +7 +4 +3 +4 +4 +9 +0 +1 +0 +4 +11 +14 +0 +0 +4 +4 +-4 +-4 +10 +11 +1 +7 +-3 +7 +-4 +14 +-2 +1 +-1 +1 +-6 +-4 +0 +-3 +-5 +0 +7 +-5 +-7 +7 +2 +-3 +10 +0 +11 +-1 +-3 +-4 +0 +0 +5 +6 +-6 +-2 +-7 +-3 +-4 +-3 +-4 +9 +11 +-3 +-5 +-4 +-4 +-4 +-2 +1 +0 +-2 +-1 +16 +0 +-2 +4 +14 +5 +-5 +-2 +1 +-4 +-3 +-2 +-2 +-4 +6 +-1 +2 +2 +-2 +-4 +-2 +5 +-1 +12 +1 +-3 +2 +0 +-1 +0 +11 +-3 +-3 +-5 +0 +3 +4 +-5 +4 +-2 +9 +0 +12 +25 +-16 +-37 +6 +-29 +-43 +11 +-24 +-43 +18 +-17 +-37 +35 +-2 +-31 +23 +-12 +-30 +21 +-15 +-29 +29 +-10 +-22 +29 +-9 +-15 +40 +-3 +-27 +32 +-4 +-29 +26 +-10 +-30 +23 +-12 +-24 +37 +-5 +-15 +32 +-8 +-28 +30 +-2 +-26 +32 +-6 +-27 +45 +0 +-15 +33 +1 +-26 +39 +-4 +-29 +32 +-7 +-26 +34 +-7 +-23 +24 +-12 +-31 +30 +-7 +-24 +39 +-3 +-16 +30 +-10 +-23 +26 +-10 +-30 +27 +-10 +-24 +38 +-3 +-28 +41 +-2 +-14 +26 +-11 +-29 +30 +-9 +-22 +30 +-8 +-27 +26 +-1 +-24 +30 +-2 +-19 +35 +-7 +-27 +40 +-2 +-29 +26 +-11 +-30 +25 +-11 +-30 +41 +-2 +-27 +26 +-9 +-25 +35 +-6 +-27 +34 +3 +-11 +29 +-7 +-26 +27 +-1 +-15 +32 +-8 +-28 +26 +-4 +-19 +30 +-8 +-21 +19 +19 +26 +19 +17 +12 +10 +18 +18 +26 +8 +13 +9 +-1 +3 +-2 +-2 +-1 +19 +2 +1 +9 +-1 +7 +-1 +-2 +-7 +0 +3 +-3 +-5 +2 +1 +-2 +2 +-1 +-4 +10 +-3 +-3 +-2 +-2 +-5 +6 +15 +7 +-3 +1 +13 +3 +2 +3 +-3 +9 +9 +-4 +2 +-1 +-5 +1 +12 +-2 +-5 +1 +-7 +-2 +-1 +-5 +-3 +2 +-7 +-1 +1 +-4 +-2 +-3 +1 +15 +3 +1 +-5 +-1 +-5 +-2 +0 +2 +-3 +5 +9 +2 +-3 +-4 +-3 +-1 +-4 +-1 +5 +17 +1 +-3 +5 +15 +2 +-1 +4 +-3 +-1 +-3 +-6 +14 +4 +14 +-1 +-6 +2 +-5 +1 +-2 +-7 +-1 +-1 +1 +-5 +-2 +-5 +-2 +-2 +10 +-24 +20 +-19 +-44 +9 +-25 +-40 +23 +-16 +-32 +24 +-14 +-36 +24 +-13 +-33 +26 +-5 +-22 +33 +-5 +-25 +23 +-11 +-32 +26 +-7 +-19 +38 +-3 +-24 +27 +-10 +-31 +34 +-2 +-25 +27 +-10 +-24 +25 +-10 +-28 +31 +-2 +-20 +34 +-5 +-28 +43 +1 +-26 +25 +-11 +-17 +39 +-4 +-20 +25 +-10 +-29 +27 +-10 +-16 +41 +-1 +-28 +43 +-1 +-27 +24 +-4 +-13 +27 +-12 +-27 +24 +-10 +-23 +26 +-10 +-30 +32 +-7 +-24 +32 +-4 +-27 +44 +1 +-19 +33 +-8 +-28 +35 +-2 +-28 +29 +-10 +-17 +30 +-8 +-28 +35 +-6 +-29 +27 +-7 +-30 +27 +-11 +-27 +29 +-9 +-28 +32 +-5 +-26 +26 +-5 +-12 +42 +5 +-15 +31 +-7 +-31 +29 +-7 +-29 +37 +-3 +-14 +31 +-9 +-26 +29 +-8 +-10 +30 +-9 +-30 +29 +1 +15 +30 +17 +22 +13 +13 +6 +19 +14 +13 +11 +10 +4 +1 +14 +3 +-2 +6 +12 +6 +-1 +-4 +-2 +-3 +-4 +-2 +0 +-3 +5 +18 +4 +0 +6 +5 +5 +-5 +1 +-6 +-5 +1 +-2 +5 +9 +13 +6 +-3 +2 +9 +-3 +-7 +-6 +7 +-2 +-6 +-5 +-5 +-3 +-4 +4 +-3 +-2 +5 +1 +18 +-1 +-1 +-8 +-5 +-5 +8 +1 +-1 +10 +1 +-1 +-3 +13 +5 +-6 +-5 +-7 +0 +-4 +6 +4 +13 +2 +-6 +-4 +-1 +-5 +4 +-4 +10 +-2 +-4 +0 +-3 +-5 +2 +-3 +3 +-3 +2 +-2 +0 +-4 +-2 +-3 +0 +0 +1 +-2 +6 +-2 +-1 +0 +-2 +13 +5 +-2 +1 +1 +5 +-1 +6 +12 +5 +-30 +12 +-24 +-47 +18 +-18 +-36 +16 +-20 +-26 +28 +-12 +-34 +24 +-11 +-25 +26 +-12 +-34 +27 +-12 +-32 +33 +-6 +-25 +30 +-9 +-28 +29 +-9 +-26 +32 +-7 +-29 +27 +-9 +-29 +35 +-5 +-27 +29 +-8 +-25 +36 +-4 +-25 +31 +-8 +-27 +42 +4 +-21 +32 +-3 +-23 +28 +-9 +-28 +28 +-9 +-27 +46 +5 +-24 +29 +-1 +-23 +30 +-1 +-27 +36 +3 +-26 +27 +-11 +-22 +40 +-2 +-30 +25 +-13 +-27 +47 +2 +-23 +24 +-14 +-31 +40 +-3 +-28 +24 +-11 +-30 +35 +-5 +-29 +31 +-7 +-28 +28 +-8 +-21 +36 +-5 +-27 +28 +-7 +-29 +32 +-6 +-26 +34 +-6 +-26 +30 +-7 +-19 +39 +-2 +-26 +27 +-10 +-29 +28 +-1 +-21 +25 +-8 +-26 +33 +-6 +-14 +37 +-5 +-26 +24 +-10 +-25 +36 +0 +-24 +28 +-9 +17 +41 +27 +15 +12 +11 +10 +7 +7 +7 +7 +5 +13 +6 +14 +6 +14 +2 +-2 +-2 +3 +-1 +7 +-3 +-3 +-3 +-3 +14 +13 +17 +5 +1 +-6 +-7 +-6 +-2 +-3 +1 +1 +1 +12 +2 +-6 +1 +15 +1 +2 +-8 +0 +5 +10 +10 +-5 +3 +-6 +-8 +-4 +-3 +-3 +-8 +-5 +12 +3 +-5 +-5 +-5 +6 +0 +1 +5 +-5 +5 +14 +4 +0 +5 +-3 +-1 +-5 +-4 +5 +-3 +-2 +-4 +7 +2 +-4 +-1 +6 +-2 +-5 +-3 +-4 +-2 +-1 +7 +-2 +15 +13 +2 +-1 +-3 +-4 +-3 +-5 +5 +-3 +-2 +1 +-4 +-4 +2 +5 +9 +-3 +4 +-4 +3 +-4 +4 +6 +7 +1 +-4 +-2 +1 +1 +0 +9 +-27 +-48 +8 +-26 +-44 +15 +-10 +-33 +23 +-13 +-31 +22 +-15 +-29 +29 +-10 +-19 +41 +1 +-19 +26 +-13 +-28 +27 +-10 +-31 +30 +-10 +-30 +28 +-3 +-16 +27 +-12 +-30 +32 +-7 +-18 +28 +-10 +-26 +38 +-2 +-27 +27 +-9 +-25 +43 +5 +-22 +29 +-9 +-27 +25 +-12 +-31 +40 +0 +-19 +32 +-5 +-30 +24 +-12 +-23 +42 +3 +-23 +29 +-9 +-28 +23 +-11 +-30 +33 +-4 +-27 +26 +-10 +-26 +31 +-5 +-27 +33 +-5 +-26 +30 +-8 +-25 +32 +-6 +-27 +32 +-7 +-26 +31 +-7 +-18 +32 +-7 +-20 +34 +-2 +-15 +52 +6 +-23 +30 +-10 +-31 +33 +-8 +-20 +29 +-7 +-27 +25 +-8 +-28 +25 +-10 +-29 +32 +-4 +-25 +28 +-3 +-16 +36 +-1 +-26 +28 +0 +-24 +29 +-7 +-28 +31 +-7 +-28 +30 +-7 +-14 +31 +22 +20 +20 +17 +15 +12 +17 +12 +11 +5 +5 +11 +13 +17 +15 +9 +6 +-2 +-4 +0 +4 +-2 +3 +-3 +-2 +3 +8 +6 +-1 +8 +4 +-3 +0 +-5 +9 +9 +-1 +-5 +-3 +-4 +4 +-4 +1 +-1 +-2 +-1 +-1 +-3 +5 +-3 +15 +3 +-3 +9 +12 +11 +0 +-11 +-9 +-4 +-5 +2 +-4 +-3 +7 +14 +3 +5 +1 +-7 +-5 +0 +-4 +-1 +-1 +-7 +-5 +0 +2 +-2 +-1 +10 +-2 +4 +-1 +3 +-5 +11 +7 +-2 +-2 +-4 +3 +5 +11 +-2 +16 +-1 +-4 +-5 +-6 +-6 +-2 +-3 +0 +-2 +-4 +8 +1 +10 +-2 +-2 +1 +3 +-4 +-4 +13 +2 +-3 +2 +3 +3 +4 +2 +2 +5 +14 +-25 +12 +-25 +-47 +5 +-29 +-39 +18 +-19 +-35 +20 +-17 +-36 +24 +-14 +-28 +23 +-12 +-31 +33 +-7 +-23 +30 +-8 +-30 +44 +0 +-27 +37 +-2 +-26 +27 +-11 +-29 +28 +-8 +-28 +29 +-9 +-29 +36 +-3 +-22 +42 +1 +-26 +31 +3 +-26 +25 +-11 +-30 +27 +-10 +-25 +30 +-10 +-27 +32 +-1 +-26 +33 +-7 +-25 +28 +-9 +-29 +38 +-3 +-19 +34 +-5 +-27 +29 +-10 +-28 +30 +-6 +-26 +44 +0 +-23 +25 +-11 +-31 +37 +-4 +-27 +28 +-9 +-16 +29 +-10 +-27 +31 +-8 +-24 +44 +3 +-23 +24 +-1 +-27 +32 +-7 +-27 +31 +-7 +-25 +32 +-2 +-26 +29 +-9 +-29 +45 +1 +-24 +32 +-4 +-27 +32 +-6 +-29 +31 +-2 +-27 +26 +-10 +-28 +40 +4 +-25 +33 +-8 +-31 +29 +-9 +-29 +30 +-10 +-27 +31 +-5 +23 +27 +38 +20 +19 +19 +12 +11 +7 +5 +19 +7 +2 +1 +1 +4 +1 +0 +-1 +-2 +5 +18 +2 +5 +-3 +15 +12 +1 +0 +-3 +-7 +-2 +-1 +0 +-4 +1 +0 +7 +5 +0 +-4 +-1 +1 +-2 +2 +-1 +15 +1 +10 +-3 +4 +-4 +1 +-5 +-3 +-5 +-6 +-4 +-1 +2 +-1 +1 +-2 +2 +3 +-2 +-3 +4 +-5 +1 +1 +4 +0 +-5 +11 +8 +0 +-1 +1 +-3 +-6 +-4 +-4 +7 +7 +-1 +0 +-2 +8 +-1 +-1 +-1 +-2 +9 +2 +1 +-3 +16 +-1 +1 +-2 +8 +12 +17 +-3 +-6 +-7 +-6 +0 +-7 +-4 +-5 +-4 +5 +-2 +-1 +2 +-1 +-6 +13 +-1 +-3 +-4 +8 +12 +2 +-3 +2 +10 +-26 +-46 +10 +-26 +-42 +13 +-20 +-40 +31 +-9 +-18 +25 +-13 +-26 +30 +-9 +-29 +29 +-5 +-31 +38 +-4 +-28 +24 +-12 +-33 +29 +-8 +-27 +26 +-9 +-24 +39 +-2 +-24 +34 +-6 +-29 +34 +-7 +-21 +26 +-11 +-24 +26 +-12 +-11 +30 +-6 +-20 +28 +-11 +-28 +28 +0 +-18 +39 +-3 +-23 +29 +-10 +-20 +30 +-9 +-31 +36 +-4 +-30 +30 +-8 +-27 +39 +-3 +-28 +36 +-6 +-29 +23 +-7 +-29 +33 +-4 +-14 +31 +-7 +-15 +28 +-6 +-14 +32 +-3 +-28 +29 +-10 +-29 +37 +-4 +-22 +27 +-12 +-17 +30 +-8 +-31 +29 +-10 +-30 +25 +-11 +-16 +33 +-5 +-28 +30 +5 +-24 +31 +-8 +-25 +30 +-7 +-28 +30 +-3 +-26 +35 +-5 +-22 +39 +-3 +-24 +26 +-7 +-18 +39 +-3 +-26 +31 +-9 +-29 +40 +0 +-27 +18 +26 +27 +39 +17 +13 +6 +7 +21 +17 +7 +1 +3 +1 +10 +-1 +-3 +1 +-2 +0 +-4 +1 +-1 +-1 +0 +3 +12 +-1 +-4 +3 +-4 +1 +4 +1 +-1 +0 +-3 +14 +15 +2 +-5 +8 +1 +-4 +2 +1 +2 +12 +6 +11 +7 +0 +-8 +-4 +10 +4 +-3 +-7 +2 +8 +-6 +-5 +0 +-7 +4 +4 +-3 +1 +-3 +-5 +-4 +1 +7 +-5 +-1 +-4 +3 +-1 +18 +1 +-3 +11 +0 +-3 +11 +-1 +-5 +-1 +4 +-4 +-2 +-1 +-1 +7 +7 +9 +-2 +-7 +-7 +-9 +0 +-4 +-4 +0 +-3 +0 +-2 +-4 +-2 +15 +1 +-2 +-2 +13 +1 +1 +-1 +0 +-4 +-2 +-2 +-4 +6 +5 +7 +5 +-3 +-1 +8 +-27 +-45 +17 +-21 +-42 +14 +-20 +-39 +21 +-18 +-32 +26 +-12 +-20 +37 +-6 +-23 +24 +-13 +-29 +25 +-12 +-31 +26 +-10 +-18 +38 +-5 +-20 +24 +-13 +-31 +28 +-11 +-28 +30 +-7 +-29 +27 +1 +-23 +31 +-1 +-22 +38 +1 +-19 +26 +-9 +-28 +31 +-9 +-20 +30 +-8 +-20 +27 +-9 +-26 +26 +-11 +-27 +43 +1 +-25 +37 +-5 +-28 +26 +-12 +-30 +25 +-9 +-15 +37 +-5 +-27 +40 +1 +-25 +28 +-8 +-27 +32 +-6 +-29 +33 +-3 +-26 +31 +-3 +-24 +31 +-8 +-29 +27 +5 +-23 +28 +-1 +-9 +30 +-9 +-28 +35 +-4 +-28 +25 +-8 +-27 +31 +-6 +-28 +30 +-7 +-24 +42 +-1 +-26 +28 +-5 +-26 +26 +-11 +-28 +30 +-7 +-15 +43 +0 +-22 +29 +-9 +-30 +36 +-6 +-28 +47 +3 +-24 +33 +-9 +-30 +15 +18 +19 +19 +15 +20 +26 +30 +12 +15 +1 +14 +9 +1 +0 +1 +3 +-3 +-2 +16 +1 +-2 +-5 +4 +3 +5 +-4 +-3 +-4 +-4 +3 +-3 +14 +2 +-4 +-3 +0 +-2 +-4 +4 +-3 +-2 +4 +11 +7 +-3 +-4 +2 +-2 +1 +6 +0 +-1 +-3 +4 +10 +-3 +-1 +-2 +2 +-4 +-2 +4 +-3 +1 +-1 +-3 +-3 +4 +13 +18 +2 +0 +-2 +3 +-4 +6 +-4 +0 +0 +6 +-4 +-1 +0 +1 +3 +-1 +1 +11 +-3 +-2 +2 +9 +1 +2 +6 +9 +2 +-3 +-6 +-8 +9 +15 +-3 +0 +-4 +-5 +0 +-9 +-6 +1 +-7 +-1 +-2 +0 +-2 +-5 +11 +0 +-4 +-2 +-2 +-2 +-2 +5 +13 +0 +-3 +7 +-28 +-43 +12 +-25 +-43 +18 +-19 +-38 +18 +-16 +-34 +21 +-12 +-32 +27 +-6 +-27 +28 +-10 +-25 +37 +-5 +-26 +28 +-7 +-30 +27 +-10 +-29 +32 +-6 +-16 +30 +-7 +-28 +26 +-10 +-29 +35 +0 +-9 +44 +0 +-26 +30 +-6 +-27 +28 +-10 +-30 +26 +-2 +-19 +32 +-6 +-21 +29 +-9 +-21 +30 +-9 +-16 +43 +-1 +-26 +28 +-10 +-25 +30 +-10 +-27 +27 +-8 +-27 +30 +-9 +-25 +26 +-3 +-22 +48 +3 +-24 +31 +-7 +-31 +31 +-8 +-25 +40 +-2 +-27 +31 +-9 +-28 +25 +-11 +-30 +29 +-10 +-26 +32 +-1 +-24 +39 +0 +-22 +33 +-6 +-28 +34 +-7 +-25 +31 +-8 +-28 +30 +2 +-23 +32 +0 +-20 +33 +-2 +-27 +27 +-8 +-29 +29 +-10 +-29 +33 +-5 +-24 +31 +2 +-23 +38 +-3 +-23 +31 +-6 +-29 +18 +31 +26 +19 +15 +18 +20 +9 +8 +8 +7 +19 +10 +2 +8 +13 +3 +-2 +7 +-3 +0 +4 +0 +1 +-4 +-2 +-1 +6 +3 +-2 +-2 +-2 +9 +-1 +9 +2 +0 +-3 +-4 +-2 +11 +4 +10 +-4 +3 +-3 +-3 +3 +-1 +-4 +-2 +2 +-3 +-1 +0 +0 +-2 +4 +1 +1 +0 +-2 +4 +-1 +-2 +4 +-2 +2 +13 +17 +8 +6 +-3 +10 +-6 +2 +-4 +-7 +-6 +-2 +-1 +-3 +2 +5 +-3 +-5 +16 +1 +1 +12 +0 +-5 +1 +12 +-5 +7 +4 +-7 +-9 +-6 +-6 +2 +-3 +-1 +3 +-4 +-7 +-5 +1 +1 +-2 +-1 +-2 +2 +-2 +-3 +-1 +10 +-1 +0 +-2 +1 +-3 +2 +-2 +-1 +9 +0 +15 +-23 +-44 +11 +-26 +-41 +14 +-19 +-30 +17 +-18 +-33 +34 +-6 +-25 +24 +-8 +-29 +25 +-12 +-30 +32 +-8 +-25 +43 +0 +-24 +26 +-13 +-18 +30 +-6 +-26 +30 +-1 +-26 +26 +-10 +-28 +28 +-2 +-26 +39 +-1 +-25 +32 +-6 +-13 +27 +-7 +-28 +27 +-10 +-30 +30 +-4 +-23 +32 +-7 +-28 +30 +-7 +-27 +33 +-8 +-28 +43 +5 +-13 +39 +-4 +-29 +31 +-8 +-24 +25 +-13 +-30 +24 +-8 +-30 +29 +-5 +-27 +34 +-3 +-27 +31 +-6 +-27 +27 +-6 +-28 +29 +-8 +-25 +30 +-8 +-23 +31 +-7 +-18 +32 +1 +-10 +44 +-1 +-24 +29 +-8 +-29 +33 +-7 +-28 +41 +4 +-18 +25 +-6 +-23 +35 +-1 +-16 +36 +-7 +-29 +23 +-11 +-32 +28 +-10 +-27 +33 +0 +-26 +28 +-7 +-27 +26 +-9 +-28 +27 +-8 +-27 +21 +25 +24 +17 +17 +16 +23 +17 +16 +13 +10 +13 +8 +1 +1 +8 +3 +3 +9 +9 +3 +3 +16 +1 +-2 +1 +-3 +-3 +0 +-1 +-5 +3 +15 +-1 +-1 +-3 +6 +-3 +-1 +4 +-1 +5 +5 +-5 +-6 +-6 +-4 +-6 +0 +-5 +-1 +1 +0 +3 +6 +0 +-3 +0 +11 +10 +17 +1 +-1 +-2 +-6 +-7 +-5 +2 +-3 +-1 +-2 +-2 +-1 +0 +-1 +5 +-4 +1 +1 +0 +0 +-2 +1 +5 +-1 +-2 +-1 +2 +5 +-2 +2 +2 +-3 +-3 +3 +-3 +-2 +4 +6 +0 +-1 +1 +-1 +-2 +5 +3 +-2 +1 +8 +2 +7 +-1 +-5 +-1 +6 +-1 +-5 +-1 +15 +2 +-3 +1 +-3 +-5 +-4 +4 +0 +-2 +-33 +6 +-28 +-39 +19 +-19 +-40 +17 +-20 +-38 +35 +-6 +-32 +27 +-12 +-23 +26 +-10 +-28 +31 +-9 +-20 +27 +-11 +-30 +27 +-12 +-29 +29 +-7 +-29 +31 +-8 +-23 +41 +-1 +-21 +36 +-6 +-9 +31 +-7 +-19 +40 +-4 +-21 +34 +-5 +-29 +26 +-12 +-30 +35 +-5 +-28 +29 +-8 +-28 +29 +-8 +-27 +29 +-8 +-16 +30 +-10 +-29 +31 +-8 +-28 +28 +-1 +-25 +31 +-7 +-14 +41 +-1 +-20 +34 +-7 +-29 +26 +-11 +-25 +26 +-9 +-16 +38 +-4 +-28 +29 +-10 +-19 +32 +-7 +-26 +31 +-9 +-28 +30 +-5 +-27 +27 +-11 +-22 +38 +-3 +-27 +29 +-10 +-24 +41 +-1 +-27 +49 +3 +-25 +26 +-10 +-23 +32 +-8 +-31 +36 +-4 +-26 +27 +-10 +-28 +24 +-12 +-26 +41 +-2 +-25 +34 +-6 +-26 +33 +-6 +-23 +29 +-4 +14 +20 +29 +20 +10 +12 +11 +21 +15 +17 +12 +7 +1 +5 +2 +4 +-3 +7 +-2 +3 +6 +-2 +-3 +1 +2 +14 +18 +1 +-3 +4 +-2 +-4 +12 +14 +11 +0 +-5 +-8 +-3 +0 +0 +-4 +-7 +-1 +9 +0 +-3 +-5 +-4 +-1 +-5 +0 +18 +2 +5 +1 +7 +-4 +11 +-3 +-3 +-6 +-7 +-2 +-1 +-4 +-4 +14 +-2 +0 +1 +10 +3 +-2 +-4 +0 +2 +15 +-1 +-3 +-1 +1 +-4 +9 +3 +3 +6 +6 +5 +-6 +4 +-7 +1 +-7 +-7 +-3 +-3 +2 +0 +-3 +6 +2 +1 +-5 +1 +-4 +-3 +13 +15 +12 +-5 +-1 +-4 +0 +-6 +-6 +-1 +-4 +3 +-5 +-1 +-1 +2 +-4 +-3 +-2 +-1 +-2 +15 +-22 +-44 +9 +-21 +-37 +12 +-22 +-40 +19 +-17 +-34 +21 +-11 +-31 +45 +0 +-15 +28 +-10 +-31 +25 +-13 +-31 +31 +-6 +-29 +27 +-11 +-27 +29 +-7 +-29 +35 +-5 +-25 +31 +-1 +-22 +34 +-6 +-27 +41 +-1 +-14 +32 +-8 +-18 +43 +4 +-17 +24 +-11 +-28 +26 +-11 +-32 +28 +-9 +-22 +41 +-1 +-18 +35 +-7 +-28 +26 +-11 +-23 +40 +-3 +-19 +30 +-9 +-27 +28 +-12 +-29 +37 +-3 +-29 +26 +-11 +-30 +34 +-6 +-16 +28 +-10 +-28 +27 +-11 +-29 +31 +-8 +-22 +34 +-4 +-27 +32 +-7 +-27 +33 +-5 +-26 +39 +-2 +-24 +42 +2 +-26 +28 +-10 +-29 +30 +2 +-20 +41 +-2 +-28 +25 +-12 +-28 +26 +-6 +-23 +35 +-5 +-25 +35 +-4 +-22 +33 +-5 +-27 +33 +-7 +-15 +43 +0 +-24 +34 +-7 +-29 +15 +27 +21 +17 +22 +11 +18 +7 +10 +9 +7 +2 +11 +15 +11 +11 +11 +7 +-3 +-4 +-4 +-5 +0 +-3 +-3 +-1 +8 +1 +16 +1 +-1 +-4 +0 +-3 +-2 +-2 +1 +-3 +9 +2 +-2 +-3 +-5 +-2 +0 +8 +1 +-2 +1 +5 +-4 +12 +1 +0 +6 +-3 +-4 +-3 +-1 +-1 +2 +2 +6 +-2 +-3 +4 +0 +-1 +8 +-1 +3 +-2 +3 +17 +-1 +-1 +2 +-7 +1 +-3 +0 +-1 +1 +-2 +13 +-1 +-2 +8 +10 +-3 +-6 +-3 +-6 +1 +-1 +-1 +-1 +-5 +-7 +0 +5 +0 +-5 +1 +-4 +-2 +2 +5 +-2 +1 +2 +-2 +-1 +5 +-2 +-1 +-1 +1 +-1 +2 +-2 +18 +4 +13 +6 +9 +11 +-2 +-35 +1 +-32 +-42 +24 +-12 +-39 +17 +-17 +-38 +16 +-19 +-24 +28 +-12 +-32 +35 +-6 +-29 +27 +-13 +-30 +26 +-11 +-30 +29 +-10 +-17 +44 +3 +-26 +22 +-10 +-30 +26 +-11 +-28 +36 +-6 +-23 +28 +-5 +-22 +47 +2 +-25 +27 +-8 +-23 +25 +-11 +-29 +33 +0 +-24 +25 +-4 +-27 +43 +0 +-27 +26 +-8 +-28 +25 +-5 +-19 +39 +1 +-12 +29 +-8 +-29 +30 +-9 +-31 +26 +0 +-26 +26 +-8 +-27 +38 +0 +-25 +35 +-7 +-29 +36 +-3 +-15 +30 +-9 +-29 +28 +-10 +-29 +34 +-7 +-29 +32 +-7 +-28 +30 +-9 +-25 +29 +-7 +-22 +32 +-6 +-25 +29 +-6 +-28 +29 +-7 +-17 +38 +-1 +-26 +38 +-2 +-23 +24 +-12 +-27 +29 +-9 +-27 +35 +-6 +-26 +45 +1 +-25 +35 +-4 +-29 +29 +-11 +-29 +33 +-6 +10 +38 +23 +17 +16 +15 +10 +21 +16 +23 +11 +9 +-1 +4 +5 +2 +-2 +9 +0 +-4 +5 +3 +-3 +-5 +-4 +-2 +9 +-2 +3 +-1 +-1 +-2 +4 +7 +-1 +-3 +-3 +3 +12 +-2 +9 +-1 +4 +-3 +-3 +5 +-4 +-1 +5 +0 +-4 +13 +-2 +-5 +-5 +-3 +-1 +7 +0 +-1 +12 +3 +13 +1 +9 +5 +-4 +-10 +2 +-2 +-3 +-5 +11 +0 +-5 +-6 +4 +-5 +-2 +8 +-3 +15 +0 +2 +-6 +-3 +-5 +-3 +-4 +-4 +3 +2 +-6 +10 +2 +5 +6 +2 +-5 +-3 +2 +-5 +-4 +-3 +5 +8 +-5 +6 +-3 +-1 +5 +0 +-2 +-6 +4 +0 +1 +0 +8 +-2 +-3 +15 +1 +-3 +-3 +-3 +14 +0 +10 +-27 +-50 +6 +-26 +-38 +14 +-21 +-39 +28 +-6 +-30 +28 +-10 +-34 +28 +-10 +-31 +36 +1 +-25 +22 +-16 +-29 +22 +-9 +-30 +27 +-9 +-29 +28 +-4 +-27 +35 +-5 +-20 +30 +-7 +-25 +28 +-9 +-24 +29 +-8 +-25 +47 +2 +-23 +29 +1 +-17 +35 +-5 +-24 +42 +-1 +-27 +26 +-13 +-30 +26 +-10 +-24 +40 +-3 +-27 +33 +-6 +-26 +30 +-2 +-28 +27 +-6 +-22 +33 +0 +-25 +33 +-4 +-28 +24 +-11 +-26 +30 +-5 +-24 +31 +-6 +-20 +28 +-10 +-27 +43 +1 +-24 +44 +1 +-25 +42 +-2 +-26 +29 +-10 +-29 +24 +-14 +-27 +32 +-8 +-28 +29 +-9 +-28 +28 +-9 +-26 +34 +-7 +-24 +37 +-4 +-27 +34 +-3 +-14 +30 +-8 +-22 +39 +-4 +-27 +26 +-9 +-22 +30 +-10 +-29 +34 +0 +-19 +27 +-11 +-29 +17 +40 +23 +23 +15 +30 +14 +10 +22 +17 +7 +3 +3 +3 +0 +7 +16 +1 +-2 +6 +-4 +8 +-3 +-1 +-2 +-3 +2 +6 +7 +3 +5 +-3 +8 +-3 +-3 +0 +-4 +-2 +0 +5 +-3 +-3 +-4 +13 +0 +0 +-2 +-3 +7 +17 +-1 +15 +-2 +0 +-8 +-7 +-6 +-1 +9 +-3 +-4 +7 +-3 +-2 +-5 +6 +6 +1 +4 +-5 +-3 +-3 +-1 +13 +-1 +1 +-3 +3 +-2 +-5 +-3 +0 +-3 +1 +-4 +-1 +1 +-2 +4 +14 +8 +-4 +-5 +-2 +1 +1 +3 +11 +11 +3 +2 +-6 +-4 +-4 +-2 +2 +-5 +-3 +-2 +-1 +-2 +0 +-1 +3 +9 +2 +-3 +-5 +11 +1 +-3 +1 +-2 +7 +7 +4 +0 +-4 +9 +-27 +-47 +18 +-20 +-43 +19 +-18 +-35 +23 +-16 +-28 +20 +-14 +-34 +30 +-9 +-31 +28 +-9 +-31 +29 +-10 +-19 +37 +-4 +-27 +26 +-11 +-25 +26 +-7 +-29 +43 +5 +-19 +27 +-10 +-28 +26 +-12 +-27 +28 +1 +-20 +27 +-11 +-24 +26 +-7 +-25 +38 +-4 +-27 +30 +-1 +-26 +31 +-7 +-27 +32 +-6 +-27 +38 +-2 +-22 +49 +4 +-17 +26 +-11 +-19 +27 +-11 +-28 +32 +-6 +-27 +24 +-10 +-16 +39 +-3 +-28 +47 +3 +-25 +29 +-6 +-27 +22 +-10 +-31 +36 +-6 +-26 +23 +-12 +-31 +26 +-4 +-11 +35 +-5 +-29 +28 +-5 +-25 +42 +5 +-24 +25 +-9 +-23 +25 +-10 +-28 +28 +-9 +-25 +30 +-7 +-27 +28 +1 +-23 +37 +-4 +-23 +27 +-8 +-29 +30 +-8 +-13 +31 +-8 +-27 +28 +-9 +-27 +42 +0 +-14 +36 +29 +21 +18 +17 +13 +21 +10 +8 +8 +5 +7 +7 +13 +2 +6 +-1 +0 +3 +18 +14 +3 +-5 +-3 +-3 +-4 +7 +-2 +7 +0 +-5 +-3 +-2 +-1 +1 +4 +2 +-2 +-6 +0 +0 +3 +-3 +1 +17 +2 +7 +1 +-3 +-5 +3 +-4 +16 +1 +2 +-6 +-5 +-5 +10 +13 +-2 +-6 +-2 +2 +-4 +-1 +1 +0 +-1 +-2 +13 +-1 +-3 +-7 +-7 +7 +1 +-5 +14 +11 +2 +-2 +-6 +-4 +2 +-1 +-3 +-1 +0 +11 +-2 +-1 +-5 +-3 +-2 +-4 +-1 +1 +-3 +1 +16 +1 +11 +11 +8 +-5 +-3 +5 +-1 +-2 +-6 +-8 +-5 +0 +-4 +12 +0 +-3 +-1 +-2 +-5 +-2 +0 +14 +8 +0 +-5 +-2 +9 +-27 +-50 +12 +-24 +-41 +12 +-23 +-38 +21 +-11 +-17 +24 +-13 +-33 +29 +-8 +-28 +40 +-1 +-29 +26 +-11 +-32 +27 +-7 +-27 +36 +-6 +-29 +27 +-6 +-25 +26 +-9 +-28 +30 +-2 +-26 +29 +-7 +-19 +34 +-6 +-26 +32 +-8 +-27 +30 +-8 +-27 +45 +3 +-20 +49 +4 +-21 +23 +-7 +-29 +28 +-11 +-27 +38 +-4 +-16 +30 +-9 +-25 +40 +-3 +-25 +25 +-12 +-32 +26 +-11 +-22 +32 +-8 +-17 +42 +-2 +-13 +27 +-11 +-32 +25 +-13 +-30 +26 +-7 +-22 +30 +-3 +-24 +34 +-1 +-27 +43 +7 +-22 +34 +-6 +-22 +32 +-10 +-18 +32 +-8 +-29 +37 +2 +-24 +27 +-11 +-33 +26 +-9 +-28 +26 +-10 +-28 +32 +-7 +-23 +42 +0 +-27 +26 +-12 +-31 +35 +1 +-24 +27 +-9 +-29 +27 +-9 +-28 +27 +-8 +-26 +23 +44 +27 +22 +16 +13 +12 +16 +26 +12 +11 +1 +15 +12 +18 +0 +-2 +4 +2 +5 +-4 +-2 +-2 +-1 +-4 +0 +9 +-2 +3 +1 +-3 +8 +-1 +-5 +-1 +-2 +1 +-5 +1 +7 +-3 +10 +-2 +-3 +-2 +-1 +9 +8 +-2 +-4 +5 +2 +-4 +-2 +-2 +-4 +-4 +13 +8 +-2 +-3 +16 +1 +-4 +-3 +-3 +2 +-5 +13 +-1 +-3 +1 +-4 +-5 +-1 +2 +6 +11 +-2 +-1 +-3 +7 +1 +1 +2 +-5 +-4 +7 +0 +0 +6 +-1 +-1 +5 +-2 +1 +0 +-1 +-7 +13 +0 +5 +-3 +-7 +-5 +-2 +16 +1 +-4 +12 +4 +-1 +-6 +4 +6 +-4 +8 +3 +-7 +-6 +4 +-2 +-6 +-4 +0 +8 +9 +-5 +13 +-24 +-47 +7 +-29 +-47 +14 +-17 +-38 +22 +-9 +-31 +26 +-7 +-32 +23 +-13 +-30 +36 +-4 +-28 +33 +4 +-25 +32 +-8 +-24 +25 +-11 +-29 +26 +-11 +-30 +26 +-12 +-25 +29 +-6 +-26 +32 +-7 +-27 +34 +-6 +-26 +34 +-4 +-14 +44 +0 +-25 +26 +-8 +-31 +29 +-9 +-28 +29 +-5 +-27 +30 +-7 +-29 +31 +-5 +-27 +30 +-4 +-17 +38 +-4 +-23 +29 +-9 +-22 +31 +-4 +-27 +46 +2 +-26 +28 +-11 +-29 +28 +-10 +-25 +34 +-7 +-26 +36 +-5 +-25 +28 +-2 +-26 +32 +-6 +-18 +28 +-11 +-25 +33 +-5 +-28 +33 +-3 +-23 +27 +-9 +-24 +27 +2 +-25 +34 +-3 +-26 +27 +-11 +-23 +32 +-5 +-28 +29 +-10 +-28 +29 +-7 +-25 +32 +3 +-23 +31 +-6 +-24 +34 +-7 +-26 +31 +-2 +-26 +33 +-5 +-25 +20 +31 +41 +23 +16 +12 +17 +14 +23 +8 +14 +7 +12 +11 +-2 +8 +8 +-3 +2 +0 +0 +6 +-2 +-7 +-4 +4 +-2 +-1 +14 +-1 +1 +-4 +3 +-3 +10 +4 +-2 +0 +-4 +-4 +4 +12 +-1 +5 +-4 +-3 +5 +7 +5 +3 +-6 +4 +-6 +-4 +-5 +-5 +-3 +-2 +-1 +2 +-2 +-3 +-3 +-5 +7 +8 +5 +2 +-2 +4 +-3 +-2 +-4 +9 +-1 +0 +2 +2 +-2 +1 +2 +-2 +18 +2 +9 +5 +-4 +1 +-2 +4 +-2 +-5 +-7 +-6 +2 +2 +-5 +2 +2 +10 +-2 +1 +-2 +2 +-4 +-5 +1 +0 +5 +0 +8 +4 +1 +-4 +6 +2 +0 +-4 +-3 +0 +5 +-2 +-5 +-3 +-3 +7 +-2 +-3 +7 +-28 +-41 +7 +-28 +-46 +25 +-13 +-38 +19 +-12 +-33 +21 +-9 +-25 +35 +-8 +-31 +32 +-7 +-30 +29 +-11 +-30 +26 +-12 +-31 +33 +-6 +-16 +29 +-1 +-20 +36 +-6 +-28 +26 +-10 +-23 +37 +-5 +-21 +31 +-7 +-29 +30 +-9 +-28 +36 +-1 +-24 +46 +2 +-26 +26 +-7 +-16 +27 +-11 +-30 +24 +-12 +-29 +30 +-8 +-24 +29 +-8 +-27 +46 +2 +-18 +32 +-7 +-21 +27 +-4 +-20 +28 +-8 +-22 +41 +-1 +-18 +32 +-8 +-31 +30 +-10 +-27 +29 +-10 +-30 +36 +-6 +-27 +40 +0 +-21 +27 +-10 +-29 +23 +-4 +-26 +38 +-1 +-26 +35 +-5 +-28 +30 +-9 +-21 +27 +-11 +-29 +37 +-5 +-15 +28 +-9 +-24 +26 +-9 +-19 +33 +-1 +-27 +36 +-6 +-27 +31 +-8 +-29 +26 +-9 +-25 +31 +-2 +-25 +36 +-5 +-20 +19 +24 +22 +20 +24 +25 +11 +19 +8 +20 +8 +7 +3 +6 +4 +4 +1 +0 +-1 +0 +6 +5 +-1 +15 +4 +-2 +2 +1 +-3 +11 +11 +-3 +-1 +2 +9 +-1 +-6 +-3 +-4 +-2 +2 +-4 +2 +11 +0 +-2 +2 +-3 +-5 +-5 +-4 +-2 +5 +1 +10 +-2 +5 +6 +2 +5 +0 +0 +-5 +-5 +-6 +1 +-1 +3 +-4 +4 +-1 +12 +5 +-5 +-4 +-5 +-2 +14 +4 +12 +7 +2 +7 +3 +-8 +-6 +-2 +-1 +-4 +-2 +7 +-5 +-3 +-5 +-5 +-2 +13 +1 +4 +-1 +-5 +11 +6 +8 +6 +-6 +2 +-3 +6 +-2 +3 +1 +2 +0 +-3 +-6 +-5 +7 +-3 +-5 +12 +0 +2 +-4 +-9 +7 +-4 +-6 +8 +-27 +-50 +8 +-24 +-43 +22 +-11 +-36 +23 +-16 +-34 +21 +-13 +-35 +27 +-5 +-28 +29 +-8 +-28 +29 +-10 +-29 +33 +-6 +-26 +32 +-8 +-24 +26 +-11 +-27 +33 +-3 +-24 +27 +-7 +-26 +29 +-9 +-24 +29 +-8 +-10 +35 +-6 +-22 +36 +-4 +-28 +29 +-9 +-28 +44 +7 +-21 +28 +-11 +-27 +46 +3 +-19 +29 +-11 +-26 +28 +-8 +-17 +27 +-10 +-29 +30 +-9 +-24 +40 +-3 +-23 +29 +-10 +-29 +30 +-8 +-28 +40 +0 +-15 +29 +-11 +-31 +35 +-2 +-29 +38 +-4 +-25 +23 +-11 +-29 +27 +-10 +-28 +33 +-6 +-15 +38 +-4 +-27 +28 +-9 +-30 +30 +-7 +-29 +27 +-9 +-23 +40 +-1 +-21 +40 +5 +-24 +26 +-9 +-27 +38 +-4 +-26 +25 +-12 +-28 +27 +-10 +-24 +31 +-4 +-24 +29 +-8 +-26 +31 +1 +-24 +36 +24 +24 +19 +18 +16 +12 +14 +15 +12 +12 +11 +24 +5 +6 +-1 +-1 +15 +2 +-2 +8 +-1 +-6 +4 +0 +-3 +0 +-1 +0 +6 +-4 +-3 +1 +6 +1 +-1 +1 +3 +-3 +-4 +3 +5 +5 +1 +6 +6 +-5 +-3 +3 +5 +-4 +6 +6 +-1 +10 +-3 +-1 +-6 +-2 +-2 +-5 +0 +5 +-4 +-1 +5 +10 +7 +-1 +2 +-4 +-3 +13 +-1 +1 +-2 +-3 +-3 +-6 +-3 +1 +7 +-2 +3 +-4 +-4 +-5 +-2 +-4 +4 +-3 +-3 +-4 +0 +-2 +3 +9 +1 +10 +3 +1 +4 +14 +1 +-3 +0 +-4 +-3 +1 +0 +17 +0 +-5 +-4 +-2 +-3 +3 +-1 +-4 +3 +-4 +4 +-4 +9 +2 +-2 +-4 +17 +13 +-23 +-47 +5 +-29 +-43 +12 +-22 +-40 +21 +-11 +-20 +22 +-8 +-29 +23 +-10 +-30 +24 +-12 +-19 +28 +-11 +-18 +29 +-9 +-28 +29 +-6 +-27 +30 +-8 +-24 +32 +-7 +-27 +33 +-5 +-27 +31 +-8 +-27 +34 +-4 +-27 +46 +2 +-21 +42 +-1 +-27 +26 +-7 +-23 +26 +-11 +-25 +38 +-1 +-27 +27 +-10 +-29 +30 +-9 +-24 +29 +-8 +-17 +38 +-1 +-23 +26 +-10 +-18 +45 +1 +-27 +42 +-1 +-14 +28 +-7 +-23 +33 +-5 +-27 +32 +-6 +-25 +32 +-6 +-18 +41 +0 +-29 +22 +-14 +-29 +30 +-10 +-32 +26 +-9 +-25 +28 +-11 +-31 +29 +-6 +-23 +33 +-6 +-28 +27 +-11 +-29 +33 +-3 +-24 +33 +-6 +-26 +31 +-5 +-13 +37 +-4 +-28 +28 +-10 +-27 +27 +-5 +-23 +31 +1 +-24 +29 +-5 +-14 +39 +-4 +-29 +17 +21 +18 +29 +22 +15 +10 +12 +11 +7 +3 +11 +15 +6 +9 +3 +1 +3 +3 +3 +3 +5 +2 +-1 +0 +0 +5 +1 +0 +6 +5 +-1 +1 +3 +3 +5 +4 +2 +-1 +-3 +11 +-2 +-3 +1 +7 +-3 +6 +0 +-4 +-1 +-6 +3 +2 +-2 +-3 +5 +14 +9 +2 +-4 +6 +12 +-1 +-9 +-1 +2 +-4 +-1 +-2 +8 +-1 +-5 +5 +-5 +-4 +-2 +-5 +-4 +5 +4 +-4 +-4 +2 +-3 +-4 +-2 +-4 +1 +-1 +6 +-4 +-4 +-4 +15 +0 +2 +-3 +-2 +-3 +8 +1 +-2 +0 +15 +2 +-3 +-1 +1 +2 +12 +-3 +-6 +-5 +-3 +7 +0 +4 +16 +14 +0 +-3 +-7 +-4 +1 +-4 +-2 +-4 +1 +16 +-22 +-46 +22 +-16 +-31 +24 +-16 +-41 +15 +-21 +-40 +16 +-18 +-36 +39 +-4 +-28 +26 +-12 +-31 +23 +-13 +-31 +44 +1 +-26 +37 +-1 +-23 +27 +-10 +-28 +26 +-12 +-27 +26 +-4 +-24 +45 +2 +-25 +29 +-4 +-27 +26 +-11 +-12 +29 +-10 +-29 +26 +-10 +-30 +38 +4 +-14 +38 +-5 +-27 +26 +-10 +-27 +29 +-10 +-31 +33 +-4 +-23 +26 +-11 +-27 +32 +2 +-15 +31 +-9 +-20 +28 +-9 +-29 +32 +-4 +-27 +37 +-4 +-28 +26 +-10 +-25 +31 +-6 +-24 +27 +-4 +-27 +29 +-7 +-20 +33 +-7 +-25 +35 +-4 +-26 +27 +-6 +-21 +36 +-2 +-26 +27 +-10 +-19 +31 +-7 +-26 +44 +0 +-26 +28 +-10 +-27 +28 +-3 +-26 +31 +-8 +-25 +30 +-6 +-22 +31 +-7 +-28 +33 +-7 +-22 +27 +-6 +-26 +34 +-6 +-25 +22 +28 +28 +21 +26 +37 +16 +11 +5 +6 +16 +3 +3 +2 +8 +11 +1 +12 +-1 +-2 +2 +3 +2 +7 +3 +0 +4 +1 +1 +-4 +-3 +14 +3 +-3 +9 +14 +-3 +-1 +0 +6 +-7 +3 +-5 +2 +-5 +-5 +-6 +-5 +-4 +4 +2 +-2 +-2 +-3 +1 +5 +-2 +-1 +-2 +-3 +4 +1 +4 +4 +5 +-3 +7 +3 +-4 +1 +-2 +11 +10 +-1 +-3 +-1 +-1 +0 +-4 +-1 +-5 +-1 +-2 +3 +-1 +-1 +-2 +-1 +-2 +10 +3 +-1 +11 +1 +6 +-4 +-3 +-3 +-3 +-3 +0 +-2 +-3 +-1 +6 +3 +-3 +-3 +4 +-1 +6 +-1 +-4 +-4 +0 +3 +10 +1 +0 +11 +2 +-2 +-2 +-2 +1 +1 +2 +-5 +10 +-26 +-46 +16 +-20 +-43 +11 +-20 +-38 +19 +-18 +-28 +28 +-10 +-33 +28 +-10 +-27 +30 +-5 +-16 +35 +-7 +-29 +30 +-8 +-30 +29 +0 +-24 +42 +0 +-24 +29 +-6 +-30 +28 +-9 +-29 +34 +-7 +-25 +29 +-10 +-29 +34 +-4 +-26 +34 +-6 +-29 +38 +-2 +-27 +36 +-4 +-29 +40 +-3 +-14 +32 +-5 +-27 +26 +-10 +-31 +26 +-9 +-29 +29 +-9 +-27 +31 +-6 +-27 +28 +-6 +-27 +30 +-7 +-18 +49 +4 +-24 +26 +-8 +-29 +26 +-10 +-20 +28 +0 +-22 +36 +-6 +-28 +32 +-5 +-28 +35 +1 +-19 +26 +-10 +-29 +27 +-6 +-26 +29 +-7 +-21 +41 +-2 +-26 +35 +-4 +-25 +27 +-11 +-17 +39 +-1 +-28 +27 +-12 +-16 +33 +-7 +-24 +36 +-2 +-26 +40 +6 +-25 +24 +-14 +-18 +27 +-11 +-27 +30 +-10 +-30 +23 +20 +21 +21 +18 +11 +21 +13 +7 +7 +14 +5 +19 +24 +4 +8 +-3 +-2 +-2 +-4 +-2 +2 +-2 +0 +0 +12 +12 +-1 +-2 +-3 +1 +-5 +0 +-1 +2 +5 +-5 +-5 +-4 +0 +-2 +1 +1 +8 +16 +6 +-2 +-4 +1 +7 +14 +-2 +-4 +-2 +2 +-2 +2 +14 +1 +-4 +-6 +-4 +-1 +-3 +3 +1 +-2 +3 +-3 +1 +-4 +-4 +-3 +4 +-1 +0 +-3 +0 +5 +1 +-2 +12 +9 +7 +-4 +0 +1 +1 +1 +4 +6 +18 +0 +4 +-3 +-6 +0 +-2 +-1 +13 +-3 +-2 +-7 +-5 +2 +7 +-6 +-2 +-3 +-5 +1 +-4 +-4 +0 +-4 +1 +-2 +-3 +-2 +2 +5 +-1 +4 +10 +-3 +1 +1 +15 +-24 +15 +-22 +-46 +10 +-25 +-45 +13 +-9 +-34 +19 +-10 +-32 +22 +-14 +-32 +27 +-6 +-29 +31 +-7 +-27 +27 +-10 +-29 +34 +1 +-25 +30 +-9 +-30 +33 +-4 +-27 +31 +-8 +-29 +32 +-8 +-24 +32 +-7 +-27 +46 +2 +-24 +29 +-9 +-31 +32 +-2 +-11 +34 +-2 +-20 +26 +-12 +-31 +25 +-10 +-30 +28 +-9 +-25 +28 +-6 +-21 +39 +-3 +-24 +32 +-7 +-25 +37 +-5 +-27 +27 +-8 +-29 +30 +-4 +-13 +40 +2 +-23 +31 +-10 +-30 +29 +-5 +-28 +27 +-6 +-28 +27 +-5 +-16 +31 +-9 +-25 +32 +-7 +-20 +37 +-4 +-21 +28 +-10 +-30 +30 +-6 +-28 +27 +-10 +-16 +41 +-3 +-26 +28 +-8 +-26 +39 +-4 +-20 +27 +-8 +-29 +31 +-9 +-28 +30 +-9 +-29 +32 +-5 +-24 +40 +-2 +-25 +28 +-7 +-28 +28 +-7 +18 +24 +22 +26 +21 +34 +14 +10 +4 +2 +3 +5 +5 +13 +10 +0 +0 +3 +0 +1 +-1 +3 +17 +1 +0 +9 +-3 +2 +3 +-4 +0 +0 +-1 +5 +1 +1 +0 +-3 +1 +-3 +-1 +-1 +2 +7 +-3 +-1 +-1 +6 +13 +8 +-3 +-2 +14 +11 +4 +3 +-2 +-3 +-4 +0 +4 +0 +-7 +-1 +-3 +9 +-5 +2 +5 +16 +-3 +-8 +-8 +-2 +-3 +0 +3 +-1 +-3 +-3 +8 +9 +7 +8 +5 +-2 +-4 +-6 +4 +8 +2 +-2 +-7 +5 +0 +-6 +-7 +-4 +-5 +-3 +-3 +-1 +7 +4 +-1 +3 +-3 +16 +1 +-3 +9 +4 +-3 +-4 +-4 +10 +4 +-4 +-3 +-2 +-5 +0 +-5 +-2 +2 +-2 +-4 +-3 +11 +-26 +-47 +9 +-22 +-41 +15 +-20 +-37 +20 +-16 +-33 +29 +-10 +-32 +25 +-7 +-28 +30 +-7 +-19 +33 +0 +-19 +28 +-11 +-14 +30 +-10 +-29 +25 +-11 +-21 +28 +-10 +-23 +37 +-3 +-27 +37 +0 +-13 +36 +-2 +-29 +29 +-10 +-28 +26 +-7 +-26 +26 +-12 +-25 +27 +-10 +-26 +30 +-1 +-26 +34 +-6 +-27 +32 +-5 +-24 +30 +-5 +-27 +39 +-2 +-26 +28 +-9 +-26 +44 +0 +-26 +34 +-3 +-23 +29 +-9 +-27 +37 +-3 +-24 +38 +-4 +-28 +37 +-3 +-29 +46 +1 +-25 +22 +-12 +-32 +34 +-8 +-28 +29 +-9 +-28 +32 +-6 +-29 +29 +-3 +-19 +30 +-8 +-26 +42 +7 +-23 +28 +-11 +-31 +29 +-3 +-26 +34 +-7 +-29 +35 +-2 +-23 +27 +-10 +-28 +33 +-6 +-30 +30 +-2 +-25 +30 +-6 +-28 +30 +-6 +-26 +32 +-7 +-17 +33 +-6 +-27 +27 +-9 +-27 +34 +-6 +-23 +31 +-7 +-25 +30 +-8 +-27 +31 +-3 +-15 +30 +-8 +-27 +37 +1 +-25 +26 +-2 +-23 +28 +-7 +-24 +34 +3 +-23 +29 +-8 +-29 +30 +-9 +-27 +30 +-4 +-26 +31 +3 +-14 +29 +-8 +-28 +29 +-6 +-23 +42 +0 +-22 +28 +-9 +-29 +32 +0 +-26 +36 +-6 +-27 +37 +-4 +-26 +35 +-7 +-26 +31 +-5 +-24 +30 +-9 +-27 +36 +-5 +-27 +31 +-6 +-27 +32 +-7 +-25 +33 +-7 +-17 +31 +-7 +-18 +29 +-1 +-26 +33 +-7 +-14 +30 +-5 +-18 +25 +-7 +-21 +25 +-13 +-28 +26 +-10 +-28 +31 +-7 +-27 +32 +-1 +-25 +28 +-9 +-27 +34 +-4 +-12 +30 +-2 +-25 +31 +-7 +-29 +29 +-9 +-26 +50 +4 +-24 +28 +-10 +-25 +35 +-5 +-23 +37 +-1 +-19 +19 +18 +20 +15 +19 +14 +9 +19 +7 +13 +4 +2 +3 +9 +4 +5 +0 +2 +0 +-1 +2 +1 +3 +3 +14 +7 +10 +9 +3 +-2 +6 +-5 +-3 +-1 +-2 +11 +-3 +-2 +-3 +-3 +5 +-2 +0 +-2 +-2 +6 +-2 +-2 +-1 +2 +0 +2 +0 +1 +3 +0 +18 +3 +-3 +-4 +-1 +-1 +-5 +-1 +12 +2 +-4 +1 +2 +-3 +-4 +-3 +1 +6 +8 +9 +1 +-5 +-6 +-4 +0 +-1 +-1 +-4 +-1 +-1 +13 +10 +1 +12 +-1 +-5 +-8 +12 +5 +-4 +-7 +-8 +5 +3 +-5 +-4 +3 +-2 +13 +20 +0 +-5 +-6 +0 +0 +-3 +-1 +-3 +5 +-2 +2 +0 +1 +0 +15 +0 +-5 +0 +-6 +-5 +7 +-5 +-2 +7 +-4 +15 +0 +-3 +-1 +-6 +-6 +-3 +-1 +-1 +-1 +10 +11 +-2 +-5 +1 +-5 +2 +0 +-2 +9 +17 +8 +-4 +-5 +-2 +-2 +1 +-5 +-3 +-4 +-3 +-2 +3 +14 +13 +3 +-5 +-1 +11 +4 +-5 +-1 +-3 +-6 +-5 +-3 +-2 +-6 +-2 +-2 +-1 +-1 +10 +2 +-2 +-4 +2 +3 +-2 +-5 +2 +2 +-1 +-1 +0 +12 +0 +2 +13 +7 +-2 +5 +2 +-4 +-5 +-3 +1 +-5 +-3 +2 +2 +7 +-1 +-3 +13 +0 +0 +-4 +-3 +-2 +-4 +2 +0 +-3 +1 +-2 +7 +13 +1 +-5 +-6 +3 +5 +-2 +-5 +1 +2 +0 +-3 +13 +-1 +-1 +0 +-5 +-2 +0 +0 +-4 +-4 +16 +5 +12 +1 +-4 +4 +11 +-26 +-49 +21 +-14 +-41 +8 +-22 +-42 +15 +-21 +-37 +18 +-14 +-34 +32 +-8 +-29 +34 +-4 +-12 +29 +-5 +-29 +24 +-10 +-26 +36 +1 +-25 +28 +-7 +-26 +33 +-3 +-11 +28 +-10 +-32 +29 +-10 +-30 +29 +-4 +-27 +27 +-5 +-28 +29 +-9 +-24 +42 +5 +-15 +27 +0 +-26 +27 +-10 +-29 +28 +-3 +-28 +30 +-9 +-29 +32 +-6 +-13 +29 +-10 +-26 +30 +-7 +-30 +27 +-10 +-22 +33 +-5 +-27 +33 +-7 +-26 +29 +-9 +-27 +31 +-5 +-22 +42 +0 +-26 +29 +-8 +-25 +44 +3 +-26 +31 +-9 +-20 +26 +-5 +-25 +28 +-9 +-13 +36 +-5 +-28 +31 +-7 +-13 +30 +-6 +-27 +29 +-10 +-27 +27 +-6 +-24 +33 +-7 +-28 +36 +-5 +-23 +40 +-3 +-22 +32 +-7 +-18 +27 +-9 +-29 +33 +0 +-27 +32 +-8 +-23 +33 +-8 +-30 +29 +-7 +-27 +34 +1 +-21 +29 +-10 +-24 +33 +-4 +-29 +33 +-5 +-18 +45 +1 +-26 +38 +-1 +-28 +37 +-4 +-24 +23 +-15 +-20 +28 +-10 +-27 +31 +-9 +-18 +28 +-4 +-21 +25 +-13 +-32 +23 +-12 +-28 +28 +-8 +-27 +42 +0 +-23 +30 +-5 +-15 +35 +-6 +-29 +27 +-11 +-27 +28 +-10 +-23 +35 +-5 +-27 +38 +1 +-20 +25 +-11 +-27 +27 +-3 +-27 +26 +-10 +-29 +29 +-2 +-24 +29 +-9 +-27 +36 +-3 +-22 +31 +-7 +-22 +28 +-6 +-24 +35 +-4 +-14 +47 +3 +-26 +41 +-2 +-27 +33 +-6 +-29 +27 +-11 +-23 +25 +-11 +-29 +28 +-7 +-14 +31 +-8 +-26 +35 +3 +-12 +44 +1 +-29 +25 +-6 +-26 +25 +-9 +-32 +26 +-11 +-29 +27 +-3 +-25 +27 +-9 +-24 +27 +-4 +-25 +30 +-6 +-17 +17 +27 +23 +31 +29 +13 +11 +8 +20 +9 +5 +3 +11 +8 +12 +14 +13 +-2 +4 +5 +0 +-4 +-4 +-2 +-4 +17 +2 +8 +-1 +-5 +-4 +-2 +-3 +0 +4 +0 +-4 +-1 +-1 +0 +2 +-3 +-4 +7 +8 +-1 +4 +6 +10 +16 +-1 +1 +4 +-5 +-3 +-6 +-6 +2 +-2 +-2 +-1 +12 +10 +-3 +-1 +-3 +-5 +11 +13 +1 +-9 +-2 +-3 +-5 +-4 +-2 +11 +7 +-4 +-5 +-1 +-1 +-2 +1 +-4 +4 +-5 +-2 +4 +0 +-5 +-1 +-1 +6 +-3 +1 +-4 +-1 +2 +-1 +-1 +2 +5 +-2 +-2 +9 +0 +1 +5 +6 +-3 +-1 +2 +5 +4 +-2 +7 +-3 +5 +-1 +3 +-1 +5 +-4 +-1 +-5 +8 +3 +-29 +5 +-30 +-48 +12 +-23 +-36 +21 +-14 +-36 +23 +-14 +-36 +29 +-4 +-29 +25 +-12 +-32 +28 +-7 +-29 +26 +-10 +-21 +32 +-7 +-27 +30 +-8 +-25 +32 +-6 +-27 +32 +-3 +-27 +31 +-5 +-18 +29 +-8 +-23 +31 +-8 +-28 +38 +-3 +-26 +30 +-6 +-27 +32 +-6 +-26 +31 +-8 +-21 +34 +-3 +-9 +32 +-5 +-29 +38 +-1 +-26 +27 +-11 +-27 +24 +-12 +-18 +29 +-9 +-23 +29 +-9 +-26 +35 +-5 +-22 +28 +-9 +-27 +32 +-7 +-27 +30 +-8 +-22 +32 +-7 +-23 +42 +0 +-11 +31 +-8 +-25 +28 +-3 +-18 +41 +3 +-22 +30 +-8 +-31 +26 +-10 +-22 +34 +-5 +-28 +25 +-12 +-26 +33 +-5 +-26 +33 +-8 +-27 +42 +0 +-21 +38 +-5 +-25 +23 +-13 +-32 +26 +-12 +-20 +28 +-4 +-28 +35 +-5 +-18 +29 +-6 +11 +22 +31 +17 +15 +12 +9 +14 +14 +10 +5 +6 +3 +10 +4 +1 +6 +11 +1 +2 +19 +3 +-2 +2 +-2 +-6 +5 +14 +2 +-6 +-4 +-2 +7 +15 +13 +-3 +-5 +-7 +-8 +-6 +4 +3 +2 +0 +-3 +-3 +1 +5 +-3 +-3 +4 +0 +0 +1 +3 +1 +-4 +0 +9 +-2 +15 +0 +-4 +-4 +-3 +0 +0 +1 +-5 +-2 +1 +20 +2 +-1 +-6 +0 +8 +-1 +-3 +3 +6 +-2 +-3 +2 +-4 +-7 +6 +-3 +1 +-1 +-6 +-1 +1 +1 +0 +-2 +-2 +0 +3 +1 +6 +2 +12 +5 +-1 +-2 +0 +-7 +13 +9 +5 +-2 +-5 +-1 +-1 +0 +-4 +2 +6 +1 +13 +5 +-8 +3 +-5 +-2 +-3 +3 +-32 +5 +-30 +-43 +12 +-24 +-43 +17 +-17 +-37 +36 +-4 +-32 +26 +-12 +-27 +28 +-9 +-24 +25 +-12 +-31 +28 +-3 +-24 +43 +0 +-27 +41 +-1 +-23 +25 +-13 +-21 +25 +-13 +-32 +29 +-11 +-24 +35 +-5 +-25 +36 +-4 +-27 +27 +-7 +-30 +33 +-8 +-26 +30 +-8 +-27 +44 +0 +-25 +31 +-8 +-27 +27 +-11 +-28 +36 +-5 +-28 +32 +-5 +-26 +33 +-4 +-28 +31 +-7 +-28 +37 +0 +-21 +32 +-1 +-18 +27 +-11 +-21 +31 +-7 +-29 +26 +-10 +-30 +34 +-5 +-20 +32 +-1 +-21 +29 +-10 +-24 +32 +-7 +-29 +27 +-7 +-26 +33 +-1 +-26 +36 +-6 +-26 +32 +-8 +-27 +33 +-5 +-27 +35 +0 +-26 +30 +-8 +-28 +34 +-4 +-15 +36 +-4 +-27 +29 +-8 +-14 +31 +-9 +-16 +38 +-3 +-23 +34 +-7 +-27 +25 +-12 +9 +20 +22 +16 +17 +14 +10 +12 +21 +13 +11 +9 +4 +-2 +14 +5 +-1 +5 +1 +-2 +0 +-1 +0 +-3 +13 +1 +1 +18 +1 +1 +-4 +-3 +5 +-1 +-5 +6 +1 +-2 +8 +-3 +-7 +0 +12 +9 +-2 +7 +-3 +-3 +0 +3 +-4 +-4 +3 +-4 +1 +-2 +-2 +4 +1 +5 +2 +-1 +-2 +12 +16 +5 +-7 +-6 +-5 +-2 +9 +13 +6 +-7 +-6 +-6 +-5 +-4 +-1 +7 +12 +1 +3 +1 +-4 +-4 +-6 +8 +0 +-3 +-5 +-3 +-6 +-3 +-2 +0 +14 +1 +10 +8 +-4 +9 +-3 +4 +6 +-4 +-3 +12 +-4 +-4 +-4 +-6 +-5 +12 +-2 +-1 +-6 +-5 +3 +-2 +7 +4 +9 +2 +12 +17 +-1 +-6 +-4 +-7 +-2 +-6 +-6 +1 +-3 +0 +10 +12 +7 +-5 +3 +2 +-7 +9 +4 +-5 +-1 +-8 +0 +-1 +2 +-2 +1 +-3 +0 +7 +13 +1 +-6 +-3 +-4 +2 +2 +1 +0 +1 +7 +-1 +2 +-5 +-7 +-1 +-6 +-5 +1 +2 +-4 +9 +13 +9 +-4 +-4 +-2 +-1 +6 +0 +-4 +13 +-3 +-1 +-7 +-2 +-7 +-5 +-2 +8 +6 +0 +-3 +-3 +5 +-1 +-4 +-2 +-4 +-2 +-4 +4 +-1 +1 +20 +3 +-2 +-3 +12 +4 +1 +1 +2 +-3 +2 +9 +7 +0 +9 +14 +-4 +-9 +-9 +-6 +2 +-2 +7 +-3 +-6 +11 +1 +-8 +-1 +6 +-5 +-1 +-6 +-5 +-3 +-7 +2 +2 +3 +-2 +11 +-1 +5 +-3 +-6 +2 +10 +-26 +-37 +17 +-20 +-42 +11 +-19 +-38 +27 +-13 +-28 +19 +-13 +-35 +23 +-14 +-30 +27 +-10 +-26 +27 +-11 +-27 +35 +-2 +-14 +33 +-8 +-26 +41 +-2 +-27 +30 +-7 +-26 +30 +-8 +-30 +42 +-1 +-25 +41 +1 +-28 +26 +-13 +-31 +31 +-7 +-26 +34 +0 +-24 +30 +-9 +-31 +26 +-7 +-22 +27 +-9 +-18 +32 +-7 +-14 +44 +2 +-24 +35 +-7 +-17 +25 +-9 +-32 +34 +-5 +-31 +32 +0 +-28 +26 +-11 +-22 +31 +-4 +-17 +30 +-6 +-19 +25 +-12 +-32 +36 +-5 +-28 +27 +-7 +-28 +28 +-8 +-26 +26 +-11 +-30 +31 +-8 +-27 +33 +-1 +-17 +33 +-8 +-26 +29 +-8 +-24 +33 +-8 +-27 +38 +-3 +-26 +33 +-6 +-20 +36 +-1 +-27 +26 +-10 +-25 +40 +-2 +-28 +29 +-10 +-25 +28 +-7 +-28 +30 +-4 +-24 +37 +-4 +-23 +40 +-3 +-25 +28 +-9 +-23 +30 +-3 +-27 +26 +-8 +-23 +37 +-2 +-23 +26 +-8 +-28 +30 +-6 +-21 +26 +-10 +-29 +28 +-5 +-25 +26 +-8 +-22 +29 +-9 +-16 +31 +-7 +-22 +37 +-4 +-19 +29 +-9 +-28 +29 +0 +-25 +29 +-9 +-23 +36 +-5 +-17 +29 +-4 +-27 +36 +-5 +-28 +35 +-5 +-27 +35 +-6 +-26 +45 +3 +-23 +32 +-7 +-30 +36 +-4 +-29 +30 +-9 +-25 +41 +3 +-22 +24 +-14 +-32 +26 +-10 +-28 +27 +-10 +-28 +30 +-7 +-27 +36 +0 +-25 +28 +-9 +-20 +49 +3 +-22 +42 +0 +-27 +30 +-8 +-31 +27 +-9 +-29 +30 +0 +-22 +29 +-6 +-12 +30 +-10 +-31 +27 +-6 +-11 +31 +-2 +-21 +38 +-3 +-22 +26 +-13 +-28 +33 +-6 +-30 +31 +-9 +-26 +30 +-9 +-27 +39 +-4 +-27 +31 +30 +19 +26 +20 +27 +22 +8 +8 +11 +2 +2 +7 +5 +15 +8 +-1 +-5 +-3 +1 +2 +2 +-3 +-2 +2 +0 +0 +-5 +6 +7 +3 +3 +-4 +-2 +0 +-1 +0 +11 +8 +-2 +7 +0 +-4 +9 +12 +-4 +-4 +-7 +-5 +0 +4 +1 +-6 +-6 +3 +3 +-2 +1 +-2 +-3 +2 +-2 +-2 +10 +2 +-2 +0 +0 +-4 +13 +16 +0 +-4 +1 +-5 +-4 +10 +-2 +-5 +0 +-4 +1 +3 +-4 +2 +-2 +-5 +4 +0 +1 +-1 +2 +-1 +1 +-2 +-1 +1 +5 +3 +11 +1 +-2 +2 +-1 +-4 +-3 +-5 +-4 +9 +5 +1 +-2 +9 +-1 +1 +-1 +-2 +-3 +-3 +1 +6 +0 +-2 +-2 +-1 +0 +-1 +-5 +8 +-27 +-48 +10 +-18 +-40 +31 +-10 +-35 +22 +-17 +-37 +20 +-16 +-31 +28 +-11 +-29 +45 +2 +-24 +28 +-8 +-31 +29 +-4 +-28 +36 +0 +-26 +24 +-8 +-20 +29 +-10 +-21 +31 +-2 +-28 +37 +-4 +-27 +25 +-10 +-31 +33 +-7 +-18 +31 +-5 +-29 +42 +1 +-26 +29 +-10 +-28 +34 +-5 +-29 +27 +-9 +-27 +27 +-9 +-29 +34 +-2 +-21 +42 +-1 +-25 +32 +-4 +-30 +25 +-12 +-30 +40 +-1 +-25 +28 +-6 +-25 +28 +-7 +-30 +30 +-7 +-28 +29 +-2 +-19 +39 +-3 +-27 +27 +-10 +-30 +32 +-4 +-21 +40 +-2 +-23 +39 +-3 +-12 +29 +-9 +-30 +27 +-8 +-29 +37 +0 +-20 +29 +-7 +-27 +25 +-12 +-28 +40 +-3 +-27 +30 +-9 +-30 +30 +-9 +-28 +30 +1 +-20 +31 +-8 +-28 +48 +4 +-25 +48 +3 +-26 +14 +19 +17 +22 +14 +8 +9 +8 +8 +15 +10 +4 +11 +21 +3 +9 +18 +9 +3 +14 +-1 +-1 +-6 +5 +11 +13 +1 +2 +-1 +-9 +-6 +-7 +-2 +-5 +0 +-3 +-5 +16 +0 +-5 +-5 +-5 +-5 +0 +5 +-2 +-4 +-3 +12 +1 +-4 +7 +-3 +-1 +0 +8 +-4 +-3 +0 +0 +-2 +1 +-6 +0 +0 +0 +11 +0 +-1 +-2 +-1 +4 +3 +-1 +4 +6 +-3 +-3 +-3 +3 +5 +-4 +-3 +-1 +-3 +7 +5 +-2 +-4 +-3 +0 +-1 +1 +5 +10 +-2 +-3 +-1 +1 +-1 +10 +5 +-1 +-2 +2 +2 +2 +-5 +-5 +-4 +3 +1 +-2 +-4 +9 +4 +-2 +9 +8 +-3 +9 +9 +-1 +-2 +3 +16 +-1 +-7 +6 +-28 +-50 +5 +-29 +-33 +20 +-15 +-28 +22 +-15 +-37 +20 +-13 +-32 +25 +-14 +-33 +24 +-12 +-32 +33 +-7 +-24 +27 +-10 +-23 +27 +-8 +-28 +31 +-7 +-28 +33 +-7 +-25 +34 +-4 +-19 +32 +-8 +-27 +40 +-2 +-26 +28 +-9 +-21 +32 +-8 +-27 +32 +-2 +-26 +36 +-4 +-11 +31 +-8 +-23 +29 +-9 +-28 +25 +-12 +-29 +28 +-6 +-27 +33 +-6 +-25 +29 +-5 +-27 +40 +-1 +-22 +29 +-7 +-27 +30 +-9 +-23 +29 +-9 +-26 +41 +-2 +-21 +32 +-5 +-28 +42 +3 +-24 +28 +-8 +-30 +28 +-9 +-26 +43 +1 +-14 +47 +2 +-27 +22 +-12 +-25 +32 +-9 +-27 +29 +-10 +-30 +30 +-6 +-27 +29 +-7 +-29 +45 +2 +-24 +30 +-7 +-25 +31 +-3 +-27 +31 +-8 +-30 +36 +-5 +-20 +32 +-8 +-16 +29 +-11 +-23 +14 +29 +31 +28 +23 +18 +9 +10 +4 +6 +2 +6 +1 +8 +1 +7 +10 +4 +1 +12 +0 +6 +1 +-4 +-3 +6 +-1 +11 +3 +3 +1 +-4 +1 +-4 +10 +9 +-3 +-7 +0 +-1 +1 +10 +3 +0 +-5 +-4 +-2 +14 +0 +0 +-7 +-1 +-4 +-4 +2 +-2 +-1 +-3 +-3 +13 +16 +11 +-4 +-6 +-5 +-3 +-6 +-3 +11 +20 +-1 +-4 +3 +-2 +-5 +-4 +-6 +-3 +-4 +-3 +2 +-1 +-4 +4 +-1 +3 +5 +14 +3 +-4 +-3 +-3 +-4 +-5 +-2 +0 +7 +15 +0 +0 +4 +-3 +-3 +1 +4 +-5 +-1 +-3 +-6 +1 +-3 +7 +4 +0 +-4 +2 +-1 +6 +-1 +-3 +4 +10 +0 +-2 +-2 +-2 +11 +4 +-31 +9 +-25 +-45 +14 +-18 +-40 +20 +-19 +-31 +18 +-12 +-31 +21 +-15 +-34 +25 +-2 +-21 +25 +-13 +-32 +31 +-2 +-15 +31 +-9 +-21 +34 +-5 +-28 +30 +-9 +-17 +41 +4 +-25 +26 +-11 +-28 +46 +2 +-21 +40 +-3 +-26 +28 +-12 +-34 +24 +-13 +-27 +23 +-13 +-31 +26 +-2 +-22 +24 +-10 +-23 +32 +-7 +-14 +47 +3 +-26 +27 +-10 +-20 +35 +-6 +-29 +41 +-1 +-28 +30 +-8 +-31 +42 +-1 +-12 +28 +-11 +-32 +24 +-11 +-28 +31 +-9 +-31 +27 +-10 +-19 +26 +-10 +-9 +33 +-6 +-22 +25 +-12 +-31 +44 +3 +-24 +29 +-2 +-28 +36 +-6 +-28 +38 +3 +-24 +26 +-8 +-30 +26 +0 +-28 +37 +-5 +-29 +28 +-10 +-29 +29 +-9 +-27 +25 +-11 +-28 +32 +-6 +-20 +38 +-3 +-27 +33 +-2 +-26 +33 +-5 +17 +21 +19 +24 +26 +18 +25 +11 +4 +6 +4 +7 +2 +6 +2 +2 +6 +5 +8 +0 +0 +2 +0 +4 +-1 +2 +-2 +5 +4 +0 +-2 +13 +2 +-4 +17 +1 +6 +-5 +-6 +-4 +9 +6 +-3 +4 +2 +-5 +-2 +-5 +-4 +-3 +-1 +14 +7 +-4 +-4 +0 +12 +10 +-5 +-2 +-6 +5 +11 +0 +-6 +-5 +10 +-1 +-5 +3 +-3 +1 +-4 +-1 +-5 +2 +-5 +-6 +2 +6 +4 +-4 +-5 +0 +-3 +-2 +-1 +1 +-2 +-2 +5 +13 +6 +-2 +-3 +0 +0 +-2 +-2 +7 +-2 +-3 +0 +16 +0 +-1 +10 +-1 +-5 +-3 +-4 +3 +-1 +6 +-2 +3 +1 +-2 +-3 +-3 +6 +12 +-2 +4 +-1 +5 +2 +-2 +9 +-22 +-47 +6 +-24 +-45 +11 +-22 +-34 +28 +-12 +-31 +20 +-16 +-31 +34 +-7 +-31 +41 +4 +-26 +23 +-14 +-27 +27 +-11 +-31 +28 +-8 +-22 +27 +-5 +-21 +33 +-7 +-28 +29 +-2 +-18 +27 +-11 +-30 +29 +-7 +-22 +30 +-9 +-27 +30 +-4 +-11 +48 +4 +-23 +34 +-5 +-31 +24 +-10 +-27 +45 +6 +-24 +29 +-10 +-17 +37 +-4 +-27 +30 +-10 +-31 +25 +-11 +-30 +38 +1 +-25 +32 +-7 +-30 +27 +-11 +-30 +34 +-5 +-26 +34 +-6 +-25 +35 +-5 +-29 +34 +-2 +-25 +27 +-10 +-19 +28 +-9 +-29 +35 +-6 +-25 +44 +1 +-18 +33 +-7 +-30 +29 +-9 +-30 +26 +-11 +-29 +26 +-10 +-18 +45 +4 +-23 +31 +-8 +-16 +43 +2 +-27 +29 +-9 +-22 +41 +-2 +-19 +29 +-9 +-31 +23 +-14 +-31 +30 +-4 +-18 +20 +34 +23 +15 +22 +15 +10 +15 +21 +23 +5 +2 +4 +1 +2 +0 +9 +-2 +3 +-1 +-2 +6 +0 +-1 +2 +-2 +-1 +-3 +-3 +-1 +2 +-4 +1 +4 +0 +-1 +10 +4 +6 +6 +-3 +-3 +13 +15 +-2 +7 +-5 +-1 +-5 +10 +-1 +-5 +-5 +-2 +-4 +4 +-2 +0 +-4 +-5 +-2 +2 +3 +-2 +8 +-2 +4 +-3 +4 +1 +1 +-3 +-3 +8 +-2 +1 +-3 +8 +0 +9 +5 +-4 +4 +-4 +1 +4 +-7 +-6 +-5 +1 +7 +-2 +-4 +-2 +3 +-1 +3 +-1 +-2 +-2 +7 +8 +6 +13 +2 +1 +-4 +2 +-3 +2 +-5 +5 +3 +-1 +-2 +-1 +-1 +9 +-3 +5 +6 +-4 +0 +-3 +-3 +11 +-4 +-4 +-1 +-3 +-4 +9 +-2 +0 +-5 +-5 +-4 +2 +-2 +-2 +-4 +-1 +4 +20 +1 +-4 +7 +-2 +5 +2 +3 +1 +-2 +9 +-3 +1 +9 +0 +-3 +-2 +2 +-4 +-2 +6 +2 +-5 +-3 +-2 +-2 +-2 +1 +12 +6 +14 +3 +7 +5 +1 +-6 +-5 +-5 +6 +8 +12 +5 +-3 +-5 +-3 +11 +-2 +-5 +10 +-1 +-8 +-2 +-1 +2 +-2 +-7 +-5 +2 +13 +8 +-5 +-3 +-6 +-5 +3 +-3 +-2 +-5 +-3 +-4 +1 +14 +3 +3 +-4 +2 +1 +1 +-4 +-3 +0 +-2 +4 +-3 +-1 +5 +20 +0 +1 +2 +4 +5 +1 +-6 +-6 +7 +-1 +14 +-2 +-9 +-3 +5 +0 +-4 +-6 +13 +-1 +-3 +2 +-2 +-4 +4 +10 +-26 +6 +-26 +-46 +6 +-25 +-44 +19 +-18 +-38 +19 +-15 +-19 +27 +-13 +-27 +29 +-10 +-21 +30 +-10 +-19 +41 +1 +-15 +32 +-5 +-17 +33 +-5 +-24 +21 +-16 +-32 +26 +-8 +-30 +25 +-9 +-26 +43 +0 +-23 +28 +-2 +-20 +28 +-8 +-18 +30 +-10 +-31 +24 +-4 +-26 +30 +1 +-23 +39 +-1 +-24 +30 +-8 +-27 +35 +-6 +-29 +33 +-8 +-31 +32 +0 +-27 +32 +-6 +-28 +26 +-1 +-25 +34 +-7 +-25 +35 +-6 +-25 +33 +-8 +-26 +38 +-4 +-27 +31 +1 +-25 +34 +-6 +-29 +25 +-11 +-17 +28 +-10 +-17 +27 +-11 +-21 +33 +-7 +-30 +29 +-5 +-25 +37 +-4 +-29 +30 +-9 +-30 +40 +-2 +-26 +27 +-12 +-28 +40 +-2 +-28 +28 +-11 +-27 +28 +-8 +-28 +31 +-6 +-26 +33 +5 +-21 +40 +-3 +-18 +31 +-6 +-23 +26 +-12 +-31 +43 +1 +-20 +30 +-5 +-29 +27 +-10 +-26 +32 +-6 +-22 +29 +-8 +-29 +26 +1 +-23 +30 +-6 +-27 +28 +-10 +-27 +34 +-3 +-20 +30 +-8 +-25 +28 +-6 +-27 +30 +-8 +-26 +47 +3 +-23 +42 +1 +-25 +26 +-7 +-28 +35 +-5 +-14 +45 +1 +-27 +33 +-8 +-31 +34 +-5 +-25 +27 +-9 +-28 +37 +2 +-24 +26 +-12 +-16 +27 +-11 +-18 +37 +-4 +-26 +34 +-6 +-29 +23 +-11 +-25 +27 +-8 +-28 +27 +-10 +-27 +28 +-9 +-26 +28 +2 +-23 +48 +3 +-22 +27 +-10 +-25 +38 +1 +-27 +30 +-7 +-30 +26 +-3 +-18 +26 +-9 +-25 +41 +-2 +-12 +29 +-11 +-18 +44 +0 +-25 +22 +-14 +-24 +27 +-12 +-30 +25 +-9 +-26 +29 +-10 +-30 +35 +-6 +-24 +30 +-7 +-30 +28 +-4 +-27 +28 +-10 +30 +26 +32 +26 +16 +10 +6 +17 +14 +15 +3 +4 +5 +6 +1 +0 +0 +1 +-1 +3 +4 +0 +4 +0 +3 +2 +5 +13 +18 +1 +5 +-2 +-6 +-3 +2 +18 +-1 +-3 +-7 +-8 +1 +3 +-2 +-1 +1 +-3 +-3 +-3 +-3 +7 +-2 +7 +-2 +-4 +-2 +2 +-5 +2 +2 +1 +-1 +18 +2 +10 +-3 +10 +6 +-5 +3 +-4 +1 +11 +5 +2 +-7 +-7 +-5 +-2 +-4 +2 +-3 +-3 +2 +0 +8 +-1 +2 +-4 +-3 +8 +7 +2 +9 +-1 +2 +5 +-3 +1 +-7 +4 +-3 +-6 +-6 +3 +-3 +1 +14 +-1 +-5 +-2 +1 +-6 +-3 +-1 +-2 +1 +3 +10 +12 +-2 +0 +-5 +-2 +-5 +-6 +0 +13 +11 +11 +-25 +-49 +14 +-23 +-32 +24 +-15 +-37 +18 +-19 +-35 +17 +-16 +-32 +32 +-6 +-29 +21 +-7 +-22 +26 +-13 +-29 +28 +-8 +-30 +28 +-9 +-11 +31 +-7 +-12 +29 +-10 +-30 +28 +-10 +-29 +40 +-3 +-25 +28 +-9 +-29 +29 +-6 +-25 +40 +1 +-25 +30 +-10 +-26 +27 +-10 +-29 +29 +-8 +-26 +28 +-8 +-27 +36 +-5 +-20 +35 +-5 +-26 +39 +-2 +-23 +35 +-1 +-15 +34 +-5 +-24 +34 +-7 +-30 +31 +-1 +-15 +28 +-11 +-26 +29 +-10 +-30 +34 +-5 +-26 +30 +-7 +-25 +32 +-5 +-25 +40 +5 +-24 +28 +-9 +-30 +27 +-9 +-28 +48 +3 +-24 +29 +-9 +-27 +31 +-7 +-30 +26 +-11 +-30 +28 +-8 +-25 +27 +-5 +-27 +39 +-2 +-25 +27 +-11 +-24 +40 +5 +-21 +37 +-3 +-25 +26 +-6 +-29 +26 +-8 +-24 +20 +30 +27 +27 +32 +16 +9 +15 +9 +6 +4 +5 +5 +15 +7 +6 +10 +-1 +-1 +-2 +5 +4 +10 +0 +10 +2 +2 +-3 +-6 +-4 +-2 +1 +2 +-1 +3 +1 +-1 +-1 +-3 +16 +2 +2 +0 +3 +3 +-4 +-2 +12 +-1 +0 +-4 +12 +-2 +-2 +-7 +0 +-1 +-6 +0 +14 +6 +3 +-3 +4 +2 +8 +-5 +-2 +-6 +-4 +-2 +1 +-4 +-2 +-2 +4 +-4 +0 +-3 +-3 +1 +2 +2 +-1 +6 +2 +-2 +0 +2 +0 +-2 +-2 +-1 +6 +9 +1 +1 +-1 +6 +15 +0 +-3 +-3 +-5 +-5 +-2 +1 +4 +-2 +14 +12 +7 +-4 +7 +5 +-4 +-5 +2 +0 +15 +-2 +-5 +1 +-1 +-2 +-6 +3 +0 +9 +-28 +-47 +12 +-24 +-46 +15 +-21 +-42 +18 +-19 +-35 +37 +-5 +-31 +25 +-7 +-26 +23 +-11 +-16 +29 +-9 +-30 +29 +-3 +-23 +31 +-9 +-29 +37 +-5 +-29 +29 +-10 +-29 +28 +-7 +-15 +33 +-7 +-22 +30 +-6 +-16 +37 +-5 +-26 +26 +-12 +-28 +36 +-3 +-10 +29 +-9 +-32 +42 +1 +-17 +32 +-7 +-32 +25 +-5 +-30 +39 +-3 +-26 +31 +-9 +-17 +37 +-5 +-30 +27 +-6 +-30 +28 +-10 +-26 +32 +-3 +-27 +26 +-9 +-21 +33 +-6 +-18 +32 +-7 +-30 +32 +-3 +-11 +29 +-10 +-27 +25 +-12 +-25 +24 +-10 +-26 +33 +-7 +-11 +34 +-6 +-27 +38 +3 +-23 +28 +-8 +-28 +27 +-11 +-27 +33 +-6 +-26 +37 +-3 +-27 +36 +-4 +-28 +29 +-10 +-27 +29 +-9 +-26 +33 +-2 +-25 +27 +-8 +-22 +31 +-2 +-15 +30 +22 +20 +33 +22 +13 +18 +7 +6 +19 +10 +5 +7 +12 +14 +10 +3 +-1 +-2 +-4 +9 +0 +-5 +-3 +3 +1 +1 +15 +-1 +2 +-2 +15 +-1 +0 +-4 +1 +5 +-1 +1 +-6 +1 +-5 +-6 +0 +0 +-2 +-5 +6 +13 +1 +0 +3 +-4 +-3 +-3 +-4 +0 +-3 +-3 +-4 +-2 +3 +15 +13 +-2 +-4 +-3 +-3 +-4 +12 +-1 +0 +1 +0 +-2 +-4 +-5 +4 +-4 +-2 +2 +9 +-1 +5 +1 +-3 +-2 +-2 +11 +5 +-4 +5 +5 +7 +2 +0 +-2 +3 +-2 +-2 +-1 +-5 +-3 +2 +9 +-3 +-1 +-1 +-3 +-2 +1 +13 +10 +-4 +-4 +-2 +6 +0 +9 +1 +-1 +2 +-6 +9 +-5 +-4 +0 +14 +-24 +9 +-27 +-42 +11 +-24 +-42 +13 +-22 +-37 +26 +-13 +-32 +34 +-8 +-31 +27 +-12 +-24 +34 +-8 +-28 +24 +-11 +-26 +24 +-11 +-30 +39 +1 +-26 +27 +-8 +-15 +27 +-11 +-27 +28 +-11 +-24 +42 +0 +-27 +30 +-8 +-26 +27 +-10 +-21 +30 +-10 +-15 +41 +-1 +-23 +30 +-8 +-31 +37 +1 +-27 +28 +-11 +-26 +30 +-7 +-28 +28 +-3 +-12 +45 +2 +-25 +27 +-9 +-32 +31 +-9 +-28 +30 +2 +-25 +29 +-10 +-31 +31 +-6 +-13 +28 +-10 +-28 +48 +3 +-26 +25 +-12 +-31 +40 +-1 +-15 +26 +-9 +-27 +37 +-2 +-22 +23 +-7 +-23 +27 +-11 +-29 +29 +-9 +-30 +29 +-10 +-25 +28 +-10 +-16 +44 +0 +-18 +30 +-5 +-17 +28 +-9 +-31 +26 +-10 +-24 +33 +-8 +-27 +29 +-9 +-23 +33 +-8 +-26 +34 +-6 +11 +21 +23 +17 +16 +20 +22 +10 +7 +7 +11 +6 +10 +7 +6 +2 +11 +0 +3 +3 +5 +-1 +8 +1 +-1 +4 +0 +12 +5 +5 +1 +-5 +-3 +5 +0 +-1 +7 +10 +13 +-4 +-8 +-6 +-5 +-5 +-3 +1 +1 +2 +-4 +-1 +-4 +-2 +-4 +-2 +0 +-3 +5 +3 +0 +-3 +-4 +0 +4 +-2 +5 +8 +1 +-2 +-4 +7 +-2 +-3 +5 +1 +-3 +1 +10 +9 +0 +-2 +-4 +8 +-1 +2 +-2 +-3 +-5 +8 +5 +4 +5 +-5 +9 +7 +-4 +14 +-2 +-1 +-5 +2 +-4 +-3 +-7 +2 +-1 +16 +-1 +-1 +-5 +-4 +-2 +-7 +-3 +3 +0 +11 +14 +11 +-5 +-4 +-5 +1 +-7 +-3 +-4 +-3 +-3 +2 +-1 +-2 +-3 +-1 +-4 +0 +7 +-2 +9 +0 +-1 +-1 +10 +2 +-2 +-1 +-4 +1 +13 +3 +-3 +-4 +-6 +-2 +8 +-1 +2 +-3 +-3 +1 +14 +-1 +-4 +3 +13 +4 +4 +14 +8 +-3 +6 +10 +-3 +-6 +-3 +0 +-5 +-3 +-1 +-3 +9 +7 +-6 +4 +-1 +-1 +-3 +-6 +-4 +-5 +3 +0 +-4 +-1 +-1 +-2 +-5 +6 +-2 +15 +-1 +-3 +2 +0 +8 +9 +-2 +6 +0 +-4 +-6 +-3 +-3 +3 +-4 +-1 +-4 +5 +9 +8 +17 +-1 +1 +-3 +-6 +1 +-4 +-5 +0 +-4 +-2 +-2 +-3 +3 +0 +0 +5 +1 +-2 +0 +12 +-2 +-3 +-1 +11 +10 +4 +0 +-5 +-7 +-4 +-7 +-1 +3 +14 +5 +-2 +-1 +20 +-19 +-46 +16 +-23 +-43 +10 +-23 +-30 +24 +-12 +-26 +18 +-18 +-34 +21 +-7 +-29 +27 +-9 +-32 +27 +-10 +-28 +32 +-7 +-27 +27 +-7 +-27 +32 +1 +-26 +31 +-3 +-28 +34 +-6 +-30 +26 +-6 +-28 +30 +-7 +-23 +32 +-7 +-22 +35 +-4 +-26 +31 +-8 +-28 +28 +-10 +-26 +30 +-8 +-24 +36 +2 +-25 +30 +-8 +-16 +42 +2 +-25 +28 +-9 +-19 +33 +-5 +-27 +35 +-6 +-28 +26 +-11 +-30 +37 +-5 +-18 +29 +-8 +-30 +29 +-3 +-21 +28 +-10 +-27 +35 +-4 +-26 +32 +-2 +-12 +38 +-3 +-24 +43 +0 +-28 +30 +-10 +-30 +27 +-11 +-29 +43 +-1 +-13 +32 +-8 +-22 +25 +-12 +-29 +31 +-7 +-28 +30 +-9 +-29 +31 +6 +-23 +30 +-10 +-30 +30 +-6 +-15 +34 +-4 +-26 +29 +-7 +-30 +32 +-6 +-28 +19 +28 +27 +33 +19 +13 +16 +11 +24 +10 +6 +5 +6 +14 +21 +3 +16 +0 +4 +-4 +-3 +-2 +-2 +-2 +6 +-3 +-6 +2 +-1 +1 +-2 +-2 +-3 +1 +2 +-1 +-3 +2 +0 +-1 +4 +0 +-1 +15 +0 +-1 +2 +-5 +-4 +16 +1 +-2 +-4 +12 +-1 +-4 +-2 +-5 +5 +5 +-3 +-2 +-1 +-3 +-4 +-1 +0 +12 +16 +-2 +4 +-1 +3 +0 +0 +6 +-5 +-4 +-5 +-4 +-3 +-4 +4 +-1 +-2 +-2 +-1 +0 +-2 +3 +12 +0 +0 +1 +13 +9 +-3 +-4 +-6 +-2 +0 +-5 +-1 +4 +6 +-3 +-3 +7 +0 +-4 +-3 +-2 +-2 +2 +-5 +-3 +1 +0 +4 +0 +0 +1 +-2 +0 +2 +-2 +4 +1 +16 +-21 +-40 +14 +-23 +-43 +23 +-9 +-26 +32 +-9 +-30 +17 +-18 +-38 +20 +-15 +-31 +26 +-4 +-22 +25 +-8 +-30 +46 +2 +-25 +38 +-4 +-28 +24 +-12 +-22 +38 +-3 +-30 +27 +-9 +-30 +37 +-2 +-18 +26 +-12 +-31 +26 +-10 +-31 +27 +-6 +-29 +47 +2 +-25 +39 +-3 +-28 +26 +-8 +-20 +41 +-2 +-27 +29 +-10 +-24 +31 +-7 +-29 +36 +-6 +-29 +26 +-11 +-22 +27 +-11 +-30 +28 +-6 +-28 +33 +4 +-23 +29 +-9 +-29 +30 +-5 +-18 +41 +-1 +-19 +35 +-5 +-29 +27 +-10 +-29 +28 +-10 +-27 +36 +-4 +-16 +41 +-2 +-24 +28 +-9 +-29 +41 +-2 +-24 +28 +-10 +-32 +28 +-10 +-26 +30 +-2 +-19 +34 +-6 +-29 +32 +-7 +-27 +42 +2 +-24 +27 +-10 +-12 +30 +-8 +-29 +37 +-4 +-28 +30 +-10 +-30 +14 +19 +28 +23 +22 +18 +16 +9 +12 +19 +6 +3 +2 +16 +7 +-2 +1 +2 +1 +2 +2 +14 +12 +-1 +-2 +2 +3 +2 +4 +6 +-4 +-3 +-6 +5 +6 +2 +-5 +6 +-4 +-2 +-3 +3 +6 +-2 +-2 +-1 +6 +-3 +-4 +6 +-2 +8 +3 +-4 +0 +5 +-4 +2 +2 +-3 +-4 +-4 +1 +-3 +2 +-5 +0 +-1 +-4 +6 +-1 +9 +13 +8 +1 +1 +-6 +-4 +10 +16 +8 +-5 +2 +-2 +0 +8 +-2 +-6 +-5 +-4 +-2 +5 +-1 +-2 +-4 +-3 +2 +-3 +3 +0 +-3 +6 +-3 +-2 +-2 +2 +9 +5 +3 +-3 +0 +-1 +-3 +-1 +-1 +-3 +-4 +-2 +3 +11 +11 +-2 +4 +7 +2 +-4 +-9 +-6 +30 +-12 +-42 +4 +-31 +-48 +10 +-21 +-36 +25 +-13 +-32 +25 +-10 +-29 +23 +-15 +-34 +26 +-5 +-30 +26 +-11 +-26 +28 +-10 +-28 +39 +-3 +-25 +26 +-11 +-23 +29 +-7 +-27 +39 +2 +-13 +34 +-7 +-29 +25 +-2 +-19 +29 +-8 +-27 +24 +-11 +-23 +33 +-7 +-27 +29 +-4 +-18 +47 +4 +-25 +30 +-5 +-18 +25 +-12 +-30 +30 +-5 +-30 +29 +-5 +-27 +35 +-5 +-24 +29 +-8 +-15 +28 +-1 +-27 +34 +2 +-24 +35 +-6 +-27 +26 +-12 +-30 +34 +-4 +-23 +32 +-9 +-27 +33 +-6 +-28 +32 +-5 +-25 +32 +2 +-25 +29 +-10 +-26 +35 +-6 +-21 +32 +-8 +-29 +31 +-7 +-30 +34 +-6 +-14 +41 +-1 +-27 +32 +-9 +-23 +35 +-5 +-15 +28 +-9 +-28 +24 +-11 +-32 +28 +-4 +-26 +27 +-9 +-26 +28 +-10 +-15 +48 +4 +-21 +46 +2 +-27 +28 +-11 +-28 +29 +-9 +-28 +25 +-8 +-26 +40 +-3 +-25 +25 +-2 +-27 +27 +-11 +-31 +29 +-7 +-26 +26 +-11 +-29 +30 +-7 +-20 +29 +-9 +-11 +34 +-6 +-25 +30 +-7 +-14 +35 +-5 +-28 +29 +-9 +-20 +28 +-9 +-19 +28 +-9 +-28 +27 +-8 +-20 +45 +0 +-21 +36 +-5 +-23 +32 +-6 +-29 +26 +-11 +-29 +33 +-8 +-25 +36 +-3 +-21 +40 +-2 +-27 +42 +0 +-28 +26 +-12 +-25 +34 +-6 +-28 +41 +-2 +-20 +26 +-11 +-32 +36 +-6 +-29 +30 +-9 +-29 +29 +-10 +-10 +31 +-9 +-29 +28 +-9 +-27 +37 +5 +-24 +30 +-10 +-30 +39 +-3 +-24 +41 +-2 +-29 +25 +-10 +-30 +27 +-10 +-23 +35 +-3 +-27 +27 +-5 +-28 +31 +-8 +-28 +27 +-10 +-26 +29 +-8 +-28 +33 +-6 +-22 +21 +24 +38 +26 +21 +19 +16 +14 +21 +8 +2 +3 +5 +6 +5 +3 +6 +6 +3 +-1 +1 +11 +0 +2 +-3 +3 +13 +1 +-3 +-1 +7 +4 +-2 +12 +7 +-1 +-5 +0 +-4 +-1 +-4 +6 +15 +11 +-4 +7 +-1 +-6 +-6 +-6 +-7 +-5 +-3 +5 +0 +-3 +4 +2 +-3 +-2 +-4 +-2 +1 +-2 +3 +1 +4 +-3 +0 +4 +2 +3 +2 +-2 +-1 +-2 +0 +2 +-1 +-1 +7 +3 +3 +4 +-1 +13 +9 +2 +-8 +-7 +2 +0 +-5 +-2 +1 +7 +6 +-2 +1 +-3 +0 +-5 +1 +2 +-3 +-1 +1 +-3 +-1 +7 +-4 +4 +14 +11 +-1 +-6 +-6 +-1 +11 +0 +-1 +-1 +3 +10 +9 +3 +-3 +-4 +3 +-1 +-4 +-4 +-7 +3 +10 +-1 +13 +13 +0 +-7 +-5 +-4 +-6 +-2 +-6 +-4 +-3 +-3 +2 +13 +2 +-2 +1 +-4 +5 +0 +-6 +-1 +-1 +-1 +-3 +-2 +-2 +1 +0 +0 +0 +0 +1 +-1 +-2 +5 +1 +17 +1 +0 +7 +-2 +4 +-2 +-6 +-6 +-4 +-3 +1 +-2 +0 +16 +11 +1 +-4 +6 +-2 +-4 +6 +0 +-4 +1 +-1 +0 +4 +7 +-2 +0 +-4 +18 +1 +14 +-2 +2 +-1 +-7 +-5 +-4 +16 +0 +-5 +-5 +-7 +-2 +-1 +4 +3 +3 +-1 +12 +9 +6 +8 +17 +-2 +-8 +6 +5 +-5 +-2 +-8 +-5 +8 +0 +-6 +-7 +-3 +0 +-4 +11 +19 +0 +-5 +1 +6 +5 +-2 +-4 +-3 +-7 +11 +-26 +-51 +3 +-29 +-46 +11 +-21 +-34 +19 +-17 +-23 +32 +-3 +-29 +26 +-12 +-30 +23 +-10 +-28 +32 +-8 +-23 +32 +-4 +-28 +41 +-3 +-28 +26 +-12 +-32 +26 +-10 +-28 +26 +-11 +-19 +35 +-7 +-24 +30 +-7 +-28 +35 +-4 +-24 +30 +-7 +-28 +32 +-6 +-19 +28 +-8 +-26 +29 +-9 +-26 +29 +-6 +-28 +32 +-4 +-13 +35 +5 +-23 +30 +-7 +-22 +27 +-10 +-29 +44 +7 +-22 +32 +-7 +-29 +29 +-4 +-27 +30 +-9 +-25 +39 +-4 +-28 +41 +-2 +-27 +35 +-6 +-27 +36 +-5 +-27 +26 +-11 +-30 +35 +-5 +-21 +35 +-2 +-26 +33 +-4 +-27 +43 +5 +-24 +27 +-7 +-33 +30 +-2 +-28 +29 +-7 +-31 +27 +-4 +-26 +46 +2 +-15 +27 +-13 +-32 +24 +-13 +-29 +26 +-8 +-28 +29 +-9 +-27 +32 +-7 +-26 +22 +25 +24 +26 +22 +14 +13 +10 +23 +16 +6 +15 +8 +5 +0 +2 +2 +1 +0 +1 +2 +1 +-1 +4 +15 +22 +4 +1 +6 +-3 +-1 +5 +-1 +4 +-2 +-7 +-5 +-3 +0 +9 +7 +-1 +16 +0 +1 +2 +-1 +-5 +-1 +-1 +-1 +-1 +2 +2 +-4 +-2 +-1 +13 +8 +-5 +9 +16 +-3 +-6 +-6 +13 +12 +0 +-7 +0 +-8 +-3 +-6 +0 +-6 +-4 +2 +8 +-1 +-2 +-7 +3 +1 +-4 +-4 +-2 +-3 +-3 +11 +2 +-1 +14 +9 +13 +-4 +-5 +-6 +0 +-5 +-3 +-3 +0 +8 +11 +-3 +-4 +14 +-2 +-6 +-6 +-3 +11 +7 +5 +1 +7 +-6 +-8 +11 +-1 +0 +-1 +-6 +1 +-3 +0 +11 +1 +8 +-26 +-50 +5 +-29 +-36 +12 +-23 +-41 +39 +-5 +-32 +17 +-11 +-33 +21 +-15 +-33 +39 +-3 +-21 +24 +-14 +-32 +29 +-9 +-22 +28 +-10 +-26 +30 +-8 +-29 +32 +-2 +-26 +31 +-8 +-23 +32 +-8 +-26 +34 +-4 +-28 +27 +-7 +-28 +33 +-3 +-26 +32 +-7 +-18 +39 +-2 +-19 +28 +-10 +-27 +40 +-1 +-28 +45 +1 +-26 +40 +-1 +-18 +31 +-8 +-21 +36 +-5 +-30 +25 +-13 +-31 +25 +-9 +-22 +42 +-1 +-28 +35 +0 +-28 +29 +-7 +-16 +44 +0 +-25 +30 +-5 +-25 +20 +-16 +-26 +24 +-14 +-30 +41 +2 +-15 +29 +-11 +-32 +25 +-12 +-31 +40 +1 +-25 +26 +-11 +-28 +26 +-11 +-30 +37 +-2 +-18 +36 +-4 +-29 +33 +-7 +-28 +29 +-9 +-27 +44 +2 +-26 +40 +-3 +-25 +26 +-11 +-14 +30 +-9 +-30 +19 +34 +19 +23 +14 +27 +22 +9 +18 +6 +2 +13 +8 +0 +13 +14 +1 +12 +1 +-5 +-6 +4 +-3 +1 +-4 +-5 +-4 +3 +-2 +-2 +0 +-2 +17 +2 +-3 +-7 +-2 +0 +5 +12 +1 +-2 +-1 +-5 +-4 +-3 +-1 +-1 +-1 +0 +13 +-1 +2 +-1 +15 +8 +-5 +6 +1 +-3 +-2 +12 +1 +-4 +-1 +-2 +2 +-3 +11 +8 +-5 +-3 +-5 +1 +-6 +-4 +-4 +-4 +-3 +7 +13 +-1 +4 +10 +-4 +1 +-4 +3 +7 +0 +11 +4 +-6 +-6 +-2 +-4 +-3 +9 +-4 +0 +10 +11 +-3 +-2 +-8 +-2 +0 +1 +6 +1 +-2 +6 +5 +0 +-8 +-8 +-7 +1 +-5 +-3 +13 +3 +-3 +-3 +-4 +-3 +5 +8 +16 +-23 +-46 +5 +-30 +-38 +26 +-14 +-39 +16 +-19 +-38 +20 +-13 +-32 +23 +-12 +-31 +26 +-1 +-23 +28 +-9 +-27 +41 +-2 +-19 +29 +-7 +-28 +36 +0 +-26 +30 +-9 +-22 +38 +-3 +-23 +42 +-1 +-28 +34 +-6 +-30 +24 +-12 +-22 +43 +-1 +-26 +25 +-11 +26 +-5 +-30 +33 +-1 +-25 +26 +-12 +-32 +25 +-12 +-24 +25 +-12 +-24 +38 +-3 +-26 +33 +-6 +-27 +33 +-5 +-29 +27 +-11 +-25 +37 +-3 +-26 +28 +-10 +-27 +35 +-1 +-26 +28 +-8 +-25 +35 +-4 +-12 +31 +-9 +-27 +27 +-9 +-18 +45 +0 +-23 +27 +-11 +-28 +28 +-2 +-25 +30 +-4 +-28 +37 +-5 +-14 +28 +-11 +-31 +33 +-7 +-18 +36 +-5 +-21 +29 +-10 +-29 +37 +-4 +-25 +30 +-2 +-22 +25 +-10 +-19 +28 +-11 +-23 +25 +-12 +-29 +23 +26 +21 +34 +33 +23 +18 +9 +13 +3 +6 +3 +6 +2 +4 +0 +5 +12 +2 +-2 +0 +-1 +5 +2 +-1 +7 +3 +3 +1 +7 +2 +-4 +-3 +-4 +-3 +2 +7 +0 +7 +13 +9 +2 +12 +-4 +-2 +12 +-3 +-4 +-5 +-5 +-4 +-3 +11 +-1 +-6 +-5 +9 +6 +4 +0 +-7 +-6 +-4 +-3 +4 +-5 +11 +15 +-1 +0 +-1 +-1 +7 +-4 +-5 +-3 +-6 +-1 +12 +3 +-6 +-4 +6 +-5 +-4 +-4 +2 +-3 +-2 +12 +-3 +-6 +0 +-5 +-2 +-4 +-2 +-1 +11 +-1 +6 +1 +-1 +-4 +3 +17 +2 +2 +-4 +12 +1 +7 +7 +-5 +-2 +-3 +-4 +4 +-1 +-7 +-2 +-2 +13 +1 +2 +0 +-1 +0 +7 +-30 +-46 +7 +-26 +-42 +14 +-21 +-25 +23 +-16 +-37 +22 +-14 +-33 +33 +-5 +-29 +32 +-8 +-22 +23 +-10 +-24 +29 +1 +-25 +26 +-10 +-19 +35 +-4 +-29 +31 +-8 +-30 +28 +-10 +-16 +45 +6 +-23 +23 +-12 +-29 +27 +-10 +-30 +36 +-6 +-23 +28 +-9 +-12 +31 +-8 +-29 +30 +4 +-24 +31 +-7 +-16 +38 +-3 +-28 +25 +-9 +-17 +31 +-8 +-29 +28 +-11 +-30 +28 +-9 +-21 +34 +-5 +-19 +29 +-5 +-27 +27 +-10 +-24 +31 +0 +-26 +34 +-6 +-28 +30 +-9 +-21 +32 +-1 +-24 +34 +-5 +-28 +31 +-8 +-29 +43 +1 +-26 +28 +-10 +-23 +39 +-3 +-22 +25 +-10 +-29 +37 +-4 +-29 +41 +1 +-27 +25 +-8 +-23 +30 +-8 +-29 +28 +-9 +-24 +34 +-6 +-27 +39 +-2 +-27 +31 +-9 +-28 +31 +-7 +-18 +33 +33 +20 +19 +24 +33 +13 +5 +20 +17 +1 +7 +10 +-1 +-3 +-3 +-2 +-2 +3 +0 +4 +-1 +-2 +0 +-1 +-1 +16 +11 +-1 +-4 +-3 +4 +8 +6 +-4 +-4 +1 +-7 +7 +-1 +-4 +0 +-5 +-2 +1 +3 +15 +6 +7 +-2 +0 +-2 +-5 +-2 +-3 +1 +-3 +-4 +-3 +2 +13 +9 +2 +0 +-3 +-1 +3 +15 +0 +-1 +-4 +10 +-3 +-5 +-4 +9 +12 +-1 +-7 +-4 +-5 +-4 +-5 +8 +10 +0 +6 +-1 +-4 +-5 +-2 +12 +0 +-4 +0 +-3 +13 +10 +3 +-4 +-1 +7 +6 +-7 +-7 +-4 +1 +-2 +-4 +-7 +0 +3 +6 +-3 +9 +6 +1 +-2 +-3 +-2 +-4 +-6 +1 +-3 +13 +0 +-4 +3 +-2 +-36 +6 +-29 +-44 +13 +-15 +-26 +33 +-9 +-34 +18 +-17 +-37 +26 +-13 +-25 +25 +-11 +-21 +47 +2 +-23 +30 +-9 +-20 +27 +-13 +-25 +28 +-11 +-30 +24 +-8 +-28 +32 +-7 +-30 +37 +-5 +-28 +29 +-5 +-29 +28 +-8 +-23 +28 +-8 +-18 +35 +-6 +-23 +32 +-6 +-24 +27 +-11 +-29 +45 +1 +-24 +28 +-10 +-29 +33 +-7 +-29 +34 +-3 +-23 +25 +-8 +-23 +27 +-11 +-20 +34 +-1 +-17 +29 +-6 +-29 +32 +-6 +-30 +28 +-8 +-29 +43 +1 +-12 +33 +-7 +-16 +44 +1 +-27 +28 +-7 +-31 +28 +-10 +-32 +26 +-5 +-28 +25 +-10 +-29 +35 +2 +-21 +27 +-9 +-27 +28 +-10 +-28 +45 +2 +-18 +45 +0 +-27 +25 +-12 +-19 +28 +-11 +-25 +27 +-11 +-23 +42 +-2 +-27 +26 +-10 +-28 +27 +-7 +-10 +30 +25 +11 +20 +18 +12 +10 +10 +15 +9 +9 +21 +24 +5 +5 +7 +1 +-1 +1 +0 +1 +7 +-1 +-1 +16 +2 +7 +-4 +-3 +0 +2 +1 +-5 +-5 +-5 +1 +3 +1 +4 +2 +-1 +-3 +1 +-1 +-2 +1 +-3 +-1 +1 +9 +-2 +-2 +-1 +6 +5 +8 +9 +9 +5 +2 +-6 +-5 +1 +8 +0 +-2 +-7 +8 +9 +-3 +1 +-1 +-5 +1 +-2 +-4 +-5 +-2 +1 +1 +4 +-3 +-1 +-1 +8 +0 +4 +13 +2 +-4 +-6 +4 +4 +-2 +-4 +-3 +-3 +0 From e8ff188868fff6b591fbd31f411dac4c9f16fa8c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 17:03:23 +0200 Subject: [PATCH 0244/1034] added a test for cotag demodulation via data commands --- CHANGELOG.md | 1 + tools/pm3_tests.sh | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f39a12af4..96cabb6ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added new test for cotag demod using data commands in pm3_test.sh (@iceman1001) - Added new sample trace file for cotag w fc/272. Thanks s1acky! (@iceman1001) - Fixed `hf legic eload` - now it doesn't crash client (@doegox) - Changed `lf hitag *` - rework client side (@doegox) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index ad50121f5..57d502aba 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -384,13 +384,15 @@ while true; do if ! CheckExecute "jooki encode test" "$CLIENTBIN -c 'hf jooki encode -t'" "04 28 F4 DA F0 4A 81 \( ok \)"; then break; fi if ! CheckExecute "trace load/list 14a" "$CLIENTBIN -c 'trace load -f traces/hf_14a_mfu.trace; trace list -1 -t 14a;'" "READBLOCK\(8\)"; then break; fi if ! CheckExecute "trace load/list x" "$CLIENTBIN -c 'trace load -f traces/hf_14a_mfu.trace; trace list -x1 -t 14a;'" "0.0101840425"; then break; fi - if ! CheckExecute "nfc decode test - oob" "$CLIENTBIN -c 'nfc decode -d DA2010016170706C69636174696F6E2F766E642E626C7565746F6F74682E65702E6F6F62301000649201B96DFB0709466C65782032'" "Flex 2"; then break; fi - if ! CheckExecute "nfc decode test - device info" "$CLIENTBIN -c 'nfc decode -d d1025744690004536f6e79010752432d533338300220426c61636b204e46432052656164657220636f6e6e656374656420746f2050430310123e4567e89b12d3a45642665544000004124e464320506f72742d3130302076312e3032'" "NFC Port-100 v1.02"; then break; fi - if ! CheckExecute "nfc decode test - vcard" "$CLIENTBIN -c 'nfc decode -d d20ca3746578742f782d7643617264424547494e3a56434152440a56455253494f4e3a332e300a4e3a43687269733b4963656d616e3b3b3b0a464e3a476f7468656e627572670a5245563a323032312d30362d32345432303a31353a30385a0a6974656d322e582d4142444154453b747970653d707265663a323032302d30362d32340a4954454d322e582d41424c4142454c3a5f24213c416e6e69766572736172793e21245f0a454e443a56434152440a'" "END:VCARD"; then break; fi - if ! CheckExecute "nfc decode test - apple wallet" "$CLIENTBIN -c 'nfc decode -d 031AD10116550077616C6C65743A2F2F61637469766174652F6E6663FE'" "activate/nfc"; then break; fi - if ! CheckExecute "nfc decode test - signature" "$CLIENTBIN -c 'nfc decode -d 03FF010194113870696C65742E65653A656B616172743A3266195F26063132303832325904202020205F28033233335F2701316E1B5A13333038363439303039303030323636343030355304EBF2CE704103000000AC536967010200803A2448FCA7D354A654A81BD021150D1A152D1DF4D7A55D2B771F12F094EAB6E5E10F2617A2F8DAD4FD38AFF8EA39B71C19BD42618CDA86EE7E144636C8E0E7CFC4096E19C3680E09C78A0CDBC05DA2D698E551D5D709717655E56FE3676880B897D2C70DF5F06ECE07C71435255144F8EE41AF110E7B180DA0E6C22FB8FDEF61800025687474703A2F2F70696C65742E65652F6372742F33303836343930302D303030312E637274FE'" "30864900-0001.crt"; then break; fi + if ! CheckExecute "nfc decode test - oob" "$CLIENTBIN -c 'nfc decode -d DA2010016170706C69636174696F6E2F766E642E626C7565746F6F74682E65702E6F6F62301000649201B96DFB0709466C65782032'" "Flex 2"; then break; fi + if ! CheckExecute "nfc decode test - device info" "$CLIENTBIN -c 'nfc decode -d d1025744690004536f6e79010752432d533338300220426c61636b204e46432052656164657220636f6e6e656374656420746f2050430310123e4567e89b12d3a45642665544000004124e464320506f72742d3130302076312e3032'" "NFC Port-100 v1.02"; then break; fi + if ! CheckExecute "nfc decode test - vcard" "$CLIENTBIN -c 'nfc decode -d d20ca3746578742f782d7643617264424547494e3a56434152440a56455253494f4e3a332e300a4e3a43687269733b4963656d616e3b3b3b0a464e3a476f7468656e627572670a5245563a323032312d30362d32345432303a31353a30385a0a6974656d322e582d4142444154453b747970653d707265663a323032302d30362d32340a4954454d322e582d41424c4142454c3a5f24213c416e6e69766572736172793e21245f0a454e443a56434152440a'" "END:VCARD"; then break; fi + if ! CheckExecute "nfc decode test - apple wallet" "$CLIENTBIN -c 'nfc decode -d 031AD10116550077616C6C65743A2F2F61637469766174652F6E6663FE'" "activate/nfc"; then break; fi + if ! CheckExecute "nfc decode test - signature" "$CLIENTBIN -c 'nfc decode -d 03FF010194113870696C65742E65653A656B616172743A3266195F26063132303832325904202020205F28033233335F2701316E1B5A13333038363439303039303030323636343030355304EBF2CE704103000000AC536967010200803A2448FCA7D354A654A81BD021150D1A152D1DF4D7A55D2B771F12F094EAB6E5E10F2617A2F8DAD4FD38AFF8EA39B71C19BD42618CDA86EE7E144636C8E0E7CFC4096E19C3680E09C78A0CDBC05DA2D698E551D5D709717655E56FE3676880B897D2C70DF5F06ECE07C71435255144F8EE41AF110E7B180DA0E6C22FB8FDEF61800025687474703A2F2F70696C65742E65652F6372742F33303836343930302D303030312E637274FE'" "30864900-0001.crt"; then break; fi echo -e "\n${C_BLUE}Testing LF:${C_NC}" + if ! CheckExecute "lf cotag demod test" "$CLIENTBIN -c 'data load -f traces/lf_cotag_220_8331.pm3; data norm; data cthreshold -u 50 -d -20; data envelope; data raw --ar -c 272; lf cotag demod'" \ + "COTAG Found: FC 220, CN: 8331 Raw: FFB841170363FFFE00001E7F00000000"; then break; fi if ! CheckExecute "lf AWID test" "$CLIENTBIN -c 'data load -f traces/lf_AWID-15-259.pm3;lf search -1'" "AWID ID found"; then break; fi if ! CheckExecute "lf EM410x test" "$CLIENTBIN -c 'data load -f traces/lf_EM4102-1.pm3;lf search -1'" "EM410x ID found"; then break; fi if ! CheckExecute "lf EM4x05 test" "$CLIENTBIN -c 'data load -f traces/lf_EM4x05.pm3;lf search -1'" "FDX-B ID found"; then break; fi @@ -505,7 +507,7 @@ while true; do if ! CheckExecute slow "hf iclass loclass long test" "$CLIENTBIN -c 'hf iclass loclass --long'" "verified \( ok \)"; then break; fi if ! CheckExecute slow "emv long test" "$CLIENTBIN -c 'emv test -l'" "Test\(s\) \[ ok"; then break; fi if ! CheckExecute "hf iclass lookup test" "$CLIENTBIN -c 'hf iclass lookup --csn 9655a400f8ff12e0 --epurse f0ffffffffffffff --macs 0000000089cb984b -f $DICPATH/iclass_default_keys.dic'" \ - "valid key AE A6 84 A6 DA B2 32 78"; then break; fi + dat "valid key AE A6 84 A6 DA B2 32 78"; then break; fi if ! CheckExecute "hf iclass loclass test" "$CLIENTBIN -c 'hf iclass loclass --test'" "key diversification \( ok \)"; then break; fi if ! CheckExecute "emv test" "$CLIENTBIN -c 'emv test'" "Test\(s\) \[ ok"; then break; fi if ! CheckExecute "hf cipurse test" "$CLIENTBIN -c 'hf cipurse test'" "Tests \[ ok"; then break; fi From b277e667c9b9dd267b374ecd9ebd02bec6a5d871 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 17:04:21 +0200 Subject: [PATCH 0245/1034] text --- client/src/cmddata.c | 18 +++++++++--------- client/src/cmdlfcotag.c | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 0ac3c0f4e..9486402d1 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -440,7 +440,7 @@ int ASKDemod_ext(int clk, int invert, int maxErr, size_t maxlen, bool amplify, b clk /= 2; } if (errCnt < 0 || bitlen < 16) { //if fatal error (or -1) - PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) No data found errors:%d, %s bitlen:%zu, clock:%d" + PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) No data found errors:%d, %s bitlen:%zu, clock:%i" , errCnt , (invert) ? "inverted," : "" , bitlen @@ -451,7 +451,7 @@ int ASKDemod_ext(int clk, int invert, int maxErr, size_t maxlen, bool amplify, b } if (errCnt > maxErr) { - PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) Too many errors found, errors:%d, bits:%zu, clock:%d" + PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) Too many errors found, errors:%d, bits:%zu, clock:%i" , errCnt , bitlen , clk @@ -461,7 +461,7 @@ int ASKDemod_ext(int clk, int invert, int maxErr, size_t maxlen, bool amplify, b } if (verbose) { - PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) using clock:%d, %sbits found:%zu, start index %d" + PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) using clock:%i, %sbits found:%zu, start index %d" , clk , (invert) ? "inverted, " : "" , bitlen @@ -475,14 +475,14 @@ int ASKDemod_ext(int clk, int invert, int maxErr, size_t maxlen, bool amplify, b if (verbose) { if (errCnt > 0) - PrintAndLogEx(DEBUG, "# Errors during demoding (shown as 7 in bit stream): %d", errCnt); + PrintAndLogEx(DEBUG, "# Errors during demoding (shown as 7 in bit stream)... " _RED_("%d"), errCnt); if (askType) { - PrintAndLogEx(SUCCESS, _YELLOW_("ASK/Manchester") " - clock %d - decoded bitstream", clk); - PrintAndLogEx(INFO, "---------------------------------------------"); + PrintAndLogEx(SUCCESS, _YELLOW_("ASK/Manchester") " - clock " _YELLOW_("%i") " - decoded bitstream", clk); + PrintAndLogEx(INFO, "-----------------------------------------------"); } else { - PrintAndLogEx(SUCCESS, _YELLOW_("ASK/Raw") " - clock %d - decoded bitstream", clk); - PrintAndLogEx(INFO, "--------------------------------------"); + PrintAndLogEx(SUCCESS, _YELLOW_("ASK/Raw") " - clock " _YELLOW_("%i") " - decoded bitstream", clk); + PrintAndLogEx(INFO, "----------------------------------------"); } printDemodBuff(0, false, false, false); @@ -1369,7 +1369,7 @@ int NRZrawDemod(int clk, int invert, int maxErr, bool verbose) { if (errCnt > 0 && (verbose || g_debugMode)) PrintAndLogEx(DEBUG, "DEBUG: (NRZrawDemod) Errors during Demoding (shown as 7 in bit stream): %d", errCnt); if (verbose || g_debugMode) { - PrintAndLogEx(NORMAL, "NRZ demoded bitstream:"); + PrintAndLogEx(SUCCESS, "NRZ demoded bitstream:"); // Now output the bitstream to the scrollback by line of 16 bits printDemodBuff(0, false, invert, false); } diff --git a/client/src/cmdlfcotag.c b/client/src/cmdlfcotag.c index 4a3a5f6e6..8161ceacc 100644 --- a/client/src/cmdlfcotag.c +++ b/client/src/cmdlfcotag.c @@ -62,7 +62,7 @@ int demodCOTAG(bool verbose) { 0 1001 1100 1100 0001 1000 0101 0000 0000 100001010000000001111011100000011010000010000000000000000000000000000000000000000000000000000000100111001100000110000101000 1001 1100 1100 0001 10000101 */ - PrintAndLogEx(SUCCESS, "COTAG Found: FC %u, CN: %u Raw: %08X%08X%08X%08X", fc, cn, raw1, raw2, raw3, raw4); + PrintAndLogEx(SUCCESS, "COTAG Found: FC " _GREEN_("%u")", CN: " _GREEN_("%u")" Raw: %08X%08X%08X%08X", fc, cn, raw1, raw2, raw3, raw4); return PM3_SUCCESS; } From c01c0427bb3e8deaee2d518f55da622ac340e822 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 17:05:18 +0200 Subject: [PATCH 0246/1034] forgot the clock changes. --- common/lfdemod.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/common/lfdemod.c b/common/lfdemod.c index 42ac2bcc0..5e2f1fa54 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -915,11 +915,11 @@ int DetectStrongNRZClk(const uint8_t *dest, size_t size, int peak, int low, bool // detect nrz clock by reading #peaks vs no peaks(or errors) int DetectNRZClock(uint8_t *dest, size_t size, int clock, size_t *clockStartIdx) { size_t i = 0; - uint8_t clk[] = {8, 16, 32, 40, 50, 64, 100, 128, 255}; + uint16_t clk[] = {8, 16, 32, 40, 50, 64, 100, 128, 255, 272, 384}; size_t loopCnt = 4096; //don't need to loop through entire array... //if we already have a valid clock quit - for (; i < 8; ++i) + for (; i < ARRAYLEN(clk); ++i) if (clk[i] == clock) return clock; if (size < 20) return 0; @@ -946,7 +946,7 @@ int DetectNRZClock(uint8_t *dest, size_t size, int clock, size_t *clockStartIdx) uint8_t tol = 0; uint16_t smplCnt = 0; int16_t peakcnt = 0; - int16_t peaksdet[] = {0, 0, 0, 0, 0, 0, 0, 0}; + int16_t peaksdet[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; uint16_t minPeak = 255; bool firstpeak = true; //test for large clipped waves - ignore first peak @@ -969,10 +969,10 @@ int DetectNRZClock(uint8_t *dest, size_t size, int clock, size_t *clockStartIdx) bool errBitHigh = 0, bitHigh = 0, lastPeakHigh = 0; uint8_t ignoreCnt = 0, ignoreWindow = 4; int lastBit = 0; - size_t bestStart[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; + size_t bestStart[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; peakcnt = 0; //test each valid clock from smallest to greatest to see which lines up - for (clkCnt = 0; clkCnt < 8; ++clkCnt) { + for (clkCnt = 0; clkCnt < ARRAYLEN(bestStart); ++clkCnt) { //ignore clocks smaller than smallest peak if (clk[clkCnt] < minPeak - (clk[clkCnt] / 4)) continue; //try lining up the peaks by moving starting point (try first 256) @@ -1025,7 +1025,7 @@ int DetectNRZClock(uint8_t *dest, size_t size, int clock, size_t *clockStartIdx) } uint8_t best = 0; - for (int m = 7; m > 0; m--) { + for (int m = ARRAYLEN(peaksdet); m > 0; m--) { if ((peaksdet[m] >= (peaksdet[best] - 1)) && (peaksdet[m] <= peaksdet[best] + 1) && lowestTransition) { if (clk[m] > (lowestTransition - (clk[m] / 8)) && clk[m] < (lowestTransition + (clk[m] / 8))) { best = m; From a918dc772ef8a3de4ba760785b43f7093645b813 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 17:12:14 +0200 Subject: [PATCH 0247/1034] updated to match --- doc/cheatsheet.md | 51 +++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/doc/cheatsheet.md b/doc/cheatsheet.md index 22e47b3f1..a859f4392 100644 --- a/doc/cheatsheet.md +++ b/doc/cheatsheet.md @@ -514,24 +514,22 @@ Read Hitag information pm3 --> lf hitag info ``` -Act as Hitag reader +Read Hitag memory +Crypto mode key format: ISK high + ISK low ``` Options --- - --01 HitagS, read all pages, challenge mode - --02 HitagS, read all pages, crypto mode. Set key=0 for no auth - - --21 Hitag2, read all pages, password mode. def 4D494B52 (MIKR) - --22 Hitag2, read all pages, challenge mode - --23 Hitag2, read all pages, crypto mode. Key ISK high + ISK low. def 4F4E4D494B52 (ONMIKR) - --25 Hitag2, test recorded authentications (replay?) - --26 Hitag2, read UID --k, --key key, 4 or 6 hex bytes - --nrar nonce / answer reader, 8 hex bytes + -h, --help This help + -s, --hts Hitag S + -2, --ht2 Hitag 2 + --pwd password mode + --nrar nonce / answer writer, 8 hex bytes + --crypto crypto mode + -k, --key key, 4 or 6 hex bytes -pm3 --> lf hitag --26 -pm3 --> lf hitag --21 -k 4D494B52 -pm3 --> lf hitag reader --23 -k 4F4E4D494B52 +pm3 --> lf hitag read --ht2 +pm3 --> lf hitag read --ht2 -k 4D494B52 +pm3 --> lf hitag read --ht2 -k 4F4E4D494B52 ``` Sniff Hitag traffic @@ -545,26 +543,27 @@ Simulate Hitag2 pm3 --> lf hitag sim -2 ``` -Write to Hitag block +Write a page in Hitag memory +Crypto mode key format: ISK high + ISK low ``` Options --- - --03 HitagS, write page, challenge mode - --04 HitagS, write page, crypto mode. Set key=0 for no auth + -h, --help This help + -s, --hts Hitag S + -2, --ht2 Hitag 2 + --pwd password mode + --nrar nonce / answer writer, 8 hex bytes + --crypto crypto mode + -k, --key key, 4 or 6 hex bytes + -p, --page page address to write to + -d, --data data, 4 hex bytes - --24 Hitag2, write page, crypto mode. - --27 Hitag2, write page, password mode --p, --page page address to write to --d, --data data, 4 hex bytes --k, --key key, 4 or 6 hex bytes - --nrar nonce / answer writer, 8 hex bytes - -pm3 --> lf hitag writer --24 -k 499602D2 -p 1 -d 00000000 +pm3 --> lf hitag wrbl --ht2 -k 499602D2 -p 1 -d 00000000 ``` Simulate Hitag2 sequence ``` -pm3 --> lf hitag reader --21 -k 56713368 +pm3 --> lf hitag read --ht2 -k 56713368 pm3 --> lf hitag sim -2 ``` From c1416ba256d83af631144bd71f57907f5aa08289 Mon Sep 17 00:00:00 2001 From: DidierA <1620015+DidierA@users.noreply.github.com> Date: Fri, 21 Jul 2023 17:25:49 +0200 Subject: [PATCH 0248/1034] Adds MAC, UNMACed to messages, and code factorisation --- client/src/cmdhflist.c | 167 ++++++++++++++++++++++------------------- client/src/cmdhflist.h | 3 + 2 files changed, 91 insertions(+), 79 deletions(-) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index 2001c4370..663a3450d 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -273,7 +273,7 @@ int applyIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool i MifareAuthState = masNone; break; case ISO14443A_CMD_RATS: - snprintf(exp, size, "RATS - FSDI=0x%x, CID=0x%x", (cmd[1] & 0xF0) >> 4, (cmd[1] & 0x0F) ); + snprintf(exp, size, "RATS - FSDI=%x, CID=%x", (cmd[1] & 0xF0) >> 4, (cmd[1] & 0x0F) ); break; /* Actually, PPSS is Dx case ISO14443A_CMD_PPS: @@ -429,7 +429,7 @@ int applyIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool i default: if ( (cmd[0] & 0xF0) == 0xD0 && ( cmdsize == 4 || cmdsize == 5 )) { - snprintf(exp, size, "PPSS - CID=0x%x", cmd[0] & 0x0F) ; + snprintf(exp, size, "PPS - CID=%x", cmd[0] & 0x0F) ; } else { return PM3_ESOFT; } @@ -1202,7 +1202,10 @@ void annotateMfDesfire(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { } } } -// codes for which no data is interpreted, returns the message to print. + +// MIFARE Plus + +// returns the message to print for a given opcode. const char *mfpGetAnnotationForCode(uint8_t code) { struct mfp_code_msg { uint8_t code; @@ -1222,6 +1225,19 @@ const char *mfpGetAnnotationForCode(uint8_t code) { { MFDES_PREPARE_PC, "PREPARE PROXIMITY CHECK"}, { MFDES_PROXIMITY_CHECK, "PROXIMITY CHECK"}, { MFDES_VERIFY_PC, "VERIFY PROXIMITY CHECK"}, + { MFDES_COMMIT_READER_ID, "COMMIT READER ID"}, + { MFP_INCREMENTNOMAC, "INCREMENT"}, + { MFP_INCREMENTMAC, "INCREMENT"}, + { MFP_DECREMENTMAC, "DECREMENT"}, + { MFP_DECREMENTNOMAC, "DECREMENT"}, + { MFP_TRANSFERNOMAC, "TRANSFER"}, + { MFP_TRANSFERMAC, "TRANSFER"}, + { MFP_INCREMENTTRANSFERNOMAC, "INCREMENT, TRANSFER"}, + { MFP_INCREMENTTRANSFERMAC, "INCREMENT, TRANSFER"}, + { MFP_DECREMENTTRANSFERNOMAC, "DECREMENT, TRANSFER"}, + { MFP_DECREMENTTRANSFERMAC, "DECREMENT, TRANSFER"}, + { MFP_RESTORENOMAC, "RESTORE"}, + { MFP_RESTOREMAC, "RESTORE"}, { 0, NULL} } ; @@ -1233,7 +1249,44 @@ const char *mfpGetAnnotationForCode(uint8_t code) { return NULL ; } -// MIFARE Plus +const char *mfpGetEncryptedForCode(uint8_t code){ + /* + encrypted |plain : bit 1 + 30 A0 0000 32 A2 0010 + 31 A1 0001 33 A3 0011 + 34 0100 36 0110 + 35 0101 37 0111 + */ + if ((code & 0x02) == 2) { + return "PLAIN" ; + } + return "ENCRYPTED" ; +} + +/* + response |command + NOMAC MAC UnMACed MACed + 30 31 34 30,A0 + 32 33 35 31,A1 + A0 A1 36 32,A2 + A2 A3 37 33,A3 + bit 0 is response: NOMAC if 0, MAC if 1 + bit 2 is command: UNMACed if 1, MACed if 0 +*/ +const char *mfpGetResponseMacedForCode(uint8_t code) { + if (( code & 0x01) == 0x00) { + return "NoMAC" ; + } + return "MAC" ; +} + +const char *mfpGetCommandMacedForCode(uint8_t code) { + if (( code & 0x04) == 0x04) { + return "UnMACed" ; + } + return "MACed" ; +} + void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { // If we are in Mifare Classic Authenticated mode, all the work has already be done elsewhere @@ -1269,8 +1322,8 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { if (cmdsize > (data - cmd)) { data_size = cmdsize - (data - cmd); } - - switch (cmd[pos]) { + uint8_t opcode=cmd[pos] ; + switch (opcode) { case MFP_AUTHENTICATEFIRST: case MFP_AUTHENTICATEFIRST_VARIANT: if (data_size > 1) { @@ -1295,119 +1348,75 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { case MFP_READENCRYPTEDMAC_MACED: case MFP_READENCRYPTEDNOMAC_UNMACED: case MFP_READENCRYPTEDMAC_UNMACED: - if (data_size > 2) { - uint16_t uBlockNum = MemLeToUint2byte(data) ; - uint8_t uQty = data[2] ; - if (uQty != 1) { - snprintf(exp, size, "READ ENCRYPTED(%u-%u)", uBlockNum, uBlockNum+uQty-1); - } else { - snprintf(exp, size, "READ ENCRYPTED(%u)", uBlockNum); - } - } else { - snprintf(exp, size, "READ ENCRYPTED ?"); - } - break; - case MFP_READPLAINNOMAC_MACED: case MFP_READPLAINMAC_MACED: case MFP_READPLAINNOMAC_UNMACED: - case MFP_READPLAINMAC_UNMACED: + case MFP_READPLAINMAC_UNMACED: { + const char *encrypted = mfpGetEncryptedForCode(opcode) ; + const char *responseMaced = mfpGetResponseMacedForCode(opcode) ; + const char *commandMaced = mfpGetCommandMacedForCode(opcode) ; + if (data_size > 2) { uint16_t uBlockNum = MemLeToUint2byte(data) ; uint8_t uQty = data[2] ; if (uQty != 1) { - snprintf(exp, size, "READ PLAIN(%u-%u)", uBlockNum, uBlockNum+uQty-1); + snprintf(exp, size, "READ %s(%u-%u) %s_%s", encrypted, uBlockNum, uBlockNum+uQty-1, responseMaced, commandMaced); } else { - snprintf(exp, size, "READ PLAIN(%u)", uBlockNum); + snprintf(exp, size, "READ %s(%u) %s_%s", encrypted, uBlockNum, responseMaced, commandMaced); } } else { - snprintf(exp, size, "READ PLAIN ?"); + snprintf(exp, size, "READ %s %s_%s ?", encrypted, responseMaced, commandMaced); } break; - + } + case MFP_WRITEPLAINNOMAC : case MFP_WRITEPLAINMAC : - if (data_size > 1) { - uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "WRITE PLAIN(%u)", uBlockNum); - } else { - snprintf(exp, size, "WRITE PLAIN ?"); - } - break; - case MFP_WRITEENCRYPTEDNOMAC: - case MFP_WRITEENCRYPTEDMAC : + case MFP_WRITEENCRYPTEDMAC :{ + const char *encrypted = mfpGetEncryptedForCode(opcode) ; + const char *responseMaced = mfpGetResponseMacedForCode(opcode) ; + if (data_size > 1) { uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "WRITE ENCRYPTED(%u)", uBlockNum); + snprintf(exp, size, "WRITE %s(%u) %s", encrypted, uBlockNum, responseMaced); } else { - snprintf(exp, size, "WRITE ENCRYPTED ?"); + snprintf(exp, size, "WRITE %s %s ?", encrypted, responseMaced); } break; + } case MFP_INCREMENTNOMAC : case MFP_INCREMENTMAC : - if (data_size > 1) { - uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "INCREMENT(%u)", uBlockNum); - } else { - snprintf(exp, size, "INCREMENT ?"); - } - break; - case MFP_DECREMENTNOMAC : case MFP_DECREMENTMAC : - if (data_size > 1) { - uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "DECREMENT(%u)", uBlockNum); - } else { - snprintf(exp, size, "DECREMENT ?"); - } - break; - case MFP_TRANSFERNOMAC : case MFP_TRANSFERMAC : - if (data_size > 1) { - uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "TRANSFER(%u)", uBlockNum); - } else { - snprintf(exp, size, "TRANSFER ?"); - } - break; - case MFP_INCREMENTTRANSFERNOMAC: case MFP_INCREMENTTRANSFERMAC : - if (data_size > 1) { - uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "INCREMENT, TRANSFER(%u)", uBlockNum); - } else { - snprintf(exp, size, "INCREMENT, TRANSFER ?"); - } - break; - case MFP_DECREMENTTRANSFERNOMAC: case MFP_DECREMENTTRANSFERMAC : - if (data_size > 1) { - uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "DECREMENT, TRANSFER(%u)", uBlockNum); - } else { - snprintf(exp, size, "DECREMENT, TRANSFER ?"); - } - break; - case MFP_RESTORENOMAC : - case MFP_RESTOREMAC : + case MFP_RESTOREMAC :{ + const char *responseMaced = mfpGetResponseMacedForCode(opcode) ; + const char *annotation = mfpGetAnnotationForCode(opcode) ; + if (annotation == NULL) { + //should not happen outside of default case: it means an entry is mising in mfpGetAnnotationForCode() + annotation="?? MISSING OPCODE" ; + } + if (data_size > 1) { uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "RESTORE(%u)", uBlockNum); + snprintf(exp, size, "%s(%u) %s", annotation, uBlockNum, responseMaced); } else { - snprintf(exp, size, "RESTORE ?"); + snprintf(exp, size, "%s %s ?", annotation, responseMaced); } break; + } default: { // Messages for commands that do not need args are treated here - const char *annotation = mfpGetAnnotationForCode(cmd[pos]) ; + const char *annotation = mfpGetAnnotationForCode(opcode) ; if (annotation != NULL) { snprintf(exp, size, "%s", annotation) ; } else { diff --git a/client/src/cmdhflist.h b/client/src/cmdhflist.h index 7c7e09ffb..ab544a86f 100644 --- a/client/src/cmdhflist.h +++ b/client/src/cmdhflist.h @@ -57,6 +57,9 @@ void annotateIso14443b(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); void annotateIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool is_response); void annotateMfDesfire(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); const char *mfpGetAnnotationForCode(uint8_t code); +const char *mfpGetEncryptedForCode(uint8_t code); +const char *mfpGetResponseMacedForCode(uint8_t code); +const char *mfpGetCommandMacedForCode(uint8_t code); void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); void annotateMifare(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, const uint8_t *parity, uint8_t paritysize, bool isResponse); From cd2394b472a0df4ed66f2755aa8ab6de29d1067d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 17:27:03 +0200 Subject: [PATCH 0249/1034] fix --- tools/pm3_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 57d502aba..68d522ed6 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -507,7 +507,7 @@ while true; do if ! CheckExecute slow "hf iclass loclass long test" "$CLIENTBIN -c 'hf iclass loclass --long'" "verified \( ok \)"; then break; fi if ! CheckExecute slow "emv long test" "$CLIENTBIN -c 'emv test -l'" "Test\(s\) \[ ok"; then break; fi if ! CheckExecute "hf iclass lookup test" "$CLIENTBIN -c 'hf iclass lookup --csn 9655a400f8ff12e0 --epurse f0ffffffffffffff --macs 0000000089cb984b -f $DICPATH/iclass_default_keys.dic'" \ - dat "valid key AE A6 84 A6 DA B2 32 78"; then break; fi + "valid key AE A6 84 A6 DA B2 32 78"; then break; fi if ! CheckExecute "hf iclass loclass test" "$CLIENTBIN -c 'hf iclass loclass --test'" "key diversification \( ok \)"; then break; fi if ! CheckExecute "emv test" "$CLIENTBIN -c 'emv test'" "Test\(s\) \[ ok"; then break; fi if ! CheckExecute "hf cipurse test" "$CLIENTBIN -c 'hf cipurse test'" "Tests \[ ok"; then break; fi From 1a19640d188c34babac184a00946bfece80a3ff4 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 21 Jul 2023 18:22:46 +0200 Subject: [PATCH 0250/1034] make style --- client/luascripts/hf_legic.lua | 20 ++-- client/src/cmddata.c | 8 +- client/src/cmdhflist.c | 32 +++--- client/src/cmdhfmf.c | 34 +++--- client/src/cmdlfhitag.c | 6 +- client/src/crypto/asn1utils.c | 10 +- client/src/pm3line_vocabulory.h | 13 ++- doc/commands.json | 188 +++++++++++++++++++++----------- doc/commands.md | 23 ++-- 9 files changed, 198 insertions(+), 136 deletions(-) diff --git a/client/luascripts/hf_legic.lua b/client/luascripts/hf_legic.lua index 052f7ab06..6dcb9d8ca 100644 --- a/client/luascripts/hf_legic.lua +++ b/client/luascripts/hf_legic.lua @@ -382,7 +382,7 @@ function getInputBytes(infile) local arr = split(infile, ".") local path = core.search_file(arr[1], "."..arr[2]) if (path == nil) then oops("failed to read from file ".. infile); return false; end - + local fhi,err = io.open(path,"rb") if err then oops("failed to read from file ".. path); return false; end @@ -688,7 +688,7 @@ end -- write bytes to file function writeFile(bytes, filename) local emlext = ".eml" - local res, path + local res, path if (filename ~= 'MyLegicClone') then res, path = file_check(filename..emlext) if res then @@ -765,7 +765,7 @@ function readFromPM3() if not res then return nil end os.remove(path) - res, path = file_check(infile..".eml") + res, path = file_check(infile..".eml") os.remove(path) res, path = file_check(infile..".json") @@ -886,7 +886,7 @@ function loadTagMap(filename) if not res then return oops("input file: "..acyellow..filename..acoff.." not found") else - + local fhi,err = io.open(path) while true do line = fhi:read() @@ -956,7 +956,7 @@ function dumpTagMap(tag, tagMap) else io.write("("..("%04d"):format(v['start']).."-"..("%04d"):format(v['end'])..") "..((v['highlight']) and acmagenta or acyellow)..v['name']..acoff) end - + temp = "" while (#v['name'] + temp:len()) < 20 do temp = temp.." " end @@ -1015,14 +1015,14 @@ function editTagMap(tag, tagMap) ]]..acc..[[Mappings]]..acr..[[ - ]]..acy..[[im]]..acr..[[ - insert ]]..acy..[[am]]..acr..[[ - add + ]]..acy..[[im]]..acr..[[ - insert ]]..acy..[[am]]..acr..[[ - add ]]..acy..[[rm]]..acr..[[ - remove ]]..acy..[[mas]]..acr..[[ - map all segments ]]..acc..[[CRC8]]..acr..[[ - ]]..acy..[[ac8]]..acr..[[ - add ]]..acy..[[sc8]]..acr..[[ - show + ]]..acy..[[ac8]]..acr..[[ - add ]]..acy..[[sc8]]..acr..[[ - show ]]..acy..[[rc8]]..acr..[[ - remove - + ]]..acy..[[q]]..acr..[[ - exit ]]..acy..[[h]]..acr..[[ - Help ]] @@ -2446,7 +2446,7 @@ function modifyMode() outfile = input("enter filename:", "hf-legic-"..inTAG.MCD..inTAG.MSN0..inTAG.MSN1..inTAG.MSN2) bytes = tagToBytes(inTAG) --bytes=xorBytes(bytes, inTAG.MCC) - if (bytes) then + if (bytes) then writeFile(bytes, outfile) end end @@ -2854,7 +2854,7 @@ function main(args) -- write to outfile if (bytes) then - + if (outfile) then writeFile(bytes, outfile) end diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 9486402d1..43fa20911 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3320,14 +3320,14 @@ int centerThreshold(const int *in, int *out, size_t len, int8_t up, int8_t down) for (size_t i = 0; i < len; ++i) { if ((in[i] <= up) && (in[i] >= down)) { out[i] = 0; - } + } } // clean out spikes. for (size_t i = 2; i < len - 2; ++i) { - int a = out[i-2] + out[i-1]; - int b = out[i+2] + out[i+1]; + int a = out[i - 2] + out[i - 1]; + int b = out[i + 2] + out[i + 1]; if (a == 0 && b == 0) { out[i] = 0; } @@ -3372,7 +3372,7 @@ static int envelope_square(const int *in, int *out, size_t len) { for (size_t i = 0; i < len - 5; i++) { - if (in[i] == 0 && in[i+1] == 0 && in[i+2] == 0 && in[i+3] == 0 && in[i+4] == 0) { + if (in[i] == 0 && in[i + 1] == 0 && in[i + 2] == 0 && in[i + 3] == 0 && in[i + 4] == 0) { i += 4; continue; } diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index 663a3450d..cf848d090 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -273,7 +273,7 @@ int applyIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool i MifareAuthState = masNone; break; case ISO14443A_CMD_RATS: - snprintf(exp, size, "RATS - FSDI=%x, CID=%x", (cmd[1] & 0xF0) >> 4, (cmd[1] & 0x0F) ); + snprintf(exp, size, "RATS - FSDI=%x, CID=%x", (cmd[1] & 0xF0) >> 4, (cmd[1] & 0x0F)); break; /* Actually, PPSS is Dx case ISO14443A_CMD_PPS: @@ -428,7 +428,7 @@ int applyIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool i break; default: - if ( (cmd[0] & 0xF0) == 0xD0 && ( cmdsize == 4 || cmdsize == 5 )) { + if ((cmd[0] & 0xF0) == 0xD0 && (cmdsize == 4 || cmdsize == 5)) { snprintf(exp, size, "PPS - CID=%x", cmd[0] & 0x0F) ; } else { return PM3_ESOFT; @@ -1241,7 +1241,7 @@ const char *mfpGetAnnotationForCode(uint8_t code) { { 0, NULL} } ; - for (struct mfp_code_msg *p=messages ; p->annotation != NULL ; p++) { + for (struct mfp_code_msg *p = messages ; p->annotation != NULL ; p++) { if (p->code == code) { return p->annotation ; } @@ -1249,8 +1249,8 @@ const char *mfpGetAnnotationForCode(uint8_t code) { return NULL ; } -const char *mfpGetEncryptedForCode(uint8_t code){ - /* +const char *mfpGetEncryptedForCode(uint8_t code) { + /* encrypted |plain : bit 1 30 A0 0000 32 A2 0010 31 A1 0001 33 A3 0011 @@ -1263,10 +1263,10 @@ const char *mfpGetEncryptedForCode(uint8_t code){ return "ENCRYPTED" ; } -/* +/* response |command NOMAC MAC UnMACed MACed - 30 31 34 30,A0 + 30 31 34 30,A0 32 33 35 31,A1 A0 A1 36 32,A2 A2 A3 37 33,A3 @@ -1274,14 +1274,14 @@ const char *mfpGetEncryptedForCode(uint8_t code){ bit 2 is command: UNMACed if 1, MACed if 0 */ const char *mfpGetResponseMacedForCode(uint8_t code) { - if (( code & 0x01) == 0x00) { + if ((code & 0x01) == 0x00) { return "NoMAC" ; } return "MAC" ; } const char *mfpGetCommandMacedForCode(uint8_t code) { - if (( code & 0x04) == 0x04) { + if ((code & 0x04) == 0x04) { return "UnMACed" ; } return "MACed" ; @@ -1322,14 +1322,14 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { if (cmdsize > (data - cmd)) { data_size = cmdsize - (data - cmd); } - uint8_t opcode=cmd[pos] ; + uint8_t opcode = cmd[pos] ; switch (opcode) { case MFP_AUTHENTICATEFIRST: case MFP_AUTHENTICATEFIRST_VARIANT: if (data_size > 1) { // key : uint16_t uKeyNum = 0x4000 + sectorNum * 2 + (keyB ? 1 : 0); uint16_t uKeyNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "FIRST AUTH (Keynr 0x%04X: %c sector %d)", uKeyNum, uKeyNum & 0x0001 ? 'B' : 'A', (uKeyNum - 0x4000)/2 ); + snprintf(exp, size, "FIRST AUTH (Keynr 0x%04X: %c sector %d)", uKeyNum, uKeyNum & 0x0001 ? 'B' : 'A', (uKeyNum - 0x4000) / 2); } else { snprintf(exp, size, "FIRST AUTH") ; } @@ -1360,7 +1360,7 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { uint16_t uBlockNum = MemLeToUint2byte(data) ; uint8_t uQty = data[2] ; if (uQty != 1) { - snprintf(exp, size, "READ %s(%u-%u) %s_%s", encrypted, uBlockNum, uBlockNum+uQty-1, responseMaced, commandMaced); + snprintf(exp, size, "READ %s(%u-%u) %s_%s", encrypted, uBlockNum, uBlockNum + uQty - 1, responseMaced, commandMaced); } else { snprintf(exp, size, "READ %s(%u) %s_%s", encrypted, uBlockNum, responseMaced, commandMaced); } @@ -1369,11 +1369,11 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { } break; } - + case MFP_WRITEPLAINNOMAC : case MFP_WRITEPLAINMAC : case MFP_WRITEENCRYPTEDNOMAC: - case MFP_WRITEENCRYPTEDMAC :{ + case MFP_WRITEENCRYPTEDMAC : { const char *encrypted = mfpGetEncryptedForCode(opcode) ; const char *responseMaced = mfpGetResponseMacedForCode(opcode) ; @@ -1397,12 +1397,12 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { case MFP_DECREMENTTRANSFERNOMAC: case MFP_DECREMENTTRANSFERMAC : case MFP_RESTORENOMAC : - case MFP_RESTOREMAC :{ + case MFP_RESTOREMAC : { const char *responseMaced = mfpGetResponseMacedForCode(opcode) ; const char *annotation = mfpGetAnnotationForCode(opcode) ; if (annotation == NULL) { //should not happen outside of default case: it means an entry is mising in mfpGetAnnotationForCode() - annotation="?? MISSING OPCODE" ; + annotation = "?? MISSING OPCODE" ; } if (data_size > 1) { diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 06b7c8a18..0531b4f28 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7035,12 +7035,12 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { uint8_t aCHANGE[] = {0x00, 0xa6, 0xa0, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0x00}; memcpy(aCHANGE + 5, uid, uidlen); res = ExchangeAPDU14a( - aCHANGE, sizeof(aCHANGE), - activate_field, - keep_field_on, - response, sizeof(response), - &resplen - ); + aCHANGE, sizeof(aCHANGE), + activate_field, + keep_field_on, + response, sizeof(response), + &resplen + ); if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Super card UID change [ " _RED_("fail") " ]"); @@ -7061,12 +7061,12 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { // --------------- RESET CARD ---------------- uint8_t aRESET[] = {0x00, 0xa6, 0xc0, 0x00}; res = ExchangeAPDU14a( - aRESET, sizeof(aRESET), - activate_field, - keep_field_on, - response, sizeof(response), - &resplen - ); + aRESET, sizeof(aRESET), + activate_field, + keep_field_on, + response, sizeof(response), + &resplen + ); if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Super card reset [ " _RED_("fail") " ]"); @@ -7157,11 +7157,11 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { uint64_t key64 = -1; if (mfkey32_moebius(&data, &key64)) { PrintAndLogEx(SUCCESS, "UID: %s Sector %02x key %c [ " _GREEN_("%012" PRIX64) " ]", - sprint_hex_inrow(outA, 4), - data.sector, - (data.keytype == 0x60) ? 'A' : 'B', - key64 - ); + sprint_hex_inrow(outA, 4), + data.sector, + (data.keytype == 0x60) ? 'A' : 'B', + key64 + ); } else { PrintAndLogEx(FAILED, "failed to recover any key"); } diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index c3e30f61f..7fd58c798 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -631,7 +631,7 @@ static int CmdLFHitagReader(const char *Cmd) { memcpy(key, "MIKR", 4); keylen = 4; } - if ((keylen == 0) && use_crypto) { + if ((keylen == 0) && use_crypto) { memcpy(key, "ONMIKR", 6); keylen = 6; } @@ -888,7 +888,7 @@ static int CmdLFHitagWriter(const char *Cmd) { memcpy(key, "MIKR", 4); keylen = 4; } - if ((keylen == 0) && use_crypto) { + if ((keylen == 0) && use_crypto) { memcpy(key, "ONMIKR", 6); keylen = 6; } @@ -1047,7 +1047,7 @@ static int CmdLFHitag2Dump(const char *Cmd) { memcpy(key, "MIKR", 4); keylen = 4; } - if ((keylen == 0) && use_crypto) { + if ((keylen == 0) && use_crypto) { memcpy(key, "ONMIKR", 6); keylen = 6; } diff --git a/client/src/crypto/asn1utils.c b/client/src/crypto/asn1utils.c index 34b9a8e80..1fa839a7f 100644 --- a/client/src/crypto/asn1utils.c +++ b/client/src/crypto/asn1utils.c @@ -120,12 +120,12 @@ int asn1_selftest(void) { /* - ICEMAN: + ICEMAN: Problem to be solved, how to extract data back from our asn1 decoder to compare with the expected text found in the following test cases. Thanks @Mistial for the suggestion and links. These test cases are from the project lapo-luchini's asn1js (ISC license which is like MIT license) - https://github.com/lapo-luchini/asn1js/blob/trunk/test.js + https://github.com/lapo-luchini/asn1js/blob/trunk/test.js const asn1_test tests[] = { @@ -211,7 +211,7 @@ int asn1_selftest(void) { {"181531393835313130363231303632372E332D31323334", "1985-11-06 21:06:27.3 UTC-12:34", "UTC offsets with minutes"}, // GitHub issue #54 {"181331393835313130363231303632372E332B3134", "1985-11-06 21:06:27.3 UTC+14:00", "UTC offset +13 and +14"}, - }; + }; int tot = ARRAYLEN(tests); @@ -238,7 +238,7 @@ int asn1_selftest(void) { if (t) { bool candump = false; if (asn1_tag_dump(&t->tag, 0, &candump)) { - count++; + count++; } tlvdb_free(t); } @@ -250,6 +250,6 @@ int asn1_selftest(void) { PrintAndLogEx(NORMAL, ""); */ - + return PM3_SUCCESS; } diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index 950d8816f..b3f177ed2 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -83,6 +83,7 @@ const static vocabulory_t vocabulory[] = { { 1, "data autocorr" }, { 1, "data dirthreshold" }, { 1, "data decimate" }, + { 1, "data envelope" }, { 1, "data undecimate" }, { 1, "data hide" }, { 1, "data hpf" }, @@ -92,6 +93,7 @@ const static vocabulory_t vocabulory[] = { { 1, "data mtrim" }, { 1, "data norm" }, { 1, "data plot" }, + { 1, "data cthreshold" }, { 1, "data rtrim" }, { 1, "data setgraphmarkers" }, { 1, "data shiftgraphzero" }, @@ -599,15 +601,16 @@ const static vocabulory_t vocabulory[] = { { 0, "lf hid brute" }, { 0, "lf hid watch" }, { 1, "lf hitag help" }, - { 0, "lf hitag eload" }, { 1, "lf hitag list" }, { 0, "lf hitag info" }, - { 0, "lf hitag reader" }, - { 0, "lf hitag sim" }, - { 0, "lf hitag sniff" }, - { 0, "lf hitag writer" }, { 0, "lf hitag dump" }, + { 0, "lf hitag read" }, + { 0, "lf hitag wrbl" }, + { 0, "lf hitag sniff" }, { 0, "lf hitag cc" }, + { 0, "lf hitag ta" }, + { 0, "lf hitag eload" }, + { 0, "lf hitag sim" }, { 1, "lf idteck help" }, { 1, "lf idteck demod" }, { 0, "lf idteck reader" }, diff --git a/doc/commands.json b/doc/commands.json index 0618f5152..7e6061ec3 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -199,9 +199,10 @@ "offline": true, "options": [ "-h, --help This help", - "-d ASN1 encoded byte array" + "-d ASN1 encoded byte array", + "-t, --test perform selftest" ], - "usage": "data asn1 [-h] -d " + "usage": "data asn1 [-ht] [-d ]" }, "data autocorr": { "command": "data autocorr", @@ -283,6 +284,20 @@ ], "usage": "data convertbitstream [-h]" }, + "data cthreshold": { + "command": "data cthreshold", + "description": "Inverse of dirty threshold command, all values between up and down will be average out", + "notes": [ + "data cthreshold -u 10 -d -10" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-d, --down threshold down", + "-u, --up threshold up" + ], + "usage": "data cthreshold [-h] -d -u " + }, "data decimate": { "command": "data decimate", "description": "Performs decimation, by reducing samples N times in the grapbuf. Good for PSK", @@ -301,20 +316,18 @@ "command": "data detectclock", "description": "Detect ASK, FSK, NRZ, PSK clock rate of wave in GraphBuffer", "notes": [ - "data detectclock -A -> detect clock of an ask wave in GraphBuffer", - "data detectclock -F -> detect clock of an fsk wave in GraphBuffer", - "data detectclock -N -> detect clock of an psk wave in GraphBuffer", - "data detectclock -P -> detect clock of an nrz/direct wave in GraphBuffer" + "data detectclock --ask", + "data detectclock --nzr -> detect clock of an nrz/direct wave in GraphBuffer" ], "offline": true, "options": [ "-h, --help This help", - "-A, --ASK specify ASK modulation clock detection", - "-F, --FSK specify FSK modulation clock detection", - "-N, --NZR specify NZR/DIRECT modulation clock detection", - "-P, --PSK specify PSK modulation clock detection" + "--ask specify ASK modulation clock detection", + "--fsk specify FSK modulation clock detection", + "--nzr specify NZR/DIRECT modulation clock detection", + "--psk specify PSK modulation clock detection" ], - "usage": "data detectclock [-hAFNP]" + "usage": "data detectclock [-h] [--ask] [--fsk] [--nzr] [--psk]" }, "data diff": { "command": "data diff", @@ -352,6 +365,18 @@ ], "usage": "data dirthreshold [-h] -d -u " }, + "data envelope": { + "command": "data envelope", + "description": "Create an square envelop of the samples", + "notes": [ + "data envelop" + ], + "offline": true, + "options": [ + "-h, --help This help" + ], + "usage": "data envelop [-h]" + }, "data fsktonrz": { "command": "data fsktonrz", "description": "Convert fsk2 to nrz wave for alternate fsk demodulating (for weak fsk) Omitted values are autodetect instead", @@ -8638,19 +8663,29 @@ }, "lf hitag dump": { "command": "lf hitag dump", - "description": "Read all card memory and save to fileIn password mode the default key is 4D494B52 (MIKR) In crypto mode the default key is 4F4E4D494B52 (ONMIKR) format: ISK high + ISK low.", + "description": "Read all Hitag 2 card memory and save to file Crypto mode key format: ISK high + ISK low", "notes": [ - "lf hitag dump -k 4F4E4D494B52", - "lf hitag dump -k 4D494B52" + "Password mode => use default key 4D494B52 (MIKR)", + "lf hitag dump --pwd", + "Short key = password mode", + "lf hitag dump -k 4D494B52", + "Challenge mode", + "lf hitag dump --nrar 0102030411223344", + "Crypto mode => use default key 4F4E4D494B52 (ONMIKR)", + "lf hitag dump --crypto", + "Long key = crypto mode", + "lf hitag dump -k 4F4E4D494B52" ], "offline": false, "options": [ "-h, --help This help", - "-f, --file specify file name", + "--pwd password mode", + "--nrar nonce / answer reader, 8 hex bytes", + "--crypto crypto mode", "-k, --key key, 4 or 6 hex bytes", - "--nrar nonce / answer reader, 8 hex bytes" + "-f, --file specify file name" ], - "usage": "lf hitag dump [-h] [-f ] [-k ] [--nrar ]" + "usage": "lf hitag dump [-h] [--pwd] [--nrar ] [--crypto] [-k ] [-f ]" }, "lf hitag eload": { "command": "lf hitag eload", @@ -8661,11 +8696,11 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file Specfiy dump filename", - "-1 Card type Hitag1", - "-2 Card type Hitag2", - "-s Card type HitagS", - "-m Card type HitagM" + "-f, --file Specify dump filename", + "-1, --ht1 Card type Hitag 1", + "-2, --ht2 Card type Hitag 2", + "-s, --hts Card type Hitag S", + "-m, --htm Card type Hitag \u03bc" ], "usage": "lf hitag eload [-h12sm] -f " }, @@ -8702,46 +8737,54 @@ ], "usage": "lf hitag list [-h1crux] [--frame] [-f ]" }, - "lf hitag reader": { - "command": "lf hitag reader", - "description": "Act like a Hitag Reader", + "lf hitag read": { + "command": "lf hitag read", + "description": "Read Hitag memory Crypto mode key format: ISK high + ISK low", "notes": [ - "Hitag S", - "lf hitag reader --01 --nrar 0102030411223344", - "lf hitag reader --02 -k 4F4E4D494B52", - "Hitag 2", - "lf hitag reader --21 -k 4D494B52", - "lf hitag reader --22 --nrar 0102030411223344", - "lf hitag reader --23 -k 4F4E4D494B52", - "lf hitag reader --26" + "Hitag S, plain mode", + "lf hitag read --hts", + "Hitag S, challenge mode", + "lf hitag read --hts --nrar 0102030411223344", + "Hitag S, crypto mode => use default key 4F4E4D494B52 (ONMIKR)", + "lf hitag read --hts --crypto", + "Hitag S, long key = crypto mode", + "lf hitag read --hts -k 4F4E4D494B52", + "", + "Hitag 2, password mode => use default key 4D494B52 (MIKR)", + "lf hitag read --ht2 --pwd", + "Hitag 2, providing a short key = password mode", + "lf hitag read --ht2 -k 4D494B52", + "Hitag 2, challenge mode", + "lf hitag read --ht2 --nrar 0102030411223344", + "Hitag 2, crypto mode => use default key 4F4E4D494B52 (ONMIKR)", + "lf hitag read --ht2 --crypto", + "Hitag 2, providing a long key = crypto mode", + "lf hitag read --ht2 -k 4F4E4D494B52" ], "offline": false, "options": [ "-h, --help This help", - "--01 HitagS, read all pages, challenge mode", - "--02 HitagS, read all pages, crypto mode. Set key=0 for no auth", - "--21 Hitag2, read all pages, password mode. def 4D494B52 (MIKR)", - "--22 Hitag2, read all pages, challenge mode", - "--23 Hitag2, read all pages, crypto mode. Key ISK high + ISK low. def 4F4E4D494B52 (ONMIKR)", - "--25 Hitag2, test recorded authentications (replay?)", - "--26 Hitag2, read UID", - "-k, --key key, 4 or 6 hex bytes", - "--nrar nonce / answer reader, 8 hex bytes" + "-s, --hts Hitag S", + "-2, --ht2 Hitag 2", + "--pwd password mode", + "--nrar nonce / answer writer, 8 hex bytes", + "--crypto crypto mode", + "-k, --key key, 4 or 6 hex bytes" ], - "usage": "lf hitag reader [-h] [--01] [--02] [--21] [--22] [--23] [--25] [--26] [-k ] [--nrar ]" + "usage": "lf hitag read [-hs2] [--pwd] [--nrar ] [--crypto] [-k ]" }, "lf hitag sim": { "command": "lf hitag sim", - "description": "Simulate Hitag2 / HitagS transponder You need to `lf hitag eload` first", + "description": "Simulate Hitag transponder You need to `lf hitag eload` first", "notes": [ "lf hitag sim -2" ], "offline": false, "options": [ "-h, --help This help", - "-1 simulate Hitag1", - "-2 simulate Hitag2", - "-s simulate HitagS" + "-1, --ht1 simulate Hitag 1", + "-2, --ht2 simulate Hitag 2", + "-s, --hts simulate Hitag S" ], "usage": "lf hitag sim [-h12s]" }, @@ -8757,30 +8800,43 @@ ], "usage": "lf hitag sniff [-h]" }, - "lf hitag writer": { - "command": "lf hitag writer", - "description": "Act like a Hitag writerIn password mode the default key is 4D494B52 (MIKR) In crypto mode the default key is 4F4E4D494B52 (ONMIKR) format: ISK high + ISK low.", + "lf hitag wrbl": { + "command": "lf hitag wrbl", + "description": "Write a page in Hitag memory Crypto mode key format: ISK high + ISK low", "notes": [ - "Hitag S", - "lf hitag writer --03 --nrar 0102030411223344 -p 3 -d 01020304", - "lf hitag writer --04 -k 4F4E4D494B52 -p 3 -d 01020304", - "Hitag 2", - "lf hitag writer --24 -k 4F4E4D494B52 -p 3 -d 01020304", - "lf hitag writer --27 -k 4D494B52 -p 3 -d 01020304" + "Hitag S, plain mode", + "lf hitag wrbl --hts -p 6 -d 01020304", + "Hitag S, challenge mode", + "lf hitag wrbl --hts --nrar 0102030411223344 -p 6 -d 01020304", + "Hitag S, crypto mode => use default key 4F4E4D494B52 (ONMIKR)", + "lf hitag wrbl --hts --crypto -p 6 -d 01020304", + "Hitag S, long key = crypto mode", + "lf hitag wrbl --hts -k 4F4E4D494B52 -p 6 -d 01020304", + "", + "Hitag 2, password mode => use default key 4D494B52 (MIKR)", + "lf hitag wrbl --ht2 --pwd -p 6 -d 01020304", + "Hitag 2, providing a short key = password mode", + "lf hitag wrbl --ht2 -k 4D494B52 -p 6 -d 01020304", + "Hitag 2, challenge mode", + "lf hitag wrbl --ht2 --nrar 0102030411223344 -p 6 -d 01020304", + "Hitag 2, crypto mode => use default key 4F4E4D494B52 (ONMIKR)", + "lf hitag wrbl --ht2 --crypto -p 6 -d 01020304", + "Hitag 2, providing a long key = crypto mode", + "lf hitag wrbl --ht2 -k 4F4E4D494B52 -p 6 -d 01020304" ], "offline": false, "options": [ "-h, --help This help", - "--03 HitagS, write page, challenge mode", - "--04 HitagS, write page, crypto mode. Set key=0 for no auth", - "--24 Hitag2, write page, crypto mode.", - "--27 Hitag2, write page, password mode", - "-p, --page page address to write to", - "-d, --data data, 4 hex bytes", + "-s, --hts Hitag S", + "-2, --ht2 Hitag 2", + "--pwd password mode", + "--nrar nonce / answer writer, 8 hex bytes", + "--crypto crypto mode", "-k, --key key, 4 or 6 hex bytes", - "--nrar nonce / answer writer, 8 hex bytes" + "-p, --page page address to write to", + "-d, --data data, 4 hex bytes" ], - "usage": "lf hitag writer [-h] [--03] [--04] [--24] [--27] -p [-d ] [-k ] [--nrar ]" + "usage": "lf hitag wrbl [-hs2] [--pwd] [--nrar ] [--crypto] [-k ] -p -d " }, "lf idteck clone": { "command": "lf idteck clone", @@ -11693,8 +11749,8 @@ } }, "metadata": { - "commands_extracted": 679, + "commands_extracted": 681, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-19T19:11:10" + "extracted_on": "2023-07-21T16:22:30" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index ce203b57a..cd538fe3c 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -98,10 +98,11 @@ Check column "offline" for their availability. |`data manrawdecode `|Y |`Manchester decode binary stream in DemodBuffer` |`data modulation `|Y |`Identify LF signal for clock and modulation` |`data rawdemod `|Y |`Demodulate the data in the GraphBuffer and output binary` -|`data askedgedetect `|Y |`Adjust Graph for manual ASK demod using the length of sample differences to detect the edge of a wave` +|`data askedgedetect `|Y |`Adjust Graph for manual ASK demod` |`data autocorr `|Y |`Autocorrelation over window` -|`data dirthreshold `|Y |`Max rising higher up-thres/ Min falling lower down-thres, keep rest as prev.` +|`data dirthreshold `|Y |`Max rising higher up-thres/ Min falling lower down-thres` |`data decimate `|Y |`Decimate samples` +|`data envelope `|Y |`Generate square envelope of samples` |`data undecimate `|Y |`Un-decimate samples` |`data hide `|Y |`Hide graph window` |`data hpf `|Y |`Remove DC offset from trace` @@ -111,10 +112,11 @@ Check column "offline" for their availability. |`data mtrim `|Y |`Trim out samples from the specified start to the specified stop` |`data norm `|Y |`Normalize max/min to +/-128` |`data plot `|Y |`Show graph window` +|`data cthreshold `|Y |`Average out all values between` |`data rtrim `|Y |`Trim samples from right of trace` |`data setgraphmarkers `|Y |`Set blue and orange marker in graph window` |`data shiftgraphzero `|Y |`Shift 0 for Graphed wave + or - shift value` -|`data timescale `|Y |`Set a timescale to get a differential reading between the yellow and purple markers as time duration` +|`data timescale `|Y |`Set cursor display timescale` |`data zerocrossings `|Y |`Count time between zero-crossings` |`data convertbitstream `|Y |`Convert GraphBuffer's 0/1 values to 127 / -127` |`data getbitstream `|Y |`Convert GraphBuffer's >=1 values to 1 and <1 to 0` @@ -986,15 +988,16 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`lf hitag help `|Y |`This help` -|`lf hitag eload `|N |`Load Hitag dump file into emulator memory` |`lf hitag list `|Y |`List Hitag trace history` -|`lf hitag info `|N |`Hitag2 tag information` -|`lf hitag reader `|N |`Act like a Hitag reader` -|`lf hitag sim `|N |`Simulate Hitag transponder` +|`lf hitag info `|N |`Hitag 2 tag information` +|`lf hitag dump `|N |`Dump Hitag 2 tag` +|`lf hitag read `|N |`Read Hitag memory` +|`lf hitag wrbl `|N |`Write a block (page) in Hitag memory` |`lf hitag sniff `|N |`Eavesdrop Hitag communication` -|`lf hitag writer `|N |`Act like a Hitag writer` -|`lf hitag dump `|N |`Dump Hitag2 tag` -|`lf hitag cc `|N |`Test all challenges` +|`lf hitag cc `|N |`Hitag S: test all provided challenges` +|`lf hitag ta `|N |`Hitag 2: test all recorded authentications` +|`lf hitag eload `|N |`Load Hitag dump file into emulator memory` +|`lf hitag sim `|N |`Simulate Hitag transponder` ### lf idteck From 44b7aa2e8b7c6dc15d8c9f92589666ba5cec4b72 Mon Sep 17 00:00:00 2001 From: startrekdude Date: Fri, 21 Jul 2023 16:02:46 -0400 Subject: [PATCH 0251/1034] Add a tagType for Seos cards to SimulateIso14443aInit These values were observed from a standard-keyed 4K Seos card. --- armsrc/iso14443a.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 62baab9fc..c47339497 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1165,6 +1165,10 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r sak = 0x20; } break; + case 12: { // HID Seos 4K card + rATQA[0] = 0x01; + sak = 0x20; + } default: { if (g_dbglevel >= DBG_ERROR) Dbprintf("Error: unknown tagtype (%d)", tagType); From 97e61650ab0388d5fd880598a4cbcfbc325fcecc Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 22:07:16 +0200 Subject: [PATCH 0252/1034] added missing value --- client/src/cmdhf14a.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index e6e0a20e8..63b3ebd82 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -754,7 +754,9 @@ int CmdHF14ASim(const char *Cmd) { "hf 14a sim -t 7 -> MFU EV1 / NTAG 215 Amiibo\n" "hf 14a sim -t 8 -> MIFARE Classic 4k\n" "hf 14a sim -t 9 -> FM11RF005SH Shanghai Metro\n" - "hf 14a sim -t 10 -> ST25TA IKEA Rothult\n"); + "hf 14a sim -t 10 -> ST25TA IKEA Rothult\n" + "hf 14a sim -t 11 -> javacard (JCOP)\n" + ); void *argtable[] = { arg_param_begin, @@ -808,7 +810,7 @@ int CmdHF14ASim(const char *Cmd) { CLIParserFree(ctx); - if (tagtype > 10) { + if (tagtype > 11) { PrintAndLogEx(ERR, "Undefined tag %d", tagtype); return PM3_EINVARG; } From b0fd944c7189c41e886ff0536be106c80577784f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 22:08:52 +0200 Subject: [PATCH 0253/1034] added missing value --- client/src/cmdhf14a.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 63b3ebd82..cff210ad9 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -755,12 +755,13 @@ int CmdHF14ASim(const char *Cmd) { "hf 14a sim -t 8 -> MIFARE Classic 4k\n" "hf 14a sim -t 9 -> FM11RF005SH Shanghai Metro\n" "hf 14a sim -t 10 -> ST25TA IKEA Rothult\n" - "hf 14a sim -t 11 -> javacard (JCOP)\n" + "hf 14a sim -t 11 -> Javacard (JCOP)\n" + "hf 14a sim -t 12 -> 4K Seos card\n" ); void *argtable[] = { arg_param_begin, - arg_int1("t", "type", "<1-10> ", "Simulation type to use"), + arg_int1("t", "type", "<1-12> ", "Simulation type to use"), arg_str0("u", "uid", "", "<4|7|10> hex bytes UID"), arg_int0("n", "num", "", "Exit simulation after blocks have been read by reader. 0 = infinite"), arg_lit0("x", NULL, "Performs the 'reader attack', nr/ar attack against a reader"), @@ -810,7 +811,7 @@ int CmdHF14ASim(const char *Cmd) { CLIParserFree(ctx); - if (tagtype > 11) { + if (tagtype > 12) { PrintAndLogEx(ERR, "Undefined tag %d", tagtype); return PM3_EINVARG; } From 6da1b74fa928ea0b266a5ee42113b68ac44c2d12 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 13:51:28 +0200 Subject: [PATCH 0254/1034] text --- client/src/cmdhflegic.c | 85 +++++++++++++++++++++++------------------ 1 file changed, 48 insertions(+), 37 deletions(-) diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index a0b703453..56399a365 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -85,7 +85,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff uint32_t calc_crc = CRC8Legic(data, 4); PrintAndLogEx(SUCCESS, " " _CYAN_("CDF: System Area")); - PrintAndLogEx(NORMAL, "------------------------------------------------------"); + PrintAndLogEx(INFO, "------------------------------------------------------"); PrintAndLogEx(SUCCESS, "MCD: " _GREEN_("%02X") " MSN: " _GREEN_("%s") " MCC: " _GREEN_("%02X") " ( %s )", data[0], sprint_hex(data + 1, 3), @@ -134,7 +134,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff stamp_len = 0xfc - data[6]; } - PrintAndLogEx(SUCCESS, "DCF: %d (%02x %02x), Token Type=" _YELLOW_("%s") " (OLE=%01u), OL=%02u, FL=%02u", + PrintAndLogEx(SUCCESS, "DCF: %d (%02x %02x) Token Type=" _YELLOW_("%s") " (OLE=%01u) OL=%02u FL=%02u", dcf, data[5], data[6], @@ -153,7 +153,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff strncpy(token_type, "IM", sizeof(token_type) - 1); } - PrintAndLogEx(SUCCESS, "DCF: %d (%02x %02x), Token Type = %s (OLE = %01u)", + PrintAndLogEx(SUCCESS, "DCF: %d (%02x %02x) Token Type = %s (OLE = %01u)", dcf, data[5], data[6], @@ -166,7 +166,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff if (dcf != 0xFFFF) { if (bIsSegmented) { - PrintAndLogEx(SUCCESS, "WRP = %02u, WRC = %01u, RD = %01u, SSC = %02X", + PrintAndLogEx(SUCCESS, "WRP = %02u WRC = %01u RD = %01u SSC = %02X", data[7] & 0x0f, (data[7] & 0x70) >> 4, (data[7] & 0x80) >> 7, @@ -185,7 +185,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff } } } - PrintAndLogEx(NORMAL, "------------------------------------------------------"); + PrintAndLogEx(INFO, "------------------------------------------------------"); uint8_t segCrcBytes[8] = {0, 0, 0, 0, 0, 0, 0, 0}; uint32_t segCalcCRC = 0; @@ -197,7 +197,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff } PrintAndLogEx(SUCCESS, _CYAN_("ADF: User Area")); - PrintAndLogEx(NORMAL, "------------------------------------------------------"); + PrintAndLogEx(INFO, "------------------------------------------------------"); if (bIsSegmented) { @@ -208,8 +208,8 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff for (segmentNum = 1; segmentNum < 128; segmentNum++) { // for decoding the segment header we need at least 4 bytes left in buffer if ((i + 4) > card_size) { - PrintAndLogEx(FAILED, "Cannot read segment header, because the input buffer is too small. " - "Please check that the data is correct and properly aligned. "); + PrintAndLogEx(FAILED, "Cannot read segment header, because the input buffer is too small."); + PrintAndLogEx(FAILED, "Please check that the data is correct and properly aligned"); return_value = PM3_EOUTOFBOUND; goto out; } @@ -236,20 +236,20 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff segCalcCRC = CRC8Legic(segCrcBytes, 8); segCRC = data[i + 4] ^ crc; - PrintAndLogEx(SUCCESS, "Segment | " _YELLOW_("%02u"), segmentNum); - PrintAndLogEx(SUCCESS, "raw header | 0x%02X 0x%02X 0x%02X 0x%02X", + PrintAndLogEx(SUCCESS, "Segment....... " _YELLOW_("%02u"), segmentNum); + PrintAndLogEx(SUCCESS, "Raw header.... 0x%02X 0x%02X 0x%02X 0x%02X", data[i] ^ crc, data[i + 1] ^ crc, data[i + 2] ^ crc, data[i + 3] ^ crc ); - PrintAndLogEx(SUCCESS, "Segment len | %u, Flag: 0x%X (valid:%01u, last:%01u)", + PrintAndLogEx(SUCCESS, "Segment len... %u Flag: 0x%X (valid:%01u last:%01u)", segment_len, segment_flag, (segment_flag & 0x4) >> 2, (segment_flag & 0x8) >> 3 ); - PrintAndLogEx(SUCCESS, " | WRP: %02u, WRC: %02u, RD: %01u, CRC: 0x%02X ( %s )", + PrintAndLogEx(SUCCESS, " WRP: %02u WRC: %02u RD: %01u CRC: 0x%02X ( %s )", wrp, wrc, ((data[i + 3] ^ crc) & 0x80) >> 7, @@ -268,28 +268,33 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff } if (hasWRC) { - PrintAndLogEx(SUCCESS, "\nWRC protected area: (I %d | K %d| WRC %d)", i, k, wrc); - PrintAndLogEx(NORMAL, "\nrow | data"); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------"); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(SUCCESS, _CYAN_("WRC protected area:") " (I %d | K %d| WRC %d)", i, k, wrc); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "## | data"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); for (k = i; k < (i + wrc); ++k) data[k] ^= crc; print_hex_break(data + i, wrc, 16); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------\n"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, ""); i += wrc; } if (hasWRP) { - PrintAndLogEx(SUCCESS, "Remaining write protected area: (I %d | K %d | WRC %d | WRP %d WRP_LEN %d)", i, k, wrc, wrp, wrp_len); - PrintAndLogEx(NORMAL, "\nrow | data"); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------"); + PrintAndLogEx(SUCCESS, _CYAN_("Remaining write protected area:") " (I %d | K %d | WRC %d | WRP %d WRP_LEN %d)", i, k, wrc, wrp, wrp_len); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "## | data"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); for (k = i; k < (i + wrp_len); ++k) data[k] ^= crc; print_hex_break(data + i, wrp_len, 16); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------\n"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, ""); i += wrp_len; // does this one work? (Answer: Only if KGH/BGH is used with BCD encoded card number! So maybe this will show just garbage...) @@ -302,15 +307,16 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff } } if (remain_seg_payload_len > 0) { - PrintAndLogEx(SUCCESS, "Remaining segment payload: (I %d | K %d | Remain LEN %d)", i, k, remain_seg_payload_len); - PrintAndLogEx(NORMAL, "\nrow | data"); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------"); + PrintAndLogEx(SUCCESS, _CYAN_("Remaining segment payload:") " (I %d | K %d | Remain LEN %d)", i, k, remain_seg_payload_len); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "## | data"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); for (k = i; k < (i + remain_seg_payload_len); ++k) data[k] ^= crc; print_hex_break(data + i, remain_seg_payload_len, 16); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------\n"); + PrintAndLogEx(INFO, "---+------------------------------------------------\n"); i += remain_seg_payload_len; } // end with last segment @@ -331,7 +337,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff int wrp_len = (wrp - wrc); int remain_seg_payload_len = (card_size - 22 - wrp); - PrintAndLogEx(SUCCESS, "Unsegmented card - WRP: %02u, WRC: %02u, RD: %01u", + PrintAndLogEx(SUCCESS, "Unsegmented card - WRP: %02u WRC: %02u RD: %01u", wrp, wrc, (data[7] & 0x80) >> 7 @@ -346,20 +352,24 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff } if (hasWRC) { - PrintAndLogEx(SUCCESS, "WRC protected area: (I %d | WRC %d)", i, wrc); - PrintAndLogEx(NORMAL, "\nrow | data"); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------"); + PrintAndLogEx(SUCCESS, _CYAN_("WRC protected area:") " (I %d | WRC %d)", i, wrc); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "## | data"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); print_hex_break(data + i, wrc, 16); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------\n"); + PrintAndLogEx(INFO, "----+------------------------------------------------"); + PrintAndLogEx(INFO, ""); i += wrc; } if (hasWRP) { - PrintAndLogEx(SUCCESS, "Remaining write protected area: (I %d | WRC %d | WRP %d | WRP_LEN %d)", i, wrc, wrp, wrp_len); - PrintAndLogEx(NORMAL, "\nrow | data"); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------"); + PrintAndLogEx(SUCCESS, _CYAN_("Remaining write protected area:") " (I %d | WRC %d | WRP %d | WRP_LEN %d)", i, wrc, wrp, wrp_len); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "## | data"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); print_hex_break(data + i, wrp_len, 16); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------\n"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, ""); i += wrp_len; // Q: does this one work? @@ -374,11 +384,12 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff } if (remain_seg_payload_len > 0) { - PrintAndLogEx(SUCCESS, "Remaining segment payload: (I %d | Remain LEN %d)", i, remain_seg_payload_len); - PrintAndLogEx(NORMAL, "\nrow | data"); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------"); + PrintAndLogEx(SUCCESS, _CYAN_("Remaining segment payload:") " (I %d | Remain LEN %d)", i, remain_seg_payload_len); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "## | data"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); print_hex_break(data + i, remain_seg_payload_len, 16); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------\n"); + PrintAndLogEx(INFO, "---+------------------------------------------------\n"); } } From 0180ca305e7c81b75a24c215277907a6f3dab063 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 14:07:51 +0200 Subject: [PATCH 0255/1034] added verbose flag to eview/view/info command where it will print the raw hex dump. This makes it a bit cleaner output --- CHANGELOG.md | 1 + client/src/cmdhflegic.c | 98 +++++++++++++++++++++++++---------------- 2 files changed, 61 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96cabb6ed..3caa5134d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Change `hf legic view/eview/info` - now in verbose mode will print raw hex dump (@iceman1001) - Added new test for cotag demod using data commands in pm3_test.sh (@iceman1001) - Added new sample trace file for cotag w fc/272. Thanks s1acky! (@iceman1001) - Fixed `hf legic eload` - now it doesn't crash client (@doegox) diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 56399a365..639947311 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -58,32 +58,33 @@ static bool legic_xor(uint8_t *data, uint16_t cardsize) { } static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buffer) { - int i = 0, k = 0, segmentNum = 0, segment_len = 0, segment_flag = 0; - int crc = 0, wrp = 0, wrc = 0; - uint8_t stamp_len = 0; - char token_type[6] = {0, 0, 0, 0, 0, 0}; - int dcf = 0; - int bIsSegmented = 0; - int return_value = PM3_SUCCESS; if (!(card_size == LEGIC_PRIME_MIM22 || card_size == LEGIC_PRIME_MIM256 || card_size == LEGIC_PRIME_MIM1024)) { PrintAndLogEx(FAILED, "Bytebuffer is not any known legic card size! (MIM22, MIM256, MIM1024)"); - return_value = PM3_EFAILED; return PM3_EFAILED; } // copy input buffer into newly allocated buffer, because the existing code mutates the data inside. uint8_t *data = calloc(card_size, sizeof(uint8_t)); - if (!data) { + if (data == NULL) { PrintAndLogEx(WARNING, "Cannot allocate memory"); return PM3_EMALLOC; } memcpy(data, input_buffer, card_size); + int i = 0, k = 0, segmentNum = 0, segment_len = 0, segment_flag = 0; + int wrp = 0, wrc = 0, dcf = 0; + uint8_t stamp_len = 0; + char token_type[6] = {0, 0, 0, 0, 0, 0}; + int bIsSegmented = 0; + int return_value = PM3_SUCCESS; + // Output CDF System area (9 bytes) plus remaining header area (12 bytes) - crc = data[4]; + int crc = data[4]; uint32_t calc_crc = CRC8Legic(data, 4); + PrintAndLogEx(INFO, "--------------------- " _CYAN_("Tag Information") " ----------------------"); + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, " " _CYAN_("CDF: System Area")); PrintAndLogEx(INFO, "------------------------------------------------------"); PrintAndLogEx(SUCCESS, "MCD: " _GREEN_("%02X") " MSN: " _GREEN_("%s") " MCC: " _GREEN_("%02X") " ( %s )", @@ -196,6 +197,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff goto out; } + PrintAndLogEx(INFO, ""); PrintAndLogEx(SUCCESS, _CYAN_("ADF: User Area")); PrintAndLogEx(INFO, "------------------------------------------------------"); @@ -271,14 +273,14 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff PrintAndLogEx(INFO, ""); PrintAndLogEx(SUCCESS, _CYAN_("WRC protected area:") " (I %d | K %d| WRC %d)", i, k, wrc); PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "## | data"); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "## | data | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); for (k = i; k < (i + wrc); ++k) data[k] ^= crc; print_hex_break(data + i, wrc, 16); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); PrintAndLogEx(INFO, ""); i += wrc; } @@ -286,14 +288,14 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff if (hasWRP) { PrintAndLogEx(SUCCESS, _CYAN_("Remaining write protected area:") " (I %d | K %d | WRC %d | WRP %d WRP_LEN %d)", i, k, wrc, wrp, wrp_len); PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "## | data"); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "## | data | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); for (k = i; k < (i + wrp_len); ++k) data[k] ^= crc; print_hex_break(data + i, wrp_len, 16); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); PrintAndLogEx(INFO, ""); i += wrp_len; @@ -309,14 +311,14 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff if (remain_seg_payload_len > 0) { PrintAndLogEx(SUCCESS, _CYAN_("Remaining segment payload:") " (I %d | K %d | Remain LEN %d)", i, k, remain_seg_payload_len); PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "## | data"); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "## | data | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); for (k = i; k < (i + remain_seg_payload_len); ++k) data[k] ^= crc; print_hex_break(data + i, remain_seg_payload_len, 16); - PrintAndLogEx(INFO, "---+------------------------------------------------\n"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------\n"); i += remain_seg_payload_len; } // end with last segment @@ -354,10 +356,10 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff if (hasWRC) { PrintAndLogEx(SUCCESS, _CYAN_("WRC protected area:") " (I %d | WRC %d)", i, wrc); PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "## | data"); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "## | data | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); print_hex_break(data + i, wrc, 16); - PrintAndLogEx(INFO, "----+------------------------------------------------"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); PrintAndLogEx(INFO, ""); i += wrc; } @@ -365,10 +367,10 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff if (hasWRP) { PrintAndLogEx(SUCCESS, _CYAN_("Remaining write protected area:") " (I %d | WRC %d | WRP %d | WRP_LEN %d)", i, wrc, wrp, wrp_len); PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "## | data"); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "## | data | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); print_hex_break(data + i, wrp_len, 16); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); PrintAndLogEx(INFO, ""); i += wrp_len; @@ -386,10 +388,10 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff if (remain_seg_payload_len > 0) { PrintAndLogEx(SUCCESS, _CYAN_("Remaining segment payload:") " (I %d | Remain LEN %d)", i, remain_seg_payload_len); PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "## | data"); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "## | data | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); print_hex_break(data + i, remain_seg_payload_len, 16); - PrintAndLogEx(INFO, "---+------------------------------------------------\n"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------\n"); } } @@ -411,9 +413,11 @@ static int CmdLegicInfo(const char *Cmd) { void *argtable[] = { arg_param_begin, + arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); + bool verbose = arg_get_lit(ctx, 1); CLIParserFree(ctx); uint16_t datalen = 0; @@ -429,7 +433,7 @@ static int CmdLegicInfo(const char *Cmd) { // allocate receiver buffer uint8_t *data = calloc(card.cardsize, sizeof(uint8_t)); - if (!data) { + if (data == NULL) { PrintAndLogEx(WARNING, "Cannot allocate memory"); return PM3_EMALLOC; } @@ -441,8 +445,15 @@ static int CmdLegicInfo(const char *Cmd) { return status; } - decode_and_print_memory(card.cardsize, data); + if (verbose) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "## | 0 1 2 3 4 5 6 7 8 9 A B C D E F | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); + print_hex_break(data, datalen, 16); + } + PrintAndLogEx(NORMAL, ""); + decode_and_print_memory(card.cardsize, data); free(data); return PM3_SUCCESS; } @@ -1186,6 +1197,7 @@ static int CmdLegicEView(const char *Cmd) { arg_lit0(NULL, "22", "LEGIC Prime MIM22"), arg_lit0(NULL, "256", "LEGIC Prime MIM256 (def)"), arg_lit0(NULL, "1024", "LEGIC Prime MIM1024"), + arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -1193,6 +1205,7 @@ static int CmdLegicEView(const char *Cmd) { bool m1 = arg_get_lit(ctx, 1); bool m2 = arg_get_lit(ctx, 2); bool m3 = arg_get_lit(ctx, 3); + bool verbose = arg_get_lit(ctx, 4); CLIParserFree(ctx); // validations @@ -1224,10 +1237,16 @@ static int CmdLegicEView(const char *Cmd) { return PM3_ETIMEOUT; } + if (verbose) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "## | 0 1 2 3 4 5 6 7 8 9 A B C D E F | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); + print_hex_break(dump, bytes, 16); + } + PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "## | 0 1 2 3 4 5 6 7 8 9 A B C D E F | ascii"); - PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); - print_hex_break(dump, bytes, 16); + decode_and_print_memory(bytes, dump); + free(dump); return PM3_SUCCESS; } @@ -1380,12 +1399,14 @@ static int CmdLegicView(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_str1("f", "file", "", "Filename of dump"), + arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); int fnlen = 0; char filename[FILE_PATH_SIZE]; CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); + bool verbose = arg_get_lit(ctx, 2); CLIParserFree(ctx); // read dump file @@ -1396,14 +1417,15 @@ static int CmdLegicView(const char *Cmd) { return res; } - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "## | 0 1 2 3 4 5 6 7 8 9 A B C D E F | ascii"); - PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); - print_hex_break(dump, bytes_read, 16); + if (verbose) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "## | 0 1 2 3 4 5 6 7 8 9 A B C D E F | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); + print_hex_break(dump, bytes_read, 16); + } PrintAndLogEx(NORMAL, ""); decode_and_print_memory(bytes_read, dump); - free(dump); return PM3_SUCCESS; } From c6cc1b241686d5f2d1a584c8d9e6a7ba45edbfdf Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 14:22:39 +0200 Subject: [PATCH 0256/1034] fix the loadfile command and more colors --- client/luascripts/hf_legic.lua | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/client/luascripts/hf_legic.lua b/client/luascripts/hf_legic.lua index 6dcb9d8ca..fb98b777e 100644 --- a/client/luascripts/hf_legic.lua +++ b/client/luascripts/hf_legic.lua @@ -269,7 +269,6 @@ local function padString(str) if (#str == 1) then return '0'..str end - return str end @@ -336,6 +335,7 @@ end --- -- check availability of file function file_check(file_name) + if not file_name then return false, "" end local arr = split(file_name, ".") local path = core.search_file(arr[1], "."..arr[2]) @@ -2424,8 +2424,7 @@ function modifyMode() --- -- load file into mainTAG ["lf"] = function(x) - - if (type(x)=='string' and file_check(x)) then + if (x and not x=="" and type(x)=='string' and file_check(x)) then filename = x else filename = input("enter filename: ", "legic.temp") @@ -2782,7 +2781,7 @@ function modifyMode() } repeat -- default message / prompt - ic=input("Legic command? ('h' for help - 'q' for quit)", "h") + ic=input("Legic command? ('"..acy.."h"..acr.."' for help - '"..acy.."q"..acr.."' for quit)", acy.."h"..acr) -- command actions decisions (first match, longer commands before shorter) if (type(actions[string.lower(string.sub(ic,0,3))])=='function') then actions[string.lower(string.sub(ic,0,3))](string.sub(ic,5)) From ef03d0bee0d480f5f39e660ef46d95439d287267 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 15:51:35 +0200 Subject: [PATCH 0257/1034] text --- client/src/cmdlf.c | 15 +++++++++------ client/src/cmdlfmotorola.c | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index e6585d334..81ca3a081 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -352,18 +352,21 @@ int CmdLFCommandRead(const char *Cmd) { } } - PrintAndLogEx(DEBUG, "Cmd read - settings"); + PrintAndLogEx(DEBUG, _CYAN_("Cmd read - settings")); PrintAndLogEx(DEBUG, "-------------------"); - PrintAndLogEx(DEBUG, "delay: %u , zero %u , one %u , samples %u", payload.delay, payload.period_0, payload.period_1, payload.samples); - PrintAndLogEx(DEBUG, "Extra symbols"); + PrintAndLogEx(DEBUG, "delay... " _YELLOW_("%u")" zero... " _YELLOW_("%u") " one... " _YELLOW_("%u")" samples... %u", payload.delay, payload.period_0, payload.period_1, payload.samples); + PrintAndLogEx(DEBUG, ""); + PrintAndLogEx(DEBUG, _CYAN_("Extra symbols")); PrintAndLogEx(DEBUG, "-------------"); for (i = 0; i < LF_CMDREAD_MAX_EXTRA_SYMBOLS; i++) { if (payload.symbol_extra[i] == 0x00) continue; - PrintAndLogEx(DEBUG, " %c - %u", payload.symbol_extra[i], payload.period_extra[i]); + PrintAndLogEx(DEBUG, " %c ... " _YELLOW_("%u"), payload.symbol_extra[i], payload.period_extra[i]); } - PrintAndLogEx(DEBUG, "data: %s", payload.data); + PrintAndLogEx(DEBUG, ""); + PrintAndLogEx(DEBUG, "data... " _YELLOW_("%s"), payload.data); + PrintAndLogEx(DEBUG, ""); if (cm) { PrintAndLogEx(INFO, "Press " _GREEN_("") " to exit"); @@ -1825,7 +1828,7 @@ static command_t CommandTable[] = { {"io", CmdLFIO, AlwaysAvailable, "{ ioProx RFIDs... }"}, {"jablotron", CmdLFJablotron, AlwaysAvailable, "{ Jablotron RFIDs... }"}, {"keri", CmdLFKeri, AlwaysAvailable, "{ KERI RFIDs... }"}, - {"motorola", CmdLFMotorola, AlwaysAvailable, "{ Motorola RFIDs... }"}, + {"motorola", CmdLFMotorola, AlwaysAvailable, "{ Motorola Flexpass RFIDs... }"}, {"nedap", CmdLFNedap, AlwaysAvailable, "{ Nedap RFIDs... }"}, {"nexwatch", CmdLFNEXWATCH, AlwaysAvailable, "{ NexWatch RFIDs... }"}, {"noralsy", CmdLFNoralsy, AlwaysAvailable, "{ Noralsy RFIDs... }"}, diff --git a/client/src/cmdlfmotorola.c b/client/src/cmdlfmotorola.c index 90394be54..cd0c91864 100644 --- a/client/src/cmdlfmotorola.c +++ b/client/src/cmdlfmotorola.c @@ -128,7 +128,7 @@ int demodMotorola(bool verbose) { static int CmdMotorolaDemod(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf motorola demod", - "Try to find Motorola preamble, if found decode / descramble data", + "Try to find Motorola Flexpass preamble, if found decode / descramble data", "lf motorola demod" ); @@ -144,7 +144,7 @@ static int CmdMotorolaDemod(const char *Cmd) { static int CmdMotorolaReader(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf motorola reader", - "read a Motorola tag", + "read a Motorola Flexpass tag", "lf motorola reader -@ -> continuous reader mode" ); From eaf8aac21700b371ce544220707b2c75ff3a996d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 17:34:27 +0200 Subject: [PATCH 0258/1034] better smoothing in the envelope command and also allow for other raw demod to accept a larger clock as in param --- client/src/cmddata.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 43fa20911..be8f5e716 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -740,7 +740,7 @@ static int Cmdaskbiphdemod(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - uint8_t clk = (uint8_t)arg_get_int_def(ctx, 1, 0) & 0xFF; + uint16_t clk = (uint16_t)arg_get_int_def(ctx, 1, 0); bool invert = arg_get_lit(ctx, 2); int offset = arg_get_int_def(ctx, 3, 0); uint8_t max_err = (uint8_t)arg_get_int_def(ctx, 4, 50) & 0xFF; @@ -1397,7 +1397,7 @@ static int CmdNRZrawDemod(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - uint8_t clk = (uint8_t)arg_get_int_def(ctx, 1, 0) & 0xFF; + uint16_t clk = (uint16_t)arg_get_int_def(ctx, 1, 0); bool invert = arg_get_lit(ctx, 2); uint8_t max_err = (uint8_t)arg_get_int_def(ctx, 3, 100) & 0xFF; CLIParserFree(ctx); @@ -1427,7 +1427,7 @@ int CmdPSK1rawDemod(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - uint8_t clk = (uint8_t)arg_get_int_def(ctx, 1, 0) & 0xFF; + uint16_t clk = (uint16_t)arg_get_int_def(ctx, 1, 0); bool invert = arg_get_lit(ctx, 2); uint8_t max_err = (uint8_t)arg_get_int_def(ctx, 3, 100) & 0xFF; CLIParserFree(ctx); @@ -3370,14 +3370,19 @@ static int envelope_square(const int *in, int *out, size_t len) { return PM3_EINVARG; } - for (size_t i = 0; i < len - 5; i++) { - if (in[i] == 0 && in[i + 1] == 0 && in[i + 2] == 0 && in[i + 3] == 0 && in[i + 4] == 0) { - i += 4; + size_t i = 0; + while ( i < len - 8) { + + if (in[i] == 0 && in[i+1] == 0 && in[i+2] == 0 && in[i+3] == 0 && + in[i+4] == 0 && in[i+5] == 0 && in[i+6] == 0 && in[i+7] == 0) { + + i += 8; continue; } out[i] = 255; + i++; } return PM3_SUCCESS; } From 2d5724f4c38a8858c286972727b0a951b8d42750 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 18:19:02 +0200 Subject: [PATCH 0259/1034] text --- CHANGELOG.md | 3 ++- client/src/cmdlfcotag.c | 28 ++++++++++++++++++++++++++++ client/src/comms.c | 2 +- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3caa5134d..bcd40f863 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Change `hf legic view/eview/info` - now in verbose mode will print raw hex dump (@iceman1001) + - Changed `lf cotag demo` - a new decoder (@iceman1001) + - Changed `hf legic view/eview/info` - now in verbose mode will print raw hex dump (@iceman1001) - Added new test for cotag demod using data commands in pm3_test.sh (@iceman1001) - Added new sample trace file for cotag w fc/272. Thanks s1acky! (@iceman1001) - Fixed `hf legic eload` - now it doesn't crash client (@doegox) diff --git a/client/src/cmdlfcotag.c b/client/src/cmdlfcotag.c index 8161ceacc..2306b0024 100644 --- a/client/src/cmdlfcotag.c +++ b/client/src/cmdlfcotag.c @@ -25,6 +25,7 @@ #include "ui.h" // PrintAndLog #include "ctype.h" // tolower #include "cliparser.h" +#include "commonutil.h" // reflect32 static int CmdHelp(const char *Cmd); @@ -37,6 +38,9 @@ int demodCOTAG(bool verbose) { size_t bitlen = COTAG_BITS; memcpy(bits, g_DemodBuffer, COTAG_BITS); + uint8_t inv_bits[COTAG_BITS] = {0}; + memcpy(inv_bits, g_DemodBuffer, COTAG_BITS); + uint8_t alignPos = 0; uint16_t err = manrawdecode(bits, &bitlen, 1, &alignPos); if (err > 50) { @@ -55,14 +59,38 @@ int demodCOTAG(bool verbose) { uint32_t raw3 = bytebits_to_byteLSBF(bits + 64, 32); uint32_t raw4 = bytebits_to_byteLSBF(bits + 96, 32); + /* fc 161: 1010 0001 -> LSB 1000 0101 cn 33593 1000 0011 0011 1001 -> LSB 1001 1100 1100 0001 cccc cccc cccc cccc ffffffff 0 1001 1100 1100 0001 1000 0101 0000 0000 100001010000000001111011100000011010000010000000000000000000000000000000000000000000000000000000100111001100000110000101000 1001 1100 1100 0001 10000101 + + COTAG FC/272 + 1 7 7 D E 2 0 0 8 0 0 0 3 9 2 0 D 0 4 0000000000000 + 0001 0111 0111 1101 1110 0010 0000 0000 1000 0000 0000 0000 0011 1001 0010 0000 1101 0000 0100 0000000000000000000000000000000000000000000000000000000 + 0001 0111 0111 1101 1110 001 0010 1001 0011 1000 0110 0100 + */ PrintAndLogEx(SUCCESS, "COTAG Found: FC " _GREEN_("%u")", CN: " _GREEN_("%u")" Raw: %08X%08X%08X%08X", fc, cn, raw1, raw2, raw3, raw4); + + bitlen = COTAG_BITS; + err = manrawdecode(inv_bits, &bitlen, 0, &alignPos); + if (err < 50) { + uint32_t cn_large = bytebits_to_byte(inv_bits + 1, 23); + cn_large = reflect32(cn_large) >> 9; + uint8_t a = bytebits_to_byte(inv_bits + 48, 4); + uint8_t b = bytebits_to_byte(inv_bits + 52, 4); + uint8_t c = bytebits_to_byte(inv_bits + 56, 4); + uint16_t fc_large = NIBBLE_LOW(c) << 8 | NIBBLE_LOW(b) << 4 | NIBBLE_LOW(a); + + raw1 = bytebits_to_byte(inv_bits, 32); + raw2 = bytebits_to_byte(inv_bits + 32, 32); + raw3 = bytebits_to_byte(inv_bits + 64, 32); + raw4 = bytebits_to_byte(inv_bits + 96, 32); + PrintAndLogEx(SUCCESS, " FC " _GREEN_("%u")", CN: " _GREEN_("%u")" Raw: %08X%08X%08X%08X", fc_large, cn_large, raw1, raw2, raw3, raw4); + } return PM3_SUCCESS; } diff --git a/client/src/comms.c b/client/src/comms.c index 3b7509a38..1422c42d3 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -97,7 +97,7 @@ void SendCommandOLD(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, v #endif if (!g_session.pm3_present) { - PrintAndLogEx(WARNING, "Sending bytes to Proxmark3 failed." _YELLOW_("offline")); + PrintAndLogEx(WARNING, "Sending bytes to Proxmark3 failed ( " _RED_("offline") " )"); return; } From c6b720fdcda6bf6b482df637e5f608ae47e68b41 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 23:26:04 +0200 Subject: [PATCH 0260/1034] make data grid less verbose --- client/src/cmddata.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index be8f5e716..3dc6494c0 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1601,7 +1601,8 @@ int CmdGrid(const char *Cmd) { g_PlotGridX = arg_get_dbl_def(ctx, 1, 0); g_PlotGridY = arg_get_dbl_def(ctx, 2, 0); CLIParserFree(ctx); - PrintAndLogEx(INFO, "Setting X %.0f Y %.0f", g_PlotGridX, g_PlotGridY); + + PrintAndLogEx(DEBUG, "Setting X %.0f Y %.0f", g_PlotGridX, g_PlotGridY); g_PlotGridXdefault = g_PlotGridX; g_PlotGridYdefault = g_PlotGridY; RepaintGraphWindow(); From 8e387231491e1e46c067c1d8d1c4c946cf0944a0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 23:27:30 +0200 Subject: [PATCH 0261/1034] just in case psk get odd clocks in some old system --- common/lfdemod.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/common/lfdemod.c b/common/lfdemod.c index 5e2f1fa54..f7f734eb4 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -1118,10 +1118,12 @@ uint16_t countFC(const uint8_t *bits, size_t size, bool fskAdj) { fcH = fcLens[best2]; fcL = fcLens[best1]; } + /* if ((size - 180) / fcH / 3 > fcCnts[best1] + fcCnts[best2]) { if (g_debugMode == 2) prnt("DEBUG countfc: fc is too large: %zu > %u. Not psk or fsk", (size - 180) / fcH / 3, fcCnts[best1] + fcCnts[best2]); return 0; //lots of waves not psk or fsk } + */ // TODO: take top 3 answers and compare to known Field clocks to get top 2 uint16_t fcs = (((uint16_t)fcH) << 8) | fcL; @@ -1132,8 +1134,8 @@ uint16_t countFC(const uint8_t *bits, size_t size, bool fskAdj) { // detect psk clock by reading each phase shift // a phase shift is determined by measuring the sample length of each wave int DetectPSKClock(uint8_t *dest, size_t size, int clock, size_t *firstPhaseShift, uint8_t *curPhase, uint8_t *fc) { - uint8_t clk[] = {255, 16, 32, 40, 50, 64, 100, 128, 255}; //255 is not a valid clock - uint16_t loopCnt = 4096; //don't need to loop through entire array... + uint16_t clk[] = {255, 16, 32, 40, 50, 64, 100, 128, 256, 272, 384}; // 255 is not a valid clock + uint16_t loopCnt = 4096; // don't need to loop through entire array... if (size < 160 + 20) return 0; // size must be larger than 20 here, and 160 later on. @@ -1154,8 +1156,8 @@ int DetectPSKClock(uint8_t *dest, size_t size, int clock, size_t *firstPhaseShif uint8_t clkCnt; uint16_t waveLenCnt, fullWaveLen = 0; - uint16_t bestErr[] = {1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000}; - uint16_t peaksdet[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; + uint16_t bestErr[] = {1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000}; + uint16_t peaksdet[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; //find start of modulating data in trace size_t i = findModStart(dest, size, *fc); @@ -1177,7 +1179,7 @@ int DetectPSKClock(uint8_t *dest, size_t size, int clock, size_t *firstPhaseShif } //test each valid clock from greatest to smallest to see which lines up - for (clkCnt = 7; clkCnt >= 1 ; clkCnt--) { + for (clkCnt = 9; clkCnt >= 1 ; clkCnt--) { uint8_t tol = *fc / 2; size_t lastClkBit = firstFullWave; //set end of wave as clock align size_t waveStart = 0; @@ -1217,8 +1219,8 @@ int DetectPSKClock(uint8_t *dest, size_t size, int clock, size_t *firstPhaseShif } //all tested with errors //return the highest clk with the most peaks found - uint8_t best = 7; - for (i = 7; i >= 1; i--) { + uint8_t best = 9; + for (i = 9; i >= 1; i--) { if (peaksdet[i] > peaksdet[best]) best = i; From c8acec74589d69815f234e7bf236e4b65d1827ee Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 23:30:53 +0200 Subject: [PATCH 0262/1034] clean up --- client/src/cmdhfmfp.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/client/src/cmdhfmfp.h b/client/src/cmdhfmfp.h index 29723b204..e8be12e07 100644 --- a/client/src/cmdhfmfp.h +++ b/client/src/cmdhfmfp.h @@ -20,10 +20,6 @@ #include "common.h" - -#define AES_KEY_LEN 16 -#define MAX_AES_KEYS_LIST_LEN 1024 - typedef enum { MFP_UNKNOWN = 0, DESFIRE_MF3ICD40, From 4b64a45899cb5dc0eea5840b214f70436ee4d7fc Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 11:15:52 +0200 Subject: [PATCH 0263/1034] make style --- client/src/cmddata.c | 6 +++--- client/src/cmdhf14a.c | 2 +- client/src/cmdhflegic.c | 4 ++-- doc/commands.json | 29 +++++++++++++++++------------ doc/commands.md | 2 +- 5 files changed, 24 insertions(+), 19 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 3dc6494c0..74273921f 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3373,10 +3373,10 @@ static int envelope_square(const int *in, int *out, size_t len) { size_t i = 0; - while ( i < len - 8) { + while (i < len - 8) { - if (in[i] == 0 && in[i+1] == 0 && in[i+2] == 0 && in[i+3] == 0 && - in[i+4] == 0 && in[i+5] == 0 && in[i+6] == 0 && in[i+7] == 0) { + if (in[i] == 0 && in[i + 1] == 0 && in[i + 2] == 0 && in[i + 3] == 0 && + in[i + 4] == 0 && in[i + 5] == 0 && in[i + 6] == 0 && in[i + 7] == 0) { i += 8; continue; diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index cff210ad9..f2ca64076 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -757,7 +757,7 @@ int CmdHF14ASim(const char *Cmd) { "hf 14a sim -t 10 -> ST25TA IKEA Rothult\n" "hf 14a sim -t 11 -> Javacard (JCOP)\n" "hf 14a sim -t 12 -> 4K Seos card\n" - ); + ); void *argtable[] = { arg_param_begin, diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 639947311..160eac05b 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -84,7 +84,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff uint32_t calc_crc = CRC8Legic(data, 4); PrintAndLogEx(INFO, "--------------------- " _CYAN_("Tag Information") " ----------------------"); - PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, " " _CYAN_("CDF: System Area")); PrintAndLogEx(INFO, "------------------------------------------------------"); PrintAndLogEx(SUCCESS, "MCD: " _GREEN_("%02X") " MSN: " _GREEN_("%s") " MCC: " _GREEN_("%02X") " ( %s )", @@ -417,7 +417,7 @@ static int CmdLegicInfo(const char *Cmd) { arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool verbose = arg_get_lit(ctx, 1); + bool verbose = arg_get_lit(ctx, 1); CLIParserFree(ctx); uint16_t datalen = 0; diff --git a/doc/commands.json b/doc/commands.json index 7e6061ec3..84b09c862 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -1297,19 +1297,21 @@ "hf 14a sim -t 7 -> MFU EV1 / NTAG 215 Amiibo", "hf 14a sim -t 8 -> MIFARE Classic 4k", "hf 14a sim -t 9 -> FM11RF005SH Shanghai Metro", - "hf 14a sim -t 10 -> ST25TA IKEA Rothult" + "hf 14a sim -t 10 -> ST25TA IKEA Rothult", + "hf 14a sim -t 11 -> Javacard (JCOP)", + "hf 14a sim -t 12 -> 4K Seos card" ], "offline": false, "options": [ "-h, --help This help", - "-t, --type <1-10> Simulation type to use", + "-t, --type <1-12> Simulation type to use", "-u, --uid <4|7|10> hex bytes UID", "-n, --num Exit simulation after blocks have been read by reader. 0 = infinite", "-x Performs the 'reader attack', nr/ar attack against a reader", "--sk Fill simulator keys from found keys", "-v, --verbose verbose output" ], - "usage": "hf 14a sim [-hxv] -t <1-10> [-u ] [-n ] [--sk]" + "usage": "hf 14a sim [-hxv] -t <1-12> [-u ] [-n ] [--sk]" }, "hf 14a sniff": { "command": "hf 14a sniff", @@ -3617,9 +3619,10 @@ "-h, --help This help", "--22 LEGIC Prime MIM22", "--256 LEGIC Prime MIM256 (def)", - "--1024 LEGIC Prime MIM1024" + "--1024 LEGIC Prime MIM1024", + "-v, --verbose verbose output" ], - "usage": "hf legic eview [-h] [--22] [--256] [--1024]" + "usage": "hf legic eview [-hv] [--22] [--256] [--1024]" }, "hf legic info": { "command": "hf legic info", @@ -3629,9 +3632,10 @@ ], "offline": false, "options": [ - "-h, --help This help" + "-h, --help This help", + "-v, --verbose verbose output" ], - "usage": "hf legic info [-h]" + "usage": "hf legic info [-hv]" }, "hf legic list": { "command": "hf legic list", @@ -3723,9 +3727,10 @@ "offline": true, "options": [ "-h, --help This help", - "-f, --file Filename of dump" + "-f, --file Filename of dump", + "-v, --verbose verbose output" ], - "usage": "hf legic view [-h] -f " + "usage": "hf legic view [-hv] -f " }, "hf legic wipe": { "command": "hf legic wipe", @@ -9204,7 +9209,7 @@ }, "lf motorola demod": { "command": "lf motorola demod", - "description": "Try to find Motorola preamble, if found decode / descramble data", + "description": "Try to find Motorola Flexpass preamble, if found decode / descramble data", "notes": [ "lf motorola demod" ], @@ -9216,7 +9221,7 @@ }, "lf motorola reader": { "command": "lf motorola reader", - "description": "read a Motorola tag", + "description": "read a Motorola Flexpass tag", "notes": [ "lf motorola reader -@ -> continuous reader mode" ], @@ -11751,6 +11756,6 @@ "metadata": { "commands_extracted": 681, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-21T16:22:30" + "extracted_on": "2023-07-23T09:14:42" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index cd538fe3c..adbecb5bf 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -1070,7 +1070,7 @@ Check column "offline" for their availability. ### lf motorola - { Motorola RFIDs... } + { Motorola Flexpass RFIDs... } |command |offline |description |------- |------- |----------- From c5c829bce2efd76140c9163821c87d246a225e2b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 11:57:03 +0200 Subject: [PATCH 0264/1034] a bunch of minor textual changes, hiding things when no compilation support for it, also fixed the loop in keyroll generation. Added the skeleton SAM command --- CHANGELOG.md | 20 ++++---- client/src/cmdhficlass.c | 108 +++++++++++++++++++++++++++------------ common/cardhelper.c | 68 +++++++++++++++++++----- common/cardhelper.h | 1 + 4 files changed, 143 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bcd40f863..51a06b0db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `hf iclass config` - now loops correct in keyroll generation (@iceman1001) + - Added `hf iclass sam` - skeleton command (@iceman1001) - Changed `lf cotag demo` - a new decoder (@iceman1001) - Changed `hf legic view/eview/info` - now in verbose mode will print raw hex dump (@iceman1001) - Added new test for cotag demod using data commands in pm3_test.sh (@iceman1001) @@ -15,7 +17,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Added `hf mfp list` - interprets MIFARE Plus commands in traces (@DidierA) - Changed `hf legic sim` - loop and return codes on deviceside updated to DEFINES (@iceman1001) - Changed `hf legic einfo` - now accepts the three different cardsizes as params (@iceman1001) - - Fix `lf cotag reader -1` - now doesn't fail (@iceman1001) + - Fixed `lf cotag reader -1` - now doesn't fail (@iceman1001) - Added support for LZ4 compressed hadnested tables (@doegox) - Changed `emv reader -v` - now tries to print found transactions logs (@iceman1001) - Added ISO4217 currency lookup (@iceman1001) @@ -23,10 +25,10 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `emv reader -v` - now can decode track1/2 data if found (@iceman1001) - Added `emv reader` - act as a EMV reader (@iceman1001) - Added support for Apple Wallet NFC Passes with the Value Added Services protocol implementation (@gm3197) - - Fix compiling liblua on iOS (@The-SamminAter) + - Fixed compiling liblua on iOS (@The-SamminAter) - Changed `hf_mf_luxeo_dump.lua` - now have list of keys to iterate (@iceman1001) - Fixed the timeout of TCP connections (@wh201906) - - Made the connection timeout configurable (@wh201906) + - Changed the connection timeout configurable (@wh201906) ## [Seven.4.16717][2023-06-25] - Change `hf 14a info` - now identifes QL88 tags (@iceman1001) @@ -43,7 +45,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Added more default keys (@iceman1001) Thanks anon! - Fixed `pm3-flash-all` shell script now correctly identify the if running on outdated bootloader (@iceman1001) - Fixed `hf 15693/iclass sniff` trace timings (@nvx) - - Fix LegicCash segment handling in `hf_legic.lua` script (@jmichelp) + - Fixed LegicCash segment handling in `hf_legic.lua` script (@jmichelp) - Fixed `trace list` - now handles marking of crc bytes w color a bit better (@iceman1001) - Changed `hf mfu pwdgen -r` - now generates pwd/pack for Philips Sonicare, thanks @ckuenzi, @atc1441 (@iceman1001) - Changed `hf mfu info` - now detects Philips Sonicare devices (@iceman1001) @@ -133,11 +135,11 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `hf mfu info` - now also does a simple OTP fingerprinting (@iceman1001) - Changed `hf mf wrbl` - now checks for strict readonly ACL's in the data to write (@iceman1001) - Changed `hf mf view` - verbose printing if strict readonly ACL's exists in dump file (@iceman1001) - - Add command `piv authsign` to get a buffer signed by the selected key (@jmichelp) - - Add command `piv scan` which tries to read all known containers on PIV (@jmichelp) - - Add support for PIV commands, over wired and contactless interfaces (@jmichelp) - - Add `--shallow` option to `hf iclass` reader commands to do shallow (ASK) reader modulation instead of OOK (@nvx) - - Improved NXP SLI/SLIX series tag identification (@nvx) + - Added command `piv authsign` to get a buffer signed by the selected key (@jmichelp) + - Added command `piv scan` which tries to read all known containers on PIV (@jmichelp) + - Added support for PIV commands, over wired and contactless interfaces (@jmichelp) + - Added `--shallow` option to `hf iclass` reader commands to do shallow (ASK) reader modulation instead of OOK (@nvx) + - Change and improved NXP SLI/SLIX series tag identification (@nvx) - Fixed buffer overflow in "lf em 4x05 sniff" (@HeinrichsH) - Fixed potential NULL array printing (@jmichelp) - Added PIV aid to resource file (@jmichelp) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index a48bbb98e..7ccec1221 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -40,7 +40,6 @@ #include "crypto/asn1utils.h" // ASN1 decoder #include "preferences.h" - #define PICOPASS_BLOCK_SIZE 8 #define NUM_CSNS 9 #define ICLASS_KEYS_MAX 8 @@ -400,9 +399,10 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke // encrypted 0xFF PrintAndLogEx(INFO, "Setting 0xFF's... " NOLF); - for (uint8_t i = 0x16; i <= app1_limit; i++) { + for (uint16_t i = 0x16; i < (app1_limit + 1); i++) { memcpy(data + (i * 8), ffs, sizeof(ffs)); } + PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); // revert potential modified app1_limit @@ -443,14 +443,14 @@ static void fuse_config(const picopass_hdr_t *hdr) { uint16_t otp = (hdr->conf.otp[1] << 8 | hdr->conf.otp[0]); - PrintAndLogEx(INFO, " Raw: " _YELLOW_("%s"), sprint_hex((uint8_t *)&hdr->conf, 8)); - PrintAndLogEx(INFO, " " _YELLOW_("%02X") "..................... app limit", hdr->conf.app_limit); - PrintAndLogEx(INFO, " " _YELLOW_("%04X") " ( %5u )...... OTP", otp, otp); - PrintAndLogEx(INFO, " " _YELLOW_("%02X") "............ block write lock", hdr->conf.block_writelock); - PrintAndLogEx(INFO, " " _YELLOW_("%02X") "......... chip", hdr->conf.chip_config); - PrintAndLogEx(INFO, " " _YELLOW_("%02X") "...... mem", hdr->conf.mem_config); - PrintAndLogEx(INFO, " " _YELLOW_("%02X") "... EAS", hdr->conf.eas); - PrintAndLogEx(INFO, " " _YELLOW_("%02X") " fuses", hdr->conf.fuses); + PrintAndLogEx(INFO, " Raw... " _YELLOW_("%s"), sprint_hex((uint8_t *)&hdr->conf, 8)); + PrintAndLogEx(INFO, " " _YELLOW_("%02X") " ( %3u )............. app limit", hdr->conf.app_limit, hdr->conf.app_limit); + PrintAndLogEx(INFO, " " _YELLOW_("%04X") " ( %5u )...... OTP", otp, otp); + PrintAndLogEx(INFO, " " _YELLOW_("%02X") "............ block write lock", hdr->conf.block_writelock); + PrintAndLogEx(INFO, " " _YELLOW_("%02X") "......... chip", hdr->conf.chip_config); + PrintAndLogEx(INFO, " " _YELLOW_("%02X") "...... mem", hdr->conf.mem_config); + PrintAndLogEx(INFO, " " _YELLOW_("%02X") "... EAS", hdr->conf.eas); + PrintAndLogEx(INFO, " " _YELLOW_("%02X") " fuses", hdr->conf.fuses); uint8_t fuses = hdr->conf.fuses; @@ -594,47 +594,47 @@ static void mem_app_config(const picopass_hdr_t *hdr) { PrintAndLogEx(INFO, " * Kd, Debit key, AA1 Kc, Credit key, AA2 *"); uint8_t keyAccess = isset(mem, 0x01); if (keyAccess) { - PrintAndLogEx(INFO, " Read AA1....... debit"); - PrintAndLogEx(INFO, " Write AA1...... debit"); - PrintAndLogEx(INFO, " Read AA2....... credit"); - PrintAndLogEx(INFO, " Write AA2...... credit"); + PrintAndLogEx(INFO, " Read AA1..... debit"); + PrintAndLogEx(INFO, " Write AA1.... debit"); + PrintAndLogEx(INFO, " Read AA2..... credit"); + PrintAndLogEx(INFO, " Write AA2.... credit"); PrintAndLogEx(INFO, " Debit........ debit or credit"); PrintAndLogEx(INFO, " Credit....... credit"); } else { - PrintAndLogEx(INFO, " Read AA1....... debit or credit"); - PrintAndLogEx(INFO, " Write AA1...... credit"); - PrintAndLogEx(INFO, " Read AA2....... debit or credit"); - PrintAndLogEx(INFO, " Write AA2...... credit"); + PrintAndLogEx(INFO, " Read AA1..... debit or credit"); + PrintAndLogEx(INFO, " Write AA1.... credit"); + PrintAndLogEx(INFO, " Read AA2..... debit or credit"); + PrintAndLogEx(INFO, " Write AA2.... credit"); PrintAndLogEx(INFO, " Debit........ debit or credit"); PrintAndLogEx(INFO, " Credit....... credit"); } } void print_picopass_info(const picopass_hdr_t *hdr) { - PrintAndLogEx(INFO, "-------------------- " _CYAN_("card configuration") " --------------------"); + PrintAndLogEx(INFO, "-------------------- " _CYAN_("Card configuration") " --------------------"); fuse_config(hdr); mem_app_config(hdr); } void print_picopass_header(const picopass_hdr_t *hdr) { - PrintAndLogEx(INFO, "--------------------------- " _CYAN_("card") " ---------------------------"); - PrintAndLogEx(SUCCESS, " CSN: " _GREEN_("%s") " uid", sprint_hex(hdr->csn, sizeof(hdr->csn))); - PrintAndLogEx(SUCCESS, " Config: %s Card configuration", sprint_hex((uint8_t *)&hdr->conf, sizeof(hdr->conf))); - PrintAndLogEx(SUCCESS, "E-purse: %s Card challenge, CC", sprint_hex(hdr->epurse, sizeof(hdr->epurse))); + PrintAndLogEx(INFO, "--------------------------- " _CYAN_("Card") " ---------------------------"); + PrintAndLogEx(SUCCESS, " CSN... " _GREEN_("%s") " uid", sprint_hex(hdr->csn, sizeof(hdr->csn))); + PrintAndLogEx(SUCCESS, " Config... %s card configuration", sprint_hex((uint8_t *)&hdr->conf, sizeof(hdr->conf))); + PrintAndLogEx(SUCCESS, "E-purse... %s card challenge, CC", sprint_hex(hdr->epurse, sizeof(hdr->epurse))); if (memcmp(hdr->key_d, zeros, sizeof(zeros)) && memcmp(hdr->key_d, empty, sizeof(empty))) { - PrintAndLogEx(SUCCESS, " Kd: " _YELLOW_("%s") " debit key", sprint_hex(hdr->key_d, sizeof(hdr->key_d))); + PrintAndLogEx(SUCCESS, " Kd... " _YELLOW_("%s") " debit key", sprint_hex(hdr->key_d, sizeof(hdr->key_d))); } else { - PrintAndLogEx(SUCCESS, " Kd: %s debit key ( hidden )", sprint_hex(hdr->key_d, sizeof(hdr->key_d))); + PrintAndLogEx(SUCCESS, " Kd... %s debit key ( hidden )", sprint_hex(hdr->key_d, sizeof(hdr->key_d))); } if (memcmp(hdr->key_c, zeros, sizeof(zeros)) && memcmp(hdr->key_c, empty, sizeof(empty))) { - PrintAndLogEx(SUCCESS, " Kc: " _YELLOW_("%s") " credit key", sprint_hex(hdr->key_c, sizeof(hdr->key_c))); + PrintAndLogEx(SUCCESS, " Kc... " _YELLOW_("%s") " credit key", sprint_hex(hdr->key_c, sizeof(hdr->key_c))); } else { - PrintAndLogEx(SUCCESS, " Kc: %s credit key ( hidden )", sprint_hex(hdr->key_c, sizeof(hdr->key_c))); + PrintAndLogEx(SUCCESS, " Kc... %s credit key ( hidden )", sprint_hex(hdr->key_c, sizeof(hdr->key_c))); } - PrintAndLogEx(SUCCESS, " AIA: %s Application Issuer area", sprint_hex(hdr->app_issuer_area, sizeof(hdr->app_issuer_area))); + PrintAndLogEx(SUCCESS, " AIA... %s application issuer area", sprint_hex(hdr->app_issuer_area, sizeof(hdr->app_issuer_area))); } static int CmdHFiClassList(const char *Cmd) { @@ -2469,7 +2469,7 @@ static int CmdHFiClass_ReadBlock(const char *Cmd) { return PM3_SUCCESS; // crypto helper available. - PrintAndLogEx(INFO, "----------------------------- " _CYAN_("cardhelper") " -----------------------------"); + PrintAndLogEx(INFO, "----------------------------- " _CYAN_("Cardhelper") " -----------------------------"); switch (blockno) { case 6: { @@ -2509,7 +2509,7 @@ static int CmdHFiClass_ReadBlock(const char *Cmd) { PrintAndLogEx(SUCCESS, " bin : %s", pbin); PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "------------------------------ " _CYAN_("wiegand") " -------------------------------"); + PrintAndLogEx(INFO, "------------------------------ " _CYAN_("Wiegand") " -------------------------------"); wiegand_message_t packed = initialize_message_object(top, mid, bot, 0); HIDTryUnpack(&packed); } else { @@ -4147,6 +4147,48 @@ static int CmdHFiClassConfigCard(const char *Cmd) { return PM3_SUCCESS; } +static int CmdHFiClassSAM(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf iclass sam", + "Manage via SAM\n", + "hf iclass sam\n" + ); + + void *argtable[] = { + arg_param_begin, + arg_str0("d", "data", "", "data"), + arg_lit0("v", "verbose", "verbose output"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + int dlen = 0; + uint8_t data[128] = {0}; + CLIGetHexWithReturn(ctx, 1, data, &dlen); + + bool verbose = arg_get_lit(ctx, 2); + CLIParserFree(ctx); + + Iso7816CommandChannel channel = CC_CONTACT; + if (IfPm3Smartcard() == false) { + if (channel == CC_CONTACT) { + PrintAndLogEx(WARNING, "PM3 does not have SMARTCARD support, exiting"); + return PM3_EDEVNOTSUPP; + } + } + + int res = IsHIDSamPresent(verbose); + if (res != PM3_SUCCESS) { + return res; + } + + SetAPDULogging(verbose); + +// do things with sending apdus.. + + SetAPDULogging(false); + return PM3_SUCCESS; +} + static command_t CommandTable[] = { {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("operations") " ---------------------"}, {"help", CmdHelp, AlwaysAvailable, "This help"}, @@ -4156,7 +4198,7 @@ static command_t CommandTable[] = { {"list", CmdHFiClassList, AlwaysAvailable, "List iclass history"}, {"rdbl", CmdHFiClass_ReadBlock, IfPm3Iclass, "Read Picopass / iCLASS block"}, {"reader", CmdHFiClassReader, IfPm3Iclass, "Act like a Picopass / iCLASS reader"}, - {"restore", CmdHFiClassRestore, IfPm3Iclass, "Restore a dump file onto a Picopass / iCLASS tag"}, + {"restore", CmdHFiClassRestore, IfPm3Iclass, "Restore a dump file onto a Picopass / iCLASS tag"}, {"sniff", CmdHFiClassSniff, IfPm3Iclass, "Eavesdrop Picopass / iCLASS communication"}, {"wrbl", CmdHFiClass_WriteBlock, IfPm3Iclass, "Write Picopass / iCLASS block"}, @@ -4165,7 +4207,7 @@ static command_t CommandTable[] = { {"chk", CmdHFiClassCheckKeys, IfPm3Iclass, "Check keys"}, {"loclass", CmdHFiClass_loclass, AlwaysAvailable, "Use loclass to perform bruteforce reader attack"}, {"lookup", CmdHFiClassLookUp, AlwaysAvailable, "Uses authentication trace to check for key in dictionary file"}, - {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("simulation") " ---------------------"}, + {"-----------", CmdHelp, IfPm3Iclass, "--------------------- " _CYAN_("simulation") " ---------------------"}, {"sim", CmdHFiClassSim, IfPm3Iclass, "Simulate iCLASS tag"}, {"eload", CmdHFiClassELoad, IfPm3Iclass, "Load Picopass / iCLASS dump file into emulator memory"}, {"esave", CmdHFiClassESave, IfPm3Iclass, "Save emulator memory to file"}, @@ -4180,6 +4222,8 @@ static command_t CommandTable[] = { {"managekeys", CmdHFiClassManageKeys, AlwaysAvailable, "Manage keys to use with iclass commands"}, {"permutekey", CmdHFiClassPermuteKey, AlwaysAvailable, "Permute function from 'heart of darkness' paper"}, {"view", CmdHFiClassView, AlwaysAvailable, "Display content from tag dump file"}, + {"-----------", CmdHelp, IfPm3Smartcard, "--------------------- " _CYAN_("SAM") " ---------------------"}, + {"sam", CmdHFiClassSAM, IfPm3Smartcard, "SAM tests"}, {NULL, NULL, NULL, NULL} }; diff --git a/common/cardhelper.c b/common/cardhelper.c index c8c8b6bd8..fe0f7957f 100644 --- a/common/cardhelper.c +++ b/common/cardhelper.c @@ -35,26 +35,68 @@ // look for CardHelper bool IsCardHelperPresent(bool verbose) { - if (IfPm3Smartcard()) { - int resp_len = 0; - uint8_t version[] = {0x96, 0x69, 0x00, 0x00, 0x00}; - uint8_t resp[30] = {0}; - ExchangeAPDUSC(verbose, version, sizeof(version), true, true, resp, sizeof(resp), &resp_len); + if (IfPm3Smartcard() == false) { + return false; + } - if (resp_len < 8) { - return false; - } + int resp_len = 0; + uint8_t version[] = {0x96, 0x69, 0x00, 0x00, 0x00}; + uint8_t resp[30] = {0}; + ExchangeAPDUSC(verbose, version, sizeof(version), true, true, resp, sizeof(resp), &resp_len); - if (strstr("CryptoHelper", (char *)resp) == 0) { - if (verbose) { - PrintAndLogEx(INFO, "Found smart card helper"); - } - return true; + if (resp_len < 8) { + return false; + } + + if (strstr("CryptoHelper", (char *)resp) == 0) { + if (verbose) { + PrintAndLogEx(INFO, "Found smart card helper"); } + return true; } return false; } +bool IsHIDSamPresent(bool verbose) { + + if (IfPm3Smartcard() == false) { + return false; + } + + // detect SAM + smart_card_atr_t card; + smart_select(verbose, &card); + if (!card.atr_len) { + PrintAndLogEx(ERR, "Can't get ATR from a smart card"); + return false; + } + + // SAM identification + uint8_t sam_atr[] = {0x3B, 0x95, 0x96, 0x80, 0xB1, 0xFE, 0x55, 0x1F, 0xC7, 0x47, 0x72, 0x61, 0x63, 0x65, 0x13}; + if (memcmp(card.atr, sam_atr, card.atr_len) < 0) { + + uint8_t sam_atr2[] = {0x3b, 0x90, 0x96, 0x91, 0x81, 0xb1, 0xfe, 0x55, 0x1f, 0xc7, 0xd4}; + if (memcmp(card.atr, sam_atr2, card.atr_len) < 0) { + if (verbose) { + PrintAndLogEx(SUCCESS, "Not detecting a SAM"); + } + return false; + } + } + + // Suspect some SAMs has version name in their ATR + uint8_t T0 = card.atr[1]; + uint8_t K = T0 & 0x0F; + if (K > 4 && verbose) { + if (byte_strstr(card.atr, card.atr_len, (const uint8_t*)"Grace", 5)> -1) { + PrintAndLogEx(SUCCESS, "SAM (Grace) detected"); + } else if (byte_strstr(card.atr, card.atr_len, (const uint8_t*)"Hopper", 6) > -1) { + PrintAndLogEx(SUCCESS, "SAM (Hopper) detected"); + } + } + return true; +} + static bool executeCrypto(uint8_t ins, uint8_t *src, uint8_t *dest) { uint8_t cmd[] = {0x96, ins, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; memcpy(cmd + 5, src, 8); diff --git a/common/cardhelper.h b/common/cardhelper.h index 9574397a1..b88ff1e16 100644 --- a/common/cardhelper.h +++ b/common/cardhelper.h @@ -22,6 +22,7 @@ #include #include "common.h" +bool IsHIDSamPresent(bool verbose); bool IsCardHelperPresent(bool verbose); bool Encrypt(uint8_t *src, uint8_t *dest); bool Decrypt(uint8_t *src, uint8_t *dest); From 514af4cf845dcf6529eae4cd7c1b0d4fe99956ff Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 12:51:12 +0200 Subject: [PATCH 0265/1034] missing break --- armsrc/iso14443a.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index c47339497..74caf51c1 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1054,8 +1054,8 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r case 1: { // MIFARE Classic 1k rATQA[0] = 0x04; sak = 0x08; + break; } - break; case 2: { // MIFARE Ultralight rATQA[0] = 0x44; sak = 0x00; @@ -1085,32 +1085,31 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r // READ_SIG memcpy(rSIGN, mfu_header->signature, 32); AddCrc14A(rSIGN, sizeof(rSIGN) - 2); - + break; } - break; case 3: { // MIFARE DESFire rATQA[0] = 0x44; rATQA[1] = 0x03; sak = 0x20; memcpy(rRATS, "\x06\x75\x77\x81\x02\x80\x00\x00", 8); + break; } - break; case 4: { // ISO/IEC 14443-4 - javacard (JCOP) rATQA[0] = 0x04; sak = 0x28; + break; } - break; case 5: { // MIFARE TNP3XXX rATQA[0] = 0x01; rATQA[1] = 0x0f; sak = 0x01; + break; } - break; case 6: { // MIFARE Mini 320b rATQA[0] = 0x44; sak = 0x09; + break; } - break; case 7: { // NTAG rATQA[0] = 0x44; sak = 0x00; @@ -1140,41 +1139,39 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r // READ_SIG memcpy(rSIGN, mfu_header->signature, 32); AddCrc14A(rSIGN, sizeof(rSIGN) - 2); - + break; } - break; case 8: { // MIFARE Classic 4k rATQA[0] = 0x02; sak = 0x18; + break; } - break; case 9: { // FM11RF005SH (Shanghai Metro) rATQA[0] = 0x03; rATQA[1] = 0x00; sak = 0x0A; + break; } - break; case 10: { // ST25TA IKEA Rothult rATQA[0] = 0x42; rATQA[1] = 0x00; sak = 0x20; + break; } - break; case 11: { // ISO/IEC 14443-4 - javacard (JCOP) rATQA[0] = 0x04; sak = 0x20; + break; } - break; case 12: { // HID Seos 4K card rATQA[0] = 0x01; sak = 0x20; + break; } - default: { if (g_dbglevel >= DBG_ERROR) Dbprintf("Error: unknown tagtype (%d)", tagType); return false; } - break; } // if uid not supplied then get from emulator memory From a761c9765a4339170b837a7ffa4a87972e93a631 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 12:53:04 +0200 Subject: [PATCH 0266/1034] style --- client/src/pm3line_vocabulory.h | 1 + common/cardhelper.c | 4 ++-- doc/commands.json | 18 ++++++++++++++++-- doc/commands.md | 1 + 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index b3f177ed2..2646a0477 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -288,6 +288,7 @@ const static vocabulory_t vocabulory[] = { { 1, "hf iclass managekeys" }, { 1, "hf iclass permutekey" }, { 1, "hf iclass view" }, + { 0, "hf iclass sam" }, { 1, "hf legic help" }, { 0, "hf legic dump" }, { 0, "hf legic info" }, diff --git a/common/cardhelper.c b/common/cardhelper.c index fe0f7957f..7523c9a72 100644 --- a/common/cardhelper.c +++ b/common/cardhelper.c @@ -88,9 +88,9 @@ bool IsHIDSamPresent(bool verbose) { uint8_t T0 = card.atr[1]; uint8_t K = T0 & 0x0F; if (K > 4 && verbose) { - if (byte_strstr(card.atr, card.atr_len, (const uint8_t*)"Grace", 5)> -1) { + if (byte_strstr(card.atr, card.atr_len, (const uint8_t *)"Grace", 5) > -1) { PrintAndLogEx(SUCCESS, "SAM (Grace) detected"); - } else if (byte_strstr(card.atr, card.atr_len, (const uint8_t*)"Hopper", 6) > -1) { + } else if (byte_strstr(card.atr, card.atr_len, (const uint8_t *)"Hopper", 6) > -1) { PrintAndLogEx(SUCCESS, "SAM (Hopper) detected"); } } diff --git a/doc/commands.json b/doc/commands.json index 84b09c862..4506b7450 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3303,6 +3303,20 @@ ], "usage": "hf iclass restore [-hv] -f [-k ] [--ki ] --first --last [--credit] [--elite] [--raw] [--shallow]" }, + "hf iclass sam": { + "command": "hf iclass sam", + "description": "Manage via SAM", + "notes": [ + "hf iclass sam" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-d, --data data", + "-v, --verbose verbose output" + ], + "usage": "hf iclass sam [-hv] [-d ]" + }, "hf iclass sim": { "command": "hf iclass sim", "description": "Simulate a iCLASS legacy/standard tag", @@ -11754,8 +11768,8 @@ } }, "metadata": { - "commands_extracted": 681, + "commands_extracted": 682, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-23T09:14:42" + "extracted_on": "2023-07-23T09:59:37" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index adbecb5bf..99ddf0efb 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -427,6 +427,7 @@ Check column "offline" for their availability. |`hf iclass managekeys `|Y |`Manage keys to use with iclass commands` |`hf iclass permutekey `|Y |`Permute function from 'heart of darkness' paper` |`hf iclass view `|Y |`Display content from tag dump file` +|`hf iclass sam `|N |`SAM tests` ### hf legic From 7473bebdbd6a9f82d18f96e39b413c61e907ae58 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 22:32:59 +0200 Subject: [PATCH 0267/1034] coverty --- common/commonutil.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/common/commonutil.c b/common/commonutil.c index 4af16b3c0..5bb77a936 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -161,27 +161,39 @@ uint64_t bytes_to_num(uint8_t *src, size_t len) { } uint16_t MemLeToUint2byte(const uint8_t *data) { - return (data[1] << 8) + data[0]; + return (uint16_t)( + (data[1] << 8) + data[0] + ); } uint32_t MemLeToUint3byte(const uint8_t *data) { - return (data[2] << 16) + (data[1] << 8) + data[0]; + return (uint32_t)( + (data[2] << 16) + (data[1] << 8) + data[0] + ); } uint32_t MemLeToUint4byte(const uint8_t *data) { - return (data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0]; + return (uint32_t)( + (data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0] + ); } uint16_t MemBeToUint2byte(const uint8_t *data) { - return (data[0] << 8) + data[1]; + return (uint16_t)( + (data[0] << 8) + data[1] + ); } uint32_t MemBeToUint3byte(const uint8_t *data) { - return (data[0] << 16) + (data[1] << 8) + data[2]; + return (uint32_t)( + (data[0] << 16) + (data[1] << 8) + data[2] + ); } uint32_t MemBeToUint4byte(const uint8_t *data) { - return (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3]; + return (uint32_t)( + (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3] + ); } void Uint2byteToMemLe(uint8_t *data, uint16_t value) { From 95e8f0693eb1786c6f3e145dc591b50554706118 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 22:38:02 +0200 Subject: [PATCH 0268/1034] coverity --- client/src/nfc/ndef.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index 44ef70ee6..fc829e8d7 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -121,7 +121,7 @@ static int ndefDecodePayload(NDEFHeader_t *ndef, bool verbose); static uint16_t ndefTLVGetLength(const uint8_t *data, size_t *indx) { uint16_t len = 0; if (data[0] == 0xFF) { - len = (data[1] << 8) + data[2]; + len = MemBeToUint2byte(data + 1); *indx += 3; } else { len = data[0]; From d6142296f376b1a3204e51f3d40e22f33a2ac423 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 23:23:45 +0200 Subject: [PATCH 0269/1034] coverity --- client/deps/hardnested/hardnested_bruteforce.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/client/deps/hardnested/hardnested_bruteforce.c b/client/deps/hardnested/hardnested_bruteforce.c index 17edfaad0..ee0c1c8f2 100644 --- a/client/deps/hardnested/hardnested_bruteforce.c +++ b/client/deps/hardnested/hardnested_bruteforce.c @@ -412,11 +412,14 @@ static bool read_bench_data(statelist_t *test_candidates) { return false; } free(path); - bytes_read = fread(&nonces_to_bruteforce, 1, sizeof(nonces_to_bruteforce), benchfile); - if (bytes_read != sizeof(nonces_to_bruteforce)) { + + // read 4 bytes of data ? + bytes_read = fread(&nonces_to_bruteforce, 1, sizeof(uint32_t), benchfile); + if (bytes_read != sizeof(uint32_t)) { fclose(benchfile); return false; } + for (uint32_t i = 0; i < nonces_to_bruteforce && i < 256; i++) { bytes_read = fread(&bf_test_nonce[i], 1, sizeof(uint32_t), benchfile); if (bytes_read != sizeof(uint32_t)) { @@ -430,11 +433,13 @@ static bool read_bench_data(statelist_t *test_candidates) { return false; } } + bytes_read = fread(&num_states, 1, sizeof(uint32_t), benchfile); if (bytes_read != sizeof(uint32_t)) { fclose(benchfile); return false; } + for (states_read = 0; states_read < MIN(num_states, TEST_BENCH_SIZE); states_read++) { bytes_read = fread(test_candidates->states[EVEN_STATE] + states_read, 1, sizeof(uint32_t), benchfile); if (bytes_read != sizeof(uint32_t)) { @@ -442,9 +447,11 @@ static bool read_bench_data(statelist_t *test_candidates) { return false; } } + for (uint32_t i = states_read; i < TEST_BENCH_SIZE; i++) { test_candidates->states[EVEN_STATE][i] = test_candidates->states[EVEN_STATE][i - states_read]; } + for (uint32_t i = states_read; i < num_states; i++) { bytes_read = fread(&temp, 1, sizeof(uint32_t), benchfile); if (bytes_read != sizeof(uint32_t)) { @@ -452,6 +459,7 @@ static bool read_bench_data(statelist_t *test_candidates) { return false; } } + for (states_read = 0; states_read < MIN(num_states, TEST_BENCH_SIZE); states_read++) { bytes_read = fread(test_candidates->states[ODD_STATE] + states_read, 1, sizeof(uint32_t), benchfile); if (bytes_read != sizeof(uint32_t)) { @@ -459,6 +467,7 @@ static bool read_bench_data(statelist_t *test_candidates) { return false; } } + for (uint32_t i = states_read; i < TEST_BENCH_SIZE; i++) { test_candidates->states[ODD_STATE][i] = test_candidates->states[ODD_STATE][i - states_read]; } From 7558846e7609728664594632e3eb5bd4b361756f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 23:47:22 +0200 Subject: [PATCH 0270/1034] text --- common_arm/Makefile.hal | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/common_arm/Makefile.hal b/common_arm/Makefile.hal index 9679382ce..f9d7d2fe4 100644 --- a/common_arm/Makefile.hal +++ b/common_arm/Makefile.hal @@ -48,7 +48,9 @@ Known definitions: endef define HELP_DEFINITIONS + Options to define platform, platform extras and/or standalone mode: + (1) Run make with your PLATFORM, PLATFORM_EXTRAS and/or STANDALONE choices as follows: make PLATFORM=PM3GENERIC STANDALONE=$(HELP_EXAMPLE_STANDALONE) @@ -65,6 +67,7 @@ STANDALONE= For Proxmarks with only 256k, you can define PLATFORM_SIZE=256 + to be warned if the image is too big for your device and you can specify which parts to skip in order to reduce the size: SKIP_LF=1 @@ -80,6 +83,7 @@ SKIP_NFCBARCODE=1 SKIP_HFSNIFF=1 SKIP_HFPLOT=1 SKIP_ZX8211=1 + endef define KNOWN_DEFINITIONS From 5013d672087422f06e631ccdef5b832f4b20fa28 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 00:08:23 +0200 Subject: [PATCH 0271/1034] maybe coverity likes this better --- client/src/cmdhfmf.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 0531b4f28..a02026b06 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -366,10 +366,11 @@ static int mf_print_keys(uint16_t n, uint8_t *d) { for (uint16_t i = 0; i < n; i++) { if (mfIsSectorTrailer(i)) { - e_sector[mfSectorNum(i)].foundKey[0] = 1; - e_sector[mfSectorNum(i)].Key[0] = bytes_to_num(d + (i * MFBLOCK_SIZE), MIFARE_KEY_SIZE); - e_sector[mfSectorNum(i)].foundKey[1] = 1; - e_sector[mfSectorNum(i)].Key[1] = bytes_to_num(d + (i * MFBLOCK_SIZE) + 10, MIFARE_KEY_SIZE); + uint8_t sec = mfSectorNum(i); + e_sector[sec].foundKey[0] = 1; + e_sector[sec].Key[0] = bytes_to_num(d + (i * MFBLOCK_SIZE), MIFARE_KEY_SIZE); + e_sector[sec].foundKey[1] = 1; + e_sector[sec].Key[1] = bytes_to_num(d + (i * MFBLOCK_SIZE) + 10, MIFARE_KEY_SIZE); } } printKeyTable(sectors, e_sector); From 300d274d43fbefad171ee84e274dbbd68de74b54 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 00:14:56 +0200 Subject: [PATCH 0272/1034] coverity migth consider this to be better --- client/src/flash.c | 3 ++- client/src/proxendian.h | 8 ++++++-- common/commonutil.c | 12 ++++++------ 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/client/src/flash.c b/client/src/flash.c index cca2de7b1..4629dbdcd 100644 --- a/client/src/flash.c +++ b/client/src/flash.c @@ -240,7 +240,8 @@ static int print_and_validate_version(struct version_information_t *vi) { return PM3_EFILE; } - char temp[PM3_CMD_DATA_SIZE - 12]; // same limit as for ARM image + // same limit as for ARM image + char temp[PM3_CMD_DATA_SIZE - 12] = {0}; FormatVersionInformation(temp, sizeof(temp), "", vi); PrintAndLogEx(SUCCESS, _CYAN_("ELF file version") _YELLOW_(" %s"), temp); diff --git a/client/src/proxendian.h b/client/src/proxendian.h index 17003e75e..05b699747 100644 --- a/client/src/proxendian.h +++ b/client/src/proxendian.h @@ -53,11 +53,15 @@ #else static inline uint16_t le16(uint16_t v) { - return (v >> 8) | (v << 8); + return (uint16_t)( + (v >> 8) | (v << 8) + ); } static inline uint32_t le32(uint32_t v) { - return (le16(v) << 16) | (le16(v >> 16)); + return (uint32_t)( + (le16(v) << 16) | (le16(v >> 16)) + ); } #endif // HOST_LITTLE_ENDIAN diff --git a/common/commonutil.c b/common/commonutil.c index 5bb77a936..6790d835a 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -160,37 +160,37 @@ uint64_t bytes_to_num(uint8_t *src, size_t len) { return num; } -uint16_t MemLeToUint2byte(const uint8_t *data) { +inline uint16_t MemLeToUint2byte(const uint8_t *data) { return (uint16_t)( (data[1] << 8) + data[0] ); } -uint32_t MemLeToUint3byte(const uint8_t *data) { +inline uint32_t MemLeToUint3byte(const uint8_t *data) { return (uint32_t)( (data[2] << 16) + (data[1] << 8) + data[0] ); } -uint32_t MemLeToUint4byte(const uint8_t *data) { +inline uint32_t MemLeToUint4byte(const uint8_t *data) { return (uint32_t)( (data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0] ); } -uint16_t MemBeToUint2byte(const uint8_t *data) { +inline uint16_t MemBeToUint2byte(const uint8_t *data) { return (uint16_t)( (data[0] << 8) + data[1] ); } -uint32_t MemBeToUint3byte(const uint8_t *data) { +inline uint32_t MemBeToUint3byte(const uint8_t *data) { return (uint32_t)( (data[0] << 16) + (data[1] << 8) + data[2] ); } -uint32_t MemBeToUint4byte(const uint8_t *data) { +inline uint32_t MemBeToUint4byte(const uint8_t *data) { return (uint32_t)( (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3] ); From d19c9a262a898fc333c2a4bef912c4f2b8eb5eed Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 00:53:35 +0200 Subject: [PATCH 0273/1034] style, same name everywhere in project --- client/src/cmddata.c | 8 ++++---- client/src/cmdhf.c | 4 ++-- client/src/cmdhfmfhard.c | 15 ++++++++++++++- client/src/cmdlfhitag.c | 6 +++--- client/src/cmdtrace.c | 6 +++--- 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 74273921f..2208a34d4 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1758,8 +1758,8 @@ int getSamplesEx(uint32_t start, uint32_t end, bool verbose, bool ignore_lf_conf if (verbose) PrintAndLogEx(INFO, "Reading " _YELLOW_("%u") " bytes from device memory", n); - PacketResponseNG response; - if (!GetFromDevice(BIG_BUF, got, n, start, NULL, 0, &response, 10000, true)) { + PacketResponseNG resp; + if (!GetFromDevice(BIG_BUF, got, n, start, NULL, 0, &resp, 10000, true)) { PrintAndLogEx(WARNING, "timeout while waiting for reply."); return PM3_ETIMEOUT; } @@ -1769,8 +1769,8 @@ int getSamplesEx(uint32_t start, uint32_t end, bool verbose, bool ignore_lf_conf uint8_t bits_per_sample = 8; // Old devices without this feature would send 0 at arg[0] - if (response.oldarg[0] > 0 && (ignore_lf_config == false)) { - sample_config *sc = (sample_config *) response.data.asBytes; + if (resp.oldarg[0] > 0 && (ignore_lf_config == false)) { + sample_config *sc = (sample_config *) resp.data.asBytes; if (verbose) PrintAndLogEx(INFO, "Samples @ " _YELLOW_("%d") " bits/smpl, decimation 1:%d ", sc->bits_per_sample, sc->decimation); bits_per_sample = sc->bits_per_sample; } diff --git a/client/src/cmdhf.c b/client/src/cmdhf.c index b15671272..b5cff4e19 100644 --- a/client/src/cmdhf.c +++ b/client/src/cmdhf.c @@ -426,8 +426,8 @@ int handle_hf_plot(void) { uint8_t buf[FPGA_TRACE_SIZE] = {0}; - PacketResponseNG response; - if (GetFromDevice(FPGA_MEM, buf, FPGA_TRACE_SIZE, 0, NULL, 0, &response, 4000, true) == false) { + PacketResponseNG resp; + if (GetFromDevice(FPGA_MEM, buf, FPGA_TRACE_SIZE, 0, NULL, 0, &resp, 4000, true) == false) { PrintAndLogEx(WARNING, "timeout while waiting for reply."); return PM3_ETIMEOUT; } diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index d66b3eb43..3d85a2c60 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -1562,7 +1562,20 @@ static int acquire_nonces(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_ float brute_force_depth; FILE *fnonces = NULL; - PacketResponseNG resp; + + // init to ZERO + PacketResponseNG resp = { + .cmd = 0, + .length = 0, + .magic = 0, + .status = 0, + .crc = 0, + .ng = false, + }; + resp.oldarg[0] = 0; + resp.oldarg[1] = 0; + resp.oldarg[2] = 0; + memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); uint8_t write_buf[9]; char progress_text[80]; diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 7fd58c798..4df9ca4a7 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -72,14 +72,14 @@ static int CmdLFHitagList(const char *Cmd) { } // Query for the actual size of the trace - PacketResponseNG response; - if (!GetFromDevice(BIG_BUF, got, PM3_CMD_DATA_SIZE, 0, NULL, 0, &response, 2500, false)) { + PacketResponseNG resp; + if (!GetFromDevice(BIG_BUF, got, PM3_CMD_DATA_SIZE, 0, NULL, 0, &resp, 2500, false)) { PrintAndLogEx(WARNING, "command execution time out"); free(got); return PM3_ETIMEOUT; } - uint16_t traceLen = response.arg[2]; + uint16_t traceLen = resp.arg[2]; if (traceLen > PM3_CMD_DATA_SIZE) { uint8_t *p = realloc(got, traceLen); if (p == NULL) { diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 0d47d2d7c..7efb8bc35 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -986,15 +986,15 @@ static int download_trace(void) { PrintAndLogEx(INFO, "downloading tracelog data from device"); // Query for the size of the trace, downloading PM3_CMD_DATA_SIZE - PacketResponseNG response; - if (!GetFromDevice(BIG_BUF, gs_trace, PM3_CMD_DATA_SIZE, 0, NULL, 0, &response, 4000, true)) { + PacketResponseNG resp; + if (!GetFromDevice(BIG_BUF, gs_trace, PM3_CMD_DATA_SIZE, 0, NULL, 0, &resp, 4000, true)) { PrintAndLogEx(WARNING, "timeout while waiting for reply."); free(gs_trace); gs_trace = NULL; return PM3_ETIMEOUT; } - gs_traceLen = response.oldarg[2]; + gs_traceLen = resp.oldarg[2]; // if tracelog buffer was larger and we need to download more. if (gs_traceLen > PM3_CMD_DATA_SIZE) { From 8029e081535672dae582c7be6a8349cce0aa9c0e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 00:54:12 +0200 Subject: [PATCH 0274/1034] cppchecker, make sure struct is initialized to zero --- client/src/comms.c | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/client/src/comms.c b/client/src/comms.c index 1422c42d3..7bd553f20 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -742,9 +742,21 @@ static size_t communication_delay(void) { bool WaitForResponseTimeoutW(uint32_t cmd, PacketResponseNG *response, size_t ms_timeout, bool show_warning) { PacketResponseNG resp; - - if (response == NULL) + if (response == NULL) { response = &resp; + } + + // init to ZERO + resp.cmd = 0, + resp.length = 0, + resp.magic = 0, + resp.status = 0, + resp.crc = 0, + resp.ng = false, + resp.oldarg[0] = 0; + resp.oldarg[1] = 0; + resp.oldarg[2] = 0; + memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); // Add delay depending on the communication channel & speed if (ms_timeout != (size_t) - 1) @@ -811,8 +823,21 @@ bool GetFromDevice(DeviceMemType_t memtype, uint8_t *dest, uint32_t bytes, uint3 if (bytes == 0) return true; PacketResponseNG resp; - if (response == NULL) + if (response == NULL) { response = &resp; + } + + // init to ZERO + resp.cmd = 0, + resp.length = 0, + resp.magic = 0, + resp.status = 0, + resp.crc = 0, + resp.ng = false, + resp.oldarg[0] = 0; + resp.oldarg[1] = 0; + resp.oldarg[2] = 0; + memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); // clear clearCommandBuffer(); From 38034480ca3cf5627627efd323dcb8e58441f7d3 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 01:42:24 +0200 Subject: [PATCH 0275/1034] text --- client/src/cmdhf14a.c | 26 ++++++++++++-------------- client/src/cmdhffudan.c | 2 +- client/src/cmdhfjooki.c | 4 ++-- client/src/cmdhfmf.c | 28 ++++++++++++++-------------- client/src/cmdhfmfu.c | 8 ++++---- client/src/mifare/mifarehost.c | 14 ++++++++++---- 6 files changed, 43 insertions(+), 39 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index f2ca64076..ac94d8d0c 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -418,11 +418,10 @@ static int CmdHf14AConfig(const char *Cmd) { } int Hf14443_4aGetCardData(iso14a_card_select_t *card) { - SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); + SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; WaitForResponse(CMD_ACK, &resp); - memcpy(card, (iso14a_card_select_t *)resp.data.asBytes, sizeof(iso14a_card_select_t)); uint64_t select_status = resp.oldarg[0]; // 0: couldn't read, 1: OK, with ATS, 2: OK, no ATS, 3: proprietary Anticollision @@ -548,16 +547,17 @@ static int CmdHF14AReader(const char *Cmd) { } bool continuous = arg_get_lit(ctx, 7); - CLIParserFree(ctx); - int res = PM3_SUCCESS; - - if (!disconnectAfter) + if (!disconnectAfter == false) { cm |= ISO14A_NO_DISCONNECT; + } + if (continuous) { PrintAndLogEx(INFO, "Press " _GREEN_("Enter") " to exit"); } + + int res = PM3_SUCCESS; do { clearCommandBuffer(); @@ -570,8 +570,7 @@ static int CmdHF14AReader(const char *Cmd) { if (ISO14A_CONNECT & cm) { PacketResponseNG resp; - if (!WaitForResponseTimeout(CMD_ACK, &resp, 2500)) { - if (!silent) PrintAndLogEx(WARNING, "iso14443a card select failed"); + if (WaitForResponseTimeout(CMD_ACK, &resp, 2500) == false) { DropField(); res = PM3_ESOFT; goto plot; @@ -589,7 +588,6 @@ static int CmdHF14AReader(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - if (!silent) PrintAndLogEx(WARNING, "iso14443a card select failed"); DropField(); res = PM3_ESOFT; goto plot; @@ -625,8 +623,8 @@ static int CmdHF14AReader(const char *Cmd) { } PrintAndLogEx(NORMAL, ""); } - if (!disconnectAfter) { - if (!silent) PrintAndLogEx(SUCCESS, "Card is selected. You can now start sending commands"); + if ((disconnectAfter == false) && (silent == false)) { + PrintAndLogEx(SUCCESS, "Card is selected. You can now start sending commands"); } } plot: @@ -1865,8 +1863,8 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { clearCommandBuffer(); SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT, 0, 0, NULL, 0); PacketResponseNG resp; - if (!WaitForResponseTimeout(CMD_ACK, &resp, 2500)) { - if (verbose) PrintAndLogEx(WARNING, "iso14443a card select failed"); + if (WaitForResponseTimeout(CMD_ACK, &resp, 2500) == false) { + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); DropField(); return 0; } @@ -1883,7 +1881,7 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - if (verbose) PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); DropField(); return select_status; } diff --git a/client/src/cmdhffudan.c b/client/src/cmdhffudan.c index 38ef8eef5..53e580e1b 100644 --- a/client/src/cmdhffudan.c +++ b/client/src/cmdhffudan.c @@ -110,7 +110,7 @@ static int fudan_get_type(iso14a_card_select_t *card, bool verbose) { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT, 0, 0, NULL, 0); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 2500) == false) { - PrintAndLogEx(DEBUG, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); return PM3_ESOFT; } diff --git a/client/src/cmdhfjooki.c b/client/src/cmdhfjooki.c index 93ca6a00a..025fdf5c4 100644 --- a/client/src/cmdhfjooki.c +++ b/client/src/cmdhfjooki.c @@ -200,7 +200,7 @@ static int jooki_create_ndef(uint8_t *b64ndef, uint8_t *ndefrecord) { static void jooki_printEx(uint8_t *b64, uint8_t *iv, uint8_t tid, uint8_t fid, uint8_t *uid, bool verbose) { int idx = jooki_lookup(tid, fid); - PrintAndLogEx(INFO, "Encoded URL.. %s ( %s )", sprint_hex(b64, 12), b64); + PrintAndLogEx(INFO, "Encoded URL.. %s ( " _YELLOW_("%s") " )", sprint_hex(b64, 12), b64); PrintAndLogEx(INFO, "Figurine..... %02x %02x - " _GREEN_("%s, %s") , tid , fid @@ -574,7 +574,7 @@ static int CmdHF14AJookiSim(const char *Cmd) { break; } - if (WaitForResponseTimeout(CMD_HF_MIFARE_SIMULATE, &resp, 1500) == 0) + if (WaitForResponseTimeout(CMD_HF_MIFARE_SIMULATE, &resp, 1500) == false) continue; if (resp.status != PM3_SUCCESS) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index a02026b06..8c03888f0 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -101,8 +101,8 @@ static int GetHFMF14AUID(uint8_t *uid, int *uidlen) { clearCommandBuffer(); SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; - if (!WaitForResponseTimeout(CMD_ACK, &resp, 2500)) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + if (WaitForResponseTimeout(CMD_ACK, &resp, 2500) == false) { + PrintAndLogEx(DEBUG, "iso14443a card select failed"); DropField(); return PM3_ERFTRANS; } @@ -551,13 +551,13 @@ static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t n SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { - PrintAndLogEx(WARNING, "iso14443a card select timeout"); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); return PM3_ETIMEOUT; } uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); return PM3_SUCCESS; } @@ -2487,13 +2487,13 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { - PrintAndLogEx(WARNING, "iso14443a card select timeout"); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); return PM3_ETIMEOUT; } uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); return PM3_ECARDEXCHANGE; } @@ -5248,7 +5248,7 @@ static int CmdHF14AMfCSave(const char *Cmd) { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { - PrintAndLogEx(WARNING, "iso14443a card select timeout"); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); return PM3_ETIMEOUT; } @@ -5260,7 +5260,7 @@ static int CmdHF14AMfCSave(const char *Cmd) { */ uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); return PM3_SUCCESS; } @@ -5398,7 +5398,7 @@ static int CmdHF14AMfCView(const char *Cmd) { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { - PrintAndLogEx(WARNING, "iso14443a card select timeout"); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); return PM3_ETIMEOUT; } @@ -5411,7 +5411,7 @@ static int CmdHF14AMfCView(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); return PM3_ERFTRANS; } @@ -6231,13 +6231,13 @@ int CmdHFMFNDEFFormat(const char *Cmd) { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { - PrintAndLogEx(WARNING, "iso14443a card select timeout"); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); return PM3_ETIMEOUT; } uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); return PM3_SUCCESS; } @@ -7933,7 +7933,7 @@ static int CmdHF14AGen4Save(const char *Cmd) { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { - PrintAndLogEx(WARNING, "iso14443a card select timeout"); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); return PM3_ETIMEOUT; } @@ -7945,7 +7945,7 @@ static int CmdHF14AGen4Save(const char *Cmd) { */ uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); return PM3_SUCCESS; } diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 9f7f54c53..6762d0b1c 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -190,7 +190,7 @@ int ul_read_uid(uint8_t *uid) { // 2: OK, no ATS // 3: proprietary Anticollision if (select_status == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); return PM3_ESOFT; } if (card.uidlen != 7) { @@ -224,14 +224,14 @@ static bool ul_select(iso14a_card_select_t *card) { PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { - PrintAndLogEx(WARNING, "timeout while waiting for reply."); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); DropField(); return false; } else { uint16_t len = (resp.oldarg[1] & 0xFFFF); if (len == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); DropField(); return false; } @@ -1351,7 +1351,7 @@ static mfu_identify_t mfu_ident_table[] = { "Jooki", "0004040201000F03", 12, 32, "E11012000103A00C340329D101255504732E6A6F6F6B692E726F636B732F732F", ul_ev1_pwdgen_def, ul_ev1_packgen_def, - "hf jooki decode -r" + "hf mfu ndefread" }, { "Lego Dimensions", "0004040201000F03", diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 6c9d8caa2..bdf4ec7f1 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -195,15 +195,22 @@ int mfCheckKeys(uint8_t blockNo, uint8_t keyType, bool clear_trace, uint8_t keyc SendCommandNG(CMD_HF_MIFARE_CHKKEYS, data, (5 + 6 * keycnt)); PacketResponseNG resp; - if (!WaitForResponseTimeout(CMD_HF_MIFARE_CHKKEYS, &resp, 2500)) return PM3_ETIMEOUT; - if (resp.status != PM3_SUCCESS) return resp.status; + if (!WaitForResponseTimeout(CMD_HF_MIFARE_CHKKEYS, &resp, 2500)) { + return PM3_ETIMEOUT; + } + if (resp.status != PM3_SUCCESS) { + return resp.status; + } struct kr { uint8_t key[6]; bool found; } PACKED; struct kr *keyresult = (struct kr *)&resp.data.asBytes; - if (!keyresult->found) return PM3_ESOFT; + if (!keyresult->found) { + return PM3_ESOFT; + } + *key = bytes_to_num(keyresult->key, sizeof(keyresult->key)); return PM3_SUCCESS; } @@ -585,7 +592,6 @@ out: return PM3_ESOFT; } - int mfStaticNested(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBlockNo, uint8_t trgKeyType, uint8_t *resultKey) { uint32_t uid; From 10504ae4fd9bb584eae642ec7ea05d6f7b7f0412 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 03:15:14 +0200 Subject: [PATCH 0276/1034] text and increasing a buffer --- .../deps/hardnested/hardnested_bruteforce.c | 2 +- client/src/cmdhffido.c | 30 +++++++++++-------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/client/deps/hardnested/hardnested_bruteforce.c b/client/deps/hardnested/hardnested_bruteforce.c index ee0c1c8f2..6bc400d1d 100644 --- a/client/deps/hardnested/hardnested_bruteforce.c +++ b/client/deps/hardnested/hardnested_bruteforce.c @@ -415,7 +415,7 @@ static bool read_bench_data(statelist_t *test_candidates) { // read 4 bytes of data ? bytes_read = fread(&nonces_to_bruteforce, 1, sizeof(uint32_t), benchfile); - if (bytes_read != sizeof(uint32_t)) { + if (bytes_read != sizeof(uint32_t) || (nonces_to_bruteforce >= 256)) { fclose(benchfile); return false; } diff --git a/client/src/cmdhffido.c b/client/src/cmdhffido.c index a8021e4cf..d3ab66fc6 100644 --- a/client/src/cmdhffido.c +++ b/client/src/cmdhffido.c @@ -78,33 +78,36 @@ static int CmdHFFidoInfo(const char *Cmd) { uint8_t buf[APDU_RES_LEN] = {0}; size_t len = 0; uint16_t sw = 0; - int res = FIDOSelect(true, true, buf, sizeof(buf), &len, &sw); + int res = FIDOSelect(true, true, buf, sizeof(buf), &len, &sw); if (res) { DropField(); return res; } if (sw != ISO7816_OK) { - if (sw) - PrintAndLogEx(INFO, "Not a FIDO card! APDU response: %04x - %s", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); - else - PrintAndLogEx(ERR, "APDU exchange error. Card returns 0x0000."); - + if (sw) { + PrintAndLogEx(INFO, "Not a FIDO card. APDU response: %04x - %s", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); + } else { + PrintAndLogEx(ERR, "APDU exchange error. Card returns 0x0000"); + } DropField(); return PM3_SUCCESS; } - if (!strncmp((char *)buf, "U2F_V2", 7)) { - if (!strncmp((char *)buf, "FIDO_2_0", 8)) { - PrintAndLogEx(INFO, "FIDO2 authenticator detected. Version... " _YELLOW_("%.*s"), (int)len, buf); + if (strncmp((char *)buf, "U2F_V2", 7) == 0) { + if (strncmp((char *)buf, "FIDO_2_0", 8) == 0) { + PrintAndLogEx(INFO, "FIDO2 authenticator"); + PrintAndLogEx(INFO, "Version... " _YELLOW_("%.*s"), (int)len, buf); } else { - PrintAndLogEx(INFO, "FIDO authenticator detected (not standard U2F)."); - PrintAndLogEx(INFO, "Non U2F authenticator version:"); + PrintAndLogEx(INFO, "FIDO authenticator (not standard U2F)"); + PrintAndLogEx(INFO, "Non U2F authenticator"); + PrintAndLogEx(INFO, "version... "); print_buffer((const unsigned char *)buf, len, 1); } } else { - PrintAndLogEx(INFO, "FIDO U2F authenticator detected. Version... " _YELLOW_("%.*s"), (int)len, buf); + PrintAndLogEx(INFO, "FIDO U2F authenticator detected"); + PrintAndLogEx(INFO, "Version... " _YELLOW_("%.*s"), (int)len, buf); } res = FIDO2GetInfo(buf, sizeof(buf), &len, &sw); @@ -112,6 +115,7 @@ static int CmdHFFidoInfo(const char *Cmd) { if (res) { return res; } + if (sw != ISO7816_OK) { PrintAndLogEx(ERR, "FIDO2 version doesn't exist (%04x - %s).", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); return PM3_SUCCESS; @@ -441,7 +445,7 @@ static int CmdHFFidoAuthenticate(const char *cmd) { controlByte = 0x07; uint8_t data[512] = {0}; - uint8_t hdata[250] = {0}; + uint8_t hdata[256] = {0}; bool public_key_loaded = false; uint8_t public_key[65] = {0}; int hdatalen = 0; From fa82c46ff730393df48e49f1fc37485bc31c8596 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 03:15:42 +0200 Subject: [PATCH 0277/1034] minor text --- client/src/cmdhf14a.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index ac94d8d0c..ad0eff3b5 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -2432,22 +2432,22 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { } if (isMifareUltralight) - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mfu info`")); + PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("hf mfu info") "`"); if (isMifarePlus && isMagic == 0 && isEMV == false) - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mfp info`")); + PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("hf mfp info") "`"); if (isMifareDESFire && isMagic == 0 && isEMV == false) - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mfdes info`")); + PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("hf mfdes info") "`"); if (isST) - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf st info`")); + PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("hf st info") "`"); if (isEMV) - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`emv reader`")); + PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("emv reader") "`"); if (isFUDAN) { - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf fudan dump`")); + PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("hf fudan dump") "`"); /* PrintAndLogEx(HINT, " hf 14a raw -a -b 7 -k 26"); PrintAndLogEx(HINT, " hf 14a raw -k -c 3000"); @@ -2507,7 +2507,7 @@ int infoHF14A4Applications(bool verbose) { } else { for (int i = 0; i < ARRAYLEN(hintAIDList); i++) { if (cardFound[i] && strlen(hintAIDList[i].hint)) - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("%s") " commands", hintAIDList[i].hint); + PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("%s") "` commands", hintAIDList[i].hint); } } } From b7900816bd127b85a394855ad5fa877081422834 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 03:16:18 +0200 Subject: [PATCH 0278/1034] checking if calloc failed --- tools/fpga_compress/fpga_compress.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 135125bfc..711cc2f68 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -144,12 +144,15 @@ typedef struct lz4_stream_s { // Call it either with opened infile + outsize=0 // or with opened infile, opened outfiles, num_outfiles and valid outsize static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, long *outsize) { + if (num_outfiles > 10) { return (EXIT_FAILURE); } - LZ4_streamDecode_t lz4StreamDecode_body = {{ 0 }}; - char outbuf[FPGA_RING_BUFFER_BYTES]; + LZ4_streamDecode_t lz4StreamDecode_body = {{ 0 }}; + char outbuf[FPGA_RING_BUFFER_BYTES] = {0}; + + // file size fseek(infile, 0L, SEEK_END); long infile_size = ftell(infile); fseek(infile, 0L, SEEK_SET); @@ -168,17 +171,30 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, char *outbufall = NULL; if (*outsize > 0) { outbufall = calloc(*outsize, sizeof(char)); + if (outbufall == NULL) { + return (EXIT_FAILURE); + } } + char *inbuf = calloc(infile_size, sizeof(char)); + if (inbuf == NULL) { + if (outbufall) { + free(outbufall); + } + return (EXIT_FAILURE); + } + size_t num_read = fread(inbuf, sizeof(char), infile_size, infile); if (num_read != infile_size) { + if (*outsize > 0) { fclose(infile); for (uint16_t j = 0; j < num_outfiles; j++) { fclose(outfiles[j]); } } + if (outbufall) { free(outbufall); } From 72057f9b81796f35574f8080235f9c3fb77a4cd8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 13:34:24 +0200 Subject: [PATCH 0279/1034] text --- client/src/cmdhfmf.c | 21 ++++++++++++++++----- client/src/mifare/mifare4.c | 14 +++++++++++--- client/src/mifare/mifare4.h | 1 + 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 8c03888f0..6f28d7d7c 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -153,26 +153,37 @@ static int initSectorTable(sector_t **src, size_t items) { static void decode_print_st(uint16_t blockno, uint8_t *data) { if (mfIsSectorTrailer(blockno)) { PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "----------------------- " _CYAN_("Sector trailer decoder") " -----------------------"); + PrintAndLogEx(INFO, "-------------------------- " _CYAN_("Sector trailer decoder") " --------------------------"); PrintAndLogEx(INFO, "key A........ " _GREEN_("%s"), sprint_hex_inrow(data, 6)); PrintAndLogEx(INFO, "acr.......... " _GREEN_("%s"), sprint_hex_inrow(data + 6, 3)); PrintAndLogEx(INFO, "user / gpb... " _GREEN_("%02x"), data[9]); PrintAndLogEx(INFO, "key B........ " _GREEN_("%s"), sprint_hex_inrow(data + 10, 6)); - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, " # | Access rights"); - PrintAndLogEx(INFO, "----+-----------------------------------------------------------------"); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, " # | access rights"); + PrintAndLogEx(INFO, "----+-----------------------------------------------------------------------"); if (mfValidateAccessConditions(&data[6]) == false) { PrintAndLogEx(WARNING, _RED_("Invalid Access Conditions")); } + int bln = mfFirstBlockOfSector(mfSectorNum(blockno)); int blinc = (mfNumBlocksPerSector(mfSectorNum(blockno)) > 4) ? 5 : 1; for (int i = 0; i < 4; i++) { PrintAndLogEx(INFO, "%3d%c| " _YELLOW_("%s"), bln, ((blinc > 1) && (i < 3) ? '+' : ' '), mfGetAccessConditionsDesc(i, &data[6])); bln += blinc; + + if (i == 3) { + uint8_t cond = mf_get_accesscondition(i, &data[6]); + if (cond == 0 || cond == 1 || cond == 2) { + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "OBS! Key B is readable, it SHALL NOT be able to authenticate on original MFC"); + } + } } - PrintAndLogEx(INFO, "----------------------------------------------------------------------"); + + + PrintAndLogEx(INFO, "----------------------------------------------------------------------------"); PrintAndLogEx(NORMAL, ""); } } diff --git a/client/src/mifare/mifare4.c b/client/src/mifare/mifare4.c index 7a3ec9f77..420c93a9e 100644 --- a/client/src/mifare/mifare4.c +++ b/client/src/mifare/mifare4.c @@ -83,6 +83,7 @@ bool mfValidateAccessConditions(const uint8_t *data) { return ((nd1 == (d1 ^ 0xF)) && (nd2 == (d2 ^ 0xF)) && (nd3 == (d3 ^ 0xF))); } + bool mfReadOnlyAccessConditions(uint8_t blockn, const uint8_t *data) { uint8_t d1 = NIBBLE_HIGH(data[1]) >> blockn; @@ -98,7 +99,6 @@ bool mfReadOnlyAccessConditions(uint8_t blockn, const uint8_t *data) { return false; } - const char *mfGetAccessConditionsDesc(uint8_t blockn, const uint8_t *data) { uint8_t d1 = NIBBLE_HIGH(data[1]) >> blockn; uint8_t d2 = NIBBLE_LOW(data[2]) >> blockn; @@ -118,9 +118,17 @@ const char *mfGetAccessConditionsDesc(uint8_t blockn, const uint8_t *data) { } }; - static char StaticNone[] = "none"; - return StaticNone; + static char none[] = "none"; + return none; } + +uint8_t mf_get_accesscondition(uint8_t blockn, const uint8_t *data) { + uint8_t d1 = NIBBLE_HIGH(data[1]) >> blockn; + uint8_t d2 = NIBBLE_LOW(data[2]) >> blockn; + uint8_t d3 = NIBBLE_HIGH(data[2]) >> blockn; + return (d1 & 0x01) << 2 | (d2 & 0x01) << 1 | (d3 & 0x01); +} + /* static int CalculateEncIVCommand(mf4Session_t *mf4session, uint8_t *iv, bool verbose) { memcpy(&iv[0], &mf4session->TI, 4); diff --git a/client/src/mifare/mifare4.h b/client/src/mifare/mifare4.h index fee12ef6e..6687930e6 100644 --- a/client/src/mifare/mifare4.h +++ b/client/src/mifare/mifare4.h @@ -73,6 +73,7 @@ int MFPGetVersion(bool activateField, bool leaveSignalON, uint8_t *dataout, int bool mfValidateAccessConditions(const uint8_t *data); bool mfReadOnlyAccessConditions(uint8_t blockn, const uint8_t *data); const char *mfGetAccessConditionsDesc(uint8_t blockn, const uint8_t *data); +uint8_t mf_get_accesscondition(uint8_t blockn, const uint8_t *data); uint8_t mfNumBlocksPerSector(uint8_t sectorNo); uint8_t mfFirstBlockOfSector(uint8_t sectorNo); From fcde2978a8ffe1ccbb86d8ed9103a8c792da47a8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 15:11:21 +0200 Subject: [PATCH 0280/1034] coverity believes somehow the return value from mfSectorNum can be 31. And wants us to check that it is only same size as sectors allocated --- client/src/cmdhfmf.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 6f28d7d7c..bbeaa5fce 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -376,13 +376,14 @@ static int mf_print_keys(uint16_t n, uint8_t *d) { } for (uint16_t i = 0; i < n; i++) { - if (mfIsSectorTrailer(i)) { - uint8_t sec = mfSectorNum(i); - e_sector[sec].foundKey[0] = 1; - e_sector[sec].Key[0] = bytes_to_num(d + (i * MFBLOCK_SIZE), MIFARE_KEY_SIZE); - e_sector[sec].foundKey[1] = 1; - e_sector[sec].Key[1] = bytes_to_num(d + (i * MFBLOCK_SIZE) + 10, MIFARE_KEY_SIZE); + if (mfIsSectorTrailer(i) == false) { + continue; } + uint8_t sec = MIN(sectors, mfSectorNum(i)); + e_sector[sec].foundKey[0] = 1; + e_sector[sec].Key[0] = bytes_to_num(d + (i * MFBLOCK_SIZE), MIFARE_KEY_SIZE); + e_sector[sec].foundKey[1] = 1; + e_sector[sec].Key[1] = bytes_to_num(d + (i * MFBLOCK_SIZE) + 10, MIFARE_KEY_SIZE); } printKeyTable(sectors, e_sector); free(e_sector); From 90d1fed1fab42594d285f7d4d488eb56f3505bb3 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 15:14:17 +0200 Subject: [PATCH 0281/1034] coverity somehow believes we read a long string from a file and the data isnt null terminated (i.e. last char is 0x00) so let see if a ugly + 1 will do the trick --- client/src/flash.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/flash.c b/client/src/flash.c index 4629dbdcd..b1f4a28c9 100644 --- a/client/src/flash.c +++ b/client/src/flash.c @@ -286,7 +286,7 @@ int flash_load(flash_file_t *ctx, bool force) { goto fail; } - ctx->elf = calloc(fsize, sizeof(uint8_t)); + ctx->elf = calloc(fsize + 1, sizeof(uint8_t)); if (!ctx->elf) { PrintAndLogEx(ERR, "Error, cannot allocate memory"); res = PM3_EMALLOC; From fb35a29ba079fb6f38dc02945c0cd99e68e01a1c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 15:18:56 +0200 Subject: [PATCH 0282/1034] coverity doesnt think we checked the bytes_read values enough. lets add a check --- client/src/cmdnfc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdnfc.c b/client/src/cmdnfc.c index eadfa7161..431464076 100644 --- a/client/src/cmdnfc.c +++ b/client/src/cmdnfc.c @@ -109,7 +109,7 @@ static int CmdNfcDecode(const char *Cmd) { uint8_t *dump = NULL; size_t bytes_read = 4096; res = pm3_load_dump(filename, (void **)&dump, &bytes_read, 4096); - if (res != PM3_SUCCESS || dump == NULL) { + if (res != PM3_SUCCESS || dump == NULL || bytes_read > 4096) { return res; } From 90a3b968fd89d47c9d991c672d8f69994b2ea23e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 15:24:53 +0200 Subject: [PATCH 0283/1034] coverity dont think we check if we got enough bytes to operate on. The sizeof the bmp_header_t gives a bit, we would need more ... --- client/src/cmdhfwaveshare.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfwaveshare.c b/client/src/cmdhfwaveshare.c index 8df62bcc1..12e5320e3 100644 --- a/client/src/cmdhfwaveshare.c +++ b/client/src/cmdhfwaveshare.c @@ -1064,7 +1064,13 @@ static int CmdHF14AWSLoadBmp(const char *Cmd) { size_t bytes_read = 0; if (loadFile_safe(filename, ".bmp", (void **)&bmp, &bytes_read) != PM3_SUCCESS) { PrintAndLogEx(WARNING, "Could not find file " _YELLOW_("%s"), filename); - return PM3_EIO; + return PM3_EFILE; + } + if (bmp == NULL) { + return PM3_EMALLOC; + } + if (bytes_read < sizeof(bmp_header_t)) { + return PM3_ESOFT; } int depth = picture_bit_depth(bmp, bytes_read, model_nr); From 97ca694c103a35bc0ffb811e2c0e8222ce58f430 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 16:39:48 +0200 Subject: [PATCH 0284/1034] added a view command for ISO15693 --- CHANGELOG.md | 1 + client/src/cmdhf15.c | 48 +++++++++++++++++++++++++++++++++++++++----- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51a06b0db..bb0835a11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `hf 15 vie` - view ISO15693 dump files (@iceman1001) - Fixed `hf iclass config` - now loops correct in keyroll generation (@iceman1001) - Added `hf iclass sam` - skeleton command (@iceman1001) - Changed `lf cotag demo` - a new decoder (@iceman1001) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index c16bfb10b..63ed2dd09 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -2820,10 +2820,45 @@ static int CmdHF15EASPassProtect(const char *Cmd) { return resp.status; } +static int CmdHF15View(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf 15 view", + "Print a ISO-15693 tag dump file (bin/eml/json)", + "hf 15 view -f hf-iclass-AA162D30F8FF12F1-dump.bin\n" + ); + void *argtable[] = { + arg_param_begin, + arg_str1("f", "file", "", "filename of dump (bin/eml/json)"), +// arg_lit0("z", "dense", "dense dump output style"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + + int fnlen = 0; + char filename[FILE_PATH_SIZE]; + CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); +// bool dense_output = g_session.dense_output || arg_get_lit(ctx, 2); + CLIParserFree(ctx); + + // read dump file + uint8_t *dump = NULL; + size_t bytes_read = CARD_MEMORY_SIZE; + int res = pm3_load_dump(filename, (void **)&dump, &bytes_read, CARD_MEMORY_SIZE); + if (res != PM3_SUCCESS) { + return res; + } + + PrintAndLogEx(NORMAL, ""); + print_blocks_15693(dump, bytes_read, 4); + + free(dump); + return PM3_SUCCESS; +} + static command_t CommandTable[] = { - {"-----------", CmdHF15Help, AlwaysAvailable, "--------------------- " _CYAN_("General") " ---------------------"}, {"help", CmdHF15Help, AlwaysAvailable, "This help"}, {"list", CmdHF15List, AlwaysAvailable, "List ISO-15693 history"}, + {"-----------", CmdHF15Help, AlwaysAvailable, "----------------------- " _CYAN_("general") " -----------------------"}, {"demod", CmdHF15Demod, AlwaysAvailable, "Demodulate ISO-15693 from tag"}, {"dump", CmdHF15Dump, IfPm3Iso15693, "Read all memory pages of an ISO-15693 tag, save to file"}, {"info", CmdHF15Info, IfPm3Iso15693, "Tag information"}, @@ -2834,10 +2869,14 @@ static command_t CommandTable[] = { {"reader", CmdHF15Reader, IfPm3Iso15693, "Act like an ISO-15693 reader"}, {"restore", CmdHF15Restore, IfPm3Iso15693, "Restore from file to all memory pages of an ISO-15693 tag"}, {"samples", CmdHF15Samples, IfPm3Iso15693, "Acquire samples as reader (enables carrier, sends inquiry)"}, + {"view", CmdHF15View, AlwaysAvailable, "Display content from tag dump file"}, + {"wrbl", CmdHF15Write, IfPm3Iso15693, "Write a block"}, + {"-----------", CmdHF15Help, IfPm3Iso15693, "--------------------- " _CYAN_("simulation") " ----------------------"}, + {"sim", CmdHF15Sim, IfPm3Iso15693, "Fake an ISO-15693 tag"}, {"eload", CmdHF15ELoad, IfPm3Iso15693, "Load image file into emulator to be used by 'sim' command"}, {"esave", CmdHF15ESave, IfPm3Iso15693, "Save emulator memory into image file"}, {"eview", CmdHF15EView, IfPm3Iso15693, "View emulator memory"}, - {"sim", CmdHF15Sim, IfPm3Iso15693, "Fake an ISO-15693 tag"}, + {"-----------", CmdHF15Help, IfPm3Iso15693, "------------------------ " _CYAN_("SLIX") " -------------------------"}, {"slixwritepwd", CmdHF15SlixWritePassword, IfPm3Iso15693, "Writes a password on a SLIX ISO-15693 tag"}, {"slixeasdisable", CmdHF15SlixEASDisable, IfPm3Iso15693, "Disable EAS mode on SLIX ISO-15693 tag"}, {"slixeasenable", CmdHF15SlixEASEnable, IfPm3Iso15693, "Enable EAS mode on SLIX ISO-15693 tag"}, @@ -2845,12 +2884,11 @@ static command_t CommandTable[] = { {"slixprivacyenable", CmdHF15SlixEnable, IfPm3Iso15693, "Enable privacy mode on SLIX ISO-15693 tag"}, {"passprotectafi", CmdHF15AFIPassProtect, IfPm3Iso15693, "Password protect AFI - Cannot be undone"}, {"passprotecteas", CmdHF15EASPassProtect, IfPm3Iso15693, "Password protect EAS - Cannot be undone"}, - {"wrbl", CmdHF15Write, IfPm3Iso15693, "Write a block"}, - {"-----------", CmdHF15Help, IfPm3Iso15693, "----------------------- " _CYAN_("afi") " -----------------------"}, + {"-----------", CmdHF15Help, IfPm3Iso15693, "-------------------------- " _CYAN_("afi") " ------------------------"}, {"findafi", CmdHF15FindAfi, IfPm3Iso15693, "Brute force AFI of an ISO-15693 tag"}, {"writeafi", CmdHF15WriteAfi, IfPm3Iso15693, "Writes the AFI on an ISO-15693 tag"}, {"writedsfid", CmdHF15WriteDsfid, IfPm3Iso15693, "Writes the DSFID on an ISO-15693 tag"}, - {"-----------", CmdHF15Help, IfPm3Iso15693, "----------------------- " _CYAN_("magic") " -----------------------"}, + {"-----------", CmdHF15Help, IfPm3Iso15693, "------------------------- " _CYAN_("magic") " -----------------------"}, {"csetuid", CmdHF15CSetUID, IfPm3Iso15693, "Set UID for magic card"}, {NULL, NULL, NULL, NULL} }; From eaee05908ca86e4d9db5ceda5541826578042704 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 17:01:33 +0200 Subject: [PATCH 0285/1034] text --- client/src/cmdhficlass.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 7ccec1221..11bec0d16 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -4190,30 +4190,29 @@ static int CmdHFiClassSAM(const char *Cmd) { } static command_t CommandTable[] = { - {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("operations") " ---------------------"}, {"help", CmdHelp, AlwaysAvailable, "This help"}, + {"list", CmdHFiClassList, AlwaysAvailable, "List iclass history"}, + {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("general") " ---------------------"}, // {"clone", CmdHFiClassClone, IfPm3Iclass, "Create a HID credential to Picopass / iCLASS tag"}, {"dump", CmdHFiClassDump, IfPm3Iclass, "Dump Picopass / iCLASS tag to file"}, {"info", CmdHFiClassInfo, AlwaysAvailable, "Tag information"}, - {"list", CmdHFiClassList, AlwaysAvailable, "List iclass history"}, {"rdbl", CmdHFiClass_ReadBlock, IfPm3Iclass, "Read Picopass / iCLASS block"}, {"reader", CmdHFiClassReader, IfPm3Iclass, "Act like a Picopass / iCLASS reader"}, {"restore", CmdHFiClassRestore, IfPm3Iclass, "Restore a dump file onto a Picopass / iCLASS tag"}, {"sniff", CmdHFiClassSniff, IfPm3Iclass, "Eavesdrop Picopass / iCLASS communication"}, + {"view", CmdHFiClassView, AlwaysAvailable, "Display content from tag dump file"}, {"wrbl", CmdHFiClass_WriteBlock, IfPm3Iclass, "Write Picopass / iCLASS block"}, - - {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("recovery") " ---------------------"}, + {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("recovery") " --------------------"}, // {"autopwn", CmdHFiClassAutopwn, IfPm3Iclass, "Automatic key recovery tool for iCLASS"}, {"chk", CmdHFiClassCheckKeys, IfPm3Iclass, "Check keys"}, {"loclass", CmdHFiClass_loclass, AlwaysAvailable, "Use loclass to perform bruteforce reader attack"}, {"lookup", CmdHFiClassLookUp, AlwaysAvailable, "Uses authentication trace to check for key in dictionary file"}, - {"-----------", CmdHelp, IfPm3Iclass, "--------------------- " _CYAN_("simulation") " ---------------------"}, + {"-----------", CmdHelp, IfPm3Iclass, "-------------------- " _CYAN_("simulation") " -------------------"}, {"sim", CmdHFiClassSim, IfPm3Iclass, "Simulate iCLASS tag"}, {"eload", CmdHFiClassELoad, IfPm3Iclass, "Load Picopass / iCLASS dump file into emulator memory"}, {"esave", CmdHFiClassESave, IfPm3Iclass, "Save emulator memory to file"}, {"eview", CmdHFiClassEView, IfPm3Iclass, "View emulator memory"}, - - {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("utils") " ---------------------"}, + {"-----------", CmdHelp, AlwaysAvailable, "---------------------- " _CYAN_("utils") " ----------------------"}, {"configcard", CmdHFiClassConfigCard, AlwaysAvailable, "Reader configuration card"}, {"calcnewkey", CmdHFiClassCalcNewKey, AlwaysAvailable, "Calc diversified keys (blocks 3 & 4) to write new keys"}, {"encode", CmdHFiClassEncode, AlwaysAvailable, "Encode binary wiegand to block 7"}, @@ -4221,8 +4220,7 @@ static command_t CommandTable[] = { {"decrypt", CmdHFiClassDecrypt, AlwaysAvailable, "Decrypt given block data or tag dump file" }, {"managekeys", CmdHFiClassManageKeys, AlwaysAvailable, "Manage keys to use with iclass commands"}, {"permutekey", CmdHFiClassPermuteKey, AlwaysAvailable, "Permute function from 'heart of darkness' paper"}, - {"view", CmdHFiClassView, AlwaysAvailable, "Display content from tag dump file"}, - {"-----------", CmdHelp, IfPm3Smartcard, "--------------------- " _CYAN_("SAM") " ---------------------"}, + {"-----------", CmdHelp, IfPm3Smartcard, "----------------------- " _CYAN_("SAM") " -----------------------"}, {"sam", CmdHFiClassSAM, IfPm3Smartcard, "SAM tests"}, {NULL, NULL, NULL, NULL} }; From 63bb831a64e7d3de28a5fbf89271d5fc1ea3d8e0 Mon Sep 17 00:00:00 2001 From: Self Not Found Date: Mon, 24 Jul 2023 23:37:33 +0800 Subject: [PATCH 0286/1034] Fix typos in CHANGELOG.md --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb0835a11..43b0af889 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Added `hf 15 vie` - view ISO15693 dump files (@iceman1001) + - Added `hf 15 view` - view ISO15693 dump files (@iceman1001) - Fixed `hf iclass config` - now loops correct in keyroll generation (@iceman1001) - Added `hf iclass sam` - skeleton command (@iceman1001) - Changed `lf cotag demo` - a new decoder (@iceman1001) @@ -19,7 +19,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `hf legic sim` - loop and return codes on deviceside updated to DEFINES (@iceman1001) - Changed `hf legic einfo` - now accepts the three different cardsizes as params (@iceman1001) - Fixed `lf cotag reader -1` - now doesn't fail (@iceman1001) - - Added support for LZ4 compressed hadnested tables (@doegox) + - Added support for LZ4 compressed hardnested tables (@doegox) - Changed `emv reader -v` - now tries to print found transactions logs (@iceman1001) - Added ISO4217 currency lookup (@iceman1001) - Fixed bad free in loadfilebinarykey fct. Thanks to @gentilkiwi From 1a788b1c14ec05a1c5f81a79f9b72ce933cedd06 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 17:42:27 +0200 Subject: [PATCH 0287/1034] make style --- client/src/cmdhf14a.c | 2 +- client/src/cmdhf15.c | 2 +- client/src/cmdhfmfhard.c | 6 +- client/src/comms.c | 8 +- client/src/pm3line_vocabulory.h | 1542 +++++++++++++++---------------- client/src/proxendian.h | 8 +- common/commonutil.c | 24 +- 7 files changed, 796 insertions(+), 796 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index ad0eff3b5..daa9ba8fb 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -624,7 +624,7 @@ static int CmdHF14AReader(const char *Cmd) { PrintAndLogEx(NORMAL, ""); } if ((disconnectAfter == false) && (silent == false)) { - PrintAndLogEx(SUCCESS, "Card is selected. You can now start sending commands"); + PrintAndLogEx(SUCCESS, "Card is selected. You can now start sending commands"); } } plot: diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 63ed2dd09..792692773 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -2825,7 +2825,7 @@ static int CmdHF15View(const char *Cmd) { CLIParserInit(&ctx, "hf 15 view", "Print a ISO-15693 tag dump file (bin/eml/json)", "hf 15 view -f hf-iclass-AA162D30F8FF12F1-dump.bin\n" - ); + ); void *argtable[] = { arg_param_begin, arg_str1("f", "file", "", "filename of dump (bin/eml/json)"), diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index 3d85a2c60..9b4cf4858 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -1564,16 +1564,16 @@ static int acquire_nonces(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_ FILE *fnonces = NULL; // init to ZERO - PacketResponseNG resp = { + PacketResponseNG resp = { .cmd = 0, .length = 0, .magic = 0, .status = 0, - .crc = 0, + .crc = 0, .ng = false, }; resp.oldarg[0] = 0; - resp.oldarg[1] = 0; + resp.oldarg[1] = 0; resp.oldarg[2] = 0; memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); diff --git a/client/src/comms.c b/client/src/comms.c index 7bd553f20..298db88e7 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -751,10 +751,10 @@ bool WaitForResponseTimeoutW(uint32_t cmd, PacketResponseNG *response, size_t ms resp.length = 0, resp.magic = 0, resp.status = 0, - resp.crc = 0, + resp.crc = 0, resp.ng = false, resp.oldarg[0] = 0; - resp.oldarg[1] = 0; + resp.oldarg[1] = 0; resp.oldarg[2] = 0; memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); @@ -832,10 +832,10 @@ bool GetFromDevice(DeviceMemType_t memtype, uint8_t *dest, uint32_t bytes, uint3 resp.length = 0, resp.magic = 0, resp.status = 0, - resp.crc = 0, + resp.crc = 0, resp.ng = false, resp.oldarg[0] = 0; - resp.oldarg[1] = 0; + resp.oldarg[1] = 0; resp.oldarg[2] = 0; memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index 2646a0477..864047dba 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -31,776 +31,776 @@ typedef struct vocabulory_s { } vocabulory_t; const static vocabulory_t vocabulory[] = { - { 1, "help" }, - { 0, "auto" }, - { 1, "clear" }, - { 1, "hints" }, - { 1, "msleep" }, - { 1, "rem" }, - { 1, "quit" }, - { 1, "exit" }, - { 1, "prefs help" }, - { 1, "prefs show" }, - { 1, "prefs get barmode" }, - { 1, "prefs get clientdebug" }, - { 1, "prefs get clientdelay" }, - { 1, "prefs get color" }, - { 1, "prefs get savepaths" }, - { 1, "prefs get emoji" }, - { 1, "prefs get hints" }, - { 1, "prefs get output" }, - { 1, "prefs get plotsliders" }, - { 1, "prefs set help" }, - { 1, "prefs set barmode" }, - { 1, "prefs set clientdebug" }, - { 1, "prefs set clientdelay" }, - { 1, "prefs set color" }, - { 1, "prefs set emoji" }, - { 1, "prefs set hints" }, - { 1, "prefs set savepaths" }, - { 1, "prefs set output" }, - { 1, "prefs set plotsliders" }, - { 1, "analyse help" }, - { 1, "analyse lcr" }, - { 1, "analyse crc" }, - { 1, "analyse chksum" }, - { 1, "analyse dates" }, - { 1, "analyse lfsr" }, - { 1, "analyse a" }, - { 1, "analyse nuid" }, - { 1, "analyse demodbuff" }, - { 1, "analyse freq" }, - { 1, "analyse foo" }, - { 1, "analyse units" }, - { 1, "data help" }, - { 1, "data biphaserawdecode" }, - { 1, "data detectclock" }, - { 1, "data fsktonrz" }, - { 1, "data manrawdecode" }, - { 1, "data modulation" }, - { 1, "data rawdemod" }, - { 1, "data askedgedetect" }, - { 1, "data autocorr" }, - { 1, "data dirthreshold" }, - { 1, "data decimate" }, - { 1, "data envelope" }, - { 1, "data undecimate" }, - { 1, "data hide" }, - { 1, "data hpf" }, - { 1, "data iir" }, - { 1, "data grid" }, - { 1, "data ltrim" }, - { 1, "data mtrim" }, - { 1, "data norm" }, - { 1, "data plot" }, - { 1, "data cthreshold" }, - { 1, "data rtrim" }, - { 1, "data setgraphmarkers" }, - { 1, "data shiftgraphzero" }, - { 1, "data timescale" }, - { 1, "data zerocrossings" }, - { 1, "data convertbitstream" }, - { 1, "data getbitstream" }, - { 1, "data asn1" }, - { 1, "data bin2hex" }, - { 0, "data bitsamples" }, - { 1, "data clear" }, - { 1, "data diff" }, - { 0, "data hexsamples" }, - { 1, "data hex2bin" }, - { 1, "data load" }, - { 1, "data num" }, - { 1, "data print" }, - { 0, "data samples" }, - { 1, "data save" }, - { 1, "data setdebugmode" }, - { 0, "data tune" }, - { 1, "emv help" }, - { 1, "emv list" }, - { 1, "emv test" }, - { 0, "emv challenge" }, - { 0, "emv exec" }, - { 0, "emv genac" }, - { 0, "emv gpo" }, - { 0, "emv intauth" }, - { 0, "emv pse" }, - { 0, "emv reader" }, - { 0, "emv readrec" }, - { 0, "emv roca" }, - { 0, "emv scan" }, - { 0, "emv search" }, - { 0, "emv select" }, - { 1, "hf help" }, - { 1, "hf list" }, - { 0, "hf plot" }, - { 0, "hf tune" }, - { 1, "hf search" }, - { 0, "hf sniff" }, - { 1, "hf 14a help" }, - { 1, "hf 14a list" }, - { 0, "hf 14a antifuzz" }, - { 0, "hf 14a config" }, - { 0, "hf 14a cuids" }, - { 0, "hf 14a info" }, - { 0, "hf 14a sim" }, - { 0, "hf 14a sniff" }, - { 0, "hf 14a raw" }, - { 0, "hf 14a reader" }, - { 0, "hf 14a apdu" }, - { 0, "hf 14a apdufind" }, - { 0, "hf 14a chaining" }, - { 0, "hf 14a ndefformat" }, - { 0, "hf 14a ndefread" }, - { 0, "hf 14a ndefwrite" }, - { 1, "hf 14b help" }, - { 0, "hf 14b apdu" }, - { 0, "hf 14b dump" }, - { 0, "hf 14b info" }, - { 1, "hf 14b list" }, - { 0, "hf 14b ndefread" }, - { 0, "hf 14b raw" }, - { 0, "hf 14b reader" }, - { 0, "hf 14b sim" }, - { 0, "hf 14b sniff" }, - { 0, "hf 14b rdbl" }, - { 0, "hf 14b sriwrite" }, - { 1, "hf 14b view" }, - { 1, "hf 15 help" }, - { 1, "hf 15 list" }, - { 1, "hf 15 demod" }, - { 0, "hf 15 dump" }, - { 0, "hf 15 info" }, - { 0, "hf 15 sniff" }, - { 0, "hf 15 raw" }, - { 0, "hf 15 rdbl" }, - { 0, "hf 15 rdmulti" }, - { 0, "hf 15 reader" }, - { 0, "hf 15 restore" }, - { 0, "hf 15 samples" }, - { 0, "hf 15 eload" }, - { 0, "hf 15 esave" }, - { 0, "hf 15 eview" }, - { 0, "hf 15 sim" }, - { 0, "hf 15 slixwritepwd" }, - { 0, "hf 15 slixeasdisable" }, - { 0, "hf 15 slixeasenable" }, - { 0, "hf 15 slixprivacydisable" }, - { 0, "hf 15 slixprivacyenable" }, - { 0, "hf 15 passprotectafi" }, - { 0, "hf 15 passprotecteas" }, - { 0, "hf 15 wrbl" }, - { 0, "hf 15 findafi" }, - { 0, "hf 15 writeafi" }, - { 0, "hf 15 writedsfid" }, - { 0, "hf 15 csetuid" }, - { 1, "hf cipurse help" }, - { 0, "hf cipurse info" }, - { 0, "hf cipurse select" }, - { 0, "hf cipurse auth" }, - { 0, "hf cipurse read" }, - { 0, "hf cipurse write" }, - { 0, "hf cipurse aread" }, - { 0, "hf cipurse awrite" }, - { 0, "hf cipurse formatall" }, - { 0, "hf cipurse create" }, - { 0, "hf cipurse delete" }, - { 0, "hf cipurse updkey" }, - { 0, "hf cipurse updakey" }, - { 0, "hf cipurse default" }, - { 1, "hf cipurse test" }, - { 1, "hf epa help" }, - { 0, "hf epa cnonces" }, - { 0, "hf epa replay" }, - { 0, "hf epa sim" }, - { 1, "hf emrtd help" }, - { 0, "hf emrtd dump" }, - { 1, "hf emrtd info" }, - { 1, "hf emrtd list" }, - { 1, "hf felica help" }, - { 1, "hf felica list" }, - { 0, "hf felica reader" }, - { 0, "hf felica info" }, - { 0, "hf felica sniff" }, - { 0, "hf felica raw" }, - { 0, "hf felica rdbl" }, - { 0, "hf felica wrbl" }, - { 0, "hf felica rqservice" }, - { 0, "hf felica rqresponse" }, - { 0, "hf felica scsvcode" }, - { 0, "hf felica rqsyscode" }, - { 0, "hf felica auth1" }, - { 0, "hf felica auth2" }, - { 0, "hf felica rqspecver" }, - { 0, "hf felica resetmode" }, - { 0, "hf felica litesim" }, - { 0, "hf felica litedump" }, - { 1, "hf fido help" }, - { 1, "hf fido list" }, - { 0, "hf fido info" }, - { 0, "hf fido reg" }, - { 0, "hf fido auth" }, - { 0, "hf fido make" }, - { 0, "hf fido assert" }, - { 1, "hf fudan help" }, - { 0, "hf fudan reader" }, - { 0, "hf fudan dump" }, - { 0, "hf fudan rdbl" }, - { 1, "hf fudan view" }, - { 0, "hf fudan wrbl" }, - { 1, "hf gallagher help" }, - { 0, "hf gallagher reader" }, - { 0, "hf gallagher clone" }, - { 0, "hf gallagher delete" }, - { 1, "hf gallagher diversifykey" }, - { 1, "hf gallagher decode" }, - { 1, "hf ksx6924 help" }, - { 0, "hf ksx6924 select" }, - { 0, "hf ksx6924 info" }, - { 0, "hf ksx6924 balance" }, - { 0, "hf ksx6924 init" }, - { 0, "hf ksx6924 prec" }, - { 1, "hf jooki help" }, - { 0, "hf jooki clone" }, - { 1, "hf jooki decode" }, - { 1, "hf jooki encode" }, - { 0, "hf jooki sim" }, - { 1, "hf iclass help" }, - { 0, "hf iclass dump" }, - { 1, "hf iclass info" }, - { 1, "hf iclass list" }, - { 0, "hf iclass rdbl" }, - { 0, "hf iclass reader" }, - { 0, "hf iclass restore" }, - { 0, "hf iclass sniff" }, - { 0, "hf iclass wrbl" }, - { 0, "hf iclass chk" }, - { 1, "hf iclass loclass" }, - { 1, "hf iclass lookup" }, - { 0, "hf iclass sim" }, - { 0, "hf iclass eload" }, - { 0, "hf iclass esave" }, - { 0, "hf iclass eview" }, - { 1, "hf iclass configcard" }, - { 1, "hf iclass calcnewkey" }, - { 1, "hf iclass encode" }, - { 1, "hf iclass encrypt" }, - { 1, "hf iclass decrypt" }, - { 1, "hf iclass managekeys" }, - { 1, "hf iclass permutekey" }, - { 1, "hf iclass view" }, - { 0, "hf iclass sam" }, - { 1, "hf legic help" }, - { 0, "hf legic dump" }, - { 0, "hf legic info" }, - { 1, "hf legic list" }, - { 0, "hf legic rdbl" }, - { 0, "hf legic reader" }, - { 0, "hf legic restore" }, - { 0, "hf legic wipe" }, - { 0, "hf legic wrbl" }, - { 0, "hf legic sim" }, - { 0, "hf legic eload" }, - { 0, "hf legic esave" }, - { 0, "hf legic eview" }, - { 0, "hf legic einfo" }, - { 1, "hf legic crc" }, - { 1, "hf legic view" }, - { 1, "hf lto help" }, - { 0, "hf lto dump" }, - { 0, "hf lto info" }, - { 1, "hf lto list" }, - { 0, "hf lto rdbl" }, - { 0, "hf lto reader" }, - { 0, "hf lto restore" }, - { 0, "hf lto wrbl" }, - { 1, "hf mf help" }, - { 1, "hf mf list" }, - { 0, "hf mf darkside" }, - { 0, "hf mf nested" }, - { 1, "hf mf hardnested" }, - { 0, "hf mf staticnested" }, - { 0, "hf mf autopwn" }, - { 0, "hf mf nack" }, - { 0, "hf mf chk" }, - { 0, "hf mf fchk" }, - { 1, "hf mf decrypt" }, - { 0, "hf mf supercard" }, - { 0, "hf mf auth4" }, - { 1, "hf mf acl" }, - { 0, "hf mf dump" }, - { 1, "hf mf mad" }, - { 0, "hf mf personalize" }, - { 0, "hf mf rdbl" }, - { 0, "hf mf rdsc" }, - { 0, "hf mf restore" }, - { 0, "hf mf setmod" }, - { 1, "hf mf value" }, - { 1, "hf mf view" }, - { 0, "hf mf wipe" }, - { 0, "hf mf wrbl" }, - { 0, "hf mf sim" }, - { 0, "hf mf ecfill" }, - { 0, "hf mf eclr" }, - { 0, "hf mf egetblk" }, - { 0, "hf mf egetsc" }, - { 0, "hf mf ekeyprn" }, - { 0, "hf mf eload" }, - { 0, "hf mf esave" }, - { 0, "hf mf esetblk" }, - { 0, "hf mf eview" }, - { 0, "hf mf cgetblk" }, - { 0, "hf mf cgetsc" }, - { 0, "hf mf cload" }, - { 0, "hf mf csave" }, - { 0, "hf mf csetblk" }, - { 0, "hf mf csetuid" }, - { 0, "hf mf cview" }, - { 0, "hf mf cwipe" }, - { 0, "hf mf gen3uid" }, - { 0, "hf mf gen3blk" }, - { 0, "hf mf gen3freeze" }, - { 0, "hf mf ggetblk" }, - { 0, "hf mf gload" }, - { 0, "hf mf gsave" }, - { 0, "hf mf gsetblk" }, - { 0, "hf mf gview" }, - { 0, "hf mf gdmcfg" }, - { 0, "hf mf gdmsetcfg" }, - { 0, "hf mf gdmsetblk" }, - { 0, "hf mf ndefformat" }, - { 0, "hf mf ndefread" }, - { 0, "hf mf ndefwrite" }, - { 1, "hf mfp help" }, - { 1, "hf mfp list" }, - { 0, "hf mfp auth" }, - { 0, "hf mfp chk" }, - { 0, "hf mfp dump" }, - { 0, "hf mfp info" }, - { 0, "hf mfp mad" }, - { 0, "hf mfp rdbl" }, - { 0, "hf mfp rdsc" }, - { 0, "hf mfp wrbl" }, - { 0, "hf mfp commitp" }, - { 0, "hf mfp initp" }, - { 0, "hf mfp wrp" }, - { 0, "hf mfp ndefformat" }, - { 0, "hf mfp ndefread" }, - { 0, "hf mfp ndefwrite" }, - { 1, "hf mfu help" }, - { 1, "hf mfu keygen" }, - { 1, "hf mfu pwdgen" }, - { 0, "hf mfu otptear" }, - { 0, "hf mfu cauth" }, - { 0, "hf mfu dump" }, - { 0, "hf mfu info" }, - { 0, "hf mfu ndefread" }, - { 0, "hf mfu rdbl" }, - { 0, "hf mfu restore" }, - { 1, "hf mfu view" }, - { 0, "hf mfu wrbl" }, - { 0, "hf mfu tamper" }, - { 0, "hf mfu eload" }, - { 0, "hf mfu esave" }, - { 0, "hf mfu eview" }, - { 0, "hf mfu sim" }, - { 0, "hf mfu setpwd" }, - { 0, "hf mfu setuid" }, - { 1, "hf mfdes help" }, - { 0, "hf mfdes info" }, - { 0, "hf mfdes getuid" }, - { 0, "hf mfdes default" }, - { 0, "hf mfdes auth" }, - { 0, "hf mfdes chk" }, - { 0, "hf mfdes detect" }, - { 0, "hf mfdes freemem" }, - { 0, "hf mfdes setconfig" }, - { 0, "hf mfdes formatpicc" }, - { 1, "hf mfdes list" }, - { 0, "hf mfdes mad" }, - { 0, "hf mfdes lsapp" }, - { 0, "hf mfdes getaids" }, - { 0, "hf mfdes getappnames" }, - { 0, "hf mfdes bruteaid" }, - { 0, "hf mfdes createapp" }, - { 0, "hf mfdes deleteapp" }, - { 0, "hf mfdes selectapp" }, - { 0, "hf mfdes changekey" }, - { 0, "hf mfdes chkeysettings" }, - { 0, "hf mfdes getkeysettings" }, - { 0, "hf mfdes getkeyversions" }, - { 0, "hf mfdes getfileids" }, - { 0, "hf mfdes getfileisoids" }, - { 0, "hf mfdes lsfiles" }, - { 0, "hf mfdes dump" }, - { 0, "hf mfdes createfile" }, - { 0, "hf mfdes createvaluefile" }, - { 0, "hf mfdes createrecordfile" }, - { 0, "hf mfdes createmacfile" }, - { 0, "hf mfdes deletefile" }, - { 0, "hf mfdes getfilesettings" }, - { 0, "hf mfdes chfilesettings" }, - { 0, "hf mfdes read" }, - { 0, "hf mfdes write" }, - { 0, "hf mfdes value" }, - { 0, "hf mfdes clearrecfile" }, - { 1, "hf mfdes test" }, - { 1, "hf ntag424 help" }, - { 0, "hf ntag424 info" }, - { 0, "hf ntag424 sdm" }, - { 1, "hf ntag424 view" }, - { 1, "hf seos help" }, - { 0, "hf seos info" }, - { 1, "hf seos list" }, - { 1, "hf st25ta help" }, - { 0, "hf st25ta info" }, - { 1, "hf st25ta list" }, - { 1, "hf st25ta ndefread" }, - { 0, "hf st25ta protect" }, - { 0, "hf st25ta pwd" }, - { 0, "hf st25ta sim" }, - { 1, "hf tesla help" }, - { 0, "hf tesla info" }, - { 1, "hf tesla list" }, - { 1, "hf texkom help" }, - { 0, "hf texkom reader" }, - { 0, "hf texkom sim" }, - { 1, "hf thinfilm help" }, - { 0, "hf thinfilm info" }, - { 1, "hf thinfilm list" }, - { 0, "hf thinfilm sim" }, - { 1, "hf topaz help" }, - { 1, "hf topaz list" }, - { 0, "hf topaz dump" }, - { 0, "hf topaz info" }, - { 0, "hf topaz raw" }, - { 0, "hf topaz rdbl" }, - { 0, "hf topaz reader" }, - { 0, "hf topaz sim" }, - { 0, "hf topaz sniff" }, - { 1, "hf topaz view" }, - { 0, "hf topaz wrbl" }, - { 1, "hf vas help" }, - { 0, "hf vas reader" }, - { 1, "hf vas decrypt" }, - { 1, "hf waveshare help" }, - { 0, "hf waveshare loadbmp" }, - { 1, "hf xerox help" }, - { 0, "hf xerox info" }, - { 0, "hf xerox reader" }, - { 0, "hf xerox dump" }, - { 1, "hw help" }, - { 0, "hw break" }, - { 1, "hw connect" }, - { 0, "hw dbg" }, - { 0, "hw detectreader" }, - { 0, "hw fpgaoff" }, - { 0, "hw lcd" }, - { 0, "hw lcdreset" }, - { 0, "hw ping" }, - { 0, "hw readmem" }, - { 0, "hw reset" }, - { 0, "hw setlfdivisor" }, - { 0, "hw setmux" }, - { 0, "hw standalone" }, - { 0, "hw status" }, - { 0, "hw tearoff" }, - { 0, "hw tia" }, - { 1, "hw timeout" }, - { 0, "hw tune" }, - { 1, "hw version" }, - { 1, "lf help" }, - { 0, "lf config" }, - { 0, "lf cmdread" }, - { 0, "lf read" }, - { 1, "lf search" }, - { 0, "lf sim" }, - { 0, "lf simask" }, - { 0, "lf simfsk" }, - { 0, "lf simpsk" }, - { 0, "lf simbidir" }, - { 0, "lf sniff" }, - { 0, "lf tune" }, - { 1, "lf awid help" }, - { 1, "lf awid demod" }, - { 0, "lf awid reader" }, - { 0, "lf awid clone" }, - { 0, "lf awid sim" }, - { 0, "lf awid brute" }, - { 0, "lf awid watch" }, - { 1, "lf cotag help" }, - { 1, "lf cotag demod" }, - { 0, "lf cotag reader" }, - { 1, "lf destron help" }, - { 1, "lf destron demod" }, - { 0, "lf destron reader" }, - { 0, "lf destron clone" }, - { 0, "lf destron sim" }, - { 1, "lf em help" }, - { 1, "lf em 410x help" }, - { 1, "lf em 410x demod" }, - { 0, "lf em 410x reader" }, - { 0, "lf em 410x sim" }, - { 0, "lf em 410x brute" }, - { 0, "lf em 410x watch" }, - { 0, "lf em 410x spoof" }, - { 0, "lf em 410x clone" }, - { 1, "lf em 4x05 help" }, - { 0, "lf em 4x05 brute" }, - { 0, "lf em 4x05 chk" }, - { 1, "lf em 4x05 demod" }, - { 0, "lf em 4x05 dump" }, - { 0, "lf em 4x05 info" }, - { 0, "lf em 4x05 read" }, - { 1, "lf em 4x05 sniff" }, - { 0, "lf em 4x05 unlock" }, - { 0, "lf em 4x05 wipe" }, - { 0, "lf em 4x05 write" }, - { 1, "lf em 4x50 help" }, - { 0, "lf em 4x50 brute" }, - { 0, "lf em 4x50 chk" }, - { 0, "lf em 4x50 dump" }, - { 0, "lf em 4x50 info" }, - { 0, "lf em 4x50 login" }, - { 0, "lf em 4x50 rdbl" }, - { 0, "lf em 4x50 reader" }, - { 0, "lf em 4x50 restore" }, - { 0, "lf em 4x50 wrbl" }, - { 0, "lf em 4x50 wrpwd" }, - { 0, "lf em 4x50 wipe" }, - { 0, "lf em 4x50 eload" }, - { 0, "lf em 4x50 esave" }, - { 0, "lf em 4x50 eview" }, - { 0, "lf em 4x50 sim" }, - { 1, "lf em 4x70 help" }, - { 0, "lf em 4x70 brute" }, - { 0, "lf em 4x70 info" }, - { 0, "lf em 4x70 write" }, - { 0, "lf em 4x70 unlock" }, - { 0, "lf em 4x70 auth" }, - { 0, "lf em 4x70 writepin" }, - { 0, "lf em 4x70 writekey" }, - { 1, "lf fdxb help" }, - { 1, "lf fdxb demod" }, - { 0, "lf fdxb reader" }, - { 0, "lf fdxb clone" }, - { 0, "lf fdxb sim" }, - { 1, "lf gallagher help" }, - { 1, "lf gallagher demod" }, - { 0, "lf gallagher reader" }, - { 0, "lf gallagher clone" }, - { 0, "lf gallagher sim" }, - { 1, "lf gproxii help" }, - { 1, "lf gproxii demod" }, - { 0, "lf gproxii reader" }, - { 0, "lf gproxii clone" }, - { 0, "lf gproxii sim" }, - { 1, "lf hid help" }, - { 1, "lf hid demod" }, - { 0, "lf hid reader" }, - { 0, "lf hid clone" }, - { 0, "lf hid sim" }, - { 0, "lf hid brute" }, - { 0, "lf hid watch" }, - { 1, "lf hitag help" }, - { 1, "lf hitag list" }, - { 0, "lf hitag info" }, - { 0, "lf hitag dump" }, - { 0, "lf hitag read" }, - { 0, "lf hitag wrbl" }, - { 0, "lf hitag sniff" }, - { 0, "lf hitag cc" }, - { 0, "lf hitag ta" }, - { 0, "lf hitag eload" }, - { 0, "lf hitag sim" }, - { 1, "lf idteck help" }, - { 1, "lf idteck demod" }, - { 0, "lf idteck reader" }, - { 0, "lf idteck clone" }, - { 0, "lf idteck sim" }, - { 1, "lf indala help" }, - { 0, "lf indala brute" }, - { 1, "lf indala demod" }, - { 1, "lf indala altdemod" }, - { 0, "lf indala reader" }, - { 0, "lf indala clone" }, - { 0, "lf indala sim" }, - { 1, "lf io help" }, - { 1, "lf io demod" }, - { 0, "lf io reader" }, - { 0, "lf io clone" }, - { 0, "lf io sim" }, - { 0, "lf io watch" }, - { 1, "lf jablotron help" }, - { 1, "lf jablotron demod" }, - { 0, "lf jablotron reader" }, - { 0, "lf jablotron clone" }, - { 0, "lf jablotron sim" }, - { 1, "lf keri help" }, - { 1, "lf keri demod" }, - { 0, "lf keri reader" }, - { 0, "lf keri clone" }, - { 0, "lf keri sim" }, - { 1, "lf motorola help" }, - { 1, "lf motorola demod" }, - { 0, "lf motorola reader" }, - { 0, "lf motorola clone" }, - { 0, "lf motorola sim" }, - { 1, "lf nedap help" }, - { 1, "lf nedap demod" }, - { 0, "lf nedap reader" }, - { 0, "lf nedap clone" }, - { 0, "lf nedap sim" }, - { 1, "lf nexwatch help" }, - { 1, "lf nexwatch demod" }, - { 0, "lf nexwatch reader" }, - { 0, "lf nexwatch clone" }, - { 0, "lf nexwatch sim" }, - { 1, "lf noralsy help" }, - { 1, "lf noralsy demod" }, - { 0, "lf noralsy reader" }, - { 0, "lf noralsy clone" }, - { 0, "lf noralsy sim" }, - { 1, "lf pac help" }, - { 1, "lf pac demod" }, - { 0, "lf pac reader" }, - { 0, "lf pac clone" }, - { 0, "lf pac sim" }, - { 1, "lf paradox help" }, - { 1, "lf paradox demod" }, - { 0, "lf paradox reader" }, - { 0, "lf paradox clone" }, - { 0, "lf paradox sim" }, - { 1, "lf pcf7931 help" }, - { 0, "lf pcf7931 reader" }, - { 0, "lf pcf7931 write" }, - { 1, "lf pcf7931 config" }, - { 1, "lf presco help" }, - { 1, "lf presco demod" }, - { 0, "lf presco reader" }, - { 0, "lf presco clone" }, - { 0, "lf presco sim" }, - { 1, "lf pyramid help" }, - { 1, "lf pyramid demod" }, - { 0, "lf pyramid reader" }, - { 0, "lf pyramid clone" }, - { 0, "lf pyramid sim" }, - { 1, "lf securakey help" }, - { 1, "lf securakey demod" }, - { 0, "lf securakey reader" }, - { 0, "lf securakey clone" }, - { 0, "lf securakey sim" }, - { 1, "lf ti help" }, - { 1, "lf ti demod" }, - { 0, "lf ti reader" }, - { 0, "lf ti write" }, - { 1, "lf t55xx help" }, - { 0, "lf t55xx clonehelp" }, - { 1, "lf t55xx config" }, - { 0, "lf t55xx dangerraw" }, - { 1, "lf t55xx detect" }, - { 0, "lf t55xx deviceconfig" }, - { 0, "lf t55xx dump" }, - { 1, "lf t55xx info" }, - { 0, "lf t55xx p1detect" }, - { 0, "lf t55xx read" }, - { 0, "lf t55xx resetread" }, - { 0, "lf t55xx restore" }, - { 1, "lf t55xx trace" }, - { 0, "lf t55xx wakeup" }, - { 0, "lf t55xx write" }, - { 0, "lf t55xx bruteforce" }, - { 0, "lf t55xx chk" }, - { 0, "lf t55xx protect" }, - { 0, "lf t55xx recoverpw" }, - { 1, "lf t55xx sniff" }, - { 0, "lf t55xx special" }, - { 0, "lf t55xx wipe" }, - { 1, "lf viking help" }, - { 1, "lf viking demod" }, - { 0, "lf viking reader" }, - { 0, "lf viking clone" }, - { 0, "lf viking sim" }, - { 1, "lf visa2000 help" }, - { 1, "lf visa2000 demod" }, - { 0, "lf visa2000 reader" }, - { 0, "lf visa2000 clone" }, - { 0, "lf visa2000 sim" }, - { 1, "mem help" }, - { 0, "mem baudrate" }, - { 0, "mem dump" }, - { 0, "mem info" }, - { 0, "mem load" }, - { 0, "mem wipe" }, - { 1, "mem spiffs help" }, - { 0, "mem spiffs copy" }, - { 0, "mem spiffs check" }, - { 0, "mem spiffs dump" }, - { 0, "mem spiffs info" }, - { 0, "mem spiffs mount" }, - { 0, "mem spiffs remove" }, - { 0, "mem spiffs rename" }, - { 0, "mem spiffs test" }, - { 0, "mem spiffs tree" }, - { 0, "mem spiffs unmount" }, - { 0, "mem spiffs upload" }, - { 0, "mem spiffs view" }, - { 0, "mem spiffs wipe" }, - { 1, "nfc help" }, - { 1, "nfc decode" }, - { 0, "nfc type1 read" }, - { 1, "nfc type1 help" }, - { 0, "nfc type2 read" }, - { 1, "nfc type2 help" }, - { 0, "nfc type4a format" }, - { 0, "nfc type4a read" }, - { 0, "nfc type4a write" }, - { 0, "nfc type4a st25taread" }, - { 1, "nfc type4a help" }, - { 0, "nfc type4b read" }, - { 1, "nfc type4b help" }, - { 0, "nfc mf cformat" }, - { 0, "nfc mf cread" }, - { 0, "nfc mf cwrite" }, - { 0, "nfc mf pread" }, - { 1, "nfc mf help" }, - { 0, "nfc barcode read" }, - { 0, "nfc barcode sim" }, - { 1, "nfc barcode help" }, - { 1, "piv help" }, - { 0, "piv select" }, - { 0, "piv getdata" }, - { 0, "piv authsign" }, - { 0, "piv scan" }, - { 1, "piv list" }, - { 1, "smart help" }, - { 1, "smart list" }, - { 0, "smart info" }, - { 0, "smart reader" }, - { 0, "smart raw" }, - { 1, "smart upgrade" }, - { 0, "smart setclock" }, - { 0, "smart brute" }, - { 1, "script help" }, - { 1, "script list" }, - { 1, "script run" }, - { 1, "trace help" }, - { 1, "trace extract" }, - { 1, "trace list" }, - { 1, "trace load" }, - { 1, "trace save" }, - { 1, "usart help" }, - { 0, "usart btpin" }, - { 0, "usart btfactory" }, - { 0, "usart tx" }, - { 0, "usart rx" }, - { 0, "usart txrx" }, - { 0, "usart txhex" }, - { 0, "usart rxhex" }, - { 0, "usart config" }, - { 1, "wiegand help" }, - { 1, "wiegand list" }, - { 1, "wiegand encode" }, - { 1, "wiegand decode" }, + { 1, "help" }, + { 0, "auto" }, + { 1, "clear" }, + { 1, "hints" }, + { 1, "msleep" }, + { 1, "rem" }, + { 1, "quit" }, + { 1, "exit" }, + { 1, "prefs help" }, + { 1, "prefs show" }, + { 1, "prefs get barmode" }, + { 1, "prefs get clientdebug" }, + { 1, "prefs get clientdelay" }, + { 1, "prefs get color" }, + { 1, "prefs get savepaths" }, + { 1, "prefs get emoji" }, + { 1, "prefs get hints" }, + { 1, "prefs get output" }, + { 1, "prefs get plotsliders" }, + { 1, "prefs set help" }, + { 1, "prefs set barmode" }, + { 1, "prefs set clientdebug" }, + { 1, "prefs set clientdelay" }, + { 1, "prefs set color" }, + { 1, "prefs set emoji" }, + { 1, "prefs set hints" }, + { 1, "prefs set savepaths" }, + { 1, "prefs set output" }, + { 1, "prefs set plotsliders" }, + { 1, "analyse help" }, + { 1, "analyse lcr" }, + { 1, "analyse crc" }, + { 1, "analyse chksum" }, + { 1, "analyse dates" }, + { 1, "analyse lfsr" }, + { 1, "analyse a" }, + { 1, "analyse nuid" }, + { 1, "analyse demodbuff" }, + { 1, "analyse freq" }, + { 1, "analyse foo" }, + { 1, "analyse units" }, + { 1, "data help" }, + { 1, "data biphaserawdecode" }, + { 1, "data detectclock" }, + { 1, "data fsktonrz" }, + { 1, "data manrawdecode" }, + { 1, "data modulation" }, + { 1, "data rawdemod" }, + { 1, "data askedgedetect" }, + { 1, "data autocorr" }, + { 1, "data dirthreshold" }, + { 1, "data decimate" }, + { 1, "data envelope" }, + { 1, "data undecimate" }, + { 1, "data hide" }, + { 1, "data hpf" }, + { 1, "data iir" }, + { 1, "data grid" }, + { 1, "data ltrim" }, + { 1, "data mtrim" }, + { 1, "data norm" }, + { 1, "data plot" }, + { 1, "data cthreshold" }, + { 1, "data rtrim" }, + { 1, "data setgraphmarkers" }, + { 1, "data shiftgraphzero" }, + { 1, "data timescale" }, + { 1, "data zerocrossings" }, + { 1, "data convertbitstream" }, + { 1, "data getbitstream" }, + { 1, "data asn1" }, + { 1, "data bin2hex" }, + { 0, "data bitsamples" }, + { 1, "data clear" }, + { 1, "data diff" }, + { 0, "data hexsamples" }, + { 1, "data hex2bin" }, + { 1, "data load" }, + { 1, "data num" }, + { 1, "data print" }, + { 0, "data samples" }, + { 1, "data save" }, + { 1, "data setdebugmode" }, + { 0, "data tune" }, + { 1, "emv help" }, + { 1, "emv list" }, + { 1, "emv test" }, + { 0, "emv challenge" }, + { 0, "emv exec" }, + { 0, "emv genac" }, + { 0, "emv gpo" }, + { 0, "emv intauth" }, + { 0, "emv pse" }, + { 0, "emv reader" }, + { 0, "emv readrec" }, + { 0, "emv roca" }, + { 0, "emv scan" }, + { 0, "emv search" }, + { 0, "emv select" }, + { 1, "hf help" }, + { 1, "hf list" }, + { 0, "hf plot" }, + { 0, "hf tune" }, + { 1, "hf search" }, + { 0, "hf sniff" }, + { 1, "hf 14a help" }, + { 1, "hf 14a list" }, + { 0, "hf 14a antifuzz" }, + { 0, "hf 14a config" }, + { 0, "hf 14a cuids" }, + { 0, "hf 14a info" }, + { 0, "hf 14a sim" }, + { 0, "hf 14a sniff" }, + { 0, "hf 14a raw" }, + { 0, "hf 14a reader" }, + { 0, "hf 14a apdu" }, + { 0, "hf 14a apdufind" }, + { 0, "hf 14a chaining" }, + { 0, "hf 14a ndefformat" }, + { 0, "hf 14a ndefread" }, + { 0, "hf 14a ndefwrite" }, + { 1, "hf 14b help" }, + { 0, "hf 14b apdu" }, + { 0, "hf 14b dump" }, + { 0, "hf 14b info" }, + { 1, "hf 14b list" }, + { 0, "hf 14b ndefread" }, + { 0, "hf 14b raw" }, + { 0, "hf 14b reader" }, + { 0, "hf 14b sim" }, + { 0, "hf 14b sniff" }, + { 0, "hf 14b rdbl" }, + { 0, "hf 14b sriwrite" }, + { 1, "hf 14b view" }, + { 1, "hf 15 help" }, + { 1, "hf 15 list" }, + { 1, "hf 15 demod" }, + { 0, "hf 15 dump" }, + { 0, "hf 15 info" }, + { 0, "hf 15 sniff" }, + { 0, "hf 15 raw" }, + { 0, "hf 15 rdbl" }, + { 0, "hf 15 rdmulti" }, + { 0, "hf 15 reader" }, + { 0, "hf 15 restore" }, + { 0, "hf 15 samples" }, + { 0, "hf 15 eload" }, + { 0, "hf 15 esave" }, + { 0, "hf 15 eview" }, + { 0, "hf 15 sim" }, + { 0, "hf 15 slixwritepwd" }, + { 0, "hf 15 slixeasdisable" }, + { 0, "hf 15 slixeasenable" }, + { 0, "hf 15 slixprivacydisable" }, + { 0, "hf 15 slixprivacyenable" }, + { 0, "hf 15 passprotectafi" }, + { 0, "hf 15 passprotecteas" }, + { 0, "hf 15 wrbl" }, + { 0, "hf 15 findafi" }, + { 0, "hf 15 writeafi" }, + { 0, "hf 15 writedsfid" }, + { 0, "hf 15 csetuid" }, + { 1, "hf cipurse help" }, + { 0, "hf cipurse info" }, + { 0, "hf cipurse select" }, + { 0, "hf cipurse auth" }, + { 0, "hf cipurse read" }, + { 0, "hf cipurse write" }, + { 0, "hf cipurse aread" }, + { 0, "hf cipurse awrite" }, + { 0, "hf cipurse formatall" }, + { 0, "hf cipurse create" }, + { 0, "hf cipurse delete" }, + { 0, "hf cipurse updkey" }, + { 0, "hf cipurse updakey" }, + { 0, "hf cipurse default" }, + { 1, "hf cipurse test" }, + { 1, "hf epa help" }, + { 0, "hf epa cnonces" }, + { 0, "hf epa replay" }, + { 0, "hf epa sim" }, + { 1, "hf emrtd help" }, + { 0, "hf emrtd dump" }, + { 1, "hf emrtd info" }, + { 1, "hf emrtd list" }, + { 1, "hf felica help" }, + { 1, "hf felica list" }, + { 0, "hf felica reader" }, + { 0, "hf felica info" }, + { 0, "hf felica sniff" }, + { 0, "hf felica raw" }, + { 0, "hf felica rdbl" }, + { 0, "hf felica wrbl" }, + { 0, "hf felica rqservice" }, + { 0, "hf felica rqresponse" }, + { 0, "hf felica scsvcode" }, + { 0, "hf felica rqsyscode" }, + { 0, "hf felica auth1" }, + { 0, "hf felica auth2" }, + { 0, "hf felica rqspecver" }, + { 0, "hf felica resetmode" }, + { 0, "hf felica litesim" }, + { 0, "hf felica litedump" }, + { 1, "hf fido help" }, + { 1, "hf fido list" }, + { 0, "hf fido info" }, + { 0, "hf fido reg" }, + { 0, "hf fido auth" }, + { 0, "hf fido make" }, + { 0, "hf fido assert" }, + { 1, "hf fudan help" }, + { 0, "hf fudan reader" }, + { 0, "hf fudan dump" }, + { 0, "hf fudan rdbl" }, + { 1, "hf fudan view" }, + { 0, "hf fudan wrbl" }, + { 1, "hf gallagher help" }, + { 0, "hf gallagher reader" }, + { 0, "hf gallagher clone" }, + { 0, "hf gallagher delete" }, + { 1, "hf gallagher diversifykey" }, + { 1, "hf gallagher decode" }, + { 1, "hf ksx6924 help" }, + { 0, "hf ksx6924 select" }, + { 0, "hf ksx6924 info" }, + { 0, "hf ksx6924 balance" }, + { 0, "hf ksx6924 init" }, + { 0, "hf ksx6924 prec" }, + { 1, "hf jooki help" }, + { 0, "hf jooki clone" }, + { 1, "hf jooki decode" }, + { 1, "hf jooki encode" }, + { 0, "hf jooki sim" }, + { 1, "hf iclass help" }, + { 0, "hf iclass dump" }, + { 1, "hf iclass info" }, + { 1, "hf iclass list" }, + { 0, "hf iclass rdbl" }, + { 0, "hf iclass reader" }, + { 0, "hf iclass restore" }, + { 0, "hf iclass sniff" }, + { 0, "hf iclass wrbl" }, + { 0, "hf iclass chk" }, + { 1, "hf iclass loclass" }, + { 1, "hf iclass lookup" }, + { 0, "hf iclass sim" }, + { 0, "hf iclass eload" }, + { 0, "hf iclass esave" }, + { 0, "hf iclass eview" }, + { 1, "hf iclass configcard" }, + { 1, "hf iclass calcnewkey" }, + { 1, "hf iclass encode" }, + { 1, "hf iclass encrypt" }, + { 1, "hf iclass decrypt" }, + { 1, "hf iclass managekeys" }, + { 1, "hf iclass permutekey" }, + { 1, "hf iclass view" }, + { 0, "hf iclass sam" }, + { 1, "hf legic help" }, + { 0, "hf legic dump" }, + { 0, "hf legic info" }, + { 1, "hf legic list" }, + { 0, "hf legic rdbl" }, + { 0, "hf legic reader" }, + { 0, "hf legic restore" }, + { 0, "hf legic wipe" }, + { 0, "hf legic wrbl" }, + { 0, "hf legic sim" }, + { 0, "hf legic eload" }, + { 0, "hf legic esave" }, + { 0, "hf legic eview" }, + { 0, "hf legic einfo" }, + { 1, "hf legic crc" }, + { 1, "hf legic view" }, + { 1, "hf lto help" }, + { 0, "hf lto dump" }, + { 0, "hf lto info" }, + { 1, "hf lto list" }, + { 0, "hf lto rdbl" }, + { 0, "hf lto reader" }, + { 0, "hf lto restore" }, + { 0, "hf lto wrbl" }, + { 1, "hf mf help" }, + { 1, "hf mf list" }, + { 0, "hf mf darkside" }, + { 0, "hf mf nested" }, + { 1, "hf mf hardnested" }, + { 0, "hf mf staticnested" }, + { 0, "hf mf autopwn" }, + { 0, "hf mf nack" }, + { 0, "hf mf chk" }, + { 0, "hf mf fchk" }, + { 1, "hf mf decrypt" }, + { 0, "hf mf supercard" }, + { 0, "hf mf auth4" }, + { 1, "hf mf acl" }, + { 0, "hf mf dump" }, + { 1, "hf mf mad" }, + { 0, "hf mf personalize" }, + { 0, "hf mf rdbl" }, + { 0, "hf mf rdsc" }, + { 0, "hf mf restore" }, + { 0, "hf mf setmod" }, + { 1, "hf mf value" }, + { 1, "hf mf view" }, + { 0, "hf mf wipe" }, + { 0, "hf mf wrbl" }, + { 0, "hf mf sim" }, + { 0, "hf mf ecfill" }, + { 0, "hf mf eclr" }, + { 0, "hf mf egetblk" }, + { 0, "hf mf egetsc" }, + { 0, "hf mf ekeyprn" }, + { 0, "hf mf eload" }, + { 0, "hf mf esave" }, + { 0, "hf mf esetblk" }, + { 0, "hf mf eview" }, + { 0, "hf mf cgetblk" }, + { 0, "hf mf cgetsc" }, + { 0, "hf mf cload" }, + { 0, "hf mf csave" }, + { 0, "hf mf csetblk" }, + { 0, "hf mf csetuid" }, + { 0, "hf mf cview" }, + { 0, "hf mf cwipe" }, + { 0, "hf mf gen3uid" }, + { 0, "hf mf gen3blk" }, + { 0, "hf mf gen3freeze" }, + { 0, "hf mf ggetblk" }, + { 0, "hf mf gload" }, + { 0, "hf mf gsave" }, + { 0, "hf mf gsetblk" }, + { 0, "hf mf gview" }, + { 0, "hf mf gdmcfg" }, + { 0, "hf mf gdmsetcfg" }, + { 0, "hf mf gdmsetblk" }, + { 0, "hf mf ndefformat" }, + { 0, "hf mf ndefread" }, + { 0, "hf mf ndefwrite" }, + { 1, "hf mfp help" }, + { 1, "hf mfp list" }, + { 0, "hf mfp auth" }, + { 0, "hf mfp chk" }, + { 0, "hf mfp dump" }, + { 0, "hf mfp info" }, + { 0, "hf mfp mad" }, + { 0, "hf mfp rdbl" }, + { 0, "hf mfp rdsc" }, + { 0, "hf mfp wrbl" }, + { 0, "hf mfp commitp" }, + { 0, "hf mfp initp" }, + { 0, "hf mfp wrp" }, + { 0, "hf mfp ndefformat" }, + { 0, "hf mfp ndefread" }, + { 0, "hf mfp ndefwrite" }, + { 1, "hf mfu help" }, + { 1, "hf mfu keygen" }, + { 1, "hf mfu pwdgen" }, + { 0, "hf mfu otptear" }, + { 0, "hf mfu cauth" }, + { 0, "hf mfu dump" }, + { 0, "hf mfu info" }, + { 0, "hf mfu ndefread" }, + { 0, "hf mfu rdbl" }, + { 0, "hf mfu restore" }, + { 1, "hf mfu view" }, + { 0, "hf mfu wrbl" }, + { 0, "hf mfu tamper" }, + { 0, "hf mfu eload" }, + { 0, "hf mfu esave" }, + { 0, "hf mfu eview" }, + { 0, "hf mfu sim" }, + { 0, "hf mfu setpwd" }, + { 0, "hf mfu setuid" }, + { 1, "hf mfdes help" }, + { 0, "hf mfdes info" }, + { 0, "hf mfdes getuid" }, + { 0, "hf mfdes default" }, + { 0, "hf mfdes auth" }, + { 0, "hf mfdes chk" }, + { 0, "hf mfdes detect" }, + { 0, "hf mfdes freemem" }, + { 0, "hf mfdes setconfig" }, + { 0, "hf mfdes formatpicc" }, + { 1, "hf mfdes list" }, + { 0, "hf mfdes mad" }, + { 0, "hf mfdes lsapp" }, + { 0, "hf mfdes getaids" }, + { 0, "hf mfdes getappnames" }, + { 0, "hf mfdes bruteaid" }, + { 0, "hf mfdes createapp" }, + { 0, "hf mfdes deleteapp" }, + { 0, "hf mfdes selectapp" }, + { 0, "hf mfdes changekey" }, + { 0, "hf mfdes chkeysettings" }, + { 0, "hf mfdes getkeysettings" }, + { 0, "hf mfdes getkeyversions" }, + { 0, "hf mfdes getfileids" }, + { 0, "hf mfdes getfileisoids" }, + { 0, "hf mfdes lsfiles" }, + { 0, "hf mfdes dump" }, + { 0, "hf mfdes createfile" }, + { 0, "hf mfdes createvaluefile" }, + { 0, "hf mfdes createrecordfile" }, + { 0, "hf mfdes createmacfile" }, + { 0, "hf mfdes deletefile" }, + { 0, "hf mfdes getfilesettings" }, + { 0, "hf mfdes chfilesettings" }, + { 0, "hf mfdes read" }, + { 0, "hf mfdes write" }, + { 0, "hf mfdes value" }, + { 0, "hf mfdes clearrecfile" }, + { 1, "hf mfdes test" }, + { 1, "hf ntag424 help" }, + { 0, "hf ntag424 info" }, + { 0, "hf ntag424 sdm" }, + { 1, "hf ntag424 view" }, + { 1, "hf seos help" }, + { 0, "hf seos info" }, + { 1, "hf seos list" }, + { 1, "hf st25ta help" }, + { 0, "hf st25ta info" }, + { 1, "hf st25ta list" }, + { 1, "hf st25ta ndefread" }, + { 0, "hf st25ta protect" }, + { 0, "hf st25ta pwd" }, + { 0, "hf st25ta sim" }, + { 1, "hf tesla help" }, + { 0, "hf tesla info" }, + { 1, "hf tesla list" }, + { 1, "hf texkom help" }, + { 0, "hf texkom reader" }, + { 0, "hf texkom sim" }, + { 1, "hf thinfilm help" }, + { 0, "hf thinfilm info" }, + { 1, "hf thinfilm list" }, + { 0, "hf thinfilm sim" }, + { 1, "hf topaz help" }, + { 1, "hf topaz list" }, + { 0, "hf topaz dump" }, + { 0, "hf topaz info" }, + { 0, "hf topaz raw" }, + { 0, "hf topaz rdbl" }, + { 0, "hf topaz reader" }, + { 0, "hf topaz sim" }, + { 0, "hf topaz sniff" }, + { 1, "hf topaz view" }, + { 0, "hf topaz wrbl" }, + { 1, "hf vas help" }, + { 0, "hf vas reader" }, + { 1, "hf vas decrypt" }, + { 1, "hf waveshare help" }, + { 0, "hf waveshare loadbmp" }, + { 1, "hf xerox help" }, + { 0, "hf xerox info" }, + { 0, "hf xerox reader" }, + { 0, "hf xerox dump" }, + { 1, "hw help" }, + { 0, "hw break" }, + { 1, "hw connect" }, + { 0, "hw dbg" }, + { 0, "hw detectreader" }, + { 0, "hw fpgaoff" }, + { 0, "hw lcd" }, + { 0, "hw lcdreset" }, + { 0, "hw ping" }, + { 0, "hw readmem" }, + { 0, "hw reset" }, + { 0, "hw setlfdivisor" }, + { 0, "hw setmux" }, + { 0, "hw standalone" }, + { 0, "hw status" }, + { 0, "hw tearoff" }, + { 0, "hw tia" }, + { 1, "hw timeout" }, + { 0, "hw tune" }, + { 1, "hw version" }, + { 1, "lf help" }, + { 0, "lf config" }, + { 0, "lf cmdread" }, + { 0, "lf read" }, + { 1, "lf search" }, + { 0, "lf sim" }, + { 0, "lf simask" }, + { 0, "lf simfsk" }, + { 0, "lf simpsk" }, + { 0, "lf simbidir" }, + { 0, "lf sniff" }, + { 0, "lf tune" }, + { 1, "lf awid help" }, + { 1, "lf awid demod" }, + { 0, "lf awid reader" }, + { 0, "lf awid clone" }, + { 0, "lf awid sim" }, + { 0, "lf awid brute" }, + { 0, "lf awid watch" }, + { 1, "lf cotag help" }, + { 1, "lf cotag demod" }, + { 0, "lf cotag reader" }, + { 1, "lf destron help" }, + { 1, "lf destron demod" }, + { 0, "lf destron reader" }, + { 0, "lf destron clone" }, + { 0, "lf destron sim" }, + { 1, "lf em help" }, + { 1, "lf em 410x help" }, + { 1, "lf em 410x demod" }, + { 0, "lf em 410x reader" }, + { 0, "lf em 410x sim" }, + { 0, "lf em 410x brute" }, + { 0, "lf em 410x watch" }, + { 0, "lf em 410x spoof" }, + { 0, "lf em 410x clone" }, + { 1, "lf em 4x05 help" }, + { 0, "lf em 4x05 brute" }, + { 0, "lf em 4x05 chk" }, + { 1, "lf em 4x05 demod" }, + { 0, "lf em 4x05 dump" }, + { 0, "lf em 4x05 info" }, + { 0, "lf em 4x05 read" }, + { 1, "lf em 4x05 sniff" }, + { 0, "lf em 4x05 unlock" }, + { 0, "lf em 4x05 wipe" }, + { 0, "lf em 4x05 write" }, + { 1, "lf em 4x50 help" }, + { 0, "lf em 4x50 brute" }, + { 0, "lf em 4x50 chk" }, + { 0, "lf em 4x50 dump" }, + { 0, "lf em 4x50 info" }, + { 0, "lf em 4x50 login" }, + { 0, "lf em 4x50 rdbl" }, + { 0, "lf em 4x50 reader" }, + { 0, "lf em 4x50 restore" }, + { 0, "lf em 4x50 wrbl" }, + { 0, "lf em 4x50 wrpwd" }, + { 0, "lf em 4x50 wipe" }, + { 0, "lf em 4x50 eload" }, + { 0, "lf em 4x50 esave" }, + { 0, "lf em 4x50 eview" }, + { 0, "lf em 4x50 sim" }, + { 1, "lf em 4x70 help" }, + { 0, "lf em 4x70 brute" }, + { 0, "lf em 4x70 info" }, + { 0, "lf em 4x70 write" }, + { 0, "lf em 4x70 unlock" }, + { 0, "lf em 4x70 auth" }, + { 0, "lf em 4x70 writepin" }, + { 0, "lf em 4x70 writekey" }, + { 1, "lf fdxb help" }, + { 1, "lf fdxb demod" }, + { 0, "lf fdxb reader" }, + { 0, "lf fdxb clone" }, + { 0, "lf fdxb sim" }, + { 1, "lf gallagher help" }, + { 1, "lf gallagher demod" }, + { 0, "lf gallagher reader" }, + { 0, "lf gallagher clone" }, + { 0, "lf gallagher sim" }, + { 1, "lf gproxii help" }, + { 1, "lf gproxii demod" }, + { 0, "lf gproxii reader" }, + { 0, "lf gproxii clone" }, + { 0, "lf gproxii sim" }, + { 1, "lf hid help" }, + { 1, "lf hid demod" }, + { 0, "lf hid reader" }, + { 0, "lf hid clone" }, + { 0, "lf hid sim" }, + { 0, "lf hid brute" }, + { 0, "lf hid watch" }, + { 1, "lf hitag help" }, + { 1, "lf hitag list" }, + { 0, "lf hitag info" }, + { 0, "lf hitag dump" }, + { 0, "lf hitag read" }, + { 0, "lf hitag wrbl" }, + { 0, "lf hitag sniff" }, + { 0, "lf hitag cc" }, + { 0, "lf hitag ta" }, + { 0, "lf hitag eload" }, + { 0, "lf hitag sim" }, + { 1, "lf idteck help" }, + { 1, "lf idteck demod" }, + { 0, "lf idteck reader" }, + { 0, "lf idteck clone" }, + { 0, "lf idteck sim" }, + { 1, "lf indala help" }, + { 0, "lf indala brute" }, + { 1, "lf indala demod" }, + { 1, "lf indala altdemod" }, + { 0, "lf indala reader" }, + { 0, "lf indala clone" }, + { 0, "lf indala sim" }, + { 1, "lf io help" }, + { 1, "lf io demod" }, + { 0, "lf io reader" }, + { 0, "lf io clone" }, + { 0, "lf io sim" }, + { 0, "lf io watch" }, + { 1, "lf jablotron help" }, + { 1, "lf jablotron demod" }, + { 0, "lf jablotron reader" }, + { 0, "lf jablotron clone" }, + { 0, "lf jablotron sim" }, + { 1, "lf keri help" }, + { 1, "lf keri demod" }, + { 0, "lf keri reader" }, + { 0, "lf keri clone" }, + { 0, "lf keri sim" }, + { 1, "lf motorola help" }, + { 1, "lf motorola demod" }, + { 0, "lf motorola reader" }, + { 0, "lf motorola clone" }, + { 0, "lf motorola sim" }, + { 1, "lf nedap help" }, + { 1, "lf nedap demod" }, + { 0, "lf nedap reader" }, + { 0, "lf nedap clone" }, + { 0, "lf nedap sim" }, + { 1, "lf nexwatch help" }, + { 1, "lf nexwatch demod" }, + { 0, "lf nexwatch reader" }, + { 0, "lf nexwatch clone" }, + { 0, "lf nexwatch sim" }, + { 1, "lf noralsy help" }, + { 1, "lf noralsy demod" }, + { 0, "lf noralsy reader" }, + { 0, "lf noralsy clone" }, + { 0, "lf noralsy sim" }, + { 1, "lf pac help" }, + { 1, "lf pac demod" }, + { 0, "lf pac reader" }, + { 0, "lf pac clone" }, + { 0, "lf pac sim" }, + { 1, "lf paradox help" }, + { 1, "lf paradox demod" }, + { 0, "lf paradox reader" }, + { 0, "lf paradox clone" }, + { 0, "lf paradox sim" }, + { 1, "lf pcf7931 help" }, + { 0, "lf pcf7931 reader" }, + { 0, "lf pcf7931 write" }, + { 1, "lf pcf7931 config" }, + { 1, "lf presco help" }, + { 1, "lf presco demod" }, + { 0, "lf presco reader" }, + { 0, "lf presco clone" }, + { 0, "lf presco sim" }, + { 1, "lf pyramid help" }, + { 1, "lf pyramid demod" }, + { 0, "lf pyramid reader" }, + { 0, "lf pyramid clone" }, + { 0, "lf pyramid sim" }, + { 1, "lf securakey help" }, + { 1, "lf securakey demod" }, + { 0, "lf securakey reader" }, + { 0, "lf securakey clone" }, + { 0, "lf securakey sim" }, + { 1, "lf ti help" }, + { 1, "lf ti demod" }, + { 0, "lf ti reader" }, + { 0, "lf ti write" }, + { 1, "lf t55xx help" }, + { 0, "lf t55xx clonehelp" }, + { 1, "lf t55xx config" }, + { 0, "lf t55xx dangerraw" }, + { 1, "lf t55xx detect" }, + { 0, "lf t55xx deviceconfig" }, + { 0, "lf t55xx dump" }, + { 1, "lf t55xx info" }, + { 0, "lf t55xx p1detect" }, + { 0, "lf t55xx read" }, + { 0, "lf t55xx resetread" }, + { 0, "lf t55xx restore" }, + { 1, "lf t55xx trace" }, + { 0, "lf t55xx wakeup" }, + { 0, "lf t55xx write" }, + { 0, "lf t55xx bruteforce" }, + { 0, "lf t55xx chk" }, + { 0, "lf t55xx protect" }, + { 0, "lf t55xx recoverpw" }, + { 1, "lf t55xx sniff" }, + { 0, "lf t55xx special" }, + { 0, "lf t55xx wipe" }, + { 1, "lf viking help" }, + { 1, "lf viking demod" }, + { 0, "lf viking reader" }, + { 0, "lf viking clone" }, + { 0, "lf viking sim" }, + { 1, "lf visa2000 help" }, + { 1, "lf visa2000 demod" }, + { 0, "lf visa2000 reader" }, + { 0, "lf visa2000 clone" }, + { 0, "lf visa2000 sim" }, + { 1, "mem help" }, + { 0, "mem baudrate" }, + { 0, "mem dump" }, + { 0, "mem info" }, + { 0, "mem load" }, + { 0, "mem wipe" }, + { 1, "mem spiffs help" }, + { 0, "mem spiffs copy" }, + { 0, "mem spiffs check" }, + { 0, "mem spiffs dump" }, + { 0, "mem spiffs info" }, + { 0, "mem spiffs mount" }, + { 0, "mem spiffs remove" }, + { 0, "mem spiffs rename" }, + { 0, "mem spiffs test" }, + { 0, "mem spiffs tree" }, + { 0, "mem spiffs unmount" }, + { 0, "mem spiffs upload" }, + { 0, "mem spiffs view" }, + { 0, "mem spiffs wipe" }, + { 1, "nfc help" }, + { 1, "nfc decode" }, + { 0, "nfc type1 read" }, + { 1, "nfc type1 help" }, + { 0, "nfc type2 read" }, + { 1, "nfc type2 help" }, + { 0, "nfc type4a format" }, + { 0, "nfc type4a read" }, + { 0, "nfc type4a write" }, + { 0, "nfc type4a st25taread" }, + { 1, "nfc type4a help" }, + { 0, "nfc type4b read" }, + { 1, "nfc type4b help" }, + { 0, "nfc mf cformat" }, + { 0, "nfc mf cread" }, + { 0, "nfc mf cwrite" }, + { 0, "nfc mf pread" }, + { 1, "nfc mf help" }, + { 0, "nfc barcode read" }, + { 0, "nfc barcode sim" }, + { 1, "nfc barcode help" }, + { 1, "piv help" }, + { 0, "piv select" }, + { 0, "piv getdata" }, + { 0, "piv authsign" }, + { 0, "piv scan" }, + { 1, "piv list" }, + { 1, "smart help" }, + { 1, "smart list" }, + { 0, "smart info" }, + { 0, "smart reader" }, + { 0, "smart raw" }, + { 1, "smart upgrade" }, + { 0, "smart setclock" }, + { 0, "smart brute" }, + { 1, "script help" }, + { 1, "script list" }, + { 1, "script run" }, + { 1, "trace help" }, + { 1, "trace extract" }, + { 1, "trace list" }, + { 1, "trace load" }, + { 1, "trace save" }, + { 1, "usart help" }, + { 0, "usart btpin" }, + { 0, "usart btfactory" }, + { 0, "usart tx" }, + { 0, "usart rx" }, + { 0, "usart txrx" }, + { 0, "usart txhex" }, + { 0, "usart rxhex" }, + { 0, "usart config" }, + { 1, "wiegand help" }, + { 1, "wiegand list" }, + { 1, "wiegand encode" }, + { 1, "wiegand decode" }, {0, NULL} }; @@ -808,4 +808,4 @@ const static vocabulory_t vocabulory[] = { } #endif -#endif \ No newline at end of file +#endif diff --git a/client/src/proxendian.h b/client/src/proxendian.h index 05b699747..d258d2ce8 100644 --- a/client/src/proxendian.h +++ b/client/src/proxendian.h @@ -54,14 +54,14 @@ static inline uint16_t le16(uint16_t v) { return (uint16_t)( - (v >> 8) | (v << 8) - ); + (v >> 8) | (v << 8) + ); } static inline uint32_t le32(uint32_t v) { return (uint32_t)( - (le16(v) << 16) | (le16(v >> 16)) - ); + (le16(v) << 16) | (le16(v >> 16)) + ); } #endif // HOST_LITTLE_ENDIAN diff --git a/common/commonutil.c b/common/commonutil.c index 6790d835a..2265c240c 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -162,38 +162,38 @@ uint64_t bytes_to_num(uint8_t *src, size_t len) { inline uint16_t MemLeToUint2byte(const uint8_t *data) { return (uint16_t)( - (data[1] << 8) + data[0] - ); + (data[1] << 8) + data[0] + ); } inline uint32_t MemLeToUint3byte(const uint8_t *data) { return (uint32_t)( - (data[2] << 16) + (data[1] << 8) + data[0] - ); + (data[2] << 16) + (data[1] << 8) + data[0] + ); } inline uint32_t MemLeToUint4byte(const uint8_t *data) { return (uint32_t)( - (data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0] - ); + (data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0] + ); } inline uint16_t MemBeToUint2byte(const uint8_t *data) { return (uint16_t)( - (data[0] << 8) + data[1] - ); + (data[0] << 8) + data[1] + ); } inline uint32_t MemBeToUint3byte(const uint8_t *data) { return (uint32_t)( - (data[0] << 16) + (data[1] << 8) + data[2] - ); + (data[0] << 16) + (data[1] << 8) + data[2] + ); } inline uint32_t MemBeToUint4byte(const uint8_t *data) { return (uint32_t)( - (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3] - ); + (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3] + ); } void Uint2byteToMemLe(uint8_t *data, uint16_t value) { From 41ff9191d6e1271c33edd495614c199b1e9d241c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 21:04:21 +0200 Subject: [PATCH 0288/1034] text --- client/src/cmdhf14b.c | 2 +- client/src/cmdhf15.c | 50 ++++++++++++++++++++++------------------ client/src/cmdhficlass.c | 2 +- client/src/cmdhflegic.c | 2 +- client/src/cmdhfmfp.c | 1 - client/src/cmdhfmfu.c | 1 - client/src/cmdlfem4x05.c | 14 +++++------ client/src/cmdlfem4x70.c | 2 -- client/src/cmdlfhitag.c | 1 - doc/colors_notes.md | 1 - 10 files changed, 37 insertions(+), 39 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 29a985b29..e8d48751a 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -861,7 +861,7 @@ static bool HF14B_Std_Info(bool verbose, bool do_aid_search) { switch (status) { case 0: { PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "-------------------- " _CYAN_("Tag information") " --------------------"); + PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ---------------------------"); PrintAndLogEx(SUCCESS, " UID : " _GREEN_("%s"), sprint_hex(card.uid, card.uidlen)); PrintAndLogEx(SUCCESS, " ATQB : %s", sprint_hex(card.atqb, sizeof(card.atqb))); PrintAndLogEx(SUCCESS, " CHIPID : %02X", card.chipid); diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 792692773..ad63bd3b8 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -671,11 +671,9 @@ static int NxpTestEAS(uint8_t *uid) { SendCommandMIX(CMD_HF_ISO15693_COMMAND, reqlen, fast, reply, req, reqlen); if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000) == false) { - PrintAndLogEx(WARNING, "iso15693 timeout"); + PrintAndLogEx(DEBUG, "iso15693 timeout"); } else { - PrintAndLogEx(NORMAL, ""); - - + PrintAndLogEx(INFO, ""); if (resp.length < 2) { PrintAndLogEx(INFO, " EAS (Electronic Article Surveillance) is not active"); } else { @@ -687,7 +685,6 @@ static int NxpTestEAS(uint8_t *uid) { } } } - return PM3_SUCCESS; } @@ -712,7 +709,7 @@ static int NxpCheckSig(uint8_t *uid) { SendCommandMIX(CMD_HF_ISO15693_COMMAND, reqlen, fast, reply, req, reqlen); if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000) == false) { - PrintAndLogEx(WARNING, "iso15693 timeout"); + PrintAndLogEx(DEBUG, "iso15693 timeout"); DropField(); return PM3_ETIMEOUT; } @@ -732,10 +729,9 @@ static int NxpCheckSig(uint8_t *uid) { } uint8_t signature[32] = {0x00}; - memcpy(signature, recv + 1, 32); + memcpy(signature, recv + 1, sizeof(signature)); nxp_15693_print_signature(uid, signature); - return PM3_SUCCESS; } @@ -764,7 +760,7 @@ static int NxpSysInfo(uint8_t *uid) { clearCommandBuffer(); SendCommandMIX(CMD_HF_ISO15693_COMMAND, reqlen, fast, reply, req, reqlen); if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000) == false) { - PrintAndLogEx(WARNING, "iso15693 timeout"); + PrintAndLogEx(DEBUG, "iso15693 timeout"); DropField(); return PM3_ETIMEOUT; } @@ -790,21 +786,29 @@ static int NxpSysInfo(uint8_t *uid) { bool support_signature = (recv[5] & 0x01); bool support_easmode = (recv[4] & 0x04); - PrintAndLogEx(INFO, "--------- " _CYAN_("NXP Sysinfo") " ---------"); - PrintAndLogEx(INFO, " raw : %s", sprint_hex(recv, 8)); - PrintAndLogEx(INFO, " Password protection configuration:"); - PrintAndLogEx(INFO, " * Page L read%s password protected", ((recv[2] & 0x01) ? "" : " not")); - PrintAndLogEx(INFO, " * Page L write%s password protected", ((recv[2] & 0x02) ? "" : " not")); - PrintAndLogEx(INFO, " * Page H read%s password protected", ((recv[2] & 0x10) ? "" : " not")); - PrintAndLogEx(INFO, " * Page H write%s password protected", ((recv[2] & 0x20) ? "" : " not")); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "--- " _CYAN_("NXP Sysinfo")); + PrintAndLogEx(INFO, " raw... %s", sprint_hex(recv, 8)); + PrintAndLogEx(INFO, " " _CYAN_("Password protection configuration:")); + PrintAndLogEx(INFO, " * Page L read%s password protected", ((recv[2] & 0x01) ? "" : _GREEN_(" not"))); + PrintAndLogEx(INFO, " * Page L write%s password protected", ((recv[2] & 0x02) ? "" : _GREEN_(" not"))); + PrintAndLogEx(INFO, " * Page H read%s password protected", ((recv[2] & 0x10) ? "" : _GREEN_(" not"))); + PrintAndLogEx(INFO, " * Page H write%s password protected", ((recv[2] & 0x20) ? "" : _GREEN_(" not"))); - PrintAndLogEx(INFO, " Lock bits:"); - PrintAndLogEx(INFO, " * AFI%s locked", ((recv[3] & 0x01) ? "" : " not")); // AFI lock bit - PrintAndLogEx(INFO, " * EAS%s locked", ((recv[3] & 0x02) ? "" : " not")); // EAS lock bit - PrintAndLogEx(INFO, " * DSFID%s locked", ((recv[3] & 0x03) ? "" : " not")); // DSFID lock bit - PrintAndLogEx(INFO, " * Password protection configuration%s locked", ((recv[3] & 0x04) ? "" : " not")); // Password protection pointer address and access conditions lock bit + PrintAndLogEx(INFO, " " _CYAN_("Lock bits:")); + // AFI lock bit + PrintAndLogEx(INFO, " * AFI%s locked", ((recv[3] & 0x01) ? "" : _GREEN_(" not"))); - PrintAndLogEx(INFO, " Features:"); + // EAS lock bit + PrintAndLogEx(INFO, " * EAS%s locked", ((recv[3] & 0x02) ? "" : _GREEN_(" not"))); + + // DSFID lock bit + PrintAndLogEx(INFO, " * DSFID%s locked", ((recv[3] & 0x03) ? "" : _GREEN_(" not"))); + + // Password protection pointer address and access conditions lock bit + PrintAndLogEx(INFO, " * Password protection configuration%s locked", ((recv[3] & 0x04) ? "" : _GREEN_(" not"))); + + PrintAndLogEx(INFO, " " _CYAN_("Features:")); PrintAndLogEx(INFO, " * User memory password protection%s supported", ((recv[4] & 0x01) ? "" : " not")); PrintAndLogEx(INFO, " * Counter feature%s supported", ((recv[4] & 0x02) ? "" : " not")); PrintAndLogEx(INFO, " * EAS ID%s supported by EAS ALARM command", support_easmode ? "" : " not"); @@ -827,6 +831,7 @@ static int NxpSysInfo(uint8_t *uid) { NxpCheckSig(uid); } + PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } @@ -925,7 +930,6 @@ static int CmdHF15Info(const char *Cmd) { memcpy(uid, data + 2, sizeof(uid)); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ---------------------------"); - PrintAndLogEx(INFO, "-------------------------------------------------------------"); PrintAndLogEx(SUCCESS, " TYPE: " _YELLOW_("%s"), getTagInfo_15(data + 2)); PrintAndLogEx(SUCCESS, " UID: " _GREEN_("%s"), iso15693_sprintUID(NULL, uid)); PrintAndLogEx(SUCCESS, " SYSINFO: %s", sprint_hex(data, resp.length - 2)); diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 11bec0d16..1a96fbacb 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -4282,7 +4282,7 @@ int info_iclass(bool shallow_mod) { picopass_ns_hdr_t *ns_hdr = &r->header.ns_hdr; PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "--------------------- " _CYAN_("Tag Information") " ----------------------"); + PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ----------------------------------------"); if ((r->status & FLAG_ICLASS_CSN) == FLAG_ICLASS_CSN) { PrintAndLogEx(SUCCESS, " CSN: " _GREEN_("%s") " uid", sprint_hex(hdr->csn, sizeof(hdr->csn))); diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 160eac05b..2398aa8dc 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -83,7 +83,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff int crc = data[4]; uint32_t calc_crc = CRC8Legic(data, 4); - PrintAndLogEx(INFO, "--------------------- " _CYAN_("Tag Information") " ----------------------"); + PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ----------------------------------------"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, " " _CYAN_("CDF: System Area")); PrintAndLogEx(INFO, "------------------------------------------------------"); diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index e8e2c7226..01f529b99 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -283,7 +283,6 @@ static int CmdHFMFPInfo(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ---------------------------"); - PrintAndLogEx(INFO, "-------------------------------------------------------------"); // Mifare Plus info SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 6762d0b1c..d5fcd3ac0 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -1785,7 +1785,6 @@ static int CmdHF14AMfUInfo(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " --------------------------"); - PrintAndLogEx(INFO, "-------------------------------------------------------------"); ul_print_type(tagtype, 6); // Swap endianness diff --git a/client/src/cmdlfem4x05.c b/client/src/cmdlfem4x05.c index c21540f45..665518a40 100644 --- a/client/src/cmdlfem4x05.c +++ b/client/src/cmdlfem4x05.c @@ -2162,14 +2162,14 @@ static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, {"brute", CmdEM4x05Brute, IfPm3Lf, "Bruteforce password"}, {"chk", CmdEM4x05Chk, IfPm3Lf, "Check passwords from dictionary"}, - {"demod", CmdEM4x05Demod, AlwaysAvailable, "demodulate a EM4x05/EM4x69 tag from the GraphBuffer"}, - {"dump", CmdEM4x05Dump, IfPm3Lf, "dump EM4x05/EM4x69 tag"}, - {"info", CmdEM4x05Info, IfPm3Lf, "tag information EM4x05/EM4x69"}, - {"read", CmdEM4x05Read, IfPm3Lf, "read word data from EM4x05/EM4x69"}, + {"demod", CmdEM4x05Demod, AlwaysAvailable, "Demodulate a EM4x05/EM4x69 tag from the GraphBuffer"}, + {"dump", CmdEM4x05Dump, IfPm3Lf, "Dump EM4x05/EM4x69 tag"}, + {"info", CmdEM4x05Info, IfPm3Lf, "Tag information"}, + {"read", CmdEM4x05Read, IfPm3Lf, "Read word data from EM4x05/EM4x69"}, {"sniff", CmdEM4x05Sniff, AlwaysAvailable, "Attempt to recover em4x05 commands from sample buffer"}, - {"unlock", CmdEM4x05Unlock, IfPm3Lf, "execute tear off against EM4x05/EM4x69"}, - {"wipe", CmdEM4x05Wipe, IfPm3Lf, "wipe EM4x05/EM4x69 tag"}, - {"write", CmdEM4x05Write, IfPm3Lf, "write word data to EM4x05/EM4x69"}, + {"unlock", CmdEM4x05Unlock, IfPm3Lf, "Execute tear off against EM4x05/EM4x69"}, + {"wipe", CmdEM4x05Wipe, IfPm3Lf, "Wipe EM4x05/EM4x69 tag"}, + {"write", CmdEM4x05Write, IfPm3Lf, "Write word data to EM4x05/EM4x69"}, {NULL, NULL, NULL, NULL} }; diff --git a/client/src/cmdlfem4x70.c b/client/src/cmdlfem4x70.c index d7bc3811a..c1e2aff03 100644 --- a/client/src/cmdlfem4x70.c +++ b/client/src/cmdlfem4x70.c @@ -35,8 +35,6 @@ static void print_info_result(const uint8_t *data) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ---------------------------"); - PrintAndLogEx(INFO, "-----------------------------------------------"); - PrintAndLogEx(INFO, "Block | data | info"); PrintAndLogEx(INFO, "------+----------+-----------------------------"); diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 4df9ca4a7..1cbae7bd3 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -514,7 +514,6 @@ static int CmdLFHitagInfo(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ---------------------------"); - PrintAndLogEx(INFO, "-------------------------------------------------------------"); PrintAndLogEx(SUCCESS, " UID: " _GREEN_("%08X"), uid); PrintAndLogEx(SUCCESS, " TYPE: " _GREEN_("%s"), getHitagTypeStr(uid)); diff --git a/doc/colors_notes.md b/doc/colors_notes.md index dac993585..b25a7d7c9 100644 --- a/doc/colors_notes.md +++ b/doc/colors_notes.md @@ -43,7 +43,6 @@ The following definition has be crystallized out from these experiments. Its no ``` PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ---------------------------"); - PrintAndLogEx(INFO, "-------------------------------------------------------------"); ``` For more examples, see also all **-h** helptext now in the LUA scripts. For the command help texts using _YELLOW_ for the example makes it very easy to see what is the command vs the description. From b446c36da63eeb7c539f534fe4f9aa6592622ed4 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 21:04:32 +0200 Subject: [PATCH 0289/1034] style --- client/src/proxmark3.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 162bc7776..f6c25a9eb 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -282,19 +282,22 @@ check_script: // read script file if (fgets(script_cmd_buf, sizeof(script_cmd_buf), current_cmdscriptfile()) == NULL) { - if (!pop_cmdscriptfile()) + if (pop_cmdscriptfile() == false) { break; - + } goto check_script; - } else { - prompt_ctx = PROXPROMPT_CTX_SCRIPTFILE; - // remove linebreaks - strcleanrn(script_cmd_buf, sizeof(script_cmd_buf)); - - cmd = str_dup(script_cmd_buf); - if (cmd != NULL) - printprompt = true; } + + prompt_ctx = PROXPROMPT_CTX_SCRIPTFILE; + + // remove linebreaks + strcleanrn(script_cmd_buf, sizeof(script_cmd_buf)); + + cmd = str_dup(script_cmd_buf); + if (cmd != NULL) { + printprompt = true; + } + } else { // If there is a script command if (execCommand) { @@ -429,8 +432,9 @@ check_script: msleep(100); // Make sure command is sent before killing client } - while (current_cmdscriptfile()) + while (current_cmdscriptfile()) { pop_cmdscriptfile(); + } pm3line_flush_history(); From 4179ce1e42fe8b21453a978e1e30385c93007069 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 21:34:01 +0200 Subject: [PATCH 0290/1034] text --- client/src/cmdhf15.c | 2 +- client/src/cmdhfmf.c | 2 +- client/src/cmdhfmfu.c | 2 +- client/src/nfc/ndef.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index ad63bd3b8..0747cedec 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -335,7 +335,7 @@ static int nxp_15693_print_signature(uint8_t *uid, uint8_t *signature) { return PM3_ESOFT; } - PrintAndLogEx(INFO, " IC signature public key name: %s", nxp_15693_public_keys[i].desc); + PrintAndLogEx(INFO, " IC signature public key name: " _GREEN_("%s"), nxp_15693_public_keys[i].desc); PrintAndLogEx(INFO, "IC signature public key value: %s", nxp_15693_public_keys[i].value); PrintAndLogEx(INFO, " Elliptic curve parameters: NID_secp128r1"); PrintAndLogEx(INFO, " TAG IC Signature: %s", sprint_hex_inrow(signature, 32)); diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index bbeaa5fce..f535696cc 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -89,7 +89,7 @@ int mfc_ev1_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signature, in return PM3_ESOFT; } - PrintAndLogEx(INFO, " IC signature public key name: %s", nxp_mfc_public_keys[i].desc); + PrintAndLogEx(INFO, " IC signature public key name: " _GREEN_("%s"), nxp_mfc_public_keys[i].desc); PrintAndLogEx(INFO, "IC signature public key value: %s", nxp_mfc_public_keys[i].value); PrintAndLogEx(INFO, " Elliptic curve parameters: NID_secp128r1"); PrintAndLogEx(INFO, " TAG IC Signature: %s", sprint_hex_inrow(signature, 32)); diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index d5fcd3ac0..2f8b206f2 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -1097,7 +1097,7 @@ static int ulev1_print_signature(TagTypeUL_t tagtype, uint8_t *uid, uint8_t *sig return PM3_ESOFT; } - PrintAndLogEx(INFO, " IC signature public key name: %s", nxp_mfu_public_keys[i].desc); + PrintAndLogEx(INFO, " IC signature public key name: " _GREEN_("%s"), nxp_mfu_public_keys[i].desc); PrintAndLogEx(INFO, "IC signature public key value: %s", nxp_mfu_public_keys[i].value); PrintAndLogEx(INFO, " Elliptic curve parameters: NID_secp128r1"); PrintAndLogEx(INFO, " TAG IC Signature: %s", sprint_hex_inrow(signature, signature_len)); diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index fc829e8d7..e0bc83c14 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -274,7 +274,7 @@ static int ndef_print_signature(uint8_t *data, uint8_t data_len, uint8_t *signat return PM3_ESOFT; } - PrintAndLogEx(INFO, " IC signature public key name: %s", ndef_public_keys[i].desc); + PrintAndLogEx(INFO, " IC signature public key name: " _GREEN_("%s"), ndef_public_keys[i].desc); PrintAndLogEx(INFO, "IC signature public key value: %s", ndef_public_keys[i].value); PrintAndLogEx(INFO, " Elliptic curve parameters: %s", get_curve_name(ndef_public_keys[i].grp_id)); PrintAndLogEx(INFO, " NDEF Signature: %s", sprint_hex_inrow(signature, 32)); From 1a4df13aaec982f66777b06e1231807eaba54979 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 22:18:35 +0200 Subject: [PATCH 0291/1034] fix coverity cid #416068 --- client/src/cmdhfwaveshare.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/cmdhfwaveshare.c b/client/src/cmdhfwaveshare.c index 12e5320e3..8bb9eadc8 100644 --- a/client/src/cmdhfwaveshare.c +++ b/client/src/cmdhfwaveshare.c @@ -1070,6 +1070,7 @@ static int CmdHF14AWSLoadBmp(const char *Cmd) { return PM3_EMALLOC; } if (bytes_read < sizeof(bmp_header_t)) { + free(bmp); return PM3_ESOFT; } From cb9ee94ed6aa63be94a351793ba49ac38244f722 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 25 Jul 2023 12:39:22 +0200 Subject: [PATCH 0292/1034] lets see if this sorts out the memory crash on pentoo --- client/src/fileutils.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 7ca59ef85..3de51f60f 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -210,18 +210,19 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath pfn += save_path_len + strlen(PATHSEP); } - uint16_t p_namelen = strlen(preferredName); + // remove file extension if exist in name + size_t p_namelen = strlen(preferredName); if (str_endswith(preferredName, suffix)) { p_namelen -= strlen(suffix); } // modify filename - snprintf(pfn, len, "%.*s%s", p_namelen, preferredName, suffix); + snprintf(pfn, len, "%.*s%s", (int)p_namelen, preferredName, suffix); // check complete path/filename if exists int num = 1; while (fileExists(fileName)) { // modify filename - snprintf(pfn, len, "%.*s-%03d%s", p_namelen, preferredName, num, suffix); + snprintf(pfn, len, "%.*s-%03d%s", (int)p_namelen, preferredName, num, suffix); num++; } From 1cb15c84c1b61ee355512a1f7379688e6c7f82ef Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 25 Jul 2023 21:29:31 +0200 Subject: [PATCH 0293/1034] adapting hf mf cget* commands to longer timeouts. Same with the quick eload used in autopwn among others.\nAlso adapted the return codes, so its more accurate in its reporting back to the client. Also added some more informative messages --- armsrc/iso14443a.c | 9 ++++--- armsrc/mifarecmd.c | 62 ++++++++++++++++++++++++++++++++++----------- armsrc/mifareutil.c | 25 ++++++++++++------ 3 files changed, 70 insertions(+), 26 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 74caf51c1..1966c8c65 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -2365,8 +2365,9 @@ static int GetIso14443aAnswerFromTag(uint8_t *receivedResponse, uint8_t *receive } // timeout already in ms + 100ms guard time - if (GetTickCountDelta(receive_timer) > timeout + 100) + if (GetTickCountDelta(receive_timer) > timeout + 100) { break; + } } return false; } @@ -2401,15 +2402,17 @@ void ReaderTransmit(uint8_t *frame, uint16_t len, uint32_t *timing) { } static uint16_t ReaderReceiveOffset(uint8_t *receivedAnswer, uint16_t offset, uint8_t *par) { - if (!GetIso14443aAnswerFromTag(receivedAnswer, par, offset)) + if (GetIso14443aAnswerFromTag(receivedAnswer, par, offset) == false) { return 0; + } LogTrace(receivedAnswer, Demod.len, Demod.startTime * 16 - DELAY_AIR2ARM_AS_READER, Demod.endTime * 16 - DELAY_AIR2ARM_AS_READER, par, false); return Demod.len; } uint16_t ReaderReceive(uint8_t *receivedAnswer, uint8_t *par) { - if (!GetIso14443aAnswerFromTag(receivedAnswer, par, 0)) + if (GetIso14443aAnswerFromTag(receivedAnswer, par, 0) == false) { return 0; + } LogTrace(receivedAnswer, Demod.len, Demod.startTime * 16 - DELAY_AIR2ARM_AS_READER, Demod.endTime * 16 - DELAY_AIR2ARM_AS_READER, par, false); return Demod.len; } diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index ef6b6022f..ffe3182ba 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -73,9 +73,10 @@ int16_t mifare_cmd_readblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t read_c struct Crypto1State *pcs = &mpcs; iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); - clear_trace(); set_tracing(true); + + uint32_t timeout = iso14a_get_timeout(); LED_A_ON(); LED_B_OFF(); @@ -95,6 +96,10 @@ int16_t mifare_cmd_readblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t read_c goto OUT; }; + // frame waiting time (FWT) in 1/fc + uint32_t fwt = 256 * 16 * (1 << 6); + iso14a_set_timeout(fwt / (8 * 16)); + for (uint8_t i = 0; i < count; i++) { if (mifare_classic_readblock_ex(pcs, block_no + i, block_data + (i * 16), read_cmd)) { if (g_dbglevel >= DBG_ERROR) Dbprintf("Read block error"); @@ -112,11 +117,11 @@ int16_t mifare_cmd_readblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t read_c OUT: crypto1_deinit(pcs); + iso14a_set_timeout(timeout); FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); LEDsoff(); set_tracing(false); BigBuf_free(); - return retval; } @@ -2072,6 +2077,12 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { int retval = PM3_SUCCESS; + // increase time-out. Magic card etc are slow + uint32_t timeout = iso14a_get_timeout(); + // frame waiting time (FWT) in 1/fc + uint32_t fwt = 256 * 16 * (1 << 7); + iso14a_set_timeout(fwt / (8 * 16)); + for (uint8_t s = 0; s < sectorcnt; s++) { uint64_t ui64Key = emlGetKey(s, keytype); @@ -2110,7 +2121,7 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { // Auth if (mifare_classic_auth(pcs, cuid, FirstBlockOfSector(s), keytype, ui64Key, AUTH_FIRST)) { retval = PM3_EPARTIAL; - if (g_dbglevel > DBG_ERROR) { + if (g_dbglevel >= DBG_ERROR) { Dbprintf("Sector %2d - Auth error", s); } continue; @@ -2122,31 +2133,43 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { for (uint8_t b = 0; b < NumBlocksPerSector(s); b++) { memset(data, 0x00, sizeof(data)); + uint8_t tb = FirstBlockOfSector(s) + b; + uint8_t r = 0; + for (; r < MAX_RETRIES; r++) { - for (uint8_t r = 0; r < MAX_RETRIES; r++) { - - if (mifare_classic_readblock(pcs, FirstBlockOfSector(s) + b, data)) { + int res = mifare_classic_readblock(pcs, tb, data); + if (res == 1) { retval |= PM3_EPARTIAL; - if (g_dbglevel > DBG_ERROR) { - Dbprintf("Error reading sector %2d block %2d", s, b); + if (g_dbglevel >= DBG_ERROR) { + Dbprintf("Error No rights reading sector %2d block %2d", s, b); } + break; + } + // retry if wrong len. + if (res != 0) { continue; } // No need to copy empty if (memcmp(data, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 16) == 0) { - continue; + break; } - if (b < NumBlocksPerSector(s) - 1) { - emlSetMem(data, FirstBlockOfSector(s) + b, 1); - } else { + if (IsSectorTrailer(b)) { // sector trailer, keep the keys, set only the AC uint8_t st[16] = {0x00}; - emlGetMem(st, FirstBlockOfSector(s) + b, 1); + emlGetMem(st, tb, 1); memcpy(st + 6, data + 6, 4); - emlSetMem(st, FirstBlockOfSector(s) + b, 1); + emlSetMem(st, tb, 1); + } else { + emlSetMem(data, tb, 1); } + break; + } + + // if we failed all retries, notify client + if (r == MAX_RETRIES) { + retval |= PM3_EPARTIAL; } } } @@ -2154,6 +2177,7 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { int res = mifare_classic_halt(pcs); (void)res; + iso14a_set_timeout(timeout); crypto1_deinit(pcs); FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); LEDsoff(); @@ -2322,6 +2346,12 @@ void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { set_tracing(true); } + // increase time-out. Magic card etc are slow + uint32_t timeout = iso14a_get_timeout(); + // frame waiting time (FWT) in 1/fc + uint32_t fwt = 256 * 16 * (1 << 7); + iso14a_set_timeout(fwt / (8 * 16)); + //loop doesn't loop just breaks out if error or done while (true) { if (workFlags & MAGIC_WUPC) { @@ -2343,7 +2373,7 @@ void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { } // read block - if ((mifare_sendcmd_short(NULL, CRYPT_NONE, ISO14443A_CMD_READBLOCK, blockNo, receivedAnswer, receivedAnswerPar, NULL) != 18)) { + if ((mifare_sendcmd_short(NULL, CRYPT_NONE, ISO14443A_CMD_READBLOCK, blockNo, receivedAnswer, receivedAnswerPar, NULL) != MAX_MIFARE_FRAME_SIZE)) { if (g_dbglevel >= DBG_ERROR) Dbprintf("read block send command error"); errormsg = 0; break; @@ -2371,6 +2401,8 @@ void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { if (workFlags & MAGIC_OFF) OnSuccessMagic(); + + iso14a_set_timeout(timeout); } void MifareCIdent(bool is_mfc) { diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c index 5dfbfd26b..25744aa96 100644 --- a/armsrc/mifareutil.c +++ b/armsrc/mifareutil.c @@ -116,7 +116,9 @@ uint16_t mifare_sendcmd_short(struct Crypto1State *pcs, uint8_t crypted, uint8_t uint16_t len = ReaderReceive(answer, par); - if (answer_parity) *answer_parity = par[0]; + if (answer_parity) { + *answer_parity = par[0]; + } if (pcs && (crypted == CRYPT_ALL)) { if (len == 1) { @@ -127,8 +129,9 @@ uint16_t mifare_sendcmd_short(struct Crypto1State *pcs, uint8_t crypted, uint8_t res |= (crypto1_bit(pcs, 0, 0) ^ BIT(answer[0], 3)) << 3; answer[0] = res; } else { - for (pos = 0; pos < len; pos++) + for (pos = 0; pos < len; pos++) { answer[pos] = crypto1_byte(pcs, 0x00, 0) ^ answer[pos]; + } } } return len; @@ -238,11 +241,15 @@ int mifare_classic_readblock_ex(struct Crypto1State *pcs, uint8_t blockNo, uint8 uint16_t len = mifare_sendcmd_short(pcs, 1, iso_byte, blockNo, receivedAnswer, receivedAnswerPar, NULL); if (len == 1) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Cmd Error %02x", receivedAnswer[0]); + if (g_dbglevel >= DBG_ERROR) { + Dbprintf("Block " _YELLOW_("%3d") " Cmd 0x%02x Cmd Error %02x", blockNo, iso_byte, receivedAnswer[0]); + } return 1; } if (len != 18) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("wrong response len %d (expected 18)", len); + if (g_dbglevel >= DBG_ERROR) { + Dbprintf("Block " _YELLOW_("%3d") " Cmd 0x%02x Wrong response len, expected 18 got " _RED_("%d"), blockNo, iso_byte, len); + } return 2; } @@ -701,13 +708,15 @@ void emlClearMem(void) { uint8_t SectorTrailer(uint8_t blockNo) { if (blockNo <= MIFARE_2K_MAXBLOCK) { - if (g_dbglevel >= DBG_EXTENDED) + if (g_dbglevel >= DBG_EXTENDED) { Dbprintf("Sector Trailer for block %d : %d", blockNo, (blockNo | 0x03)); + } return (blockNo | 0x03); } else { - if (g_dbglevel >= DBG_EXTENDED) - Dbprintf("Sector Trailer for block %d : %d", blockNo, (blockNo | 0x0f)); - return (blockNo | 0x0f); + if (g_dbglevel >= DBG_EXTENDED) { + Dbprintf("Sector Trailer for block %d : %d", blockNo, (blockNo | 0x0F)); + } + return (blockNo | 0x0F); } } From e5b075ed3b1b28958de1312e2a84df01b2120f22 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 25 Jul 2023 22:42:42 +0200 Subject: [PATCH 0294/1034] hf mf restore got some textual updates in order to be easier to understand if keyB writes fails. We use a default ACL when wiping a card that doesnt allow key B to be used for writing. Restore command tries key B first, so there will be several failed key b attempts normally. --- client/src/cmdhfmf.c | 44 +++++++++++++++++++++--------------------- client/src/fileutils.c | 11 ++++++----- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index f535696cc..18c022e4b 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -1352,7 +1352,7 @@ static int CmdHF14AMfRestore(const char *Cmd) { return PM3_ESOFT; } - PrintAndLogEx(INFO, "Using key file... `" _YELLOW_("%s") "`", keyfilename); + PrintAndLogEx(INFO, "Using key file `" _YELLOW_("%s") "`", keyfilename); // try reading card uid and create filename if (datafnlen == 0) { @@ -1383,10 +1383,9 @@ static int CmdHF14AMfRestore(const char *Cmd) { // default authentication key uint8_t default_key[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; - PrintAndLogEx(INFO, "Restoring " _YELLOW_("%s")" to card", datafilename); - - PrintAndLogEx(INFO, " blk | "); - PrintAndLogEx(INFO, "-----+------------------------------------------------------------"); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, " blk | data | status"); + PrintAndLogEx(INFO, "-----+-------------------------------------------------+----------------"); // main loop for restoring. // a bit more complicated than needed @@ -1402,6 +1401,8 @@ static int CmdHF14AMfRestore(const char *Cmd) { // if sector trailer if (mfIsSectorTrailerBasedOnBlocks(s, b)) { + + // keep the current keys on the card if (use_keyfile_for_auth == false) { // replace KEY A memcpy(bldata, keyA + (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); @@ -1440,10 +1441,13 @@ static int CmdHF14AMfRestore(const char *Cmd) { for (int8_t kt = MF_KEY_B; kt > -1; kt--) { if (use_keyfile_for_auth) { - if (kt == MF_KEY_A) + + if (kt == MF_KEY_A) { memcpy(wdata, keyA + (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); - else + } else { memcpy(wdata, keyB + (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); + } + } else { // use default key to authenticate for the write command memcpy(wdata, default_key, MIFARE_KEY_SIZE); @@ -1451,8 +1455,6 @@ static int CmdHF14AMfRestore(const char *Cmd) { uint16_t blockno = (mfFirstBlockOfSector(s) + b); - PrintAndLogEx(INFO, " %3d | %s", blockno, sprint_hex(bldata, sizeof(bldata))); - clearCommandBuffer(); SendCommandMIX(CMD_HF_MIFARE_WRITEBL, blockno, kt, 0, wdata, sizeof(wdata)); PacketResponseNG resp; @@ -1464,22 +1466,20 @@ static int CmdHF14AMfRestore(const char *Cmd) { int isOK = resp.oldarg[0] & 0xff; if (isOK == 1) { // if success, skip to next block + PrintAndLogEx(INFO, " %3d | %s| ( " _GREEN_("ok") " )", blockno, sprint_hex(bldata, sizeof(bldata))); break; - } else if (isOK == PM3_ETEAROFF) { + } + // write somehow failed. Lets determine why. + if (isOK == PM3_ETEAROFF) { PrintAndLogEx(INFO, "Tear off triggerd. Recommendation is not to use tear-off with restore command"); goto out; - } else { - if (b == 0) { - PrintAndLogEx(INFO, "Writing to manufacture block w key " _YELLOW_("%c") " ( " _RED_("fail") " )", - (kt == MF_KEY_A) ? 'A' : 'B' - ); - } else { - PrintAndLogEx(FAILED, "Write to block " _YELLOW_("%u") " w key " _YELLOW_("%c") " ( " _RED_("fail") " ) ", - blockno, - (kt == MF_KEY_A) ? 'A' : 'B' - ); - } } + + PrintAndLogEx(INFO, " %3d | %s| ( " _RED_("fail") " ) key " _YELLOW_("%c"), + blockno, + sprint_hex(bldata, sizeof(bldata)), + (kt == MF_KEY_A) ? 'A' : 'B' + ); } // end loop key types } // end loop B } // end loop S @@ -1488,7 +1488,7 @@ out: free(ref_dump); free(keyA); free(keyB); - PrintAndLogEx(INFO, "-----+------------------------------------------------------------"); + PrintAndLogEx(INFO, "-----+-------------------------------------------------+----------------"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 3de51f60f..06bd26b66 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -215,6 +215,7 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath if (str_endswith(preferredName, suffix)) { p_namelen -= strlen(suffix); } + // modify filename snprintf(pfn, len, "%.*s%s", (int)p_namelen, preferredName, suffix); @@ -862,7 +863,7 @@ int loadFile_safeEx(const char *preferredName, const char *suffix, void **pdata, *datalen = bytes_read; if (verbose) { - PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from binary file " _YELLOW_("%s"), bytes_read, preferredName); + PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from binary file `" _YELLOW_("%s") "`", bytes_read, preferredName); } return PM3_SUCCESS; } @@ -936,7 +937,7 @@ int loadFileEML_safe(const char *preferredName, void **pdata, size_t *datalen) { } } fclose(f); - PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from text file " _YELLOW_("%s"), counter, preferredName); + PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from text file `" _YELLOW_("%s") "`", counter, preferredName); uint8_t *newdump = realloc(*pdata, counter); @@ -1023,7 +1024,7 @@ int loadFileMCT_safe(const char *preferredName, void **pdata, size_t *datalen) { } } fclose(f); - PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from MCT file " _YELLOW_("%s"), counter, preferredName); + PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from MCT file `" _YELLOW_("%s") "`", counter, preferredName); uint8_t *newdump = realloc(*pdata, counter); @@ -1059,7 +1060,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz json_error_t error; json_t *root = json_load_file(path, 0, &error); if (verbose) - PrintAndLogEx(SUCCESS, "loaded from JSON file " _YELLOW_("%s"), path); + PrintAndLogEx(SUCCESS, "loaded from JSON file `" _YELLOW_("%s") "`", path); free(path); @@ -1467,7 +1468,7 @@ int loadFileDICTIONARYEx(const char *preferredName, void *data, size_t maxdatale } fclose(f); if (verbose) - PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%2d") " keys from dictionary file " _YELLOW_("%s"), vkeycnt, path); + PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%2d") " keys from dictionary file `" _YELLOW_("%s") "`", vkeycnt, path); if (datalen) *datalen = counter; From c85258e042dbbc8c8f3ffa982a7363228d929690 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 25 Jul 2023 23:55:38 +0200 Subject: [PATCH 0295/1034] zerobased index --- client/src/cmdhfmf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 18c022e4b..3ab13aeb0 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -379,7 +379,8 @@ static int mf_print_keys(uint16_t n, uint8_t *d) { if (mfIsSectorTrailer(i) == false) { continue; } - uint8_t sec = MIN(sectors, mfSectorNum(i)); + // zero based index... + uint8_t sec = MIN(sectors - 1, mfSectorNum(i)); e_sector[sec].foundKey[0] = 1; e_sector[sec].Key[0] = bytes_to_num(d + (i * MFBLOCK_SIZE), MIFARE_KEY_SIZE); e_sector[sec].foundKey[1] = 1; From 30162f3d87fa592e9ec09b14eb2d1b598d15e0f0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 26 Jul 2023 01:35:27 +0200 Subject: [PATCH 0296/1034] remove debug statement --- client/src/wiegand_formatutils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/wiegand_formatutils.c b/client/src/wiegand_formatutils.c index e55f999bd..75aa6ae2f 100644 --- a/client/src/wiegand_formatutils.c +++ b/client/src/wiegand_formatutils.c @@ -148,7 +148,7 @@ static uint8_t get_length_from_header(wiegand_message_t *data) { len = 32; } else { - printf("hid preamble detected\n"); + PrintAndLogEx(DEBUG, "hid preamble detected"); len = 32; if ((data->Mid ^ 0x20) == 0) { hfmt = data->Bot; len = 0; } From c3c08e07e4d18d26f474a51ebfcd0adebfe495ec Mon Sep 17 00:00:00 2001 From: nvx Date: Wed, 26 Jul 2023 18:44:26 +1000 Subject: [PATCH 0297/1034] Fix hf mf gdmsetlbk block data being accidentally prefixed with a 0x00. This fixes a regression caused by edd8e36 (PR #2021). gdm auth has no concept of A or B keys, a partial cleanup in the previous PR removed the key type from the arm code, but the corresponding removal was missed in the client side resulting in mismatched structs for cmd CMD_HF_MIFARE_G4_GDM_WRBL. --- client/src/cmdhfmf.c | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 3ab13aeb0..325e50e7f 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8160,8 +8160,6 @@ static int CmdHF14AGen4_GDM_SetBlk(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_int1(NULL, "blk", "", "block number"), - arg_lit0("a", NULL, "input key type is key A (def)"), - arg_lit0("b", NULL, "input key type is key B"), arg_str0("d", "data", "", "bytes to write, 16 hex bytes"), arg_str0("k", "key", "", "key, 6 hex bytes"), arg_lit0(NULL, "force", "override warnings"), @@ -8171,24 +8169,15 @@ static int CmdHF14AGen4_GDM_SetBlk(const char *Cmd) { int b = arg_get_int_def(ctx, 1, 1); - uint8_t keytype = MF_KEY_A; - if (arg_get_lit(ctx, 2) && arg_get_lit(ctx, 3)) { - CLIParserFree(ctx); - PrintAndLogEx(WARNING, "Input key type must be A or B"); - return PM3_EINVARG; - } else if (arg_get_lit(ctx, 3)) { - keytype = MF_KEY_B;; - } - uint8_t block[MFBLOCK_SIZE] = {0x00}; int blen = 0; - CLIGetHexWithReturn(ctx, 4, block, &blen); + CLIGetHexWithReturn(ctx, 2, block, &blen); int keylen = 0; uint8_t key[6] = {0}; - CLIGetHexWithReturn(ctx, 5, key, &keylen); + CLIGetHexWithReturn(ctx, 3, key, &keylen); - bool force = arg_get_lit(ctx, 6); + bool force = arg_get_lit(ctx, 4); CLIParserFree(ctx); if (blen != MFBLOCK_SIZE) { @@ -8212,18 +8201,16 @@ static int CmdHF14AGen4_GDM_SetBlk(const char *Cmd) { return PM3_EINVARG; } - PrintAndLogEx(INFO, "Writing block no %d, key %c - %s", blockno, (keytype == MF_KEY_B) ? 'B' : 'A', sprint_hex_inrow(key, sizeof(key))); + PrintAndLogEx(INFO, "Writing block no %d, key %s", blockno, sprint_hex_inrow(key, sizeof(key))); PrintAndLogEx(INFO, "data: %s", sprint_hex(block, sizeof(block))); struct p { uint8_t blockno; - uint8_t keytype; uint8_t key[6]; uint8_t data[MFBLOCK_SIZE]; // data to be written } PACKED payload; payload.blockno = blockno; - payload.keytype = keytype; memcpy(payload.key, key, sizeof(payload.key)); memcpy(payload.data, block, sizeof(payload.data)); @@ -8242,7 +8229,6 @@ static int CmdHF14AGen4_GDM_SetBlk(const char *Cmd) { return resp.status; } else { PrintAndLogEx(FAILED, "Write ( " _RED_("fail") " )"); - PrintAndLogEx(HINT, "Maybe access rights? Try specify keytype `" _YELLOW_("hf mf gdmsetblk -%c ...") "` instead", (keytype == MF_KEY_A) ? 'b' : 'a'); } return PM3_SUCCESS; } From 9dc6ce552c0052e36eceffa88547e3111885fea2 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 26 Jul 2023 11:08:45 +0200 Subject: [PATCH 0298/1034] I remembered not to add calls to functions inside macro calls... --- client/src/cmdhfmf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 3ab13aeb0..4d1dbbd6c 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -380,7 +380,8 @@ static int mf_print_keys(uint16_t n, uint8_t *d) { continue; } // zero based index... - uint8_t sec = MIN(sectors - 1, mfSectorNum(i)); + uint8_t lookup = mfSectorNum(i); + uint8_t sec = MIN(sectors - 1, lookup); e_sector[sec].foundKey[0] = 1; e_sector[sec].Key[0] = bytes_to_num(d + (i * MFBLOCK_SIZE), MIFARE_KEY_SIZE); e_sector[sec].foundKey[1] = 1; From 00133a04eef14440aadbe7c427bfacd2382b0b5f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 26 Jul 2023 17:41:48 +0200 Subject: [PATCH 0299/1034] added the hf mfu list --- client/src/cmdhfmfu.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 2f8b206f2..b1e260eee 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -30,9 +30,10 @@ #include "nfc/ndef.h" #include "cliparser.h" #include "cmdmain.h" -#include "amiibo.h" // amiiboo fcts +#include "amiibo.h" // amiiboo fcts #include "base64.h" -#include "fileutils.h" // saveFile +#include "fileutils.h" // saveFile +#include "cmdtrace.h" // trace list #define MAX_UL_BLOCKS 0x0F #define MAX_ULC_BLOCKS 0x2F @@ -4669,6 +4670,10 @@ static int CmdHF14AMfuView(const char *Cmd) { return PM3_SUCCESS; } +static int CmdHF14AMfuList(const char *Cmd) { + return CmdTraceListAlias(Cmd, "hf 14a", "14a"); +} + /* static int CmdHF14AMfUCDecryptAmiibo(const char *Cmd){ @@ -4715,6 +4720,7 @@ static int CmdHF14AMfUCDecryptAmiibo(const char *Cmd){ //------------------------------------ static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, + {"list", CmdHF14AMfuList, AlwaysAvailable, "List MIFARE Ultralight / NTAG history"}, {"-----------", CmdHelp, IfPm3Iso14443a, "----------------------- " _CYAN_("recovery") " -------------------------"}, {"keygen", CmdHF14AMfUGenDiverseKeys, AlwaysAvailable, "Generate 3DES MIFARE diversified keys"}, {"pwdgen", CmdHF14AMfUPwdGen, AlwaysAvailable, "Generate pwd from known algos"}, From fbdf50d7563526954d16423e3a326eebf5075d48 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 26 Jul 2023 17:49:14 +0200 Subject: [PATCH 0300/1034] minor text stuff --- armsrc/iso14443a.c | 3 ++- client/src/cmdhfmfu.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 1966c8c65..325bebf16 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1110,7 +1110,7 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r sak = 0x09; break; } - case 7: { // NTAG + case 7: { // NTAG 215 rATQA[0] = 0x44; sak = 0x00; // some first pages of UL/NTAG dump is special data @@ -1274,6 +1274,7 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r AddCrc14A(rPPS, sizeof(rPPS) - 2); + // EV1/NTAG, set PWD w AMIIBO algo if all zero. if (tagType == 7) { uint8_t pwd[4]; uint8_t gen_pwd[4]; diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index b1e260eee..5680c33ce 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -3104,7 +3104,7 @@ static int CmdHF14AMfUSim(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_int1("t", "type", "<1..10> ", "Simulation type to use"), + arg_int1("t", "type", "<1..12> ", "Simulation type to use"), arg_str0("u", "uid", "", "<4|7|10> hex bytes UID"), arg_int0("n", "num", "", "Exit simulation after blocks. 0 = infinite"), arg_lit0("v", "verbose", "Verbose output"), From 538ac4b1910b6e0364039bedab870deede262187 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 26 Jul 2023 17:51:35 +0200 Subject: [PATCH 0301/1034] added a bunch of empty dump files and key files in order to easily simulate a empty tag. Just eload it and sim. --- CHANGELOG.md | 1 + traces/mifare/ntag216-empty.bin | Bin 0 -> 980 bytes traces/mifare/ntag216-empty.eml | 245 ++++++++++++++++++++++++++++++ traces/mifare/ntag216-empty.json | 250 +++++++++++++++++++++++++++++++ traces/mifare/s20-empty-key.bin | 2 + traces/mifare/s20-empty.bin | Bin 0 -> 320 bytes traces/mifare/s20-empty.eml | 20 +++ traces/mifare/s20-empty.json | 93 ++++++++++++ traces/mifare/s50-empty-key.bin | 1 + traces/mifare/s50-empty.bin | Bin 0 -> 1024 bytes 10 files changed, 612 insertions(+) create mode 100644 traces/mifare/ntag216-empty.bin create mode 100644 traces/mifare/ntag216-empty.eml create mode 100644 traces/mifare/ntag216-empty.json create mode 100644 traces/mifare/s20-empty-key.bin create mode 100644 traces/mifare/s20-empty.bin create mode 100644 traces/mifare/s20-empty.eml create mode 100644 traces/mifare/s20-empty.json create mode 100644 traces/mifare/s50-empty-key.bin create mode 100644 traces/mifare/s50-empty.bin diff --git a/CHANGELOG.md b/CHANGELOG.md index 43b0af889..a0f37fcab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added empty dump files with keys for easy simulation (@iceman1001) - Added `hf 15 view` - view ISO15693 dump files (@iceman1001) - Fixed `hf iclass config` - now loops correct in keyroll generation (@iceman1001) - Added `hf iclass sam` - skeleton command (@iceman1001) diff --git a/traces/mifare/ntag216-empty.bin b/traces/mifare/ntag216-empty.bin new file mode 100644 index 0000000000000000000000000000000000000000..5c8f6241853d15dd0f0cce2e902284fbf9bcf9ff GIT binary patch literal 980 zcmZQzVPRrq5N2jzV0b3K@}K(@(u;xzgGM0Iy*qrg3#P9LU7U6&FM1*(C8 xy(|%#doRtgZ20cM!0=EYmw}n#A53nP9u0xf5TIWO>}6qK_|L!!B!B>9Edcm|9p3-| literal 0 HcmV?d00001 diff --git a/traces/mifare/ntag216-empty.eml b/traces/mifare/ntag216-empty.eml new file mode 100644 index 000000000..27ff5ed6a --- /dev/null +++ b/traces/mifare/ntag216-empty.eml @@ -0,0 +1,245 @@ +00040402 +01001303 +000000E6 +1FA9FE47 +9435E4B6 +0280F7A2 +B44293DF +9127471B +3251BC89 +42F0941A +D71A1755 +00000000 +00000000 +000000BD +045869BD +D29C3980 +F7480000 +E1106D00 +0300FE00 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +000000BD +040000FF +00050000 +FFFFFFFF +00000000 \ No newline at end of file diff --git a/traces/mifare/ntag216-empty.json b/traces/mifare/ntag216-empty.json new file mode 100644 index 000000000..5b113c409 --- /dev/null +++ b/traces/mifare/ntag216-empty.json @@ -0,0 +1,250 @@ +{ + "Created": "proxmark3", + "FileType": "mfu", + "Card": { + "UID": "045869D29C3980", + "Version": "0004040201001303", + "TBO_0": "0000", + "TBO_1": "00", + "Signature": "1FA9FE479435E4B60280F7A2B44293DF9127471B3251BC8942F0941AD71A1755", + "Counter0": "000000", + "Tearing0": "00", + "Counter1": "000000", + "Tearing1": "00", + "Counter2": "000000", + "Tearing2": "BD" + }, + "blocks": { + "0": "045869BD", + "1": "D29C3980", + "2": "F7480000", + "3": "E1106D00", + "4": "0300FE00", + "5": "00000000", + "6": "00000000", + "7": "00000000", + "8": "00000000", + "9": "00000000", + "10": "00000000", + "11": "00000000", + "12": "00000000", + "13": "00000000", + "14": "00000000", + "15": "00000000", + "16": "00000000", + "17": "00000000", + "18": "00000000", + "19": "00000000", + "20": "00000000", + "21": "00000000", + "22": "00000000", + "23": "00000000", + "24": "00000000", + "25": "00000000", + "26": "00000000", + "27": "00000000", + "28": "00000000", + "29": "00000000", + "30": "00000000", + "31": "00000000", + "32": "00000000", + "33": "00000000", + "34": "00000000", + "35": "00000000", + "36": "00000000", + "37": "00000000", + "38": "00000000", + "39": "00000000", + "40": "00000000", + "41": "00000000", + "42": "00000000", + "43": "00000000", + "44": "00000000", + "45": "00000000", + "46": "00000000", + "47": "00000000", + "48": "00000000", + "49": "00000000", + "50": "00000000", + "51": "00000000", + "52": "00000000", + "53": "00000000", + "54": "00000000", + "55": "00000000", + "56": "00000000", + "57": "00000000", + "58": "00000000", + "59": "00000000", + "60": "00000000", + "61": "00000000", + "62": "00000000", + "63": "00000000", + "64": "00000000", + "65": "00000000", + "66": "00000000", + "67": "00000000", + "68": "00000000", + "69": "00000000", + "70": "00000000", + "71": "00000000", + "72": "00000000", + "73": "00000000", + "74": "00000000", + "75": "00000000", + "76": "00000000", + "77": "00000000", + "78": "00000000", + "79": "00000000", + "80": "00000000", + "81": "00000000", + "82": "00000000", + "83": "00000000", + "84": "00000000", + "85": "00000000", + "86": "00000000", + "87": "00000000", + "88": "00000000", + "89": "00000000", + "90": "00000000", + "91": "00000000", + "92": "00000000", + "93": "00000000", + "94": "00000000", + "95": "00000000", + "96": "00000000", + "97": "00000000", + "98": "00000000", + "99": "00000000", + "100": "00000000", + "101": "00000000", + "102": "00000000", + "103": "00000000", + "104": "00000000", + "105": "00000000", + "106": "00000000", + "107": "00000000", + "108": "00000000", + "109": "00000000", + "110": "00000000", + "111": "00000000", + "112": "00000000", + "113": "00000000", + "114": "00000000", + "115": "00000000", + "116": "00000000", + "117": "00000000", + "118": "00000000", + "119": "00000000", + "120": "00000000", + "121": "00000000", + "122": "00000000", + "123": "00000000", + "124": "00000000", + "125": "00000000", + "126": "00000000", + "127": "00000000", + "128": "00000000", + "129": "00000000", + "130": "00000000", + "131": "00000000", + "132": "00000000", + "133": "00000000", + "134": "00000000", + "135": "00000000", + "136": "00000000", + "137": "00000000", + "138": "00000000", + "139": "00000000", + "140": "00000000", + "141": "00000000", + "142": "00000000", + "143": "00000000", + "144": "00000000", + "145": "00000000", + "146": "00000000", + "147": "00000000", + "148": "00000000", + "149": "00000000", + "150": "00000000", + "151": "00000000", + "152": "00000000", + "153": "00000000", + "154": "00000000", + "155": "00000000", + "156": "00000000", + "157": "00000000", + "158": "00000000", + "159": "00000000", + "160": "00000000", + "161": "00000000", + "162": "00000000", + "163": "00000000", + "164": "00000000", + "165": "00000000", + "166": "00000000", + "167": "00000000", + "168": "00000000", + "169": "00000000", + "170": "00000000", + "171": "00000000", + "172": "00000000", + "173": "00000000", + "174": "00000000", + "175": "00000000", + "176": "00000000", + "177": "00000000", + "178": "00000000", + "179": "00000000", + "180": "00000000", + "181": "00000000", + "182": "00000000", + "183": "00000000", + "184": "00000000", + "185": "00000000", + "186": "00000000", + "187": "00000000", + "188": "00000000", + "189": "00000000", + "190": "00000000", + "191": "00000000", + "192": "00000000", + "193": "00000000", + "194": "00000000", + "195": "00000000", + "196": "00000000", + "197": "00000000", + "198": "00000000", + "199": "00000000", + "200": "00000000", + "201": "00000000", + "202": "00000000", + "203": "00000000", + "204": "00000000", + "205": "00000000", + "206": "00000000", + "207": "00000000", + "208": "00000000", + "209": "00000000", + "210": "00000000", + "211": "00000000", + "212": "00000000", + "213": "00000000", + "214": "00000000", + "215": "00000000", + "216": "00000000", + "217": "00000000", + "218": "00000000", + "219": "00000000", + "220": "00000000", + "221": "00000000", + "222": "00000000", + "223": "00000000", + "224": "00000000", + "225": "00000000", + "226": "000000BD", + "227": "040000FF", + "228": "00050000", + "229": "FFFFFFFF", + "230": "00000000" + } +} \ No newline at end of file diff --git a/traces/mifare/s20-empty-key.bin b/traces/mifare/s20-empty-key.bin new file mode 100644 index 000000000..91a45f9b9 --- /dev/null +++ b/traces/mifare/s20-empty-key.bin @@ -0,0 +1,2 @@ +\ \  + diff --git a/traces/mifare/s20-empty.bin b/traces/mifare/s20-empty.bin new file mode 100644 index 0000000000000000000000000000000000000000..224614f19140985db0f5ae757512fe4028024cec GIT binary patch literal 320 pcmb0&t$Mk;lZD}g8-oG^1A{ma;|2dAfW09T!oaH-i{x Date: Wed, 26 Jul 2023 23:33:05 +0200 Subject: [PATCH 0302/1034] color --- armsrc/BigBuf.c | 2 +- traces/mifare/ntag216-empty.bin | Bin 980 -> 0 bytes traces/mifare/ntag216-empty.eml | 245 -------------------------------- traces/mifare/s20-empty.bin | Bin 320 -> 0 bytes traces/mifare/s20-empty.eml | 20 --- 5 files changed, 1 insertion(+), 266 deletions(-) delete mode 100644 traces/mifare/ntag216-empty.bin delete mode 100644 traces/mifare/ntag216-empty.eml delete mode 100644 traces/mifare/s20-empty.bin delete mode 100644 traces/mifare/s20-empty.eml diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index d685f0388..6cd3a29f7 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -312,7 +312,7 @@ uint8_t emlSet(uint8_t *data, uint32_t offset, uint32_t length) { memcpy(mem + offset, data, length); return 0; } - Dbprintf("Error, trying to set memory outside of bounds! %d > %d", (offset + length), CARD_MEMORY_SIZE); + Dbprintf("Error, trying to set memory outside of bounds! " _RED_("%d") " > %d", (offset + length), CARD_MEMORY_SIZE); return 1; } diff --git a/traces/mifare/ntag216-empty.bin b/traces/mifare/ntag216-empty.bin deleted file mode 100644 index 5c8f6241853d15dd0f0cce2e902284fbf9bcf9ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 980 zcmZQzVPRrq5N2jzV0b3K@}K(@(u;xzgGM0Iy*qrg3#P9LU7U6&FM1*(C8 xy(|%#doRtgZ20cM!0=EYmw}n#A53nP9u0xf5TIWO>}6qK_|L!!B!B>9Edcm|9p3-| diff --git a/traces/mifare/ntag216-empty.eml b/traces/mifare/ntag216-empty.eml deleted file mode 100644 index 27ff5ed6a..000000000 --- a/traces/mifare/ntag216-empty.eml +++ /dev/null @@ -1,245 +0,0 @@ -00040402 -01001303 -000000E6 -1FA9FE47 -9435E4B6 -0280F7A2 -B44293DF -9127471B -3251BC89 -42F0941A -D71A1755 -00000000 -00000000 -000000BD -045869BD -D29C3980 -F7480000 -E1106D00 -0300FE00 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -000000BD -040000FF -00050000 -FFFFFFFF -00000000 \ No newline at end of file diff --git a/traces/mifare/s20-empty.bin b/traces/mifare/s20-empty.bin deleted file mode 100644 index 224614f19140985db0f5ae757512fe4028024cec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 pcmb0&t$Mk;lZD}g8-oG^1A{ma;|2dAfW09T!oaH-i{x Date: Wed, 26 Jul 2023 23:39:27 +0200 Subject: [PATCH 0303/1034] improved the eload upload times by using large chunks. Quite much faster now.\nAddapted the dots and text for eload / sim across the client --- armsrc/Standalone/hf_legicsim.c | 6 +- armsrc/Standalone/hf_mfcsim.c | 3 +- armsrc/mifareutil.c | 11 ++-- client/src/cmdhf15.c | 4 +- client/src/cmdhficlass.c | 23 +++++-- client/src/cmdhfjooki.c | 23 ++++--- client/src/cmdhflegic.c | 10 ++- client/src/cmdhfmf.c | 107 +++++++++++++++++++------------- client/src/cmdhfmfu.c | 2 + client/src/cmdlfem4x50.c | 11 +++- 10 files changed, 133 insertions(+), 67 deletions(-) diff --git a/armsrc/Standalone/hf_legicsim.c b/armsrc/Standalone/hf_legicsim.c index 7765672b0..849d2be3b 100644 --- a/armsrc/Standalone/hf_legicsim.c +++ b/armsrc/Standalone/hf_legicsim.c @@ -68,8 +68,10 @@ static bool fill_eml_from_file(char *dumpfile) { } //read and load dump file BigBuf_Clear(); - if (g_dbglevel >= DBG_INFO) - Dbprintf(_YELLOW_("Found dump file %s. Uploading to emulator memory..."), dumpfile); + if (g_dbglevel >= DBG_INFO) { + Dbprintf("Found dump file... `" _YELLOW_("%s") "`", dumpfile); + Dbprintf("Uploading to emulator memory..."); + } uint8_t *emCARD = BigBuf_get_EM_addr(); rdv40_spiffs_read_as_filetype(dumpfile, emCARD, size, RDV40_SPIFFS_SAFETY_SAFE); return true; diff --git a/armsrc/Standalone/hf_mfcsim.c b/armsrc/Standalone/hf_mfcsim.c index 86ff62f6c..bba01d472 100644 --- a/armsrc/Standalone/hf_mfcsim.c +++ b/armsrc/Standalone/hf_mfcsim.c @@ -71,7 +71,8 @@ static bool fill_eml_from_file(char *dumpfile) { //read and load dump file if (g_dbglevel >= DBG_INFO) { - Dbprintf(_YELLOW_("Found dump file %s. Uploading to emulator memory..."), dumpfile); + Dbprintf("Found dump file... `" _YELLOW_("%s") "`", dumpfile); + Dbprintf("Uploading to emulator memory..."); } emlClearMem(); diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c index 25744aa96..c2d6f8246 100644 --- a/armsrc/mifareutil.c +++ b/armsrc/mifareutil.c @@ -622,12 +622,15 @@ uint8_t FirstBlockOfSector(uint8_t sectorNo) { // work with emulator memory void emlSetMem(uint8_t *data, int blockNum, int blocksCount) { - emlSetMem_xt(data, blockNum, blocksCount, 16); + uint32_t offset = blockNum * 16; + uint32_t len = blocksCount * 16; + emlSet(data, offset, len); } -void emlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int blockBtWidth) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - memcpy(emCARD + blockNum * blockBtWidth, data, blocksCount * blockBtWidth); +void emlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int block_width) { + uint32_t offset = blockNum * block_width; + uint32_t len = blocksCount * block_width; + emlSet(data, offset, len); } void emlGetMem(uint8_t *data, int blockNum, int blocksCount) { diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 0747cedec..a5db7f0e7 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -1133,6 +1133,7 @@ static int CmdHF15ELoad(const char *Cmd) { } free(data); PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", offset); PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`hf 15 sim -h`")); PrintAndLogEx(INFO, "Done!"); @@ -1288,12 +1289,13 @@ static int CmdHF15Sim(const char *Cmd) { CLIParserFree(ctx); PrintAndLogEx(SUCCESS, "Starting simulating UID " _YELLOW_("%s"), iso15693_sprintUID(NULL, payload.uid)); - PrintAndLogEx(INFO, "press " _YELLOW_("`Pm3 button`") " to cancel"); + PrintAndLogEx(INFO, "Press " _YELLOW_("`pm3-button`") " to abort simulation"); PacketResponseNG resp; clearCommandBuffer(); SendCommandNG(CMD_HF_ISO15693_SIMULATE, (uint8_t *)&payload, sizeof(payload)); WaitForResponse(CMD_HF_ISO15693_SIMULATE, &resp); + PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; } diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 1a96fbacb..5254c5e03 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -144,25 +144,32 @@ static void iclass_upload_emul(uint8_t *d, uint16_t n, uint16_t *bytes_sent) { *bytes_sent = 0; uint16_t bytes_remaining = n; + PrintAndLogEx(INFO, "Uploading to emulator memory"); + PrintAndLogEx(INFO, "." NOLF); + while (bytes_remaining > 0) { uint32_t bytes_in_packet = MIN(PM3_CMD_DATA_SIZE - 4, bytes_remaining); if (bytes_in_packet == bytes_remaining) { // Disable fast mode on last packet g_conn.block_after_ACK = false; } - clearCommandBuffer(); struct p *payload = calloc(4 + bytes_in_packet, sizeof(uint8_t)); payload->offset = *bytes_sent; payload->len = bytes_in_packet; memcpy(payload->data, d + *bytes_sent, bytes_in_packet); + clearCommandBuffer(); SendCommandNG(CMD_HF_ICLASS_EML_MEMSET, (uint8_t *)payload, 4 + bytes_in_packet); free(payload); bytes_remaining -= bytes_in_packet; *bytes_sent += bytes_in_packet; + + PrintAndLogEx(NORMAL, "." NOLF); + fflush(stdout); } + PrintAndLogEx(NORMAL, ""); } static const char *card_types[] = { @@ -1011,6 +1018,7 @@ static int CmdHFiClassELoad(const char *Cmd) { arg_param_begin, arg_str1("f", "file", "", "filename of dump (bin/eml/json)"), arg_lit0("m", "mem", "use RDV4 spiffs"), + arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -1026,6 +1034,7 @@ static int CmdHFiClassELoad(const char *Cmd) { } bool use_spiffs = arg_get_lit(ctx, 2); + bool verbose = arg_get_lit(ctx, 3); CLIParserFree(ctx); // use RDV4 spiffs @@ -1073,15 +1082,21 @@ static int CmdHFiClassELoad(const char *Cmd) { } else { dump = newdump; } + + if (verbose) { + print_picopass_header((picopass_hdr_t *) dump); + print_picopass_info((picopass_hdr_t *) dump); + } - print_picopass_header((picopass_hdr_t *) dump); - print_picopass_info((picopass_hdr_t *) dump); + PrintAndLogEx(NORMAL, ""); //Send to device uint16_t bytes_sent = 0; iclass_upload_emul(dump, bytes_read, &bytes_sent); free(dump); - PrintAndLogEx(SUCCESS, "sent %u bytes of data to device emulator memory", bytes_sent); + PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", bytes_sent); + PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`hf iclass sim -h`")); + PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; } diff --git a/client/src/cmdhfjooki.c b/client/src/cmdhfjooki.c index 025fdf5c4..daf8530b0 100644 --- a/client/src/cmdhfjooki.c +++ b/client/src/cmdhfjooki.c @@ -525,29 +525,36 @@ static int CmdHF14AJookiSim(const char *Cmd) { // upload to emulator memory PrintAndLogEx(INFO, "Uploading to emulator memory"); - PrintAndLogEx(INFO, "." NOLF); + // fast push mode g_conn.block_after_ACK = true; uint8_t blockwidth = 4, counter = 0, blockno = 0; + + // 12 is the size of the struct the fct mfEmlSetMem_xt uses to transfer to device + uint16_t max_avail_blocks = ((PM3_CMD_DATA_SIZE - 12) / blockwidth) * blockwidth; + while (datalen) { if (datalen == blockwidth) { // Disable fast mode on last packet g_conn.block_after_ACK = false; } + uint16_t chunk_size = MIN(max_avail_blocks, datalen); + uint16_t blocks_to_send = chunk_size / blockwidth; - if (mfEmlSetMem_xt(data + counter, blockno, 1, blockwidth) != PM3_SUCCESS) { + if (mfEmlSetMem_xt(data + counter, blockno, blocks_to_send, blockwidth) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Cant set emul block: %3d", blockno); free(data); return PM3_ESOFT; } + blockno += blocks_to_send; + counter += chunk_size; + datalen -= chunk_size; PrintAndLogEx(NORMAL, "." NOLF); fflush(stdout); - blockno++; - counter += blockwidth; - datalen -= blockwidth; } - PrintAndLogEx(NORMAL, "\n"); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", counter); struct { uint8_t tagtype; @@ -566,6 +573,8 @@ static int CmdHF14AJookiSim(const char *Cmd) { SendCommandNG(CMD_HF_ISO14443A_SIMULATE, (uint8_t *)&payload, sizeof(payload)); PacketResponseNG resp; + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(SUCCESS, "Starting simulating"); PrintAndLogEx(INFO, "Press " _GREEN_("") " or pm3-button to abort simulation"); for (;;) { if (kbd_enter_pressed()) { @@ -581,8 +590,8 @@ static int CmdHF14AJookiSim(const char *Cmd) { break; } free(data); - PrintAndLogEx(INFO, "Done"); PrintAndLogEx(HINT, "Try `" _YELLOW_("hf 14a list") "` to view trace log"); + PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; } diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 2398aa8dc..7d9cd8e88 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -805,6 +805,9 @@ void legic_chk_iv(uint32_t *iv) { void legic_seteml(uint8_t *src, uint32_t offset, uint32_t numofbytes) { + PrintAndLogEx(INFO, "Uploading to emulator memory"); + PrintAndLogEx(INFO, "." NOLF); + // fast push mode g_conn.block_after_ACK = true; for (size_t i = offset; i < numofbytes; i += LEGIC_PACKET_SIZE) { @@ -823,7 +826,11 @@ void legic_seteml(uint8_t *src, uint32_t offset, uint32_t numofbytes) { clearCommandBuffer(); SendCommandNG(CMD_HF_LEGIC_ESET, (uint8_t *)payload, sizeof(legic_packet_t) + len); free(payload); + PrintAndLogEx(NORMAL, "." NOLF); + fflush(stdout); } + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", numofbytes); } static int CmdLegicReader(const char *Cmd) { @@ -1100,10 +1107,11 @@ static int CmdLegicELoad(const char *Cmd) { legic_xor(dump, bytes_read); } - PrintAndLogEx(SUCCESS, "Uploading to emulator memory"); legic_seteml(dump, 0, bytes_read); free(dump); + + PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`hf legic sim -h`")); PrintAndLogEx(SUCCESS, "Done!"); return PM3_SUCCESS; } diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 22d7a49fd..a8cc3c3ad 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4264,6 +4264,7 @@ int CmdHF14AMfELoad(const char *Cmd) { arg_lit0(NULL, "ul", "MIFARE Ultralight family"), arg_lit0("m", "mem", "use RDV4 spiffs"), arg_int0("q", "qty", "", "manually set number of blocks (overrides)"), + arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -4280,7 +4281,7 @@ int CmdHF14AMfELoad(const char *Cmd) { bool use_spiffs = arg_get_lit(ctx, 7); int numblks = arg_get_int_def(ctx, 8, -1); - + bool verbose = arg_get_lit(ctx, 9); CLIParserFree(ctx); // validations @@ -4372,8 +4373,10 @@ int CmdHF14AMfELoad(const char *Cmd) { return res; } - mfu_dump_t *mfu_dump = (mfu_dump_t *)data; - printMFUdumpEx(mfu_dump, mfu_dump->pages + 1, 0); + if (verbose) { + mfu_dump_t *mfu_dump = (mfu_dump_t *)data; + printMFUdumpEx(mfu_dump, mfu_dump->pages + 1, 0); + } // update expected blocks to match converted data. block_cnt = bytes_read / MFU_BLOCK_SIZE; @@ -4389,23 +4392,28 @@ int CmdHF14AMfELoad(const char *Cmd) { size_t offset = 0; int cnt = 0; + // 12 is the size of the struct the fct mfEmlSetMem_xt uses to transfer to device + uint16_t max_avail_blocks = ((PM3_CMD_DATA_SIZE - 12) / block_width) * block_width; + while (bytes_read && cnt < block_cnt) { if (bytes_read == block_width) { // Disable fast mode on last packet g_conn.block_after_ACK = false; } - if (mfEmlSetMem_xt(data + offset, cnt, 1, block_width) != PM3_SUCCESS) { + uint16_t chunk_size = MIN(max_avail_blocks, bytes_read); + uint16_t blocks_to_send = chunk_size / block_width; + + if (mfEmlSetMem_xt(data + offset, cnt, blocks_to_send, block_width) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Can't set emulator mem at block: %3d", cnt); free(data); return PM3_ESOFT; } + cnt += blocks_to_send; + offset += chunk_size; + bytes_read -= chunk_size; PrintAndLogEx(NORMAL, "." NOLF); fflush(stdout); - - cnt++; - offset += block_width; - bytes_read -= block_width; } free(data); PrintAndLogEx(NORMAL, ""); @@ -4424,8 +4432,8 @@ int CmdHF14AMfELoad(const char *Cmd) { PrintAndLogEx(WARNING, "Error, file content, Only loaded %d blocks, must be %d blocks into emulator memory", cnt, block_cnt); return PM3_SUCCESS; } + PrintAndLogEx(INFO, "Done!"); } - PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; } @@ -5327,6 +5335,10 @@ static int CmdHF14AMfCSave(const char *Cmd) { if (mfEmlSetMem(dump + (i * MFBLOCK_SIZE), i, 5) != PM3_SUCCESS) { PrintAndLogEx(WARNING, "Can't set emul block: " _YELLOW_("%d"), i); } + if (i % 64 == 0) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "" NOLF) ; + } PrintAndLogEx(NORMAL, "." NOLF); fflush(stdout); } @@ -7836,14 +7848,6 @@ static int CmdHF14AGen4View(const char *Cmd) { for (uint16_t i = 0; i < block_cnt; i++) { - // 4k READs can be long, so we split status each 64 blocks. - if (i % 64 == 0) { - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "" NOLF) ; - } - PrintAndLogEx(NORMAL, "." NOLF); - fflush(stdout); - uint8_t flags = 0 ; if (i == 0) flags |= MAGIC_INIT ; if (i + 1 == block_cnt) flags |= MAGIC_OFF ; @@ -7855,6 +7859,14 @@ static int CmdHF14AGen4View(const char *Cmd) { free(dump); return PM3_ESOFT; } + + PrintAndLogEx(NORMAL, "." NOLF); + fflush(stdout); + // 4k READs can be long, so we split status each 64 blocks. + if (i % 64 == 0) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "" NOLF) ; + } } PrintAndLogEx(NORMAL, ""); @@ -7939,8 +7951,6 @@ static int CmdHF14AGen4Save(const char *Cmd) { PrintAndLogEx(WARNING, "Please specify a MIFARE Type"); return PM3_EINVARG; } - PrintAndLogEx(SUCCESS, "Dumping magic gen4 GTU MIFARE Classic " _GREEN_("%s") " card memory", s); - PrintAndLogEx(INFO, "." NOLF); // Select card to get UID/UIDLEN information clearCommandBuffer(); @@ -7975,63 +7985,72 @@ static int CmdHF14AGen4Save(const char *Cmd) { return PM3_EMALLOC; } + PrintAndLogEx(SUCCESS, "Dumping magic gen4 GTU MIFARE Classic " _GREEN_("%s") " card memory", s); + PrintAndLogEx(INFO, "." NOLF); + for (uint16_t i = 0; i < block_cnt; i++) { - - // 4k READs can be long, so we split status each 64 blocks. - if (i % 64 == 0) { - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "" NOLF) ; - } - PrintAndLogEx(NORMAL, "." NOLF); - fflush(stdout); - uint8_t flags = 0 ; - if (i == 0) flags |= MAGIC_INIT ; - if (i + 1 == block_cnt) flags |= MAGIC_OFF ; + if (i == 0) { + flags |= MAGIC_INIT; + } + if (i + 1 == block_cnt) { + flags |= MAGIC_OFF; + } int res = mfG4GetBlock(pwd, i, dump + (i * MFBLOCK_SIZE), flags); if (res != PM3_SUCCESS) { + PrintAndLogEx(NORMAL,""); PrintAndLogEx(WARNING, "Can't get magic card block: %u. error=%d", i, res); PrintAndLogEx(HINT, "Verify your card size, and try again or try another tag position"); free(dump); return PM3_ESOFT; } + + + PrintAndLogEx(NORMAL, "." NOLF); + fflush(stdout); + // 4k READs can be long, so we split status each 64 blocks. + if (i % 64 == 0 && i != 0) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "" NOLF) ; + } } PrintAndLogEx(NORMAL, ""); if (fill_emulator) { - PrintAndLogEx(INFO, "uploading to emulator memory" NOLF); + PrintAndLogEx(INFO, "uploading to emulator memory"); + PrintAndLogEx(INFO, "." NOLF); // fast push mode g_conn.block_after_ACK = true; size_t offset = 0; - int cnt = 0; + int cnt = 0; uint16_t bytes_left = bytes ; - while (bytes_left > 0 && cnt < block_cnt) { - // 4k writes can be long, so we split status each 64 blocks. - if (cnt % 64 == 0) { - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "" NOLF) ; - } - PrintAndLogEx(NORMAL, "." NOLF); - fflush(stdout); + // 12 is the size of the struct the fct mfEmlSetMem_xt uses to transfer to device + uint16_t max_avail_blocks = ((PM3_CMD_DATA_SIZE - 12) / MFBLOCK_SIZE) * MFBLOCK_SIZE; + while (bytes_left > 0 && cnt < block_cnt) { if (bytes_left == MFBLOCK_SIZE) { // Disable fast mode on last packet g_conn.block_after_ACK = false; } - if (mfEmlSetMem_xt(dump + offset, cnt, 1, MFBLOCK_SIZE) != PM3_SUCCESS) { + uint16_t chunk_size = MIN(max_avail_blocks, bytes_left); + uint16_t blocks_to_send = chunk_size / MFBLOCK_SIZE; + + if (mfEmlSetMem_xt(dump + offset, cnt, blocks_to_send, MFBLOCK_SIZE) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Can't set emulator mem at block: %3d", cnt); free(dump); return PM3_ESOFT; } - cnt++; - offset += MFBLOCK_SIZE; - bytes_left -= MFBLOCK_SIZE; + cnt += blocks_to_send; + offset += chunk_size; + bytes_left -= chunk_size; + PrintAndLogEx(NORMAL, "." NOLF); + fflush(stdout); } PrintAndLogEx(NORMAL, ""); diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 5680c33ce..7f1722cd4 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -3067,6 +3067,7 @@ static int CmdHF14AMfUeLoad(const char *Cmd) { arg_param_begin, arg_str1("f", "file", "", "Filename of dump"), arg_int0("q", "qty", "", "Number of blocks to load from eml file"), + arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -3083,6 +3084,7 @@ static int CmdHF14AMfUeLoad(const char *Cmd) { free(nc); PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mfu sim -t 7`") " to simulate an Amiibo."); + PrintAndLogEx(INFO, "Done!"); return res; } diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index 07b1f91b0..647b6d082 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -165,6 +165,8 @@ static int em4x50_load_file(const char *filename, uint8_t *data, size_t data_len static void em4x50_seteml(uint8_t *src, uint32_t offset, uint32_t numofbytes) { + PrintAndLogEx(INFO, "uploading to emulator memory"); + PrintAndLogEx(INFO, "." NOLF); // fast push mode g_conn.block_after_ACK = true; for (size_t i = offset; i < numofbytes; i += PM3_CMD_DATA_SIZE) { @@ -176,7 +178,11 @@ static void em4x50_seteml(uint8_t *src, uint32_t offset, uint32_t numofbytes) { } clearCommandBuffer(); SendCommandOLD(CMD_LF_EM4X50_ESET, i, len, 0, src + i, len); + PrintAndLogEx(NORMAL, "." NOLF); + fflush(stdout); } + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", numofbytes); } int CmdEM4x50ELoad(const char *Cmd) { @@ -208,9 +214,8 @@ int CmdEM4x50ELoad(const char *Cmd) { } // upload to emulator memory - PrintAndLogEx(INFO, "Uploading to emulator memory contents of " _YELLOW_("%s"), filename); em4x50_seteml(data, 0, DUMP_FILESIZE); - + PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`lf em 4x50 sim -h`")); PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; } @@ -1221,7 +1226,7 @@ int CmdEM4x50Sim(const char *Cmd) { } int status = PM3_EFAILED; - PrintAndLogEx(INFO, "Simulating data from emulator memory"); + PrintAndLogEx(INFO, "Starting simulating"); clearCommandBuffer(); SendCommandNG(CMD_LF_EM4X50_SIM, (uint8_t *)&password, sizeof(password)); From fc3a518f2839f4e185dd2bdf00f3b2183b0d2b0b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 26 Jul 2023 23:47:55 +0200 Subject: [PATCH 0304/1034] There is a race condition when we go from iclass commands to mf command. Especially noticable when eload large files where we used to spam the device with usb packages.\ntry iclass eload, then mf eload, and you see the client hang. With this change we trigger a preload of the fpga image before we start uploading to the device. Current places I could trigger this bug was in eload and gsave. With this patch only the first call takes some time if fpga image must be loaded. The following goes fast.\n\n if you find that the client hangs when going between, this could be the root cause. --- CHANGELOG.md | 3 +++ armsrc/appmain.c | 9 +++++++ client/src/cmdhfmf.c | 9 +++++++ client/src/cmdhw.c | 17 ++++++++++++++ client/src/cmdhw.h | 2 +- client/src/mifare/mifarehost.c | 43 ++++++++++++++++++---------------- include/pm3_cmd.h | 2 ++ 7 files changed, 64 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0f37fcab..ce56eecda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,9 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Removed some empty dump files (@iceman1001) + - Added a fct to choose fpga mode (@iceman1001) + - Changed `hf mf eload/gsave` - fast uploading to emulator memory (@iceman1001) - Added empty dump files with keys for easy simulation (@iceman1001) - Added `hf 15 view` - view ISO15693 dump files (@iceman1001) - Fixed `hf iclass config` - now loops correct in keyroll generation (@iceman1001) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 6cdff3eb6..ced039702 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -783,6 +783,15 @@ static void PacketReceived(PacketCommandNG *packet) { g_reply_via_usb = false; break; } + case CMD_SET_FPGAMODE: { + uint8_t mode = packet->data.asBytes[0]; + if (mode >= FPGA_BITSTREAM_LF && mode <= FPGA_BITSTREAM_HF_15) { + FpgaDownloadAndGo(mode); + reply_ng(CMD_SET_FPGAMODE, PM3_SUCCESS, NULL, 0); + } + reply_ng(CMD_SET_FPGAMODE, PM3_EINVARG, NULL, 0); + break; + } // emulator case CMD_SET_DBGMODE: { g_dbglevel = packet->data.asBytes[0]; diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index a8cc3c3ad..b32efa2cb 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -36,6 +36,7 @@ #include "crypto/libpcrypto.h" #include "wiegand_formats.h" #include "wiegand_formatutils.h" +#include "cmdhw.h" // set_fpga_mode static int CmdHelp(const char *Cmd); @@ -4350,6 +4351,10 @@ int CmdHF14AMfELoad(const char *Cmd) { return PM3_SUCCESS; } + // ICEMAN: bug. if device has been using ICLASS commands, + // the device needs to load the HF fpga image. It takes 1.5 second. + set_fpga_mode(2); + uint8_t *data = NULL; size_t bytes_read = 0; int res = pm3_load_dump(filename, (void **)&data, &bytes_read, (block_width * block_cnt + hdr_len)); @@ -7919,6 +7924,10 @@ static int CmdHF14AGen4Save(const char *Cmd) { bool fill_emulator = arg_get_lit(ctx, 7); CLIParserFree(ctx); + // ICEMAN: bug. if device has been using ICLASS commands, + // the device needs to load the HF fpga image. It takes 1.5 second. + set_fpga_mode(2); + // validations if (pwd_len != 4 && pwd_len != 0) { PrintAndLogEx(FAILED, "Must specify 4 bytes, got " _YELLOW_("%u"), pwd_len); diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index 57bba66aa..c268344df 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -1083,6 +1083,23 @@ static int CmdBreak(const char *Cmd) { return PM3_SUCCESS; } +int set_fpga_mode(uint8_t mode) { + if (mode < 1 || mode > 4) { + return PM3_EINVARG; + } + uint8_t d[] = {mode}; + clearCommandBuffer(); + SendCommandNG(CMD_SET_FPGAMODE, d, sizeof(d)); + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_SET_FPGAMODE, &resp, 1000) == false) { + PrintAndLogEx(WARNING, "command execution timeout"); + return PM3_ETIMEOUT; + } + if (resp.status != PM3_SUCCESS) { + PrintAndLogEx(ERR, "failed to set FPGA mode"); + } + return resp.status; +} static command_t CommandTable[] = { {"-------------", CmdHelp, AlwaysAvailable, "----------------------- " _CYAN_("Hardware") " -----------------------"}, diff --git a/client/src/cmdhw.h b/client/src/cmdhw.h index 4756a7cb0..a2b4f96e1 100644 --- a/client/src/cmdhw.h +++ b/client/src/cmdhw.h @@ -27,5 +27,5 @@ int CmdHW(const char *Cmd); int handle_tearoff(tearoff_params_t *params, bool verbose); void pm3_version(bool verbose, bool oneliner); void pm3_version_short(void); - +int set_fpga_mode(uint8_t mode); #endif diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index bdf4ec7f1..1576b03e5 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -873,13 +873,13 @@ out: int mfReadSector(uint8_t sectorNo, uint8_t keyType, const uint8_t *key, uint8_t *data) { clearCommandBuffer(); - SendCommandMIX(CMD_HF_MIFARE_READSC, sectorNo, keyType, 0, (uint8_t *)key, 6); + SendCommandMIX(CMD_HF_MIFARE_READSC, sectorNo, keyType, 0, (uint8_t *)key, MIFARE_KEY_SIZE); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { - uint8_t isOK = resp.oldarg[0] & 0xff; + uint8_t isOK = resp.oldarg[0] & 0xFF; if (isOK) { - memcpy(data, resp.data.asBytes, mfNumBlocksPerSector(sectorNo) * 16); + memcpy(data, resp.data.asBytes, mfNumBlocksPerSector(sectorNo) * MFBLOCK_SIZE); return PM3_SUCCESS; } else { return PM3_EUNDEF; @@ -902,7 +902,7 @@ int mfReadBlock(uint8_t blockNo, uint8_t keyType, const uint8_t *key, uint8_t *d SendCommandNG(CMD_HF_MIFARE_READBL, (uint8_t *)&payload, sizeof(mf_readblock_t)); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_MIFARE_READBL, &resp, 1500)) { - memcpy(data, resp.data.asBytes, 16); + memcpy(data, resp.data.asBytes, MFBLOCK_SIZE); if (resp.status != PM3_SUCCESS) { PrintAndLogEx(DEBUG, "failed reading block"); @@ -918,7 +918,7 @@ int mfReadBlock(uint8_t blockNo, uint8_t keyType, const uint8_t *key, uint8_t *d // EMULATOR int mfEmlGetMem(uint8_t *data, int blockNum, int blocksCount) { - size_t size = blocksCount * 16; + size_t size = blocksCount * MFBLOCK_SIZE; if (size > PM3_CMD_DATA_SIZE) { return PM3_ESOFT; } @@ -982,7 +982,7 @@ int mfEmlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int blockBtWidt int mfCSetUID(uint8_t *uid, uint8_t uidlen, const uint8_t *atqa, const uint8_t *sak, uint8_t *old_uid, uint8_t *verifed_uid, uint8_t wipecard) { uint8_t params = MAGIC_SINGLE; - uint8_t block0[16]; + uint8_t block0[MFBLOCK_SIZE]; memset(block0, 0x00, sizeof(block0)); int res = mfCGetBlock(0, block0, params); @@ -1045,11 +1045,11 @@ int mfCSetUID(uint8_t *uid, uint8_t uidlen, const uint8_t *atqa, const uint8_t * } int mfCWipe(uint8_t *uid, const uint8_t *atqa, const uint8_t *sak) { - uint8_t block0[16] = {0x00, 0x56, 0x78, 0xBB, 0x95, 0x08, 0x04, 0x00, 0x02, 0xB2, 0x1E, 0x24, 0x23, 0x27, 0x1E, 0x1D}; - // uint8_t block0[16] = {0x04, 0x03, 0x02, 0x01, 0x04, 0x08, 0x04, 0x00, 0x64, 0xB9, 0x95, 0x11, 0x4D, 0x20, 0x42, 0x09}; - uint8_t blockD[16] = {0x00}; + uint8_t block0[MFBLOCK_SIZE] = {0x00, 0x56, 0x78, 0xBB, 0x95, 0x08, 0x04, 0x00, 0x02, 0xB2, 0x1E, 0x24, 0x23, 0x27, 0x1E, 0x1D}; + // uint8_t block0[MFBLOCK_SIZE] = {0x04, 0x03, 0x02, 0x01, 0x04, 0x08, 0x04, 0x00, 0x64, 0xB9, 0x95, 0x11, 0x4D, 0x20, 0x42, 0x09}; + uint8_t blockD[MFBLOCK_SIZE] = {0x00}; // default transport ACL - uint8_t blockK[16] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x80, 0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; + uint8_t blockK[MFBLOCK_SIZE] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x80, 0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; uint8_t params = MAGIC_SINGLE; if (uid != NULL) { @@ -1095,16 +1095,18 @@ int mfCWipe(uint8_t *uid, const uint8_t *atqa, const uint8_t *sak) { } int mfCSetBlock(uint8_t blockNo, uint8_t *data, uint8_t *uid, uint8_t params) { - clearCommandBuffer(); - SendCommandMIX(CMD_HF_MIFARE_CSETBL, params, blockNo, 0, data, 16); + SendCommandMIX(CMD_HF_MIFARE_CSETBL, params, blockNo, 0, data, MFBLOCK_SIZE); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 3500)) { uint8_t isOK = resp.oldarg[0] & 0xff; - if (uid != NULL) + if (uid != NULL) { memcpy(uid, resp.data.asBytes, 4); - if (!isOK) + } + + if (!isOK) { return PM3_EUNDEF; + } } else { PrintAndLogEx(WARNING, "command execute timeout"); return PM3_ETIMEOUT; @@ -1118,9 +1120,10 @@ int mfCGetBlock(uint8_t blockNo, uint8_t *data, uint8_t params) { PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { uint8_t isOK = resp.oldarg[0] & 0xff; - if (!isOK) + if (!isOK) { return PM3_EUNDEF; - memcpy(data, resp.data.asBytes, 16); + } + memcpy(data, resp.data.asBytes, MFBLOCK_SIZE); } else { PrintAndLogEx(WARNING, "command execute timeout"); return PM3_ETIMEOUT; @@ -1145,11 +1148,11 @@ int mfGen3UID(uint8_t *uid, uint8_t uidlen, uint8_t *oldUid) { int mfGen3Block(uint8_t *block, int blockLen, uint8_t *newBlock) { clearCommandBuffer(); - SendCommandMIX(CMD_HF_MIFARE_GEN3BLK, blockLen, 0, 0, block, 16); + SendCommandMIX(CMD_HF_MIFARE_GEN3BLK, blockLen, 0, 0, block, MFBLOCK_SIZE); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_MIFARE_GEN3BLK, &resp, 3500)) { if (resp.status == PM3_SUCCESS && newBlock) { - memcpy(newBlock, resp.data.asBytes, 16); + memcpy(newBlock, resp.data.asBytes, MFBLOCK_SIZE); } return resp.status; } else { @@ -1187,7 +1190,7 @@ int mfG4GetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags if (resp.status != PM3_SUCCESS) { return PM3_EUNDEF; } - memcpy(data, resp.data.asBytes, 16); + memcpy(data, resp.data.asBytes, MFBLOCK_SIZE); } else { PrintAndLogEx(WARNING, "command execute timeout"); return PM3_ETIMEOUT; @@ -1199,7 +1202,7 @@ int mfG4SetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags struct p { uint8_t blockno; uint8_t pwd[4]; - uint8_t data[16]; + uint8_t data[MFBLOCK_SIZE]; uint8_t workFlags; } PACKED payload; payload.blockno = blockno; diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index 13dca3b6c..a96a16c05 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -416,6 +416,8 @@ typedef struct { #define CMD_SPIFFS_WIPE 0x013A +#define CMD_SET_FPGAMODE 0x013F + // This take a +0x2000 as they are high level helper and special functions // As the others, they may have safety level argument if it makes sense #define CMD_SPIFFS_PRINT_TREE 0x2130 From 123ef14667a7df31b58fc87af8dee4e0d68f5b9c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 26 Jul 2023 23:50:12 +0200 Subject: [PATCH 0305/1034] style --- armsrc/mifarecmd.c | 8 +- client/src/cmdhf15.c | 8 +- client/src/cmdhficlass.c | 4 +- client/src/cmdhfmf.c | 14 +- client/src/cmdhw.c | 2 +- client/src/cmdlfem4x50.c | 2 +- client/src/pm3line_vocabulory.h | 1543 ++++++++++++++++--------------- doc/commands.json | 21 +- doc/commands.md | 23 +- 9 files changed, 819 insertions(+), 806 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index ffe3182ba..196adeaed 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -75,7 +75,7 @@ int16_t mifare_cmd_readblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t read_c iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); clear_trace(); set_tracing(true); - + uint32_t timeout = iso14a_get_timeout(); LED_A_ON(); @@ -97,7 +97,7 @@ int16_t mifare_cmd_readblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t read_c }; // frame waiting time (FWT) in 1/fc - uint32_t fwt = 256 * 16 * (1 << 6); + uint32_t fwt = 256 * 16 * (1 << 6); iso14a_set_timeout(fwt / (8 * 16)); for (uint8_t i = 0; i < count; i++) { @@ -2080,7 +2080,7 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { // increase time-out. Magic card etc are slow uint32_t timeout = iso14a_get_timeout(); // frame waiting time (FWT) in 1/fc - uint32_t fwt = 256 * 16 * (1 << 7); + uint32_t fwt = 256 * 16 * (1 << 7); iso14a_set_timeout(fwt / (8 * 16)); for (uint8_t s = 0; s < sectorcnt; s++) { @@ -2349,7 +2349,7 @@ void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { // increase time-out. Magic card etc are slow uint32_t timeout = iso14a_get_timeout(); // frame waiting time (FWT) in 1/fc - uint32_t fwt = 256 * 16 * (1 << 7); + uint32_t fwt = 256 * 16 * (1 << 7); iso14a_set_timeout(fwt / (8 * 16)); //loop doesn't loop just breaks out if error or done diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index a5db7f0e7..fa25e001c 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -790,17 +790,17 @@ static int NxpSysInfo(uint8_t *uid) { PrintAndLogEx(INFO, "--- " _CYAN_("NXP Sysinfo")); PrintAndLogEx(INFO, " raw... %s", sprint_hex(recv, 8)); PrintAndLogEx(INFO, " " _CYAN_("Password protection configuration:")); - PrintAndLogEx(INFO, " * Page L read%s password protected", ((recv[2] & 0x01) ? "" : _GREEN_(" not"))); + PrintAndLogEx(INFO, " * Page L read%s password protected", ((recv[2] & 0x01) ? "" : _GREEN_(" not"))); PrintAndLogEx(INFO, " * Page L write%s password protected", ((recv[2] & 0x02) ? "" : _GREEN_(" not"))); - PrintAndLogEx(INFO, " * Page H read%s password protected", ((recv[2] & 0x10) ? "" : _GREEN_(" not"))); + PrintAndLogEx(INFO, " * Page H read%s password protected", ((recv[2] & 0x10) ? "" : _GREEN_(" not"))); PrintAndLogEx(INFO, " * Page H write%s password protected", ((recv[2] & 0x20) ? "" : _GREEN_(" not"))); PrintAndLogEx(INFO, " " _CYAN_("Lock bits:")); // AFI lock bit - PrintAndLogEx(INFO, " * AFI%s locked", ((recv[3] & 0x01) ? "" : _GREEN_(" not"))); + PrintAndLogEx(INFO, " * AFI%s locked", ((recv[3] & 0x01) ? "" : _GREEN_(" not"))); // EAS lock bit - PrintAndLogEx(INFO, " * EAS%s locked", ((recv[3] & 0x02) ? "" : _GREEN_(" not"))); + PrintAndLogEx(INFO, " * EAS%s locked", ((recv[3] & 0x02) ? "" : _GREEN_(" not"))); // DSFID lock bit PrintAndLogEx(INFO, " * DSFID%s locked", ((recv[3] & 0x03) ? "" : _GREEN_(" not"))); diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 5254c5e03..4c4f3215d 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1082,7 +1082,7 @@ static int CmdHFiClassELoad(const char *Cmd) { } else { dump = newdump; } - + if (verbose) { print_picopass_header((picopass_hdr_t *) dump); print_picopass_info((picopass_hdr_t *) dump); @@ -1094,7 +1094,7 @@ static int CmdHFiClassELoad(const char *Cmd) { uint16_t bytes_sent = 0; iclass_upload_emul(dump, bytes_read, &bytes_sent); free(dump); - PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", bytes_sent); + PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", bytes_sent); PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`hf iclass sim -h`")); PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index b32efa2cb..11bcdd41f 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -1479,10 +1479,10 @@ static int CmdHF14AMfRestore(const char *Cmd) { } PrintAndLogEx(INFO, " %3d | %s| ( " _RED_("fail") " ) key " _YELLOW_("%c"), - blockno, - sprint_hex(bldata, sizeof(bldata)), - (kt == MF_KEY_A) ? 'A' : 'B' - ); + blockno, + sprint_hex(bldata, sizeof(bldata)), + (kt == MF_KEY_A) ? 'A' : 'B' + ); } // end loop key types } // end loop B } // end loop S @@ -4352,7 +4352,7 @@ int CmdHF14AMfELoad(const char *Cmd) { } // ICEMAN: bug. if device has been using ICLASS commands, - // the device needs to load the HF fpga image. It takes 1.5 second. + // the device needs to load the HF fpga image. It takes 1.5 second. set_fpga_mode(2); uint8_t *data = NULL; @@ -7925,7 +7925,7 @@ static int CmdHF14AGen4Save(const char *Cmd) { CLIParserFree(ctx); // ICEMAN: bug. if device has been using ICLASS commands, - // the device needs to load the HF fpga image. It takes 1.5 second. + // the device needs to load the HF fpga image. It takes 1.5 second. set_fpga_mode(2); // validations @@ -8008,7 +8008,7 @@ static int CmdHF14AGen4Save(const char *Cmd) { int res = mfG4GetBlock(pwd, i, dump + (i * MFBLOCK_SIZE), flags); if (res != PM3_SUCCESS) { - PrintAndLogEx(NORMAL,""); + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(WARNING, "Can't get magic card block: %u. error=%d", i, res); PrintAndLogEx(HINT, "Verify your card size, and try again or try another tag position"); free(dump); diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index c268344df..aae539c34 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -1096,7 +1096,7 @@ int set_fpga_mode(uint8_t mode) { return PM3_ETIMEOUT; } if (resp.status != PM3_SUCCESS) { - PrintAndLogEx(ERR, "failed to set FPGA mode"); + PrintAndLogEx(ERR, "failed to set FPGA mode"); } return resp.status; } diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index 647b6d082..09aeb8e84 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -215,7 +215,7 @@ int CmdEM4x50ELoad(const char *Cmd) { // upload to emulator memory em4x50_seteml(data, 0, DUMP_FILESIZE); - PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`lf em 4x50 sim -h`")); + PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`lf em 4x50 sim -h`")); PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; } diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index 864047dba..509cf5387 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -31,776 +31,777 @@ typedef struct vocabulory_s { } vocabulory_t; const static vocabulory_t vocabulory[] = { - { 1, "help" }, - { 0, "auto" }, - { 1, "clear" }, - { 1, "hints" }, - { 1, "msleep" }, - { 1, "rem" }, - { 1, "quit" }, - { 1, "exit" }, - { 1, "prefs help" }, - { 1, "prefs show" }, - { 1, "prefs get barmode" }, - { 1, "prefs get clientdebug" }, - { 1, "prefs get clientdelay" }, - { 1, "prefs get color" }, - { 1, "prefs get savepaths" }, - { 1, "prefs get emoji" }, - { 1, "prefs get hints" }, - { 1, "prefs get output" }, - { 1, "prefs get plotsliders" }, - { 1, "prefs set help" }, - { 1, "prefs set barmode" }, - { 1, "prefs set clientdebug" }, - { 1, "prefs set clientdelay" }, - { 1, "prefs set color" }, - { 1, "prefs set emoji" }, - { 1, "prefs set hints" }, - { 1, "prefs set savepaths" }, - { 1, "prefs set output" }, - { 1, "prefs set plotsliders" }, - { 1, "analyse help" }, - { 1, "analyse lcr" }, - { 1, "analyse crc" }, - { 1, "analyse chksum" }, - { 1, "analyse dates" }, - { 1, "analyse lfsr" }, - { 1, "analyse a" }, - { 1, "analyse nuid" }, - { 1, "analyse demodbuff" }, - { 1, "analyse freq" }, - { 1, "analyse foo" }, - { 1, "analyse units" }, - { 1, "data help" }, - { 1, "data biphaserawdecode" }, - { 1, "data detectclock" }, - { 1, "data fsktonrz" }, - { 1, "data manrawdecode" }, - { 1, "data modulation" }, - { 1, "data rawdemod" }, - { 1, "data askedgedetect" }, - { 1, "data autocorr" }, - { 1, "data dirthreshold" }, - { 1, "data decimate" }, - { 1, "data envelope" }, - { 1, "data undecimate" }, - { 1, "data hide" }, - { 1, "data hpf" }, - { 1, "data iir" }, - { 1, "data grid" }, - { 1, "data ltrim" }, - { 1, "data mtrim" }, - { 1, "data norm" }, - { 1, "data plot" }, - { 1, "data cthreshold" }, - { 1, "data rtrim" }, - { 1, "data setgraphmarkers" }, - { 1, "data shiftgraphzero" }, - { 1, "data timescale" }, - { 1, "data zerocrossings" }, - { 1, "data convertbitstream" }, - { 1, "data getbitstream" }, - { 1, "data asn1" }, - { 1, "data bin2hex" }, - { 0, "data bitsamples" }, - { 1, "data clear" }, - { 1, "data diff" }, - { 0, "data hexsamples" }, - { 1, "data hex2bin" }, - { 1, "data load" }, - { 1, "data num" }, - { 1, "data print" }, - { 0, "data samples" }, - { 1, "data save" }, - { 1, "data setdebugmode" }, - { 0, "data tune" }, - { 1, "emv help" }, - { 1, "emv list" }, - { 1, "emv test" }, - { 0, "emv challenge" }, - { 0, "emv exec" }, - { 0, "emv genac" }, - { 0, "emv gpo" }, - { 0, "emv intauth" }, - { 0, "emv pse" }, - { 0, "emv reader" }, - { 0, "emv readrec" }, - { 0, "emv roca" }, - { 0, "emv scan" }, - { 0, "emv search" }, - { 0, "emv select" }, - { 1, "hf help" }, - { 1, "hf list" }, - { 0, "hf plot" }, - { 0, "hf tune" }, - { 1, "hf search" }, - { 0, "hf sniff" }, - { 1, "hf 14a help" }, - { 1, "hf 14a list" }, - { 0, "hf 14a antifuzz" }, - { 0, "hf 14a config" }, - { 0, "hf 14a cuids" }, - { 0, "hf 14a info" }, - { 0, "hf 14a sim" }, - { 0, "hf 14a sniff" }, - { 0, "hf 14a raw" }, - { 0, "hf 14a reader" }, - { 0, "hf 14a apdu" }, - { 0, "hf 14a apdufind" }, - { 0, "hf 14a chaining" }, - { 0, "hf 14a ndefformat" }, - { 0, "hf 14a ndefread" }, - { 0, "hf 14a ndefwrite" }, - { 1, "hf 14b help" }, - { 0, "hf 14b apdu" }, - { 0, "hf 14b dump" }, - { 0, "hf 14b info" }, - { 1, "hf 14b list" }, - { 0, "hf 14b ndefread" }, - { 0, "hf 14b raw" }, - { 0, "hf 14b reader" }, - { 0, "hf 14b sim" }, - { 0, "hf 14b sniff" }, - { 0, "hf 14b rdbl" }, - { 0, "hf 14b sriwrite" }, - { 1, "hf 14b view" }, - { 1, "hf 15 help" }, - { 1, "hf 15 list" }, - { 1, "hf 15 demod" }, - { 0, "hf 15 dump" }, - { 0, "hf 15 info" }, - { 0, "hf 15 sniff" }, - { 0, "hf 15 raw" }, - { 0, "hf 15 rdbl" }, - { 0, "hf 15 rdmulti" }, - { 0, "hf 15 reader" }, - { 0, "hf 15 restore" }, - { 0, "hf 15 samples" }, - { 0, "hf 15 eload" }, - { 0, "hf 15 esave" }, - { 0, "hf 15 eview" }, - { 0, "hf 15 sim" }, - { 0, "hf 15 slixwritepwd" }, - { 0, "hf 15 slixeasdisable" }, - { 0, "hf 15 slixeasenable" }, - { 0, "hf 15 slixprivacydisable" }, - { 0, "hf 15 slixprivacyenable" }, - { 0, "hf 15 passprotectafi" }, - { 0, "hf 15 passprotecteas" }, - { 0, "hf 15 wrbl" }, - { 0, "hf 15 findafi" }, - { 0, "hf 15 writeafi" }, - { 0, "hf 15 writedsfid" }, - { 0, "hf 15 csetuid" }, - { 1, "hf cipurse help" }, - { 0, "hf cipurse info" }, - { 0, "hf cipurse select" }, - { 0, "hf cipurse auth" }, - { 0, "hf cipurse read" }, - { 0, "hf cipurse write" }, - { 0, "hf cipurse aread" }, - { 0, "hf cipurse awrite" }, - { 0, "hf cipurse formatall" }, - { 0, "hf cipurse create" }, - { 0, "hf cipurse delete" }, - { 0, "hf cipurse updkey" }, - { 0, "hf cipurse updakey" }, - { 0, "hf cipurse default" }, - { 1, "hf cipurse test" }, - { 1, "hf epa help" }, - { 0, "hf epa cnonces" }, - { 0, "hf epa replay" }, - { 0, "hf epa sim" }, - { 1, "hf emrtd help" }, - { 0, "hf emrtd dump" }, - { 1, "hf emrtd info" }, - { 1, "hf emrtd list" }, - { 1, "hf felica help" }, - { 1, "hf felica list" }, - { 0, "hf felica reader" }, - { 0, "hf felica info" }, - { 0, "hf felica sniff" }, - { 0, "hf felica raw" }, - { 0, "hf felica rdbl" }, - { 0, "hf felica wrbl" }, - { 0, "hf felica rqservice" }, - { 0, "hf felica rqresponse" }, - { 0, "hf felica scsvcode" }, - { 0, "hf felica rqsyscode" }, - { 0, "hf felica auth1" }, - { 0, "hf felica auth2" }, - { 0, "hf felica rqspecver" }, - { 0, "hf felica resetmode" }, - { 0, "hf felica litesim" }, - { 0, "hf felica litedump" }, - { 1, "hf fido help" }, - { 1, "hf fido list" }, - { 0, "hf fido info" }, - { 0, "hf fido reg" }, - { 0, "hf fido auth" }, - { 0, "hf fido make" }, - { 0, "hf fido assert" }, - { 1, "hf fudan help" }, - { 0, "hf fudan reader" }, - { 0, "hf fudan dump" }, - { 0, "hf fudan rdbl" }, - { 1, "hf fudan view" }, - { 0, "hf fudan wrbl" }, - { 1, "hf gallagher help" }, - { 0, "hf gallagher reader" }, - { 0, "hf gallagher clone" }, - { 0, "hf gallagher delete" }, - { 1, "hf gallagher diversifykey" }, - { 1, "hf gallagher decode" }, - { 1, "hf ksx6924 help" }, - { 0, "hf ksx6924 select" }, - { 0, "hf ksx6924 info" }, - { 0, "hf ksx6924 balance" }, - { 0, "hf ksx6924 init" }, - { 0, "hf ksx6924 prec" }, - { 1, "hf jooki help" }, - { 0, "hf jooki clone" }, - { 1, "hf jooki decode" }, - { 1, "hf jooki encode" }, - { 0, "hf jooki sim" }, - { 1, "hf iclass help" }, - { 0, "hf iclass dump" }, - { 1, "hf iclass info" }, - { 1, "hf iclass list" }, - { 0, "hf iclass rdbl" }, - { 0, "hf iclass reader" }, - { 0, "hf iclass restore" }, - { 0, "hf iclass sniff" }, - { 0, "hf iclass wrbl" }, - { 0, "hf iclass chk" }, - { 1, "hf iclass loclass" }, - { 1, "hf iclass lookup" }, - { 0, "hf iclass sim" }, - { 0, "hf iclass eload" }, - { 0, "hf iclass esave" }, - { 0, "hf iclass eview" }, - { 1, "hf iclass configcard" }, - { 1, "hf iclass calcnewkey" }, - { 1, "hf iclass encode" }, - { 1, "hf iclass encrypt" }, - { 1, "hf iclass decrypt" }, - { 1, "hf iclass managekeys" }, - { 1, "hf iclass permutekey" }, - { 1, "hf iclass view" }, - { 0, "hf iclass sam" }, - { 1, "hf legic help" }, - { 0, "hf legic dump" }, - { 0, "hf legic info" }, - { 1, "hf legic list" }, - { 0, "hf legic rdbl" }, - { 0, "hf legic reader" }, - { 0, "hf legic restore" }, - { 0, "hf legic wipe" }, - { 0, "hf legic wrbl" }, - { 0, "hf legic sim" }, - { 0, "hf legic eload" }, - { 0, "hf legic esave" }, - { 0, "hf legic eview" }, - { 0, "hf legic einfo" }, - { 1, "hf legic crc" }, - { 1, "hf legic view" }, - { 1, "hf lto help" }, - { 0, "hf lto dump" }, - { 0, "hf lto info" }, - { 1, "hf lto list" }, - { 0, "hf lto rdbl" }, - { 0, "hf lto reader" }, - { 0, "hf lto restore" }, - { 0, "hf lto wrbl" }, - { 1, "hf mf help" }, - { 1, "hf mf list" }, - { 0, "hf mf darkside" }, - { 0, "hf mf nested" }, - { 1, "hf mf hardnested" }, - { 0, "hf mf staticnested" }, - { 0, "hf mf autopwn" }, - { 0, "hf mf nack" }, - { 0, "hf mf chk" }, - { 0, "hf mf fchk" }, - { 1, "hf mf decrypt" }, - { 0, "hf mf supercard" }, - { 0, "hf mf auth4" }, - { 1, "hf mf acl" }, - { 0, "hf mf dump" }, - { 1, "hf mf mad" }, - { 0, "hf mf personalize" }, - { 0, "hf mf rdbl" }, - { 0, "hf mf rdsc" }, - { 0, "hf mf restore" }, - { 0, "hf mf setmod" }, - { 1, "hf mf value" }, - { 1, "hf mf view" }, - { 0, "hf mf wipe" }, - { 0, "hf mf wrbl" }, - { 0, "hf mf sim" }, - { 0, "hf mf ecfill" }, - { 0, "hf mf eclr" }, - { 0, "hf mf egetblk" }, - { 0, "hf mf egetsc" }, - { 0, "hf mf ekeyprn" }, - { 0, "hf mf eload" }, - { 0, "hf mf esave" }, - { 0, "hf mf esetblk" }, - { 0, "hf mf eview" }, - { 0, "hf mf cgetblk" }, - { 0, "hf mf cgetsc" }, - { 0, "hf mf cload" }, - { 0, "hf mf csave" }, - { 0, "hf mf csetblk" }, - { 0, "hf mf csetuid" }, - { 0, "hf mf cview" }, - { 0, "hf mf cwipe" }, - { 0, "hf mf gen3uid" }, - { 0, "hf mf gen3blk" }, - { 0, "hf mf gen3freeze" }, - { 0, "hf mf ggetblk" }, - { 0, "hf mf gload" }, - { 0, "hf mf gsave" }, - { 0, "hf mf gsetblk" }, - { 0, "hf mf gview" }, - { 0, "hf mf gdmcfg" }, - { 0, "hf mf gdmsetcfg" }, - { 0, "hf mf gdmsetblk" }, - { 0, "hf mf ndefformat" }, - { 0, "hf mf ndefread" }, - { 0, "hf mf ndefwrite" }, - { 1, "hf mfp help" }, - { 1, "hf mfp list" }, - { 0, "hf mfp auth" }, - { 0, "hf mfp chk" }, - { 0, "hf mfp dump" }, - { 0, "hf mfp info" }, - { 0, "hf mfp mad" }, - { 0, "hf mfp rdbl" }, - { 0, "hf mfp rdsc" }, - { 0, "hf mfp wrbl" }, - { 0, "hf mfp commitp" }, - { 0, "hf mfp initp" }, - { 0, "hf mfp wrp" }, - { 0, "hf mfp ndefformat" }, - { 0, "hf mfp ndefread" }, - { 0, "hf mfp ndefwrite" }, - { 1, "hf mfu help" }, - { 1, "hf mfu keygen" }, - { 1, "hf mfu pwdgen" }, - { 0, "hf mfu otptear" }, - { 0, "hf mfu cauth" }, - { 0, "hf mfu dump" }, - { 0, "hf mfu info" }, - { 0, "hf mfu ndefread" }, - { 0, "hf mfu rdbl" }, - { 0, "hf mfu restore" }, - { 1, "hf mfu view" }, - { 0, "hf mfu wrbl" }, - { 0, "hf mfu tamper" }, - { 0, "hf mfu eload" }, - { 0, "hf mfu esave" }, - { 0, "hf mfu eview" }, - { 0, "hf mfu sim" }, - { 0, "hf mfu setpwd" }, - { 0, "hf mfu setuid" }, - { 1, "hf mfdes help" }, - { 0, "hf mfdes info" }, - { 0, "hf mfdes getuid" }, - { 0, "hf mfdes default" }, - { 0, "hf mfdes auth" }, - { 0, "hf mfdes chk" }, - { 0, "hf mfdes detect" }, - { 0, "hf mfdes freemem" }, - { 0, "hf mfdes setconfig" }, - { 0, "hf mfdes formatpicc" }, - { 1, "hf mfdes list" }, - { 0, "hf mfdes mad" }, - { 0, "hf mfdes lsapp" }, - { 0, "hf mfdes getaids" }, - { 0, "hf mfdes getappnames" }, - { 0, "hf mfdes bruteaid" }, - { 0, "hf mfdes createapp" }, - { 0, "hf mfdes deleteapp" }, - { 0, "hf mfdes selectapp" }, - { 0, "hf mfdes changekey" }, - { 0, "hf mfdes chkeysettings" }, - { 0, "hf mfdes getkeysettings" }, - { 0, "hf mfdes getkeyversions" }, - { 0, "hf mfdes getfileids" }, - { 0, "hf mfdes getfileisoids" }, - { 0, "hf mfdes lsfiles" }, - { 0, "hf mfdes dump" }, - { 0, "hf mfdes createfile" }, - { 0, "hf mfdes createvaluefile" }, - { 0, "hf mfdes createrecordfile" }, - { 0, "hf mfdes createmacfile" }, - { 0, "hf mfdes deletefile" }, - { 0, "hf mfdes getfilesettings" }, - { 0, "hf mfdes chfilesettings" }, - { 0, "hf mfdes read" }, - { 0, "hf mfdes write" }, - { 0, "hf mfdes value" }, - { 0, "hf mfdes clearrecfile" }, - { 1, "hf mfdes test" }, - { 1, "hf ntag424 help" }, - { 0, "hf ntag424 info" }, - { 0, "hf ntag424 sdm" }, - { 1, "hf ntag424 view" }, - { 1, "hf seos help" }, - { 0, "hf seos info" }, - { 1, "hf seos list" }, - { 1, "hf st25ta help" }, - { 0, "hf st25ta info" }, - { 1, "hf st25ta list" }, - { 1, "hf st25ta ndefread" }, - { 0, "hf st25ta protect" }, - { 0, "hf st25ta pwd" }, - { 0, "hf st25ta sim" }, - { 1, "hf tesla help" }, - { 0, "hf tesla info" }, - { 1, "hf tesla list" }, - { 1, "hf texkom help" }, - { 0, "hf texkom reader" }, - { 0, "hf texkom sim" }, - { 1, "hf thinfilm help" }, - { 0, "hf thinfilm info" }, - { 1, "hf thinfilm list" }, - { 0, "hf thinfilm sim" }, - { 1, "hf topaz help" }, - { 1, "hf topaz list" }, - { 0, "hf topaz dump" }, - { 0, "hf topaz info" }, - { 0, "hf topaz raw" }, - { 0, "hf topaz rdbl" }, - { 0, "hf topaz reader" }, - { 0, "hf topaz sim" }, - { 0, "hf topaz sniff" }, - { 1, "hf topaz view" }, - { 0, "hf topaz wrbl" }, - { 1, "hf vas help" }, - { 0, "hf vas reader" }, - { 1, "hf vas decrypt" }, - { 1, "hf waveshare help" }, - { 0, "hf waveshare loadbmp" }, - { 1, "hf xerox help" }, - { 0, "hf xerox info" }, - { 0, "hf xerox reader" }, - { 0, "hf xerox dump" }, - { 1, "hw help" }, - { 0, "hw break" }, - { 1, "hw connect" }, - { 0, "hw dbg" }, - { 0, "hw detectreader" }, - { 0, "hw fpgaoff" }, - { 0, "hw lcd" }, - { 0, "hw lcdreset" }, - { 0, "hw ping" }, - { 0, "hw readmem" }, - { 0, "hw reset" }, - { 0, "hw setlfdivisor" }, - { 0, "hw setmux" }, - { 0, "hw standalone" }, - { 0, "hw status" }, - { 0, "hw tearoff" }, - { 0, "hw tia" }, - { 1, "hw timeout" }, - { 0, "hw tune" }, - { 1, "hw version" }, - { 1, "lf help" }, - { 0, "lf config" }, - { 0, "lf cmdread" }, - { 0, "lf read" }, - { 1, "lf search" }, - { 0, "lf sim" }, - { 0, "lf simask" }, - { 0, "lf simfsk" }, - { 0, "lf simpsk" }, - { 0, "lf simbidir" }, - { 0, "lf sniff" }, - { 0, "lf tune" }, - { 1, "lf awid help" }, - { 1, "lf awid demod" }, - { 0, "lf awid reader" }, - { 0, "lf awid clone" }, - { 0, "lf awid sim" }, - { 0, "lf awid brute" }, - { 0, "lf awid watch" }, - { 1, "lf cotag help" }, - { 1, "lf cotag demod" }, - { 0, "lf cotag reader" }, - { 1, "lf destron help" }, - { 1, "lf destron demod" }, - { 0, "lf destron reader" }, - { 0, "lf destron clone" }, - { 0, "lf destron sim" }, - { 1, "lf em help" }, - { 1, "lf em 410x help" }, - { 1, "lf em 410x demod" }, - { 0, "lf em 410x reader" }, - { 0, "lf em 410x sim" }, - { 0, "lf em 410x brute" }, - { 0, "lf em 410x watch" }, - { 0, "lf em 410x spoof" }, - { 0, "lf em 410x clone" }, - { 1, "lf em 4x05 help" }, - { 0, "lf em 4x05 brute" }, - { 0, "lf em 4x05 chk" }, - { 1, "lf em 4x05 demod" }, - { 0, "lf em 4x05 dump" }, - { 0, "lf em 4x05 info" }, - { 0, "lf em 4x05 read" }, - { 1, "lf em 4x05 sniff" }, - { 0, "lf em 4x05 unlock" }, - { 0, "lf em 4x05 wipe" }, - { 0, "lf em 4x05 write" }, - { 1, "lf em 4x50 help" }, - { 0, "lf em 4x50 brute" }, - { 0, "lf em 4x50 chk" }, - { 0, "lf em 4x50 dump" }, - { 0, "lf em 4x50 info" }, - { 0, "lf em 4x50 login" }, - { 0, "lf em 4x50 rdbl" }, - { 0, "lf em 4x50 reader" }, - { 0, "lf em 4x50 restore" }, - { 0, "lf em 4x50 wrbl" }, - { 0, "lf em 4x50 wrpwd" }, - { 0, "lf em 4x50 wipe" }, - { 0, "lf em 4x50 eload" }, - { 0, "lf em 4x50 esave" }, - { 0, "lf em 4x50 eview" }, - { 0, "lf em 4x50 sim" }, - { 1, "lf em 4x70 help" }, - { 0, "lf em 4x70 brute" }, - { 0, "lf em 4x70 info" }, - { 0, "lf em 4x70 write" }, - { 0, "lf em 4x70 unlock" }, - { 0, "lf em 4x70 auth" }, - { 0, "lf em 4x70 writepin" }, - { 0, "lf em 4x70 writekey" }, - { 1, "lf fdxb help" }, - { 1, "lf fdxb demod" }, - { 0, "lf fdxb reader" }, - { 0, "lf fdxb clone" }, - { 0, "lf fdxb sim" }, - { 1, "lf gallagher help" }, - { 1, "lf gallagher demod" }, - { 0, "lf gallagher reader" }, - { 0, "lf gallagher clone" }, - { 0, "lf gallagher sim" }, - { 1, "lf gproxii help" }, - { 1, "lf gproxii demod" }, - { 0, "lf gproxii reader" }, - { 0, "lf gproxii clone" }, - { 0, "lf gproxii sim" }, - { 1, "lf hid help" }, - { 1, "lf hid demod" }, - { 0, "lf hid reader" }, - { 0, "lf hid clone" }, - { 0, "lf hid sim" }, - { 0, "lf hid brute" }, - { 0, "lf hid watch" }, - { 1, "lf hitag help" }, - { 1, "lf hitag list" }, - { 0, "lf hitag info" }, - { 0, "lf hitag dump" }, - { 0, "lf hitag read" }, - { 0, "lf hitag wrbl" }, - { 0, "lf hitag sniff" }, - { 0, "lf hitag cc" }, - { 0, "lf hitag ta" }, - { 0, "lf hitag eload" }, - { 0, "lf hitag sim" }, - { 1, "lf idteck help" }, - { 1, "lf idteck demod" }, - { 0, "lf idteck reader" }, - { 0, "lf idteck clone" }, - { 0, "lf idteck sim" }, - { 1, "lf indala help" }, - { 0, "lf indala brute" }, - { 1, "lf indala demod" }, - { 1, "lf indala altdemod" }, - { 0, "lf indala reader" }, - { 0, "lf indala clone" }, - { 0, "lf indala sim" }, - { 1, "lf io help" }, - { 1, "lf io demod" }, - { 0, "lf io reader" }, - { 0, "lf io clone" }, - { 0, "lf io sim" }, - { 0, "lf io watch" }, - { 1, "lf jablotron help" }, - { 1, "lf jablotron demod" }, - { 0, "lf jablotron reader" }, - { 0, "lf jablotron clone" }, - { 0, "lf jablotron sim" }, - { 1, "lf keri help" }, - { 1, "lf keri demod" }, - { 0, "lf keri reader" }, - { 0, "lf keri clone" }, - { 0, "lf keri sim" }, - { 1, "lf motorola help" }, - { 1, "lf motorola demod" }, - { 0, "lf motorola reader" }, - { 0, "lf motorola clone" }, - { 0, "lf motorola sim" }, - { 1, "lf nedap help" }, - { 1, "lf nedap demod" }, - { 0, "lf nedap reader" }, - { 0, "lf nedap clone" }, - { 0, "lf nedap sim" }, - { 1, "lf nexwatch help" }, - { 1, "lf nexwatch demod" }, - { 0, "lf nexwatch reader" }, - { 0, "lf nexwatch clone" }, - { 0, "lf nexwatch sim" }, - { 1, "lf noralsy help" }, - { 1, "lf noralsy demod" }, - { 0, "lf noralsy reader" }, - { 0, "lf noralsy clone" }, - { 0, "lf noralsy sim" }, - { 1, "lf pac help" }, - { 1, "lf pac demod" }, - { 0, "lf pac reader" }, - { 0, "lf pac clone" }, - { 0, "lf pac sim" }, - { 1, "lf paradox help" }, - { 1, "lf paradox demod" }, - { 0, "lf paradox reader" }, - { 0, "lf paradox clone" }, - { 0, "lf paradox sim" }, - { 1, "lf pcf7931 help" }, - { 0, "lf pcf7931 reader" }, - { 0, "lf pcf7931 write" }, - { 1, "lf pcf7931 config" }, - { 1, "lf presco help" }, - { 1, "lf presco demod" }, - { 0, "lf presco reader" }, - { 0, "lf presco clone" }, - { 0, "lf presco sim" }, - { 1, "lf pyramid help" }, - { 1, "lf pyramid demod" }, - { 0, "lf pyramid reader" }, - { 0, "lf pyramid clone" }, - { 0, "lf pyramid sim" }, - { 1, "lf securakey help" }, - { 1, "lf securakey demod" }, - { 0, "lf securakey reader" }, - { 0, "lf securakey clone" }, - { 0, "lf securakey sim" }, - { 1, "lf ti help" }, - { 1, "lf ti demod" }, - { 0, "lf ti reader" }, - { 0, "lf ti write" }, - { 1, "lf t55xx help" }, - { 0, "lf t55xx clonehelp" }, - { 1, "lf t55xx config" }, - { 0, "lf t55xx dangerraw" }, - { 1, "lf t55xx detect" }, - { 0, "lf t55xx deviceconfig" }, - { 0, "lf t55xx dump" }, - { 1, "lf t55xx info" }, - { 0, "lf t55xx p1detect" }, - { 0, "lf t55xx read" }, - { 0, "lf t55xx resetread" }, - { 0, "lf t55xx restore" }, - { 1, "lf t55xx trace" }, - { 0, "lf t55xx wakeup" }, - { 0, "lf t55xx write" }, - { 0, "lf t55xx bruteforce" }, - { 0, "lf t55xx chk" }, - { 0, "lf t55xx protect" }, - { 0, "lf t55xx recoverpw" }, - { 1, "lf t55xx sniff" }, - { 0, "lf t55xx special" }, - { 0, "lf t55xx wipe" }, - { 1, "lf viking help" }, - { 1, "lf viking demod" }, - { 0, "lf viking reader" }, - { 0, "lf viking clone" }, - { 0, "lf viking sim" }, - { 1, "lf visa2000 help" }, - { 1, "lf visa2000 demod" }, - { 0, "lf visa2000 reader" }, - { 0, "lf visa2000 clone" }, - { 0, "lf visa2000 sim" }, - { 1, "mem help" }, - { 0, "mem baudrate" }, - { 0, "mem dump" }, - { 0, "mem info" }, - { 0, "mem load" }, - { 0, "mem wipe" }, - { 1, "mem spiffs help" }, - { 0, "mem spiffs copy" }, - { 0, "mem spiffs check" }, - { 0, "mem spiffs dump" }, - { 0, "mem spiffs info" }, - { 0, "mem spiffs mount" }, - { 0, "mem spiffs remove" }, - { 0, "mem spiffs rename" }, - { 0, "mem spiffs test" }, - { 0, "mem spiffs tree" }, - { 0, "mem spiffs unmount" }, - { 0, "mem spiffs upload" }, - { 0, "mem spiffs view" }, - { 0, "mem spiffs wipe" }, - { 1, "nfc help" }, - { 1, "nfc decode" }, - { 0, "nfc type1 read" }, - { 1, "nfc type1 help" }, - { 0, "nfc type2 read" }, - { 1, "nfc type2 help" }, - { 0, "nfc type4a format" }, - { 0, "nfc type4a read" }, - { 0, "nfc type4a write" }, - { 0, "nfc type4a st25taread" }, - { 1, "nfc type4a help" }, - { 0, "nfc type4b read" }, - { 1, "nfc type4b help" }, - { 0, "nfc mf cformat" }, - { 0, "nfc mf cread" }, - { 0, "nfc mf cwrite" }, - { 0, "nfc mf pread" }, - { 1, "nfc mf help" }, - { 0, "nfc barcode read" }, - { 0, "nfc barcode sim" }, - { 1, "nfc barcode help" }, - { 1, "piv help" }, - { 0, "piv select" }, - { 0, "piv getdata" }, - { 0, "piv authsign" }, - { 0, "piv scan" }, - { 1, "piv list" }, - { 1, "smart help" }, - { 1, "smart list" }, - { 0, "smart info" }, - { 0, "smart reader" }, - { 0, "smart raw" }, - { 1, "smart upgrade" }, - { 0, "smart setclock" }, - { 0, "smart brute" }, - { 1, "script help" }, - { 1, "script list" }, - { 1, "script run" }, - { 1, "trace help" }, - { 1, "trace extract" }, - { 1, "trace list" }, - { 1, "trace load" }, - { 1, "trace save" }, - { 1, "usart help" }, - { 0, "usart btpin" }, - { 0, "usart btfactory" }, - { 0, "usart tx" }, - { 0, "usart rx" }, - { 0, "usart txrx" }, - { 0, "usart txhex" }, - { 0, "usart rxhex" }, - { 0, "usart config" }, - { 1, "wiegand help" }, - { 1, "wiegand list" }, - { 1, "wiegand encode" }, - { 1, "wiegand decode" }, + { 1, "help" }, + { 0, "auto" }, + { 1, "clear" }, + { 1, "hints" }, + { 1, "msleep" }, + { 1, "rem" }, + { 1, "quit" }, + { 1, "exit" }, + { 1, "prefs help" }, + { 1, "prefs show" }, + { 1, "prefs get barmode" }, + { 1, "prefs get clientdebug" }, + { 1, "prefs get clientdelay" }, + { 1, "prefs get color" }, + { 1, "prefs get savepaths" }, + { 1, "prefs get emoji" }, + { 1, "prefs get hints" }, + { 1, "prefs get output" }, + { 1, "prefs get plotsliders" }, + { 1, "prefs set help" }, + { 1, "prefs set barmode" }, + { 1, "prefs set clientdebug" }, + { 1, "prefs set clientdelay" }, + { 1, "prefs set color" }, + { 1, "prefs set emoji" }, + { 1, "prefs set hints" }, + { 1, "prefs set savepaths" }, + { 1, "prefs set output" }, + { 1, "prefs set plotsliders" }, + { 1, "analyse help" }, + { 1, "analyse lcr" }, + { 1, "analyse crc" }, + { 1, "analyse chksum" }, + { 1, "analyse dates" }, + { 1, "analyse lfsr" }, + { 1, "analyse a" }, + { 1, "analyse nuid" }, + { 1, "analyse demodbuff" }, + { 1, "analyse freq" }, + { 1, "analyse foo" }, + { 1, "analyse units" }, + { 1, "data help" }, + { 1, "data biphaserawdecode" }, + { 1, "data detectclock" }, + { 1, "data fsktonrz" }, + { 1, "data manrawdecode" }, + { 1, "data modulation" }, + { 1, "data rawdemod" }, + { 1, "data askedgedetect" }, + { 1, "data autocorr" }, + { 1, "data dirthreshold" }, + { 1, "data decimate" }, + { 1, "data envelope" }, + { 1, "data undecimate" }, + { 1, "data hide" }, + { 1, "data hpf" }, + { 1, "data iir" }, + { 1, "data grid" }, + { 1, "data ltrim" }, + { 1, "data mtrim" }, + { 1, "data norm" }, + { 1, "data plot" }, + { 1, "data cthreshold" }, + { 1, "data rtrim" }, + { 1, "data setgraphmarkers" }, + { 1, "data shiftgraphzero" }, + { 1, "data timescale" }, + { 1, "data zerocrossings" }, + { 1, "data convertbitstream" }, + { 1, "data getbitstream" }, + { 1, "data asn1" }, + { 1, "data bin2hex" }, + { 0, "data bitsamples" }, + { 1, "data clear" }, + { 1, "data diff" }, + { 0, "data hexsamples" }, + { 1, "data hex2bin" }, + { 1, "data load" }, + { 1, "data num" }, + { 1, "data print" }, + { 0, "data samples" }, + { 1, "data save" }, + { 1, "data setdebugmode" }, + { 0, "data tune" }, + { 1, "emv help" }, + { 1, "emv list" }, + { 1, "emv test" }, + { 0, "emv challenge" }, + { 0, "emv exec" }, + { 0, "emv genac" }, + { 0, "emv gpo" }, + { 0, "emv intauth" }, + { 0, "emv pse" }, + { 0, "emv reader" }, + { 0, "emv readrec" }, + { 0, "emv roca" }, + { 0, "emv scan" }, + { 0, "emv search" }, + { 0, "emv select" }, + { 1, "hf help" }, + { 1, "hf list" }, + { 0, "hf plot" }, + { 0, "hf tune" }, + { 1, "hf search" }, + { 0, "hf sniff" }, + { 1, "hf 14a help" }, + { 1, "hf 14a list" }, + { 0, "hf 14a antifuzz" }, + { 0, "hf 14a config" }, + { 0, "hf 14a cuids" }, + { 0, "hf 14a info" }, + { 0, "hf 14a sim" }, + { 0, "hf 14a sniff" }, + { 0, "hf 14a raw" }, + { 0, "hf 14a reader" }, + { 0, "hf 14a apdu" }, + { 0, "hf 14a apdufind" }, + { 0, "hf 14a chaining" }, + { 0, "hf 14a ndefformat" }, + { 0, "hf 14a ndefread" }, + { 0, "hf 14a ndefwrite" }, + { 1, "hf 14b help" }, + { 0, "hf 14b apdu" }, + { 0, "hf 14b dump" }, + { 0, "hf 14b info" }, + { 1, "hf 14b list" }, + { 0, "hf 14b ndefread" }, + { 0, "hf 14b raw" }, + { 0, "hf 14b reader" }, + { 0, "hf 14b sim" }, + { 0, "hf 14b sniff" }, + { 0, "hf 14b rdbl" }, + { 0, "hf 14b sriwrite" }, + { 1, "hf 14b view" }, + { 1, "hf 15 help" }, + { 1, "hf 15 list" }, + { 1, "hf 15 demod" }, + { 0, "hf 15 dump" }, + { 0, "hf 15 info" }, + { 0, "hf 15 sniff" }, + { 0, "hf 15 raw" }, + { 0, "hf 15 rdbl" }, + { 0, "hf 15 rdmulti" }, + { 0, "hf 15 reader" }, + { 0, "hf 15 restore" }, + { 0, "hf 15 samples" }, + { 1, "hf 15 view" }, + { 0, "hf 15 wrbl" }, + { 0, "hf 15 sim" }, + { 0, "hf 15 eload" }, + { 0, "hf 15 esave" }, + { 0, "hf 15 eview" }, + { 0, "hf 15 slixwritepwd" }, + { 0, "hf 15 slixeasdisable" }, + { 0, "hf 15 slixeasenable" }, + { 0, "hf 15 slixprivacydisable" }, + { 0, "hf 15 slixprivacyenable" }, + { 0, "hf 15 passprotectafi" }, + { 0, "hf 15 passprotecteas" }, + { 0, "hf 15 findafi" }, + { 0, "hf 15 writeafi" }, + { 0, "hf 15 writedsfid" }, + { 0, "hf 15 csetuid" }, + { 1, "hf cipurse help" }, + { 0, "hf cipurse info" }, + { 0, "hf cipurse select" }, + { 0, "hf cipurse auth" }, + { 0, "hf cipurse read" }, + { 0, "hf cipurse write" }, + { 0, "hf cipurse aread" }, + { 0, "hf cipurse awrite" }, + { 0, "hf cipurse formatall" }, + { 0, "hf cipurse create" }, + { 0, "hf cipurse delete" }, + { 0, "hf cipurse updkey" }, + { 0, "hf cipurse updakey" }, + { 0, "hf cipurse default" }, + { 1, "hf cipurse test" }, + { 1, "hf epa help" }, + { 0, "hf epa cnonces" }, + { 0, "hf epa replay" }, + { 0, "hf epa sim" }, + { 1, "hf emrtd help" }, + { 0, "hf emrtd dump" }, + { 1, "hf emrtd info" }, + { 1, "hf emrtd list" }, + { 1, "hf felica help" }, + { 1, "hf felica list" }, + { 0, "hf felica reader" }, + { 0, "hf felica info" }, + { 0, "hf felica sniff" }, + { 0, "hf felica raw" }, + { 0, "hf felica rdbl" }, + { 0, "hf felica wrbl" }, + { 0, "hf felica rqservice" }, + { 0, "hf felica rqresponse" }, + { 0, "hf felica scsvcode" }, + { 0, "hf felica rqsyscode" }, + { 0, "hf felica auth1" }, + { 0, "hf felica auth2" }, + { 0, "hf felica rqspecver" }, + { 0, "hf felica resetmode" }, + { 0, "hf felica litesim" }, + { 0, "hf felica litedump" }, + { 1, "hf fido help" }, + { 1, "hf fido list" }, + { 0, "hf fido info" }, + { 0, "hf fido reg" }, + { 0, "hf fido auth" }, + { 0, "hf fido make" }, + { 0, "hf fido assert" }, + { 1, "hf fudan help" }, + { 0, "hf fudan reader" }, + { 0, "hf fudan dump" }, + { 0, "hf fudan rdbl" }, + { 1, "hf fudan view" }, + { 0, "hf fudan wrbl" }, + { 1, "hf gallagher help" }, + { 0, "hf gallagher reader" }, + { 0, "hf gallagher clone" }, + { 0, "hf gallagher delete" }, + { 1, "hf gallagher diversifykey" }, + { 1, "hf gallagher decode" }, + { 1, "hf ksx6924 help" }, + { 0, "hf ksx6924 select" }, + { 0, "hf ksx6924 info" }, + { 0, "hf ksx6924 balance" }, + { 0, "hf ksx6924 init" }, + { 0, "hf ksx6924 prec" }, + { 1, "hf jooki help" }, + { 0, "hf jooki clone" }, + { 1, "hf jooki decode" }, + { 1, "hf jooki encode" }, + { 0, "hf jooki sim" }, + { 1, "hf iclass help" }, + { 1, "hf iclass list" }, + { 0, "hf iclass dump" }, + { 1, "hf iclass info" }, + { 0, "hf iclass rdbl" }, + { 0, "hf iclass reader" }, + { 0, "hf iclass restore" }, + { 0, "hf iclass sniff" }, + { 1, "hf iclass view" }, + { 0, "hf iclass wrbl" }, + { 0, "hf iclass chk" }, + { 1, "hf iclass loclass" }, + { 1, "hf iclass lookup" }, + { 0, "hf iclass sim" }, + { 0, "hf iclass eload" }, + { 0, "hf iclass esave" }, + { 0, "hf iclass eview" }, + { 1, "hf iclass configcard" }, + { 1, "hf iclass calcnewkey" }, + { 1, "hf iclass encode" }, + { 1, "hf iclass encrypt" }, + { 1, "hf iclass decrypt" }, + { 1, "hf iclass managekeys" }, + { 1, "hf iclass permutekey" }, + { 0, "hf iclass sam" }, + { 1, "hf legic help" }, + { 0, "hf legic dump" }, + { 0, "hf legic info" }, + { 1, "hf legic list" }, + { 0, "hf legic rdbl" }, + { 0, "hf legic reader" }, + { 0, "hf legic restore" }, + { 0, "hf legic wipe" }, + { 0, "hf legic wrbl" }, + { 0, "hf legic sim" }, + { 0, "hf legic eload" }, + { 0, "hf legic esave" }, + { 0, "hf legic eview" }, + { 0, "hf legic einfo" }, + { 1, "hf legic crc" }, + { 1, "hf legic view" }, + { 1, "hf lto help" }, + { 0, "hf lto dump" }, + { 0, "hf lto info" }, + { 1, "hf lto list" }, + { 0, "hf lto rdbl" }, + { 0, "hf lto reader" }, + { 0, "hf lto restore" }, + { 0, "hf lto wrbl" }, + { 1, "hf mf help" }, + { 1, "hf mf list" }, + { 0, "hf mf darkside" }, + { 0, "hf mf nested" }, + { 1, "hf mf hardnested" }, + { 0, "hf mf staticnested" }, + { 0, "hf mf autopwn" }, + { 0, "hf mf nack" }, + { 0, "hf mf chk" }, + { 0, "hf mf fchk" }, + { 1, "hf mf decrypt" }, + { 0, "hf mf supercard" }, + { 0, "hf mf auth4" }, + { 1, "hf mf acl" }, + { 0, "hf mf dump" }, + { 1, "hf mf mad" }, + { 0, "hf mf personalize" }, + { 0, "hf mf rdbl" }, + { 0, "hf mf rdsc" }, + { 0, "hf mf restore" }, + { 0, "hf mf setmod" }, + { 1, "hf mf value" }, + { 1, "hf mf view" }, + { 0, "hf mf wipe" }, + { 0, "hf mf wrbl" }, + { 0, "hf mf sim" }, + { 0, "hf mf ecfill" }, + { 0, "hf mf eclr" }, + { 0, "hf mf egetblk" }, + { 0, "hf mf egetsc" }, + { 0, "hf mf ekeyprn" }, + { 0, "hf mf eload" }, + { 0, "hf mf esave" }, + { 0, "hf mf esetblk" }, + { 0, "hf mf eview" }, + { 0, "hf mf cgetblk" }, + { 0, "hf mf cgetsc" }, + { 0, "hf mf cload" }, + { 0, "hf mf csave" }, + { 0, "hf mf csetblk" }, + { 0, "hf mf csetuid" }, + { 0, "hf mf cview" }, + { 0, "hf mf cwipe" }, + { 0, "hf mf gen3uid" }, + { 0, "hf mf gen3blk" }, + { 0, "hf mf gen3freeze" }, + { 0, "hf mf ggetblk" }, + { 0, "hf mf gload" }, + { 0, "hf mf gsave" }, + { 0, "hf mf gsetblk" }, + { 0, "hf mf gview" }, + { 0, "hf mf gdmcfg" }, + { 0, "hf mf gdmsetcfg" }, + { 0, "hf mf gdmsetblk" }, + { 0, "hf mf ndefformat" }, + { 0, "hf mf ndefread" }, + { 0, "hf mf ndefwrite" }, + { 1, "hf mfp help" }, + { 1, "hf mfp list" }, + { 0, "hf mfp auth" }, + { 0, "hf mfp chk" }, + { 0, "hf mfp dump" }, + { 0, "hf mfp info" }, + { 0, "hf mfp mad" }, + { 0, "hf mfp rdbl" }, + { 0, "hf mfp rdsc" }, + { 0, "hf mfp wrbl" }, + { 0, "hf mfp commitp" }, + { 0, "hf mfp initp" }, + { 0, "hf mfp wrp" }, + { 0, "hf mfp ndefformat" }, + { 0, "hf mfp ndefread" }, + { 0, "hf mfp ndefwrite" }, + { 1, "hf mfu help" }, + { 1, "hf mfu keygen" }, + { 1, "hf mfu pwdgen" }, + { 0, "hf mfu otptear" }, + { 0, "hf mfu cauth" }, + { 0, "hf mfu dump" }, + { 0, "hf mfu info" }, + { 0, "hf mfu ndefread" }, + { 0, "hf mfu rdbl" }, + { 0, "hf mfu restore" }, + { 1, "hf mfu view" }, + { 0, "hf mfu wrbl" }, + { 0, "hf mfu tamper" }, + { 0, "hf mfu eload" }, + { 0, "hf mfu esave" }, + { 0, "hf mfu eview" }, + { 0, "hf mfu sim" }, + { 0, "hf mfu setpwd" }, + { 0, "hf mfu setuid" }, + { 1, "hf mfdes help" }, + { 0, "hf mfdes info" }, + { 0, "hf mfdes getuid" }, + { 0, "hf mfdes default" }, + { 0, "hf mfdes auth" }, + { 0, "hf mfdes chk" }, + { 0, "hf mfdes detect" }, + { 0, "hf mfdes freemem" }, + { 0, "hf mfdes setconfig" }, + { 0, "hf mfdes formatpicc" }, + { 1, "hf mfdes list" }, + { 0, "hf mfdes mad" }, + { 0, "hf mfdes lsapp" }, + { 0, "hf mfdes getaids" }, + { 0, "hf mfdes getappnames" }, + { 0, "hf mfdes bruteaid" }, + { 0, "hf mfdes createapp" }, + { 0, "hf mfdes deleteapp" }, + { 0, "hf mfdes selectapp" }, + { 0, "hf mfdes changekey" }, + { 0, "hf mfdes chkeysettings" }, + { 0, "hf mfdes getkeysettings" }, + { 0, "hf mfdes getkeyversions" }, + { 0, "hf mfdes getfileids" }, + { 0, "hf mfdes getfileisoids" }, + { 0, "hf mfdes lsfiles" }, + { 0, "hf mfdes dump" }, + { 0, "hf mfdes createfile" }, + { 0, "hf mfdes createvaluefile" }, + { 0, "hf mfdes createrecordfile" }, + { 0, "hf mfdes createmacfile" }, + { 0, "hf mfdes deletefile" }, + { 0, "hf mfdes getfilesettings" }, + { 0, "hf mfdes chfilesettings" }, + { 0, "hf mfdes read" }, + { 0, "hf mfdes write" }, + { 0, "hf mfdes value" }, + { 0, "hf mfdes clearrecfile" }, + { 1, "hf mfdes test" }, + { 1, "hf ntag424 help" }, + { 0, "hf ntag424 info" }, + { 0, "hf ntag424 sdm" }, + { 1, "hf ntag424 view" }, + { 1, "hf seos help" }, + { 0, "hf seos info" }, + { 1, "hf seos list" }, + { 1, "hf st25ta help" }, + { 0, "hf st25ta info" }, + { 1, "hf st25ta list" }, + { 1, "hf st25ta ndefread" }, + { 0, "hf st25ta protect" }, + { 0, "hf st25ta pwd" }, + { 0, "hf st25ta sim" }, + { 1, "hf tesla help" }, + { 0, "hf tesla info" }, + { 1, "hf tesla list" }, + { 1, "hf texkom help" }, + { 0, "hf texkom reader" }, + { 0, "hf texkom sim" }, + { 1, "hf thinfilm help" }, + { 0, "hf thinfilm info" }, + { 1, "hf thinfilm list" }, + { 0, "hf thinfilm sim" }, + { 1, "hf topaz help" }, + { 1, "hf topaz list" }, + { 0, "hf topaz dump" }, + { 0, "hf topaz info" }, + { 0, "hf topaz raw" }, + { 0, "hf topaz rdbl" }, + { 0, "hf topaz reader" }, + { 0, "hf topaz sim" }, + { 0, "hf topaz sniff" }, + { 1, "hf topaz view" }, + { 0, "hf topaz wrbl" }, + { 1, "hf vas help" }, + { 0, "hf vas reader" }, + { 1, "hf vas decrypt" }, + { 1, "hf waveshare help" }, + { 0, "hf waveshare loadbmp" }, + { 1, "hf xerox help" }, + { 0, "hf xerox info" }, + { 0, "hf xerox reader" }, + { 0, "hf xerox dump" }, + { 1, "hw help" }, + { 0, "hw break" }, + { 1, "hw connect" }, + { 0, "hw dbg" }, + { 0, "hw detectreader" }, + { 0, "hw fpgaoff" }, + { 0, "hw lcd" }, + { 0, "hw lcdreset" }, + { 0, "hw ping" }, + { 0, "hw readmem" }, + { 0, "hw reset" }, + { 0, "hw setlfdivisor" }, + { 0, "hw setmux" }, + { 0, "hw standalone" }, + { 0, "hw status" }, + { 0, "hw tearoff" }, + { 0, "hw tia" }, + { 1, "hw timeout" }, + { 0, "hw tune" }, + { 1, "hw version" }, + { 1, "lf help" }, + { 0, "lf config" }, + { 0, "lf cmdread" }, + { 0, "lf read" }, + { 1, "lf search" }, + { 0, "lf sim" }, + { 0, "lf simask" }, + { 0, "lf simfsk" }, + { 0, "lf simpsk" }, + { 0, "lf simbidir" }, + { 0, "lf sniff" }, + { 0, "lf tune" }, + { 1, "lf awid help" }, + { 1, "lf awid demod" }, + { 0, "lf awid reader" }, + { 0, "lf awid clone" }, + { 0, "lf awid sim" }, + { 0, "lf awid brute" }, + { 0, "lf awid watch" }, + { 1, "lf cotag help" }, + { 1, "lf cotag demod" }, + { 0, "lf cotag reader" }, + { 1, "lf destron help" }, + { 1, "lf destron demod" }, + { 0, "lf destron reader" }, + { 0, "lf destron clone" }, + { 0, "lf destron sim" }, + { 1, "lf em help" }, + { 1, "lf em 410x help" }, + { 1, "lf em 410x demod" }, + { 0, "lf em 410x reader" }, + { 0, "lf em 410x sim" }, + { 0, "lf em 410x brute" }, + { 0, "lf em 410x watch" }, + { 0, "lf em 410x spoof" }, + { 0, "lf em 410x clone" }, + { 1, "lf em 4x05 help" }, + { 0, "lf em 4x05 brute" }, + { 0, "lf em 4x05 chk" }, + { 1, "lf em 4x05 demod" }, + { 0, "lf em 4x05 dump" }, + { 0, "lf em 4x05 info" }, + { 0, "lf em 4x05 read" }, + { 1, "lf em 4x05 sniff" }, + { 0, "lf em 4x05 unlock" }, + { 0, "lf em 4x05 wipe" }, + { 0, "lf em 4x05 write" }, + { 1, "lf em 4x50 help" }, + { 0, "lf em 4x50 brute" }, + { 0, "lf em 4x50 chk" }, + { 0, "lf em 4x50 dump" }, + { 0, "lf em 4x50 info" }, + { 0, "lf em 4x50 login" }, + { 0, "lf em 4x50 rdbl" }, + { 0, "lf em 4x50 reader" }, + { 0, "lf em 4x50 restore" }, + { 0, "lf em 4x50 wrbl" }, + { 0, "lf em 4x50 wrpwd" }, + { 0, "lf em 4x50 wipe" }, + { 0, "lf em 4x50 eload" }, + { 0, "lf em 4x50 esave" }, + { 0, "lf em 4x50 eview" }, + { 0, "lf em 4x50 sim" }, + { 1, "lf em 4x70 help" }, + { 0, "lf em 4x70 brute" }, + { 0, "lf em 4x70 info" }, + { 0, "lf em 4x70 write" }, + { 0, "lf em 4x70 unlock" }, + { 0, "lf em 4x70 auth" }, + { 0, "lf em 4x70 writepin" }, + { 0, "lf em 4x70 writekey" }, + { 1, "lf fdxb help" }, + { 1, "lf fdxb demod" }, + { 0, "lf fdxb reader" }, + { 0, "lf fdxb clone" }, + { 0, "lf fdxb sim" }, + { 1, "lf gallagher help" }, + { 1, "lf gallagher demod" }, + { 0, "lf gallagher reader" }, + { 0, "lf gallagher clone" }, + { 0, "lf gallagher sim" }, + { 1, "lf gproxii help" }, + { 1, "lf gproxii demod" }, + { 0, "lf gproxii reader" }, + { 0, "lf gproxii clone" }, + { 0, "lf gproxii sim" }, + { 1, "lf hid help" }, + { 1, "lf hid demod" }, + { 0, "lf hid reader" }, + { 0, "lf hid clone" }, + { 0, "lf hid sim" }, + { 0, "lf hid brute" }, + { 0, "lf hid watch" }, + { 1, "lf hitag help" }, + { 1, "lf hitag list" }, + { 0, "lf hitag info" }, + { 0, "lf hitag dump" }, + { 0, "lf hitag read" }, + { 0, "lf hitag wrbl" }, + { 0, "lf hitag sniff" }, + { 0, "lf hitag cc" }, + { 0, "lf hitag ta" }, + { 0, "lf hitag eload" }, + { 0, "lf hitag sim" }, + { 1, "lf idteck help" }, + { 1, "lf idteck demod" }, + { 0, "lf idteck reader" }, + { 0, "lf idteck clone" }, + { 0, "lf idteck sim" }, + { 1, "lf indala help" }, + { 0, "lf indala brute" }, + { 1, "lf indala demod" }, + { 1, "lf indala altdemod" }, + { 0, "lf indala reader" }, + { 0, "lf indala clone" }, + { 0, "lf indala sim" }, + { 1, "lf io help" }, + { 1, "lf io demod" }, + { 0, "lf io reader" }, + { 0, "lf io clone" }, + { 0, "lf io sim" }, + { 0, "lf io watch" }, + { 1, "lf jablotron help" }, + { 1, "lf jablotron demod" }, + { 0, "lf jablotron reader" }, + { 0, "lf jablotron clone" }, + { 0, "lf jablotron sim" }, + { 1, "lf keri help" }, + { 1, "lf keri demod" }, + { 0, "lf keri reader" }, + { 0, "lf keri clone" }, + { 0, "lf keri sim" }, + { 1, "lf motorola help" }, + { 1, "lf motorola demod" }, + { 0, "lf motorola reader" }, + { 0, "lf motorola clone" }, + { 0, "lf motorola sim" }, + { 1, "lf nedap help" }, + { 1, "lf nedap demod" }, + { 0, "lf nedap reader" }, + { 0, "lf nedap clone" }, + { 0, "lf nedap sim" }, + { 1, "lf nexwatch help" }, + { 1, "lf nexwatch demod" }, + { 0, "lf nexwatch reader" }, + { 0, "lf nexwatch clone" }, + { 0, "lf nexwatch sim" }, + { 1, "lf noralsy help" }, + { 1, "lf noralsy demod" }, + { 0, "lf noralsy reader" }, + { 0, "lf noralsy clone" }, + { 0, "lf noralsy sim" }, + { 1, "lf pac help" }, + { 1, "lf pac demod" }, + { 0, "lf pac reader" }, + { 0, "lf pac clone" }, + { 0, "lf pac sim" }, + { 1, "lf paradox help" }, + { 1, "lf paradox demod" }, + { 0, "lf paradox reader" }, + { 0, "lf paradox clone" }, + { 0, "lf paradox sim" }, + { 1, "lf pcf7931 help" }, + { 0, "lf pcf7931 reader" }, + { 0, "lf pcf7931 write" }, + { 1, "lf pcf7931 config" }, + { 1, "lf presco help" }, + { 1, "lf presco demod" }, + { 0, "lf presco reader" }, + { 0, "lf presco clone" }, + { 0, "lf presco sim" }, + { 1, "lf pyramid help" }, + { 1, "lf pyramid demod" }, + { 0, "lf pyramid reader" }, + { 0, "lf pyramid clone" }, + { 0, "lf pyramid sim" }, + { 1, "lf securakey help" }, + { 1, "lf securakey demod" }, + { 0, "lf securakey reader" }, + { 0, "lf securakey clone" }, + { 0, "lf securakey sim" }, + { 1, "lf ti help" }, + { 1, "lf ti demod" }, + { 0, "lf ti reader" }, + { 0, "lf ti write" }, + { 1, "lf t55xx help" }, + { 0, "lf t55xx clonehelp" }, + { 1, "lf t55xx config" }, + { 0, "lf t55xx dangerraw" }, + { 1, "lf t55xx detect" }, + { 0, "lf t55xx deviceconfig" }, + { 0, "lf t55xx dump" }, + { 1, "lf t55xx info" }, + { 0, "lf t55xx p1detect" }, + { 0, "lf t55xx read" }, + { 0, "lf t55xx resetread" }, + { 0, "lf t55xx restore" }, + { 1, "lf t55xx trace" }, + { 0, "lf t55xx wakeup" }, + { 0, "lf t55xx write" }, + { 0, "lf t55xx bruteforce" }, + { 0, "lf t55xx chk" }, + { 0, "lf t55xx protect" }, + { 0, "lf t55xx recoverpw" }, + { 1, "lf t55xx sniff" }, + { 0, "lf t55xx special" }, + { 0, "lf t55xx wipe" }, + { 1, "lf viking help" }, + { 1, "lf viking demod" }, + { 0, "lf viking reader" }, + { 0, "lf viking clone" }, + { 0, "lf viking sim" }, + { 1, "lf visa2000 help" }, + { 1, "lf visa2000 demod" }, + { 0, "lf visa2000 reader" }, + { 0, "lf visa2000 clone" }, + { 0, "lf visa2000 sim" }, + { 1, "mem help" }, + { 0, "mem baudrate" }, + { 0, "mem dump" }, + { 0, "mem info" }, + { 0, "mem load" }, + { 0, "mem wipe" }, + { 1, "mem spiffs help" }, + { 0, "mem spiffs copy" }, + { 0, "mem spiffs check" }, + { 0, "mem spiffs dump" }, + { 0, "mem spiffs info" }, + { 0, "mem spiffs mount" }, + { 0, "mem spiffs remove" }, + { 0, "mem spiffs rename" }, + { 0, "mem spiffs test" }, + { 0, "mem spiffs tree" }, + { 0, "mem spiffs unmount" }, + { 0, "mem spiffs upload" }, + { 0, "mem spiffs view" }, + { 0, "mem spiffs wipe" }, + { 1, "nfc help" }, + { 1, "nfc decode" }, + { 0, "nfc type1 read" }, + { 1, "nfc type1 help" }, + { 0, "nfc type2 read" }, + { 1, "nfc type2 help" }, + { 0, "nfc type4a format" }, + { 0, "nfc type4a read" }, + { 0, "nfc type4a write" }, + { 0, "nfc type4a st25taread" }, + { 1, "nfc type4a help" }, + { 0, "nfc type4b read" }, + { 1, "nfc type4b help" }, + { 0, "nfc mf cformat" }, + { 0, "nfc mf cread" }, + { 0, "nfc mf cwrite" }, + { 0, "nfc mf pread" }, + { 1, "nfc mf help" }, + { 0, "nfc barcode read" }, + { 0, "nfc barcode sim" }, + { 1, "nfc barcode help" }, + { 1, "piv help" }, + { 0, "piv select" }, + { 0, "piv getdata" }, + { 0, "piv authsign" }, + { 0, "piv scan" }, + { 1, "piv list" }, + { 1, "smart help" }, + { 1, "smart list" }, + { 0, "smart info" }, + { 0, "smart reader" }, + { 0, "smart raw" }, + { 1, "smart upgrade" }, + { 0, "smart setclock" }, + { 0, "smart brute" }, + { 1, "script help" }, + { 1, "script list" }, + { 1, "script run" }, + { 1, "trace help" }, + { 1, "trace extract" }, + { 1, "trace list" }, + { 1, "trace load" }, + { 1, "trace save" }, + { 1, "usart help" }, + { 0, "usart btpin" }, + { 0, "usart btfactory" }, + { 0, "usart tx" }, + { 0, "usart rx" }, + { 0, "usart txrx" }, + { 0, "usart txhex" }, + { 0, "usart rxhex" }, + { 0, "usart config" }, + { 1, "wiegand help" }, + { 1, "wiegand list" }, + { 1, "wiegand encode" }, + { 1, "wiegand decode" }, {0, NULL} }; @@ -808,4 +809,4 @@ const static vocabulory_t vocabulory[] = { } #endif -#endif +#endif \ No newline at end of file diff --git a/doc/commands.json b/doc/commands.json index 4506b7450..d0fe5ad8b 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -1895,6 +1895,19 @@ ], "usage": "hf 15 sniff [-h]" }, + "hf 15 view": { + "command": "hf 15 view", + "description": "Print a ISO-15693 tag dump file (bin/eml/json)", + "notes": [ + "hf 15 view -f hf-iclass-AA162D30F8FF12F1-dump.bin" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-f, --file filename of dump (bin/eml/json)" + ], + "usage": "hf 15 view [-h] -f " + }, "hf 15 wrbl": { "command": "hf 15 wrbl", "description": "Write block on ISO-15693 tag", @@ -4375,13 +4388,11 @@ "options": [ "-h, --help This help", "--blk block number", - "-a input key type is key A (def)", - "-b input key type is key B", "-d, --data bytes to write, 16 hex bytes", "-k, --key key, 6 hex bytes", "--force override warnings" ], - "usage": "hf mf gdmsetblk [-hab] --blk [-d ] [-k ] [--force]" + "usage": "hf mf gdmsetblk [-h] --blk [-d ] [-k ] [--force]" }, "hf mf gdmsetcfg": { "command": "hf mf gdmsetcfg", @@ -11768,8 +11779,8 @@ } }, "metadata": { - "commands_extracted": 682, + "commands_extracted": 683, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-23T09:59:37" + "extracted_on": "2023-07-26T21:49:57" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 99ddf0efb..a26d55d8e 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -236,10 +236,12 @@ Check column "offline" for their availability. |`hf 15 reader `|N |`Act like an ISO-15693 reader` |`hf 15 restore `|N |`Restore from file to all memory pages of an ISO-15693 tag` |`hf 15 samples `|N |`Acquire samples as reader (enables carrier, sends inquiry)` +|`hf 15 view `|Y |`Display content from tag dump file` +|`hf 15 wrbl `|N |`Write a block` +|`hf 15 sim `|N |`Fake an ISO-15693 tag` |`hf 15 eload `|N |`Load image file into emulator to be used by 'sim' command` |`hf 15 esave `|N |`Save emulator memory into image file` |`hf 15 eview `|N |`View emulator memory` -|`hf 15 sim `|N |`Fake an ISO-15693 tag` |`hf 15 slixwritepwd `|N |`Writes a password on a SLIX ISO-15693 tag` |`hf 15 slixeasdisable `|N |`Disable EAS mode on SLIX ISO-15693 tag` |`hf 15 slixeasenable `|N |`Enable EAS mode on SLIX ISO-15693 tag` @@ -247,7 +249,6 @@ Check column "offline" for their availability. |`hf 15 slixprivacyenable`|N |`Enable privacy mode on SLIX ISO-15693 tag` |`hf 15 passprotectafi `|N |`Password protect AFI - Cannot be undone` |`hf 15 passprotecteas `|N |`Password protect EAS - Cannot be undone` -|`hf 15 wrbl `|N |`Write a block` |`hf 15 findafi `|N |`Brute force AFI of an ISO-15693 tag` |`hf 15 writeafi `|N |`Writes the AFI on an ISO-15693 tag` |`hf 15 writedsfid `|N |`Writes the DSFID on an ISO-15693 tag` @@ -404,13 +405,14 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`hf iclass help `|Y |`This help` +|`hf iclass list `|Y |`List iclass history` |`hf iclass dump `|N |`Dump Picopass / iCLASS tag to file` |`hf iclass info `|Y |`Tag information` -|`hf iclass list `|Y |`List iclass history` |`hf iclass rdbl `|N |`Read Picopass / iCLASS block` |`hf iclass reader `|N |`Act like a Picopass / iCLASS reader` |`hf iclass restore `|N |`Restore a dump file onto a Picopass / iCLASS tag` |`hf iclass sniff `|N |`Eavesdrop Picopass / iCLASS communication` +|`hf iclass view `|Y |`Display content from tag dump file` |`hf iclass wrbl `|N |`Write Picopass / iCLASS block` |`hf iclass chk `|N |`Check keys` |`hf iclass loclass `|Y |`Use loclass to perform bruteforce reader attack` @@ -426,7 +428,6 @@ Check column "offline" for their availability. |`hf iclass decrypt `|Y |`Decrypt given block data or tag dump file` |`hf iclass managekeys `|Y |`Manage keys to use with iclass commands` |`hf iclass permutekey `|Y |`Permute function from 'heart of darkness' paper` -|`hf iclass view `|Y |`Display content from tag dump file` |`hf iclass sam `|N |`SAM tests` @@ -878,14 +879,14 @@ Check column "offline" for their availability. |`lf em 4x05 help `|Y |`This help` |`lf em 4x05 brute `|N |`Bruteforce password` |`lf em 4x05 chk `|N |`Check passwords from dictionary` -|`lf em 4x05 demod `|Y |`demodulate a EM4x05/EM4x69 tag from the GraphBuffer` -|`lf em 4x05 dump `|N |`dump EM4x05/EM4x69 tag` -|`lf em 4x05 info `|N |`tag information EM4x05/EM4x69` -|`lf em 4x05 read `|N |`read word data from EM4x05/EM4x69` +|`lf em 4x05 demod `|Y |`Demodulate a EM4x05/EM4x69 tag from the GraphBuffer` +|`lf em 4x05 dump `|N |`Dump EM4x05/EM4x69 tag` +|`lf em 4x05 info `|N |`Tag information` +|`lf em 4x05 read `|N |`Read word data from EM4x05/EM4x69` |`lf em 4x05 sniff `|Y |`Attempt to recover em4x05 commands from sample buffer` -|`lf em 4x05 unlock `|N |`execute tear off against EM4x05/EM4x69` -|`lf em 4x05 wipe `|N |`wipe EM4x05/EM4x69 tag` -|`lf em 4x05 write `|N |`write word data to EM4x05/EM4x69` +|`lf em 4x05 unlock `|N |`Execute tear off against EM4x05/EM4x69` +|`lf em 4x05 wipe `|N |`Wipe EM4x05/EM4x69 tag` +|`lf em 4x05 write `|N |`Write word data to EM4x05/EM4x69` ### lf em 4x50 From e1e41335644bd71d8fc6f0e97e24eeae7ebfc8b9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 01:11:47 +0200 Subject: [PATCH 0306/1034] coverity string formatter --- client/src/cmdhf15.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index fa25e001c..75b972871 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -1133,7 +1133,7 @@ static int CmdHF15ELoad(const char *Cmd) { } free(data); PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", offset); + PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%zu") " bytes to emulator memory", offset); PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`hf 15 sim -h`")); PrintAndLogEx(INFO, "Done!"); From a57cfdde70236b60ff67d153935f0e3ca96ba53e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 01:12:08 +0200 Subject: [PATCH 0307/1034] size? --- client/src/fileutils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 06bd26b66..8391ebaf7 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -204,7 +204,7 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath char *pfn = fileName; // user preference save paths - int save_path_len = path_size(e_save_path); + size_t save_path_len = path_size(e_save_path); if (save_path_len) { snprintf(pfn, len, "%s%s", g_session.defaultPaths[e_save_path], PATHSEP); pfn += save_path_len + strlen(PATHSEP); From 7f5590d9420b1067b31735a3a8c3e71f82016613 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 01:15:31 +0200 Subject: [PATCH 0308/1034] checks --- client/src/fileutils.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 8391ebaf7..9ac75890f 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -205,8 +205,8 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath // user preference save paths size_t save_path_len = path_size(e_save_path); - if (save_path_len) { - snprintf(pfn, len, "%s%s", g_session.defaultPaths[e_save_path], PATHSEP); + if (save_path_len < FILE_PATH_SIZE ) { + snprintf(pfn, len, "%.*s%s", (int)save_path_len, g_session.defaultPaths[e_save_path], PATHSEP); pfn += save_path_len + strlen(PATHSEP); } From 96944aec698debaea708e103be0acf85cbafc8a5 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 12:37:42 +0200 Subject: [PATCH 0309/1034] reinstate less checks of data_available --- armsrc/legicrfsim.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/armsrc/legicrfsim.c b/armsrc/legicrfsim.c index f1bc40968..bfa01c301 100644 --- a/armsrc/legicrfsim.c +++ b/armsrc/legicrfsim.c @@ -476,14 +476,20 @@ void LegicRfSimulate(uint8_t tagtype, bool send_reply) { Dbprintf("Legic Prime, simulating uid... " _YELLOW_("%02X%02X%02X%02X"), legic_mem[0], legic_mem[1], legic_mem[2], legic_mem[3]); + uint16_t counter = 0; while (BUTTON_PRESS() == false) { WDT_HIT(); - if (data_available()) { - res = PM3_EOPABORTED; - goto OUT; + if (counter >= 1000) { + if (data_available()) { + res = PM3_EOPABORTED; + goto OUT; + } + counter = 0; } + counter++; + // wait for carrier, restart after timeout if (wait_for(RWD_PULSE, GetCountSspClk() + TAG_BIT_PERIOD) == false) { continue; From dc199b62caa4c3db446e610d21b433b6d68de328 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 12:38:40 +0200 Subject: [PATCH 0310/1034] text --- client/src/cmdhflegic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 7d9cd8e88..488f8dcb2 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -888,7 +888,7 @@ static int CmdLegicDump(const char *Cmd) { uint16_t dumplen = card.cardsize; legic_print_type(dumplen, 0); - PrintAndLogEx(SUCCESS, "Reading tag memory %d b...", dumplen); + PrintAndLogEx(SUCCESS, "Reading tag memory." NOLF); legic_packet_t *payload = calloc(1, sizeof(legic_packet_t)); payload->offset = 0; From 42700d3c51cab0ddff8972b13d90f0fa22fc5b71 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 12:40:04 +0200 Subject: [PATCH 0311/1034] skip sector 16 at all since it seems to always be locked down even if the keys authenticate. MFC Ev1 related and less errrors in autopwn when running against a MFC Ev1 in the dumping phase --- armsrc/mifarecmd.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 196adeaed..162b8e902 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2084,13 +2084,20 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { iso14a_set_timeout(fwt / (8 * 16)); for (uint8_t s = 0; s < sectorcnt; s++) { - uint64_t ui64Key = emlGetKey(s, keytype); - // MFC 1K EV1 sector 16,17 don't use key A. - if ((sectorcnt == 18) && (keytype == 0) && s > 15) { - continue; + if (sectorcnt == 18) { + // MFC 1K EV1, skip sector 16 since its lockdown + if (s == 16) { + continue; + } + // MFC 1K EV1 sector 17 don't use key A. + if (keytype == 0) { + continue; + } } + uint64_t ui64Key = emlGetKey(s, keytype); + // use fast select if (have_uid == false) { // need a full select cycle to get the uid first iso14a_card_select_t card_info; From 795745ea32461db6defa6f49eb6bf1af76125f75 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 14:20:37 +0200 Subject: [PATCH 0312/1034] text --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 11bcdd41f..45f33d665 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2552,7 +2552,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { if (has_staticnonce == NONCE_NORMAL) { prng_type = detect_classic_prng(); if (prng_type < 0) { - PrintAndLogEx(FAILED, "\nNo tag detected or other tag communication error (%u)", prng_type); + PrintAndLogEx(FAILED, "\nNo tag detected or other tag communication error (%i)", prng_type); free(e_sector); free(fptr); return PM3_ESOFT; From 7440e617e0c6e8c92dc264a3fb5977c9aba389ac Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 16:26:36 +0200 Subject: [PATCH 0313/1034] add stupid extra checks to see why this code overflows on pentoo... --- client/src/fileutils.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 9ac75890f..a1633844b 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -175,7 +175,7 @@ static char *filenamemcopy(const char *preferredName, const char *suffix) { } static size_t path_size(savePaths_t a) { - if (a == spItemCount) { + if (a >= spItemCount) { return 0; } return strlen(g_session.defaultPaths[a]); @@ -205,9 +205,10 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath // user preference save paths size_t save_path_len = path_size(e_save_path); - if (save_path_len < FILE_PATH_SIZE ) { - snprintf(pfn, len, "%.*s%s", (int)save_path_len, g_session.defaultPaths[e_save_path], PATHSEP); - pfn += save_path_len + strlen(PATHSEP); + if (save_path_len && save_path_len < (FILE_PATH_SIZE - strlen(PATHSEP))) { + snprintf(pfn, len, "%s%s", g_session.defaultPaths[e_save_path], PATHSEP); + pfn += save_path_len; + pfn += strlen(PATHSEP); } // remove file extension if exist in name From d9f2d5287e2929734cfa53a1a19a2bd7022c0708 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 16:46:52 +0200 Subject: [PATCH 0314/1034] maybe the return codes are wrong in legic sim now --- armsrc/legicrfsim.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/armsrc/legicrfsim.c b/armsrc/legicrfsim.c index bfa01c301..ac207ebaf 100644 --- a/armsrc/legicrfsim.c +++ b/armsrc/legicrfsim.c @@ -91,7 +91,7 @@ static bool wait_for(bool value, const uint32_t timeout) { // - A bit length >80.2us is a 1 // - A bit length <80.2us is a 0 // - A bit length >148.6us is a code violation -static int8_t rx_bit(void) { +static int32_t rx_bit(void) { // backup ts for threshold calculation uint32_t bit_start = last_frame_end; @@ -246,7 +246,7 @@ static int32_t rx_frame(uint8_t *len) { for (*len = 0; true; ++(*len)) { // receive next bit LED_B_ON(); - int8_t bit = rx_bit(); + int32_t bit = rx_bit(); LED_B_OFF(); // check for code violation and to short / long frame From 5faf625032352439652566bfb22660a9e7919070 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 18:02:53 +0200 Subject: [PATCH 0315/1034] adapt name to match code style --- armsrc/iso14443a.c | 12 +++++++----- armsrc/iso14443a.h | 2 +- client/src/cmdhf14a.c | 32 ++++++++++++++++---------------- client/src/cmdhf14a.h | 4 ++-- client/src/cmdhfvas.c | 6 +++--- include/mifare.h | 6 +++--- 6 files changed, 32 insertions(+), 30 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 325bebf16..cb5f89118 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -144,7 +144,7 @@ static hf14a_config hf14aconfig = { 0, 0, 0, 0, 0 } ; // Polling frames and configurations -static iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { +static iso14a_polling_parameters_t WUPA_POLLING_PARAMETERS = { .frames = { {{ 0x52 }, 1, 7, 0} }, .frame_count = 1, .extra_timeout = 0, @@ -2523,7 +2523,7 @@ static void iso14a_set_ATS_times(const uint8_t *ats) { } -static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters *polling_parameters) { +static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters_t *polling_parameters) { #define WUPA_RETRY_TIMEOUT 10 uint32_t save_iso14a_timeout = iso14a_get_timeout(); @@ -2537,7 +2537,7 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters * uint8_t current_frame = 0; do { - iso14a_polling_frame *frame_parameters = &polling_parameters->frames[current_frame]; + iso14a_polling_frame_t *frame_parameters = &polling_parameters->frames[current_frame]; if (frame_parameters->last_byte_bits == 8) { ReaderTransmit(frame_parameters->frame, frame_parameters->frame_length, NULL); @@ -2579,7 +2579,9 @@ int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32 // if anticollision is false, then the UID must be provided in uid_ptr[] // and num_cascades must be set (1: 4 Byte UID, 2: 7 Byte UID, 3: 10 Byte UID) // requests ATS unless no_rats is true -int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats, iso14a_polling_parameters *polling_parameters) { +int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, + bool anticollision, uint8_t num_cascades, bool no_rats, + iso14a_polling_parameters_t *polling_parameters) { uint8_t resp[MAX_FRAME_SIZE] = {0}; // theoretically. A usual RATS will be much smaller uint8_t resp_par[MAX_PARITY_SIZE] = {0}; @@ -3033,7 +3035,7 @@ void ReaderIso14443a(PacketCommandNG *c) { arg0 = iso14443a_select_cardEx( NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), - (param & ISO14A_USE_CUSTOM_POLLING) ? (iso14a_polling_parameters *)cmd : &WUPA_POLLING_PARAMETERS + (param & ISO14A_USE_CUSTOM_POLLING) ? (iso14a_polling_parameters_t *)cmd : &WUPA_POLLING_PARAMETERS ); // TODO: Improve by adding a cmd parser pointer and moving it by struct length to allow combining data with polling params FpgaDisableTracing(); diff --git a/armsrc/iso14443a.h b/armsrc/iso14443a.h index 817ee7df4..a6f68067b 100644 --- a/armsrc/iso14443a.h +++ b/armsrc/iso14443a.h @@ -151,7 +151,7 @@ uint16_t ReaderReceive(uint8_t *receivedAnswer, uint8_t *par); void iso14443a_setup(uint8_t fpga_minor_mode); int iso14_apdu(uint8_t *cmd, uint16_t cmd_len, bool send_chaining, void *data, uint8_t *res); int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats); -int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats, iso14a_polling_parameters *polling_parameters); +int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats, iso14a_polling_parameters_t *polling_parameters); int iso14443a_fast_select_card(uint8_t *uid_ptr, uint8_t num_cascades); void iso14a_set_trigger(bool enable); diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index daa9ba8fb..85f7c9588 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -55,27 +55,27 @@ static int CmdHelp(const char *Cmd); static int waitCmd(bool i_select, uint32_t timeout, bool verbose); -static const iso14a_polling_frame WUPA_FRAME = { +static const iso14a_polling_frame_t WUPA_FRAME = { { 0x52 }, 1, 7, 0, }; -static const iso14a_polling_frame MAGWUPA1_FRAME = { +static const iso14a_polling_frame_t MAGWUPA1_FRAME = { { 0x7A }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA2_FRAME = { +static const iso14a_polling_frame_t MAGWUPA2_FRAME = { { 0x7B }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA3_FRAME = { +static const iso14a_polling_frame_t MAGWUPA3_FRAME = { { 0x7C }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA4_FRAME = { +static const iso14a_polling_frame_t MAGWUPA4_FRAME = { { 0x7D }, 1, 7, 0 }; -static const iso14a_polling_frame ECP_FRAME = { +static const iso14a_polling_frame_t ECP_FRAME = { .frame = { 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, .frame_length = 15, .last_byte_bits = 8, @@ -462,25 +462,25 @@ int Hf14443_4aGetCardData(iso14a_card_select_t *card) { return 0; } -iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe) { +iso14a_polling_parameters_t iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe) { // Extra 100ms give enough time for Apple (ECP) devices to proccess field info and make a decision if (use_ecp && use_magsafe) { - iso14a_polling_parameters full_polling_parameters = { + iso14a_polling_parameters_t full_polling_parameters = { .frames = { WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, .frame_count = 6, .extra_timeout = 100 }; return full_polling_parameters; } else if (use_ecp) { - iso14a_polling_parameters ecp_polling_parameters = { + iso14a_polling_parameters_t ecp_polling_parameters = { .frames = { WUPA_FRAME, ECP_FRAME }, .frame_count = 2, .extra_timeout = 100 }; return ecp_polling_parameters; } else if (use_magsafe) { - iso14a_polling_parameters magsafe_polling_parameters = { + iso14a_polling_parameters_t magsafe_polling_parameters = { .frames = { WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, .frame_count = 5, .extra_timeout = 0 @@ -488,7 +488,7 @@ iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_m return magsafe_polling_parameters; } - iso14a_polling_parameters wupa_polling_parameters = { + iso14a_polling_parameters_t wupa_polling_parameters = { .frames = { WUPA_FRAME }, .frame_count = 1, .extra_timeout = 0, @@ -539,8 +539,8 @@ static int CmdHF14AReader(const char *Cmd) { bool use_ecp = arg_get_lit(ctx, 5); bool use_magsafe = arg_get_lit(ctx, 6); - iso14a_polling_parameters *polling_parameters = NULL; - iso14a_polling_parameters parameters = iso14a_get_polling_parameters(use_ecp, use_magsafe); + iso14a_polling_parameters_t *polling_parameters = NULL; + iso14a_polling_parameters_t parameters = iso14a_get_polling_parameters(use_ecp, use_magsafe); if (use_ecp || use_magsafe) { cm |= ISO14A_USE_CUSTOM_POLLING; polling_parameters = ¶meters; @@ -562,7 +562,7 @@ static int CmdHF14AReader(const char *Cmd) { clearCommandBuffer(); if (cm & ISO14A_USE_CUSTOM_POLLING) { - SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, (uint8_t *)polling_parameters, sizeof(iso14a_polling_parameters)); + SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, (uint8_t *)polling_parameters, sizeof(iso14a_polling_parameters_t)); } else { SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, NULL, 0); } @@ -967,7 +967,7 @@ int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leav return 0; } -int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card_select_t *card, iso14a_polling_parameters *polling_parameters) { +int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card_select_t *card, iso14a_polling_parameters_t *polling_parameters) { // global vars should be prefixed with g_ gs_frame_len = 0; gs_frames_num = 0; @@ -981,7 +981,7 @@ int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card // Anticollision + SELECT card PacketResponseNG resp; if (polling_parameters != NULL) { - SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT | ISO14A_USE_CUSTOM_POLLING, 0, 0, (uint8_t *)polling_parameters, sizeof(iso14a_polling_parameters)); + SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT | ISO14A_USE_CUSTOM_POLLING, 0, 0, (uint8_t *)polling_parameters, sizeof(iso14a_polling_parameters_t)); } else { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT, 0, 0, NULL, 0); } diff --git a/client/src/cmdhf14a.h b/client/src/cmdhf14a.h index 8d0c1d8bc..d7304501f 100644 --- a/client/src/cmdhf14a.h +++ b/client/src/cmdhf14a.h @@ -52,9 +52,9 @@ int Hf14443_4aGetCardData(iso14a_card_select_t *card); int ExchangeAPDU14a(uint8_t *datain, int datainlen, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen); int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, bool silentMode); -iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe); +iso14a_polling_parameters_t iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe); int SelectCard14443A_4(bool disconnect, bool verbose, iso14a_card_select_t *card); -int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card_select_t *card, iso14a_polling_parameters *polling_parameters); +int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card_select_t *card, iso14a_polling_parameters_t *polling_parameters); bool Get_apdu_in_framing(void); void Set_apdu_in_framing(bool v); diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index ac0365cdf..9d04b7477 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -41,14 +41,14 @@ #include "mbedtls/ecc_point_compression.h" #include "mbedtls/gcm.h" -static const iso14a_polling_frame WUPA_FRAME = { +static const iso14a_polling_frame_t WUPA_FRAME = { .frame = { 0x52 }, .frame_length = 1, .last_byte_bits = 7, .extra_delay = 0, }; -static const iso14a_polling_frame ECP_VAS_ONLY_FRAME = { +static const iso14a_polling_frame_t ECP_VAS_ONLY_FRAME = { .frame = {0x6a, 0x01, 0x00, 0x00, 0x02, 0xe4, 0xd2}, .frame_length = 7, .last_byte_bits = 8, @@ -349,7 +349,7 @@ static int DecryptVASCryptogram(uint8_t *pidHash, uint8_t *cryptogram, size_t cr static int VASReader(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t *cryptogram, size_t *cryptogramLen, bool verbose) { clearCommandBuffer(); - iso14a_polling_parameters polling_parameters = { + iso14a_polling_parameters_t polling_parameters = { .frames = { WUPA_FRAME, ECP_VAS_ONLY_FRAME }, .frame_count = 2, .extra_timeout = 250 diff --git a/include/mifare.h b/include/mifare.h index 863734cb5..b59b29c8d 100644 --- a/include/mifare.h +++ b/include/mifare.h @@ -86,15 +86,15 @@ typedef struct { uint8_t frame_length; uint8_t last_byte_bits; uint16_t extra_delay; -} iso14a_polling_frame; +} PACKED iso14a_polling_frame_t; // Defines polling sequence configuration // 6 would be enough for 4 magsafe, 1 wupa, 1 ecp, typedef struct { - iso14a_polling_frame frames[6]; + iso14a_polling_frame_t frames[6]; uint8_t frame_count; uint16_t extra_timeout; -} iso14a_polling_parameters; +} PACKED iso14a_polling_parameters_t; typedef struct { uint8_t *response; From 3b91c1a47f3088c335b01d455122fb82f8219072 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 18:50:19 +0200 Subject: [PATCH 0316/1034] text --- client/src/cmdhfmf.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 45f33d665..10e305912 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3113,8 +3113,9 @@ all_found: clearCommandBuffer(); SendCommandNG(CMD_HF_MIFARE_EML_MEMCLR, NULL, 0); - PrintAndLogEx(SUCCESS, "transferring keys to simulator memory (Cmd Error: 04 can occur)"); + PrintAndLogEx(INFO, "transferring keys to simulator memory" NOLF); + bool transfer_status = true; for (current_sector_i = 0; current_sector_i < sector_cnt; current_sector_i++) { mfEmlGetMem(block, current_sector_i, 1); if (e_sector[current_sector_i].foundKey[0]) @@ -3122,8 +3123,11 @@ all_found: if (e_sector[current_sector_i].foundKey[1]) num_to_bytes(e_sector[current_sector_i].Key[1], 6, block + 10); - mfEmlSetMem(block, mfFirstBlockOfSector(current_sector_i) + mfNumBlocksPerSector(current_sector_i) - 1, 1); + transfer_status |= mfEmlSetMem(block, mfFirstBlockOfSector(current_sector_i) + mfNumBlocksPerSector(current_sector_i) - 1, 1); } + PrintAndLogEx(NORMAL, "( %s )", (transfer_status) ? _GREEN_("ok") : _RED_("fail")); + + PrintAndLogEx(INFO, "dumping card content to emulator memory (Cmd Error: 04 can occur)"); // use ecfill trick FastDumpWithEcFill(sector_cnt); @@ -3137,8 +3141,8 @@ all_found: return PM3_EMALLOC; } - PrintAndLogEx(INFO, "downloading the card content from emulator memory"); - if (!GetFromDevice(BIG_BUF_EML, dump, bytes, 0, NULL, 0, NULL, 2500, false)) { + PrintAndLogEx(INFO, "downloading card content from emulator memory"); + if (GetFromDevice(BIG_BUF_EML, dump, bytes, 0, NULL, 0, NULL, 2500, false) == false) { PrintAndLogEx(ERR, "Fail, transfer from device time-out"); free(e_sector); free(dump); From 40533497d3c225f2b54df5a7890d397feca034ee Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 18:50:41 +0200 Subject: [PATCH 0317/1034] text --- client/src/fileutils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index a1633844b..9a56b4eba 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -808,7 +808,7 @@ int createMfcKeyDump(const char *preferredName, uint8_t sectorsCnt, sector_t *e_ fflush(f); fclose(f); PrintAndLogEx(SUCCESS, "Found keys have been dumped to " _YELLOW_("%s"), fileName); - PrintAndLogEx(INFO, "FYI! --> " _YELLOW_("0xFFFFFFFFFFFF") " <-- has been inserted for unknown keys where " _YELLOW_("res") " is " _RED_("0")); + PrintAndLogEx(INFO, "--[ " _YELLOW_("FFFFFFFFFFFF") " ]-- has been inserted for unknown keys where " _YELLOW_("res") " is " _RED_("0")); free(fileName); return PM3_SUCCESS; } From 6ba002725f90e5e6a3dadadf07175e018932682f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 18:55:41 +0200 Subject: [PATCH 0318/1034] rmeoved some fct devices side regarding eml get/ set --- armsrc/BigBuf.c | 13 +++++++--- armsrc/BigBuf.h | 1 + armsrc/Standalone/hf_colin.c | 8 +++--- armsrc/Standalone/hf_mattyrun.c | 6 ++--- armsrc/iso15693.c | 20 +++++---------- armsrc/iso15693.h | 2 -- armsrc/mifarecmd.c | 13 ++-------- armsrc/mifarecmd.h | 1 - armsrc/mifaresim.c | 2 +- armsrc/mifareutil.c | 43 ++++++++++++++------------------- 10 files changed, 45 insertions(+), 64 deletions(-) diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index 6cd3a29f7..29f270b80 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -308,15 +308,22 @@ bool RAMFUNC LogTraceBits(const uint8_t *btBytes, uint16_t bitLen, uint32_t time // Emulator memory uint8_t emlSet(uint8_t *data, uint32_t offset, uint32_t length) { uint8_t *mem = BigBuf_get_EM_addr(); - if (offset + length < CARD_MEMORY_SIZE) { + if (offset + length <= CARD_MEMORY_SIZE) { memcpy(mem + offset, data, length); return 0; } Dbprintf("Error, trying to set memory outside of bounds! " _RED_("%d") " > %d", (offset + length), CARD_MEMORY_SIZE); return 1; } - - +uint8_t emlGet(uint8_t *out, uint32_t offset, uint32_t length) { + uint8_t *mem = BigBuf_get_EM_addr(); + if (offset + length <= CARD_MEMORY_SIZE) { + memcpy(out, mem + offset, length); + return 0; + } + Dbprintf("Error, trying to read memory outside of bounds! " _RED_("%d") " > %d", (offset + length), CARD_MEMORY_SIZE); + return 1; +} // get the address of the ToSend buffer. Allocate part of Bigbuf for it, if not yet done tosend_t *get_tosend(void) { diff --git a/armsrc/BigBuf.h b/armsrc/BigBuf.h index b1003a4c1..81c2fbdfc 100644 --- a/armsrc/BigBuf.h +++ b/armsrc/BigBuf.h @@ -56,6 +56,7 @@ bool RAMFUNC LogTraceBits(const uint8_t *btBytes, uint16_t bitLen, uint32_t time bool LogTrace_ISO15693(const uint8_t *bytes, uint16_t len, uint32_t ts_start, uint32_t ts_end, uint8_t *parity, bool reader2tag); uint8_t emlSet(uint8_t *data, uint32_t offset, uint32_t length); +uint8_t emlGet(uint8_t *out, uint32_t offset, uint32_t length); typedef struct { int max; diff --git a/armsrc/Standalone/hf_colin.c b/armsrc/Standalone/hf_colin.c index 91fa971eb..044d3aba3 100644 --- a/armsrc/Standalone/hf_colin.c +++ b/armsrc/Standalone/hf_colin.c @@ -293,7 +293,7 @@ static void ReadLastTagFromFlash(void) { rdv40_spiffs_read_as_filetype((char *)HFCOLIN_LASTTAG_SYMLINK, (uint8_t *)mem, len, RDV40_SPIFFS_SAFETY_SAFE); // copy 64blocks (16bytes) starting w block0, to emulator mem. - emlSetMem(mem, 0, 64); + emlSetMem_xt(mem, 0, 64, 16); DbprintfEx(FLAG_NEWLINE, "[OK] Last tag recovered from FLASHMEM set to emulator"); cjSetCursLeft(); @@ -650,7 +650,7 @@ failtag: for (uint8_t t = 0; t < 2; t++) { memcpy(mblock + t * 10, foundKey[t][sectorNo], 6); } - emlSetMem(mblock, FirstBlockOfSector(sectorNo) + NumBlocksPerSector(sectorNo) - 1, 1); + emlSetMem_xt(mblock, FirstBlockOfSector(sectorNo) + NumBlocksPerSector(sectorNo) - 1, 1, 16); } cjSetCursLeft(); @@ -827,12 +827,12 @@ int e_MifareECardLoad(uint32_t numofsectors, uint8_t keytype) { }; if (isOK) { if (blockNo < NumBlocksPerSector(s) - 1) { - emlSetMem(dataoutbuf, FirstBlockOfSector(s) + blockNo, 1); + emlSetMem_xt(dataoutbuf, FirstBlockOfSector(s) + blockNo, 1, 16); } else { // sector trailer, keep the keys, set only the AC emlGetMem(dataoutbuf2, FirstBlockOfSector(s) + blockNo, 1); memcpy(&dataoutbuf2[6], &dataoutbuf[6], 4); - emlSetMem(dataoutbuf2, FirstBlockOfSector(s) + blockNo, 1); + emlSetMem_xt(dataoutbuf2, FirstBlockOfSector(s) + blockNo, 1, 16); } } } diff --git a/armsrc/Standalone/hf_mattyrun.c b/armsrc/Standalone/hf_mattyrun.c index 9b41f18c4..ed6f93a3b 100644 --- a/armsrc/Standalone/hf_mattyrun.c +++ b/armsrc/Standalone/hf_mattyrun.c @@ -273,12 +273,12 @@ static int saMifareECardLoad(uint32_t numofsectors, uint8_t keytype) { }; if (blockNo < NumBlocksPerSector(s) - 1) { - emlSetMem(dataoutbuf, FirstBlockOfSector(s) + blockNo, 1); + emlSetMem_xt(dataoutbuf, FirstBlockOfSector(s) + blockNo, 1, 16); } else { // sector trailer, keep the keys, set only the AC emlGetMem(dataoutbuf2, FirstBlockOfSector(s) + blockNo, 1); memcpy(&dataoutbuf2[6], &dataoutbuf[6], 4); - emlSetMem(dataoutbuf2, FirstBlockOfSector(s) + blockNo, 1); + emlSetMem_xt(dataoutbuf2, FirstBlockOfSector(s) + blockNo, 1, 16); } } } @@ -505,7 +505,7 @@ void RunMod(void) { memcpy(mblock + t * 10, foundKey[t][sectorNo], 6); } } - emlSetMem(mblock, FirstBlockOfSector(sectorNo) + NumBlocksPerSector(sectorNo) - 1, 1); + emlSetMem_xt(mblock, FirstBlockOfSector(sectorNo) + NumBlocksPerSector(sectorNo) - 1, 1, 16); } } diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index a52b953ff..e0c3e4436 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -2119,7 +2119,6 @@ void Iso15693InitTag(void) { StartCountSspClk(); } - void EmlClearIso15693(void) { // Resetting the bitstream also frees the BigBuf memory, so we do this here to prevent // an inconvenient reset in the future by Iso15693InitTag @@ -2128,16 +2127,6 @@ void EmlClearIso15693(void) { reply_ng(CMD_HF_ISO15693_EML_CLEAR, PM3_SUCCESS, NULL, 0); } -void EmlSetMemIso15693(uint8_t count, uint8_t *data, uint32_t offset) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - memcpy(emCARD + offset, data, count); -} - -void EmlGetMemIso15693(uint8_t count, uint8_t *output, uint32_t offset) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - memcpy(output, emCARD + offset, count); -} - // Simulate an ISO15693 TAG, perform anti-collision and then print any reader commands // all demodulation performed in arm rather than host. - greg void SimTagIso15693(uint8_t *uid, uint8_t block_size) { @@ -2296,8 +2285,11 @@ void SimTagIso15693(uint8_t *uid, uint8_t block_size) { } // Block data if (block_size * (block_idx + j + 1) <= CARD_MEMORY_SIZE) { - EmlGetMemIso15693(block_size, resp_readblock + (work_offset + security_offset), - block_size * (block_idx + j)); + emlGet( + resp_readblock + (work_offset + security_offset), + block_size * (block_idx + j), + block_size + ); } else { memset(resp_readblock + work_offset + security_offset, 0, block_size); } @@ -2334,7 +2326,7 @@ void SimTagIso15693(uint8_t *uid, uint8_t block_size) { uint8_t *data = cmd + 3 + address_offset + multi_offset; // write data - EmlSetMemIso15693(block_count * block_size, data, block_idx * block_size); + emlSet(data, (block_idx * block_size), (block_count * block_size)); // Build WRITE_(MULTI_)BLOCK response int response_length = 3; diff --git a/armsrc/iso15693.h b/armsrc/iso15693.h index b087edd2e..4644adea9 100644 --- a/armsrc/iso15693.h +++ b/armsrc/iso15693.h @@ -47,8 +47,6 @@ int GetIso15693AnswerFromTag(uint8_t *response, uint16_t max_len, uint16_t timeo void AcquireRawAdcSamplesIso15693(void); void ReaderIso15693(iso15_card_select_t *p_card); // ISO15693 reader void EmlClearIso15693(void); -void EmlSetMemIso15693(uint8_t count, uint8_t *data, uint32_t offset); -void EmlGetMemIso15693(uint8_t count, uint8_t *output, uint32_t offset); void SimTagIso15693(uint8_t *uid, uint8_t block_size); // simulate an ISO15693 tag void BruteforceIso15693Afi(uint32_t speed); // find an AFI of a tag void DirectTag15693Command(uint32_t datalen, uint32_t speed, uint32_t recv, uint8_t *data); // send arbitrary commands from CLI diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 162b8e902..f7f05a3eb 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2019,15 +2019,6 @@ void MifareEMemClr(void) { emlClearMem(); } -void MifareEMemSet(uint8_t blockno, uint8_t blockcnt, uint8_t blockwidth, uint8_t *datain) { - FpgaDownloadAndGo(FPGA_BITSTREAM_HF); - - if (blockwidth == 0) - blockwidth = 16; // backwards compat... default bytewidth - - emlSetMem_xt(datain, blockno, blockcnt, blockwidth); // data, block num, blocks count, block byte width -} - void MifareEMemGet(uint8_t blockno, uint8_t blockcnt) { FpgaDownloadAndGo(FPGA_BITSTREAM_HF); @@ -2167,9 +2158,9 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { uint8_t st[16] = {0x00}; emlGetMem(st, tb, 1); memcpy(st + 6, data + 6, 4); - emlSetMem(st, tb, 1); + emlSetMem_xt(st, tb, 1, 16); } else { - emlSetMem(data, tb, 1); + emlSetMem_xt(data, tb, 1, 16); } break; } diff --git a/armsrc/mifarecmd.h b/armsrc/mifarecmd.h index b7f7d6379..52bc37f35 100644 --- a/armsrc/mifarecmd.h +++ b/armsrc/mifarecmd.h @@ -40,7 +40,6 @@ void MifareChkKeys_fast(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *da void MifareChkKeys_file(uint8_t *fn); void MifareEMemClr(void); -void MifareEMemSet(uint8_t blockno, uint8_t blockcnt, uint8_t blockwidth, uint8_t *datain); void MifareEMemGet(uint8_t blockno, uint8_t blockcnt); int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype); int MifareECardLoadExt(uint8_t sectorcnt, uint8_t keytype); diff --git a/armsrc/mifaresim.c b/armsrc/mifaresim.c index 5aa1a054a..a44220209 100644 --- a/armsrc/mifaresim.c +++ b/armsrc/mifaresim.c @@ -1272,7 +1272,7 @@ void Mifare1ksim(uint16_t flags, uint8_t exitAfterNReads, uint8_t *datain, uint1 memcpy(receivedCmd_dec, response, 16); // don't change anything } } - emlSetMem(receivedCmd_dec, cardWRBL, 1); + emlSetMem_xt(receivedCmd_dec, cardWRBL, 1, 16); EmSend4bit(mf_crypto1_encrypt4bit(pcs, CARD_ACK)); // always ACK? FpgaDisableTracing(); diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c index c2d6f8246..7b3d27ee1 100644 --- a/armsrc/mifareutil.c +++ b/armsrc/mifareutil.c @@ -617,16 +617,9 @@ uint8_t FirstBlockOfSector(uint8_t sectorNo) { return sectorNo * 4; else return 32 * 4 + (sectorNo - 32) * 16; - } // work with emulator memory -void emlSetMem(uint8_t *data, int blockNum, int blocksCount) { - uint32_t offset = blockNum * 16; - uint32_t len = blocksCount * 16; - emlSet(data, offset, len); -} - void emlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int block_width) { uint32_t offset = blockNum * block_width; uint32_t len = blocksCount * block_width; @@ -634,18 +627,18 @@ void emlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int block_width) } void emlGetMem(uint8_t *data, int blockNum, int blocksCount) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - memcpy(data, emCARD + blockNum * 16, blocksCount * 16); + uint8_t *mem = BigBuf_get_EM_addr(); + memcpy(data, mem + blockNum * 16, blocksCount * 16); } void emlGetMemBt(uint8_t *data, int offset, int byteCount) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - memcpy(data, emCARD + offset, byteCount); + uint8_t *mem = BigBuf_get_EM_addr(); + memcpy(data, mem + offset, byteCount); } int emlCheckValBl(int blockNum) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - uint8_t *data = emCARD + blockNum * 16; + uint8_t *mem = BigBuf_get_EM_addr(); + uint8_t *data = mem + blockNum * 16; if ((data[0] != (data[4] ^ 0xff)) || (data[0] != data[8]) || (data[1] != (data[5] ^ 0xff)) || (data[1] != data[9]) || @@ -659,8 +652,8 @@ int emlCheckValBl(int blockNum) { } int emlGetValBl(uint32_t *blReg, uint8_t *blBlock, int blockNum) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - uint8_t *data = emCARD + blockNum * 16; + uint8_t *mem = BigBuf_get_EM_addr(); + uint8_t *data = mem + blockNum * 16; if (emlCheckValBl(blockNum)) return 1; @@ -671,8 +664,8 @@ int emlGetValBl(uint32_t *blReg, uint8_t *blBlock, int blockNum) { } int emlSetValBl(uint32_t blReg, uint8_t blBlock, int blockNum) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - uint8_t *data = emCARD + blockNum * 16; + uint8_t *mem = BigBuf_get_EM_addr(); + uint8_t *data = mem + blockNum * 16; memcpy(data + 0, &blReg, 4); memcpy(data + 8, &blReg, 4); @@ -683,29 +676,29 @@ int emlSetValBl(uint32_t blReg, uint8_t blBlock, int blockNum) { data[13] = blBlock ^ 0xff; data[14] = blBlock; data[15] = blBlock ^ 0xff; - return 0; } uint64_t emlGetKey(int sectorNum, int keyType) { uint8_t key[6] = {0x00}; - uint8_t *em = BigBuf_get_EM_addr(); - memcpy(key, em + 16 * (FirstBlockOfSector(sectorNum) + NumBlocksPerSector(sectorNum) - 1) + keyType * 10, 6); + uint8_t *mem = BigBuf_get_EM_addr(); + memcpy(key, mem + 16 * (FirstBlockOfSector(sectorNum) + NumBlocksPerSector(sectorNum) - 1) + keyType * 10, 6); return bytes_to_num(key, 6); } void emlClearMem(void) { const uint8_t trailer[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x80, 0x69, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; const uint8_t uid[] = {0xe6, 0x84, 0x87, 0xf3, 0x16, 0x88, 0x04, 0x00, 0x46, 0x8e, 0x45, 0x55, 0x4d, 0x70, 0x41, 0x04}; - uint8_t *emCARD = BigBuf_get_EM_addr(); - memset(emCARD, 0, CARD_MEMORY_SIZE); + uint8_t *mem = BigBuf_get_EM_addr(); + memset(mem, 0, CARD_MEMORY_SIZE); // fill sectors trailer data - for (uint16_t b = 3; b < MIFARE_4K_MAXBLOCK; ((b < MIFARE_2K_MAXBLOCK - 4) ? (b += 4) : (b += 16))) - emlSetMem((uint8_t *)trailer, b, 1); + for (uint16_t b = 3; b < MIFARE_4K_MAXBLOCK; ((b < MIFARE_2K_MAXBLOCK - 4) ? (b += 4) : (b += 16))) { + emlSetMem_xt((uint8_t *)trailer, b, 1, 16); + } // uid - emlSetMem((uint8_t *)uid, 0, 1); + emlSetMem_xt((uint8_t *)uid, 0, 1, 16); return; } From 8ef1cdbd7508e50b25873f301a1e0fb1517d1f4b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 18:56:11 +0200 Subject: [PATCH 0319/1034] inceased waiting time.. --- armsrc/mifarecmd.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index f7f05a3eb..3f0e6f187 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -97,7 +97,7 @@ int16_t mifare_cmd_readblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t read_c }; // frame waiting time (FWT) in 1/fc - uint32_t fwt = 256 * 16 * (1 << 6); + uint32_t fwt = 256 * 16 * (1 << 7); iso14a_set_timeout(fwt / (8 * 16)); for (uint8_t i = 0; i < count; i++) { @@ -1810,8 +1810,8 @@ OUT: emlSetMem_xt(block, blockno, 1, sizeof(block)); } - MifareECardLoad(sectorcnt, 0); - MifareECardLoad(sectorcnt, 1); + MifareECardLoad(sectorcnt, MF_KEY_A); + MifareECardLoad(sectorcnt, MF_KEY_B); } } else { // partial/none keys found From 64ea48e7d071b7d1c9dca1fb18166b60f0b3b917 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 18:57:11 +0200 Subject: [PATCH 0320/1034] remove fct in header file.\nreverted this decline --- armsrc/mifareutil.c | 4 ++-- armsrc/mifareutil.h | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c index 7b3d27ee1..415c01183 100644 --- a/armsrc/mifareutil.c +++ b/armsrc/mifareutil.c @@ -209,8 +209,8 @@ int mifare_classic_authex_cmd(struct Crypto1State *pcs, uint32_t uid, uint8_t bl uint32_t save_timeout = iso14a_get_timeout(); // set timeout for authentication response - if (save_timeout > 103) - iso14a_set_timeout(103); + if (save_timeout > 106) + iso14a_set_timeout(106); // Receive 4 byte tag answer len = ReaderReceive(receivedAnswer, receivedAnswerPar); diff --git a/armsrc/mifareutil.h b/armsrc/mifareutil.h index 9a179a553..1e45d50be 100644 --- a/armsrc/mifareutil.h +++ b/armsrc/mifareutil.h @@ -113,8 +113,7 @@ uint8_t SectorTrailer(uint8_t blockNo); // emulator functions void emlClearMem(void); -void emlSetMem(uint8_t *data, int blockNum, int blocksCount); -void emlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int blockBtWidth); +void emlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int block_width); void emlGetMem(uint8_t *data, int blockNum, int blocksCount); void emlGetMemBt(uint8_t *data, int offset, int byteCount); uint64_t emlGetKey(int sectorNum, int keyType); From 8bfb91562482be7b061a58f796b9be2cb84a74e9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 19:01:46 +0200 Subject: [PATCH 0321/1034] adapt the leftovers --- armsrc/appmain.c | 12 ++++++++++-- client/src/mifare/mifarehost.c | 8 ++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index ced039702..79b21c5bf 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -61,6 +61,7 @@ #include "commonutil.h" #include "crc16.h" #include "protocols.h" +#include "mifareutil.h" #ifdef WITH_LCD @@ -1287,7 +1288,7 @@ static void PacketReceived(PacketCommandNG *packet) { uint8_t data[]; } PACKED; struct p *payload = (struct p *) packet->data.asBytes; - EmlSetMemIso15693(payload->count, payload->data, payload->offset); + emlSet(payload->data, payload->offset, payload->count); break; } case CMD_HF_ISO15693_SIMULATE: { @@ -1693,7 +1694,14 @@ static void PacketReceived(PacketCommandNG *packet) { uint8_t data[]; } PACKED; struct p *payload = (struct p *) packet->data.asBytes; - MifareEMemSet(payload->blockno, payload->blockcnt, payload->blockwidth, payload->data); + + FpgaDownloadAndGo(FPGA_BITSTREAM_HF); + + // backwards compat... default bytewidth + if (payload->blockwidth == 0) + payload->blockwidth = 16; + + emlSetMem_xt(payload->data, payload->blockno, payload->blockcnt, payload->blockwidth); break; } case CMD_HF_MIFARE_EML_MEMGET: { diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 1576b03e5..a05456bcd 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -947,7 +947,7 @@ int mfEmlGetMem(uint8_t *data, int blockNum, int blocksCount) { } int mfEmlSetMem(uint8_t *data, int blockNum, int blocksCount) { - return mfEmlSetMem_xt(data, blockNum, blocksCount, 16); + return mfEmlSetMem_xt(data, blockNum, blocksCount, MFBLOCK_SIZE); } int mfEmlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int blockBtWidth) { @@ -961,7 +961,7 @@ int mfEmlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int blockBtWidt size_t size = ((size_t) blocksCount) * blockBtWidth; if (size > (PM3_CMD_DATA_SIZE - sizeof(struct p))) { - return PM3_ESOFT; + return PM3_EINVARG; } size_t paylen = sizeof(struct p) + size; @@ -1271,7 +1271,7 @@ int detect_classic_prng(void) { clearCommandBuffer(); SendCommandMIX(CMD_HF_ISO14443A_READER, flags, sizeof(cmd), 0, cmd, sizeof(cmd)); - if (!WaitForResponseTimeout(CMD_ACK, &resp, 2000)) { + if (WaitForResponseTimeout(CMD_ACK, &resp, 2000) == false) { PrintAndLogEx(WARNING, "PRNG UID: Reply timeout."); return PM3_ETIMEOUT; } @@ -1281,7 +1281,7 @@ int detect_classic_prng(void) { PrintAndLogEx(ERR, "error: selecting tag failed, can't detect prng\n"); return PM3_ERFTRANS; } - if (!WaitForResponseTimeout(CMD_ACK, &respA, 2500)) { + if (WaitForResponseTimeout(CMD_ACK, &respA, 2500) == false) { PrintAndLogEx(WARNING, "PRNG data: Reply timeout."); return PM3_ETIMEOUT; } From 39eecc917e09cd03c10c3063af19067dd0f6f42e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 19:38:51 +0200 Subject: [PATCH 0322/1034] improved the messages reported when loading json files fails. Usually because we have reserved the wrong size memory --- client/src/cmdhfmf.c | 12 ++++++------ client/src/fileutils.c | 19 ++++++++++++------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 10e305912..92001d760 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4318,13 +4318,17 @@ int CmdHF14AMfELoad(const char *Cmd) { return PM3_EINVARG; } - PrintAndLogEx(INFO, "%d blocks ( %u bytes ) to upload", block_cnt, block_cnt * block_width); + PrintAndLogEx(INFO, "Upload " _YELLOW_("%u") " blocks " _YELLOW_("%u") " bytes", block_cnt, block_cnt * block_width); if (numblks > 0) { block_cnt = MIN(numblks, block_cnt); - PrintAndLogEx(INFO, "overriding number of blocks, will use %d blocks ( %u bytes )", block_cnt, block_cnt * block_width); + PrintAndLogEx(INFO, "overriding number of blocks, will use " _YELLOW_("%u") " blocks " _YELLOW_("%u") " bytes", block_cnt, block_cnt * block_width); } + // ICEMAN: bug. if device has been using ICLASS commands, + // the device needs to load the HF fpga image. It takes 1.5 second. + set_fpga_mode(2); + // use RDV4 spiffs if (use_spiffs && IfPm3Flash() == false) { PrintAndLogEx(WARNING, "Device not compiled to support spiffs"); @@ -4355,10 +4359,6 @@ int CmdHF14AMfELoad(const char *Cmd) { return PM3_SUCCESS; } - // ICEMAN: bug. if device has been using ICLASS commands, - // the device needs to load the HF fpga image. It takes 1.5 second. - set_fpga_mode(2); - uint8_t *data = NULL; size_t bytes_read = 0; int res = pm3_load_dump(filename, (void **)&data, &bytes_read, (block_width * block_cnt + hdr_len)); diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 9a56b4eba..1aa27ca7f 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -2085,6 +2085,9 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl } case EML: { res = loadFileEML_safe(fn, pdump, dumplen); + if (res == PM3_ESOFT) { + PrintAndLogEx(WARNING, "file IO failed"); + } break; } case JSON: { @@ -2094,8 +2097,15 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl return PM3_EMALLOC; } res = loadFileJSON(fn, *pdump, maxdumplen, dumplen, NULL); - if (res != PM3_SUCCESS) { - free(*pdump); + if (res == PM3_SUCCESS) + return res; + + free(*pdump); + + if (res == PM3_ESOFT) { + PrintAndLogEx(WARNING, "JSON objects failed to load"); + } else if (res == PM3_EMALLOC) { + PrintAndLogEx(WARNING, "Wrong size of allocated memory. Check your parameters"); } break; } @@ -2109,11 +2119,6 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl } } - if (res != PM3_SUCCESS) { - PrintAndLogEx(WARNING, "file not found or locked `" _YELLOW_("%s") "`", fn); - return PM3_EFILE; - } - return res; } From a44e2fbc36e1d6f7f96058c34dbc149e1e6d1a05 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 19:47:11 +0200 Subject: [PATCH 0323/1034] text --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 92001d760..0eac61eca 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3113,7 +3113,7 @@ all_found: clearCommandBuffer(); SendCommandNG(CMD_HF_MIFARE_EML_MEMCLR, NULL, 0); - PrintAndLogEx(INFO, "transferring keys to simulator memory" NOLF); + PrintAndLogEx(INFO, "transferring keys to simulator memory " NOLF); bool transfer_status = true; for (current_sector_i = 0; current_sector_i < sector_cnt; current_sector_i++) { From 19251645e15e5701fd0af09d7bcf93dee20a9c20 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 20:12:42 +0200 Subject: [PATCH 0324/1034] shorten LEN variable to match the available space in string --- client/src/fileutils.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 1aa27ca7f..7383c396f 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -194,7 +194,7 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath // 16: room for filenum to ensure new filename // save_path_len + strlen(PATHSEP): the user preference save paths //const size_t len = p_namelen + strlen(suffix) + 1 + 16 + save_path_len + strlen(PATHSEP); - const size_t len = FILE_PATH_SIZE; + size_t len = FILE_PATH_SIZE; char *fileName = (char *) calloc(len, sizeof(uint8_t)); if (fileName == NULL) { @@ -207,8 +207,8 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath size_t save_path_len = path_size(e_save_path); if (save_path_len && save_path_len < (FILE_PATH_SIZE - strlen(PATHSEP))) { snprintf(pfn, len, "%s%s", g_session.defaultPaths[e_save_path], PATHSEP); - pfn += save_path_len; - pfn += strlen(PATHSEP); + pfn += save_path_len + strlen(PATHSEP); + len -= save_path_len + strlen(PATHSEP); } // remove file extension if exist in name @@ -217,11 +217,17 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath p_namelen -= strlen(suffix); } + len -= strlen(suffix) + 1; + len -= p_namelen; + // modify filename snprintf(pfn, len, "%.*s%s", (int)p_namelen, preferredName, suffix); - // check complete path/filename if exists + // "-001" + len -= 4; + int num = 1; + // check complete path/filename if exists while (fileExists(fileName)) { // modify filename snprintf(pfn, len, "%.*s-%03d%s", (int)p_namelen, preferredName, num, suffix); From 58f9ba0abfa742fdfa5695ed6bb65dd62a6b3a91 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 22:23:33 +0200 Subject: [PATCH 0325/1034] ugly hack to load the signature data if we are on a MFC Ev1 card. First we dont want to trigger the partial read unnecessary and secondly we dont save signature data in our MFC dump file. Need to adapt the JSON format for this --- armsrc/iso14443a.c | 12 +++++++----- armsrc/mifarecmd.c | 20 +++++++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index cb5f89118..07faa5b02 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -2596,7 +2596,7 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint p_card->ats_len = 0; } - if (GetATQA(resp, resp_par, polling_parameters) == false) { + if (GetATQA(resp, resp_par, polling_parameters) == 0) { return 0; } @@ -2621,11 +2621,11 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint memcpy(p_card->uid, resp, 4); // select again? - if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == false) { + if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == 0) { return 0; } - if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == false) { + if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == 0) { return 0; } @@ -2824,7 +2824,7 @@ int iso14443a_fast_select_card(uint8_t *uid_ptr, uint8_t num_cascades) { uint8_t sak = 0x04; // cascade uid int cascade_level = 0; - if (!GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS)) { + if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == 0) { return 0; } @@ -2851,7 +2851,9 @@ int iso14443a_fast_select_card(uint8_t *uid_ptr, uint8_t num_cascades) { ReaderTransmit(sel_uid, sizeof(sel_uid), NULL); // Receive the SAK - if (!ReaderReceive(resp, resp_par)) return 0; + if (!ReaderReceive(resp, resp_par)) { + return 0; + } sak = resp[0]; diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 3f0e6f187..32e90d56a 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2071,24 +2071,33 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { // increase time-out. Magic card etc are slow uint32_t timeout = iso14a_get_timeout(); // frame waiting time (FWT) in 1/fc - uint32_t fwt = 256 * 16 * (1 << 7); + uint32_t fwt = 256 * 16 * (1 << 6); iso14a_set_timeout(fwt / (8 * 16)); for (uint8_t s = 0; s < sectorcnt; s++) { + uint64_t ui64Key = emlGetKey(s, keytype); + if (sectorcnt == 18) { // MFC 1K EV1, skip sector 16 since its lockdown if (s == 16) { + // unknown sector trailer, keep the keys, set only the AC + uint8_t st[16] = {0x00}; + emlGetMem(st, FirstBlockOfSector(s) + 3, 1); + memcpy(st + 6, "\x70\xF0\xF8\x69", 4); + emlSetMem_xt(st, FirstBlockOfSector(s) + 3, 1, 16); continue; } + + // ICEMAN: ugly hack, we don't want to trigger the partial load message // MFC 1K EV1 sector 17 don't use key A. - if (keytype == 0) { - continue; + // not mention we don't save signatures in our MFC dump files. + if (s == 17 && keytype == 0) { + ui64Key = 0x4B791BEA7BCC; + keytype = 1; } } - uint64_t ui64Key = emlGetKey(s, keytype); - // use fast select if (have_uid == false) { // need a full select cycle to get the uid first iso14a_card_select_t card_info; @@ -2125,6 +2134,7 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { continue; } + #define MAX_RETRIES 2 uint8_t data[16] = {0x00}; From 4e6962864adcbe36fa8686581ba4796f7a9a7a95 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 22:53:01 +0200 Subject: [PATCH 0326/1034] fix loading mifare keys to flash memory, forgot to wipe the new area which we extended to --- armsrc/appmain.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 79b21c5bf..3c471191f 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -2516,6 +2516,9 @@ static void PacketReceived(PacketCommandNG *packet) { Flash_WriteEnable(); Flash_Erase4k(3, 0xC); } else if (payload->startidx == DEFAULT_MF_KEYS_OFFSET) { + Flash_CheckBusy(BUSY_TIMEOUT); + Flash_WriteEnable(); + Flash_Erase4k(3, 0x8); Flash_CheckBusy(BUSY_TIMEOUT); Flash_WriteEnable(); Flash_Erase4k(3, 0x9); From 944af6be9501511da5cc1d1b29534006d7d9d1e9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 22:55:58 +0200 Subject: [PATCH 0327/1034] fixed the missing erasing of flash memory bank. --- CHANGELOG.md | 2 ++ client/src/cmdflashmem.c | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce56eecda..1c1f4e86c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `mem load -m` - now correctly erase all allocated flash memory (@iceman1001) + - Fixed emulator quick dump to handle MFC Ev1 extra sectors (@iceman100) - Removed some empty dump files (@iceman1001) - Added a fct to choose fpga mode (@iceman1001) - Changed `hf mf eload/gsave` - fast uploading to emulator memory (@iceman1001) diff --git a/client/src/cmdflashmem.c b/client/src/cmdflashmem.c index e8db64885..2cfe3849c 100644 --- a/client/src/cmdflashmem.c +++ b/client/src/cmdflashmem.c @@ -275,7 +275,8 @@ static int CmdFlashMemLoad(const char *Cmd) { } break; } -// not needed when we transite to loadxxxx_safe methods.(iceman) + + // ICEMAN: not needed when we transite to loadxxxx_safe methods uint8_t *newdata = realloc(data, datalen); if (newdata == NULL) { free(data); From d9e867fa28980516863a2952f080f25773e4eb09 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 22:56:41 +0200 Subject: [PATCH 0328/1034] string formatters --- common_arm/flashmem.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common_arm/flashmem.c b/common_arm/flashmem.c index 94dcf1fd3..f4dde74a0 100644 --- a/common_arm/flashmem.c +++ b/common_arm/flashmem.c @@ -402,7 +402,7 @@ void Flashmem_print_info(void) { if (isok == 2) { num = ((keysum[1] << 8) | keysum[0]); if (num != 0xFFFF && num != 0x0) - Dbprintf(" Mifare.................. "_YELLOW_("%d")" / "_GREEN_("%d")" keys", num, DEFAULT_MF_KEYS_MAX); + Dbprintf(" Mifare.................. "_YELLOW_("%u")" / "_GREEN_("%u")" keys", num, DEFAULT_MF_KEYS_MAX); } Flash_CheckBusy(BUSY_TIMEOUT); @@ -410,7 +410,7 @@ void Flashmem_print_info(void) { if (isok == 2) { num = ((keysum[1] << 8) | keysum[0]); if (num != 0xFFFF && num != 0x0) - Dbprintf(" T55x7................... "_YELLOW_("%d")" / "_GREEN_("%d")" keys", num, DEFAULT_T55XX_KEYS_MAX); + Dbprintf(" T55x7................... "_YELLOW_("%u")" / "_GREEN_("%u")" keys", num, DEFAULT_T55XX_KEYS_MAX); } Flash_CheckBusy(BUSY_TIMEOUT); @@ -418,7 +418,7 @@ void Flashmem_print_info(void) { if (isok == 2) { num = ((keysum[1] << 8) | keysum[0]); if (num != 0xFFFF && num != 0x0) - Dbprintf(" iClass.................. "_YELLOW_("%d")" / "_GREEN_("%d")" keys", num, DEFAULT_ICLASS_KEYS_MAX); + Dbprintf(" iClass.................. "_YELLOW_("%u")" / "_GREEN_("%u")" keys", num, DEFAULT_ICLASS_KEYS_MAX); } FlashStop(); From 97a1f97308fed7231170b0aed864ae2db82c294f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 23:42:06 +0200 Subject: [PATCH 0329/1034] style --- armsrc/iso14443a.c | 4 +-- client/src/pm3line_vocabulory.h | 1 + doc/commands.json | 44 +++++++++++++++++++++++++-------- doc/commands.md | 1 + 4 files changed, 38 insertions(+), 12 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 07faa5b02..45f61f4ce 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -2580,8 +2580,8 @@ int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32 // and num_cascades must be set (1: 4 Byte UID, 2: 7 Byte UID, 3: 10 Byte UID) // requests ATS unless no_rats is true int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, - bool anticollision, uint8_t num_cascades, bool no_rats, - iso14a_polling_parameters_t *polling_parameters) { + bool anticollision, uint8_t num_cascades, bool no_rats, + iso14a_polling_parameters_t *polling_parameters) { uint8_t resp[MAX_FRAME_SIZE] = {0}; // theoretically. A usual RATS will be much smaller uint8_t resp_par[MAX_PARITY_SIZE] = {0}; diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index 509cf5387..4168a0800 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -388,6 +388,7 @@ const static vocabulory_t vocabulory[] = { { 0, "hf mfp ndefread" }, { 0, "hf mfp ndefwrite" }, { 1, "hf mfu help" }, + { 1, "hf mfu list" }, { 1, "hf mfu keygen" }, { 1, "hf mfu pwdgen" }, { 0, "hf mfu otptear" }, diff --git a/doc/commands.json b/doc/commands.json index d0fe5ad8b..c03e4c80a 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3072,9 +3072,10 @@ "options": [ "-h, --help This help", "-f, --file filename of dump (bin/eml/json)", - "-m, --mem use RDV4 spiffs" + "-m, --mem use RDV4 spiffs", + "-v, --verbose verbose output" ], - "usage": "hf iclass eload [-hm] -f " + "usage": "hf iclass eload [-hmv] -f " }, "hf iclass encode": { "command": "hf iclass encode", @@ -4281,9 +4282,10 @@ "--4k MIFARE Classic 4k / S70", "--ul MIFARE Ultralight family", "-m, --mem use RDV4 spiffs", - "-q, --qty manually set number of blocks (overrides)" + "-q, --qty manually set number of blocks (overrides)", + "-v, --verbose verbose output" ], - "usage": "hf mf eload [-hm] -f [--mini] [--1k] [--2k] [--4k] [--ul] [-q ]" + "usage": "hf mf eload [-hmv] -f [--mini] [--1k] [--2k] [--4k] [--ul] [-q ]" }, "hf mf esave": { "command": "hf mf esave", @@ -6424,9 +6426,10 @@ "options": [ "-h, --help This help", "-f, --file Filename of dump", - "-q, --qty Number of blocks to load from eml file" + "-q, --qty Number of blocks to load from eml file", + "-v, --verbose verbose output" ], - "usage": "hf mfu eload [-h] -f [-q ]" + "usage": "hf mfu eload [-hv] -f [-q ]" }, "hf mfu esave": { "command": "hf mfu esave", @@ -6489,6 +6492,27 @@ ], "usage": "hf mfu keygen [-hr] [-u ]" }, + "hf mfu list": { + "command": "hf mfu list", + "description": "Alias of `trace list -t 14a` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "notes": [ + "hf 14a list --frame -> show frame delay times", + "hf 14a list -1 -> use trace buffer" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-1, --buffer use data from trace buffer", + "--frame show frame delay times", + "-c mark CRC bytes", + "-r show relative times (gap and duration)", + "-u display times in microseconds instead of clock cycles", + "-x show hexdump to convert to pcap(ng)", + "or to import into Wireshark using encapsulation type \"ISO 14443\"", + "-f, --file filename of dictionary" + ], + "usage": "hf 14a list [-h1crux] [--frame] [-f ]" + }, "hf mfu ndefread": { "command": "hf mfu ndefread", "description": "Prints NFC Data Exchange Format (NDEF)", @@ -6622,12 +6646,12 @@ "offline": false, "options": [ "-h, --help This help", - "-t, --type <1..10> Simulation type to use", + "-t, --type <1..12> Simulation type to use", "-u, --uid <4|7|10> hex bytes UID", "-n, --num Exit simulation after blocks. 0 = infinite", "-v, --verbose Verbose output" ], - "usage": "hf mfu sim [-hv] -t <1..10> [-u ] [-n ]" + "usage": "hf mfu sim [-hv] -t <1..12> [-u ] [-n ]" }, "hf mfu tamper": { "command": "hf mfu tamper", @@ -11779,8 +11803,8 @@ } }, "metadata": { - "commands_extracted": 683, + "commands_extracted": 684, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-26T21:49:57" + "extracted_on": "2023-07-27T21:41:37" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index a26d55d8e..7a8476a6c 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -567,6 +567,7 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`hf mfu help `|Y |`This help` +|`hf mfu list `|Y |`List MIFARE Ultralight / NTAG history` |`hf mfu keygen `|Y |`Generate 3DES MIFARE diversified keys` |`hf mfu pwdgen `|Y |`Generate pwd from known algos` |`hf mfu otptear `|N |`Tear-off test on OTP bits` From 6df79e3926677d99a76f299312dae50555758376 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 29 Jul 2023 12:44:32 +0200 Subject: [PATCH 0330/1034] missed to remove exclamation mark --- client/src/cmdhf14a.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 85f7c9588..c7529c56a 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -549,7 +549,7 @@ static int CmdHF14AReader(const char *Cmd) { bool continuous = arg_get_lit(ctx, 7); CLIParserFree(ctx); - if (!disconnectAfter == false) { + if (disconnectAfter == false) { cm |= ISO14A_NO_DISCONNECT; } From 0c9855017725a3a5cd1ae4924e7253b1298a311f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 30 Jul 2023 17:17:08 +0200 Subject: [PATCH 0331/1034] dont mark crc byte everywhere in the alias list. have to set it for those commands that would benefit from it --- client/src/cmdhf14a.c | 2 +- client/src/cmdhfmf.c | 2 +- client/src/cmdhfmfu.c | 2 +- client/src/cmdtrace.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index c7529c56a..ecd57e181 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -232,7 +232,7 @@ static uint8_t gs_frames_num = 0; static uint16_t atsFSC[] = {16, 24, 32, 40, 48, 64, 96, 128, 256}; static int CmdHF14AList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf 14a", "14a"); + return CmdTraceListAlias(Cmd, "hf 14a", "14a -c"); } int hf14a_getconfig(hf14a_config *config) { diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 0eac61eca..be336bcb3 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -6736,7 +6736,7 @@ static int CmdHFMFPersonalize(const char *Cmd) { } static int CmdHF14AMfList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf mf", "mf"); + return CmdTraceListAlias(Cmd, "hf mf", "mf -c"); } static int CmdHf14AGen3UID(const char *Cmd) { diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 7f1722cd4..13b8c9cb4 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -4673,7 +4673,7 @@ static int CmdHF14AMfuView(const char *Cmd) { } static int CmdHF14AMfuList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf 14a", "14a"); + return CmdTraceListAlias(Cmd, "hf 14a", "14a -c"); } diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 7efb8bc35..e71ca4445 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -1176,7 +1176,7 @@ int CmdTraceListAlias(const char *Cmd, const char *alias, const char *protocol) CLIParserFree(ctx); char args[128] = {0}; - snprintf(args, sizeof(args), "-c -t %s ", protocol); + snprintf(args, sizeof(args), "-t %s ", protocol); strncat(args, Cmd, sizeof(args) - strlen(args) - 1); return CmdTraceList(args); } From 708cfca850d4912f9a26ebf244b766f03d681a0c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 30 Jul 2023 20:32:56 +0200 Subject: [PATCH 0332/1034] add default marking of crc bytes for these protocols --- client/src/cmdhficlass.c | 2 +- client/src/cmdhflto.c | 2 +- client/src/cmdhfmfdes.c | 2 +- client/src/cmdhfmfp.c | 2 +- client/src/cmdhftopaz.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 4c4f3215d..131944f6e 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -645,7 +645,7 @@ void print_picopass_header(const picopass_hdr_t *hdr) { } static int CmdHFiClassList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf iclass", "iclass"); + return CmdTraceListAlias(Cmd, "hf iclass", "iclass -c"); } static int CmdHFiClassSniff(const char *Cmd) { diff --git a/client/src/cmdhflto.c b/client/src/cmdhflto.c index b5a8d1206..d11f0c6d1 100644 --- a/client/src/cmdhflto.c +++ b/client/src/cmdhflto.c @@ -526,7 +526,7 @@ int infoLTO(bool verbose) { } static int CmdHfLTOList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf lto", "lto"); + return CmdTraceListAlias(Cmd, "hf lto", "lto -c"); } int rdblLTO(uint8_t st_blk, uint8_t end_blk, bool verbose) { diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index b2cd1f7a5..03dcea842 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -1411,7 +1411,7 @@ static int CmdHF14aDesChk(const char *Cmd) { } static int CmdHF14ADesList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf mfdes", "des"); + return CmdTraceListAlias(Cmd, "hf mfdes", "des -c"); } static int DesfireAuthCheck(DesfireContext_t *dctx, DesfireISOSelectWay way, uint32_t appID, DesfireSecureChannel secureChannel, uint8_t *key) { diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 01f529b99..c0078819b 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1810,7 +1810,7 @@ static int CmdHFMFPNDEFWrite(const char *Cmd) { } static int CmdHFMFPList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf mfp", "mfp"); + return CmdTraceListAlias(Cmd, "hf mfp", "mfp -c"); } static command_t CommandTable[] = { diff --git a/client/src/cmdhftopaz.c b/client/src/cmdhftopaz.c index 4483e3154..649882416 100644 --- a/client/src/cmdhftopaz.c +++ b/client/src/cmdhftopaz.c @@ -812,7 +812,7 @@ static int CmdHFTopazRaw(const char *Cmd) { } static int CmdHFTopazList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf topaz", "topaz"); + return CmdTraceListAlias(Cmd, "hf topaz", "topaz -c"); } static int CmdHFTopazSniff(const char *Cmd) { From 9943235e3128209eb62e8a32f9b3f7cca446fa33 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 30 Jul 2023 21:20:32 +0200 Subject: [PATCH 0333/1034] updated atr table --- client/src/atrs.h | 488 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 425 insertions(+), 63 deletions(-) diff --git a/client/src/atrs.h b/client/src/atrs.h index 87171c523..18c1880c6 100644 --- a/client/src/atrs.h +++ b/client/src/atrs.h @@ -43,6 +43,7 @@ const static atr_t AtrTable[] = { { "3B003B28003441454130323030", "Cryptoguard card used for pay tv Plustelka (DVB-T2 - Slovak) (Pay TV)\nhttps://www.plustelka.sk/" }, { "3B021050", "Visa (Bank)" }, { "3B02141C", "UAE (United Arab Emirates) (eID)" }, + { "3B021435", "cartao cidadao (eID)" }, { "3B021450", "Schlumberger Multiflex 3k" }, { "3B02145011", "Maste visa card (Bank)" }, { "3B021451", "8A (Bank)" }, @@ -54,7 +55,7 @@ const static atr_t AtrTable[] = { { "3B026F33", "Polish national PKI equivalent to national id card issued by Eurocert - 1 of 2 Polish authorized issuers (PKI)\nhttps://eurocert.pl/index.php/en-us/" }, { "3B0400000000", "Laundromat payment card\nSpanish ID ('DNIe: Documento Nacional de Identidad electronico).\nhttp://www.dnie.es/" }, { "3B0400000073", "ASE M2 Card (I2C) (Other)" }, - { "3B0400040000", "Italian healtcare card (TS) National Service Card (CNS) - Regione Lazio - (HealthCare)\nhttp://cns.regione.lazio.it" }, + { "3B0400040000", "Italian healthcare card (TS) National Service Card (CNS) - Regione Lazio - (HealthCare)\nhttp://cns.regione.lazio.it" }, { "3B0401020304", "SLE4442 - memory card (256) with write protection PIN. (Other)" }, { "3B0405D486C8", "Telstra (Telecom Australia) Pay Phone Phonecard (Telecommunication)\nhttps://www.telstra.com.au/home-phone/calling-cards" }, { "3B04073C8592", "OLD Spanish Prepaid phone cards (pesetas) provided by Telefonica" }, @@ -70,15 +71,18 @@ const static atr_t AtrTable[] = { { "3B0417D43000", "Gemalto BONZA game smart-card. (Other)" }, { "3B0417D46608", "Prepaid public telephone card from Antel, Uruguay. (Telecommunication)" }, { "3B0417D4C882", "prepaid payphone card, issued by Lietuvos Telekomas (now Teo LT)\nhttps://www.teo.lt/" }, + { "3B04190CF600", "USWest TeleCard for Millennium Payphones (Other)" }, { "3B041BF43F54", "German TelefonKarte 50DM. Memory card with Solaic chip (Other)" }, { "3B042AFF3200", "Mac Gray Intelligent Laundry Systems laundry card" }, + { "3B0437E409EC", "prepaid payphone card, issued by Deutsche Telekom 'Telefonkarte Comfort als klassische Karte' (Other)\nhttps://tkc.telekom-dienste.de/" }, { "3B0441117781", "Sample Mifare DESFire contactless smartcard from Phillips" }, { "3B04411177B1", "IBM JCOP 30 contactless" }, { "3B044932432E", "German Health Insurance Card\n'LogCard' from concept2.com (a indoor rower manufacturer)\nI2C card" }, - { "3B0450D7F30E", "Ukranian memory card for public phones. Manufacturer: 'Kvazar' (Other)" }, + { "3B0450D7F30E", "Ukrainian memory card for public phones. Manufacturer: 'Kvazar' (Other)" }, { "3B046089", "Smartcard 3.1 (JavaCard)" }, { "3B04696C2065", "ASE M2 Card 2Kbit (Other)" }, { "3B047F010000", "Russian memory card for payphones. Manufacturer: 'Exiton' (Other)" }, + { "3B0482231091", "VISA DEBIT (Bank)" }, { "3B0492231091", "Siemens SLE 4432/42 card" }, { "3B04989400C4", "Windsor and Maidenhead Advantage Card\nhttp://www.rbwm.gov.uk/web/advantage_index.htm" }, { "3B0499FFFF90", "Madrid prepaid parkimeters parking card" }, @@ -103,6 +107,7 @@ const static atr_t AtrTable[] = { { "3B06010022018227", "HID ProxCard II (Other)" }, { "3B06010100001073", "HID Prox 26-bit (eID)" }, { "3B06010102000001", "HID0009P (eID)" }, + { "3B06010118038209", "HID ProxKey III (125kHz) (eID)\nhttps://www.hidglobal.com/products/cards-and-credentials/hid-proximity/1346" }, { "3B06010210......", "ISOProx II Card:\nhttp://www.hidglobal.com/documents/isoprox_ds_en.pdf" }, { "3B0602..........", "HID Prox H10302 Format\n37 bit (CN)\nhttps://www.hidglobal.com/sites/default/files/omnikey_contactless_developer_guide.pdf" }, { "3B0604..........", "HID Prox H10304 Format\n37 bit (FAC+CN)\nhttps://www.hidglobal.com/sites/default/files/omnikey_contactless_developer_guide.pdf" }, @@ -136,6 +141,7 @@ const static atr_t AtrTable[] = { { "3B12953608", "EMTG56 0.8 (sub-version 0.1)" }, { "3B12953609", "EMTG56 0.9 (sub-version 0.1)" }, { "3B1396130917", "Teacher Card (Other)" }, + { "3B1411CA4DDEAD", "Tricolor (Telecommunication)" }, { "3B151112CA0700DB", "Tricolor TV center card (Pay TV)" }, { "3B151112CA0711CA", "DRE Crypt (Pay TV)" }, { "3B151112CA0714CF", "PlatformaHD (Russia) DRE Crypt 4AE1:14" }, @@ -165,12 +171,14 @@ const static atr_t AtrTable[] = { { "3B16959B0007011803", "Thai GSM UICC (Telecommunication)" }, { "3B1695D00045F70100", "Telefonica O2 Czech Republic, a.s. - O2 sim card - 173285 / SIM64ND.GO0\nhttp://www.o2.cz" }, { "3B1695D0016CFD0D00", "Virgin Mobile SIM card (SIM)" }, + { "3B1695D0017B010E00", "Vivo Brasil - SIM Card (Telecommunication)" }, { "3B1695D0017BDA0D00", "Verizon GSM SIM (Telecommunication)" }, { "3B1696417374726964", "Gemalto IDPrime v2+ .NET" }, { "3B1696770006010403", "AIS One-2-Call GSM UICC (Telecommunication)\nhttp://www.ais.co.th" }, { "3B1696BA000E010603", "Vinaphone Vietnam SIM" }, { "3B1696BA000E020A03", "Vietel (Telecommunication)" }, { "3B1696D000D4072C00", "Vodafone India Postpaid / Local Operator 3G" }, + { "3B1696D0016CA70D00", "Ukrainian Telecommunications Operator MTS (old simcard, now rebranded to Vodafone UA) (Telecommunication)\nhttps://www.vodafone.ua" }, { "3B17118065AF034200D8", "TELE2 SPB SIM Russia" }, { "3B17139C120201010740", "Schlumberger Cyberflex Access Developer 32k" }, { "3B179418010101014193", "T-Mobile SIM card" }, @@ -196,6 +204,7 @@ const static atr_t AtrTable[] = { { "3B1894451543DA0100FF02", "Airtel Tanzania Prepaid SIM Card (Telecommunication)" }, { "3B1894530D06772407FF02", "GSM SIM Tele2 Estonia, prepaid (Telecommunication)" }, { "3B1894532007AD0A05FF02", "GSM SIM Beeline Kazakhstan (Telecommunication)\nhttp://beeline.kz/" }, + { "3B18962621550401030001", "OBILedit Forensic SIM Cloning card (Telecommunication)\nhttps://www.mobiledit.com/connection-kit" }, { "3B19145590010101000508B0", "Schlumberger Multiflex 8k" }, { "3B19145590010201000504B0", "Schlumberger Multiflex 4k" }, { "3B19145901010F01000508B0", "Schlumberger Multiflex 8k" }, @@ -203,6 +212,7 @@ const static atr_t AtrTable[] = { { "3B19943303013145410602B6", "BASE Twin simcard (Telecommunication)" }, { "3B1994806794080125010101", "Mobiphone (Telecommunication)" }, { "3B1996806793270102020401", "Orange SIM card (Telecommunication)" }, + { "3B1996806794090101040104", "Morpho EIRENE GSM-R Card (Telecommunication)" }, { "3B1996806794160203010101", "Movistar Argentina Usim Card (Telecommunication)\nwww.movistar.com.ar" }, { "3B1996806798040101010101", "PLUS gsm (Telecommunication)" }, { "3B1A9692015493320103022501", "BEELINE (Telecommunication)" }, @@ -216,6 +226,7 @@ const static atr_t AtrTable[] = { { "3B1D9600230700000000000000009000", "emulator card prototype from ST" }, { "3B1D97434C5F53414D00143800009000", "CLSAM (Transport)\nhttp://www.planeta.inf.br" }, { "3B1E130069454D4345663228F86B009000", "ECHS (Ex-servicemen Contributory Health Scheme) Card (HealthCare)\nhttp://echs.gov.in/" }, + { "3B1E95806721544D4D04120E7132829F00", "SIM card of old Ukrainian Telecommunications Operator Ace&Base (deriving from Kyivstar) (Telecommunication)\nhttps://kyivstar.ua/uk/mm" }, { "3B1F110067424146495345535266FF819000", "Finnish student id card" }, { "3B1F110067804246495345105266FF819000", "Nokia branded SC (Setec)" }, { "3B1F11006A013846495345108C02FF079000", "GSM-SIM Saunalahti (from 2004)\nFinnish cell phone operator 'Sonera' SIM card (from 2002)" }, @@ -240,7 +251,7 @@ const static atr_t AtrTable[] = { { "3B23003513FF", "Schlumberger MicroPayflex" }, { "3B2300354180", "PayflexHID (idenfitied by Sun Ray Services)" }, { "3B2400......45", "Conax" }, - { "3B240000000000", "MultiChoice satelite TV Card Eutelsat 36B at 35.9degE\nhttp://www.lyngsat.com/Eutelsat-36B.html" }, + { "3B240000000000", "MultiChoice satellite TV Card Eutelsat 36B at 35.9degE\nhttp://www.lyngsat.com/Eutelsat-36B.html" }, { "3B240000E29267", "Health care (HealthCare)" }, { "3B240030423030", "ComHem Digital-TV smartcard (Sweden)\nTNK Telewizja Na Karte (Poland) - Conditional access system : Conax (Norway)\nhttp://telewizjanakarte.pl/" }, { "3B240080729443", "MPCOS-3DES 64K \\ EMV Filter (Gemplus)" }, @@ -258,6 +269,7 @@ const static atr_t AtrTable[] = { { "3B2600311A45039000", "Tajeta Sanitaria Individual (Spanish Insurance Card)\nfrom the 'Junta de Andalucia(Consejeria de Salud)'" }, { "3B2600311A51039000", "Andalusian Health Service identification card (HealthCare)" }, { "3B270011140003029000", "ITTAS CNA Smart Card Reader (PKI)\nhttps://www.ittas.by/en/solutions/cna-cryptographic-protection-of-information" }, + { "3B27002A2A4352595054", "PAY TV (Pay TV)" }, { "3B27008065A2..010137", "Gemplus GemSAFE Smart Card (4K)" }, { "3B27008065A200010137", "Gemplus GemSAFE Card CSP v1.0" }, { "3B27008065A202028237", "Gemplus GPK2000s" }, @@ -317,7 +329,6 @@ const static atr_t AtrTable[] = { { "3B3B13008066120401040158829000", "Schaffhauser Kantonalbank Switzerland (Bank)\nhttp://www.shkb.ch" }, { "3B3B7F380000006A444E496510024C", "dnie (eID)" }, { "3B3B7F380000006A444E496520024C", "DNI (eID)" }, - { "3B3B8E800180318066B1840C016E01830090001C021450", "all transport travel pass (Transport)\nhttp://www.metro.spb.ru/cnblt41.html" }, { "3B3B94000064053E030F31800E9000", "Slovenian national health insurance card" }, { "3B3B940000640E3E02F031800E9000", "HPC card 2\nZZZS Health care professional card- Slovenia (Healthcard) (HealthCare)\nhttps://partner.zzzs.si/wps/portal/portali/aizv/e-poslovanje/kartice_in_citalniki/prof_kartica/" }, { "3B3B940000640E3E030F31800E9000", "HIC card\nZZZS Health care card- Slovenia (HealthCare)\nhttps://partner.zzzs.si/wps/portal/portali/aizv/e-poslovanje/kartice_in_citalniki/kartica_zdravstvenega_zavarovanja/!ut/p/z1/04_Sj9CPykssy0xPLMnMz0vMAfIjo8ziTQxdPd2N_Q08LSyCDQ0cjZzMzXz8XQ3cXU30C7IdFQEohG-V/" }, @@ -400,8 +411,9 @@ const static atr_t AtrTable[] = { { "3B4F004932435F436172643D4E6F5F515452", "AT24C (Bank)" }, { "3B4F00536C653434322D34343DA2131091", "Debit card (Bank)" }, { "3B4F00536C65343433322D34323DA2131091", "VISA (Bank)" }, + { "3B501100", "JAVA (JavaCard)" }, { "3B57180293020101019000", "Easyflex FastOS 2.0 / Schlumberger" }, - { "3B5B96000031C064BAFC10000F9000", "SERGAS - Galician Healtcare Service (Spain) (HealthCare)\nhttps://www.sergas.gal" }, + { "3B5B96000031C064BAFC10000F9000", "SERGAS - Galician Healthcare Service (Spain) (HealthCare)\nhttps://www.sergas.gal" }, { "3B5B96000031C064C6FC1000019000", "Banking card (Oberthur C.S. 06 18710-04-10)" }, { "3B5B96000031C064C7FC1000019000", "EBanking card (Oberthur C.S. 03 1146821)" }, { "3B5E11FF4573744549442076657220312E30", "Estonian Identity Card (EstEID v1.0 2006 warm)" }, @@ -411,11 +423,16 @@ const static atr_t AtrTable[] = { { "3B5F9500807300010059434C5AC506117C9000", "Smart Card C5 68K CardLogix Corp (Other)\nhttps://www.cardlogix.com/products/most-card-c-series-microprocessor-smart-cards/" }, { "3B5F9500807300010059434C5AC50612C09000", "Republic of Liberia Civil Service Identification Card (eID)" }, { "3B5F9600805A2C1100101000FFFFFFFF829000", "Calypso (Transport)" }, + { "3B5F9600805A3F0608140101C546DEDC829000", "Navegante(r) Personalizado (Lisbon public transportation card) (Transport)\nhttps://www.navegante.pt/viajar/cartoes" }, + { "3B5F9600805A3F0608140101C546EBDC829000", "Multi-Transport Pass (Navegante) (Metro, Bus, Electric, Boat) Carris Metropolitano, PT (Transport)\nhttps://www.navegante.pt/" }, + { "3B600000", "Meano (Bank)" }, { "3B61000080", "blank A40CR card (JavaCard)" }, { "3B630000364180", "Schlumberger Payflex 4k User" }, { "3B64..FF8062..A2", "JCOP20" }, { "3B64000080620.51", "Setec SetCOS 5.1.0 EMV" }, { "3B6400FF806202A2", "VISA credit card (Nordea bank)" }, + { "3B6500002063CB3020", "CB / VISA La Banque Postale (IDEMIA) (Bank)" }, + { "3B6500002063CB3040", "Credit Mutuel Debit card (Bank)" }, { "3B6500002063CB4700", "Orga SmartyPlus DATA STORE issued by MORPHO CARDS PERU" }, { "3B6500002063CB6300", "Bank card from Societe Generale (Oberthur)" }, { "3B6500002063CB6400", "Bank card Caisse d'Epargne" }, @@ -460,21 +477,28 @@ const static atr_t AtrTable[] = { { "3B6500002063CBB020", "Credit Mutuel Arkea paycard (Bank)" }, { "3B6500002063CBB120", "Bank card 'Credit Agricole' (Bank)" }, { "3B6500002063CBB280", "Visa card distributed by 'Societe Generale' (French Bank) (Bank)\nVisa card distributed by 'Boursorama Banque' (French Bank) (Bank)\nhttps://www.visa.fr/" }, + { "3B6500002063CBB600", "Maestro Bank Card with chip (Bank)" }, { "3B6500002063CBB620", "MasterCard credit card, issued by Swedbank LT (Bank)" }, { "3B6500002063CBB680", "Visa bank card (Bank)" }, { "3B6500002063CBB700", "Lloyds Bank (UK) 'Avios Duo' Mastercard credit card (Bank)" }, - { "3B6500002063CBB720", "Lloyds Bank Platinum Mastercard Credit (Bank)" }, + { "3B6500002063CBB720", "Lloyds Bank Platinum Mastercard Credit (Bank)\nCredit Agricole Prepaid - Mastercard" }, { "3B6500002063CBB780", "VISA Credit Card (Bank)" }, { "3B6500002063CBB900", "Mastercard (Bank)" }, + { "3B6500002063CBBC", "jcop040 (JavaCard)" }, { "3B6500002063CBBC00", "Credit Agricole MasterCard Societaire (France) (Bank)\nhttps://www.ca-centrefrance.fr/moyens-de-paiement/carte-bancaire-societaire.html" }, { "3B6500002063CBBC10", "French 'Ticket Restaurant' Edenred payment card (Other)\nhttps://www.myedenred.fr/" }, { "3B6500002063CBBC80", "CB / Visa La Banque Postale (Gemalto SP)" }, { "3B6500002063CBBD00", "Credit Mutuel Arkea (Bank)" }, + { "3B6500002063CBBD80", "CARD ONEY BANQUE VISA CREDIT (Bank)\nhttps://www.oney.fr/" }, + { "3B6500002063CBBF00", "Credit Agricole SA (france) (Bank)" }, { "3B6500002063CBC000", "Nickel Credit Card (Bank)\nhttps://nickel.eu" }, { "3B6500002063CBC080", "VISA debit card (Bank)\nhttps://www.cic.fr/fr/banques/professionnels/gestion-courante/cartes-paiement-professionnelles.html" }, { "3B6500002063CBC100", "CIC (Bank)\nhttps://www.cic.fr/" }, + { "3B6500002063CBC300", "CIC Credit Card (Bank)" }, { "3B6500002063CBC310", "Pass Restaurant Sodexo Pass France (Bank)\nhttps://moncompte.sodexopass.fr/" }, { "3B6500002063CBC380", "Apetiz restaurant card (French luncheon vouchers) (Bank)\nhttps://www.apetiz.com/faq/?thematic=achats-apetiz-quoi-quand-combien" }, + { "3B6500002063CBC600", "AuMax / Credit Mutuel (Bank)\nhttps://www.aumaxpourmoi.fr/" }, + { "3B6500002063CBC680", "BNP Paribas Visa Classic Card (Bank)\nhttps://mabanque.bnpparibas/en/managing-your-accounts/cards-and-payment-methods/all-cards/visa-classic-card" }, { "3B6500002063CBFF00", "Credit Agricole business mastercard (Bank)" }, { "3B6500002640009000", "Alacard Petroltech (Transport)\nhttp://www.alacard.kz/" }, { "3B6500002905010201", "ActivCard (Schlumberger) CyberFlex 64K V1 SM 2.1" }, @@ -490,6 +514,7 @@ const static atr_t AtrTable[] = { { "3B660000009C11010103", "Axalto Cyberflex Access 32K V4 SM 1.3" }, { "3B660000009C11010301", "Axalto Cyberflex Access 64K V1 Bio SM 3.1" }, { "3B6600000512010101B1", "Lyon1 student card (Moneo compatible)" }, + { "3B660000112233445566", "Sodexo Restaurant Pass Card (Turkey) (Loyalty)\nhttps://www.sodexoavantaj.com/yemek-karti" }, { "3B660000314B01010080", "VISA credit card (Skandiabanken)" }, { "3B66000032D000300201", "Kazakhstan Kazkom Onlinebank (Homebank) PKI client key-card\nhttps://www.homebank.kz/" }, { "3B66000062C901010000", "safeview (Pay TV)\nhttps://safeviewmedia.com/" }, @@ -563,10 +588,10 @@ const static atr_t AtrTable[] = { { "3B6800000073C84010009000", "Icelandic Banking scheme Issued by the Ministry of Treasure in Iceland\nhttp://www.islandsrot.is/" }, { "3B6800000073C84011009000", "Woolworths Everyday Money prepaid Mastercard\nNordea Bank Norway Visa + national debet card [BankAxept]\nVISA Classic - Nordlandsbanken (Norway)\nCiti Double Cash MasterCard\nWescom Credit Union Visa Debit Card (Bank)\nhttps://www.wescom.org/CHECKING/CHECK-CARD.ASP" }, { "3B6800000073C84012009000", "Brazilian 'e-CPF' card" }, - { "3B6800000073C84013009000", "MASTERCARD issued by MLP (Marschollek, Lautenschlager and Partner)\nG&D 12696-GDM-10/11 DEBIT CARD issued by BANCO DE CREDITO DEL PERU\nVisa from Caisse populaire Desjardins (Canada) (Bank)\nhttps://www.desjardins.com/\nMasterCard issued by President's Choice Bank (Canada)\nhttp://pcfinancial.ca/mastercard\nMasterCard issued by CIBC (Canada)\nhttp://www.cibc.com/\nMasterCard issued by The Bank of Nova Scotia (Canada)\nhttp://www.scotiabank.com/\nMasterCard issued by JPMorgan Chase Bank, N.A.\nhttps://www.chase.com/\nCaixaBank Visa Electron (Bank)\nhttps://www.lacaixa.cat/\nAmerican Express Canada Credit Card (Bank)" }, + { "3B6800000073C84013009000", "MASTERCARD issued by MLP (Marschollek, Lautenschlager and Partner)\nG&D 12696-GDM-10/11 DEBIT CARD issued by BANCO DE CREDITO DEL PERU\nVisa from Caisse populaire Desjardins (Canada) (Bank)\nhttps://www.desjardins.com/\nMasterCard issued by President's Choice Bank (Canada)\nhttp://pcfinancial.ca/mastercard\nMasterCard issued by CIBC (Canada)\nhttp://www.cibc.com/\nMasterCard issued by The Bank of Nova Scotia (Canada)\nhttp://www.scotiabank.com/\nMasterCard issued by JPMorgan Chase Bank, N.A.\nhttps://www.chase.com/\nCaixaBank Visa Electron (Bank)\nhttps://www.lacaixa.cat/\nAmerican Express Canada Credit Card (Bank)\nAlfa-bank Russia Visa" }, { "3B6800000073C8401300907D", "NextCard - Mastercard Debit card - Intesa Sanpaolo Bank (Italy) (Bank)\nhttps://www.intesasanpaolo.com/it/persone-e-famiglie/prodotti/carte/carte-di-debito/next-card.html" }, { "3B68000000DE511001019000", "Itau Bank Mastercard Debit Card (Brazil) (Bank)\nhttps://www.itau.com.br" }, - { "3B6800000101309600009000", "Edenred - French Restauration e-Ticket card (2013) (Other)\nhttps://www.edenred.fr/ticket-restaurant" }, + { "3B6800000101309600009000", "Edenred - French Restoration e-Ticket card (2013) (Other)\nhttps://www.edenred.fr/ticket-restaurant" }, { "3B6800000101310000009000", "VISA ELECTRON Sberbank card (Bank)\nSubmarino MasterCard credit card (Brazil) (Bank)\nhttps://www.submarino.com.br/landingpage/ofertas-cartao-submarino" }, { "3B6800000102109600009000", "Italian BancoPostaClick Postamat Card (Poste Italiane) -\nMasterCard debit card\nmbna PLATINUM MasterCard\nFlash (Banca Fideuram) Italy prepaid Mastercard" }, { "3B6800000105200000009000", "Air Bank a.s. MasterCard debit card with PayPass (Bank)" }, @@ -589,7 +614,8 @@ const static atr_t AtrTable[] = { { "3B6800008066B00701010707", "Java Gemalto R7 (Bank)\nGemalto Santander Optelio TUI R7 with WG10 using Contact interface" }, { "3B6800008066B00701017707", "Tecnico Lisboa Student Card (Bank)\nhttp://www.tecnico.ulisboa.pt/\nOther Optelio Card (Santander)\nSantander Totta Student Card - Portugal (Bank)\nhttps://www.santandertotta.pt" }, { "3B68000081000350010F9000", "Holvi Payment Master Card (Bank)\nhttp://www.holvi.com" }, - { "3B680000990200D103042201", "N26 business debit card (Bank)\nhttps://n26.com/en-de/business-account" }, + { "3B680000990100C103042201", "Robinhood Debit (Bank)\nhttps://robinhood.com/us/en/" }, + { "3B680000990200D103042201", "N26 business debit card (Bank)\nhttps://n26.com/en-de/business-account\nVisa cards from Inecobank, Armenia" }, { "3B6800009D03020101564953", "Visa Card - SberBank / Russia" }, { "3B6800009D08010201564953", "Visa Card - bonus - DenizBank / Turkey" }, { "3B6800009D080103014F5453", "MasterCard Card - bonus - Garanti Bank / Turkey" }, @@ -605,7 +631,7 @@ const static atr_t AtrTable[] = { { "3B6900002494010000000001A9", "Kazakhstan Helios gas station debit card\nhttp://helios.kz/" }, { "3B6900002494010201000101A9", "Chipcard from SUN to be used in SunRay's\n370-4328-01 (31091)" }, { "3B6900002494010301000100A9", "Schlumberger MicroPayflex S card" }, - { "3B6900004944353056312E....", "eID Card to user authenticate and save paswords in the Card. Product ID50 Password manager from IDENTOS GmbH (eID)\nhttps://identos.com/id50-password-manager/" }, + { "3B6900004944353056312E....", "eID Card to user authenticate and save passwords in the Card. Product ID50 Password manager from IDENTOS GmbH (eID)\nhttps://identos.com/id50-password-manager/" }, { "3B6900004944363056312E....", "token appidkey ID60-USB (Other)\nhttps://identsmart.com/en/products/id60-datasafe/" }, { "3B6900004A434F503331563232", "Visa Europe Sample Card / Axalto" }, { "3B6900005001010401000101A9", "Sample card given to all attendees of the CTST 2004 SmartCard Conference" }, @@ -624,7 +650,7 @@ const static atr_t AtrTable[] = { { "3B690000F704010601800102A9", "Azeriqaz Smart Payment (eID)\nhttp://azeriqaz104.az/" }, { "3B690000F704010801800102A9", "Multinet (Other)" }, { "3B69000241434F534A76313031", "ACOSJ 40K Dual Interface (JavaCard)" }, - { "3B69000241434F534A76323033", "ACS ACOSJ Java Card (JavaCard)\nhttps://www.acs.com.hk/en/products/405/acosj-java-card-combi/" }, + { "3B69000241434F534A7632303.", "ACS ACOSJ Java Card (JavaCard)\nhttps://www.acs.com.hk/en/products/405/acosj-java-card-combi/" }, { "3B6900FF00644A100432059000", "NXP JCOP 20 V2.1 16K" }, { "3B6900FF3131313054434F5350", "Seven-Eleven Value Card / Smart Purse - Thailand (Other)\nhttp://www.7eleven.co.th/about7card.php" }, { "3B6900FF323332435343533336", "CSCS smart card. Must be read using CSCS go smart software.\nhttps://download.cscsreader.co.uk/" }, @@ -658,8 +684,10 @@ const static atr_t AtrTable[] = { { "3B6B00000031806443B002008C6127", "Bull Odyssey 1.2 (Javacard 2.0)" }, { "3B6B00000031C06400273400079000", "American Express Gold Air France - KLM (Bank)" }, { "3B6B00000031C064002734000F9000", "American Express Chip and Signature Card (Contact) ()\nhttps://americanexpress.com/chipandsignature" }, + { "3B6B00000031C06408046105079000", "TBC Bank Mastercard (Georgia) (Bank)\nhttps://www.tbcbank.ge/web/en/cards-and-subscription-plans" }, { "3B6B00000031C06408046112079000", "Visa Electron. BSB Bank. Belarus (Bank)" }, { "3B6B00000031C064080461120F9000", "Portuguese National Identity Card (eID)\nhttps://www.autenticacao.gov.pt/o-cartao-de-cidadao" }, + { "3B6B00000031C06408046114079000", "Belarusbank VISA credit card (Belarus) (Bank)" }, { "3B6B00000031C06408046120079000", "AMEX Bank DI Card (Bank)" }, { "3B6B00000031C06408046176079000", "Alliance Bank Debit Card (Bank)" }, { "3B6B00000031C064080461770F9000", "'Strelka' Russian Federation Travelcard (Transport)\nhttp://strelkacard.ru/" }, @@ -674,20 +702,24 @@ const static atr_t AtrTable[] = { { "3B6B00000031C064083981040F9000", "Visa Debit (Bank)" }, { "3B6B00000031C064083991080F9000", "MasterCard Bank Card (Bank)\nhttps://www.creditonebank.com/" }, { "3B6B00000031C064084403040F9000", "VISA debit card (ActivoBank, Portugal) (Bank)\nhttps://www.activobank.pt" }, + { "3B6B00000031C06408440305019000", "mastercard (Bank)" }, { "3B6B00000031C064084403050F9000", "Visa (Bank)" }, { "3B6B00000031C06408440312079000", "VISA (Bank)" }, { "3B6B00000031C064084403120F9000", "Debit Card/MasterCard shipped by electronic Bank N26 (Number26) (Bank)\nhttps://n26.com/de-de/\nBBVA (Spain) (MasterCard) debit card (Bank)\nhttps://www.bbva.es/eng/productos/ficha/tarjeta-ahora-bbva/0000009719" }, { "3B6B00000031C06408440313079000", "MasterCard, Alfa Bank (Russia) (Bank)\nhttps://alfabank.ru/everyday/debit-cards/perekrestok-prepaid/" }, { "3B6B00000031C064084403680F9000", "Credit card emitted by KBC Brussels, Belgium (Bank)\nAdvanzia Credit Card (Master Card gold), Germany (IDK if there is a difference between the german one and the other ones) (Bank)\nhttps://mastercard.gebuhrenfrei.com/\nItalian Intesa Sanpaolo Superflash Prepaid Mastercard (Bank)" }, { "3B6B00000031C06408440376079000", "Blu American Express Credit Card (Bank)\nhttps://www.americanexpress.com/it/content/carta-blu/" }, - { "3B6B00000031C064084403760F9000", "Maestro debit card, issued by Caixa Geral de Depositos (Bank)\nhttps://www.cgd.pt/Particulares/Cartoes/Cartoes-de-Debito/Pages/Cartao-Debito-Cauxautomatica-Maestro.aspx" }, + { "3B6B00000031C064084403760F9000", "Maestro debit card, issued by Caixa Geral de Depositos (Bank)\nhttps://www.cgd.pt/Particulares/Cartoes/Cartoes-de-Debito/Pages/Cartao-Debito-Cauxautomatica-Maestro.aspx\nCredit Agricole Bank Card - Bancomat / Maestro\nDanske Bank Mastercard Debit" }, + { "3B6B00000031C06408440377079000", "Sber bank VISA with Novacard chip (Bank)" }, + { "3B6B00000031C064084403930F9000", "MIR card (Bank)" }, { "3B6B00000031C064084841080F9000", "Monizze card. Card use to pay only meal. (Other)\nhttp://www.monizze.be" }, { "3B6B00000031C064131402000F9000", "UBA Card PREPAID (Bank)" }, { "3B6B00000031C0641F1801000F9000", "Portuguese Medical Association eID card (Cedula Profissional, Ordem dos Medicos, Portugal) (eID)\nhttp://www.omsul.pt/tabid/242/Default.aspx" }, { "3B6B00000031C0641F270100079000", "SOCCARDRT (HealthCare)" }, - { "3B6B00000031C0641F2701150F9000", "VISA Debit card for HSBC, Australia" }, + { "3B6B00000031C0641F2701150F9000", "VISA Debit card for HSBC, Australia\nDanske Bank Mastercard Debit" }, { "3B6B00000031C0641F27011C079000", "Raiffeizen Bank, Russia, MasterCard paypass card (Bank)" }, { "3B6B00000031C0641F2701350F9000", "V PAY (Bank)\nhttps://www.unicreditbulbank.bg/en/individual-clients/everyday-banking/payments/debit-cards/" }, + { "3B6B00000031C0643F680100079000", "JCOP empty card (JavaCard)" }, { "3B6B00000031C0643F6801020F9000", "dinacard (Bank)" }, { "3B6B00000031C0643F680103079000", "American Express Blue Cash (Bank)\nhttps://www.americanexpress.com/us/credit-cards/" }, { "3B6B00000031C0643F6801030F9000", "HSBC Credit Gold Card from VISA (Bank)" }, @@ -700,15 +732,25 @@ const static atr_t AtrTable[] = { { "3B6B00000031C064BE1B01030F9000", "dsafas (Telecommunication)" }, { "3B6B00000031C064D0100100079000", "Alfa-Bank (Russia) Master Card (Aeroflot bonus) (Bank)" }, { "3B6B00000031C16408603206079000", "HSBC (Bank)" }, + { "3B6B00000031C164086032060F90", "VISA (National Bank) (eID)" }, { "3B6B00000031C164086032060F9000", "Nationwide Building Society VISA Debit card (Bank)" }, + { "3B6B00000031C164086032090F9000", "Swedbank Estonia ISIC debit card (Bank)\nhttps://www.swedbank.ee/private/cards/debit/isic" }, { "3B6B00000031C164086032100F9000", "ICA Bank, Mastercard (Bank)\nhttps://www.icabanken.se/kort-och-betala/bankkort/" }, { "3B6B00000031C1640860321F079000", "NMRC Card (Transport)" }, { "3B6B00000031C1640860321F0F9000", "Fio bank, Mastercard, credit (Bank)\nhttps://www.fio.cz/bankovni-sluzby/platebni-karty/kreditni-karty" }, { "3B6B00000031C164086032200F9000", "Twisto (Bank)" }, { "3B6B00000031C16408603221079000", "DSK Bank Debit Mastercard (Bank)" }, + { "3B6B00000031C164086032220F9000", "Universidade de Aveiro (ID Card) (eID)\nhttps://www.ua.pt/pt/sas/cartao" }, + { "3B6B00000031C164086032420F9000", "Westpac Handybank EFTPOS/ATM Card (Bank)" }, { "3B6B00000031C164087771300F9000", "Apple Card (from launch) (Bank)\nhttps://www.apple.com/apple-card/" }, { "3B6B00000031C16408777156079000", "American Express UK Euro ICC charge card (Bank)\nhttps://www.americanexpress.com/icc/cards/the-basic-international-currency-card.html" }, + { "3B6B00000031C16408986200079000", "EquaBank Master Card (Bank)\nhttps://equabank.cz" }, + { "3B6B00000031C164089862000F9000", "NovaKBM Visa Debit (Bank)" }, { "3B6B00000031C164089862010F9000", "Sodexo Czech Gastro/Multipass (Other)\nhttps://www.sodexo.cz/" }, + { "3B6B00000031C1640924331E0F9000", "Cembra Money Bank - Certo! Mastercard credit card (Bank)\nhttps://certo-card.ch/certo/de/" }, + { "3B6B00000031C164092962250F9000", "SANTANDER BASIC CASH CARD (Bank)\nhttps://www.santander.co.uk/assets/s3fs-public/2018-09/Basic%20Current%20Account%20KFD.pdf" }, + { "3B6B00000031C16409644136079000", "HSBC UK Visa Debit Card (Bank)\nhttps://www.hsbc.co.uk/content/dam/hsbc/gb/pdf/help/hsbc-visa-debit-card-guide.pdf" }, + { "3B6B00000031C164096441360F9000", "VISA Business Folio AS /Norway (Sparebanken Vest) [IDEMIA] (Bank)\nhttps://folio.no/" }, { "3B6B000020900000000000B0A2BD69", "Fudan FM1280 (JavaCard)" }, { "3B6B0000426C756361726420344B42", "Blutronics Blucard 4K (Loyalty)\nhttp://blucard.blutronics.com" }, { "3B6B00004348495031342056312E30", "Swiss PostFinance Card (Bank)\nhttps://www.postfinance.ch/en/priv/prod/card/pfcard.html" }, @@ -739,7 +781,10 @@ const static atr_t AtrTable[] = { { "3B6C00004E544943339051024A030000", "Topas TV (Pay TV)" }, { "3B6C000080641134014873F741C08107", "Universal Electronic Card (UEC Russia) (eID)" }, { "3B6C0000806411650190730000008107", "Universal Electronic Card (UEC Russia) (eID)" }, + { "3B6C00008066B1A30401110B83009000", "NAVY F.C.U. (JavaCard)" }, + { "3B6C00008066B1A330401110B8300900", "Visa debit (Bank)" }, { "3B6C0002366186384B8C13046203598A", "Nagravision, Swiss mode" }, + { "3B6C00FF50564A434F50323156323331", "Al Etihad (Bank)" }, { "3B6C00FF8073C8211366010611590001", "Visa Crypto Business Electron by neyvabank.ru (Bank)\nhttps://neyvabank.ru/uploads/files/download/bankdirectvisacryptocardreader.pdf" }, { "3B6D0000", "PVT (Bank)" }, { "3B6D0000003180642DA0040C71968C6129", "UK Co-operative Bank Visa Debit (produced 2002)" }, @@ -756,6 +801,7 @@ const static atr_t AtrTable[] = { { "3B6D00000031C071D664A0010400849000", "Swiss Mastercard M-Budget (Bank)" }, { "3B6D00000031C071D66511223301839000", "UK Co-operative Bank Visa Debit (produced 2006)" }, { "3B6D000000664D453153050653036104F0", "FutureCard Ind. LLC / Feb-18 | Blank card for programming (JavaCard)" }, + { "3B6D00000073C800136447374237009000", "VISA DEBIT CLASSIC BANK OF AMERICA (Bank)" }, { "3B6D00000073C800136447374532009000", "Canada TD Bank Visa Debit/Interac Debit Card (Bank)" }, { "3B6D00000073C80013644A374237009000", "Sberbank Visa card (Bank)" }, { "3B6D00000073C800136454334433009000", "FirstBankcard issued for overstock.com (Bank)\nhttp://www.firstbankcard.com/overstock/" }, @@ -795,9 +841,10 @@ const static atr_t AtrTable[] = { { "3B6D000080318065B0872701BC83089000", "Kazcommertsbank\nhttp://en.kkb.kz/page/WhoWeAre\none of the biggest banks in Republic of Kazakhstan\nNordea (Finland) + Finnair MasterCard (credit)\nGXP7 T=0" }, { "3B6D000080318065B0873401D783009000", "Fidelity Investment Rewards (AMEX) (Bank)\nhttps://www.fidelity.com/cash-management/american-express-cards" }, { "3B6D000080318065B0893501F183009000", "Bank of America BankAmericard Travel Visa Chip Card (Gemalto)\nhttps://www.bankofamerica.com/credit-cards/products/bankamericard-travel-rewards-credit-card.go\nCredito Trevigiano - Banca di Credito Cooperativo - Carta BCC\nVISA Signature issued by RBC Bank (Georgia), N.A.\nhttps://www.rbcbank.com/\nBanca Popolare di Novara - (Bancomat Maestro)" }, - { "3B6D000080318065B0894001F283009000", "PSAM Card" }, + { "3B6D000080318065B0894001F283009000", "PSAM Card\nNordea Mastercard Card" }, { "3B6D00008067A1110101640855830E9000", "Italian Intesa SanPaolo Maestro" }, { "3B6D00FF003180718E6448D50200829000", "Blue for Business, American Express@Business" }, + { "3B6D00FF0031C173C8400052A1D8009000", "Discover it Credit Card (Bank)\nhttps://www.discover.com/credit-cards/cash-back/it-card.html" }, { "3B6D00FF80655343010D067394211B810[15]", "Giesecke & Devrient CardToken 350 (ICCD)" }, { "3B6D00FF8073002113574A544861314700", "ActiveKey SIM" }, { "3B6D00FF8073002113574A544861314800", "Spanish Medical College Card" }, @@ -824,7 +871,7 @@ const static atr_t AtrTable[] = { { "3B6E00000031C0657CB501018071D68C6121", "MUFG CARD (AMEX .jp) (Bank)\nhttp://www.cr.mufg.jp/mufgcard/support/webs/" }, { "3B6E00000031C065BCD002010671D68C612E", "Lloyds TSB Mastercard Credit Card" }, { "3B6E00000031C065BCD002010671D68C6133", "Lloyds TSB Visa Debit\nBarclays Visa DEBIT" }, - { "3B6E00000031C065BCD002010671D68C6143", "S-pankki (Finland) Visa Debit" }, + { "3B6E00000031C065BCD002010671D68C6143", "S-Pankki (Finland) Visa Debit" }, { "3B6E00000031C065BCD102010171D68C6133", "Travelex Cash Passport - Prepaid MasterCard Currency Card" }, { "3B6E00000031C065BCD102010171D68C6135", "MasterCard Card, issues by Rabobank in the Netherlands" }, { "3B6E00000031C065D3C102012871D68C6122", "Visa debit card" }, @@ -910,10 +957,11 @@ const static atr_t AtrTable[] = { { "3B6E0000626C756361726420344B422F7634", "eID Blutronics Blucard 4K\nhttp://blucard.blutronics.com" }, { "3B6E0000626C756361726420384B422F7634", "eID Blutronics Blucard 8K\nhttp://blucard.blutronics.com" }, { "3B6E00008025A00000002856801024000111", "Opencard, new card in Prague, Czech Republic (transport card)" }, + { "3B6E0000803108721422574458544B4E3031", "DX-Token (eID)\nhttps://www.dexon.ind.br/produtos-dxtoken" }, { "3B6E000080318065B00301015E8300009000", "FirstUSA Visa" }, { "3B6E000080318065B00302015E8300009000", "Gemplus GemXpresso 211is" }, { "3B6E000080318066B0070300AC0183009000", "e-payment card with topup system, propreteary by local bank\nhttp://www.klikbca.com/individual/silver/product.html?s=69" }, - { "3B6E000080318066B0840C016E0183009000", "Optelio Cards (D72 R4 WR)\nNordea (a Skandinavian bank) eID card\nhttp://linux.fi/wiki/Nordea_eID\nRBC Royal Bank Client Card (bank in Canada)\nBanco Santander TUI/USC R7\nGemalto Optelio/Desineo D72 (JavaCard) with WG10 and Maestro (JavaCard) (Bank)\nCarte Ticket Restaurant with MasterCard\nCitigold VISA Debit for Citibank, Australia\nPlatinum VISA card for Citibank, Australia\nVISA Infinite issued by RBC Royal Bank (Canada)\nhttp://www.rbc.com/\nPostepay Evolution - Poste Italiane (mastercard)\n'la Caixa' (Spain) (VISA Electron) debit card (Bank)\nhttps://www.lacaixa.es/\nItalian Webank.it BPM Banca Popolare di Milano Bancomat & Maestro Card (Bank)" }, + { "3B6E000080318066B0840C016E0183009000", "Optelio Cards (D72 R4 WR)\nNordea (a Skandinavian bank) eID card\nhttp://linux.fi/wiki/Nordea_eID\nNordea Mastercard card\nNordea Visa card\nRBC Royal Bank Client Card (bank in Canada)\nBanco Santander TUI/USC R7\nGemalto Optelio/Desineo D72 (JavaCard) with WG10 and Maestro (JavaCard) (Bank)\nCarte Ticket Restaurant with MasterCard\nCitigold VISA Debit for Citibank, Australia\nPlatinum VISA card for Citibank, Australia\nVISA Infinite issued by RBC Royal Bank (Canada)\nhttp://www.rbc.com/\nPostepay Evolution - Poste Italiane (mastercard)\n'la Caixa' (Spain) (VISA Electron) debit card (Bank)\nhttps://www.lacaixa.es/\nItalian Webank.it BPM Banca Popolare di Milano Bancomat & Maestro Card (Bank)\nSberbank of Russia MIR debit card (Bank)\nMasterCard bank card by OTP Bank (Hungary)" }, { "3B6E000080318066B08412016E0183009000", "Barclaycard Platinum VISA\nInteligo debit card\nVISA issued by ING (Poland)\nVISA Debit card for ING Direct, Australia\nVISA Gold issued by RBC Royal Bank (Canada)\nhttp://www.rbc.com/\nGas Natural Fenosa Visa (issued by CaixaBank) (Bank)\nhttp://www.clubfenosa.gasnaturalfenosa.es/ca/1285341160257/targeta+gas+natural+fenosa.html" }, { "3B6E000080318066B08416016E0183009000", "UK 'Barclaycard Gold VISA' with RFID" }, { "3B6E000080318066B0870C016E0183009000", "Banco Santander TUI/USC R7 - Gemalto Optelio/Desineo D72 (JavaCard)\nhttp://www.observatoriotui.com/home" }, @@ -927,17 +975,24 @@ const static atr_t AtrTable[] = { { "3B6E00FF00620000574156414E5410819000", "debit card (Visa Electron) issued by Nordea bank" }, { "3B6E00FF4573744549442076657220312E30", "Estonian Identity Card (EstEID v1.0 warm)" }, { "3B6E00FF47442D47502D333256342D444553", "Mastercard Ourocard Platinum from Banco do Brasil" }, + { "3B6F000000004A300A86454A5A231044433330", "Personal Card (eID)" }, { "3B6F00000031C068435350454D560300079000", "SOCCARDRT (HealthCare)" }, { "3B6F00000031C173C821106441443231009000", "Debit Card for Santander Universidades PT (Bank)\nhttps://www.santander.pt/pt_PT/Particulares/Universitarios.html" }, + { "3B6F00000031C173C821106441443530009000", "Discover Cashback Debit (Bank)\nhttps://www.discover.com/online-banking/" }, + { "3B6F00000031C173C8211064414D3347", "CHASE DEBIT VISA (JavaCard)" }, + { "3B6F00000031C173C8211064414D3347079000", "Java (JavaCard)" }, { "3B6F00000031C173C8211064474D3131009000", "Beutsche Bank Business mastercard credit (Bank)\nhttps://www.deutsche-bank.de/gk/zahlungsverkehr/zahlungsverkehr-im-ueberblick/kreditkarte.html" }, { "3B6F00000031C173C8211064474D3133009000", "Bank card from the Commonwealth Bank of Australia (Bank)\nhttps://www.commbank.com.au/business/pds/cbb127_eftpos_int_v7.pdf" }, { "3B6F00000031C173C8211064474D3134009000", "bancomat Banca Popolare Milano + maestro debit card + rfid (Bank)" }, + { "3B6F00000031C173C8211064474D3136009000", "Highest level of DNB AS (Norway (Bank)" }, { "3B6F00000031C173C8211064474D3331009000", "BBVA Antes Card (Spain) (VISA) prepaid card (Bank)\nhttps://www.bbva.es/eng/productos/ficha/tarjeta-antes-bbva/0T00000225" }, { "3B6F00000031C173C8211064474D3332009000", "td debit visa card (Bank)\nScotiabank ScotiaCard Interac/Visa debit card (Bank)\nhttps://www.scotiabank.com/ca/en/personal/ways-to-bank/debit-credit-prepaid-cards/debit-cards/scotiacards.html" }, { "3B6F00000031C173C8211064474D3338009000", "ING Direct Debit Card (Bank)" }, { "3B6F00000031C173C8211064474D3341009000", "Fineco debit card (Bancomat, Visa Debit) (Bank)\nhttps://finecobank.com/it/online/conto-e-carte/carte-e-bancomat/" }, - { "3B6F00000031C173C8211064474D3435009000", "VISA card, issued by OP Financial Group, Finland (Bank)" }, + { "3B6F00000031C173C8211064474D3435009000", "VISA card, issued by OP Financial Group, Finland (Bank)\nVISA card, issued by S-Pankki, Finland (Bank)" }, { "3B6F00000031C173C8211064474D3437009000", "Visa credit card, issued by Klarna (Bank) (Bank)\nhttps://www.klarna.com/se/kort/" }, + { "3B6F00000031C173C8211064474D3533009000", "American Express Platinum Card Mexico (Bank)\nhttps://www.americanexpress.com/mx/tarjetas-de-credito/the-platinum-credit-card/" }, + { "3B6F00000031C173C821106457493035009000", "Discover EMV Card (Bank)" }, { "3B6F00000031C173C821106457493036009000", "neat MasterCard (Bank)\nhttps://www.neatcommerce.com/" }, { "3B6F00000031C173C821106457493131009000", "Banca Popolare Di Sondrio (IT) - Ateneo+ Card for University of Brescia (Bank)\nhttps://www.ateneopiu.it/home" }, { "3B6F00000031C173C8211064574B3037009000", "NatWest VISA Debit card (Bank)\nhttps://personal.natwest.com/personal/current-accounts/select_account.html" }, @@ -945,7 +1000,7 @@ const static atr_t AtrTable[] = { { "3B6F00000031C173C821106457533430009000", "PNC Debit (Bank)" }, { "3B6F000000664D453161030153086104F09000", "Spanish University of Murcia smart ID card - Old version (M.Mar OS) - Also used by many others spanish universities" }, { "3B6F000000664D4531B1030153086104F09000", "Spanish UCAM University smart ID card - (M.Mar OS) - Also used by many others spanish universities" }, - { "3B6F000000664D45668003..53066103F09000", "Millenium Card (www.coruna.es/millennium) municipal city card for A Coruna, Spain.\nelectronic wallet for paying services like parking meter or public service (bus) transportation." }, + { "3B6F000000664D45668003..53066103F09000", "Millennium Card (www.coruna.es/millennium) municipal city card for A Coruna, Spain.\nelectronic wallet for paying services like parking meter or public service (bus) transportation." }, { "3B6F000000664D456680030C53066105F09000", "Transporte Metropolitano de Galicia (Transport)\nhttp://tmg.xunta.gal/" }, { "3B6F000000664D456680031453036104F09000", "Paypal Prepaid Card (YoUnique Money E.D.E.)" }, { "3B6F000000664D456680031653066105F09000", "Transport Metropolitano de Galicia (Transport)\nhttps://tmg.xunta.gal/" }, @@ -956,6 +1011,7 @@ const static atr_t AtrTable[] = { { "3B6F000000B854211004900000000000000000", "VIABUY Credit card (Bank)\nhttp://www.viabuy.de" }, { "3B6F000000B854311007900000000000000000", "Revolut Premium Mastercard (Bank)\nhttps://www.revolut.com/revolut-premium\nMonzo Bank (UK) Debit Mastercard\nhttps://monzo.com/\nLansforsakringar (SE) Debit Mastercard\nhttps://www.lansforsakringar.se/\nING Direct MasterCard (Bank)\nhttps://www.ing.es/tarjetas-ing" }, { "3B6F00000231B813FF000000000000000F9000", "Coverflex | Flexible Benefits Platform (Other)\nhttps://www.coverflex.com/" }, + { "3B6F00003101F1564011001900000000000000", "Postepay Evolution (Bank)\nhttps://postepay.poste.it/prodotti/postepay-evolution.html" }, { "3B6F0000626C75636172642031364B422F7634", "eID Blutronics Blucard 16K\nhttp://blucard.blutronics.com" }, { "3B6F00008031C0520083640219083283839000", "Bancomer Mexican Bank" }, { "3B6F00008031C05205B5640200647183839000", "Read Card in USB, used for application in Java. (JavaCard)" }, @@ -966,6 +1022,7 @@ const static atr_t AtrTable[] = { { "3B6F00008031C05211F46402B3023783839000", "VISA (Bank)" }, { "3B6F00008031C052132F640219083283839000", "Cajamadrid-UCM (Madrid, Spain) Cash/Visa Electron" }, { "3B6F00008031C05216B9640566803283839000", "Banorte Mexican Bank" }, + { "3B6F00008031C05216F5640569937083839000", "BANCO INTERAMERICANO DE FINANZAS, S.A.E.M.A. (Bank)" }, { "3B6F00008031C05220E2640562178083839000", "VISA MedicusMundi (VISA Classic Affinity credit card, issued by Laboral Kutxa) (Bank)\nhttps://www.medicusmundi.es/es/que-puedes-hacer-tu/tarjetas-affinity" }, { "3B6F00008031E05B4555520000000000070200", "Pre-loaded wallet card. 'Mondex is a smart card electronic cash system, implemented as a stored-value card' (Bank)\nhttps://en.wikipedia.org/wiki/Mondex" }, { "3B6F00008031E05B4E4F4B0000000000000200", "Norsk-Tipping (Buypass) Monodex card" }, @@ -994,6 +1051,7 @@ const static atr_t AtrTable[] = { { "3B6F00008031E06B04520502BB555555555555", "AlfaBROU - Mastercard (prepaid card emitted by Banco Republica - Uruguay) (Bank)\nhttps://www.brou.com.uy/personas/tarjetas/prepaga-alfabrou" }, { "3B6F00008031E06B04520502FD555555555555", "C6 Bank Mastercard Global Account (Bank)\nhttps://www.c6bank.com.br/conta-global\nC6 Bank Mastercard Brazil Account (Bank)\nhttps://www.c6bank.com.br/nossos-produtos" }, { "3B6F00008031E06B04520502FE555555555555", "CITIBanamex 'Perfiles' debit card (Bank)\nhttps://www.banamex.com/es/personas/cuentas/cuenta-perfiles.html" }, + { "3B6F00008031E06B04546B026D555555555555", "Mastercard Credit/Debit Card (Bank)" }, { "3B6F00008031E06B0505050280555555555555", "Banamex cuenta perfiles (Bank)\nhttp://banamex.com" }, { "3B6F00008031E06B0508050283555555555555", "Bank of Montreal debit card" }, { "3B6F00008031E06B0512050287555555555555", "American Express credit card" }, @@ -1047,8 +1105,11 @@ const static atr_t AtrTable[] = { { "3B6F0000805A080608201223C202795D829000", "OPUS is card for storing public transit passes and tickets (Transport)\nhttps://opusenligne.ca/" }, { "3B6F0000805A080608201223C2036347829000", "OPUS Card RTC Quebec's Bus system (Canada) (Transport)\nhttps://opusenligne.ca" }, { "3B6F0000805A080608201223C204D07F829000", "OPUS Card (Transport)\nhttps://en.wikipedia.org/wiki/OPUS_card" }, + { "3B6F0000805A080608201223C210E956829000", "Montreal Public transport Card (OPUS) (Transport)\nhttps://www.stm.info/en/info/fares/opus-cards-and-other-fare-media/opus-card" }, { "3B6F0000805A080608201223C21113A6829000", "OPUS (Montreal and Quebec transport card) (Transport) (Transport)\nhttps://www.stm.info/en/info/fares/opus-cards-and-other-fare-media/opus-card" }, { "3B6F0000805A080608201223C21290FD829000", "OPUS Montreal Societe des Transports de Montreal Metro and Bus card. (Transport)\nhttps://www.stm.info/en/info/fares/opus-cards-and-other-fare-media" }, + { "3B6F0000805A080608201223C215C411829000", "Montreal OPUS Transportation Card for the STM, STL, RTM and RTL (Transport) (Transport)" }, + { "3B6F0000805A080608201223C21BAFB4829000", "OPUS card (Transport)\nhttps://www.stm.info/en/info/fares/opus-cards-and-other-fare-media/opus-card" }, { "3B6F0000805A0A010120031103DCB31B829000", "Card Transport 'Lignes d'Azur' of 'Metropole Nice Cote d'Azur'" }, { "3B6F0000805A0A01012003119361D7D7829000", "Carte Tecely (Reseau TCL: metro, tramway, bus et funiculaire de Lyon) (Idemia)" }, { "3B6F0000805A0A0102200311........829000", "Card << Oura ! >> of region Rhone-Alpes, Calypso standard (TER, Transisere)" }, @@ -1072,10 +1133,16 @@ const static atr_t AtrTable[] = { { "3B6F0000805A0A070620042C031B899B829000", "Israeli public transport 'RavKav' card (ASK variant) (Transport)\nhttp://www.dannorth.co.il/" }, { "3B6F0000805A0A070620042C031C112A829000", "Peronalized RavKav (Transport)\nhttps://ravkavonline.co.il/he/" }, { "3B6F0000805A0A070620042C03288444829000", "rav-kav (Transport)\nhttp://nohal.mot.gov.il/%d7%94%d7%92%d7%93%d7%a8%d7%95%d7%aa%20%d7%91%d7%a0%d7%95%d7%a9%d7%90%20%d7%9b%d7%a8%d7%98%d7%95%d7%a1%20%d7%97%d7%9b%d7%9d.aspx" }, + { "3B6F0000805A0A070620042C0490EFCB829000", "Rav-Kav Israel (Transport)\nhttps://ravkavonline.co.il" }, { "3B6F0000805A0A070620042DC1660B73829000", "Rav-Kav: Israel's Travel Card (Transport)" }, { "3B6F0000805A0A070620042DC169517A829000", "Card for bus (Transport)" }, + { "3B6F0000805A0A070620042DC2E8E270829000", "ravkav (Transport)" }, + { "3B6F0000805A0A070620042DC3229072829000", "Israelian public transportation smartcard for all bus and rail services, called a Rav-Kav, RavKav, or Rav Kav. This variant is NFC capable. (Transport)\nhttps://ravkavonline.co.il/" }, { "3B6F0000805A28010220122103346577829000", "ONYGO! pass\nhttp://www.region-basse-normandie.fr/pass-onygo" }, + { "3B6F0000805A280102201221C12AD1C8829000", "SIMPLI CITES (Transport)\nhttps://www.fluo.eu/" }, + { "3B6F0000805A280102201221C365AF0F829000", "SIMPLI CITE Stan (France) (Transport)\nhttps://www.reseau-stan.com/" }, { "3B6F0000805A2811421010122B260CD45A829000", "French transport card Navigo (Transport)\nhttps://www.iledefrance-mobilites.fr/je-gere-ma-carte" }, + { "3B6F0000805A28114210122B03791BB9829000", "RATP Navigo Easy Paris France (Transport)\nhttps://www.transilien.com/fr/page-tarifs/navigo-easy" }, { "3B6F0000805A28114210122B037A89AA829000", "Ile-de-France Mobilites (Navigo Easy) (Transport)\nhttps://www.iledefrance-mobilites.fr/titres-et-tarifs/supports/passe-navigo-easy" }, { "3B6F0000805A28114210122B037AED59829000", "Navigo Easy (Paris) (Transport)\nhttps://www.iledefrance-mobilites.fr/titres-et-tarifs/supports/passe-navigo-easy" }, { "3B6F0000805A28114210122B23A9E229829000", "Navigo(French transport) (Transport)\nhttp://www.navigo.fr/je-gere-ma-carte/" }, @@ -1120,6 +1187,8 @@ const static atr_t AtrTable[] = { { "3B6F0000805A28130210122B03F80BC3829000", "Korrigo Card (Transport in Rennes Area in France ) (Transport)\nhttps://www.star.fr/titres-tarifs/carte-korrigo/" }, { "3B6F0000805A28130210122B7500559A829000", "Contact card to handle personal travel tickets in the Britany area. Used by several travel operators like SNCF TER Bretagne, STAR in Rennes, BIBUS in Brest,.... (Transport)" }, { "3B6F0000805A28130210122B75021B8A829000", "KorriGo, smart transport card in France region Brittany (Transport)\nhttps://www.ter.sncf.com/bretagne/offres/carte-korrigo" }, + { "3B6F0000805A28130210122B7503FB01829000", "origo (France) (Transport)\nhttps://www.breizhgo.bzh/se-deplacer-en-bretagne/KorriGo" }, + { "3B6F0000805A28130210122B750C7E79829000", "Transportation card delivered by STAR (Transportation service from the city of Rennes, France) (Transport)\nhttps://www.star.fr/titres-et-tarifs/carte-korrigo/" }, { "3B6F0000805A28130210122B9292E642829000", "Transport card in cote d'or France (mobigo)" }, { "3B6F0000805A28130210122B9292E829829000", "French transport card of the city of Dijon and Cote d'or department. (Transport)\nhttps://www.viamobigo.fr/fr/acheter-mes-titres-de-transport-mobigo-en-cote-dor/176" }, { "3B6F0000805A28130210122B92D663FC829000", "Card 'Korrigo' region Bretagne, France, Bibus Brest Metropole public transport (Transport)\nhttps://fr.wikipedia.org/wiki/KorriGo" }, @@ -1132,6 +1201,7 @@ const static atr_t AtrTable[] = { { "3B6F0000805A2C06081010059316213D829000", "Portuguese Viva Card (Transport)\nhttp://www.portalviva.pt" }, { "3B6F0000805A2C0608101005932268D0829000", "Public transport card lisbon (Transport)\nhttp://www.portalviva.pt" }, { "3B6F0000805A2C0608101005932346E2829000", "Lisboa Viva (Transport)" }, + { "3B6F0000805A2C060810100593237A11829000", "Portuguese Lisboa Viva Viagem Transport Card (Transport)" }, { "3B6F0000805A2C11C31010057B01004B829000", "French Military Circulation card (Transport)" }, { "3B6F0000805A2C11C31010057B0A1DBA829000", "French military discount on SNCF trains card (Transport)" }, { "3B6F0000805A2C11C31010057B120D53829000", "French military transport card (Transport)" }, @@ -1156,11 +1226,16 @@ const static atr_t AtrTable[] = { { "3B6F0000805A2D060810100278324D6F829000", "Lisboa Viva card, public transport card of Lisbon (Portugal) (Transport)\nhttps://www.portalviva.pt" }, { "3B6F0000805A2D06081010027835EDCE829000", "Lisbon Transportation SmartCard (Transport)" }, { "3B6F0000805A2D06081010027848BBCC829000", "Lisbon Metro Monthly Student Pass (Transport)\nhttps://www.metrolisboa.pt/" }, + { "3B6F0000805A2D0608101005935C42FB829000", "Comboios de Portugal Transit Card (Transport)\nhttps://www.cp.pt/passageiros/pt/consultar-horarios/precos/cartao-cp" }, { "3B6F0000805A3407061500017917A7E2829000", "Rav-Kav multi-line travel ticket used in the public transportation system in Israel (Transport)\nhttps://www.gov.il/en/departments/guides/multi_line_card" }, + { "3B6F0000805A340706150001792A4B5C829000", "Rav Kav Transit Payment Card (Israel) (Transport)\nhttps://ravkavonline.co.il/" }, { "3B6F0000805A3B0706150101793E797B829000", "Rav Kav (Transport)\nhttp://alhakav.mot.gov.il/he/rav-kav" }, { "3B6F0000805A3B070615010279537211829000", "Israeli public transport card ('RavKav') (Transport)\nhttps://ravkavonline.co.il" }, { "3B6F0000805A3B07061501027956C5F4829000", "RAVKAV - Israel dual interface transport card (Calypso standard) (Transport)\nhttps://en.wikipedia.org/wiki/Rav-Kav" }, + { "3B6F0000805A3B070615010279C3C331829000", "Rav-Kav Israel (Transport)\nhttps://ravkavonline.co.il" }, { "3B6F0000805A3C0608140101C3805E38829000", "Lisboa VIVA - Lisbon public transport card (Transport)\nhttps://www.portalviva.pt/" }, + { "3B6F0000805A3C0608140101C4D4FEC4829000", "Metropolitan Transports of Lisbon NAVEGANTE Card (Transport)\nhttps://www.navegante.pt/viajar/cartoes" }, + { "3B6F0000805A3C0608140101C4D522FB829000", "Navegant Perdonal Card - Transportes Metropolitanos de Lisboa (Transport)\nhttps://www.navegante.pt/" }, { "3B6F0000805A3C1142141001274AC890829000", "Gemalto Celego G1 (Transport)" }, { "3B6F0000805A3C114214100127A46D02829000", "Navigo decouverte Paris (Transport)\nhttp://www.navigo.fr/titres/le-forfait-navigo-semaine-presentation/" }, { "3B6F0000805A3C114214100127B3C81B829000", "Transport card for Paris (France) and its region. Market name is Navigo (Transport)" }, @@ -1172,8 +1247,10 @@ const static atr_t AtrTable[] = { { "3B6F0000805A3C1142141001C17BC993829000", "Navigo Easy (Transport)\nhttps://www.ratp.fr/titres-et-tarifs/passe-navigo-easy" }, { "3B6F0000805A3C1142141001C17DA8CA829000", "Navigo Easy (France) transport card (Transport)\nhttps://www.ratp.fr/titres-et-tarifs/passe-navigo-easy" }, { "3B6F0000805A3C1142141001C185D47B829000", "Navigo Liberte+ -- French (Paris region) transport card (Transport)" }, + { "3B6F0000805A3C1142141001C2A40D5F829000", "'Pass Navigo Decouverte' - Parisian transport card (Transport)\nhttps://www.iledefrance-mobilites.fr/titres-et-tarifs/supports/passe-navigo-decouverte" }, { "3B6F0000805A3C1142141001C2BF7B46829000", "Navigo RATP (Transport)" }, { "3B6F0000805A3C1330141001C3568397829000", "'oura' card for leman express and ter sncf rhone-alpes (Transport)" }, + { "3B6F0000805A3C1330141001C4F81130829000", "Oura card which allows to travel across many transport networks of France region: Auvergne-Rhone-Alpes (Transport)\nhttps://www.oura.com/" }, { "3B6F0000805A3C23C4141001C02EF7F8829000", "MOBIB basic Brussels (with NFC) (Transport)\nhttps://mobib.be/en.html" }, { "3B6F0000805A3C23C4141001C02EFA97829000", "Brussels STIB MOBIB Classic (Transport)\nhttps://www.stib-mivb.be/mobib.html" }, { "3B6F0000805A3C23C4141001C02FDEFA829000", "MOBIB public transport card (Belgium); contacted IC (Transport)" }, @@ -1187,7 +1264,9 @@ const static atr_t AtrTable[] = { { "3B6F0000805A3D0706150101792CB636829000", "RavKav (Transport)" }, { "3B6F0000805A3D23C41501027937D7AE829000", "MOBIB - Brussels (Transport)\nhttps://www.stib-mivb.be/article.html?_guid=d02c7fb6-3e9c-3810-248e-eec4ee5ebc8c&l=fr" }, { "3B6F0000805A3D23C41501027949789C829000", "MOBIB basic (Transport)\nhttp://www.stib-mivb.be/article.html?_guid=30af0085-2483-3410-5394-a71daf08acd1&l=en#contentBodyList1" }, + { "3B6F0000805A3D23C4150102795A863C829000", "mobib transportation card (Transport)" }, { "3B6F0000805A3D23C415010279748A25829000", "Mobib (Brussels transport card) for the STIB-MIVB network (Transport)\nhttps://www.stib-mivb.be/article.html?_guid=d02c7fb6-3e9c-3810-248e-eec4ee5ebc8c&l=fr" }, + { "3B6F0000805A3D23C415010279A9E567829000", "MoBIB card, a medium for the transport tickets of the four Belgian public transport operators (Transport)\nhttps://mobib.be/" }, { "3B6F0000805A434F4C44000000000000829000", "LBB Berlin, MasterCard (ADAC branding?)" }, { "3B6F0000805A4880C1205001AEC00295829000", "Calypso SAM C1 (Transport)" }, { "3B6F0000806645460138180353023110829000", "Fabrica Nacional de Moneda y Timbre FNMT WG10\nhttp://www.fnmt.es/es/html/tage/fichaTarjeta/fp1_ta_01.asp" }, @@ -1198,7 +1277,7 @@ const static atr_t AtrTable[] = { { "3B6F00008066A20302023D0753023110829000", "Electronic purse of the Universidad Politecnica of Madrid (provided by Banco Santander)" }, { "3B6F00008066B007010107............9000", "Gemalto Santander Optelio TUI R7 with WG10 customized using Contact interface" }, { "3B6F00008066B0070101070753023110829000", "Banco Santander TUI/USC R7 - Gemalto Optelio/Desineo D72 (JavaCard) with WG10 (JavaCard)" }, - { "3B6F00008066B0070101070753023124829000", "Banco Santander TUI/USC R7 - Gemalto Optelio/Desineo D72 (JavaCard) with WG10 and Maestro (JavaCard)" }, + { "3B6F00008066B0070101070753023124829000", "Banco Santander TUI/USC R7 - Gemalto Optelio/Desineo D72 (JavaCard) with WG10 and Maestro (JavaCard)\nClient bizness card (Bank)" }, { "3B6F00008066B007010177............9000", "Other Optelio Card (Santander)" }, { "3B6F00008066B0070101770753023110829000", "University ID card (issued by Banco Santander Central Hispano)\n.\nUniversidad Nacional de Educacion a Distancia (UNED, Spain)\nhttp://www.uned.es/tarjeta\n.\nUniversitat Politecnica de Catalunya (UPC.edu)\nhttps://www.upc.edu/identitatdigital\n.\nUniversitat Ramon Llull (URL)\nhttp://www.url.edu/cont/url/carnet.php" }, { "3B6F00008066B0070101770753023124829000", "Santander 4B Maestro\nUniversity of Santiago de Compostela. Spain\nPolytechnical University of Madrid, Spain" }, @@ -1227,7 +1306,7 @@ const static atr_t AtrTable[] = { { "3B76130000806207418181", "TransLink card (discontinued San Francisco Bay Area transit card)" }, { "3B76980000009C11010102", "CyberFlex Access 32" }, { "3B771800004B4153414B4944", "Identification Kazakhstan Republic (passport)\nhttps://egov.kz/" }, - { "3B7812000047C403008FF19000", "Sattelite bg 23.5 East cryptoworks card" }, + { "3B7812000047C403008FF19000", "Satellite bg 23.5 East cryptoworks card" }, { "3B7812000054C401078FF19000", "XtraMusic listening card (Pay TV)" }, { "3B7812000054C40204FFFF6F04", "UPC Direct Satellite TV Card (Pay TV)\nhttp://www.upcdirect.com/" }, { "3B7812000054C402078FF19000", "Polish WIZJA TV pay-tv card for satellite receivers (Pay TV)" }, @@ -1247,11 +1326,14 @@ const static atr_t AtrTable[] = { { "3B781400000073C8400000", "e-tazkira (eID)" }, { "3B781800000073C80140009000", "The Kyrgyz Republic eID (eID)" }, { "3B781800000073C840000000009000", "VERISOFT REWARDO LOYALTY CARD and CUSTOM PERSONALIZATION PROJECTS FOR EXTERNAL ENTITIES (Loyalty)\nhttp://www.verisoft.com" }, + { "3B781800000073C84013009000", "Mastercard (Bank)" }, { "3B781800005448204E4944203.", "Thailand National ID (eID)" }, { "3B7818000100000000C31E6919", "Storage for passwords (Bank)" }, { "3B781800FF0073C84000009000", "NAB Visa Debit - Contact I/F (Bank)" }, + { "3B789400008684044930310604", "bank of china Debit Card (Bank)" }, { "3B789600000073C84000009000", "SAM card for acquirer module by lanit.ru (Bank)" }, { "3B789600005343066001079000", "Bank of America Travel Rewards Credit Card (Bank)\nhttps://www.bankofamerica.com/credit-cards/products/travel-rewards-credit-card/" }, + { "3B789600005343066201079000", "ATM Card (Bank)" }, { "3B789600008100035001079000", "RMA BMCE BANK CARD (Bank)" }, { "3B791100008054434F4C44829000", "amazon.de / VISA / LBB Debit Card (Bank)" }, { "3B79130000806416030183829000", "Raiffeisen VPay Debit Card (Bank)\nhttp://raiffeisen.ch" }, @@ -1262,11 +1344,13 @@ const static atr_t AtrTable[] = { { "3B791800008054434F4C44829000", "LBB VISA Card" }, { "3B7918000080634B560283079000", "Pay charge of South Korean Highway Tollgate, It named hi-pass. This card is sales by 'SM hiplus', and card name is 'Greencar Postpaid hi-pass Card'. In this name, 'Greencar' means South Korea's Car Sharing Service. This card from Rented car. (Transport)\nhttps://www.lottecard.co.kr/" }, { "3B79180000806355500183079000", "TEST SAM Card (espark) (Other)" }, + { "3B79180000806355561183039000", "Hi-Pass (Other)" }, { "3B79180000806355561283079000", "'hi-pass+ Prepaid hi-pass Card' pay charge of South Korean Highway Tollgate. Sold by 'SM hiplus' (Transport)\nhttp://www.hipluscard.co.kr/" }, { "3B799400005901010E016B0102A9", "Vending machine payment card ('Necta' brand)" }, { "3B79940000EB03010102700102A9", "Sodexo - Spanish vending machines (Other)\nhttp://es.sodexo.com/home.html" }, { "3B79940000F704010103800102A9", "Pelican Rouge, vending machine (Other)\nhttp://colnect.com/es/functional_cards/functional_card/26065-Maquinas_Cafe_-_Pelican_Rouge-Pelican_Rouge-Vending-Espa%C3%B1a\nhttp://www.pelicanrouge.co.uk/en-uk/about-us" }, { "3B7995000054454C454D10211010", "Israeli Identity Card (eID)\nhttp://smartid.gov.il/English/Pages/default.aspx" }, + { "3B799600002001010601000100E9", "Casino (Other)" }, { "3B799600005448204E494420313.", "Thai National ID Card (eID)" }, { "3B799800005001010401000101A9", "Gemalto PayFlex used in Aristocrat System 7000 Casino Management System (South Africa only)" }, { "3B79980000EB03010000700101A9", "Casino Rio Patras, Greece" }, @@ -1287,16 +1371,17 @@ const static atr_t AtrTable[] = { { "3B7A9600008065A201200100303D72D641", "Oman eID (eID)" }, { "3B7A9600008065A20120013D72D641", "Oman eID (eID)" }, { "3B7A9700008065B08520040272D64.", "OMAN EID CARD (eID)" }, + { "3B7A9700008065B08521040272D641", "Oman eID (eID) (eID)\nhttps://idp.pki.ita.gov.om/" }, { "3B7B..000080620.515646696E454944", "Setec SetCOS 5.1.0" }, { "3B7B..00008065B083......83009000", "IDClassic 3XX Cards (without MPCOS Applet - FIPS)" }, - { "3B7B11000031FE45436F6D624F532000", "Debit card emmited by Societe Generale Morocco (Bank)" }, + { "3B7B11000031FE45436F6D624F532000", "Debit card emitted by Societe Generale Morocco (Bank)" }, { "3B7B1800000031C06477E30300829000", "Oberthur Cosmopolic 64K v5.2 D" }, { "3B7B1800000031C06477E91000019000", "Oberthur Card Systems: Cosmo 64 RSA V5.4 (ISK Key Set: 404142 .. 4E4F)" }, { "3B7B1800000031C06490E31100829000", "oberthur card in the middle http://postarca.posta.si/downloadfile.aspx?fileid=16918 (eID)\nhttp://postarca.posta.si/" }, { "3B7B1800000031C064C6FC1000079000", "Sberbank of the RUSSIAN federation" }, { "3B7B1800000031E85427E60000019000", "Oberthur ID-One COSMO 64k v.5" }, - { "3B7B180000806201545646696E454944", "FineID identity card for organizations\nhttp://fineid.fi/default.aspx?id=491\nhttp://www.opensc-project.org/opensc/wiki/FinnishEid" }, - { "3B7B94000080621[12]515646696E454944", "Finnish Electronic ID card (fineid card www.fineid.fi)" }, + { "3B7B180000806201545646696E454944", "FineID identity card for organizations\nhttps://dvv.fi/en/organisation-cards\nhttps://github.com/OpenSC/OpenSC/wiki/Finnish-FINEID" }, + { "3B7B94000080621[12]515646696E454944", "Finnish Electronic ID card for persons (Former FINeID card)\nhttps://dvv.fi/en/citizen-certificate-and-electronic-identity" }, { "3B7B9400008065521607865383009000", "Truemove H Thailand (Telecommunication)\nhttp://truemoveh.truecorp.co.th/" }, { "3B7B9400008065B083010[13]7483009000", "Gemplus GemXpresso Pro R3 (E64 PK)" }, { "3B7B9500008065B08301047483009000", "Gemplus GemXpresso Pro 64K R3 FIPS v2" }, @@ -1341,8 +1426,9 @@ const static atr_t AtrTable[] = { { "3B7D94000080318065B08311C0A983009000", "GemXpresso R4 72K\nNational ID card of Republic of Lithuania (2007-2012)" }, { "3B7D95000080318065B08302047E83009000", "Gemalto's Classic TPC HM CC Mifare 1K White PVC\n(Old name GemSafeXpresso 64K)" }, { "3B7D95000080318065B08311....83009000", "Portuguese ID Card (eID)\nhttp://www.cartaodecidadao.pt/" }, + { "3B7D96000080318065B07549170F83009000", "DoD CAC card issued ~October 2020, Gemalto TOP DL V2.1 144K, Geneva Conventions Identification Card (PKI)\nhttps://www.cac.mil/" }, { "3B7D96000080318065B0830201F383009000", "Gemalto IDClassic 340" }, - { "3B7D96000080318065B0831100C883009000", "GEMALTO Clasic TPC IM CC" }, + { "3B7D96000080318065B0831100C883009000", "GEMALTO Classic TPC IM CC" }, { "3B7D96000080318065B0831111AC83009000", "GEMALTO WM GX4 72 DHS TSA" }, { "3B7D96000080318065B0831111E583009000", "Gemalto TOP DL v2 StdR\neCPF (Cadastro de Pessoas Fisicas) from Imprensa Oficial do Brasil\nIdentidade digital (e-CPF) from Caixa\nhttp://www.caixa.gov.br/\nIngenico Sign/Kit Telium TETRA (Developer kit signature card)\nhttps://developer.ingenico.com/hc/en-gb\nBrazilian 'e-CNPJ' card, issued by Certisign (Safesign)" }, { "3B7D96000080318065B0831113AC83009000", "CAC card (GEMALTO GCX4 72K DI)" }, @@ -1375,7 +1461,7 @@ const static atr_t AtrTable[] = { { "3B7E9400008025A00000002856801021000114", "CryptoPlus ProID, students ISIC card at University of Zilina, Slovakia\nTOP GX4 72k contact chip using JavaCard v2.2.1. and GlobalPlatform 2.1.1" }, { "3B7E9400008025A00000002856801024000111", "'OpenCard' - card issued by Prague local authority\ndual card: chip used for electronic certificates" }, { "3B7E9400008025D20310010056000000010100", "Personal identity card (ID card) of Czech Republic" }, - { "3B7E9400008025D20310010056000000020200", "Official Czech Republic identity card issued since 7/2018 (eID)\nhttps://www.eidentita.cz/" }, + { "3B7E9400008025D20310010056000000020200", "Official Czech Republic identity card issued since 7/2018 (eID)\nhttps://info.identitaobcana.cz/eop/" }, { "3B7E94000080318066475091450313830F9000", "JTOP Trusted Logic" }, { "3B7E940000803180664750A4450511830F9000", "JTOP Trusted Logic" }, { "3B7E9500008031807334118082900000000000", "IAS (Identification, Authentication, and electronic Signature) Premium, profil DGME from Gemalto" }, @@ -1410,17 +1496,19 @@ const static atr_t AtrTable[] = { { "3B7F1300008031C0520B71640566983683839000", "OuroCard VISA International - Banco do Brasil" }, { "3B7F1300008031C0520BBB640566983683839000", "VISA OUROCARD Banco do Brasil S.A." }, { "3B7F1300008031C0520D1E640566946183839000", "Universitat Politecnica de Valencia ID Visa Electron Card\nhttp://www.upv.es" }, - { "3B7F1300008031C0520DEA640566946183839000", "Universitat Rovira i Virgili Identification Card\nThis card enables his/her propietary to sign documents and to access to rooms, laboratories and classes." }, + { "3B7F1300008031C0520DEA640566946183839000", "Universitat Rovira i Virgili Identification Card\nThis card enables his/her proprietary to sign documents and to access to rooms, laboratories and classes." }, { "3B7F1300008031C0520ED4640566966183839000", "BBVA Blue Card (VISA)\nwww.bluebbva.com" }, { "3B7F1300008031C05210496402B3027083839000", "Bank of Brazil (Bank)\nhttp://www.bb.com.br/pbb/pagina-inicial" }, { "3B7F1300008031C05210686402B3027083839000", "Santander VISA (Brazil) (Bank)" }, { "3B7F1300008031C05210A46402B3027083839000", "EMV Smartcard Reader (Other)\nSaraiva (Banco do Brasil) - VISA (Bank)\nhttps://www.bb.com.br/pbb/pagina-inicial/voce/produtos-e-servicos/cartoes#/" }, { "3B7F1300008031C052112F640569937083839000", "Banco do Brasil (Bank)\nhttp://www.bb.com.br/" }, { "3B7F1300008031C05212936402B3027083839000", "Visa Infinite issued by Banco do Brasil (www.bb.com.br)\nManufactured by Giesecke & Devrient (G&D www.gi-de.com)" }, + { "3B7F1300008031C05213076402B3023783839000", "Banco do Brasil ELO Debito (Brazil) (Bank)" }, { "3B7F1300008031C052130B6402B3023783839000", "Visa Ourocard Platinum from Banco do Brasil" }, { "3B7F1300008031C0521366640566983683839000", "VISA Platinum from Banco do Brasil" }, { "3B7F1300008031C05214D5640566966183839000", "Visa Electron Debit Card issued by Spain Caja Madrid (www.cajamadrid.es)" }, { "3B7F1300008031C0521554640566983683839000", "VISA Card from Banc Sabadell in Spain" }, + { "3B7F1300008031C0521563640200647183839000", "VISA CREDIT (Bank)" }, { "3B7F1300008031C05215B8640200647183839000", "Debit classic card banorte 'banco mercantilmdel norte' (Bank)\nhttps://www.banorte.com/" }, { "3B7F1300008031C05215C7640569937083839000", "Brazil Bank Debit Cart - Visa Electron (Banco do Brasil) (Bank)" }, { "3B7F1300008031C05215CB640566966183839000", "Bank, Spanish group BANKIA (www.bankia.es)\nVisa, Servired\nManufactured by Saetic\nhttp://www.saetic.es/" }, @@ -1488,13 +1576,16 @@ const static atr_t AtrTable[] = { { "3B7F960000006A444E4965200101550421039000", "DNI electronico (Spanish electronic ID card) (eID)\nhttp://www.dnielectronico.es" }, { "3B7F960000006A444E4965200177980311039000", "Spanish ID card (DNIe) (eID)\nwww.dnielectronico.es/" }, { "3B7F960000006A464E4D54030411430430039000", "CERES Spanish SmartCard from the 'Fabrica Nacional de Moneda y Timbre' (FNMT) (eID)\nhttp://www.cert.fnmt.es/" }, + { "3B7F960000006A54494633000101550422039000", "DNIe Spain (eID)\nhttps://www.dnielectronico.es/PortalDNIe/" }, { "3B7F96000000B854311007900000000000000000", "Mastercard (Bank)" }, { "3B7F96000000B854311107900000000000000000", "STPay-Gold (JavaCard)\nhttp://www.st.com/en/secure-mcus/stpay-gold.html" }, { "3B7F9600003100DE525001001500000000000000", "VALES (Bank)" }, + { "3B7F9600008031805843657274756D3031829000", "Certum Electronic Seal (PKI)" }, { "3B7F9600008031806555850300EF124140829000", "Civil ID (eID)" }, { "3B7F96000080318065B0842327E5120FFE829000", "Gemalto IDPrime MD 3810 dual interface smartcard ISO 7816, ISO 14443 and NFC (PKI)\nhttp://www.smartcardfocus.com/shop/ilp/id~672/gemalto-idprime-md-3810-dual-interface-smartcard/p/index.shtml" }, { "3B7F96000080318065B084413DF612004C829000", "Serasa Experian (Other)" }, { "3B7F96000080318065B084413DF6120FFE829000", "Gemalto IDPrime MD" }, + { "3B7F96000080318065B084413DF612FFFE829000", "THALES IDCore 30 B (JavaCard)\nhttps://cpl.thalesgroup.com/access-management/idcore-java-card" }, { "3B7F96000080318065B084534C0F12037B829000", "Serbian International Student Identity Card (ISIC) (eID)\nhttps://www.gpa.rs/kartice" }, { "3B7F96000080318065B0846160FB120FFD829000", "IDPrime 930/3930 FIPS Level 2 or Level 3 (T=0 CT=96) (BAI1, BAI2, BAI3, BAI5, BAI7) (PKI)" }, { "3B7F96000080318065B0850201F3120FFF829000", "Swedish National Identity Card (eID)\nhttps://polisen.se/tjanster-tillstand/pass-och-nationellt-id-kort/" }, @@ -1510,18 +1601,25 @@ const static atr_t AtrTable[] = { { "3B7F96000080318065B085040120120FFF829000", "Belgian eID v1.8 (eID)\nhttps://github.com/Fedict/eid-mw" }, { "3B7F96000080318065B085040120F20001829000", "Health Insurance Institute of Slovenia - Health Insurance Card Gen. 3 (HealthCare)" }, { "3B7F96000080318065B085040120F20002829000", "Health Insurance Institute of Slovenia - Professional Card Gen. 3 (HealthCare)" }, + { "3B7F96000080318065B085050011120FFF829000", "LuxTrust card (Luxembourg qualified electronic signature / authentication system) (Other)\nhttps://www.luxtrust.com/en/professionals/smartcard" }, + { "3B7F96000080318065B0855956FB120268829000", "qualified certificate (eID)\nhttps://www.elektronicznypodpis.pl/en/offer/qualified-certificates/" }, + { "3B7F96000080318065B0855956FB1202C1829000", "Gemalto USB (eID)" }, { "3B7F96000080318065B0855956FB12FFFE829000", "IDCORE 3140 (JavaCard)" }, { "3B7F9600008031B865B0850300EF1200F6829000", "Finnish identity card (eID)\nhttp://vrk.fi/en/citizen-certificate" }, { "3B7F9600008031B865B08504021B1200F6829000", "Finnish ID-card v5.0(?) (eID)\nhttps://dvv.fi/en/fineid-specifications" }, + { "3B7F9600008031B865B085050011122460829000", "wasim finnish id (eID)" }, { "3B7F960000EA5CBDF07AEB6541894B0400000000", "Gemalto TOP IM GX4 (Other)" }, + { "3B7F960080318065B084413DF612004C829000", "Black (PKI)\nhttps://certificadodigital.imprensaoficial.com.br" }, { "3B7F9700000031C173C821106457533430009000", "PNC Bank VISA card (Bank)" }, + { "3B7F97000080318065B08466693912FFFE829000", "IDCore3230 build 6.8, test APDU applet (JavaCard)" }, { "3B7F980000805A070404000102028458F2829000", "Mobili'carte (Angouleme mobility services card) (Transport)\nhttp://www.mobilite-grandangouleme.fr/" }, { "3B800181", "NXP Semiconductors VNG OpenPGP Card (Other)\nhttps://www.vng.com.vn/" }, - { "3B80800101", "ISO 14443 Type B without historical bytes\nElectronic Passport\nSpanish passport (2012)\nCanadian Passport\nVenez_Prox" }, + { "3B801FC78031E073FE211163407163830790009A", "Intertelecom UA RUIM card (Telecommunication)\nhttps://www.intertelecom.ua/" }, + { "3B80800101", "ISO 14443 Type B without historical bytes\nElectronic Passport\nSpanish passport (2012)\nCanadian Passport\nVenez_Prox\nCarta nazionale dei servizi\nhttps://www.agid.gov.it/it/piattaforme/carta-nazionale-servizi" }, { "3B810020", "Old MobilCOM GSM (Telecom D1) (Telecommunication)" }, { "3B81010080", "Rompetrol Romania Fill&Go Fuel Card (Other)" }, { "3B811F00CC52", "eToken R2 2242" }, - { "3B8180018080", "RFID - ISO 14443 Type A - NXP DESFire or DESFire EV1 or EV2\n'Reiner LoginCard' (or 'OWOK', how they name it) - they have been distributed by a german computer magazine ('Computer BILD')\nhttps://cardlogin.reiner-sct.com/\nBelgium A-kaart (Antwerp citycard)\nOyster card - Transport for London (second-gen 'D')\nhttps://en.wikipedia.org/wiki/Oyster_card\nKaba Legic Advant 4k\nSydney Opal card public transport ticket (Transport)\nhttps://www.opal.com.au\nTH Koln (University of Applied Sciences Cologne) - Student Identity Card\nhttps://www.th-koeln.de/en/academics/multica_5893.php\nGerman red cross blood donation service\nhttp://www.blutspende-nordost.de/\nGreater Toronto/Hamilton/Ottawa PRESTO contactless fare card\nhttp://en.wikipedia.org/wiki/Presto_card\nElectic vehicle charging card of the EMSP EnBW Energie Baden-Wurttemberg AG, Tarif ADAC e-Charge, Germany" }, + { "3B8180018080", "RFID - ISO 14443 Type A - NXP DESFire or DESFire EV1 or EV2\n'Reiner LoginCard' (or 'OWOK', how they name it) - they have been distributed by a german computer magazine ('Computer BILD')\nhttps://cardlogin.reiner-sct.com/\nBelgium A-kaart (Antwerp citycard)\nOyster card - Transport for London (second-gen 'D')\nhttps://en.wikipedia.org/wiki/Oyster_card\nKaba Legic Advant 4k\nSydney Opal card public transport ticket (Transport)\nhttps://www.opal.com.au\nTH Koln (University of Applied Sciences Cologne) - Student Identity Card\nhttps://www.th-koeln.de/en/academics/multica_5893.php\nGerman red cross blood donation service\nhttp://www.blutspende-nordost.de/\nGreater Toronto/Hamilton/Ottawa PRESTO contactless fare card\nhttp://en.wikipedia.org/wiki/Presto_card\nElectric vehicle charging card of the EMSP EnBW Energie Baden-Wurttemberg AG, Tarif ADAC e-Charge, Germany" }, { "3B8180018181", "Ticket (Transport)" }, { "3B82005518", "GSM SIM of TIM ITalian mobile company" }, { "3B82005519", "GSM card 'Hi' (KPN brand)" }, @@ -1575,9 +1673,12 @@ const static atr_t AtrTable[] = { { "3B8580012063CBAD0021", "NUMBER26 MasterCard (Bank)\nhttps://number26.eu" }, { "3B8580012063CBAD2001", "KBC Ireland MasterCard Debit Card (Bank)\nhttp://www.kbc.ie/" }, { "3B8580012063CBAD80A1", "VISA Caisse d'Epargne (Bank)\nVISA BNP Paribas (NFC) (Bank)" }, - { "3B8580012063CBB7201B", "Halifax Clarity Mastercard (Bank)" }, + { "3B8580012063CBB7003B", "Visa card issued by OTP Bank (Hungary) (Bank)\nhttps://www.otpbank.hu/portal/en/Retail/Bankcards" }, + { "3B8580012063CBB7201B", "Halifax Clarity Mastercard (Bank)\nCredit Agricole Prepaid - Mastercard" }, { "3B8580012063CBB780BB", "First Direct Debit (Bank)" }, { "3B8580012063CBB880B4", "VISA Cleo LCL (Bank)\nhttps://particuliers.lcl.fr/quotidien/cartes/carte-visa-cleo/" }, + { "3B8580012063CBC6004A", "Gold Mastercard Credit Agricole (Bank)" }, + { "3B858001300101301014", "German public health insurance card (,,Gesundheitskarte'), 2.1 generation (G2.1), issuer Techniker Krankenkasse (HealthCare) (HealthCare)\nhttps://www.gematik.de/telematikinfrastruktur/egk" }, { "3B858001300101303034", "German Health Insurance Card 'elektronische Gesundheitskarte' (eGK) / European Health Insurance Card (EHIC) (HealthCare)\nhttps://fachportal.gematik.de/karten-und-identitaeten/elektronische-gesundheitskarte" }, { "3B8580014A4D52544441", "JMRTD - Java Machine Readable Travel Document (ePassport emulator\nhttp://jmrtd.org/)" }, { "3B8580014D7945494478", "MyEID" }, @@ -1588,21 +1689,27 @@ const static atr_t AtrTable[] = { { "3B858001A000000000A4", "Italian Passport (passport)" }, { "3B85C0FA216380630101051B", "Public Distribution System\nhttp://cg.nic.in/pdsonline/corepds/" }, { "3B8640206801010204AC", "Activcard Gold, SchlumbergerSema Cryptoflex 8k" }, + { "3B8640FA808101520301", "SCOSTA (JavaCard)" }, { "3B86800100049AEE00CABD", "ASK CPL 528" }, { "3B86800103020211000015", "cash bee card. transportation and payment in south korea (seoul) (Transport)\nhttp://cashbee.co.kr" }, { "3B86800106757781028000", "NXP Mifare DESFire EV1 8K / MF3ICD81\n'OpenCard' - card issued by Prague local authority\ndual card: RFID (1k Mirfare) used for parkimeters and as public traffic ticket" }, { "3B86800106757781028F00", "Desfire (eID)" }, { "3B8680013930433032317E", "Chase Freedom VISA card" }, + { "3B86800143686970313733", "PostFinance Switzerland (Bank)\nhttp://www.postfinance.ch" }, { "3B86800144492030324D65", "Lufthansa Miles & More Gold MasterCard PayPass\nRaiffeizen Bank, Russia, MasterCard paypass card" }, { "3B8680014449203032567E", "DKB VISA paywave (Bank)\nhttp://www.visaeurope.com/en/cardholders/visa_paywave.aspx" }, { "3B8680014A434F50333012", "Mifare ProX T=CL" }, { "3B8680014A434F50333113", "JCOP BIO 31 Contactless Card" }, { "3B8680014B4F4E4112203E", "Citibank Russia, Mastercard paypass" }, + { "3B8680014B4F4E4113213E", "Vivid Money Visa Debit (Bank)\nhttps://vivid.money" }, { "3B8680014B4F4E41141109", "Mastercard paypass enabled credit card" }, { "3B8680015741524930310B", "Gusto Karta (Bank)\nhttps://www.gustokarta.cz" }, { "3B86800157575061737336", "WWPass Passkey (eID)\nhttps://www.wwpass.com/passkey" }, + { "3B8680018031C15211182C", "IDEMIA Cosmo V8.0 with a PIV applet (contactless) (PKI)" }, + { "3B8680018031C152411A7E", "IDEMIA Cosmo V8.1 with a PIV applet (contactless) (PKI)" }, { "3B86800180540410010FC9", "Nickel.eu prepaid account (Bank)\nhttps://nickel.eu" }, { "3B868001C1052F2F01BC7E", "Contactless interface to St. Petersburg unified card, Russia (Edinaia karta peterburzhtsa) (Other)\nhttps://ekp.spb.ru/" }, + { "3B868001F04938DE0C3064", "blyt mtrw (Transport)\nhttps://ezpay.ir/" }, { "3B868131703445504120454B08", "Austrian Quick E-purse 'Einreichkarte' (transfer card)\nhttp://www.quick.at/" }, { "3B8780014D49464152452B39", "PEKA CARD (JavaCard)" }, { "3B8780014D525444312E3026", "Russian Foreign Passport (passport)" }, @@ -1619,21 +1726,26 @@ const static atr_t AtrTable[] = { { "3B8780017743495002000128", "CIPURSE (transport)\nhttp://www.osptalliance.org/" }, { "3B8780018031807396128040", "Public transport: VRS Verkehrsverbund Rhein-Sieg (Germany, North_Rhine-Westphalia)\nhttp://www.vrsinfo.de/englisch/the-vrs/vrs-about-us.html" }, { "3B878001803198738401E039", "Austrian Passport" }, + { "3B878001803198738601E03B", "German passport (passport)" }, { "3B8780018031B8738401E019", "Personalausweis (German Identity Card) (eID)" }, - { "3B8780018031B973842160B8", "Hungarian eID (2016) (eID)\nhttp://kekkh.gov.hu/Eszemelyi/" }, + { "3B8780018031B8738601E01B", "Personalausweis (German Identity Card) (eID)\nhttps://www.personalausweisportal.de/" }, + { "3B8780018031B973842160B8", "Hungarian eID (2016) (eID)\nhttps://eszemelyi.hu/en/" }, { "3B8780018031C073D620C032", "RFID GeldKarte (girogo)" }, { "3B8780018031C073D621C033", "Sparkasse Hannover - German contactless GeldKarte (RFID, NFC, girogo)\nhttps://www.geldkarte.de/_www/en/pub/geldkarte/service_navigation/about_us.php" }, { "3B8780018031C073D631C023", "girocard contactless (Bank)\nhttps://www.girocard.eu/english.html" }, + { "3B8780018073842140900080", "Queensland drivers licence (eID)\nhttps://www.qld.gov.au/transport/licensing/driver-licensing" }, { "3B878001C10521300077C165", "Mifare Plus (Other)\nhttp://www.Mifare.net" }, { "3B878001C1052F2F0035C730", "MiFare Plus 2K 'S' (Other)" }, { "3B878001C1052F2F01BCD6A9", "RFID - ISO 14443 Type A - NXP Mifare Plus" }, { "3B87813140434D4643203133316F", "Telekom Paycard" }, { "3B88010003050668D06080D1", "125 Khz HID Proximity card (eID)\nhttps://www.hidglobal.com/product-display/cards-and-credentials/hid-proximity" }, { "3B88014B415A544F4B454E82", "Kaztoken (eID)\nhttp://kaztoken.kz/" }, + { "3B88018056536F6C6F203272", "SoloKeys Solo 2 Security Key (PKI)\nhttps://github.com/solokeys/solo2" }, { "3B888001000000000000000009", "Personalausweis (German Identity Card) (eID)" }, { "3B8880010000000000419100D9", "EffiTIC (Transport)\nwww.effitic.com" }, { "3B888001000000000071710009", "OPUS Public Transport card (Montreal, Quebec, Canada) - Oberthur based\nhttp://carteopus.info/\nACTV (Italy) transport card (RFID)" }, { "3B8880010000000000718100F9", "Navigo Decouverte (RFID interface) (Transport)" }, + { "3B8880010000000000817000F8", "Qantas Frequent Flyer Loyalty Card - Contactless (Loyalty)" }, { "3B8880010000000000817700FF", "KBC Maestro card (Bank)" }, { "3B88800100000000008187000F", "ING Bank Card (Bank)\nhttps://www.ing.nl/particulier/betalen/passen/betaalpas/contactloos-betalen-met-uw-betaalpas/index.html" }, { "3B888001000000000081911009", "Trenitalia (Italy) fidelity card 'CartaFreccia' (RFID)" }, @@ -1656,8 +1768,10 @@ const static atr_t AtrTable[] = { { "3B888001000005E0B381A1007F", "Japanese JPKI card (aka JINC card) (eID)\nhttps://github.com/jpki/myna" }, { "3B888001000014E0B38191005E", "'JUKICARD', the Basic Resident Registration Card in Japan (eID)" }, { "3B888001000041E0B381A1003B", "ID card issued by Japan government (eID)\nhttps://www.kojinbango-card.go.jp/mynumber/index.html" }, + { "3B8880010000C9047781730041", "D-TRUST Card 4.1, qualified signature card (eID)\nhttps://www.d-trust.net" }, { "3B8880010073C8400000900062", "NXP JCOP 31 V2.2 36K - RFID I/F\nBarclaycard Visa Wave & Pay - RFID I/F\nCIBC Visa" }, { "3B8880010073C8401300900071", "Nokia 6131 NFC phone\nhttp://wiki.forum.nokia.com/index.php/Nokia_6131_NFC_-_FAQs\nGiesecke & Devrient's (G&D) Sm@rtCafe Expert 3.1\nAmex Bank of Canada American Express\nTD Canada Trust Visa\nTD Canada Trust Access Card (Visa Debit)" }, + { "3B88800100883C1F77819500C1", "Polish Passport (passport)" }, { "3B88800100DDA611F771850060", " 'Pyrelis' card, PAU (France) public transport card. (Calypso card). (Transport)\n http://www.reseau-idelis.com/930-Billettique-IDELIS.html" }, { "3B888001040200200071C140DF", "Seoul Citypass+ T-Money Card" }, { "3B8880011000000000817000E8", "Tap&Go MasterCard Sim Card (Bank)\nhttps://www.tapngo.com.hk" }, @@ -1671,7 +1785,8 @@ const static atr_t AtrTable[] = { { "3B8880011CF0E111F771850016", "CEPAS Card (Concession card issued by Land Transport Authority Singapore) (Transport)" }, { "3B88800130415654000000077D", "Avtor ID Key (eID)\nhttp://avtor.ua/" }, { "3B888001304C47127783D50001", "elesec - TCOS 3.0 Signature Card (eID)\nhttps://www.telesec.de/de/tcos/support/downloadbereich/category/28-leistungsbeschreibung" }, - { "3B88800130ABAB017781B70079", "Italian healtcare card (TS) National Service Card (CNS) (HealthCare)" }, + { "3B88800130ABAB017781B70079", "Italian healthcare card (TS) National Service Card (CNS) (HealthCare)" }, + { "3B888001310109000000000030", "Indonesian Electronic Driving License (e-SIM) (Other)\nhttps://polri.go.id/sim, https://www.digitalkorlantas.id/sim/" }, { "3B88800131CCCC017781C1000E", "Ideal v 1.4 (Transport)" }, { "3B88800131CCCC017783A1006C", "Chile RUT (eID)" }, { "3B88800131F35E110081950090", "Venez_Omnikey" }, @@ -1681,6 +1796,7 @@ const static atr_t AtrTable[] = { { "3B8880014241454944312E316C", "BiH eID card (eID)" }, { "3B88800143433169AA200000DB", "PostFinance Switzerland (Bank)\nhttp://www.postfinance.ch" }, { "3B888001434C6169726520360F", "VISA credit card with NFC payment function (Bank)\nhttp://www.visa.ca/en/personal/visa-paywave/index.jsp" }, + { "3B8880014431314352322E3070", "javacard.pro card (JavaCard)\nhttps://javacard.pro/" }, { "3B88800146494445534D4F3167", "Fidesmo card (install or uninstall JavaCard applets or Mifare-based services on the field, using the Fidesmo Android App. (JavaCard))\nhttps://developer.fidesmo.com/" }, { "3B8880014A434F50763234315E", "RFID - ISO 14443 Type A - NXP JCOP\nNXP J3A081 JavaCard (contactless interface)" }, { "3B88800150FFFF117783D50069", "Gematik TSYS eHBA G2.1 (HealthCare)" }, @@ -1694,19 +1810,23 @@ const static atr_t AtrTable[] = { { "3B888001990200D10304220167", "Debit card (Bank)" }, { "3B888001C91207520200811014", "electronic Tickes from the german Transport Association VGN (Verkehrsgemeinschaft Niederrhein)" }, { "3B888001D10386050080800058", "Resident Identity Card of People Republic of China (Second Generation with RF Feature) (eID)\nhttp://www.gov.cn/banshi/2005-08/02/content_19457.htm" }, + { "3B888001E1686C17778395009A", "Algerian ID card (eID)" }, { "3B888001E1E1F35E1377830043", "ePerso - German ID card (issued 2011) (eID)" }, + { "3B888001E1F35E113381970071", "DK passport (passport)" }, { "3B888001E1F35E117381A50003", "US passport (2007)" }, - { "3B888001E1F35E117781950037", "Belgian Passport (passport)" }, + { "3B888001E1F35E117781950037", "Belgian Passport (passport)\nFinnish Passport (passport)" }, { "3B888001E1F35E117781A10003", "Spanish ID know as DNIe (eID)\nhttp://www.dnielectronico.es" }, { "3B888001E1F35E117781A50007", "US passport (2012)" }, { "3B888001E1F35E117781C72045", "French passport (2007-2008)" }, { "3B888001E1F35E117781E10043", "DNIE Spain (eID) Contactless (eID)\nhttp://www.dnielectronico.es/PortalDNIe/" }, + { "3B888001E1F35E117781E16023", "DNIe v4 (Spanish eID) - contactless interface (PC/SC wrapped 14443 Type B ATR) (eID)\nhttps://www.dnielectronico.es" }, { "3B888001E1F35E1177830000A0", "Residence permit (eID)\nhttp://de.wikipedia.org/wiki/Aufenthaltstitel" }, { "3B888001E1F35E117783950035", "French biometric ePassport (issued in 2012)" }, { "3B888001E1F35E117783D50075", "German Passport (ePass) (issued June 2009)" }, { "3B888001E1F35E117783D70077", "Spanish Electronic Passport 2.0 (passport)\nhttps://www.dnielectronico.es/PortalDNIe/PRF1_Cons02.action?pag=REF_1080&id_menu=56" }, { "3B888001E1F35E117787950031", "Dutch Government Pilot E-rijbewijs (eID)\nhttps://www.digid.nl/over-digid/kaartlezer-pilot" }, { "3B888001E1F35E1180879500C6", "Irish Driver Learner Permit (Other)" }, + { "3B888001E1F35E11B381A500C3", "Australian Passport (passport)\nhttps://www.passports.gov.au/" }, { "3B888001E1F35E1377830000A2", "ePerso - German ID card (issued 2013)" }, { "3B888001E1F35E137783D50077", "ePerso - German ID card (issued 2011)" }, { "3B88813120550057696E4361726429", "SmartCard for Windows 1.0" }, @@ -1717,6 +1837,7 @@ const static atr_t AtrTable[] = { { "3B894014474732364D35323830", "GSM-SIM e-plus (1800MHz)" }, { "3B898001006404150102009000EE", "German Passport (issued Apr 2007)" }, { "3B898001006404280302009000D1", "TCOS 3.0 release 2 on Philips P5CD080 (PKI)\nhttps://www.digchip.com/datasheets/parts/datasheet/1019/P5CD080.php" }, + { "3B898001024D4B4D574B534B5411", "Polish National ID (eID)\nhttps://www.gov.pl/web/e-dowod/" }, { "3B8980013131313054434F535052", "Seven-Eleven Value Card / Smart Purse - Thailand (Contactless) (Other)\nhttp://www.7eleven.co.th/about7card.php" }, { "3B8980013233324353435333363E", "CSCS Smartcard (passport)\nhttp://getgosmart.io" }, { "3B89800141434F534A763130311A", "ACS ACOSJ (Combi) (JavaCard)\nhttp://www.acs.com.hk/en/products/405/acosj-java-card-combi/" }, @@ -1737,13 +1858,15 @@ const static atr_t AtrTable[] = { { "3B89800150565F4A33413034305D", "Java Card J3A040 (JavaCard)\nhttp://smartcardsource.com/contents/en-ca/d9_JCOP-NXP-cards.html" }, { "3B898001535049564B4559373044", "Taglio PIVkey C980 smart card (Other)\nhttps://pivkey.com/" }, { "3B89800153504B323544499000DA", "SPK 2.5 D1" }, + { "3B89800153776973735061737374", "SwissPass - key to mobility and leisure in Switzerland (Transport)\nhttps://www.swisspass.ch\nhttps://www.allianceswisspass.ch/de/informationen-ov-nutzende/SwissPass" }, { "3B89800166494658425332476F32", "Blockchain Security 2Go (JavaCard)\nhttps://github.com/Infineon/Blockchain" }, { "3B898001664A41434F53322E3016", "MasterCard, Credit Card by TargoBank, Germany -- (Bank)" }, - { "3B898001665257453250524F4D1C", "NFC enabled SIM card. (Telecommunication)\nElectic vehicle charging card of the EMSP Chargepoint" }, + { "3B898001665257453250524F4D1C", "NFC enabled SIM card. (Telecommunication)\nElectric vehicle charging card of the EMSP Chargepoint" }, { "3B8980016653434F4E454432307C", "Alioth 98886 chip (Bank)" }, { "3B8980018057454D5650524F438F", "BNP Paribas Visa Classic Card (NFC) (Bank)\nhttps://mabanque.bnpparibas/fr/notre-offre/comptes-cartes-et-services/cartes-et-moyens-de-paiement/decouvrir-toutes-les-cartes/carte-visa-classic" }, { "3B89800180574A4D5650726F33F0", "PayPal UK MasterCard Contacless" }, { "3B89800180574A4D5676352E30D3", "PayPal Access Business MasterCard (contactless) (Bank)\nCoinbase Card, Visa Debit (Paysafe / TCT FCU) (Bank)\nhttps://coinbase.com/card" }, + { "3B8980018064160401868290006B", "LUKB (Bank)\nhttps://www.lukb.ch" }, { "3B8980018064160402828290006C", "Maestro card (from Mastercard) used by BCGE (switzerland) bank (Bank)" }, { "3B89800180670412B0030501024C", "Austrian Passport" }, { "3B8A0091010016000116010096", "GSM-SIM T-Mobil D1 (900MHz)" }, @@ -1761,13 +1884,20 @@ const static atr_t AtrTable[] = { { "3B8A80010031C173C8400000900090", "NXP PN65o's Internal Secure Element in card emulation mode. (Other)" }, { "3B8A80010064055C02033180900016", "T-System Contactless Netkey Card" }, { "3B8A8001006405760203318090003C", "T-System Contactless TCOS Min" }, + { "3B8A80013037393134315F3030316F", "Electronic Citizen Identity Card (e-ID Card) (eID)\nhttps://www.e-ktp.com/" }, + { "3B8A800143323330302D4649505368", "Crescendo 2300 FIPS (contactless interface) (PKI)" }, { "3B8A80014A3341303831563234316B", "NXP JCOP CJ3A081 (NFC) (JavaCard)\nNXP JCOP 80K - J3A081V241" }, + { "3B8A80014A33523138302D32353506", "Cardlogix J3R180 NXP JCOP 4 Java Card 3.0.5 Classic Dual Interface (JavaCard)\nhttps://www.cardlogix.com/product/nxp-jcop-4-java-card-3-0-5-classic/" }, { "3B8A80014A434F503331563233327A", "Snapper New Zealand (JCOP)" }, { "3B8A80014A434F503431563232317F", "JCOP41 Cards (not supported, but recognized by Classic Client)\nNXP JCOP 41 v2.2.1 72k RFID I/F" }, + { "3B8A800150564A434F5033454D5676", "NXP JCOP3 J3H082 Java Card 3.0.4 Dual-Interface (JavaCard) (JavaCard)\nhttps://www.cardlogix.com/product/nxp-jcop3-j3h082-java-card-3-0-4-j3h081-dual-interface/" }, + { "3B8A800150564A434F503453494471", "J3R180 via ifdnfc (JavaCard)" }, + { "3B8A80015345204445534669726557", "NXP-Mifare DESFire EV1 2k (used as a company ID card) (eID)" }, { "3B8A8001534F535345020325010374", "Super SIM X-SIM 16-in-1 (Telecommunication)\nhttps://multi-com.eu/,details,id_pr,14881,key,super-sim-16-in-1-card,smenu,gsm.html" }, { "3B8A8001546963546F6B20332E3008", "Cryptas TicTok v3 (PKI)\nhttps://www.cryptas.com/en/products/tictok-card" }, { "3B8A80018031B8738401E082900006", "German ID Card - Personalausweis" }, { "3B8A80018031F873F741E082900075", "ePerso - German ID card" }, + { "3B8A800180641211111073C0C1801F", "Belarussian ID card (eID)" }, { "3B8A80018065A20101013D72D64397", "Gemplus GemXpresso Pro R3 E32 PK (combi)\nMultiApp ID Dual Citizen EAC 80K CC / IDClassic 3340 (old name: Classic TPC DM) (with MPCOS Applet installed by default) - Contactless Mode with Prox DU" }, { "3B8A80018065A20131013D72D641A5", "Resident Identity Card (eID)" }, { "3B8B005275746F6B656E6C745344E3", "Aktiv Rutoken Lite SD\nhttps://www.rutoken.ru/products/catalogue/info_52.html" }, @@ -1777,12 +1907,13 @@ const static atr_t AtrTable[] = { { "3B8B015275746F6B656E44534254D7", "Rutoken ECP Bluetooth (eID)\nhttp://www.rutoken.ru" }, { "3B8B015275746F6B656E6C697465C2", "Aktiv Rutoken Lite\nhttps://www.rutoken.ru/products/all/rutoken-lite/" }, { "3B8B80010012233F536549440F9000A0", "Estonian Identity Card (eID)\nhttp://id.ee/" }, + { "3B8B80010012428F536549440F900071", "Latvia eID card (eID)\nhttps://www.pmlp.gov.lv/en/identity-card-eid" }, { "3B8B80010031C0640804610000900062", "NUMBER26 Maestro Card (Bank)\nhttps://number26.eu\nAmerican Express credit card for corporations" }, { "3B8B80010031C0640844030400900044", "Credit Card Visa (Other)" }, { "3B8B80010031C0640844031200900052", "Tomorrow Debit Mastercard issued by solarisBank AG (Bank)\nhttps://www.tomorrow.one/" }, { "3B8B80010031C0640844031300900053", "Swedbank ISIC (eID)\nhttps://www.swedbank.ee/private/cards/debit/isic?language=EST" }, { "3B8B80010031C0640844036800900028", "Advanzia / Gebuhrenfrei.com Mastercard Gold (Bank)\nhttps://www.gebuhrenfrei.com/Home/" }, - { "3B8B80010031C0640844037600900036", "American Express Blue Card (Germany) (Bank)" }, + { "3B8B80010031C0640844037600900036", "American Express Blue Card (Germany) (Bank)\nMastercard issued by OTP Bank (Hungary) (Bank)\nhttps://www.otpbank.hu/portal/en/Retail/Bankcards\nCredit Agricole Bank Card - Bancomat / Maestro" }, { "3B8B80010031C06408440393009000D3", "Novacard pp0815-04/20 chip (Bank)" }, { "3B8B80010031C0641F18010000900009", "Student ID card in Poland (eID)" }, { "3B8B80010031C0641F27010000900036", "American Express Platinum (AU Issued) (Bank)" }, @@ -1792,10 +1923,15 @@ const static atr_t AtrTable[] = { { "3B8B80010031C1640840223000900054", "IDEMIA Cosmo v8.1-n (Other)" }, { "3B8B80010031C1640860320600900052", "Banco CTT (Portugal) contactless VISA Debit card (Bank) (Bank)\nhttps://www.bancoctt.pt/home/abrir-conta.html" }, { "3B8B80010031C1640860321200900046", "AMEX Silver Credit (Bank)" }, + { "3B8B80010031C1640860321F0090004B", "Hanseatic Bank Visa Card (Bank)\nhttps://www.hanseaticbank.de/kreditkarte/genialcard" }, { "3B8B80010031C1640860322000900074", "IDEMIA (Other)" }, - { "3B8B80010031C16408923354009000F3", "Italian healtcare card (TS) National Service Card (CNS) (HealthCare)\nhttp://www.salute.gov.it/portale/lea/dettaglioContenutiLea.jsp?lingua=italiano&id=4693&area=Lea&menu=leaEssn" }, + { "3B8B80010031C1640860324200900016", "Westpac Handybank EFTPOS/ATM Card - Contactless (Bank)" }, + { "3B8B80010031C16408923354009000F3", "Italian healthcare card (TS) National Service Card (CNS) (HealthCare)\nhttp://www.salute.gov.it/portale/lea/dettaglioContenutiLea.jsp?lingua=italiano&id=4693&area=Lea&menu=leaEssn" }, + { "3B8B80010031C16408986200009000FC", "ERSTE Bank creditcard (mastercard) (Bank)" }, { "3B8B80010031C1640911213000900007", "SmartMX (Other)" }, + { "3B8B80010031C1640924331E0090000E", "Cumulus Mastercard (Bank)\nhttps://www.migros.ch/cumulus/mastercard" }, { "3B8B80010031C1640937721300900051", "French ID Card 2021 (contactless interface) (eID)\nhttps://ants.gouv.fr/Les-titres/Carte-nationale-d-identite/La-puce-de-la-nouvelle-carte-nationale-d-identite" }, + { "3B8B80010031C1640964413600900014", "Monzo (Bank)\nhttps://monzo.com/" }, { "3B8B800100640411010131800090005A", "German Passport (issued Nov 2006)\nUnited Kingdom e-Passport\nLuxembourg passport (2007)" }, { "3B8B80010B7880820244492030324D1B", "Mastercard Debit issued by Raiffeisen bank in Czech Republic" }, { "3B8B80012085008B030FE09AA0E04052", "Shanghai Public Transportation Card (Transport)\nhttp://www.sptcc.com/" }, @@ -1809,21 +1945,29 @@ const static atr_t AtrTable[] = { { "3B8B8001654B5450304432654B54504C", "NXP smart eID - Indonesia ektp (eID)" }, { "3B8B80018031C06305107F8300900061", "UAB Bank - Prepaid VISA Card (Bank)\nhttps://www.uab.com.mm/cards/" }, { "3B8B80018066475000B8007F8290002E", "Italian Card Identity (eID)\nhttps://www.cartaidentita.interno.gov.it/" }, + { "3B8B80018066475000B80094829000C5", "Italian Electronic Contactless Identity Card v. 3.0 (CIE 3.0) (eID)\nhttps://www.cartaidentita.interno.gov.it/" }, { "3B8B800180F9A00000030800001000C8", "Probably the same as 'JCOP3 SecID P60 CS (JavaCard)' but mated with a contactless Identiv reader (JavaCard)" }, { "3B8B80018688FF6F391E743C200800D3", "Chinese ICBC (bank)" }, { "3B8B81314034534D41525453434F5045316D", "Zeeland kaart (Telecommunication)" }, { "3B8C014D79536D6172744C6F676F6EA5", "EIDVirtual (USB key emulated as a virtual smart card) (PKI)\nhttp://www.mysmartlogon.com/eidvirtual/" }, + { "3B8C01805A4E6974726F6B657920337D", "'Nitrokey 3C NFC' USB authentication and security token (Other)\nhttps://shop.nitrokey.com/shop/product/nk3cn-nitrokey-3c-nfc-148" }, { "3B8C40FA808105520101A00000015001", "Algerian Postal Services Current Account Card (Bank)" }, { "3B8C80010443FD....................", "RFID - NFC Forum tag type 3 (FeliCa)" }, + { "3B8C80010C75778002C1052F2F0035C7B7", "Mifare Plus S (Other)\nhttps://www.nxp.com/products/no-longer-manufactured/mifare-plus-s-2k-4k:MIFARE_PLUS_S_2K_4K" }, { "3B8C80014F5449442894B3C00100900045", "Belgian passport (2009-2013)" }, { "3B8C80014F5449442894F7C00000900000", "French passport (2010-2013)" }, { "3B8C800150........E1F35E117781E1..", "Spanish eID, Documento Nacional de Identidad (DNIe) (eID)\nhttp://www.dnielectronico.es/" }, + { "3B8C800150000000000000000080814519", "a12 (Telecommunication)" }, { "3B8C80015000000000000000009181A0ED", "Belimo VAV-Compact NFC (Other)\nhttp://www.belimo.ch/pdf/e/flyer_nfc_en.pdf" }, { "3B8C8001500005022D0206000000819163", "Local Transport card for Trentino region (Italy) trentino trasporti esercizio (Transport)\nhttp://www.ttesercizio.it/" }, + { "3B8C80015000CA464D00000000808171EC", "Visa Classic (Bank)" }, + { "3B8C8001500197E9BE00000000808171EC", "VISA card from bank LA BANQUE POSTALE (Bank)" }, { "3B8C80015001A5CE19000000008081715E", "VISA Card from Bank BANQUE POPULAIRE (Bank)" }, { "3B8C80015001BA137E00000000B3717138", "Mobib (Brussels public transportation card)" }, + { "3B8C80015001C62E3900000000808171FD", "edenred (Loyalty)" }, { "3B8C80015003A129CF0000000011818108", "rav-kav, Israel transport card (Transport)\nhttp://www.egged.co.il/Article-786-Rav-Kav-Card.aspx" }, { "3B8C80015004463EC3E1F35E117781A1E8", "Spanish ID (eID)" }, + { "3B8C8001500509CE35000000003371A149", "Libertan transport card from Nantes (France), based on Calypso (Transport)\nhttps://www.tan.fr/fr/abonnements-libertan-1" }, { "3B8C80015005A966960000000080817171", "Hello bank! VISA CLASSIC Card (Bank)\nhttp://www.hellobank.fr/" }, { "3B8C80015006DCA8590000000080817106", "VISA Hello bank! (NFC) (Bank)\nhttps://www.hellobank.fr/" }, { "3B8C800150107331B400000000B3717108", "MiMuovo public transport card used in Italian region Emilia Romagna (Transport)" }, @@ -1831,6 +1975,7 @@ const static atr_t AtrTable[] = { { "3B8C80015010B9F98900000000B3717137", "Toulouse (France) city public transport card called TISSEO Pastel (Transport)\nhttps://www.tisseo.fr/les-tarifs/obtenir-une-carte-pastel" }, { "3B8C80015010D632A000000000B37171BA", "MOBIB (STIB) (Transport)\nhttps://www.stib-mivb.be/article.html?_guid=30af0085-2483-3410-5394-a71daf08acd1&l=en" }, { "3B8C800150186188CEE1F35E117781C70E", "French passport (2007-2008)" }, + { "3B8C800150191B6CC20000000000817707", "Rabobank bankcard (dutch) (Bank)\nhttps://www.rabobank.nl/particulieren/betalen/betaalpas" }, { "3B8C80015019E3BB3D00000000008177D7", "ING/Maestro bank card (Bank)\nhttps://www.ing.nl/particulier/betalen/passen/index.html" }, { "3B8C80015024AD64E10000000033819172", "Italian healthcare + public administration card (HealthCare)\nhttp://sistemats1.sanita.finanze.it/wps/portal" }, { "3B8C800150260DBB150000000000718128", "Navigo Card (Transport)\nhttp://www.navigo.fr/" }, @@ -1839,13 +1984,17 @@ const static atr_t AtrTable[] = { { "3B8C8001502724266400000000007181EC", "French Transport Card (Navigo Card) (Transport)\nhttps://fr.wikipedia.org/wiki/Passe_Navigo" }, { "3B8C8001502747D205000000000071811A", "Pass Navigo Decouverte (Transport)\nhttps://fr.wikipedia.org/wiki/Passe_Navigo" }, { "3B8C800150275038CE000000000071812C", "Paris transportation card (Pass Navigo) (Transport)\nhttps://fr.wikipedia.org/wiki/Passe_Navigo" }, + { "3B8C8001502752318100000000007181", "Calypso (Transport)\nhttps://www.innovatron.fr/CalypsoFuncSpecification.pdf" }, { "3B8C80015027B1F76B0000000000717157", "Navigo (public transportation in Ile-de-France), IDF Mobilites (Transport)\nhttps://www.iledefrance-mobilites.fr/l-innovation/navigo/" }, { "3B8C8001502C8D214B23180100778197CD", "Indonesian Driver License" }, + { "3B8C8001502FE0AFA1000000000081776A", "Rabo Wereldpas (Maestro) (Bank)\nhttps://www.rabobank.nl/" }, { "3B8C80015035A45B650000000080817182", "Trenitalia cartafreccia (Transport)\nhttp://www.trenitalia.com/tcom/Cartafreccia" }, { "3B8C800150370B16BD310106017781777C", "Driver License of Indonesia - SIM (Surat Izin Mengemudi) (Transport)" }, { "3B8C800150380EB25B00000000B3717131", "BIP (Biglietto Integrato Piemonte) Card, GTT (Gruppo Trasporti Torinese) (Transport)\nhttp://bip.piemonte.it/" }, { "3B8C8001503A88EC29E1F35E117781E160", "DNI electronico (Spanish electronic ID card) (eID)\nhttp://www.dnielectronico.es" }, { "3B8C8001503A964B0000000000008180BB", "Ventra Transit Pass (Transport)\nhttps://www.ventrachicago.com/how-to/ventra-cards/" }, + { "3B8C8001503BF0330B30ABAB017781B7DE", "Italian health card - national service card (HealthCare)\nhttps://sistemats1.sanita.finanze.it/portale/tessera-sanitaria" }, + { "3B8C800150438EAE7B30ABAB017781B735", "Italian healthcare card (TS) National Service Card (CNS) (HealthCare) - Regione Liguria (HealthCare)" }, { "3B8C80015043E0F5F43101060077817748", "Indonesian Driver License" }, { "3B8C8001504553FFC6E1F35E117781A178", "Electronic DNI (eID)" }, { "3B8C80015046E570EC2318010077819739", "Indonesian Driver License" }, @@ -1853,6 +2002,7 @@ const static atr_t AtrTable[] = { { "3B8C8001504B75AF41E1F35E117781A583", "USA PASSPORT BOOK ICAO (passport)\nhttps://www.icao.int/publications/pages/publication.aspx?docnum=9303" }, { "3B8C8001505381573630AAAA017781D7FE", "Indonesian ektp (eID)" }, { "3B8C8001505467137900000000F781C1B3", "Tessera Sanitaria italian health care card (HealthCare)" }, + { "3B8C8001505C4B71A152745343778183D9", "RUTOKEN ECP 3.0 (PKI)\nhttps://www.rutoken.ru/products/catalogue/id_114.html" }, { "3B8C8001505CF5A94530AAAA017781D708", "Indonesia ektp (eID)" }, { "3B8C800150605F2EFA00000000778191D1", "Residence Permit (Switzerland) (eID)" }, { "3B8C80015064E65B000000000000818085", "Chicago CTA Ventra Transit card\nhttps://www.ventrachicago.com/" }, @@ -1863,9 +2013,12 @@ const static atr_t AtrTable[] = { { "3B8C8001507919600100DDA611F7718535", "Transport Traway Montpellier France (Transport)" }, { "3B8C8001507AA44007231801007781979F", "Indonesian Driver License" }, { "3B8C8001507E0071D20000000000717180", "Unica (= Just one) joined train and public transport card for Italian region Emilia Romagna (evolution of MiMuovo) (Transport)" }, + { "3B8C8001507E0A66C2000000000071718D", "'UNICA' card for the subscription to trains and buses of the Trenitalia TPER company (Transport)\nhttps://www.trenitalia.com/it/treni_regionali/smart-card-unica.html" }, + { "3B8C8001507EDE1E0600883C1F7781952D", "Bahrain CPR (eID)" }, { "3B8C8001507F9C668A0000000000818754", "NFC Mastercard issued by CSOB bank Czech Republic, first 4 digits 5168" }, { "3B8C80015089DCA96E00000000808171BF", "Cartafreccia VISA (Italian Railways Prepaid + Loyalty Card) (Bank)" }, { "3B8C800150915D7129E1F35E117781A1C3", "Spanish eID, Documento Nacional de Identidad (DNIe) (eID)\nhttp://www.dnielectronico.es/" }, + { "3B8C80015092BF3BC0000000000071718B", "Venice Public Transport Card (Transport)\nhttps://www.veneziaunica.it/" }, { "3B8C80015093195E3000000000007171B9", "OPUS STM CANADA (Transport)\nhttp://stm.info/" }, { "3B8C800150933CCC05000000000071713B", "OPUS Card, public transport (subway) of Montreal (Transport)\nhttp://www.stm.info/fr/infos/titres-et-tarifs/carte-opus-et-autres-supports/carte-opus" }, { "3B8C800150A221FAA031CCCC017781C183", "Morpho (eID)\nhttp://www.morpho.com/" }, @@ -1878,6 +2031,7 @@ const static atr_t AtrTable[] = { { "3B8C800150C0E450CA0000000091717172", "Transportation card for Lille (France) (Transport)" }, { "3B8C800150C0EA9CBB00000000B37171E3", "Tisseo (Toulouse) (Transport)\nhttp://www.tisseo.fr/les-tarifs/obtenir-une-carte-pastel" }, { "3B8C800150C0F1DE700000000091717153", "isodep, NfcB (Transport)" }, + { "3B8C800150C10D7D5E00000000B3717101", "Pastel transport card from Toulouse (France), based on Calypso (Transport)\nhttps://www.tisseo.fr/les-tarifs/ou-acheter/la-carte-pastel" }, { "3B8C800150C110BBA9000000009171710F", "Divia card (passport)" }, { "3B8C800150C11BA3F10000000091717144", "Tramway (PKI)" }, { "3B8C800150C14164E3000000000071715A", "Navigo Annuel (France) (Transport)\nhttps://www.iledefrance-mobilites.fr/titres-et-tarifs/detail/forfait-navigo-annuel" }, @@ -1886,6 +2040,9 @@ const static atr_t AtrTable[] = { { "3B8C800150C17B55BA0000000000717108", "Navigo Easy (Paris public transportation) (Transport)\nhttps://parisbytrain.com/navigo-easy/" }, { "3B8C800150C17DA8CA0000000000717183", "Navigo Easy (France) transport card (Transport)\nhttps://www.ratp.fr/titres-et-tarifs/passe-navigo-easy" }, { "3B8C800150C2B936860000000000717196", "Passe Navigo (Transport)\nhttps://www.iledefrance-mobilites.fr/titres-et-tarifs/supports/passe-navigo-decouverte" }, + { "3B8C800150C326AF0C000000000071711B", "Navigo Mobility Paris transport's Card (Transport)\nhttps://www.iledefrance-mobilites.fr/titres-et-tarifs/liste?d=forfaits" }, + { "3B8C800150C41466C30000000000717128", "Navigo easy (Transport)\nhttps://www.iledefrance-mobilites.fr/titres-et-tarifs/supports/passe-navigo-easy" }, + { "3B8C800150C51770F0000000008081717F", "SumUp Limited Apple Pay Virtual Card (Bank)\nhttps://sumup.co.uk" }, { "3B8C800150C7251C5A00000011F781811F", "MOBIB Belgian public transport Card (Transport)\nhttps://mobib.be/fr.html" }, { "3B8C800150CA24513E00000011F781813A", "belgian mobib transportation card (Transport)" }, { "3B8C800150CBFB077E000000008081E1F4", "Samsung Digital Center in Seul Access ID card for guests (eID)" }, @@ -1915,6 +2072,10 @@ const static atr_t AtrTable[] = { { "3B8C80019067464A0100360600000000C7", "A40CR (eID)" }, { "3B8D0180FBA000000397425446590401", "Microsoft Virtual Smart Card 0 (PKI)" }, { "3B8D0180FBA000000397425446590401CF", "Microsoft Virtual Smartcard Provider shared through VMWare Workstation. (Other)\nhttps://technet.microsoft.com/en-us/library/dn593708%28v=ws.11%29.aspx" }, + { "3B8D80010004D0842186640000000000009F", "ABC UnionPay card with QuickPass contactless interface (Bank)" }, + { "3B8D8001003180718E6452D90400829000BB", "AwesomeCard (Bank)" }, + { "3B8D80010031C173C8400052A51000900070", "NXP P71 SmartMX3 (JavaCard)\nhttps://www.nxp.com/products/security-and-authentication/security-controllers/smartmx3-p71d321-secure-and-flexible-microcontroller:SMARTMX3-P71D321" }, + { "3B8D80010031C173C8400052A5100090FF8F", "NXP Smart MX3 P71D321 (JavaCard)" }, { "3B8D80010073C80013644737423700900055", "TD Canada Trust Visa" }, { "3B8D80010073C8001364543741380090004A", "Visa Debit (ING-DiBa) (Bank)\nhttps://www.ing-diba.de/\nVisa Debit Card with NFC payment function (Consorsbank)\nhttps://www.consorsbank.de/" }, { "3B8D80010073C80013645437423700900046", "pay (Bank)" }, @@ -1940,6 +2101,7 @@ const static atr_t AtrTable[] = { { "3B8E8001005131631F5901739F20C0C0900017", "Identity card (eID) Republic of Latvia (eID)\nhttp://www.pmlp.gov.lv/en/home/services/personal-certificates-%28eid%29/\nFrench driving license (eID) (contactless)" }, { "3B8E80010E7833C4020064041501020090FF95", "Spanish Passport" }, { "3B8E8001103877A78091E165D0004200008272", "Czech Republic e-Passport (issued Feb 2009)" }, + { "3B8E8001107833D4020064041101013180FFBD", "Second generation German passport (passport)\nhttps://www.cs.bham.ac.uk/~tpc/Papers/PassportTrace.pdf" }, { "3B8E80011178B3C0024F5449442894B3FFFF0E", "Civilian passport NFC tag (passport)" }, { "3B8E8001137880720280318066B1840C01FF04", "Optelio Contactless Gemalto (Bank)" }, { "3B8E8001137880800246494F4D4B5F3030314E", "MasterCard/PayPass Card issued by Czech FIO Banka a.s. (contactless chip)\nnote the ASCII string 'FIOK_001N' embedded in ATR" }, @@ -1953,7 +2115,9 @@ const static atr_t AtrTable[] = { { "3B8E800180318066B08412016E018300900003", "Contactless Barclaycard Visa\nMyCiti Transport Card MasterCard PayPass (Cape Town, South Africa)" }, { "3B8E800180318066B08416016E018300900007", "Barclaycard Platinum VISA (Bank)" }, { "3B8E800180318066B1840C016E0183009000..", "Gemalto Santander Optelio TUI R7 using Contactless interface" }, - { "3B8E800180318066B1840C016E01830090001C", "UK Lloyds Bank Gold Visa Debit (Contact & Contactless)\nbPay by barclaycard - contactless pre-paid Visa\nBPP Digital pre-paid VISA card (Bank)\nhttps://bpp.com.br/" }, + { "3B8E800180318066B1840C016E01830090001C", "UK Lloyds Bank Gold Visa Debit (Contact & Contactless)\nbPay by barclaycard - contactless pre-paid Visa\nBPP Digital pre-paid VISA card (Bank)\nhttps://bpp.com.br/\nMastercard credit card for Standard Chartered Bank, Pakistan also Mastercard debit card for JS Bank, Pakistan (Bank)" }, + { "3B8E800180318066B1840C016E01830090001C021450", "all transport travel pass (Transport)\nhttp://www.metro.spb.ru/cnblt41.html" }, + { "3B8E800180318066B1C5240100ED83009000F7", "Mastercard (Bank)" }, { "3B8E80018031815448534D3173802140810718", "Smartcard-HSM (Contactless Interface) (PKI)\nhttp://www.cardcontact.de/products/sc-hsm.html" }, { "3B8E80018031815448534D3173802140FFFF9E", "SmartCard-HSM RFID (PKI)\nhttps://www.smartcard-hsm.com/" }, { "3B8E800180919131C06477E30300838290001C", "Belgian Passport (2005)\nThai Passport 2005" }, @@ -1963,19 +2127,34 @@ const static atr_t AtrTable[] = { { "3B8F01415642000000000000000001000000DA", "AVEST-SYSTEMS AvBign (PKI)" }, { "3B8F0145464B000000000000000004000000C2", "EfitKey (PKI)" }, { "3B8F018025A00000005657444B3430300600B7", "SafeNet IKey4000" }, + { "3B8F01805D4E6974726F6B657900000000006A", "Nitrokey Nitrokey 3 Mini (eID)\nhttps://shop.nitrokey.com/shop/product/nk3am-nitrokey-3a-mini-149" }, { "3B8F80010000000000000000000000000000000E", "Tangem card (Other)\nhttps://tangem.com/" }, { "3B8F80010000000000000000000000FF829000E3", "CIE (eID)" }, { "3B8F80010031B86404B0ECC1739401808290000E", "Contactless CPS v3 Card (Carte de Professionnel de Sante)" }, + { "3B8F80010031B86404B0ECC173940180FFFFFFE3", "Card used in public French hospital (Other)" }, + { "3B8F80010031B96409377213738401E0000000AB", "National Identity Card of Slovakia (NFC interface) (eID)\nhttps://en.wikipedia.org/wiki/Slovak_identity_card" }, { "3B8F80010031C173C800106457494943009000B5", "ICC Solutions Card for Certification (Other)\nhttps://www.iccsolutions.com/" }, + { "3B8F80010031C173C8211064414D31300790008A", "master card (Bank)" }, + { "3B8F80010031C173C8211064414D31370790008D", "AirPlus International Mastercard (Bank)\nhttps://www.airplus.com/" }, { "3B8F80010031C173C8211064414D333007900088", "ING-VISA-Card (Bank)\nhttps://www.ing.de/girokonto/karten-bargeld/" }, + { "3B8F80010031C173C8211064414D333107900089", "NAB VISA Debit (Bank)\nhttps://www.nab.com.au/" }, + { "3B8F80010031C173C8211064414D3341079000F9", "Ukrainian International resere bank (ex Sberbak RF) debit card (Bank)\nhttps://www.sbrf.com.ua/" }, + { "3B8F80010031C173C8211064474D34350090008B", "S-Etukortti Visa (Bank)\nhttps://www.s-pankki.fi/fi/s-etukortti-visa" }, { "3B8F80010031C173C8211064474D343700900089", "SpareBank Visa Card, Norway (Bank)" }, + { "3B8F80010031C173C8211064574B31330090009E", "TIM Pay - HYPE (Mastercard debit card) (Bank)\nhttps://www.tim.it/fisso-e-mobile/mobile/servizi/tim-pay" }, { "3B8F80010031C173C8211064574B313400900099", "G&D Sm@rtCafe Card embedded in a wristband (Bank)\nhttps://www.gi-de.com/en/au/mobile-security/industries/financial-institutions/wearables/" }, { "3B8F800100664653051000FF71DF000000000039", "JavaCOS A40 dual interface Java card - 64K (JavaCard)" }, { "3B8F800100B85421000090000000000000000053", "netbank Germany, Mastercard (Bank)\nhttps://netbank.de" }, { "3B8F800100B85431000090000000000000000043", "Monzo MasterCard Contactless (Bank)\nhttps://monzo.com/" }, { "3B8F800100B854310000900000000000FFFFFFBC", "VISA Debit issued by WIREX. card made by CONTIS / TAG SYSTEMS (Bank)\nhttps://wirexapp.com/" }, + { "3B8F80013101F1564011001900000000000000D1", "Revolut Mastercard (Bank)" }, + { "3B8F80013101F1564011001900000000FFFFFF2E", "BVG Guthabenkarte (Prepaid Payment Card for Berlin/Brandenburg Public Transport) (Transport)\nhttps://www.bvg.de/de/service-und-kontakt/guthabenkarte" }, { "3B8F800141434F53204449616E6131204C63365B", "DKB-VISA-Card (Bank)\nhttps://produkte.dkb.de/?&page=girokonto#kreditkarte" }, { "3B8F800141434F53204449616E613120FFFFFFBD", "DKB Visa Credit Card (Bank)\nhttps://www.dkb.de" }, + { "3B8F800141434F53204449616E6132204C633658", "comdirect Visa debit (Bank)\nhttps://www.comdirect.de" }, + { "3B8F800141434F53204449616E613220FFFFFFBE", "comdirect, VISA Debit (Bank)\nhttps://www.comdirect.de/konto/karten.html#bankkarte" }, + { "3B8F800141434F532046696F6E6131204C633677", "DKB Visa (Debit) (Bank)\nhttps://www.dkb.de/" }, + { "3B8F800143433169A920000020202020202020FF", "Reka (Bank)\nhttps://reka.ch" }, { "3B8F800143443269AB41202020202020FFFFFF47", "BKB VISA Card Switzerland (Bank)\nhttps://www.bkb.ch/de/privatkunden/konten-und-karten/kreditkarten/world-mastercard-silber-oder-visa-classic/factsheet" }, { "3B8F800143553269AA20202020202020202020E9", "UBS Access Card (Mobile Online Banking, NFC, Switzerland)" }, { "3B8F800145504100000000........00........", "Austrian Quick E-purse contactless\nhttp://www.quick.at/" }, @@ -1984,6 +2163,8 @@ const static atr_t AtrTable[] = { { "3B8F800152464944494F74204A434F5020373276", "RFIDIOt JCOP 72K Blank\nhttp://rfidiot.org" }, { "3B8F800152464944494F74204A434F5037327224", "RFIDIOt JCOP 72K RANDOM_UID Blank\nhttp://rfidiot.org" }, { "3B8F800156696E5061795379732050757273652F", "JCOP (Other)" }, + { "3B8F80018031806549544A3442120FFF829000", "Italian Identity Card CIE (eID) (eID)\nhttps://www.cartaidentita.interno.gov.it/en/home/" }, + { "3B8F80018031806549544A3442120FFF8290008B", "Identity Card (eID)" }, { "3B8F800180318065B0........120FFE829000..", "IDPrime MD 3810 T=Contactless (Prox DU)" }, { "3B8F800180318065B0842327E5120FFE8290007E", "Gemalto IDPrime MD 3810 Blank Card (Other)\nhttp://www.gemalto.com/products/IDPrime_MD/index.html" }, { "3B8F800180318065B0846160FB120FFD82900066", "IDPrime 3930 FIPS Level 2 (Contactless TypeA) (BAI5, BAI7) (PKI)" }, @@ -1991,8 +2172,13 @@ const static atr_t AtrTable[] = { { "3B8F800180318065B0850300EF120FFF82900073", "Grand Duchy of Luxembourg / Identity card with LuxTrust certificate (eID)\nhttp://www.guichet.public.lu/citoyens/fr/citoyennete/papiers-identite/carte-identite/nouv-carte-identite-adulte-EN/index.html" }, { "3B8F800180318065B085040011120FFF8290008A", "Dutch driver licence (eID)\nItalian electronic identity card (eID)\nhttps://en.wikipedia.org/wiki/Italian_electronic_identity_card" }, { "3B8F80018031B865B0850300EF1200F68290004D", "Finnish electronic identity card (eID)\nhttps://vrk.fi/en/electronic-identity-and-certificates" }, + { "3B8F80018031B865B08504021B1200F6829000BC", "Finnish identity card (eID)" }, + { "3B8F80018031D865B08505001112752082900076", "Swedish national ID card (eID)\nhttps://polisen.se/en/services-and-permits/passport-and-national-id-card/check-validity-online-for-passports-and-national-id-cards/" }, { "3B8F80018031E06B042105027255555555555564", "Banamex/Citi Bank Bsmart MasterCard Paypass (Bank)\nhttps://www.banamex.com/es/personas/tarjetas_credito/ver_tarjetas/puntos_efectivo/bsmart.htm" }, { "3B8F80018031E06B04310502D1555555........", "Revolut Prepaid Mastercard (Contactless) (Bank)\nhttps://revolut.com/" }, + { "3B8F80018031E06B04520502FD555555FFFFFF32", "C6 Bank Card (Bank)" }, + { "3B8F80018031E06B0453F5025B555555555555CF", "Mastercard debit card for Askari Bank, Pakistan (Bank)" }, + { "3B8F80018031E06B04546B026D55555555555560", "Mastercard Credit/Debit Card - Contactless (Bank)" }, { "3B8F80018031E06B061605028C555555555555AF", "Air Miles American Express card (contactless) (Bank)" }, { "3B8F8001804F0CA000000306..000000000000..", "Card name not given (as per PCSC std part3)" }, { "3B8F8001804F0CA000000306..000100000000..", "MIFARE Classic 1K (as per PCSC std part3)" }, @@ -2060,10 +2246,10 @@ const static atr_t AtrTable[] = { { "3B8F8001804F0CA00000030601....00000000..", "RFID - ISO 14443 Type A Part 1 (as per PCSC std part3)" }, { "3B8F8001804F0CA00000030602....00000000..", "RFID - ISO 14443 Type A Part 2 (as per PCSC std part3)" }, { "3B8F8001804F0CA00000030603....00000000..", "RFID - ISO 14443 Type A Part 3 (as per PCSC std part3)" }, - { "3B8F8001804F0CA000000306030000000000006B", "buss/train pass for use with Skanetrafiken (www.skanetrafiken.se) busses and trains.\npublic library of Dusseldorf\nhttp://www.duesseldorf.de/stadtbuechereien/\nspecialized Mifare Ultralight card" }, - { "3B8F8001804F0CA000000306030001000000006A", "NXP/Philips MIFARE Classic 1K (as per PCSC std part3)\nhttp://www.nxp.com/#/pip/pip=[pfp=41863]|pp=[t=pfp,i=41863]\nOyster card - Transport for London (first-gen)\nhttps://en.wikipedia.org/wiki/Oyster_card\nACOS5/1k Mirfare\nvivotech ViVOcard Contactless Test Card\nBangkok BTS Sky SmartPass\nMifare Classic 1K (block 0 re-writeable)\nElectic vehicle charging card of the German Telekom, acting as EMSP GetCharge\nElectic vehicle charging card of the EMSP Stadtwerke Muenchen (SWM), ladenetz.de, Germany\nElectic vehicle charging card of the EMSP EinfachStromLaden of Maingau-Energie, Germany\nScouter carsharing customer card in Germany\nhttps://scouter.de/" }, - { "3B8F8001804F0CA0000003060300020000000069", "RFID - ISO 14443 Type A - NXP Mifare card with 4k EEPROM" }, - { "3B8F8001804F0CA0000003060300030000000068", "RFID - ISO 14443 Type A - NXP Mifare Ultralight or UltralightC" }, + { "3B8F8001804F0CA000000306030000000000006B", "bus/train pass for use with Skanetrafiken (www.skanetrafiken.se) buses and trains.\npublic library of Dusseldorf\nhttp://www.duesseldorf.de/stadtbuechereien/\nspecialized Mifare Ultralight card" }, + { "3B8F8001804F0CA000000306030001000000006A", "NXP/Philips MIFARE Classic 1K (as per PCSC std part3)\nhttp://www.nxp.com/#/pip/pip=[pfp=41863]|pp=[t=pfp,i=41863]\nOyster card - Transport for London (first-gen)\nhttps://en.wikipedia.org/wiki/Oyster_card\nACOS5/1k Mirfare\nvivotech ViVOcard Contactless Test Card\nBangkok BTS Sky SmartPass\nMifare Classic 1K (block 0 re-writeable)\nElectric vehicle charging card of the German Telekom, acting as EMSP GetCharge\nElectric vehicle charging card of the EMSP Stadtwerke Muenchen (SWM), ladenetz.de, Germany\nElectric vehicle charging card of the EMSP EinfachStromLaden of Maingau-Energie, Germany\nScouter carsharing customer card in Germany\nhttps://scouter.de/\nDKV Euro Service +charge (Transport)\nhttps://www.dkv-mobility.com/en/fuelling/fuel-card/dkv-card-charge/\nAndante (Transport)\nKazakhstan 'Onay' transport card (Transport)\nhttps://onay.kz" }, + { "3B8F8001804F0CA0000003060300020000000069", "RFID - ISO 14443 Type A - NXP Mifare card with 4k EEPROM\nOV Chipkaart\nhttps://www.ov-chipkaart.nl/home.htm" }, + { "3B8F8001804F0CA0000003060300030000000068", "RFID - ISO 14443 Type A - NXP Mifare Ultralight or UltralightC\nTempmate S1 Data Logger (Other)\nhttps://www.tempmate.com/\nprepaid bus card (Transport)\nhttps://www.t-l.ch/abos-billets/billets/carte-prepayee\nGamestate rechargable play card (Other)\nhttps://shop.gamestate.com/" }, { "3B8F8001804F0CA0000003060300FF0000000094", "ACTV (Italy) prepaid transport ticket\n'NFC Tag' -- Sony's 'Smart Tags'" }, { "3B8F8001804F0CA00000030603F004000000009F", "NFC FORUM TYPE 1 TAG\nwww.inovision-group.com/topaz\nISO/IEC 14443A - 96 Bytes read/write NFC/RFID IC mandated by NFC Forum as the Type 1 NFC Forum Tag Format." }, { "3B8F8001804F0CA00000030603F011000000008A", "Bangkok Metro (MRT)\nHTC One X Android phone (European edition 'endaevoru')" }, @@ -2074,8 +2260,10 @@ const static atr_t AtrTable[] = { { "3B8F8001804F0CA00000030607....00000000..", "RFID - ISO 14443 Type B Part 3 (as per PCSC std part3)" }, { "3B8F8001804F0CA000000306070000000000006F", "Atmel AT88RF04C CryptoRF" }, { "3B8F8001804F0CA000000306074344600201E4EF", "'Andante' Card, Porto (Portugal) metro card. (ISO14443 B CTS/CTM512B) (Transport)\nhttp://www.transportespublicos.pt/en/glossary/andante-ticket-system/" }, + { "3B8F8001804F0CA00000030607FFB00000000020", "Chinese ID Card (eID)\nhttps://en.wikipedia.org/wiki/Resident_Identity_Card" }, { "3B8F8001804F0CA00000030609....00000000..", "RFID - ISO 15693 Part 1 (as per PCSC std part3)" }, { "3B8F8001804F0CA0000003060A....00000000..", "RFID - ISO 15693 Part 2 (as per PCSC std part3)" }, + { "3B8F8001804F0CA0000003060A0018000000007A", "HID ICLASS DL (eID)" }, { "3B8F8001804F0CA0000003060A001C000000007E", "RFID - HID iCLASS 16K CL" }, { "3B8F8001804F0CA0000003060B....00000000..", "RFID - ISO 15693 Part 3 (as per PCSC std part3)" }, { "3B8F8001804F0CA0000003060B00000000000063", "RFID - ISO 15693 - EM Microelectronic-Marin SA" }, @@ -2098,6 +2286,7 @@ const static atr_t AtrTable[] = { { "3B8F8001805A08030400020024E279788290000C", "Paris Navigo card 14443 B' (Innovatron - Calypso)" }, { "3B8F80018066B007010107............9000..", "Gemalto Santander Optelio TUI R7 with WG10 customized using Contactless interface" }, { "3B8F80018073CC91CBF9A0000003080000100029", "NIST demo PIV card (eID)" }, + { "3B8F8001809100318065B08405002583019000CD", "Contactless IDCore3230 build 6.8, test APDU applet (JavaCard)" }, { "3B8F80018091E1318065B0831100AC83009000B7", "TOP DM GX4 Cards [TOP DM GX4 - contact interface]\nGemCombiXpresso R4 72K (contactless interface)" }, { "3B8F80018091E1318065B0831111AC83009000A6", "TOP DM GX4 Cards [TOP DM GX4 on Omnikey]\nGEMALTO WM GX4 72 DHS TSA (contactless interface)" }, { "3B8F80018091E1318065B0831111E583009000EF", "TOP DL V2 Cards" }, @@ -2115,6 +2304,7 @@ const static atr_t AtrTable[] = { { "3B90958011FE6A", "JC30M48CR JavaCard (JavaCard)" }, { "3B9095801FC359", "Dai Nippon Printing Co., DNP Standard-J T3.1" }, { "3B90968111FE68", "Xirka (eID)" }, + { "3B90969181B1FE551FC7D4", "iClass SE Processor (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor" }, { "3B9194801F0323BA", "China black(COS) SIM, does not support clock stop" }, { "3B931100003200", "01-3936b2013 (Pay TV)\nhttp://www.lripl.com" }, { "3B941881B1807D1F0319C80050DC", "GoldKey Security PIV Token" }, @@ -2140,19 +2330,22 @@ const static atr_t AtrTable[] = { { "3B959680B1FE551FC7477261636513", "IClass SE Processor (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor" }, { "3B9596C0F01FC20F100A0A16", "viettel (Telecommunication)" }, { "3B959740F01A160A1941", "SG50 (Samsung Chip) (Telecommunication)" }, + { "3B96004121920000622433339000", "Ukrainian Telecommunications Operator Kyivstar (old simcard) (Telecommunication)\nhttps://kyivstar.ua/uk/mm" }, { "3B961880018051006110309F006110309E", "Atmel/Athena T0 PC/SC Compliance Test Card No. 1 (warm reset)" }, + { "3B9694801FC6D0019FCB1000CE", "jawwal (Telecommunication)" }, { "3B9695801FC3D007830254005D", "au IC-card ver.001 (for CDMA2000) (Telecommunication)\nhttps://ja.wikipedia.org/wiki/Au_IC%E3%82%AB%E3%83%BC%E3%83%89" }, { "3B97110002020422003F03", "China Unicom (Telecommunication)" }, { "3B9711801F418031A073BE2100A6", "Comprion UT3 simulator SIM (Other)" }, { "3B9711801F428031A073BE2100A6", "ETSI 102 230 Test case 5.2.5.3. Comprion IT3 SIM emulator (Telecommunication)" }, - { "3B9711C0FFB1FE351F83A505010102A3015F", "digital chronotachygraphe card: conducteur/driver, entreprise, controleur/controler et atelier/workshop, 2006-2010\nmanufactured by Imprimerie Nationale, distributed by Chronoservices" }, - { "3B9713C0FFB1FE351F83A505010102A3015D", "digital chronotachygraphe card: conducteur/driver, entreprise, controleur/controler et atelier/workshop, 2005-2006\nmanufactured by Imprimerie Nationale, distributed by Chronoservices" }, + { "3B9711C0FFB1FE351F83A505010102A3015F", "digital chronotachygraphe card: conducteur/driver, entreprise, controleur/controller et atelier/workshop, 2006-2010\nmanufactured by Imprimerie Nationale, distributed by Chronoservices" }, + { "3B9713C0FFB1FE351F83A505010102A3015D", "digital chronotachygraphe card: conducteur/driver, entreprise, controleur/controller et atelier/workshop, 2005-2006\nmanufactured by Imprimerie Nationale, distributed by Chronoservices" }, { "3B9794801F438031E073FE211B39", "Telenor SIM card (Hungary) (Telecommunication)\nhttps://www.telenor.hu" }, { "3B9794803F44908031A073BE210095", "Comprion Simulated card that indicate Low Impedance support: TB(3) = 0x90 (Telecommunication)" }, { "3B9795801F438031E073FE211B38", "JIO (Telecommunication)" }, { "3B9795801F478031E073FE211B3C", "iFree MOGO SIM Card for test (Telecommunication)" }, { "3B9795801FC78031A073B6211BB4", "DNP Local5G (Telecommunication)" }, - { "3B9795C02A31FE35D000480105A3113C", "digital chronotachygraphe card: conducteur/driver, entreprise, controleur/controler et atelier/workshop, 2010-2015\nmanufactured by Imprimerie Nationale, distributed by Chronoservices" }, + { "3B9795C02A31FE35D000480105A3113C", "digital chronotachygraphe card: conducteur/driver, entreprise, controleur/controller et atelier/workshop, 2010-2015\nmanufactured by Imprimerie Nationale, distributed by Chronoservices" }, + { "3B97978171FE24007743534D01020300", "Infineon CIPURSE SAM SLF 9630 (Other)" }, { "3B9811000205013242030500", "Sino 3G Nano-sim ordered off Alie Express (Telecommunication)\nhttp://goo.gl/rSEi4N" }, { "3B9813400AA503010101AD1311", "Belgium Electronic ID card (eID)" }, { "3B981801524D4D2076312E32A8", "Ericsson Mini-Link RYS 110 243/1 (Other)" }, @@ -2176,6 +2369,7 @@ const static atr_t AtrTable[] = { { "3B999400910891060001060600", "GSM-SIM Orange-UK (1800)" }, { "3B999400911691080001250100", "GSM SIM E-plus, Germany (Telecommunication)" }, { "3B999400919993120001160200", "ORGA test systems - GSM Phase 2+ Test SIM" }, + { "3B999500001506030105040100", "Skylink CDMA R-UIM card (Telecommunication)\nhttps://en.wikipedia.org/wiki/Sky_Link_(Russia)" }, { "3B9A180082627593110001020200", "Supersim 6 in 1 (Telecommunication)" }, { "3B9A18801FC731425243442E312E3538C0", "HP StorageWorks (Other)\nhttps://hpe.com" }, { "3B9A940091010017000123100096", "GSM-SIM Victorvox D1 (900MHz)" }, @@ -2200,22 +2394,28 @@ const static atr_t AtrTable[] = { { "3B9C110068868D0C86980256408B0500", "China Mobile (Telecommunication)" }, { "3B9C131181647265616D6372797074000408", "XPlusTV & INXCT Access Card-9 (FIRECrypt)" }, { "3B9C131181647265616D6372797074900599", "FireCrypt, access card 9 (Pay TV)" }, + { "3B9C188121455A43332E333420524556204467", "MS-Protect safecard for access system (eID)" }, { "3B9C940068868D0A86980256C2000500", "G3 & GSM & Blank SIM card: to be programmed for OpenBTS with pySim-prog (Telecommunication)" }, { "3B9C940068868D0C86980245A1000500", "China Mobile (Telecommunication)" }, { "3B9C940068868D0C86980256408B0500", "mobiledit (Telecommunication)" }, { "3B9C948011405275746F6B656E4543507363C3", "Aktiv Rutoken ECP SC T1\nhttps://www.rutoken.ru/products/all/rutoken-ecp-sc/" }, + { "3B9C94801F478031E073FE211B545015740152", "VI india (Telecommunication)" }, + { "3B9C94801F478031E073FE211B545015745003", "SIM Card (Telecommunication)" }, { "3B9C94801F478031E073FE211B5450845450B2", "cambodia (Telecommunication)\nhttps://www.smart.com.kh/" }, + { "3B9C94801F478031E073FE211B545085745291", "Airtel india (Telecommunication)" }, { "3B9C94801F478031E073FE211B54538974509C", "China Unicom 128K M2M Card (Telecommunication)" }, { "3B9C94801F478031E073FE211B545983795091", "Vodafone Ukraine (Telecommunication)" }, { "3B9C95801FC78031E073FE211B6457444946CF", "MTC (Moscow) phone SIM card (Telecommunication)\nhttps://moskva.mts.ru/personal" }, { "3B9C9580811F039067464A01005404F272FE00C0", "Feitian Technologies Java Card A22CR (JavaCard)\nhttps://www.javacardos.com/store/javacard-a22cr.php" }, { "3B9C9580811F039067464A01011706F2727E0000", "A40CR (JavaCard)" }, + { "3B9C958131FE9F9067464A010253050172FE00FB", "Feitian Biopass K27 (PKI)\nhttps://www.ftsafe.com/Products/FIDO/Bio" }, { "3B9C96005275746F6B656E4543507363", "Aktiv Rutoken ECP SC T0\nhttps://www.rutoken.ru/products/all/rutoken-ecp-sc/" }, { "3B9C960058442403020020010A009005", "Ticket Restaurant Card (Other)\nhttp://www.edenred.it/buoni-pasto-welfare-benefit/ticket-restaurant-card/" }, { "3B9C978011405275746F6B656E4543507363C0", "Aktiv Rutoken ECP 3.0 NFC (PKI)\nhttps://www.rutoken.ru/products/all/rutoken-ecp-nfc/" }, { "3B9D114023006810114D696F434F53009000", "MioCOS 1.0" }, { "3B9D13813160378031C0694D54434F537302020440", "DPI Card Guatemala (eID)\nhttp://www.masktech.de/" }, { "3B9D13813160378031C0694D54434F537302020541", "MTCOS (eID)\nhttp://www.masktech.com/Products/MTCOS-Professional/11/en" }, + { "3B9D188131FC358031C0694D54434F5373020505D3", "Lithuanian e-ID Card (eID)\nhttps://www.nsc.vrm.lt/default_en.htm" }, { "3B9D944023006820014D696F434F53009000", "Miotec smartcard running Miocos 2.0 on an Atmel AT90SC646\nhttp://www.miotec.fi" }, { "3B9D95801FC38031E0524B5462110373FE211B8F", "KT WiBro UICC (2.3 GHz mobile WiMAX in South Korea)" }, { "3B9D95801FC38031E073FE211B65D00057026230", "Gemalto NFC enabled (acquired through the Simagine contest)" }, @@ -2228,16 +2428,21 @@ const static atr_t AtrTable[] = { { "3B9D95801FC780731A211B63AF09A9830F9000F3", "Estonian GSM operator TELE2 (WPKI eID support)" }, { "3B9D95803FC7A08031A073BE21135105830590007C", "NTT docomo Xi(LTE) DN05(DNP) Pink SIM (Telecommunication)" }, { "3B9D960053492303030020000400F59000", "shell (Transport)" }, + { "3B9D96801FC78031E073FE2113654C0404020096", "China umion 5G SIM (Telecommunication)" }, + { "3B9D96813160378031C0694D54434F5373020204C5", "Mozambique ID Card (eID)" }, { "3B9E94801F4280310073BE211066545953044C25CF", "MCI (Mobile Communication Company of Iran) SIM" }, + { "3B9E94801F478031A073BE21106686880212204027", "americamobile (Telecommunication)" }, { "3B9E94801F478031A073BE21136686880210421014", "Airspan USIM (Telecommunication)" }, { "3B9E94801F478031A073BE21136686880210731025", "module (JavaCard)" }, { "3B9E94801F478031E073BE211366868882183942F5", "China Unicom 128K Mini USIM (Telecommunication)" }, + { "3B9E94801F478031E073FE21136686880212653213", "MTS Moscow (Russia) SIM card (Telecommunication)\nhttps://moskva.mts.ru/personal" }, { "3B9E94801FC38031E073FE211B66D00017B40000A5", "Vodafone Ireland SIM card" }, { "3B9E94801FC78031E073FE211366425454423031DB", "XLB.5G CTC Test Card (Telecommunication)\nhttps://xielibo.com" }, { "3B9E94801FC78031E073FE211B66D0006C025F0033", "Vivo Brasil SIM Card" }, { "3B9E94801FC78031E073FE211B66D0006C0634005C", "SIM card SFR 250 128ko" }, { "3B9E94801FC78031E073FE211B66D0007A00000078", "GaduAIR (Poland) - Subscriber Identity Module (SIM)" }, { "3B9E94801FC78031E073FE211B66D0016DE80C008A", "Mobile TeleSystems (MTS) GSM SIM\nhttp://www.mts.ru/" }, + { "3B9E94801FC78031E073FE211B66D001A16B0F00C6", "Proximus (Belgium) SIM, unactivated (Telecommunication)" }, { "3B9E94801FC78031E073FE211B66D001A18D0F0020", "StarHub Happy Prepaid SIM (Telecommunication)\nhttp://www.starhub.com/personal/mobile/mobile-phones-plans/prepaid-cards.html" }, { "3B9E94801FC78031E073FE211B66D00217F71300F3", "VIETTEL Telecom 4G SIM 128KB (Vietnam) (Telecommunication)\nhttp://vietteltelecom.vn/" }, { "3B9E94801FC78031E073FE211B66D002195C130056", "SIM Card of the French mobile carrier 'La Poste Mobile' (Telecommunication)" }, @@ -2273,6 +2478,7 @@ const static atr_t AtrTable[] = { { "3B9E95801FC78031E073FE211B66D001A0C3120073", "3G MTN IRANCELL Sim Card. (Telecommunication)" }, { "3B9E95801FC78031E073FE211B66D001A1141100A6", "Globe (Telecommunication)" }, { "3B9E95801FC78031E073FE211B66D001A1721000C1", "Vodafone Hungary SIM Card (Telecommunication)\nhttp://vodafone.hu" }, + { "3B9E95801FC78031E073FE211B66D001A17C0F00D0", "Cricket SIM card (Telecommunication)" }, { "3B9E95801FC78031E073FE211B66D001A18C12003D", "Telkomsel SIM card (Telecommunication)\nhttps://www.telkomsel.com/en/kartu-as" }, { "3B9E95801FC78031E073FE211B66D001A1B810000B", "abc mobile prepaid sim card (serviced by CSL) (Telecommunication)\nhttps://www.hkcsl.com/en/abc-Mobile-Prepaid-SIM-Cards/" }, { "3B9E95801FC78031E073FE211B66D0021702130007", "AT&T prepaid nano iphone/android sim card (Telecommunication)" }, @@ -2336,12 +2542,16 @@ const static atr_t AtrTable[] = { { "3B9E96801FC78031E073FE211B66D001A0DD12006E", "USIM (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A0EC11005C", "Boost Mobile Prepaid Micro SIM Card (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A1121000A2", "OpenAirInerface (Telecommunication)" }, + { "3B9E96801FC78031E073FE211B66D001A1181100A9", "WinEMP NRI License Card (Other)" }, + { "3B9E96801FC78031E073FE211B66D001A122110093", "Lebara (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A1581100E9", "Vodafone CZ: SIMPLUS V128 LTE (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A1680F00C7", "Free Mobile SIM card (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A1721000C2", "Vodafone (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A1731000C3", "Prepaid public telephone card from Lidl Connect, Germany (Telecommunication)\nhttps://www.lidl.de/de/lidl-connect/s7373597" }, + { "3B9E96801FC78031E073FE211B66D001A1771000C7", "SIM Card Model X1 for Ting Mobile Carrier (Telecommunication)\nhttps://tingmobile.com/" }, { "3B9E96801FC78031E073FE211B66D001A1A70F0008", "Spanish Movistar Mobile phone SIM card (Telecommunication)\nhttp://www.movistar.es/" }, { "3B9E96801FC78031E073FE211B66D001A1E60F0049", "SIM O2 CZ (Telecommunication)" }, + { "3B9E96801FC78031E073FE211B66D002170912000E", "SIM/USIM (SPAIN) - ORANGE ESPAGNE VIRTUAL, S.A.U. (Orange / Jazztel / SIMYO) (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D0021759140058", "USIM card of of Ukrainian Telecommunications Operator Kyivstar, emitted after 2016 (Kyivstar GSM) (GSM/UMTS/LTE services) (Telecommunication) (Telecommunication)\nhttps://kyivstar.ua/uk/4g" }, { "3B9E96801FC78031E073FE211B66D002175B12005C", "Cellcom Israel USIM (micro FF) (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D0021760130066", "Vodafone spain barcelona (Telecommunication)" }, @@ -2353,12 +2563,20 @@ const static atr_t AtrTable[] = { { "3B9E96801FC78031E073FE211B66D00217D91200DE", "telenor (swedish mobile provider) SIM card (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D00217F41200F3", "SIM card for Swedish operator Vimla! (Telecommunication)\nhttps://www.vimla.se" }, { "3B9E96801FC78031E073FE211B66D002194B120042", "halebop (swedish mobile provider) SIM card (Telecommunication)" }, + { "3B9E96801FC78031E073FE211B66D0022436140004", "SIM (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D0022A72130049", "SIM Card OI (Brazil) (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D0022A861300BD", "Mobile Vikings SIM Card (Telecommunication)\nhttps://mobilevikings.com" }, + { "3B9E96801FC78031E073FE211B66D0022A8F1400B3", "Telefonica USIM (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D0022AD31300E8", "sim card from Mobilcom Debitel Telefonica (Telecommunication)\nhttps://md.de" }, { "3B9E96801FC78031E073FE211B66D0022AD91300E2", "sim (Telecommunication)" }, + { "3B9E96801FC78031E073FE211B66D0022AE81300D3", "Twilio Super SIM card (Telecommunication)\nhttps://www.twilio.com/iot/super-sim-card" }, + { "3B9E96801FC78031E073FE211B66D0022AF21400CE", "Tello (Telecommunication)\nhttps://tello.com/" }, { "3B9E96801FC78031E073FE211B66D00233AD140088", "4G-LTE (Telecommunication)" }, { "3B9E96803FC3A08031E073FE211B630801140F9000D3", "KT Olleh LTE Warp SA-L 1670 (Telecommunication)" }, + { "3B9E97801FC68031E073FE211B66D0019F7A1200F6", "Spectrun USA Sim Card (Telecommunication)" }, + { "3B9E97801FC68031E073FE211B66D002401D15004A", "Telia Sim card for IoT (Telecommunication)" }, + { "3B9E97801FC68031E073FE211B66D0024027150070", "verymobile wind 3 (Telecommunication)\nhttps://verymobile.it/" }, + { "3B9E97801FC68031E073FE211B66D0025E7315003A", "Twilio Super SIM (Telecommunication)\nhttps://www.twilio.com/iot/super-sim-card" }, { "3B9E97801FC78031E073FE211B66D0006B951100EE", "TracFone SIM Verizon Wireless LTE supported (Telecommunication)\nhttps://www.tracfone.com" }, { "3B9E97801FC78031E073FE211B66D0022AB3130089", "SIM T-MObile (Telecommunication)" }, { "3B9F..801FC300681.4405014649534531C8..9000..", "Setec SetCOS 4.4.1" }, @@ -2406,6 +2624,7 @@ const static atr_t AtrTable[] = { { "3B9F94401E0067114346495345105266FF819000", "Setec / FINEID\nSETEC Instant EID" }, { "3B9F94401E0067164346495345105266FF819000", "RSA SecurID 3100 or Utimaco Safeware Smartcard\nSetCOS 4.3.1 Revision Unknown" }, { "3B9F94801FC30068104405014649534531C807900018", "SetCOS 4.3.0 32K RSA\nInstant EID IP2\nSETEC SetCard 32K PKI Evaluated SetCOS 4.4.1a2" }, + { "3B9F94801FC38031A07320210805500940095E010274", "Yemen Mobile SIM Card Yemen (YE) (Telecommunication)" }, { "3B9F94801FC38031A073B6A10067CF3251CC9E6EC015", "OYEITIMES 2G GSM Blank SIM Card (Other)\nhttps://www.aliexpress.com/item/32972705510.html?spm=a2g0s.9042311.0.0.5a564c4daKCdcQ" }, { "3B9F94801FC38031E073FE21136301030283079000CE", "Programmable SIM card as one of the requirement for free5GC testing procedure (Telecommunication)" }, { "3B9F94801FC78031E073FE2100644090610082900069", "softsim (Telecommunication)" }, @@ -2420,6 +2639,7 @@ const static atr_t AtrTable[] = { { "3B9F94801FC78031E073FE21135749050C86986018CC", "China Unicom USIM 128K 6131H" }, { "3B9F94801FC78031E073FE21135786810586984018AE", "China Unicom USIM Card (Telecommunication)" }, { "3B9F94801FC78031E073FE211357868107869862188E", "OYEITIMES MCR3516 SIM Card (Telecommunication)" }, + { "3B9F94801FC78031E073FE2113578681098698621880", "Oyeitimes 5G ISIM R16 (Telecommunication)\nhttps://www.oyeitimes.com/detail.php?id=535&ids=565&idt=&ide=&dd=1410" }, { "3B9F94801FC78031E073FE21135786850686984218AB", "4G LTE blank USIM Green Card (Telecommunication)\nhttp://grcard.en.alibaba.com/product/60076835567-209365843/4G_LTE_blank_usim_card_for_4G_network.html" }, { "3B9F94801FC78031E073FE21136321150683079000F8", "Maroc Telecom 4G+ (Telecommunication)" }, { "3B9F94801FC78031E073FE21136761210D10000070F7", "Celcom XPAX (Telecommunication)\nhttps://www.celcom.com.my/personal/prepaid" }, @@ -2427,6 +2647,7 @@ const static atr_t AtrTable[] = { { "3B9F94801FC78031E073FE2119573C8660CFBA02A0ED", "Gotanet DK USIM (Telecommunication)" }, { "3B9F94801FC78031E073FE211B573786609B3289B2A1", "China Unicom Travel SIM (Telecommunication)\nhttps://www.cuniq.com/hk/data-card/asia/asia-12days.html" }, { "3B9F94801FC78031E073FE211B573786609BA182109B", "U Mobile POWER Prepaid (Telecommunication)\nhttp://www.u.com.my/prepaid" }, + { "3B9F94801FC78031E073FE211B573C8660CDA1001246", "Beeline SIM card (RUS) (Telecommunication)\nhttps://beeline.ru" }, { "3B9F94801FC78031E073FE211B573F86604D03000075", "Prepaid SIM card MOCHE (Portugal) (Telecommunication)" }, { "3B9F94801FC78031E073FE211B573F866083020000BA", "GSM-SIM Beeline RU (Telecommunication)\nhttp://beeline.ru" }, { "3B9F94801FC78031E073FE211B573F866096A100000C", "Lycamobile UICC/SIM card. (Telecommunication)\nhttps://www.lycamobile.com.au" }, @@ -2436,6 +2657,7 @@ const static atr_t AtrTable[] = { { "3B9F94801FC78031E073FE211B640681010082900045", "Mobicarte Orange" }, { "3B9F94801FC78031E073FE211B6407564200829000D0", "SIM mobi orange" }, { "3B9F94801FC78031E073FE211B649F4F002082900033", "USIM (3G DF) Orange (French Mobile Network) (Telecommunication)" }, + { "3B9F94801FC78031E073FE211B674B004A5503060083", "CU esim thd89 (Telecommunication)" }, { "3B9F95801F038031A073B6A10067CF97F9E063689957", "Telestial OneRate International SIM card (Telecommunication)\nhttp://www.amazon.com/gp/product/B004GV13VY/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1" }, { "3B9F95801F438031E073362113574A330E09314100A9", "GSM-SIM Elisa (Estonia, WPKI eID support)" }, { "3B9F95801F438031E073362113574A330E0C314100AC", "Vodafone SIM (mobile phone)" }, @@ -2449,6 +2671,7 @@ const static atr_t AtrTable[] = { { "3B9F95801FC38031A073BE21005302E232830590003C", "NTT docomo FOMA(W-CDMA) GE02(Japan Gemplus) Green SIM (Telecommunication)\nhttps://ja.wikipedia.org/wiki/%E3%83%89%E3%82%B3%E3%83%A2UIM%E3%82%AB%E3%83%BC%E3%83%89" }, { "3B9F95801FC38031A073BE2113674701030102000099", "T-Mobile (UK) SIM\nFresh Mobile (UK) SIM" }, { "3B9F95801FC38031A073BE2113674701050104000099", "T-Mobile Nederlands\nhttp://www.tmobile.nl" }, + { "3B9F95801FC38031A073BE2113674701050904000091", "SIM card (Telecommunication)" }, { "3B9F95801FC38031A073BE2113674701090901000098", "German SIM card (T-Mobile) (Telecommunication)" }, { "3B9F95801FC38031A073BE211367D002030901000006", "GSM, T-Mobile (Germany)" }, { "3B9F95801FC38031A073BE211367D002031901000016", "GSM SIM card from congstar (a no-frills service provider of Deutsche Telekom)" }, @@ -2464,11 +2687,14 @@ const static atr_t AtrTable[] = { { "3B9F95801FC38031E073FE211B649B4D011182900000", "Singular (now AT&T) 3G GSM SIM Card" }, { "3B9F95801FC38031E073FE211BB3E20174830F900088", "Gemplus GemXplore 3G USIM" }, { "3B9F95801FC78031A073B6A10067CF1713C41D2D3649", "Idemia card (Telecommunication)" }, - { "3B9F95801FC78031A073B6A10067CF1794AA28993F28", "Glaier Programable LTE USIM Card (Telecommunication)" }, + { "3B9F95801FC78031A073B6A10067CF1794AA28993F28", "Glaier Programmable LTE USIM Card (Telecommunication)" }, { "3B9F95801FC78031A073B6A10067CF3211B252C679F3", "open5gs (Telecommunication)" }, { "3B9F95801FC78031A073B6A10067CF3215A98FD70950", "LTE Card (Telecommunication)" }, + { "3B9F95801FC78031A073B6A10067CF3215CA9CD70920", "Gialer LTE USIM (Telecommunication)\nhttps://www.gialer.com/collections/writable-sim-card/products/gialer-writable-programmable-sim-card-4g-lte-wcdma-gsm-nano-micro-2ff-3ff-4ff-blank-usim-card-for-telecom-operator?variant=40982030090394" }, + { "3B9F95801FC78031A073B6A10067CF3216C3F1484998", "LTE USIM as used for Private LTE Networks. Manufacturer 'Huahong' in China (Telecommunication)" }, { "3B9F95801FC78031A073BE21005304D08083059000BE", "NTT_DoCoMo (Telecommunication)" }, { "3B9F95801FC78031A073BE211367D002040901000005", "T-Mobile SIM card issued in Germany 2012" }, + { "3B9F95801FC78031E073F62100000086538300900061", "Zong (Telecommunication)" }, { "3B9F95801FC78031E073F62113674D451500390102F4", "Vivo 4G LTE SIM Card (Telecommunication)" }, { "3B9F95801FC78031E073F62113674D4516004301008F", "VALID USIM (Telecommunication)" }, { "3B9F95801FC78031E073FE21135712291102010000C2", "sysmocom sysmoUSIM-GR1\nhttp://sysmocom.de/" }, @@ -2481,11 +2707,13 @@ const static atr_t AtrTable[] = { { "3B9F95801FC78031E073FE2113574A330E1932330084", "WIND Mobile SIM Card" }, { "3B9F95801FC78031E073FE2113574A330E1A32330087", "Rohde and Schwarz CMW-Z04. Mini-UICC Test Card (Telecommunication)" }, { "3B9F95801FC78031E073FE2113574A330E1A32360082", "TELUS 3G SIM Card" }, + { "3B9F95801FC78031E073FE2113574A330E1E32360086", "SIM Enreach (Telecommunication)" }, { "3B9F95801FC78031E073FE2113635510888307900006", "SHOW or UPlus USIM (Telecommunication)" }, { "3B9F95801FC78031E073FE2113635510AA8307900024", "2degrees NFC (Telecommunication)\nhttp://www.2degreesmobile.co.nz/home" }, { "3B9F95801FC78031E073FE2113672228004001000191", "Lycamobile Prepaid SIM-Card (Telecommunication)\nhttp://lycamobile.at" }, { "3B9F95801FC78031E073FE211367940311000002035C", "AT&T (US) GSM SIM" }, { "3B9F95801FC78031E073FE211B573C8660BEB7002010", "Kyivstar SIM (Telecommunication)\nhttps://kyivstar.ua/" }, + { "3B9F95801FC78031E073FE211B573F866096AE000002", "Kazakhstan 'Beeline' 4G SIM card (Telecommunication)\nhttps://beeline.kz" }, { "3B9F95801FC78031E073FE211B63E20394830F9000BE", "Telenet N.V. Walk & Talk SIM Card Belgium" }, { "3B9F95801FC78031E073FE211B63E204A5830F900088", "Cingular '64Ksmartchip' GSM SIM\nTelia GSM/3G (Swedish operator)" }, { "3B9F95801FC78031E073FE211B63E206A6830F900089", "TracFone (US) Net10 GSM SIM card\nSimyo (Germany) GSM SIM card\nH3G (Italy) UMTS USIM card" }, @@ -2498,6 +2726,7 @@ const static atr_t AtrTable[] = { { "3B9F95801FC78031E073FE211B640752930282900006", "AT&T GO PHONE 2G (Telecommunication)\nhttps://www.att.com/shop/wireless/gophone.html" }, { "3B9F95801FC78031E073FE211B6407536301829000F4", "AT&T UICC with USIM and ISIM (Telecommunication)" }, { "3B9F95801FC78031E073FE211B6440614100829000A2", "SIM card (Telecommunication)" }, + { "3B9F95801FC78031E073FE211B644067620082900087", "ATT SIM card (Telecommunication)" }, { "3B9F95801FC78031E073FE211B644112010082900090", "MTS SIM card (Russia) (Telecommunication)\nhttp://www.mts.ru/" }, { "3B9F95801FC78031E073FE211B6441132100829000B1", "AT&T SIM card (Telecommunication)" }, { "3B9F95801FC78031E073FE211B644132310082900080", "Telefonica | Vivo Brazil M2M SIM Card (Telecommunication)" }, @@ -2505,6 +2734,8 @@ const static atr_t AtrTable[] = { { "3B9F95801FC78031E073FE211B659F010902048105C4", "2degrees mobile SIM card\nhttp://www.2degreesmobile.co.nz/" }, { "3B9F95801FC78031E073FE211B65B4010E01028105ED", "USIM Card by Maroc Telecom Morocco (Telecommunication)" }, { "3B9F95801FC78031E073FE211B675348434F5F01019B", "baicells sim card (Telecommunication)\nhttp://www.baicells.com/" }, + { "3B9F95801FC78031E073FE211B675744534C45393794", "SIM card MTS Russia (Telecommunication)\nhttps://moskva.mts.ru/personal" }, + { "3B9F95801FC78031E073FEA11F6441805100829000D6", "AT&T SIM Card (Telecommunication)" }, { "3B9F95803FC3A08031E073FE2113638D434283F0900034", "Taisys Java Csrd (Telecommunication)" }, { "3B9F95803FC7A08031A073BE211B5305D0808305900024", "NTT docomo Xi(LTE) AX05(Gemalto) Pink SIM (Telecommunication)\nhttps://ja.wikipedia.org/wiki/%E3%83%89%E3%82%B3%E3%83%A2UIM%E3%82%AB%E3%83%BC%E3%83%89" }, { "3B9F95803FC7A08031E073FE211363554022830790007C", "Ubivelox (JavaCard)" }, @@ -2515,6 +2746,8 @@ const static atr_t AtrTable[] = { { "3B9F958131FE9F006646530510043171DF000000000026", "ePass2003 (PKI)" }, { "3B9F958131FE9F006646530510043171DF000006000020", "FEITIAN ePASS 2003 Auto (PKI)" }, { "3B9F958131FE9F006646530510043171DF00003900001F", "Feitian ePass2003 (PKI)" }, + { "3B9F958131FE9F006646530510063171DF000000000024", "FT ePass2003Auto USB Token (PKI)" }, + { "3B9F958131FE9F006646530510323871DF00000600001F", "token (PKI)" }, { "3B9F958131FE9F006646530520032571DF000000000005", "Feitian ePass2003 token" }, { "3B9F958131FE9F006646530520032571DF000003900096", "Feitian ePass2003 token (PKI)" }, { "3B9F958131FE9F006646530523002571C39F0000000086", "Feitian ePass2003 token" }, @@ -2522,6 +2755,10 @@ const static atr_t AtrTable[] = { { "3B9F958131FE9F006646530523002571DF000003900096", "Feitian USB Cryptographic token (FIPS 140-2 Level 3) (PKI)\nhttp://www.ftsafe.com/product/epass/epass2003" }, { "3B9F958131FE9F006646530532022571DF000006000010", "ePass 3003 Auto (PKI)\nhttps://www.ftsafe.com/products/PKI/Standard/Specification" }, { "3B9F958131FE9F006646530534002571DF0000036A82F9", "Feitian ePass2003Auto (PKI)\nhttps://www.ftsafe.com/Products/PKI/Standard/Specification" }, + { "3B9F958131FE9F006646530551003371DF000000000061", "FT ePass2003Auto 00 00 (PKI)" }, + { "3B9F958131FE9F006646530551003371DF0000036A828A", "Feitian epass2003 Auto (PKI)" }, + { "3B9F958131FE9F006646530551003371DF0000039000F2", "HyperPKI USB Token (PKI)\nhttps://www.hypersecu.com/hyperpki" }, + { "3B9F958131FE9F006646530551003371DF000006000067", "Epass2003 (PKI)" }, { "3B9F95C00A1F078031E073FE211B63F100AD830F90001D", "EMT WPKI USIM (2014, Estonia, JavaCard) (Telecommunication)" }, { "3B9F95C00A1FC78031E073FE211B63F100AD830F9000DD", "Telenor SIM card (Norway)" }, { "3B9F96400A8031E06B0420050258555555555555", "BuyPass identification card. It can also possibly be used to hold e-currency." }, @@ -2532,31 +2769,40 @@ const static atr_t AtrTable[] = { { "3B9F96801F438031E073362113574A330E0C314100AF", "GSM, Vodafone (Germany)" }, { "3B9F96801F478031E073362113574A330E0C314100AB", "NATEL SIM-Card swisscom\nVodafone Germany Micro-SIM from 2010" }, { "3B9F96801F478031E073FE2113574A330E253332003B", "SMART prepaid card, Estonia (Telecommunication)" }, + { "3B9F96801F878031A073BE2111630000018305900089", "jio sim card (Telecommunication)" }, { "3B9F96801F878031E073FE2119674A555473300948DB", "nano sim/usim card (Telecommunication)" }, { "3B9F96801F878031E073FE2119674A555475300662F8", "SIM Card (Telecommunication)" }, { "3B9F96801F878031E073FE2119674A557330310746BE", "Hologram Developer Global IoT SIM Card (Telecommunication)\nhttps://hologram.io/store/global-iot-sim-card/17" }, { "3B9F96801F878031E073FE211B674A4C5275310451D5", "Test card provided with 4G/5G network from Amarisoft (Telecommunication)" }, { "3B9F96801F878031E073FE211B674A4C7530300248A9", "Cardcentrics (Telecommunication)" }, - { "3B9F96801F878031E073FE211B674A4C753034054BA9", "Test Card (Telecommunication)" }, + { "3B9F96801F878031E073FE211B674A4C753034054BA9", "sysmoISIM-SJA2 (Telecommunication)\nhttps://osmocom.org/projects/cellular-infrastructure/wiki/SysmoISIM-SJA2" }, + { "3B9F96801F878031E073FE211B674A55527531054BD7", "Softbank (C2) USIM card (Telecommunication)" }, + { "3B9F96801F878031E073FE211B674A55733031094BBF", "NB-IoT SIM (Telecommunication)" }, { "3B9F96801FC30068104405014649534531C80790001A", "SETEC SetCard 32K PKI Evaluated SetCOS 4.4.1" }, { "3B9F96801FC38031E073FA21006331602383109000BE", "TAISYS SIMoME JAR (JavaCard)\nhttp://www.taisys.com/p-detail?id=39beTne-hf4u2Y5DnWghweplyFR-dUUf1-xpy55cWQ" }, + { "3B9F96801FC38031E073FE2100671101674006007789", "Beni's UICC 4G LTE (Telecommunication)\nhttps://cslgroup.co.id/" }, { "3B9F96801FC38031E073FE211BB3E2027E830F900082", "Vodafone SIM Card (D2, 1800Mhz, Germany, Twincard, possibly others too?), manufactured by Gemplus (See stamp on the chip)\nMobileOne (Singaporean 3G/GSM operator) SIM card 'II(3G-64) M1 3G '" }, { "3B9F96801FC68031E073F62113674D45220079020080", "TMobile (Telecommunication)" }, { "3B9F96801FC68031E073F62113674D4522008001007A", "ORANGE SPAIN GSM 4G SIM (Telecommunication)" }, { "3B9F96801FC68031E073F62113675602220080010127", "giffgaff USIM (Telecommunication)" }, { "3B9F96801FC68031E073F62113675603220121010087", "Rain 4G 5G Internet Service provider (Telecommunication)\nhttps://www.rain.co.za" }, + { "3B9F96801FC68031E073F62113675603220121020084", "T-Mobile Sim Card (Telecommunication)" }, { "3B9F96801FC68031E073FE2111633F011183079000E4", "VR-Bank VRNetworld HBCI Card (Bank)" }, { "3B9F96801FC68031E073FE2113574A330577333300E2", "USIM issued by Moldcell mobile operator in Moldova (Telecommunication)\nhttp://www.moldcell.md/" }, + { "3B9F96801FC68031E073FE211B6300850083819000C2", "Vodafone IoT USIM (Telecommunication)" }, { "3B9F96801FC68031E073FE211B6441024100829000C2", "Empire Bank ltd (Bank)\nFinnish Telia SIM-card (Telecommunication)" }, { "3B9F96801FC68031E073FE211B644104810082900004", "SAP Leonardo IoT Connect 365 SIM card (Telecommunication)\nhttps://www.sap.com/uk/products/enterprise-iot-connect.html" }, { "3B9F96801FC68031E073FE211B644115010082900095", "Telia LT prepaid Ezys USIM (Telecommunication)\nhttps://www.ezys.lt" }, { "3B9F96801FC68031E073FE211B6441177300829000E5", "Prixtel SIM card over OrangeF network (Telecommunication)\nhttps://www.prixtel.com" }, { "3B9F96801FC68031E073FE211B6441193100829000A9", "Taiwan Star Telecom Corporation Limited (Telecommunication)\nhttps://www.tstartel.com/CWS/" }, + { "3B9F96801FC68031E073FE211B6441247100829000D4", "RWG Mobile SIM Card (Telecommunication)\nhttps://www.rwgmobile.wales/rates-plans-eng-per/" }, { "3B9F96801FC68031E073FE211B644124910082900034", "Fido Canada (Telecommunication)" }, { "3B9F96801FC68031E073FE211B6441255100829000F5", "R&S CMW-Z06 Multi Test SIM (Telecommunication)" }, { "3B9F96801FC68031E073FE211B644130320082900083", "SFR (Telecommunication)" }, { "3B9F96801FC68031E073FE211B6441346100829000D4", "Ting X1 GSM SIM Card (4G, T-Mobile network) (Telecommunication)\nhttps://ting.com/shop/gsmSIM" }, + { "3B9F96801FC68031E073FE211B65CA010E0209810599", "Liquid Telecom Zambia (Telecommunication)\nhttps://zm.liquidhome.tech/" }, { "3B9F96801FC68031E073FE211B66D00206131218031E", "SIM card (Telecommunication)" }, + { "3B9F96801FC68031E073FE211B66D002061312180419", "T-Mobile NL SIM only (Telecommunication)" }, { "3B9F96801FC68031E073FE211B66D00206E20F1801F0", "Telekom Sim card (Telecommunication)" }, { "3B9F96801FC68031E073FE211B66D00206E20F1803F2", "Vulcan 0502 T-Mobile SIM (Telecommunication)" }, { "3B9F96801FC68031E073FE211B66D00206E20F1804F5", "T-Mobile Nederlands (Telecommunication)\nhttps://t-mobile.nl/" }, @@ -2565,6 +2811,7 @@ const static atr_t AtrTable[] = { { "3B9F96801FC68031E073FE211B66D00221AB11180180", "Telekom Germany Triple SIM issued in 2018 (Telecommunication)" }, { "3B9F96801FC68031E073FE211B66D00221AB11180786", "telekom HU nano sim card (Telecommunication)\nhttps://www.telekom.hu" }, { "3B9F96801FC68031E073FE211C6441193100829000AE", "SORACOM SIM (plan unknown) (Telecommunication)" }, + { "3B9F96801FC78031A073BE21136742470111000001CC", "Bank of Hawai'i (Bank)\nhttps://www.boh.com/" }, { "3B9F96801FC78031A073BE2113674320071800000100", "sysmoUSIM-SJS1 (Telecommunication) (Telecommunication)\nhttp://www.sysmocom.de/products/sysmousim-sjs1-sim-usim" }, { "3B9F96801FC78031A073BE21136743200718000001A5", "sysmoUSIM-SJS1 (Telecommunication)\nhttp://www.sysmocom.de/products/sysmousim-sjs1-sim-usim" }, { "3B9F96801FC78031A073BE21136744220610000001A9", "Fairwaves test SIM card (Telecommunication)\nhttp://fairwaves.co" }, @@ -2576,6 +2823,9 @@ const static atr_t AtrTable[] = { { "3B9F96801FC78031E073F62113675603270089010228", "TMobile Prepaid USIM (Telecommunication)" }, { "3B9F96801FC78031E073F621136756032701010203A3", "USIM LTE MOVISTAR (Telecommunication)" }, { "3B9F96801FC78031E073F621136756032701020100A0", "vivo (Other)" }, + { "3B9F96801FC78031E073F62113675603270120020081", "VALID brand SIM card from T-Mobile (Telecommunication)" }, + { "3B9F96801FC78031E073F6211367560346014901008A", "T-Mobile Poland pre-paid SIM card (Telecommunication)" }, + { "3B9F96801FC78031E073F6A157574A4D020B6110005B", "G+D Mobile Security for private 5G USIM (Telecommunication)\nhttps://www.gi-de.com/en/connectivity/mobile-network-operator/5g#5g-sim" }, { "3B9F96801FC78031E073FE21..63......83..9000..", "TIM (Italy) 128KB GSM SIM\nH3G (Italy) UMTS USIM\nVodafone (UK) SIM" }, { "3B9F96801FC78031E073FE211163407262830790009A", "GSM SIM / LTE UICC card issued by Omnitel, Lithuania (Telecomunications)" }, { "3B9F96801FC78031E073FE2111634082918307900099", "Chunghwa Telecom (Taiwan) 3G/4G PrePaid card\nhttps://www.twgate.net/prepaidcard/product_en.html" }, @@ -2591,6 +2841,8 @@ const static atr_t AtrTable[] = { { "3B9F96801FC78031E073FE2113574A330E25333200BB", "Sintel hi! Tourist prepaid (Telecommunication)\nhttp://www1.singtel.com/personal/phones-plans/mobile/prepaid/hitouristsimcards.html" }, { "3B9F96801FC78031E073FE2113574A330E26333200B8", "Vodafone sim card (Telecommunication)" }, { "3B9F96801FC78031E073FE2113574A330E3F333400A7", "SIM Card (Telecommunication)" }, + { "3B9F96801FC78031E073FE2113574A338101330017", "Telefonica M2M Global SIM (Telecommunication)" }, + { "3B9F96801FC78031E073FE2113574A33810433330014", "PureTalk SIM Card (Telecommunication)" }, { "3B9F96801FC78031E073FE2113679118020406060651", "USIM (3G PF) Orange" }, { "3B9F96801FC78031E073FE211367931801010401095F", "Telstra 128K Universal Orange SIM Card (Telecommunication)" }, { "3B9F96801FC78031E073FE2113679319010401010750", "Telefonica m2m simcard, Movistar o2 vivo (Telecommunication)" }, @@ -2600,6 +2852,7 @@ const static atr_t AtrTable[] = { { "3B9F96801FC78031E073FE211367933001030301047F", "T-Mobile US SIM card (Telecommunication)" }, { "3B9F96801FC78031E073FE211367933001030403027C", "Comprion test U(SIM): model 128K/J LTE Test (U)SIM - Mini-UICC, product number Prod. No.: 10432006 (Telecommunication)\nhttp://www.comprion.com/en/products/test__u_sims/3g_test_usim_cards" }, { "3B9F96801FC78031E073FE211367933001060201027D", "Morpho USIM (Telecommunication)" }, + { "3B9F96801FC78031E073FE2113679330010802010273", "Bouygues Telecom SIM (Telecommunication)" }, { "3B9F96801FC78031E073FE211367933001110201026A", "R&S CMW-Z04 Mini-UICC Test Card (Telecommunication)\nhttp://www.rhode-schwartz.com" }, { "3B9F96801FC78031E073FE2113679331010801010172", "Morpho (Telecommunication)" }, { "3B9F96801FC78031E073FE2113679403030A02020244", "Digi mobil Romania (old sim card version) (Telecommunication)" }, @@ -2609,6 +2862,7 @@ const static atr_t AtrTable[] = { { "3B9F96801FC78031E073FE211367940401070202024C", "Orange Mobicarte (France)" }, { "3B9F96801FC78031E073FE211367940404030505054A", "Claro operator SIM" }, { "3B9F96801FC78031E073FE211367941602070502025A", "CSL Mobile / PCCW SIM Card (Telecommunication)\nhttp://www.hkcsl.com/" }, + { "3B9F96801FC78031E073FE211367941602120101014B", "Airtel India Sim Card (Telecommunication)" }, { "3B9F96801FC78031E073FE2113679801010202030142", "Telenor SIM card (Hungary) (Telecommunication)\nhttps://www.telenor.hu" }, { "3B9F96801FC78031E073FE2113679801010402030247", "ReadySIM / T-Mobile USA USIM (2013) (Telecommunication)\nhttp://www.readysim.com/" }, { "3B9F96801FC78031E073FE2113679801010803010349", "Yesss! SIM card (Austria) (Telecommunication)\nhttps://www.yesss.at" }, @@ -2629,8 +2883,11 @@ const static atr_t AtrTable[] = { { "3B9F96801FC78031E073FE2115574A330E3B333400A5", "O2 Spain phone SIM (Telecommunication)\nhttps://o2online.es/" }, { "3B9F96801FC78031E073FE2115574A330E3F333500A0", "Telefonica (Germany) SIM Card (Telecommunication)" }, { "3B9F96801FC78031E073FE2117574A330E3F333400A3", "Telecommunication (SIM or USIM card) T-Mobile Communications (Telecommunication)" }, + { "3B9F96801FC78031E073FE2117574A330E3F333500A2", "Megafon (RUS) SIM Card (Telecommunication)\nhttps://megafon.ru" }, { "3B9F96801FC78031E073FE2117574A330E3F333600A1", "Bell Mobility MULTI SIM (Telecommunication)\nhttps://bell.ca" }, { "3B9F96801FC78031E073FE2117574A33810433360015", "HoT Austria SIM Card (Telecommunication)\nhttps://hot.at/" }, + { "3B9F96801FC78031E073FE2117574A3382033339001E", "Sm@rtSIM Zeta (Giesecke & Devrient SIM) (Telecommunication)" }, + { "3B9F96801FC78031E073FE2117574A33820433390019", "NB-IoT SIM (Telecommunication)" }, { "3B9F96801FC78031E073FE211B57318660B21A0C0C9F", "SIM CARD (JavaCard)" }, { "3B9F96801FC78031E073FE211B630057008381900011", "3 (3g microUSIM) Italian subsidiary H3G" }, { "3B9F96801FC78031E073FE211B634041918307900050", "giffgaff UK 3G SIM\nnetzclub sponsored mobile\no2 Loop GSM SIM Germany (PREPAID) from 2013" }, @@ -2655,7 +2912,10 @@ const static atr_t AtrTable[] = { { "3B9F96801FC78031E073FE211B6441447300829000B7", "Bouygues Telecom (French Mobile Provider SIM card) (Telecommunication)\nhttps://www.bouyguestelecom.fr" }, { "3B9F96801FC78031E073FE211B6441503100829000E1", "telcel sim card (Telecommunication)" }, { "3B9F96801FC78031E073FE211B6441725100829000A3", "Free Mobile (French wireless service provider) SIM card (mini-SIM with micro-SIM cutout) received in 2020-09 (Telecommunication)\nhttps://mobile.free.fr/" }, + { "3B9F96801FC78031E073FE211B6441725200829000A0", "Woolworths Mobile Prepaid SIM (Telecommunication)\nhttps://mobile.woolworths.com.au/" }, { "3B9F96801FC78031E073FE211B6441763200829000C4", "T-Mobile SIM card issued April 2021 (Telecommunication)" }, + { "3B9F96801FC78031E073FE211B6450040100826A82EC", "SIM (Telecommunication)" }, + { "3B9F96801FC78031E073FE211B6450055100829000C5", "Sim card Team Telecom Armenia (Telecommunication)\nhttps://www.telecomarmenia.am/hy/" }, { "3B9F96801FC78031E073FE211B65240109010081057B", "Lycamobile (UK) GSM SIM card" }, { "3B9F96801FC78031E073FE211B65260109000781057F", "EMT WPKI 2015 (ECC) subscription (Telecommunication)\nhttps://www.emt.ee/en/pakkumised/mobiil-id" }, { "3B9F96801FC78031E073FE211B65270109010381057B", "slarmy (Telecommunication)" }, @@ -2663,8 +2923,12 @@ const static atr_t AtrTable[] = { { "3B9F96801FC78031E073FE211B652A010A0102810574", "Thailand AIS SIM Card (Telecommunication)" }, { "3B9F96801FC78031E073FE211B652A010E0201810570", "gsm (Telecommunication)" }, { "3B9F96801FC78031E073FE211B652D010C0400810572", "Tri Indonesia Bima+ SIM Card (Telecommunication)\nhttps://beta.tri.co.id/3digiworld/Bimaplus" }, + { "3B9F96801FC78031E073FE211B652F0109020A810579", "cellcom israel sim (Telecommunication)" }, { "3B9F96801FC78031E073FE211B652F010A0301810570", "SMART Prepaid SIM (Telecommunication)" }, + { "3B9F96801FC78031E073FE211B652F010A0304810575", "Smart Telecom (PH) (Telecommunication)\nhttps://smart.com.ph/Prepaid/sim-and-phones/lte-prepaid-sim" }, + { "3B9F96801FC78031E073FE211B652F010D0100810574", "vodacom_sim (Pay TV)" }, { "3B9F96801FC78031E073FE211B6556544C017481056D", "Viettel LTE SIM (Telecommunication)" }, + { "3B9F96801FC78031E073FE211B6556544C017681056F", "Viettel Telecom (Telecommunication)" }, { "3B9F96801FC78031E073FE211B65630109020181053E", "2degrees Mobile SIM Card New Zealand (Telecommunication)\nhttp://2degreesmobile.co.nz" }, { "3B9F96801FC78031E073FE211B65BA010904048100E1", "Blank SIM (Telecommunication)" }, { "3B9F96801FC78031E073FE211B66D0016B820E1801FE", "Telekom Deutschland GmbH - Xtra Data Karte (3G SIM)" }, @@ -2678,11 +2942,17 @@ const static atr_t AtrTable[] = { { "3B9F96803FC7008031E073FE211F6441262100829000A3", "Smartjac SMAOT100A234FF (Telecommunication)\nhttps://smartjac.com" }, { "3B9F96803FC7828031E073F62157574A330581053000CE", "COMPRION M2M eUICC (Telecommunication)" }, { "3B9F96803FC7828031E073F62157574A4D020B60010069", "eSIM GSMA Card (Telecommunication)\nhttps://www.gsma.com/newsroom/wp-content/uploads/SGP.22_v2.2.pdf" }, + { "3B9F96803FC7828031E073F62157574A4D020B60610009", "ting (Telecommunication)" }, + { "3B9F96803FC7828031E073FE211B57AA8660F0010011EE", "eSIM.me pluggable eSIM (Telecommunication)\nhttps://esim.me/" }, + { "3B9F96803FC7828031E073FE211B633A204E8300900031", "eSIM (Telecommunication)" }, + { "3B9F96803FC7828031E075F62157210355020B60500019", "st33g1m2 (Telecommunication)\nhttps://www.st.com/en/secure-mcus/st33g1m2.html" }, + { "3B9F96803FC7A08031E073F62116574A4D020233456377", "ISIS-Ready T-Mobile Sim Card (Telecommunication)" }, { "3B9F96803FC7A08031E073F62156574A4D020B3444005B", "Norwegian telenor (Telecommunication)\nhttp://www.telenor.no" }, { "3B9F96803FC7A08031E073F62157574A4D020B34546329", "Orange FR - opa (Telecommunication)" }, { "3B9F96803FC7A08031E073FE211B63F100E8830090005E", "UICC CARD (Telecommunication)" }, { "3B9F96803FC7A08031E073FE211B6407689A00829000B4", "Orange SIM Card (Telecommunication)" }, { "3B9F96803FC7A08031E073FE211B64080503008290004F", "NFC-enabled SIM card of MTS Russia. (Telecommunication)" }, + { "3B9F96803FC7A08031E073FE211F6300690083819000AB", "GSM file system and SWP sample supplied with STMicro development kit (Other)" }, { "3B9F96803FC7A08031E073FE211F6441269100829000B3", "LTE Lab SIM Ver 1.3 (Telecommunication)" }, { "3B9F968131FE458065544312210831C073F6218081059A", "Scientific and Technological Research Council of Turkey (test card) (eID)" }, { "3B9F968131FE45806755454B41451212318073B3A180EA", "AKiS v1.2 on nxp chip" }, @@ -2691,10 +2961,12 @@ const static atr_t AtrTable[] = { { "3B9F968131FE45806755454B41451292318073B3A1806A", "AKiS v1.2.2 on infineon chip" }, { "3B9F968131FE45806755454B41451293318073B3A1806B", "AKiS v1.3 on infineon chip" }, { "3B9F968131FE5D00640428010231C073F701D000900065", "German eTicketing SAM (Transport)\nhttps://www.eticket-deutschland.de/" }, + { "3B9F968131FE6D00640428010231C073F701D000900055", "VDV-KA Secure Access Module (German Public Transport) (Transport)\nhttps://www.eticket-deutschland.de/" }, { "3B9F968131FE9D006405A0030431C073F701D000900028", "Deutsche Telekom AG, TeleSec PKS ECC Signature Card (PKI)\nhttps://www.telesec.de/en/signaturecard" }, { "3B9F9681B1FE451F070064051EB20031B0739621DB0590005C", "SignTrust (www.signtrust.de)\nInfinion SLE66CX680PE with Starcos 3.2\nhttp://www.deutschepost.de/dpag?xmlFile=link1015459_49595" }, { "3B9F9681B1FE451F070064051EB20331B0739621C005900044", "German Dentist ID (eID)" }, { "3B9F96C00A1FC38031E073FE211B63F100AD830F9000DA", "SIM SFR Pro (French Mobile Operator)" }, + { "3B9F96C00A1FC68031E073FE211F65D00233131B810FFA", "Tinkoff SIM card (Telecommunication)" }, { "3B9F96C00A1FC78031E073FE211B63F100AD830F9000DE", "H3G (Italy) UMTS USIM card" }, { "3B9F96C00A1FC78031E073FE211B65D0011009228100F3", "Verizon 4G LTE SIM Card (Telecommunication)\nhttp://www.verizonwireless.com/support/information/4gsim.html" }, { "3B9F96C00A1FC78031E073FE211B65D0018E0E3281007A", "Rogers 3G SIM card" }, @@ -2702,6 +2974,7 @@ const static atr_t AtrTable[] = { { "3B9F96C00A1FC78031E073FE211F65D0020B11A4810F7E", "Telia Finland Oyj, network operator LTE (Telecommunication)" }, { "3B9F96C00A1FC78031E073FE211F65D013370F3B810FD2", "Gemalto Security Element (PKI)" }, { "3B9F96C00A31FE45435431690B010001000000000000000D", "EU smart tachograph card (driver/company/control/workshop)\nhttps://dtc.jrc.ec.europa.eu/" }, + { "3B9F96C00A31FE45754A6176656C696E2D4F5320312E3051", "Vietnam ID Card (eID)" }, { "3B9F96C00A3FC6A08031E073FE211B65D001740EEB810FD7", "Verizon '4G LTE' USIM (Telecommunication)" }, { "3B9F96C00A3FC6A08031E073FE211B65D001740F50810F6D", "5G (Telecommunication)" }, { "3B9F96C00A3FC6A08031E073FE211F65D001900F3B810FE6", "Verizon US USIM card (Telecommunication)" }, @@ -2715,6 +2988,7 @@ const static atr_t AtrTable[] = { { "3B9F97801FC68031E073FE211B6441442100829000E5", "SAKURA Internet SIM (Telecommunication)\nhttps://www.sakura.ad.jp/services/sim/" }, { "3B9F97801FC68031E073FE211B65CA010E060B81059E", "rain Networks - R15 4G Sim Card (Telecommunication)\nhttp://www.rain.co.za" }, { "3B9F97801FC78031E073FE211367980801120401045B", "Tmobile Sim card (Telecommunication)" }, + { "3B9F97801FC78031E073FE2113679814010202010257", "Orange SIM from Egypt (Telecommunication)" }, { "3B9F97803FC7828031E073FE211F640856210082900019", "eSIM card (Telecommunication)" }, { "3B9F97803FC7828031E073FE211F6409069200829000FB", "Ubigi Transatel esim (Telecommunication)" }, { "3B9F978131FE458065544312210831C073F621808105", "Republic of Turkey Identity Card (eID)\nhttps://bilgem.tubitak.gov.tr/en/icerik/national-identity-card-tr-nc-identity-card" }, @@ -2761,6 +3035,7 @@ const static atr_t AtrTable[] = { { "3BB7110081319043A5..............", "Siemens CardOS/M V1.4 (SLE44C80S)" }, { "3BB7110081319043C517B09D19221E1F", "CryptoTech blank access/authentication card (Other)\nhttp://www.cryptotech.com.pl/" }, { "3BB7110081319053B5..............", "CardOS EM/V1.4 (SLE44CR80S)" }, + { "3BB711008131FE432025854702202866", "Research Institute of Applied Information Technologies (Other)\nhttp://dodatok.osvita.net/" }, { "3BB711008131FE4320283FB50320313B", "Research Institute of Applied Information Technologies (Other)\nhttp://dodatok.osvita.net/" }, { "3BB718008131704310434E5452563253", "Avtor SecureToken (PKI)" }, { "3BB718008131FE6553504B323490005A", "Giesecke & Devrient Starcos 2.4" }, @@ -2770,6 +3045,8 @@ const static atr_t AtrTable[] = { { "3BB794008131FE6553504B32339000D1", "Giesecke & Devrient Starcos 2.3\nDeutsche Bank WebSign (RSA-Card)\nG&D StarSign Token\nOsakidetza ONA (eID)\nhttp://www.osakidetza.euskadi.eus/r85-ckserv01/es/contenidos/nota_prensa/ruedasanidad35/es_rs/ruedasanidad35_c.html" }, { "3BB813008131205D0057696E4361726402", "SmartCard for Windows 1.1" }, { "3BB813008131FA524348544D4F494341A5", "citizen digital certificate (PKI)\nhttp://moica.nat.gov.tw/" }, + { "3BB897008131FE45FFFF148230502300F1", "UAE Emirates ID (eID)\nhttps://www.icp.gov.ae" }, + { "3BB89700C00831FE45FFFF148230502300B8", "Infineon SECORA ID X (JavaCard)" }, { "3BB918008131FE9E8073FF614083000000DF", "Serbian Identity Card\nThis is the new Serbian biometric identity card (every adult cityzen\nmust have). The chip contains owners picture, name, date and place\nof birth, current address, unique ID number and fingerprint." }, { "3BB9940040144747334D4838353330", "T D1 GSM card (Telecommunication)" }, { "3BB9940040144747334E4838363430", "GSM-SIM card of the Austrian mobile phone provider One\nhttp://www.one.at\nProximus SIM - Belgium (SetCOS?)\no2 GSM-SIM card Germany 2003" }, @@ -2790,6 +3067,7 @@ const static atr_t AtrTable[] = { { "3BBA96008131865D0064056002033180900066", "Telesec TCOS 2 (SLE66P)\nTCOS 2.0 (on CX320P)\nTeleSec Netkey Card" }, { "3BBA96008131865D00640560020331809000667001040530C9", "TeleSec Netkey E4 Card" }, { "3BBA96008131865D0064057B0203318090007D", "TeleSec NetKey Card\nDeutsche Post card (tcos)" }, + { "3BBB18008131FE4580670518B1020184008105E0", "STARCOS Smart Card (Other)\nhttps://www.gi-de.com/de/identities/unternehmenssicherheit/signaturkarte" }, { "3BBB1800C01031FE4580670412B003030000810138", "Giesecke & Devrient Star Sign Card, STARCOS 3.0 DI, 72 KB, RSA2048 bit\nGiesecke & Devrient Smartc@fe Expert 32K v2.0" }, { "3BBB1800C01031FE4580670412B00303000081053C", "Philips Smart MX\nSzczecin University of Technology in Poland student identity card (Elektroniczna Legitymacja Studencka = student identity card)\nCSOB bank, Czech Republic\nCATCert (Agencia Catalana de Certificacio) catalan government workers identity card" }, { "3BBB1800C03E31FE654726442054534D20312E30B7", "Italian Tachograph Driver Card" }, @@ -2873,9 +3151,9 @@ const static atr_t AtrTable[] = { { "3BD0A8FF81F1FB24001FC3F4", "Philips DESFire SAM" }, { "3BD218008131FE450101C1", "Dutch License Plate Card (RDW)\nhttps://commons.wikimedia.org/wiki/File:Kentekencard_voorzijde_1_december_2013.jpg" }, { "3BD218008131FE58C90114", "Atos CardOS5 (PKI)\nhttp://atos.net/NR/rdonlyres/17C7BDD0-225B-4A58-B9A4-438EA3F3238A/0/74743_20120830_160149_cardos_v5_0__datenblatt_en.pdf" }, - { "3BD218008131FE58C90217", "WVDP (West Valley Demonstration Project?) (PKI)" }, + { "3BD218008131FE58C90217", "Atos CardOS 5.3 (PKI)\nhttp://www.atos.net/cardos" }, { "3BD218008131FE58C90316", "Austrian 'RKS-Card' issued by GlobalTrust (PKI)\nhttps://secure.globaltrust.eu/info-rksv.html" }, - { "3BD218008131FE58C90411", "Identity Card in Slovakia with security chip and e-signature issued after 2021-06-21 (eID)" }, + { "3BD218008131FE58C90411", "Identity Card in Slovakia with security chip and e-signature issued after 2021-06-21 (eID)\nD-TRUST Card 4.1 Standard, qualified signature card" }, { "3BD218008131FE58CA6076", "CardOS IoT V5.4 (PKI)\nhttps://atos.net/wp-content/uploads/2018/11/ct_181127_lpm_cardos_iot_v5-4_fs_en4_web.pdf" }, { "3BD21802C10A31FE58C80D51", "Siemens Card CardOS M4.4" }, { "3BD396FF81B1FE451F078081052D", "German public health insurance card (Elektronische Gesundheitskarte eGK), 2nd generation (G2) (HealthCare)" }, @@ -2886,6 +3164,7 @@ const static atr_t AtrTable[] = { { "3BD518FF8191FE1FC38073C8211309", "Athena IDProtect Key (v2)\nhttp://www.athena-scs.com/product.asp?pid=33" }, { "3BD5950400AE01020101", "Axalto Cyberflex Access 64K v2b SM 1.1" }, { "3BD595FF8091FE1FC38073C8211385", "Athena IDProtect - Cryptographic Java Card\nhttp://www.athena-scs.com/product.asp?pid=32" }, + { "3BD596028031FE654F734549441F", "AVR128DA32 microcontroller based open source EID smartcard with RSA and ECC. (eID)\nhttps://oseid.sourceforge.io/" }, { "3BD596FF8191FE1FC34332333030CC", "HID Global - Crescendo C2300 (PKI)\nhttps://www.hidglobal.com/products/cards-and-credentials/crescendo/c2300" }, { "3BD6180080B1806D1F038051006110309E", "Atmel/Athena T0 PC/SC Compliance Test Card No. 1" }, { "3BD618008131FE7D415350204F5383", "ASP FIXED CHAL1, 2, 3 and 4 (Other)" }, @@ -2893,14 +3172,17 @@ const static atr_t AtrTable[] = { { "3BD6960081B1FE451F078031C1521118F8", "smart card from NASA, 2019 (PKI)" }, { "3BD6960081B1FE451F878031C152211949", "DHS CAC card (PKI)" }, { "3BD6960081B1FE451F878031C152411A2A", "Identiv SCR3310 v2.0 (eID)" }, - { "3BD6970081B1FE451F078031C1521118F9", "NASA Personal Identity Verification (PIV) card (eID)" }, + { "3BD6970081B1FE451F078031C1521118F9", "NASA Personal Identity Verification (PIV) card (eID)\nIDEMIA Cosmo V8.0 with a PIV applet" }, { "3BD6970081B1FE451F078031C1521119F8", "Secure badge (PKI)" }, { "3BD6970081B1FE451F878031C152211948", "DOS PIV (PKI)" }, { "3BD6970081B1FE451F878031C152211A4B", "ID-One PIV 2.4 (P/N 1501381) from IDEMIA (Other)" }, - { "3BD6970081B1FE451F878031C152411A2B", "Oberthur Technologies ID-One PIV/CIV on V8 Device (eID)\nhttps://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp2986.pdf" }, + { "3BD6970081B1FE451F878031C152411A2B", "Oberthur Technologies ID-One PIV/CIV on V8 Device (eID)\nhttps://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp2986.pdf\nIDEMIA Cosmo V8.1 with a PIV applet" }, + { "3BD81800801F078031C1640806920F", "US Government CAC (PKI) / IDEMIA Cosmo v8 (PKI)\nhttps://www.idemia.com/id-one-piv-card" }, + { "3BD81800801F078031C1640806920FDF", "US DoD Common Access Card (IDEMIA Cosmo v8) (PKI)" }, { "3BD8180080B1FE451F078031C1640806920FD5", "Oberthur Cosmo v8 (PKI)" }, { "3BD818FF8131FE458064041BB42A8105D5", "Schweizerische Krankenversicherungskarte KVG (HealthCare)" }, { "3BD818FF81B1FE451F038064041AB403810561", "D-Trust multicard advanced 3.1\nGerman public health insurance card ('Gesundheitskarte'), issuer SBK 'Siemens Betriebskrankenkasse'" }, + { "3BD896008031FE4400531200840F90001F", "Cape Verde National Identity Card (CNI) (eID)\nhttps://sniac.cv/cartao-nacional-de-identificacao/" }, { "3BD8960081B1FE451F0743485447504B494ADD", "Citizen Digital Certificate, Taiwan (PKI)\nhttp://moica.nat.gov.tw/" }, { "3BD896FF8131FE458064041BB42A81055B", "Swiss LAMal health insurance card" }, { "3BD911008131FE8D0000464F4D53312E3132", "TFOMS (eID)\nhttp://www.samtfoms.ru" }, @@ -2919,13 +3201,17 @@ const static atr_t AtrTable[] = { { "3BDA13FF8131FB468012392F31C173C601C03B", "My Number Card (The Social Security and Tax Number System in JAPAN) (eID)\nhttp://www.cas.go.jp/jp/seisaku/bangoseido/english.html" }, { "3BDA1802C10A31FE584B53776973735369676EA9", "SuisseID Post - ATOS CardOS 4.x (eID)\nhttps://postsuisseid.ch/" }, { "3BDA18FF8191FE1FC350564A434F503353494472", "J3H145 (P6 SecID) purchased from FUTAKO Ltd., Taiwan (JavaCard)\nhttp://www.javacardsdk.com" }, + { "3BDA18FF8191FE1FC380641211111073C0C1801B", "Belarus national identity card (passport)\nhttps://eng.belta.by/infographica/view/id-cards-in-belarus-7095/" }, { "3BDA18FF81B1FE451FC3546963546F6B20322E3068", "TikTok 2.0 (PKI)" }, { "3BDA18FF81B1FE451FC3546963546F6B20332E3069", "TicTok 3.0 (PKI) (PKI)\nhttps://en.cryptoshop.com/products/cryptas-tictok-v3-basisartikel.html" }, { "3BDA18FF81B1FE751F030031C573C001400090000C", "OpenPGP Card V2" }, { "3BDA18FF81B1FE751F030031F573C001600090001C", "OpenPGP Card V3" }, { "3BDA9400004D4D41524A2B33399000", "SIM card from Vodafone Spain" }, { "3BDA9500400A2508004053434F535441", "Card used for issuing commodity to benificiary for rice, wheat and more (Other)" }, + { "3BDA96FF8031FE454D696E694C6F61646572AB", "iClass SE Processor (Miniloader Mode) (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor" }, + { "3BDA96FF8031FE45536E6D704C6F61646572A8", "iClass SE Processor (SNMP Loader Mode) (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor" }, { "3BDA96FF8131FE45805631B85349434181057B", "STARCOS 3.5 ID ECC C1R (PKI)\nhttps://www.gi-de.com/fileadmin/user_upload/MS/Certificates/STARCOS35_ID_ECC_TABLES.pdf" }, + { "3BDA96FF8191FE1FC343323330302D46495053E2", "Crescendo 2300 FIPS (JavaCard)" }, { "3BDA96FF81B1FE451F0780584943412056322E30E9", "Starcos chip card from Giesecke & Devrient (PKI)\nhttps://ica.cz/functionality-smart-card" }, { "3BDB11FF5000FF0000000000000007921603", "NEC V-WAY64 v2.1" }, { "3BDB1800801F030031C06477E303008290004F", "Oberthur ID-One Cosmo 64K V5.2" }, @@ -2948,9 +3234,10 @@ const static atr_t AtrTable[] = { { "3BDB960080B1FE451F830031C064102301000F900063", "Extremenian Health Service target (HealthCare)\nhttps://saludextremadura.ses.es/web/preguntas-frecuentes" }, { "3BDB960080B1FE451F830031C0641A1801000790005A", "Ercom CRYPTOSMART\nhttp://www.ssi.gouv.fr/entreprise/qualification/gamme-cryptosmart-pour-la-securisation-des-smartphones-et-des-tablettes/" }, { "3BDB960080B1FE451F830031C0641A1801000F900052", "Serbian Car registration ID card\nhttp://blog.goranrakic.com/archives/2011/07/citanje_saobracajne_dozvole_sa_cipom.html" }, - { "3BDB960080B1FE451F830031C0641A71010007900033", "ChamberSign Gemalto USB Shell Token V2 - Certificat Audacio ** (eID)\nhttp://www.chambersign.fr/certificat-rgs-audacio/" }, + { "3BDB960080B1FE451F830031C0641A71010007900033", "ChamberSign Gemalto USB Shell Token V2 - Certificate Audacio ** (eID)\nhttp://www.chambersign.fr/certificat-rgs-audacio/" }, { "3BDB960080B1FE451F830031C064B0FC100007900005", "Oberthur Cosmo V7 debug card (SDK)" }, { "3BDB960080B1FE451F830031C064B0FC10000F90000D", "ID-One PIV (that's the only non-numeric identifying mark) (PKI)" }, + { "3BDB960080B1FE451F830031C064BAFC10000790000F", "Oberthur ID-One Cosmo v7.0 80K (eID)\nhttps://www.ssi.gouv.fr/uploads/IMG/certificat/ANSSI-CC-cible_2011-64en.pdf" }, { "3BDB960080B1FE451F830031C064BE1B0100019000FB", "Bank card" }, { "3BDB960080B1FE451F830031C064C30801000F90009B", "SIM Aruba (Italian provider)" }, { "3BDB960080B1FE451F830031C064C7FC100001900074", "Oberthur Cosmo (eID)\nhttp://www.stampit.org" }, @@ -2962,7 +3249,8 @@ const static atr_t AtrTable[] = { { "3BDB960081B1FE451F0380F9A0000003080000100018", "Oberthur CS PIV End Point v1.08 FIPS201 Certified" }, { "3BDB960081B1FE451F0380F9A0000003480000000149", "Fly Clear card" }, { "3BDB960081B1FE451F8380F9A0000003080000100098", "Oberthur Cosmo v7 128K with PIV applet\nhttp://www.smartcardfocus.com/shop/ilp/id~410/p/index.shtml" }, - { "3BDB96FF80B1FE451F870031C164093772130F9000F4", "French ID Card 2021 (eID)\nhttps://ants.gouv.fr/Les-titres/Carte-nationale-d-identite/La-puce-de-la-nouvelle-carte-nationale-d-identite" }, + { "3BDB96FF80B1FE451F870031C164093364490F9000BC", "cnie Carte Nationale d'Identite Electronique (eID)" }, + { "3BDB96FF80B1FE451F870031C164093772130F9000F4", "French ID Card 2021 (eID)\nhttps://ants.gouv.fr/nos-missions/les-titres-produits-par-l-ants/les-documents-d-identite/la-puce-de-la-nouvelle-carte-nationale-didentite" }, { "3BDB96FF8131FE4580670534B50201064081051B", "SINA STARCOS 3.5 BX-CombiCard+HSB (Other)" }, { "3BDB96FFC01031FE4580671501B403000900810521", "Digital Tachograph Card for Professional Driver\nolish driver card for digital tachograph" }, { "3BDC1802C10A31FE588031A873B0019B2460071320AA", "Public Services Card | Ireland (Other)\nhttps://psc.gov.ie/" }, @@ -2972,6 +3260,7 @@ const static atr_t AtrTable[] = { { "3BDC18FF8111C18073C821136605036351000233", "GoTrust Idem Key (Other)\nhttps://www.gotrustid.com/idem-key" }, { "3BDC18FF8111FE8073C82113660106013080018D", "Aladdin R.D. JaCarta LT (eID)" }, { "3BDC18FF8191FE1FC3060A2B06010401E910050203D1", "Caregiver card for Dutch Medical System called UZI (Unieke Zorgverlener Identificatie, Caring Unique Identification) (HealthCare)\nhttps://www.uziregister.nl/" }, + { "3BDC18FF8191FE1FC3060A2B06010401E910050204D6", "UZI (HealthCare)" }, { "3BDC18FF8191FE1FC38073C821136601060130040155", "Athena IDProtect Key Laser" }, { "3BDC18FF8191FE1FC38073C821136601061159000128", "JaCarta (PKI)\nhttp://www.aladdin-rd.ru" }, { "3BDC18FF8191FE1FC38073C8211366010B0352000538", "Athena IDProtect Smart Card Logon Card" }, @@ -2979,10 +3268,14 @@ const static atr_t AtrTable[] = { { "3BDC18FF8191FE1FC38073C821136605036057000255", "NXP IDProtect (X) (JavaCard)" }, { "3BDC18FF8191FE1FC38073C821136605036351000250", "JCOP3 SecID P60 CS (JavaCard)" }, { "3BDC96FF8111FE8031C8544356300573FFA1C03B", "NXP Javacard with Athena SCS OS (JavaCard)" }, + { "3BDC96FF8111FE8031C8544356350773FFA1C03C", "NXP JCOP 4, J3R200P0X3U/0ZA16CP NXD6.2 (JavaCard)" }, { "3BDC96FF81B1FE431FC30B46415245474F53414D5632CC", "Multismartcard SAM (used in proprietary Scheidt&Bachmann Smartcard Reader v2)" }, { "3BDD18008131FE4580F9A0000000770100700A90008B", "National ID Card of Peru issued by RENIEC from Oberthur" }, { "3BDD18008131FE4580F9A000000077010800079000FE", "Oberthur Cosmo v7 IAS ECC\nBrazilian 'e-CNPJ' card, issued by Certisign (Oberthur)" }, { "3BDD18008131FE45904C41545649412D65494490008C", "Identity card (eID) Republic of Latvia\nhttp://www.pmlp.gov.lv/lv/pakalpojumi/passes/eid.html" }, + { "3BDD18008191FE1FC3006646530803003671DF00008097", "Feitian K9Plus - ePass FIDO-NFC with PIV (Other)\nhttps://ftsafe.com/products/FIDO/NFC" }, + { "3BDD18FF8191FE1FC3006646530803003671DF00008068", "Feitian FIDO NFC Plus K9 Security Key (Other)\nhttps://www.ftsafe.com/products/FIDO/NFC" }, + { "3BDD18FF8191FE1FC3FF4F70656E506879736963616CF6", "Open Physical PIV-Compatible NXP SECID P60 (eID)\nhttps://openphysical.org/" }, { "3BDD18FFC080B1FE451FC30068D276000028040411009000C9", "Russian Federation driver card for the digital tachograph\nPolish driver card for digital tachograph" }, { "3BDD18FFC080B1FE451FC30068D276000028040971009000A4", "Worktime/driving style monitoring card (Transport)\nhttp://www.paetronics.fi/en/" }, { "3BDD96008010FE8031806301FFC073B3211B8105", "BIFIT iBank 2 USB Key (Bank)\nhttp://bifit.ua" }, @@ -3012,10 +3305,11 @@ const static atr_t AtrTable[] = { { "3BDF18008131FE588031B05202046405C903AC73B7B1D422", "Austrian 'e-Card' (=Health Card) of the 4th generation. (HealthCare)" }, { "3BDF18008131FE58AC31B05202046405C903AC73B7B1D422", "e-Card Austria (HealthCare)" }, { "3BDF18008131FE67005C49434DD49147D276000038330058", "Infineon SICRYPT Card Module D4 PC/SC Compliance Test Card" }, - { "3BDF18008131FE7D006B020C0182011101434E53103180FC", "Italian healtcare card (TS) National Service Card (CNS) (HealthCare)" }, - { "3BDF18008131FE7D006B040C0184011101434E53103180FC", "Italian healthcare card (TS) National Service Card (CNS) (HealthCare)\nhttp://www.regione.toscana.it/cartasanitaria" }, + { "3BDF18008131FE7D006B020C0182011101434E53103180FC", "Italian healthcare card (TS) National Service Card (CNS) (HealthCare)" }, + { "3BDF18008131FE7D006B040C0184011101434E53103180FC", "Italian healthcare card (TS) National Service Card (CNS) (HealthCare)\nhttp://www.regione.toscana.it/cartasanitaria\nhttps://www.agid.gov.it/it/piattaforme/carta-nazionale-servizi" }, { "3BDF18008131FE7D006B150C0180011101434E53103180E9", "Provider: Actalis S.p.A.\ncode: AT00006181\nhttp://www.actalis.it" }, { "3BDF18008131FE7D006B150C0181011101434E53103180E8", "Italian healthcare card (TS) National Service Card (CNS)\nCarta Regionale dei Servizi - Regione Lombardia\nTuscany TS-CNS\nhttp://www.regione.toscana.it/cartasanitaria" }, + { "3BDF18FF8091FE1FC3003138644790ECC273140150829000BB", "Ministry of Interior - France 'Agent Card' (Other)" }, { "3BDF18FF8131FE4580590180484944433730307300011B33", "Crescendo C700 + MiFare 4K\nhttp://www.smartcardfocus.com/shop/ilp/id~265/p/index.shtml" }, { "3BDF18FF8191FE1FC3003138644790ECC273140150829000BA", "Card store authentication and signature keys (JavaCard)\nhttps://ants.gouv.fr/Les-titres/Cartes-Agents/Adhesion/Telechargement-et-support" }, { "3BDF18FF8191FE1FC30031B8640000EC0073940000829000FE", "NXP Jcop3 P60 ChipDoc v7b4 (JavaCard)\nhttps://www.javacardos.com/store/products/10029" }, @@ -3025,6 +3319,7 @@ const static atr_t AtrTable[] = { { "3BDF18FF81F1FE43003F03834D494641524520506C75732053414D3B", "NXP SAM AV2 module" }, { "3BDF18FF81F1FE43003F03834D4946506C75732053414D3B53414D3B", "Mifare SAM -AV2 (PKI)" }, { "3BDF18FF81F1FE43003F07834D49464152452053414D204156333011", "NXP SAM AV3 module" }, + { "3BDF18FF910131FE4680319052410264050200AC73D622C099", "Acos-ID (AUSTRIACARD's Operating System) (Other)\nhttps://www.austriacard.com/digital-security/solutions/card-solutions/acos-id/" }, { "3BDF94FFC080B1FE451F03006AD2760000280415FA10040090006B", "UK Digital Tacho card (Other)" }, { "3BDF94FFC080B1FE451F03006AD2760000280415FA40040090003B", "DVLA Company Card (Transport)" }, { "3BDF9500801F878031A073FF21006345B105830F900060", "FUTURE CARD Normal ISO SIM (Telecommunication)" }, @@ -3038,11 +3333,14 @@ const static atr_t AtrTable[] = { { "3BDF960080B1FE451F838073BC9180F9A00000007780080201A4", "Latvian eSignature card (eID)\nhttps://www.lvrtc.lv/e-signature.html" }, { "3BDF960080B1FE451F870031C16408923201738421E0059000C5", "Company Card for Transport companies (Transport)" }, { "3BDF96008131FE4541434F532D4944303032382E3031366F", "Sri Lankan driving license [ web: motortraffic.gov.lk ] (eID)\nhttp://www.motortraffic.gov.lk/web/index.php?option=com_content&view=article&id=83&Itemid=140&lang=en" }, + { "3BDF96008131FE588031B05202056405A100AC73D622C020", "Austrian health insurance card 'e-card' (HealthCare)\nhttps://de.wikipedia.org/wiki/E-card_(Chipkarte)" }, { "3BDF960081B1FE451F838073CC91CBF9A0000003080000100079", "Test PIV Cards available for sale from NIST\nhttp://csrc.nist.gov/groups/SNS/piv/testcards.html" }, { "3BDF96FF8131FE455A018048494443313158587300011B09", "HID Crescendo iCLASS Px G8H" }, { "3BDF96FF8131FE4580590180504956434C41537300011BDE", "HID Global pivCLASS v1.0 (PKI)\nhttp://www.hidglobal.com/products/cards-and-credentials/pivclass/pivclass-smart-card" }, { "3BDF96FF8131FE45805B44452E42415F53433335328105B5", "Employee ID card from the Federal Employment Agency (Germany) (PKI)\nhttps://www.pki.arbeitsagentur.de/" }, { "3BDF96FF8131FE45805B44452E424E4F544B3130308105A0", "BeA - Certification Card for German Solicitors (Other)\nhttps://bea.bnotk.de/" }, + { "3BDF96FF81B1FE451F870031B96409377213738401E000000000", "National Identity Card of Slovakia (eID) (eID)\nhttps://en.wikipedia.org/wiki/Slovak_identity_card" }, + { "3BDF96FF910131FE4680319052410264050200AC73D622C017", "Acos-ID (AUSTRIACARD's Operating System) (Other)\nhttps://www.austriacard.com/digital-security/solutions/card-solutions/acos-id/" }, { "3BDF97008131FE588031B05202056405A100AC73D622C021", "Austrian healthcare insurance identification card (HealthCare)\nhttps://www.chipkarte.at" }, { "3BDF970081B1FE451F838073CC91CBF9A0000003080000100078", "NASA PIV Card (Other)" }, { "3BE000008131204030", "SmarTEC" }, @@ -3056,6 +3354,7 @@ const static atr_t AtrTable[] = { { "3BE500008121459C100100800D", "BIN 470132 -- BANK OF AMERICA VISA DEBIT -- GEMALTO MGY 0 U1090788B - 12/14 F8 00 89 (Bank)" }, { "3BE500008131FE45D00037008089", "ATM card for Standard Chartered, Taiwan" }, { "3BE500FF8131FE458073C601082D", "MUFG (.jp) (Bank)" }, + { "3BE6000080318066B1A30401110B83", "Java Jcop J2A040 (JavaCard)" }, { "3BE6000080318066B1A30401110B83009000", "VISA Credit Card (Bank)" }, { "3BE60000812145324B010101017A", "Axalto Cyberflex Palmera V5" }, { "3BE600FF8131FE4544492030324D70", "Alior Sync (Poland) - MasterCard Debit Card with PayPass (Bank)\nMasterCard Contactless Debit Card issued by Raiffeisen Bank in Czech Republic\nDebit MasterCard with paypass issued by Bank Zachodni WBK (Poland)\nDebit MasterCard with paypass issued by AliorSync" }, @@ -3075,6 +3374,7 @@ const static atr_t AtrTable[] = { { "3BE700FF8131FE458031C073C62148BE", "Japanese ETC (Electronic Toll Collection System) card (Transport) and Credit card (Issuer: Toyota) (Transport)" }, { "3BE700FF81B1FE451F018031C073C6214820", "Japanese ETC (Electronic Toll Collection System) card (Transport)" }, { "3BE8000040FA0073C84011009000", "KEBTechnology KONA USB SmartCard (Other)" }, + { "3BE800008031FE450073C8401300907DE7", "National Health System of Spain - Consejeria de Sanidad y Servicios Sociales - JUNTA DE EXTREMADURA (HealthCare)\nhttps://www.juntaex.es/es/lajunta/consejo-de-gobierno/vicepresidencia-segunda-y-consejeria-de-sanidad-y-servicios-sociales/servicio-extremeno-de-salud" }, { "3BE80000813120450073C8400000900056", "Visa credit card for Standard Chartered, Taiwan" }, { "3BE800008131FE00506572736F53696DAA", "Simulated virtual smartcard, from project PersoSim (eID)\nhttps://persosim.de/?q=node/33" }, { "3BE800008131FE450073C8400000900088", "VISA Card (Skandinaviska Enskilda Banken) with Swedish BankID\nVISA card (Chinatrust Bank (Taiwan), dual-interface card with a Taipei Metro e-purse function)" }, @@ -3102,7 +3402,7 @@ const static atr_t AtrTable[] = { { "3BE900FFC11031FE55C80120504E34303132AD", "Siemens CardOS/M 3.0 (SLE66CX160S)" }, { "3BEA0000813120438065A2........72D6....", "IDClassic 3XX Cards (with MPCOS Applet)" }, { "3BEA0000813120438065A20101013D72D643A5", "GemXpresso Pro R3 32PK (MPCOS, T=1) (warn reset)" }, - { "3BEA00008131FE450031C173C840000090007A", "Nigerian eID Card (cold reset)\nChip is NXP JCOP 2.4.1R3" }, + { "3BEA00008131FE450031C173C840000090007A", "Nigerian eID Card (cold reset)\nChip is NXP JCOP 2.4.1R3\nDual BCR Signum Mastercard (bank) + Digital Signature Costa Rica (eID)\nhttps://bancobcr.com/wps/portal/bcr/bancobcr/personas/tarjetas/signum_firma_digital/" }, { "3BEA00008131FE45436F6D624F5320494900FE", "UBS VISA Gold Card\nMasterCard from lhv.ee\nNordea Bank Finland PLC Estonian Branch (ABnote)" }, { "3BEA00008131FE454A434F5033315632333290", "NAB VISA Debit card" }, { "3BEA00008131FE454A434F5034315632323195", "HID Crescendo C700\nhttps://www.hidglobal.com/products/cards-and-credentials/crescendo/c700" }, @@ -3173,6 +3473,7 @@ const static atr_t AtrTable[] = { { "3BEF00FF813166456563202049424D20332E3120202020", "IBM eCash" }, { "3BEF00FF813166456563202049424D20332E3120202020CF", "IBM eCash" }, { "3BEF00FF8131864549424D204D4643343030303038333143", "ComCard MFC 4.1" }, + { "3BEF00FF8131FE4141434F532046696F6E6131204C633666", "EUROBANK GR (Bank)\nNBG BANK (Bank)" }, { "3BEF00FF8131FE4541434F53204449616E6131204C63364E", "comdirect VISA card (Bank)\nhttps://www.comdirect.de/konto/karten.html#Visa-Karte" }, { "3BEF00FF8131FE4541434F53204449616E6132204C63364D", "Alior Bank SA (Bank)\nhttps://www.aliorbank.pl/" }, { "3BEF00FF8131FE4565630D12810156001F00006686080122", "Commerzbank signature card SECCOS (6 or 7) providing RAH security profile (Bank)\nhttps://www.chipkartenleser-shop.de/commerzbank/electronic-banking-chipkarten/commerzbank-signaturkarte-2710050006" }, @@ -3219,11 +3520,12 @@ const static atr_t AtrTable[] = { { "3BEF00FF8131FE458031C06B49424D204A65745A204D3239", "UBS Internet Card (IBM JetZ M2)" }, { "3BEF00FF8131FE458031E06B042105026B55555555555568", "MasterCard credit card for Mega International Commercial Bank, Taiwan (Bank)\nhttps://www.megabank.com.tw/creditcard/index.asp" }, { "3BEF00FF8131FF6549424D204D4643393232393238393017", "IBM MFC 4.22 (University of Cambridge smartchip card)" }, + { "3BF01100FF01", "Not a physical smart card. But a JavaCard simulator ATR with default configuration. (JavaCard)" }, { "3BF01200FF9181B17C451F019B", "Japanese Chijou Digital B-CAS Card (pay TV) (Pay TV)" }, { "3BF01200FF9181B17C451F0399", "Japanese Chijou Digital B-CAS Card (pay TV)" }, { "3BF01200FF9181B1EF451F030A", "Japanese Digital CATV C-CAS card" }, { "3BF01300001000", "MasterCard ETEC InterOp 27. This is an dual-app Maestro/MasterCard Credit EMV test card" }, - { "3BF01300008131FE45E8", "Healt care card Romania (HealthCare)\nhttp://www.cnas.ro/casmb/national-page/cardul-national-de-asigurari-de-sanatate-2.html" }, + { "3BF01300008131FE45E8", "Healthcare card Romania (HealthCare)\nhttp://www.cnas.ro/casmb/national-page/cardul-national-de-asigurari-de-sanatate-2.html" }, { "3BF01300FF9181B1FE461F0319", "Japan BS/CS 4K Satellite Broadcasting A-CAS Card (Pay TV)\nhttp://www.acas.or.jp/index.html" }, { "3BF2180000C10A31FE55C80675", "HID iCLASS P16K C4H\nproximity card used for both door locks and keystore" }, { "3BF2180002C10A31FE55C80776", "Siemens CardOS V4.3" }, @@ -3278,6 +3580,7 @@ const static atr_t AtrTable[] = { { "3BF711000140967071090E6CB6D6", "Carte pour decodeur tele de Neuf Telecom TV" }, { "3BF71300008131FE45464F4D534F4D53A9", "Health card Russian Federation" }, { "3BF71300008131FE454A434F503234....", "NXP JCOP v2.4.x (see hist bytes for more info)" }, + { "3BF71300008131FE4580654A5030310415", "Nichizeiren Denshi-shomei (eID)\nhttps://www.nichizeiren.or.jp/taxaccount/auth/fifth/" }, { "3BF71800008031FE45736674652D6E66C4", "SmartCafe Expert 3.2 72K" }, { "3BF71800008031FE45FE42475265494424", "Bulgarian eID PKI card pilot on IFX SLE78 jTOP (PKI)" }, { "3BF71800008131FE458055433776706B28", "Only labeled 'J35110', dual interface (JavaCard)" }, @@ -3292,13 +3595,15 @@ const static atr_t AtrTable[] = { { "3BF81300008131FE15597562696B657934D4", "Yubico Yubikey 4 OTP+CCID" }, { "3BF81300008131FE4546494445534D4F318E", "Fidesmo Card with Dual Interface (JavaCard)\nhttp://shop.fidesmo.com/product/fidesmo-card-dual-interface" }, { "3BF81300008131FE454A434F50763234....", "NXP JCOP v2.4.x (see hist bytes for more info)" }, - { "3BF81300008131FE454A434F5076323431B7", "Nigerian eID Card (blank card)\nChip is NXP JCOP 2.4.1R3" }, + { "3BF81300008131FE454A434F5076323431B7", "Nigerian eID Card (blank card)\nChip is NXP JCOP 2.4.1R3\nBank of Hawaii (Bank)\nhttps://www.boh.com/\nLA BANQUE POSTALE (Bank)\nhttps://www.labanquepostale.fr/\nbnpparibas (Bank)\nhttp://www.bnpparibas.com/\nJcop040 (JavaCard)\nJcop21 (JavaCard)\nVisa debit classic (Bank)\nhttp://www.jpmorganchase.com/\nJPMorgan Chase (Bank)\nVisa (Bank)\nhttps://unitedfcu.com/" }, { "3BF81300008131FE454A4F5076323431B7", "Nigerian eID card (eID)" }, { "3BF81300008131FE455049564B45593730FF", "PIVKey CP70 (PKI)\nhttps://pivkey.com/" }, { "3BF81300008131FE455241414B43327635CB", "Raak C2 Smart Card (PKI)\nhttp://www.raaktechnologies.com/software-downloads-documentation/" }, { "3BF81300008131FE45534B555001000000FC", "Silesian Card of Public Services (Transport)\nhttps://portal.kartaskup.pl/" }, { "3BF81300008131FE45536D617274417070F8", "national Lithuania ID card" }, { "3BF81300008131FE45FF4A32413034300012", "MIDAS Card Diversification Key JavaCard (J2A040) (Bank)\nhttps://github.com/kategray/midas" }, + { "3BF81300FF108053430663010F900000", "Affinity CUIA Debit (JavaCard)\nhttps://www.affinitycuia.org" }, + { "3BF81300FF910131FE41534C4A01305023100D", "Walden Mutual Bank (Bank)\nhttps://www.waldenmutual.com/sustainable-bank-for-individuals#footnote-s0-4" }, { "3BF81800008031FE450073C8401300900092", "G&D StarSign Token" }, { "3BF81800008131FE450073C8400000900080", "NXP JCOP 31 V2.2 36K - S/C I/F" }, { "3BF81800008131FE450073C8401300900093", "Giesecke & Devrient Sm@rtCafe Expert 3.0" }, @@ -3306,6 +3611,7 @@ const static atr_t AtrTable[] = { { "3BF81800008131FE454A434F5076323431BC", "NXP J2A080 JavaCard" }, { "3BF81800FF8131FE450073C840000090007F", "NXP JCOP 10\nNXP JCOP 31 (contact interface)" }, { "3BF81800FF8131FE454A434F507632343143", "VIVOtech SAM\nNXP JCOP V241\nNXP J3A081 JavaCard (contact interface)" }, + { "3BF89600008031FE470073C840000090000D", "Italian driver tachograph smartcard (Transport)\nhttps://www.to.camcom.it/cartatachigrafica" }, { "3BF89600008131FE4400739401C00F9000DD", "fourth-generation Hong Kong permanent identity card (Other)\nhttps://en.wikipedia.org/wiki/Hong_Kong_identity_card" }, { "3BF89600008131FE454A434F507632343132", "NXP JCOP 2.4.1 (JavaCard)" }, { "3BF91100008131FE45436F6D624F53205600AA", "VISA Card (Bank)" }, @@ -3334,6 +3640,9 @@ const static atr_t AtrTable[] = { { "3BF99600008031FE4553434537200000202027", "G&D SmartCafe Expert 7 (JavaCard)" }, { "3BF99600008031FE4553434537200300204642", "ActivIdentity Activkey Sim (PKI)\nhttps://www.hidglobal.com/products/cards-and-credentials/activid/usb-tokens" }, { "3BF99600008031FE4553434537200F0020464E", "Giesecke & Devrient (DoD Alternate Token) G+D Sm@rtCafe Expert v7.0 144K DI #3 (PKI)" }, + { "3BF99600008031FE4553434537202000202007", "Serbian Identity Card (eID) (eID)" }, + { "3BF99600008031FE45534345372047434E335E", "Serbian Identity Card (eID)" }, + { "3BF99600008031FE455343453720474E335E", "Serbian Identity Card (eID)" }, { "3BF99600008131FE45454F4E43617264563173", "eONCard V1 (PKI)" }, { "3BF99600008131FE4553434537200E00202028", "Giesecke & Devrient GmbH StarSign CUT S" }, { "3BF99600008131FE45535049564B4559373028", "Taglio PIVKey C980 (PKI)\nhttps://www.pivkey.com" }, @@ -3348,25 +3657,32 @@ const static atr_t AtrTable[] = { { "3BFA1300008131FE450031C173C8400000900079", "Nigerian eID Card (warm reset)\nChip is NXP JCOP 2.4.1R3" }, { "3BFA1300008131FE454465786120434620763198", "Dexa Systems Crossfire Card (PKI)\nhttp://www.dexasystems.com/products-services/products/dexa-smartcards-credential-tokens-peripherals" }, { "3BFA1300008131FE454A434F503.3.56323332..", "JCOPxx/yy v2.3.2 (see hist bytes for more info)" }, + { "3BFA1300008131FE454A434F50323156323331", "J2A040 JCOP (JavaCard)" }, { "3BFA1300008131FE454A434F5032315632333191", "NXP JCOP 21 V2.3.1 36K" }, { "3BFA1300008131FE454A434F5032315632343196", "NXP JCOP 2.1 V 2.4.1 (JavaCard)" }, { "3BFA1300008131FE454A434F50343156", "JCOP41 V221" }, { "3BFA1300008131FE454A434F5034315632333197", "JCOP41 /72K (eID)" }, { "3BFA1300008131FE454A434F50763234........", "NXP JCOP v2.4.x (see hist bytes for more info)" }, + { "3BFA1300008131FE54A434F503233191", "Jcop (JavaCard)" }, { "3BFA1300FF813180450031C173C00100009000B1", "OpenPGP" }, { "3BFA1800008031FE45FE654944202F20504B4903", "Estonian Identity Card (EstEID v3.5 (10.2014) cold) (eID)\nhttp://id.ee/" }, { "3BFA1800008131FE4506082A841001876E0805BC", "Dutch Rijkspas (eID)" }, - { "3BFA1800008131FE4506082A841001876E0807BE", "Rijkspas (identification card dutch government employees) (eID)\nhttps://nl.wikipedia.org/wiki/Rijkspas\nDutch goverment multifunctional smartcard (Other)\nhttps://nl.wikipedia.org/wiki/Rijkspas" }, - { "3BFA1800008131FE45060860841001876F0602FE", "Card used by the Dutch health insurers to give medical personell access to patient insurance information" }, + { "3BFA1800008131FE4506082A841001876E0807BE", "Rijkspas (identification card dutch government employees) (eID)\nhttps://nl.wikipedia.org/wiki/Rijkspas\nDutch government multifunctional smartcard (Other)\nhttps://nl.wikipedia.org/wiki/Rijkspas" }, + { "3BFA1800008131FE45060860841001876F0602FE", "Card used by the Dutch health insurers to give medical personnel access to patient insurance information" }, + { "3BFA1800008131FE4546534A434F503453494480", "NXP Java Card JCOP4 P71 GP2.3 JC3.0.5 (JavaCard)\nhttps://www.javacardsdk.com/product/j3r180sim/" }, { "3BFA1800008131FE454A33413034305632343184", "NXP J3A 40K\nJava Card v2.2.2 - Global Platform v2.2.1\nDual-interface functionality (features 1K Mifare emulation)" }, { "3BFA1800008131FE454A33413038315632343189", "NXP JCOP CJ3A081\nhttp://www.usmartcards.com/media/downloads/492/NXP%20P5CX012%2002X%2040%2073%2080%20144%20%20%202011.pdf" }, + { "3BFA1800008131FE454A3344303831563234328F", "AustriaCard Dual Interface Unpersonalized EMV Cards (Bank)\nhttps://www.austriacard.com" }, { "3BFA1800008131FE454A434F503431563232319D", "NXP JCOP 41 v2.2.1 72k SmartCard I/F" }, { "3BFA1800008131FE454A546178436F72655631B2", "Taxpayer Portal Authentication for Fiji Revenue & Customs Service taxpayer portal (PKI)" }, { "3BFA1800008131FE454D4F54494F4E0000900760", "SIM card (Telecommunication)" }, { "3BFA1800008131FE4550564A434F5033454D5694", "NXP JCOP3 J3H082 Java Card 3.0.4 Dual-Interface (JavaCard)\nhttps://www.cardlogix.com/product/nxp-jcop3-j3h082-java-card-3-0-4-j3h081-dual-interface/" }, + { "3BFA1800008131FE4550564A434F503453494493", "National Health Insurance (Taiwan) (HealthCare)" }, { "3BFA180000910131FE4550564A434F503453494482", "Supposed P71 SecID purchased from a Chinese manufacturer (JavaCard)" }, + { "3BFA180000910131FE456BD1936AC2F28547E164CC", "J3R180, NXP JCOP4 JC3.0.5 Classic, GP2.3, SECID (JavaCard)\nhttps://www.cardlogix.com/product/nxp-jcop-4-java-card-3-0-5-classic/" }, { "3BFA180002C10A31FE584B53776973735369676E89", "SuisseId card (used for qualified signatures)\nhttp://postsuisseid.ch/de/suisseid\nhttp://www.suisseid.ch/" }, { "3BFA1800FF10004A546178436F72655631", "NXP JCOP4 J3R200 P71 (JavaCard)" }, + { "3BFA1800FF8031FE450031807394410000900090", "Kazakhstan Identity Card 2022 (eID)" }, { "3BFA1800FF8131FE454A434F5032315632333165", "TrubDemax healthcare card\nJCOP 21 / 72k" }, { "3BFA1800FF8131FE454A434F5034314332303074", "HID Crescendo C200\nhttps://www.hidglobal.com/sites/hidglobal.com/files/resource_files/crescendo-c200-c700-smart-card-ds-en.pdf" }, { "3BFA1800FF8131FE454A434F5034315632323162", "JCOP41\nHID Crescendo C700\nhttp://www.hidcorp.com/\nShould be compatible to RAAK\nhttp://www.raaktechnologies.com/\nMarx CrypToken MX2048-JCOP USB Token" }, @@ -3385,6 +3701,9 @@ const static atr_t AtrTable[] = { { "3BFB1300FF10800031C164086032060F9000", "Stripe Issuing Card (Bank)" }, { "3BFB1300FF10800031C164086032100F9000", "Varo (Bank)" }, { "3BFB1300FF10800031C164089862210F9000", "Visa Debit (Bank)" }, + { "3BFB1300FF10800031C164089862290F9000", "Bank Card (Bank)" }, + { "3BFB1300FF10800031C1640924331E0F9000", "TransferWise Debit Card (Bank)\nhttps://wise.com/" }, + { "3BFB1300FF10800031C164096441360F9000", "Truist Business Debit (Bank)" }, { "3BFB1300FF813180755A43352E3520524556204763", "ZeitControl BasicCard 5.5" }, { "3BFB1300FF813180755A43352E3620524556204D6A", "ZeitControl BasicCard ZC5.6 user-programmable smart card\nhttp://www.basiccard.com/index.html?overview.htm" }, { "3BFB1300FF813180755A43362E3520524556204364", "ZeitControl BasicCard 6.5, multiapplication with 30 kByte EEPROM" }, @@ -3423,7 +3742,9 @@ const static atr_t AtrTable[] = { { "3BFD1300008131FE4541373030364347203234325231D6", "YubiKey NEO (token)" }, { "3BFD1300008131FE454A434F50323176323331474454E1", "National Health Insurance Card, Taiwan" }, { "3BFD1300008131FE45543D314A323133364B56323331DC", "ic Card (JavaCard)" }, + { "3BFD1300008131FE4580318153534431738421C0810730", "Personal Info Card (eID)" }, { "3BFD1300FF10000031C173C8400052A1C5009000", "IBKR Prepaid MasterCard, Issued by Peoples Trust Company (Bank)\nhttps://www.interactivebrokers.com/en/index.php?f=26451" }, + { "3BFD1300FF10000031C173C8400052A1D5009000", "PayPal Business Debit Mastercard (Bank)\nhttps://www.paypal.com/merchantapps/appcenter/makepayments/bdmc" }, { "3BFD1800008031FE45003180718E6452D904008190005B", "Oberthur Card Systems, authentIC" }, { "3BFD1800008031FE4553434536302D43443038312D46C4", "Panama Electronic Signature (JavaCard)" }, { "3BFD1800008031FE45736674652063643134342D6E66D8", "SmartCafe Expert 3.2 144K Dual is a contact and contactless technology Java card from G&D with 144K on-board EEPROM for application and data storage. Certified to FIPS 140-2 Level 3 and Common Criteria EAL 5+. Supports specifications ISO 14443A T=CL and ISO 7816 T=1/0. (PKI)\nhttp://www.smartcardfocus.us/shop/ilp/id~523/smartcafe-expert-3-2-144k-dual/p/index.shtml" }, @@ -3449,7 +3770,10 @@ const static atr_t AtrTable[] = { { "3BFD9600008131FE4500000152332980000000000000A9", "DPI Guatemala (eID)\nhttp://www.renap.gob.gt/" }, { "3BFD9600008131FE450000015233672000000000000047", "DPI Guatemala (eID)\nhttps://www.renap.gob.gt/servicios/que-es-el-dpi" }, { "3BFD9600008131FE4500000161638620000000000000C5", "Renap Guatemala (eID)" }, + { "3BFD9600008131FE450000016687038000000000000003", "DPI (Documento Personal de Identificacion) Guatemala (eID)" }, { "3BFD9600008131FE45534C4A353247444C313238435257", "Universal JCard (Contact) with Infineon SLE78 (JavaCard)\nhttp://www.usmartcards.co.uk/cards/universal-jcard-contact-with-infineon-sle78-white-gloss-pvc-card.html" }, + { "3BFD9600008131FE45534C4A35324778787979797A5224", "J3R180 (JavaCard)" }, + { "3BFE130000108080318066B0840C016E0183009000", "Sberbank of Russia MIR debit card (Bank)" }, { "3BFE1300008131FE454A434F5076323431204C4F542057B1", "LOT test card (JavaCard)\nwww.lotgroup.eu" }, { "3BFE1800008031FE454573744549442076657220312E30A8", "Estonian Identity Card (EstEID 3.0 'JavaCard' cold)" }, { "3BFE1800008031FE4553434536302D43443038312D6E46A9", "G&D Sm@rtCafe Expert 6.0 (JavaCard)\nhttp://www.smartcardfocus.com/shop/ilp/id~684/smartcafe-expert-6-0-80k-dual-/p/index.shtml" }, @@ -3484,7 +3808,8 @@ const static atr_t AtrTable[] = { { "3BFF1100008171404200002101314252000[05]63........9000.*", "Smart Card 'The Smart Way to Login'\nUsed on Acer TravelMate to secure boot" }, { "3BFF11000240648069A2070103570000FF0083009000", "Gemplus GemXpresso" }, { "3BFF1100FF8131FE9580F9D2760000255444010083000000A0", "GiroCard Haspa Hamburger Sparkasse (Bank)\nhttps://www.haspa.de/privatkunden/ihr-online-banking/unser-angebot/haspa-digital-services-96198/" }, - { "3BFF13000010003101F1564011001900000000000000", "BVG Guthabenkarte (Prepaid Payment Card for Berlin/Brandenburg Public Transport) (Transport)\nhttps://www.bvg.de/de/service-und-kontakt/guthabenkarte" }, + { "3BFF13000010003100DE525001001500000000000000", "wisely debit (Bank)\nhttps://www.mywisely.com/" }, + { "3BFF13000010003101F1564011001900000000000000", "BVG Guthabenkarte (Prepaid Payment Card for Berlin/Brandenburg Public Transport) (Transport)\nhttps://www.bvg.de/de/service-und-kontakt/guthabenkarte\nRevolut Visa Glow-in-the-dark\nhttps://revolut.com/\nMasterCard debit - PayCenter - Corporate Benefit 'Sachbezugskarte' (Bank)\nhttps://paycenter.de/sachbezugskarte/" }, { "3BFF13000010003101F1564011001D00000000000000", "albo (Bank)\nhttps://www.albo.mx/" }, { "3BFF1300008131FE450031B9640404ECC17394018082900052", "AKD kID (eID)\nhttps://www.id.hr" }, { "3BFF1300008131FE450031B9640444ECC17394018082900012", "Croation personal ID card (eID)\nhttp://eid.hr/" }, @@ -3492,13 +3817,23 @@ const static atr_t AtrTable[] = { { "3BFF1300008131FE45434433690940000020202020202000F3", "VISA credit card (LBBW/Payback VISA) (Bank)" }, { "3BFF1300008131FE454F574F4B31302D4A................", "OWOK (One Web, One Key) login card\nhttp://www.reiner-sct.com/owok/\nReiner SCT loginCard\nhttps://cardlogin.reiner-sct.com/" }, { "3BFF1300008131FE4D8025A00000005657444B3333300600D2", "Datakey DCOS model 330 (DKCCOS 6.0 token)" }, + { "3BFF1300FF10000031C1738211064414D33470779000", "Visa Debit (Bank)\nhttps://www.chase.com/" }, { "3BFF1300FF10000031C173C821106441443533079000", "BRADESCO-CONTA SALARIO (Bank)" }, { "3BFF1300FF10000031C173C8211064414D3130079000", "Tangerine MasterCard (Bank)\nhttps://www.tangerine.ca/en/products/spending/creditcard/money-back/" }, + { "3BFF1300FF10000031C173C8211064414D3137079000", "PayPal Business Debit mastercard (Bank)\nhttps://www.paypal.com/merchantapps/appcenter/makepayments/bdmc" }, { "3BFF1300FF10000031C173C8211064414D3330079000", "VISA card issued by ING-DiBa AG (Germany) (Bank)" }, + { "3BFF1300FF10000031C173C8211064414D3331079000", "NAB VISA Debit (contact interface) (Bank)\nhttps://www.nab.com.au/" }, { "3BFF1300FF10000031C173C8211064414D3337079000", "VISA Credit Card (Postbank), Germany (Bank)" }, { "3BFF1300FF10000031C173C8211064414D3341079000", "BBVA debit card Uruguay. MIFRE Plus compatible. (Bank)\nScotiabank Passport Visa Infinite credit card (Bank)\nhttps://www.scotiabank.com/ca/en/personal/credit-cards/visa/passport-infinite-card.html" }, + { "3BFF1300FF10000031C173C8211064414D3343079000", "MasterCard issued by President's Choice Bank (Canada) (Bank)\nhttp://pcfinancial.ca/mastercard" }, { "3BFF1300FF10000031C173C8211064414D3347079000", "Chase Visa Debit Card (Bank)\nhttps://www.chase.com/bankinghelp" }, { "3BFF1300FF10000031C173C8211064414D3348079000", "BBVA blue VISA Debit Card (Bank)\nhttps://www.bbva.es/en/personas/productos/tarjetas/tarjeta-joven-ahora.html\nDesjardins Bonus Visa credit card (Bank)\nhttps://www.desjardins.com/ca/personal/loans-credit/credit-cards/bonus-visa/index.jsp" }, + { "3BFF1300FF10000031C173C8211064414D3430079000", "PNC BUSINESS VISA DEBIT (Bank)\nhttps://www.pnc.com/en/small-business/payments-and-processing/payment-cards/pnc-bank-visa-business-debit-card.html" }, + { "3BFF1300FF10000031C173C82110644930424E079000", "National Bank Debit Card with expiration date and cvv code (Bank)" }, + { "3BFF1300FF10000031C173C82110644932424E079000", "Interact, Visa Debit Bank of Novia Scotia (Bank)\nhttps://www.scotiabank.com/global/en/credit-card-terms-and-conditions.html" }, + { "3BFF1300FF10000031C173C82110644D30424E079000", "Debit payment card (Rabobank NL) (Bank)\nhttps://www.rabobank.nl/en/business/making-and-receiving-payments/payments/paying-with-your-bank-card" }, + { "3BFF1300FF10000031C173C82110645631424E079000", "Portuguese 'BancoCTT' Bank Card (Bank)\nhttps://www.bancoctt.pt/o-seu-dia-a-dia/cartao-de-credito-banco-ctt" }, + { "3BFF1300FF10000031C173C82110645631434E079000", "Chase Freedom Unlimited Credit Card (Bank)" }, { "3BFF1300FF10808031E06B04310502AF555555555555", "USAA EMV Visa Debit Card (Bank)" }, { "3BFF1300FF10808031E06B071405028A555555555555", "Tangerine Debit Card (Bank)\nhttps://www.tangerine.ca" }, { "3BFF1300FF10808031E06B08240502B5555555555555", "Tangerine Canada Interac debit card (Bank)\nhttps://www.tangerine.ca/" }, @@ -3508,7 +3843,9 @@ const static atr_t AtrTable[] = { { "3BFF1300FF8131FE45656311045002800008390004020502E9", "German 'Geldkarte' supplied by the Deutsche Bank in Karlsruhe,\nBaden-Wurttemberg, Germany." }, { "3BFF1300FF8131FE45656311045002800008540004230502A5", "Maestrocard/Geldkarte (Stadtsparkasse Haltern, Germany)" }, { "3BFF1300FF8131FE5D8025A00000005657444B33323005003F", "Datakey DCOS model 320" }, - { "3BFF1300FF918131FE4541434F53204449616E6132204C6336DF", "Alior Bank MasterCard debit (Bank)" }, + { "3BFF1300FF910131FE210031C173C82110644D30434E07900094", "AirPlus MasterCard Commercial (Bank)\nhttps://www.airplus.com/us/en/products-solutions/products/corporate-cards/corporate-cards.html" }, + { "3BFF1300FF918131FE4141434F532046696F6E6131204C6336F4", "Deutsche Kreditbank Debit (Bank)" }, + { "3BFF1300FF918131FE4541434F53204449616E6132204C6336DF", "Alior Bank MasterCard debit (Bank)\nComdirect (Deutsch Bank) debit VISA (AUSTRIACARD 56015/001) (Bank)" }, { "3BFF1400FF8131FE458025A000000056575343363530010039", "SafeNet SC650 (PKI)\nhttp://www.safenet-inc.com/data-protection/authentication/smartcard-650/" }, { "3BFF1400FF8131FE458025A000000056575343363530030239", "SafeNet SC650 v3.2 (PKI)\nhttp://www.safenetat.com/products-solutions/high-assurance-authentication/sc650/" }, { "3BFF1400FF8131FE458025A00000005657534336353004003C", "SafeNet AT SC650 V4.0 02/2018 (PKI)\nhttps://www.safenetat.com/Solutions/Enterprise-Security/high-assurance-authentication/sc650/" }, @@ -3518,6 +3855,8 @@ const static atr_t AtrTable[] = { { "3BFF1800008131FE45006B04050100012101434E5310318059", "CNS - Carta Nazionale dei Servizi (Italia)\nPA emittente: Regione Autonoma della Sardegna\nCarta del Servizio Sanitario Regionale - Emilia Romagna" }, { "3BFF1800008131FE45006B05051017012101434E531031805E", "Regional Card - Regione Liguria, Veneto - Italy (eID)\nTessera Sanitaria - Carta Regionale dei Servizi" }, { "3BFF1800008131FE45006B05052000012101434E5310318079", "health card (HealthCare)\nhttps://tscns.regione.sardegna.it/" }, + { "3BFF1800008131FE45006B0505200001F101434E53103180A9", "national health service card (HealthCare)\nhttps://ca.arubapec.it/downloads/MU_LINUX.zip" }, + { "3BFF1800008131FE45006B0505912001F101434E5310318038", "Italian Health Card (TS) and Citizen's Card (CNS) based on IDEMIA ID-One CNS v2 on Cosmo 9.1 (HealthCare)" }, { "3BFF1800008131FE45006B11050700011101434E531131807B", "Italian National Fire Corps -special identification card (eID)" }, { "3BFF1800008131FE45006B11050700012101434E531031804A", "Oberthur ID-One Cosmo V7-n it's a java card 2.2.2\nIzenpe Certificado Ciudadano (eID)\nhttps://www.izenpe.eus/informacion/certificado-ciudadano/s15-content/es/" }, { "3BFF1800008131FE4D8025A00000005657444B3430300600DD", "DataKey 400 (DK400)" }, @@ -3525,7 +3864,9 @@ const static atr_t AtrTable[] = { { "3BFF1800008131FE55006B0209040301010144534410318068", "ACA (Lawyer Identifier Card) (eID)" }, { "3BFF1800008131FE55006B02090503010101434E5310318064", "Bit4id J-SIGN 2048 (L) (PKI)\nhttps://www.bit4id.com/en/j-sign/" }, { "3BFF1800008131FE55006B02090603010101434E5310318067", "ST microelettronics JSign3 (HealthCare)" }, + { "3BFF1800008131FE55006B02090703010101434E5310318066", "Aruba digital signing card (eID)\nhttps://www.aruba.it" }, { "3BFF1800008131FE55006B02091403010101434E5310318075", "Smart Card INFOCERT digital key CNS from CST PADOVA (eID)" }, + { "3BFF1800008131FE55006B02091717010101434E5310318062", "Carta Nazionale dei Servizi (CNS) Centro Servizi Territoriali (CST) (PKI)\nhttp://cst.provincia.padova.it/category/faq/firma-digitale" }, { "3BFF1800FF8031FE45534653452D43583332322D561803087C", "Giesecke & Devrient Sm@rtCafe Expert 2.0" }, { "3BFF1800FF8031FE45536D4072744361666545787065727465", "Giesecke & Devrient SmartCafe 32K v1" }, { "3BFF1800FF8131..456563............................", "Geldkarte (generic ATR)" }, @@ -3539,7 +3880,9 @@ const static atr_t AtrTable[] = { { "3BFF1800FF81313C4565630D0231025000109055700004100A", "EC-Card from DKB (Deutsche Kreditbank AG)" }, { "3BFF1800FF81313C4565630D02310280001224300020041059", "Geldkarte (Germany)" }, { "3BFF1800FF813150456563............................", "GeldKarte v3 (Germany)" }, + { "3BFF1800FF8131FE4165630608710156000FB85073204712D8", "Commerzbank maestro (Bank)\nhttps://www.commerzbank.de/konten-zahlungsverkehr/produkte/girokonten/kostenloses-girokonto/" }, { "3BFF1800FF8131FE4165630608710156000FB8602AA0471231", "Debit card (Germany): Postbank - GeldKarte (EUR), girocard, V-PAY (Bank)\nhttps://www.postbank.de/" }, + { "3BFF1800FF8131FE4165631116710156000F0902904E5711AC", "German Bank Card IDEMIA 9 Maestro/Girocard (Sparkasse S-Payment TPY 1974693D) (Bank)" }, { "3BFF1800FF8131FE450031C573C00180547615020105900074", "SIGILANCE NFC OpenPGP Smart Card (JavaCard)\nhttps://www.sigilance.com/" }, { "3BFF1800FF8131FE455448434331305445434F4744484E3224", "National Health Insurance Card, Taiwan" }, { "3BFF1800FF8131FE455448434331305445434F4744494E3126", "National Health Insurance Card, Taiwan" }, @@ -3593,6 +3936,7 @@ const static atr_t AtrTable[] = { { "3BFF1800FF8131FE55006B02091303010101434E531031808D", "Aruba Digital Signature (Other)\nhttps://www.pec.it/offerta-firma-digitale.aspx" }, { "3BFF1800FF8131FE55006B02091303011101434E531131809C", "Politecnico di Torino Student Card (eID)\nhttp://www.polito.it/" }, { "3BFF1800FF8131FE55006B02091617011101434E531131808D", "Carta Regionale dei Servizi - Regione Autonoma Friuli Venezia Giulia (HealthCare)\nhttps://www.regione.fvg.it/rafvg/cms/RAFVG/GEN/carta-regionale-servizi/" }, + { "3BFF1800FF8131FE55006B02091717011101434E531131808C", "european health insurance card and Regional (ItalY - Provincia Autonoma di Trento) Service Card (CPS) (eID)\nhttps://www.provincia.tn.it/Servizi/Attivare-la-Carta-Provinciale-dei-Servizi-CPS#cos_e" }, { "3BFF1800FF8131FE55006B42495434494420312E3000900091", "Touch&Sign 2048 (PKI)" }, { "3BFF1800FF8131FE55006B42495434494420322E3000900092", "Izenpe Green Card (Citizen Certificate) (eID)\nhttp://www.izenpe.com/s15-12020/en/contenidos/informacion/ciudadano/en_def/index.shtml" }, { "3BFF1800FFC10A31FE55006B0508C805011101434E531031800C", "Carta Regionale dei Servizi - Regione Lombardia" }, @@ -3622,6 +3966,7 @@ const static atr_t AtrTable[] = { { "3BFF9500008031FE4380318067B0850201F3A3138301900057", "Driver's Card (Tachograf card) issued by pwpw Poland (Transport)\nhttps://www.pwpw.pl/en/Products/Cards/Cards.html" }, { "3BFF9500008031FE4380318067B0850201F3A3138301F83BFF", "UK Drivers Tachograph Card (Transport)" }, { "3BFF950000C00A1F438031E073362113574A330E0231410088", "'BASE' SIM card; BASE is a german mobile phone operator, which is a brand of E-Plus, Germany." }, + { "3BFF95000150801C444E41535034323020526576533430", "Nagra card Canal+ (Polish TV provider) (Pay TV)\nhttps://pl.canalplus.com/" }, { "3BFF95000150801C444E41535034323020526576533430F1", "NC+ Polland (Pay TV)\nhttp://www.flysat.com/ncplus.php" }, { "3BFF95000150801C444E41535034323020526576533430F15D", "NC+ Polland (Pay TV)\nhttp://www.flysat.com/ncplus.php" }, { "3BFF95000150801C444E41535034323020526576533441", "Platforma Canal+ Polska, cayman card (Pay TV)\nhttps://www.flysat.com/canalplus-pl.php" }, @@ -3633,6 +3978,7 @@ const static atr_t AtrTable[] = { { "3BFF9500FF50801C444E41535034303020526576493441", "Pay TV - NC+ in Poland (Pay TV)\nhttp://ncplus.pl/" }, { "3BFF9500FF50801C444E41535034303020526576493447", "Platforma Canal+ Polska, cameleon card (Pay TV)\nhttps://www.flysat.com/canalplus-pl.php" }, { "3BFF9500FF50801C444E41535034303020526576493548", "Canal+ France Nagra3 (Pay TV)\nhttps://www.canalplus.com/" }, + { "3BFF9500FF50801C444E41535034383220526576523038", "CANALSAT, mediaguard key (Pay TV)" }, { "3BFF9500FFC00A1F438031E073362113574A3320073341411F", "Swisscom 3G SIM card" }, { "3BFF9500FFC00A1F438031E073F62113574A334857314141E5", "MTNL 3G USIM (India)" }, { "3BFF9500FFC00A1F438031E073F62113574A334861324147D6", "GSM SIM (issued by e-plus, Germany)" }, @@ -3646,10 +3992,20 @@ const static atr_t AtrTable[] = { { "3BFF9600008131FE4380318065B0845651101201788290006A", "SafeNet eToken 5300 (PKI)" }, { "3BFF9600008131FE4380318065B08456511012021082900001", "Nedap NexS N:Secure (eID)\nhttps://www.nsecure.nl/nl/" }, { "3BFF9600008131FE4380318065B0846160FB120FFD8290000C", "IDPrime 930 FIPS Level 2 (T=1 CT=96) (BAI3.1) (PKI)" }, + { "3BFF9600008131FE4380318065B0846566FB120FFC8290000F", "SmartID 3930 FIDO Contact and Contactless card (PKI)\nhttps://www.smartcardfocus.com/shop/ilp/id~962/safenet-idprime-3930-fido-dual-interface-fips-l2/p/index.shtml" }, + { "3BFF9600008131FE4380318065B0846669FB12FFFE829000F1", "IDCore3230 build 6.8, test APDU applet (JavaCard)" }, { "3BFF9600008131FE4380318065B085040011120FFF829000E0", "Pakistan National identity card (eID)" }, { "3BFF9600008131FE4380318065B085040120120FFF829000D0", "Portuguese National Identity Card (eID) (eID)\nhttps://www.autenticacao.gov.pt/o-cartao-de-cidadao" }, + { "3BFF9600008131FE4380318065B0855956FB120FFC82900002", "THALES SafeNet IDPrime 3940 Fido (PKI)\nhttps://cpl.thalesgroup.com/fr/resources/access-management/idprime-3940-product-brief" }, { "3BFF9600008131FE4580F9A0000003080000100053454E54AC", "cac (eID)" }, { "3BFF9600008131FE55006B02090403010101434E53103180EB", "Aruba PEC SpA digital signature card made by Incard (eID)\nhttps://www.pec.it/download-software-driver.aspx" }, + { "3BFF960000C00A31FE4380318065B085040011120FFF829000AB", "French National Identity Card (eID) (eID)\nhttps://www.interieur.gouv.fr/actualites/actu-du-ministere/nouvelle-carte-nationale-didentite" }, + { "3BFF9600FF8131FE406563111562025000100A0190A90730BF", "girocard Sparkasse Ansbach, Germany BLZ 76550000 (Bank)" }, + { "3BFF9600FF8131FE4065631D02840156001F190850E10200EF", "Raiffeiesenbank Girocard Maestro (Bank)" }, + { "3BFF9600FF8131FE4065631D0284025000230308C0B702000A", "German Debitcard from Sparkasse (Bank)" }, + { "3BFF9600FF8131FE4065631D0284025000230709E0F9020061", "Sparkasse Ingolstadt (Bank)" }, + { "3BFF9600FF8131FE4065631D028402500023140710B80200CD", "Sparkasse Aachen - german Maestro/Girocard (S-Payment TGI 50380969) (Bank)" }, + { "3BFF9600FF8131FE4065631D028402500023160BB0C102001A", "debit card (Bank)" }, { "3BFF9600FF8131FE4565630D09710764000D00035450070181", "Commerzbank ServiceCard / Maestro / GeldKarte / Cirrus / girocard / CashGroup / electronic cash" }, { "3BFF9600FF8131FE4565631901500280000F002B0046501172", "Sparkasse Bremen Germany HBCI DDV" }, { "3BFF9600FF8131FE4565631901500280000F002F0025501115", "German Postbank Giro card with electronic cash, Maestro, GeldKarte features" }, @@ -3659,6 +4015,7 @@ const static atr_t AtrTable[] = { { "3BFF9600FFC00A1F438031E073362113574A43491C3130321E", "Giesecke & Devrient - UniverSIM Pegasus" }, { "3BFF9600FFC00A31FE4D8031E06B04310502A85555555555557E", "Multos (Other)" }, { "3BFF9700008131FE4380318065B0846160FB120FFD8290000D", "IDPrime 3930 FIPS Level 3 (T=1 CT=97) (BAI6) (PKI)" }, + { "3BFF9700008131FE4380318065B08466693912FFFE82900032", "IDCore3230 build 6.8, test APDU applet (JavaCard)" }, { "3F05DC20FC0001", "DigiCash Facility Card" }, { "3F28000011140003689000", "SIMEMU - a DIY GSM SIM card\nhttp://simemu.cjb.net/" }, { "3F2D0027A051827D00000052000C9000", "Porta Moedas Multibanco (Portugeese electronic purse)" }, @@ -3710,6 +4067,7 @@ const static atr_t AtrTable[] = { { "3F672F0011140003689000", "D2MAC/Eurocrypt (Pay TV)" }, { "3F672F0411200000689000", "BULL HN ITALIA 06/92 - 100.000 - 64MP\nLa Sapienza - Universita' di Roma" }, { "3F69000024AF01700101FF9000", "French GSM SIM card (900MHz)" }, + { "3F69000025AF01700103FF9000", "French Gift Card (Loyalty)" }, { "3F6A000000640150010C820101A9", "Credit Card cafe Selecta" }, { "3F6B150002A007906F4D59000C9000", "Sky Viewing Card (Gen 1) from 1990s (Pay TV)" }, { "3F6C000024A03000FF00000100049000", "Gemplus MCOS 16K DES Sample Card" }, @@ -3721,6 +4079,7 @@ const static atr_t AtrTable[] = { { "3F6C00003DA030BE4100370100049000", "Sberbank (Bank)" }, { "3F6D000080318065B00501025E83009000", "Gemplus GemXpresso 211PK or 211PK-IS" }, { "3F6D000080318065B00501025E92009000", "Gemplus GemXpresso 32K" }, + { "3F7613250421B0114A5003", "DSS/DTV F (P1; first generation access card) (Pay TV)" }, { "3F77130000C11400A2689000", "Boxer DTV Sweden (Pay TV)\nhttp://www.boxer.se" }, { "3F77180000C11400A2689000", "Viacess card HRT (Hrvatska Radio Televizija)" }, { "3F77180000C11401A2689000", "VIA 2.6 XXX (Pay TV)" }, @@ -3730,7 +4089,7 @@ const static atr_t AtrTable[] = { { "3F77180000C27A4202689000", "SCT (Via Access)" }, { "3F77180000C27A4302689000", "DORCEL (Via Access)" }, { "3F77180000C27A4402689000", "XXX Redlight_HD (Viaccess)" }, - { "3F77180000C2EB41026C9000", "Elite HD10+ (Pay TV)\nSattelite cryptoworks card - Smart card Viaccess (Telesat - belgium) (Pay TV)" }, + { "3F77180000C2EB41026C9000", "Elite HD10+ (Pay TV)\nSatellite cryptoworks card - Smart card Viaccess (Telesat - belgium) (Pay TV)" }, { "3F77180000C2EB45026C9000", "facetv (Other)" }, { "3F77180000D38A4001649000", "Skylink Viaccess 5.0 (Pay TV)\nhttp://www.skylink.sk/" }, { "3F77180000D38A4201649000", "Satellite decoder card for TV Vlaanderen (Other)\nhttps://www.tv-vlaanderen.be" }, @@ -3765,12 +4124,14 @@ const static atr_t AtrTable[] = { { "3FFD11250250000333B01569FF4A50F080034B4C03", "Kabel Deutschland G02 (Pay TV)" }, { "3FFD11250250800F41B00A69FF4A507080005A4503", "Buypass smart card (Bank)\nhttps://www.buypass.no/bruker/buypass-id/buypass-smartkort" }, { "3FFD11250250800F41B00D69FF4A50F08000565403", "Viasat (Pay TV)" }, + { "3FFD11250250800F41B00F69FF4A50F080005A4A03", "Telekom Romania Communications (DVB-C) (Pay TV)\nhttps://www.telekom.ro/" }, { "3FFD13250250000F33B00F69FF4A50D00000535902", "Sky Digital (DSS satellite TV card) 2009 issue" }, { "3FFD13250250000F33B01669FF4A50D08000535903", "Sky TV Multiroom (Pay TV)" }, { "3FFD13250250800F..B0..69FF4A50D08000495403", "Sky (Italy) VideoGuard CAM card" }, { "3FFD13250250800F33B008FFFF4A50900000474C01", "Sky (Brasil) VideoGuard CAM card" }, { "3FFD13250250800F33B008FFFF4A50900000545601", "NDS Videoguard TV CAM card (Sky Mexico 0905) (Pay TV)\nhttps://en.wikipedia.org/wiki/VideoGuard" }, { "3FFD13250250800F41B00A69FF4A50F00000503103", "Sky Germany V14 NDS card (Pay TV)\nhttp://www.wikipedia.org/wiki/Sky_Deutschland" }, + { "3FFD13250250800F41B00F69FF4A50F080005A4A03", "Orange Romania (DVB-C) (Pay TV)\nhttps://www.orange.ro/" }, { "3FFD13250250800F55B00269FF4A50F08000503103", "SKY DE V15 (Pay TV)" }, { "3FFD14250150000F33B00BFFFF4A50800000475801", "DirecTV card" }, { "3FFD14250250800F41B00A69FF4A507080004E5A03", "Sky Network Televisiton Limited (New Zealand) card for new (2016) decoder. Reportedly, this is a Kaon NS1120-500 box. (Pay TV)\nhttp://www.sky.co.nz" }, @@ -3809,7 +4170,7 @@ const static atr_t AtrTable[] = { { "3FFF9500FF918171644700444E41535030303320526576333233FF", "Satellite TV Card 'Via Digital' (Nagra)" }, { "3FFF9500FF918171A04700444E4153503031302052657641323048", "DSS/DISH ROM10" }, { "3FFF9500FF918171A04700444E4153503031302052657641323149", "PayTV card for DishNetwork Sat receiver\nhttp://www.dishnetwork.com/" }, - { "3FFF9500FF918171A04700444E4153503031312052657642", "NTL digial TV card (Nagravision)" }, + { "3FFF9500FF918171A04700444E4153503031312052657642", "NTL digital TV card (Nagravision)" }, { "3FFF9500FF918171A04700444E415350303131205265764230364E", "Telewest Broadband (Nagravision)" }, { "3FFF9500FF918171A04700444E415350303131205265764230423A", "NagraVision card for StarHub Digital Cable DVB-C Singapore" }, { "3FFF9500FF918171A04700444E415350303131205265764230443C", "NagraVision card for Virgin Media in the UK" }, @@ -3822,7 +4183,7 @@ const static atr_t AtrTable[] = { { "3FFF9500FF918171FE4700444E4153503134322052657647303216", "Polsat Nagra3\nBrazil - Claro TV Nagra3 Red" }, { "3FFF9500FF918171FE4700444E4153503134322052657647303410", "Nagra 3 Card - Telefonica Brazil Green" }, { "3FFF9500FF918171FE4700444E4153503134322052657647303612", "UM02 card from German Unitymedia cable TV provider" }, - { "3FFF9500FF918171FE4700444E4153503134322052657647433463", "HD+ card used by the satelite company astra for decryption of the HDTV channels of RTL, VOX, Sat1 and ProSieben. Nagravision V3 is used for the encryption." }, + { "3FFF9500FF918171FE4700444E4153503134322052657647433463", "HD+ card used by the satellite company astra for decryption of the HDTV channels of RTL, VOX, Sat1 and ProSieben. Nagravision V3 is used for the encryption." }, { "3FFF9500FF918171FE4700444E415350313830204D65724A30320E", "Nagra 3 Digital Plus Spain" }, { "3FFF9500FF918171FE4700444E41535032343120447368", "DISH Network G3 (Pay TV)" }, { "3FFF9500FF918171FE4700444E415350323431204473684830390C", "Dish Network Smart Card (Pay TV)" }, @@ -3836,6 +4197,7 @@ const static atr_t AtrTable[] = { { "3FFF9500FF918171FE5700444E4153503431302052657651324260", "Nagravision Kudelski Generation 7 card Rom410 MerQ2B (Pay TV)" }, { "3FFF9500FF918171FE5700444E4153503431302052657651325371", "Slovak and Czech pay TV provider Slovak Telecom (Pay TV)\nhttp://www.flysat.com/novadigi-sk.php" }, { "3FFF9500FF918171FE5700444E4153503432302052657653363017", "HD+ HD04b Card (Pay TV)" }, + { "3FFF9500FF918171FE5700444E4153503432302052657653363413", "claro card honduras central america 'NAGRA' (Pay TV)" }, { "3FFF9500FF918171FE5700444E4153503432302052657653364265", "Nagra Kudelski / Canalsat Reunion (Pay TV)" }, { "3FFF9500FF918171FE5700444E4153503435302052657657363014", "HD+ HD05 Paytv smartcard (Pay TV)" }, { "3FFF9500FF918171FE5700444E415350343832205265765232361C", "Max Tv Croatia (Pay TV)\nhttps://www.lyngsat.com/packages/Max-TV.html" }, From 48b61c6438017dcaffd8ff29ce4337943c4151f6 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 30 Jul 2023 21:21:59 +0200 Subject: [PATCH 0334/1034] ATR from the flipper zero seader project --- client/src/atrs.h | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/atrs.h b/client/src/atrs.h index 18c1880c6..2a6bc7521 100644 --- a/client/src/atrs.h +++ b/client/src/atrs.h @@ -2328,6 +2328,7 @@ const static atr_t AtrTable[] = { { "3B959640F001130A0A1D", "xcrypt (Pay TV)" }, { "3B959640F00F100A096A", "Zain Usim Card (Telecommunication)\nwww.qariya.com" }, { "3B959680B1FE551FC7477261636513", "IClass SE Processor (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor" }, + { "3B90969181B1FE551FC7D4", "IClass SE Processor (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor"}, { "3B9596C0F01FC20F100A0A16", "viettel (Telecommunication)" }, { "3B959740F01A160A1941", "SG50 (Samsung Chip) (Telecommunication)" }, { "3B96004121920000622433339000", "Ukrainian Telecommunications Operator Kyivstar (old simcard) (Telecommunication)\nhttps://kyivstar.ua/uk/mm" }, From 9e8adce7a98b5f03c18887b68ab0dc3069232ebb Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 30 Jul 2023 21:22:52 +0200 Subject: [PATCH 0335/1034] updated ATR list --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c1f4e86c..5dd92a393 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Updated ATR list (@iceman1001) - Changed `mem load -m` - now correctly erase all allocated flash memory (@iceman1001) - Fixed emulator quick dump to handle MFC Ev1 extra sectors (@iceman100) - Removed some empty dump files (@iceman1001) From d9d03aaf1f2d292494415989361dffded5ffba78 Mon Sep 17 00:00:00 2001 From: kormax <3392860+kormax@users.noreply.github.com> Date: Mon, 31 Jul 2023 12:47:46 +0300 Subject: [PATCH 0336/1034] Add new DESFire command code Update file formatting --- include/protocols.h | 220 +++++++++++++++++++++++++++----------------- 1 file changed, 137 insertions(+), 83 deletions(-) diff --git a/include/protocols.h b/include/protocols.h index 772105c9d..58b992717 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -531,95 +531,149 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. // MIFARE DESFire command set: -#define MFDES_AUTHENTICATE 0x0A // AUTHENTICATE_NATIVE -#define MFDES_AUTHENTICATE_ISO 0x1A // AUTHENTICATE_STANDARD -#define MFDES_AUTHENTICATE_AES 0xAA +#define MFDES_AUTHENTICATE 0x0A // AUTHENTICATE_NATIVE +#define MFDES_AUTHENTICATE_ISO 0x1A // AUTHENTICATE_STANDARD +#define MFDES_AUTHENTICATE_AES 0xAA // Leakage Resilient Primitive (LRP) -#define MFDES_AUTHENTICATE_EV2F 0x71 // LRP, AuthenticateLRPFirst -#define MFDES_AUTHENTICATE_EV2NF 0x77 // LRP, AuthenticateLRPNonFirst +#define MFDES_AUTHENTICATE_EV2F 0x71 // LRP, AuthenticateLRPFirst +#define MFDES_AUTHENTICATE_EV2NF 0x77 // LRP, AuthenticateLRPNonFirst + +#define MFDES_CREDIT 0x0C +#define MFDES_LIMITED_CREDIT 0x1C +#define MFDES_WRITE_RECORD 0x3B +#define MFDES_READSIG 0x3C +#define MFDES_WRITE_DATA 0x3D +#define MFDES_GET_KEY_SETTINGS 0x45 +#define MFDES_GET_UID 0x51 +#define MFDES_CHANGE_KEY_SETTINGS 0x54 +#define MFDES_ROLL_KEY_SETTINGS 0x55 +#define MFDES_INIT_KEY_SETTINGS 0x56 +#define MFDES_FINALIZE_KEY_SETTINGS 0x57 +#define MFDES_SELECT_APPLICATION 0x5A +#define MFDES_CHANGE_CONFIGURATION 0x5C +#define MFDES_CHANGE_FILE_SETTINGS 0x5F +#define MFDES_GET_VERSION 0x60 +#define MFDES_GET_ISOFILE_IDS 0x61 +#define MFDES_GET_KEY_VERSION 0x64 +#define MFDES_GET_DELEGATE_INFO 0x69 +#define MFDES_GET_APPLICATION_IDS 0x6A +#define MFDES_GET_VALUE 0x6C +#define MFDES_GET_FREE_MEMORY 0x6E +#define MFDES_GET_DF_NAMES 0x6D +#define MFDES_GET_FILE_IDS 0x6F +#define MFDES_WRITE_RECORD2 0x8B +#define MFDES_WRITE_DATA2 0x8D +#define MFDES_ABORT_TRANSACTION 0xA7 +#define MFDES_READ_RECORDS2 0xAB +#define MFDES_READ_DATA2 0xAD +#define MFDES_ADDITIONAL_FRAME 0xAF +#define MFDES_UPDATE_RECORD2 0xBA +#define MFDES_READ_RECORDS 0xBB +#define MFDES_READ_DATA 0xBD +#define MFDES_CREATE_CYCLIC_RECORD_FILE 0xC0 +#define MFDES_CREATE_LINEAR_RECORD_FILE 0xC1 +#define MFDES_CHANGE_KEY 0xC4 +#define MFDES_CHANGE_KEY_EV2 0xC6 +#define MFDES_COMMIT_TRANSACTION 0xC7 +#define MFDES_COMMIT_READER_ID 0xC8 +#define MFDES_CREATE_DELEGATE_APP 0xC9 +#define MFDES_CREATE_APPLICATION 0xCA +#define MFDES_CREATE_BACKUP_DATA_FILE 0xCB +#define MFDES_CREATE_VALUE_FILE 0xCC +#define MFDES_CREATE_STD_DATA_FILE 0xCD +#define MFDES_CREATE_TRANS_MAC_FILE 0xCE +#define MFDES_DELETE_APPLICATION 0xDA +#define MFDES_UPDATE_RECORD 0xDB +#define MFDES_DEBIT 0xDC +#define MFDES_DELETE_FILE 0xDF +#define MFDES_CLEAR_RECORD_FILE 0xEB +#define MFDES_NOTIFY_TRANSACTION_SUCCESS 0xEE // New command. Used by Apple-ECP-compliant DESFire readers to signify successful transaction +#define MFDES_PREPARE_PC 0xF0 +#define MFDES_PROXIMITY_CHECK 0xF2 +#define MFDES_GET_FILE_SETTINGS 0xF5 +#define MFDES_FORMAT_PICC 0xFC +#define MFDES_VERIFY_PC 0xFD +#define MFDES_NATIVE_ISO7816_WRAP_CLA 0x90 -#define MFDES_CREDIT 0x0C -#define MFDES_LIMITED_CREDIT 0x1C -#define MFDES_WRITE_RECORD 0x3B -#define MFDES_READSIG 0x3C -#define MFDES_WRITE_DATA 0x3D -#define MFDES_GET_KEY_SETTINGS 0x45 -#define MFDES_GET_UID 0x51 -#define MFDES_CHANGE_KEY_SETTINGS 0x54 -#define MFDES_ROLL_KEY_SETTINGS 0x55 -#define MFDES_INIT_KEY_SETTINGS 0x56 -#define MFDES_FINALIZE_KEY_SETTINGS 0x57 -#define MFDES_SELECT_APPLICATION 0x5A -#define MFDES_CHANGE_CONFIGURATION 0x5C -#define MFDES_CHANGE_FILE_SETTINGS 0x5F -#define MFDES_GET_VERSION 0x60 -#define MFDES_GET_ISOFILE_IDS 0x61 -#define MFDES_GET_KEY_VERSION 0x64 -#define MFDES_GET_DELEGATE_INFO 0x69 -#define MFDES_GET_APPLICATION_IDS 0x6A -#define MFDES_GET_VALUE 0x6C -#define MFDES_GET_FREE_MEMORY 0x6E -#define MFDES_GET_DF_NAMES 0x6D -#define MFDES_GET_FILE_IDS 0x6F -#define MFDES_WRITE_RECORD2 0x8B -#define MFDES_WRITE_DATA2 0x8D -#define MFDES_ABORT_TRANSACTION 0xA7 -#define MFDES_READ_RECORDS2 0xAB -#define MFDES_READ_DATA2 0xAD -#define MFDES_ADDITIONAL_FRAME 0xAF -#define MFDES_UPDATE_RECORD2 0xBA -#define MFDES_READ_RECORDS 0xBB -#define MFDES_READ_DATA 0xBD -#define MFDES_CREATE_CYCLIC_RECORD_FILE 0xC0 -#define MFDES_CREATE_LINEAR_RECORD_FILE 0xC1 -#define MFDES_CHANGE_KEY 0xC4 -#define MFDES_CHANGE_KEY_EV2 0xC6 -#define MFDES_COMMIT_TRANSACTION 0xC7 -#define MFDES_COMMIT_READER_ID 0xC8 -#define MFDES_CREATE_DELEGATE_APP 0xC9 -#define MFDES_CREATE_APPLICATION 0xCA -#define MFDES_CREATE_BACKUP_DATA_FILE 0xCB -#define MFDES_CREATE_VALUE_FILE 0xCC -#define MFDES_CREATE_STD_DATA_FILE 0xCD -#define MFDES_CREATE_TRANS_MAC_FILE 0xCE -#define MFDES_DELETE_APPLICATION 0xDA -#define MFDES_UPDATE_RECORD 0xDB -#define MFDES_DEBIT 0xDC -#define MFDES_DELETE_FILE 0xDF -#define MFDES_CLEAR_RECORD_FILE 0xEB -#define MFDES_PREPARE_PC 0xF0 -#define MFDES_PROXIMITY_CHECK 0xF2 -#define MFDES_GET_FILE_SETTINGS 0xF5 -#define MFDES_FORMAT_PICC 0xFC -#define MFDES_VERIFY_PC 0xFD -#define MFDES_NATIVE_ISO7816_WRAP_CLA 0x90 // MIFARE DESFire status & error codes: -#define MFDES_S_OPERATION_OK 0x00 -#define MFDES_S_NO_CHANGES 0x0C -#define MFDES_S_SIGNATURE 0x90 -#define MFDES_S_ADDITIONAL_FRAME 0xAF +#define MFDES_S_OPERATION_OK 0x00 +#define MFDES_S_NO_CHANGES 0x0C +#define MFDES_S_SIGNATURE 0x90 +#define MFDES_S_ADDITIONAL_FRAME 0xAF -#define MFDES_E_OUT_OF_EEPROM 0x0E -#define MFDES_E_ILLEGAL_COMMAND_CODE 0x1C -#define MFDES_E_INTEGRITY_ERROR 0x1E -#define MFDES_E_NO_SUCH_KEY 0x40 -#define MFDES_E_LENGTH 0x7E -#define MFDES_E_PERMISSION_DENIED 0x9D -#define MFDES_E_PARAMETER_ERROR 0x9E -#define MFDES_E_APPLICATION_NOT_FOUND 0xA0 -#define MFDES_E_APPL_INTEGRITY 0xA1 -#define MFDES_E_AUTHENTICATION_ERROR 0xAE -#define MFDES_E_BOUNDARY 0xBE -#define MFDES_E_PICC_INTEGRITY 0xC1 -#define MFDES_E_COMMAND_ABORTED 0xCA -#define MFDES_E_PICC_DISABLED 0xCD -#define MFDES_E_COUNT 0xCE -#define MFDES_E_DUPLICATE 0xDE -#define MFDES_E_EEPROM 0xEE -#define MFDES_E_FILE_NOT_FOUND 0xF0 -#define MFDES_E_FILE_INTEGRITY 0xF1 +#define MFDES_E_OUT_OF_EEPROM 0x0E +#define MFDES_E_ILLEGAL_COMMAND_CODE 0x1C +#define MFDES_E_INTEGRITY_ERROR 0x1E +#define MFDES_E_NO_SUCH_KEY 0x40 +#define MFDES_E_LENGTH 0x7E +#define MFDES_E_PERMISSION_DENIED 0x9D +#define MFDES_E_PARAMETER_ERROR 0x9E +#define MFDES_E_APPLICATION_NOT_FOUND 0xA0 +#define MFDES_E_APPL_INTEGRITY 0xA1 +#define MFDES_E_AUTHENTICATION_ERROR 0xAE +#define MFDES_E_BOUNDARY 0xBE +#define MFDES_E_PICC_INTEGRITY 0xC1 +#define MFDES_E_COMMAND_ABORTED 0xCA +#define MFDES_E_PICC_DISABLED 0xCD +#define MFDES_E_COUNT 0xCE +#define MFDES_E_DUPLICATE 0xDE +#define MFDES_E_EEPROM 0xEE +#define MFDES_E_FILE_NOT_FOUND 0xF0 +#define MFDES_E_FILE_INTEGRITY 0xF1 + +// MIFARE PLus EV2 Command set +// source: https://www.nxp.com/docs/en/data-sheet/MF1P(H)x2.pdf in Look-Up Tables + +#define MFP_READ_SIG 0x3C // same as DESFIRE +#define MFP_WRITEPERSO 0xA8 +#define MFP_COMMITPERSO 0xAA + +#define MFP_AUTHENTICATEFIRST 0x70 +#define MFP_AUTHENTICATEFIRST_VARIANT 0x73 +#define MFP_AUTHENTICATENONFIRST 0x76 +#define MFP_AUTHENTICATECONTINUE 0x72 +#define MFP_AUTHENTICATESECTORSWITCH 0x7A +#define MFP_RESETAUTH 0x78 + +#define MFP_VCSUPPORTLASTISOL3 0x4B +#define MFP_ISOSELECT 0xA4 + +#define MFP_GETVERSION 0x60 // same as DESFIRE +#define MFP_ADDITIONALFRAME 0xAF +#define MFP_SETCONFIGSL1 0x44 +#define MFP_MF_PERSONALIZEUIDUSAGE 0x40 + +// read commands +#define MFP_READENCRYPTEDNOMAC_MACED 0X30 +#define MFP_READENCRYPTEDMAC_MACED 0x31 +#define MFP_READPLAINNOMAC_MACED 0x32 +#define MFP_READPLAINMAC_MACED 0x33 +#define MFP_READENCRYPTEDNOMAC_UNMACED 0x34 +#define MFP_READENCRYPTEDMAC_UNMACED 0X35 +#define MFP_READPLAINNOMAC_UNMACED 0x36 +#define MFP_READPLAINMAC_UNMACED 0x37 + +// write commands +#define MFP_WRITEENCRYPTEDNOMAC 0xA0 +#define MFP_WRITEENCRYPTEDMAC 0xA1 +#define MFP_WRITEPLAINNOMAC 0xA2 +#define MFP_WRITEPLAINMAC 0xA3 + +// value commands +#define MFP_INCREMENTNOMAC 0xB0 +#define MFP_INCREMENTMAC 0xB1 +#define MFP_DECREMENTNOMAC 0xB2 +#define MFP_DECREMENTMAC 0xB3 +#define MFP_TRANSFERNOMAC 0xB4 +#define MFP_TRANSFERMAC 0xB5 +#define MFP_INCREMENTTRANSFERNOMAC 0xB6 +#define MFP_INCREMENTTRANSFERMAC 0xB7 +#define MFP_DECREMENTTRANSFERNOMAC 0xB8 +#define MFP_DECREMENTTRANSFERMAC 0xB9 +#define MFP_RESTORENOMAC 0xC2 +#define MFP_RESTOREMAC 0xC3 // MIFARE PLus EV2 Command set // source: https://www.nxp.com/docs/en/data-sheet/MF1P(H)x2.pdf in Look-Up Tables From ef79fb91ebfe4c5ea1051a70132ea7ae240c9164 Mon Sep 17 00:00:00 2001 From: kormax <3392860+kormax@users.noreply.github.com> Date: Mon, 31 Jul 2023 12:48:17 +0300 Subject: [PATCH 0337/1034] Add annotation for new DESFire command code --- client/src/cmdhflist.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index cf848d090..8e605b91f 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -1023,6 +1023,9 @@ void annotateMfDesfire(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { snprintf(exp, size, "CLEAR RECORD FILE"); } break; + case MFDES_NOTIFY_TRANSACTION_SUCCESS: + snprintf(exp, size, "NOTIFY TRANSACTION SUCCESS (ECP)"); + break; case MFDES_COMMIT_TRANSACTION: snprintf(exp, size, "COMMIT TRANSACTION"); break; From d522a46fca981331fddac3117047030b5dcf5c83 Mon Sep 17 00:00:00 2001 From: "Rick Farina (Zero_Chaos)" Date: Mon, 31 Jul 2023 15:46:20 -0400 Subject: [PATCH 0338/1034] fix lto-type-mismatch in guidummy.cpp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit link time optimization requires all functions named the same to actually operate the same. I am pretty sure this fixes it without breaking anything. Fixes: https://github.com/RfidResearchGroup/proxmark3/issues/2058 src/proxgui.h:35:6: error: type of ‘ShowPictureWindow’ does not match original declaration [-Werror=lto-type-mismatch] 35 | void ShowPictureWindow(uint8_t *data, int len); | ^ src/guidummy.cpp:33:17: note: type mismatch in parameter 2 33 | extern "C" void ShowPictureWindow(char *fn) { | ^ src/guidummy.cpp:33:17: note: type ‘void’ should match type ‘int’ src/guidummy.cpp:33:17: note: ‘ShowPictureWindow’ was previously declared here --- client/src/guidummy.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/guidummy.cpp b/client/src/guidummy.cpp index e54c1d94e..2882fd41d 100644 --- a/client/src/guidummy.cpp +++ b/client/src/guidummy.cpp @@ -30,7 +30,7 @@ extern "C" void ShowGraphWindow(void) { extern "C" void HideGraphWindow(void) {} extern "C" void RepaintGraphWindow(void) {} -extern "C" void ShowPictureWindow(char *fn) { +extern "C" void ShowPictureWindow(char *fn, int len) { static int warned = 0; if (!warned) { From 6b648396e700db8e9753725e092a41040d8b9a5c Mon Sep 17 00:00:00 2001 From: "Rick Farina (Zero_Chaos)" Date: Mon, 31 Jul 2023 23:33:36 -0400 Subject: [PATCH 0339/1034] fix -Wstringop-overread error We are reading this 26 bytes into a 32 byte buffer, is this even any worse? Fixes: https://github.com/RfidResearchGroup/proxmark3/issues/2060 --- client/src/mifare/mifarehost.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index a05456bcd..76c392490 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -787,7 +787,7 @@ int mfStaticNested(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBl p_keyblock = mem; } - uint8_t fn[26] = "static_nested_000.bin"; + uint8_t fn[32] = "static_nested_000.bin"; uint64_t start_time = msclock(); for (uint32_t i = 0; i < keycnt; i += max_keys_chunk) { From f451be58775c5ac6e9b48d404afc33456d237df0 Mon Sep 17 00:00:00 2001 From: "Rick Farina (Zero_Chaos)" Date: Wed, 2 Aug 2023 11:22:03 -0400 Subject: [PATCH 0340/1034] proxguiqt.cpp needs ui_overlays.h to build Fixes: https://github.com/RfidResearchGroup/proxmark3/issues/2062 --- client/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/Makefile b/client/Makefile index bb15a9944..f934eaed7 100644 --- a/client/Makefile +++ b/client/Makefile @@ -781,6 +781,8 @@ proxmark3: $(OBJS) $(STATICLIBS) lualibs/pm3_cmd.lua lualibs/mfc_default_keys.lu src/proxgui.cpp: src/ui/ui_overlays.h src/ui/ui_image.h +src/proxguiqt.cpp: src/ui/ui_overlays.h + src/proxguiqt.moc.cpp: src/proxguiqt.h $(info [-] MOC $@) $(Q)$(MOC) -o$@ $^ From 0b70a1014561a19f8772052ebda4cbc0b9e23d30 Mon Sep 17 00:00:00 2001 From: "Rick Farina (Zero_Chaos)" Date: Wed, 2 Aug 2023 11:30:18 -0400 Subject: [PATCH 0341/1034] proxguiqt.cpp also needs ui_image.h to build This fixes the next parallel build failure in the current shuffle seed. --- client/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/Makefile b/client/Makefile index f934eaed7..b79d248bb 100644 --- a/client/Makefile +++ b/client/Makefile @@ -781,7 +781,7 @@ proxmark3: $(OBJS) $(STATICLIBS) lualibs/pm3_cmd.lua lualibs/mfc_default_keys.lu src/proxgui.cpp: src/ui/ui_overlays.h src/ui/ui_image.h -src/proxguiqt.cpp: src/ui/ui_overlays.h +src/proxguiqt.cpp: src/ui/ui_overlays.h src/ui/ui_image.h src/proxguiqt.moc.cpp: src/proxguiqt.h $(info [-] MOC $@) From 4ee7b78a07cde4dc1e3c9c2061d23ba5d1f8d02d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 17:36:50 +0200 Subject: [PATCH 0342/1034] always make sure resp is initialized --- client/src/comms.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/src/comms.c b/client/src/comms.c index 298db88e7..59c1cd1cf 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -820,7 +820,6 @@ bool WaitForResponse(uint32_t cmd, PacketResponseNG *response) { bool GetFromDevice(DeviceMemType_t memtype, uint8_t *dest, uint32_t bytes, uint32_t start_index, uint8_t *data, uint32_t datalen, PacketResponseNG *response, size_t ms_timeout, bool show_warning) { if (dest == NULL) return false; - if (bytes == 0) return true; PacketResponseNG resp; if (response == NULL) { @@ -839,6 +838,9 @@ bool GetFromDevice(DeviceMemType_t memtype, uint8_t *dest, uint32_t bytes, uint3 resp.oldarg[2] = 0; memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); + if (bytes == 0) return true; + + // clear clearCommandBuffer(); From 602daa7fdd30a77bba0a7b618891868489e9adcc Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 17:40:55 +0200 Subject: [PATCH 0343/1034] missing inits --- client/src/cmdanalyse.c | 81 +++++++++++++++++++++++--------------- client/src/cmddata.c | 2 +- client/src/cmdhfthinfilm.c | 4 +- common/generator.c | 2 +- 4 files changed, 53 insertions(+), 36 deletions(-) diff --git a/client/src/cmdanalyse.c b/client/src/cmdanalyse.c index a2ebf9d23..3713befb5 100644 --- a/client/src/cmdanalyse.c +++ b/client/src/cmdanalyse.c @@ -311,7 +311,7 @@ static int CmdAnalyseCRC(const char *Cmd) { PrintAndLogEx(INFO, " reflect8(0x80) is %02X == 0x01", reflect8(0x80)); PrintAndLogEx(INFO, " reflect16(0x8000) is %04X == 0x0001", reflect16(0xc6c6)); - uint8_t b1, b2; + uint8_t b1 = 0, b2 = 0; // ISO14443 crc B compute_crc(CRC_14443_B, data, (size_t)dlen, &b1, &b2); uint16_t crcBB_1 = (uint16_t)(b1 << 8 | b2); @@ -1079,71 +1079,88 @@ static int CmdAnalyseUnits(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "analyse units", "experiments of unit conversions found in HF. ETU (1/13.56mhz), US or SSP_CLK (1/3.39MHz)", - "analyse uints --etu 10" - "analyse uints --us 100" + "analyse uints --etu 10\n" + "analyse uints --us 100\n" ); void *argtable[] = { arg_param_begin, arg_int0(NULL, "etu", "", "number in ETU"), arg_int0(NULL, "us", "", "number in micro seconds (us)"), + arg_lit0("t", "selftest", "self tests"), arg_param_end }; - CLIExecWithReturn(ctx, Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, true); int etu = arg_get_int_def(ctx, 1, -1); int us = arg_get_int_def(ctx, 2, -1); + bool selftest = arg_get_lit(ctx, 3); CLIParserFree(ctx); - if (etu == -1 && us == -1) { + if (selftest) { PrintAndLogEx(INFO, "US to ETU conversions"); - PrintAndLogEx(INFO, " 9 US = %u ETU (expect 1) " _GREEN_("ok"), US_TO_ETU(9)); - PrintAndLogEx(INFO, " 10 US = %u ETU (expect 1) " _GREEN_("ok"), US_TO_ETU(10)); - PrintAndLogEx(INFO, " 94 US = %u ETU (expect 10) " _GREEN_("ok"), US_TO_ETU(94)); - PrintAndLogEx(INFO, " 95 US = %u ETU (expect 10) " _GREEN_("ok"), US_TO_ETU(95)); - PrintAndLogEx(INFO, " 302 US = %u ETU (expect 32) " _GREEN_("ok"), US_TO_ETU(302)); + + int32_t test = US_TO_ETU(9); + PrintAndLogEx(INFO, " 9 US = %i ETU (expect 1) %s", test, (test == 1) ? _GREEN_("ok") : _RED_("fail")); + + test = US_TO_ETU(10); + PrintAndLogEx(INFO, " 10 US = %i ETU (expect 1) %s", test, (test == 1) ? _GREEN_("ok") : _RED_("fail")); + + test = US_TO_ETU(94); + PrintAndLogEx(INFO, " 94 US = %i ETU (expect 10) %s", test, (test == 10) ? _GREEN_("ok") : _RED_("fail")); + + test = US_TO_ETU(95); + PrintAndLogEx(INFO, " 95 US = %i ETU (expect 10) %s", test, (test == 10) ? _GREEN_("ok") : _RED_("fail")); + + test = US_TO_ETU(302); + PrintAndLogEx(INFO, " 302 US = %i ETU (expect 32) %s", test, (test == 10) ? _GREEN_("ok") : _RED_("fail")); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "ETU to US conversions"); - PrintAndLogEx(INFO, " 1 ETU = %u US (expect 9.43) " _GREEN_("ok"), ETU_TO_US(1)); - PrintAndLogEx(INFO, " 10 ETU = %u US (expect 94.39) " _GREEN_("ok"), ETU_TO_US(10)); - PrintAndLogEx(INFO, " 32 ETU = %u US (expect 302) " _GREEN_("ok"), ETU_TO_US(32)); + float test_us = ETU_TO_US(1); + PrintAndLogEx(INFO, " 1 ETU = %3.2f US (expect 9.44) %s", test_us, (test_us == 9.44) ? _GREEN_("ok") : _RED_("fail")); + test_us = ETU_TO_US(10); + PrintAndLogEx(INFO, " 10 ETU = %4.2f US (expect 94.40) %s", test_us, (test_us == 94.40) ? _GREEN_("ok") : _RED_("fail")); + test_us = ETU_TO_US(32); + PrintAndLogEx(INFO, " 32 ETU = %5.2f US (expect 302.06) %s", test_us, (test_us == 320.06) ? _GREEN_("ok") : _RED_("fail")); + + PrintAndLogEx(INFO, "ETU in %f us", ONE_ETU_IN_US); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "US to SSP CLK 3.39MHz conversions"); - PrintAndLogEx(INFO, " 9 US = %u SSP (expect 32) ", US_TO_SSP(9)); - PrintAndLogEx(INFO, " 10 US = %u SSP (expect 32 or 48) ", US_TO_SSP(10)); - PrintAndLogEx(INFO, " 94 US = %u SSP (expect 320) ", US_TO_SSP(94)); - PrintAndLogEx(INFO, " 95 US = %u SSP (expect 320 or 336) ", US_TO_SSP(95)); - PrintAndLogEx(INFO, " 302 US = %u SSP (expect 1024) ", US_TO_SSP(302)); + PrintAndLogEx(INFO, " 9 US = %i SSP (expect 32) ", US_TO_SSP(9)); + PrintAndLogEx(INFO, " 10 US = %i SSP (expect 32 or 48) ", US_TO_SSP(10)); + PrintAndLogEx(INFO, " 94 US = %i SSP (expect 320) ", US_TO_SSP(94)); + PrintAndLogEx(INFO, " 95 US = %i SSP (expect 320 or 336) ", US_TO_SSP(95)); + PrintAndLogEx(INFO, " 302 US = %i SSP (expect 1024) ", US_TO_SSP(302)); - PrintAndLogEx(INFO, " 4949000 US = %u SSP ", US_TO_SSP(4949000)); + PrintAndLogEx(INFO, " 4949000 US = %i SSP ", US_TO_SSP(4949000)); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "SSP CLK 3.39MHz to US conversions"); - PrintAndLogEx(INFO, " 32 SSP = %u US (expect 9 or 10) " _GREEN_("ok"), SSP_TO_US(32)); - PrintAndLogEx(INFO, " 320 SSP = %u US (expect 94 or 95) " _GREEN_("ok"), SSP_TO_US(320)); - PrintAndLogEx(INFO, "1024 SSP = %u US (expect 302) " _GREEN_("ok"), SSP_TO_US(1024)); + PrintAndLogEx(INFO, " 32 SSP = %i US (expect 9 or 10) " _GREEN_("ok"), SSP_TO_US(32)); + PrintAndLogEx(INFO, " 320 SSP = %i US (expect 94 or 95) " _GREEN_("ok"), SSP_TO_US(320)); + PrintAndLogEx(INFO, "1024 SSP = %i US (expect 302) " _GREEN_("ok"), SSP_TO_US(1024)); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "ETU to SSP CLK 3.39MHz conversions"); - PrintAndLogEx(INFO, " 1 ETU = %u SSP (expect 32) " _GREEN_("ok"), ETU_TO_SSP(1)); - PrintAndLogEx(INFO, " 10 ETU = %u SSP (expect 320) " _GREEN_("ok"), ETU_TO_SSP(10)); - PrintAndLogEx(INFO, " 32 ETU = %u SSP (expect 1024) " _GREEN_("ok"), ETU_TO_SSP(32)); + PrintAndLogEx(INFO, " 1 ETU = %i SSP (expect 32) " _GREEN_("ok"), ETU_TO_SSP(1)); + PrintAndLogEx(INFO, " 10 ETU = %i SSP (expect 320) " _GREEN_("ok"), ETU_TO_SSP(10)); + PrintAndLogEx(INFO, " 32 ETU = %i SSP (expect 1024) " _GREEN_("ok"), ETU_TO_SSP(32)); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "SSP CLK 3.39MHz to ETU conversions"); - PrintAndLogEx(INFO, "1024 SSP = %u ETU (expect 32) " _GREEN_("ok"), SSP_TO_ETU(1024)); - PrintAndLogEx(INFO, " 320 SSP = %u ETU (expect 10) " _GREEN_("ok"), SSP_TO_ETU(320)); - PrintAndLogEx(INFO, " 32 SSP = %u ETU (expect 1) " _GREEN_("ok"), SSP_TO_ETU(32)); + PrintAndLogEx(INFO, "1024 SSP = %i ETU (expect 32) " _GREEN_("ok"), SSP_TO_ETU(1024)); + PrintAndLogEx(INFO, " 320 SSP = %i ETU (expect 10) " _GREEN_("ok"), SSP_TO_ETU(320)); + PrintAndLogEx(INFO, " 32 SSP = %i ETU (expect 1) " _GREEN_("ok"), SSP_TO_ETU(32)); } else if (etu) { - PrintAndLogEx(INFO, " %d ETU = %u us ", ETU_TO_US(etu), 0); - PrintAndLogEx(INFO, " %d ETU = %u SSP ", ETU_TO_SSP(etu), 0); + PrintAndLogEx(INFO, " %i ETU = %u us ", ETU_TO_US(etu), 0); + PrintAndLogEx(INFO, " %i ETU = %u SSP ", ETU_TO_SSP(etu), 0); } else if (us) { - PrintAndLogEx(INFO, " %d us = %u ETU ", US_TO_ETU(us), 0); - PrintAndLogEx(INFO, " %d us = %u SSP ", US_TO_SSP(us), 0); + PrintAndLogEx(INFO, " %i us = %u ETU ", US_TO_ETU(us), 0); + PrintAndLogEx(INFO, " %i us = %u SSP ", US_TO_SSP(us), 0); } return PM3_SUCCESS; diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 2208a34d4..38ffba69c 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1759,7 +1759,7 @@ int getSamplesEx(uint32_t start, uint32_t end, bool verbose, bool ignore_lf_conf PrintAndLogEx(INFO, "Reading " _YELLOW_("%u") " bytes from device memory", n); PacketResponseNG resp; - if (!GetFromDevice(BIG_BUF, got, n, start, NULL, 0, &resp, 10000, true)) { + if (GetFromDevice(BIG_BUF, got, n, start, NULL, 0, &resp, 10000, true) == false) { PrintAndLogEx(WARNING, "timeout while waiting for reply."); return PM3_ETIMEOUT; } diff --git a/client/src/cmdhfthinfilm.c b/client/src/cmdhfthinfilm.c index 92c82f3f3..64b03a819 100644 --- a/client/src/cmdhfthinfilm.c +++ b/client/src/cmdhfthinfilm.c @@ -43,7 +43,7 @@ static int print_barcode(uint8_t *barcode, const size_t barcode_len, bool verbos if (verbose) { PrintAndLogEx(SUCCESS, " Data format : "_YELLOW_("%02X"), barcode[1]); if (barcode_len > 2) { - uint8_t b1, b2; + uint8_t b1 = 0, b2 = 0; compute_crc(CRC_14443_A, barcode, barcode_len - 2, &b1, &b2); bool isok = (barcode[barcode_len - 1] == b1 && barcode[barcode_len - 2] == b2); @@ -173,7 +173,7 @@ int CmdHfThinFilmSim(const char *Cmd) { CLIParserFree(ctx); if (addcrc && data_len <= 510) { - uint8_t b1, b2; + uint8_t b1 = 0, b2 = 0; compute_crc(CRC_14443_A, data, data_len, &b1, &b2); data[data_len++] = b2; data[data_len++] = b1; diff --git a/common/generator.c b/common/generator.c index 7cf5498e1..f0605f4ab 100644 --- a/common/generator.c +++ b/common/generator.c @@ -549,7 +549,7 @@ int mfdes_kdf_input_gallagher(uint8_t *uid, uint8_t uidLen, uint8_t keyNo, uint3 int mfc_generate4b_nuid(uint8_t *uid, uint8_t *nuid) { uint16_t crc; - uint8_t b1, b2; + uint8_t b1 = 0, b2 = 0; compute_crc(CRC_14443_A, uid, 3, &b1, &b2); nuid[0] = (b2 & 0xE0) | 0xF; From 2b3d33971447494422f8211f78a40aebc3da1f8d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 17:46:53 +0200 Subject: [PATCH 0344/1034] lto missing inits --- client/src/cmdlfindala.c | 2 +- client/src/comms.c | 2 +- common/generator.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/cmdlfindala.c b/client/src/cmdlfindala.c index 1af21ec20..ba1d14205 100644 --- a/client/src/cmdlfindala.c +++ b/client/src/cmdlfindala.c @@ -663,7 +663,7 @@ static int CmdIndalaSim(const char *Cmd) { bool fmt4041x = arg_get_lit(ctx, 5); - int32_t cardnumber; + int32_t cardnumber = 0; uint8_t fc = 0; uint16_t cn = 0; bool got_cn = false, got_26 = false; diff --git a/client/src/comms.c b/client/src/comms.c index 59c1cd1cf..68f8f9631 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -156,7 +156,7 @@ static void SendCommandNG_internal(uint16_t cmd, uint8_t *data, size_t len, bool memcpy(&txBufferNG.data, data, len); if ((g_conn.send_via_fpc_usart && g_conn.send_with_crc_on_fpc) || ((!g_conn.send_via_fpc_usart) && g_conn.send_with_crc_on_usb)) { - uint8_t first, second; + uint8_t first = 0, second = 0; compute_crc(CRC_14443_A, (uint8_t *)&txBufferNG, sizeof(PacketCommandNGPreamble) + len, &first, &second); tx_post->crc = (first << 8) + second; } else { diff --git a/common/generator.c b/common/generator.c index f0605f4ab..20f8a0b5f 100644 --- a/common/generator.c +++ b/common/generator.c @@ -173,7 +173,7 @@ uint32_t ul_ev1_pwdgenD(const uint8_t *uid) { // AIR purifier Xiaomi uint32_t ul_ev1_pwdgenE(const uint8_t *uid) { - uint8_t hash[20]; + uint8_t hash[20] = {0}; mbedtls_sha1(uid, 7, hash); uint32_t pwd = 0; pwd |= (hash[ hash[0] % 20 ]) << 24 ; @@ -185,7 +185,7 @@ uint32_t ul_ev1_pwdgenE(const uint8_t *uid) { // NDEF tools format password generator uint32_t ul_ev1_pwdgenF(const uint8_t *uid) { - uint8_t hash[16]; + uint8_t hash[16] = {0};; mbedtls_md5(uid, 7, hash); uint32_t pwd = 0; pwd |= hash[0] << 24; From 8f2b71ffc4a9f512a70cc014a53b0b99b91dcfbb Mon Sep 17 00:00:00 2001 From: "Rick Farina (Zero_Chaos)" Date: Wed, 2 Aug 2023 13:00:32 -0400 Subject: [PATCH 0345/1034] fix parallel build for proxguiqt.moc.cpp seed shuffle=2866679623 found that proxguiqt.moc.cpp also needs the same header so just defining the header and defining it's needs should make everyone happy --- client/Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/Makefile b/client/Makefile index b79d248bb..e86d8d10e 100644 --- a/client/Makefile +++ b/client/Makefile @@ -781,12 +781,14 @@ proxmark3: $(OBJS) $(STATICLIBS) lualibs/pm3_cmd.lua lualibs/mfc_default_keys.lu src/proxgui.cpp: src/ui/ui_overlays.h src/ui/ui_image.h -src/proxguiqt.cpp: src/ui/ui_overlays.h src/ui/ui_image.h +src/proxguiqt.cpp: src/proxguiqt.h src/proxguiqt.moc.cpp: src/proxguiqt.h $(info [-] MOC $@) $(Q)$(MOC) -o$@ $^ +src/proxguiqt.h: src/ui/ui_overlays.h src/ui/ui_image.h + src/ui/ui_overlays.h: src/ui/overlays.ui $(info [-] UIC $@) $(Q)$(UIC) $^ > $@ From ce741d3b44496d7fe46ed95adf30f45c752c6d90 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 19:12:59 +0200 Subject: [PATCH 0346/1034] defines --- include/iso14b.h | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/include/iso14b.h b/include/iso14b.h index 88ba0c2be..a9b55e69c 100644 --- a/include/iso14b.h +++ b/include/iso14b.h @@ -65,13 +65,17 @@ typedef struct { } PACKED iso14b_raw_cmd_t; -#define US_TO_SSP(x) ( (uint32_t)((x) * 3.39) ) -#define SSP_TO_US(x) ( (uint32_t)((x) / 3.39) ) +#define US_TO_SSP(x) ( (int32_t)((x) * 3.39) ) +#define SSP_TO_US(x) ( (int32_t)((x) / 3.39) ) -#define ETU_TO_SSP(x) ((uint32_t)((x) * 32)) -#define SSP_TO_ETU(x) ((uint32_t)((x) / 32)) +#define ETU_TO_SSP(x) ( (int32_t)((x) * 32) ) +#define SSP_TO_ETU(x) ( (int32_t)((x) / 32) ) -#define ETU_TO_US(x) ((uint32_t)((((x) * 9440000) / 1000000) + 0.5)) -#define US_TO_ETU(x) ((uint32_t)(((x) * 1000000 / 9440000) + 0.5)) +#define ONE_ETU_IN_US (12800000.0 / 1356000.0) +#define ETU_TO_US(x) (float)(ONE_ETU_IN_US * (x)) + +// #define ETU_TO_US(x) ( (int32_t)( ((x) * 9440000) / 1000000) ) +#define US_TO_ETU(x) ( (int32_t)( ((x) * 1000000) / 9440000) ) #endif // _ISO14B_H_ + From 1c35f14c760fe308606f19ed56fcf8f28a2bcb2e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 19:49:26 +0200 Subject: [PATCH 0347/1034] thanks @DidierA for the sharp eyes --- client/src/atrs.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/client/src/atrs.c b/client/src/atrs.c index 0b22eb79b..d8f11587f 100644 --- a/client/src/atrs.c +++ b/client/src/atrs.c @@ -18,8 +18,8 @@ #include "atrs.h" #include #include -#include "commonutil.h" // ARRAYLEN -#include "ui.h" // PrintAndLogEx +#include "commonutil.h" // ARRAYLEN +#include "ui.h" // PrintAndLogEx // get a ATR description based on the atr bytes // returns description of the best match @@ -32,7 +32,7 @@ const char *getAtrInfo(const char *atr_str) { if (strlen(AtrTable[i].bytes) != slen) continue; - if (strstr(AtrTable[i].bytes, "..") != NULL) { + if (strstr(AtrTable[i].bytes, ".") != NULL) { char *tmp_atr = calloc(slen, sizeof(uint8_t)); if (tmp_atr == NULL) { PrintAndLogEx(FAILED, "failed to allocate memory"); @@ -40,7 +40,7 @@ const char *getAtrInfo(const char *atr_str) { } for (int j = 0; j < slen; j++) { - tmp_atr[j] = AtrTable[i].bytes[j] == '.' ? '.' : atr_str[j]; + tmp_atr[j] = (AtrTable[i].bytes[j] == '.') ? '.' : atr_str[j]; } if (strncmp(tmp_atr, AtrTable[i].bytes, slen) == 0) { @@ -50,9 +50,12 @@ const char *getAtrInfo(const char *atr_str) { free(tmp_atr); } else { - if (strncmp(atr_str, AtrTable[i].bytes, slen) == 0) return AtrTable[i].desc; + if (strncmp(atr_str, AtrTable[i].bytes, slen) == 0) { + return AtrTable[i].desc; + } } } + if (match >= 0) { return AtrTable[match].desc; } else { From 1e26d79ddd9e556f7b81924ff9951e71bf5f13cb Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 19:50:47 +0200 Subject: [PATCH 0348/1034] added a new command to lookup ATR arrays --- client/src/cmddata.c | 51 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 38ffba69c..0b38689b8 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -38,6 +38,7 @@ #include "mbedtls/bignum.h" // big num #include "mbedtls/entropy.h" // #include "mbedtls/ctr_drbg.h" // random generator +#include "atrs.h" // ATR lookup uint8_t g_DemodBuffer[MAX_DEMOD_BUF_LEN]; size_t g_DemodBufferLen = 0; @@ -3411,6 +3412,51 @@ static int CmdEnvelope(const char *Cmd) { return PM3_SUCCESS; } +static int CmdAtrLookup(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "data atr", + "look up ATR record from bytearray\n" + "", + "data atr -d 3B6B00000031C064BE1B0100079000\n" + ); + + void *argtable[] = { + arg_param_begin, + arg_str0("d", NULL, "", "ASN1 encoded byte array"), + arg_lit0("t", "test", "perform selftest"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + int dlen = 64; + uint8_t data[64]; + CLIGetHexWithReturn(ctx, 1, data, &dlen); +// bool selftest = arg_get_lit(ctx, 2); + CLIParserFree(ctx); +// if (selftest) { +// return atr_selftest(); +// } + // convert bytes to str. + char *hexstr = calloc((dlen << 1) + 1, sizeof(uint8_t)); + if (hexstr == NULL) { + PrintAndLogEx(WARNING, "failed to allocate memory"); + return PM3_EMALLOC; + } + hex_to_buffer((uint8_t *)hexstr, data, dlen, (dlen << 1), 0, 0, true); + + PrintAndLogEx(INFO, "ISO7816-3 ATR... " _YELLOW_("%s"), sprint_hex(data, dlen)); + PrintAndLogEx(INFO, "Fingerprint..."); + + char *copy = str_dup(getAtrInfo(hexstr)); + + char * token = strtok(copy, "\n"); + while ( token != NULL ) { + PrintAndLogEx(INFO, " %s", token); + token = strtok(NULL, "\n"); + } + free(copy); + return PM3_SUCCESS; +} + static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, @@ -3449,11 +3495,12 @@ static command_t CommandTable[] = { {"getbitstream", CmdGetBitStream, AlwaysAvailable, "Convert GraphBuffer's >=1 values to 1 and <1 to 0"}, {"-----------", CmdHelp, AlwaysAvailable, "------------------------- " _CYAN_("General") "-------------------------"}, - {"asn1", CmdAsn1Decoder, AlwaysAvailable, "asn1 decoder"}, + {"asn1", CmdAsn1Decoder, AlwaysAvailable, "ASN1 decoder"}, + {"atr", CmdAtrLookup, AlwaysAvailable, "ATR lookup"}, {"bin2hex", Cmdbin2hex, AlwaysAvailable, "Converts binary to hexadecimal"}, {"bitsamples", CmdBitsamples, IfPm3Present, "Get raw samples as bitstring"}, {"clear", CmdBuffClear, AlwaysAvailable, "Clears bigbuf on deviceside and graph window"}, - {"diff", CmdDiff, AlwaysAvailable, "diff of input files"}, + {"diff", CmdDiff, AlwaysAvailable, "Diff of input files"}, {"hexsamples", CmdHexsamples, IfPm3Present, "Dump big buffer as hex bytes"}, {"hex2bin", Cmdhex2bin, AlwaysAvailable, "Converts hexadecimal to binary"}, {"load", CmdLoad, AlwaysAvailable, "Load contents of file into graph window"}, From d6a0f8edace2afb808f13bf9673133dd8b50a707 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 19:56:29 +0200 Subject: [PATCH 0349/1034] use string instead --- client/src/cmddata.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 0b38689b8..4507b19bd 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3427,26 +3427,19 @@ static int CmdAtrLookup(const char *Cmd) { arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); - int dlen = 64; - uint8_t data[64]; - CLIGetHexWithReturn(ctx, 1, data, &dlen); + int dlen = 128; + uint8_t data[128 + 1]; + CLIGetStrWithReturn(ctx, 1, data, &dlen); + // bool selftest = arg_get_lit(ctx, 2); CLIParserFree(ctx); // if (selftest) { // return atr_selftest(); // } - // convert bytes to str. - char *hexstr = calloc((dlen << 1) + 1, sizeof(uint8_t)); - if (hexstr == NULL) { - PrintAndLogEx(WARNING, "failed to allocate memory"); - return PM3_EMALLOC; - } - hex_to_buffer((uint8_t *)hexstr, data, dlen, (dlen << 1), 0, 0, true); - - PrintAndLogEx(INFO, "ISO7816-3 ATR... " _YELLOW_("%s"), sprint_hex(data, dlen)); + PrintAndLogEx(INFO, "ISO7816-3 ATR... " _YELLOW_("%s"), data); PrintAndLogEx(INFO, "Fingerprint..."); - char *copy = str_dup(getAtrInfo(hexstr)); + char *copy = str_dup(getAtrInfo((char*)data)); char * token = strtok(copy, "\n"); while ( token != NULL ) { From 3fd8be2a47d0d1506828a76a8b51c88c228ccce0 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Wed, 2 Aug 2023 22:13:05 +0200 Subject: [PATCH 0350/1034] Avoid some unneeded rebuild and fix parallel call to fw rebuild when calling from install --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index be4af6682..1643881f8 100644 --- a/Makefile +++ b/Makefile @@ -39,7 +39,7 @@ INSTALLSCRIPTS=pm3 pm3-flash pm3-flash-all pm3-flash-bootrom pm3-flash-fullimage INSTALLSHARES=tools/jtag_openocd traces INSTALLDOCS=doc/*.md doc/md -install: all common/install +install: common/install common/install: $(info [@] Installing common resources to $(MYDESTDIR)$(PREFIX)...) @@ -170,7 +170,7 @@ client/%: FORCE cleanifplatformchanged $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C client $(patsubst client/%,%,$@) DESTDIR=$(MYDESTDIR) recovery/all: bootrom/all armsrc/all -recovery/install: bootrom/all armsrc/all +recovery/install: bootrom/install armsrc/install recovery/%: FORCE cleanifplatformchanged $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C recovery $(patsubst recovery/%,%,$@) DESTDIR=$(MYDESTDIR) From 5b58e438b168f747db79690cd60e9e18ec77c7ef Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 22:41:35 +0200 Subject: [PATCH 0351/1034] style --- client/src/cmddata.c | 6 ++--- client/src/pm3line_vocabulory.h | 1 + doc/commands.json | 42 +++++++++++++++++++++++---------- doc/commands.md | 5 ++-- 4 files changed, 36 insertions(+), 18 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 4507b19bd..5c1948c14 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3439,10 +3439,10 @@ static int CmdAtrLookup(const char *Cmd) { PrintAndLogEx(INFO, "ISO7816-3 ATR... " _YELLOW_("%s"), data); PrintAndLogEx(INFO, "Fingerprint..."); - char *copy = str_dup(getAtrInfo((char*)data)); + char *copy = str_dup(getAtrInfo((char *)data)); - char * token = strtok(copy, "\n"); - while ( token != NULL ) { + char *token = strtok(copy, "\n"); + while (token != NULL) { PrintAndLogEx(INFO, " %s", token); token = strtok(NULL, "\n"); } diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index 4168a0800..40d2bcc29 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -102,6 +102,7 @@ const static vocabulory_t vocabulory[] = { { 1, "data convertbitstream" }, { 1, "data getbitstream" }, { 1, "data asn1" }, + { 1, "data atr" }, { 1, "data bin2hex" }, { 0, "data bitsamples" }, { 1, "data clear" }, diff --git a/doc/commands.json b/doc/commands.json index c03e4c80a..858cc02cd 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -140,15 +140,17 @@ "command": "analyse units", "description": "experiments of unit conversions found in HF. ETU (1/13.56mhz), US or SSP_CLK (1/3.39MHz)", "notes": [ - "analyse uints --etu 10analyse uints --us 100" + "analyse uints --etu 10", + "analyse uints --us 100" ], "offline": true, "options": [ "-h, --help This help", "--etu number in ETU", - "--us number in micro seconds (us)" + "--us number in micro seconds (us)", + "-t, --selftest self tests" ], - "usage": "analyse units [-h] [--etu ] [--us ]" + "usage": "analyse units [-ht] [--etu ] [--us ]" }, "auto": { "command": "auto", @@ -204,6 +206,20 @@ ], "usage": "data asn1 [-ht] [-d ]" }, + "data atr": { + "command": "data atr", + "description": "look up ATR record from bytearray", + "notes": [ + "data atr -d 3B6B00000031C064BE1B0100079000" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-d ASN1 encoded byte array", + "-t, --test perform selftest" + ], + "usage": "data atr [-ht] [-d ]" + }, "data autocorr": { "command": "data autocorr", "description": "Autocorrelate over window is used to detect repeating sequences. We use it as detection of how long in bits a message inside the signal is", @@ -1170,7 +1186,7 @@ }, "hf 14a list": { "command": "hf 14a list", - "description": "Alias of `trace list -t 14a` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t 14a -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf 14a list --frame -> show frame delay times", "hf 14a list -1 -> use trace buffer" @@ -3166,7 +3182,7 @@ }, "hf iclass list": { "command": "hf iclass list", - "description": "Alias of `trace list -t iclass` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t iclass -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf iclass list --frame -> show frame delay times", "hf iclass list -1 -> use trace buffer" @@ -3836,7 +3852,7 @@ }, "hf lto list": { "command": "hf lto list", - "description": "Alias of `trace list -t lto` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t lto -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf lto list --frame -> show frame delay times", "hf lto list -1 -> use trace buffer" @@ -4591,7 +4607,7 @@ }, "hf mf list": { "command": "hf mf list", - "description": "Alias of `trace list -t mf` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t mf -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf mf list --frame -> show frame delay times", "hf mf list -1 -> use trace buffer" @@ -5803,7 +5819,7 @@ }, "hf mfdes list": { "command": "hf mfdes list", - "description": "Alias of `trace list -t des` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t des -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf mfdes list --frame -> show frame delay times", "hf mfdes list -1 -> use trace buffer" @@ -6216,7 +6232,7 @@ }, "hf mfp list": { "command": "hf mfp list", - "description": "Alias of `trace list -t mfp` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t mfp -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf mfp list --frame -> show frame delay times", "hf mfp list -1 -> use trace buffer" @@ -6494,7 +6510,7 @@ }, "hf mfu list": { "command": "hf mfu list", - "description": "Alias of `trace list -t 14a` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t 14a -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf 14a list --frame -> show frame delay times", "hf 14a list -1 -> use trace buffer" @@ -7064,7 +7080,7 @@ }, "hf topaz list": { "command": "hf topaz list", - "description": "Alias of `trace list -t topaz` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t topaz -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf topaz list --frame -> show frame delay times", "hf topaz list -1 -> use trace buffer" @@ -11803,8 +11819,8 @@ } }, "metadata": { - "commands_extracted": 684, + "commands_extracted": 685, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-27T21:41:37" + "extracted_on": "2023-08-02T20:39:48" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 7a8476a6c..27d6a05b4 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -120,11 +120,12 @@ Check column "offline" for their availability. |`data zerocrossings `|Y |`Count time between zero-crossings` |`data convertbitstream `|Y |`Convert GraphBuffer's 0/1 values to 127 / -127` |`data getbitstream `|Y |`Convert GraphBuffer's >=1 values to 1 and <1 to 0` -|`data asn1 `|Y |`asn1 decoder` +|`data asn1 `|Y |`ASN1 decoder` +|`data atr `|Y |`ATR lookup` |`data bin2hex `|Y |`Converts binary to hexadecimal` |`data bitsamples `|N |`Get raw samples as bitstring` |`data clear `|Y |`Clears bigbuf on deviceside and graph window` -|`data diff `|Y |`diff of input files` +|`data diff `|Y |`Diff of input files` |`data hexsamples `|N |`Dump big buffer as hex bytes` |`data hex2bin `|Y |`Converts hexadecimal to binary` |`data load `|Y |`Load contents of file into graph window` From fd987ab8a2ca486a68b3b832d62e19b0c4ddbfa5 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 23:47:25 +0200 Subject: [PATCH 0352/1034] fix string formatter --- CHANGELOG.md | 2 ++ client/src/cmdanalyse.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dd92a393..5a5ca1b7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `data atr` - a command to lookup ATR (@iceman1001) + - Fixed bug in ATR lookup fct, thanks @DidierA (@iceman1001) - Updated ATR list (@iceman1001) - Changed `mem load -m` - now correctly erase all allocated flash memory (@iceman1001) - Fixed emulator quick dump to handle MFC Ev1 extra sectors (@iceman100) diff --git a/client/src/cmdanalyse.c b/client/src/cmdanalyse.c index 3713befb5..bab54f3da 100644 --- a/client/src/cmdanalyse.c +++ b/client/src/cmdanalyse.c @@ -1156,7 +1156,7 @@ static int CmdAnalyseUnits(const char *Cmd) { PrintAndLogEx(INFO, " 32 SSP = %i ETU (expect 1) " _GREEN_("ok"), SSP_TO_ETU(32)); } else if (etu) { - PrintAndLogEx(INFO, " %i ETU = %u us ", ETU_TO_US(etu), 0); + PrintAndLogEx(INFO, " %3.2f ETU = %u us ", ETU_TO_US(etu), 0); PrintAndLogEx(INFO, " %i ETU = %u SSP ", ETU_TO_SSP(etu), 0); } else if (us) { PrintAndLogEx(INFO, " %i us = %u ETU ", US_TO_ETU(us), 0); From 9dfc39dbbf75d85a148647c1df5af649c1dc9c98 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 3 Aug 2023 00:37:05 +0200 Subject: [PATCH 0353/1034] Fix error=missing-field-initializers when compiling repo default_version_pm3.c --- common/default_version_pm3.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/common/default_version_pm3.c b/common/default_version_pm3.c index 46eac57c9..d93a7ef15 100644 --- a/common/default_version_pm3.c +++ b/common/default_version_pm3.c @@ -26,5 +26,7 @@ const struct version_information_t SECTVERSINFO g_version_information = { 1, /* version 1 */ 0, /* version information not present */ 2, /* cleanliness couldn't be determined */ - /* Remaining fields: zero */ + "Iceman/master/unknown", + "1970-01-01 00:00:00", + "no sha256" }; From cb72897b17019fc565cac87f9578809efdf66611 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 3 Aug 2023 00:42:08 +0200 Subject: [PATCH 0354/1034] `mkversion.sh`: now regenerates version_pm3.c (and consequently the binaries) only when needed and add --force to forcibly regenerate version_pm3.c and small fixes: * document mkversion.sh usage * remove call to mkversion.sh in client/experimental_lib/CMakeLists.txt on release * remove call to old `mkversion.pl` in bootrom/Makefile * just in case, mkversion.sh takes care of atomic write of the file --- CHANGELOG.md | 1 + Makefile | 4 +-- armsrc/Makefile | 6 ++-- bootrom/Makefile | 6 ++-- client/CMakeLists.txt | 2 +- client/Makefile | 6 ++-- client/experimental_lib/CMakeLists.txt | 2 +- tools/mkversion.sh | 49 ++++++++++++++++++++++++-- 8 files changed, 61 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dd92a393..21e6a7026 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `mkversion.sh` - now regenerates version_pm3.c (and consequently the binaries) only when needed (@doegox) - Updated ATR list (@iceman1001) - Changed `mem load -m` - now correctly erase all allocated flash memory (@iceman1001) - Fixed emulator quick dump to handle MFC Ev1 extra sectors (@iceman100) diff --git a/Makefile b/Makefile index 1643881f8..436201bdd 100644 --- a/Makefile +++ b/Makefile @@ -370,10 +370,10 @@ release: # - Tagging temporarily... @git tag -a -m "Release $(VERSION) - $(RELEASE_NAME)" $(VERSION) # - Changing default version information based on new tag - @$(SH) tools/mkversion.sh > common/default_version_pm3.c.tmp && $(MV) common/default_version_pm3.c.tmp common/default_version_pm3.c + @$(SH) tools/mkversion.sh common/default_version_pm3.c # - Removing mkversion calls @sed -i 's#^.*\.\./tools/mkversion.sh.*|| #\t$$(Q)#' client/Makefile bootrom/Makefile armsrc/Makefile - @sed -i '/COMMAND/s/sh .*|| //' client/CMakeLists.txt + @sed -i '/COMMAND/s/sh .*|| //' client/CMakeLists.txt client/experimental_lib/CMakeLists.txt # - Deleting tag... @git tag -d $(VERSION) # - Amending commit... diff --git a/armsrc/Makefile b/armsrc/Makefile index c481a6f22..fe34c8a8f 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -181,10 +181,10 @@ showinfo: .DELETE_ON_ERROR: -# version_pm3.c should be remade on every time fullimage.stage1.elf should be remade +# version_pm3.c should be checked on every time fullimage.stage1.elf should be remade version_pm3.c: default_version_pm3.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) .FORCE - $(info [-] GEN $@) - $(Q)$(SH) ../tools/mkversion.sh > $@ || $(CP) $< $@ + $(info [-] CHECK $@) + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR) $(info [-] GEN $@) diff --git a/bootrom/Makefile b/bootrom/Makefile index cad3e17d1..b6825530d 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -53,10 +53,10 @@ INSTALLFW = $(OBJDIR)/bootrom.elf OBJS = $(OBJDIR)/bootrom.s19 -# version_pm3.c should be remade on every compilation +# version_pm3.c should be checked on every compilation version_pm3.c: default_version_pm3.c .FORCE - $(info [=] GEN $@) - $(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ || $(CP) $< $@ + $(info [=] CHECK $@) + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ all: showinfo $(OBJS) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index be4e00a93..cbbedef73 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -397,7 +397,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND sh ${PM3_ROOT}/tools/mkversion.sh > ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) diff --git a/client/Makefile b/client/Makefile index e86d8d10e..0444b5932 100644 --- a/client/Makefile +++ b/client/Makefile @@ -918,10 +918,10 @@ src/pm3_pywrap.c: pm3.i .PHONY: all clean install uninstall tarbin .FORCE -# version_pm3.c should be remade on every compilation +# version_pm3.c should be checked on every compilation src/version_pm3.c: default_version_pm3.c .FORCE - $(info [=] GEN $@) - $(Q)$(SH) ../tools/mkversion.sh > $@ || $(CP) $< $@ + $(info [=] CHECK $@) + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index cec361446..73ec65aad 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -397,7 +397,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND sh ${PM3_ROOT}/tools/mkversion.sh > ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) diff --git a/tools/mkversion.sh b/tools/mkversion.sh index f741f2980..dd95e0441 100755 --- a/tools/mkversion.sh +++ b/tools/mkversion.sh @@ -1,5 +1,13 @@ #!/usr/bin/env sh +if [ "$1" = "--help" ] || [ "$1" = "-h" ] || [ "$1" = "" ]; then + echo "To report a short string about the current version:" + echo " $0 --short" + echo "To regenerate version_pm3.c if needed:" + echo " $0 [--force] [--undecided] path/to/version_pm3.c" + exit 0 +fi + # Output a version_pm3.c file that includes information about the current build # From mkversion.pl # pure sh POSIX as now even on Windows we use WSL or ProxSpace with sh available @@ -13,6 +21,27 @@ if [ "$1" = "--short" ]; then SHORT=true shift fi +FORCE=false +if [ "$1" = "--force" ]; then + FORCE=true + shift +fi +UNDECIDED=false +if [ "$1" = "--undecided" ]; then + UNDECIDED=true + shift +fi +VERSIONSRC="$1" + +if ! $SHORT && [ "$VERSIONSRC" = "" ]; then + echo "Error: $0 is missing its destination filename" + exit 1 +fi + +if $SHORT && [ "$VERSIONSRC" != "" ]; then + echo "Error: can't output a short string and generate file at the same time" + exit 1 +fi # if you are making your own fork, change this line to reflect your fork-name fullgitinfo="Iceman" @@ -27,7 +56,7 @@ if [ "$commandGIT" != "" ]; then # now avoiding the "fatal: No names found, cannot describe anything." error by fallbacking to abbrev hash in such case gitversion=$(git describe --dirty --always) gitbranch=$(git rev-parse --abbrev-ref HEAD) - if [ "$1" != "--undecided" ]; then + if $UNDECIDED; then if [ "$gitversion" != "${gitversion%-dirty}" ]; then clean=0 else @@ -68,7 +97,21 @@ sha=$( if [ "$sha" = "" ]; then sha="no sha256" fi -cat < "${VERSIONSRC}.tmp" < Date: Thu, 3 Aug 2023 01:13:57 +0200 Subject: [PATCH 0355/1034] make release: add --force to call to mkversion.sh. Not strictly needed but cleaner... --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 436201bdd..9a3ae0611 100644 --- a/Makefile +++ b/Makefile @@ -370,7 +370,7 @@ release: # - Tagging temporarily... @git tag -a -m "Release $(VERSION) - $(RELEASE_NAME)" $(VERSION) # - Changing default version information based on new tag - @$(SH) tools/mkversion.sh common/default_version_pm3.c + @$(SH) tools/mkversion.sh --force common/default_version_pm3.c # - Removing mkversion calls @sed -i 's#^.*\.\./tools/mkversion.sh.*|| #\t$$(Q)#' client/Makefile bootrom/Makefile armsrc/Makefile @sed -i '/COMMAND/s/sh .*|| //' client/CMakeLists.txt client/experimental_lib/CMakeLists.txt From a2ea5e3a24b61e9907dc91a057fde328ac9ed42b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 3 Aug 2023 07:43:30 +0200 Subject: [PATCH 0356/1034] since mkversion doesn generate all the time and only writes to file the sha256, we check the string from --short instead --- tools/pm3_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 68d522ed6..434468147 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -250,7 +250,7 @@ while true; do if ! CheckExecute "findbits_test test" "tools/findbits_test.py 2>&1" "OK"; then break; fi if ! CheckExecute "pm3_eml_mfd test" "tools/pm3_eml_mfd_test.py 2>&1" "OK"; then break; fi if ! CheckExecute "recover_pk test" "tools/recover_pk.py selftests 2>&1" "Tests:.*\[OK\]"; then break; fi - if ! CheckExecute "mkversion sha256 test" "tools/mkversion.sh" '"[0-9a-f]{9}"'; then break; fi + if ! CheckExecute "mkversion create test" "tools/mkversion.sh --short" 'Iceman/'; then break; fi fi if $TESTALL || $TESTBOOTROM; then echo -e "\n${C_BLUE}Testing bootrom:${C_NC}" From 24a138eeb1143c93f839f962cc3e8d8716637563 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 3 Aug 2023 08:41:11 +0200 Subject: [PATCH 0357/1034] fix some potential empty responses and too much inline calls --- client/deps/hardnested/hardnested_bf_core.c | 2 +- client/deps/hardnested/hardnested_bruteforce.c | 2 +- client/src/cmdlf.c | 11 +++++++++++ client/src/cmdlfem4x50.c | 17 +++++++++++++++-- client/src/comms.c | 8 ++++---- 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/client/deps/hardnested/hardnested_bf_core.c b/client/deps/hardnested/hardnested_bf_core.c index 63eba8eba..a84ce0df9 100644 --- a/client/deps/hardnested/hardnested_bf_core.c +++ b/client/deps/hardnested/hardnested_bf_core.c @@ -371,7 +371,7 @@ uint64_t CRACK_STATES_BITSLICED(uint32_t cuid, uint8_t *best_first_bytes, statel for (uint32_t tests = 0; tests < nonces_to_bruteforce; ++tests) { // common bits with preceding test nonce uint32_t common_bits = next_common_bits; //tests ? trailing_zeros(bf_test_nonce_2nd_byte[tests] ^ bf_test_nonce_2nd_byte[tests-1]) : 0; - next_common_bits = tests < nonces_to_bruteforce - 1 ? trailing_zeros(bf_test_nonce_2nd_byte[tests] ^ bf_test_nonce_2nd_byte[tests + 1]) : 0; + next_common_bits = (tests < nonces_to_bruteforce - 1) ? trailing_zeros(bf_test_nonce_2nd_byte[tests] ^ bf_test_nonce_2nd_byte[tests + 1]) : 0; uint32_t parity_bit_idx = 1; // start checking with the parity of second nonce byte bitslice_value_t fb_bits = fbb[common_bits]; // start with precomputed feedback bits from previous nonce bitslice_value_t ks_bits = ksb[common_bits]; // dito for first keystream bits diff --git a/client/deps/hardnested/hardnested_bruteforce.c b/client/deps/hardnested/hardnested_bruteforce.c index 6bc400d1d..e4b203f4d 100644 --- a/client/deps/hardnested/hardnested_bruteforce.c +++ b/client/deps/hardnested/hardnested_bruteforce.c @@ -96,7 +96,7 @@ static uint32_t keys_found = 0; static uint64_t num_keys_tested; static uint64_t found_bs_key = 0; -inline uint8_t trailing_zeros(uint8_t byte) { +uint8_t trailing_zeros(uint8_t byte) { static const uint8_t trailing_zeros_LUT[256] = { 8, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 81ca3a081..87095631b 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -382,6 +382,17 @@ int CmdLFCommandRead(const char *Cmd) { SendCommandNG(CMD_LF_MOD_THEN_ACQ_RAW_ADC, (uint8_t *)&payload, PAYLOAD_HEADER_SIZE + cmd_len); PacketResponseNG resp; + // init to ZERO + resp.cmd = 0, + resp.length = 0, + resp.magic = 0, + resp.status = 0, + resp.crc = 0, + resp.ng = false, + resp.oldarg[0] = 0; + resp.oldarg[1] = 0; + resp.oldarg[2] = 0; + memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); i = 10; // 20sec wait loop diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index 09aeb8e84..c81767c7a 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -1230,9 +1230,22 @@ int CmdEM4x50Sim(const char *Cmd) { clearCommandBuffer(); SendCommandNG(CMD_LF_EM4X50_SIM, (uint8_t *)&password, sizeof(password)); - PacketResponseNG resp; - + PrintAndLogEx(INFO, "Press " _GREEN_("") " or pm3-button to abort simulation"); + + PacketResponseNG resp; + // init to ZERO + resp.cmd = 0, + resp.length = 0, + resp.magic = 0, + resp.status = 0, + resp.crc = 0, + resp.ng = false, + resp.oldarg[0] = 0; + resp.oldarg[1] = 0; + resp.oldarg[2] = 0; + memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); + bool keypress; do { keypress = kbd_enter_pressed(); diff --git a/client/src/comms.c b/client/src/comms.c index 68f8f9631..a7ed0fd06 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -742,10 +742,6 @@ static size_t communication_delay(void) { bool WaitForResponseTimeoutW(uint32_t cmd, PacketResponseNG *response, size_t ms_timeout, bool show_warning) { PacketResponseNG resp; - if (response == NULL) { - response = &resp; - } - // init to ZERO resp.cmd = 0, resp.length = 0, @@ -758,6 +754,10 @@ bool WaitForResponseTimeoutW(uint32_t cmd, PacketResponseNG *response, size_t ms resp.oldarg[2] = 0; memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); + if (response == NULL) { + response = &resp; + } + // Add delay depending on the communication channel & speed if (ms_timeout != (size_t) - 1) ms_timeout += communication_delay(); From 0e84860c2f0331d83a555c60373346ae73728da0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 3 Aug 2023 08:42:52 +0200 Subject: [PATCH 0358/1034] less inline calls --- client/deps/tinycbor/cborencoder.c | 10 +++++----- client/deps/tinycbor/cborparser.c | 8 ++++---- client/src/crypto/asn1dump.c | 2 +- common/commonutil.c | 20 ++++++++++---------- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/client/deps/tinycbor/cborencoder.c b/client/deps/tinycbor/cborencoder.c index 570319e67..ae034d727 100644 --- a/client/deps/tinycbor/cborencoder.c +++ b/client/deps/tinycbor/cborencoder.c @@ -232,21 +232,21 @@ static inline void put64(void *where, uint64_t v) { memcpy(where, &v, sizeof(v)); } -static inline bool would_overflow(CborEncoder *encoder, size_t len) { +static bool would_overflow(CborEncoder *encoder, size_t len) { ptrdiff_t remaining = (ptrdiff_t)encoder->end; remaining -= remaining ? (ptrdiff_t)encoder->data.ptr : encoder->data.bytes_needed; remaining -= (ptrdiff_t)len; return unlikely(remaining < 0); } -static inline void advance_ptr(CborEncoder *encoder, size_t n) { +static void advance_ptr(CborEncoder *encoder, size_t n) { if (encoder->end) encoder->data.ptr += n; else encoder->data.bytes_needed += n; } -static inline CborError append_to_buffer(CborEncoder *encoder, const void *data, size_t len) { +static CborError append_to_buffer(CborEncoder *encoder, const void *data, size_t len) { if (would_overflow(encoder, len)) { if (encoder->end != NULL) { len -= encoder->end - encoder->data.ptr; @@ -263,11 +263,11 @@ static inline CborError append_to_buffer(CborEncoder *encoder, const void *data, return CborNoError; } -static inline CborError append_byte_to_buffer(CborEncoder *encoder, uint8_t byte) { +static CborError append_byte_to_buffer(CborEncoder *encoder, uint8_t byte) { return append_to_buffer(encoder, &byte, 1); } -static inline CborError encode_number_no_update(CborEncoder *encoder, uint64_t ui, uint8_t shiftedMajorType) { +static CborError encode_number_no_update(CborEncoder *encoder, uint64_t ui, uint8_t shiftedMajorType) { /* Little-endian would have been so much more convenient here: * We could just write at the beginning of buf but append_to_buffer * only the necessary bytes. diff --git a/client/deps/tinycbor/cborparser.c b/client/deps/tinycbor/cborparser.c index 2dade3a0d..468fe5da2 100644 --- a/client/deps/tinycbor/cborparser.c +++ b/client/deps/tinycbor/cborparser.c @@ -142,19 +142,19 @@ * \endif */ -static inline uint16_t get16(const uint8_t *ptr) { +static uint16_t get16(const uint8_t *ptr) { uint16_t result; memcpy(&result, ptr, sizeof(result)); return cbor_ntohs(result); } -static inline uint32_t get32(const uint8_t *ptr) { +static uint32_t get32(const uint8_t *ptr) { uint32_t result; memcpy(&result, ptr, sizeof(result)); return cbor_ntohl(result); } -static inline uint64_t get64(const uint8_t *ptr) { +static uint64_t get64(const uint8_t *ptr) { uint64_t result; memcpy(&result, ptr, sizeof(result)); return cbor_ntohll(result); @@ -949,7 +949,7 @@ CborError cbor_value_calculate_string_length(const CborValue *value, size_t *len return _cbor_value_copy_string(value, NULL, len, NULL); } -static inline void prepare_string_iteration(CborValue *it) { +static void prepare_string_iteration(CborValue *it) { if (!cbor_value_is_length_known(it)) { /* chunked string: we're before the first chunk; * advance to the first chunk */ diff --git a/client/src/crypto/asn1dump.c b/client/src/crypto/asn1dump.c index 5fcabe20a..025e200ca 100644 --- a/client/src/crypto/asn1dump.c +++ b/client/src/crypto/asn1dump.c @@ -342,7 +342,7 @@ static void asn1_tag_dump_object_id(const struct tlv *tlv, const struct asn1_tag if (jsondesc) { PrintAndLogEx(NORMAL, " - %s" NOLF, jsondesc); } else { - const char *ppstr; + const char *ppstr = NULL; mbedtls_oid_get_attr_short_name(&asn1_buf, &ppstr); if (ppstr && strnlen(ppstr, 1)) { PrintAndLogEx(NORMAL, " (%s)", ppstr); diff --git a/common/commonutil.c b/common/commonutil.c index 2265c240c..07b55f1f9 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -160,32 +160,32 @@ uint64_t bytes_to_num(uint8_t *src, size_t len) { return num; } -inline uint16_t MemLeToUint2byte(const uint8_t *data) { - return (uint16_t)( +uint16_t MemLeToUint2byte(const uint8_t *data) { + return (uint16_t)((uint16_t) (data[1] << 8) + data[0] ); } -inline uint32_t MemLeToUint3byte(const uint8_t *data) { - return (uint32_t)( +uint32_t MemLeToUint3byte(const uint8_t *data) { + return (uint32_t)((uint32_t) (data[2] << 16) + (data[1] << 8) + data[0] ); } -inline uint32_t MemLeToUint4byte(const uint8_t *data) { - return (uint32_t)( +uint32_t MemLeToUint4byte(const uint8_t *data) { + return (uint32_t)((uint32_t) (data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0] ); } -inline uint16_t MemBeToUint2byte(const uint8_t *data) { - return (uint16_t)( +uint16_t MemBeToUint2byte(const uint8_t *data) { + return (uint16_t)((uint16_t) (data[0] << 8) + data[1] ); } -inline uint32_t MemBeToUint3byte(const uint8_t *data) { - return (uint32_t)( +uint32_t MemBeToUint3byte(const uint8_t *data) { + return (uint32_t)((uint32_t) (data[0] << 16) + (data[1] << 8) + data[2] ); } From eaf11127be3e1138782a57b924dc5212fb49e38b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 3 Aug 2023 12:55:06 +0200 Subject: [PATCH 0359/1034] since HF SEARCH triggers multiple swaps of FPGA image HF -> HF 15 -> HF FELICA , its better to have relevant checks when the correct fpga image is loaded --- client/src/cmdhf.c | 78 ++++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 37 deletions(-) diff --git a/client/src/cmdhf.c b/client/src/cmdhf.c index b5cff4e19..ef94adf41 100644 --- a/client/src/cmdhf.c +++ b/client/src/cmdhf.c @@ -113,24 +113,6 @@ int CmdHFSearch(const char *Cmd) { } } - PROMPT_CLEARLINE; - PrintAndLogEx(INPLACE, " Searching for ISO15693 tag..."); - if (IfPm3Iso15693()) { - if (readHF15Uid(false, false)) { - PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 15693 tag") " found\n"); - res = PM3_SUCCESS; - } - } - - PROMPT_CLEARLINE; - PrintAndLogEx(INPLACE, " Searching for iCLASS / PicoPass tag..."); - if (IfPm3Iclass()) { - if (read_iclass_csn(false, false, false) == PM3_SUCCESS) { - PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("iCLASS tag / PicoPass tag") " found\n"); - res = PM3_SUCCESS; - } - } - PROMPT_CLEARLINE; PrintAndLogEx(INPLACE, " Searching for LEGIC tag..."); if (IfPm3Legicrf()) { @@ -149,25 +131,6 @@ int CmdHFSearch(const char *Cmd) { } } - // 14b is the longest test - PROMPT_CLEARLINE; - PrintAndLogEx(INPLACE, " Searching for ISO14443-B tag..."); - if (IfPm3Iso14443b()) { - if (readHF14B(false, false) == PM3_SUCCESS) { - PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 14443-B tag") " found\n"); - res = PM3_SUCCESS; - } - } - - PROMPT_CLEARLINE; - PrintAndLogEx(INPLACE, " Searching for FeliCa tag..."); - if (IfPm3Felica()) { - if (read_felica_uid(false, false) == PM3_SUCCESS) { - PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 18092 / FeliCa tag") " found\n"); - res = PM3_SUCCESS; - } - } - // texkom PROMPT_CLEARLINE; PrintAndLogEx(INPLACE, " Searching for TEXKOM tag..."); @@ -186,6 +149,47 @@ int CmdHFSearch(const char *Cmd) { } } + // 14b is the longest test + PROMPT_CLEARLINE; + PrintAndLogEx(INPLACE, " Searching for ISO14443-B tag..."); + if (IfPm3Iso14443b()) { + if (readHF14B(false, false) == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 14443-B tag") " found\n"); + res = PM3_SUCCESS; + } + } + + // OBS! This triggers a swap to FPGA_BITSTREAM_HF_15 == 1.5sec delay + + PROMPT_CLEARLINE; + PrintAndLogEx(INPLACE, " Searching for ISO15693 tag..."); + if (IfPm3Iso15693()) { + if (readHF15Uid(false, false)) { + PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 15693 tag") " found\n"); + res = PM3_SUCCESS; + } + } + + PROMPT_CLEARLINE; + PrintAndLogEx(INPLACE, " Searching for iCLASS / PicoPass tag..."); + if (IfPm3Iclass()) { + if (read_iclass_csn(false, false, false) == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("iCLASS tag / PicoPass tag") " found\n"); + res = PM3_SUCCESS; + } + } + + // OBS! This triggers a swap to FPGA_BITSTREAM_HF_FELICA == 1.5sec delay + + PROMPT_CLEARLINE; + PrintAndLogEx(INPLACE, " Searching for FeliCa tag..."); + if (IfPm3Felica()) { + if (read_felica_uid(false, false) == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 18092 / FeliCa tag") " found\n"); + res = PM3_SUCCESS; + } + } + /* PROMPT_CLEARLINE; PrintAndLogEx(INPLACE, " Searching for CryptoRF tag..."); From 33876ea8922184ab0ea3dad30a40e61f8447e574 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 3 Aug 2023 13:01:49 +0200 Subject: [PATCH 0360/1034] adapting fpga_compress to free memory and close file handles in exceptions --- CHANGELOG.md | 2 + tools/fpga_compress/fpga_compress.c | 133 ++++++++++++++++++---------- 2 files changed, 87 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f5879133..30854d631 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `fpga_compress` - better deallocation of memory and closing of file handles (@iceman1001) + - Changed `hf search` - less swaps of fpga images on device side (@iceman1001) - Changed `mkversion.sh` - now regenerates version_pm3.c (and consequently the binaries) only when needed (@doegox) - Added `data atr` - a command to lookup ATR (@iceman1001) - Fixed bug in ATR lookup fct, thanks @DidierA (@iceman1001) diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 711cc2f68..faa35ccb9 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -21,6 +21,10 @@ #include "fpga.h" #include "lz4hc.h" +#ifndef MIN +#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#endif + static void usage(void) { fprintf(stdout, "Usage: fpga_compress ... \n"); fprintf(stdout, " Combine n FPGA bitstream files and compress them into one.\n\n"); @@ -57,10 +61,6 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { , num_infiles * FPGA_CONFIG_SIZE ); - for (uint16_t j = 0; j < num_infiles; j++) { - fclose(infile[j]); - } - free(fpga_config); return (EXIT_FAILURE); } @@ -77,59 +77,75 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { } } - } while (!all_feof(infile, num_infiles)); + } while (all_feof(infile, num_infiles) == false); uint32_t buffer_size = FPGA_RING_BUFFER_BYTES; - if (num_infiles == 1) - buffer_size = 1024 * 1024; //1M for now + if (num_infiles == 1) { + // 1M bytes for now + buffer_size = 1024 * 1024; + } uint32_t outsize_max = LZ4_compressBound(buffer_size); char *outbuf = calloc(outsize_max, sizeof(char)); + if (outbuf == NULL) { + fprintf(stderr, "failed to allocate memory"); + free(fpga_config); + return (EXIT_FAILURE); + } + + char *ring_buffer = calloc(buffer_size, sizeof(char)); + if (ring_buffer == NULL) { + fprintf(stderr, "failed to allocate memory"); + free(outbuf); + free(fpga_config); + return (EXIT_FAILURE); + } LZ4_streamHC_t *lz4_streamhc = LZ4_createStreamHC(); LZ4_resetStreamHC_fast(lz4_streamhc, LZ4HC_CLEVEL_MAX); int current_in = 0; int current_out = 0; - char *ring_buffer = calloc(buffer_size, sizeof(char)); + while (current_in < total_size) { - int bytes_to_copy = FPGA_RING_BUFFER_BYTES; - if (total_size - current_in < FPGA_RING_BUFFER_BYTES) - bytes_to_copy = total_size - current_in; + + int bytes_to_copy = MIN(FPGA_RING_BUFFER_BYTES, (total_size - current_in)); memcpy(ring_buffer, fpga_config + current_in, bytes_to_copy); + int cmp_bytes = LZ4_compress_HC_continue(lz4_streamhc, ring_buffer, outbuf, bytes_to_copy, outsize_max); if (cmp_bytes < 0) { - fprintf(stderr, "(lz4 - zlib_compress) error, got negative number of bytes from LZ4_compress_HC_continue call. got %d ", cmp_bytes); + fprintf(stderr, "(lz4 - zlib_compress) error, got negative number of bytes from LZ4_compress_HC_continue call. got %d", cmp_bytes); free(ring_buffer); free(outbuf); free(fpga_config); + LZ4_freeStreamHC(lz4_streamhc); return (EXIT_FAILURE); } + + // write size fwrite(&cmp_bytes, sizeof(int), 1, outfile); + + // write compressed data fwrite(outbuf, sizeof(char), cmp_bytes, outfile); current_in += bytes_to_copy; current_out += cmp_bytes; } + // free allocated buffers free(ring_buffer); free(outbuf); free(fpga_config); - - fclose(outfile); - for (uint16_t j = 0; j < num_infiles; j++) { - fclose(infile[j]); - } LZ4_freeStreamHC(lz4_streamhc); - fprintf(stdout, "compressed %u input bytes to %d output bytes\n", total_size, current_out); - if (current_out == 0) { fprintf(stderr, "error in lz4"); return (EXIT_FAILURE); + } else { + fprintf(stdout, "compressed %u input bytes to %d output bytes\n", total_size, current_out); } return (EXIT_SUCCESS); } @@ -159,12 +175,6 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, if (infile_size <= 0) { printf("error, when getting filesize"); - if (*outsize > 0) { - fclose(infile); - for (uint16_t j = 0; j < num_outfiles; j++) { - fclose(outfiles[j]); - } - } return (EXIT_FAILURE); } @@ -187,14 +197,6 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, size_t num_read = fread(inbuf, sizeof(char), infile_size, infile); if (num_read != infile_size) { - - if (*outsize > 0) { - fclose(infile); - for (uint16_t j = 0; j < num_outfiles; j++) { - fclose(outfiles[j]); - } - } - if (outbufall) { free(outbufall); } @@ -214,16 +216,20 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, memcpy(&cmp_bytes, compressed_fpga_stream.next_in, sizeof(int)); compressed_fpga_stream.next_in += 4; compressed_fpga_stream.avail_in -= cmp_bytes + 4; + const int decBytes = LZ4_decompress_safe_continue(compressed_fpga_stream.lz4StreamDecode, compressed_fpga_stream.next_in, outbuf, cmp_bytes, FPGA_RING_BUFFER_BYTES); if (decBytes <= 0) { break; } + if (outbufall != NULL) { memcpy(outbufall + total_size, outbuf, decBytes); } + total_size += decBytes; compressed_fpga_stream.next_in += cmp_bytes; } + if (outbufall == NULL) { *outsize = total_size; fseek(infile, 0L, SEEK_SET); @@ -243,17 +249,21 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, offset += FPGA_INTERLEAVE_SIZE; } } + total_size = 0; // FPGA bit file ends with 16 zeroes for (uint16_t j = 0; j < num_outfiles; j++) { outfilesizes[j] += 16; total_size += outfilesizes[j]; } + offset = 0; for (long k = 0; k < *outsize / (FPGA_INTERLEAVE_SIZE * num_outfiles); k++) { for (uint16_t j = 0; j < num_outfiles; j++) { if (k * FPGA_INTERLEAVE_SIZE < outfilesizes[j]) { - uint16_t chunk = outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) < FPGA_INTERLEAVE_SIZE ? outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) : FPGA_INTERLEAVE_SIZE; + uint16_t chunk = (outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) < FPGA_INTERLEAVE_SIZE) ? + outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) : FPGA_INTERLEAVE_SIZE; + fwrite(outbufall + offset, chunk, sizeof(char), outfiles[j]); } offset += FPGA_INTERLEAVE_SIZE; @@ -261,13 +271,9 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, } printf("uncompressed %li input bytes to %li output bytes\n", infile_size, total_size); } - if (*outsize > 0) { - for (uint16_t j = 0; j < num_outfiles; j++) { - fclose(outfiles[j]); - } - } free(outbufall); + free(inbuf); return (EXIT_SUCCESS); } @@ -433,7 +439,7 @@ static int generate_fpga_version_info(FILE *infile[], char *infile_names[], int fprintf(outfile, "\n"); } fprintf(outfile, "};\n"); - return 0; + return EXIT_SUCCESS; } int main(int argc, char **argv) { @@ -448,6 +454,7 @@ int main(int argc, char **argv) { usage(); return (EXIT_FAILURE); } + uint8_t num_output_files = argc - 3; FILE **outfiles = calloc(num_output_files, sizeof(FILE *)); char **outfile_names = calloc(num_output_files, sizeof(char *)); @@ -461,9 +468,17 @@ int main(int argc, char **argv) { return (EXIT_FAILURE); } } + FILE *infile = fopen(argv[2], "rb"); if (infile == NULL) { fprintf(stderr, "Error. Cannot open input file %s\n\n", argv[2]); + + // close file handlers + fclose(infile); + for (uint16_t j = 0; j < num_output_files; j++) { + fclose(outfiles[j]); + } + free(outfile_names); free(outfiles); return (EXIT_FAILURE); @@ -477,9 +492,17 @@ int main(int argc, char **argv) { // Second call to create files ret = zlib_decompress(infile, outfiles, num_output_files, &outsize); } + + // close file handlers + fclose(infile); + for (uint16_t j = 0; j < num_output_files; j++) { + fclose(outfiles[j]); + } + free(outfile_names); free(outfiles); return (ret); + } else { // Compress or generate version info bool generate_version_file = false; @@ -503,23 +526,37 @@ int main(int argc, char **argv) { return (EXIT_FAILURE); } } + FILE *outfile = fopen(argv[argc - 1], "wb"); if (outfile == NULL) { fprintf(stderr, "Error. Cannot open output file %s\n\n", argv[argc - 1]); + + // close file handlers + for (uint16_t j = 0; j < num_input_files; j++) { + fclose(infiles[j]); + } + free(infile_names); free(infiles); return (EXIT_FAILURE); } + + int ret = 0; if (generate_version_file) { - int ret = generate_fpga_version_info(infiles, infile_names, num_input_files, outfile); - free(infile_names); - free(infiles); - return (ret); + ret = generate_fpga_version_info(infiles, infile_names, num_input_files, outfile); } else { - int ret = zlib_compress(infiles, num_input_files, outfile); - free(infile_names); - free(infiles); - return (ret); + ret = zlib_compress(infiles, num_input_files, outfile); } + + // close file handlers + fclose(outfile); + for (uint16_t j = 0; j < num_input_files; j++) { + fclose(infiles[j]); + } + + // free file name allocs + free(infile_names); + free(infiles); + return (ret); } } From 007f9fcffbf969d5ec6044bbe4480f2330a0ebb8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 3 Aug 2023 13:02:42 +0200 Subject: [PATCH 0361/1034] style --- armsrc/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/Makefile b/armsrc/Makefile index fe34c8a8f..d6ab2bfc4 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -127,7 +127,7 @@ THUMBSRC = start.c \ $(SRC_SMARTCARD) \ $(SRC_FPC) \ $(SRC_HITAG) \ - $(SRC_EM4x50) \ + $(SRC_EM4x50) \ $(SRC_EM4x70) \ $(SRC_SPIFFS) \ $(SRC_HF) \ From 22bc398b48bead99bdf98260ee3294b1383f8021 Mon Sep 17 00:00:00 2001 From: DidierA <1620015+DidierA@users.noreply.github.com> Date: Thu, 3 Aug 2023 14:43:58 +0200 Subject: [PATCH 0362/1034] Bugfix: `data atr -t` was reading uninitialized data --- client/src/cmddata.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 5c1948c14..4c8200ee6 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3423,7 +3423,7 @@ static int CmdAtrLookup(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_str0("d", NULL, "", "ASN1 encoded byte array"), - arg_lit0("t", "test", "perform selftest"), +// arg_lit0("t", "test", "perform selftest"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); From c6f2785463d7080db715dd90e977da2c19c90338 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 3 Aug 2023 15:33:16 +0200 Subject: [PATCH 0363/1034] wrong fcloses --- tools/fpga_compress/fpga_compress.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index faa35ccb9..5cb34e54b 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -235,7 +235,7 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, fseek(infile, 0L, SEEK_SET); return EXIT_SUCCESS; } else { - fclose(infile); + // seeking for trailing zeroes long offset = 0; long outfilesizes[10] = {0}; @@ -474,7 +474,6 @@ int main(int argc, char **argv) { fprintf(stderr, "Error. Cannot open input file %s\n\n", argv[2]); // close file handlers - fclose(infile); for (uint16_t j = 0; j < num_output_files; j++) { fclose(outfiles[j]); } From 0bd7dbb6c9523980964a4eef74af8aa5cfa013a7 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Fri, 4 Aug 2023 12:43:18 -0700 Subject: [PATCH 0364/1034] Add datasheet for the FPGA and a common flash chip --- doc/datasheets/W25X40CL_H 20220301.pdf | Bin 0 -> 1331814 bytes .../XILINX Spartan-II FPGA Family.pdf | Bin 0 -> 1013818 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/datasheets/W25X40CL_H 20220301.pdf create mode 100644 doc/datasheets/XILINX Spartan-II FPGA Family.pdf diff --git a/doc/datasheets/W25X40CL_H 20220301.pdf b/doc/datasheets/W25X40CL_H 20220301.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c847a3b814c67664628c65b3c2258b15521a8160 GIT binary patch literal 1331814 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

    >Kq6P8deuGQNr2StK+5qv7xJ=7j5=z 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

    2XUKAgR(}} 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

    NkR=#=jEmD|-*|r^w z_+}-`o!?=1wMil|&Z_MGoXz8aVM_G9{1+w=L4^_9Zf*B~u1Bk!d7mr7GDgBCcbezL zAfj%WBTijeN`w3J=9hBowfS^jmkyBuLM#fLOZiv$Wnq|%PJ^h0kcwTcxCO`oX|~iG z$ot9}LMD$2#-hH+8@FeNxjHP~afbf^&tuX2^Q)=yvv}9_T3@PeXJzVVLbj-k5UCT1 z)?a6?9oo=ckEaKuKohEqs5@ybUR?bxhrjNCtkEd}$5#5(et624Swl)(RzMU)vBTz5 ztaeGOdc&o6!VcV1fgE`Tq8`*Q;eas-NG6X#dQ`h@I%FJLhbTA-P6`vR_PuM`az*>a z4ool+Jf5hs?NO|JoD?n|m3yvCTZ5?&J!mPumK`OitLdV3&9M_n%=gAAT3RKuXUm2=sV*W6tt|V*1lO-+u$ndPkc=9T=Qtmk3uvbr` zdy~IEKR`k8U|o*n=uDgkvJHmn=Zq@=c%w=W98$eqU@X4zd9_Ujiq-Y}i8DN`4Ym&z z(sujKjhNM5Ob*a?u75XJHTPCPkPuAh);XPd%lm6iRqhGrE*h89mh=&{Lf5Y&=z)jYvMK0&m_u3SO^qK2o*Z#x1Q+;QRxmr!n|KA%Lzx z3nkD4y296?qrQEBuFzamS4W-#$N(q=@C1Comw+dbuFvY*2Y3RFMRm1glA~OH8?gzp zwGFT>R$c(R2j53Pgn}HmBP##_0Rx}g>@y(ZQzGO_7Yw#TyzlMfW`^Asp8(tpY*`u$ za5IdOfTZLFW)k^~8950`OoMNI-D>$qK6I4oFE0B>9(7c(0V#nF@H3Q^WSRH*8HLj@ zq%}6DafVX|@H22)K?uOlFwG>r2KQhf}-XK?fB(=YF8QBJ6a%HaatO9&uQ@`c+H z-1H&{DFxveg2YILSFuA{N+ei35dRyGEPpvV+o~bl$aIJ zv8jv<56uu5i{{Gt-XG%X{n6gn*3GGoVjFP={{awbv`SX`YXOl4J>*dih%}d6Dgo-r zBf_6>lLPP*Y~M>m0Y4!%qXumY_zC{4(m4x;rCF8=0Bw=@b;l5(Eli8nkT%#HWn<}G ztsvl7xcB$+OojuW<`r}S1Or^DI%x9*TxmN{cFS1Wv+vhe7LR6~0^~uZCIbQsKzKzF z5aIwOB!9mMGQ6>mWB{@QkUm>K$__yKJldC?eWnjAB?9oC4B*vS?7&Kdf6})^4`7Yf zGNZAL>!_izhk3E-q+I|T`p2Dq0q+971n7k;b6`jSiAZ;}X$uWVL>hHs01H z3qAk`qX|evw$vE!j2JO^E&vhD5Sc-SEZ}iy&%$t_B*5bU>6=?v0OT0h^)Lp+Caim3 zO+5h9l=b=60Wi%J86c1Vm*!C>{dO4$m4#wXEckMDIVX(40hi{EEib_paA|}brVzTD z|L~aTpB3?+&xC#a&1JPQjqsz+gWe&J}T~0H7v&*{l1>rvOWpl@G-$_yR0d zJept!s8p6D={$fPSs-(`&yY`%4o+y0TM6{x&b?%<*y)*LAs?4uE4|b;u;6+Ca`RIr zSMP(|kOyG}J9=(cgf8cxi*+HivbCxj zXh6$)4>zaTqY$TDlGSX9ksGj{@!6+kfo2^=1b=hhZ&t(BXONjp*w4|oCQ0W2=GZ=J zXoh@(_8@k@U4R==2-*d>5lbJJ05^g%!M8mS&}w3m=xKHUt%lzLI*42x8FNAic=ly3 zVBU6kOQp`2YsGHy>)3*ndbdTj{x;e0aX79^Zu2613fRE~T0dc3elF5~B&b;;eQ@(z zfG4BYiSQ=^o{V5|luew1KqD7Eel-20c1M?^5<0Ubt0ytV5 z@<(dc9DrRSeB}f*0^GK;%;!jPe}@L_YqH9%h}TD}ja*VEqD|uA&}zUOC`&iK4@2Jc_Fl&7`yl zn}B=;WajLMQ2CEC0~=5RvbF>kh>rA)wKf3N0+hm4=srs@g{UM4P=euax8eaxaF1d! z^KvdC2!3+Ej83;nbd;ZSYPb~nA#`Wz#|xu0vigf{Gb@( z@Su(sOFtT$0nQxD_Zvrf9l75&K;;tLZ<}^wshN}>AsjHo^3MW(Qu5rbDl*_Fy&6*9 zS|W%S=}$E6^OHnZF9Uv3mJ2o~81R$efbItPN$LxJ0IvraI6vz;YxVzo&@y_B~D$LRM&_h~}B;>@&SbZj=`k|hLvqi39c;! z_DqMVc%=>OzoT6LSRB8BzCbf0evrOJ6-f%*T9NFrJ%qMeD_nl6Z)^;ALVGt37UM0UKN>PIu61o)O#qyk zNvJD7zfV|P27nYmScC#V3Ro0g#o7ako}mIL)cE(=Y^b74V4he(xZGfl*%G7}^6)BL z8DPujX={PrGa!u_rBRVA{n(+ze@|Gy zyZ?#uEnm$FLiiDRy@0W4K#FVv#wKX_xfK08H(aXAaJNsoK@-_3NS5%&Mc0{*lS{v}= zg^}af6ANf7Fz(hgc0(T8Yu+CkUD{gWKV^pQH|clTF`9fq-pa}Dk8a1P_wcQaBBnGR zMua2oJRFKA7mt_w7ImXkSFtti7F%yZr0(P&RD9&|PRbi+Fc`81i7}tR?O;myVaF_F z=}4c57n5djDEq>=wY!}XPu~(t{RNzcmN37=0Swb{l8=F*16%Ke$I~z0DuK+7{~EMmZa>i{A-r2rtN2sBWFu zxv)H3UPN7W6-tFq2Q(Pw8r^l&nS0+VGf)3;@ZuhY#=(!f@i8eQJb5ONFV1B`P4Zoj zyEX{!qXo~z>d%ByfNUjI&-N^?Rr>w<*kCbT1k$!k+w-Rtvj5i9-+l3)@V7s4kE|&% z^S`QCprQsBIzraaV71WR(BNp;qgaUJpMlc3JJraYK^e&AeAAcqv=r70e$S%a?a1|l zeU~sH6~jZsKGYkmHnrg>$X7hhaN+Jmh<$3}4-|}|zw5>SpA73?XTk5}$o#G&_irD% z(=UOAN2H!q227GOKLR@Vxoaes5CQpYEyfScmNkd|VIdg*3DpD^rz86#StoAXsFJRAjGk=zvh^_p~I)bp4FfqQ2eS+Ol;vyDRr#^olbAa}#&i!0yI# zgHG=*?PlZtk8sN6A&>}mf+*Sd$s82UV9qF!-+dA7+`O0o?P@x7;N!}nPei?4O?v-j zt}@aWqKcEvC6(hCX*GrYx+nZr&yQr8{B_X((F6TPD}&UC-zjMUyJopvvPV%5JyRH# zthfcI>sKx|J$BE$n7h?`G>XNid+DRYdV$w=U_L*D)?Ca}_G6}?O{ArrO|zm+P1w95 z-;QS4Ph-n(pu9h}Nu)30nzth|Qho;qz=y>pxC zYsPjBGR{P|EzV@<-k6>{(~|kA@mt&J4i?szv&<3HvXffzR&sPi*rz}%64j>KHR1qo zko0VayrWLnrOOE2ExQ27acPcmXrQiP+E)vRd0BkRIxpc~TB&trqQAZ5u?1kJ{Hivp z0`a0;AbbM~As#OR8@yStcj3dWko|!L{VWnfG=TgnJtL8PI=&jc%ZwmX>BCo@;ZLJ#A+5#nG=r6<1Vwx_2E!A;;_RLndadu+E2ch*1BMNM zvx9&C#c#2w{4-g>zE?|E;|d_v0LwC{YTw{8HI#cYL%Jb;c;eYq+GNB8f84>zUFC$F{%zkXmZ_ccKTNmvwd!rv$!y;@D=Vf3;idVU5 z_2%hts2;Pi$&4YntuVlju`pFwuc}%2N_Lvy7_)*lIplkcm~f)&gHLYv**8^r`kUIT;JCoE)7gJ)+8pyn!3YmiK3UN?$&#dhQt=SG9|M z)Rkek1ZyrV4tg52^|n~sgq_n<<9FZ-f3XSvZF8T$(f6wR4vPPiP-JrJ>cW}lv0-<( zXzfmL3ofiXrteW4~UI6_P;-nVfzL`E-n6E}eo4qW&IYDSCP;BFV_N>+C z>HhGn(Vqah=xumaawT++;?uBJR>$v4(ogoO2eOVpql^fUOq%R{)8Jw?<#9^#V25qA z@Sy6$x4qfYDn@3;1QFnC2~=;yW!Hz+F{FUu_V z>0#1?9mePBKWkU{>^^UB=j83i?~Sw1?jPBsh>Iffr>#zyAcd~Dm1Vu}d?b+ZEZ zz^WxW0&uu46FtURCfqY-Xjy`Y*?pHze8Ncd2O-mDrU+P3AIANm0vNvKsMH3+ZFej6 z(5kr&yz_RbUXuUohvkEzG{%%G&>6$@KN?cT8lpxQv>+>>q&6bPdRt44$NH_j>{FUc z#r0W~DZV`oRy1i=@Vw>{^)pOaw4^UguJWB;VmhYg%~DaPO>(_}U%qG2rP+O@It-7j z)Qt$VleSlJPM<1$ojK)VPX`jA21l}u@P1i?m5gx-qk`TGr8gxpRas9vo;GVfuK%L#W4BeFC-wKJKw#uP1 zVm;(tnl$SnagDt%^M7@0VG`bVdsbw5z3=DYLpaPh- zkBL1ilAOU7W2BR9iaGc6bZ>LtkFs_#{()-T*LX$u{XcHtPc!j9@%J~rlXYxxxd>3w z%9U4QEL<(Mb_xqH1OpLSHu+CdF*K>mn z(b9LwT6FP0(XKxd*Pnj>*PCSi8NvIic)dLewsTz*aPjM%+f;*mjkpBT#Bn(g5OIET z#t0*NLif)W&7t8R5LT#);DCmW#_r9BF<-cp!V zvO?>`ar#ENm(EX>5^z#gFdV|2SClo98B;zOF|%Ba7=|7S4TKvLnjxiziGSWD|A~(O zwLp~HuGXZlUYYQZ3^0m{sOum%aC;=lKXPhSXWW5>#L{^e%rI_*{3q`G=g;>`Q)Ym8 zC*#i83aF-n8ay^Ii252zpv;C`0&#clIN1WQcg$-Ig$XCl_FZ7$>lcmdYB45najZ>)Pi3^y2OR4+|s_T~# zah~**-+7VvhY9spRoHTsxis}TGOpyt`P?|9<@NuhkNQwF`v|6L*w)bkP(W1K;P8KB zrv3Sk{K9i?_y<{-fBsYdq||F&ahhnO(Xm2G3Qi-fEa28(*Xo_?cpp?StQVffHQLiU zGi{$38C2N!B_8_9DZy=>o;G>n&MzlB<1{$Q_tu+$(^)b-bT_W%dsGl{-olI^9Y!1= zlp1p-Q#31iqtC`WIhX$|{`vLXMa?yhpL`EbGFffwK%kez*)E zRwbjdy!gagGVd7}k=K)X3pPN+<^jf!GIdnx)0NE^Gc1O21%ukeTllnOi{4(QIEtUx z9IA^k)dlL0k4LsCfy@8Jd&-Sj5J7x=0zH87ZNvBdd--Ir^=J+I%T|$JfDIBnZ-UHQf&Y2Z; zt}K6hYTDnacdsMIu&D9voWb0D%bd37G_D2GHTzdv_Ww(E z@t=WX{+Bik{1tGE_?-y3C9qzY_o4quTlQbMj4^mzj>eoU(A8P3n@7<2<`@(qCpxiH z!7ZUif77awD1)o6?87ohnnRLdnI?CxsKhJxULDYsS~v=E zi!9}3)u-Ulre71*`}%8pBrUT*8h9=-J^ zli+_g{Oce%3Ep6c589)!ZzG-PMz7nWw=aQUk{%~AI2jLn4362e?MD-ZaqZn^YXdtlID z$ncicAuVxvIa!m})RA^HMVr=iRGxJ2(MEaXP6B+uh~O4E>66mLX%-nfDDE;C=kW1q zVxV%D;Kp?4Xm;VNio}G1yBbe0Sa%yr7O7AlN2l8u!zhOop-373{K5kahtsPvn0g3_ z7AzH*%X80OiOTS)^eok!iS^G|yii%=Cj9Ly%Rv#!gIAtgdYN+-7Ty*7to`W+4~M!} zj1LtkD6Um-T=Lu-pgm@4YvSbWXli8h<4e0ImbAx2#KgFSxqf^pEe%!ous4Njt3I(b zHFkzRa(Uvs|6b9?$jlU~WntoM&Ltr(2EA))VP@{kB`SOsddtq*&he4Gk+CWCwyCRy zv8kHEP3TPvXQv0Ij<@V=?Coq#ZJoKUK^1MCO&#s+tc{#axt1sl1n|h|*5;HAi$ubYabK09ATz$GR*Ueq@owuI2xjZMz3^1Vesp?wenXS{~PsiltlDzy!- z4tNX}f4CH$-og-HsaRS*3UB^m^9dbmyAa`8DQcZyDRY0*{Qw1p$!)tM`KSl*#k!>l z+x21c=%jxVCIzEC?ci4L7?9;dnV>*##Tee)7;af6@zRJ7JnogNXV|Z`B(qQ3@F_<& zF0@pqKAc-|v&;%t%Ia|~ciR*3V4L+{qFyL_Itrnbo0Ch4AA$<#VOch;sKJw*yiXUi zV4Cq^ax$o3s7an?p@r{k$Lu7V)lL=8J*~_?l|fyqY0g8odhG*p7$G3JfDz@x(6fgj z53C@j8h8D&EyE`GdM!QfErMVBp5%MEf$Q+V6!nzSl9Bp*=jsp49ZNV5*M?m&;_4QD z{#{SVP#~nVH-=YAajU*2wiBzgdCKhlM)qD`?xTnYc9x=JSY2ha>d$ulSg)S%ZbM5O zg)qqRYRt;b?c^TXqlK=sJ^gk=zBKbwbX2A+;d)Z7zFSJsNK0K8dAlRmzT}o6{rnnd zXp{@kR%qrI(>88gp6VT;PB*UVi%b%2B9mpP)f_fFp*Sx&*~(JwL# zC)R7Cw@UTX^o5{3ocV;}oot(dXT8dPm)8rW>ZFP~Rwh$zHtS0Y5{Bm%6j8_rnd%wj zip^Dc2{oVJn#GEswA0fYb6Q%*56*w0B4@Q8a7O&V+!VMi=QeSZr8;lN!pqGu--#dG3f+S%J-;-+oA6Ou zh0Q+hmW>z%MTM}Jwi;W*$F)#tGb?g&^zhfCS;wVbv1$59s@g)Y-X=9 zEjCp(W{DrI65N>PpAC6K{BP}DKT0)V0ajh6F zQ=2_Id-=B(m>+!d)387_wjYiRf9)|5W3XA~ykG>k?+-QO7Wtaj!eAtlgj$lc7MDW` z*gUzOWh=ddS`uV`l-n0Nhp>Z>SVNA>j3{=l)*&NhJ^M+OY1laHvk3`L90~Uu-W-d# zh`DYOwTlbz%5pcF(+t*80$p=BUfAAKm~|wC;ML`mj!pnUv{66cndl zz|UU~VGd~wpXXQ#t*UliUlH|^IfJzf*d-3`3cds?(W!0ndu3Fu1utLQ+fsC!Ipvk1Xx0!@v3e~E z^|i+LmBF5jwj$r-HL*{y+s8%y!VC%M0Y5tuJ%*yX&zL$fTbZ&7J#Pp_! z3d(M#vJqAa5N@PwCLG*135jT}&7iGG!9bo;y`jn>d*1dIu zdah?)tL03b;me_d&WDf!GIB-+Z>)si>mw3F>%VC5Zb1*Oa>`k-&CU&nmL#=Nc6r@z z4oCd+EB4Q?%$?J-nzK$*Pg`Q=%_&HX)#WYD2yt=j*M~+bC9Qd`<4n3IFq?-rQ%x5d zaEbRzq~i75zJ`y8?FtF>$dbHMq#X6;CBWkTobX=FBdt($S|StTW@)C}@dV|$)xR=l zZ8KA!s^FZF)H$p0dh2gi!Khf@1Dc+a9&5;bf-Gpybj>U(qjP0q_qkFNR4WF1NA5eF zbu~g_P8L<5PN!-+rPN~yIc&V*usx>mu;8T~=F=BIay_CC^(X1?jFhQ^1CPA-XO*xub>N8$UI zOd5vPw}3q&1nq`w)4Mx6$ykanXv|Q4h1-~00Ttn4;yI!@FrX`h_@3(862#p9et-Fe z_G*sUxZa8zx3+he9wJRtd9EvdpPg$E?_Kl1oU=FZ0hM7hv-oav>1B&a7@7@#63^rb=R8JmA=<~`DzjSOEo>@`cjbJTf@zV>T(VN<9_wM zQo61$HN0HdC$1cWtAH2U4UglxJ&dekltb_}Q_|1rjg=8ejGBy8CU5rdI({frDPl+EV2(kI`+23@$V zFDVGUR*cezdtbBNwjEA0v+H-49ZuiIlchL7*gcy;<@8y=N-K9!`(DV3&;=IuhJRk#dsee{C8qJ~k^uRNZh zp!mdvI(N*b!b$j?xWR~!1(Jz#FU8CLBnsBqsyo#b-jt;w=g|)z3rj3CMO?L%XdIRa z&xTOB+3EY-nS4_ao4A3N;_hMa8)Jx}zg=`Oq;ar*I2QWRLUm(K^CQyLC~ZsC?YlZ5 z>2bF52w$hv3;M-p4a=N0vG*r~~(zW0iPIzxX9N2Br<=lux( z#Y5uBVp8OQI+imNA+L5@BdFrTwu6rM~yWTPNO;b z1lwv*e_$<~hzLj@U;5!pbC0d|CcN?Nip3g=V`Az#tNS?02Hn-JOa&W2uhcdB#;CW< z4N_wkFSM>YXQ4iqAASfsM?vw%`2M@2G!(A$A4Ke^Ihi!j9PVQYXvB9uh0Dv4-Po66 z_BM#f07QkV*nyX)!W8OS6~(@!z_JRBDl?El-LTk{wo(p}H%L;wurzJp^iuW-He<`T z7VECBBiW*l+7CIA5FLH>M}1IwwBsb}%NvfQ1Q*6lc=r`FG_0POOF{9&ITki^C-4J) zldgAcAImck3eKlvUAJ6qHwTw#efF*V$CI*ivcxa*=&=0vIVhR0{ZAWFOAvd`b$u+I z1hq%^1ZCtyOqFC=!e$;x{xeo7Eeo~&8U;+St9MwiTd!0X%}>it)Z~2-m&0^D5%Ae) z&s=7~IG!%;?=Qt(xi?9AXP8t1cTn`P4KXYWk|`fvRJp^ft9mXRsc@W3P3PVmx$Zyc z&_)X{R;)wD&TPq=uE-6^Z9&_K6HAje!0-@uA{9E_8uwmv-C*}wT|jy*D&9w#pVsGA z!%n~4K@M+7rQTtc+bi^Hn)xnuS)oOBjdXvh!1rsfUAYrXTzGlO`;+4I(&!CWp{}~2 z3-kAGoDvODwC7$m%-lOlb*8l+Wdo6iGS+8d3*9O?d&#>&k{=AM79rJ+o0Uk*?EqPh zHDJoNzX-f%r`m6)C zn~u+-C^lz8^8^U3MPW`zBcCUF=vajYe^Z>}{<+o@zX5YnLA=4$D+;rQ+_b;K~wGUw|D? zJ|tl&K5WWPxe(6o7PGQd4KG$JOBB5C-v56Hd&{^eqi$~)5KvM3CD`TV~E+W-t9wgi%{x&{<`hMJD^DCg4Smc zd4u1=-qrcZN50m&AfkqzvMc2I{-o&gmeE)utxsbAVOyOzlV-zhr~)_gUcE?`58j>k z{dHe1xGzs(0eEdt>L^Wzr1G~rQ~d!{Wqc2AmTNnSLi`5GzD zx;(A>qIWfw_&sMl@u2*LYcu)c*75l5`AgN?Xg+Rfr?*)b&LoJJ+ccB)HFHs?T!GJsO~1v!F)^fxJCdPPk5o<=_LH$N zFmiccL=sqk5q91tVDU#=Vzhg|y2BKaYrl62qAKFy{?K!MG)DZU_pPpOB`keJHH2WJ z>0pFqxwp>@Ubw~EO6=tev4o%}|Ns8G=X|_9GuwGIYVa(`aWUN;71|PWad9z6ks;}Q zS|D}7xlBTkNZyFX36^ODMWMAP5jpVqf-3h%{co?B+atKsk!q->c!a$@3^gcP$K zcW>Cbw;zd~T7$#3%@*4NkNB{Xc{d8fyJ zO+?*WmXI>@}WhLDMbd;CSG5ZL({2_Iz?I5+R`0MpN z)c4Hf4Kr7Frj)NF_+f}3gE#Kkpf=1XF^?``lbV z`{vz{Lp|N~P| z=~IYuLJXWp7WI(JDRXdki|o1OYbpE3X+vO~iw*(Na7LzLAPFqIS}JQ} zyh0VuaPa?mTxj94{)=-@NQVNVCabL6Icobj{?F0zah}PYLY5DN#VS<`b91fRf(8Z# zdEz(2ht^zIrDLjwzO%%|S!TKtV8ydU%R`ji-XD${tOsQM5DamRmH80P%l0{!@t7R^dAWSyB@W)376%_%E1`=|*c$Par-)>6ox01qLy=1h%8kdQ9q{3j_ zv5xXVU^fK(i(%o>+jsb>){gwMzxdva3V^}-VBn#ZZvb~M3`Igl2R4&&hS5S`cnc@! zPW82*v5rr_zcPUFr<0)xaQ}yZY{)aTh(cxM<>m;__<3#;b5^_&Wk&HrE)w<`9)|Lz zrB|aLoUxwb>uFSfJi$8p(GEcI(pRmNkJDd;)DqyP%5k>2jQDbFEWvff@1b6hz7*} z{_!6Oxc6#}x{zxCzKU7JEZ+Zi?^BZl#hzOa*bSLNE@i4~oOLllQ-hk)1-O(g?i8!& zDE_m6E~FJBw4ghqA|v(@p)5o>YAIvg1+bw02gz#=#2*VoQMoYe zk2;}1S7iT-k2>Eg$%0o&cD}xu|JNhVEEu+^g%JgWb^m{@?WaPzc;o;2aexL0PE@S2 z9MR-(XHUp72L97|xi5Jo)A#bW@81B|_HK57PeOD&wv;E=LUTtWu ziMph=vcG9|v1K_iF|l6YhO5}{4AyU$qW}lTzvsl@Ic*Mjo-2;6rr3bU%IZS0!5klp z%Cq9_MHItMV*U$t{y@`84Wo-hKnMvS#MA#mGJaT-1Jjy*>;pYm7Q<#SEL9k)vZI9h z50qtM;OZ#B(mOJ-WUBzfPTSVxHWCLiL**zu#8aswKJEyXU%GpFr8cGCT4upa zDzS9qg0`Hlmz;)rIyuGE%v6Uq5g9FRmAW_%cgR4xbF=r3wztcDimivbxf!lE568>P3rN>2SJr%{t9I{| z)N#OV$!JHBPGGVjp~W!eq9*S@zrPPQ#3<%`zFo#IktMRjvT+e1R zt36w`#?*TKa9QU)Js8GaARQAhH-yhcgV>9mmMfoK*RtEyrDbJ5$6^^Uy}XCZaB&n+ z8TZMAJVvQ|J<`RJo*~_M`_sOpJ*j2kK}Vr zBB+48`O-ib#k7(`1$OfMn|)Zo-vi5I=dBAd#4nLJxT zbc9dKu1Yh8G)d$L2G=xRoWM2H#lD{-nZbsz1Qo+7f8jKTy>U`BICxGqs;PzhpAM&xpa9Kc@p;$#xH&`M4O@F3TOG5+o3U>Lxosvs09|;_P z!)K%b9V5W)sk#^<;x z%OAX#Bw^RY{_2$<5!sb&rteAcEpBN62)HOflncR~OcgNOL*`gX%8_eJ6DKAwJ{)=Z znpjn_QyxXE0CpUz7mp22k06;9U~~J*xwK~+FD|^-ykmsDQ2H}rl3#LuyH}avJ^_9cPz*#-PXe!a+$)1R z0@OpYiaQ>80af{`jt08}UJ@-5G5^tSm@A7Z;<3DY*8?fXipLOCOlrd9(MZFwNWo{? z$9nC-Bv6S%;%lLOe}$<%kN{H*Az+Y>N24m^@%gnhGg}qZ$=^(vIlVp)BGV>d=K$DTg!w*dJzybrrNElIcMImpl4u0Sh=9jn%+H( z0d6Sjd^KGg*Vp24N<;SN8$ntAD-N>QJ8*3UqB?_f=L%^QHR1e@~f2ije|;#wXOY z6ZuU{OcXYxV@T=;kn7krwYB*zKR~QW^7;Xvx*93aYysLECSsQW=Ap=81ql_C@jn0a zV}C>UfLdugJ?;C^kz2i~&wLOisIXm2WJs38p=ie4)8ncT3F@>*jU2yDVPJAThcTr4 z+qZ9@_?in*dtN&T;Q|+*f{~#IjP>r$w&?gS+K&Wf{D`LRdW*}OUge=Zp?DTQnJ|3_ zY|e9=`OS_c6NnJ;<4s$s2b$@G`%cx$pRb2F;X@!Wa8r%Doi2EA$qZs$SI;xlwyW6b z3(TIWDPu>+N1S@7d>A&rwiC!BdyzA(h}dOR5DPjmiuNME`8&9UM+}g?#0kAg02B$&bLV=F(~T^q1j#GEfeawlk8FO+K0Y?4^KNJw zgeHB*y;|tUt!Xm*GcrbKNx1jc)MGAXjGW2C+b88*%A&v#w9K!!tK<*V#j~L)GeB=z zPxR}4tJNggJDO>9FJi$|E8tCYc?N;`05e>P89Nite-Mh!L-JR)fM@p>_0!qLul07$ zgoClp3qv_iPa=hxJWO5-QhQb;_TG27`xLmCoc-FJ#G3bgUnGp1_kkXz`xikS#RYXw zF1K`Eba;gB9+^IyKsRf|#zdWeHUpQ5UFc?(v2@$KO`q53tIdu5^zBu3v4QDg14>+( zdYv+pXWOn(?B49l%MP>ebJqiP1MSY=uQ&i;rFFYQLM^}+BzO+kk-yRbsjQgjR6S(P z+Yx=`74d!!Tz`d)ECrn|e7@s7?ETKJ$TUpL2tE}|V)A5L@|@!|nEd)c^~PhN~}Ouj$lJg{yQLbGM)yaQ^NOjUVO_Xgn$R{Y<2C zzc%%)bzNhVtppyi{(Z@EKID~Y5o!pxO*7JS;A?Ory6GgGj^Q{d34S;`q;fGo=pVS{ z=yR=~$fcTMc_FC#4Tbo1kx!c+LGMH-HH720bB{((?^x_Nx#rm-#Mu1~A2^lq<$V61 zd25N0;WP9t*Mw@r>nBf2f*(DAmYA9qHZlinx_e)o9wud0aDt%k%v}Lt{q51%>&jYL z#Jt}|zz5`T-RoE{K(4}I?N*O>{bJp`pPRC{(JvsY9%V~9{}mf6Ji8OHSKAPM9JGa% zVVIDZSYeJxX^|`eiF>qNeJPiA!Ecw9{_f>1$2rIRbDo2QI8(Q*?{mb@f`gHt*X( zHN{1TS=lWQGjV}t`BXoC00sXpJ4mQ&@SLHM(Gat{lcQZqoU7M2y-4~ouKCCGj_O^z z=`b_9qT?UJW!q7An}^|J!;?B|=$pYlaS4_)59G0`kyAbs72~8314x*&w3>=xPrR4% z#Ib{SF4<0dIDqFIaoR~SEre^zUT!z84B^dN+lj|^I#^pYfiHL3)VBN)$bbtA3m?ur z_@&3f%!0(t1&*C8+U(@b@wV9-opQKqF#i`gyx@wWkMP51kQ3#TNk-CX3-2vxY;C%F zAU&)q_uSr~q}C*Q!Yq+~WI!scy<(N?BOn&J2Dy7}gdbii!ztAslxiT;16j1j9mZqB zpT!Gwm9r;j?|OyXFK>a|g}3jJ?!nwY4&>1sB!C)eYpUk``wJkA)GXnL2t_&1s49g9 zgoW+4S!@7|)C&c3&N~{Ey0_JLM?~SG7V%T|7xX6kB%8e#%J=F5)b1lYLf~YDqwWbL zUdf$+@%^#HP_WzCQ1+Cy=S^c9jW9P=mG@UApCqKZmEBidHuje-AjcE?u?Ly2A0r=b zXjCP@y`QIgM7-Z@e{t$54E!=qBB&^=sy&u^;`K{dXGH&=;0vrN(?oO@=@zKer(!o- zY#P;U!C-T5;JjA$#PvjvsuW)tzLW6ys&H90#APvkZ= zGmGD*mF4GzM;=b^e^ahUytAkDk&m=!^!Qsd)qfn5>Y~^cTtMa8+1cKshbwCkeVvGia|e8qEhuG?cY}%1=+eQF@58r}4i>T<(4{*Q0-ozs3E~ zsJIEa`H^SM=isgPn(P%O+%57TqE1yUfnqH6^Xt=HCqzrz`6|B@H?xQMz1mOjjqiOs zKs$Mis5Nk+GJrH=TN;ao@BjWAT4T%`kM4^3K`3Jv+VEAY%(rqOZ`*wB5V*tp$-TXY zKfb~4@@XeN7!{vN*+O4pu8&@}daSkSTx|S}#RW$aaATe}H#J4H)57?B&kO>)0C_2) zby;bt(oPKFo|}(|0z;l*&B)Uz9(MZRqEeHs!qe^c+8XoF_sg=Qo==7dXMTGi-DzsX z$nVrXG+{+k z-z`z;>p`0FxKQvr$HEy^S)gaj^9Hm2uI9ow)%uVCRQGy2ib)st+~BPnbKq?5!9~;7 zSrz5_si#}#5?VnWmZp%

    )8FUvJ-_gSs<{&3>S(6umcop-B+P3meptdXHIjmpbZW zso=g_&Je@@{d}9knT{5O(7XgVfseJT4q*>^;Us?<2KhukW<=GBv{W@w^)5d`h{@^&cba}?3+*$^ z*mm--u2^79TK2rQ^!4=xb@b}iT&Ki;lNIISNvrj_aDKvK>DDz@B>T0bJsL7L(RI zTIo-JK-Jj1c%z>T33{jHdEWZdOG&%OGH%bzI#v!Ng; z1+vsP<%lu^e+SZ}=#)}O{GvFB?spmPnX#z=P)&jai8KjMd6~=ZdbOf%V~FxLfCYbs zmE$5CRBmk3!wcm0UJa)^9WBg*ueh!a@>Oy%7pE+0dzlrDe7nvjM1B41Q};pc$!;|K z?mRb$2Q`_}j*|ACn=oYz+JdSV9lVE*Xs4U(12-4Z;1Ag?R-u>hWNBpo-i@4*UKDcl zCIUbO<)rsBMA}cu6eFsC#4HWsoA!DhR25{&E^Te^GMIFKMb-dwd2EI{nyD^L`D5C` zwrk0VW=z_YqF5y?0p7^=)DcZ95q{{!5^<*8Z3E6)(TpX6x*ZGH1%q>{PA}T3IQMGD zZHP{@mp;Bj=f={CAqMeekD%`DOzua}IVPZhT#v?4TaVkz^xX&D%V@?e!|Wl-&w-Ba z)K_QTL^Gm|PP3<(IaP(OwWDiUq7s${Z@l;;EI|tL{{}%&ma_FAJtvQrm#xHRNmk80 z*YYy2&Q~(MkBm;$L3NHn#bOA_Hb4FS{S&CgW-irUoi5@TMNT7;$bvJJ$4Yt}5^vWY z)-+=y*c42DG|f~#vbMRkl{c#aEHc_i2g17E@eZ6q9}e#zjx$_W7!(gxxJXxJvPW%| zcl1QwzRfz~SyIHBc(Lp-s)G1o+Tg0J&@9-(ysO-j4(hXnS9w>%82l+fFsp@Ewt9=T zXSeuREb9}*FDS5{d`gEOmW=mZ8tc(=3X_5ZwiIEEWL856(+s1fKQvCfH%5GE8FS({ z*kLSbD`daFph<{G=#jR8w1k!=l zTY!0Bvmft~)Q{NH_*vVd##+SHFp@}$9^VGqz6a*ZH^_A*ptF9M^x>>giHv&LbBu-| z50lK;Ko!`gQh@`Sj>wt;$OUdC$No{q(zUzi=O~XFtI#Q8=?+OW_f+<#{b}_ms1_Vk zVJzf61FZ8{YQKR=kA4o>8BTs=JW_nj6$}hN4d+rLBEwIZM$Niy@b%56P~* z0yZCKh`}2Ug-MG$6A(`q-P7ewTpMQqg*b?LJ5gNkRJ~>9Vl~hx@*5g1;(G4gUHLx7 zgpQ-A>nFGvAdiP1KJz!6VG|#|hBd#j7`li@pR+D*4S_R;l~2=5u?grfAqd@=CH7(K zjU(Huy%@o@X2DQY{ahT_L>G%s-mI)T9EJ7(_&<@T^zYMb$&dH@kvDJN1nBMx_ArQ# zhA-%1nz&_11N`Ic*EXl*p6&>?5Z|*yd7Lf(OhpePA}?PyfXJdUl-^{t3KqNo6X*09j(1#mv7*_}&d&BrxEP_DDsQf7p6u01)}IiM&4_zq?k3eRZq4)lcT@5y#8g=n*ma6Q{YXc^(v1 zuxoYc)~6foUmG}we@BT*7qXf_!&sm|oTD2VO-_hhf8j!}P8X{51WhB0fwTgM!=62| zR$5xRDk@Jm&_P)XJe@v2v^vW&fi)HFDz!Me^?@qyE;a@T{BcJ65**NDSW?O)dG_dZ zF5oul$pLzlAfA4FVUss7ygfIa_wHH=q-L&~dG21RaOiBtMb1sOB|D_r4VyrDNlyS} zGOa2It3ic1!~}Fpm%GBF?>4`hRdq>9_d2>wm*md}EvOy7YxVH#I*n|rDp7GnH6?eA z0pn@HOK@Q~F@bdj6RY(kf)X4aYdf5jIVt6iCYyYH>2NVA%sRuk7~4Em!&8*nYjxG} zf%ET_3sVHuzR*H2Iy3d(FIE9}Bv#XLuEEhJ-zMwt8hsRqIl7?+?l-_k_nZK&IV0z5 zYs|p0Q&o91E1#^ifXN0fkA}E2ML?9XQ2l3&E#PdvmkV45BsFA<7j@oH3v6;on3*wq z3rjv-00w~ZBvcQbm*UVOs+9{(E4hM;7rq{OU^6W=&(_^$5^}6AZ70mI=Dk@RYn~-$h zo<7-MxxTCn&YqZ=A<}o{3)D24kJjSfoHapcvcUEV4GtWn6R@-UC6 z%A`v!a9Hp&W7i!r+CX2%xt=>0Yxgf&Ng~wFvhar}B}5n)SEE!1KXE|n_`aX>dbmnoZ@~D4%b2C|VHd(@}lm1XB$CZE-wK>eQn)kgSdjXM1^Wb#disx5cIsCeofD0hq3DGr(q-3drJamL5T z#T&ETqs$53;mqXkgC~R)s}ySWFFe2PhB+?0+nLqH_vD!)cTMG8qHp&vm&t!t`BJst zoIjDZAnB=ffX4(@2CJ8P;t*^_w^6!B;vv*!NI37AHLP`A?I%Xq&9RG>&vL=IxVW2c8Vd^xH;HM#JiSf-#OBx_ZLGbo1-g?NXB~Gn>u}bd9MP|xyOP5t zYZ)$%azJvoE47K93gAMzb?161BQ@0&1dDu$Fc01DHoBa#9n5A zA#~wKR4R&&deNZe6q4!}gx{c<+^;#RT4@QlDB+bpKPZsOE1AgoMg5Cy`OZaWb;*v; zaibf2kVAZ(nr^4BTuN784bI!|U(QJq zAJeOkc;IZ2TU%StVaE)p>R?__W2*XqQh+aa~Ep@y7wv_9G z1!@*@7TwpQ%dSyn_`?#z7qtyc7q_WuO~$scP!hw+tDIm3b?ZiqL%MMWyL94Z$JAKX zUq=g)+^5N23Swnj;-AfiLvTFoYuE(1D#&8N_ZIfqBU#XrOrv#RJDr>*VLZDO(JYBS?>%E{#@8-xUIV z2H#q{{yP2kz@QxP;j@x#o$;p$#}xcBrJ3ryEA+Dyhhf z$gK&_Gm52BW$ECv2}N=$9h15ZOqstYu917!^_6ShV}7dt-YZ~R zq@b^o5Uk8HdaS~2lQ^P_&qkdK5O$Y7eYQIe=GeW4bC*X{m2y}9CDK24!?*?`z2_@N z`jaQNQ)wAW*#!Ix*Mjdx)3vtC)mmh;rV16@XQ2>m=LBQqM{Pz$^gMK<c!TLXS zZN-VdmlnQjn~-j(Ox0(#;aa3)id`LsjS#R=TdGhNzN%h~^QR+RHgo%MAawioWN^Gq zH?-x#%|un>wM+Ff?Td07bCkzDRgE1iy%K#K-^=~X;Na%nAikulhnx^OpnUNpB*Y0S zlV4lS^xV|4VMV<(oKxg(Za;H>n&=2HO5r?)3(a?~R@Uu5I{a%Sq>{`BQ-$ksbS;%1 z45&s>Eb~`BIi7ZzAruc?QL9|!&JcFuhpRpa#fe}oc!$zAYXuJiPQc+(3WHzDl*w(z z=EE{*a*p6bLX%+|T&{bOcnKZ;ibCvR6Tq(7GzN&=6lu+4p47$s6g)X3o)oR?PFSO( zyLXS@W!D|$!EX9DPb#I`*^tU4difBwtFTgu)2^A}0I4vo|J|QMWVM%J2oYx)-U>Xd ztiZJ~zYh+Mq_hjik34lbpxn@=KZ<{!de(J5>C$MDvsBIBAKqO8vpR_$$1W1h)R5DB zmVx~h#%aeK;i{D9QK1yTk-M$2@3b$(GXyJApK`;b4${H@XnX*!^YhJkZw(kBXx7q^Z8={3DLh}6Q+XZ@44+7+` zUg7JA2L^9ivJ7QXH#T^mx!D+ur3NOb{fr+j9)k^}i&Ihv8n7_q(Xh|J94K$m1QSk> zvBVw`4@EgpcG-2;5|9D2Fm(R8hBg0rDg$+-FG=Kvm9+PTlxOlNU29(I;$Wl`rc1A% z%^J&-987L3kp81dH_Lxsw_G%VRRerRAe{j)-IKfAthUC}U=3&bOFYTMc8w_*hOu@s)|u zlqu(aY9T3C(r;IKhzZ8x0 z9YHLynSB@|1pc#&KP=?{S+h2m@rtr?8!Tp+(FREYO>wGM$W#w5QY#%HRNz*NQ*<#S zxBQR_q0Za>otwS7bRQ@m zCK%o^p~{U30uj0{L5(N+I}GWDspDSDAi=#8rcXY|kf0OY6ksq|tbR%~6Xz9T>v%)E zNyy#gv4M>LVzh%;1;fRNetb&ys6;-c8m)x=!n-JD1jA#4o_9;A9D`{3Xa`!`D}D8+ z#}hpaMHU|t(scM6Sz}r3Aki5`?%#=VUF5=88*le+U>&H!=fK6=D!saJSAT;v(tlgm z@om&vLQ`||Hu=|2TcNnGe>}*EX!#QX9sEm0T*ikufbkp#+&`b&cy{IKpb1@}?psS7 zBZ#iv#c%N8KWG{oiD_5iRPru>$k?{W`LmEnxLeV2q<>(6dxe~5@g)8BD9T#7S>!qP z!L#`=d_lTh|L3ZQnFP8GPh9vRL4Q523$$sy54KOde55sjGtJ}GMk4Tif9l(lO)SS* zOhhY z*_Q;8{-B$fo12%n7Js;Q;+6EOgMu{lhItnJEy?I3=Er}pxaiB6jnQ- zM?Q!Q^F!e_Nkcc7ejyzaUvL|);$ry8S8>~!*lW=L4}tl$E&b#UomN?43=BhX75IqP z&ZHmwxvL&o=mRWInq4eJ*{7Ho5@BDT7t7^jxHoSietrS%@4s1=O*DR3y?o?B{29LV zQV2uLV=pT0gs4>cCz{XW#h_^ZE9IFSh^27~3RSFB!7@SY$4Y6h*mpfqozoA_Y( zj)zE(V$~rc$r_G8q|b<(Ho6fNJ;ubyA_w=jlLq{3?CcIQj=>mv-)vrH^+-eQI-WGv zCSwo<1O!+~ae}UCPJ1ZSI*O+t@b}4_r48WhDEXRey07K^fv_YH8Z@Wwz~& zICk`H{ROO198VMG<;j`|A$dYP3=G%Sv9YnqYU`1khK*Fha5;>VxyL+OMp^L3!_!VT z*P2^>`oSxR41Az2SZfTOEcKfv##{^-EtP)z0X6m=H2fCi=Xa6x4Ga{#!|aF#FDo8{ z?a5bijQtaeN0;28rji5Ki$e0D``k)KpZjAOCfsA;ZAvP%M$)P_9qD zqN1Z)LeH3ZMvC4dg8iiCW5kZfZO1on-n@JnfJ_0r8@F*Z7i4(ipVix8{@Y0~Oe0NX zUb4o(+ymz!3wW=>u5E(!5w#q&_vU|(I6XbxWKPY@ToD2<&=lf>n#@Tm(*sBL9=F`Te?RyJ4mW^kAkr2H z{lo%nqO-HJgF^%w3U5*g3poan)bq8};9=u69v!_f$D!54yS!)g z2xENHh!agNqScDV(3e>-zw5b&$4OfdLDx-=%=-FzP^4_S->3uT8swoiF+hibF#+l+ z0n+W^Jk{xbOzjD3XsD@riWJC)b1@H#bQQw1$0}=FraxYR3q_s8QySXKteeB7f!0qcw zY(8MkoueQ=5Ssf=BUmSntz_Zi;^OJqV0j!v=_p6>qsDH$E>l@R@8NbW=4)_zM0VCu z4=uD85)uk?XbnGKWS9C}nSwO)OF;YECX#?gIgHG_yuA7O`C+rClI9*uplA;hhq~{5}nhD(z^{d%m^P z$J-4d?X`q8r0!<)7Wc>I<`~?~q^aHV$0E2UrlzVW>Z+=AEDjeJnvK^FYixKQ@$=6S z_y3xjF2BKYOfAlYhcZKB(6vna?{LJ^{rop^&kp`4Xr}UW$_RIj=)(cXVJ^+{Fz2M`YcOPD9zt}^JcF9@}+fEMVbkCMBok&TswdK@N&3^5hx8+1v@w*_Oy3*_l=0nvlbt3 zTU!;4Cw^vfa$^LPfLU9{rOnCee0>N3zgD2Q?uLM3uS9$rNzQoP-2_t9!r-HS5LZ=I zJsQqM%)BLKz30p7Lz5e!=b*l@$1a66oI?K!xQ zV~5XMrjVY@SN0AL;0`ote#%UUiiYOFP=p_CoCP_W#YeI^uJ?-7nca{{CPVt7XDSPsr}MZYk=ARJCWkVCQ~CT~C*+{I*f9;bI#%BwMf@qZP+9HK+pv1_DHQ zeQsUZGNY0b@D3uE zs=t0ETR!bQ^d^FjKEXEPlf`CZe;7wQg}?XvC||buu*3peyYg;A_`8Mbp8+zab#E}& zF!Quio@2~mA&vX}A1M~^_lwbWKNR}jBdW!{J#52xH(S8nCq}xv zTbX9qtJFd0*HD#^7|cKg7>Yp1E9K_SxG^9!k@{UQb= z9)4u30&Cja&227(VL`91PPsiBE2W}o&YE0+j|X9$H|&j3>ZQ?Nq+GHm4W|k>EH?ID zbhbR3geR|K5Ej}w}9`KPFD#WG!V=je;yebLAX)1{@aCZzc;;I=6rT09qSIc9ItJaG+unc z#D!$ghGrM24swTzt9;y`-(TPA>^F|s5T~G^@LU)0!@1T^`X^7sHjmwHLc+NEpbv(K z2r^c6A^>M4ZKjBfkA^N~7YTUd)IK*o8%eO8W3hJ9doe&x45F%=n@zNJ<(*}7gEnbWNVS0vQcobD7 z^cq^e6vFQIcenj^J<*SwoGN-O><<|fLODFY#x{PssA3q)-KfP>HE-Q9gbKT1)te3Y zOK+R&R*Xm7K)l`1Pgcb8!}Jsn;$OH=6a|8AIHY)|)!}jXggz;~`Vcdj!mm0^pog|d zqMfz$rMgb4*$wtijJNA5Pa|nRZyagX+(fvclY7D!^II&yw+Kl|@MIA#k6@{1oA4gml^t2NSEa|(R;tc14 zRcR6S&fft09QcK+I1LAcI&rr?3$mK}7q9p~5Dm@i{WDFlxJ+bJip8yng>g_zux5J{ z?rStxn_^j*6ULsdZG%U*^4Y6(FoNx=9b5M_R9JB&Zh^B?-+9$HvB#Y2ji6Q%is7EgMopVQJQ)T zyHxgFEH_ZCE6ZoC#e{U|k%crEQUgCB`?~TDt0kSKOxt#{0?}qU4K)Z=>t9;~zAIt) zp@>K9G&MC{42oF?B#vnp1T;*zQnTd^u9;QJDiE)4jQdhTOwa@ntKdBcw${v=Wu5ur zR@QQ!Q6D(ziuR@XqUD63>x@=96C7^;r8{>C1DO}cQ2e#GA^j4dSz#@~x=B5N1$8EE z_+9U^vO0`@0fCYEi73N3Yvtw(+6U+oM#l(&0IliYqxrX~lj-I?P0S1xv~BbR(D-Ov zHkH+j^3M5eqd!4`T4XuE)=U%8-mvlQ);BaVY-bY*LYrw(K8pCI($}W?yXEkbTpaDmr{F=l=8&0(VtUA5XA7+G7s#yT3~sI?1{AO z`Z;xt;mt~v<7Si(3!K%%;MNJ6$Lw(=2twO%_Qy+^nO);Zm4F8gpWlz_kqPdbIyK<6^t)L(rVT;tu%*!^jBFC5tcu7LG{A*{@ zfb|}`V1?7Fn-*lB5R~P+Nu&pE%zxc<780M5qMdn1F&vTWD|oN7($4QaV&)g^vmwml z#1IHyzg_SvhlGn8?O4w>HHNuWp~C)9_R1a0n`jw-kDz6AY^8bl@F9tMUn)MrtcZ-& z6NCb;$D*V`4krTRR;)I^vZMLkIn<%TUv@0V(bJelkk4D)EGtlYt6M60977qu<-9K9 z+mccS%ni<54Q1`sl0iK5omJj*9V%sxzkyZ?8-fnk{>SmKdJsyV?nMlxSAoiSa81R) zgCM63D)IJVNxFpHE$ePiB+}j4-o7;Olj8L>YQ)y7iAXjJ+FF@uuZ7CbC>dP z-uk4G{AJ0p<6I4emXY3u!_H4*TB_P=;Ip@il)_*l{+SO1L}BemM?x=C_stO;EG+Dm zU*2IJm+=nAFZz!gOMja-qu(hxjNqF+y#0R6@S^uT;?L(`{Nsba5vljfgtp<5lNX)q zPxr@v1fSX`HxCu1?)xI^5_LEpcpkd_eQWs^H*Gu9tKxbwm{*4rWthdY=T@d>eE4`E z-!zTHFhRKER@C^(*894jj5bffe{LX=m*i-U!PaP~Gc|_?G9M@SO8v?v?A|W9 zUx0VW%`u9cACHNrwr%iQesxDCOMzljV%?10zOzcD;?~hE+s@TL+0oHy9c@dunp|1) zysL}oKyi-a41F6WxL2`Eleu%TbcxWEy!UuxL~cQNdTG;(rq`=?#+!0QYNjA#XVwJK z;Ii61RCF@hX?^?ZGHY-xUG_?}=Cozz7bFLD)Et@XtFK}&EJ#QR0hzq|qKg9CQ)i2T zJ8emHdDlARKgG&@u!aFv{qA%XOH*)WTL86xLNGFR6 zA77p*-?I-B&3~khNqP5MN_4MIvI6QUd!l#|Tk0!zLk`v>37!b>jh%bx+CgNjLzYJ& z%ZguH%gI5nX^oVVi7#HawnsXa@;295hiP;m!~Gs`?!dndofa|M5cgh)l^{RgiJ)1r z!|NUAZEPtzL^Qm2-+3x7Gj}%Lef(^7s0v>G}CH`p$^W^{p}I zDehdjgbSDPfm>2ouGq7u4M|AK=9XN>Q!>_vK@v};L}3AU$_h_IdzCe0Uz|-;z64je z@3v~j-71g3db(mNe`+;T8JUndN3DusCowS_1d#QP$Ae^Vwcwkh2gQL{`pQW1TlWyehc~ zzA7c@8{T|jUR4|0YI(KpE(4q}Dz&OOkLizAE<6VhZWDwMk9ZJB?^b4>b2=Op?epB) zkfn*LWQfWc78^2*eBJ=#I_tT!x>a}U5#~0o)%|p1b>cS1cI$|!E4zc|za0#`44AHf z=z)!jeH_C`rvi>p?q#EpTcudCf#vJ${g>a06yiW!P}-iKe{SIHGOl!I5b5;%R}GDm zgYylyQut3%p@icd_v#<9IR*v|YOOp*P&xbH|BxyO_7eZ29x2agSwSVrI7nw<*PoFl zpMr7(qS|G_bC~+D>nJs0U&k$PPR|%#+Mtkj0z6yFUY6?)DY=c})}y=M4(Y=V+#Z#O z5ZoT^4PbQAj9g@}=6lPS>EPy9m_h&wfpmG=^5e9OjOFr}TUqdzOkLO$)1Ua)xP8PA zjUz@+IPbnDHSvM*cMEmYDkP#JMHH0PKn5b~YBBv~XL0+5U0btC8iDqMeSt%_8&p`a zeyGS>)p2z83mK24x~(HdTST-ct*U7>5nh{)9wR@0*9#)dKn zwrc|h1(9P7#!o2o;4zksJPikKmNJyQN6pzrM3L_RK#l-F7A;S@f(mU_$B;ypx2A6& zxIOusjKSmO^_1Am%pqCZl5aD2XZXB;ZDH12pfwnnV{Z3IOb%S4QoY>(VQyU-r3QF3 z)Qyu*_%9xhYC-~)BhEU=-)d_2?zJ5X&HLaf(AV~ulY5F&yCtMVMfP7knxELFi1n7M zxO~i+-gV)X`Ton@uo+>&!#{{%-`ca8_q)n4ty$!N#K*r|@$uxE_RLN;Oo08;XY&f^ zbv722$ZCUFvA621N(;TF#8hvICsx2?;*eMfI)dkH(v&5Ib~T^>(A+OG9`$aiJRJg_ zJ)QYOxtq#igvN|3spBltu(|%M#uEEP`Ad$v8xX-N+==q1QlkIMblPqiy%!P7m*axQ z4Fz9?;ws=Y;xL+CBcjzU8>KGn)vMpA&i6XR4sx@Df8P&ZK2DGC!E8hwbqK+N@^dtx zPwTbcy$Ach{wtAJo^_0W;?!m>V|Yp{2w;-)m>7UNIu4Kjk9)*u)bg=@K9Odm#)Xvi zw?;@&s&J>~xO03DZUyS&ME@r-1l^M2ytW2Yijwy5OEjsFF!lleuR_1F(Hu4YMp1yG zt*sDVP*Csybs;`CUGHMupJrrkzAThhDo^G4e21gztwk=!8mFwAvpY#VA1gsNELPC{ zw+X%Xfi^iP;<(?$TrQSt7ya6J`<9rj13M9QbYxp${9}jIvE={I_Kx9sMP0jS8mnPr z+iui2jh@)Hlg75KHnwdvwr$%<s z)>Y$?{aN$zNOd8_BH}hllvZqPZRt+3X5-@3n+b$%XgiUS-r!`#y3N~G?tT|DJ7DWQ z=~FB7D3c&V1km06Vm5$lm8LnfJ+70?At5DexZ?twxqTj}L^Cq+hF2$)Hqr4HGok=b zCvFVRUUwV_qnL0Vwz8tZ^Ju?hLImEmYZY9-PmXC5It{nU&y~395x1r*C`uz^>zQo< z1W9f#G-vv(*&o8_!N@K!-uf0*by0Fmw5Y^W@?UcViYt{=EdUUn;Bd{+8O|87va(WI zN~7?F$2$BNqVJyn&vng-R9eAI3_G3$6OyW`YJEz5HvlNuG);5gcyuUg$>{R!d?xn*B-p`!ViKjfD(8>I0#V1NZmCMM+ z#+J{C-M8kUC`$TklKAT4@>0O<=k}Uy*Mv2DPQV&OXH0Nz$EBNtF6Y7d%C_QH(FVp_K9r>L z3+Ccyp+3<5c)x;%Grm)=PVr>|K=V;1J79dHzXt2@|251yDQM5D)_Y)}Q%H26DnA5(L230dRgMT(m6 z6o9BWP&LqCkLD78O{nt#2G5YZfh2$HH2lNij+3t z`R`NW9abs4d$Zaj7S?R2qWK;95j<`hqv0vZcB-U8mCY_iQ&+`k3;|Obm9U8&*U{MurQ%w5p(1r$(RMj_9&;yY>qD%Bf~0rC&q7}*$b zkxPvSuhnxBt7z(IT0oVs0pJ%Y1&_6tD(-+78q5w4o&bGBE#D3j797;h)zZkG9-+CE zxUIA14W;cSIG}Gn<}a>AACYsu4HHVo`ME5{#19PcnewKMl5HU4(8URm8;Ka>Myw4B zXj4IAb7Vu*ZMt(D@W7UDT*yEUryDJVK`OpgQzE!P)^Wr;qNjkcNeh z#9$^;6YbdJG8*pb_ES<>sD1_#;tm(8 z=$#2(?%qSG-ExiqoXm=-O&bxCmLG?QNcddD)4f8XM`E^~TM{SlPZj&;=RdgHMgN+T zIiQg&i~sBN2NQGrS_cUdG8kLdZ%}~rF!fErJTdp=xF<;67*&n zXyt^->&7OFCjgn1^Mv{NR?AF!UV$Q@BU~JuZqGC>TFpgY0nf(9TGV@n{tv;srq9%g zfL>Q)1Lnw)=7CL#bB-WS=CQTa>Lfzbf>YS$2Z}^V03K6Huv-$PqXmR}Z3D&)+R&op z84tKks62-awS|m-M8+akdWbdlQuV3u_l`(PP~110b>oxQVU&98Rc5)8F+^ zwP_B*KTvE4?#gGbz#?*CWo7htpJQ^BE}d2}qcFBG>9&`w`hzbRFRi)Q7NxDy3!>_; z>K*%V%4E_=(x&`@9)ELicQ6QBPM+SR`2xM z`Oi4WxDtKs=0HGE)X%Pw*KF|jE(rOF<9lc+M8u5(xD+6n%)X5;e&G;i#fgX@w}rZP z(ONH2o|D)9EA(e2ZP$Xrx*S~;ggCxm-aulMVfxrDn&Lq4T$|E-X*dCFBe{_BZWIkz$Yg6_3 z*H%f>hIu&<5NBp*OvP=^5M z!`)+RS9?!4x90j7FjnEIgYBNce^!N!!j3e?K*u!_0~6UkiV$Q>2Na{pu4d*wvU6_J zRa^>HO~%p@0QrR?5#-UueEsT(hg3qEwdwNx4t50{z8Nr!bh>;py|WK46k_uVc7egP zaq{0!Ms=u}D7?ed0(y;oZobZ78VI02K0TGj0R;P97o@bGzaf*7>Vw*U%+D)BB7HC~ zSOnh(OF(Q|_}~}ufdYX40U3361Sq{=oeNrz1`)Z8Gz6kg2Log1fZoy8oJF&V2TaGr zO~yZK2Hyy5%4xtbUgsBUc0VZ%jKPwW4C8KK-r6DQ;6dB-Kvo91gO9Cfe0>v7pbu;6 z>zGJy?L3$01E^4m8x9GiD{1Lt1N)`1lIUNtBrly(Ul8=6fBhDmRx)pM@Z!98r!fuu zTXr5KAogf=#bAY&dadBwBa+q5e*~|Q92MzSdxE4WDJea0v;T_FAVWM0&^}-+4iK*w z3L9(gcSU^*tO{QFfZddC@YQq#kbUyVrC(;3tB^>bHrwoM{tCePwPkrl{&iI)#NPaX z*o=PCKPEx=K~tpP`>?V5UK>nx0YjMFO;7%oF(du$W#DdHEVf_+k#aQt02v69lY!86 zF<6i|6d8B8)JN93;u5VC8UJ5>a?aIB%^SkJ^z`&@JL^z3Vc%O?xLH{pe(#TP;Zw_p zQZ=GVlj2{c)L$}Lpj@crGV26&MWF<|If&Tkc(f7zTbr9c07<>H41mM=n;gS}8XDM{ zGJx<~^-`O_)%tqI%B9#LJaQPJoNaPT3+<6#%5~%ZTkrltd1V!bJzML4!&F=nV}~EEz{-m>n}Tw|oJIibLz$i!jNh}Le~-a(FH=U49d32b zQ-8-gitrEJyr2OBxP5(nRU)~*F6}r(fb9dYS+HV{t!w`^^#C-rP8rAHdxq$`sIjU= zs51h}Y4Vi8)>2%9^E%hheX|GOsAa>~jmvLu1s5(YjVX%{tnOy1iNcLoAeI3Hvr!Hi zj{oCc^(}a79MW5$_Pmvmjov!LYHDr}x<{MH$<5>PGC&js=1W~MW4OBQ){1`{X3l$n zZWJbMI~D~m<`5^+-w6ysv=A;n{(hB|!E%iJY9yiPUpZIE#>x4E!D&taBw+@}1Qbsn z;on%=-8ICIf1w6ss;IGtmZ>sxTs-;T#+~2>q7t(02Ub)5%C3X>=4n1&-u9ZBZ@SDL z9oD%me?~{)gPK0R5%f|473EZok`zAd1?X!3q;) zSL?&uOUl_I{C!E)Wq;BligjUmst;_tlVp-%_lkFxa31LdiW@G${YHj{h6V;bAuehF z=;Ho`BoAECtZ%sFXO4RlbK;h5H|F#0e6&3-Y{6Fdq@<=zn-QC><#AS0iG~xe2 zo=V=W^}u7*V*N)=+i=}Fc%!C)AvbPoYiQJ_hd|T<3Ihk`antkCUQ4E@qPjXBRoD~( z2I#y)mVx?g9xyQK;Qrg;;bCCoh^d)bOD2SQ-}rcx4kW;FlNSXh!9Nbw^71m5{Vrtm z2o|IE_8WN*uoAG2taSiS1bw7UHBGMp96reZ$<+K;iQlFwy0GnB61s9G{qeNC9?{uY+4r<$;Zt<>ot;VCPxbo(QQy0 zxJM-GhseKstlyS{3xJFe6G8Fa#@yTnQXJ?0`qQ?0f7U~E>CGzO^VqZXIyEh?H@o$u ztJB$5+*8M%i)mUzMx%vSna??W~uo{3v5dQJ~#D%_gAar;? z4u<4MUIHk+wetPIgPcxBdwS5%=jdqPbfQhIj!)OyuE~c2FIHO(7rw2}w3+#r*U@ss z&4BOmN=yW(-2Xu`RG2mbqV+IkZg-bGrO#~7U)-P9Dn)Jp)_C>4zhLtO(SG3C+rd5m zYhUQYWJLLP{TYd#^KSSXb6I$FK;|DjyPXtd+Trm1mY7HY@P=Dt-j*ap^9J~^WG+&@ zQ^yPQGY^!N8BJPcWo2q=Dxlsjs=!u1ZyewM+IusT{;?sE>UFCfd0?gi*tHN~Bs$~( z%vVuf_ap0X=|CQsna=?Cb?4%J4quVDfiDPn3t(>-&l^F2DXFsZ7Z#;NzJV80&M*hXJnVJ?tk|iU+e!z0Y4ld9r56`EBU*t|L zs#Lj>ro14@;z_rV>$G}WAe;;^9&0>2jg1Qyax!e?zlY$b1459|x_$bSGf-;Cbe zzO;>1^DiS)jl`%ZVlRU!;1*oDv&u--bo1ixy=}&Us z=RG1B36-SyX{O`59S}h6Kax*kn+}%E;!RzC+u0$UIPMTfCLY84boM>mXzBjmZ7@D1 zjXVZpO5hK#4r%R&zYN%(lk-3rowbvB!8Dc)WE^P83Fc_rlv9y zP{V~x-Aw$PeB08$+8 zfR4UWWbYRy>*l4oE+Qp0ZF$<`J=43n0|K()6|Ngu= zZcY~N|2%H4LuVsyquIVwEpc;4J1hRT9c(}sV|BSI*@~j&&7O{XX2M>i#&N|*lk+Ij z=-p+xMD6>R0O)CAWV{Wqk$kHK%K`(=PO*Hr+a<8!FQ_0nr{I3VUZ?*&one=qJ+FCj~yIR^ho_EIN?tYdR51lp*0jbo^FJ|`2H+=cM zO~R~MW$ zuFtE=F~YiD2Vh@bLv8LZzFWB7O}>`j{ds)pgYn(`Q)-E{@w$cNyVCKx6pEacBKGI! z&mL2<$6V}_QdG>f&x;2Ou0IC8IH@4wuiK!jHn8ac2miHVKkBHZ5z*9d#Q#uhlcJ<0 z+}POKdg+B31hTkYEJ249xtuoAuTCCeK-|oh_lY+AacDNb73d)%vf0$`lQWvy5x%tD zx#U54AbjQW;UWy_z_|CCe#&oAyd+BZZF+jztLA**F?8K%3^pC#^3K zu3s-*%$F~IW29U^pRDZZv@n`kxJY8iIPZ?yP@gnzHUu($us8KBxr2(*@34S8g}u-} z%!%mR!0f2CDXXJv&GPrO623jzw#j{oM;_vYiBA#2b%5w{Gs>{De*J?oi~P+S*#htR zF}@4Y@Gca=5gq@t1YvMtU}l;Sj{UHO+KD6(P(WSFpYW&`F;=Yb-nwG4bNyw zH|=<6RZt-&iH^$F(if=-v(TW@vuto%+MtVsjWhs$JG0 z-@Mrhsh?+Cw6J_oHZWFv;sSp+k=#g(nOwurPd-1rn*Q7m`G=UdWzxwY4;eQ0v?J3k z^R*pjr)(ihFLKC=Q zX2vw7Ldss23|`BGiM8{dQY;Mdj3S6!fH)D_JX>jw_$G9Q@B-Rmghq6R%wd-*!>LHQ z(Bi^e55f#}R^-)SqsOz0`7eRPM1; z=0uPIx*WyE|MRmVk&%|q9iH8pp|uE4C%%x*7%^O%dAtAad|AxB#N1Z5}7blVMXuGFS3r|BMFMEQ|=jYc}rAE zve%Esqv5*Q(%ckmbg~XgWV4S+KHRYm$0P8AF$8lzjm2+D3b0Bmv_9S0v%VbI;X|6O%< zM2=RW>2&p+%SlU=W5xV<`%xaxSctZFFN%cC1-AKwsG^CQZtXs})62f9kIU09`OB{L zzUS7q)>qha$0b|+ybgcO753-X#n-1{Of6N7f=?zZ@U_%BruJ?ZE*M_LlA5Nd%0m`* zop#1t1k>JzG!$(J`X1XZ#mt!uh2#2u`soin4ucXlHDI+Q7=xp{3Q;yXQ=e{$p4j%B zM2Y$oegw~ic%G`eB5B!~^B#@P7DL5GVvzY3H%G*NXpKl}BiFfQ?6btGy%BFLOAP!R z*mNB6DdY-qF+vxARbs$HYiO0xN6805okCh`tyQA0{4$afSNG{N%oE0=dXDw!{`7}W ziz7~n(=d&D@WMGN2@9}g6@{x@#hRuxMdwIJb1pr~G8!QTW2>59fInHayfM#zYGX2} zYtBVwFYTY7)mM6>@n~_3=>_jPOhIjS)0+JBp+VLzXr?Xs-8Ll1%wa>c^67*YdpoDL zf8W(C$Tn$Uau32h zIs>VDhodd>+c3+rIV_H)j5*QcHniyKLCa{rd8pWTT&aY!tb#g826!+WT+`y=>1}Dz zu*1#Kf-(=t%@sim@a-msiXx+ISg1%w6QV8oR@S*RbjDE3LF(@ikyOFN`Cz$XoJj-s zXhxg;aqa2pcu{*;zNHCW%C43EV4ZAIWOGziPh`F-(8#r zXS$2Qo1M2tFDa|{R!5bW5_lT8cFaW80rG5xp;|m1|D3)4o`0<*e{d|eqN(|L!-Nyt z*S~}Mj=pC^FzRPR4_Zc9HVJ&Y9YzeOKMfmc3Sp@yrL-~JIrK+xIkaR`5(EP*jo0o2 zitJTy)^A}D=LkZ0C9lP3kAXW$rv9tB#N3yx4^^isORce4`3K*6@kMa8D0M9{x>RNh z>{O^4+#ewpG*L`b-anMc#`XHg2@A1<;IY&r`X_q|K?W*{iqyxHpdBKglE+5T;jxXtOHKG}p}H!l>iz4d z!ePfejO3P0_^5iBPT@?67Z6OpiFU+>lP|tNen7;>ssrycf?{S?e~0g;3O2+J3yUb1 zVBg2O`x8;l68hznb*Owb~2eJeBC%374|}{fU=s^AEv}7%t`dd-6E<_&|}`F%r&cOE&xSkdBjKORiyYB$%*mV8E6i-!-D))^5c?{bV>1a zp`O%03m4~y*{t4Yq)ByCio8=qd7CF_cH-19k9K3yG7OLig$fC3WiC9CJw`IdVYf(A z<^qI2w~UCMjeit*9$$h*a+H5|nEiNscuAE6DeXxS+6+bG;{%~iyrf72Wq3(Jnxsgw z`bj(pIayZ3Sq4o(fip3Tv2KCFjgToZ>?DLdFTj)(HF_OyM8pXrO-dx$ZNSWRk9s(~ z#0Er4TMAScW)v5G^och)%+!-ID=dx5h=C&S?56g&!dN)<5;$evMeDaPhxgLMP7G9e zxlsJ5H>y9wOQxZL4DTWmB12g<;U(xh=n6fE(jtL4+N7V@$+E)Wsrl`^hJS}sGi^fz zV*P}eLb$glfVvk^PO9x=?J+=CsKvQlig(!!FIgVvMGYnsgE(|hQFEd!OQEUAFD~=Poed3RREaJ3y_002!ZMJ>ozZs-W*EL)S6 z`?tTQIJ+q8xNsQ#dEB`A4E;53#fFH>uKha`XPx&8pB0VgFKi#B z^Gp77pZ3;IzD+yU`Lu>IX^Ia#S!w2~FZ)>$IT z@0-~_Y0ze8mdEjkbl|G25v%W0$R*(CO@NyasU*yTTER={tkcNcOTyjE(Tj>*5S|0Q zXrd%i;YnpiGD|WFTpf`QrrQ$3vbGN%sU&~mUVX=aCG;hri@0qS{JD(D+jF(#9x%j# z5}`Z^nYA6wPy>lvsSlSmA427(8${(6pJfL*6Ei#aze{~u6DocAg)VipxI=4#kM3W1xw{djq+%1g zf`7ztZGE?d>XM1O$Nz9e-H;dLaxy3gan$Tn;o< zjc_4t9DrnN9ME3NM^T+u*RA8(#BO54P}yP)IlGFfncO@uCjb+6{nd3;aHT9K?bD?Y zgSC1mvP;YG|)SfTt^6%=QUaSZ_ijK)F(qiiI%;Jr6Y zXGKOqK?sQ|6-Xo~)BBR2A8d=%?F-KO-s#hqq`J!Q;?4~nbYXnFoZ1Nc9E0P2>tnS~ zn-kl~Kg2{`lNr3eo6dF&=~W5%mAf*X8$5bGf%EPp!hG@6X?x`AQ4<6^@ff0p|-x$EsH&Us;uV06OILp}q7h0*0lHml^2czB^Ff(ndK0FHgBuzxf zBNcFNrHDDo%e=njPl-qBWzkh^NEmUL4I$0jMua@^I_hBJPg%{T$eB5D$C^d`;}>-1 zn%*k1inrs@^Ytt0qZMJ9*@b!OnV5Azb`{LMy38U3?jr-T0;dMDI?9jXdIDWBz8nj4 zK0#&7lXvV1>Lm?ceEJO2V0cnA(+4g7P9~+sgI^?G7+QF8! z7oO{@!G#xI&l#ude|nM)t{~ZjoLhkigADN&7y=F>9D?A`sfPQNP`2b$uS<3ef0MR) zsCd<$OHb>@oKmra)v5m-sTS8T3;}_oDAoXW0Y!@J$G8^SuZLoEoG}h6VTtKrmm0S{ z5#e8lBG4A?(}?`L?cBLRj-)|W0`-BSaHI=R_432qu{~*i>u5=i8T0Cs+!(;_r&`<2 zJT`O(Q39%9(M)vI3Z`L70}HAYWyQ!EcoudV(t{HeR{X&<1jpRLK6riDT5xRq3a}Ut z6ckI|yePa9)X?f*5)(PD#plfIgr%t((L;+f&Z^PHRP2Nr+$v5rTTW`_mb^bptvWI5 zW-6+fuD_`ul*)J*vYNd-=iJFLXz5E~xO0f!yIgh_6q<5`Un;B}!kAoCI)vSmjQrx$ zhaMt=9l~-}!tc8H5_XRtlO5b=|I95*IW*O~&&7X^H}*^IaoXN1B7XlKTi+sPD=BDi zY?MY7FO|0wdPvWr;K%*^up>k+=TSz(x4r7~lD&JWL-=e;g9=J+pYne-`+_n&tB!xM za`|YX#xT(pbMZHD2>;;#*NBnxSC8q!9Jcp@|DaK~1#8Uxn&$c!Qm`tXIcGZC~&{stO^B@K8{LZjB29DfiXcae}1Q=ibZCu zy2_|qLdFo@wL)EeS$$nTP(Z(`d-U7a1t*o#VigJyr-q6q$`ADoJ2!5XLjS*|Rl?QB zmh>0FTguSh?UqZ@`Fp8^gNb%Rx1bKIBqkx&Gg)(W8>^JkS*U>IG0G&_+Zp^c%Ou%k zbZCdmSFo-tKc9sfu4sP^j%LOTXO%8C#}S*ANisN`TCZRo|0JRpGIAqZj|f37$GL}- zFpR|@8fz~q&l%37DS3X+8ij@0WlqD+rr|U_alI|QADLvtGmFJALwX#U6rSXTGbk0V zSD$e$bDvk39M@@{$~=;6AQpemq?wh{?>)o%F0}TrSDU)81{_O_MHUxh1 z1uI&uioT&bsGcS&dCAt*M%2k5&UqBrbw@ubYtoV4s5q|_Yncnzh}4E~V-tai=0@7t zsgE13etW0jD_WnGTA7Y1k2`_ga)cXGJqE|Gh*ZfJKlJOIvah3ypH97wj`@2)bKXSy zd#Asb-&NDR%`V8~$zZ+Ui)uEsV}6$3>w-t`KS41SKGE@<9KQy%fPd#FD&N@%wmSNl za3R$SYV9JPjCJ|cK0*hnVWcH_Cwf4>@pXc$nS4vvgu)AqTmYJZeZ-7hHqrs;pNv{Ps3EeK*riVG|px4#PxwHU{s`P?}AJzMRyg8 z%fNC8YT>sT(8|Faq|~A86df@1&(f8F4~7_m9B}1eJ>N9VBYP|10af=!r=S)u)T6HbX0tZQk?6H`b-bTJufNPuZ!d`W~>qqC6BQbG(8u_?x!vqsAn;f;E9?E*9g6LHQ+b<%kpS;IN z#&DN3b0&;RH4a(+qzsZsc2##)!`j9tD)n23H)KJ%cW2x!+@&!$1-YDL`p$0-Z~lyy zxG40Er0^44GM<$AMHo26bdCHXjOEv+P@HMk6zpL8AJ>Clb z*}GK)H2yG1I3l8eAfg8aVYg~;;bEjD$Ozx+j`eSMzd=&tp63T4hvdcO`k}}7+?o>@ zu8&C$_zK)0!dA?aQMd?4mgS`ly{^EUfxU}`+`!Yam8~8#m&&6XrduO3-VqJ6B3xWz z?D_GJQ+9qkS9R@jJd$jHcRWVi_?w;#CX@n)EkiplHgLoNuxDCnY|@eW2Gp51Q}Uj` z5VnpEVA_ijKP$_kAsU`L1k_G~?PDRV2Y={6M)sjfxmy%G4hD=s$rF*v!gQyJ#guuZoF-+Wn8^zQWno5B z{;EIfCy&9T*k)eTPFahM^qES<>P9hyV&(!+iyLBnhA5vYjU;;r_T8E-N6hp$I4RtB zO2f)jHpKG1%_x@-kGW)s$N@Qy9gaW$-4lYPh`&E^ki6e^1BZTVq^X;~bV1eBePf z+51VQo~$_hybWEnM%qer-`iD@XSg>btoc&bk}}~SgL}8Lt(L%Ii$Ih7yiKY;h<+Rt z{&YdugM4MLhpq*PG>iJXRt8-*q5hafi>JxtopzC#YabP_~t=L{Jx;Hz;@ z2fP~!4f$GgEtx<|CmA4eP7X(U$Ver0ia2cok=>}X%jCuS_zT1+TB@jo3Dl)A4Q|A8 z>FS2_MWL*M<~>?N{Kv4AvALW?!5C;%{4D6o0sD{U;eWgzFTvs?70RrrkS9$J=3>Rp$M$Scm zJVqm;5;Zpp!@f-;p^;FLqLbvNf=r}cX-Ge;q5>!BNRSIVNJ#``BuEDhc7jBPLE$12 z9B|?C%phW6rFeBx@;-x#7G|uZ{Qv0WUWbH#syjKqz;wE8&L!o5x-^v=RnfF{gj|?_ zLO9PQ4mK68MqpygR-o5C&(n=);G&IZIp(g30KdHp0_l3k?}vAlf!=1Uo{y#(rdK(J zn14#*p&$}-D8x+y1ZWf-rp($4-N@J2T^I@JKroTkGU9u>e2&?cbwGhm`D0$RGlPuG zbN3JVcz;E71s;$LW=iB&_{*%1Z1NN)&~bHai$5_W-?w&}lPVHTtIw2TsK^V7~`WXwgNwQHW3^QqaZB#&VN zAHZm9IoJDyZ^VYwj&smu(8w4$y!5F_A1OwH!4BDU*nn3Nt^>$ZoSYCG)XCJEQtJeq zETF{Bfj;ak$s1j*S&|!W(M}$)AVwD_u@~&Z9PLW#fXnm|-I8Y#pF0})Jj|lKNkV$> zAPM+K(E(TBRz`9!Ga+SgjM4y?NE&VSz7%AI%k*y~W&wEga~MYVwmy{Ie4yXA!AMq{ z95HCAix0k&sD0I8=6pv*Q{m?Gp z)K~bMPDV+`#MKXVF0Qm4W?bSx<+Gx@f`;_Ld#s|tx>7GpS@J}to#{pVALNO?t#GVy zqsV>@#`w?5F%a3Yqvc5jzw2CR6ZH(Me6@2tSrs2*3V!FYW*;~5@#-2Hu#F5I)y+^& zx1Jer==Lv3QUkC{^pI=xN`iom-$?g4w&0&;us7Q%&P||vom(t0Ia$wKH zV5r+gci+LcP)IvxCV2T7o~1ka^@74-sEy;97v59C!B7`b)&k%DdKnMO$yh&0`VsE8 zx1pX(zJhy|(Ty$pr)}4iRxL-}U4VFgDXUqTW}Wo%rY4`LMijN?xv(yrW9$pZyB{6w ztcPLM4nS0evRT2}8w0R7_O-_kK7@=BH*I+Oa*hQv&^RY{w6DLJ}(o2e@r zb#S$TpD}!!`EJs2++OG+{0wc2`&r}CqWo9MZ5uhe)U zPbucRnOgIY72He&kdjl?=_NjW==$fVhZ}Ulr7Sf7ZNBzqop14Qc=0(P8JIzmLlC@zG+(FVyz;y#VWkspvtjk--+_x+-$ zS)x%$Qhu-EriS{Rm^ebeqpJ7L`Zof&B2N~DJF2~qpe5zJf7wXn`&1}@K&T6WF~ng) zqA|E9?HBe#`GdBCpx!Z2Fu;;a|E9P27_NuH#S*TCBGLU<*r=n?`H}R)>)X|UbDanY z>Vy9I=VqXPZUUlITw3b)0@IX?prqoqtU7W9o{>1fSD;d#ox{7jbNyD*9!jtlLgLNk zw0A*h57N)H|0$%i$7iXXM#|ldAMsH>f}AGu1DvUlA-!CzgB|II(oi+nxfd3|lDH`L|t{3_)_orrg=i|pVyS}+J}f|e)C_^gMvTOV=eBH~y; z8tUKc+P)iJX%g^ACL&{QoI=}{juXCE6X01&h39kHZVO*G^rs6NuvBSq#FKJ6yK&E} zswJ#Otb#1t`nBaS2=vodEoDk8bJDe=wDf6No43Aq0frRaz>IGrD{)@Q*uKxGz5N}3zxQ_AMZ0^?LweYH>b-kwmYJz^Khvd>V%PK8H1YKn7MkVsaP{6 zgo2thnr_jndRl_Z+;A?pQV?Y+;s(%hCU=Q@wY2+g8>eY>@czIFV@9AmI4)vi)bFxJ z)L?qT_2~EAJ2mh4CBm^{QZoiB@e6!vf-$pV~KM(K;m56Ne{~PC?T^o zP}eFgOQ-N!vlU-aHIiM^5?dIgi^qJE5togx9tn8wci>qw7e(q@^jdpfhf8vu z0zFZ>*C6CNbsl%8FD|zsG{mp|m|gv;2JttdY6^YA5-Q^TgnWdopw@7zjX`6dQ|^S2 zosNo}ZYy%q;7N#9(CagW`ReA)OZ|jVi+K_gO;Feb!`@u(dZ^drGW9!^K}iL{Y`)ZF zG42cVHrA7iOi7Xt*TuFqlR(cB+;&7_3pe%ot0_arZBl2$qDSgi;`e+WM(jR~zJyzZ zvR#MzU$&z<8#4pb zYEP-3FAj-97j3PhaPU4fT^r3R>RWun(cU3&M2i7K>X6m8rCID zW(9@s^O=rV>sL8Hq4ib<0jQ1P4l+Cob}edN!%*P!s?2RI)^#+Yme9_*qP_e^%M$yu zdImwg!fmRIm&YbtC(je49y^LNdZ5L@sWdvT5H6KlbMEHT5YzYv-(VWZV)zs#!j<6S zk&NG%R9$Lz1Cz~n28|*UT0GtvPo>i|>HD!4Rs_cs@PA-v2cg9N8x9%Q|0fO^8#_10 z|HdKH*09ANLiM5Q{=@v0M{N1bF{YcDSRt;myZ%FXQarYgx)PnoJ4-c^WTfAhN()2U z-s5MJ)LzR6R%%NN8!CEwjt^%$H81s@e84tV&xbQR^{v<1hm;o&_wRpxuN_SIc3ClQ zRb4i=-59iO>2&%&zW52e)M)sw^LpLs+&&Me++JR>Nm9QqM17Akh1v`HRZ(%X)OYxN zmTX(M@vw50e)WA!jowJbiSq(C%2WI z{nGjvT;8tzLiUHD?P2XfZg%ZCpgQX} zLc=40z(rHjmuG12-w3s{I$C1V)7d)zRVc1>AsNY2`&(U1n}I@KSHwG&;ASdwzYz`Y{BnV& zuUfEMo`_@CvQImwkVm58W7tVt@CK?McF=Z{S>xfIp(MyY&5nOHk77KU-6AdUdU5w| zG9dM=oyss=InYu*emuE}jLHhpP#(lqX#X)_-5mS2N04t8NEzvKdNE;rjcTY`FUnA285Jai9mLsc%48)<^g>n-U$c0Ta3fe?dXI>^DywVj<9stOG`vnO3aSxA(~tlM=F%6jk=zKbXS7f42*kScK&LZdv4b zcbc77di2qr{iCdeHYr>Wxf(N7bN9M<|We3I)RQZ(Y!;&bUVQ}^%`M&uX}&kIIGGy-s#A?nSKuzY$Wtn z7cp}(D*PHW>5M69&sH}j2PR@sxC}Ksa4cv^0r3WDD~Xe7t|khL3N^*L46RnL{cnT! z6a%JQndlTTm~3|jC|hKG->=Oa!_#J7@HtcCD+cO4a-N%qK)2!@^S%wQ0b8e9Z0@S% zeYjNiJTL9xle@Arp^4go*mBvw;4)Cn%mm@4R9>GMR2rgL`WBSN1x*B1d^hc*GT{AP zb*bcfe&|ykO4hf(BtFe90>QcH-Y{~1|t!70ZSFA z7ANn6EQtGEA@fCFg2;kGN-u^%hr*M`9n>8dQkZz1YnTk7{TBo|6Xo(7q*1Wm`SP=c zM?#WuJ``h4k4^vj>??#x)pYTGme+`9{9x|GI!P3Rt&(@1)lItXMHSD4uD&4~TsvV%T>qRuI~AOnW}U5d>~j?^2T&G0 z%K^>!|3lbUM%T?V>xP*cPIj86;Wmsr%*;#;Gc#ku)G#wMGc$9;)G#wM-QD*)-+{aC zS@(yR?2%-TMq^21Kbl##4Ka`rjO|UYz?UC4OX+7Y@eA%t4z+Hxolot}7G6 zbs*1g4r1aa_hrw6s?@{xgW9)D>Ax}zi(+aSqwu3pw1jb0@P)R7$lQGoomQG>;3~Ow z!IW)PW>;A;V%N-GT?6O8x4wZFXGI14v5)8Z-QT8aLHZdym7-*dY_Um(>rT|S5DSRH z+~QNntPTWWCXNB0A+?IYyTyqi!Q{3|*BQ=h7=}gxus{Fsa;KJa!hm^cefzXDosBp{ zAKl}}`0}%ZE;B_|anyLH@`h1RQfiR0yvUrIB8!p7bYtifz{E8FQh7B_ zKx0#s&zO+{K)D*X6jMlPQ6@=EL5BCI=ap)+f(iY$9b5WUoOHgDa4SDGTHnhWz?rGE z1GP{@!_QUXoGcV)9vj8dGDMNC6lWPEjwMo)9IKR&rG%j@8fX3umg3L4?k{(a6BQv&eSO~F&JvyIn7Rt@p-D0nh+oCt-emVRuKB>Y^9$yJDIM@NiSz)H%nUc;JJ3Q zuCUS-jZ_M+fAhX$Pjj&wLz~op-XEK$V(UydP_dQ4uu`?{Y^6Fwm{fHsQ15|vV{Gwr z$fXa*h{7#G3B+^TVXL{e)6YGoltFqV3&M~^H?ZAS@`19;^}8VU#n{=i7AXO3hpyQ} z8wgD#^~K;c@3+k*3*G6DC&s4Gh-H&GJ^Iui`t94~!SAJXAibQ#)KMN(AkU%=-1gqY zKx+3VI_0^ELVdXrp%!ab5@LJTs;{LJ(>bmerczF5bp{c644Sz(eF_UJX*!Ad4mVU{ zN~?W@H79x*K{ZQlc@=q~W~=c-4GlQm1mYgx)MAFa{WhUwUMHsdE3A8VR%gQWk~7*+ zh%=@PS7Z9zQ==dUOoj#Hc9tu?dgtj+n&>d>VXbW}pYeC#5iY#o+Ij8*;RrbzF9hXW z%ZkoLUbC+C8+e!6K5o`~FwuT2<|BkVA%DDbPG&cQzxe4}SmMzgaczW)mg5y7slbpL-S`1Ll3PiFQ++;{*~u@BYGj25axk+J(#Ii&n5*ALf@vpIprw+Nj@L zhJ`HxVjbpZDQ$jSz&fH~g?+vYEZTh<8{+KWN18t|t(oih@=x~-dY$=Lf6r){?6 z@$#Zii=+oG3s_{}U(SctR|#irDCQg>%pka{Y-@tIX}DL~a@ka@sjK%EAXd6ii!XW` z3DmTbMB~)B%ZnW4Pl~|7vFrr5_pB88+)TVqkN6QGLr)T=73_UH7orR6@ z?>VT%|GrlW6yoiFnz<7y(l)bvXdOSUeUc4YkT`eVk~){kW0(a~~o0Y*H z0oe3(1ZwNxwzx)i_q+VAnU6yb3Wk&6_m*58MEq|?I=^kmpT~rJQd>bAE~Emd$e-J? z`JXWO(AvEfUa5=tpJFTWSPGA>P zhf;3)5)5J@SU|bdn`7IFbWth8YQ_xuzHCRd*r*wE8TSmw{XDHlF{9E&{vM95w}19W zbu)6Iz0ZA)Fxa@A;Q@Kzcrpm;EScSpoOxvI!bAN8}C?=~=&iKx+i=sJ(K_npQ|JTP!#xx&?*-oAMp5ta(2sG$XF(JozmPpTEJR_HJWE8j2PGZ?fLt}!(!FBOP1&LU4*Q1@w&1KJpPmRaJWlvlZ>KCr}Kc`Yn9#5dnb=vhypirY& zLzT-730K>6KK24#?}ck`mpw;oZ)n~phfO-Xo|i*!7gk=T4?b+KW)IiAgglSq-`>vp zU`;ru?}j>4IX+p&jg&S&Z`a-*&k%Y{{5hxo;e60KGhUuB)VbOa_!3js_;NZ{wq{_Y z#MRQ#)%7O+1vd-i{=()nZozGvWthQitMiby$k9n3N!y33tJ1~C=?5sV?R>+>(JMRG z_lJvDpNsZk#E+?o)il8_RERGqd+&o{eUWfNCl|xnDpm1~sd-;zwN4q2@(D>(xo4*}#j}xIt?f0>YIqfkNvsPvL$y+PtLzgp_X%mb69pBC!dE_v z1GTnSN+Qz(ajMvBHOd}|1Z7Fj1`38|Hv>QTm}g&JkUoQc~ztvES|4Th3MM^8+f0Q zSWS$oC6>-Q;_^N;rfs)vu4J`xwepWixyH>mGZHtp3okG5Bp%Y{6xIrht9*Tpyf z%X*Q$My2L&P`Yassx4Q42(<1+o{kQg;{bZ%Kh9GDp+)t1E^y`c6#$QN;i*jTegBt; zsFV5d190swF0SMIsV@7Gmx#lAw@h5vcFnqaiaK0b0oBy^r3TA-TCZcd-Ba8aGHGQO z$sb?FwC#War(LhSppVlUXIY+mzw1eV9k6dw3Qt!?ss50$ObpC=kZ&IqZ^veyUvt8! zW(aGucBa(wlmNC1{hDN4aT(H(j3vw)&1sr>S@}F>eQ>T1^l7_tv#dbRH%FSuZ7l6m zJ~K%!Y{={ux71|S;v3rVd|OTknM+ArQ!K4Eo267~u!?HLyPo}G0ff#5SB|RDm{YlH zc8(?Ib~+<``qo@ZlJvM{lR0MRRCu-m?Y3vg(wj+f-t@b>jy4LZb=0WiQe@NsWQVdQ> z*y+?_cZVqFkxf(8vpmdrMHHvLR*^I}C_u<6?dRpvSmQ;TA{{LJz}QynwviR*Ml{Lt z=QNSHkQ^y-=JUi#V{Ms>vK4N2&RtR+-n0GP1$@%S1q9-ev{`WtiAFQ8yr;Dagv$&D zghzgcxSW_!Lsvs0yvZ>l3=ZbFoM!zLTwGEnpV2|Q=F(nG|IFG5&(Yq-=ekM9p>^R2 zX>78I^%_?E?iGhn%PD5n=Nh63aIkIHhY&aOC`5VP6>;5b8t})%z6zEHCf)a+#$Aaq z>_ghC&y7^Q+t#H$YI}rNpOGYi@RFSc=f)SdB1I92vZ#&X<=hzt)y@x+Eo`(!)%wZG z1SyALl)o!c<0fsnc|r?`xegAA`{MnD(u*pSBGsF)HWZ4cNPzXD65msJFx5#Z^*-ec z&;<#_unEXQYl_($t3f5(5o0jrq$he_BO5EoVx{WFz)e)O!kIMNXJ#KnI%kM>+iLk7 zgMA_d7Ym3D7NWf53)mSY-t2)E*4OkMZdXx^mx&K2=rDmiQZG&_z@Jmns@;>2Hj^m| zENcoj_jwtWo$|3`QfS-o@^QIYi~|v{?(#P?rG;zo%^51KM@4m(UAc}t(0}BVCz!nm@bd5BzRmW znUov#Xn$ZN4%--@AD@!S!IPtC9DB27RIOEAGhI*MCh`GuvKq1nvkT6P{OJmQ9gIMZ zU?zw}HYJy@G5w}fEQdo@eKsI3{vG8vJB)=ehizGF`ARN%bdogHi+=x69FD#^K40<0 zC|r<ngt=|W=ud4op^|8^nA73AqXvRTc8_$|0o7+`9;8@FjS?r3NcuK ziF~f2m9=z?J;srB)oaHXOq=w9P(vF5d{}fVNDdQW|dIr%|G= z%~Sq<+?d*<(V$RM!&{>ilW}5L;&+Nnpta$l7NYUDq>7l%y#4?&r$$5XDmzVD$zE8* zTj*UFOHGjg*fM|$-2F0wQf+gvB`ok3Tba6XC5$XwIR-uuRz@fz4Xr$5ky>|Fb6P*4 zCn{?b691M4(lB4eP!sKZ`4cMY~ST1vE_%T9(iLjJ%iLj1ELihuoyj`Cn`zv_RLAi~bY*UVz+if6?3p}GqeUe8H}4_*7(hR($+>J;W}Z-7rxE9G0%7iIhE z3fRU-L(N+v(LpPRBO;DQqvJb6&op`R9i}|pwr*p=m|uv39C#b1A;Zn|`EgejLBx1C zL9eXfKp`Jm=k_ZYB4=v%IFq4iA_f8Gjr!Qnd5u3muNr6#xhP2ml1JVaMy z4hWeHtv>G%a_7vq^SU_`oP8n@s<|NL6tM#5Jcmrv+@gxBH;od72l#U zj00GGO4Gzh5rhBs$>|*CJ7N#H{48~v=8hSuDQ1e;@8}|tYVkSdA##(*OfGbb1ZnF! zF-v=4%j9f%+K}v=L$widy&dW_%yr}CT@jCd@+1+83G$Q6-b5LS`4i0#t5*QIE1qYr z&`x|lEUmvFi)I3%`6eTqg5aOnxlJS6Vv1`?XIL6gMvOr%emxRTsl3~MF$}f8Ah(pS z<0nFug=e-Py`A77T$L3kLWUiui=7g<2pFQ?6cOThAyNT&2x5X)e$q~V7h(asKw^eU zK0^`eH__EpX9((uduus$1epMU3A_CC)1H4;f|~UyIELi3KS2$386s@WG1c3*QjD<( zkx;eC2tVcZiJ)ysncip#>L&cKeg%Am&^=>8Up3?F0`%Jom7VW4-y?Yuqt@KJgbAtI zV)kkbZ8xo-Z&eTp5m$}f%Buz%!(C5_Ilo8IgsDp@5rP6l^&1HL)N&=BB5Q(zu#mV? zTc+*RPI7F-9Tw`%gx6NW^%lZS{|G*OYv>7$^{lZQlD@Cd_i(W1y) zh@yneLxy7UhYes^IHEq!5&flaKoB#Rmrh1VGhHfCtY-sXrmZWuBwq6 zqmT77^W%;7Q1%JUg^?Zol7gd;PhrvkBC;un0JD)<<5Oh3G0=dMu?(n+$j0?kT-onE z7u@fAlYPf@*4+GWFFm+0i`qo`Cjbfs_CJRdW2$tTHs(_pLmkZh1Y@gIjz-iwt6Ls(-IaioDjR!mq{D+ zCW^FvFIVm6r4=uvyp3<`RU4F@HJpuBZ?KF;KG*T&_`hUf*gE%;0D3<%Aex_6dd%6| zFO*Ab`ej@kw>TRxc*fG3BVLDy_Fz4xPLw`lgB8^1WEzQHGcT4tWQ-~;PRYieh-Kl* z;m9iNJXO?V#O8a~I#^tSz7#7?{Azi*=?yCFt~3tXHu+>FYGX`p?0aLsfJsgOoH zQxJZ$$w9OAwSpDM;AH0)LlB%llfo#1hmoL#$SXnb8!o7HE=mrUd-`AkCmGvD+g$h= zPd3!8xud-74sjGJMN1U@XlFTBpQdXAL|NZ=qrE@QXEJfS1n;_fE@9vMLAgtwP}`TRAs=3wR$0u*ZHb6FePY8L*l<}Q*yS*|AU zT&YHChG@<~rpJy}p*>LHrGm_oOiXZxDSh%rvlM zicAW}jLbA>w0}lOGd@~Dki|<-FuVrUy)ge8ytasmId1dot(P;x&UGDRNOuRhkG+DE0li=nXF(^O#KjU=23Rb3p}pDLIOB z*5KwFiA{w_KkX)P^F)>Eabkc31{FeQ#a7r2RhJ1@w)I046+|YSp(}a@KUWaDE{x94 z;N!nXUTbbMRU|6^Ota9(v|}sCpOnGt_<31uhTU6r#k_4BCdCB}?Ye>q(VJJO4%gMI zDDoXM1ui6~N<_eQ3D=Su=|E20=B@I62&~f-HE0l^AKxO zm2Iw&@P$08wk5xLGv%kb%>nG}plJ`KICV>Ycesu?PTLyjlCQTi=9~Is*&?DB{`mDv zez$1nP@sk4E1}^Et7+>Ij*hEl2?Uq1h_9{6cnK0R9BJQj5M#VJrJ$JrW4b>-IU%RR zcfqRxMuu)NJt2gW!-44`Tdhw;i|Fp#T&j`*#w^DTh(FMRIbWSAGBUE6;_1f&)*GUG=h z9pI135$7Nkz>nCX!{CW*DB^|DCx(6!VRXRU!2MVm@I&w-iOT7ZsAKCaF{zu}DYM~1 zN41W z{uv1ct%DfDApssL51GVOqY%D(rgS>oHW5%O#TAkDt2}dBiH3TCpHrY=d5)E&UJ;~+ z`++8SQl4krr)(N=P$Ik2>wZSQ3lb>cfCJVWF&m2npd~XV@TMF=GT|sMyh!qK2*g0lNLKWB1=yc*Z9e7iV5klRaKgO9YO^Co7OBQ_A8|p~8 zRH6E_coH#`9PJ{L(zN43OyZUllU$)6C`8=0OsGnNvl>c}z#Af#equ4?^>N5MA^e{6 z>D^D|Fjo6`^TlJ}dHB^Su*YB15rsh0$T|Ns3Ku^u?BUi#-l!qWh(T51y{syB5~Y*5vaKKOn8OKQNuW& z-c0|nA%>Z((?SmbB1GicnFY+`G&wDFgWJ3_GI`FQwDz2vW#fyp*^Ya%aZ7T{Xi7n8 zv7Q{kydfXMj9_;1A72pttDKZM5hdZ=VYaKBKZxF!ERD0Jx0ji(6~R~Yz1zST^EW?3 z?3Se<-Y98&4)a&M$sQs|K8D0laFCMAomM)(q09XlsS@8ARF|`ql#MLZna+O*%NlBO zfz)hm`8d2fdC_}$QQK1addAu$g~OvxwKgiaVoHx{)+QmKF^BEVF>JGm)_EN59GbCP zFpq@%$=e=@B_intvBeTrLhZu`#VpIOE(9P+v?#t-DwPb_9J2nh`+eC4RbW zit6h*wSOpt^Ot+x3NeVhO;a0il?(jPd5}S&g0rrHRc6C1q~;~9M!Z=_y<6i>Rn1|Z zI&cgU?awsgxS`{W?qkqEUsiP){}o=?7*v%^B{-r^&1?Tmp}ce2wEtL=B!2MN8cZFs zy45{{u&lFv+W5W>Bw01?W8atM9Q@RUT>R#&&n0^0g!7wkr*f!zPWG^8Cc)-#WpViR zSzbzc26z0(OH(L!^zn0`HBSrwpG3H_vVS!7a~TQVBx`(*lmMOtM(h>=5+hidK?<%e zDO2BZqm9>u6Nn!~-+4PwQ|QVMEICwsuscb1PkvXa5`p6Wq%8QTsXWI+9~;u4&Uujh zGyKpo-?OL=2ny#7{TUkH86^ zuRUbr?= zTCjATu2)16xSfMxt!_uvf$nG43BNn6OmyMZ@K^AEI$S@~-$o_Z58I6GKz_85yMIg6!!> z4|TaoFd&eO_H{d~BBeXv%A3&3`v%#otvPqZS5vJ{+Q)X~6Z$W9w68_?O4rB$ocb0( zeCb>gw}3Cmw0w^lLXX8(C|i;`P61v0kwKRQ8F6c5=HI*x4v4#T65t?eLGSX<4auKT zEBnq#zPIl4!ck$yn@FiKZtP2%_hW<&YvZ@+%_fbIxWWzV9o zjv$Qy(YY8MjAw{-8k^qvaQ z`|L!^FdwIyf=R?Bp9`)x1L;ez)c49$?8^swfr+Hd>CuARiP4N*(9nX+K`F@9QIxq7 z5mzZVAMUYUdSUowwRzdM$%G4=e{kK)a6rf^Y}NANijX4mh+a^*;h_ zUe)kPeA)e#C&F3UgX>mlU+9MI(bl8H41fB@tb37$3T5$za^Y&J_;YFRC@o?mFfYD> z*Y9|?jWf!<3bkWI5Ob9HUR)gP=SLLbxJvxZe2teWw2h&97PUN(+UgGS7UAuxAn-PHO_lv5&$o8l$o~4fFr=Abi zbV3)OoxOA7lE%CDhjX5Vylgcs)rgX7JkBv_|-9y!7Rmto|0@-#CvGG;a zdDm8Y6jMz==U<2SVbo|2WFCl-iJ%fR5kF3pW^PM*+ytDZa%#^iRK^Bp)5)gBn2-lF zdM&Xv)g+ewu>;;jsZ3D)baTH@(V$RQ_yp-A1MSs4s`TdB5c45{u_ z-WDfFef_pFIBHODcVY<-zNYLBuU9s$#;=B->j>TBC_3wl;OCx^1Yf8tTt@UuVh+JC zgA2R?0YagVOwnB$UK#BtekIY;kx;fWS~OuP(b9-jDd-Hplt_*6OST_<@iY~jKfV$_ zpL@t6#3y`}LO^f?m&lJ6i992F7O!88w0w9l5DZRyMC8Ia*|t#-qYNuzL_+d7$*M4^ z-uB@+5iBZ%dB`BKWPhMp0W&l@ufdLYI(V^n4E}6C-A24zbo*C+jAwmoj`_i%Tw6E7 z`<$M9ODF4`+wpoXPK7!uV&xP~7&RAHd8}mOi+3i*ZDy>?(e-xWfJ7cOTlRK9oSMS_ z#?}$xykanmz!@GjyP8<*L5HlH<-U$Ao_AfG z+qj&Ykdo_xAH0cn8DgjmId43Za8~w>7Eq8>DdX2p{P@w&g0p3n87$=gWb-XqA@d9w z&?lUfE5%mE6a!jihSR=d$9{8^y9x(wuSsm!)t9tDUzkIV1e`I~RJW7Q-~JA{zt*v! zFW@o&um)`ylqpUg=j(!2vkyy_Y1MIJ*XnOa;d~HDq)%L&(z?@BvE%(;SAJZlgewrr zM*c8y8^U)Xamzm3?c$LS>+989rM^+yF^9UxOnqIXkg(Hc1AXo#?46g{Ap}f7UDps3 z{c4~DN9?qdAN3!xJE49{289Uswq(YC8k#{XcoJ3Ad(Y86fG~zZ`-~+{y>_bGO zDPdOo3TdkM{;A&Z5mrI)m4pNG33f){mBifl)!=vT4eEj)h~9UphO>306qsQ7M#ic2 zQ*?|nyVDTXh;0`1D+Q(T@MHw%g}U0gRVTB6<`HYYkhSc;L% z*V(s-VDAqrqQcKOyROs*$z(y!AfO3~Vkx5X8r8#gyqU+=_cioIjM#dmBDXA$L5@ZA zq&B1*N06=ndgN0!el5_qg|QTApu)~|q+??f#k(TO(<2jw>u62tu^V;cLgsbET~acB zEo9?`vB8CXgX;QqgUg^0KBm|0h3KLwpbtSBb%WExc>0>x<%Q@Je+ddC1j^zQtW>_U zxiuGhL<_*P=X9V+u{`i)|lzdeYG$*RSn>(yGmh*Q-p6RRp0kYGK zv<|=bTO`5-Bq^;)DV9Q7%*7J%=1H-DhU>yhOe6)@SAL5;q}su$KSY7S-)dQ7z!zMZ zMN7s_gZ4%63?pHhk`ji*qJx<5sZQQ%}eI;m%!7 z{}UwnmqJe`pyy!p4_QD^NJLneO4ZET#1M2i&?p$0I9cl1(+OLH0B0Zyow%WqwWFD% z8;uy9kdcFdk+q?owd3Eq4j@$JUjU>6osx~Rwb@^M8W9T<8|z=vUvL_z@ z^arTQU;Lzk7SVst|4aHe=qm4a?%<>Oe^>1_j10ed}+5KDT z-|WiT8yeYz#6|)2v5kyP7gx4y8i2e0kk*sp9ib{t0Xf>ZfgHg zi;;z%P7x$N6;PFb%KRHO3%WVc-->_l`xg)kk|+qiXvFweg#UrP{qG|Dt0ez!_x}!a zWT0nZ{=aaJ9e;6-toHxHImVWzaMB6?yimnaRkwKBeUxsDXB#=10*@p^l2Z{i@!hS1xs^J(bK!$|)5 z1IA#Y@K609_Mmm^*VpEjcAtv_Ud#2hu7}IzHxJZKM!>91W=E^fR9YgSuH>Zla8+6r zVDo;eYI2)Yw6=c-d*E`z@meSa^_C;bBsc}j!g4ko3tnObR=J+fJ#Y99u~4gQY^r<` zI0sc17n>|NMFw^%S87c;RV#5_6EjaIPw#im%a`A`KOXLn2LeBiwwE)MS6$vO05;cg z9~*nCV{6sOFkhVK?`O11nsi!ynpRiGct0mxi2ZR|#ZExGw~GKkpMQK-Xo~dy^x~5)v`z}r^12=v=ZiE^HoO`bXq?6LG)(`x)O06v>@y%HN8)~3z zwkh|_N}lzKZ&C(z0ka{-+{?T=hr0ATOru?9#u*~8JF|UA+34x0R4suvOMs5UZAaNi z$5DSG*XvHH>sRV7Ht$`vNm(vnmpQ$D+eN{*^P!zW1Kid4OseJWU_O`%=&AFf=k_7x z;R%Gi6~9QtOj7Hof0>yjo6>2OUVBvgTu?%8dMT-sVykEV(W^LG<iQFZ!X{bAP-uF}|Gh1zc-4ItMOjacv1=*C-J{cgvcc>2{(4|i9{b~G z=XICs7W~LS<$CAmtnu~72ovV_Mc{eV$5ZcH%UVXuyIp7(@&NCnj*gpw&E^M|Cf5d` zs5Z&3nYAy%ivv_o2esv^wU*^C20XlFYh7vQH+7?Lo`>E#E+~($HwMIE1#8Y)TPwiK zd)%SBj#2Jc$weingA1XPbKe!G^2X{rDEk%Z@qE$!_ySw4B(~iT|2%;PsYXN5ZknWn3`DBbgd@~8adXPXl+TfTX`{g4ME15R zO&NKHKcgID5^%tL5aRKp(*Y>j;q~aB*Pz+*8RzHDy}x>9Rb{HKN(t)XAK7)vRPalCZQZCEx^E|oncT+-cih#LAi`tiox8^3Gk&ul^(Vv=Yj>7O2p|FU+pC;e)TMj(WA zTuU1y5^h(IrcY3X$gp6)q24(OEf=h_{^|PWhhb9o|O)ow#5N*#@D`W=aqw)*W z(V*2dgaTfjZC}!vi987HSm?m7Mkdzktu`@I!J_fI0!u0vSmeR;!_sm`BsFtwEf;(Z z&jWJfn=$JW6AR!NFBQ3A%oO80b6rpSF>5sLgz>xQ0C+RJLB#z}t0zbm8Y+uNX{5x&{Z{q%b=wj|9YXqY0oDEDjAQj00LhJMGm{(Q;r{du%2i9>ix-kUYD zuEvo)4jGGc;n&;erO<9i6mH^4@jH&MHDUemYkT1tRwNfbk>HlUaL$%P*-5c?nibrv zNoOIBp4m=+EpDkZv*gH&vf{yhp6C}oZithVlm^akVU!HYo9!DutC7ZS21q62e273u zWq(6K)|617H_Yv3!@x2oFn}k&*X;SK!qoFgg*6AeQj2sYPPA2qTeqE-*98;f7(5l8 zHPhHHR8@+y$}pF!RS9FbOrJ5U$Zln$fq6!M_Idlt&UEvJ*Rrx@1ckJT|Hi|gNSsYroV0tY*d=!WCA|LPFsIZ;mx#lz$h{Vhn zaJFPg`B|IC-6$26({BkrC2B?mKHx~QT{~y(34H;4XB>@LsIISl^3m#3-9s$=t46RPwzgf z-6_XI)xt7SydT@{$D_66N#0U`+{17%S7)DTMTTOvM@&UArrYp}Cf`*NV9odfXJ5y( zGv1&4y$cEi{Rw3dUp&eXWlEE{u?(Cporb4a0J-FN^rZlI5S){=6Rg|oi5L@GW&)CM z$E~69ivm6Tyf=f{(zjvZ*&dgfb|8WMH<&=NY8D^~4k_>xgqC!k-CB9*oH^;QurI{F zYT=!zencsZ-NMEREma9Y9y59Pcl)4PRSTN3&aIRpH|CrBPvkGl0e-Ra6`)$tceNsu zs@0_^+AkXXND~~99%FCOU>g~cKH30z1J8twf~5JlmyEGB0ZSb|hBMFt2k^(2ytS5Y z5zxav6Sv=@jsf02K8`}p_RcMrtTUgnAd{NDtld3q;Y{@sjLc6u=Djz!c%IA+4^(6+ zw_e}pJnk=yC7w(?HN77IDJnzHj&oU#;)RtEz>JIIBg-%=EENi>)r?YN{YgeKgKm~i z;vE)6Jhi6mumnqL^FLjR!?@yU6dY&>Q-34M$fXvM z_-0ce#d6V;Cxxi9DtEk*FOLe%-l+Vk+ zhA7TuB1l8Ep=UwSs@jbiF#2Jd7wxhJgI>NoKI}2ub{^da3OLr>rok$_26!lcp!&d( zdqCm}Y;oX=X{jp1MR$oLL4O!pd=IABuTg~&TJFLKSaoZ_8y054W9CaceufEC{?V z_;(LCg}xr8qNduw@n9xaJ`yEH@?fS`vh$~+$Y5qxKJjJJKI4WGKShUfsEFttr(zJt z*23Rs7dG(_r<9DrED4gs5G$%$RR=l&O!?Me@WmQ>V3t;grMUGl(92iGQ(6IaWjw*9 zs$@mS=3AtyHk?zIICghPd=ceLLMi1{W%xBtFt=|FI^(mV>K@IPb6Rk(Z})jRFHDn- zSq-0#*W3Im>x<4C49+{-O)d(R4qsXkmV02{GegrhI3&HK1LlG^pJhvS7&`n`2(L7gv z8CmT)Bj!|q?j0ycIL{4SyUP8mvADL7v8=Mf;%`&yX!lX4<&%P$vg}|zM+SF#espN5@()4n!5)sp>#`Je#xiTAGUNyFwO@g2I=uneu&q+2uPw!Yz~6m<7{) zCKFz>mCs8^Na=#+nea%bqzCy8s~rrQ(8P=UAnpE$>C&Erund1%u#|=je8JN-j2kBL zb^kcKB7kdzujBqr|KjO_X>K@VE0-tvjH`gvE!pK=@`HA{zBbIbtoCIIB7OK^xncvt zHWEW4_q&y8h|SZ4x8@qm(kC~5&gccf_S>?8)*U}3nsUm4QQj3CVMKS-%NaU_<4kek z3R4LxT6j!M9p`LFjPNoDtI-7;mVT16fCvwjUfdlQIgMDfIkzRn8Jon^*b#*WONFGt z^S*jot80O(eOE8GN!n8J0w{H-XRpuC2|1NFBWr+Mb(JC9j?os=J=l@^Ny< zTzyYi_2{BkOcjkx3PnZ;y%z)|#^^-aIq5X|=EZmygr z(1~Q#&_IRI)<9+TEOTxsZ~dVPuy9pJ-QN_t)y2q6WJ>P~jHxBmRBg)9T0tQ_LZhpI z1$2IC2QdwsB!rlYayi3TW|mAi7gl(?8Oz6SWdysz$ld(?cVWPMeT|Ih_RytbcBJ2J z8p=@Snz&U+2e}}?Sqe~U6t^NL8C8y~s-Md`J|U|K;9vumkFChHNA~vw`BUm%M;#f6>bFG zMOb^Rl~FTf8>n%OAWxYvAm!;xS(jE?k?ZrVAt&-zbOEPUhCRvE@bD^D#(p*D&-%Ev zPzF;_dD?7bxF?<07_f0M2M25FMvcHW9_p^Pj$8Z_akj1F@)hk3?Z}gd*G^UGrHAA4 z)y^nSz7N|)D>|L02Cqe6QX1@m>=r$B(Ik4+iHgdIv(>ax%y+T`BnV^56yI-n4du`F zV}trw382W;w|gpU18K|86P22h+{hSEqFW;QB8YbuCe5{l>WFi}dWJBL#b)2tXUi=+ z8}Drvu$@?3Tfb^+%+{05GMg{Ywf2+M5Ia${Ghf&s@4UI|rAVg{$s9}*R?}0Rue4#$ z1vx>7D_~+mZWpk7S{&#L(xjpR!Xc1vxp{w^)3Po=BS>N;K_LjGYS2r+uDZ*--qn8F zu5xCNd8`_M+Rn}gvw#zM z--W>Zaeux4^Paa86r=AWW$;@wWCQv{KVk8fP-JPdE^T{G%6H8a9ek*^`k-{;e{RwwT-34AoIm7)WNUWI`PHINABRAnla(! z@PK^kt;6$Gj%568=#*t-QLZ~8rS)SoV)U&qZt9JdouwIR{b*g^L3ka11JK_Dt>eD} zdZ!>jW4@m9e3q3?elf0gJ_k^SB~_NfH%sguY}xJi0^qxhu7K}vtT>i73lQ2$&3#`0 z+zTg$6Y_G(7H=^5W$LZ+KK?k;IA{O&Rhqo>xg8k9VA|h~#KL6??CbYj-P~lYohGz< z5hA)yy#2Zs+dHo;VCq&LEzO`|No3MUG| zs-!GYl|z=}!Y($cYuHk^kyC7z_RQdM9lUjq3|e=RG(w4`TmoH0>h|+?Vit)r90rNj z$~15QD~n(-N}XXX`G!~tbzh_!RCddyF@s)=}B zoZMK_JtGhLvUm8&VYUrVI2PQcMmrXKRGGkQF#mrr??W({KGWtAWWm) zT4-aOu_&VAr&rDx#Jt%(#Eza>#h)Md&Lz$MKg@R1u*!pXh$h|Hr5_w4@|TOSbDdWQm8hN2W~F-5{x%glO`)wsaeJO!;+N1vT}WIusOwRr(#vAQ!XjV zCA4Lg8>v}UwX`|qAoL*Yq^U(|J-(&lG|f5Psf%k$pzavA}TDJ9Ek<`wzb+oO?RXcZJ# zobs$i8<}GA%-yk*A|bArP~rGP0k*sni?op_K<6GSG8A997DJ9QQ*;(WGtk{4pP_DU zd!YbYw2@*a591otv~-{rwuy28df`R_0RsfRi@;9JD3k0Aq?3RfkXgA_v_IJ!TeLJ$ zvIjRIueDhP4(5@RlU>$X9tz0p8pEiuLj}#uU^zxuAlDo0YMxD~uy^KXF*Z)jt*G>s z*v-RN-93s`*z+e=-8=GC*f;l$cfEKU^|DePQpqUf1_`ZMRe-d5cngEY+orn9yeFX4 zIU0qSpK1VZ$+h-}BgR%3UJD|z&o9Ihz!nW^o3Y52UF^FBC;Bx<2&pt9RdL= z=@GzseEMan8KR7{oM`sBk_O$;zE$HgDlgMK=yMQ?<~!=54(&KEvP!SCUn1kB^4da! zq+VB+B=Ey&%+kLBf94*+0?55O#e37*DI%@9yOlu92ek;etfozB!?9j;2dOu zf>WCq%*D-lhWp@>urnp^=}090feQ-F%}*-{ucUHTejFzN;p*9`r?x#uCowUnj6MuU z&Bxgj8SF`FgtBOEVn!}kwzg=8MA=OrU%Q(GkW(hS>o(XC@znSCb!Mw>>$^f-KQhsB z2-3-1Khn{<0ad|%J5ted0+rEnVZP>aB<`lq(>fN>x)BCbV9U2veIQnhtr<#$E1N!p z8*JA2*L4S-+7J|a(fWX74L(do8T(jfEG}6cmYma7_35IR9CTWkzZQS<6M+T%1?c^j zUr$Mot~-eCd7N&p!pY%U?dzwy(ycyJj>m)i2QHU4Z}P^AY^{1uRXaVG?ba)cYBocu zg(gENzwT;zxYd^j5GRGO!9&|POJ?n~_Zy_mFC(UmfpfuTnlR)D5VaMJXfhBodxc0S!-Q!G4H^Nn{ z zZj<5DP#5>d7D9Gb2Zz1SUn)3|Yj=s8&Y1>hHzO!wd*kS0S=c%Ff^c+kDQzWi^8vku zuL5oWKA^W%05mb9O_Cv`MJWvNO#Gem-!Zl|4?3~cFh6{H9EIE!obauY%0GwKt{<+T z|FDNJ#BEV)8m2B-Oh*l}!!PKZ&kfGuI? ziUNolV1VZALS=D9{)67d6V$~ zE9z={B^_F*)LW#TVtrIBWk;9dRJrj=((OPa;Lh6#MB`6$>ROtj2F->Zvo!Mqw4tzy zhSdXSm#FvP$G{E=xt}Lk7Aq94ypTUvJO-NMee#xXAR(rpstYR7N5oQQ1TR9Dlgjf* z8;cj9237>!|3Y39VEt>!Y7ASVQ*JIiwm2&p068o zzzqNe+yGF(4FEK;cUfB#xZvg=fPrBY?Y{{c0dZ9_vEdJEsp_{+_RrRmDCqGY)>27; z^~J5yqGaOmybS1Zu`>2(d+tVGhKSy%PUk)Lq2tY9#Aig-_n_z{cEMQdN+h$#rA=m=@sX)}REq|y>a83{Bt146uQi;>$wV;9+(1@x@^5<7iyfSz3f(1-&_*qI_mw2n#iZiI1_0p6FX z?gM4>+?&ZC-dDn4<-d4e$hm)bUk4=JHc?Ec&iuwt9+#fSBoP+}xsA^kWS2qbr&+Qb zox8J-T14KG4p^LXyH73e!4FEe`~f<&*(5hK8X4aY ze})8Y^OHzyoWY(0SHv>BwcM?06@o-mY(`Of5dppZ0Kc$3A>^se&6koS|n?uOPN=d7o zv)1HY84=05Mj=N|0XR%4>KijGGWLZ^9+PlN9*%&10YSmz_ID4b;IS|%LHz5?%0z6x zTn#Yv4RJ16woLoU2e0Yo+2nV49yDXz>d$KjOv;iCL0{%%_IQULqe;$^84Z8AHhoUf z_1#a_jXrW57mnZyu9+u5vdX3ndz^W3yx4&#L=T=}q5tTNb+mV5C}9ay_`FonsYOdD#U1M7v-R6J^KS#B56Xd%)-;|xy3i=y$L0nRO1 zRJtEL2iP5Ju*V3}uF@1ua~^D`HpYR>mEnmo{hYF;>M$Q@bQ+%fmzQo4NmSF>ZG(Yk z7<8bipsNC~f&L^S4H~zR4t+K%&CTl`RBB2%g@)rC3I7afRqb< zAo{SG8O-Xb5V|S=IuW;1>%XxJNjbc9*IMA`!n?M^*chnz$60l^UtvG$M0}RqLXmQoCi4^)eh zzXx2&P6FCcsAp=2M~5%TnfElsiofUNrocM0RCE440AN}Gz!ZSUnqgDIL$uWL9}&<( z`d@?-DdOC|wyj$3{P*9(v96vPsM|fc?z4NKw*-5(f@41HUJrrs`vZ`&%+$Y5e6$C} z<&pMxQ(@0R_>LAz-njHiUnr^E%r!MPc$ILPHJu-vhDww%X;1qfM}Fzfp{_#9>;og4 zyS?P$N*jBw$mDdAmri2=fnNbi+bk+OAeXZ;9eNk~^Ys6iDwI__r$zb(12RlH$|=(jauqsad97IN*8Tfh6_enoY1Uy&msHz zJsEX`yzPN+Q1bkzSnlp(=L}0whQiJx>bIQ`Oh)%vvsS>09Ug?^6R3R?=&f-jBx8L` zG;JrGa(iqu3FpW<6#T5L`Mj3gN_W^Far(s`(Y>uq(=B*nd%P1n31}RhN5H6%k&0|P z1I<3zmRG6u=YfH!*5vbhceg|_=L;miN_jd)@oEa~TM47Vtj2U47|I})4Sc{Q*+@ZkA_C-S+u6Of2oBl7v62n>d7vc1)VH4e4Pf*>pu8|sC*GgQcK zDEj55$R|vhCVxD9S4S9{6RJhL888R2EMWrNye9hxGNV?5f{-=0G5bCdxHPeTMx7st zIxSS&1rf-$%CZfoZm@|qW!%wXVG0}vmcYB|m6>4lyXnyAbA~86=Bld$$uE01?oL%8 zlN?1VNzhh3T?sFC42#U^iyD5$Zo-cVS6U@FKcQ#B%w~emy?d;_Exj`&OFtY2z1)zC zHO25EOt18z>r=%z^xcH`iD4?nr4>1qMjw_8QZcN&G#KPbzp1hCYM>)L1aU*@biSsoJy<}(l{5qlG=VJfyYJKX}1U}SNs==FN&P8X?<>~2Vu_oxpCH(vL^o3yK zHyrin)bD{24t^d#1@!SUc)Q&m5apPniZ2F#?LBAa`u>yvq@_?K8jl_X`_TJFWhQME zR3~BGu-iLFt#WsWnw7b^MKR@lTs9WxkL2RcqLmrByl`|G>dV`5`LXx&Y7KO`MWoV? zt!|z6%=x@A=@ei6Jh|h>RvsOhupbHaTGs6A^4*bo1_zO)sipUpvHODNB^WeL`hI=l zr~4g4WuwwcKV;h6;6}Bz#A+82%#KIb=RHJhY<4%S%gfD2W_6(>CKt#rE`2FIBW}(g z==pY_cjlR1MSiJgcfgvMGkkx%LO6#Lu ztmNO~U0~fIIzC1$Fy9}|>~LeZUh1q6E;u{M#lA8Oqqh!4U8%pP)= z94Ws@Zn=rdcAp4dea61}l^7dxHUM9go42IudtMbu5HkEG0E*RF3roByF#l^XVSXP` z{^o8hLFSi!mv`XVV#(dsc%|`T!U<6*j9r+Vde7sGUXHhU?ZCP(kL+Cz+%M+&4xCl2 z8TBQ0H^E;<3Z=D49TCrLfg+YOH)@`II$eHVoE6+gkzRbxm&u;2`?9x}(DH?qSqQ$x zy#bv(&cX6v;+%F7dwshm*Pm{wk>X#w$TFW-%Eg*P>u2b2$4y?NVqF)TrRVNjgYF*4 z&3b&W)TGya#4q(fyVcV@)W$zXnva}+p z`HCyY+rG+LWAy_XLfkKL4Ds}4`Wtul`>lN4!#0Z}^Q@y??gbmhg{vk3&c@pjPs zFF*BKZ_JV~aucp@r*dWWP}y=z{2r^f*W|CPE2@*0-b%}rF>2?=#7Ej;sLA;Ijx^L$ z{B%G2u&p@0oDO}QS?}`~S!eSVc-Yd{n72$uHD1~DJ+KJ2;cIV&lv_VMf=E72XnfDL zV3m9CfmuDZMg3O0-M4oy!?egU5K<6Nwyhs$2jP8d4};P9i^ChYqo0~ zh(7E;{eBjzR9S4&M->Pp-6o0#P1=4k2`E6QsVss>*L!=+ z?9j$ zY?PnADt|SZAxdO!Rg?Vs)~((N+8LshE^dDDU>{@vfrBpCkzPvX0TPF?H5YLYOh^Ya zkLT-@HpH7s<(K<3(2MKSj(`&{7|vK;w;+K`12RY^Gu|tCxt&YI{0Rk%j0x+rjFF(R z9s=AK=mQ?GPy>@XUH{(ed__*e5vK%{a5Iu92tW61%&Nk#;7%@OS%OJvuJ~GjT*B4i z0fw?&NQYib^#?G#%ZsYy#J$6759sSI$A(VdQXigZ0R%4XmIdS<6+`TuaZ>djbCRN6 z7*aU9yr-8^nmN(lxJV0U`*3SjoM=7>?-=V@Jp?3A+_Sy1b$5WakUTR)z-!sy*x%CF2czg>~I zLBAh$SJT5LX-YL;cA{+yAwh-{A8LacxhNnZmq9a-IxLVqeN2 zxm8m9`|?jCGC_I6h8G%3*bL6(co#+lG9%rxGJm)!0fz6wQ(wIn=41mz&fP^Eg0*!J z9tqm}DGbn2Hc;8qRSZq{@J!c#w25P*m6TBQ=2^zQps5W>VKwzi-BE})b*aE_ZI


    1&NjV^5Lscmx(2ejHQh~V_rAT*|eE12{4)&a}(ltep3Ja^y zd;>x23GQdY#dBWDH7_1bCkk`hnX(wF^s){gGCWDuAZe;b5M{h%6&U@|pAAyb;Lu0? zpJi0p^VdtrmkO5ev-R}h5hki8f(zZDD8Z7tVO>Oc7Y1o#!){tCOOu5SHK_~gY!`#~ zRowQPdhFsdrM|5e3JF}`4J8Yvh??jG?)=gV9KZhztrdr;n#Pxu7>1Cr1jr)Nf*9hl zw5C4NXSzC1CacbY?2`O;u*2FcTiQ}yhy4N{klt|=!qB@%Qh0IEC$X9=fZ-LGfzlr5<7N@fkW zm@h2pFJHf$)#cJ+uADv`4XyEB!OAk!x>Rf+ANgl_rLP7O)j@-} zQ5O=m@nj~#QoC%dVSgS4;II4~ZgDc+uCu5mIj8I&pCB)_4vEpATQVtQ%ra~otX{(w zW(|)ZsQ&;qEvkz6i*@}Uw_p0BqTqj2$^MT40Ks8dQ)fdac1}P6#BZ%_KoQ5EKB+g&+XAY(}=(fgnlxskqIV-3Tfn2z5umHhmWY4tI+D6UE zF=3&EWcxvv=Xr%=8xO+a!0iF7l4ROhB9|YBj2hOfhG|XJVQXQ`H=?V9Wt{`LOfO0g*-wwRcdR9I zbmFFku8gc?6C|GAbV+W(#(fj`7Wcq=jRY zb-EH<$?vZ(hFo|hl-R#0Dh29>u;wK;?BUR&TmzCPxJtmmzin!0-<2K#>P+iyHQRU- zXUCR@$WynY0JVn5!r-Q*(v(s8`9M_mf}$8lwO=7hK(oaS!m+qOL-i5n!lu7m^reDp z>_^6aO|Oi_l##@$5z8h=a3%paadd^(k7ga-n9)}Sdxr@ZpB7EV=9|tOW$(8xGvagu z(H1QaK})sPk(?$S&&;dWH>s#5Mx~a%i=nVC@XKEO~wH0|PK$?v)68em%-U*i?%qk&zW_e3d;x0?%VBgaxY8zBMX^QFnHzjzalr|KyL27$DCZ~uS$}^e?8^0`MtJNf0mDQdUr)b34tODB(7B8t|dg}MWiYYsp4mW zu%TXkMjQt+THq8a8o13w6(&pt0c|K>%sdQC8*(KTr;+hGj1CZHgYZGf zj5B%;Fm59#7#IvxtBo6%RULlWY&(R)bh`@UC~c9Af^YNn-`}z`HO3lZU$D54m*JQK zT8X9g=_W(yy*byh!!aCth~N~&qm7c1k!DWx)<310!mGnErYH705|=m9lSJ*Udc<$6 z1G@%#dxlZ;d;~ydc$aY_$+kTDZb13eF1pj9fM`*-@CvgAwesu`1=L`ONgq#x3@%B6 zLwBpe${VHFoZ}D@1Oq8|LjjvwV{h_26G4^{i+v{z8Cf^6;fZT&_M8*SVZ9u1THj3D zZza@-1vfq7)%j={oAn+D^OooqKR&*-ce{u?d78rO;k9d7O_>XuA)n-l9C{ujTfGoz z0`9+Fi=kr z{Kftpe-sq{-V)*eBi?^DL4M=I{2QQuC0J(W-^GT2*KZT#-yv95cGiD3LSi)5VsTj! zeef;b`{Ftz9K3rvzXTv^{4`X9qTGQ_03w1CMC_S%=xEp7KVOM1ps+lgHyu|U8EIL? zN}BgOoSRrmE7<&S;={Uo_Eu7RtC6F_#H)yulibDYF+!4bsyxv+y*-fSG3=om@fx7Yjg{ek^=^1Iu+r`sWAw-!xq z8zrT_-Q0GKN{sdE?W-)SRK1tPWZBiyb=tP=tc%)ZG+n7Ws$-oh;*O!6Z!Z|{=hHp! zZ=;{&Ne8;dA)3vbuQrb`k2}&1P^0JSD|TG&TY@UY(3=D(3_Z|LrL=EFOFPd(0RLyU zUsdHh*OxY9a{UUnkYA@UWm>C&(U_~HyGXf$jQahY`BmlZCi~G-q2t9}F{k~JQlgMe zYd_k6G}rEJbdLzup1-%1=_=%(M9P}ySk1~EnTx!>q}?2En3+oe3i@q8{Ovd^p(J$J z01^qnA>_3JPf`@0OA5_t4JnLTkv&~&n}>aXMxq0)qMX3XB>V}jecxYiRViK#*)BGR3r(rOc+(7d+4PX!~P zD@rGKgT-JTcI6@EDsY@hFDw?D(rj(|Sff1I`bqr#tIRCp&8t$%2+Ib<$zAp^#%sj8!IiBL-VZ7K zHsA)%U9a)+VAGdxRkk2_ITWR<;oR5mWR_?9$;o!aeW076Fz89#%+s%+aROuJ7p>F< z=J7x}sU6Vce{UnoG2oECLZxiff@S77WIEg2&MZjqczZj!F zo(rbK0}5&67wMcMxEMjM?#mQE8n~1)7m4rtaaMJe(J4PKLN#Elt)lQMy zA&r`L0Q92r(Mr)56*$oNq(RjG6$})o^d)0|>A8uZ*tfSPV_cz$K#{Ly?Jf`EId$(SUq{(s{->~QfvkN{ zm{CKB1E?vhK=3k|hE_DyV|@J1&rnwJ19RX{!iIh0l1o~tk7t&aYzS8n$4xyJI$EW_ zv{v%j;kY%Ayb?P}j|U?bjJbnSBsrkCVRTw6fr$q1af-n!KcB}hG@krw$p_WAYaJS_ zsu7AKGg7;?5*Y>kqI-HsmFT!s=G;*;Ms&aSDRg3oY}__;$6bq_UYh6(hElM(i{&cn zi)fT4C%+A?L(Tez7<8X)OMfssCS@FLURXkoM0a)ZcaRz*b5JBBuw*hG19rS2EuRRk zsFIweY^V$Z&CK_U08MG~am;7NS+5Ka2`k;_87=e%xS{50NR`DM$SZ2ht`&Z*e9^ zcdJ$W03Bl&E&U4y{4J31|Ib!n2G|OJXeRvc+;K)$W;#ZWe{nYd(^y~u>}2&@$Kbzr zHvc_$oS0XbnE4;w@zL);mL>kd9q-rpyS1QYi3s)=SpB06#J^`({U5D`zXdFQBgFLA z?l=n@C+F`o`tK29Wa0cn(&6s`@)Ql-I6T%*KKRG)VIJ$Eme|}|wKOvzDHWC%!lFYc z1>l1qfz^*M91&(l)899`%CyQ)dG95&jYm)z%x$ticxCDJHx8fX_)Ev8YUSoW-Pqj( z^I^g=3oxV~gv|xVr)~N2%RZDIPcVD<201a2cCh5~e>F0lkGjdDiHe> zj4o=x5>6fF@~wAvcJ#bC@cFrAcJn7$h>(K;@a$bdQUWF;yhfLi!?g< z`r~TtTiPp)4dHh>oV2hkP-|O1U*Ff$n?m~>m~>n`n`x|QR`$o@5x=`LBWC zNm8Pm(Ziub_DE>6%LU53Z96ikVGd}c+AK(H-V;jd-Qs z%|GWwDxq{@Yyy($5+ha7{#tTeHgs@idcxWXJ8U+#)WznF7Lq7mU_jdz^bE79v7Qa8 z1X7Js>Oxwv{AK1kPetVkZn#n*tRh526E)9wCQEh2I#Oj-HBUDyqgN{_iKMX@>o!uS zXeZ5jDgOxbx+T7VU9%(!utL}fj%DD!I$7xpQL2bJk`~61g+%^-hSGh)yA%oL1=peySq_cIjb5%28aDVv$H)MQk{#I> z-W;a*q!jR(U@_Qr5O@MPNRuRR?U*doq#UZ^bdpQt(+Y53kOPU zXftL}^ggRZ8e2O9`4*j>gVn>!^WB=Z-^~HF15%{x@Yu8p7{Sn3=>E(%3W{QE!2N}>Ng7_1>;{1;I?KEHLg-Z?epBgDpL*Wa`9pMUhGKBMQ^fuv+!Bf-8lvxH{ zkHg+($HQ|sx_L;{EKHx9GL`t&c{aQ4+1-kgmR@fT0(Dv*Mg(!x-1uhp&x%t!@)hKp zIIux(JFGa-nu>&K<%Au!WycSL@fOm4l~&C%(v6V~Vowd-_GbCGON)xa`&7G!;vJo_C`L#Hv+|+h=dcYU4A^xB+V+F<)P>DM7iycfL)srW!Pe`1X z#45CD3|Mou%SMH&Y6n(BBo^ud?PREnlCgLr&{~N#_CY%oj?DAvPm@lW0xW$^~#*Z7W4|cJ$)M258p0%yU%r*yPME^rDVhd)ZY+%ppk^k_rRuf0nje?pgaw-ec4eA}dsF)KFQWX@r8$(MIrUO;^y@2xpNIeSBin z&~*sop%IFN+4m5KaOAO*GT~vQC@j{<9uL=g7UJo{4wqw%qp0N{#o0`j-)e;C>GZ>* zJCs!@p1jeR_eu0WyhVSJfgw&y;tKGSBaLG`Wfv(}-^9}4KYYJI^U)~E2E+HV=#JbO zAw<*WPn)f_%k`ooE)Nua(pl_c!OySqrAwk{0SBEgLe*csQmqeI2Mp)qnupT7q@4GA zqhTuh3$pr05uksMto{^d=U@d8`yWC>|2DC6(6KNRFtRYxvHh9YS(yIViW1=DvNCWm z{z3A;Re1h#13~sbk=CE00CjZ?s(-}UrT@n3#=^`f3j(>)6Wop6=Vm%!}(Y6{3i1MK<9Vl{(m5KHfF|u4goZ0 zNJrtaBaU2v-rzmA;?z|=?6#9Rd=3ph6M`p$Oj@1_)#R?SdA++?s#Goh`k5`vK;tM= zKSioIv4Ui49S>o;XHFWCGP7>Ii~I9D(Um;yI27$$K@-LgIyZ!oAf3%1Uk{wLhurI> ziCx14A*uaW$A^*A%0qhFT0i}BU!Kq1AuCzjM$)jyZ#yyZl4#l!%oR^N3-Th$h6d5E zXvtdddhm=;m4?F57wAWpS;5-irMuhr?i`rjZ9ug-GZhMS=oK*7L#l2RDTn2q7=(0E zq=u75!B^w-YRe|C*N^w^?hkN61WhSYrt%0>68SVVI0?=z>);ClI6d0nXg>MN3^uPW z?`xV^#8Li}8z&?@ISZVTT$MR!Ow(Ku3WW+iDX5EVzFPdCafxW~6RigzzSO7hYj?~} zcM~gUJnk|weN8O=OZ9;mQ_g)E;nJj49|%ZkawOu!dT=sGkZ33|9L3>1w5iY~iIneR zJK+@Kw?drL`&&3LQxvH0X9hHUqD? z78%|`AaAt*|etjZ85a>+_ilGzl4Ji`JM zhaoY(CGoMdiZG=@O(-E+)x>ZWcMNIfnBThhLD#pV4aaD~)Ke1H& z;=xuyiJl)18LDYpjFLlx=aw(3v!Kzr~Lu#B8aW`iPQNkJq0XrDneoUuxW=3~np4y(#g zPFkc;K&O)z?oiSqZebDevk9g(b67N>W&k`qy+q0@dNHs>@a?Pfr)OhP@vX3M(~@Rs zO-Zm)z>y0$;8#B-llubpc0v;yVcRfe!jfCcu(O49R}|>f38dO|3fYn;m(Zj_Y$V5J z#SM~|2Hi_%ggE6qjJ%7HvGQ0Lq=MT>_UVMM#8N`NN(v;Rh4c;BR9H;>g*@sh1KURI zqlKX5abOma)HKW9G7h7T47^HJh)6Ae-G!r#2)& z$yFLC2~Tl*hU*pl#zEQ;g~KzPt*Y*wUP{7RYy2L|DDC8o z0bTO^cx4_;XM##J7$J?)D7*ZZl9n8uN?(!M#oJ&A^Zew{AyW_^MuznoEQZg|=k3Fs zG{(KQ5D+%y!MFSqw3ruf!spBBwCP)-;3#E~P$r}%(l-l~+X;zc7A~E&+N;YVSPoWe zN=^9A#`(Gh3O*yR5^R+Ydq?e5jw>mGu8VG9W$y85g+;(e-e!jH%QT)t$jo6lnU?R+_fZa_*>-cx z{NZ}@kxn{Lm-6HZ$=nv`#vRqpkLK40c~z!2tNJ#Wt^~uus3;p zdv)5}FYk8^iN$s2sByAR*zjnk`Hm3GYVc;^5`xVLGOSwS-%P%U&Y)`bmf;^`M#jSa z;T6p1J&5qE)btL%98%K!7sUDRY2>l8v$6d%R}JafIIXiKzMoTlK>B8{Xekcj=(jkQ zUuz?84N2PWSFEdb;-h+4SE{9Urh0pM^_=+bxa`Id0JDs4lbljXXBrmfiWLU<&S1h% z=X(3L`nq}CDfrwiJSByNO;jR;eOsVEti9lSyL-Lk=f|7!Yxnl^@p`iNar5%M+Fye7 zKJ6ITUmG~A?Wy_7=co4ec2!tnd%4xiQJGm`+WDpP1mf-VX8Woz_d{WW&-eEBZdd$p zt1j|x;nXb-Ki^!rUTVDLe61qs(~!O&SiT*7`^g*cQT67jdY8}LuU+w;Gv5QttzYj} zA4?~9J^a46Aj$8CyW&|fM`51v`AFDnLgNQ352ZuOflI>hHLJlx)JFhmJe0c`bzRUN zDf5LW_34Tm85N!`FZb4$bcATT^YhQKaG#LYXje;Yxy{uP>eGBzbFVhi-ZEC-BKd7= zYU!@nmmB#}I<#LqgcA67;|3-T`Olhq-}KJl?M2VO4xG9^*gwvZ`H`Qc+Gs~budG3^ zLoY7zPUm&CuRnB5&+JwryfjX66baHZyk3cWmv8O9EOt&$#-Xg4_rEp4b4D2IG~dmr zR+O9e*D=?q?4+TV;)`zHv@2Q&12pkUEXN$X_*j=`=7oxSsb)SksMqz5D;GwVJiWD3 zU|*V%MauEH7aX6`tu>ldeLa~h8vSuls(0U7)d?D%DyH~|)<@({{ z;|DkKfJZlBEcbH$O*2oPOIu3E2yNgDr$~BKzg>!|35_BKYUX>^GL{cva*vSI)AjED z3nS(oSiwZ{VPh^9)&E$t<7bh)+ZLZCahyi4o)m|m@$aF+$pKCUZ} z#@B$2_DxYAlSu_PP8tK#=!>ssoLjsv2#?wsJv}}F!Ika3xtXn9z4+65zBkucIv5>G zFO9wr*CTV-mPua2Kk(%~EmpLnlzt9WscI-RPFb+DbY@Stx8Y7_cFGFtT3_Ihv9_uc zYYk$$${gIltwF-IYHvSfwtqX`POs9eaa(&7z^)nC(8WG4J=I>{JF0T1H?w{qe!o+i z?(Q0MVCZ%%{psiAIcK1~QL#0R5>&PyAMgUj+c|u``KUXMqY*_gqSv27{rJKD80XhB z0=EbJUY4D8n|l3g?^hK5&sz4EqzA#e&mNN(tgK*Z&EqjMi>k0F-zroQq=6J*(~*^0 zGAV-aWYfC__G2J5{S=MW?-7;71`;5l7M5tWRc@ec5KHTU%RS@7pw@wD89{)sP9S7) z*@6WqFngs&>0GwVaLL4tF`8W_97RAf{P{rqj9hAotmp~WKLS~U)e+yUA8y4-3LR9f z3&HV5m~@7NGX{im1;M0Px~erHjalal!oYOhcy^i59<3$Us)lrKS!bjOxn9vy^qXq+ z&NG12`wFhQG`+Wr+pdkKwf6V~lJxxjKD?1$oRVBx8Szx6+B^Bd>yE{u%aF}Mj;CF3 z4+~l}qe!hR6Ph3Q5vIGn0#q1X=fyOj2bOD{=UW>+U}~K~_l99^{o89m`w_hHQ`gn9 zF3%DA?tnqF7Z^Ad$^zPUM0-J{g*R70~Dn2G)kJ$X!Ta3mJ1(&7! zSCxxHW?tq&BUn5VCNqh)L4l@TAeci8);3$mJw7BQR!bz|4M6DWY|X2)CQLVkWMeMw zTys8kR2kQZN26EH&VcgplYy zit4b%7PDB*D}C8dpZNJniCLD1a=}a1_3LEFE08#5W>+;S*4F$IvueEE{3|R(Yvo{zY-Eks zlCDmkG>Fzz9P$Jy>?P>4MfT&gJYR5C);jAYI7P;3pZ9t;zj4>&yHZJW#fpG05{9YL zIZ{UhJ7;8HCxlx-u5j4Zn2Ss*9e9$vNRr!x?8}%fq3JnBm5MeUXJ02qKS8dfGkn8w zz8PH~_9&m#3&bFr5RM&8?fs3@MJ&I!|hB3el2jkpXh4pUYwjiZRs&M2y@Ri%HGKal?5guzeQ`%Ap= z>tJcEwxD5gAhlv*VTH_B##uAL!H**7Cf*r*_&A@M zK@Cka0Gf55nnA2WAs}BBTnATm77bHtVN^pAMKj^>N8P!nCLg82$F~#F4!hF& zUH4k=+9mB#FFIy97JyXBBs_YZvp303JM3)3cU^PxS(mh3e_A)qlYAC8U{Y%yoWSIK zr4?FgCR-Ry_Ueu@6=aj7-9m}+^BfKKa=_aPlcbGxUxfk#s+W?A37PeL)>gujZ6?(GJ>jtg@Ud))?)^d@9; zvz3(JBHg)m294&RQNB0{46n)>lV)Tzn(fv3m~aKLBCV#@Hqo~dtX}Yt&j}Q_0FX>5 znbhSh1Y&9MV6Db}z|gntuM(xg@)9W?5#pqcDVdxHyH&CvEQkLZ{Q;xC;%ove9r76o z!!tb9w4te2QWtO>r1jVjC4}NJCF-Cx*B>FDr3QZq?eCT3IOmTX=fm;>=ED(SKEUz< z=EG6Gs>iUM%52DIt(4s%F%-=sz~r;iN&&t!uSK)8j>1LeDwkx0y}?L97#B6p6S**y?_faq?PV z>UUL(I&~?3me(nPO&UhQ!S5 zV`hk%ndT&Y`*!zz^WMy?`OTU&Yt8wmbV^c5C2dKy_x_|Wx;-6vm$cP6m1*oGGuHnb z9Wd(&#f*dQVuleY?#m#TWd99msd*}MoDSBxNP3>M7})3W`biP<;Xv5Ko#^7`PT{af z&nel2Ln&DVZQa_^!AHenN?lzh#h^#z3aX8lOp3W=GZkX)Q{kM>9bDP@~3W3PxQcf58gZhIyAjSFimp?mgc!-V*faN>r9 zQ^PEz)KWPbZ7d0UFuewAQ$+YBmhwL%FlV#7naNET5_=YM!QB=c8c*k6tTfrn=fxH? zDp*5bepx5VM((dYFE6RnMJjfYyOTbp`)15J8>b2vrBkokJW4BzHt9tVxyyv4^sbaP zF@yX0Hhy8@zLWI1r}@NS;+#9nL3mSKilEk>Q~j{f2|3VNP@>g_KP-|P4v}&eJ_E1S zMo%TqIY3^i(?%~J#`&G53jeM=sy2JJN|YBQYn=1DGrL+Fh7YhR?2|Pj88t>#%K~)( zC32eaAb;^wz1|$eeWJD4%Np?+!(Mt0w73g^`c%|Gn?-ij{jQNW$KsZ)j5cI~xVqLm zf7@i-E}Uh;jnf65Lj_I+jovN&(8w;N2&>O)%VPbd#_3PQ3MXqmK@lrUh9KxT!GmmT z%kfbopPvR-*hcprI$mn3T`aqPNZDvKgzokrF7`d7TWPH=itWjM((O5@c!^uEG41-H z!e*`BJ*^*loR`TvRoh-ulu0tv#A*%Ji2VedA>*+IN!tq~;7OS-eGw^Rv5G>-SXEIa zECglT6%F%Y@`F`TCuNmI;;}RnaV^TiNLbf4NlGw7f{0kj>O*^C+x>9a$oX-D1DRTS z5dZzf@iBzZuqZr)&?=V0H%UI9Fjw4Zd+Xab_)K4-$ZxH_Lkh`3{EKqYEMq7?;VZ>w zlU{#*OGStl=A~97g;dX%EDbA0UQ8mO%`I6bY-D{k*{R^D-Gj~`Vy|_BZH_ZQV$a1! zZ&5I^-i$u0C=SM|IFHj#$JI;4q{L$+Ze`S`{lt^|8JY95Kf^gPKPlSIxg?Ev7$9L`YtsuXh$>(5PbZ6&3h5 zG{PQZ!$rT2!1NBZr0($g&_FF222jd*LV+@?>-c5!eoTcsAv7+3630ABpW5I#f#y;v zp zH9@&%Ph4K9Ok*2Ad4+ZDOFA&NlyEs|QQYYGc!g9rLQEHV^~-zDPNs3tpG*Y{fo7798W>^Fp@%Em;qH@4`nGb9BiM8 zlhN)(<|W`Hd-13@lQ&0vuOB#Ty2l{e``9<`$yN2AqR3TYe43FOurg$mu|CD5p;AaA z#9roH&R2&SSVFSA`50zDetCFfdd!B;rTWq{wpo={h@`upGBUNH=u5Dn3%<5xs{W?3 z(GgvPv=RXNPKKB6=hn>b$vsHI-t*JQ^4;92FJDH-tGlljixVZ?&=H$CnyoI$7!2Mp zvM;z<944jY@*x6)un7u91@Z?Za$NEvdG4oT=@MEI3vO*y%bQZh2UU^9G+Py`S9%F^ zcD=25!&a!eUh@#7>X58!qM31n$P@c>x3kgbt_XNzgSND=Vp&S1Tl2g@d3K1;>twif zG@;|GOAS&y*@IBC_&dbM*K))TX&j5xqHPC^VK|~S@y|eG8uPhye+1n$VK=rXh_73S zFrw`*S#K!;b0^s}pf`YXVfskW#N+0vEzur@4p}Ov6O*}cn`(PO3nrWlmN8VsxQ9j` z7w(EEfO!LsAlMg^&Ym&2SOdCh4u^sDvvW4ly|ELq5dUOhq!lnRY_b=bx4jqQsB_WE zxUSQ*Cr6Ut$65i;QmwB}Z*Wp=Go1`Z9)vu-M{8IzUoYDGAp{BYi5aQ(HoE_38M9|b zETm(mWNB`}78DFs^ATPW4x`*ty%QNG2RU3W{_V->sXqP9OwQTnTNcrH8&Vpp2WV)l z+=JGG3&*$;&lx2~?L$tOPhoq9*e>QH{8~%U8^V46e#f-!%F0GvW0mdt87FhD?afSE z>Vo%5R*fw8qss)u`K?Aq+a&qi0=EQsp{{6Ra{O_vHF5>F!!Cdm&@WU9=pda|B`#KUVnm5Z0hioC}=zT-&=`7owet(ZRnCWkKyp#QOPxmyRRZf@!`4-&2 z5pk#bHUy9f+h6G#u(G4pAtrD7q->h4w((*AFgcUQ{qAvo_N!@em%!WOr^PN^m-Q8a zrEP(PDA2>p%Gq{v=?n}a3<&mQ@o741hC|`(cY9f~OLirY==+JVQvt9$vC6z0xpy1Q zsrx!~_cw_IbH3A#%AYs4XC|nu>;l+UmG9@PHc?VAUA)VR+_%4CzxuxwxCUuce&VpP z@3Qv_UaSeEEE5fI^ss?m=1&xqv|d)LiHi+wcI>+PZEgiZY5dw%p@R@y65GozhCWpX zz$I*4d3-J;&v+&GqkljjBcNtzInm$dqiO|vn$X3?qvO=_@lo@~#Z$c7cmsXNlm`4a zChfm(I{xi6|K;lai<-#6+4%R}-;6h+jBNj)DG~$H6sa0J0NIE1{~{*>@)il$IGX>P ztmxPC{-VzTI@o`?!WDsza0f>xAv1l4Uqm_5`u_?uva`|uro3?kveaJI_=-F|!WaWFLmOYi78@x|RA>p2-yTfZlzL*QFmOEIQ> zOX({(Y2WKp_tojSJa_V}qvJ!}T6T4RI9R^{EH9@I%(%Mp(IBj^t$DrpfhS*aru3C> z;!IyE`#b4ypM(0Lpc~FRu7JeKz?{b{r{nwfHID^QfCN$;jju^5Wcug6s?>91cRfR* z(nI*PCGfqr(8L@q?!ABY^L>$jt$ns`fqu~9QkP~~-~)B%PA`0DTTbWeNI16&r%dug zM~m)m{8r~~zo`nU4a9pkblfc)d@a){A6|5Xi3Z7<=vOg6Xcu`^F`_@Swf*S|#Y$6B zus*&>M}pyl>ToR*#Lqvvp=T!9C2se&+FFp5{dNA{JEGKJJ8DrditY33(-MzSbimqo?0Gm35Hd0mu9yk-xRdH31pD07K&ZXs;0pU zjG#2hy~0A0pG{wZozAAhoCh)?ag?)3_FajHhYdkls@9Ib1w@6vyPtDktu8n>g>9vB z>#%r*MDn}3ptLls>Tvl}M@c;OzN;^ZX_OpSEb|b|G22k)m6W%e%H-4yzQQ%FN%Xwy8XN{dLS4u*w3Jr`D1TlE3HGs91uRzUvW%%g_)y>I938 zLNya1yCrKmR01_1K#ZMgr5g)px329t^vghoNiQ;KC=#9tgDr{neXj~`phQ=Zi6rn+ zF#=VQ+n2YJoy{6nPeaM?=&#uIbG7xBMb%jm1SB051oLMy*z7k&YAc)_ z)Ip{@t8fbv+-lYGkd8%3tRj$aN3bPSNH`*q3sg`~Y^0O(U-uQiY}#qJzzLQds&@N7 z!m;Fl27PI)K4;>!%uZ$ed`8)`6*V^?%&cvvG_Ecc0CA|skEtFXSr1Pz3#~R!Q&Zka z+#RNHovk(BS>cCOU)ot`pibQl_YUM?UQj~ay)&1fbPoIq>Bs28tk7J5j6_IjO)0mc`7_l+z;fP6%j(k}evs3A4oK z=^R|PIS$|V&D=G>fv^dqmdVp=XYJbuPtqg>(LgW^;Zhv(8kal34k=U$JmG*)>`&_L zmXRZ_Ne?OasX3Q|8lo`NcY~h7!JQeS|m3 zPfQn|+j!c2d0ysm0%d|VX`&)@7Qpo19n5G;((EcuYjc!>I^%a3O5lTJM}x2ck0ksY z(K9oj_uZw?yi5lC6A1Aj20&)#eB*;FVh~8g*B;_@90a+<+Q)+NuQoWDs1SS8&3108 zgi{D%t@!AAQQKg*bs>}C6udS}G{KyN!?hgFe(GyEVxhay>KM?O4HdD);VP0QyrL$m z68kPmWE%LKP1HvZX-nS(KlmeSAN$2*y|y$Wpell36vW;XP`TR%#UM`3!zOX-<=l)4 z;=|Xrc8!_b6o&@T-LluLfJVGT(cqy{!ftinndNlLYe-vga4mX9lNyznEQx*>%wrvi z;{DWvT)UzWvqAs;&{(Z{kauO9nI@?q-F%%n0z#;U0@NdBqDDQ*hRh<5685@v@0#~B z(ogAdCppNHR%rBk4>_>+sltTaxePbz2^J3ehg2$*^f%YuO(wiA-nys?%N%5-Dv5BY zVTKBm&n9TnJXSaC&|u<7gtdpEJcG#>S7r-Fr(`#^yAS`YgP#fVo*SvH5|`!*+;PsWkKD2 zV(SKXDT-f_e60Zwby);y?NXow0*&7HFml*0#RPIbjs|46wT>0L=ot41Q-h}w1O=NN zSH797QcPX6vg$~HL#M{i(?B=!kc=q1(Pe8W7g0~4nMz-w6*>Z0(yummedi^vg{A@Zebjp-N~mb_1oLWoCpD zCno-G;P21DM8sH}%nvtB+?^E83O{Mx)CbO#g@IS9dnX2(dx-%m(Yu@8b0%fAJT!mR zOW<1TyJ)-iF?7euQD%aW9Mp-26Th}Q?uk&&;|GSinCgjVxekNN%9?tKsIkUkq`JG& zE-x%!m3dRg;-xbU2(|7`<97WDq$WF32uq3ehd>JOz+x8?QsEM^EC=zAl3#Y-pE3`0 z$Rce?FP|sux^iH+aV)E#f4j-IjIYcytYcf8PSpX0Kzr;yM|I#{)}P@=OBtY9|1f|m zrAny=fVz>rwfZQ=c)GQg)LJJ9{m6_`PQSJd1(6r_Eo=_(hoIO@*ame$#{YGqdj_Q=M% z1QrGFHbA2sr12P-YK6WA3fq2P3- zB~;K)1XBpm&^q*Q)5^kf>>F{1d8g9*}R+WgvaiJv`I6 zl6tYcSM(L#iyS?Q9(^+%9izxn_@pbjI-ac9bX73xML8GX)tQh+U%-L5FIDoOD496= zplI>?&fc&8e*|BPk`=4epDgDrJNeSjCib4{9$u|}2W|HM6@JQH%NiqWX(UXw$)Km! zy*A#Z|K6|m=5ft>^hvjKJh|#>_sHvk>(3x5pU(xoZWUJsLfJ~t!Z&^19*<8yzag~l z2b?}+r>l4QL9W*Mj6Jd*0m^l&ntZffy|l}8)X?t$rGUi!?S?~VXXh=+8;`L!q0Be1 zx-@pF-}>yI8{GbF9r>+4{TF@oFH6CH7;`xOVa$;LS`Ge-(cu5cn8W!C5&3sx4jboR z#vEYyFI&#{LcGdYWv@4&wsDo|HqW)f2p#6H$nW}==R_52w`Jm`Hy1{`m}+^ z9{--MkQLn@hr`cJ@5JHE`{;_+;-MHfV%8 z)H6E#RgGWja9A%xk3sxfsF8^_5G}fSTU2%wayS$Z+&qq;2H;z7FYD~`@_ZXXNVa{u zOHLmFsGZrKRpQy4ozbm7zitP-{2WOyb7k-Hd3C=z?z=j~kHKekHhhZ|3@ejNQ&M@?%L6fN*o=`k#X`h5YyyXS4}kqX z%f#{l9IXauDb+&iRiw1ift*9^D>>*2kB38d=hU!p(>nx&JNzsEi@ukao)Z5YgEkew zthVjaoZ)c+;0d1|=R%LmXOMfBAYPpwBGt(Dkm*A*S2HU~jr@C>T z2yo;W5G7Ng3{%dO7Ioa9p||XqS6cY6-CB&bJt2*f>3y!uJnP+PI;74E2$6^@7@O!g zmQcAfT!S|~xhFs9W>8;?KlWR%yUksExjV6KGI{818o6vQ@_sN!`&l=hgq*D2#}Lv# zO**3cDA_cxDrBzgx5rnXX^$@WU@1k}_2_oi73-<=!$PyiR(vMAo`=oAN)aH^ zbAEwE%NElS>-6R%lQi0f?Db?!Cv;W!#8(%=#BMd@$8!-Y-`K+m)_{lE8w0yIb3iNO zySu6D^LdxMo(KDaO}H0)w2|p!(#*l`7jIL*CP1yQ39z@{H5&8s=9zB1avsWeXIa10 z!F_)}w*K15*VZ8Upj@DzTwyHP3l7yB%yKcl zh50S<)gpsYzud$voyABEW-4`kZTc6c)Nj$NxBb!)Z}sLsshQb(PZxD*v%+Ahv1Ks0 zmT3%s#0`KIN%U;O^T}&}jwwZ!#75KKlT5bP;BK=L7%6X1jA(7LZfiZ;K3;t|DC>~# zmoeeA_ifRANlf;fI$1lV7q)yYgSX^y*+rXCCO#sx)Le^`#8ff(ag4~aN2!4ySQf<@Mwpr0k%!W8 z%!X3St;X82>gx?x`z_S_%k)#<@m7Sn&%_W1AP^NP9L1(3((+2BLS5zICC&)PrV zBVNT1K{Ck|FvL0n+}rn$D#dc3p3p<9b+bdyJ|J?gVLb=u;}SAIIV3O3KDpWQ%Uq=g zoPX9RJ4`}Pw$r^QYg@~LC|X)-CJ26)UU(|h-pFD8SaCJ7uy9G%gZXs|h36xQegxJ#BG!4P-Sp|5 zC8)AdhlXLXrAR?;QW%eN$m1LWUad(MTQk!}iWV0WYe5#yu~C#2+4m9~Pp^-uoiBVMX6?Si;o&l_dt{*YMR$=cEW4HJ( z6pjzlOM8w!%{u@%!}pG&opD3uy^K^QyX63x{*XjG*&sn;FlL)bAVkNSAiX~Ci3Xgp z=a#46qkh^5FWmY8Z#C*%n8SwTD$jb5|9Pg~kmEbd70c&uoT$Z3?6yQ14*LDuiHl8> zj4z_r2Z7O{)`^O<0ijXe(}SA_`<$oR{gTZhl4=0mUG&`AK((E<+^8XT3)tuB2Q7~r zT{OdjXM>b@>-K*7`W-np(qY=x6vv)^4a<{?2R78zsIC)0>yz(=c1~2W$r$R<9?F?9 zUiE0}Q;Ksy;lp5!$|4zK#=)QlT%v=dDO0acrc!7p@(S26Z*KxN+c>vqy0R|mo^L9U$Ch$W+EJe!KF$M9WXu3>@sf zj0_fi*=Q9;@}gG(+2}TOJ28Sj(0!pyXh-yr&#HdgW@rS_OMQf2)dU0hpc%AJw-iM9 zd33}P5Wv6cqZ8A(Fnr}S*;icLj)Yxku`+P^fc~bowii{c z@Qd*18e9*eKArv{usLQ6LQ}ac(oMq*>;hS8Sr;fAoL*S?g#gCsAdzDF*wGIAwyN-8 zQ`SGI3*RgDn}b@UH_he8N@U?2&tJ%Pz}KH?uhsVp)W1l(6+H8oa`5>@fxe+mSNIO> znJ^XY>J8Or+u!x5H3v5-A*f5k=10$f0R`KfTALA1OqM5zUEf7$n0qcrTM7GMepWOK zeY&?)6TM9O8oDy$>mZw~gx)p}G@8uPQl7w6SYA1HoXYlPJgSdDqa1TVLe?PNxE#My zY~xL?EVzva7rm(DLq5K?WbG{ZL4q(R41y9e#g-B>y`s2;2`>fdg(3qfD1^PFpr)QA zQ;9$2P&sryNwcNER4!6b0yuUbCA9euN@!K!^#-Akq}dbH5JC~h?$fM*$= zQMR7Q$HfR+Z@m@8BFfQ>J>^^y^NYn694H%|DHLpv2`9!NqH1%nD?5VvC}Kh=Gx%h^ z*S22jXEY&yY)H!tL8s)6VH)kBl!Bgqk)&@~vRXtj)E}|q!V0R+KYr8;pGTHbqcSQHn1?e;zW*AW1fjEXjv}B~GX~ zT!ZT-M#JN>m;H22m?#GYG6Uh}S^wLLb9C;5$1Q`L>U;QSCtlwa$n0}*P+A@^{y=S5 zzlAFPozV1=se8LAeLPgYpdjp?9v;E;`2gNad>WzkJ*bBv{s3EVIAxL@aCNdBDxXQ1 zM%q>4Q0q(=$*0-Vl(O|KsKcYXGMt?ux^2|dmO~ubF9Aeks zo3s;gpAox6V<(T_p=c#EL)OF3Wu0kk6ECenRZGu=gcjx%X2-5;CVhDBVcq_urojgf z*l`Q4tGbLO?}BUctBXN09f*?3@b*vMQg$P*-9NT`7IsPzYU*8d{%G$qTW@!{Pl9g! z<%ZlBjhjMd~7>|=IZ_Xu0uj>ec65=EHUw2E7w$?^TmwPDh57R+p01tA!f zk~@NW;iYE3GF}6%;=|y)xvPBT&&0gTB7fvW-E9Jc{y??-OU=Gt(cdOxB7?}U(e-xa zepX$=PHjS0^=>poWAa#O8J#~&niB@_Athow!{9UG-uj6^R4u1`4=D8ee%F9}1Y871 zbsih3+l5$CHinP2T^T(?q9Vj@(8nuK^&avbEwy^ClZhI{7oJjpq)((jzQthsDpIKM zFMvx0dY1%z4P5;SLOZ>~t|#w~B(@*{{_&O{f#8@V2#T926pGtYAkbSi0Ln9)Qf>iO z8}`zZmO-B$LnJVhRp5t?Jn;Gy0_B}4bApDxgc})lF()G2$@#v`>uW=Wh~-m z2c#+)lncG>En2tZ0!Hn_m0;a6IazhR*J2&J% zr6=Q#A|4AITEupXqz;CR%A?x;V9xDU<|P0QJwJJ|eP5a2$)X*jDC3r+J#6D$5ebY( zu{GmKn3eU2`GmP&!mY61L;XGrj-=;292lcl%m6qaAC&gTBHlkzoz!X!hH+>wk%!vY zg5}qn0^7K;-_6h-ML6TOyT7lVoDps&XG4q4fhZT_$Y;}N0Ycb(BHUk3aRY=i2&9K# zyB?B-wvZP(8JxV%_)+=6gGu$gZX@Y0?pG6W~zwbM&UWMPVU7bs*s#Xrh=Rs)MG_GLKvzM8JinXu*O zm^1zW72<(mqX8P7C*e2v<_{Mn4qSFW!P=1_51$tk5#Z71hd_c2RYxG9abpbO6!9u* zn9?<`&NSFBy~9q{IVU_(^Z4m5Q2GVkt9`W7@myK@?MsZ|C@EzuB+dH6K`Y05LF))g zd80C_BK{&!MHm#&J*Dg!JBs(3%uv0z&{b~xMMv8xPz|(&{0{kpjpv8T^8n1R+D zpME8&?~`#W;O1LJEaI=WXM7)C9>qB=O3-@s5tO$1%8`hufS(%T3-lLAnze_6ehwhx z39u|8mVhtbkCtKVn~E^?{Xz*+h*}Tha_ha6h*nzC{=+(w?a%huOu(Gaz0mK2Y!1fd z=(kXySZE9QjnQ|{o-@FuC?^#m3zP`vmMyI9l&QZ<#D&WFw-0{5s0DYz(}95`9to#}a*dLg|jmaz1l&ysU%>6N57OgBV13p#dcH z1x7gfV^)7Ahj#4!HIu9taA*=I7y2t8(+IIIS^` z?4E=Te{S3=0t#GJIlWCC8k?a+p2rVGVEXzr5UA)pDAl#VAuh%xHTCT672icf)RD<+ z^=iY0Hpl(w6R|=$E6;~UN3Wq;(V=v&7lfFt5zzS=l~&Pt8cBl^LG3FZ6(DShr&H z5+C%>T(py6TYYFex}8#+nW+70XR7di^vXzDHEw``KJM9i<+gY4CX4X<*1sH#Sd_JI zqu)VSDytlAmtt9crYh}g#8ar0?l=;b*FDwTCRnQF(WzOQ83PwB9k2*+=gc4ED8gds#X}imH1ehr>`=43v54N1UiEufe7e6F|XWh9e@(36fSPh zxTE@P6dgVE%s>T+!kFhE@e}Q6f(!eI5Dh>N5FBg9j&ZC#J20DCZKo6^&@ef-f))MHt}q;S2=?JIWF+oA0taC#r^cK#H|stsd`6X9zrO3= z30U8+U+QDsl$p-64d&o&548s_ep~^w!1pEQw9)b!Tl`Vd07mncR>xYY?<4K6NpgL` z{xz@AZ|Vu`dC9#2dWPjNWOq&C(p?HI?E%lR)FVa&CyN|Os{`TM?~qp_=a82v^q$93 zVD3o+zH|*T?Q-r(5b&kFE3Vl?mmwS&^JVVo3)R-u3ZHTZy%YUL<}aBI@wn}DyJ&r( z!=C1YVj8VA1yL&Cqpqxg75vvY$&*1xiQugVv}!8@c=1NF1niUCk&nd8p4ZqQ_NZpS|M1p^9vF%I5H%oa|$j0xrllb zDo{d%M5L`Cq!ga89T^iOy;_?fV!EAe!UotHxCai(o+ElF7#**iPyka^hAfE|j|S|| z8E}@0NHh9wMFl)Qh=%fB?F#4>z{>&;d!il81SytdayW<0V6X`1hn8cpg_ zJ(LDMI`cEz_aWwq@~*FS)yUmWbksBV(-IVJ-lSLw2mby3)0T& z#l(yD^O&cZQb`uG-)g0#8k?Kv?wg(^kM%OWOz)qeG{KR^Cp|zn!l|Sfs8yoG3pBt$2m?V*gC(diuXv8JFR z==pxi;FUkV(pl-0Eai+P%yxbCxM0D08*0eViVR(5L6t=8@OVeOxeZ|MK*EQ~$tCy_ zxI-aG6-Ugxmh}aP(+sX`buA;y)flm-_=J_Azd1U$7|quey+Mi zqG_p$)x~4!qa0N}+k~7J-uJ6P*y*c%pH{Rmb6jaq97&thqeKhL3v0)sQ~TP}9;~M> zYY2PT$ZNh%$9C zH#Alh6Qmb3cXE_Bb`Y|)wzIV{ws9ihpqH?5GIp@DwbFMoCNR;ray0%QPA_8wLa14O zx%d8bO1fp7tn!AE47~JT3}sRvE$G34k^jK3Zv<@c6HLNl(Da9aL4VL?Kx1nB0?Ss* zC}}6B9FGVZ8OHb%=4U=Z6u+^;V7-(zJ0 zf8V~*C6CN>Jb2ka=3LS_O);q64fiTF2!V1{vTa-FCXco1eb9!%K{sCP>l1kq`p^dl zS3Kv;>*(O1sAX72$Y&3_B3S^E*f%_uF*_lwLY6*8=0s_yg+**tqn_`>wrL_?QCVim zx^`l!eg5-2r5VJgK+(^m@_|AcaVcpl6s(XjYvSl`)`6=cdeKi)8^HYN-k?dj;bir* z>mzzM(BmYpGwR|m@d7i`C<3YY^UFpv%Qx2@O+1L%!`49{9JnUE;?dt{&>Tj7h*ewd z*ro00=xEF&uVW)mZ$|#1MK|VPZi0KxN=tWFpTDA0i!P##kPBIK{C-S9JeMy+ zO+VDKP17IMKu1S+`8@DQI59p>M(6jr1SPvY#rgd*-Q<1=0vQQ_q2}u93W4vr`ZA}K z$r~@9$Ieo{qH^A!H=pnIn>bYsay!UPpA|aEsv`3aR$;!9XmU_urKdMX*2LRQm2VIg zDvo4_4qpUx~x*_tFHQ;HMV)QW^L?3oz zd)YAdqEKHl1|N84&QAqK&Mp~zee0SeNS;L3k{Ak6kvpnB-3nPyFdt7irZpDn?zMaq zTBeBV=ou9C2@=Q19r8rYOfVy@2h(=*^I@`t^pm2plTW+R4)Pa(Y38um0>v^Vzewu0 zNOt&dT3T8Q1c(i@t$ZS7>zZ`QNdb{Qqv})*T<-^)FDKk)HUfCnS9c3j;Bgi5q~Yry zzWGED5-m#o)i7RW?!lV0wK1O_#otQjwcLLWK0G|2>v}QTb0SIp?Kwi*H0l-!8WG3a zF?^?=oWM2y*0>p#8P2-291#B5v68^|Vyb**USr`XLen7aI(EU{=9d@$tGpG(+_{*f z#n+B{f#Cp-zrD&h>)z5mx(OlqU+o;=7}bK7PZAo{afL;>WW|;fvC)iW-zm6r`1siB zQ~xu*uCDIpTU6kV&hkZdPIcK_X^J?lQ`lts_~NdExu?A8Melyq2R!^TQh>bvgwki_ z13&sgCY$#1Y4XPW!}^&H1AR{)8K<91Os)C*lzvubF_!epqjMs<^**7STlm^PduJ&% zj^$shk}0@?iX@u)rHsjWD$ppY3R@L1G^nN3ws*#*h*tUxqj273AC1(n2nw%S>WtCMPohJ6}r z5PZq86(0Q7+jQGdDPh9%GY-iUsrsedLI9msr)&IF>>f(q;Up#TsF<#OZ;2&26r;qe z%C`Z%k;kssE62gvnN@&`!3KQ%=0x~1&61sE5m}$RgUJcpUEWisg6%0)ODMel&J%v& zJkv5t$(fL?G3HtqB7CQ41&x@nrlQ|T`m+|gRB@1@b6+R-5nDxzhSBFU@iU8iRm#~ zju`y^{`>j4#bq#MjtF}P3xWV}xyJwye2)mZ&qxel0BK2T8XSlM*P{K(U#Sn`Kx?~$ z^;PtLacGYUK$q3p+M3oZo`Tns#O?qufgNiJQxy>rapTdUS#j*$T&qqadnYR^8~!%O zls+apa^}MAEArzS*fMdJ;+juuYTHsJ`EFd?+)A=z`;N3#Z-=IyO>M6Y_V9_vmTa;-DsyW@O)cO`ES?wP`5bbtsv`JFMC9i^TtuxFQ-)0-BXXutCxXwsm~>m0pO&+v2=Iw{pVAE1jM5<6C$A!hV`DzRb*7I6F8Pbd0r@11HyQe78Wy9V|ur4z&k)&$sLAde2bs4BJ5J zXE&z_))UqsfI|z-m(kn251b7H5h>i<+{7DO0+ob5r9$&Z4OEEOcIt&4Ra|1IvICl= zdX*&^r65P?eh1DIte%>>o)x=G2bY(MErr|hW)a{m!6_w7H8s(XwuS}zp6iPA#~g2T z)XF!-P-LrLj#4aPXmHhVJ>NMYQi0;4e8`Kl3{9niVRh8>I1lfrlDD*)#MSKFjgM=c zO$u+MlOyepk8UZ9h&@#!2q9nYYMt1^OuC&eGTnbmxi>ee2Oz zOSa+$fJFuGr$RluFIqy=!=AblagvpU<)0m8)RcO@&1T1QLi{0*exDu33XyTotNSf% zl{Xo%T7nnge8#z^v@E@RKy{oCLbT|TO-)TZRLg{#&V)hF{k4RYoibM}+npd<8g;7B zBi>K370|V?5#&P%6M7K<5D{P-behP4Z?WDmV8~6kemNxmPSvdE(<<6KTCV7j+09w+ zu4@kp5FOw<2g1jzZWjP-7uVEK4qbc3_xVhMmRwjDo9UTTqg&>^e|9F-yN2-VA!J$Vtgs#~N|S~e{oqz#)a9N|X-pEmUVep`#0wRU^zPrurixGIkR!+2yh_4A_vXOn8?q#bH~5{pjfE_O2dM z+K|1)R0pyw*`GYQyiM%{>46i;AS-x&|I#3#(QT{(-W^~VI0l=IxBnOkpd~6yojnzR zCjrGFR_rJSA6_%z%H1d}AqtC_VihJI-j2dz8BzdSI=tcQ3#Ef~_h^4;1{Jsie9l4u zpRDTK#jYj$tK-!`udM?SMOA2ma@t>y zv#N&mWCfDipL2LcY_Oi>fT7emp?xe$em71%XZTGN|NWb#A;|jng0ndNE!9BdmDbFo z^&Y={r-&wb(*jQo2ek<^-2_NUK)n4|=kJzFlA!gF4I@DBE-E7z=1q>QkT=JewURcJ z`{BTcS3p0=jF!yY6N%Vf+IZRsZzi|q!^_j1b#-{r(euSbMPATt+Ut)#rq=wFZJ803ZV9}v+^pl{<3#lOK3kEA8}A7K zg$Wmh-)TJ?GBmO$Q;voaWQa8#Y1H>e(5ATO9{Y_dXA#Jf@ve*mpklaNKsJ{PgF#@x*@3>aLuJO zZa2rI-g8e$iQ1uOUp&57m@XMInF%%nMU@+&*!vMJ0(YavlALvuxmI-itCkt;mrcq_sVK}KHH#FPJ8OE$i z(QUMj7XVa(#-mzxsDsm#KdoD_J$iX9B8DkjIK#x+?`B;T8c(b_aPP85pAE}b&W)_x zZ|dE~HkUQzR53QR#-~@<_rtuz{%Ye|(~rk;oCW>&Nas%j?JcvXPNUO>e(dnt}a%Y+1ayB6(>Ee-=r$Py~VaDhh+gYa}_|| zyJOUj%zs58O<|~1L^V**IbFPMkSw_0V)0vGm~&TWQhc(jpU|7513CD)^Ximiq0O_g z3C2=m*VoO&E@#(w=Ov-&q^{_6VvzL3=;8ULt^xKoKcN8|*QpV`8kNx;Tlu@Yk^0s+ z-X?+gfcM?|j~AYxQUh#(xkNLo5(QqD=QreYgmA$5A8-JD6%57{IjucB*0~4?r{_}; z9}dF`l`(4KO$$53iN(aUshj_Uh^P(VkG?TwyRJ_$p(;_yiPTZkg$%f2r(U5R=9J^8 z$Q-Cl5dW*0i*bc|u)#5pZJkZ>clWOxH-#Be?B)=?c@NxR4%t>37#iX=yVk`vc9n?<6b?0PTJ8OSLwlkmbVHUhyye-h`L#l`jIB(J z@`)Dmi#C8rrgs!kjSe{rGjo4A!bvLQoK62>LPElgL?I?&TMeI7rVU*)JjdHiVLMKp zN?R_XR;Dr};fIX6KyJ<4Mr}qk1wC$2D1Ve)l-fw+1G4%wl8RNHMC%(ZCKHNFCGa_~ zI5>9d{63CvbzOKK-o895DtHeWKxsPrp*?04+OBnli`m4X&@2M+F6-I-PM63EcqO&H z9N3`PykeK)=4C6Cb8y$PU?jMRj*Sl({CaWWG9gk{oI@B*6UhmD4s_3?9)1#4iinKB zHIKUq$l>{tsv|0(kXxaWisqMk01^-?hWh%`MB9N*woOZxwz{@=+{5sx<|ZIeX!JeP zCLtg-1}q*)H{rP=*#IuZzqhFjddT4X*;K<6ak~MDHjW7+1A4_V%|*>)N%2sdjxLIr zEWu6<@D&4A50u$b2g6*A?+QH@wK=B3LdXSG8UWeASMD2kPaA?>(s5V8EK1#f4o2Tdj#40-EO5AG2>Cp0RS@E zRdW{}Xb=@v`9Ts@pPj8^Lk1ZaG-_U_%}DR03UcN5DfXimB7?w|RLc}ADk*7sT@tp+ zQpD)P04RH3hud5d0x!fXp#YHS@jvyew#Kl^!V403%pHaXeASL%A8xo2pacLYEt;0- zrnk>Lb^`!_A0cA44Z6Y1Z~%ZE?R4Xk?XK#ZM4chX&&-U*E*2CIbCSn}TdRQ&fzQ1A z_`&z?K;*gwn__r1Et2WdG8{?0uiXG1tQ?=qg=1eZKWB{k&dAPL8Ui=4&5rcvfwa0A zm1vYeF3*O1`djK^7E1hvG=d6RZw)&Hkbq+P~ zG~F$Y?`5yW;T9a5)u)aF(S@F~{|wY027ovLhPdHp;Lb+_+!)o8)2fzC%~7@HvI6+@ zZn@}&ehrOMy8B9@XpS*MGeTQHHfeXs@Nd|CBYQ?_cLkR#EkOhV3Y(>&8mfm)P5!Yh#WQodE(32-&qdK0r> z45Mrjh%>JcM`9W0|8PH=tIIiryBg%gW*USecsJ)6bHywQevA9o=r zhkT1c2AFqP(`i5P1G^S6HF zirx|rr0ve-cxkJfMz@#U_M#dodLn)z>3xJ1V%Ke_@v zNlGwx8jfqihSOTPKfKoHkd-;1*Tj)8te z@l3E_a_7m>O6#~FI5QzSqBJDDl=WvQF{;G+YP(lb?nNjyio+zhm`bmZc0yPqJru&p zZ)OT1%&2Ocx@Ws}p$@BQStH-?JmyG8Kmq3`{I#qw79=9;?)7((A}P%&)XB2iVkk=& z@Jo(jVEGB(+choOa%F5edN?}fIcryFT9q^t@(L5+`rZ-A;Or)4_(Q3z5F@&B{D_O5 z(ITgX>;@@}PO*{|$oL(pE{oo)W}g)Qfk;~ChiS`?=Qd4C@k@Ezt2V;JEoJ1<5-x6( z5GEM7E`^#O`o-(X>Kw3RchTPlz9zS9QvCyS&?2>>p*9|F!(6|-z}x1+B#Bdt+!lVU z!*_24IISR4e*g+=&I^R>d{@17)=xc|>pGQde|K0nu30wI72t~TmpGr>H_vrMpDQIR9%-R%7+F|Y$dwT=zs*qQGSeKmCLyvQ=H)P( z{Xsx2KSM9*>Tviju1V0hCUUPy5XM<8!FG~d#Wg;zswHfcm_>b?d2853cuPE!a+!o|<6592^IL+`VCR6ea zjNjc>f20_C?hPf-Y$+8UdoeD0Zb(H*6g&7?CN$LCs9pJCV2th3q8bE!k@w>wlPg7E zvKMY>+TO2kbmT9qVJjFR1cKikYnBa|P0ZE}#+a%~g?=mQqTl zZk&Q}0sqRoPD^yb8ubGB%@WH=u&Qo+4L6@F(*zxD?}tqqkKB#{Frn-@mWQ=Tso}>X zpV--12-fBb3(nV7-88xL6qnP+w~;{+?eBNjKbu^3G2EY2NaZd2U^-PU=!F;qK)^rr*!~CGdPrMG0tAoMyz8F>uk&MtTEcne%3<1kf!@z&SQ{IqS7Cxbukd+wVwq|u6sc}0 zE`Z;W2zn-Ng<)>^sS|d$hV##rlTHp5_8h}di$vOv-td6oAT z2to??XqiqZ1?%g?N^N?j>GNZiMs(h;97Ey_JkFvWxpyJf!Rca~vx~l)J#>6jMjl&9 zd$%MEz+&qt$bkZFHR7F)u<5SqSBis^u(n2;xtLzaiNp0fEKCuuMjwyu*7OY>oaprg zWoxzH^;XJ-2Y88XLyzyGsJUp*i*deZaPjAyp_lDXO$oWtHT_m?V`rq^$IMsFt|;m$ zLXg?vcD#B4#!b$6l`|fBrwZ4>OedVq@q^*8rs`xzJ^onjQZW6LVogUV9b}I}@)r9> z+j^tgJ>GtgO%3;cJ(7jbre2)RXc=AKUVd9DCayJ4Z|t5CL9Y1Oyp!GP zv@_QG3(v(GGD}k@`aZT0IV)4C)(4x+a6xz2|fYqs-fG_M)wWqM-53`>|oemnin z2Ti;bh-@_R9!`f@?0ujGnKsiCW?pAo!x$E<$!;wu9hhLYCK-7vRu&A?TUdY8gBjf} zt2$4$bn`pV1D@U&A71IJA!;}h*EgzMXbBN$ai1P8OwuT2J0E-13ty#n4BT|z?AyGK z#YxzUCbfBg;0Z662YBdMF^1xMpjw$M;RZ7Jy-PWQTwAMCEfz#tjU`JZJ)Wj?-t9^W zpBg+rus!%vz3)wgTLK^H!kBruAgSde{tb6KlBHvJKYO|-6y2i1V-xK{@Y1To#Sb?| ztRj^{(1lA&e)yjn2Wxb-kSm&D(DbRRZ8;r=6XhB)ArIV%}-+{OYV8 zhLHg}ZlA3T; zgRt>(U8OJK<1k_0N@xtnr64``lKsqr!Ii-4*j@XX(+*r338D(D7E#49gHPC5LGg`H^7oay33ElnddAo{E3@-`En<4Yjvl5r_ z9d)u)WrOfhyeuSwAp%)l&k|Z0CPYfRBF4mtOf-c8;qRbq_b(PYwCa{8WGfYhveg(K z=J=)vQw}-vOrmTYQ3D&$BNeEg!X(@JXWTG7tg{T9R}Z=rp=Dx5!~^21hi;>=fkQ)_ z_2}X9e}a_>%WOvURKz%G?B;!uG6DPRCTA*~USc?+a#x6xtA#^?mSMbe>TB+V9Yhw- zRo3Lk7k@O7n7bkjfZsU&D^NfR(~3qH(=aE{&1;BrxgPCLBJQp)bPs2xjt9cnql(|> z6&&n9wDaAt2Ua&k;t%_RucPN_TCv+XYo6=c+$6NqE$dK!3khfDjdE78 z497fmC$~`2yVVnJ4#}9UEdBFi!;IBd37W_0=8%o>?eZW&i_Ou34(MdR>j^xT=r&_M zM?aAFd|Kw0o*cH*$u}UoP$S>#f&;Pp@v^E8s~*7Xj)yO)6e}97ACYK$xssBLk`k<0 zTlVb^&lP`3YD~XwXv838_wjyD$!{{ncZVNH&`d(?l5Cx1c?6%|Ez|ATe9nQ--5e4? z|MdpW=@%)??ex(VkUgQF7jlTM?S__Ff^{>Y9IK7d{6VY&Ti4-XhKYe(w+WkvK#PiX5_L*liU~JnhRCFnvc&+Qj&^$}XNSDS$#mg|5K%neo2eWjk5kh-Pn(v( zlY?fum5PH5>r1OxJtNdlZQprMuTC}`F~-q0)49H_epcR$Z0E1luHEX+Z&N%dwY_7u zPRhy2!T0;R@X%%9b(y9wcdz#&qP^asW6lTYQssLq`?OyAT-JXSz#?`7ll85%bhM}I zcDUawm@jN0y%TtlLg- z8Rs|fMd~|U;Ku+tmfTVNh8Xu28*V$!>QmI{{5u2Nyr7&#U!AljtP3AwH{R7tvo*gV(~O+!p@vQg;#v zO{)593X#nT;J$2RX-}#(5veL{KRe&vlVb(tc7B6TmMYQBQql2(to&b9<}L^447K{UwuxjV#b)LRiI#?ac-p>5 z9`-AegA30_Qo-jfFTZljC-7_%zE-WgKZ*78-YZDi4T=iYwQ>y~W+jm*_{ei)Cf4!efL)*0^F>N z9=<%h6wQB|-9rS44c({}qo(%YZRmjQZ;6_QI03tTh1%!_5gQFlphbJ@kJfY54R?~g_^)p+=k|H5VULcY!>t@I4IBhw<0*Naq|LzAJ)+`c^F|b!`BtABzxbvZlX2lsZ5|18O(z zXUmnFXKU7EAYAz3Kp{0;hG)QABgU-QSzu>CBGGWxa#*7s*AJ19+xZr^;t?)D;a&Kw zeP$nxC8t@UuSccVZFF?!Lzvdh*MFToV2?`ennp=hkH;{G#sgP?vf;W+D8Z(%3##~ z-L-eeWg*s!rbbjEr$+5?Ar_^<^7jJuji+GU+sYF^h|CA0Iwi_>bO#!Z1#csg-l1;c zmg2g;b4`@3ObYcZMd{Ozgv1^{r8vG{UesoX)Jb~bx0RHbBSi}hxra_Ff~)j9c5JTC z0kO6B_W=N3G@47y&P20ZKlOdPk4_SOd1I6zq%!=jf$K&kClMht5oS7IGI{R!l>-9c zO|@gC!KJ#9jOe3o_Q0uURXe3_$10pGB=qNL+<^%RLoSc+?CS1zV*Hr`S+5Kl8-~Vye7j7=Lf2$tYZeSg|!u9dq?(3r{=`pcxwJk)X`->$Y2x5LaLEiIY_TMtpMHY+7#g;t3h@8LRJfWnqfq04>U3m)->{Q zxgOovn7Lr#J}%8+0Sb8E>}+KKg;w+*oFQpp9`;Wz*B(wUQkr77wSX)7?XA}r2UTSj zEZJI*XXi3%+}oWp(kh%9ET&ARobs1dM)ui4*S9&Pw?#_X?H)Iqr+O;kHJ)b=d)Ow6 z>Uma6g(SCD?}FL<&Qyr*FCdi*ugdQ=Ne`7M?#}0mlzfHm3|t4+ei{wc_ z8Jrxhot&&utULz_2?!)}g&=Kc`lx{eNwk!VlYRLN2YXUBB;DMtAHKA|(YssMYsxKvUBZw1PM2hvQOLB6X&nN+L`7Z)7r25L?5 zUzttkBpx8)Hr>AB6zS4tqmJAON8-=+`t%NCw#>FZY{$2{?y{eUB`aNOZ9l=(fpV#&wq#Z=yiLo zsRTqf*Ug@*KlaT*yeZd`i;%N0(Ms?IqH!-Ymkl~>+nsYye)L>G1_GX|8)g{$65KmYnY zjUa*ylA95@Ur~)id`0E`1|;drTBSq1kDAR3+hT&i&pJcEhQeqo7p#> z$RbfL6buDJ?nSki0FFZC!Z_u^Z8FtX>WQmHiCE0h4n@S0`-rO?Xb-G zXae%5N)lgdu$OWyIqCB)@n-3m4230aZ%s)^-t7Z0qIRM?w* z3;k+gf*gJ2XZR|r5p-lw*6wrg1`yQn1$8dQ-U$iK)(R5QxN5tIjmgJBxfM@TzWepzkS%&ULVOpGECNPz%?|FBQgG)|AePb*n-xz3#@1`;@ zenwSuCSR@?*+;>Vn}Y;*`_e<~4QRYcvdP zbBK$frTk_Qxvvlj`=G1TJn3u~P*5XLwxY~t*T}NTR|I5tCv<7)8?Bm;pVScs;cyqd`cFSoM3-LgMeb-Zse66oa*I7%7yc z2g1a$ zvyk4819KU|x<>Wb-#Bu|lhWlSzdZIt2h*6`SaJCH)xu3FxLR3fv|tXGfQTIPi!h4q zN6lY9OI+QC5@|YQmx(94wg{QbB|NoHo99!%eJSO0h~DGC=lmI#7KT%0Ojy^tXrN!Ay5d zbYkXNOJWAaP>@7p&dA|(SXP0ERyG0W=-6}!-{KI~3Lj8qpzQ=VsBVhUw*cJ9h?>J6 zoYUdYdPHOcUhQfke~b1Iivi(>h1(aBsl$#aQ>#}zGqpk0GYy}FG4o$h4pocy=q&}U zh-;eg+=9fX&+U4W+VNg~1)kRnu63-@iJzmyusi4tjrH17RYk?^e#rR}Akqw7somV| zCC1e4DK;6Ft)078jwKf87OWeH{Ec0C75iEE0yYz+yAmz-_Ws1H50=oB_1+oM!0ni` zw<#?A(E@11K?9=jj0)A9JlMs}+zy96mH`c$@}H!m5Gix&{L58oQ0NNKs;B}Et#TbH zyPwO#+A-2#dOAg@B99z7Hzxd)-s29yK@N^H?qsWlUX!5r;<^%yYj@2xxb6w-hCpq?P_s zV=0Q&92Q^85wFM9%BsOWy@4U4d=(#>B_cMfR^CUB3q;(6oelYzuQ}9yXi8fh(Si+! zC(IPw=1%(VI85nvA9&3_WJwhPL!8}keNrtqWTU^3b9r0#P|Q}6h(+?tUN!!^MO|cd zv23EBd@7B(il!ljF63H>vJFX4d|89?E$ho+iZt7J6qVSV;>S2u*gDun*jX}SGE(>?eDUlb$l0jlyvLwxWwTg6C-Sw;hNokriiapB8WdwU z*T`hi@;TwNRbq>iRAXZ~uOqQb(LlfX7zcR?_r&g73@Zu#VdR#lf)@tZfiFWgfRH(n{^cqd*rEx$v z+87ffSTWPrsaX`r+lCS>7=n~Rl%YA#3kQVzoIWd5mgMl^7|!t~tF^nRE{9n95S3Gk zF3l@kDYuu|N-1$Ze%L<|`xbEFLPG(kqrdO7$@PO-T6t0L8bnZ7xg7G#g++PHt56Px_oA)8#N+ttgkySdZjk+xR)63xTlz9Xtp-*aXFS_wp*}c zHu5(H$yMyZYl!LZcqq~C?CeiCW?Mp%ivKeG`b?TwafCI8*JDo9%1-uT!yaR>5xuD* zr@Y96^e)|Ts{226$GAt|ax3UflDb5DbEFcF2oqUZElP{`;7^U~srILkUsR;&z zr-1=EM67r$haw@l$VG^d@P5@Hnc&?Q3;%|uXgzIP(Ta^@Mmg7NYa05NhJJStHAyr# zaiz_NmU4LUSrX++Tm45y30S%z=YV(P(TKW^axx;rBmO0kX3zR4`FSd+xpB=%DZj~7 z(%08A!ol@5Z4en_ZF4Nric? z7evlf7wohZCC2IQwW2;> zWP7Sc3C*cVSgvLwA7Of))|6GO7;P&XuSNh!&F$AEC}#70uNqy^Gpc4%@aa=O^!Eb7 zgiWWqz9*;>ly}j0+ZrDT8Ehz&O^6O^vFi@339JpkHt+7vd~Pwa2$$5cXgKg7vM)fL zelE;Y(w|DuXF!Q@Y!k~9(Al{1nmRpfeS7}rvaBXf{P2c4KK2}mte5T}iVEXO)H zuyU&@^ze=>KT-S#TkZNpE-RM^cY_!r<7^LM;j)@?w~Nzjt%XAPs#vwZd&H-+IFnpo zS<=z(wlUE`->(CloL6!71zg|j?wIL6=a2s}@qIpNf>gZ?iyu>T-j){bTk^6UC|!9z z=>iq0_2MFv<`9WZbRG`zBdylpl1)L_%frS**z*aL)GvH|m`MB(MDw7@`+%lc6rl|XKUsbFrNh|;nTSM~aF9hH7=1Y}i*4hF;0J6=kx zTFAMJ;qq$5wvG35LdlYJD11J4(v|!;kQ?}uC!d`6$$#c*P+CAszLkG@oe5`}#Ahr` z=i**L?&WnvKwql{L62}onu2qK<5^~|xTAe0+29%DBif-=^juxZqXI?535V)s;k7Oi zy{w&$t_pmY>oAe+T2m`X0uHK?Op?~3R&6>Mx|~%T4CXEhLMqwU z79pHBhd=58`3axbWfl=47vG5|$6Z@+Phwc**M7|7LJBZgsfnJf&iejRyKxio%N0uM zejytUBc#upp+TJM$|O}A984nBV4MY(=X98C!Q=r%8F-l9d5m>M$LP3X{N_0sg*-1{hY@Bz(;2CT9xv)xdelDbQ_9wh}9Fb*2B&weY7gT;E2xU{3&4OhCm~YaXp!& z`Z9Nfflch?&80G3oEi<0Y>d8e>*gzUn&7SgKE#00HbM0;q(6)uP82)Wy)FA zfm8cIidcR-g&24!#10|CMg`kwsJ zKRXplEqWsF8kZiabDBCx85k-S1`(>5UW*$|o)=}TrJ;kX zG)=Q3GFFOy`#Fnf5hcF$I%NvGj5PCkj~w&+K3V2fY+2@6>`D7(???fv=1dJS$CFBB zM+Z?4u5mBuAx^J6D*R(asyTf@T}L(r{~LdM?7iE}Wc^Kt-IoGm(#&J9R!0i&hWgS( z;-6zn3t2$v6evDdl_fTmW4@n*B*&z>p#J3hj0&GWwKMJ2t{SV+5aV1`7xp(r50<@F zx`N^m%aCH;n_;q>6o(03Lh<{)XoZ8Sm-8d7biu`+w75P$Tkvy@C{(V(fk*ZXR>bt< zF2KM&|CWpc1#a?>)H;mkB}`YYf(R4x5$owA-o-bFFp0)(KZ^!=7LD@3*o-xTHDCmD4Udhd(HBxqtB8L;rB3^ssw3gHy9z2OuVA2FnML-D14 zMBqxb(cnmx(@=gJJ)PN0D|M-QsB?_xBa;@!fh%2$A}bU92g$*xc!>=kR2{gKVP;`#<+8aqlLb1GWoo$} zCRuh#7nP|TOs;QLWtE^N`E=yPxj(bg!|pHX_WDn@3_?Y?zB0laH7h`N!Q@V+xc}A` zNP(isDARc#GhIx+jUl@9B0|KKPu za#!fxnJeSjet>%RB}`h1qbugi(g*&vO;b8$yZenp5ma*+(-VSeq0Cxd>;bgQp`oI* z+xO-O!o%Y)St?%e1GFMzZ!g#GAdcPjt7o?c>`B6__kW28PKk_#g z-Zq*y2z5o$%3og9WXBPY%tZ2ZUqsqL>vvso#rx`fYEt|)nFVTDA~b$dpZih;L+^+Z z8?y9@rOl3OhfypgEzh4Lgau!BXZFE85;vpaukX6>gd`Y-K(SmHAc>p0eI!U<&D59T z`%(Hz0*GIaj@?LoRu_2d-MkQPBcCjZbor2Y! znmwi=m+}oq3;vHe2A{r=rRBW*jF<*uf89tCDI4Aze;}Q)6;g3ew%o9SfI<{RqzbEN z#IBzgO1=~b;p*sR1|8*x&cr<(y>4y{yajf9a)kc$rowYm;+Q8TZmj zluT679Xde3E3awXT}e6)vKd{nkjH*mvkBP|F&81e@_51bES7y7@BJ@-Ev)zTKTKAq zi`UcbBR}>{OsArVhV9e$jB71Ni#YKU#=(?2EU=TN?Ryj=mW^osGGdqu>?R?F3pe!B zy$TswaYr&ooSUZx0>n%h-&jRo+7v%iJz9=9&lRIZ#>MGwj5rKDyfKx$8Dy|?H4dO% zP{n+Cjm9FLgpy0Y)?cV0gHc{2N5LTXO<5(`MjF%cZn=?8j>3I4}g%>_?Ki^AyMi`4SAyu&$lMfd2BF)2&Z#Ii9lU7hC8Y+{X?JbeE_^2Ge z8>$umBSIs-jYd7byhuld<4jJG4tK8{i~gfqF#ShlD>7vsrB9H1-TH`4!Q6<#?oZ-+f`15da1GUKM41#f7vS zBUpIz*Ws9c(Siv0kd2hW9#DO7jJY0&RtB;+dlnKJWU3B7P?q( zIcC(GOb!X&v84{wr<93KHIVHshnoS%us>K$&(U$A#eHF&DoGRL8;jmLszzy;o*{A$ zxbn%#;t@*+Ga>L;GG}LCPjEnd#k1txjj}f$T!yLmpEih2p_gaZMwgRiqMlvz@TcEa ze(2C7M@jKkQDBSX(lADRMeFX{IT#m|f~%5dFe)+Xf2!-({bh|BdTyMTJ;?d?vEft9l6b##LN#mHn6_A^Bz0jQaon*(_ux%# z)DN+*PM4)`p0VKV(E94W>(0F9Nd`8qN!kAVxIuo&<=nd(6r;UwO@~|4 zv_>8hxg-_kXz`2&!2FiOn4DyWe0@xQqvriIxoP*a9ZY6(d+~uoh27MoNlq>AmrXS{NeE0DBQM-uZHBV|Cj`q8U?Tzsm~WieX+;Zln3?i&90!!gT8g3Wf$% z`uwegdvz!K!bsTfIW+zyC0>^Or61>nIc5-0fs2};fgxdzqlXXSqsjad0?HswBKLoc66WT_hAQwkBq>k_R!mnph)SOfXh*AV~J4JZD zjV2$hpKrF`@4w?lJo6FOU^$nhDl@M2tH>xp9%`dLaiu7&`@nd!H(=uD?k><6N_78d zasOxpO;CfaD@R&afcr9(v}+6|!pO};r<5|QR5Lw%XS3%Xa^2v@O@B7vl)!VJ;dTF* zf8AF#F!r#1bmX3k)&wSvQRSI(yJ>2Y%0(lM#eZ9!)*&1rQ*@gryezbAt&|fRIM#L{ zNG!BU!ctC3HoHM`VSLsERoC-)2y+A71-b2MsBw6QDmx{=J<#^?b(4K+4#G$;%XdZU z!AEwTFEjB`ms;EBHrhE~w{-_RZda+-x3g+ca}<^cswQF5wcB=VzwRBP7UQ2L*yqL3 z+=CBk(|fF^XbZ7HRS%;$Bxw6UqftTg^xZ|5Kp{^zr-INn_E6Ax$4l3s26hngti5f) zIh3BB-Z&BMYI{ZTLj|!@T^phPz1c=)PJ8h->WdzX?cH)t+|dPVdOeCbe5kU7ybhkr zJNev%$AvkzyQAGKmAtp8d2Isxs!ORXxXAI{$NclrriiA8nJ?G6P3IrZC-u43C_Z~p zJSV*M*TCpnC^BdJa-RYiDi=X_uUYLuH)pEptR{A|r!iT9WI$Ra_7c` zmIP{l0Ikeea8GRDoFW$9hHhD1^{GZ^?-+KeLpfn^T(MxJ5+J;>H!iHn-L*ufE@J_> znfQF^Io^@fezUv{rjh%YGeL3}Wj^^vS$N+h@P5uqe&p@$sYKPAm75gAzPq1LZ8<*a z2lZ&zCb|eTw8m6R&?SOtpE`WLC$#9xE1l5?l*w8*5416+Mx~dp7!c$+!6nrRTAbYy z>GGHU49ikB7PPO9PR?Az9Qt@a(DPAuStR^0zEA9Oh^r>LyD8w9pZ&*Jud`N~QMR3l7k_^bj;K}j$TsQr<1GH=<-^S;-&GrXvE_v;t?jHNIiE1* zbZvDc8I?vmMuEgvZw8A^dh4L(a_-=2?~q2eoL0;I4y)i>k*w_vcCNeAZpqSgMRCqq za}xK8Toxmrwww3)v09KzHQ0MU&Qk2z|L$clq*mp>Cvf^Nin_}F_iF9_CpBH!S$`F1 z{g;}qJWn^!|5C^E52#;>r1T&KG=CM`{bxdZLJfAydvZf2wUlu6N!ImIvmMg$+hZ99g@eFRSp{e8WJ0i3qP z2x}Jb?LJgYa&Z|TGK`?`Oiy0$Yp%CD8iw+ppU}4EfB>jIl&Nc`LXscK>qIXBb@aa^M&X4uA_i#p4&1x0?{skRs*a}F9Rt3S8-kbYb49f6FIw7N zo7@0zAW1v?D#O(zM_jkL<+v&PbOld)%-L}aLW~Yb zoD_pjeL0w|)cUfZJ`Oo`?i>GxeFSH5(1Ls|LUancJ&o$ zXV#IiK;mC*8*f)xgiZL&o3yY^$BPVpF{VFqYqpc?b(^zH^?RQD_*BguIXVkF;W$P40<+|vniAx$=TjH>f-9*h(fH7%P1k4yfvoL$B;`X4JpzTb%yZfIN!k9NhXeS0CSA`*qa_?^U&J9-P9}b(| zG}CGl_<~0@`yEXW&m1soZ}+^mspegNDVr`aYHM(QC(zFC{NYk@$!+E@oqSe)l}urh zgWe+8+9Z5+&d8#{Kml1b{%U6Hh!rqG2Q7he1g8IzB)e_r2NCV@*5jB?p*Gh&kWwg@ zU`x_W>dY^jNZ*zwKfJS?mkkDK=Re!H!CT0`#WQuI?=Mfrgc#%Gi>kBbQ-SBo^D&%A zuPSZ1&0QG>DW@@hi`wZ$=FT772B3gI?ZC_sL!%ZU)4o0Lu-$M_~doBM@Xs)kq3X#WY{|2^nk@oLk)6ow;E*0Ly z_V~X?m7kPj3^OvhzVWDF9k2Bl(rKhAJ>RGV1RmyADekV0-$Nv{3f|-F$3gYE<#fwC z6@0k3dlhkyNqjv8nps`Ezx?)~L$H$>`!oUnfMl#N^#cGqU_6kgVncoS&5FW7GeWP= z#`?fOEz?YI!(YRN(6Ww-&$zle=dNtdb$xaI#+&qR%Kq`TW^Zn;4@~|yy6U;dRBC(D zYwFXhIVbk7_FXrw@i~5;tR29@lZ_L51aD_|=rA$wl%~PuO4gBFlNVVl8|kTs8!*S0 zp@t{-o(+LYz$KwO@0&`M^qH{ZQ@k|29u)V5xyTfc?-`^(1fzw$p7E=P1uAGP;1<)X zrVxVt^s@|zOH>+GYNx}3nEao89J`i?-sW5}i~piUxDC>3EkjgXSUAIFz(2`agyG5_ zuq&n*sAn0=Re0Ye?yXg$_D!!v)aXFIJl+m{3GqAPg5dd$eq-kjgFg9sYoiPGth8H9 z&Ru4MBGap1bQWjRv?=aAW-~Kc1 z|EErKjbpupdt)c|Mb4RJ4zXt_j_=2{X0LkPY@e7W5$>4NuVCLv3Oj!FtLc!OqCI(q z0?Rudv1;ckyQ;S<{20RXyyR<7t5kkBw+&~eS4&jkPtYEbBNfI+qzi0a_-Xs4y>0~S zt!pPJq-4CI z_3o*rs~DNz<}q~A-kr!iI0fOy3ywj)itUKhL!jf)%P06+U#;q@QOu5}L#w*`oN(j7 z7y-N#i|;MyCcN&p=xOL_dd3Taox8lVHBjGo{j+xmi7Rgh>EjK*dB&bF>7*Olk{y5T zoAhC?hXJq+k{iWIdjM|X+;b!JB@gmd53`I#d%ya#o2JG_i}rSGcZCnQ5$>(YSF0V7 zw^vdlWPee=k~p2fh1iw?0T9)2(fox z(Cw$rOv>#^i_y92+q;(}d%+y|mv?G16){s`$GGLJ?OOx$SLOAOQlwL7dY|n`bNnuC zz2>{zFr8^ShB1JVw8A~`SFZ1=Hq2c_(N7Hef>qH#@PUarYl|=f{4H4~Z@!)@^)@BY z|FYfi;JgPg5I{S=Zelcu;WzxoyW(%nn5!k_y1g@mf(zu#Ts(7&Sr9gGpuqr6zd>y0 zdk*vyCPh>`G3Z$kd|Wb4Nyswn<>u5Dt5WO(A4Cd+H)GDqO`HC3N7X@woDbg|(_42e zC1cMZlBej*sw|(gM8cr1qE}g%zrg%r1eR7wfY}|#jvnKFdRkRQw>(>T>luWMxx!2*f*|}^ z*W1?m2{8;XvF3F~pKuBC8$D+q4}ifgHJ=ss*O z(dALW5;ydMA83|9P5U5pUy`E-{Xz_FP8LzG0gjCbLw z*>_c$*e%vx!H<7(l%$Jda$~9E$4bU=g=^FJ_|x~wKJZpgqeADyaY+o@s1au%zL_sL zKxvSD9=P&s5>YP3a1QX{{CH>Q!^Jfy(E3EdYTZlBi78YvuDI-T9qR1;(wUfdr-9YB=W55j zdrR)F#6SAS2%ynKA2)@#uI7A&`$xYswhljdp!IuFqnreo^Ch8;kUZqS`J3duIKRKt zIS;;C^-UCvxiY8y$G7WCQ=iRLHB0wl`yA58^ku$=zlHK~Vrk=Nu*GKD_%x{YJmJUR zLnIU8#xV%{hxF`dTmB*Vt7T%M*LqYualc62D*8bJ}WHtZ7M)`(={Ny%T zBTsX)Gv63G0EBilBF_EudhcZ{Kw7~YMucyj2r!8W1jNN$!TURt_i_W?M?C!n`QtN1 z2h>aA6I8%nm_0yR>OTNKft)1|1K;XGKD{8_@FJRpAX}e@oNQq6fdGsFMR~tl0>GD) zEBH49z@q=g+*`&)y|sU%bV#>^pdiwn($XCUozflBFn}W6-61XA2m?cRcQb@^IdpRd z-0r>a`+5E+UYzqe?`D20uUy}iSLOV4#@LDwg|GmaQ0_Af+?>r^+5M%p+&%x1o4yAT znC&ve5XQ|~_|@Y50Yq!WTfnRNwY^9qwxZJ!#?(8IdL z3#PJ+d!%zniHFBClO6W`Hj?LGA|SW>iFNrUXpnsa44659N2QR%z<21FqXYxP?BPKM z`W3pDMDlwz$%psmj^sD_A$z}x{z(b^O>}*a4NQ-O^KTA0L@oa2khalZd?A|s%@=5v zn4z`K`CS($)R`;iqA@=W>a=Nz>+>omxU5T8xrPrw)&QduHc-YC2g31wykk)?yk&Cu-_?;AB!s)eYSsD? z2o$UzAa>Halri#=HoWiBN#(s`IH`7$keV<2u452G)uPJk`rL z(SSS2C~pr15Y_K?W#3n^c9s|^b1_Bd(z^W4MhP;{Ux+I(F$mU@Ik&jtUi%UY{9S|? z9}Fmyv7^`RUANFgf_zt@1{7_NdMH3Y_*pbSs+6;3B|BWY(W1X(sX3G++nS=DB)-py zK7cGjER4P##8r2ngNMEELsJNFzly#;sz|1|x3A5x&1VWVrUOuiL7E03(*UtpaQ{y= z2l`Bw3{h)B5$eS?Afyj^sC+g|TGt%JPEeLpk(|Fe@647otGHuWi&>aQs~1eKcEo0+ zly-NXbUECAWxQZy!j*9QG)-CIg>L$l$vK4QBa>~LHwf7^SMI`P=!RObw~Xd9#`)$|q!;Wu>ftdz*(+h7Hr({He5eCF?p|Cmd-!T=`k z-BdSnhsXRRo&bk=tn?EEk*uskXg8oS_Sg}<8^IJUdu6oXoH~z0zSnSc8 zyjV1@>R(Ov9@Km()R^&GHPObxxf1w>h2!t0oK;$yCucr!F1hM~vkH8RY(ud@SMLtQ zgruci=zhH@op5g$%h~<)q{9V@JRfq5%f9P{SG>}CT~@S}ciL|^zq-_T$Gf4=^-g+j zf0QKO*fcHG`n=73-d3{{+06=f;XTnAM77Ct*H4Gu#mUMH*j+cf9PR8;-G4dndNr?c zeeTiCli>&fp9CKgcs71u0mm66^f5h48QFrQasOx(q{xT(H+Wv{Y9#PyX7ac*HHqRo zuc!|GAm2E5(+tt!o=17>;`McY4Ons7zd5GpS+*=1$59&42DvSED9StVblImcT_goB z$l<7!OUKbf9F%TU60v#Q^Y0LViAt4CUYE!}rgXXxBKnWWUB7p|(w$ucAC{{OQ&NN0 zv-d8U2n!59zc_(fXhqKws8T|f5rp@hE!g?ItB&3%KYX3(?Wz_CS?FCZ-_%nHeux5^ z6QgYu?lAFk*tmLexG~b0sOPxovwp3dj#d5yc6jp_AoFjJrBLA;T`+eiE5_7Ialo7w zH^2adI%zcMn`W1gi@n{lZ9tRiW!pp=-?}E2mbe+Dhe0fbe}1*nMOm_&XUD0J&n9Pd zGr=p!`3h!`AWO#8;yF|apj*Xl^SR-q_JhkzUY^D# zpM3i|jIN!wfdvKMj3pMSP0Ft32)8Z@nkUcO8lhw@w?6A9`qoKRhW^l7h6N#FK+#@Q z*wy?tbr`96^=kq3bK3w3(jo7UXBJ_PD zHWl`AJDVYU6*!ggy2E9Fu+!y(EuPcO^hg*6z;hkCm5K|#Hof&+*B!m$2)GEJ&AKSv zamoVS3N$RfGi7?K0crA{Y9%_vE#!dC;u4uQf)AazFPZOBicqM99MUA{89?6Y7sqj= zemeu4tNbP*IA_if!N3blvjtW$h0KdmanEimwzef^5b|Znp*=-<$YB*!26)~ehiv7v zBuQwhiYF1bL21Xi#_IKEkg#68O2Lpk709rb7KDZeh7CH*ptWL9MWivwnXOvL-aywiM)>eVnl^Xd!j=i(lz=0Pwjru?oJdXs@3=mc=`3vZ7 z7L;&Od@uzIw0>N0KJ(F8Us!esYlRCAm`!T{`bDQ%hG(k{w<*M9J0Hoy#gtV_s4WLal|vIQF1W!6vi63Un?JP z8lGDHx#3lN!TV0?Zg1GSENayQnsZObOL1>_{)<@bhv#xH$hT&Sqq7aD**ePL;} zTg`;qC8sk(Z8>Ev*G)HVo|#})H7Qh*CG<_cJV>8!epUBJ+sHdi@`Z|698H0vzLAZg z+AUQ+uFbxyIlG7hz_lAFbvWe68N@IYpiq9>FYHFXa z-=V-#B8lVjyPQD%@%~_L`u-)Q_%RODFv2esb6T(|vBAE9hjW$kYVlsRaxUG*Rt+J0 zw-HpXo|{aL4TCQa--9XpSLH{0na39GiBk?JJ?___MRMllj}%XtDjA3H)Al~zNgpQ9 zPjD$LUYd2BKZh=>F@|tR&;YT)koA2x`BjfdM?t0O6%S*LR64%dP9`dy{86X|2o#q? z1gpLs2mq!Dk3BZDARaUQe8X)rmdVxg(A6&-=t>uz38MtfJ3O$I(cY&gs~!jt9o=AJ zxzXOevBkY(b{C z4z_jI_*VR_ixzYrlNA%>nW6*{Y^%{YJyFnOh~=7lD&>udZQTf^M&18{ymg!hr&xK4 zHzT!~WIDr)3IN>}=?px?(eyeOEU5>nJ$?`Joe85^L^{k zf^CH~zZFMy^Jdu^bd%N^a(NEmK$|)X`I24Z@}s{6)!47nxe-lrYpF=Wzc*vL=2n^j ze4Mgt*|9Xn^W(mBcAf9*(bF3`Y^iGb>spIZdNY+l2;^>%6r4|?+??_{HBnwv=Gh_6 z>JJZ%Tcv^_##JW_?Zo?D>g%b6S(}pvMVVLM%F9#kEtm(qXXYe!hm$+%BrZ5nS>--^ zl(b-5&=P|A4^cbMF=JrHe*zo_=Re)yae%;HROLD*^I)QzbKl8_+&ZPS1Cv^yB)yK? zGCMNQRcI-BxCKft#;(H`-H3GS+~HW{XYq4y{6De8!0~$t@E|_^y#L2F89NdhN}U0PFk6E1Twm+BG_mOA-Q#nPU#f zIy#mpXT%f;*&jc8-d>*ojS>qIjN{ZTw517Rksf8~c3E?hWk-!1iozoI@Dt)f(14ka zFFn19l7XQeR@IA0hKn^VDw9%x?W>xc&d!5bpWWG2dFOLvb$VJrC*oFn zr8V&@@v6BOi;?h0EoavP2wFT*PQM=>+L9{j>C1%o z$UsQwlmFq25cj{%W&F<%MsV@+u>a?2i6$K_=n7Pn7tiv2X7{Hr)tajk2@=>Xb-lbZ zNxX*eRX`bXcXxL(Du^TdxQ5l;ZS+S1y0ni3POpPt&lNtL5`<7!3Pq3A10dt$`4k5S z8HIYcJ7=Baoj@Z7G7N+n<^|`cpDbY6@G6}oh&K5vcEbTZ$CB#-(_7vE~^qK(uIMyStWDd zu6{wk>Q;ZB>r2cdZz$v`A-exHi+Z~O&;#7e&Xx!%He>vnw@nwmZr|229=_df9`Y^} zx;eY7;u+dH%n;_^>tLPAPU2@XfX^}4z1?(z6sw;0w0;OEf4`nQrjxntPF4uA2g{mG zrj+S^sFPQ1^z?LhzZszEB8rGm^1u^&*X%Ssp>ue$6D7I5cqy57XAi2#KfFn3_G)N8 z2B!&ck^-(q@3q~cY;O_*nuSuk$6x+B*2o}VAo%3I?{%oCgmrIEyF}cqFg=-Uf33c0 z((3Q7j6SF4vbk~+V+py<80G<>NUvp&T(LBtG%I?)+ho4c@ncatW6QaAf_EV3j@{p> zD6@K(5^BiPH#fkOT?P)ZPg`;6`k0gOk--m(_IqlKr$~C|Mx@vq#h>O= z@6N}EGZuc`ZUwA!<^wLvh%?LF>tZc}6bLp(E*yHNSpdex=aX@q?*4>#TcjL1iT&W~ z=%f8jU<6i4sjjf*0AI%sm=4f`FKI4Vv@1l z9G8oo^)52ckK!!5Pr?(EH|6fd{OcRcYU2dHp`R_a-tj2*{?M9<`_W(%YN;&9sxsa? zPms*}99M1Lc~zq8!v(P#80dIos}uxscs-l0dp9&(68n?Fp#_pwx<>XRa8f{fk+YIS z%B#D=!sA>4IA3$X|4QG4u$-%*xV!L~ASy(IZOrcr_V>C?RiH>csoNF%ElFwP>$=75 z_RGAQ1F26}8-igQY={1(}TtIt|!RYy8By zirCi3msIaQ#j}4CjP6+$^|WV;b_t)Ra>J+ciA=3IfUmn*YZz>;nRWU(-eWgWQnq5M87*UDnt7qnP=?!HM`^afMZpn<2B6BVThuE@i&ra0 z55WDTmgGl^%oW;IF)n8Gl#JTq2vinZTQE)gE)1ZzU=w-%q8pimq&zQlLV5f=^POFAxV}fWX2@#dM$mVm4!;R0{l%rvd*&?@`D^}ZRwCmHRR!ZC5 zLlbOXAN%Y1cQL}<_x#@TC6wG1hi7uszGrVgjKAZ-KtjN(Y_`Ae&^u7A`62v(~#PoE%B3sn7=*6^nq6|UWZ?W^) zR^y|u@qnouZ;>bqWDzcgQtOSp*?*c-;l;Cw>wrNJMz(_36E)t>Tdnpmz#9NX!%Xp1IGIC8p@-_tAN@`x#3mRVP&4?^A z@v%6%KoU9FzL9Ffg7D9Y)-T%F`KgOjMUru`-_#5U%km^%Q@`^g7e%rtrT+o95ONxow|JO%r%6kJYDJ*!1Rb zvH??uye&LaXJYBLwC{Fth7TPbOOl&~*f1wiX>7}5f6BwG2Xgy3Fot$GaFC!POPM&Y zvTKyXry80gqP=Z>!u(Q#Ay}9LZ(m-G$T`xfLser(vDgxkLxewzpYPLiBuhQeho~_m zjvoH_Zi{k(jX`~<0Xcmku5tI|@=NGbeGTPsiBDvFz&DXb<#^el<(DsdMNXg$FQLWz z2xT}cmSAlS@i?e$q=L#^>PJ8^qpkN3`7uK^7iXab&u*3QMd@%bCcW?bm(Ngfu<#*K z+o=1rW<){APP~d7d|JHZorpUX)XJ=?lrPg6SKB$Uk6!E$ZU?sj@^*yzz!$$wJYflI%|9%X>GPLhuXvE3(HO=H%1Vc*U=)L+IGwx`K@`$6 zQCdcT(Jt#)hb#A~6zwk0%TgQE&Dk`O7Wdlo9+ia_4_X@+KtYRV?Fs6H9ttrQbZ0pW z$&rI6g&;SPA8$M2)g2gzkJ=KoSC!tc0C5ua1q^<8a6)@|MEqU-+GhLw`uMFM8U zu0`?b}_XBkRkr5`eyCQPI=i&L9oK zKW^FPfFBs-o#a}ql<@f|JT1+POmC>mc+sTaMqMi5!$DpjSulTKPPMmq;|#^L$WE#x z5~@GVq}|%MioW4di?J?ZU?-l5drr0N7(uF&F86EG?J!sD9s-y}{{o}gF!Fps>+r>2 z34%ZfwZ?ego`22AsX7r)Zoah%_fuzI69i`}Vi`+Ah3(5kBY#7l?=k|wsA2@?nADZo zu#p_%Pc}~?s!>$SkD#7CL=@?GvljtY8c!AG({t4F&0cZhy=L0>3>rM+=O?)MNUE`@ z-{QoXUx)2V05_rt$CVYSw);}M%CMbmax};^0D}(6X(D$ec*Lpfxk0YfvWA+n=Hlx| zUYPdN9~IbSk$cbDR-K3ZX;*%s1X6n$;;-|3v2f!E_%YY}VVX^OrhgWf;^`%x?l*R> zWL#pE`o@^{?t-{labxWLY<1;=Wk1jl|LxkIM>UF7N;vzZ8W(tOX( zCChtR^xBW6EJ_5xBA(6w{S6@|e>x*X;ssxrhtap;rRrjJx-&c^{FNs+1ee53>hW~hzkGKGwOB;$s zW_y;X6o@v!HR*xC*c94_UhPg4*FVW`uU5t%R)a@abPgTSzTsla+2*oSl`J7nI-Cwk zNecznVBr^@GeJIUJYONuWi}$!YzpaH-_Z%jxn}LLQ7>5H5l8J`j;(VbnT=OHjJBzF zry1h@W_i*pyo@98nDdj?{?RW}a z`{Vv2vI)|7@E*dKO@$laJkL=IiuznydHfNnO8tQCO=D34-a+AFP+ED9Es9kV80Mq7 zOPg~n7^TqIOH8|F*O}(*GhFk7W?tdx8VJsw#exI-jJ?{srI*rX(9mv7#A3?>mE5$X zvp*k^%G3?m23CcTgp*qe2R^y+&pZ;hU{PM?(Yk`8zc?l4f9qAn;S>qBItcSEZ?Q#T zyj5?=mTs|yGE-I4M}5I$o21Y7c?tw9XSznXmYZ{GbjphxUWT4y?H>B|NY123{)bNXxp0N< zDt>f=rvppqxOsdmo-o@nU~3bwBe>QjyRS737}s0IM{{mzS9%-wg+2Oh{GGIO%+lZN2?ee+*yJUH99G3nLk+PD z%aQ;?le!a6?amE`2Kppdq~x$5-B|zmrmFE$wjKVky$;V%nc^2uoDp?MD4d5IJ=_Ae zsz7#&h7aZQDerH%#B*T+u0Fm0TWA^sG$@hwAOx!V3dI zC7Ze8CB}3OX~8ah#6}n+f*ejgd=$7B)~>LD-nc#T6C=?{I5vcY63nJ6x`St646h%y zCR;fnW?7}2XjpH6=W-QQ9;vrK&YDDCouI+e54YoBFEI=U_%WyU_I3Jk?AWBL6j$5T z5)l#()rzAc(TIPY?muSBLNkrFuwRi6RHk7{-ABMcGfi2=>slaAr#HgU;f;w4vF%{# z2-M-7#~{@WYNnP|r_Xs%9vxmhrw}w#(a;X8^|=rdOjPBGU3i6%PbpWF#rD=c>J7Yg zJWl%dHXgQQUoip@Xc;|F+FtJi~7#B`#xFOX0;D9T@g#L9bs zq|~VL$DmV|!!;!~6u8LFVwgNVTzw_BK=wo|6@TH*=Y1l`(#lUYRbF*K2bY)n&Sw{O zyd9?TZ>Sen*$d=UfxI-QO7Y(N9ricMnuT(tk4Xov!~9m~J6*{_(wi>hNL?QFXOa#dZfjSb$i3$G zs0w^aBzBpWqqX6pWm@lB&~k`Ef6ckC`+V62I?fCqHoRb-Fui={4On#ntZl+4fh%75 zfF($Ao8=^bD5;C_<9>=MUM|$HrnIXx3)nQO_y9)}GXOIme1KvlXZAr`6vafGk~;D8 zN4>}v&q@m~5~Dq7(Ky6B%z$T7VjS$+8O%|ka*8b`B)lo7?{JB60%WYQRYEW(atV68 zKut0&#I0vPtx*)50a*cCC56{}X(*ztVA^V!c7CSU=%F?_a&%vYRlc5Ud`E=?9PAFH z5gOy~xfY`1FHB~2%lMx@l|YCH;Kt6|f}YJ2{kG*G)oO?lhm7` z^LpIbNlA>%_)9Zwl}H*OFwDf$<|;weFHY2^-awWA97B1_rk9E z2M#r_Xy(?_BH491fnk0ekdDmfe&sr_{REGJena}Q1r24~(VQ>`4Ru^Xm`I~W5dqll zy`y3^$j(pWVhVC~VOfx2&r9J6Vta}5BEWuc>Yh|iCy)X2lm`d{xl?=K2h?sScJ z**pJSR&yoo2v3cCZG!s#vMaw4hALtz_|nJ^aC+i)Pp@X5ErG@A;!bQ9v+}PAUfcsO%2c{SBhIbNn`(Zd zn89T4WW9rPX$HFlB`rxo<4Z2WvI2@GcTU9?mdVGUVdLxVgfftu8HC9(11t|$qRjkR zH0CSujdA+?s-IIV$(JVF$I%p3sx}M0Oz}ZtEj);_050~ey(KE!o|!O(Wx~=1BRSra zH;{TSE+AJg{FwJ{#vNhR5}+IwHBOU*ZXkfg@6>E!(!VV2+KQ%sSZWS;tf%8uhKY;R z-xsP%5~`imiI>W;0ju7{mB(AABc7ZBiBN$aky7PeBK?M%-r0*~R<%h$0tqd6RQ z5m27SIf~-W`ldHvKc|Eyyp%Rw=7J*;af9kWjix=O_c9_J31Kmwk*jk9D+~aElTn?f zM}!Za46D8VM*rkkYI%-Q7Iz|opH|o z^=QE66>sTHLjkEL>u;kg+-PLZ{Lp+Rt_SPCQgw>j( z`Pw*O;e`S=ocnwEei*zlHR#iVk}lq)vo7%r-q-te_Q9ekx(wcR^SwH~Ue*0gi2rIU zEYv4n=i9nNZ$M$;=8vOGDtCYf+!bP;u@CBYkq5VKgyNYy2n71ceVb5e91w^X?Fk2` zxxF~-jy+;)@E0*_vs-7^O?y=R=?>$Z4k?og^R=7D8h1?EFJHY8VZa&5{`e>3%GQ`c zov&?9bedVvUW4#Run?SPkPkV*ID5<2lSx5REGcNjmFqVPi?0B2M&J5ax&AZxJexmb z*cYqw#1 zm@TD4{vLU_V#9MhC+{YKx~NWJcZI;uKB|YpOq{MhRGBGn!$2>$81Hzj~oZfeoH!E{nS-$Rj0MKO+tD8@n}x6&&*t- zYkEmRh&0=syWx%$_NeS9SGTP<$pe$8o}LPB!Oni*0ZkFr6X95pQe_`635T(guDJ;| z94I#=BF`AUN2tbyEm2|5EUT09=pX$U<$;sK-5sh*UUJKHt21lKEcR|E)E{07p?VCM zO_kYwCviPL0?m{U&7>HBW8$fNP%`W4YW2YgfiwLDlsRT$(Xfl0VGxmno+gwJDTb25 z{JfVnbtYo6fb+Y2g2HJOzXvXG$s$!lPWKzb2=Pj|%R&{wu#f}WCN9#DdH@@sT9*p* zkpNo4k?rgexB0#$GZ|RRtS8&1YmR)qVVh0`pIUUOP<|82pE-_GQi=9T#sDlA zybzLDlRJF<^iZ560kom6`Q1}kvw5_AxC(83_*dh%7Oz;JL3HhdP|582KbM zRiltCZatBK!H@GcU zkUA5RgknYwr)fCh<4jafWndWs{$Bp>d|>a1B-)eYcJBC@H-6; zlb!a#sDk4k3if;J;FEMo18<6Uu8k58uyx_b_or%zpaFoadQMUrU(0^4k;_ zIjR_*c0!3qs78X_r?#?&@H=_0^{C?bJdwn>{A zPgP4~W={J_%$W?{JD#`_7HtEWzeGJ72OO1n4c3_^JD~WKcJe zQ}IANnYP3cT(FS8@WVWLU^NfBb~=&lQA6=jwq62gRF-Nhc{Jb7%{B$e`G z7I^2T4H^mm$%$qL4Nx2w(f**M+=d2~0SvH$JCf^NxZ{U5A4UHbfMl;vyyKD;w_8g8 zk{O$UB?n>cq7BDVimPSz(ZK%Vb%yHSLWFuKmV|zX`Ux`ly&t0=+onwDh({Vb1W^qQ#wtUpklTj* zLmH%z(f%Znz2tsOs=&fcN&6>(aKv-Kg8r;c@-}gjY*LU<{n3UbKl{XYpADK&Z4U&= zzA|8uC!yJod9`E6w`cXEz{9cpVXQF2kQ3o~vi&pC;qyCyVrOpo-FG1_wr9@V+7rL4 z`O6Q5J{tj<20~p|dCeu^D~w69h=1id8)fqH66nZI&6Fj7X#(}-2A0|H4tB_&G5%w$ z+g`$pcym-1hU z%B5k`JSk2mv;bETIa(KBuY*Co_8C^etIS2e|Ez%M{uY;V*7v}a6Lz23%G$9{XEEDX zLQ({L-&dS11;ql|9~Td~03OxRldU|@kyYK!tiL0JM!Z%*Qv7_7Uk524&dwxQhdgI_pd7Kdz$Bc%56Jn=L>cm)O zn-M&tAlN}x)_-t!zBo#dX#Jkfo38uatle^ty*2a=#l38;0XM8Gr`eDNAJwIMY07iT zKeQk|>i=EBgE#&UJ`3YMcj!+FX$_MZMH=)o`_(u9+6d+A=P&?n!e;mq_DNr9= z=f4D`d0avCp9P^Df)3&T-Qc5h`ggfUNBvKq9MHGcAX_Rb;*TT2D4mN_1STOub+n;K z{-N?2Eq$sA{FOs}>hNac_3+Zx`?jeKt;Ca)0_=bE@i6?L6LvUy=;+XnF441pxFmS>yj>J9Jc;dfLspW$SIt_jkL>8ZQl-JD5C16vm5f z_R2)Xbt?=ktB78Wrt;C2ya&C+{iiVyEPyY~>*nGG+di~Z=aR3@yej$1acx}FXf)Ks zA1#WZakS?zRR=@o6ia{@pS!E8N>xIcUf+(N_DdI)vg3Ukffv&Fv3<&fk?}usb7hXh z8e$0(-%dG$=eC~8BAqw`0q6Sq*ODQqS}7H*P`DQbZ(!Ok0W~qGT5?*5=w(o_I(uI` z`XkS-#dkNfqOE1%jcj9>tzE-Ksaeg;h5D^GVf@RP7$TpX_QD$8&dYh`a|rZ+YPI79 zaW3^xcMsGWNaZ~H;{w`W078rMeBz~CiGlqz6O<2Jm_>`}%8d}+&Cv5p!yx*tRc}B0 zfbInJi?_FJGR}yR55c{0xZ^tSop|CA5*UC)pLbErh>Ou>)7yK-u@Z*!Bp&qO6P^5A zg5vV5xBKfe$@aqEPKX_j@6eSgXd(cXXE<7R^mnQMA7n8Z{a#*mKGIkyA@dKinrGxAa6ThXR;!_ff{{M}Dn%l{ zZD>jCxR8+gUs$VZ>;25EhnenV*2{k&qBS8D-+EvT7HP(cKTIwEpx6nUx|sP4#eB#P zgy3&z@dqX=jQ8wA0fFo3#gqR93*LG)YcqElG{yWu6AoRrgTD}FBV2>c zqo*9qdIwyz$&u~)3+}|)lWlWQeR%qrI+IJa=)-)it}V+WqG)^)^GcQ>_gmkT-eic8 zv$y4^?|AF4OT!uxW`Wrr&K@ScMO-T^X@L$F(_IoO|0gr)k;uw z73&{fG5Q~TWOEjwIYMb(wAnx8cx+|QPi8F#U<*JG_USUEe4JIWKlm9DdZ2z++7@(X z_2>(dI1d(i=upf&U;V}}gd?lFul{j!&OjZ>X;1hDa}u}c$fX=zXtdkgyG3_TzkRM( zQjeUbhUc@@8~6)PF*Y4U*@v@qLou0d*>v|B+bu0o&dYVJ6)M!fSqz=EMFvbAMAgnn z_Cx!STOR9=$bGeXc77PzLw-`7k@C;%0P1$nvYU*vJE6!@ea51u&sA~#>B!p_eIg+M z=kj7S+27p&H)u1nH#EZ69WD8Cr$>_#DMy$J*!MsYlP)=LMgC(ei4-TC>6m>VE>q`c|ql=+9_qyB6v=FN8BykGW)>T zghJ=^n1kh0@oSVdKDu98T^uv`CaG`V5BxzNH|U5F4i@dz=o5S|5aF&|1&#nC1@I5h zBf=uuJm>)$c7lDE4$lot55Kv62#J0Gf9~%QPM}bK6&X6lp&d*8lKtBpq$EVJ9_D=_ zht5EWgYMf`IDd>NBG`u<1v)MD8CvRlzwv=d_6Yh)`uxzY#x4+LO9f{H-oTP7bMe6* zf7WoDoP&n{H=oDc5_JyfU;Swx#mwb_HEtysvo7h=rdVJJ=+f6iE2OadHV@|BUBgyZ zb>0{PT^NED#ICK?Ksae+^x0fc>zUXE;Ola{+r4>OFV8~Hefk7ZS(w~nHSmF6Vl*`V zQdBk?SO1!CMi~W&9wV*d54ipn>einTw&t6-$TZD^%1DX;AI5%tYg(L<(?@pUj68y5 zby8Uac=u*7MT8Xi`UX3S2zu!N+Tn-cqZlI>^|v`e4HN;UF)23GW70mLdZ>@@cj*RnF#6L zi7#yobpd5d;J=#s4yWlHV~nNAEG;68{t=FkG(;HwpO!v|luhs6dU-bi^k&*)zT=L} zs^1X*(@z;VC_aHs#T_p_h58S5nG;&AQMRlY@6ZvdA3^n$|JX~|ruls&)0c`K;{XIl zZbEM)DC&Ly3YKE#(LV8urn5l@Ua=3>?K_YCPxUq;NWjbQ=E>Iy2&3mJmhD-dBH-={ zMw6huR^%+yf7;-Q9GZWQ8PM(wj0@mpzw(RFBqdyj*HpEguk~eU27#dd=APtVRAHba zF+@0EMF1p@e%A_h=GU9?4ukqwS1W^=t*gT#k0OKjZSBj}a3Nzn08Gr4_aqkFda(>+ zrR2RP!^F+j5$VS)yGhVy;cvdJOH_IKhh-QGSk6tl$0W-f6gAw8oOm^^Mm3tbi3g=J zqm0wSjklJFl2@-2hktX2$4*#%DaT_ad&*y;OB_Qt1mqob?O<4j;r55cHa*3e;tCBLW64%`cAZY zeCaA6#6S7kNOP_>j!xFLdj?*UJjS@z1-NKZdo71cW|>) zMMn38_UOVn3yPf~yJgLDhsd2L9#Lo6G>or`ZNRT9kR2<)$W=E8MB zjR9m|y!W7mrTOM)e-u;RmFy3htzT-sow#R>eZvGU9?YM!CE39M1YRu@Lse=wNOp5@ zDz!Eo6?r6KDPAE!tOs5?NbCuA;@)nrY~-Tg^$UuOwN7yzW}-{*iC5nPNqr{kw=fqX zXo~kC8Ail8*=*~grvXxY?rbWRhm0O0+YZS~jn}RDQ8Z4AY#fyiXrG zP#-M)UbZVlz3*#w)x~8L-iu+#&+fZ^mhE?0MU(UZ3)gz>qaYQSALoqfO8Mi< zfX$PYL6<{l)cEqJW12fc`;)cS_mhd&aY!&fgzlq578UN}ePgBtZ~D-eugutTbhaHY zU5~HMV0=3Fb9iP0G@SD#R@n&Ct~*DBm+eH_8m6iUkELK+M9IYz^WX8AS8at?$KI|( zmzV|{x@Thh9jdB%It+36u!!2*ZNV|i@s2k0wbDAd5NMgUUAC{?l#a2mY2k!L7eIlF zY#5lYS#CkVD@PFS2#k;Zfv-7qCkZ)7N0=(D41p8odEzuh)m7x5RHgT0&yeEBUZmLcQD(xzplq%5p64+?`LC_B|1bXf1m0nR zIFcy-hs{mie{F95&o_fO*|}K%`(}`(Em>(lRXif+)fu?4 z=RE;6jQpb3y*0Vjx998Y9{xYmk`_N;s2451{wdhl*eLLG;BCGVXaU>^)?HKsdwE>_ zyz}xny*>r*Opo^ihnv%M@6L};w~O`zQs(z>p~2I)Qv&MFe~q3`&$~?P4Gk3@n<^D~ zKck59Z)yI_t{GLBTl}qf2kG``{pw>nI>O}8x5*)B!r?Z2-#k#0IE6f#H&xDvNnYKw^AQPXn$;JJebs`mpk_%!-cOjDHY z8f3%jS%T_S)jBqk+`%>nW%rE<%^Zyq^W2Rh9?e68B)ci;1jS7YQ@0x-7LduqQyEh- z(H1m(uN%~*oniIGw6mwS4d3?seYtN`NJh>xJt{F+KdCD8ZbYP%@z4XnZ!|GK&7DWYWMc7YZd7;B z`_1A-%4O;`$Vx94zQl+qPQv=eb|o6x3@3AWGk(_2wLVz|?87Ni)Pv1UP|6T4>aj_d zP<;-j6m}M)(p0H=vXu935vDIE%EKu=F_~=6KRB!RwoSDrg4@9=BDyq6!sD9ys95kx zVU4~`^IoA)-|TL3=>*6Yb;ZI0XH~vHPr}8yZIWTdlm?wyknJ$ehC228{YmK97T+^R zHn&neGux%8i_SM19!Oj=CKj<1Am^{Cb*4H-sbf{Q@n|uw(5F4V3OEYXzd<(C;I1Sh zAkuV4J!J1`dXB%AQy7)8@9yIn(4(^02LIZN+@%)~4oOf`_Fief7j9x>X^hZ)2N% zl&d6~$QJ<+%ZOsodwqi_FV2!)L|x(KZSMxTQdq4N3tVD zthqf0i%)+zbRw{heXE>l^YkMMBE1TM#ak8Sp|{e==522lEJe22Osv1Nb*T>}BW@SM znZ3vRn*LO>5E4o zT~VRS^qegKeKfT$$I4(R8;+JR>!*x@@dkOn(Akg5I_9?vCk>o$X=Nr`u9$x^jk{%W zdIr<$Bfm=eymsfA!1k+vuvf%E}kr7jTs~jFW&8^oD^-gNBF~Q|-?xxY7fz zW8aHU&4jLHPp(E+B4$OmGOsikGz8RR){YVajTxnH$x4cWbU$RojT~pU{07L<%UW2Z zW0Qt3tHsApjoR8Wt4~nF<4ND1ii3%r+Tij z{q`hPFX(yc=M~Cm&8}2s)G>FE zs&9Oes@hHl*4a)>xtffSQ^msL*pP{bC0(bnRCkglHYwHJ4HXMTyHU~fT9DT6+f=le ze_Pw0#ac{zxQ@^lYe)BvpOuSncww=*>-AXr7!H?gpSLEz_+Myqbp2qJDzvBkKS+BE zur|7@1;Gz*hYVje$}$-~XGxnvlP~#c!$JyiuJgU5sf0x&^y8a8 zBb^h-a{kChKb^;NOCACjZ?_0yoOq*;I!jB{NqCQa_Mx$T&X+LCuGqpxzATGl&~Y=4 zlJ!gekK~WgTJ;Z55uMp!ulh&&`)c#Jwc{0G1qwB-pFbaN#*~H+x49Mhv8y@CCT!S_ zMo(?_tenQw@i#}CCWNAbe$l>(b%kJ_;sVINqh`{9T61%guu7~ue}!gEeE2SuZ!<_ySxMwWN8no>`9c;o5M|*Yq3

    wt}6HjE%bT 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 o>+WQ=87m| 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%0DDYa9D~+8!+w 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

    )!x6Akk_;B@%7Y{*ki?fgou=QkEj_Yd7 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

      j9;9o%<2)q1z*LXF79+Y1&3{NW~T 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ΣOyS=;W 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
      +`C4f6G2a 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

      Q~&SG1M?Fk)eOO$WpkQ1Tlj_Fz% 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

        7H^oN; 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

        Tpr^LFUUtMi_<*<3x;a}XDb7vJ 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 literal 42176 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 R8Jt4H@?Je>zIE$w{};>}unzzL diff --git a/fpga/fpga_pm3_hf.bit b/fpga/fpga_pm3_hf.bit index 3b9372dc0190aeb8c83e2ba2c32c31ab3563cb11..078b9b6fb019b406476590fef9c1c337ac7620b8 100644 GIT binary patch literal 42172 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�d_5;~&@WJ6sQau|+pEed~j!%_I|`%6|>r`R#JZ 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 Z`(66O=Z|Ko#J|H@itu;pbMOD{{{ol%HxmE= diff --git a/fpga/fpga_pm3_hf_15.bit b/fpga/fpga_pm3_hf_15.bit index 366c1c2816623df65e145e2cad5e9a1d6b007db3..1a7e7257b887f6f49513721bce2a676bdf4acc1d 100644 GIT binary patch literal 42175 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

        h3G9N*mMKrk=iH z3Lw5o6vQgai1Jw%A2|2h&YokLZ^s9`Y9NDb@CPg?bixP=AaxsF{tc)jB?%Il-FK(5 zUTG&2qHCq8lNxU%4FU^O0W^kEHczM|1IaA(+yEeF5joStrM!UyTl|Zs29p>UC z{h`az`j!CS)y>RCmAp(LL6d=z#Zft#UZgg@wm^T%AWCDnT9$gj)d5JAfuF|GgznOD zR9&r9U;{t{OEwTjQFVzPpO<6RysQWsi>qp!7f893mm`Uv4{i_(b#{zHY8C^}ipq*; zbTN=YSz7*A@UqH=idw!*$4m0@(}*5n6ty(<09Y`t=G7BaE<%B+0={zx0J!>JijoZ_3HP^6Ylld+L>z5 zk-auZQ|zhYWhVN}OosV=SN6Keu)Ti0ehEDLewlS^vf6`7fb{Q&dR*gvZ7tm*Q}c^~ z7WNIaR~0V@1nu*3_+0sjmluOj2e}`ra33r^Rsvynn;M1B6{Dh;cH&HPi-8Erf~tUy z)wFsE2p$V%Rq=8}&ldq4q+byT(x48vXjjorY0WPIK^+ze znlG@5Z(tRFG4O(XM4UE>WHFYe=_Oz?ENiFXp36GD$<(1GKn8WF391@S^njrK0Y+sc zv;y-ovoPp*5s+b7qPv($8$DVI0F#6&5Vn^;7hBxs)(~b*em3~@={Vx$N)V(GJ)e*5 z5--nf?yO%5MEG2V3JO?63SL+k({V${%T=H&O!EKA%hhxo67-)$Wi6%SQ1W4vrizy% zf>t0((^N9Xs3o7UbOqeR@z+b)F%!;sf8*jgi{k3NK82muAeX;i&i+8<^BP!5dbeS@K$tchSf!DCjFTv=fgk8?w^qoZQ@sn zT285RKP6G~`Jgbqc{~j2XA;#w;2l(y4GA)rVH&pFRjo>yM27gyi0rg+iga){NEb|C zG@b?#R;6rwQVVJge*|h6+$EWAe8f6;vcRiYL4#2mnbnlc3in~#pD0{W(am%dCixwR9#V; z9k1>1zq;XngI|S7%K4NNhZ%lcn)m#Cc3ipVmzEX&92tJ!i}GNwv7xL!B#7K#P%cmP)jZtBCGH!n)Q9cH#k#C(Ntw6PTMQk? zR>2=7cs^RC%gS^cb}$`2iEI35zZL+c z%V$KZJzS;BTi{lN*A5xPwp!@soNhID4qFDLAw;57Gd4Be)w<@VrK^3VPOvUR66qji zq09VS@TP3Q<8%SkFxY9A(-7(>$vVh;@|5aXhZ*dw(&a6hNB7a1xfLzGE-$QT27uKO z=`xjC)R>T+<9v8bK+gMl@GM3()PM$JO-1Q89tLeUM9l!HXsjcoXojbo&|Wfa6RWV0 zjslV^kS}WlAN&(@9u2Q9i#j3KH7wuQfh5x9GVs3%KR>B1OSC|s!k+(IFM6UdFMb}r za92J^$R;1KR9!Zq9sSGl0XjoPKgCy(UR?80pq{@tssQhO z@axljlCl=3sVewm|AS>YjVslm{H-6GU|G0a1IsnATm#EBuv`PnHLzR*pYj?|^Ce7} zFkcd%@~T*V{N);0u7TwmSgwKP8d$D@Phkx>DwuEP9fu_Re-v{_)P9m`2-3$L8s*<{ O)B*mUD=$k0nfxEa&@5;G diff --git a/fpga/fpga_pm3_lf.bit b/fpga/fpga_pm3_lf.bit index 864274cca566de094dbd364e4fc389714277eafa..32ec549622626fcd4551910ad0c97fe1bf271c74 100644 GIT binary patch delta 29 lcmdmUl4;LLrU_;O7WzgO3@HqphK5!q7FG%t8{Nv50051p2+jZi delta 29 lcmdmUl4;LLrU_;O=K6+43@HqphGtfVMpg Date: Mon, 28 Aug 2023 12:04:12 +0200 Subject: [PATCH 0428/1034] misspelled a name.... sorry --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 637917d1a..cae4e6507 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Swapped to OE1 for Shallow modulation on RDV4. Thanks to @gentlekiwi for testing (@d18c7db) + - Swapped to OE1 for Shallow modulation on RDV4. Thanks to @gentilkiwi for testing (@d18c7db) - Changed iClass SIO and Legacy credential detection to be more reliable (@nvx) - Added `hf iclass esetblk` - set iClass emulator memory block data (@nvx) - Added cryptorf regressiontests (@iceman1001) From ba320f26f7456c633dab1efe2ee243b70eb962f6 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 28 Aug 2023 15:34:36 +0200 Subject: [PATCH 0429/1034] ensure registers and vars is set correct --- fpga/fpga_icopyx_hf.bit | Bin 72749 -> 72749 bytes fpga/fpga_pm3_felica.bit | Bin 42176 -> 42176 bytes fpga/fpga_pm3_hf.bit | Bin 42172 -> 42172 bytes fpga/fpga_pm3_hf_15.bit | Bin 42175 -> 42175 bytes fpga/fpga_pm3_lf.bit | Bin 42172 -> 42172 bytes fpga/hi_reader.v | 12 ++++++------ 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/fpga/fpga_icopyx_hf.bit b/fpga/fpga_icopyx_hf.bit index 07a1a0bbd39a3dd1a2b84a58bad4b2779de19fc5..2deb3216ce64bc0e7e8add8049df1a585632cf8e 100644 GIT binary patch literal 72749 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 z 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 literal 72749 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

        Tpr^LFUUtMi_<*<3x;a}XDb7vJ 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 Yn~_P(pDt2^KL=lm@cZ;P=YIBo0Jbn{)Bpeg literal 42176 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 diff --git a/fpga/fpga_pm3_hf.bit b/fpga/fpga_pm3_hf.bit index 078b9b6fb019b406476590fef9c1c337ac7620b8..c824711fd4b50ad0bd973c85f06631f0b0e10d19 100644 GIT binary patch literal 42172 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∩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 literal 42172 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 TVg`G5ZxIDs@G literal 42175 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 Date: Mon, 28 Aug 2023 15:36:01 +0200 Subject: [PATCH 0430/1034] text --- client/src/cmdhw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index 1b2cd5459..4b26bc00e 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -1294,7 +1294,7 @@ void pm3_version(bool verbose, bool oneliner) { return; PrintAndLogEx(NORMAL, "\n [ " _YELLOW_("Proxmark3 RFID instrument") " ]"); - PrintAndLogEx(NORMAL, "\n [ " _YELLOW_("CLIENT") " ]"); + PrintAndLogEx(NORMAL, "\n [ " _YELLOW_("Client") " ]"); FormatVersionInformation(temp, sizeof(temp), " ", &g_version_information); PrintAndLogEx(NORMAL, "%s", temp); PrintAndLogEx(NORMAL, " compiled with............. " PM3CLIENTCOMPILER __VERSION__); @@ -1333,7 +1333,7 @@ void pm3_version(bool verbose, bool oneliner) { #endif if (g_session.pm3_present) { - PrintAndLogEx(NORMAL, "\n [ " _YELLOW_("PROXMARK3") " ]"); + PrintAndLogEx(NORMAL, "\n [ " _YELLOW_("Proxmark3") " ]"); PacketResponseNG resp; clearCommandBuffer(); From c8cfd4a517cfa83c0ce5697fdbc66eba9804dffc Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 28 Aug 2023 15:36:29 +0200 Subject: [PATCH 0431/1034] text --- armsrc/appmain.c | 1 + 1 file changed, 1 insertion(+) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 5908ed855..900cb6517 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -2723,6 +2723,7 @@ void __attribute__((noreturn)) AppMain(void) { SpinDelay(100); BigBuf_initialize(); + // Add stack canary for (uint32_t *p = _stack_start; p + 0x200 < _stack_end ; ++p) { *p = 0xdeadbeef; } From 70bd5b80b59521e5f396d8dde2274ce5953310a8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 28 Aug 2023 17:59:48 +0200 Subject: [PATCH 0432/1034] limit clearing the bigbuff for 14b raw commands only to clear_trace flag --- armsrc/iso14443b.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index adfd52491..c2516c36a 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -2093,7 +2093,6 @@ void iso14443b_setup(void) { // allocate command receive buffer BigBuf_free(); - BigBuf_Clear_ext(false); // Initialize Demod and Uart structs Demod14bInit(BigBuf_malloc(MAX_FRAME_SIZE), MAX_FRAME_SIZE); @@ -2417,6 +2416,7 @@ void SendRawCommand14443B_Ex(iso14b_raw_cmd_t *p) { if ((p->flags & ISO14B_CLEARTRACE) == ISO14B_CLEARTRACE) { clear_trace(); + BigBuf_Clear_ext(false); } set_tracing(true); From 0810f07a4177e25b37bf635e23d993397dffbb4e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 28 Aug 2023 18:00:32 +0200 Subject: [PATCH 0433/1034] improving false positive for 14b SR tags --- client/src/cmdhf14b.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index e8d48751a..4e808a969 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -440,8 +440,13 @@ static bool get_14b_UID(uint8_t *d, iso14b_type_t *found_type) { if (resp.oldarg[0] == 0) { memcpy(d, resp.data.asBytes, sizeof(iso14b_card_select_t)); - *found_type = ISO14B_SR; - return true; + + iso14b_card_select_t *card = (iso14b_card_select_t*)d; + uint8_t empty[] = "\x00\0x00\x00\0x00\x00\0x00\x00\0x00"; + if (memcmp(card->uid, empty, card->uidlen)) { + *found_type = ISO14B_SR; + return true; + } } } @@ -964,9 +969,13 @@ static bool HF14B_st_reader(bool verbose) { iso14b_card_select_t card; memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); + uint8_t empty[] = "\x00\0x00\x00\0x00\x00\0x00\x00\0x00"; int status = resp.oldarg[0]; switch (status) { case 0: + if (memcmp(card.uid, empty, card.uidlen) == 0) { + return false; + } print_st_general_info(card.uid, card.uidlen); return true; case -1: @@ -1399,7 +1408,6 @@ static int CmdHF14BDump(const char *Cmd) { return switch_off_field_14b(); } - if (select_cardtype == ISO14B_SR) { iso14b_card_select_t card; memcpy(&card, (iso14b_card_select_t *)&select, sizeof(iso14b_card_select_t)); From 4e411bec2284aa578eb99f8e5f539c0f8fb1b9ce Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 29 Aug 2023 10:57:05 +0200 Subject: [PATCH 0434/1034] fixing false positives --- client/src/cmdhf14b.c | 45 ++++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 4e808a969..536fa2ce3 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -442,11 +442,12 @@ static bool get_14b_UID(uint8_t *d, iso14b_type_t *found_type) { memcpy(d, resp.data.asBytes, sizeof(iso14b_card_select_t)); iso14b_card_select_t *card = (iso14b_card_select_t*)d; - uint8_t empty[] = "\x00\0x00\x00\0x00\x00\0x00\x00\0x00"; + uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; if (memcmp(card->uid, empty, card->uidlen)) { - *found_type = ISO14B_SR; - return true; + return false; } + *found_type = ISO14B_SR; + return true; } } @@ -918,6 +919,11 @@ static bool HF14B_ST_Info(bool verbose, bool do_aid_search) { if (status < 0) return false; + uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + if ((card.uidlen < 8) || (memcmp(card.uid, empty, card.uidlen) == 0)) { + return false; + } + print_st_general_info(card.uid, card.uidlen); if (do_aid_search) { @@ -969,13 +975,14 @@ static bool HF14B_st_reader(bool verbose) { iso14b_card_select_t card; memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); - uint8_t empty[] = "\x00\0x00\x00\0x00\x00\0x00\x00\0x00"; + uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + if ((card.uidlen < 8) || (memcmp(card.uid, empty, card.uidlen) == 0)) { + return false; + } + int status = resp.oldarg[0]; switch (status) { case 0: - if (memcmp(card.uid, empty, card.uidlen) == 0) { - return false; - } print_st_general_info(card.uid, card.uidlen); return true; case -1: @@ -1011,12 +1018,18 @@ static bool HF14B_std_reader(bool verbose) { } return false; } - int status = resp.oldarg[0]; + + iso14b_card_select_t card; + memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); + + uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + if (memcmp(card.uid, empty, card.uidlen) == 0) { + return false; + } + switch (status) { case 0: { - iso14b_card_select_t card; - memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, " UID : " _GREEN_("%s"), sprint_hex(card.uid, card.uidlen)); PrintAndLogEx(SUCCESS, " ATQB : %s", sprint_hex(card.atqb, sizeof(card.atqb))); @@ -1111,13 +1124,13 @@ static bool HF14B_other_reader(bool verbose) { if (status == 0) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "unknown tag type answered to a 0x000b3f80 command ans:"); + PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x000b3f80") " command ans:"); switch_off_field_14b(); free(packet); return true; } else if (status > 0) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "unknown tag type answered to a 0x000b3f80 command ans:"); + PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x000b3f80") " command ans:"); PrintAndLogEx(SUCCESS, "%s", sprint_hex(resp.data.asBytes, status)); switch_off_field_14b(); free(packet); @@ -1141,13 +1154,13 @@ static bool HF14B_other_reader(bool verbose) { if (status == 0) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "Unknown tag type answered to a 0x0A command ans:"); + PrintAndLogEx(SUCCESS, "Unknown tag type answered to a " _YELLOW_("0x0A") " command ans:"); switch_off_field_14b(); free(packet); return true; } else if (status > 0) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "unknown tag type answered to a 0x0A command ans:"); + PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x0A") " command ans:"); PrintAndLogEx(SUCCESS, "%s", sprint_hex(resp.data.asBytes, status)); switch_off_field_14b(); free(packet); @@ -1170,12 +1183,12 @@ static bool HF14B_other_reader(bool verbose) { if (status == 0) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "Unknown tag type answered to a 0x0C command ans:"); + PrintAndLogEx(SUCCESS, "Unknown tag type answered to a " _YELLOW_("0x0C") " command ans:"); switch_off_field_14b(); return true; } else if (status > 0) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "unknown tag type answered to a 0x0C command ans:"); + PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x0C") " command ans:"); PrintAndLogEx(SUCCESS, "%s", sprint_hex(resp.data.asBytes, status)); switch_off_field_14b(); return true; From 44fc77ec3beee66ffcb6220447d6b5637f6704b7 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 29 Aug 2023 11:24:32 +0200 Subject: [PATCH 0435/1034] Newer Atmel define file, fixes some typos, adds a few new defines --- include/at91sam7s512.h | 284 ++++++++++++++++++++++------------------- 1 file changed, 150 insertions(+), 134 deletions(-) diff --git a/include/at91sam7s512.h b/include/at91sam7s512.h index b43f0dbb1..25e03506e 100644 --- a/include/at91sam7s512.h +++ b/include/at91sam7s512.h @@ -1,7 +1,7 @@ // ---------------------------------------------------------------------------- // ATMEL Microcontroller Software Support - ROUSSET - // ---------------------------------------------------------------------------- -// Copyright (c) 2006, Atmel Corporation +// Copyright (c) 2008, Atmel Corporation // // All rights reserved. // @@ -27,14 +27,14 @@ // ---------------------------------------------------------------------------- // File Name : AT91SAM7S512.h // Object : AT91SAM7S512 definitions -// Generated : AT91 SW Application Group 07/07/2008 (16:13:20) +// Generated : AT91 SW Application Group 01/23/2009 (11:51:35) // -// CVS Reference : /AT91SAM7S512.pl/1.6/Wed Aug 30 14:08:44 2006// +// CVS Reference : /AT91SAM7S512.pl/1.6/Wed Jan 21 10:52:45 2009// // CVS Reference : /SYS_SAM7S.pl/1.2/Thu Feb 3 10:47:39 2005// // CVS Reference : /MC_SAM7SE.pl/1.10/Thu Feb 16 16:35:28 2006// // CVS Reference : /PMC_SAM7S_USB.pl/1.4/Tue Feb 8 14:00:19 2005// // CVS Reference : /RSTC_SAM7S.pl/1.2/Wed Jul 13 15:25:17 2005// -// CVS Reference : /UDP_4ept.pl/1.1/Thu Aug 3 12:26:00 2006// +// CVS Reference : /UDP_4ept.pl/1.1/Wed Jan 21 10:53:24 2009// // CVS Reference : /PWM_SAM7S.pl/1.1/Tue May 10 12:38:54 2005// // CVS Reference : /AIC_6075B.pl/1.3/Fri May 20 14:21:42 2005// // CVS Reference : /PIO_6057A.pl/1.2/Thu Feb 3 10:29:42 2005// @@ -48,7 +48,7 @@ // CVS Reference : /US_6089C.pl/1.1/Mon Jan 31 13:56:02 2005// // CVS Reference : /SSC_6078A.pl/1.1/Tue Jul 13 07:10:41 2004// // CVS Reference : /TWI_6061A.pl/1.2/Fri Oct 27 11:40:48 2006// -// CVS Reference : /TC_6082A.pl/1.7/Wed Mar 9 16:31:51 2005// +// CVS Reference : /TC_6082A.pl/1.8/Fri Oct 17 13:27:58 2008// // CVS Reference : /ADC_6051C.pl/1.1/Mon Jan 31 13:12:40 2005// // CVS Reference : /EBI_SAM7SE512.pl/1.22/Fri Nov 18 17:47:47 2005// // CVS Reference : /SMC_1783A.pl/1.4/Thu Feb 3 10:30:06 2005// @@ -337,7 +337,7 @@ typedef struct _AT91S_DBGU { #define DBGU_RHR (AT91_CAST(AT91_REG *) 0x00000018) // (DBGU_RHR) Receiver Holding Register #define DBGU_THR (AT91_CAST(AT91_REG *) 0x0000001C) // (DBGU_THR) Transmitter Holding Register #define DBGU_BRGR (AT91_CAST(AT91_REG *) 0x00000020) // (DBGU_BRGR) Baud Rate Generator Register -//#define DBGU_CIDR (AT91_CAST(AT91_REG *) 0x00000040) // (DBGU_CIDR) Chip ID Register +#define DBGU_CIDR (AT91_CAST(AT91_REG *) 0x00000040) // (DBGU_CIDR) Chip ID Register #define DBGU_EXID (AT91_CAST(AT91_REG *) 0x00000044) // (DBGU_EXID) Chip ID Extension Register #define DBGU_FNTR (AT91_CAST(AT91_REG *) 0x00000048) // (DBGU_FNTR) Force NTRST Register @@ -1455,12 +1455,12 @@ typedef struct _AT91S_TC { #define AT91C_TC_CPCTRG (0x1 << 14) // (TC) RC Compare Trigger Enable #define AT91C_TC_WAVE (0x1 << 15) // (TC) #define AT91C_TC_ACPA (0x3 << 16) // (TC) RA Compare Effect on TIOA -#define T91C_TC_ACPA_NONE (0x0 << 16) // (TC) Effect: none +#define AT91C_TC_ACPA_NONE (0x0 << 16) // (TC) Effect: none #define AT91C_TC_ACPA_SET (0x1 << 16) // (TC) Effect: set #define AT91C_TC_ACPA_CLEAR (0x2 << 16) // (TC) Effect: clear #define AT91C_TC_ACPA_TOGGLE (0x3 << 16) // (TC) Effect: toggle #define AT91C_TC_LDRA (0x3 << 16) // (TC) RA Loading Selection -#define T91C_TC_LDRA_NONE (0x0 << 16) // (TC) Edge: None +#define AT91C_TC_LDRA_NONE (0x0 << 16) // (TC) Edge: None #define AT91C_TC_LDRA_RISING (0x1 << 16) // (TC) Edge: rising edge of TIOA #define AT91C_TC_LDRA_FALLING (0x2 << 16) // (TC) Edge: falling edge of TIOA #define AT91C_TC_LDRA_BOTH (0x3 << 16) // (TC) Edge: each edge of TIOA @@ -1533,10 +1533,21 @@ typedef struct _AT91S_TCB { AT91_REG Reserved2[4]; // AT91_REG TCB_BCR; // TC Block Control Register AT91_REG TCB_BMR; // TC Block Mode Register + AT91_REG Reserved3[9]; // + AT91_REG TCB_ADDRSIZE; // TC ADDRSIZE REGISTER + AT91_REG TCB_IPNAME1; // TC IPNAME1 REGISTER + AT91_REG TCB_IPNAME2; // TC IPNAME2 REGISTER + AT91_REG TCB_FEATURES; // TC FEATURES REGISTER + AT91_REG TCB_VER; // Version Register } AT91S_TCB, *AT91PS_TCB; #else #define TCB_BCR (AT91_CAST(AT91_REG *) 0x000000C0) // (TCB_BCR) TC Block Control Register #define TCB_BMR (AT91_CAST(AT91_REG *) 0x000000C4) // (TCB_BMR) TC Block Mode Register +#define TC_ADDRSIZE (AT91_CAST(AT91_REG *) 0x000000EC) // (TC_ADDRSIZE) TC ADDRSIZE REGISTER +#define TC_IPNAME1 (AT91_CAST(AT91_REG *) 0x000000F0) // (TC_IPNAME1) TC IPNAME1 REGISTER +#define TC_IPNAME2 (AT91_CAST(AT91_REG *) 0x000000F4) // (TC_IPNAME2) TC IPNAME2 REGISTER +#define TC_FEATURES (AT91_CAST(AT91_REG *) 0x000000F8) // (TC_FEATURES) TC FEATURES REGISTER +#define TC_VER (AT91_CAST(AT91_REG *) 0x000000FC) // (TC_VER) Version Register #endif // -------- TCB_BCR : (TCB Offset: 0xc0) TC Block Control Register -------- @@ -1727,13 +1738,13 @@ typedef struct _AT91S_UDP { #define AT91C_UDP_RX_DATA_BK1 (0x1 << 6) // (UDP) Receive Data Bank 1 (only used by endpoints with ping-pong attributes). #define AT91C_UDP_DIR (0x1 << 7) // (UDP) Transfer Direction #define AT91C_UDP_EPTYPE (0x7 << 8) // (UDP) Endpoint type -#define AT91C_UDP_EPTYPE_CTRL (0x0 << 8) // (UDP) Control -#define AT91C_UDP_EPTYPE_ISO_OUT (0x1 << 8) // (UDP) Isochronous OUT -#define AT91C_UDP_EPTYPE_BULK_OUT (0x2 << 8) // (UDP) Bulk OUT -#define AT91C_UDP_EPTYPE_INT_OUT (0x3 << 8) // (UDP) Interrupt OUT -#define AT91C_UDP_EPTYPE_ISO_IN (0x5 << 8) // (UDP) Isochronous IN -#define AT91C_UDP_EPTYPE_BULK_IN (0x6 << 8) // (UDP) Bulk IN -#define AT91C_UDP_EPTYPE_INT_IN (0x7 << 8) // (UDP) Interrupt IN +#define AT91C_UDP_EPTYPE_CTRL (0x0 << 8) // (UDP) Control +#define AT91C_UDP_EPTYPE_ISO_OUT (0x1 << 8) // (UDP) Isochronous OUT +#define AT91C_UDP_EPTYPE_BULK_OUT (0x2 << 8) // (UDP) Bulk OUT +#define AT91C_UDP_EPTYPE_INT_OUT (0x3 << 8) // (UDP) Interrupt OUT +#define AT91C_UDP_EPTYPE_ISO_IN (0x5 << 8) // (UDP) Isochronous IN +#define AT91C_UDP_EPTYPE_BULK_IN (0x6 << 8) // (UDP) Bulk IN +#define AT91C_UDP_EPTYPE_INT_IN (0x7 << 8) // (UDP) Interrupt IN #define AT91C_UDP_DTGLE (0x1 << 11) // (UDP) Data Toggle #define AT91C_UDP_EPEDS (0x1 << 15) // (UDP) Endpoint Enable Disable #define AT91C_UDP_RXBYTECNT (0x7FF << 16) // (UDP) Number Of Bytes Available in the FIFO @@ -2048,178 +2059,183 @@ typedef struct _AT91S_UDP { #define AT91C_TC2_IER (AT91_CAST(AT91_REG *) 0xFFFA00A4) // (TC2) Interrupt Enable Register #define AT91C_TC2_SR (AT91_CAST(AT91_REG *) 0xFFFA00A0) // (TC2) Status Register // ========== Register definition for TCB peripheral ========== -#define AT91C_TCB_BMR (AT91_CAST(AT91_REG *) 0xFFFA00C4) // (TCB) TC Block Mode Register -#define AT91C_TCB_BCR (AT91_CAST(AT91_REG *) 0xFFFA00C0) // (TCB) TC Block Control Register +#define AT91C_TCB_ADDRSIZE (AT91_CAST(AT91_REG *) 0xFFFA00EC) // (TCB) TC ADDRSIZE REGISTER +#define AT91C_TCB_BMR (AT91_CAST(AT91_REG *) 0xFFFA00C4) // (TCB) TC Block Mode Register +#define AT91C_TCB_VER (AT91_CAST(AT91_REG *) 0xFFFA00FC) // (TCB) Version Register +#define AT91C_TCB_FEATURES (AT91_CAST(AT91_REG *) 0xFFFA00F8) // (TCB) TC FEATURES REGISTER +#define AT91C_TCB_IPNAME1 (AT91_CAST(AT91_REG *) 0xFFFA00F0) // (TCB) TC IPNAME1 REGISTER +#define AT91C_TCB_BCR (AT91_CAST(AT91_REG *) 0xFFFA00C0) // (TCB) TC Block Control Register +#define AT91C_TCB_IPNAME2 (AT91_CAST(AT91_REG *) 0xFFFA00F4) // (TCB) TC IPNAME2 REGISTER // ========== Register definition for PWMC_CH3 peripheral ========== -#define AT91C_PWMC_CH3_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC270) // (PWMC_CH3) Channel Update Register +#define AT91C_PWMC_CH3_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC270) // (PWMC_CH3) Channel Update Register #define AT91C_PWMC_CH3_Reserved (AT91_CAST(AT91_REG *) 0xFFFCC274) // (PWMC_CH3) Reserved -#define AT91C_PWMC_CH3_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC268) // (PWMC_CH3) Channel Period Register -#define AT91C_PWMC_CH3_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC264) // (PWMC_CH3) Channel Duty Cycle Register -#define AT91C_PWMC_CH3_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC26C) // (PWMC_CH3) Channel Counter Register -#define AT91C_PWMC_CH3_CMR (AT91_CAST(AT91_REG *) 0xFFFCC260) // (PWMC_CH3) Channel Mode Register +#define AT91C_PWMC_CH3_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC268) // (PWMC_CH3) Channel Period Register +#define AT91C_PWMC_CH3_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC264) // (PWMC_CH3) Channel Duty Cycle Register +#define AT91C_PWMC_CH3_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC26C) // (PWMC_CH3) Channel Counter Register +#define AT91C_PWMC_CH3_CMR (AT91_CAST(AT91_REG *) 0xFFFCC260) // (PWMC_CH3) Channel Mode Register // ========== Register definition for PWMC_CH2 peripheral ========== #define AT91C_PWMC_CH2_Reserved (AT91_CAST(AT91_REG *) 0xFFFCC254) // (PWMC_CH2) Reserved -#define AT91C_PWMC_CH2_CMR (AT91_CAST(AT91_REG *) 0xFFFCC240) // (PWMC_CH2) Channel Mode Register -#define AT91C_PWMC_CH2_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC24C) // (PWMC_CH2) Channel Counter Register -#define AT91C_PWMC_CH2_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC248) // (PWMC_CH2) Channel Period Register -#define AT91C_PWMC_CH2_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC250) // (PWMC_CH2) Channel Update Register -#define AT91C_PWMC_CH2_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC244) // (PWMC_CH2) Channel Duty Cycle Register +#define AT91C_PWMC_CH2_CMR (AT91_CAST(AT91_REG *) 0xFFFCC240) // (PWMC_CH2) Channel Mode Register +#define AT91C_PWMC_CH2_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC24C) // (PWMC_CH2) Channel Counter Register +#define AT91C_PWMC_CH2_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC248) // (PWMC_CH2) Channel Period Register +#define AT91C_PWMC_CH2_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC250) // (PWMC_CH2) Channel Update Register +#define AT91C_PWMC_CH2_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC244) // (PWMC_CH2) Channel Duty Cycle Register // ========== Register definition for PWMC_CH1 peripheral ========== #define AT91C_PWMC_CH1_Reserved (AT91_CAST(AT91_REG *) 0xFFFCC234) // (PWMC_CH1) Reserved -#define AT91C_PWMC_CH1_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC230) // (PWMC_CH1) Channel Update Register -#define AT91C_PWMC_CH1_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC228) // (PWMC_CH1) Channel Period Register -#define AT91C_PWMC_CH1_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC22C) // (PWMC_CH1) Channel Counter Register -#define AT91C_PWMC_CH1_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC224) // (PWMC_CH1) Channel Duty Cycle Register -#define AT91C_PWMC_CH1_CMR (AT91_CAST(AT91_REG *) 0xFFFCC220) // (PWMC_CH1) Channel Mode Register +#define AT91C_PWMC_CH1_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC230) // (PWMC_CH1) Channel Update Register +#define AT91C_PWMC_CH1_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC228) // (PWMC_CH1) Channel Period Register +#define AT91C_PWMC_CH1_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC22C) // (PWMC_CH1) Channel Counter Register +#define AT91C_PWMC_CH1_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC224) // (PWMC_CH1) Channel Duty Cycle Register +#define AT91C_PWMC_CH1_CMR (AT91_CAST(AT91_REG *) 0xFFFCC220) // (PWMC_CH1) Channel Mode Register // ========== Register definition for PWMC_CH0 peripheral ========== #define AT91C_PWMC_CH0_Reserved (AT91_CAST(AT91_REG *) 0xFFFCC214) // (PWMC_CH0) Reserved -#define AT91C_PWMC_CH0_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC208) // (PWMC_CH0) Channel Period Register -#define AT91C_PWMC_CH0_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC204) // (PWMC_CH0) Channel Duty Cycle Register -#define AT91C_PWMC_CH0_CMR (AT91_CAST(AT91_REG *) 0xFFFCC200) // (PWMC_CH0) Channel Mode Register -#define AT91C_PWMC_CH0_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC210) // (PWMC_CH0) Channel Update Register -#define AT91C_PWMC_CH0_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC20C) // (PWMC_CH0) Channel Counter Register +#define AT91C_PWMC_CH0_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC208) // (PWMC_CH0) Channel Period Register +#define AT91C_PWMC_CH0_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC204) // (PWMC_CH0) Channel Duty Cycle Register +#define AT91C_PWMC_CH0_CMR (AT91_CAST(AT91_REG *) 0xFFFCC200) // (PWMC_CH0) Channel Mode Register +#define AT91C_PWMC_CH0_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC210) // (PWMC_CH0) Channel Update Register +#define AT91C_PWMC_CH0_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC20C) // (PWMC_CH0) Channel Counter Register // ========== Register definition for PWMC peripheral ========== -#define AT91C_PWMC_IDR (AT91_CAST(AT91_REG *) 0xFFFCC014) // (PWMC) PWMC Interrupt Disable Register -#define AT91C_PWMC_DIS (AT91_CAST(AT91_REG *) 0xFFFCC008) // (PWMC) PWMC Disable Register -#define AT91C_PWMC_IER (AT91_CAST(AT91_REG *) 0xFFFCC010) // (PWMC) PWMC Interrupt Enable Register -#define AT91C_PWMC_VR (AT91_CAST(AT91_REG *) 0xFFFCC0FC) // (PWMC) PWMC Version Register -#define AT91C_PWMC_ISR (AT91_CAST(AT91_REG *) 0xFFFCC01C) // (PWMC) PWMC Interrupt Status Register -#define AT91C_PWMC_SR (AT91_CAST(AT91_REG *) 0xFFFCC00C) // (PWMC) PWMC Status Register -#define AT91C_PWMC_IMR (AT91_CAST(AT91_REG *) 0xFFFCC018) // (PWMC) PWMC Interrupt Mask Register -#define AT91C_PWMC_MR (AT91_CAST(AT91_REG *) 0xFFFCC000) // (PWMC) PWMC Mode Register -#define AT91C_PWMC_ENA (AT91_CAST(AT91_REG *) 0xFFFCC004) // (PWMC) PWMC Enable Register +#define AT91C_PWMC_IDR (AT91_CAST(AT91_REG *) 0xFFFCC014) // (PWMC) PWMC Interrupt Disable Register +#define AT91C_PWMC_DIS (AT91_CAST(AT91_REG *) 0xFFFCC008) // (PWMC) PWMC Disable Register +#define AT91C_PWMC_IER (AT91_CAST(AT91_REG *) 0xFFFCC010) // (PWMC) PWMC Interrupt Enable Register +#define AT91C_PWMC_VR (AT91_CAST(AT91_REG *) 0xFFFCC0FC) // (PWMC) PWMC Version Register +#define AT91C_PWMC_ISR (AT91_CAST(AT91_REG *) 0xFFFCC01C) // (PWMC) PWMC Interrupt Status Register +#define AT91C_PWMC_SR (AT91_CAST(AT91_REG *) 0xFFFCC00C) // (PWMC) PWMC Status Register +#define AT91C_PWMC_IMR (AT91_CAST(AT91_REG *) 0xFFFCC018) // (PWMC) PWMC Interrupt Mask Register +#define AT91C_PWMC_MR (AT91_CAST(AT91_REG *) 0xFFFCC000) // (PWMC) PWMC Mode Register +#define AT91C_PWMC_ENA (AT91_CAST(AT91_REG *) 0xFFFCC004) // (PWMC) PWMC Enable Register // ========== Register definition for UDP peripheral ========== -#define AT91C_UDP_IMR (AT91_CAST(AT91_REG *) 0xFFFB0018) // (UDP) Interrupt Mask Register -#define AT91C_UDP_FADDR (AT91_CAST(AT91_REG *) 0xFFFB0008) // (UDP) Function Address Register -#define AT91C_UDP_NUM (AT91_CAST(AT91_REG *) 0xFFFB0000) // (UDP) Frame Number Register -#define AT91C_UDP_FDR (AT91_CAST(AT91_REG *) 0xFFFB0050) // (UDP) Endpoint FIFO Data Register -#define AT91C_UDP_ISR (AT91_CAST(AT91_REG *) 0xFFFB001C) // (UDP) Interrupt Status Register -#define AT91C_UDP_CSR (AT91_CAST(AT91_REG *) 0xFFFB0030) // (UDP) Endpoint Control and Status Register -#define AT91C_UDP_IDR (AT91_CAST(AT91_REG *) 0xFFFB0014) // (UDP) Interrupt Disable Register -#define AT91C_UDP_ICR (AT91_CAST(AT91_REG *) 0xFFFB0020) // (UDP) Interrupt Clear Register -#define AT91C_UDP_RSTEP (AT91_CAST(AT91_REG *) 0xFFFB0028) // (UDP) Reset Endpoint Register -#define AT91C_UDP_TXVC (AT91_CAST(AT91_REG *) 0xFFFB0074) // (UDP) Transceiver Control Register -#define AT91C_UDP_GLBSTATE (AT91_CAST(AT91_REG *) 0xFFFB0004) // (UDP) Global State Register -#define AT91C_UDP_IER (AT91_CAST(AT91_REG *) 0xFFFB0010) // (UDP) Interrupt Enable Register +#define AT91C_UDP_IMR (AT91_CAST(AT91_REG *) 0xFFFB0018) // (UDP) Interrupt Mask Register +#define AT91C_UDP_FADDR (AT91_CAST(AT91_REG *) 0xFFFB0008) // (UDP) Function Address Register +#define AT91C_UDP_NUM (AT91_CAST(AT91_REG *) 0xFFFB0000) // (UDP) Frame Number Register +#define AT91C_UDP_FDR (AT91_CAST(AT91_REG *) 0xFFFB0050) // (UDP) Endpoint FIFO Data Register +#define AT91C_UDP_ISR (AT91_CAST(AT91_REG *) 0xFFFB001C) // (UDP) Interrupt Status Register +#define AT91C_UDP_CSR (AT91_CAST(AT91_REG *) 0xFFFB0030) // (UDP) Endpoint Control and Status Register +#define AT91C_UDP_IDR (AT91_CAST(AT91_REG *) 0xFFFB0014) // (UDP) Interrupt Disable Register +#define AT91C_UDP_ICR (AT91_CAST(AT91_REG *) 0xFFFB0020) // (UDP) Interrupt Clear Register +#define AT91C_UDP_RSTEP (AT91_CAST(AT91_REG *) 0xFFFB0028) // (UDP) Reset Endpoint Register +#define AT91C_UDP_TXVC (AT91_CAST(AT91_REG *) 0xFFFB0074) // (UDP) Transceiver Control Register +#define AT91C_UDP_GLBSTATE (AT91_CAST(AT91_REG *) 0xFFFB0004) // (UDP) Global State Register +#define AT91C_UDP_IER (AT91_CAST(AT91_REG *) 0xFFFB0010) // (UDP) Interrupt Enable Register // ***************************************************************************** // PIO DEFINITIONS FOR AT91SAM7S512 // ***************************************************************************** -#define AT91C_PIO_PA0 (1 << 0) // Pin Controlled by PA0 -#define AT91C_PA0_PWM0 (AT91C_PIO_PA0) // PWM Channel 0 -#define AT91C_PA0_TIOA0 (AT91C_PIO_PA0) // Timer Counter 0 Multipurpose Timer I/O Pin A -#define AT91C_PIO_PA1 (1 << 1) // Pin Controlled by PA1 -#define AT91C_PA1_PWM1 (AT91C_PIO_PA1) // PWM Channel 1 -#define AT91C_PA1_TIOB0 (AT91C_PIO_PA1) // Timer Counter 0 Multipurpose Timer I/O Pin B -#define AT91C_PIO_PA2 (1 << 2) // Pin Controlled by PA2 -#define AT91C_PA2_PWM2 (AT91C_PIO_PA2) // PWM Channel 2 -#define AT91C_PA2_SCK0 (AT91C_PIO_PA2) // USART 0 Serial Clock -#define AT91C_PIO_PA3 (1 << 3) // Pin Controlled by PA3 -#define AT91C_PA3_TWD (AT91C_PIO_PA3) // TWI Two-wire Serial Data -#define AT91C_PA3_NPCS3 (AT91C_PIO_PA3) // SPI Peripheral Chip Select 3 -#define AT91C_PIO_PA4 (1 << 4) // Pin Controlled by PA4 -#define AT91C_PA4_TWCK (AT91C_PIO_PA4) // TWI Two-wire Serial Clock -#define AT91C_PA4_TCLK0 (AT91C_PIO_PA4) // Timer Counter 0 external clock input -#define AT91C_PIO_PA5 (1 << 5) // Pin Controlled by PA5 -#define AT91C_PA5_RXD0 (AT91C_PIO_PA5) // USART 0 Receive Data -#define AT91C_PA5_NPCS3 (AT91C_PIO_PA5) // SPI Peripheral Chip Select 3 -#define AT91C_PIO_PA6 (1 << 6) // Pin Controlled by PA6 -#define AT91C_PA6_TXD0 (AT91C_PIO_PA6) // USART 0 Transmit Data -#define AT91C_PA6_PCK0 (AT91C_PIO_PA6) // PMC Programmable Clock Output 0 -#define AT91C_PIO_PA7 (1 << 7) // Pin Controlled by PA7 -#define AT91C_PA7_RTS0 (AT91C_PIO_PA7) // USART 0 Ready To Send -#define AT91C_PA7_PWM3 (AT91C_PIO_PA7) // PWM Channel 3 -#define AT91C_PIO_PA8 (1 << 8) // Pin Controlled by PA8 -#define AT91C_PA8_CTS0 (AT91C_PIO_PA8) // USART 0 Clear To Send -#define AT91C_PA8_ADTRG (AT91C_PIO_PA8) // ADC External Trigger -#define AT91C_PIO_PA9 (1 << 9) // Pin Controlled by PA9 -#define AT91C_PA9_DRXD (AT91C_PIO_PA9) // DBGU Debug Receive Data -#define AT91C_PA9_NPCS1 (AT91C_PIO_PA9) // SPI Peripheral Chip Select 1 -#define AT91C_PIO_PA10 (1 << 10) // Pin Controlled by PA10 +#define AT91C_PIO_PA0 (1 << 0) // Pin Controlled by PA0 +#define AT91C_PA0_PWM0 (AT91C_PIO_PA0) // PWM Channel 0 +#define AT91C_PA0_TIOA0 (AT91C_PIO_PA0) // Timer Counter 0 Multipurpose Timer I/O Pin A +#define AT91C_PIO_PA1 (1 << 1) // Pin Controlled by PA1 +#define AT91C_PA1_PWM1 (AT91C_PIO_PA1) // PWM Channel 1 +#define AT91C_PA1_TIOB0 (AT91C_PIO_PA1) // Timer Counter 0 Multipurpose Timer I/O Pin B +#define AT91C_PIO_PA2 (1 << 2) // Pin Controlled by PA2 +#define AT91C_PA2_PWM2 (AT91C_PIO_PA2) // PWM Channel 2 +#define AT91C_PA2_SCK0 (AT91C_PIO_PA2) // USART 0 Serial Clock +#define AT91C_PIO_PA3 (1 << 3) // Pin Controlled by PA3 +#define AT91C_PA3_TWD (AT91C_PIO_PA3) // TWI Two-wire Serial Data +#define AT91C_PA3_NPCS3 (AT91C_PIO_PA3) // SPI Peripheral Chip Select 3 +#define AT91C_PIO_PA4 (1 << 4) // Pin Controlled by PA4 +#define AT91C_PA4_TWCK (AT91C_PIO_PA4) // TWI Two-wire Serial Clock +#define AT91C_PA4_TCLK0 (AT91C_PIO_PA4) // Timer Counter 0 external clock input +#define AT91C_PIO_PA5 (1 << 5) // Pin Controlled by PA5 +#define AT91C_PA5_RXD0 (AT91C_PIO_PA5) // USART 0 Receive Data +#define AT91C_PA5_NPCS3 (AT91C_PIO_PA5) // SPI Peripheral Chip Select 3 +#define AT91C_PIO_PA6 (1 << 6) // Pin Controlled by PA6 +#define AT91C_PA6_TXD0 (AT91C_PIO_PA6) // USART 0 Transmit Data +#define AT91C_PA6_PCK0 (AT91C_PIO_PA6) // PMC Programmable Clock Output 0 +#define AT91C_PIO_PA7 (1 << 7) // Pin Controlled by PA7 +#define AT91C_PA7_RTS0 (AT91C_PIO_PA7) // USART 0 Ready To Send +#define AT91C_PA7_PWM3 (AT91C_PIO_PA7) // PWM Channel 3 +#define AT91C_PIO_PA8 (1 << 8) // Pin Controlled by PA8 +#define AT91C_PA8_CTS0 (AT91C_PIO_PA8) // USART 0 Clear To Send +#define AT91C_PA8_ADTRG (AT91C_PIO_PA8) // ADC External Trigger +#define AT91C_PIO_PA9 (1 << 9) // Pin Controlled by PA9 +#define AT91C_PA9_DRXD (AT91C_PIO_PA9) // DBGU Debug Receive Data +#define AT91C_PA9_NPCS1 (AT91C_PIO_PA9) // SPI Peripheral Chip Select 1 +#define AT91C_PIO_PA10 (1 << 10) // Pin Controlled by PA10 #define AT91C_PA10_DTXD (AT91C_PIO_PA10) // DBGU Debug Transmit Data #define AT91C_PA10_NPCS2 (AT91C_PIO_PA10) // SPI Peripheral Chip Select 2 -#define AT91C_PIO_PA11 (1 << 11) // Pin Controlled by PA11 +#define AT91C_PIO_PA11 (1 << 11) // Pin Controlled by PA11 #define AT91C_PA11_NPCS0 (AT91C_PIO_PA11) // SPI Peripheral Chip Select 0 #define AT91C_PA11_PWM0 (AT91C_PIO_PA11) // PWM Channel 0 -#define AT91C_PIO_PA12 (1 << 12) // Pin Controlled by PA12 +#define AT91C_PIO_PA12 (1 << 12) // Pin Controlled by PA12 #define AT91C_PA12_MISO (AT91C_PIO_PA12) // SPI Master In Slave #define AT91C_PA12_PWM1 (AT91C_PIO_PA12) // PWM Channel 1 -#define AT91C_PIO_PA13 (1 << 13) // Pin Controlled by PA13 +#define AT91C_PIO_PA13 (1 << 13) // Pin Controlled by PA13 #define AT91C_PA13_MOSI (AT91C_PIO_PA13) // SPI Master Out Slave #define AT91C_PA13_PWM2 (AT91C_PIO_PA13) // PWM Channel 2 -#define AT91C_PIO_PA14 (1 << 14) // Pin Controlled by PA14 +#define AT91C_PIO_PA14 (1 << 14) // Pin Controlled by PA14 #define AT91C_PA14_SPCK (AT91C_PIO_PA14) // SPI Serial Clock #define AT91C_PA14_PWM3 (AT91C_PIO_PA14) // PWM Channel 3 -#define AT91C_PIO_PA15 (1 << 15) // Pin Controlled by PA15 +#define AT91C_PIO_PA15 (1 << 15) // Pin Controlled by PA15 #define AT91C_PA15_TF (AT91C_PIO_PA15) // SSC Transmit Frame Sync #define AT91C_PA15_TIOA1 (AT91C_PIO_PA15) // Timer Counter 1 Multipurpose Timer I/O Pin A -#define AT91C_PIO_PA16 (1 << 16) // Pin Controlled by PA16 +#define AT91C_PIO_PA16 (1 << 16) // Pin Controlled by PA16 #define AT91C_PA16_TK (AT91C_PIO_PA16) // SSC Transmit Clock #define AT91C_PA16_TIOB1 (AT91C_PIO_PA16) // Timer Counter 1 Multipurpose Timer I/O Pin B -#define AT91C_PIO_PA17 (1 << 17) // Pin Controlled by PA17 +#define AT91C_PIO_PA17 (1 << 17) // Pin Controlled by PA17 #define AT91C_PA17_TD (AT91C_PIO_PA17) // SSC Transmit data #define AT91C_PA17_PCK1 (AT91C_PIO_PA17) // PMC Programmable Clock Output 1 -#define AT91C_PIO_PA18 (1 << 18) // Pin Controlled by PA18 +#define AT91C_PIO_PA18 (1 << 18) // Pin Controlled by PA18 #define AT91C_PA18_RD (AT91C_PIO_PA18) // SSC Receive Data #define AT91C_PA18_PCK2 (AT91C_PIO_PA18) // PMC Programmable Clock Output 2 -#define AT91C_PIO_PA19 (1 << 19) // Pin Controlled by PA19 +#define AT91C_PIO_PA19 (1 << 19) // Pin Controlled by PA19 #define AT91C_PA19_RK (AT91C_PIO_PA19) // SSC Receive Clock #define AT91C_PA19_FIQ (AT91C_PIO_PA19) // AIC Fast Interrupt Input -#define AT91C_PIO_PA20 (1 << 20) // Pin Controlled by PA20 +#define AT91C_PIO_PA20 (1 << 20) // Pin Controlled by PA20 #define AT91C_PA20_RF (AT91C_PIO_PA20) // SSC Receive Frame Sync #define AT91C_PA20_IRQ0 (AT91C_PIO_PA20) // External Interrupt 0 -#define AT91C_PIO_PA21 (1 << 21) // Pin Controlled by PA21 +#define AT91C_PIO_PA21 (1 << 21) // Pin Controlled by PA21 #define AT91C_PA21_RXD1 (AT91C_PIO_PA21) // USART 1 Receive Data #define AT91C_PA21_PCK1 (AT91C_PIO_PA21) // PMC Programmable Clock Output 1 -#define AT91C_PIO_PA22 (1 << 22) // Pin Controlled by PA22 +#define AT91C_PIO_PA22 (1 << 22) // Pin Controlled by PA22 #define AT91C_PA22_TXD1 (AT91C_PIO_PA22) // USART 1 Transmit Data #define AT91C_PA22_NPCS3 (AT91C_PIO_PA22) // SPI Peripheral Chip Select 3 -#define AT91C_PIO_PA23 (1 << 23) // Pin Controlled by PA23 +#define AT91C_PIO_PA23 (1 << 23) // Pin Controlled by PA23 #define AT91C_PA23_SCK1 (AT91C_PIO_PA23) // USART 1 Serial Clock #define AT91C_PA23_PWM0 (AT91C_PIO_PA23) // PWM Channel 0 -#define AT91C_PIO_PA24 (1 << 24) // Pin Controlled by PA24 +#define AT91C_PIO_PA24 (1 << 24) // Pin Controlled by PA24 #define AT91C_PA24_RTS1 (AT91C_PIO_PA24) // USART 1 Ready To Send #define AT91C_PA24_PWM1 (AT91C_PIO_PA24) // PWM Channel 1 -#define AT91C_PIO_PA25 (1 << 25) // Pin Controlled by PA25 +#define AT91C_PIO_PA25 (1 << 25) // Pin Controlled by PA25 #define AT91C_PA25_CTS1 (AT91C_PIO_PA25) // USART 1 Clear To Send #define AT91C_PA25_PWM2 (AT91C_PIO_PA25) // PWM Channel 2 -#define AT91C_PIO_PA26 (1 << 26) // Pin Controlled by PA26 +#define AT91C_PIO_PA26 (1 << 26) // Pin Controlled by PA26 #define AT91C_PA26_DCD1 (AT91C_PIO_PA26) // USART 1 Data Carrier Detect #define AT91C_PA26_TIOA2 (AT91C_PIO_PA26) // Timer Counter 2 Multipurpose Timer I/O Pin A -#define AT91C_PIO_PA27 (1 << 27) // Pin Controlled by PA27 +#define AT91C_PIO_PA27 (1 << 27) // Pin Controlled by PA27 #define AT91C_PA27_DTR1 (AT91C_PIO_PA27) // USART 1 Data Terminal ready #define AT91C_PA27_TIOB2 (AT91C_PIO_PA27) // Timer Counter 2 Multipurpose Timer I/O Pin B -#define AT91C_PIO_PA28 (1 << 28) // Pin Controlled by PA28 +#define AT91C_PIO_PA28 (1 << 28) // Pin Controlled by PA28 #define AT91C_PA28_DSR1 (AT91C_PIO_PA28) // USART 1 Data Set ready #define AT91C_PA28_TCLK1 (AT91C_PIO_PA28) // Timer Counter 1 external clock input -#define AT91C_PIO_PA29 (1 << 29) // Pin Controlled by PA29 +#define AT91C_PIO_PA29 (1 << 29) // Pin Controlled by PA29 #define AT91C_PA29_RI1 (AT91C_PIO_PA29) // USART 1 Ring Indicator #define AT91C_PA29_TCLK2 (AT91C_PIO_PA29) // Timer Counter 2 external clock input -#define AT91C_PIO_PA30 (1 << 30) // Pin Controlled by PA30 +#define AT91C_PIO_PA30 (1 << 30) // Pin Controlled by PA30 #define AT91C_PA30_IRQ1 (AT91C_PIO_PA30) // External Interrupt 1 #define AT91C_PA30_NPCS2 (AT91C_PIO_PA30) // SPI Peripheral Chip Select 2 -#define AT91C_PIO_PA31 (1u << 31) // Pin Controlled by PA31 +#define AT91C_PIO_PA31 (1u << 31) // Pin Controlled by PA31 #define AT91C_PA31_NPCS1 (AT91C_PIO_PA31) // SPI Peripheral Chip Select 1 #define AT91C_PA31_PCK2 (AT91C_PIO_PA31) // PMC Programmable Clock Output 2 // ***************************************************************************** // PERIPHERAL ID DEFINITIONS FOR AT91SAM7S512 // ***************************************************************************** -#define AT91C_ID_FIQ ( 0) // Advanced Interrupt Controller (FIQ) -#define AT91C_ID_SYS ( 1) // System Peripheral -#define AT91C_ID_PIOA ( 2) // Parallel IO Controller -#define AT91C_ID_3_Reserved ( 3) // Reserved -#define AT91C_ID_ADC ( 4) // Analog-to-Digital Converter -#define AT91C_ID_SPI ( 5) // Serial Peripheral Interface -#define AT91C_ID_US0 ( 6) // USART 0 -#define AT91C_ID_US1 ( 7) // USART 1 -#define AT91C_ID_SSC ( 8) // Serial Synchronous Controller -#define AT91C_ID_TWI ( 9) // Two-Wire Interface -#define AT91C_ID_PWMC (10) // PWM Controller -#define AT91C_ID_UDP (11) // USB Device Port -#define AT91C_ID_TC0 (12) // Timer Counter 0 -#define AT91C_ID_TC1 (13) // Timer Counter 1 -#define AT91C_ID_TC2 (14) // Timer Counter 2 +#define AT91C_ID_FIQ ( 0) // Advanced Interrupt Controller (FIQ) +#define AT91C_ID_SYS ( 1) // System Peripheral +#define AT91C_ID_PIOA ( 2) // Parallel IO Controller +#define AT91C_ID_3_Reserved ( 3) // Reserved +#define AT91C_ID_ADC ( 4) // Analog-to-Digital Converter +#define AT91C_ID_SPI ( 5) // Serial Peripheral Interface +#define AT91C_ID_US0 ( 6) // USART 0 +#define AT91C_ID_US1 ( 7) // USART 1 +#define AT91C_ID_SSC ( 8) // Serial Synchronous Controller +#define AT91C_ID_TWI ( 9) // Two-Wire Interface +#define AT91C_ID_PWMC (10) // PWM Controller +#define AT91C_ID_UDP (11) // USB Device Port +#define AT91C_ID_TC0 (12) // Timer Counter 0 +#define AT91C_ID_TC1 (13) // Timer Counter 1 +#define AT91C_ID_TC2 (14) // Timer Counter 2 #define AT91C_ID_15_Reserved (15) // Reserved #define AT91C_ID_16_Reserved (16) // Reserved #define AT91C_ID_17_Reserved (17) // Reserved @@ -2235,8 +2251,8 @@ typedef struct _AT91S_UDP { #define AT91C_ID_27_Reserved (27) // Reserved #define AT91C_ID_28_Reserved (28) // Reserved #define AT91C_ID_29_Reserved (29) // Reserved -#define AT91C_ID_IRQ0 (30) // Advanced Interrupt Controller (IRQ0) -#define AT91C_ID_IRQ1 (31) // Advanced Interrupt Controller (IRQ1) +#define AT91C_ID_IRQ0 (30) // Advanced Interrupt Controller (IRQ0) +#define AT91C_ID_IRQ1 (31) // Advanced Interrupt Controller (IRQ1) #define AT91C_ALL_INT (0xC0007FF7) // ALL VALID INTERRUPTS // ***************************************************************************** @@ -2283,14 +2299,14 @@ typedef struct _AT91S_UDP { // MEMORY MAPPING DEFINITIONS FOR AT91SAM7S512 // ***************************************************************************** // ISRAM -#define AT91C_ISRAM (0x00200000) // Internal SRAM base address -#define AT91C_ISRAM_SIZE (0x00010000) // Internal SRAM size in byte (64 Kbytes) +#define AT91C_ISRAM (0x00200000) // Internal SRAM base address +#define AT91C_ISRAM_SIZE (0x00010000) // Internal SRAM size in byte (64 Kbytes) // IFLASH -#define AT91C_IFLASH (0x00100000) // Internal FLASH base address -#define AT91C_IFLASH_SIZE (0x00080000) // Internal FLASH size in byte (512 Kbytes) -#define AT91C_IFLASH_PAGE_SIZE (256) // Internal FLASH Page Size: 256 bytes -#define AT91C_IFLASH_LOCK_REGION_SIZE (16384) // Internal FLASH Lock Region Size: 16 Kbytes -#define AT91C_IFLASH_NB_OF_PAGES (2048) // Internal FLASH Number of Pages: 2048 bytes +#define AT91C_IFLASH (0x00100000) // Internal FLASH base address +#define AT91C_IFLASH_SIZE (0x00080000) // Internal FLASH size in byte (512 Kbytes) +#define AT91C_IFLASH_PAGE_SIZE (256) // Internal FLASH Page Size: 256 bytes +#define AT91C_IFLASH_LOCK_REGION_SIZE (16384) // Internal FLASH Lock Region Size: 16 Kbytes +#define AT91C_IFLASH_NB_OF_PAGES (2048) // Internal FLASH Number of Pages: 2048 bytes #define AT91C_IFLASH_NB_OF_LOCK_BITS (32) // Internal FLASH Number of Lock Bits: 32 bytes #endif From 61765cc9339df6be1658963990fa83784f5d50d2 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 29 Aug 2023 11:24:56 +0200 Subject: [PATCH 0436/1034] More compact notation --- fpga/lo_read.v | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/fpga/lo_read.v b/fpga/lo_read.v index c51857eb4..87279e8ec 100644 --- a/fpga/lo_read.v +++ b/fpga/lo_read.v @@ -54,10 +54,7 @@ begin if ((pck_cnt == 8'd7) && !pck_divclk) to_arm_shiftreg <= adc_d; else - begin - to_arm_shiftreg[7:1] <= to_arm_shiftreg[6:0]; - to_arm_shiftreg[0] <= 1'b0; - end + to_arm_shiftreg <= {to_arm_shiftreg[6:0], 1'b0}; end // ADC samples on falling edge of adc_clk, data available on the rising edge From 762c942e953b8f2694fb919f1e7b924f8808f646 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 29 Aug 2023 11:26:43 +0200 Subject: [PATCH 0437/1034] Redundant check A 3 bit counter will naturally roll over to zero on overflow, there is no need to explicitly check for max value and manually reset to zero --- fpga/hi_sniffer.v | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/fpga/hi_sniffer.v b/fpga/hi_sniffer.v index 11781ca5a..8cfb0fe9a 100644 --- a/fpga/hi_sniffer.v +++ b/fpga/hi_sniffer.v @@ -48,10 +48,7 @@ assign ssp_din = adc_d_out[0]; always @(posedge ssp_clk) begin - if(ssp_cnt[2:0] == 3'd7) - ssp_cnt[2:0] <= 3'd0; - else - ssp_cnt <= ssp_cnt + 1; + ssp_cnt <= ssp_cnt + 1; if(ssp_cnt[2:0] == 3'b000) // set frame length begin From b70092efa2c97433cec326373e839b7c68b41847 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 29 Aug 2023 11:26:51 +0200 Subject: [PATCH 0438/1034] Typo --- doc/clocks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/clocks.md b/doc/clocks.md index b2ba3c995..9e0384d23 100644 --- a/doc/clocks.md +++ b/doc/clocks.md @@ -49,7 +49,7 @@ Basic units of time you will run into in the RFID world. 125 kHz = 1/ 125 000 = 8 micro seconds ``` -Given these units the following clocks used by Proxmark3 wil make more sense. +Given these units the following clocks used by Proxmark3 will make more sense. Like the SSP Clock running at 3.39 MHz. 3.39 MHz = 1 / 3 390 000 = 294,98 nano seconds = 0,2949 micro seconds From 12efd96173d4258e19e3d521a129949abd20a9cb Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 29 Aug 2023 11:27:32 +0200 Subject: [PATCH 0439/1034] Remove define for FPGA_MAJOR_MODE_HF_FSK_READER since there in no support for it in FPGA --- armsrc/fpgaloader.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index 4d687f338..fefc16029 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -162,8 +162,7 @@ void FpgaSetupSsc(uint16_t fpga_mode) { // 8, 16 or 32 bits per transfer, no loopback, MSB first, 1 transfer per sync // pulse, no output sync - if (((fpga_mode & FPGA_MAJOR_MODE_MASK) == FPGA_MAJOR_MODE_HF_READER || - (fpga_mode & FPGA_MAJOR_MODE_MASK) == FPGA_MAJOR_MODE_HF_FSK_READER) && + if (((fpga_mode & FPGA_MAJOR_MODE_MASK) == FPGA_MAJOR_MODE_HF_READER ) && (FpgaGetCurrent() == FPGA_BITSTREAM_HF || FpgaGetCurrent() == FPGA_BITSTREAM_HF_15)) { AT91C_BASE_SSC->SSC_RFMR = SSC_FRAME_MODE_BITS_IN_WORD(16) | AT91C_SSC_MSBF | SSC_FRAME_MODE_WORDS_PER_TRANSFER(0); } else { From b46e1cb556cdb0e3107a0d91196d37ff3ac3965a Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 29 Aug 2023 11:27:50 +0200 Subject: [PATCH 0440/1034] Fix BUGBUG in fpgaloader.h, realign fpga\define.v with armsrc\fpgaloader.h --- armsrc/fpgaloader.h | 180 ++++++++++++++++++++++++++------------------ 1 file changed, 107 insertions(+), 73 deletions(-) diff --git a/armsrc/fpgaloader.h b/armsrc/fpgaloader.h index a1869d5da..b345e34f2 100644 --- a/armsrc/fpgaloader.h +++ b/armsrc/fpgaloader.h @@ -1,5 +1,4 @@ //----------------------------------------------------------------------------- -// Copyright (C) Jonathan Westhues, April 2006 // Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. // // This program is free software: you can redistribute it and/or modify @@ -32,80 +31,116 @@ #define FPGA_BITSTREAM_HF_15 4 /* - Communication between ARM / FPGA is done inside armsrc/fpgaloader.c (function FpgaSendCommand) - Send 16 bit command / data pair to FPGA + Communication between ARM / FPGA is done inside armsrc/fpgaloader.c see: function FpgaSendCommand() + Send 16 bit command / data pair to FPGA with the bit format: - BUGBUG -- Conflicts with information in ../fpga/define.v ++------ frame layout circa 2020 ------------------+ +| 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | ++-------------------------------------------------+ +| C C C C M M M M P P P P P P P P | C = FPGA_CMD_SET_CONFREG, M = FPGA_MAJOR_MODE_*, P = FPGA_LF_* or FPGA_HF_* parameter +| C C C C D D D D D D D D | C = FPGA_CMD_SET_DIVISOR, D = divisor +| C C C C T T T T T T T T | C = FPGA_CMD_SET_EDGE_DETECT_THRESHOLD, T = threshold +| C C C C E | C = FPGA_CMD_TRACE_ENABLE, E=0 off, E=1 on ++-------------------------------------------------+ - The bit format is: C3 C2 C1 C0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 - where - C is 4bit command - D is 12bit data ++------ frame layout current ---------------------+ +| 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | ++-------------------------------------------------+ +| C C C C M M M P P P P P P | C = FPGA_CMD_SET_CONFREG, M = FPGA_MAJOR_MODE_*, P = FPGA_LF_* or FPGA_HF_* parameter +| C C C C D D D D D D D D | C = FPGA_CMD_SET_DIVISOR, D = divisor +| C C C C T T T T T T T T | C = FPGA_CMD_SET_EDGE_DETECT_THRESHOLD, T = threshold +| C C C C E | C = FPGA_CMD_TRACE_ENABLE, E=0 off, E=1 on ++-------------------------------------------------+ + + shift_reg receive this 16bit frame + + LF command + ---------- + shift_reg[15:12] == 4bit command + LF has three commands (FPGA_CMD_SET_CONFREG, FPGA_CMD_SET_DIVISOR, FPGA_CMD_SET_EDGE_DETECT_THRESHOLD) + Current commands uses only 2bits. We have room for up to 4bits of commands total (7). + + LF data + ------- + shift_reg[11:0] == 12bit data + lf data is divided into MAJOR MODES and configuration values. + + The major modes uses 3bits (0,1,2,3,7 | 000, 001, 010, 011, 111) + 000 FPGA_MAJOR_MODE_LF_READER = Act as LF reader (modulate) + 001 FPGA_MAJOR_MODE_LF_EDGE_DETECT = Simulate LF + 010 FPGA_MAJOR_MODE_LF_PASSTHRU = Passthrough mode, CROSS_LO line connected to SSP_DIN. SSP_DOUT logic level controls if we modulate / listening + 011 FPGA_MAJOR_MODE_LF_ADC = refactor hitag2, clear ADC sampling + 111 FPGA_MAJOR_MODE_OFF = turn off sampling. + + Each one of this major modes can have options. Currently these two major modes uses options. + - FPGA_MAJOR_MODE_LF_READER + - FPGA_MAJOR_MODE_LF_EDGE_DETECT + + FPGA_MAJOR_MODE_LF_READER + ------------------------------------- + lf_field = 1bit (FPGA_LF_ADC_READER_FIELD) + + You can send FPGA_CMD_SET_DIVISOR to set with FREQUENCY the fpga should sample at + divisor = 8bits shift_reg[7:0] + + FPGA_MAJOR_MODE_LF_EDGE_DETECT + ------------------------------------------ + lf_ed_toggle_mode = 1bits + lf_ed_threshold = 8bits threshold defaults to 127 + + You can send FPGA_CMD_SET_EDGE_DETECT_THRESHOLD to set a custom threshold + lf_ed_threshold = 8bits threshold value. + + conf_word 12bits + conf_word[7:5] = 3bit major mode. + conf_word[0] = 1bit lf_field + conf_word[1] = 1bit lf_ed_toggle_mode + conf_word[7:0] = 8bit divisor + conf_word[7:0] = 8bit threshold ------+--------- frame layout -------------------- -bit | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ------+------------------------------------------- -cmd | x x x x -major| x x x -opt | x x -divi | x x x x x x x x -thres| x x x x x x x x ------+------------------------------------------- */ - -// Definitions for the FPGA commands. -// BOTH HF / LF -#define FPGA_CMD_SET_CONFREG (1<<12) // C - -// LF -#define FPGA_CMD_SET_DIVISOR (2<<12) // C -#define FPGA_CMD_SET_USER_BYTE1 (3<<12) // C - -// HF -#define FPGA_CMD_TRACE_ENABLE (2<<12) // C - -// Definitions for the FPGA configuration word. +// Defining commands, modes and options. This must be aligned to the definitions in fpga/define.v #define FPGA_MAJOR_MODE_MASK 0x01C0 #define FPGA_MINOR_MODE_MASK 0x003F -// LF +// Definitions for the FPGA commands. +#define FPGA_CMD_SET_CONFREG (1<<12) +#define FPGA_CMD_SET_DIVISOR (2<<12) +#define FPGA_CMD_SET_EDGE_DETECT_THRESHOLD (3<<12) +#define FPGA_CMD_TRACE_ENABLE (2<<12) + +// Major modes #define FPGA_MAJOR_MODE_LF_READER (0<<6) #define FPGA_MAJOR_MODE_LF_EDGE_DETECT (1<<6) #define FPGA_MAJOR_MODE_LF_PASSTHRU (2<<6) #define FPGA_MAJOR_MODE_LF_ADC (3<<6) -// HF -#define FPGA_MAJOR_MODE_HF_READER (0<<6) // D -#define FPGA_MAJOR_MODE_HF_SIMULATOR (1<<6) // D -#define FPGA_MAJOR_MODE_HF_ISO14443A (2<<6) // D -#define FPGA_MAJOR_MODE_HF_SNIFF (3<<6) // D -#define FPGA_MAJOR_MODE_HF_ISO18092 (4<<6) // D -#define FPGA_MAJOR_MODE_HF_GET_TRACE (5<<6) // D -#define FPGA_MAJOR_MODE_HF_FSK_READER (6<<6) // D - -// BOTH HF / LF -#define FPGA_MAJOR_MODE_OFF (7<<6) // D - +#define FPGA_MAJOR_MODE_HF_READER (0<<6) +#define FPGA_MAJOR_MODE_HF_SIMULATOR (1<<6) +#define FPGA_MAJOR_MODE_HF_ISO14443A (2<<6) +#define FPGA_MAJOR_MODE_HF_SNIFF (3<<6) +#define FPGA_MAJOR_MODE_HF_ISO18092 (4<<6) +#define FPGA_MAJOR_MODE_HF_GET_TRACE (5<<6) +#define FPGA_MAJOR_MODE_OFF (7<<6) // Options for LF_READER -#define FPGA_LF_ADC_READER_FIELD 0x1 +#define FPGA_LF_ADC_READER_FIELD ( 1 ) // Options for LF_EDGE_DETECT -#define FPGA_CMD_SET_EDGE_DETECT_THRESHOLD FPGA_CMD_SET_USER_BYTE1 -#define FPGA_LF_EDGE_DETECT_READER_FIELD 0x1 -#define FPGA_LF_EDGE_DETECT_TOGGLE_MODE 0x2 +#define FPGA_LF_EDGE_DETECT_READER_FIELD ( 1 ) +#define FPGA_LF_EDGE_DETECT_TOGGLE_MODE ( 2 ) -// Options for the HF reader -#define FPGA_HF_READER_MODE_RECEIVE_IQ (0<<0) -#define FPGA_HF_READER_MODE_RECEIVE_AMPLITUDE (1<<0) -#define FPGA_HF_READER_MODE_RECEIVE_PHASE (2<<0) -#define FPGA_HF_READER_MODE_SEND_FULL_MOD (3<<0) -#define FPGA_HF_READER_MODE_SEND_SHALLOW_MOD (4<<0) -#define FPGA_HF_READER_MODE_SNIFF_IQ (5<<0) -#define FPGA_HF_READER_MODE_SNIFF_AMPLITUDE (6<<0) -#define FPGA_HF_READER_MODE_SNIFF_PHASE (7<<0) -#define FPGA_HF_READER_MODE_SEND_JAM (8<<0) -#define FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4 (9<<0) +// Options for the generic HF reader +#define FPGA_HF_READER_MODE_RECEIVE_IQ ( 0 ) +#define FPGA_HF_READER_MODE_RECEIVE_AMPLITUDE ( 1 ) +#define FPGA_HF_READER_MODE_RECEIVE_PHASE ( 2 ) +#define FPGA_HF_READER_MODE_SEND_FULL_MOD ( 3 ) +#define FPGA_HF_READER_MODE_SEND_SHALLOW_MOD ( 4 ) +#define FPGA_HF_READER_MODE_SNIFF_IQ ( 5 ) +#define FPGA_HF_READER_MODE_SNIFF_AMPLITUDE ( 6 ) +#define FPGA_HF_READER_MODE_SNIFF_PHASE ( 7 ) +#define FPGA_HF_READER_MODE_SEND_JAM ( 8 ) +#define FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4 ( 9 ) #define FPGA_HF_READER_SUBCARRIER_848_KHZ (0<<4) #define FPGA_HF_READER_SUBCARRIER_424_KHZ (1<<4) @@ -113,24 +148,23 @@ thres| x x x x x x x x #define FPGA_HF_READER_2SUBCARRIERS_424_484_KHZ (3<<4) // Options for the HF simulated tag, how to modulate -#define FPGA_HF_SIMULATOR_NO_MODULATION 0x0 // 0000 -#define FPGA_HF_SIMULATOR_MODULATE_BPSK 0x1 // 0001 -#define FPGA_HF_SIMULATOR_MODULATE_212K 0x2 // 0010 -#define FPGA_HF_SIMULATOR_MODULATE_424K 0x4 // 0100 -#define FPGA_HF_SIMULATOR_MODULATE_424K_8BIT 0x5 // 0101 -// no 848K +#define FPGA_HF_SIMULATOR_NO_MODULATION ( 0 ) +#define FPGA_HF_SIMULATOR_MODULATE_BPSK ( 1 ) +#define FPGA_HF_SIMULATOR_MODULATE_212K ( 2 ) +#define FPGA_HF_SIMULATOR_MODULATE_424K ( 4 ) +#define FPGA_HF_SIMULATOR_MODULATE_424K_8BIT ( 5 ) // Options for ISO14443A -#define FPGA_HF_ISO14443A_SNIFFER 0x0 -#define FPGA_HF_ISO14443A_TAGSIM_LISTEN 0x1 -#define FPGA_HF_ISO14443A_TAGSIM_MOD 0x2 -#define FPGA_HF_ISO14443A_READER_LISTEN 0x3 -#define FPGA_HF_ISO14443A_READER_MOD 0x4 +#define FPGA_HF_ISO14443A_SNIFFER ( 0 ) +#define FPGA_HF_ISO14443A_TAGSIM_LISTEN ( 1 ) +#define FPGA_HF_ISO14443A_TAGSIM_MOD ( 2 ) +#define FPGA_HF_ISO14443A_READER_LISTEN ( 3 ) +#define FPGA_HF_ISO14443A_READER_MOD ( 4 ) -//options for Felica. -#define FPGA_HF_ISO18092_FLAG_NOMOD 0x1 // 0001 disable modulation module -#define FPGA_HF_ISO18092_FLAG_424K 0x2 // 0010 should enable 414k mode (untested). No autodetect -#define FPGA_HF_ISO18092_FLAG_READER 0x4 // 0100 enables antenna power, to act as a reader instead of tag +// Options for ISO18092 / Felica +#define FPGA_HF_ISO18092_FLAG_NOMOD ( 1 ) // 0001 disable modulation module +#define FPGA_HF_ISO18092_FLAG_424K ( 2 ) // 0010 should enable 414k mode (untested). No autodetect +#define FPGA_HF_ISO18092_FLAG_READER ( 4 ) // 0100 enables antenna power, to act as a reader instead of tag void FpgaSendCommand(uint16_t cmd, uint16_t v); void FpgaWriteConfWord(uint16_t v); From 85aac72855b3aa23df60f01a2992bf35964c752c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 29 Aug 2023 16:46:52 +0200 Subject: [PATCH 0441/1034] new fpga images --- fpga/fpga_icopyx_hf.bit | Bin 72749 -> 72749 bytes fpga/fpga_pm3_felica.bit | Bin 42176 -> 42176 bytes fpga/fpga_pm3_hf.bit | Bin 42172 -> 42172 bytes fpga/fpga_pm3_hf_15.bit | Bin 42175 -> 42175 bytes fpga/fpga_pm3_lf.bit | Bin 42172 -> 42172 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/fpga/fpga_icopyx_hf.bit b/fpga/fpga_icopyx_hf.bit index 2deb3216ce64bc0e7e8add8049df1a585632cf8e..c49849667f118837581d975e02f36224650abfd0 100644 GIT binary patch literal 72749 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 literal 72749 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 z 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 diff --git a/fpga/fpga_pm3_felica.bit b/fpga/fpga_pm3_felica.bit index 626d1779299843e0951a7354481b41e5e8f3cfdf..a60a914d230912790937c2bc969cb4cbd8ff69da 100644 GIT binary patch literal 42176 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 Yn~_P(pDt2^KL=lm@cZ;P=YIBo0Jbn{)Bpeg diff --git a/fpga/fpga_pm3_hf.bit b/fpga/fpga_pm3_hf.bit index c824711fd4b50ad0bd973c85f06631f0b0e10d19..1fd05b3e15c1f1c2c0bfb86a972ade9ee706cc90 100644 GIT binary patch literal 42172 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∩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 diff --git a/fpga/fpga_pm3_hf_15.bit b/fpga/fpga_pm3_hf_15.bit index cbf58183570e2503332d0f5e04d47d3bb186866d..c19f86bedfdf8151f9d0ee0be6e171581f44ce13 100644 GIT binary patch literal 42175 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 TVg`G5ZxIDs@G diff --git a/fpga/fpga_pm3_lf.bit b/fpga/fpga_pm3_lf.bit index 98f309c67fd8f14aabc17d4908cd4a1c0d8ce4ec..c00af088cf4ee01358073153de6869b84b2cc8f5 100644 GIT binary patch literal 42172 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 literal 42172 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%0DfdsfKT+ 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 Unk41;_uxzMdqyj1DZl0a3pfQ2?EnA( From b90326be612e1de85c24ee3b5ebe199858fd4f78 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 29 Aug 2023 21:21:26 +0200 Subject: [PATCH 0442/1034] remove file not used anymore --- rdv40.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 rdv40.txt diff --git a/rdv40.txt b/rdv40.txt deleted file mode 100644 index e69de29bb..000000000 From 0cbc0c2f8b8a220cbd4e46cd293d5757bad14a20 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 29 Aug 2023 21:45:15 +0200 Subject: [PATCH 0443/1034] fix CID #416734 --- client/src/cmdhficlass.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 5e271a743..36144abbe 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1238,8 +1238,9 @@ static int CmdHFiClassESetBlk(const char *Cmd) { int blk = arg_get_int_def(ctx, 1, 0); - if (blk > 255) { - PrintAndLogEx(WARNING, "block number must be between 0 and 255. Got %i", blk); + if (blk > 255 || blk < 0) { + PrintAndLogEx(WARNING, "block number must be between 0 and 255. Got " _RED_("%i"), blk); + CLIParserFree(ctx); return PM3_EINVARG; } @@ -1247,18 +1248,17 @@ static int CmdHFiClassESetBlk(const char *Cmd) { int datalen = 0; int res = CLIParamHexToBuf(arg_get_str(ctx, 2), data, sizeof(data), &datalen); CLIParserFree(ctx); + if (res) { PrintAndLogEx(FAILED, "Error parsing bytes"); return PM3_EINVARG; } - if (datalen != sizeof(data)) { - PrintAndLogEx(WARNING, "block data must include 8 HEX bytes. Got %i", datalen); + if (datalen != PICOPASS_BLOCK_SIZE) { + PrintAndLogEx(WARNING, "block data must include 8 HEX bytes. Got " _RED_("%i"), datalen); return PM3_EINVARG; } - CLIParserFree(ctx); - uint16_t bytes_sent = 0; iclass_upload_emul(data, sizeof(data), blk * PICOPASS_BLOCK_SIZE, &bytes_sent); @@ -1805,7 +1805,6 @@ static int CmdHFiClassDump(const char *Cmd) { uint8_t tag_data[0x100 * 8]; memset(tag_data, 0xFF, sizeof(tag_data)); - iclass_card_select_t payload_rdr = { .flags = (FLAG_ICLASS_READER_INIT | FLAG_ICLASS_READER_CLEARTRACE) }; From 32f892e512d97be402c0abaf6f00675686ed0893 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 29 Aug 2023 22:37:56 +0200 Subject: [PATCH 0444/1034] fix 14b dump --- client/src/cmdhf14b.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 536fa2ce3..ae3dd5002 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -443,7 +443,7 @@ static bool get_14b_UID(uint8_t *d, iso14b_type_t *found_type) { iso14b_card_select_t *card = (iso14b_card_select_t*)d; uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - if (memcmp(card->uid, empty, card->uidlen)) { + if (memcmp(card->uid, empty, card->uidlen) == 0) { return false; } *found_type = ISO14B_SR; From e3cc8a98e94547a0579e29e4e42144fe775f37e1 Mon Sep 17 00:00:00 2001 From: Thomas Pedley Date: Tue, 29 Aug 2023 23:56:23 +0100 Subject: [PATCH 0445/1034] Fix MFU authentication to send PACK correctly. --- CHANGELOG.md | 1 + armsrc/iso14443a.c | 40 ++++++++++++++++++++++------------------ 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cae4e6507..6854aef6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Fixed the timeout of TCP connections (@wh201906) - Changed the connection timeout configurable (@wh201906) - Add hf_cardhopper standalone mode for long-distance relay attacks (@startrekdude) + - Fix MFU authentication to send PACK correctly (@shallax) ## [Seven.4.16717][2023-06-25] - Change `hf 14a info` - now identifes QL88 tags (@iceman1001) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index c3ee6f050..8e7988188 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1284,8 +1284,16 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r if (memcmp(pwd, gen_pwd, sizeof(pwd)) == 0) { rPACK[0] = 0x80; rPACK[1] = 0x80; + } else { + uint16_t start = (*pages) * 4 + MFU_DUMP_PREFIX_LENGTH; + emlGetMemBt(rPACK, start, sizeof(rPACK)); + if (g_dbglevel >= DBG_DEBUG) { + Dbprintf("PACK loaded from memory: "); + Dbhexdump(4, rPACK, 0); + } } } + AddCrc14A(rPACK, sizeof(rPACK) - 2); static tag_response_info_t responses_init[] = { @@ -1703,33 +1711,29 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ } else if (receivedCmd[0] == MIFARE_ULC_AUTH_1) { // ULC authentication, or Desfire Authentication LogTrace(receivedCmd, Uart.len, Uart.startTime * 16 - DELAY_AIR2ARM_AS_TAG, Uart.endTime * 16 - DELAY_AIR2ARM_AS_TAG, Uart.parity, true); p_response = NULL; - } else if (receivedCmd[0] == MIFARE_ULEV1_AUTH && len == 7 && tagType == 7) { // NTAG / EV-1 authentication - - /* - // PWD stored in dump now + } else if (receivedCmd[0] == MIFARE_ULEV1_AUTH && len == 7 && tagType == 7) { // NTAG / EV-1 uint8_t pwd[4]; emlGetMemBt(pwd, (pages - 1) * 4 + MFU_DUMP_PREFIX_LENGTH, sizeof(pwd)); + if (g_dbglevel >= DBG_DEBUG) { + Dbprintf("Reader sent password: "); + Dbhexdump(4, receivedCmd + 1, 0); + Dbprintf("Loaded password from memory: "); + Dbhexdump(4, pwd, 0); + } + if (memcmp(pwd, "\x00\x00\x00\x00", 4) == 0) { Uint4byteToMemLe(pwd, ul_ev1_pwdgenB(data)); - Dbprintf("Calc pwd... %02X %02X %02X %02X", pwd[0], pwd[1], pwd[2], pwd[3]); + if (g_dbglevel >= DBG_DEBUG) Dbprintf("Calc pwd... %02X %02X %02X %02X", pwd[0], pwd[1], pwd[2], pwd[3]); } if (memcmp(receivedCmd + 1, pwd, 4) == 0) { - - uint8_t pack[4]; - emlGetMemBt(pack, pages * 4 + MFU_DUMP_PREFIX_LENGTH, 2); - if (memcmp(pack, "\x00\x00\x00\x00", 4) == 0) { - pack[0] = 0x80; - pack[1] = 0x80; - } - AddCrc14A(pack, sizeof(pack) - 2); - EmSendCmd(pack, sizeof(pack)); + if (g_dbglevel >= DBG_DEBUG) Dbprintf("Password match, responding with PACK."); + p_response = &responses[RESP_INDEX_PACK]; } else { - EmSend4bit(CARD_NACK_NA); - if (g_dbglevel >= DBG_DEBUG) Dbprintf("Auth attempt: %08x", bytes_to_num(receivedCmd + 1, 4)); + if (g_dbglevel >= DBG_DEBUG) Dbprintf("Password did not match, NACK_IV."); + p_response = NULL; + EmSend4bit(CARD_NACK_IV); } - p_response = NULL; - */ p_response = &responses[RESP_INDEX_PACK]; } else if (receivedCmd[0] == MIFARE_ULEV1_VCSL && len == 23 && tagType == 7) { uint8_t cmd[3]; From 3e034e146aa290c88c5dfbffe02d4c4aa9dea13f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 3 Sep 2023 12:36:30 +0200 Subject: [PATCH 0446/1034] remove unneeded line --- armsrc/iso14443a.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 8e7988188..5af71bef3 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1577,7 +1577,7 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ // block1 = 4byte UID. p_response = &responses[RESP_INDEX_UIDC1]; } else { // all other tags (16 byte block tags) - uint8_t emdata[MAX_MIFARE_FRAME_SIZE]; + uint8_t emdata[MAX_MIFARE_FRAME_SIZE] = {0}; emlGetMemBt(emdata, block, 16); AddCrc14A(emdata, 16); EmSendCmd(emdata, sizeof(emdata)); @@ -1591,7 +1591,7 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ // send NACK 0x0 == invalid argument EmSend4bit(CARD_NACK_IV); } else { - uint8_t emdata[MAX_FRAME_SIZE]; + uint8_t emdata[MAX_FRAME_SIZE] = {0}; // first blocks of emu are header int start = block1 * 4 + MFU_DUMP_PREFIX_LENGTH; len = (block2 - block1 + 1) * 4; @@ -1675,7 +1675,7 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ // send NACK 0x0 == invalid argument EmSend4bit(CARD_NACK_IV); } else { - uint8_t cmd[3]; + uint8_t cmd[3] = {0,0,0}; cmd[0] = tearings[index]; AddCrc14A(cmd, sizeof(cmd) - 2); EmSendCmd(cmd, sizeof(cmd)); @@ -1712,7 +1712,7 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ LogTrace(receivedCmd, Uart.len, Uart.startTime * 16 - DELAY_AIR2ARM_AS_TAG, Uart.endTime * 16 - DELAY_AIR2ARM_AS_TAG, Uart.parity, true); p_response = NULL; } else if (receivedCmd[0] == MIFARE_ULEV1_AUTH && len == 7 && tagType == 7) { // NTAG / EV-1 - uint8_t pwd[4]; + uint8_t pwd[4] = {0,0,0,0}; emlGetMemBt(pwd, (pages - 1) * 4 + MFU_DUMP_PREFIX_LENGTH, sizeof(pwd)); if (g_dbglevel >= DBG_DEBUG) { Dbprintf("Reader sent password: "); @@ -1734,9 +1734,9 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ p_response = NULL; EmSend4bit(CARD_NACK_IV); } - p_response = &responses[RESP_INDEX_PACK]; + } else if (receivedCmd[0] == MIFARE_ULEV1_VCSL && len == 23 && tagType == 7) { - uint8_t cmd[3]; + uint8_t cmd[3] = {0,0,0}; emlGetMemBt(cmd, (pages - 2) * 4 + 1 + MFU_DUMP_PREFIX_LENGTH, 1); AddCrc14A(cmd, sizeof(cmd) - 2); EmSendCmd(cmd, sizeof(cmd)); From 276bd29da9faeab53eb729a2047e5feee777a751 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 3 Sep 2023 14:43:38 +0200 Subject: [PATCH 0447/1034] cleanup and fix shadowing var --- armsrc/iso14443a.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 5af71bef3..21393b206 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1276,21 +1276,15 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r // EV1/NTAG, set PWD w AMIIBO algo if all zero. if (tagType == 7) { - uint8_t pwd[4]; - uint8_t gen_pwd[4]; - uint16_t start = (*pages - 1) * 4 + MFU_DUMP_PREFIX_LENGTH; - emlGetMemBt(pwd, start, sizeof(pwd)); + uint8_t pwd[4] = {0,0,0,0}; + uint8_t gen_pwd[4] = {0,0,0,0}; + emlGetMemBt(pwd, (*pages - 1) * 4 + MFU_DUMP_PREFIX_LENGTH, sizeof(pwd)); + emlGetMemBt(rPACK, (*pages) * 4 + MFU_DUMP_PREFIX_LENGTH, sizeof(rPACK)); + Uint4byteToMemBe(gen_pwd, ul_ev1_pwdgenB(data)); if (memcmp(pwd, gen_pwd, sizeof(pwd)) == 0) { rPACK[0] = 0x80; rPACK[1] = 0x80; - } else { - uint16_t start = (*pages) * 4 + MFU_DUMP_PREFIX_LENGTH; - emlGetMemBt(rPACK, start, sizeof(rPACK)); - if (g_dbglevel >= DBG_DEBUG) { - Dbprintf("PACK loaded from memory: "); - Dbhexdump(4, rPACK, 0); - } } } From e5941bcf3af0af371dc3d725ab36bf438114280e Mon Sep 17 00:00:00 2001 From: Harry Sintonen Date: Tue, 5 Sep 2023 16:38:33 +0300 Subject: [PATCH 0448/1034] fix crc render position when data len is multiple of 16 --- client/src/cmdtrace.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index e71ca4445..9182608ae 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -655,11 +655,12 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr if (crcStatus == 0 || crcStatus == 1) { char *pos1 = line[(data_len - 2) / TRACE_MAX_HEX_BYTES]; - pos1 += (((data_len - 2) % TRACE_MAX_HEX_BYTES) * 4) - 1; + int delta = (data_len - 2) % TRACE_MAX_HEX_BYTES ? 1 : 0; + pos1 += (((data_len - 2) % TRACE_MAX_HEX_BYTES) * 4) - delta; - (*(pos1 + 6 + 1)) = '\0'; + (*(pos1 + 6 + delta)) = '\0'; - char *cb_str = str_dup(pos1 + 1); + char *cb_str = str_dup(pos1 + delta); if (g_session.supports_colors) { if (crcStatus == 0) { From cc846216d28b2bc9db44bdea1e78b21d90de27e2 Mon Sep 17 00:00:00 2001 From: Ernestas Kulik Date: Mon, 4 Sep 2023 20:10:58 +0300 Subject: [PATCH 0449/1034] dictionaries: Add keys for Vilnius public transit card --- client/dictionaries/mfc_default_keys.dic | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index b2d656969..421ab14ae 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -2193,3 +2193,15 @@ DDDAA35A9749 # Mercator Pika Card, Slovenia 97D77FAE77D3 5AF445D2B87A +# +# Vilniečio/JUDU kortelė, Lithuania +# A +16901CB400BC +F0FE56621A42 +8C187E78EE9C +FE2A42E85CA8 +# B +6A6C80423226 +F4CE4AF888AE +307448829EBC +C2A0105EB028 From 9ddbdad8cb74f71300c1b982c558622f1494bf83 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 6 Sep 2023 10:59:21 +0200 Subject: [PATCH 0450/1034] added keys from #2019 unknown if they are static --- client/dictionaries/mfc_default_keys.dic | 77 +++++++++++++++--------- 1 file changed, 47 insertions(+), 30 deletions(-) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 421ab14ae..088ab80d0 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -1829,6 +1829,37 @@ E19504C39461 FA1FBB3F0F1F FF16014FEFC7 # +# +# Food GEM +6686FADE5566 +# +# Data from Discord, French pool +9B7C25052FC3 +494446555455 +# +# Data from Discord, seems to be related to ASSA +427553754D47 +# Keys found on Edith Cowan University Smart Riders +9A677289564D +186C59E6AFC9 +DDDAA35A9749 +9D0D0A829F49 +# Mercator Pika Card, Slovenia +97D77FAE77D3 +5AF445D2B87A +# +# Vilniečio/JUDU kortelė, Lithuania +# A +16901CB400BC +F0FE56621A42 +8C187E78EE9C +FE2A42E85CA8 +# B +6A6C80423226 +F4CE4AF888AE +307448829EBC +C2A0105EB028 +# # Keys from Flipper Zero Community # Last update: Aug 13, 2022 # @@ -2175,33 +2206,19 @@ D201DBB6AB6E 09074A146605 151F3E85EC46 # -# -# Food GEM -6686FADE5566 -# -# Data from Discord, French pool -9B7C25052FC3 -494446555455 -# -# Data from Discord, seems to be related to ASSA -427553754D47 -# Keys found on Edith Cowan University Smart Riders -9A677289564D -186C59E6AFC9 -DDDAA35A9749 -9D0D0A829F49 -# Mercator Pika Card, Slovenia -97D77FAE77D3 -5AF445D2B87A -# -# Vilniečio/JUDU kortelė, Lithuania -# A -16901CB400BC -F0FE56621A42 -8C187E78EE9C -FE2A42E85CA8 -# B -6A6C80423226 -F4CE4AF888AE -307448829EBC -C2A0105EB028 +# Travelodge by Wyndham Berkeley +0000FFFFFFFF +4663ACD2FFFF +EDC317193709 +# Hotel Santa Cruz +75FAB77E2E5B +# saflok brand HOTEL key +32F093536677 +# A WaterFront Hotel in Oakland +3351916B5A77 +# Ballys (2018) +336E34CC2177 +# Random Hawaiian Hotel +A1670589B2AF +# SF Hotel (SoMa area) +2E0F00700000 From 5abae85edac425059919ae08679e3c54bd6a7f3d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 7 Sep 2023 12:54:46 +0200 Subject: [PATCH 0451/1034] legic sim should work now.... --- armsrc/legicrfsim.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/armsrc/legicrfsim.c b/armsrc/legicrfsim.c index ac207ebaf..1f6accf4a 100644 --- a/armsrc/legicrfsim.c +++ b/armsrc/legicrfsim.c @@ -215,7 +215,6 @@ static void tx_ack(void) { // - receive the frame // - detect end of frame (last pause) static int32_t rx_frame(uint8_t *len) { - int32_t frame = 0; // add 2 SSP clock cycles (1 for tx and 1 for rx pipeline delay) // those will be subtracted at the end of the rx phase @@ -241,6 +240,7 @@ static int32_t rx_frame(uint8_t *len) { // backup ts for trace log uint32_t last_frame_start = last_frame_end; + int32_t frame = 0; // receive frame for (*len = 0; true; ++(*len)) { @@ -353,7 +353,7 @@ static int32_t setup_phase(legic_card_select_t *p_card) { // wait for iv int32_t iv = rx_frame(&len); if ((len != 7) || (iv < 0)) { - return PM3_ERFTRANS; + return PM3_ETIMEOUT; } // configure prng @@ -375,7 +375,7 @@ static int32_t setup_phase(legic_card_select_t *p_card) { // wait for ack int32_t ack = rx_frame(&len); if ((len != 6) || (ack < 0)) { - return PM3_ERFTRANS; + return PM3_ETIMEOUT; } // validate data @@ -464,24 +464,23 @@ void LegicRfSimulate(uint8_t tagtype, bool send_reply) { // configure ARM and FPGA init_tag(); - int res = PM3_SUCCESS; + int res = init_card(tagtype, &card); // verify command line input - if (init_card(tagtype, &card) != PM3_SUCCESS) { + if (res != PM3_SUCCESS) { DbpString("Unknown tagtype to simulate"); - res = PM3_ESOFT; goto OUT; } LED_A_ON(); - Dbprintf("Legic Prime, simulating uid... " _YELLOW_("%02X%02X%02X%02X"), legic_mem[0], legic_mem[1], legic_mem[2], legic_mem[3]); + Dbprintf("Legic Prime, simulating MCD... " _YELLOW_("%02X") " MSN... " _YELLOW_("%02X%02X%02X"), legic_mem[0], legic_mem[1], legic_mem[2], legic_mem[3]); uint16_t counter = 0; while (BUTTON_PRESS() == false) { WDT_HIT(); - if (counter >= 1000) { + if (counter >= 2000) { if (data_available()) { res = PM3_EOPABORTED; goto OUT; @@ -501,7 +500,7 @@ void LegicRfSimulate(uint8_t tagtype, bool send_reply) { } // connection is established, process commands until one fails - while (connected_phase(&card) != PM3_SUCCESS) { + while (connected_phase(&card) == PM3_SUCCESS) { WDT_HIT(); } } @@ -512,14 +511,16 @@ OUT: Dbprintf("Emulator stopped. Trace length... " _YELLOW_("%d"), BigBuf_get_traceLen()); } - if (res == PM3_EOPABORTED) + if (res == PM3_EOPABORTED) { DbpString("Aborted by user"); + } switch_off(); StopTicks(); - if (send_reply) + if (send_reply) { reply_ng(CMD_HF_LEGIC_SIMULATE, res, NULL, 0); + } BigBuf_free_keep_EM(); } From d74e264250f33d2f99e3abfdb030b586507a0b03 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 7 Sep 2023 20:13:18 +0200 Subject: [PATCH 0452/1034] style --- armsrc/fpgaloader.c | 2 +- armsrc/iso14443a.c | 10 ++++----- armsrc/iso14443b.c | 12 +++++------ armsrc/iso15693.c | 4 ++-- client/src/cmdhf14b.c | 2 +- client/src/cmdlft55xx.c | 48 ++++++++++++++++++++--------------------- doc/commands.json | 4 ++-- fpga/hi_flite.v | 2 +- include/iso14b.h | 2 +- 9 files changed, 43 insertions(+), 43 deletions(-) diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index fefc16029..ccc47bcde 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -162,7 +162,7 @@ void FpgaSetupSsc(uint16_t fpga_mode) { // 8, 16 or 32 bits per transfer, no loopback, MSB first, 1 transfer per sync // pulse, no output sync - if (((fpga_mode & FPGA_MAJOR_MODE_MASK) == FPGA_MAJOR_MODE_HF_READER ) && + if (((fpga_mode & FPGA_MAJOR_MODE_MASK) == FPGA_MAJOR_MODE_HF_READER) && (FpgaGetCurrent() == FPGA_BITSTREAM_HF || FpgaGetCurrent() == FPGA_BITSTREAM_HF_15)) { AT91C_BASE_SSC->SSC_RFMR = SSC_FRAME_MODE_BITS_IN_WORD(16) | AT91C_SSC_MSBF | SSC_FRAME_MODE_WORDS_PER_TRANSFER(0); } else { diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 21393b206..410a83308 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1276,8 +1276,8 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r // EV1/NTAG, set PWD w AMIIBO algo if all zero. if (tagType == 7) { - uint8_t pwd[4] = {0,0,0,0}; - uint8_t gen_pwd[4] = {0,0,0,0}; + uint8_t pwd[4] = {0, 0, 0, 0}; + uint8_t gen_pwd[4] = {0, 0, 0, 0}; emlGetMemBt(pwd, (*pages - 1) * 4 + MFU_DUMP_PREFIX_LENGTH, sizeof(pwd)); emlGetMemBt(rPACK, (*pages) * 4 + MFU_DUMP_PREFIX_LENGTH, sizeof(rPACK)); @@ -1669,7 +1669,7 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ // send NACK 0x0 == invalid argument EmSend4bit(CARD_NACK_IV); } else { - uint8_t cmd[3] = {0,0,0}; + uint8_t cmd[3] = {0, 0, 0}; cmd[0] = tearings[index]; AddCrc14A(cmd, sizeof(cmd) - 2); EmSendCmd(cmd, sizeof(cmd)); @@ -1706,7 +1706,7 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ LogTrace(receivedCmd, Uart.len, Uart.startTime * 16 - DELAY_AIR2ARM_AS_TAG, Uart.endTime * 16 - DELAY_AIR2ARM_AS_TAG, Uart.parity, true); p_response = NULL; } else if (receivedCmd[0] == MIFARE_ULEV1_AUTH && len == 7 && tagType == 7) { // NTAG / EV-1 - uint8_t pwd[4] = {0,0,0,0}; + uint8_t pwd[4] = {0, 0, 0, 0}; emlGetMemBt(pwd, (pages - 1) * 4 + MFU_DUMP_PREFIX_LENGTH, sizeof(pwd)); if (g_dbglevel >= DBG_DEBUG) { Dbprintf("Reader sent password: "); @@ -1730,7 +1730,7 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ } } else if (receivedCmd[0] == MIFARE_ULEV1_VCSL && len == 23 && tagType == 7) { - uint8_t cmd[3] = {0,0,0}; + uint8_t cmd[3] = {0, 0, 0}; emlGetMemBt(cmd, (pages - 2) * 4 + 1 + MFU_DUMP_PREFIX_LENGTH, 1); AddCrc14A(cmd, sizeof(cmd) - 2); EmSendCmd(cmd, sizeof(cmd)); diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index c2516c36a..db20119d2 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -45,7 +45,7 @@ * 1 / 3 390 000 = 294.98 nano seconds ( 0.2949 µs ) * * 1 ETU = 9.4395 µs = 32 SSP_CLK = 128 FC -* 1 SSP_CLK = 4 FC +* 1 SSP_CLK = 4 FC * 1 µs 3 SSP_CLK about 14 FC * PROBLEM 1. * ---------- @@ -1409,9 +1409,9 @@ static void TransmitFor14443b_AsReader(uint32_t *start_time) { #ifdef RDV4 FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4); -#else +#else FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD); -#endif +#endif // TR2 minimum 14 ETUs if (*start_time < ISO14B_TR0) { @@ -1596,7 +1596,7 @@ int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void // SSP_CLK = 4833 µS * 3.39 = 16384 - int len = Get14443bAnswerFromTag(rxdata, rxmaxlen, iso14b_timeout , &eof_time); + int len = Get14443bAnswerFromTag(rxdata, rxmaxlen, iso14b_timeout, &eof_time); FpgaDisableTracing(); uint8_t *data_bytes = (uint8_t *) rxdata; @@ -2107,9 +2107,9 @@ void iso14443b_setup(void) { // Signal field is on with the appropriate LED #ifdef RDV4 FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4); -#else +#else FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD); -#endif +#endif SpinDelay(100); diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index 9a1f5be49..54aaa16bd 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -296,9 +296,9 @@ void TransmitTo15693Tag(const uint8_t *cmd, int len, uint32_t *start_time, bool #ifdef RDV4 FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | (shallow_mod ? FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4 : FPGA_HF_READER_MODE_SEND_FULL_MOD)); -#else +#else FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | (shallow_mod ? FPGA_HF_READER_MODE_SEND_SHALLOW_MOD : FPGA_HF_READER_MODE_SEND_FULL_MOD)); -#endif +#endif if (*start_time < DELAY_ARM_TO_TAG) { diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index ae3dd5002..1ba73e797 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -441,7 +441,7 @@ static bool get_14b_UID(uint8_t *d, iso14b_type_t *found_type) { if (resp.oldarg[0] == 0) { memcpy(d, resp.data.asBytes, sizeof(iso14b_card_select_t)); - iso14b_card_select_t *card = (iso14b_card_select_t*)d; + iso14b_card_select_t *card = (iso14b_card_select_t *)d; uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; if (memcmp(card->uid, empty, card->uidlen) == 0) { return false; diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index 75475d161..5033b5d54 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -4158,7 +4158,7 @@ static int CmdT55xxSniff(const char *Cmd) { usedPassword <<= 1; if (data[i] == '1') { usedPassword |= 1; - } + } } // Lock bit 34 @@ -4167,7 +4167,7 @@ static int CmdT55xxSniff(const char *Cmd) { blockData <<= 1; if (data[i] == '1') { blockData |= 1; - } + } } blockAddr = 0; @@ -4198,7 +4198,7 @@ static int CmdT55xxSniff(const char *Cmd) { blockData <<= 1; if (data[i] == '1') { blockData |= 1; - } + } } for (uint8_t i = 2; i <= 33; i++) { @@ -4239,7 +4239,7 @@ static int CmdT55xxSniff(const char *Cmd) { usedPassword <<= 1; if (data[i] == '1') { usedPassword |= 1; - } + } } blockData = 0; @@ -4247,7 +4247,7 @@ static int CmdT55xxSniff(const char *Cmd) { blockData <<= 1; if (data[i] == '1') { blockData |= 1; - } + } } blockAddr = 0; @@ -4255,7 +4255,7 @@ static int CmdT55xxSniff(const char *Cmd) { blockAddr <<= 1; if (data[i] == '1') { blockAddr |= 1; - } + } } have_data = true; @@ -4271,26 +4271,26 @@ static int CmdT55xxSniff(const char *Cmd) { if (have_data) { if (blockAddr == 7) { PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_YELLOW_("%8s")" | "_YELLOW_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s" - , modeText - , pwdText - , dataText - , blockAddr - , page - , minWidth - , maxWidth - , data - ); + , modeText + , pwdText + , dataText + , blockAddr + , page + , minWidth + , maxWidth + , data + ); } else { PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_GREEN_("%8s")" | "_GREEN_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s" - , modeText - , pwdText - , dataText - , blockAddr - , page - , minWidth - , maxWidth - , data - ); + , modeText + , pwdText + , dataText + , blockAddr + , page + , minWidth + , maxWidth + , data + ); } } } diff --git a/doc/commands.json b/doc/commands.json index 895998486..bbe8f8b93 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -8786,7 +8786,7 @@ "-1, --ht1 Card type Hitag 1", "-2, --ht2 Card type Hitag 2", "-s, --hts Card type Hitag S", - "-m, --htm Card type Hitag \u00ce\u00bc" + "-m, --htm Card type Hitag \u03bc" ], "usage": "lf hitag eload [-h12sm] -f " }, @@ -11837,6 +11837,6 @@ "metadata": { "commands_extracted": 686, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-08-24T05:14:06" + "extracted_on": "2023-09-07T18:12:46" } } \ No newline at end of file diff --git a/fpga/hi_flite.v b/fpga/hi_flite.v index d93d67d21..8346e49f2 100644 --- a/fpga/hi_flite.v +++ b/fpga/hi_flite.v @@ -296,7 +296,7 @@ begin mid <= 8'd129; else if (adc_d < curminthres) mid <= 8'd127; - else + else begin if (after_hysteresis) begin diff --git a/include/iso14b.h b/include/iso14b.h index 10995eba0..e809ef2c0 100644 --- a/include/iso14b.h +++ b/include/iso14b.h @@ -69,7 +69,7 @@ typedef struct { #define SSP_TO_US(x) ( (int32_t)((x) / 3.39) ) #define HF14_ETU_TO_SSP(x) ((x) << 5) // 1 ETU = 32 SSP -#define HF14_SSP_TO_ETU(x) ((x) >> 5) // +#define HF14_SSP_TO_ETU(x) ((x) >> 5) // #define HF14_ETU_TO_US(x) ( (float)((x) * 9.4396) ) #define HF14_ETU_TO_US_2(x) ( (int32_t)( ((x) * 9439600) / 1000000) ) From d97f417ee642b547ab1daa65c9e2861d23fd0ca1 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 7 Sep 2023 21:00:07 +0200 Subject: [PATCH 0453/1034] Fix clang warnings on increasing alignment requirements --- client/src/cmdhfmfhard.c | 3 ++- client/src/flash.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index 9b4cf4858..713a658e9 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -406,7 +406,8 @@ static void init_bitflip_bitarrays(void) { exit(5); } - uint32_t count = ((uint32_t *)uncompressed_data)[0]; + uint32_t count; + memcpy(&count, uncompressed_data, sizeof(uint32_t)); if ((float)count / (1 << 24) < IGNORE_BITFLIP_THRESHOLD) { uint32_t *bitset = (uint32_t *)malloc_bitarray(sizeof(uint32_t) * (1 << 19)); diff --git a/client/src/flash.c b/client/src/flash.c index b1f4a28c9..aed71f805 100644 --- a/client/src/flash.c +++ b/client/src/flash.c @@ -350,7 +350,8 @@ int flash_load(flash_file_t *ctx, bool force) { } if (strcmp(((char *)shstr) + shdrs[i].sh_name, ".bootphase1") == 0) { - uint32_t offset = *(uint32_t *)(ctx->elf + le32(shdrs[i].sh_offset) + le32(shdrs[i].sh_size) - 4); + uint32_t offset; + memcpy(&offset, ctx->elf + le32(shdrs[i].sh_offset) + le32(shdrs[i].sh_size) - 4, sizeof(uint32_t)); if (offset >= le32(shdrs[i].sh_addr)) { offset -= le32(shdrs[i].sh_addr); if (offset < le32(shdrs[i].sh_size)) { From 3aeb5c493fe4622425011c4d3040c180197b7cf0 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 7 Sep 2023 22:28:37 +0200 Subject: [PATCH 0454/1034] fix a few cppcheck warnings --- armsrc/Standalone/hf_cardhopper.c | 8 +++--- armsrc/iso14443a.c | 4 +-- armsrc/mifaresim.c | 2 +- .../deps/hardnested/hardnested_bruteforce.c | 7 ++--- client/src/cmddata.c | 7 ++--- client/src/cmdhflist.c | 4 +-- client/src/cmdhfvas.c | 26 +++++++++---------- client/src/emv/cmdemv.c | 2 +- client/src/proxmark3.c | 4 +-- common/lfdemod.c | 2 +- tools/hitag2crack/crack3/ht2crack3.c | 15 ++++++----- tools/mf_nonce_brute/mf_nonce_brute.c | 2 +- tools/mf_nonce_brute/mf_trace_brute.c | 2 +- 13 files changed, 44 insertions(+), 41 deletions(-) diff --git a/armsrc/Standalone/hf_cardhopper.c b/armsrc/Standalone/hf_cardhopper.c index cfad35605..0a154f66b 100644 --- a/armsrc/Standalone/hf_cardhopper.c +++ b/armsrc/Standalone/hf_cardhopper.c @@ -275,16 +275,16 @@ static void cook_ats(packet_t *ats, uint8_t fwi, uint8_t sfgi) { ats->dat[0] = 0x04; ats->dat[1] = 0x78; ats->dat[2] = 0x77; - ats->dat[3] = 0x80; + // ats->dat[3] = 0x80; } else if (ats->len == 2) { ats->len = 4; ats->dat[0] = 0x04; ats->dat[2] = 0x77; - ats->dat[3] = 0x80; + // ats->dat[3] = 0x80; } else if (ats->len == 3) { ats->len = 4; ats->dat[0] = 0x04; - ats->dat[3] = 0x80; + // ats->dat[3] = 0x80; } // Set the SFGI as well as the FWI - needed for some older readers (firmware revs?) @@ -293,7 +293,7 @@ static void cook_ats(packet_t *ats, uint8_t fwi, uint8_t sfgi) { } -static bool try_use_canned_response(uint8_t *dat, int len, tag_response_info_t *canned) { +static bool try_use_canned_response(const uint8_t *dat, int len, tag_response_info_t *canned) { if ((dat[0] == ISO14443A_CMD_REQA || dat[0] == ISO14443A_CMD_WUPA) && len == 1) { EmSendPrecompiledCmd(canned + RESP_INDEX_ATQA); return true; diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 410a83308..346669398 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -2529,7 +2529,7 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters_t bool first_try = true; uint32_t retry_timeout = WUPA_RETRY_TIMEOUT * polling_parameters->frame_count + polling_parameters->extra_timeout; - uint32_t start_time; + uint32_t start_time = 0; int len; uint8_t current_frame = 0; @@ -2584,7 +2584,7 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint uint8_t resp[MAX_FRAME_SIZE] = {0}; // theoretically. A usual RATS will be much smaller uint8_t resp_par[MAX_PARITY_SIZE] = {0}; - uint8_t sak; // cascade uid + uint8_t sak = 0; // cascade uid bool do_cascade = 1; int cascade_level = 0; diff --git a/armsrc/mifaresim.c b/armsrc/mifaresim.c index a44220209..eddb59dc0 100644 --- a/armsrc/mifaresim.c +++ b/armsrc/mifaresim.c @@ -523,7 +523,7 @@ void Mifare1ksim(uint16_t flags, uint8_t exitAfterNReads, uint8_t *datain, uint1 uint8_t rAUTH_NT_keystream[4]; uint32_t nonce = 0; - tUart14a *uart = GetUart14a(); + const tUart14a *uart = GetUart14a(); // free eventually allocated BigBuf memory but keep Emulator Memory BigBuf_free_keep_EM(); diff --git a/client/deps/hardnested/hardnested_bruteforce.c b/client/deps/hardnested/hardnested_bruteforce.c index e4b203f4d..f55d8885a 100644 --- a/client/deps/hardnested/hardnested_bruteforce.c +++ b/client/deps/hardnested/hardnested_bruteforce.c @@ -304,12 +304,13 @@ static bool ensure_buckets_alloc(size_t need_buckets) { while (need_buckets > alloc_sz) { alloc_sz *= 2; } - - buckets = realloc(buckets, sizeof(statelist_t *) * alloc_sz); - if (buckets == NULL) { + statelist_t **new_buckets = realloc(buckets, sizeof(statelist_t *) * alloc_sz); + if (new_buckets == NULL) { + free(buckets); buckets_allocated = 0; return false; } + buckets = new_buckets; memset(buckets + buckets_allocated, 0, (alloc_sz - buckets_allocated) * sizeof(statelist_t *)); buckets_allocated = alloc_sz; } diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 4c8200ee6..6eb3fcb85 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -2224,7 +2224,7 @@ int CmdNorm(const char *Cmd) { if (g_GraphBuffer[i] < min) min = g_GraphBuffer[i]; } - if (max != min) { + if ((g_GraphTraceLen > 10) && (max != min)) { for (uint32_t i = 0; i < g_GraphTraceLen; ++i) { g_GraphBuffer[i] = ((long)(g_GraphBuffer[i] - ((max + min) / 2)) * 256) / (max - min); //marshmelow: adjusted *1000 to *256 to make +/- 128 so demod commands still work @@ -3218,12 +3218,12 @@ static int CmdNumCon(const char *Cmd) { int hlen = 256; char hex[256]; memset(hex, 0, sizeof(hex)); - res = CLIParamStrToBuf(arg_get_str(ctx, 2), (uint8_t *)hex, sizeof(hex), &hlen); + res |= CLIParamStrToBuf(arg_get_str(ctx, 2), (uint8_t *)hex, sizeof(hex), &hlen); int blen = 256; char bin[256]; memset(bin, 0, sizeof(bin)); - res = CLIParamStrToBuf(arg_get_str(ctx, 3), (uint8_t *)bin, sizeof(bin), &blen); + res |= CLIParamStrToBuf(arg_get_str(ctx, 3), (uint8_t *)bin, sizeof(bin), &blen); bool shall_invert = arg_get_lit(ctx, 4); CLIParserFree(ctx); @@ -3236,6 +3236,7 @@ static int CmdNumCon(const char *Cmd) { // results for MPI actions bool ret = false; + (void) ret; // container of big number mbedtls_mpi N; diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index 8e605b91f..bf67a2b0b 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -1362,8 +1362,8 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { if (data_size > 2) { uint16_t uBlockNum = MemLeToUint2byte(data) ; uint8_t uQty = data[2] ; - if (uQty != 1) { - snprintf(exp, size, "READ %s(%u-%u) %s_%s", encrypted, uBlockNum, uBlockNum + uQty - 1, responseMaced, commandMaced); + if (uQty > 1) { + snprintf(exp, size, "READ %s(%u-%i) %s_%s", encrypted, uBlockNum, uBlockNum + uQty - 1, responseMaced, commandMaced); } else { snprintf(exp, size, "READ %s(%u) %s_%s", encrypted, uBlockNum, responseMaced, commandMaced); } diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index 9d04b7477..4e4a305e5 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -28,8 +28,8 @@ #include "util.h" #include "util_posix.h" #include "iso7816/iso7816core.h" -#include "stddef.h" -#include "stdbool.h" +#include +#include #include "mifare.h" #include #include @@ -59,10 +59,10 @@ uint8_t aid[] = { 0x4f, 0x53, 0x45, 0x2e, 0x56, 0x41, 0x53, 0x2e, 0x30, 0x31 }; uint8_t getVasUrlOnlyP2 = 0x00; uint8_t getVasFullReqP2 = 0x01; -static int ParseSelectVASResponse(uint8_t *response, size_t resLen, bool verbose) { +static int ParseSelectVASResponse(const uint8_t *response, size_t resLen, bool verbose) { struct tlvdb *tlvRoot = tlvdb_parse_multi(response, resLen); - struct tlvdb *versionTlv = tlvdb_find_full(tlvRoot, 0x9F21); + const struct tlvdb *versionTlv = tlvdb_find_full(tlvRoot, 0x9F21); if (versionTlv == NULL) { tlvdb_free(tlvRoot); return PM3_ECARDEXCHANGE; @@ -80,7 +80,7 @@ static int ParseSelectVASResponse(uint8_t *response, size_t resLen, bool verbose return PM3_ECARDEXCHANGE; } - struct tlvdb *capabilitiesTlv = tlvdb_find_full(tlvRoot, 0x9F23); + const struct tlvdb *capabilitiesTlv = tlvdb_find_full(tlvRoot, 0x9F23); if (capabilitiesTlv == NULL) { tlvdb_free(tlvRoot); return PM3_ECARDEXCHANGE; @@ -99,7 +99,7 @@ static int ParseSelectVASResponse(uint8_t *response, size_t resLen, bool verbose return PM3_SUCCESS; } -static int CreateGetVASDataCommand(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t *out, int *outLen) { +static int CreateGetVASDataCommand(const uint8_t *pidHash, const char *url, size_t urlLen, uint8_t *out, int *outLen) { if (pidHash == NULL && url == NULL) { PrintAndLogEx(FAILED, "Must provide a Pass Type ID or a URL"); return PM3_EINVARG; @@ -154,10 +154,10 @@ static int CreateGetVASDataCommand(uint8_t *pidHash, const char *url, size_t url return PM3_SUCCESS; } -static int ParseGetVASDataResponse(uint8_t *res, size_t resLen, uint8_t *cryptogram, size_t *cryptogramLen) { +static int ParseGetVASDataResponse(const uint8_t *res, size_t resLen, uint8_t *cryptogram, size_t *cryptogramLen) { struct tlvdb *tlvRoot = tlvdb_parse_multi(res, resLen); - struct tlvdb *cryptogramTlvdb = tlvdb_find_full(tlvRoot, 0x9F27); + const struct tlvdb *cryptogramTlvdb = tlvdb_find_full(tlvRoot, 0x9F27); if (cryptogramTlvdb == NULL) { tlvdb_free(tlvRoot); return PM3_ECARDEXCHANGE; @@ -171,10 +171,10 @@ static int ParseGetVASDataResponse(uint8_t *res, size_t resLen, uint8_t *cryptog return PM3_SUCCESS; } -static int LoadReaderPrivateKey(uint8_t *buf, size_t bufLen, mbedtls_ecp_keypair *privKey) { +static int LoadReaderPrivateKey(const uint8_t *buf, size_t bufLen, mbedtls_ecp_keypair *privKey) { struct tlvdb *derRoot = tlvdb_parse_multi(buf, bufLen); - struct tlvdb *privkeyTlvdb = tlvdb_find_full(derRoot, 0x04); + const struct tlvdb *privkeyTlvdb = tlvdb_find_full(derRoot, 0x04); if (privkeyTlvdb == NULL) { tlvdb_free(derRoot); return PM3_EINVARG; @@ -187,7 +187,7 @@ static int LoadReaderPrivateKey(uint8_t *buf, size_t bufLen, mbedtls_ecp_keypair return PM3_EINVARG; } - struct tlvdb *pubkeyCoordsTlvdb = tlvdb_find_full(derRoot, 0x03); + const struct tlvdb *pubkeyCoordsTlvdb = tlvdb_find_full(derRoot, 0x03); if (pubkeyCoordsTlvdb == NULL) { tlvdb_free(derRoot); PrintAndLogEx(FAILED, "Private key file should include public key component"); @@ -229,7 +229,7 @@ static int GetPrivateKeyHint(mbedtls_ecp_keypair *privKey, uint8_t *keyHint) { return PM3_SUCCESS; } -static int LoadMobileEphemeralKey(uint8_t *xcoordBuf, mbedtls_ecp_keypair *pubKey) { +static int LoadMobileEphemeralKey(const uint8_t *xcoordBuf, mbedtls_ecp_keypair *pubKey) { uint8_t compressedEcKey[33] = {0}; compressedEcKey[0] = 0x02; memcpy(compressedEcKey + 1, xcoordBuf, 32); @@ -249,7 +249,7 @@ static int LoadMobileEphemeralKey(uint8_t *xcoordBuf, mbedtls_ecp_keypair *pubKe static int internalVasDecrypt(uint8_t *cipherText, size_t cipherTextLen, uint8_t *sharedSecret, uint8_t *ansiSharedInfo, size_t ansiSharedInfoLen, - uint8_t *gcmAad, size_t gcmAadLen, uint8_t *out, size_t *outLen) { + const uint8_t *gcmAad, size_t gcmAadLen, uint8_t *out, size_t *outLen) { uint8_t key[32] = {0}; if (ansi_x963_sha256(sharedSecret, 32, ansiSharedInfo, ansiSharedInfoLen, sizeof(key), key)) { PrintAndLogEx(FAILED, "ANSI X9.63 key derivation failed"); diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index c322f6406..5462f6eed 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -2646,7 +2646,7 @@ static int CmdEMVReader(const char *Cmd) { res = EMVSelectPSE(channel, true, true, 2, buf, sizeof(buf), &len, &sw); // search PSE / PPSE - res = EMVSearchPSE(channel, false, true, psenum, false, tlvSelect); + res |= EMVSearchPSE(channel, false, true, psenum, false, tlvSelect); if (res) { // EMV SEARCH with AID list DropFieldEx(channel); diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 3e924a1c7..a91f74179 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -606,7 +606,7 @@ static void show_help(bool showFullHelp, char *exec_name) { } } -static int flash_pm3(char *serial_port_name, uint8_t num_files, char *filenames[FLASH_MAX_FILES], bool can_write_bl, bool force) { +static int flash_pm3(char *serial_port_name, uint8_t num_files, const char *filenames[FLASH_MAX_FILES], bool can_write_bl, bool force) { int ret = PM3_EUNDEF; flash_file_t files[FLASH_MAX_FILES]; @@ -756,7 +756,7 @@ int main(int argc, char *argv[]) { bool flash_force = false; bool debug_mode_forced = false; int flash_num_files = 0; - char *flash_filenames[FLASH_MAX_FILES]; + const char *flash_filenames[FLASH_MAX_FILES]; // color management: // 1. default = no color diff --git a/common/lfdemod.c b/common/lfdemod.c index f7f734eb4..9ed6f4e28 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -1025,7 +1025,7 @@ int DetectNRZClock(uint8_t *dest, size_t size, int clock, size_t *clockStartIdx) } uint8_t best = 0; - for (int m = ARRAYLEN(peaksdet); m > 0; m--) { + for (int m = ARRAYLEN(peaksdet) - 1; m >= 0; m--) { if ((peaksdet[m] >= (peaksdet[best] - 1)) && (peaksdet[m] <= peaksdet[best] + 1) && lowestTransition) { if (clk[m] > (lowestTransition - (clk[m] / 8)) && clk[m] < (lowestTransition + (clk[m] / 8))) { best = m; diff --git a/tools/hitag2crack/crack3/ht2crack3.c b/tools/hitag2crack/crack3/ht2crack3.c index a81d33d40..f50ea6af4 100644 --- a/tools/hitag2crack/crack3/ht2crack3.c +++ b/tools/hitag2crack/crack3/ht2crack3.c @@ -386,13 +386,14 @@ int main(int argc, char *argv[]) { // debug mode only runs one thread from klowerstart tdata[0].klowerstart = klowerstart; crack(tdata); - } else { - // run full threaded mode - for (i = 0; i < NUM_THREADS; i++) { - if (pthread_create(&(threads[i]), NULL, crack, (void *)(tdata + i))) { - printf("cannot start thread %d\n", i); - exit(1); - } + return 0; + } + + // run full threaded mode + for (i = 0; i < NUM_THREADS; i++) { + if (pthread_create(&(threads[i]), NULL, crack, (void *)(tdata + i))) { + printf("cannot start thread %d\n", i); + exit(1); } } diff --git a/tools/mf_nonce_brute/mf_nonce_brute.c b/tools/mf_nonce_brute/mf_nonce_brute.c index 161f1c749..2491c502d 100644 --- a/tools/mf_nonce_brute/mf_nonce_brute.c +++ b/tools/mf_nonce_brute/mf_nonce_brute.c @@ -533,7 +533,7 @@ static int usage(void) { return 1; } -int main(int argc, char *argv[]) { +int main(int argc, const char *argv[]) { printf("\nMifare classic nested auth key recovery\n\n"); if (argc < 9) return usage(); diff --git a/tools/mf_nonce_brute/mf_trace_brute.c b/tools/mf_nonce_brute/mf_trace_brute.c index 1d8a7c6fb..c416c006f 100644 --- a/tools/mf_nonce_brute/mf_trace_brute.c +++ b/tools/mf_nonce_brute/mf_trace_brute.c @@ -247,7 +247,7 @@ static int usage(void) { return 1; } -int main(int argc, char *argv[]) { +int main(int argc, const char *argv[]) { printf("Mifare classic nested auth key recovery Phase 2\n"); if (argc < 3) return usage(); From 27edaa6d0cd8d3446688159a34524005e7519df6 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 7 Sep 2023 22:48:55 +0200 Subject: [PATCH 0455/1034] forgot fct declaration --- armsrc/Standalone/hf_cardhopper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/Standalone/hf_cardhopper.c b/armsrc/Standalone/hf_cardhopper.c index 0a154f66b..90742f4cf 100644 --- a/armsrc/Standalone/hf_cardhopper.c +++ b/armsrc/Standalone/hf_cardhopper.c @@ -54,7 +54,7 @@ static void select_card(void); static void become_card(void); static void prepare_emulation(uint8_t *, uint16_t *, uint8_t *, packet_t *); static void cook_ats(packet_t *, uint8_t, uint8_t); -static bool try_use_canned_response(uint8_t *, int, tag_response_info_t *); +static bool try_use_canned_response(const uint8_t *, int, tag_response_info_t *); static void reply_with_packet(packet_t *); static void read_packet(packet_t *); From cf16e7124437e49ddddc3b52f27029ba4fc038d8 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 7 Sep 2023 23:44:31 +0200 Subject: [PATCH 0456/1034] Fix cmake, stringop-overflow false positives are not specific to MINGW --- client/CMakeLists.txt | 22 +++++++++++----------- client/experimental_lib/CMakeLists.txt | 22 +++++++++++----------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 5090dab63..eaee2f0f0 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -656,21 +656,21 @@ if (MINGW) set(CMAKE_C_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_CXX_FLAGS}") - # GCC 10 has issues with false positives on stringop-overflow, - # let's disable them for now (cf https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92955, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94335) - # beware these flags didn't exist for GCC < 7 - if(CMAKE_COMPILER_IS_GNUCXX) - execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) - if (GCC_VERSION VERSION_GREATER 10.0 OR GCC_VERSION VERSION_EQUAL 10.0) - set(CMAKE_C_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_C_FLAGS}") - set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") - endif() - endif(CMAKE_COMPILER_IS_GNUCXX) - # link Winsock2 set(ADDITIONAL_LNK ws2_32 ${ADDITIONAL_LNK}) endif (MINGW) +# GCC 10 has issues with false positives on stringop-overflow, +# let's disable them for now (cf https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92955, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94335) +# beware these flags didn't exist for GCC < 7 +if(CMAKE_COMPILER_IS_GNUCXX) + execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) + if (GCC_VERSION VERSION_GREATER 10.0 OR GCC_VERSION VERSION_EQUAL 10.0) + set(CMAKE_C_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_C_FLAGS}") + set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") + endif() +endif(CMAKE_COMPILER_IS_GNUCXX) + target_include_directories(proxmark3 PRIVATE ${PM3_ROOT}/common ${PM3_ROOT}/common_fpga diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index f08ccdd6c..a5caeb014 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -656,19 +656,19 @@ if (MINGW) set(CMAKE_C_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_CXX_FLAGS}") - # GCC 10 has issues with false positives on stringop-overflow, - # let's disable them for now (cf https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92955, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94335) - # beware these flags didn't exist for GCC < 7 - if(CMAKE_COMPILER_IS_GNUCXX) - execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) - if (GCC_VERSION VERSION_GREATER 10.0 OR GCC_VERSION VERSION_EQUAL 10.0) - set(CMAKE_C_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_C_FLAGS}") - set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") - endif() - endif(CMAKE_COMPILER_IS_GNUCXX) - endif (MINGW) +# GCC 10 has issues with false positives on stringop-overflow, +# let's disable them for now (cf https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92955, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94335) +# beware these flags didn't exist for GCC < 7 +if(CMAKE_COMPILER_IS_GNUCXX) + execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) + if (GCC_VERSION VERSION_GREATER 10.0 OR GCC_VERSION VERSION_EQUAL 10.0) + set(CMAKE_C_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_C_FLAGS}") + set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") + endif() +endif(CMAKE_COMPILER_IS_GNUCXX) + target_include_directories(pm3rrg_rdv4 PRIVATE ${PM3_ROOT}/common ${PM3_ROOT}/common_fpga From 87bdbef851b7aa8398831a0987b28a68fc2e717c Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 8 Sep 2023 11:06:18 +0200 Subject: [PATCH 0457/1034] pm3_tests: timings of slow executions and faster aes bruteforce --- tools/pm3_tests.sh | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 0c34360c6..479861b6d 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -196,11 +196,18 @@ function CheckExecute() { return $RESULT fi + start=$(date +%s) + TIMEINFO="" for I in $RETRY do RES=$(eval "$2") + end=$(date +%s) + delta=$(expr $end - $start) + if [ $delta -gt 2 ]; then + TIMEINFO=" ($delta s)" + fi if echo "$RES" | grep -E -q "$3"; then - echo -e "[ ${C_GREEN}OK${C_NC} ] ${C_OK}" + echo -e "[ ${C_GREEN}OK${C_NC} ] ${C_OK} $TIMEINFO" return $RESULT fi if [ ! $I == "e" ]; then echo "retry $I"; fi @@ -208,11 +215,11 @@ function CheckExecute() { RESULT=1 if $IGNOREFAILURE; then - echo -e "[ ${C_YELLOW}IGNORED${C_NC} ]" + echo -e "[ ${C_YELLOW}IGNORED${C_NC} ] $TIMEINFO" return 0 fi - echo -e "[ ${C_RED}FAIL${C_NC} ] ${C_FAIL}" + echo -e "[ ${C_RED}FAIL${C_NC} ] ${C_FAIL} $TIMEINFO" echo -e "Execution trace:\n$RES" return $RESULT } @@ -298,7 +305,7 @@ while true; do if $TESTALL || $TESTMFDAESBRUTE; then echo -e "\n${C_BLUE}Testing mfd_aes_brute:${C_NC} ${MFDASEBRUTEBIN:=./tools/mfd_aes_brute/mfd_aes_brute}" if ! CheckFileExist "mfd_aes_brute exists" "$MFDASEBRUTEBIN"; then break; fi - if ! CheckExecute "mfd_aes_brute test 1/2" "$MFDASEBRUTEBIN 1605394800 bb6aea729414a5b1eff7b16328ce37fd 82f5f498dbc29f7570102397a2e5ef2b6dc14a864f665b3c54d11765af81e95c" "key.................... .*261C07A23F2BC8262F69F10A5BDF3764"; then break; fi + if ! CheckExecute "mfd_aes_brute test 1/2" "$MFDASEBRUTEBIN 1629394800 bb6aea729414a5b1eff7b16328ce37fd 82f5f498dbc29f7570102397a2e5ef2b6dc14a864f665b3c54d11765af81e95c" "key.................... .*261C07A23F2BC8262F69F10A5BDF3764"; then break; fi if ! CheckExecute slow "mfd_aes_brute test 2/2" "$MFDASEBRUTEBIN 1546300800 3fda933e2953ca5e6cfbbf95d1b51ddf 97fe4b5de24188458d102959b888938c988e96fb98469ce7426f50f108eaa583" "key.................... .*E757178E13516A4F3171BC6EA85E165A"; then break; fi fi @@ -306,7 +313,7 @@ while true; do echo -e "\n${C_BLUE}Testing CryptoRF sma:${C_NC} ${CRYPTRFBRUTEBIN:=./tools/cryptorf/sma} ${CRYPTRF_MULTI_BRUTEBIN:=./tools/cryptorf/sma_multi}" if ! CheckFileExist "sma exists" "$CRYPTRFBRUTEBIN"; then break; fi if ! CheckFileExist "sma_multi exists" "$CRYPTRF_MULTI_BRUTEBIN"; then break; fi - if ! CheckExecute slow "sma test" "$CRYPTRFBRUTEBIN ffffffffffffffff 1234567812345678 88c9d4466a501a87 dec2ee1b1c9276e9" "key found \[.*4f794a463ff81d81.*\]"; then break; fi +# if ! CheckExecute slow "sma test" "$CRYPTRFBRUTEBIN ffffffffffffffff 1234567812345678 88c9d4466a501a87 dec2ee1b1c9276e9" "key found \[.*4f794a463ff81d81.*\]"; then break; fi if ! CheckExecute slow "sma_multi test" "$CRYPTRF_MULTI_BRUTEBIN ffffffffffffffff 1234567812345678 88c9d4466a501a87 dec2ee1b1c9276e9" "key found \[.*4f794a463ff81d81.*\]"; then break; fi fi # hitag2crack not yet part of "all" From 7b5c35008903b5afa0faff74cc77724f5499f8fc Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 8 Sep 2023 15:46:49 +0200 Subject: [PATCH 0458/1034] fix Tumbleweed docker --- docker/opensuse-tumbleweed/Dockerfile | 3 +-- docker/opensuse-tumbleweed/README.md | 5 +++++ docker/opensuse-tumbleweed/run_tests.sh | 5 +++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docker/opensuse-tumbleweed/Dockerfile b/docker/opensuse-tumbleweed/Dockerfile index 04aaff64c..8a18c7d43 100644 --- a/docker/opensuse-tumbleweed/Dockerfile +++ b/docker/opensuse-tumbleweed/Dockerfile @@ -8,8 +8,7 @@ RUN zypper --non-interactive install --no-recommends shadow sudo git patterns-de # zypper --gpg-auto-import-keys refresh && \ # zypper --non-interactive install cross-arm-none-eabi-gcc12 cross-arm-none-eabi-newlib -RUN zypper --non-interactive install cmake python3 python3-pip && \ - python3 -m pip install ansicolors sslcrypto +RUN zypper --non-interactive install cmake python311 python311-pip python311-virtualenv RUN zypper --non-interactive install ocl-icd-devel diff --git a/docker/opensuse-tumbleweed/README.md b/docker/opensuse-tumbleweed/README.md index bd55e0c9d..282d3f4f7 100644 --- a/docker/opensuse-tumbleweed/README.md +++ b/docker/opensuse-tumbleweed/README.md @@ -16,5 +16,10 @@ Or if you want to run single test, ``` sudo zypper refresh && sudo zypper --non-interactive update make clean; make -j +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto tools/pm3_tests.sh --long +deactivate ``` diff --git a/docker/opensuse-tumbleweed/run_tests.sh b/docker/opensuse-tumbleweed/run_tests.sh index 9002131e9..bb613ffc0 100755 --- a/docker/opensuse-tumbleweed/run_tests.sh +++ b/docker/opensuse-tumbleweed/run_tests.sh @@ -5,4 +5,9 @@ # docker/opensuse-tumbleweed/run_tests.sh; sudo zypper refresh && sudo zypper --non-interactive update +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto tools/release_tests.sh +deactivate From 032e4b832eb9bf836d2c8fc9036d54791a70f284 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 8 Sep 2023 20:32:23 +0200 Subject: [PATCH 0459/1034] spurious exec mode on .c file --- armsrc/Standalone/hf_14bsniff.c | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 armsrc/Standalone/hf_14bsniff.c diff --git a/armsrc/Standalone/hf_14bsniff.c b/armsrc/Standalone/hf_14bsniff.c old mode 100755 new mode 100644 From 5c1b802e71841668aa2ebab3d400f7b6cf75a2d0 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 8 Sep 2023 20:45:44 +0200 Subject: [PATCH 0460/1034] standalone doc --- armsrc/Standalone/hf_14asniff.c | 3 ++- armsrc/Standalone/hf_14bsniff.c | 15 +++++++++++++++ armsrc/Standalone/hf_15sniff.c | 3 ++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/armsrc/Standalone/hf_14asniff.c b/armsrc/Standalone/hf_14asniff.c index 041a0b6f0..dc0c0905c 100644 --- a/armsrc/Standalone/hf_14asniff.c +++ b/armsrc/Standalone/hf_14asniff.c @@ -43,7 +43,7 @@ * 1. mem spiffs dump -s hf_14asniff.trace -d hf_14asniff.trace * Copies trace data file from flash to your PC. * - * 2. trace load hf_14asniff.trace + * 2. trace load -f hf_14asniff.trace * Loads trace data from a file into PC-side buffers. * * 3. For ISO14a: trace list -t 14a -1 @@ -55,6 +55,7 @@ * the lab connected to PM3 client before taking it into the field. * * To delete the trace data from flash: + * mem spiffs remove -f hf_14asniff.trace * * Caveats / notes: * - Trace buffer will be cleared on starting stand-alone mode. Data in flash diff --git a/armsrc/Standalone/hf_14bsniff.c b/armsrc/Standalone/hf_14bsniff.c index d342afa93..d3adaeb23 100644 --- a/armsrc/Standalone/hf_14bsniff.c +++ b/armsrc/Standalone/hf_14bsniff.c @@ -14,9 +14,24 @@ * - LED3: sniffed reader command, turns off when finished sniffing tag command * - LED4: unmounting/sync'ing flash (normally < 100ms) * + * To retrieve trace data from flash: + * + * 1. mem spiffs dump -s hf_14bsniff.trace -d hf_14bsniff.trace + * Copies trace data file from flash to your PC. + * + * 2. trace load -f hf_14bsniff.trace + * Loads trace data from a file into PC-side buffers. + * + * 3. For ISO14a: trace list -t 14b -1 + * + * Lists trace data from buffer without requesting it from PM3. + * * This module emits debug strings during normal operation -- so try it out in * the lab connected to PM3 client before taking it into the field. * + * To delete the trace data from flash: + * mem spiffs remove -f hf_14bsniff.trace + * * Caveats / notes: * - Trace buffer will be cleared on starting stand-alone mode. * - This module will terminate if the trace buffer is full. diff --git a/armsrc/Standalone/hf_15sniff.c b/armsrc/Standalone/hf_15sniff.c index 24d068275..ad1d3f8b6 100644 --- a/armsrc/Standalone/hf_15sniff.c +++ b/armsrc/Standalone/hf_15sniff.c @@ -43,7 +43,7 @@ * 1. mem spiffs dump -s hf_15693sniff.trace -d hf_15693sniff.trace * Copies trace data file from flash to your PC. * - * 2. trace load hf_15693sniff.trace + * 2. trace load -f hf_15693sniff.trace * Loads trace data from a file into PC-side buffers. * * 3. For ISO15693: trace list -t 15 -1 @@ -54,6 +54,7 @@ * the lab connected to PM3 client before taking it into the field. * * To delete the trace data from flash: + * mem spiffs remove -f hf_15693sniff.trace * * Caveats / notes: * - Trace buffer will be cleared on starting stand-alone mode. Data in flash From 5a9819ad66265f79c10a1a2e5cf6669891c075d8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 9 Sep 2023 09:35:08 +0200 Subject: [PATCH 0461/1034] text --- CHANGELOG.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6854aef6c..5a0eb1497 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,18 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + +## [Raccoon][2003-09-09] + - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) + - Fix CPPChecker warnings (@doegox) + - Fix TubmleWeed docker setup (@doegox) + - Added default keys (@ernestask) (@craftbyte) + - Fixed MFU authentication to send PACK correctly (@shallax) + - Fixed list output when line has 16 bytes (@piru) + - Changed AIDlist w new entries (@kormax) - Swapped to OE1 for Shallow modulation on RDV4. Thanks to @gentilkiwi for testing (@d18c7db) - Changed iClass SIO and Legacy credential detection to be more reliable (@nvx) + - Add hf_cardhopper standalone mode for long-distance relay attacks (@startrekdude) - Added `hf iclass esetblk` - set iClass emulator memory block data (@nvx) - Added cryptorf regressiontests (@iceman1001) - Fixed `cryptorf/sma_multi` - local state used in multithread (@iceman1001) @@ -47,8 +57,6 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `hf_mf_luxeo_dump.lua` - now have list of keys to iterate (@iceman1001) - Fixed the timeout of TCP connections (@wh201906) - Changed the connection timeout configurable (@wh201906) - - Add hf_cardhopper standalone mode for long-distance relay attacks (@startrekdude) - - Fix MFU authentication to send PACK correctly (@shallax) ## [Seven.4.16717][2023-06-25] - Change `hf 14a info` - now identifes QL88 tags (@iceman1001) From 6ca0ce704afc400a9682f0ce7daff24c6857252c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 9 Sep 2023 11:00:00 +0200 Subject: [PATCH 0462/1034] Release v4.17140 - Raccoon --- Makefile.defs | 4 ++-- armsrc/Makefile | 2 +- bootrom/Makefile | 2 +- client/CMakeLists.txt | 4 ++-- client/Makefile | 4 ++-- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 18 ++++++++-------- client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/experimental_lib/CMakeLists.txt | 2 +- client/src/proxmark3.c | 2 +- common/default_version_pm3.c | 29 +++++++------------------- common_arm/Makefile.common | 2 +- 18 files changed, 35 insertions(+), 50 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index 76409a37d..874440a47 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -112,8 +112,8 @@ ifeq ($(DEBUG),1) DEFCFLAGS = -g -O0 -fstrict-aliasing -pipe DEFLDFLAGS = else - DEFCXXFLAGS = -Wall -Werror -O3 -pipe - DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe + DEFCXXFLAGS = -Wall -O3 -pipe + DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe DEFLDFLAGS = endif diff --git a/armsrc/Makefile b/armsrc/Makefile index d6ab2bfc4..407b0b174 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -184,7 +184,7 @@ showinfo: # version_pm3.c should be checked on every time fullimage.stage1.elf should be remade version_pm3.c: default_version_pm3.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) .FORCE $(info [-] CHECK $@) - $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ + $(Q)$(CP) $< $@ fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR) $(info [-] GEN $@) diff --git a/bootrom/Makefile b/bootrom/Makefile index b6825530d..86c785cd1 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -56,7 +56,7 @@ OBJS = $(OBJDIR)/bootrom.s19 # version_pm3.c should be checked on every compilation version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ + $(Q)$(CP) $< $@ all: showinfo $(OBJS) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index eaee2f0f0..a71a2585d 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -397,7 +397,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) @@ -633,7 +633,7 @@ add_executable(proxmark3 ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) +target_compile_options(proxmark3 PUBLIC -Wall -O3) if (EMBED_READLINE) if (NOT SKIPREADLINE EQUAL 1) add_dependencies(proxmark3 ncurses readline) diff --git a/client/Makefile b/client/Makefile index b63fdf329..0a0ca3c1b 100644 --- a/client/Makefile +++ b/client/Makefile @@ -415,7 +415,7 @@ endif PM3CFLAGS += -DHAVE_SNPRINTF -CXXFLAGS ?= -Wall -Werror -O3 +CXXFLAGS ?= -Wall -O3 CXXFLAGS += $(MYDEFS) $(MYCXXFLAGS) $(MYINCLUDES) PM3CXXFLAGS = $(CXXFLAGS) @@ -921,7 +921,7 @@ src/pm3_pywrap.c: pm3.i # version_pm3.c should be checked on every compilation src/version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ + $(Q)$(CP) $< $@ # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index c946c0682..8c524c170 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -19,7 +19,7 @@ target_link_libraries(pm3rrg_rdv4_amiibo PRIVATE m pm3rrg_rdv4_mbedtls) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_amiibo PRIVATE amiitool diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index fccae33b7..a85cc2374 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -9,5 +9,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index ec545e2a8..468ee4ef2 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -32,7 +32,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -47,7 +47,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -62,7 +62,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -77,7 +77,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -92,7 +92,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -116,7 +116,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM64_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_neon PRIVATE @@ -134,7 +134,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM32_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_neon BEFORE PRIVATE -mfpu=neon) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -155,7 +155,7 @@ add_library(pm3rrg_rdv4_hardnested STATIC hardnested/hardnested_bruteforce.c $ ${SIMD_TARGETS}) -target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested PRIVATE ../../common diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index c91a47047..42c701d5e 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -14,5 +14,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 12870342e..5cf33d724 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -52,5 +52,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 58b9aae23..35ee2c967 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -47,5 +47,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) target_include_directories(pm3rrg_rdv4_mbedtls INTERFACE ../../common/mbedtls) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index d7e3cfd8a..1040730f1 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index 5a6abda25..c74618149 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index d2d6a5b2a..721873066 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index a5caeb014..216f13362 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -397,7 +397,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index a91f74179..6abc00b8e 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -42,7 +42,7 @@ static int mainret = PM3_ESOFT; #ifndef LIBPM3 #define BANNERMSG1 "" #define BANNERMSG2 " [ :coffee: ]" -#define BANNERMSG3 "" +#define BANNERMSG3 "Release v4.17140 - Raccoon" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common/default_version_pm3.c b/common/default_version_pm3.c index d93a7ef15..376b85de6 100644 --- a/common/default_version_pm3.c +++ b/common/default_version_pm3.c @@ -1,20 +1,5 @@ -//----------------------------------------------------------------------------- -// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// See LICENSE.txt for the text of the license. -//----------------------------------------------------------------------------- #include "common.h" -/* This is the default version_pm3.c file that Makefile.common falls back to if sh is not available */ +/* Generated file, do not edit */ #ifndef ON_DEVICE #define SECTVERSINFO #else @@ -23,10 +8,10 @@ const struct version_information_t SECTVERSINFO g_version_information = { VERSION_INFORMATION_MAGIC, - 1, /* version 1 */ - 0, /* version information not present */ - 2, /* cleanliness couldn't be determined */ - "Iceman/master/unknown", - "1970-01-01 00:00:00", - "no sha256" + 1, + 1, + 2, + "Iceman/master/v4.17140", + "2023-09-09 11:00:00", + "5901f2664" }; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 18d931b46..3c01c9a2e 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -49,7 +49,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits From f9877f79de6ebe6ef57fcb3a52d31e2858d9276f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 9 Sep 2023 11:00:00 +0200 Subject: [PATCH 0463/1034] Revert "Release v4.17140 - Raccoon" This reverts commit 6ca0ce704afc400a9682f0ce7daff24c6857252c. --- Makefile.defs | 4 ++-- armsrc/Makefile | 2 +- bootrom/Makefile | 2 +- client/CMakeLists.txt | 4 ++-- client/Makefile | 4 ++-- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 18 ++++++++-------- client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/experimental_lib/CMakeLists.txt | 2 +- client/src/proxmark3.c | 2 +- common/default_version_pm3.c | 29 +++++++++++++++++++------- common_arm/Makefile.common | 2 +- 18 files changed, 50 insertions(+), 35 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index 874440a47..76409a37d 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -112,8 +112,8 @@ ifeq ($(DEBUG),1) DEFCFLAGS = -g -O0 -fstrict-aliasing -pipe DEFLDFLAGS = else - DEFCXXFLAGS = -Wall -O3 -pipe - DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe + DEFCXXFLAGS = -Wall -Werror -O3 -pipe + DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe DEFLDFLAGS = endif diff --git a/armsrc/Makefile b/armsrc/Makefile index 407b0b174..d6ab2bfc4 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -184,7 +184,7 @@ showinfo: # version_pm3.c should be checked on every time fullimage.stage1.elf should be remade version_pm3.c: default_version_pm3.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) .FORCE $(info [-] CHECK $@) - $(Q)$(CP) $< $@ + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR) $(info [-] GEN $@) diff --git a/bootrom/Makefile b/bootrom/Makefile index 86c785cd1..b6825530d 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -56,7 +56,7 @@ OBJS = $(OBJDIR)/bootrom.s19 # version_pm3.c should be checked on every compilation version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(CP) $< $@ + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ all: showinfo $(OBJS) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index a71a2585d..eaee2f0f0 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -397,7 +397,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) @@ -633,7 +633,7 @@ add_executable(proxmark3 ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -O3) +target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) if (EMBED_READLINE) if (NOT SKIPREADLINE EQUAL 1) add_dependencies(proxmark3 ncurses readline) diff --git a/client/Makefile b/client/Makefile index 0a0ca3c1b..b63fdf329 100644 --- a/client/Makefile +++ b/client/Makefile @@ -415,7 +415,7 @@ endif PM3CFLAGS += -DHAVE_SNPRINTF -CXXFLAGS ?= -Wall -O3 +CXXFLAGS ?= -Wall -Werror -O3 CXXFLAGS += $(MYDEFS) $(MYCXXFLAGS) $(MYINCLUDES) PM3CXXFLAGS = $(CXXFLAGS) @@ -921,7 +921,7 @@ src/pm3_pywrap.c: pm3.i # version_pm3.c should be checked on every compilation src/version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(CP) $< $@ + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index 8c524c170..c946c0682 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -19,7 +19,7 @@ target_link_libraries(pm3rrg_rdv4_amiibo PRIVATE m pm3rrg_rdv4_mbedtls) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_amiibo PRIVATE amiitool diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index a85cc2374..fccae33b7 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -9,5 +9,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index 468ee4ef2..ec545e2a8 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -32,7 +32,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -47,7 +47,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -62,7 +62,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -77,7 +77,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -92,7 +92,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -116,7 +116,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM64_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_neon PRIVATE @@ -134,7 +134,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM32_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_neon BEFORE PRIVATE -mfpu=neon) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -155,7 +155,7 @@ add_library(pm3rrg_rdv4_hardnested STATIC hardnested/hardnested_bruteforce.c $ ${SIMD_TARGETS}) -target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested PRIVATE ../../common diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index 42c701d5e..c91a47047 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -14,5 +14,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 5cf33d724..12870342e 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -52,5 +52,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 35ee2c967..58b9aae23 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -47,5 +47,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) target_include_directories(pm3rrg_rdv4_mbedtls INTERFACE ../../common/mbedtls) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index 1040730f1..d7e3cfd8a 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index c74618149..5a6abda25 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index 721873066..d2d6a5b2a 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 216f13362..a5caeb014 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -397,7 +397,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 6abc00b8e..a91f74179 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -42,7 +42,7 @@ static int mainret = PM3_ESOFT; #ifndef LIBPM3 #define BANNERMSG1 "" #define BANNERMSG2 " [ :coffee: ]" -#define BANNERMSG3 "Release v4.17140 - Raccoon" +#define BANNERMSG3 "" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common/default_version_pm3.c b/common/default_version_pm3.c index 376b85de6..d93a7ef15 100644 --- a/common/default_version_pm3.c +++ b/common/default_version_pm3.c @@ -1,5 +1,20 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- #include "common.h" -/* Generated file, do not edit */ +/* This is the default version_pm3.c file that Makefile.common falls back to if sh is not available */ #ifndef ON_DEVICE #define SECTVERSINFO #else @@ -8,10 +23,10 @@ const struct version_information_t SECTVERSINFO g_version_information = { VERSION_INFORMATION_MAGIC, - 1, - 1, - 2, - "Iceman/master/v4.17140", - "2023-09-09 11:00:00", - "5901f2664" + 1, /* version 1 */ + 0, /* version information not present */ + 2, /* cleanliness couldn't be determined */ + "Iceman/master/unknown", + "1970-01-01 00:00:00", + "no sha256" }; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 3c01c9a2e..18d931b46 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -49,7 +49,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits From 8c72ef42e4b27066e886a99ed2eca35cf2ffe6ab Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 9 Sep 2023 11:02:14 +0200 Subject: [PATCH 0464/1034] text update release version --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a0eb1497..201f5166a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac ## [unreleased][unreleased] -## [Raccoon][2003-09-09] +## [Raccoon.4.17140][2003-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) - Fix CPPChecker warnings (@doegox) - Fix TubmleWeed docker setup (@doegox) From cee33f7fe2d93702daac2c84d84ec80c1c0ccefd Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 9 Sep 2023 11:20:32 +0200 Subject: [PATCH 0465/1034] wrong date --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 201f5166a..1803239cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac ## [unreleased][unreleased] -## [Raccoon.4.17140][2003-09-09] +## [Raccoon.4.17140][2023-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) - Fix CPPChecker warnings (@doegox) - Fix TubmleWeed docker setup (@doegox) From b59fad842b46464a001086b172953e747be89555 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 10 Sep 2023 10:25:51 +0200 Subject: [PATCH 0466/1034] reworked the decimal to hexadecimal converter. It now works. Thanks to @ATK for pointing out it was broken --- client/lualibs/utils.lua | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/client/lualibs/utils.lua b/client/lualibs/utils.lua index 00103d6b4..03862ac29 100644 --- a/client/lualibs/utils.lua +++ b/client/lualibs/utils.lua @@ -262,14 +262,19 @@ local Utils = -- -- Converts DECIMAL to HEX - ConvertDecToHex = function(IN) - local B,K,OUT,I,D = 16, "0123456789ABCDEF", "", 0 - while IN > 0 do - I = I+1 - IN, D = math.floor(IN/B), math.modf(IN, B) + 1 - OUT = string.sub(K, D, D)..OUT + ConvertDecToHex = function(decimal) + if decimal == 0 then + return "0" end - return OUT + + local B,DIGITS,hex = 16, "0123456789ABCDEF", "" + + while decimal > 0 do + local remainder = math.fmod(decimal, B) + hex = string.sub(DIGITS, remainder + 1, remainder + 1) .. hex + decimal = math.floor(decimal / B) + end + return hex end, --- -- Convert Byte array to string of hex From b57f90b524ed7b69fd7e782ed84970dde51e5fea Mon Sep 17 00:00:00 2001 From: Antiklesys Date: Sun, 10 Sep 2023 19:09:18 +0800 Subject: [PATCH 0467/1034] Update hf_mf_uidbruteforce.lua Fixed issue with how the command is run, old version is invalid as it is missing the -t --- client/luascripts/hf_mf_uidbruteforce.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/luascripts/hf_mf_uidbruteforce.lua b/client/luascripts/hf_mf_uidbruteforce.lua index 4835ba03b..88dca4273 100644 --- a/client/luascripts/hf_mf_uidbruteforce.lua +++ b/client/luascripts/hf_mf_uidbruteforce.lua @@ -124,7 +124,7 @@ local function main(args) local c = string.format( command, n ) print('Running: "'..c..'"') core.console(c) - core.console('msleep '..timeout); + core.console('msleep -t'..timeout); core.console('hw ping') end From 2fb281bdc10094a109135e096ea4a983f5073e88 Mon Sep 17 00:00:00 2001 From: Antiklesys Date: Sun, 10 Sep 2023 19:11:21 +0800 Subject: [PATCH 0468/1034] Update iclass_default_keys.dic --- client/dictionaries/iclass_default_keys.dic | 1 - 1 file changed, 1 deletion(-) diff --git a/client/dictionaries/iclass_default_keys.dic b/client/dictionaries/iclass_default_keys.dic index aea6de36a..c717cd88f 100644 --- a/client/dictionaries/iclass_default_keys.dic +++ b/client/dictionaries/iclass_default_keys.dic @@ -18,7 +18,6 @@ E033CA419AEE43F9 # iCopy-x DRM keys 2020666666668888 # iCL tags 6666202066668888 # iCS tags reversed from the SOs -AFA785A7DAB33378 # from https://youtu.be/EH7dctOPxBA?t=805 # # default picopass KD / Page 0 / Book 1 FDCB5A52EA8F3090 From 186308cb4ad6ac5887cddc430c838ae1affb7ebe Mon Sep 17 00:00:00 2001 From: nvx Date: Sun, 10 Sep 2023 22:56:46 +1000 Subject: [PATCH 0469/1034] Add `hf iclass creditepurse` command to allow crediting the epurse debit value. --- CHANGELOG.md | 1 + armsrc/appmain.c | 4 + armsrc/iclass.c | 157 +++++++++++++++++++++++++++++++- armsrc/iclass.h | 1 + client/src/cmdhficlass.c | 124 +++++++++++++++++++++++++ client/src/pm3line_vocabulary.h | 1 + doc/commands.json | 26 +++++- doc/commands.md | 1 + include/iclass_cmd.h | 6 ++ include/pm3_cmd.h | 3 +- 10 files changed, 318 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1803239cb..d85eb7e2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `hf iclass creditepurse` command to allow crediting the epurse debit value (@nvx) ## [Raccoon.4.17140][2023-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 900cb6517..42d551d9b 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -1940,6 +1940,10 @@ static void PacketReceived(PacketCommandNG *packet) { iClass_Restore((iclass_restore_req_t *)packet->data.asBytes); break; } + case CMD_HF_ICLASS_CREDIT_EPURSE: { + iclass_credit_epurse((iclass_credit_epurse_t *)packet->data.asBytes); + break; + } #endif #ifdef WITH_HFSNIFF diff --git a/armsrc/iclass.c b/armsrc/iclass.c index 5a68a8207..953cfaa6f 100644 --- a/armsrc/iclass.c +++ b/armsrc/iclass.c @@ -1902,13 +1902,13 @@ void iClass_WriteBlock(uint8_t *msg) { // verify write uint8_t all_ff[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; - if (payload->req.blockno == 2) { + if (pagemap == PICOPASS_SECURE_PAGEMODE && payload->req.blockno == 2) { // check response. e-purse update swaps first and second half if (memcmp(payload->data + 4, resp, 4) || memcmp(payload->data, resp + 4, 4)) { res = false; goto out; } - } else if (payload->req.blockno == 3 || payload->req.blockno == 4) { + } else if (pagemap == PICOPASS_SECURE_PAGEMODE && (payload->req.blockno == 3 || payload->req.blockno == 4)) { // check response. Key updates always return 0xffffffffffffffff if (memcmp(all_ff, resp, 8)) { res = false; @@ -1929,6 +1929,159 @@ out: reply_ng(CMD_HF_ICLASS_WRITEBL, PM3_SUCCESS, (uint8_t *)&res, sizeof(uint8_t)); } +void iclass_credit_epurse(iclass_credit_epurse_t *payload) { + + LED_A_ON(); + + bool shallow_mod = payload->req.shallow_mod; + + Iso15693InitReader(); + + // select tag. + uint32_t eof_time = 0; + picopass_hdr_t hdr = {0}; + uint8_t res = select_iclass_tag(&hdr, payload->req.use_credit_key, &eof_time, shallow_mod); + if (res == false) { + goto out; + } + + uint32_t start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER; + + uint8_t mac[4] = {0}; + + // authenticate + if (payload->req.do_auth) { + + res = authenticate_iclass_tag(&payload->req, &hdr, &start_time, &eof_time, mac); + if (res == false) { + goto out; + } + } + + start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER; + + uint8_t cmd_read[] = {ICLASS_CMD_READ_OR_IDENTIFY, payload->req.blockno, 0x00, 0x00}; + AddCrc(cmd_read + 1, 1); + + uint8_t epurse[10]; + res = iclass_send_cmd_with_retries(cmd_read, sizeof(cmd_read), epurse, sizeof(epurse), 10, 3, &start_time, ICLASS_READER_TIMEOUT_OTHERS, &eof_time, shallow_mod); + if (!res) { + switch_off(); + if (payload->req.send_reply) + reply_ng(CMD_HF_ICLASS_CREDIT_EPURSE, PM3_ETIMEOUT, (uint8_t *)&res, sizeof(uint8_t)); + return; + } + + uint8_t write[14] = { 0x80 | ICLASS_CMD_UPDATE, payload->req.blockno }; + uint8_t write_len = 14; + + uint8_t epurse_offset = 0; + const uint8_t empty_epurse[] = {0xff, 0xff, 0xff, 0xff}; + if (!memcmp(epurse, empty_epurse, 4)) { + // epurse data in stage 2 + epurse_offset = 4; + } + + memcpy(epurse + epurse_offset, payload->epurse, 4); + + // blank out debiting value as per the first step of the crediting procedure + epurse[epurse_offset + 0] = 0xFF; + epurse[epurse_offset + 1] = 0xFF; + + // initial epurse write for credit + memcpy(write + 2, epurse, 8); + + doMAC_N(write + 1, 9, payload->req.use_credit_key ? hdr.key_c : hdr.key_d, mac); + memcpy(write + 10, mac, sizeof(mac)); + + start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER; + + uint8_t resp[10] = {0}; + + uint8_t tries = 3; + while (tries-- > 0) { + + iclass_send_as_reader(write, write_len, &start_time, &eof_time, shallow_mod); + + if (tearoff_hook() == PM3_ETEAROFF) { // tearoff occurred + res = false; + switch_off(); + if (payload->req.send_reply) + reply_ng(CMD_HF_ICLASS_CREDIT_EPURSE, PM3_ETEAROFF, (uint8_t *)&res, sizeof(uint8_t)); + return; + } else { + + uint16_t resp_len = 0; + int res2 = GetIso15693AnswerFromTag(resp, sizeof(resp), ICLASS_READER_TIMEOUT_UPDATE, &eof_time, false, true, &resp_len); + if (res2 == PM3_SUCCESS && resp_len == 10) { + res = true; + break; + } + } + } + + if (tries == 0) { + res = false; + goto out; + } + + // check response. e-purse update swaps first and second half + if (memcmp(write + 2 + 4, resp, 4) || memcmp(write + 2, resp + 4, 4)) { + res = false; + goto out; + } + + // new epurse write + // epurse offset is now flipped after the first write + epurse_offset ^= 4; + memcpy(resp + epurse_offset, payload->epurse, 4); + memcpy(write + 2, resp, 8); + + doMAC_N(write + 1, 9, payload->req.use_credit_key ? hdr.key_c : hdr.key_d, mac); + memcpy(write + 10, mac, sizeof(mac)); + + start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER; + + tries = 3; + while (tries-- > 0) { + + iclass_send_as_reader(write, write_len, &start_time, &eof_time, shallow_mod); + + if (tearoff_hook() == PM3_ETEAROFF) { // tearoff occurred + res = false; + switch_off(); + if (payload->req.send_reply) + reply_ng(CMD_HF_ICLASS_CREDIT_EPURSE, PM3_ETEAROFF, (uint8_t *)&res, sizeof(uint8_t)); + return; + } else { + + uint16_t resp_len = 0; + int res2 = GetIso15693AnswerFromTag(resp, sizeof(resp), ICLASS_READER_TIMEOUT_UPDATE, &eof_time, false, true, &resp_len); + if (res2 == PM3_SUCCESS && resp_len == 10) { + res = true; + break; + } + } + } + + if (tries == 0) { + res = false; + goto out; + } + + // check response. e-purse update swaps first and second half + if (memcmp(write + 2 + 4, resp, 4) || memcmp(write + 2, resp + 4, 4)) { + res = false; + goto out; + } + +out: + switch_off(); + + if (payload->req.send_reply) + reply_ng(CMD_HF_ICLASS_CREDIT_EPURSE, PM3_SUCCESS, (uint8_t *)&res, sizeof(uint8_t)); +} + void iClass_Restore(iclass_restore_req_t *msg) { // sanitation diff --git a/armsrc/iclass.h b/armsrc/iclass.h index ebbda2e9f..363c042ab 100644 --- a/armsrc/iclass.h +++ b/armsrc/iclass.h @@ -25,6 +25,7 @@ void SniffIClass(uint8_t jam_search_len, uint8_t *jam_search_string); void ReaderIClass(uint8_t flags); void iClass_WriteBlock(uint8_t *msg); +void iclass_credit_epurse(iclass_credit_epurse_t *payload); void iClass_Dump(uint8_t *msg); void iClass_Restore(iclass_restore_req_t *msg); diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 36144abbe..86dda89cd 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -2202,6 +2202,129 @@ static int CmdHFiClass_WriteBlock(const char *Cmd) { return isok; } +static int CmdHFiClassCreditEpurse(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf iclass creditepurse", + "Credit the epurse on an iCLASS tag. The provided key must be the credit key.\n" + "The first two bytes of the epurse are the debit value (big endian) and may be any value except FFFF.\n" + "The remaining two bytes of the epurse are the credit value and must be smaller than the previous value.", + "hf iclass creditepurse -d FEFFFFFF -k 001122334455667B\n" + "hf iclass creditepurse -d FEFFFFFF --ki 0"); + + void *argtable[] = { + arg_param_begin, + arg_str0("k", "key", "", "Credit key as 8 hex bytes"), + arg_int0(NULL, "ki", "", "Key index to select key from memory 'hf iclass managekeys'"), + arg_str1("d", "data", "", "data to write as 8 hex bytes"), + arg_lit0(NULL, "elite", "elite computations applied to key"), + arg_lit0(NULL, "raw", "no computations applied to key"), + arg_lit0("v", "verbose", "verbose output"), + arg_lit0(NULL, "shallow", "use shallow (ASK) reader modulation instead of OOK"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + + int key_len = 0; + uint8_t key[8] = {0}; + + CLIGetHexWithReturn(ctx, 1, key, &key_len); + + int key_nr = arg_get_int_def(ctx, 2, -1); + + if (key_len > 0 && key_nr >= 0) { + PrintAndLogEx(ERR, "Please specify key or index, not both"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + + if (key_len > 0) { + if (key_len != 8) { + PrintAndLogEx(ERR, "Key is incorrect length"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + } else if (key_nr >= 0) { + if (key_nr < ICLASS_KEYS_MAX) { + memcpy(key, iClass_Key_Table[key_nr], 8); + PrintAndLogEx(SUCCESS, "Using key[%d] " _GREEN_("%s"), key_nr, sprint_hex(iClass_Key_Table[key_nr], 8)); + } else { + PrintAndLogEx(ERR, "Key number is invalid"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + } else { + PrintAndLogEx(ERR, "Key or key number must be provided"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + + int blockno = 2; + + int data_len = 0; + uint8_t data[4] = {0}; + CLIGetHexWithReturn(ctx, 3, data, &data_len); + + if (data_len != 4) { + PrintAndLogEx(ERR, "Data must be 4 hex bytes (8 hex symbols)"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + + bool elite = arg_get_lit(ctx, 4); + bool rawkey = arg_get_lit(ctx, 5); + bool verbose = arg_get_lit(ctx, 6); + bool shallow_mod = arg_get_lit(ctx, 7); + + CLIParserFree(ctx); + + if ((rawkey + elite) > 1) { + PrintAndLogEx(ERR, "Can not use a combo of 'elite', 'raw'"); + return PM3_EINVARG; + } + + iclass_credit_epurse_t payload = { + .req.use_raw = rawkey, + .req.use_elite = elite, + .req.use_credit_key = true, + .req.use_replay = false, + .req.blockno = blockno, + .req.send_reply = true, + .req.do_auth = true, + .req.shallow_mod = shallow_mod, + }; + memcpy(payload.req.key, key, 8); + memcpy(payload.epurse, data, sizeof(payload.epurse)); + + clearCommandBuffer(); + SendCommandNG(CMD_HF_ICLASS_CREDIT_EPURSE, (uint8_t *)&payload, sizeof(payload)); + PacketResponseNG resp; + + int isok; + if (WaitForResponseTimeout(CMD_HF_ICLASS_CREDIT_EPURSE, &resp, 2000) == 0) { + if (verbose) PrintAndLogEx(WARNING, "Command execute timeout"); + isok = PM3_ETIMEOUT; + } else if (resp.status != PM3_SUCCESS) { + if (verbose) PrintAndLogEx(ERR, "failed to communicate with card"); + isok = resp.status; + } else { + isok = (resp.data.asBytes[0] == 1) ? PM3_SUCCESS : PM3_ESOFT; + } + + switch (isok) { + case PM3_SUCCESS: + PrintAndLogEx(SUCCESS, "Credited epurse successfully"); + break; + case PM3_ETEAROFF: + if (verbose) + PrintAndLogEx(INFO, "Writing tear off triggered"); + break; + default: + PrintAndLogEx(FAILED, "Writing failed"); + break; + } + return isok; +} + static int CmdHFiClassRestore(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf iclass restore", @@ -4278,6 +4401,7 @@ static command_t CommandTable[] = { {"sniff", CmdHFiClassSniff, IfPm3Iclass, "Eavesdrop Picopass / iCLASS communication"}, {"view", CmdHFiClassView, AlwaysAvailable, "Display content from tag dump file"}, {"wrbl", CmdHFiClass_WriteBlock, IfPm3Iclass, "Write Picopass / iCLASS block"}, + {"creditepurse", CmdHFiClassCreditEpurse, IfPm3Iclass, "Credit epurse value"}, {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("recovery") " --------------------"}, // {"autopwn", CmdHFiClassAutopwn, IfPm3Iclass, "Automatic key recovery tool for iCLASS"}, {"chk", CmdHFiClassCheckKeys, IfPm3Iclass, "Check keys"}, diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index 8926ffb94..5cbe8b495 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -276,6 +276,7 @@ const static vocabulary_t vocabulary[] = { { 0, "hf iclass sniff" }, { 1, "hf iclass view" }, { 0, "hf iclass wrbl" }, + { 0, "hf iclass creditepurse" }, { 0, "hf iclass chk" }, { 1, "hf iclass loclass" }, { 1, "hf iclass lookup" }, diff --git a/doc/commands.json b/doc/commands.json index bbe8f8b93..55da69cd3 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3029,6 +3029,26 @@ ], "usage": "hf iclass configcard [-hglp] [--ci ] [--ki ]" }, + "hf iclass creditepurse": { + "command": "hf iclass creditepurse", + "description": "Credit the epurse on an iCLASS tag. The provided key must be the credit key. The first two bytes of the epurse are the debit value (big endian) and may be any value except FFFF. The remaining two bytes of the epurse are the credit value and must be smaller than the previous value.", + "notes": [ + "hf iclass creditepurse -d FEFFFFFF -k 001122334455667B", + "hf iclass creditepurse -d FEFFFFFF --ki 0" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-k, --key Credit key as 8 hex bytes", + "--ki Key index to select key from memory 'hf iclass managekeys'", + "-d, --data data to write as 8 hex bytes", + "--elite elite computations applied to key", + "--raw no computations applied to key", + "-v, --verbose verbose output", + "--shallow use shallow (ASK) reader modulation instead of OOK" + ], + "usage": "hf iclass creditepurse [-hv] [-k ] [--ki ] -d [--elite] [--raw] [--shallow]" + }, "hf iclass decrypt": { "command": "hf iclass decrypt", "description": "3DES decrypt data This is a naive implementation, it tries to decrypt every block after block 6. Correct behaviour would be to decrypt only the application areas where the key is valid, which is defined by the configuration block. OBS! In order to use this function, the file `iclass_decryptionkey.bin` must reside in the resources directory. The file should be 16 bytes binary data or... make sure your cardhelper is placed in the sim module", @@ -8786,7 +8806,7 @@ "-1, --ht1 Card type Hitag 1", "-2, --ht2 Card type Hitag 2", "-s, --hts Card type Hitag S", - "-m, --htm Card type Hitag \u03bc" + "-m, --htm Card type Hitag \u00ce\u00bc" ], "usage": "lf hitag eload [-h12sm] -f " }, @@ -11835,8 +11855,8 @@ } }, "metadata": { - "commands_extracted": 686, + "commands_extracted": 687, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-09-07T18:12:46" + "extracted_on": "2023-09-10T12:59:25" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 919ce3f8e..0c94700e6 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -415,6 +415,7 @@ Check column "offline" for their availability. |`hf iclass sniff `|N |`Eavesdrop Picopass / iCLASS communication` |`hf iclass view `|Y |`Display content from tag dump file` |`hf iclass wrbl `|N |`Write Picopass / iCLASS block` +|`hf iclass creditepurse `|N |`Credit epurse value` |`hf iclass chk `|N |`Check keys` |`hf iclass loclass `|Y |`Use loclass to perform bruteforce reader attack` |`hf iclass lookup `|Y |`Uses authentication trace to check for key in dictionary file` diff --git a/include/iclass_cmd.h b/include/iclass_cmd.h index bc7c1e6ca..dca08b6aa 100644 --- a/include/iclass_cmd.h +++ b/include/iclass_cmd.h @@ -87,6 +87,12 @@ typedef struct { uint8_t mac[4]; } PACKED iclass_writeblock_req_t; +// iCLASS write block request data structure +typedef struct { + iclass_auth_req_t req; + uint8_t epurse[4]; +} PACKED iclass_credit_epurse_t; + // iCLASS dump data structure typedef struct { uint8_t blockno; diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index a96a16c05..e84a4183b 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -565,7 +565,7 @@ typedef struct { #define CMD_HF_EPA_COLLECT_NONCE 0x038A #define CMD_HF_EPA_REPLAY 0x038B -#define CMD_HF_EPA_PACE_SIMULATE 0x039C +#define CMD_HF_EPA_PACE_SIMULATE 0x038C #define CMD_HF_LEGIC_INFO 0x03BC #define CMD_HF_LEGIC_ESET 0x03BD @@ -581,6 +581,7 @@ typedef struct { #define CMD_HF_ICLASS_EML_MEMSET 0x0398 #define CMD_HF_ICLASS_CHKKEYS 0x039A #define CMD_HF_ICLASS_RESTORE 0x039B +#define CMD_HF_ICLASS_CREDIT_EPURSE 0x039C // For ISO1092 / FeliCa #define CMD_HF_FELICA_SIMULATE 0x03A0 From 77258365d45d272e40b3b044b38cc2667bf194e2 Mon Sep 17 00:00:00 2001 From: Antiklesys Date: Sun, 10 Sep 2023 23:03:53 +0800 Subject: [PATCH 0470/1034] Update hf_mf_ultimatecard.lua Fixed bug, should be 13 instead of 12 as there are two 12 otherwise and this is referring to the 128b one instead --- client/luascripts/hf_mf_ultimatecard.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/luascripts/hf_mf_ultimatecard.lua b/client/luascripts/hf_mf_ultimatecard.lua index 4bb6034ee..819f68b40 100644 --- a/client/luascripts/hf_mf_ultimatecard.lua +++ b/client/luascripts/hf_mf_ultimatecard.lua @@ -737,7 +737,7 @@ local function set_type(tagtype) write_uid('04112233445566') write_otp('00000000') -- Setting OTP to default 00 00 00 00 write_version('0004030101000b03') -- UL-EV1 (48) 00 04 03 01 01 00 0b 03 - elseif tagtype == 12 then + elseif tagtype == 13 then print('Setting: Ultimate Magic card to UL-EV1 128') connect() send("CF".._key.."F001010000000003000978009102DABC19101011121314151644000000") From 08b4769f3f34e5a25b16eece437750edceb4d020 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 10 Sep 2023 19:49:09 +0200 Subject: [PATCH 0471/1034] text --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1803239cb..be1d1b9f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `utils.lua` library function "convertdectohex" wasn't working (@iceman1001) ## [Raccoon.4.17140][2023-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) From 4632e15dabb95e2a3c97b4f6370991244d96b218 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 10 Sep 2023 19:51:21 +0200 Subject: [PATCH 0472/1034] maur... --- client/dictionaries/mfc_default_keys.dic | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 088ab80d0..241581b69 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -2090,6 +2090,9 @@ D144BD193063 8627C10A7014 453857395635 # +# Unknown hotel system Sec 0 / A +353038383134 +# # Data from "the more the marriott" mifare project (colonelborkmundus) # aka The Horde # From cf92d8edc02e1022edbf029cf8ff85fcb894a064 Mon Sep 17 00:00:00 2001 From: spandox2 <31641448+spandox2@users.noreply.github.com> Date: Mon, 11 Sep 2023 11:43:04 -0400 Subject: [PATCH 0473/1034] Update cmdhfmf.c Changed line 2510 to change DEBUG to ERR Signed-off-by: spandox2 <31641448+spandox2@users.noreply.github.com> --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index be336bcb3..46d24f602 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2508,7 +2508,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(DEBUG, "iso14443a card select failed"); + PrintAndLogEx(ERR, "iso14443a card select failed (Hint: check card possition)"); return PM3_ECARDEXCHANGE; } From 5584410bbcdf225664ab4773d657defd94978653 Mon Sep 17 00:00:00 2001 From: spandox2 <31641448+spandox2@users.noreply.github.com> Date: Mon, 11 Sep 2023 11:56:45 -0400 Subject: [PATCH 0474/1034] Update cmdhfmf.c Problem: "hf mf autopwn" gave no response if no card was detected, leaving user confused. Solution: Change a DEBUG message to an ERR and give a hint that the card may be poorly positioned. Signed-off-by: spandox2 <31641448+spandox2@users.noreply.github.com> --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 46d24f602..4ae141cad 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2508,7 +2508,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(ERR, "iso14443a card select failed (Hint: check card possition)"); + PrintAndLogEx(ERR, "iso14443a card select failed (Hint: check card position)"); return PM3_ECARDEXCHANGE; } From 67bfddde57f885eef2ab226c9ac062d4dfbcc5b1 Mon Sep 17 00:00:00 2001 From: spandox2 <31641448+spandox2@users.noreply.github.com> Date: Mon, 11 Sep 2023 13:18:56 -0400 Subject: [PATCH 0475/1034] Update cmdhfmf.c Changed ERR to HINT Signed-off-by: spandox2 <31641448+spandox2@users.noreply.github.com> --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 4ae141cad..d8683707e 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2508,7 +2508,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(ERR, "iso14443a card select failed (Hint: check card position)"); + PrintAndLogEx(HINT, "iso14443a card select failed (Hint: check card position)"); return PM3_ECARDEXCHANGE; } From b9efd8ce48dd4b20c2503796986460fd879ca29a Mon Sep 17 00:00:00 2001 From: spandox2 <31641448+spandox2@users.noreply.github.com> Date: Mon, 11 Sep 2023 13:24:54 -0400 Subject: [PATCH 0476/1034] Update cmdhfmf.c text change Signed-off-by: spandox2 <31641448+spandox2@users.noreply.github.com> --- client/src/cmdhfmf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index d8683707e..d9153fc61 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2508,7 +2508,8 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(HINT, "iso14443a card select failed (Hint: check card position)"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); + PrintAndLogEx(HINT, "Card Select failed. Hint: Try some distance and/or change the position of the card"); return PM3_ECARDEXCHANGE; } From 7a832e175e4fda6b7df1383e85495d8465a1c013 Mon Sep 17 00:00:00 2001 From: spandox2 <31641448+spandox2@users.noreply.github.com> Date: Mon, 11 Sep 2023 13:43:41 -0400 Subject: [PATCH 0477/1034] Update cmdhfmf.c Signed-off-by: spandox2 <31641448+spandox2@users.noreply.github.com> --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index d9153fc61..6dda245be 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2509,7 +2509,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { PrintAndLogEx(DEBUG, "iso14443a card select failed"); - PrintAndLogEx(HINT, "Card Select failed. Hint: Try some distance and/or change the position of the card"); + PrintAndLogEx(FAILED, "No tag detected or other tag communication error"); return PM3_ECARDEXCHANGE; } From 5baba1fd432f94efabc99019704fdeb7740c4a16 Mon Sep 17 00:00:00 2001 From: spandox2 <31641448+spandox2@users.noreply.github.com> Date: Mon, 11 Sep 2023 13:48:09 -0400 Subject: [PATCH 0478/1034] Update cmdhfmf.c Signed-off-by: spandox2 <31641448+spandox2@users.noreply.github.com> --- client/src/cmdhfmf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 6dda245be..7f8be4fbf 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2508,8 +2508,9 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(DEBUG, "iso14443a card select failed"); + // iso14443a card select failed PrintAndLogEx(FAILED, "No tag detected or other tag communication error"); + PrintAndLogEx(HINT, "Hint: Try some distance or position of the card"); return PM3_ECARDEXCHANGE; } From 7f2433eb8b0d773b5c5c868826c154e116f7a70d Mon Sep 17 00:00:00 2001 From: Leopoldo Pla Sempere Date: Tue, 12 Sep 2023 09:44:16 +0200 Subject: [PATCH 0479/1034] Fix linking in explicit libatomic devices My Raspberry Pi Zero with latest Raspberry Pi OS thanks this after commit b17a733 Signed-off-by: Leopoldo Pla Sempere --- tools/cryptorf/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cryptorf/Makefile b/tools/cryptorf/Makefile index 32c2c5ab4..293194f03 100644 --- a/tools/cryptorf/Makefile +++ b/tools/cryptorf/Makefile @@ -3,7 +3,7 @@ MYSRCS = cryptolib.c util.c MYINCLUDES = -I../../common/cryptorf MYCFLAGS = MYDEFS = -MYLDLIBS = -lpthread +MYLDLIBS = -lpthread -latomic BINS = cm sm sma sma_multi INSTALLTOOLS = $(BINS) From 774f1c33efaaccf633ede6e704800345eb313878 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 12 Sep 2023 20:22:04 +0200 Subject: [PATCH 0480/1034] fix atomic on macOS and all platforms --- tools/cryptorf/Makefile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/cryptorf/Makefile b/tools/cryptorf/Makefile index 293194f03..45cd51a5d 100644 --- a/tools/cryptorf/Makefile +++ b/tools/cryptorf/Makefile @@ -3,7 +3,14 @@ MYSRCS = cryptolib.c util.c MYINCLUDES = -I../../common/cryptorf MYCFLAGS = MYDEFS = -MYLDLIBS = -lpthread -latomic + +# Atomic +# RPi Zero gcc requires -latomic +# but MacOSX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld +# doesn't recognize option --as-needed +ifneq ($(platform),Darwin) + MYLDLIBS += -lpthread -Wl,--as-needed -latomic -Wl,--no-as-needed +endif BINS = cm sm sma sma_multi INSTALLTOOLS = $(BINS) From c26d33dfd3cebb803a384e838c07908ccda4e240 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 12 Sep 2023 20:47:59 +0200 Subject: [PATCH 0481/1034] forgot to set the var... --- tools/cryptorf/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/cryptorf/Makefile b/tools/cryptorf/Makefile index 45cd51a5d..96ac9393d 100644 --- a/tools/cryptorf/Makefile +++ b/tools/cryptorf/Makefile @@ -4,21 +4,21 @@ MYINCLUDES = -I../../common/cryptorf MYCFLAGS = MYDEFS = +platform = $(shell uname) + # Atomic # RPi Zero gcc requires -latomic # but MacOSX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld # doesn't recognize option --as-needed ifneq ($(platform),Darwin) - MYLDLIBS += -lpthread -Wl,--as-needed -latomic -Wl,--no-as-needed + LDLIBS += -lpthread -Wl,--as-needed -latomic -Wl,--no-as-needed endif BINS = cm sm sma sma_multi INSTALLTOOLS = $(BINS) -platform = $(shell uname) - ifeq ($(platform),Darwin) -CXXFLAGS = -std=c++14 + CXXFLAGS = -std=c++14 endif include ../../Makefile.host From ddfbd7f54964a42d20da83a465206c20a6261218 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 13 Sep 2023 21:12:09 +0200 Subject: [PATCH 0482/1034] allow for t55xx detection to search for 0xE039 (Silicon Craft technology) --- client/src/cmdlft55xx.c | 114 ++++++++++++++++++++++++---------------- 1 file changed, 68 insertions(+), 46 deletions(-) diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index 5033b5d54..09e5eabdf 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -3498,7 +3498,8 @@ out: // some return all page 1 (64 bits) and others return just that block (32 bits) // unfortunately the 64 bits makes this more likely to get a false positive... bool tryDetectP1(bool getData) { - uint8_t preamble[] = {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1}; + uint8_t preamble_atmel[] = {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1}; + uint8_t preamble_silicon[] = {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1}; size_t startIdx = 0; uint8_t fc1 = 0, fc2 = 0, ans = 0; int clk = 0, firstClockEdge = 0; @@ -3512,15 +3513,19 @@ bool tryDetectP1(bool getData) { // try fsk clock detect. if successful it cannot be any other type of modulation... (in theory...) ans = fskClocks(&fc1, &fc2, (uint8_t *)&clk, &firstClockEdge); if (ans && ((fc1 == 10 && fc2 == 8) || (fc1 == 8 && fc2 == 5))) { - if ((FSKrawDemod(0, 0, 0, 0, false) == PM3_SUCCESS) && - preambleSearchEx(g_DemodBuffer, preamble, sizeof(preamble), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { - return true; + + if ((FSKrawDemod(0, 0, 0, 0, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || + preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + return true; + } } - if ((FSKrawDemod(0, 1, 0, 0, false) == PM3_SUCCESS) && - preambleSearchEx(g_DemodBuffer, preamble, sizeof(preamble), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { - return true; + + if ((FSKrawDemod(0, 1, 0, 0, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || + preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + return true; + } } return false; } @@ -3528,44 +3533,53 @@ bool tryDetectP1(bool getData) { // try ask clock detect. it could be another type even if successful. clk = GetAskClock("", false); if (clk > 0) { - if ((ASKDemod_ext(0, 0, 1, 0, false, false, false, 1, &st) == PM3_SUCCESS) && - preambleSearchEx(g_DemodBuffer, preamble, sizeof(preamble), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { - return true; + if ((ASKDemod_ext(0, 0, 1, 0, false, false, false, 1, &st) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || + preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + return true; + } } st = true; - if ((ASKDemod_ext(0, 1, 1, 0, false, false, false, 1, &st) == PM3_SUCCESS) && - preambleSearchEx(g_DemodBuffer, preamble, sizeof(preamble), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { - return true; + if ((ASKDemod_ext(0, 1, 1, 0, false, false, false, 1, &st) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || + preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + return true; + } } - if ((ASKbiphaseDemod(0, 0, 0, 2, false) == PM3_SUCCESS) && - preambleSearchEx(g_DemodBuffer, preamble, sizeof(preamble), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { - return true; + if ((ASKbiphaseDemod(0, 0, 0, 2, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || + preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + return true; + } } - if ((ASKbiphaseDemod(0, 0, 1, 2, false) == PM3_SUCCESS) && - preambleSearchEx(g_DemodBuffer, preamble, sizeof(preamble), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { - return true; + if ((ASKbiphaseDemod(0, 0, 1, 2, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || + preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + return true; + } } } // try NRZ clock detect. it could be another type even if successful. clk = GetNrzClock("", false); //has the most false positives :( if (clk > 0) { - if ((NRZrawDemod(0, 0, 1, false) == PM3_SUCCESS) && - preambleSearchEx(g_DemodBuffer, preamble, sizeof(preamble), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { - return true; + if ((NRZrawDemod(0, 0, 1, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || + preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + return true; + } + } - if ((NRZrawDemod(0, 1, 1, false) == PM3_SUCCESS) && - preambleSearchEx(g_DemodBuffer, preamble, sizeof(preamble), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { - return true; + if ((NRZrawDemod(0, 1, 1, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || + preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + return true; + } + } } @@ -3577,33 +3591,41 @@ bool tryDetectP1(bool getData) { // save_restoreGB(GRAPH_SAVE); // skip first 160 samples to allow antenna to settle in (psk gets inverted occasionally otherwise) //CmdLtrim("-i 160"); - if ((PSKDemod(0, 0, 6, false) == PM3_SUCCESS) && - preambleSearchEx(g_DemodBuffer, preamble, sizeof(preamble), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + if ((PSKDemod(0, 0, 6, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { //save_restoreGB(GRAPH_RESTORE); - return true; + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || + preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + return true; + } } - if ((PSKDemod(0, 1, 6, false) == PM3_SUCCESS) && - preambleSearchEx(g_DemodBuffer, preamble, sizeof(preamble), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + + if ((PSKDemod(0, 1, 6, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { //save_restoreGB(GRAPH_RESTORE); - return true; + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || + preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + return true; + } } + // PSK2 - needs a call to psk1TOpsk2. if (PSKDemod(0, 0, 6, false) == PM3_SUCCESS) { psk1TOpsk2(g_DemodBuffer, g_DemodBufferLen); - if (preambleSearchEx(g_DemodBuffer, preamble, sizeof(preamble), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + + if (g_DemodBufferLen == 32 || g_DemodBufferLen == 64) { //save_restoreGB(GRAPH_RESTORE); - return true; + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || + preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + return true; + } } } // inverse waves does not affect PSK2 demod //undo trim samples //save_restoreGB(GRAPH_RESTORE); // no other modulation clocks = 2 or 4 so quit searching - if (fc1 != 8) return false; + if (fc1 != 8) { + return false; + } } - return false; } // does this need to be a callable command? From ec894becb9a628e64b072f4635c0b32ee150302d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 13 Sep 2023 21:13:09 +0200 Subject: [PATCH 0483/1034] text --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45b0f5cb5..4ea0b13fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `lf t55 detectp1` - now also accepts 0xE039 Silicon Craft Tech as valid card (@iceman1001) - Fixed `utils.lua` library function "convertdectohex" wasn't working (@iceman1001) - Added `hf iclass creditepurse` command to allow crediting the epurse debit value (@nvx) From 25ab50713751d03424a8d4c6c76a5bb34d90769e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 14 Sep 2023 05:15:38 +0200 Subject: [PATCH 0484/1034] length var is set in the preamble check... --- client/src/cmdlft55xx.c | 140 +++++++++++++++++++++++++++------------- 1 file changed, 96 insertions(+), 44 deletions(-) diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index 09e5eabdf..9ce8219c2 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -3498,12 +3498,12 @@ out: // some return all page 1 (64 bits) and others return just that block (32 bits) // unfortunately the 64 bits makes this more likely to get a false positive... bool tryDetectP1(bool getData) { - uint8_t preamble_atmel[] = {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1}; - uint8_t preamble_silicon[] = {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1}; - size_t startIdx = 0; - uint8_t fc1 = 0, fc2 = 0, ans = 0; - int clk = 0, firstClockEdge = 0; - bool st = true; + uint8_t preamble_atmel[] = {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1}; + uint8_t preamble_silicon[] = {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1}; + size_t startIdx = 0; + uint8_t fc1 = 0, fc2 = 0, ans = 0; + int clk = 0, firstClockEdge = 0; + bool st = true; if (getData) { if (!AcquireData(T55x7_PAGE1, T55x7_TRACE_BLOCK1, false, 0, 0)) @@ -3514,16 +3514,26 @@ bool tryDetectP1(bool getData) { ans = fskClocks(&fc1, &fc2, (uint8_t *)&clk, &firstClockEdge); if (ans && ((fc1 == 10 && fc2 == 8) || (fc1 == 8 && fc2 == 5))) { - if ((FSKrawDemod(0, 0, 0, 0, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { - if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || - preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + if (FSKrawDemod(0, 0, 0, 0, false) == PM3_SUCCESS) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + return true; + } + + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } - if ((FSKrawDemod(0, 1, 0, 0, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { - if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || - preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + if (FSKrawDemod(0, 1, 0, 0, false) == PM3_SUCCESS) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + return true; + } + + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } @@ -3533,32 +3543,52 @@ bool tryDetectP1(bool getData) { // try ask clock detect. it could be another type even if successful. clk = GetAskClock("", false); if (clk > 0) { - if ((ASKDemod_ext(0, 0, 1, 0, false, false, false, 1, &st) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + if (ASKDemod_ext(0, 0, 1, 0, false, false, false, 1, &st) == PM3_SUCCESS) { - if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || - preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + return true; + } + + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } st = true; - if ((ASKDemod_ext(0, 1, 1, 0, false, false, false, 1, &st) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { - if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || - preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + if (ASKDemod_ext(0, 1, 1, 0, false, false, false, 1, &st) == PM3_SUCCESS) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + return true; + } + + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } - if ((ASKbiphaseDemod(0, 0, 0, 2, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { - if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || - preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + if (ASKbiphaseDemod(0, 0, 0, 2, false) == PM3_SUCCESS) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + return true; + } + + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } - if ((ASKbiphaseDemod(0, 0, 1, 2, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { - if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || - preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + if (ASKbiphaseDemod(0, 0, 1, 2, false) == PM3_SUCCESS) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + return true; + } + + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } @@ -3567,19 +3597,28 @@ bool tryDetectP1(bool getData) { // try NRZ clock detect. it could be another type even if successful. clk = GetNrzClock("", false); //has the most false positives :( if (clk > 0) { - if ((NRZrawDemod(0, 0, 1, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { - if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || - preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + if (NRZrawDemod(0, 0, 1, false) == PM3_SUCCESS) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + return true; + } + + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } - } - if ((NRZrawDemod(0, 1, 1, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { - if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || - preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + + if (NRZrawDemod(0, 1, 1, false) == PM3_SUCCESS) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + return true; + } + + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } - } } @@ -3591,18 +3630,28 @@ bool tryDetectP1(bool getData) { // save_restoreGB(GRAPH_SAVE); // skip first 160 samples to allow antenna to settle in (psk gets inverted occasionally otherwise) //CmdLtrim("-i 160"); - if ((PSKDemod(0, 0, 6, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + if (PSKDemod(0, 0, 6, false) == PM3_SUCCESS) { //save_restoreGB(GRAPH_RESTORE); - if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || - preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + return true; + } + + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } - if ((PSKDemod(0, 1, 6, false) == PM3_SUCCESS) && (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + if (PSKDemod(0, 1, 6, false) == PM3_SUCCESS) { //save_restoreGB(GRAPH_RESTORE); - if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || - preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + return true; + } + + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } @@ -3611,12 +3660,15 @@ bool tryDetectP1(bool getData) { if (PSKDemod(0, 0, 6, false) == PM3_SUCCESS) { psk1TOpsk2(g_DemodBuffer, g_DemodBufferLen); - if (g_DemodBufferLen == 32 || g_DemodBufferLen == 64) { - //save_restoreGB(GRAPH_RESTORE); - if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) || - preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false)) { - return true; - } + //save_restoreGB(GRAPH_RESTORE); + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + return true; + } + + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + return true; } } // inverse waves does not affect PSK2 demod //undo trim samples From 0443a6002557c1b65c2fe077e3f68281085df7c1 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 15 Sep 2023 19:08:24 +0200 Subject: [PATCH 0485/1034] adapt Makefile to use MYxxxx flags instead --- tools/cryptorf/Makefile | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tools/cryptorf/Makefile b/tools/cryptorf/Makefile index 96ac9393d..75fe80644 100644 --- a/tools/cryptorf/Makefile +++ b/tools/cryptorf/Makefile @@ -4,6 +4,18 @@ MYINCLUDES = -I../../common/cryptorf MYCFLAGS = MYDEFS = +# A better way would be to just try compiling with march and seeing if we succeed +cpu_arch = $(shell uname -m) +ifneq ($(findstring arm64, $(cpu_arch)), ) + MYCFLAGS += -mcpu=native + +# iOS 'fun' +else ifneq ($(findstring iP, $(cpu_arch)), ) + MYCFLAGS += -mcpu=native +else + MYCFLAGS += -march=native +endif + platform = $(shell uname) # Atomic @@ -11,14 +23,14 @@ platform = $(shell uname) # but MacOSX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld # doesn't recognize option --as-needed ifneq ($(platform),Darwin) - LDLIBS += -lpthread -Wl,--as-needed -latomic -Wl,--no-as-needed + MYLDLIBS += -lpthread -Wl,--as-needed -latomic -Wl,--no-as-needed endif BINS = cm sm sma sma_multi INSTALLTOOLS = $(BINS) ifeq ($(platform),Darwin) - CXXFLAGS = -std=c++14 + MYCXXFLAGS = -std=c++14 endif include ../../Makefile.host @@ -27,7 +39,7 @@ include ../../Makefile.host ifneq (,$(findstring MINGW,$(platform))) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) # and setting _ISOC99_SOURCE sets internally __USE_MINGW_ANSI_STDIO=1 - CFLAGS += -D_ISOC99_SOURCE + MYCFLAGS += -D_ISOC99_SOURCE endif cm : $(OBJDIR)/cm.o $(MYOBJS) From ce76e4e351e5cac2ccb5f45db96a6056155371d9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 15 Sep 2023 21:44:02 +0200 Subject: [PATCH 0486/1034] update ATR list --- client/src/atrs.h | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/client/src/atrs.h b/client/src/atrs.h index 2a6bc7521..3e0c6d6f7 100644 --- a/client/src/atrs.h +++ b/client/src/atrs.h @@ -362,6 +362,7 @@ const static atr_t AtrTable[] = { { "3B3C110042AF20A32007002283829000", "Orange Mobicarte (SIM card old generation)" }, { "3B3C110044AF11F7200504FB83819000", "itineris (Old French Mobile Operator SIM card) (Telecommunication)" }, { "3B3C9400423111A21202095183809000", "Omnitel IT 16K GSM SIM card" }, + { "3B3C9400443111F000002CAE83839000", "Movistar Spain (Telecommunication)" }, { "3B3C94004B3125A21013144783839000", "GSM SFR" }, { "3B3C94004C3125A7201B001583839000", "GSM-SIM (900MHz) card of the carrier vodafone for their cellular\nnetwork (phase 2+ with 3V)" }, { "3B3C9400633112F00000464083839000", "Old russian 'beeline' sim" }, @@ -425,6 +426,7 @@ const static atr_t AtrTable[] = { { "3B5F9600805A2C1100101000FFFFFFFF829000", "Calypso (Transport)" }, { "3B5F9600805A3F0608140101C546DEDC829000", "Navegante(r) Personalizado (Lisbon public transportation card) (Transport)\nhttps://www.navegante.pt/viajar/cartoes" }, { "3B5F9600805A3F0608140101C546EBDC829000", "Multi-Transport Pass (Navegante) (Metro, Bus, Electric, Boat) Carris Metropolitano, PT (Transport)\nhttps://www.navegante.pt/" }, + { "3B5F9600805A3F0608201223C4325FDE829000", "Montreal metropolitan area and Quebec city area OPUS card (Transport)\nhttps://www.carteopus.info/" }, { "3B600000", "Meano (Bank)" }, { "3B61000080", "blank A40CR card (JavaCard)" }, { "3B630000364180", "Schlumberger Payflex 4k User" }, @@ -1189,6 +1191,7 @@ const static atr_t AtrTable[] = { { "3B6F0000805A28130210122B75021B8A829000", "KorriGo, smart transport card in France region Brittany (Transport)\nhttps://www.ter.sncf.com/bretagne/offres/carte-korrigo" }, { "3B6F0000805A28130210122B7503FB01829000", "origo (France) (Transport)\nhttps://www.breizhgo.bzh/se-deplacer-en-bretagne/KorriGo" }, { "3B6F0000805A28130210122B750C7E79829000", "Transportation card delivered by STAR (Transportation service from the city of Rennes, France) (Transport)\nhttps://www.star.fr/titres-et-tarifs/carte-korrigo/" }, + { "3B6F0000805A28130210122B750DD382829000", "ZOU! for Region Sud (Transport)\nhttps://zou.maregionsud.fr/ma-carte-zou/" }, { "3B6F0000805A28130210122B9292E642829000", "Transport card in cote d'or France (mobigo)" }, { "3B6F0000805A28130210122B9292E829829000", "French transport card of the city of Dijon and Cote d'or department. (Transport)\nhttps://www.viamobigo.fr/fr/acheter-mes-titres-de-transport-mobigo-en-cote-dor/176" }, { "3B6F0000805A28130210122B92D663FC829000", "Card 'Korrigo' region Bretagne, France, Bibus Brest Metropole public transport (Transport)\nhttps://fr.wikipedia.org/wiki/KorriGo" }, @@ -1227,6 +1230,7 @@ const static atr_t AtrTable[] = { { "3B6F0000805A2D06081010027835EDCE829000", "Lisbon Transportation SmartCard (Transport)" }, { "3B6F0000805A2D06081010027848BBCC829000", "Lisbon Metro Monthly Student Pass (Transport)\nhttps://www.metrolisboa.pt/" }, { "3B6F0000805A2D0608101005935C42FB829000", "Comboios de Portugal Transit Card (Transport)\nhttps://www.cp.pt/passageiros/pt/consultar-horarios/precos/cartao-cp" }, + { "3B6F0000805A2E130200010104EF8342829000", "Oura Auvergne-Rhone-Alpes (Transport)\nhttps://www.oura.com" }, { "3B6F0000805A3407061500017917A7E2829000", "Rav-Kav multi-line travel ticket used in the public transportation system in Israel (Transport)\nhttps://www.gov.il/en/departments/guides/multi_line_card" }, { "3B6F0000805A340706150001792A4B5C829000", "Rav Kav Transit Payment Card (Israel) (Transport)\nhttps://ravkavonline.co.il/" }, { "3B6F0000805A3B0706150101793E797B829000", "Rav Kav (Transport)\nhttp://alhakav.mot.gov.il/he/rav-kav" }, @@ -1468,7 +1472,7 @@ const static atr_t AtrTable[] = { { "3B7F..0000006A4345524553022C3402..039000", "Ceres ST v2" }, { "3B7F..0000006A4345524553022C3403..039000", "Ceres ST v3" }, { "3B7F..00008031..65B000000000......8290..", "MultiApp V2.1 (with IAS XL / IAS ECC and IAS Classic Applet V3) [MultiApp V2.1 Type 2]" }, - { "3B7F..000080318065B0........120FFE829000", "IDPrime MD 8840, 3840, 3810, 840 and 830 Cards T=0" }, + { "3B7F..000080318065B0........120FFE829000", "IDPrime MD 8840, 3840, 3810, 840 and 830 Cards T=0\nIDPrime 930 (JavaCard)" }, { "3B7F0100FE58434F53763235312863295046424D", "XCOS is an Experimental Card Operating System for Atmel based smartcards (Funcard, etc..) (Other)\nhttp://runningserver.com/?page=runningserver.content.download.xcos" }, { "3B7F04000080318071906754454D44412E309000", "public key (PKI)" }, { "3B7F1100000031C053CAC4016452D90400829000", "DoD CAC, Oberthur CosmopolIC 32K V4" }, @@ -1604,6 +1608,7 @@ const static atr_t AtrTable[] = { { "3B7F96000080318065B085050011120FFF829000", "LuxTrust card (Luxembourg qualified electronic signature / authentication system) (Other)\nhttps://www.luxtrust.com/en/professionals/smartcard" }, { "3B7F96000080318065B0855956FB120268829000", "qualified certificate (eID)\nhttps://www.elektronicznypodpis.pl/en/offer/qualified-certificates/" }, { "3B7F96000080318065B0855956FB1202C1829000", "Gemalto USB (eID)" }, + { "3B7F96000080318065B0855956FB120FFE829000", "Thales (Gemalto) IDPrime 941 (PKI)\nhttps://cpl.thalesgroup.com/de/access-management/idprime-md-pki-smart-cards\nThales SafeNet IDPrime 940B (PKI)\nhttps://cpl.thalesgroup.com/resources/access-management/idprime-940-product-brief" }, { "3B7F96000080318065B0855956FB12FFFE829000", "IDCORE 3140 (JavaCard)" }, { "3B7F9600008031B865B0850300EF1200F6829000", "Finnish identity card (eID)\nhttp://vrk.fi/en/citizen-certificate" }, { "3B7F9600008031B865B08504021B1200F6829000", "Finnish ID-card v5.0(?) (eID)\nhttps://dvv.fi/en/fineid-specifications" }, @@ -1705,6 +1710,7 @@ const static atr_t AtrTable[] = { { "3B8680014B4F4E41141109", "Mastercard paypass enabled credit card" }, { "3B8680015741524930310B", "Gusto Karta (Bank)\nhttps://www.gustokarta.cz" }, { "3B86800157575061737336", "WWPass Passkey (eID)\nhttps://www.wwpass.com/passkey" }, + { "3B868001801434373000A0", "Malta eID Identity Card (eID)\nhttps://www.identitymalta.com/" }, { "3B8680018031C15211182C", "IDEMIA Cosmo V8.0 with a PIV applet (contactless) (PKI)" }, { "3B8680018031C152411A7E", "IDEMIA Cosmo V8.1 with a PIV applet (contactless) (PKI)" }, { "3B86800180540410010FC9", "Nickel.eu prepaid account (Bank)\nhttps://nickel.eu" }, @@ -2006,6 +2012,7 @@ const static atr_t AtrTable[] = { { "3B8C8001505CF5A94530AAAA017781D708", "Indonesia ektp (eID)" }, { "3B8C800150605F2EFA00000000778191D1", "Residence Permit (Switzerland) (eID)" }, { "3B8C80015064E65B000000000000818085", "Chicago CTA Ventra Transit card\nhttps://www.ventrachicago.com/" }, + { "3B8C80015068DDA5B11C00001177818582", "EZ-Link Card (issued by Land Transport Authority Singapore) (Transport)\nhttps://www.ezlink.com.sg/ez-link-faqs/ez-link-card/" }, { "3B8C800150710CF3C800000000B37171A8", "MOBIB CARD BELGIUM (Transport)" }, { "3B8C800150773B2DBD0000001100818594", "Texas Instruments Dynamic NFC Interface Transponder (RF430CL330H)" }, { "3B8C800150784B2CCB00000000B371713A", "... (Transport)\nhttps://www.portalviva.pt/" }, @@ -2135,6 +2142,7 @@ const static atr_t AtrTable[] = { { "3B8F80010031B96409377213738401E0000000AB", "National Identity Card of Slovakia (NFC interface) (eID)\nhttps://en.wikipedia.org/wiki/Slovak_identity_card" }, { "3B8F80010031C173C800106457494943009000B5", "ICC Solutions Card for Certification (Other)\nhttps://www.iccsolutions.com/" }, { "3B8F80010031C173C8211064414D31300790008A", "master card (Bank)" }, + { "3B8F80010031C173C8211064414D313307900089", "CheBanca! nexi debit card (Bank)\nhttps://www.chebanca.it/" }, { "3B8F80010031C173C8211064414D31370790008D", "AirPlus International Mastercard (Bank)\nhttps://www.airplus.com/" }, { "3B8F80010031C173C8211064414D333007900088", "ING-VISA-Card (Bank)\nhttps://www.ing.de/girokonto/karten-bargeld/" }, { "3B8F80010031C173C8211064414D333107900089", "NAB VISA Debit (Bank)\nhttps://www.nab.com.au/" }, @@ -2276,7 +2284,7 @@ const static atr_t AtrTable[] = { { "3B8F8001804F0CA0000003060E....00000000..", "Contact (7816-10) Extended I2C (as per PCSC std part3)" }, { "3B8F8001804F0CA0000003060F....00000000..", "Contact (7816-10) 2WBP (as per PCSC std part3)" }, { "3B8F8001804F0CA00000030610....00000000..", "RFID - FeliCa compatible (as per PCSC std part3)\nContact (7816-10) 3WBP (as per PCSC std part3)" }, - { "3B8F8001804F0CA00000030611003B0000000042", "RFID - FeliCa (generic) (as per PCSC std part3)\nSuica public transit card (Japan IC system)\n(also: Hayakaken, ICOCA, Kitaca, manaca, nimoca, PASMO, PiTaPa, SUGOCA, TOICA)\nhttps://en.wikipedia.org/wiki/Suica\nOctopus, MTR network from Hong Kong, 2014" }, + { "3B8F8001804F0CA00000030611003B0000000042", "RFID - FeliCa (generic) (as per PCSC std part3)\nSuica public transit card (Japan IC system)\n(also: Hayakaken, ICOCA, Kitaca, manaca, nimoca, PASMO, PiTaPa, SUGOCA, TOICA)\nhttps://en.wikipedia.org/wiki/Suica\nOctopus, MTR network from Hong Kong, 2014\ne-Amusement card (Other)\nhttps://en.wikipedia.org/wiki/E-Amusement" }, { "3B8F8001804F0CA00000030640....00000000..", "RFID - Low Frequency < 135 kHz (as per PCSC std part3)" }, { "3B8F8001804F0CA0000003064000000000000028", "HID Proximity. Used to access buildings. Reference on the card 'HID0008P'.\nhttp://www.hidglobal.com/product-display/cards-and-credentials/hid-proximity" }, { "3B8F8001804F0CA0001A0000000078", "iclass 16k cl (eID)" }, @@ -2328,7 +2336,6 @@ const static atr_t AtrTable[] = { { "3B959640F001130A0A1D", "xcrypt (Pay TV)" }, { "3B959640F00F100A096A", "Zain Usim Card (Telecommunication)\nwww.qariya.com" }, { "3B959680B1FE551FC7477261636513", "IClass SE Processor (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor" }, - { "3B90969181B1FE551FC7D4", "IClass SE Processor (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor"}, { "3B9596C0F01FC20F100A0A16", "viettel (Telecommunication)" }, { "3B959740F01A160A1941", "SG50 (Samsung Chip) (Telecommunication)" }, { "3B96004121920000622433339000", "Ukrainian Telecommunications Operator Kyivstar (old simcard) (Telecommunication)\nhttps://kyivstar.ua/uk/mm" }, @@ -2378,6 +2385,7 @@ const static atr_t AtrTable[] = { { "3B9A940091010017000126050096", "GSM-SIM T-D1 prepaid (Xtra) (Telecommunication)" }, { "3B9A940091010017000126060096", "T D1 GSM card" }, { "3B9A9400920275931100010202..", "SuperSIM (X-sim)" }, + { "3B9A940092029093110001340200", "Orange Spain (Telecommunication)" }, { "3B9A960092013693170002040300", "GSM-SIM EMT 'Simpel' (prepaid, Estonia)\nhttps://www.emt.ee/web/simpel" }, { "3B9A960092014893170002120400", "SIM Card C*******r Mobile (Belgium)" }, { "3B9A960092016693170002120400", "GSM SIM Bite.lv prepaid 'Toxic'; 2008" }, @@ -2396,6 +2404,7 @@ const static atr_t AtrTable[] = { { "3B9C131181647265616D6372797074000408", "XPlusTV & INXCT Access Card-9 (FIRECrypt)" }, { "3B9C131181647265616D6372797074900599", "FireCrypt, access card 9 (Pay TV)" }, { "3B9C188121455A43332E333420524556204467", "MS-Protect safecard for access system (eID)" }, + { "3B9C188121755A43332E333420524556204457", "ZC3.34 (Other)\nhttps://www.zeitcontrol.de/Smart-card-BasicCard-Enhanced-ZC334-SIM-cut" }, { "3B9C940068868D0A86980256C2000500", "G3 & GSM & Blank SIM card: to be programmed for OpenBTS with pySim-prog (Telecommunication)" }, { "3B9C940068868D0C86980245A1000500", "China Mobile (Telecommunication)" }, { "3B9C940068868D0C86980256408B0500", "mobiledit (Telecommunication)" }, @@ -2490,6 +2499,7 @@ const static atr_t AtrTable[] = { { "3B9E95801FC78031E073FE211B66D00217C71100C0", "3 UK SIM card (Telecommunication)" }, { "3B9E95801FC78031E073FE211B66D00217F61100F1", "Ziggo SmartCard Television Subscription (Pay TV)" }, { "3B9E95801FC78031E073FE211B66D00219151300", "ABS-CBN (Telecommunication)" }, + { "3B9E95801FC78031E073FE211B66D0022A861300BE", "KPN, Netherlands (Telecommunication)" }, { "3B9E95C00A1FC68031E073FE211B66D001830D58811E", "Mobile Paypass G199 NFC" }, { "3B9E96008031C0654D4700000072F7418107", "Russian Magistra (UTF8: Magistra) smart card (eID)\nhttp://www.smart-park.ru/index.php/products/smartcards.html" }, { "3B9E96008031C0654D5300000072F7418107", "Smart-key for bank-client of MDM Bank (RU) with faktura.ru service (Bank)" }, @@ -2506,6 +2516,7 @@ const static atr_t AtrTable[] = { { "3B9E96801FC68031E073FE211B66D0019F8F120002", "Russian 'Megafon' gsm sim card (Telecommunication)\nhttp://www.megafon.ru/" }, { "3B9E96801FC68031E073FE211B66D0019FBC100033", "sim beeline russia krasnodar (Telecommunication)" }, { "3B9E96801FC68031E073FE211B66D0019FEF100060", "Infineon SLU14MCO480K2 (JavaCard)" }, + { "3B9E96801FC68031E073FE211B66D0024010150046", "Kyivstar USIM-card (Telecommunication)" }, { "3B9E96801FC78031E073FE21136200498381900007", "Claro Brazil SIM card (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D000282401000D", "United Mobile SIM" }, { "3B9E96801FC78031E073FE211B66D0002B2D020004", "KTF SHOW GE-B1400 WCDMA USIM (Telecommunication)" }, @@ -2540,6 +2551,7 @@ const static atr_t AtrTable[] = { { "3B9E96801FC78031E073FE211B66D00199FE0E0068", "Finnish Sonera SIM-card (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A0041100B4", "Aldi Talk SIM card, Germany (Telecommunication)\nhttps://www.alditalk.de/talk" }, { "3B9E96801FC78031E073FE211B66D001A01E1100AE", "Zevvle SIM Card (Telecommunication)\nhttps://zevvle.com" }, + { "3B9E96801FC78031E073FE211B66D001A0741000C5", "USIM of Vodafone Germany (MCC 262, MNC 2) (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A0DD12006E", "USIM (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A0EC11005C", "Boost Mobile Prepaid Micro SIM Card (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A1121000A2", "OpenAirInerface (Telecommunication)" }, @@ -2565,6 +2577,7 @@ const static atr_t AtrTable[] = { { "3B9E96801FC78031E073FE211B66D00217F41200F3", "SIM card for Swedish operator Vimla! (Telecommunication)\nhttps://www.vimla.se" }, { "3B9E96801FC78031E073FE211B66D002194B120042", "halebop (swedish mobile provider) SIM card (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D0022436140004", "SIM (Telecommunication)" }, + { "3B9E96801FC78031E073FE211B66D0022A6D140051", "Mobitel SIM from Sri Lanka (Telecommunication)\nhttps://mobitel.lk/" }, { "3B9E96801FC78031E073FE211B66D0022A72130049", "SIM Card OI (Brazil) (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D0022A861300BD", "Mobile Vikings SIM Card (Telecommunication)\nhttps://mobilevikings.com" }, { "3B9E96801FC78031E073FE211B66D0022A8F1400B3", "Telefonica USIM (Telecommunication)" }, @@ -2575,6 +2588,7 @@ const static atr_t AtrTable[] = { { "3B9E96801FC78031E073FE211B66D00233AD140088", "4G-LTE (Telecommunication)" }, { "3B9E96803FC3A08031E073FE211B630801140F9000D3", "KT Olleh LTE Warp SA-L 1670 (Telecommunication)" }, { "3B9E97801FC68031E073FE211B66D0019F7A1200F6", "Spectrun USA Sim Card (Telecommunication)" }, + { "3B9E97801FC68031E073FE211B66D0024011150046", "SIM Card for French mobile provider Unyc (Telecommunication)\nhttps://www.unyc.io/" }, { "3B9E97801FC68031E073FE211B66D002401D15004A", "Telia Sim card for IoT (Telecommunication)" }, { "3B9E97801FC68031E073FE211B66D0024027150070", "verymobile wind 3 (Telecommunication)\nhttps://verymobile.it/" }, { "3B9E97801FC68031E073FE211B66D0025E7315003A", "Twilio Super SIM (Telecommunication)\nhttps://www.twilio.com/iot/super-sim-card" }, @@ -2643,6 +2657,7 @@ const static atr_t AtrTable[] = { { "3B9F94801FC78031E073FE2113578681098698621880", "Oyeitimes 5G ISIM R16 (Telecommunication)\nhttps://www.oyeitimes.com/detail.php?id=535&ids=565&idt=&ide=&dd=1410" }, { "3B9F94801FC78031E073FE21135786850686984218AB", "4G LTE blank USIM Green Card (Telecommunication)\nhttp://grcard.en.alibaba.com/product/60076835567-209365843/4G_LTE_blank_usim_card_for_4G_network.html" }, { "3B9F94801FC78031E073FE21136321150683079000F8", "Maroc Telecom 4G+ (Telecommunication)" }, + { "3B9F94801FC78031E073FE21136700000000000070AA", "OMANTEL (Telecommunication)\nhttps://portal.omantel.om/Personal/mobile/hayyak" }, { "3B9F94801FC78031E073FE21136761210D10000070F7", "Celcom XPAX (Telecommunication)\nhttps://www.celcom.com.my/personal/prepaid" }, { "3B9F94801FC78031E073FE2119573C8660CFB902A0EE", "Gotanet SE USIM (Telecommunication)" }, { "3B9F94801FC78031E073FE2119573C8660CFBA02A0ED", "Gotanet DK USIM (Telecommunication)" }, @@ -2774,6 +2789,7 @@ const static atr_t AtrTable[] = { { "3B9F96801F878031E073FE2119674A555473300948DB", "nano sim/usim card (Telecommunication)" }, { "3B9F96801F878031E073FE2119674A555475300662F8", "SIM Card (Telecommunication)" }, { "3B9F96801F878031E073FE2119674A557330310746BE", "Hologram Developer Global IoT SIM Card (Telecommunication)\nhttps://hologram.io/store/global-iot-sim-card/17" }, + { "3B9F96801F878031E073FE2119674A55753031136288", "Zimbabwe sim card provider: ECONET (Telecommunication)" }, { "3B9F96801F878031E073FE211B674A4C5275310451D5", "Test card provided with 4G/5G network from Amarisoft (Telecommunication)" }, { "3B9F96801F878031E073FE211B674A4C7530300248A9", "Cardcentrics (Telecommunication)" }, { "3B9F96801F878031E073FE211B674A4C753034054BA9", "sysmoISIM-SJA2 (Telecommunication)\nhttps://osmocom.org/projects/cellular-infrastructure/wiki/SysmoISIM-SJA2" }, @@ -2944,6 +2960,7 @@ const static atr_t AtrTable[] = { { "3B9F96803FC7828031E073F62157574A330581053000CE", "COMPRION M2M eUICC (Telecommunication)" }, { "3B9F96803FC7828031E073F62157574A4D020B60010069", "eSIM GSMA Card (Telecommunication)\nhttps://www.gsma.com/newsroom/wp-content/uploads/SGP.22_v2.2.pdf" }, { "3B9F96803FC7828031E073F62157574A4D020B60610009", "ting (Telecommunication)" }, + { "3B9F96803FC7828031E073FE211B57AA8660F0010004FB", "The eSIM.me Card (Telecommunication)\nhttps://esim.me/" }, { "3B9F96803FC7828031E073FE211B57AA8660F0010011EE", "eSIM.me pluggable eSIM (Telecommunication)\nhttps://esim.me/" }, { "3B9F96803FC7828031E073FE211B633A204E8300900031", "eSIM (Telecommunication)" }, { "3B9F96803FC7828031E075F62157210355020B60500019", "st33g1m2 (Telecommunication)\nhttps://www.st.com/en/secure-mcus/st33g1m2.html" }, @@ -3047,6 +3064,7 @@ const static atr_t AtrTable[] = { { "3BB813008131205D0057696E4361726402", "SmartCard for Windows 1.1" }, { "3BB813008131FA524348544D4F494341A5", "citizen digital certificate (PKI)\nhttp://moica.nat.gov.tw/" }, { "3BB897008131FE45FFFF148230502300F1", "UAE Emirates ID (eID)\nhttps://www.icp.gov.ae" }, + { "3BB89700813FE45FFFF148230502300F", "UAE Emirates ID (eID)" }, { "3BB89700C00831FE45FFFF148230502300B8", "Infineon SECORA ID X (JavaCard)" }, { "3BB918008131FE9E8073FF614083000000DF", "Serbian Identity Card\nThis is the new Serbian biometric identity card (every adult cityzen\nmust have). The chip contains owners picture, name, date and place\nof birth, current address, unique ID number and fingerprint." }, { "3BB9940040144747334D4838353330", "T D1 GSM card (Telecommunication)" }, @@ -3239,6 +3257,7 @@ const static atr_t AtrTable[] = { { "3BDB960080B1FE451F830031C064B0FC100007900005", "Oberthur Cosmo V7 debug card (SDK)" }, { "3BDB960080B1FE451F830031C064B0FC10000F90000D", "ID-One PIV (that's the only non-numeric identifying mark) (PKI)" }, { "3BDB960080B1FE451F830031C064BAFC10000790000F", "Oberthur ID-One Cosmo v7.0 80K (eID)\nhttps://www.ssi.gouv.fr/uploads/IMG/certificat/ANSSI-CC-cible_2011-64en.pdf" }, + { "3BDB960080B1FE451F830031C064BAFC10000F900007", "Oberthur ID-One Cosmo v7.0 (PKI)\nhttps://csrc.nist.rip/groups/STM/cmvp/documents/140-1/140sp/140sp1236.pdf" }, { "3BDB960080B1FE451F830031C064BE1B0100019000FB", "Bank card" }, { "3BDB960080B1FE451F830031C064C30801000F90009B", "SIM Aruba (Italian provider)" }, { "3BDB960080B1FE451F830031C064C7FC100001900074", "Oberthur Cosmo (eID)\nhttp://www.stampit.org" }, @@ -3247,6 +3266,7 @@ const static atr_t AtrTable[] = { { "3BDB960080B1FE451F830031E85427E6040007900084", "Polish encard (eID)" }, { "3BDB960080B1FE451F830031E85427E604000F90008C", "Token card from iBRE CompanyNet (mbank) (Bank)" }, { "3BDB960080B1FE451F834553544F4E49412D65494455", "Estonian Identity Card (ID-One Cosmo v8.1) (eID)" }, + { "3BDB960080B1FE451F870031C1640958223607900019", "Idemia Solvo Fly 40 (JavaCard)" }, { "3BDB960081B1FE451F0380F9A0000003080000100018", "Oberthur CS PIV End Point v1.08 FIPS201 Certified" }, { "3BDB960081B1FE451F0380F9A0000003480000000149", "Fly Clear card" }, { "3BDB960081B1FE451F8380F9A0000003080000100098", "Oberthur Cosmo v7 128K with PIV applet\nhttp://www.smartcardfocus.com/shop/ilp/id~410/p/index.shtml" }, @@ -3344,6 +3364,7 @@ const static atr_t AtrTable[] = { { "3BDF96FF910131FE4680319052410264050200AC73D622C017", "Acos-ID (AUSTRIACARD's Operating System) (Other)\nhttps://www.austriacard.com/digital-security/solutions/card-solutions/acos-id/" }, { "3BDF97008131FE588031B05202056405A100AC73D622C021", "Austrian healthcare insurance identification card (HealthCare)\nhttps://www.chipkarte.at" }, { "3BDF970081B1FE451F838073CC91CBF9A0000003080000100078", "NASA PIV Card (Other)" }, + { "3BE000008131104505", "Emoney indonesia (Bank)" }, { "3BE000008131204030", "SmarTEC" }, { "3BE000FF8131FE4514", "'JUKICARD', digitally sign tax documents in Japan" }, { "3BE20000402049..", "Schlumberger Cryptoflex 4k" }, @@ -3432,6 +3453,7 @@ const static atr_t AtrTable[] = { { "3BEE00008131804280318066B0840C016E01830090008E", "MultiApp Cards (Easy 72K Type B and Combi 72K Type B)\nE.SUN Commercial bank debit master card (Bank)\nTaiwan EasyCard (Transport)\nhttps://www.easycard.com.tw/english/index.asp" }, { "3BEE00008131804380318066B1A1110100F683009000", "Optelio/Desineo Cards (D72 FXR1)" }, { "3BEE00008131804380318066B1A11101A0F683009000", "Optelio D72 FXR1 (MD) T=1" }, + { "3BEE00008131804380318066B1A30401110B83009000D4", "Japan Post Bank cash card (Bank)\nhttps://www.jp-bank.japanpost.jp/kojin/chokin/sogou/kj_cho_sg_iccard.html" }, { "3BEE00008131FE45003180718665016702A00A8390001B", "IBM JCOP 'Java Card 2.1.1' et 'Open Platform 2.0.1'" }, { "3BEE00008131FE4580318066409093060F1783019000FD", "Health insurance (HealthCare)" }, { "3BEE00008131FE4580318066409093060F17830F9000F3", "IC card for the National Health Insurance, Taiwan" }, @@ -3579,6 +3601,7 @@ const static atr_t AtrTable[] = { { "3BF711000140967070370E6CB6D6", "Carte pour decodeur cable numerique (fourni par www.voo.be et\nwww.ledecodeur.be)" }, { "3BF711000140967070670E6CB6D6", "UK TopUp TV" }, { "3BF711000140967071090E6CB6D6", "Carte pour decodeur tele de Neuf Telecom TV" }, + { "3BF71300008131FE4500C08AC80C658185", "NXP JCop (JavaCard)" }, { "3BF71300008131FE45464F4D534F4D53A9", "Health card Russian Federation" }, { "3BF71300008131FE454A434F503234....", "NXP JCOP v2.4.x (see hist bytes for more info)" }, { "3BF71300008131FE4580654A5030310415", "Nichizeiren Denshi-shomei (eID)\nhttps://www.nichizeiren.or.jp/taxaccount/auth/fifth/" }, @@ -3818,6 +3841,7 @@ const static atr_t AtrTable[] = { { "3BFF1300008131FE45434433690940000020202020202000F3", "VISA credit card (LBBW/Payback VISA) (Bank)" }, { "3BFF1300008131FE454F574F4B31302D4A................", "OWOK (One Web, One Key) login card\nhttp://www.reiner-sct.com/owok/\nReiner SCT loginCard\nhttps://cardlogin.reiner-sct.com/" }, { "3BFF1300008131FE4D8025A00000005657444B3333300600D2", "Datakey DCOS model 330 (DKCCOS 6.0 token)" }, + { "3BFF1300918131FE4141434F532046696F6E6131204C6336F4", "TURKEY A101 HADI APP CARD (Bank)\nhttps://a101hadi.a101.com.tr/" }, { "3BFF1300FF10000031C1738211064414D33470779000", "Visa Debit (Bank)\nhttps://www.chase.com/" }, { "3BFF1300FF10000031C173C821106441443533079000", "BRADESCO-CONTA SALARIO (Bank)" }, { "3BFF1300FF10000031C173C8211064414D3130079000", "Tangerine MasterCard (Bank)\nhttps://www.tangerine.ca/en/products/spending/creditcard/money-back/" }, @@ -3883,6 +3907,7 @@ const static atr_t AtrTable[] = { { "3BFF1800FF813150456563............................", "GeldKarte v3 (Germany)" }, { "3BFF1800FF8131FE4165630608710156000FB85073204712D8", "Commerzbank maestro (Bank)\nhttps://www.commerzbank.de/konten-zahlungsverkehr/produkte/girokonten/kostenloses-girokonto/" }, { "3BFF1800FF8131FE4165630608710156000FB8602AA0471231", "Debit card (Germany): Postbank - GeldKarte (EUR), girocard, V-PAY (Bank)\nhttps://www.postbank.de/" }, + { "3BFF1800FF8131FE41656306087102500023B8907360471271", "Debit card (Germany): Deutsche Kreditbank (DKB), ec-cash, (Bank)\nhttps://www.dkb.de/privatkunden/karten/girocard" }, { "3BFF1800FF8131FE4165631116710156000F0902904E5711AC", "German Bank Card IDEMIA 9 Maestro/Girocard (Sparkasse S-Payment TPY 1974693D) (Bank)" }, { "3BFF1800FF8131FE450031C573C00180547615020105900074", "SIGILANCE NFC OpenPGP Smart Card (JavaCard)\nhttps://www.sigilance.com/" }, { "3BFF1800FF8131FE455448434331305445434F4744484E3224", "National Health Insurance Card, Taiwan" }, @@ -3993,6 +4018,7 @@ const static atr_t AtrTable[] = { { "3BFF9600008131FE4380318065B0845651101201788290006A", "SafeNet eToken 5300 (PKI)" }, { "3BFF9600008131FE4380318065B08456511012021082900001", "Nedap NexS N:Secure (eID)\nhttps://www.nsecure.nl/nl/" }, { "3BFF9600008131FE4380318065B0846160FB120FFD8290000C", "IDPrime 930 FIPS Level 2 (T=1 CT=96) (BAI3.1) (PKI)" }, + { "3BFF9600008131FE4380318065B0846566FB12017882900085", "eToken 5110+ FIPS 140-2 Level 2 (JavaCard)" }, { "3BFF9600008131FE4380318065B0846566FB120FFC8290000F", "SmartID 3930 FIDO Contact and Contactless card (PKI)\nhttps://www.smartcardfocus.com/shop/ilp/id~962/safenet-idprime-3930-fido-dual-interface-fips-l2/p/index.shtml" }, { "3BFF9600008131FE4380318065B0846669FB12FFFE829000F1", "IDCore3230 build 6.8, test APDU applet (JavaCard)" }, { "3BFF9600008131FE4380318065B085040011120FFF829000E0", "Pakistan National identity card (eID)" }, @@ -4024,6 +4050,7 @@ const static atr_t AtrTable[] = { { "3F2F008059AF0201013000000A0E83069F12", "Gemplus GemXplore" }, { "3F2F008059AF02010230000C0A0E831E9F16", "GSM-SIM (900MHz) card of the carrier 'Mannesmann Mobilfunk' for\ntheir network 'D2-Privat' - now known as Vodafone Mobilfunk\nhttp://www.vodafone.de/" }, { "3F2F008069AE0202013600000A0E833E9F16", "GSM-SIM e-plus (1800MHz)" }, + { "3F2F008069AF0204013600000A0E833E9F16", "Telia Mobitel GSM (Telecommunication)" }, { "3F2F008069AF0204013600020A0E833E9F16", "GSM-SIM D2 CallYa (900MHz)" }, { "3F2F008069AF0307015900000A0E833E9F16", "Nokia SIM Ph2 16K Ver2.0" }, { "3F2F008069AF0307015900130A0E833E9F16", "Old Spanish Telefonica Movistar GSM SIM card manufactured by Gemplus" }, From d7f306084aee504a34e46fdb497cb88619a8d2a0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 15 Sep 2023 21:48:57 +0200 Subject: [PATCH 0487/1034] colors for kiwi --- client/src/cmdsmartcard.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index 9c273739d..8c6dbda2b 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -174,7 +174,7 @@ static void PrintATR(uint8_t *atr, size_t atrlen) { if (T0 & 0x80) { uint8_t TD1 = atr[2 + T1len]; - PrintAndLogEx(INFO, " - TD1 (First offered transmission protocol, presence of TA2..TD2) [ 0x%02x ] Protocol T%d", TD1, TD1 & 0x0f); + PrintAndLogEx(INFO, " - TD1 (First offered transmission protocol, presence of TA2..TD2) [ 0x%02x ] Protocol " _GREEN_("T%d"), TD1, TD1 & 0x0f); protocol_T0_present = false; if ((TD1 & 0x0f) == 0) { protocol_T0_present = true; @@ -199,7 +199,7 @@ static void PrintATR(uint8_t *atr, size_t atrlen) { } if (TD1 & 0x80) { uint8_t TDi = atr[2 + T1len + TD1len]; - PrintAndLogEx(INFO, " - TD2 (A supported protocol or more global parameters, presence of TA3..TD3) [ 0x%02x ] Protocol T%d", TDi, TDi & 0x0f); + PrintAndLogEx(INFO, " - TD2 (A supported protocol or more global parameters, presence of TA3..TD3) [ 0x%02x ] Protocol " _GREEN_("T%d"), TDi, TDi & 0x0f); if ((TDi & 0x0f) == 0) { protocol_T0_present = true; } From 908ae0c78c2905c32ea56818b28f1b647c98f7e9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 15 Sep 2023 21:53:52 +0200 Subject: [PATCH 0488/1034] ...confused makefiles stuff --- tools/cryptorf/Makefile | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/tools/cryptorf/Makefile b/tools/cryptorf/Makefile index 75fe80644..ed94fb846 100644 --- a/tools/cryptorf/Makefile +++ b/tools/cryptorf/Makefile @@ -4,26 +4,12 @@ MYINCLUDES = -I../../common/cryptorf MYCFLAGS = MYDEFS = -# A better way would be to just try compiling with march and seeing if we succeed -cpu_arch = $(shell uname -m) -ifneq ($(findstring arm64, $(cpu_arch)), ) - MYCFLAGS += -mcpu=native - -# iOS 'fun' -else ifneq ($(findstring iP, $(cpu_arch)), ) - MYCFLAGS += -mcpu=native -else - MYCFLAGS += -march=native -endif - platform = $(shell uname) # Atomic # RPi Zero gcc requires -latomic -# but MacOSX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld -# doesn't recognize option --as-needed ifneq ($(platform),Darwin) - MYLDLIBS += -lpthread -Wl,--as-needed -latomic -Wl,--no-as-needed + MYLDLIBS += -lpthread endif BINS = cm sm sma sma_multi From ec0d27685c61e152be2b2f2f2533c292122d6c6e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 16 Sep 2023 09:22:45 +0200 Subject: [PATCH 0489/1034] adapt script to handle SE SAM again --- client/atr_scrap_pcsctools.py | 1 + client/src/atrs.h | 2 ++ 2 files changed, 3 insertions(+) diff --git a/client/atr_scrap_pcsctools.py b/client/atr_scrap_pcsctools.py index 9c4d1b4be..7325d90a3 100755 --- a/client/atr_scrap_pcsctools.py +++ b/client/atr_scrap_pcsctools.py @@ -59,6 +59,7 @@ const char *getAtrInfo(const char *atr_str); // atr_t array is expected to be NULL terminated const static atr_t AtrTable[] = { { "3BDF18FFC080B1FE751F033078464646462026204963656D616E1D", "Cardhelper by 0xFFFF and Iceman" }, + { "3B90969181B1FE551FC7D4", "IClass SE Processor (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor"}, """ C_FOOTER=""" {NULL, "N/A"} diff --git a/client/src/atrs.h b/client/src/atrs.h index 3e0c6d6f7..b66f10cc9 100644 --- a/client/src/atrs.h +++ b/client/src/atrs.h @@ -34,6 +34,8 @@ const char *getAtrInfo(const char *atr_str); // atr_t array is expected to be NULL terminated const static atr_t AtrTable[] = { { "3BDF18FFC080B1FE751F033078464646462026204963656D616E1D", "Cardhelper by 0xFFFF and Iceman" }, + { "3B90969181B1FE551FC7D4", "IClass SE Processor (Other) +https://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor"}, { "3B..............0031B8640000000073......829000", "MultiApp ID IAS ECC 72K CC (with IAS XL / IAS ECC Applet) IAS ECC Type 3" }, { "3B..............0031B8640000000073......829000..", "MultiApp ID IAS ECC 72K CC (with IAS XL / IAS ECC Applet) IAS ECC Type 4" }, { "3B........0031B864........73......829000", "IDClassic IAS (old name: IAS TPC) IAS ECC Type 1\nMultiApp ID IAS ECC 72K CC (with IAS XL / IAS ECC Applet) IAS ECC Type 1" }, From 3ff659fd98bedaadf5153a3c695ba124b8199ffa Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 16 Sep 2023 09:31:42 +0200 Subject: [PATCH 0490/1034] fix newline issue --- client/atr_scrap_pcsctools.py | 2 +- client/src/atrs.h | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/client/atr_scrap_pcsctools.py b/client/atr_scrap_pcsctools.py index 7325d90a3..1f0ab3948 100755 --- a/client/atr_scrap_pcsctools.py +++ b/client/atr_scrap_pcsctools.py @@ -59,7 +59,7 @@ const char *getAtrInfo(const char *atr_str); // atr_t array is expected to be NULL terminated const static atr_t AtrTable[] = { { "3BDF18FFC080B1FE751F033078464646462026204963656D616E1D", "Cardhelper by 0xFFFF and Iceman" }, - { "3B90969181B1FE551FC7D4", "IClass SE Processor (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor"}, + { "3B90969181B1FE551FC7D4", "IClass SE Processor (Other) https://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor"}, """ C_FOOTER=""" {NULL, "N/A"} diff --git a/client/src/atrs.h b/client/src/atrs.h index b66f10cc9..134e74d77 100644 --- a/client/src/atrs.h +++ b/client/src/atrs.h @@ -34,8 +34,7 @@ const char *getAtrInfo(const char *atr_str); // atr_t array is expected to be NULL terminated const static atr_t AtrTable[] = { { "3BDF18FFC080B1FE751F033078464646462026204963656D616E1D", "Cardhelper by 0xFFFF and Iceman" }, - { "3B90969181B1FE551FC7D4", "IClass SE Processor (Other) -https://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor"}, + { "3B90969181B1FE551FC7D4", "IClass SE Processor (Other) https://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor"}, { "3B..............0031B8640000000073......829000", "MultiApp ID IAS ECC 72K CC (with IAS XL / IAS ECC Applet) IAS ECC Type 3" }, { "3B..............0031B8640000000073......829000..", "MultiApp ID IAS ECC 72K CC (with IAS XL / IAS ECC Applet) IAS ECC Type 4" }, { "3B........0031B864........73......829000", "IDClassic IAS (old name: IAS TPC) IAS ECC Type 1\nMultiApp ID IAS ECC 72K CC (with IAS XL / IAS ECC Applet) IAS ECC Type 1" }, From 22d7adf0c0dc63b72993973aecc83e4b2cb775a4 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 16 Sep 2023 09:32:47 +0200 Subject: [PATCH 0491/1034] getting confused over pthread vs atomic... --- tools/cryptorf/Makefile | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/tools/cryptorf/Makefile b/tools/cryptorf/Makefile index ed94fb846..0c4587f97 100644 --- a/tools/cryptorf/Makefile +++ b/tools/cryptorf/Makefile @@ -4,30 +4,35 @@ MYINCLUDES = -I../../common/cryptorf MYCFLAGS = MYDEFS = -platform = $(shell uname) +# build artifacts +BINS = cm sm sma sma_multi +INSTALLTOOLS = $(BINS) + + +include ../../Makefile.host +# checking platform can be done only after Makefile.host # Atomic # RPi Zero gcc requires -latomic +MYLDLIBS += -latomic + +# macOS might not like pthread? ifneq ($(platform),Darwin) MYLDLIBS += -lpthread endif -BINS = cm sm sma sma_multi -INSTALLTOOLS = $(BINS) - +# macOS needs c++14 standard when compiling c++ ifeq ($(platform),Darwin) MYCXXFLAGS = -std=c++14 endif -include ../../Makefile.host - -# checking platform can be done only after Makefile.host ifneq (,$(findstring MINGW,$(platform))) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) # and setting _ISOC99_SOURCE sets internally __USE_MINGW_ANSI_STDIO=1 MYCFLAGS += -D_ISOC99_SOURCE endif + cm : $(OBJDIR)/cm.o $(MYOBJS) sm : $(OBJDIR)/sm.o $(MYOBJS) sma : $(OBJDIR)/sma.o $(MYOBJS) From c73de57320aee834bb88c1a7f2da943c5387c9e2 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 16 Sep 2023 09:51:47 +0200 Subject: [PATCH 0492/1034] make sure pthread and atomic isnt called in macOS --- tools/cryptorf/Makefile | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tools/cryptorf/Makefile b/tools/cryptorf/Makefile index 0c4587f97..82d1d591c 100644 --- a/tools/cryptorf/Makefile +++ b/tools/cryptorf/Makefile @@ -12,13 +12,11 @@ INSTALLTOOLS = $(BINS) include ../../Makefile.host # checking platform can be done only after Makefile.host -# Atomic +# Atomic / pThread # RPi Zero gcc requires -latomic -MYLDLIBS += -latomic - # macOS might not like pthread? ifneq ($(platform),Darwin) - MYLDLIBS += -lpthread + MYLDLIBS += -lpthread -latomic endif # macOS needs c++14 standard when compiling c++ From b6e1344e1c46438e4e1f7b4171f435968c880fc4 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 16 Sep 2023 18:38:53 +0200 Subject: [PATCH 0493/1034] added a custom timeout parameter to the smart raw command --- CHANGELOG.md | 1 + armsrc/i2c.c | 44 ++++++++++++++++++++++++++------------- armsrc/i2c.h | 2 +- client/src/cmdsmartcard.c | 11 +++++++++- include/pm3_cmd.h | 2 ++ 5 files changed, 44 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ea0b13fd..bd279eca9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `smart raw --timeout` - allows for a custom timeout (@iceman1001) - Changed `lf t55 detectp1` - now also accepts 0xE039 Silicon Craft Tech as valid card (@iceman1001) - Fixed `utils.lua` library function "convertdectohex" wasn't working (@iceman1001) - Added `hf iclass creditepurse` command to allow crediting the epurse debit value (@nvx) diff --git a/armsrc/i2c.c b/armsrc/i2c.c index 016ae2f13..c06eab580 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -39,6 +39,11 @@ #define I2C_ERROR "I2C_WaitAck Error" +// 8051 speaks with smart card. +// 1000*50*3.07 = 153.5ms +// 1 byte transfer == 1ms with max frame being 256 bytes +#define SIM_WAIT_DELAY 109773 // about 337.7ms delay + // Direct use the loop to delay. 6 instructions loop, Masterclock 48MHz, // delay=1 is about 200kbps // timer. @@ -168,8 +173,8 @@ static bool WaitSCL_H_delay(uint32_t delay) { return false; } -// 5000 * 3.07us = 15350us. 15.35ms -// 15000 * 3.07us = 46050us. 46.05ms +// 5000 * 3.07us = 15350 us = 15.35 ms +// 15000 * 3.07us = 46050 us = 46.05 ms static bool WaitSCL_H(void) { return WaitSCL_H_delay(5000); } @@ -194,7 +199,7 @@ static bool WaitSCL_L(void) { // It timeout reading response from card // Which ever comes first static bool WaitSCL_L_timeout(void) { - volatile uint32_t delay = 200; + volatile uint32_t delay = 1800; while (delay--) { // exit on SCL LOW if (SCL_read == false) @@ -227,17 +232,22 @@ static bool I2C_Start(void) { return true; } -static bool I2C_WaitForSim(void) { +static bool I2C_WaitForSim(uint32_t wait) { // wait for data from card - if (!WaitSCL_L_timeout()) + if (WaitSCL_L_timeout() == false) { return false; + } // 8051 speaks with smart card. - // 1000*50*3.07 = 153.5ms - // 1000*110*3.07 = 337.7ms + // 1000*50*3.07 = 153.5ms + // 1000*110*3.07 = 337.7ms (337700) + // 4 560 000 * 3.07 = 13999,2ms (13999200) // 1byte transfer == 1ms with max frame being 256bytes - return WaitSCL_H_delay(1000 * 110); + + // fct WaitSCL_H_delay uses a I2C_DELAY_1CLK in the loop with "wait" as number of iterations. + // I2C_DELAY_1CLK == I2CSpinDelayClk(1) = 3.07us + return WaitSCL_H_delay(wait); } // send i2c STOP @@ -670,13 +680,13 @@ int I2C_get_version(uint8_t *maj, uint8_t *min) { } // Will read response from smart card module, retries 3 times to get the data. -bool sc_rx_bytes(uint8_t *dest, uint16_t *destlen) { +bool sc_rx_bytes(uint8_t *dest, uint16_t *destlen, uint32_t wait) { uint8_t i = 5; int16_t len = 0; while (i--) { - I2C_WaitForSim(); + I2C_WaitForSim(wait); len = I2C_BufferRead(dest, *destlen, I2C_DEVICE_CMD_READ, I2C_DEVICE_ADDRESS_MAIN); @@ -703,6 +713,7 @@ bool GetATR(smart_card_atr_t *card_ptr, bool verbose) { if (card_ptr == NULL) return false; + card_ptr->atr_len = 0; memset(card_ptr->atr, 0, sizeof(card_ptr->atr)); @@ -712,13 +723,13 @@ bool GetATR(smart_card_atr_t *card_ptr, bool verbose) { I2C_WriteCmd(I2C_DEVICE_CMD_GENERATE_ATR, I2C_DEVICE_ADDRESS_MAIN); //wait for sim card to answer. - // 1byte = 1ms , max frame 256bytes. Should wait 256ms atleast just in case. - if (I2C_WaitForSim() == false) + // 1byte = 1ms , max frame 256bytes. Should wait 256ms atleast just in case. + if (I2C_WaitForSim(SIM_WAIT_DELAY) == false) return false; // read bytes from module uint16_t len = sizeof(card_ptr->atr); - if (sc_rx_bytes(card_ptr->atr, &len) == false) + if (sc_rx_bytes(card_ptr->atr, &len, SIM_WAIT_DELAY) == false) return false; if (len > sizeof(card_ptr->atr)) { @@ -805,6 +816,11 @@ void SmartCardRaw(const smart_card_raw_t *p) { if ((flags & SC_RAW) || (flags & SC_RAW_T0)) { + uint32_t wait = SIM_WAIT_DELAY; + if ((flags & SC_WAIT) == SC_WAIT) { + wait = (uint32_t)((p->wait_delay * 1000) / 3.07); + } + LogTrace(p->data, p->len, 0, 0, NULL, true); bool res = I2C_BufferWrite( @@ -821,7 +837,7 @@ void SmartCardRaw(const smart_card_raw_t *p) { // read bytes from module len = ISO7816_MAX_FRAME; - res = sc_rx_bytes(resp, &len); + res = sc_rx_bytes(resp, &len, wait); if (res) { LogTrace(resp, len, 0, 0, NULL, false); } else { diff --git a/armsrc/i2c.h b/armsrc/i2c.h index 6fa8b8809..da5da0532 100644 --- a/armsrc/i2c.h +++ b/armsrc/i2c.h @@ -48,7 +48,7 @@ int16_t I2C_BufferRead(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t int16_t I2C_ReadFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address); bool I2C_WriteFW(const uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address); -bool sc_rx_bytes(uint8_t *dest, uint16_t *destlen); +bool sc_rx_bytes(uint8_t *dest, uint16_t *destlen, uint32_t wait); // bool GetATR(smart_card_atr_t *card_ptr, bool verbose); diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index 8c6dbda2b..55a3b62e4 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -416,6 +416,7 @@ static int CmdSmartRaw(const char *Cmd) { arg_lit0("s", NULL, "active smartcard with select (get ATR)"), arg_lit0("t", "tlv", "executes TLV decoder if it possible"), arg_lit0("0", NULL, "use protocol T=0"), + arg_int0(NULL, "timeout", "", "Timeout in MS waiting for SIM to respond. (def 337ms)"), arg_str1("d", "data", "", "bytes to send"), arg_param_end }; @@ -426,10 +427,11 @@ static int CmdSmartRaw(const char *Cmd) { bool active_select = arg_get_lit(ctx, 3); bool decode_tlv = arg_get_lit(ctx, 4); bool use_t0 = arg_get_lit(ctx, 5); + int timeout = arg_get_int_def(ctx, 6, -1); int dlen = 0; uint8_t data[PM3_CMD_DATA_SIZE] = {0x00}; - int res = CLIParamHexToBuf(arg_get_str(ctx, 6), data, sizeof(data), &dlen); + int res = CLIParamHexToBuf(arg_get_str(ctx, 7), data, sizeof(data), &dlen); CLIParserFree(ctx); if (res) { @@ -452,6 +454,13 @@ static int CmdSmartRaw(const char *Cmd) { if (active_select) payload->flags |= SC_SELECT; } + + payload->wait_delay = 0; + if (timeout > -1) { + payload->flags |= SC_WAIT; + payload->wait_delay = timeout; + } + PrintAndLogEx(DEBUG, "SIM Card timeout... %u ms", payload->wait_delay); if (dlen > 0) { if (use_t0) diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index e84a4183b..05b313482 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -338,10 +338,12 @@ typedef enum SMARTCARD_COMMAND { SC_RAW_T0 = (1 << 4), SC_CLEARLOG = (1 << 5), SC_LOG = (1 << 6), + SC_WAIT = (1 << 7), } smartcard_command_t; typedef struct { uint8_t flags; + uint32_t wait_delay; uint16_t len; uint8_t data[]; } PACKED smart_card_raw_t; From 78adf186d3394cf9b1aecf3f55477c54bd26d598 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 17 Sep 2023 17:41:58 +0200 Subject: [PATCH 0494/1034] style --- armsrc/i2c.c | 193 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 122 insertions(+), 71 deletions(-) diff --git a/armsrc/i2c.c b/armsrc/i2c.c index c06eab580..fbe625e14 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -181,7 +181,7 @@ static bool WaitSCL_H(void) { static bool WaitSCL_L_delay(uint32_t delay) { while (delay--) { - if (!SCL_read) { + if (SCL_read == false) { return true; } I2C_DELAY_1CLK; @@ -217,15 +217,19 @@ static bool I2C_Start(void) { SDA_H; I2C_DELAY_1CLK; SCL_H; - if (!WaitSCL_H()) + if (WaitSCL_H() == false) { return false; + } I2C_DELAY_2CLK; - if (!SCL_read) + if (SCL_read == false) { return false; - if (!SDA_read) + } + + if (SDA_read == false) { return false; + } SDA_L; I2C_DELAY_2CLK; @@ -298,8 +302,9 @@ static bool I2C_WaitAck(void) { SDA_H; I2C_DELAY_1CLK; SCL_H; - if (!WaitSCL_H()) + if (WaitSCL_H() == false) { return false; + } I2C_DELAY_2CLK; I2C_DELAY_2CLK; @@ -312,6 +317,7 @@ static bool I2C_WaitAck(void) { } static void I2C_SendByte(uint8_t data) { + uint8_t bits = 8; while (bits--) { @@ -329,8 +335,9 @@ static void I2C_SendByte(uint8_t data) { I2C_DELAY_1CLK; SCL_H; - if (!WaitSCL_H()) + if (WaitSCL_H() == false) { return; + } I2C_DELAY_2CLK; } @@ -342,94 +349,112 @@ static int16_t I2C_ReadByte(void) { SDA_H; while (bits--) { + b <<= 1; SCL_L; - if (!WaitSCL_L()) return -2; + if (WaitSCL_L() == false) { + return -2; + } I2C_DELAY_1CLK; - SCL_H; - if (!WaitSCL_H()) return -1; + if (WaitSCL_H() == false) { + return -1; + } I2C_DELAY_1CLK; - if (SDA_read) + if (SDA_read) { b |= 0x01; + } } SCL_L; return b; } -// Sends one byte ( command to be written, SlaveDevice address) +// Sends one byte (command to be written, SlaveDevice address) bool I2C_WriteCmd(uint8_t device_cmd, uint8_t device_address) { - bool bBreak = true; + bool _break = true; do { - if (!I2C_Start()) + if (I2C_Start() == false) { return false; + } I2C_SendByte(device_address & 0xFE); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; + } I2C_SendByte(device_cmd); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; + } - bBreak = false; + _break = false; } while (false); I2C_Stop(); - if (bBreak) { + + if (_break) { + if (g_dbglevel > 3) DbpString(I2C_ERROR); + return false; } return true; } -// Sends 1 byte data (Data to be written, command to be written , SlaveDevice address ). +// Sends 1 byte data (data to be written, command to be written , SlaveDevice address) bool I2C_WriteByte(uint8_t data, uint8_t device_cmd, uint8_t device_address) { - bool bBreak = true; + bool _break = true; do { - if (!I2C_Start()) + if (I2C_Start() == false) { return false; + } I2C_SendByte(device_address & 0xFE); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; + } I2C_SendByte(device_cmd); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; + } I2C_SendByte(data); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; + } - bBreak = false; + _break = false; } while (false); I2C_Stop(); - if (bBreak) { + if (_break) { if (g_dbglevel > 3) DbpString(I2C_ERROR); return false; } return true; } -//Sends array of data (Array, length, command to be written , SlaveDevice address ). +// Sends array of data (array, length, command to be written , SlaveDevice address) // len = uint16 because we need to write up to 256 bytes bool I2C_BufferWrite(const uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t device_address) { - bool bBreak = true; + bool _break = true; do { - if (!I2C_Start()) + if (I2C_Start() == false) { return false; + } I2C_SendByte(device_address & 0xFE); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; + } I2C_SendByte(device_cmd); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; + } while (len) { @@ -441,12 +466,14 @@ bool I2C_BufferWrite(const uint8_t *data, uint16_t len, uint8_t device_cmd, uint data++; } - if (len == 0) - bBreak = false; + if (len == 0) { + _break = false; + } + } while (false); I2C_Stop(); - if (bBreak) { + if (_break) { if (g_dbglevel > 3) DbpString(I2C_ERROR); return false; } @@ -457,40 +484,47 @@ bool I2C_BufferWrite(const uint8_t *data, uint16_t len, uint8_t device_cmd, uint // len = uint16 because we need to read up to 256bytes int16_t I2C_BufferRead(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t device_address) { - if (!data || len == 0) + // sanity check + if (data == NULL || len == 0) { return 0; + } // extra wait 500us (514us measured) // 200us (xx measured) WaitUS(600); - bool bBreak = true; + bool _break = true; uint16_t readcount = 0; uint16_t recv_len = 0; do { - if (!I2C_Start()) + if (I2C_Start() == false) { return 0; + } // 0xB0 / 0xC0 == i2c write I2C_SendByte(device_address & 0xFE); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; + } I2C_SendByte(device_cmd); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; + } // 0xB1 / 0xC1 == i2c read I2C_Start(); I2C_SendByte(device_address | 1); - if (!I2C_WaitAck()) - break; - bBreak = false; + if (I2C_WaitAck() == false) { + break; + } + + _break = false; } while (false); - if (bBreak) { + if (_break) { I2C_Stop(); if (g_dbglevel > 3) DbpString(I2C_ERROR); return 0; @@ -499,8 +533,9 @@ int16_t I2C_BufferRead(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t while (len) { int16_t tmp = I2C_ReadByte(); - if (tmp < 0) + if (tmp < 0) { return tmp; + } *data = (uint8_t)tmp & 0xFF; @@ -547,12 +582,16 @@ int16_t I2C_BufferRead(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t I2C_Stop(); // return bytecount - bytes encoding length - return readcount - (device_cmd == I2C_DEVICE_CMD_READ ? 2 : 1); + if (device_cmd == I2C_DEVICE_CMD_READ) { + return readcount - 2; + } + + return readcount - 1; } int16_t I2C_ReadFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address) { //START, 0xB0, 0x00, 0x00, START, 0xB1, xx, yy, zz, ......, STOP - bool bBreak = true; + bool _break = true; uint8_t readcount = 0; // sending @@ -579,10 +618,10 @@ int16_t I2C_ReadFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t if (!I2C_WaitAck()) break; - bBreak = false; + _break = false; } while (false); - if (bBreak) { + if (_break) { I2C_Stop(); if (g_dbglevel > 3) DbpString(I2C_ERROR); return 0; @@ -592,8 +631,9 @@ int16_t I2C_ReadFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t while (len) { int16_t tmp = I2C_ReadByte(); - if (tmp < 0) + if (tmp < 0) { return tmp; + } *data = (uint8_t)tmp & 0xFF; @@ -614,40 +654,47 @@ int16_t I2C_ReadFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t bool I2C_WriteFW(const uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address) { //START, 0xB0, 0x00, 0x00, xx, yy, zz, ......, STOP - bool bBreak = true; + bool _break = true; do { - if (!I2C_Start()) + if (I2C_Start() == false) { return false; + } // 0xB0 == i2c write I2C_SendByte(device_address & 0xFE); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; + } I2C_SendByte(msb); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; + } I2C_SendByte(lsb); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; + } while (len) { I2C_SendByte(*data); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; - + } len--; data++; } - if (len == 0) - bBreak = false; + if (len == 0) { + _break = false; + } + } while (false); I2C_Stop(); - if (bBreak) { + + if (_break) { if (g_dbglevel > 3) DbpString(I2C_ERROR); return false; } @@ -656,10 +703,11 @@ bool I2C_WriteFW(const uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uin void I2C_print_status(void) { DbpString(_CYAN_("Smart card module (ISO 7816)")); - uint8_t maj, min; - if (I2C_get_version(&maj, &min) == PM3_SUCCESS) { - Dbprintf(" version................. " _YELLOW_("v%x.%02d"), maj, min); - if (maj < 4) { + + uint8_t major, minor; + if (I2C_get_version(&major, &minor) == PM3_SUCCESS) { + Dbprintf(" version................. " _YELLOW_("v%x.%02d"), major, minor); + if (major < 4) { DbpString(" " _RED_("Outdated firmware.") " Please upgrade to v4.x or above."); } } else { @@ -667,13 +715,13 @@ void I2C_print_status(void) { } } -int I2C_get_version(uint8_t *maj, uint8_t *min) { +int I2C_get_version(uint8_t *major, uint8_t *minor) { uint8_t resp[] = {0, 0, 0, 0}; I2C_Reset_EnterMainProgram(); uint8_t len = I2C_BufferRead(resp, sizeof(resp), I2C_DEVICE_CMD_GETVERSION, I2C_DEVICE_ADDRESS_MAIN); if (len > 0) { - *maj = resp[0]; - *min = resp[1]; + *major = resp[0]; + *minor = resp[1]; return PM3_SUCCESS; } return PM3_EDEVNOTSUPP; @@ -682,7 +730,7 @@ int I2C_get_version(uint8_t *maj, uint8_t *min) { // Will read response from smart card module, retries 3 times to get the data. bool sc_rx_bytes(uint8_t *dest, uint16_t *destlen, uint32_t wait) { - uint8_t i = 5; + uint8_t i = 10; int16_t len = 0; while (i--) { @@ -701,9 +749,9 @@ bool sc_rx_bytes(uint8_t *dest, uint16_t *destlen, uint32_t wait) { } } - // after three - if (len <= 1) + if (len < 1) { return false; + } *destlen = len; return true; @@ -711,8 +759,9 @@ bool sc_rx_bytes(uint8_t *dest, uint16_t *destlen, uint32_t wait) { bool GetATR(smart_card_atr_t *card_ptr, bool verbose) { - if (card_ptr == NULL) + if (card_ptr == NULL) { return false; + } card_ptr->atr_len = 0; @@ -724,13 +773,15 @@ bool GetATR(smart_card_atr_t *card_ptr, bool verbose) { //wait for sim card to answer. // 1byte = 1ms , max frame 256bytes. Should wait 256ms atleast just in case. - if (I2C_WaitForSim(SIM_WAIT_DELAY) == false) + if (I2C_WaitForSim(SIM_WAIT_DELAY) == false) { return false; + } // read bytes from module uint16_t len = sizeof(card_ptr->atr); - if (sc_rx_bytes(card_ptr->atr, &len, SIM_WAIT_DELAY) == false) + if (sc_rx_bytes(card_ptr->atr, &len, SIM_WAIT_DELAY) == false) { return false; + } if (len > sizeof(card_ptr->atr)) { len = sizeof(card_ptr->atr); From e2f78edd8c64b33bb1e3fc09c117e0e3383645b4 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Mon, 18 Sep 2023 09:06:39 +0200 Subject: [PATCH 0495/1034] recover_pk.py: more MFP EV1 samples --- tools/recover_pk.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/recover_pk.py b/tools/recover_pk.py index 7ef149ceb..f4a78dda7 100755 --- a/tools/recover_pk.py +++ b/tools/recover_pk.py @@ -126,8 +126,9 @@ def selftests(): 'pk': "041DB46C145D0A36539C6544BD6D9B0AA62FF91EC48CBC6ABAE36E0089A46F0D08C8A715EA40A63313B92E90DDC1730230E0458A33276FB743"}, {'name': "Mifare Plus EV1", - # TODO one more Mifare Plus EV1... - 'samples': ["042A2B221C5080", "BAC40CD88E9193C58ADA5055350C4F648EB5A7AEC4FCF9BD4CDD7B1C558DE5F59C6636F26286ED48622AAA2331D4DF1CEE23B57B94BDA631"], + 'samples': ["042A2B221C5080", "BAC40CD88E9193C58ADA5055350C4F648EB5A7AEC4FCF9BD4CDD7B1C558DE5F59C6636F26286ED48622AAA2331D4DF1CEE23B57B94BDA631", + "04505082346B80", "78B2FCF6769F60B165F5BDEB3A6D0C26967BB165E65A3B400A01C711356FF0A0807AB1A2706FCA419702AC67211287E31D71927BA25AB235", + "12817C48", "3351979A3449CACD9EE113A75B862917F03EFAE68DA399C06342BF8583C88DFE769DF49754A96F7C28B57189FB05B9C10E2305D41423A6EB"], 'pk': "044409ADC42F91A8394066BA83D872FB1D16803734E911170412DDF8BAD1A4DADFD0416291AFE1C748253925DA39A5F39A1C557FFACD34C62E"}, {'name': "NTAG413DNA", From ec7406a40a28b10c395efe639972d72b9587997c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 18 Sep 2023 19:03:46 +0200 Subject: [PATCH 0496/1034] added datasheet for sim module --- CHANGELOG.md | 1 + doc/datasheets/DS_N76E003_EN_Rev1.09.pdf | Bin 0 -> 3810685 bytes 2 files changed, 1 insertion(+) create mode 100644 doc/datasheets/DS_N76E003_EN_Rev1.09.pdf diff --git a/CHANGELOG.md b/CHANGELOG.md index bd279eca9..c4e7a51d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added datasheet for sim module (@iceman1001) - Changed `smart raw --timeout` - allows for a custom timeout (@iceman1001) - Changed `lf t55 detectp1` - now also accepts 0xE039 Silicon Craft Tech as valid card (@iceman1001) - Fixed `utils.lua` library function "convertdectohex" wasn't working (@iceman1001) diff --git a/doc/datasheets/DS_N76E003_EN_Rev1.09.pdf b/doc/datasheets/DS_N76E003_EN_Rev1.09.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0fae083acfa13cbf50ba7fd4d66a5b99f08b2683 GIT binary patch literal 3810685 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≤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�vl<}g!hlpGK+w2k_>^yKT5bA`8>gs2us-)i z=vSMAlrj=1n!GJ3(*6O1VpQAMS6T2VYOG$|=7U($6Fw8KlyGGQGq|Lb!cJ@d3*Nig zePnOYJhBphS``rt5-v_(YuRoA7N9gkg*QxW zNbO$W&ru{q*&gQ*hCQ&36uzwfQu}6mf};$Mc0Og2g<8!?t{x__h}}C1T8?EadF4}WPmRAhT5CPo%s}NR1U2mF^pu!&~nJc_U$XgInwUKR65%N#+ zPSQP#e6WA&+s?3m*V&?Nw)uF!E~lTBBWlWrVyoP9%!NUj( zDthHX$G&F!b_0B(>@04XpD!LGO%VAkQ8Nc?vXaC%pqD1@)B7XE-IsW7FzrdUf6hUz@WgsDMdjhXo^WU9$; z!ZmFm5IfYqe%zS$cg527JPS;}Pdeu&08sUcws-HIu6d)y{IVM^ym}~fmqLcPGpi#p zmYKlCp?3fUGU{TA%j3IStg)6>3rqzYg6(gddwf;0ie12HO_wc)Iq);;g~{30?_7B{ zlpg~VMYUPu$#Dbye0(jWa(0|ICd^cvY=lkJ^XdzWHq@2cY~ddoy>|pl`Pvz_*t!O< z&EoBE2ZUkKxV`(Ddf1M33uxK1PyCS#FwG|-uYs12#+ zA+9{e6dDRzer@l}+m8?%&rM~-w}}Gm{RK_r41x}EW6LAZz1>mjfst$#){X9sJ}?#A zE`iK*eF|VSghdu$y3(Id3eyqYOu&`XA{B?)yrP%&*$iv)zlyPl7-5v1$0P>M9 z7~(OG0P!z{t!D;u}Y13>0vipOh=no$(8d#kjeup7oqgHvV7!|?B!<3hMiLU`Qk zFf+vC*s-92T&V_g3jF&*+(}w5l(2SXwH@4_H2CNh!a zO%wOMgCOelc1JaHPlzTJwVSj_qF%#jd#5p;6)v!;Ki87kMTdlE)2~_iRAW3{aXMN*$1}c=Y`5}ew(8B9 zR0_9DV9{-=z#=0%=ugv@Y;{`!fq3#B(`@wvlR>5SNMHRSR_q!34Ml@wH_!+oU?FCz zG@jD)*L@9sjL8Z-@;><_M`X`UA?QgE&NlO&jC%Ds%*d)RZzOR8Xb5P_AW^4T^McN5i9M$~Cvt`ygy<>< zV}=YAPPdR6dX&?Yao{$ty$u;_)2;Q5dty|A`lra&yNRq)_3*(3Q-C?nGCL+3YK{;s z*$=47a+^m}xBkYH&Ymz2Xi`cL-uZPKC4NZ&_$n*pek7FqLs(<|hHe3GcxvHZLcv3_%jFLPZBQ*i zgo=?ZKs0_+Xbi2+=P!wPGC{>PE|-)TLi;3*?CeMTMUq%bzK1tCDi*7HUA@D`ei#Cd z#R86~>|OLA>X<_`mN2>G|3MdhDWE3iAJQ4obKpkSIrHS~SHQDcy~<(rYL5ZjS}JPf zvCI)hrN=1aVW$=|j&1NdqW40?kT^WXR+MP-K&eg&A+SGZN9&;Zz(PR*dmX)#(qfA> z9eBICIPtLpi83nXv*X?=&0e*{G=1$8ZW(qQQ~;o>JN-o8If zGGpSLL*T)s{^g38YRxv;9Td3ZH~;A7ur5e56JRWy5nho_nT0u;Dp~ zU=u_WfhkO2;I6_TEWj8R44o?yE z4Bg2@26Qr)e}J%%>C#oDb9?#GPVB>u+LE8EFNg z+$I)K4niG}(j@M$bnN|VZ7qE@wSq1Y2yCxrt~={b7%ri&(BUIW!-6rh82vk9&HxY`Rz@OZ%zusKLV7MP*dttYPgmJ#)9}$^8~=5= z_Hs89>Gq!nz{52dIFWP-USN{;lH=9=RR{TQF^>eN#wBqo-i-?|;E=Pjylgm7>zw2g=3k#IN6Uwn^4yw|mo+ zG0%zbahFXcTM^tQh+_$9dDWyB%^dxp

        pP7#XSDnZmN8p>_6jIB8TER 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

        _BHd2HH{!-Q z(p@+BhcfI%)Xa|QI{yJwi78!*+Dz|;H zy>R@;KdO6fpjLwv7>L+O_-{NWfhf^ZC+p;R@B+ig9D~(?oRK1OjOcJVt=n8trrBEB zm_`nL&*W^@S?Y~R|6EycZg`I=&>#wX?ZN8QNtjd$S4bE0r6xdV-BPgX#-ovzR&M4ofF52{AoFKG2a1B-A9WS%r~)PCD#D(JhlSJeqFF`y*cKFd zhRDzCDJwYEnGKcZ&R3iLwVl^4aY6%?& z7yfXfMmO3V4cz{bS+!`cqtdO*yi2f%axpN!b+8IxDTC`8mUdJ9cIEI5@6xr_o6P_X zZa3HJPE%JuZPoK}Wgt(HC4UDDHf|9k1;+S2uO6kEW=l$NKk*Td! z3{wGPaVIFCj62#s~it)E%fMH8WeowclulmJ}a#>qg4~*T-IL(45xjlXe z`)!Fjq9QYH(Tc&UF5>BIzHik$>ysSnrIKr-fM>?^vfWamFI*C=A8rH=Gv7waS?Q9m zbA_pLhyL%`%2t+T;rd~dFIeH#BzBw{0b~WgO`L>K-eh~hqri|R1Ts@4o5`rUBQw50 zUfTDOP1Z+Px+(jyF-8Uq0lgbH3+5S3G`J|QME_#94n*2mW&ovzwn^g6g4d8J=UD`e zO2Ga!w_h5@Rt2#$9+}8rt?c$z7YxX%(;rCUl=iOhLNH6?BY|TwwFEkkg{GfyFZ~S#6Qn<27I;zC= zC3ABKM;us)tl}rw9J3x#I)ssqmaW8wA-gqS(H5dyD2v;30U8gku1coYWMryhhV(oi z!Dj{q6{=LQOTP_edy=vz6-j@OVMW=Q-Fu-aVB#c&X>X}6^3rM!m!nfF8QNC*{l^s$ zQ`T!M@W6NB##|J!Ib#aMwsVkupouT-@TF)gg%q1b_K!O~OEmE+>)u`cKTq~*yj5ZR zBY{-T@5t|^=cNhebr2vlP@nuz3tBL^!u%5jQ-r0Yv5UQ18}ATeA#Qr9|AP%<{qJlT z!~ct9|Nmafmv~T!14e7^v(cd%~A@*pW-N6`aU8uSuH!=WmOVq$Y zQX!)Nqj}H#{m$Q-OuI7^5TpG2erikj?x%R%@u(v6exWS2%Ub{b%3%S5Vrqc5MU~W8 z283&vcVwmdcpuX)+WR?TO9IB)-BcFT!E5GC%}+r;%4F=%^?b}`J$Z0z_qjAS-3WbV zEE}Y*pC>H8Y3#$d`kv29j#aLyrw0({%hMN$iq$!5goh9cnZik!fL?wd7nLID`wtb^nmMl}{$ zO7~7)bhI#(235G;G#nZgbW?U$W9Q*0*;)uVSP}#?5K`6**Cr*w+Y>x8so(sgHa%)^ zLt3Om(Ke(-hWewBdtuzxBdkEh)D!ePdj3I-OvOrw&>DAn^2Rp?+{=c*u3qby6(eT% zvKp(RletfS2-iyzNjl1Xbd zC|Tqny!j?&s@Qiu6L!u$^V10G&S3`!m5fP;ycwYvo4xm9PSpAQN;GXcpd>yR6Mmn( zPUy_KjPhy!!OfGcsiyEoRol4ns6d5(s{nxR)^bwirFW%BR>SnrD|4FaAVa1d1(A=9 z5#tmy`B~&6V@&^hOo+lZU=QI;GE3QYmr-Gl$3_-npUYN{JFP3JTuYcaK!-m>>XP?P zb5~+aO+N(0H&7+iDMN)cCST@CqbIv2z+Va*s$vJ^q^}r`F81dPoW(hiA1u=3azNed zS6{NoGO2T`DkgjYqC#cY7X>aEc2HL`!-$qUh5qu`=W&WBrpvw}EKabYLWGyb2{Qvv zoZiZk&&E$&*;l}^-#uRPB+yNljQ|hXg{_wD@gv-ljHRaA0^LzJK2HG?suY|_)KtSx z6=nBYgeRY@l0hqjhr>%Et--uB#+0|=%k3CRN5*RFbv*;ANE*U0jN+vsz|$kjMp2Pp zT=@mc!L>RQ`2+igOj^Cl(VHl*$M+Wn?;;hNO7cSGAtnU;@j~Q7A|L4^I64tLpAO3K zgM-WsI%AVei4~9X+sKw_)*$4^|K=64T$6W~($(z2GF0K>l?fDsL6pXGA3UNU z=!PS^#EaSzAJNy4=PI;2n(P8@Sc^i}?50(nFC;*QQ0Ww+0-dPKo_(^lU6QA)-O%%P ztT4JBokQk_n9k!y8SWjkMh5>+FlYjGY!Ns^!w)@2^F=Teb}kpjogb*c9*A-D<|3Oa zt8b4Ny{5+%{>8)qzv89^d<@c8$xBrsy`n!kW%DIphLi&!TSL9f@M?CScfPV6f4qK=e4(jk|)euu5}c^C;k{!}~)#MW(KCcHk8d=w;^VRkqe1FtM#|2c`UCwsmch&ErhY5SnvP>x0*Ercd@x0d}+T zo%~AkK2jB$3hF*8KNBo~7A=@f!ZBp<{H$EF5jVeO;I>Glj`jmV*;q$msN9^tYX!8C zTfmd?`X4?>nIvLBy07?GEUvNq)pI`phc;{2Y(}D0XQdNI0}belO_6lxbd?z$$kkEuq#IA?3h39 z=y&Lq(czt=$QgHDrPC)*Pw1jm<+_tRBBUuQp11+!YstwcX@eJRm&90 z>*7UNI;0-PKSK8z9|4K;y~5}T2evD{HwFF2 zEb^Db$ZoYC_Vcay@HC-$=+bNBKPM|GJvVLCRRDKZ{tCE7?vDA^Ioh678dycGL{b(z zR7nZwHggTT&1x5{lIH(<^6k7ZgDCWSansxFxh8>uz2>%(`kqg%7_wf^0U1DmMkan)k}qYDWEcRheN4rAas?>_+w|=G$AR0)E9uvfD}Ku7K2+7a8O_MX= zC8}f5hO!*N8Sm+NyC4=STbIv90jvLD%h>)4TgJi0{{LJV0|P7j|CXWG)+%E5lb4$& zI~1O0O4QwqPa!7^NVPUW*&55L5>=RWT*iTZAI16Y4#b|l73IiZhx*2P^=gc;vjO7Bw z(OY2(jzBRK3GJ$9NU2=2G`P1rm_M2eS(S}|yf{5Q+li)hlgLkWDTQ#NR^r2p$tqP0 zRJ+p;ckK7W2x*)q+h>DP*p%B3Ov{patVBLKFW+IQ7!oW-aN3;G;+b|+fhvR%yAfKJ zXOkSp-w(X;O@;S!KfbKcKb(T;$w&-E%s=0%J=tpI!3+=esCZ;Q2FqY3pO_L$^`^`{ z+})1IugfCSXJRWe`1nGC*|w#NMsOXHE}5w!dq5uR@)T`Tz0w!K)&1GI$-%r60Qob+ ziIo3}SczgUeh|kK7hftTc9?Z-ecrvpR!HmA^ zgvw(M1IL1^d?qlU6OJhXy+O$bqvb7LU6ym)Q1uuHtldoV%Qmp^$?ndcr}V{&e{r|r zNhtA7T=?Q+Fm)6#1YjCGc`_Im!9_ih7O{idNf*U(OS*7HXzqyJs9)0BQ^DS=&+S9H`$<)V1^7scfa?S5=~xFB?ub zNFi+D3oiz}ABpl6-w*0;Adgrh#0nmZEZVm(bSNS#AVuu7!gSjY>WgS=@}FJAs0m&W zpJQh zzotcOu&^VjWZe^9UaV_c+0}}o3RHHSEWv158Zu6Ji$k)+@0}S#!G^T(W&dr3pgF)rfae<25R z`uX(oYOM%y)x)<#XbPq<|AXqW{}-yqNYD5`SI`()82;C9+gGnhd9<(TlujYE44+BE z`TQJblv(-8?J<9zT8!)`_j=bca8A%EZXRg@SA-j$Kj8vQJUSQ4S@}q6)Jp~MTfx7> zRWR}K+#OK1S>{+oHxU}AAB_>hFKJ5zSLAMn)6CD9?}m{uIurj5rhxspi`5@$KZk>9 zv02zPS9tY1c6t)Dv}kTwc!~2cj*Cm~sr%vE^c$DsCF;THsyDjMRr09Mm|-MMVyhr| z#lJPiPK5DAj{cPsyZKY6ZY$LMiLN^Ge7S3d&Yc^&EbWL!>)&~rW2qqB_5JAJ?cub_ zc5W?N{G(}_;g=9_4-qI-!^RaL)N?Y;*hM}jK5jyb*JA)5$R1l9#xF=<-8C@%QzoG={AxcDidJx_VuibRESv1 zic>;NeQ-bS$n{c2R!XIA0+s4yLb0lZb0o+89IsAD-F9z&$x?dEMiqzP-KJmA*^CI8 zsg#=Fi_OULhau1Gi%A{*^AJd~9jCKfQo+>{&-er8HG@DO>ee)G{EI9U57InL69>F58hC1JnBW4^*S zvWdZP91%vAJPJ6lJB4I!=6tFG^s$bl>#1CATz@Xu$6HxEbEtKrUSS;Hs=r((>H-ZF zYymCMi6y83=raT4()Y8t(>7sf@MkYR7??h@T{i?;K;W!l+CY7mT~0biFiK5PJuk~R z`9~n8kd0(&=e71J0r#d@1)=qgwe4YIP2N3SJ)U>mXua~}lT)mFc+qtn~uLYJeZ9I&C; z)u=QenEK^6v$CRE&o0K(bHI?3}F``yPOXDAv$s5z8P zeaOf?_f@>5tQGdsU=hQYF>xQ|2)6aVPz1upgXSK#@wIV}Cz`Q3o-hDn-E#p{;if>N z87LnGdK4Xe^fu-k&o;hatQFWGNysL0ZAm1}u^wT*8=mZDbJ4 zThuq_dr2NBE2tqtzs$`m;GNM#Q0>Nw2WS}V!0d5k<$3JvQeNj?O*9Uj)3VP7Papu+ zI{@GzP*!e-eWVHb`43L1B57*dl{xx;qEi^W-PGXQi&6%!*)34b;LlWbroRCRxR%sxv;fr4vS zD4W2}mc@KT(EIP^5KT&yR?PT3Z1NEGwzn+i2 z?O-IqaHrU3SoAP3512i;s%%?ahD2Ug#r{X0GQ!(s*$p^lh@_T4X6Bo z9_W_>^=7me^9k#{e;D*u>q(zj{|{yF*d$uCHEWh_+qP}nwr$(SF59+k+ji};ZCCHO z5q-NmqR-o>|H1mO=8T+~V>~%ElH}pC%A?-$q{y=Js$7sv09_qF4IsEE$XW)#=@cM2MKw`q6w4*rRbqarcVoq7hhXzqsZ~x}g}hlhg~v zaQ^Re3t^AGcHZUTJq#LZeWjPrlGLRWi&b_pyB9D}1IN6o8yILg5W;Ski09X@0p9NC zf{CaLhG2aQIw+BH;T^%KB-Byjw+i07Xdx#_8PlAIa@s{CNqJ|=)l#DA(xo#+)4FMG zOz(V<3`Q+YnO0uBHAWrkwp{QK{0uPHxIxmvC_M^J3g z?9_ZLrVw6lw0{9jJWot}Kw{E`X!bfz7MS&JMjQX_?63t|6sKVi?Vp zQ0gfc>yJG zJ=vOd8zL;+V|wqTDLexJUr?PdTF=&aKEz-u_QNmV7oOiOdkFcnS(+01C&f$=L_VJA zdqda_57u@CUe57GpMp$bI}+NOgZcGWG|dO`m2$-9!q1+PsYWB^I3!8g?~=2KR`fR+ zE>Df(svA0`Eh!nnt{p%RUEiwjwKQ0`WLr*eg!r1!@TiN2h9S6PpnqjdS1tdS_Obg0)= zQ~$!PQrxcx&JbJp6j;?3&2|Gju?P_wBkbh&BzE+-4uC=D>JDcbBd{!#pLzi^bm~B-`i}^ z;KtC!QM_H7kXk1DEM{X8%Uo>%K%f?JxVf1agC?>G?L@BqQPKliO)Lp?xm2m8xkGQ( zW7D5`7ks`+!MsRcXv%ITGg<@ zG2?#)hI0FcHL&Fz8wXRe+6Z;tZQH1b>j5&W7Wi_ zt5qwA{GufU$XCdH!LXRQ;$fuj&hTL4`bS_6f-iHSQ&XUYVyo>hjAy=9`8yWvT?b5g zCm05K<$hriz1yAV0@873Mpc|NsgG4&(ZqTP91X}Me{DGs4LVHEiZ8GLNr=<|&~9(7 z#&3?byLgL(vD=j-kyQO5FjLG)7IcX7-y}qz%U*co!h!@2j?t5qPzpNye~757jfu>Tb+jktBF3=U)i`4r_d*5< z;rFp7lN>I;X4A7H$C=35F@MmDk`|D%g=DbLUJo>NTYGw0&2X)o0*K28Urbm`3z1Jm zrOU*KK!NII&2g<_+H9IOL7tfV5|wYdgZ%(2758RMt_XuadLS%^lTE;%&4PlnCj8)!s4$;um$^RP+z#F0gN^GM$z2^6msq zm&5gya8VQUFmUcNdd)qrk`cx~{eUEYy0{4XGqLQ5Fnhu37B}?7&Cs#<^;X;o0gLqf zDh^ZgM`p)=@12zE!u(Hzk*Y%l2aN|(Zgo2%Pu-??C@#bFX{79FIr4~4j#*TLt6UT< z&1wBMFJy~?jaWEdQiwaME(>Y1XjV+|3TVqm5g6Q^4P`;#`qXWzU&|?9gCVo7=vxJk z!~VQA-mb_Z)C?vw5_Dpj(JgHuN`#9;f$mGfGHGnqamfpEWNY+SzyT=JIMESaIuTSD zd-l%!CYV96Y44yRy~&2?LXIOX*6Gf%T^rDFU_{#m9;=4*b`7BE?0O=57qos*R{>+- zsPV|6Wvm80e|rzeej^VAt2yh3#GkT)w1|gmW|xth&kY{m&@qKPd~H)@_qMj##sILo zm`$(55)9JLNw@<^6}GAl65DtlJJj?v*5wDwX{72?b{JU(kizBY4#)scYcGm7C2SAJ zz&#CduB#>uZM7lY`A#Ci-ifmF{pf2@37d$}J5Da+;}S^iAqxVep7*3RaX{G8=JBMA zMJ3!uhSmkxoxRhe*JMv=@gbMFG57Px13bT@YMgEW_{$0tSsGVYJv2eJ1@&oMm3AH)2FK_qGzZeV z7xu;7S439F7sF2`={}_g6*xqlN|DRfV0Dx4=$pEe(-9-H3!!1jE&*rjF1KbU?=X$fu_`D0-2SC^9Zg7EuMe0V!HUeQnlWXaaNL&ORxHb zeQ=~i?4~sBJ)UN+*HQ-RqjpIMX)zI9R(z#I!>9Ne%>n@@Joi7w-#E3sNxcq$pO`I8 z=fv)Ui3m80xQWJzr>hMPoUjL+oc!Yc1x|TgXHNSC`a-kTQOq2bb>hAar1WWR+0vLw+DbA1@|%slFrHLWu3*x`FnkH*Eh(7n zgqFVlnz_%A?vd5fD3-2pgAEry*`_i+pOc7Y5`E;mpbndzcVew+KDoNE zOC=HSh@UijIcw~cQK^_0FgvmpctC6dSZZ%O&oSFss{2@@JJI`aBiwH~W;sjDM^mQ< zSE(ri#_palBKeW(2Z6D^k8T0x$O2jS&h1|+0bG6t&BkZ!m%M zsaHW*L6*ZHVGROKBE7f8KQ@!M`t|YvS++1w0=x~`6AbM}F;$VUl?cI3jd;iMz8;YH zGkgly%IEag`Ow9*e+~ucyLU(_5t`j-uXl#=440wqD2ITpa)UgSVY@y{tt1mo`GL=| z*!wLfR_x4z{uI67EZP_AGH z0@;4n?Fv9=*+%mL0Aa^w@s52Lnhyj=ZSs!S)e+H%`eYw7y%si@T1(OGFFukXr3ZTr z6Mi+Z3i4JTkKAN^s)6a$En6FTD)%s?bohYHe-J)t8$C-m~Kz0@x%yG?aWTxml^-c^itnKYc zYP+1?-i0D((`)IBA+{)hma#DugIqi%g1PD>@f59#(wvQhxHQAnJNJ5HX8fF>t!fks zBq@=hxfgz!QktYBmm7xbn2SIv-JaLmlR1Q#e>WvFA-ETY0O0o7pppPFO z@%Wzk*`b0@x}p4xtt9r&9zC!&*=~`L+d8;0E4aV))Tv4e9B8dW@}f;Zif| zxoOa$>@KAJ)M-G67nJvWnIz*O^e7I~)X>2bWa8t}?n_uQ(f02ihh-rdSdWf6#ar(3 z5)VnRqKK9NG%##`g?lx-yaOSy)M>zJxxM2n(!qNkGzX8a>6M`S>OoW>apA0p23F@K zVl+?gk6j{iA|n`D#^91jUIiq4p+nwtC#B8HCpREKoDtm>tMdkfj~0O|OBukzyXI$C zfiDcPdl<7Pla6;RbNoP46sYvEb%iCX_Lxefo5_VqWMRjKF@|6A(zQU-MO$p7-)lHL zZ<>zMn;QW!c#HYhq>D0K(<**(i-%x&t1bRZ6kbBf>(6+FFH0bs-|i4_tZ$)Se8krl$qD$BEZ7`c;e-U-=xO+> z?GYduO*es8ztz&L+eAibruH=jqpKuA4vaU8Iy&HhEz4HZkp;0D=n<=zgIF%EX_+9Z=Ro%mfWcj!6&=QD96ve4_3e6KL}5mXi*VZ`=SG^aoOXhyMv5ckFooBd(Wy2n4!FLP+Inz zFCM@&bVCWTKr+}TwyR;hLz=huScO4Blw zZuv*Y#yyNKOtj+sPa*6NQ2NQ~gAzc9hyTigfr{+ldg6>Xb8=!gMP~4oRKgoGaX%94 z2&6IhD{N|8=2B~~wki16%pEh@JgrePL?r)vzZm;toR9GoscB?eH{n%JMvq~P|Kgx9 z-xk06zU4>p6ZCTZOQ4dd9x>pL3)_swtf_+5x$?@QaqN!S?4<>E3Nb}DQOy9ONE3hF zUFn>@6LXj#iQAw{wOgzLa*0vA?L?k< zfFj=9D0U47*TOA24f`Hh#y|nw4D-#iR4|8qjf@nTx`;v@hFjS4+Iw8}T9RkjR)NiaNP17L*oY<{-*JWA!gSM)W-|gDd_joG zy9@|8J=L99Xgn$;N_)6x^LbnJ4ao?*&R}Z5r7>CGM}NYyEWB&MY7TaOi_Y3-M&}=UCb?h}bU1?8ocxChL2VyGh zB1@0Cx=e(8%>8#XXMzSzCR(h!Yt?gS8ra|G6f}xXU$ARe2+OJpZf1dan(s}phu7D<)-BL+JY#b^ zkPslh4uAxB$#*;V!R?mktBGM+F5lcB#LwHFzZHVfV!=Tq59y<~FvnT78Q1*kdSqN} zssS4-w=GGhq*$g>_FXCaMe_+)jo8repY5~u3K3qp-ei+4sJe7g3<`bv$Lr(LN?RUO zpwgQ>I!KSrCuyLf9zF8Z+BEc`6jcUZ6uRv(XaFtuzEb4ovHH3}L3d~VFp{O3f_>iz6kKb4X9GgNBsu3Ek;8tC~x4Wzxm78aE6aN5$3(eM^cobMes}k#8a}aIYj| z@(Bkjm9D0UvLZo$5!G`!a@qqn%hC(|Wx<5ZuTfO^u`62%Yg2)e$@7ax|H*`ZnL-Pc zrtys1`@?s_4}V8Y4xR1pvIP%78|j=E%0utCB^aGOX!;*y)&FmTAJad7|9@By4FI_2 zZYA*m;9d2IV(@)53oBZ}N95r&J`=x_cJ0%jOHPu`3@K+vdL2CrRWHE0*xy4lQ2QHe z>6SnZu_F`q$O}CI@<8fK66Ok|FaafAVtwDTlq|3$)ET8s)T=JAFc2$HxW1PdM2ir= zItWRe*3@y*E-6ZqZzvT6hix?JNY#SacNtM2gFbDNeV&L#v)a)*Xe?`qraz-Ln!}ITN@xPpC~7+JU{#NeA?%A zcT5#i))yxHNjefLmI0Mww5mJmct-7I7R3rk^%n z>D)8VRkYwt75B@y9T+*W)6X)HT8fLB!!2CM6cEoApgmI>_I@W9N{ADk|Qn{2ceKk?947 zG3#*Q6z(EClnomad1BHq2sL?e8WY{my)J6j;%`3aQTiD!gou;P%Fct+P{L?|a0k=s zaOae9Mr@V=-oaTJk60)=dE^UpOPK0Vg&^+)*0hh~N*4FZgCdcNlC#fvYMia#QV8&9 zPBNT1G$cjj0|U)iDuKpPLot5_Zzn`po{)`{^8OlLSep3*sdpKfYN>t%%0i}mnf+K_ z&^o)jYbwicyei&0U&I!A^Py%4uMZ)i7|uo27Vc)xkT{5@baz6*OBhBK)ePH@iLGqj zU;+9mA8i7NTi+QsUOWX=L9=v227=yHbx8-fxNtt_D=WnWPG)0vJDyOdiJ}UyS_H2-*RfR3of^X|E7ZQ z=3i#l&gkuUQz3KX$1Yx)-*y$AZ%Ut6UmFECTcOE1ZQnP>4eyZ*Q@zp0c$B0&m5~?ark-Rwh0m0eva`XAd&5*vkP?YYF-kg*&GMJ z@7s1TWe7@o6GgK#@m@P)moomPh>G;lo0Gx|6&}FgOTOpiFZxb7{L+_IKm}w9P1-K; z_Y{kCY^sIhADk*YG+=VqDV*PBlbgvMm7bKrT~T0U)T3CPr)1Hl{nt1TQnmz^y~onv zh(%U$T2ulquQ;n~RQfK5z?-!Cg+Xy6=b%fpt3!Xh%&XLII6 z>ESeIQjsiAC6B*i2e7*syPGB|Zu}@6I>s7m9<3X$m_3A5aZaym?s?JU(`loCP()MZ zxi?M`D8E%+;2)4j)=7%mwSrLBuQ`NQe6dMV087dDoAkahB6i9vvUxbO)7yk_;+$=+ ze0S;#mQ3hv%hS57`K z#f=D*0|6?V8^lVnZDr}lT`NVQSV`AC#(u*=D}^VI zZDLW>H4Jn2v<^z$?$#ltp%C}K_69{ZyQG5}0;+Un2=ccx4=DE3HOLFIB;f-GoK(mT zPlEPXQ^?J0Cj4A4_JHx$lH`t+Anr*NM(T4T@XYlYKiyj#@|qvd?80$DF8Xk}n`5%1 z4i0EqkZTZ%wJh}vZ9Mx&x)`7Lj;Tu;2cRxum~-p5h}D%Hgv{r~lfN;SATk30O?|DW zycGNs64f~U5z3&DeD}F0J^hF^b*QZLlciGyL#CUwuJw1|MHGK(zU8U7cowc44eGI~ z%z2^ep<^&JGjS*D-owtyhx@Z`uZ^I?E@-Z7^BSdgb4T5xLzo12h^Nc_&Dqqdnp!4n zaFx1X8tXm`Ys`3IUN!j}+Hyf3(4mBaZPeh=2)2AX()eHpGxI3c7VrIV9saHNQ0w96 z@YECytAPx@P<_TLVDNK?e~1)Ews#_DgGF*1X8aKT6S;8v?~w*A@3f^;0vQ>13))7FZw) z`94cuW+t8xJ!$-K#js36KKI1EY;q#x!QxwX#Sg<)kyUZ)gwuLFdKU**JUNX1W2Dx#D6tdVotVT@=fm7+A0!f!@M2|xd+Fa+(lLE(^(#Ix@=7LN{gs_AH1I(Bfb?}uM% zR32fZgCrmLB>)s~dQRm@uS}T}6)e6lNOx=qJYfLW65Z?9>r7ZfNIAuTw7u$#1z^g& zM%5Wf>wd|q$BJOgkRsdeYJDup<8OUgP0!CHZZJ&p2KA>z@%fxBbOV-@e7E%fuH9UY zDzV7jonYr0;7`SWuXSke!cNh(Pz2#p+_nkEMCXzZ-3M5%QTCeM%(Wtp_(s*pMeoYP zBGXvvtMB4d57Pi>3?N0cKr<&;Xrnp8rZzGuu;sDV7g5K|zKd3QeUoGv8Kg zCuO;(WzG@C%CXv}JLU^JDz2x9AB7F9$ZN}=kOsuO#ydeBSj@pHJOfl*dea#Fqhqv;6MyLF9p0 zjIdkXnrp<^GHf}Dkps14pSqwglx5qf9NE}Ib83L(BxWc=go!BSMjY$0^opOZ!o^uam$wR~- zYyAb_2~;^Gh}pS*`U6jewIhD z`;h#^AsE%yGtN&^M8Y``UwVrkO;Sw$>mvTjm6N&XrDh}ri9c%dKn^@nH=CK71@qoT zT>GtjhpDk1%r|cZq5F^Pp{=hZ>=aNXCKGZ}U2AqM*JzDe3vkhSSgQ7X~~Y|%}S{62)4!rHEp zR(+w1qr?eL;>42!z5`G@gk8%O&7XJa;BV>n*}YKRp z(%O+|ZSJ8iPZphr25g9+Ms#0YQ=Yw+u&e&|xHj5OhE|ZN%O2|-E@C1u9^x^vE8ild z4weParkz|bt{~NZ~bldQnaDgK_3*A5u9bp zga@v___fQut(T;k(A#R9g zL|mp&ty%@!489LJj8ZD_K!tjWHWOg%Rey|)A*w6mzA7G4E_bbt)mx@sZm4|GB(!CO zmyt^6?|~~bV0j2%BQt|y6+OzU0A5&DWP}?^cB&e9Y5dnTbTsGFW;9jhGcNemO;-k9 zyG1@BbQ*?=d`^ep;7q%Tfx|FNPWv3xVn{X^HA?r~{i;%Qqqmq9Dug`3yFbSh4DsL2 z%*u)o;l?Ea&F-<#GdNT^64Oy#@TM+_8Iq<+?(K<=j!Z7t`Uq>G#Vi{6ZM>gl&ZlTj zpRs3BKDv(p7z1{z!A^w^RK9~A%UKCVI&L<_(!^II5sRg6BS7+*3G+ujU`Dz-(U*c& zh%cPgk?E^QXRF3?7B)wj8d7!4!seG`jX>%adh^_M`LuyLV^|PGw2!*;0m!f7o2+E~ zCpPI2GvND6SEgw7KHOa&{X6 zoK!2A$U8*b?hYBdz>CTr7|U^m46L@VgFKDX>eSaD#+}Wv1koIPgmohAM|HVH8kk9B z@Y*3O(upH5&X@ZrzI!;C^~HJ_1};BCn7ZT`7`3Z~tJGvUkY4QLIuf=Mp=yN&==@}y zrP*!UhpJ`Mt$9Z#^h2}y@Y|bwCsO3*$XIUq>bS!D8*>Ws8exJuZDq3eylA8RXJj?hP4x6L<7^%$Zkw~;vwsq&sMt7}2G)bNV* zL*P zOmWVQII$l$8b}GRE%J?rj8R$d=$a3+REem4t&8-FtAT_Ysh>CyCaq6rajMQ?l{Si8XMr1XoAcwwJE4 zqpoIa@^4?JRvs0uswa_Raa}ZTGzdbz*1SZT$1)&|H4Khml{Jsb2y78ztUoQ!^>B{FW)lXbU5=NSt^?P_+YbI}23I=eN zAd3p^W46|TA z843AOmEJn^au!-@dMyCy;x4ZORMc1K11(+fmIn^FtIdy&YP{MK03qFG_GtD|g#B&) z7wb_eOhR@19@_P2V)9n$(UX4ch5b_Cre|NR=e=-fAll@lmmc?SlKxz6nN`AYD*ZK0 zxBJ$qFBA&|bU*i?q0x{3=c5@mC>Q8tGYwFdr0I>hF_1d1U%Ag$uJj zX%|!BaZJ*w#YWCqDe1Xwyp7jhdEFg}@$sdHKtTabXad*M?GK0%D-@S)T~P%mn}bzi zS~(}k1l6C@^pMZjo73e%up-%6|8zS*IOF&YDKD->IUy`TP)&$k{@uO0{kdRJ-IVFg z6j8}lURU`e;zzy(xqKz-W!>s_Luk$MjP#nC8W77}sOjX1C3?Wu!Tw*wBrFt{Nlp-8@Xr&4g(Y?G&AT;u-Q`9AmPzVAn7ifVa28s&!$D%Ni1*z#9r` zpi?#=e>Ax|w>zN8>OCQ};#M7_|7Fl&e+@T5llx)A@wgAJc#1Sp*SC53%~t3dMumze zr2aoDJu88UQK{h@sF5r@#KkgG$(g!$$(d2A?Sft9LB0orvP>vK6~inLF}Evot!&KprTEyxG{TlNz1cQR=C2LZXiymlU8Cwb6oH zbwlObk zduL+iVELb9;fq^nL`g&@kdY4%v!(5Ds8%#L@p|v(gN~P|&9j2atZZ9;-HM8NH5Dw% zVN6I|5&R@2EJMO=h~S-To%P?_6Cs3^K(*EZ)%flzD=cSQrTLbhipkDdIsNPOt``h* zHu-OvI%lwNp6qc*f>ngg z$hRsNdDk|Ftz6Vq<=e^Kz6kx3d)?+u;db7kyN|;}?XL+&o7x@y(KU;&dNmA2m^J%~ zG)Scy=n(`*zefBAZvKv33yo@msymr?1_W2el!L8uPZpGls%wfwF;r@(ngcOM&y;ne!)E?47onp7o>Ckaaww--F;jWD zGz2~D{l%G83Lx*g=xs1{{Q>S4E@-?JKN~Kh^IkkrP0L0R)i}eFtHC{xzwZIJXAtA= z_I1sNsJ~CYJZ^)n4Du0TnaG1NDvav1FI^SUr$$frW~9PziCuFc+d*E3rXhJRqD{=J zy@oB@r9SD9jkLBLA3`*iH~~NLR);7x5Ey(%>V1&+cB7gl-X&VCWyyoc!wBG%{|%`| zdPWZOgDJ8b;>(KbPQP@g*y`RAl43MIah}kqX6gkl&pTZ>+RuEbMuEHg#B4TV;_U1%BN+M@rQlpEa! zwf9{7_Nn6{kBadl)Yz(ikGQ7Y=hTBYwFmIfR%~*e3WG>!i(3I0rm~OF>|zJGAd%F1 zofvL(Cr@0P(7a<8og5a*faiE1qa3++91m+NWER5Pa9mKARqn>ShG$|#jdQUOoyqIV zyl&E+er_uf1x(Qn&aP&u0eiUGq>H?B%my%0=9`*$EnWX?NV5i?Pm-#9?n6%qxGmGUC%1JCrS&okoVxvCT`1VQ`wihmLLEzB&WqOdY{s$RG*JR9p8 zmsG+faP=EG88bt=<@EMG+Q422BM1r?Eyv6fzQy!Tc`J+^&axB}=XVrTC8=f?N z7UEwrA8!S^D&R6TIwH6a%<5h^^>W$}uQv&Ne!14~nZh`xrNB zp5uP+(>~A1foFSRUZSU_Rhon@0`&3=KT-2lTX|ZM*v42z3(4=5y&RBAf|2!$3W=4v zAoYYoz^Utcps_1^Bd3clkFl6-QBA!&r4XN@HdtjU$Lx_;efW&!A;+-LqFZ;T7+BVl z!IJ1>EO=_C>%q6!eJR-7F}Og1-V9LPGCMhCw6DBVdz3s>X?pi_axRv3Tx9vMH+71` zoFkq)!~*0&?ATf-h142iB0s8YJS}#*3|kC-Pn_iFdWvf;vS#@q)q5wb zQy#6!I1lkUu(nLGbRj~_tK|^UXSg+iCKnnDCdi}Oq$tEe7UgOj%3Dl-AhQ<>TKD=9 zG?6ZyaQHbS;Tai+IsOH0T{g?nQN3}526WGM5z7;h0TsC}p}eIf#dT>tkIm(2+r6?ZSk z$LpavY2`Yq7_CA>IC(<6mJ6dK&p?U)TU&j%CDWGB1jH9t*Bs;=`VacTk{OGpN;O~L z)BI)jKzypvpQNM_9s-}Urab1rxeOQXU7$ar34xm%T5n-gwVtkHEuM`N);rpjc)=S@ zA%KE*1!#<*SW`bawJr6nKKzn)NyDE+<^4vDbTxWDG|I(>>7 zKd0yqF~zey!1@3miGu^309jD7L;V&Rh(z6I%??!2Ox;uD5Umq zRF8*)G6|na*J&YtM#?ORD16|Ksq1 zG!)%hbU3QY@Eu9ep`c|Ax^mo6rA{Edh@o+QID$1>6OIcZ;V@5nhm6V35^ z!8r1Pq~mCSjU%v{dM|&-OjnIJpG%{})T%ezp@bMr48kI|Y_VPZUE2*>m}pvH>;KR# zml60MWZQp(g#3T7hyIsp`;Ywo*1u5ru=)_%9-Qbjx#Pk(fJFSDDP31- z)DsLB1fdpFc}T`(gTVnNJ*~4l%cBUnFJyW1j6kFVFbaGH>ToWFC^{)l4bKFswv?S( zZmR`w;2*wD2e+xmBS7#}xcQl$6|70l<61Y>@=!O5C+uimnramne+JV$^PyQ}Z;^rQ12Sd0PaIU?avsnvND*{}8Y zDv@`QOy~zh#&PpR;i@~8ISXV3FC{*Sv_g-L#tasutVF1N1v`;i%RMgXLhhnlH}ByM zyhtGu(7Wj0N>mV!3K36hO?ZYly*HcyZ;J%6 zI8HT z){-6`(Cb_(wUmN(Z>!adwuhM?pBTZ&rQIb;|MCTvyb_h7&F`o`W#GI}<|jbtE$ybV zQz@j{^4ixkP&P6AB6exZAe6hHsV0|QpvdzMitMFXaotZvvyEkKCNN`wa{M!-nl)~E zqYJX=Rm0m%j-TyZ44mcR@*<=-n^k?l5k8#;!#v_cTGD5a(>Ly|xqY&t8((u7Om!;V z1yzMN%8y!UGZR7J+qfJ%YXQP_;&?65LRQt4&C8Lk+0ugs!9S!43ZYN$CLy-0a^i?U zFhgmoImjzJ^-MtYY!D%IWpo%JTj@7;@p(^^lWa7)2;Od>VW`YARk81k zGq*S6J)j=3xDORIGtfasO5xq^tRCTe!|-{r1$9qS*3kNQ%uPm0?Ava&?1tW{Z zsnS~KNwtE1FrZ(>JpBm(&UL(;7F05&Nk>)&qH_T%@~OM>OZGc3X0EeHw8HkV3S>{g zH>~SDgD@cx0j48tRE;-{0)+3N_3ucFX8$*bUnx*@I5vm!L|9#j9TtdVPyQc=;;Dv= z)q-2+;SAR|y+o-xYzLTuo=t_nt>4PoF9f|1=Oy5E5bT)K5KPc~&*SBaH?Uf^*qT@~ zhBs4oEN%l&km^@_)Dmmt>>Dd?<8Bo84VWqGPNpod6T?8oqv3M_7-Dqt%35?eRJ&xb zZm?GdLhm}ADWTS6VkUymezWX3rZaoEd+3v;WM9}%H>4{9f|qP%&WDBhRb8>{(1|7h zE4))yTQgTci4S{P8u7gyI8k|j^`(33Le32l{=QL6&#=63o!Kwj43vagz@w)) z1^sT1IY;w_(%4kp@KM6df>G83+kghY3-|6Z*~Qv zMxPu-@(djR(Rb-AppcJ*zHkk{DGjg#a6%zwZk?$f&Q;EraT-&I`zG%>xLz`0>PxN{ zYY3Q}#J05qcR>&=MTdK3U&KV2GP9h8RkmftD|oSm#t-7oQGO9f(@WvQ2^v6;N)R*> z@72#iD&UAOu>I=}(G?Y%{6Y7M5*XPi`A1IBVP$AC8sw5*)L zCbn?TL&bz@tb?e1S=d!LNXT*2q{GDA436&TktSIVh5eP-A!88Zcphlf>%Ra#>uhVS z5FHE^Z(cFR?AU(wWt-uSrM|Xnlrb#3Xik`}ppPQ^){Zwvf*6!=M`FUaCD8qhs_FEQ z_v1i@v%f#om-F?fdx z8QOcn5yVX7RrxWFrSkKq3A!eHSK9VgN3)>zFm&E$|9Z&2&EPY=4C^z(F9Qc5y^@@z z2IE`olQC$z$$p(*kH>cK5Eja+?Ml`K$?}h>4=M+oA1a(mnK!bAqw&rhL~a+>Nu@eM z)P+$LIIwE{xjY?HB|7#z*il2el7Rv>Gd4PdbUl3%Lhg%csL=vBG2U-Fv_-9WGQ$4} zasnxPUfewL(pG=;)9texi+LaJ^vuZ)YL^oZl*Fy5DL4+(t~tGEuS#i|3AJvkW4bz1 zgJQMdgcZ9rzdo;g_|VZAPF0hZJqN(uW=PbGA23ZPMZFUSEXkjeV70p*f(aT#G3*wx z=reIc@jqm+wHjdfjII0QS@G=|gLtQdZ8Nnz^~&n=eN*kgcau88zo|3QEx`+$Cb1=% zyO12tm-cuNKI8*j8QW+pG6V~#=J$l^$*19!5(&fHO#2M1pj;dh3!vyTFa+*$*DzGf+w;)r)NWRgnemsJ)_LVjm0U7KMu{<(5n3FuI@y>Tm#)cKDK92En3W~4pr%E6h(I28-TI&r`NjHer#I$LV_sP z{L*DxynxmT4EMV|3egoyEY;$=qaY9jy~Q_8W_%5bq2Uj*hK2erm#NF82bA6LzE;9K z{`=W_P>DI_tI$>cbs*#+!W~$X2ExsKMO6~m)u+qVAWJq zAA1`!6pXV)vYUsuLU!uwR2Y!YJ__SAbEr^joUJE9e_RDq&yn?qbCLQDZ+DnnpjsLBE`XEM{vnz|i-=_4xa~ePIusY+UgR8Sc!(Ub)<6!Q3M{L{ z6sOIOx<)U*W)hvgpZ;9rR|@J4_p2kV*g+`C-5G&!>%s_Cz8&qk?ubRUr8GQN?wCy| zg}lmp`QH|K>Ej+a?Kb1@>&Gg6u|iVtBxpA@$z?Vda&w5JtJS+VX1*IC>+XeCE$VwL zp|!2%IQWVUYQGEeo@J?>Uz3gFj)WmcglCm71mrh3*!x#4xvS$OmoKr3 z<{B3E!2C7Foxv}!aNj;7+`a*Hew<|%5=imJvIN4sbfbKi9&IL-q$c{sjjkzE0H}q# zi?DO9rl+^PKtKL6+v?kk9dk0~!#KTk?0D6HTO6vBANy$8PX^vO^d?Sq8kYJ2oEzun zYPi8>K0h;04i%Qi}+Q^%_8$AVR%c7+&d^A-srSaCvo?SN}?}}i76H!p2e}qQoL7m5>W`nZ| z>mQg`+)Gb5iKm^9dF}wLep(9oCV%*E!~~7OhO+aIxAI zZ%Ox1HgII$_dZEGzhIDaEQ%qb4;Cb&n0y%=U=4OmXfA&}mjhmQ{Y-^S?)&3wW#kTF z{m4mQDB1@xEE2?Zu7%B?%aa6W!0<}?iYl)qG(oZpN$82FnH%v|pSvt5k><#f{5XmU zk-ySzA|mc3=XF!S8#ljLS}ywtctrlO4efkvJh@~GZOJ+Ww<#0K?LCp_%}*Hg_DQficm|AWl??~s#>%>VOrh527z@xM7;v1ZJ>-yZ)f)JTE=9n`P3h5+|$ zr%#j|^Ha7AXOT9c5k%UkEZsu|EouU06BfDuWbX(Z7&QqY^3S^#6cOQPPya#gR$@p> zye{bj#kQoQVt||ftOKW_s3C^j+gfTDqVSB7042dq`|Bu?6{NLSF+doEuTW<$1P|HB znWfsed6?G2JR1f2N?N|Ef7}#oPjlVBqB(d{<}s*PwTGGj_6t_5qz`OpZ5@`TkJtvWrEwi5}mf2FO(=sOx=Gw zryaNFW$jOYT(!-Ucr8ze?EZKrxzCM+{A3%XHyy&b*=3Dki`-c8&etYwG{lX`E8>RFq^rwA%1=Qz`uYO|h3Fx&8ttII zZ}P{xe}ZSlS$Djh^)$;u+79@aOj}RfjIet(s$sh8@t=vt&e&<#)y1p(>QRycH)-$g zQDUge6_%j>1RdAV?TX$$eT!)0Dmiub{>(@c@sU4)eUCVv#`T%Du&?#%KFn;IEu>cB zO*w79WrXsv(*CIf$w_*c1E&O%jj=B@$`0QJX(c^LH?mErr{JacR=HX`mNP`2xuuFW z8n(sHGjAtnGmq1)RjQKXVJ9_SqQtvL=TG@GG;gvy>iBpEO8lsu8k%!!uET{W+rKVr zVy9Bm2+0#y=d(v4pMH8&kGJmmiS}ZVP3&D77j*vY@q?eL*)lr>hycsFsd-|!Vfcxx zgJ)ZH4Xfr5<&y5VY)uXsrvpM$n-;Rr|c&Q4O z9)C)+c}nMUWe9fRts*whX9vw@e`hw_ix)tam(z?Gcns+=o>fbhcuf$&xvwKXO~z>} z-y4odQtOb9No>)QUhPl4f@ z%6q1OG=*;I1%LIJOkOr(LiI(6u}q$aolRft)1foFDUp&Of=n%GXUBI&mLx2qxW|}T z0CqnuMMFRBIuQI*?kDn04ZmaGv%9h zbE!z)=^%M#OXYl`nOg~eCe2?SDQYvm--%@amzseQaj2bIzla=wA^SVk>G+(~byKK^ z+NWE@1jB^_U2iH_09l3}*T955NU=T{2iIL&aIKB(`Yw@VaHCE$_kno98fL-_tO09hsNpSt$4hF zCwdWEfaRDK4%#$IL!g2oMQyOI&(uFGzF{rmskwCC8Nl^uUe1s}hf~EBRIgzafUS>egZUWkr}?~gwB_h);85av););w4C1>LkURd)N_TC4x%lBTMZ=G96VubrLjg|uR zu>dV?-O6OJfGvEs;P*Y0N2)J7LkLz!N50cRYW_5DTG!hxD&dm$dAc+QFwqj7eAV2& zbf~x0gZuMPbeJ}*pQ|~VXUPqfAI-E;oUZfR3tc5l1{P`S2d%SMkLs^>H)p8$rS>$5 zL~TEA7mY2W)G0U^8vmK!kwp}>;IVcFP&Pif-hSJ3DE2b2E05a%l>HmG3KT2LqVSy3 z5413BCdSM$RYC_(ToQvfA=2b*4(Tv4q9z%J)Cxa<2q?i~>{`Yt#rNp@Yoh-68r03DAm?=N3De zwZ2A!KrS9rrGM325eTd(E2{{exqV_3CId{d#~rWdS1bfbN$B zSw6}7w7U77BnPG)<29C%F_%P|0N2Fz%fP5a?mUG^mRo}zuZhJQ^nH7QZv`448Qk~d zq-A1@<`6xNd{=#<=YbC!__@i|#_0A6@QGW(E5bNVuELqbeI|`~&SKgs@cng|Z z9mi<`=ksXYV}&^taCKUyZ}3;VK_f4RDhPF+AV?#nF|$K%w9X0Jt?trz&YOZ+O4@+4 zEFWjq@te6_k#0aB_0}J2!(-9_pI6!`|IWGtUbr4a<;<{bI)mnF)9|3`SA1Jd4NKGg zRpUQXE-S!hA%g<;cJ3~dv`|f`3|8M*_D(!8cSZZj!wR`mC8x|@pxR;?KH;=5*Bm?0 z9Sn5)OhKGgqMONcym=6_kcu+h(dUNalSJjYAE%T!X{@*hNCeHssX#9_v0wpMdyxrsZ(#@lkGjFvy3cQN3#g*Lr(gyYxLPfeRmb{?- z3fs$=TmnX80^Gg;z_0eVGnRX(5GEa#vSm_GnhS+O+1);7mXSYxR(J&(R~_R#615#J zoxCa!k~CF31)n}pc4Dvc%Gi20@QLwik-$NZaK2xyfe2pR-R_-Y!~U^vNbQ01ybZ82 zp&oAK3WtZOUueCVi;94v)OKImjp67D1*2)*8(5YlBOgo4Bu&={44DmPPi-P)jFhPg zEvc|9m}C}JGjR`+Bs}dwAaD4CmNS>>+OZ8|s3HE;Hzt{i9zF)Xy2FRfnPxY8>YZOo zr^xIMLJ){1GB48#Dm}prF{X~v>1QuJP&JwT}-kfht;75Y}y72O3h zN$oc*%O^9qFQmk3F8&LK*y82fT<>qwT4sE%=EC%qbEI23H}iBZ1eC+N75e@T>onv9 zrsm9{A(R$ji(g{!yC>8vTzps{jq|$s1DePHeFVTKC9_r05dCDZM)I7a?y>v4+)j7= ziuOGH6sil^>@wTZuUAH9pmIjIcNa_ycL?Zc`YUvP)V)Fp=yRrc82PU&h-F_$AQ*aZWk(QZ06;#2*ezx|jr2flDa0!ne7so}YU z;#`bIHbW&1CtdV#+|#K@OezNr^7n9vRYWr!b&?1zK(b#%6LgG_{bgQnU-A^>ouM#< zch-_Kjy)#EH2DipY-ZAsoKSs3{9~5ablfN3a5C$PN0G5UV$P3{Spll^d9t(O_sni= zxQ~{JkL4aOGwpO~wx%0}<{h^H-)D+yd410ID~{6Tjm9KK9w6%B1$&`)s7~6<%(Tu2 zHFuCt0);S572+EySpeg1QGc}=k4>MnNC7g0pDP6>9T^K?l4a!c2a>l0>PV9%kHnE1 z9_O#v%zHA~6z99)tt{=*lyu>uDF(C&|J9m9%v|a$J-|?eCm{cI+G;pm{BKlxAp(J* zuJ>UuinUXKDo3<;NQ-`>ARdDM>L41(C=#mR36pRz1HO-z!O%$X3nY{Xi)fFzTZVRa zl}?63uft!BR2r&HsQ<7c!}i}0)R-8U|JUc1_5Yk=|Bq}UiEC`aO(ro})3ZS|TYAf$ z8Fm`YRHWGjL7h8d{U60h3R3Si$~ZOvAbe=mb+@VB1*4))Khn|UvGfW|v**=80Gv@4 z8BFUh9jHu&hgh}p&ZU`W7`&~R+%S9$bW#okKt=z2Hsh5jLoN|ssCW3Kq_6>FibV=i zRqeUmZVVIY@W-(?$W+R5Mx0#2r)+t&Rh3YRwNGsF4-M^y?IxWX>?2f76TUmU^Pdxv zM`3QEE$p&P+Xt1p$flly@ryAE5D{E~%?)pyXdH@@K^bh6c~9IdI8YwAsE(c8i1c`j zs9`|oV%s*mKFjf*Rxyb`u~(5qcLsuY_-Hnf3u0%>+6lsB&u0OyfOY4m?}OtkRlRXW zMI>O|gE=@7LpxdP`1eT{IoeY^Gb=r=C3yl}PzdSFMl?0_e@A{UNcl7HT80x^yP&-g z+V@zEo`_QUvICvuC_LS1Ee#x~YB`r-4ZWQM{gHG?YsdHD^B@%{c5 z>Nnx{Z?>nPelGxdY9U+i+pU>*69sE~N^1gexjJ+@>EYz+Bay|caE%9)Kw0PZhm{Yv zMXzX$z>BH0NITS)Z?#}^k$@mM1dV?R(4Chh`r_Eq!6M%@J30>FI3u@{7O@&xD zrs?6qz9HUBDr595lN?l1qaEFJqah|Z8P&>K!0P5a5+SYGk-V=@p*)8E>m=JIIr=Bi z7=SQVvZ^i&l2*3HwNg`RgQrb4M)1zU2*L*!NiKujy3U<4eWi zI0YD>zI3f{ps9LiF{Ss833ew@U_BCZ{j!Y@d?-aiOB49RGf5-P|2EJ0*>d4SnpQDqGlJ+8Oy}7Z$$-w5RF(+#jYgLq7V0uctr1f2qsaAXV~&VhHDNw1 z&s|Qiu6l+u^HCD|o}apYmkMSuRJW6Cr{D_l>$E>fWo8$W|42Hnay6lfzweJR*AkAvY z)lUktwE2!qa;rRV--e!kU@!K`I0J#6aLQ(ufIhnLRKr3FT);Im5*p6u625P74| zg+%ei`Hctcx5^dRuvqEBDZO5%-q*VT!*|n9q?gEFoF5$KebGcCC>W}RPIpPFe{7NZ z$DFPJ{~t{`KMf21y8gaAT05qla6~`g{>X0ibM&1vi>W^lZqg<-jXlb^E2;|0Wfp7> z3U0cgyLb(w8VYMWC`PRA-Lp3#Qw}Dx+;V89=0p`1&hj!hWDD`$rQt#yR!AqARR_D! zG>1N?8r=hP>n|oRV8ZN&#R5Sonmz=R>X_R_CGg@=9$(|HleV}wuwGX3yZqB8^*6ri5Q(!R!1?5S zvCJ@}VR@ibmJs4$`c+dQnVj?@>pbBmsE0G#0vh-=8#Fxt8!eDgFY{t@#dA~EU>xtH zfdB#QfKB?3c28eo5*wcg2gd#}Ft0X5w~2puW=d(Z`C)KM4(hjIuWpj2(s%{>bg8got6|)HSc1l~bJ6C3^&| zwq3tPZDB6kfwWB$$11Dr;nj_81D*?|0y8Ue6p@}l3=BuvhJ;P4T{9IRXr9&@=(&ORu(D23L1UQuS|6qexJ)WAUl{IrSS5-v`yH+! zs#P3*gx3L6oe%%Zl@ha}&vl5njJD#S0oN&=RF5qIHcRBWD>m42W{#~|aFX?JEO$4z z3_pfR^I(ycj-1{n?Kx|J{(M>28Fv#VlOTVS+{i`?h&cEOFWbwB3>)Z}U_)s-;h}9n zTQEzEiocb-iNs1uLOin`D=l`1A_f z9}vUjx(s2s0?sKyZj}|(Xo1ET95rVe$B$ylW&pWI=wT4F0@{-odw&Z`YEj7`$9>Uj z*e|Sj57VH2W+)xx+baq@SY+YNv}4UL+I@rEV=jyQtH|Gdw_%r_TaTeJh$la}i+JyI zRf{g`m#4`Kgzb^fj0-Z zd5UFCmCm&LO{H=#Y#U|Ek9oI^+es6AoYLgApuG?XYj$m#r~zqG=nqs*5`l+XoW(^j zTDd^|7D6hlxf4wRTh}wHV9>B<7$4F?j=nyKcn0FG@H@G>4U#oqj)?@{MeF4s-zi}h zj3WZhy9nP=2%{VzBU@Jc*_)xW(mDA#YY0s)Y40ahTnEh>QYLmm_OY@PVZJRDXvp~< zt7rOymoaQEb{Pq(nk(lN+#z_!hd$o#%dqtK5Hp)m91?Les>#5e&`j4s;15Q-$DIH7 z&pq3JhrncH`JWle|403IAVi;!qLMr=$k@3Gi6v2rm;$(+ci%Y#IeJI#oPU$N~x_y-7{jZ!Njl`Q+N5zBE zBuu=yljf*6$J$kTs%MH0N}gTP7GOhx!5^ka_&ruJ0T1o&{7bsLbr1u4HU$RyT7rgG z0N)=!mZdmaK&CyyqW2NE-CZm;6)kDu1->>!9W2Qogb8(LYE`!(*ddy-6*MvT-V;?l z12Z$5ZSN10rSqut%0CptnqLbtNs;DOnO_raQor z;2(2ArVf{v$?t!jIp;-m?i_g@X9j*9s~QJ7waWTRbV5)WA1PQgrzS=qsRNS*BV?=} zvPmXJP>o@&_FQ+zRMv=hULZw4K*i?33P)0kmO$1b zflh?#;8;CdHSCM*64=#;u0mm_WJbJ zkK;u{&gyoYB*yi`PuEtNctpH#GL&B`GO{RaljTp33hGfY{S_8tzRi9o4n}^Ry~@X9 zsNq!(qyC+a#1v*$6K9&7^JPHjnrPVTHnK7&qeg0T(SMqg0@+_0xPVN%2xASyiN#{oY%nLy2bor#7EQU(uggeZ^g5v60;ui z_{Qc7T)xI3PYTqVT5H^>E%`7NEw>zHMyA!kOkShin+xw0vNz20u_UvgeU>3DGCUY` zdqRVQNx(jY2=Fr{`H(0e<)Io!u@E)KL=U7mS@{d|6PpJlXhQz2&sF6{spE4S<6EX~ zK>Z1evMy13+f4icp1<)&^DW>MDEcwsXXNOW3&P%W%K)%H71e9+N}8O@zum6K>;`t^ zWwFkIz=lQxqm<_pL$2rvVdxJ<@+U_G32kznOAe-Bjt21U{LAIFfH4=YK;!Wjx}=~* z9)CwXam&|YwJD>j#FU1^L;ij#;MF{m%$`l?n&5{P>zcgsqnhoi5yzJQ?e%P-P0g?P zA^46OtW)?c9MzFC;xV~I$0<|+Zl$H2c{@zBFcbb$ z|LAeg%`? zln2NSq||~qTn0e3F<0L`@84m62TZtHQrV2Y?xeTtID&EjZgLUZEqNbLs4~I$LWO-( z1&oWCfEk9na|uZ=_e}{ETS^1*u)PBvId|5jF*W8yNfa$5a&C-MB=t*S*j&PGqsnZ{Q@DAskH<0=zFr8C^(t2;!{FCw8T+?^SPg zt+%cjKse^g^FULt?6i*qNv>L{!=0##u^~MV zLYrsZ)U`=9KdHsf+(~5Fl^@?EC?Odfi12{I1`Sxv$Na#_k$v#xBFcw^^q9R~E@nW#dhP14MkmFxfQcv~>y1aKoTofOf^FAuJU<+?^2w$b7a%Hrkrs4~v24{N^GlxT z$=E7#LQWu(ckjH0%^m$HV!Gk&M!>ASUghBeK5;m8{mpfl`(2dkz&&A!(;rC_E!3k* zZBDRO)Wg3WyP#P;y=C=9kqErZ@PCe03t29`>?anGL=bx{->tr>csJD8(0CA1+xuvO^S8@J3Lc zX*6_dxBgli_s|J#TdB^t;C^quGa94;Z-T*EzpZVs6 z&3#x_?__VWDS5;&)?Q@r;8S>EjGjc=%4YnPMTXdf79VsOrLRwF_7x?KQH%{glUkg# z_7xR#8ZeZYfG5en#)+yqpr08CCnZ4pw^Z_vmxWG&7W zrooP9`G%c*`s@}!r9S~@up=!D$^EIn5o(&HNj=&lz~Wj)k3cEh*^JKyz-Fu>h6t)6 z=Nn`*dMmY2?DNCQ)XjyrR>#*0?&y(>H!76KyR?F8MQx2nsfBgz-fftI_Zin6slopYmnT$EZ_hXA1XP|3~ICJmEDTUeTd(b^K)fNpw)?6@SQ&2VR018eGgb;JX#gCN^Eb;gA02rBU5iu^*=%-PwArUTa zghjd|*oAOhzbGsQO-hWUU3l`2bflFBXU+Bb#qJ=%3E4I&i! zxxmhr44THma^xZ(O{{2j8ZLy(D?wum2b_FDe&9*A$M~rgAYXox0MwmvjryBO0x6GC z>80^xlZ+wXTbfnzqj(9x;zl^LIBR+#Jf5JhBR< zQFqAZ6@rp+I~WNDVo&ly zx@3khq~Es!!ji1q)jx7M=iiPW?6e(^xJMC9gONf_7`{kPeQ=vgX>;I``jNaA`c-Y- zH;{X>gIJbgv1^(J(qN+Urr}!w^yZ&CieK-j9u#T3Mr;(-JlP|awWy35iz+;oHK?yP z7bjC$fPXgJyjvYtbf8`XpwO0)?V&xf1#7yjL+v`4B%?r(8Xz7_5 zGqHG6IowUZGX-!o%x0`)Z(;iFb%bUnnyP;5%1jf6#q*R0Ky$nUD0S{+v9uCkT_J$0 z8Xah>i&C$&Dyl&ujD8{>=cDyC`(^(k!+5=rYHR-fcQT7i={{C$&=5OL5&jEB`}a#+m%l<3s~d!jKmP(0q1ndMmrp17PgguIq5PR%%3ea z#HD$BB`A`kBkJ@g96;!VkGk428NJDbA6Vs9-car#5S}7A=AW(2IKRB0*|d%OOa3{C zuJ2&|0iLxn;JVn<v)OD?8^5sh?Tay*8sSai& zBO=DmMDAUu4e-RBsP*H+AfmrbD=Co(bkz<5!t+KMWe*t>boqo-MgPiF!F|B7e>mTy zxMRlhUUdbx=|3!)r07v(c5ixzp&*CFLzIGC(nFRi)F8=o1s_J&+w3s@(q=+>imn^@ z2on28ap_%yn&aclIUqL zeUCXTea(8G7kofbxpkzA{D)Wfzaa+xKYA<7|2i!Hn}bG+<^w$vOewCuvp7<{LqhTFh|M4j10pSS`>M`XYCtU8iujeDBQcn4&s9E(%RfrE+*^O^hi15 z$)5SwO??*LfPINm8-j9Mrmu$CzPd`nZw){Gg~v&_WpHr171kSdpgac#VW7P(Mk|>6 zr4oDzFm)T9zyL`oVE~OAixx7~ad^;zw_Lo;oO~2$-ga*CG~H!o_PVp3)NkgY?nF?=*}tkT|4>; zM!LJ0#ERW|<)}Ujx6K|Wn_EtN!C)&ooM^^(RAqJQoERGMKz!AsgA2`7%E!)AP6VG&Gmpm(8ILG0$Ig#_krLlx~$BLC8F;NG4q=ISV~BB{}3KX zP@dWN4!;nS7kfvL6NvW1 zA%X49yN0P*=rFD;>m7Dp=^N zowL6YX_|AGYLowaucBguZX5OX1S#q%JS3a&V)$0PdJ?|H(TUaN*iYnM7bW_3ikzM{ z+3*?s(C@DY;@)|REZ1>`?8MeI+(Hz{D?y{g?MBR)?%bBlZ1q^jLeh(@hhDs{e-U>WwrGUknNKmV`Z~EUg7yjz4p3o^!jVu6;T+?7WDgF*573jQh*@WPm<$Aof<*Od+iAm~>l}p~o-INc(tg*WZICTY~K!v`=_&H$7NJlwv&#OAmV9$`sK6#;RHsH%V$+l`!; zp4btBiPitIU+gjCu53~)ZL^2^fw@So|FS_<2dNz)0-XXK?DCKqEkSwIUDm#1|2kn#?~~N*{Tp(h_wz5IyjD7L#h0BX3U0?V zWdWF>!Zl7(fctui-2Gr-?MrTg_rtns6@V!h`<>Q|c@Q90rqUrmyUD~JC^LO^gD5%_ zJ3xB1Pq=p6{-Hhmfz^~RM^6$ta!S%V-Fkvv_eUry{D9?_AHeS}t;hBpFh;YijU!GG z3Lan6LV75Tkbz9`C4zB5USuNEH~`eBx$%}OkGRe`%np*$#IbCD2<$ZDyKp;;rD!@+ z&xXKimHh*qt;fhKLpH4~7p_L%#Q}T1^vOcfCpPMQ(72fq1Sc8 zX)*Kt1_0tW)XBjgZ)SQodrXTjYDxf+nns`oPAp?M?wfxioToVHQriynXV3Q4p4}H! zU4Sw|tsGm|H|HE#1r@4sw#((YXocA*>=RRC5LCozvRSFq6|JWoI@DG`nwR-!K^op5 zjVW4mssV`&@o?>1jt3$8;Yo;jHNX1!b11YvU_<;hVt z5)q)ZF7_LI%L~#yndXx47cuOEl*=k`K>gZT8%WHsh{$hIUzz&Wh;l$3nG!p7RZznw zfSQ*bU5iP^k0Fk*L1|_*JS4Apu?eGLmqbq9{7!I>_f`0-*s44-u&FO@hp@$o)n=VD zdn)E9wvotFhB!!LXPo4`83zEI2#als1L|!i2Swxe7b)2?#HHnF5J#g8c||Hl#x5P^w_i*w9%&f#Tg?s;tz2ab>Oohc!$xO2Ze(_Kc}sdCFP$< zt+acA?6n{BLm=_$H!aa;%ib9lD~h1N`QN=LEV|r3&v|l^x_!=+efF*T_Kn=Bug08q z*g;9&YSNR!I*3zBQ+?%nZQvz3bIgrr93s!wM_ua8Djt@zdsBo3Wum` zo%1IQ7a;b7!RSM{a|P>PyGaeU8ikm4H9wWJO!ZCSz`WPqWi_O-4M5(U+=5E(LD_}h zYs3CW=J|i^Vq`VWE`~Ir2uq06lTYs>RiD@njS89r4Dov;5RDU93G{N8V9CfIBivSE zq2+A~w#F<}5#RF+2Fybt#IbgfE0gYa!sd8%JnTrQ(Pj79rFA8#)71IJAaHC&BO)=?GHQt0kAmY{(eJo!qrOb; zpvwYB@u^vjFc?~V*Uk~e{s-Ch{~LkI%>2LIpe8q)(bhK!f=LJU$TL&{%(=TUL;@lF z;EZtkX)_>n$7j6qMs`!4{wYft8~#}==7E8`w4pd?Q0Ej<97LjPFxBy)`@9KAENwVc zsa3GuV-|jDpv8S`&34JRt-i6W>f5%D{OEQ|%fJM6VMLU4+t&`}*)y=G+ zn8+_6iE{F>%)QCDJY^iP5@MdTryu-DKvA$Nt^6w5YkWS-gOLIc!igP_=(0+pwYraQ zC-H7kGko#DeW70V1N?sWmBq(>Yz*!-F=OUxnQG^XqDG99n)AmlK^a(S4gg7A5Z7#7 zJS&>wWmbNmW%cU0i9Bc}fwVHWN0or-rwGcf%zC%)ih?4514IQ3UH0zuGHp&7!M?aJ zR~~-RSj8SR;h02lb)CmLKF-kTmT};3^{j1yQA*UjN#UX;)eBq`l*uPX+(arj1>a_k zf~*OU%gNXNWABBgXYDq}vcJNPNb`-aa;2Y)fdK}aPyG|g=J%=9^%Y4GN_F!Rq$9T* zWWJuisi*jwQJD8rUw4`IS0=A!-whk8rGsV4T!NNuRMWODpRI|2DinSANm4JAeHUM| z#2r)NPq`kq_X66fj!|&nRy8Pyu2@ZLHMd-qY%I1D1L9j5jLGFrCL)4${j+3dC_EOV zs>x~m=NtbtMU@yR;~7`0X`$C-cl7MZxs)2|_|hRo$sGEA*#c=604+-gdm{o0TCL*Q-cNn^}Q2<&q`#@D0;a9XD5QH+;k!|Ayu1U^k`>qDJ z_h&qlspGH7N#79IiuxI)>m#44xC`4!+iO4b!gRv?F0Weq+J{JYw{ws)PR>I9rA1_i zk~TH;Ql?QjVD1%;^62F+Zv9Hc;8a$w+sc7Ceb5YJ5*5u~EcD&x*OB&)hA^0Bh(0ak z{MhS5aOeJU(w*#0bN_92kJ*{4G>az>;CE?@p-vrO4_+Rd8VMliS zQ~54bo`ZZ2!U0SUrHB$-F(BJqi-6WTRA(rgY-Bb5gtI|PaBN6C$1#8QD24^6rsCJ= zbanf0G?UBU7RgFK)>?37j)I8TDY%A5?yvewv6|YEyPHi)kt;vbtfNBxZ*6v)lSE`t zbIH%3XGSW+5d>BlJJ~|H#X6LRJTV|dB}%#5u40^w z3p&&xCmwF@d{K^cV9$G3k1jSeZzAB*c3a%54tvI(RF{wQ^ft%44b7kU9+k57HKiO* zy)Qv1)(+(lhM2cer(1Q#seB_zesv>LG7Z&n0H$HPSq^$pc={d>%V4^TO7j%FW;V#` z6c$rPTVBxlXf6=OR;5^yEZ_wGjkpPOLfhEd;%>7}ndgmEN92{W+VKG)VIRJP1eoXL zlx)Oi>kxilu{JcdG_C3_H|qafDcqce}%mS3=sGB%%Iivaxl2IXE29v2KxTQ zkZ`T5!57*k@mme~k&!(Ub|p#_M09#stiBi?jou?CJ!qMm^Q_c>hB;?xq6%yR5%04= zzZ;T3l)V{CG&z1y(I?S-Yxleq!HI(HM?-mD-K5ubyj<~f5?7AF>Vm&w2@VIyHcQMB zpFq}kv6%mu@=IVdqhE?Borj$9IGfV6z1!73@$EwqpBAq-<~=U}r&DaZGeMJZMS0P* zgy?E1233&SYf1gE&qs3szBr!iiJAg@@K;;(wjwgVVqTTwZ`($44qOxqs|@#XmK-Pm zREXX5F;V_=0-WHRcP@eUU8|vv*r7>fJ(G8B4B*P3RLU_d%U*hslvsfkg1D}2IbGeH z?a+ndP6@%Eu<|aAmzJ*i#Wi09F~q5|8Vgt z*@Dj;BYhUj>_FUBx*eZHn}lf>kbQ#`kG|RKzmEU1an#kyBySu6yXVOZ@+_%8ShtUv zET*-q2AHH>;A>D`FP&iOpqevmFvF8nG#}mnnu>{jO2EnhFUI_XX!&EnD>*RDK%$>fPcGKYmL%AOEuM9rQfUkNAQ_23%{g zKq+u5609NqBxp;BzpJ%;Y6IGSI`_K?bF4pcl|Bc)2_v1wiVjMw92Jo@iN`I$)pN>W zD>e$LS}m45XtJf5E%Wv3>HeG;xZK6}?Q({8r~fX?wKX_wyN;40tW`wZ!P8GN3t>-r z`0L?tKP;OWFOvc)wLIg{X@t#4>duLA`3H%|n1{pv8eR611d!N*#U)@A@Q`HC7cKzF zs??f7XV1~PF#eqWt!P@>)lZ+n@%K~ogKQtM5115`<3{BV8@fKhjf?NTI(FRjzg41= z<@e_5hFkjwj6d*zL>J#GY>jW<$+LV1__ZXdQWB>GvAcFvT@_Q>Mp3nf!;@{qeJMT~ z-=r=|=BzagQ^E7(MF9Z`L4P`$brnA58q~L$;Y2gZcRO>*uyJrqr7RQ$2U=UapW5%a zKY^8B=vctjj*impA;>z8%JJ{Iz>D^)UeMW1#FX?kCDB{wx!%Y4e1QnzI)imW<>Q?3VC>jXN zi2VWB770s#(_fRVNc@n5o<~3#g=J` z84ZIZ{P5GV9JM;Crwg7eQQ|Lm7yb(WKNx$*F2TaJNi%KRwryA1wv9^Lwr$(CZQHi( z%&GY>Gu>;=dHei`eXrP0L|lP_8nS(5Q15t=;p*BK(87F}qTbDW+<`RQ*?y?8836~v z)mMT~uzXO#yN}aV#;C#;^!B~8m)}>Jl6xygChr+C3Re{0+85_~qWW%((%su&P@go9 zR#oYqzA9wk)!pFSEfiXo%N*On(5O9ax5kAOUlKVmh-bfTb66tKw!CvJagvMUD1b~d zHDGt+NS1@xso$qq%HD=^PA1Ur%iU%!u0mYh77cAc`qgy`qVFJUz7 zX~_%y9Z)Uz>({+?hP_4#bPVxRlDlX0y`5hb2MNYRSC0O2%54OzC(bk_35OKh6PY_G`vfY3@SV;-oecWhi}B}g_dM0RApS%aJi%Cduk83fR}M52BH- z^Df@AZ+8qbbB?v9rx(uL*%<(Tg-a0Y#*G7+MAb=v{jVCVd$6a`ysZ&M1O@IC7R>F{ zvf^z?Kh37rkWW>2`r_|2K$&n_a!@sRq)LW>G(S=15FF;;ya74xyrs}o_>Ea~mW`{k zm0&%Zu&^bh?$davlHbKVCs>4fCG=wQBP_$Ivfcx!;R5#pOc5p)b zGuePK5N`X|^vl*@|2T7n-`IG<(42P_TV7v%0exGXd8ET6Xy~=G>?A`P4)WX1%sstF z*&o=X-nD&gqKwmmP_$VNjptgSTkZQ!daY!-&TMKRIN@!AW1c@XGkI+Rpv*r$e3uQn zmvuTR#!`k{xu+M|$kC<|nrDz7mnO^TIwnA7p(>tg^sx|Geq2V&tI5`Sbr9@OSVN~tm;o7xSA53vj$MdTvzYk(ES4@tLa#g3Z+l_i9-Dlc&K zC_?n?Vse2h24C^bk?;^4N!9%dask93G?W^Oe*!>91O!)Q_>?{XumJ^&|91Q?SGxVP zG(ZM`_{>RP{=-%MZ-{{Z_B~ktpR>xu%JM%#67>7}Be=he=)pvkEW(cTM@D>cBozN( z{vhy{A~`J@WR41`RyaRd%KjFf_yAh(;I@F5i4dmzwl$zm%wGbj=xHFxUVPVuOgN|* z9e$G#FNRgfUZ39b(8$Fxu=-@Y921Q&^vyF#m$X+pF>-js zS&wt?xM14YpFh#9*@_CkO@lZw0RH|ZnM9o!VlPBanZsM;^-?!`!Dqt%R3toFpt5i5 z1^M|JyZrttW`RSglH?{yo1}boZQw=G3!5Db3i54UviE@TwR(Z0M6ci#zVUSb zBjw$VP!!VZs%0c8E6MI%KnpzdVYH>j>Z(udY{#+41@fG;pre0vKIg4aP8tbswnk~t z+DQ*iSn8fpbiz*7g>jHJOpLvKz7uqJLxUH#CNMk3r9*3+xtG1IOncR{Pgg1y!smP${P)ef@`EhmJx9JwE$C4FsZTBSs*N|BXKXa_Blmn zrj1f}YbH*=MfJ}8*?6Y_H4)AI?z9X^l-#63J+gu4JtCmag<~C*+ z(Z3aVp7Gym#pjrFp-h};P9@!f#E+$sq>MOGIm=wzsn=sRwm%A1yZxgHbnPug z#W?s@`h=dyq^t-~<$Vt0Q80m3P>#1Sb)fV4WcnnAPFwr!p2IGDdUNDRzH`<>y4ke# z$w=6->C_RRSl93q;p;87SHF93&i(egL?;MC+0gEKl}jfBW&^^;I2r5`Aft_&`}lTY z@3Z(k()L#!VgdM>(ohz3eYu72m$Es0)k!xIS@m1HKWz0G=0sc97_)o8uE7%+(1^l@ zF>Tq>{wWLxPb`&>gqSU}uJqg~`CEN3wHZHC;gdpsN=8g}jnoSvUq!fF5JJL**T4cy zqv?407ChfuCf#}@X{>54F%7Jz=L*rXVRfn`f~+mny~RtZsbG`enUGd@SjF04sMnS? z1*#U3Hl0VxM<~kgs<6E`*q~vx8L^@&_$O9cCKjGiGy3;( z9aDRvc+J~VWF!FXc^P1aYzNu;{DS>_B`ErXG*Qzf8+~Q}d<5zy(P#TmPN3NeZZ)R! zSY?77tO>Ky(|+BdkUB^s>@Bv*rs)8u6e9Eot@h`?H>aqe^S3@8odN@z6p4jUNe9$6n|0Z(Mcvuc#I~20Ey? zb0Kz|@4T{ZG=o>R;seeL)G6foHXqb1aFz`tTbh@-KK?iNP5c~kxxdz^7c2+xO2OUI zQo5~IQDbWeSkQ_m9UY2-{2pS{N?bFXIHefFj&Dh-e?qG0JPa`U5qRY}Gj0T#5KC^O zg8fBuk$GqZRFgEdzoxrSw8*b5Obcw1V5=0?S@MfZ^D`&@NAlnaP9*R2$TQi&QLCdEQF7%;1!mpxy- z8>Whg4`071xA6(Wxc6r%k9n(e1zELFc;2VtdqQeHW!)@tS7@`)A%1I+nl5tb> zk9aqIQ;(hElx#(w*m255DKv!uKBh}{prI+8y0X?>z%m?e@3xyHY7_3x5gh(&8o>8Z zDyFs9wGwrHGTRe3vrtW~N!0YvN$OU=b`GIfUEg5W9F~E+0e62>vVV9l*)u{hE?7>_ti0oq}yaGS~Fq={A_kzgvx?2TLcNr({{xl^i3inhbz1Xf}r6T<<~oHu}}q-vAMiO%JIP_LI?ZCZuB1$+(C>DQvegu zN?zrwL&Z8Y#Yl)VUDz}w4l;!1={G)WGyG#zbJE)$&d;4#8gEC`&`hP?zbNiKGO3DM z&%zNuV>v|SHJ`jK?l}~AjNYqBv`SEZWgZO^LcU4>N&%~}*A{3xxFgdfPaWXT0b_yk z7=Vi!lx9sAaMNuFP34J;Uj6w@A)#EmyNW2-;L9e~oOPElh?XuHU${&09pZk>3g@B4 zhX|%MKr*9-1dLpaq84gT(m_Da?apC{%3(Qeq+5eXr9hW#Az|)>!9pQqj(-~RINEmD z4ewoqT4a8q{Wn_`JSV#a!@DY&4T$J^7~>Sfz7hSBL&9RP*}5j1T708F?yZt?BJ_td z{lo36PE}EYkEB&KIy^{s8N$htqZ{*=DblyCX&A(9k*Tf{MF``|Shh+(0C{pYHR`a#7xInT=b zIsCM5Md>sK!Y-5;9nB|u{Fopx3Z&--g6pfErR_`zp`C&mV~Ye@}N;&+;(e> zHx7=Som*?^vw0CnukV?@!NLa+ewoKE8Iv5Sui<%lUnUa#Qs8RS$;7McoLiu%7f)K6 z4Rpar-_XIk&1c=DFE`yj*O>&~ga-M&a>vDoV`Hw{v(v@7Bi&K)XVktdx;#tBm{0rP zcM@=g7O-!EJ70Bt+-sncUqYGk0%7*(q2B)hg<$*d5Uc--to%RhgM8 z%p&U_3m~-aOMqBxO#Nt&CWS6cmhRH<k!i=+}4bsLbTyYhK?cj!<$=MvqB z$3;kbLUdyJemg57ne|G}y37z%>|F89L3Fzm!6)#yWeR9L3mOqiC@ma0c?pEJ?V#(h ztTcvN@dTvG8kkonc#}kM@yQEgitz`PYf4Djs!3y_vDDP$;w`kOBXl$VfTsLO1mUHN zheo|RM(+E-2G3Eq4veRN&2J(N*Co7QGJ&7H3t8%cKoYansX>lK`18V%fxQLkxf4#z zc1*+%Mggfuk)EQV#2~=R5JWtSV+l#`d~Z*l09@wnk&C0(H}ru_=E(uBRzaXZ)u8sP ztaJjVvOtl?0lU(I2*Wx``)X6;M-otsyGzDc&~OXmhx8=ey#242Q%8$b?dzU7`t{6z z>t%vy0oUhmH!xEZR~t2}!0rgXNA#VX^nTE1w$Z1AngbwwG@$j_$k9DH5+R{xMTZ=E zB=5LumSFFlBVs(TcIycZLyIKYuIhmKx9dVKktwtkxXguA>NRInIri8Qp}uEN4X-jF zJ{Vi8Lyd#Cq>p5`QF>uW=^&fxfbz2Wrg6E!kWCb>F^_ppSG} zEFgc66{?X1l{b9yBND{H;#jo|7bbfm)t$V1f2NwDD?*z!diZXGaVgAFy$W2a8lTuu z4}U{0CYh653OB>ZH(z0}Gae4lel8_J&(X}Igx_AA;Vqa{pNPq3C(P!yzU4~ z5^dJ*-4x)H(=9tWD}z)DWKfn=G3#Vo$|az?pOF&xVv)h9Z`Sj|p150H0Hs^01pm)G5omg7rU(YP3-Pub$y6FF}COxX2nd z*>p-9imkf}_1c$Uklk^~EhQTh`wXds9s@zQgKo3#-$xe~eK!|c{7fw8y~mB7uRdC; zEL8ze5U=JR9b<71LdL&iUz>l)bMvBJ)zwg3u1AS?Coh57*}J}Dqhi@v6sxp6_&TjoI?6$* z1nQ&CK>u(?$SQGmxu|%6cCbeTDg^fUY+)d<{(@{!12%kr5}@ zNu>RljMX{@yR(oBs?IU%m^gdZcN&jA<@N7V9JW$zTS>!rOp?fh3Zl53)2HxfYsC6R z!^_@b$dUM4G?=-xliv22k0J1zHIe}eYXh?pnkHaM5ji2f&FX$mztP|l(lt5gmdhrU zXG}vYBotu(Npd}kgpu7+aanlG$`khmZt4d<;na)Jf!GMNvHiue*xRV)+C_lIrw;_X z%EL13Oa+CtYwliXMuY<+__;Tp=dD467)yuQqitK1WWpKSc}z)KMJcaZBcuonwQ z`8W++T9hgvI`_tVrp2!O6#nrwP^=F|&Or!39;P&?EcL>~=t*G>5dBqMvNlT;nhmC( zlLz~eIk^^TJF6-QAyAF^0}nkN{yZ&e0WK>{?x+F5onPNh9E^ao;jri1v#c(xZIZ|g z#WAa!BI5xwkN)VjeWd}#-qxY80T z=JbFWbprC*V4YpLTN3JFa3t0Gqfyx6K=QM#fxaZ!0}mD~1FNq>T&lJh{*%kmHJsBi zSfw8has)=rL3>ewkS#M;_gl;XCP=tZftZwAZz0(=6z||f8CEH91D?5#{9bBPI_lfp zUUPDxWz)=pjM|{%ZJ_eYk?Q*TEWRs8+8BOxnjo-P&@95InX!$#p{w5k;GC%#HUetQt=0K!OHt!G<@`gf9X7LcX6iq zJQR!{F%u>HDdm$Oc5v9Ox4%Xg?_}r?Jh_PgV~}9T8e0nA3-EKOsclRW@HBDS~ z%h+T5={MWchMiS?XC5gtbIRWiG8I4lUm3hW9JLmoA!e)r&eA7?fu|}iBVfqx?PR>k zj8!$(crSOJ^wND@=(^zU>dzWDP1Nn@h;UUM6d-_7vPns1Q5rtJ7b&&42uKA%*r$w> zrJ8qg2bIz@$Wytmw%4u} z>QfM?zjE@a4=VDnUQjR4m9?2N1b-_r2c@(e>_(L)bm~t2!)xGwgG~KjH_4fqIQ}P( zWkAO%h-$Qgi_0TPE4(DS%NgG1Cu}6ek&JG)ykSt>*pu(k%`YG&AblJ{Y+37vW~@(B zl*c^ep(Qa7C@-aLrA*mFmZWtu2Fj>#j?NOraIYx7iovlWy9C#nd2vgc*&bY|`qLvp z2P#6p!Y-V->#Oh+Y0glxmCsQv=1%SlzLH+kbT5T5PNtz31cm8$SAJE7O7H}=zecbQ zmHs4Zf(e=NT1?^@bJVnf5+t#STtJoUlxC2h{U6U|!sU+5iH~{4GQU1cI9ZjPVP#NE z2R}HDQbEn!O1ar`dE*Iw}Aqk_WSk_$9Z`nqD|k9^dXOCdwU#1)78W>llwX%X55 zkI9&k?s$<0BD^?Fr(27qy8%=~>!00ar!bwEV+$*( zLJ4K(18CD|T}~vFAUYAgAdE>}z7JJ2k`!k><~qmd?Tzh#e+d3?Yy-XhLrf2)r@dam z67Q9TOyvrE^XT)SsWoPEl|fG!rqWcc=?k_^Wsz~AK?ydAMj`f3yBo1J9QloCW%sG2 z?KQ6yk2(%q@O_6^2Whsy`81_?70Pqx=5^OXK_Hbg!00HHgRk$|&(P&0WOA!>!tBHt zD02*>tSHRE$8kIiM69=q}(_w0Naw z$U?0w`aO7<^RkE2VFk?BNufV58`GkE#)sNHhNvfq={6=)?^cyrX0Xdq=eHA`*Zv>% zXBeA3KTH1B>G?0&aPc48r+GFNgr;WbZ|`?|yocqca(a8nE!LlyQ@ z5gNAcj{3hLk+a5-Cq$Dv^`pasG@Zf}65xQrfK(TY_>p%P$>YLrkv#`Q%GgH`he=*w zpK^Bh90A-Q%E*`xi?CTIgqbug0~H~c*viOvZ$FK(efy1c29@-BS8LKQK(! zMkNr`3ppzZAm{TM4kxqz;}rHp@h#T3cInM+X}pB3m-&h7oduIpDSe|H#%}VFWsNu* z6k?3w9?%SI|9-51#KUweFntvQ5@_?hq_9BzFP4wgD&X3UgPidP!g_%Od*9{yl&zfS zBLbVA)O8&v%ab&&KF`t)=Ve(_UJXtv)Rq_Nb?JcX_)Ld8xej%q9=up5L4KNlR*I>r zEYH4TY+j5r6-$3YsiwssE{LgEo6z~_@Ej2G&!)y3N8B)Dns)na8Y4mY=7hyaktdOI zRSoMqS$gS4G10A3s00VUNkxvtSUDM{FP;Zk0vSs@ZnEZew92goY&^OeUcty&SZxG^ zaf_f8nnA4W=qEsds_P_!dXKIAxlB(UX**+(Q~$$N{%;72|5#uDul3Eu%K1O;m7KX? z<)qMTop5qLQ1;@E1V{~9fd`{teBOud5qIk__IpVGy4oZ=2`_BP*IY`H7O7SWtBk(oA3ozX&-w!PT-%>f)x{C@OXM0sbJcGI}XJc9ouHq2)dJ1I_KAOb!U=NACYpvC(}c$ z6k8~B=UhD1@7Lu@0h~wKba5637xeEnMn(c)dh{243=*s7@$`uiohd9{^Qw?8*q%Wr zD;|_stQ&i_G32KB3KFstYDR4aKH z{`yB%`NaZcZ$pWv`cb_sT*nhUIRwUw;JhBOE0f=V#-vJkil1*y`59-R@c!GVz&meZ zYi#J{qdv6(FDf|_<-R^({Z0Z?rv}3Ot^C9vYsM8#Rw+8kea3B6n5t%j;F|%Uf5? zs6yKcty|ryanisvmk&@_KDw7ZJ*@%#M@M3BJ9+P{p7PF*X8k@;tx+TlV8$GWWIbC1 zr17A+&82Xef*1GAse$QX#PsH|orB82H}Y$&bqK+#L(kaR3?UFY0p+hJKuvZ{eOsu| zwTJYKj~ni`IOQ`FR-+lvc+LFtVz}C}!BdH>q`byDiAi{DM>W6Q=>)VEl&C*hpp}8~04_5fC_Hn}Q6&$(Gfo2+Q?O5*P)YZ1E2%X+RC3g@XVi%4 zNgz9hpqTexyX&t&g5_qcJ&8f^4^z5pjvcj0$K0A~>SB|RCcs<~YzI>PE>^Wo14 z@sp(f*`;h)S+5v<_W4ZZ$08jINJltlMH8b^+2*4lyNaV1h zLGBLVxOvO40nidE34Q952}e1Kggh? z#Tsvru6xD1<{nBu8A{-Q&AhQ?zpX>eJ7(d*)kyNilwuQo1kdFiQ3@$G>IyrfUs0N?f2mHi~C56_kRNTZ8?f>t_TF zm~C}NW5^pr7wbQ{e7W|J02vj4DY5XW|crUCb3E35w z8`Grn=j66AE6~fh+QslWW@qa7SM|tP2?w>E*!*)v-xwCUytDQN=|`qh!bvtezP}M` zPJpv?GeN%5@K}P~l4747@$n&_ldx5QC2pz{IQkmQEEF?ERGhXva=@buYwd#X?`L_@uxxgom+v91eSUwke^@ zdnC@}rWbUGI?Cmd3UWH?qZ_8#;}E&<5E9dO8^tmPW=;GHV)zbxDWAhdv4d|FL=iDwb7kO@IJy*(z^o&zdJ6We zoS80m=0yI651kma9Wj-n6~SiAZPzj}K(?nu$9LRCp77XP)7pgzn<80~HyTwpbRjKp zF0={+|JqjaV#+_lEuuSySp!MBs|?~*|D*z6`oQh{M0A&vDM}=@bIwvW}=rs`ITfDlJ(?#05gM9;!OpPuXF!dkF z23dy!!lcUd!O*&HEy$_Aou_C0lw(y$A*Q^nF|ZJhBbs%XWGZkvY3-TuDa038p&R7b zaSh~(HNKUD%{1?*jFMaiL2FygADD8Sl*rqS4tmM=Kv*GC{AbM7-^Q2LKPK-12b8h& zQg9&waBQ#&+y3u<%Y0m2E<9GSpfwO#QZFR>HoBp%d1dZ7mhPX;>oxS;w9 z734r$lVvI;0Xxu@duE8DUk& zzUKr8Gma2|79rqe}|m? zUp*bR|NC{|KO$$DBPhuX?8ohq0bDsm(TRAIn@0tPvnEBj@0l4$z+x zn7DGB$fdAp{mUoHCWA#o`7y}A(y6XU3KUxz=h$}AeM#!~xo{|GeVO@Tu^!o+o7A7N^&`B1VXlP7C(EKwPQshMf2^?*pw_0R_9p~5;swDo z0qjMJJe>}8JKOzS{$i_Sle8(ZsYH6393QjC z>c=sWo&%iR_1D}Euv7bjI3qW}^-P8&1zHQmE)xx3+n1AMOz z--K(az59p?g{*NxTx~qu3<92AfARy(ZN-Q&GxcPNgP#&RZz&UAz#2Q-wE_QcI@HC@ zAHZQ7aRG+?*BhendwNezkic1LEb--6Ye<_|O#zWsZ0w9YZ}Ulu+{bI-SlUIry5jO0 ziLmPTr3t5M$MfU<(NacASe6Ljw)2?ehM-!9uwCxm{4ahjRrEQ;U=E_%&|I>fDkY5R zN=N0!jQ%Y>_AKNGHLofgP!#o~piy)wA#!Em|)dpuEl)>++??~E{g8=;m z&0{`>#WMO{E-L!~S30^CaMSv+DZ_JD=c9vag)~-V6!}npgw>k5)F|N2T<9 zEBFIwu%{QgU64~caiH{CVQk3DQ27OUZ-!)~MIZR~$$Z2)-Qs;m(tQMg9i_-mnlT<^ z(iNaayXg^dnluc7F#360un&FR<`zH7-?E((in{M1K~RCCJ7XF*qh${)6iuxCO zLV+#2cr2FW^9R4;*1_Fcu`=|+RF1Z%^Tt{RZ_DG`Ah<1eE7m=^Y>V#NmFTlSPCW@o zMEk4=>sm_`GX>1C@};Cu=KvInEQP}%4=?_>go<#M+Psft@WGbEhSuR!m}Pf z!5;M9wbR?6o9X#b^@aJIMoW`bU|)D+mVh0v)R;rrG?8eK6E>#9>SOO+YZ(=#nA^V? z70o{b3h7naRLO}@wRI#`3#AWIgDeD}v5%m1X)}b_-qUDr1DdzAd{R?)dn!YyJ<3M* zqsxY|FC$IDmMPl?^ZjEtC^F|M;qS zYx$WWcoWoR8k}DIjFOXX9IQo*7^*8LK4g0jQLCM!>;AgnvEYP%f{L0Mr)(B{n2*`{ z3h&we;2r|siQ$)**>d%L}IOgV^pjUHITtp3)h3id2Ey2MrOMKk|{QM+^I1Ss-ea;0ZK2Z z&lDhwgsJnW`sB#q8D<8WX7(~Y$D$ATZN6*AZ!NNFx@kc*-6Nj9@*TGjhI#{2oCOip zH){cH^t=Qq(i~~+rwkg!mKI|droa7*y7YrNsR=SAn@nDfBcBiR$i&g0Kr&!84UGov z4c)`Uq_ZcRfo3ZM32Is>r?{0qHI@7=k1uq{c8KGslibH2MJ2W2hB)A%O5dHUlXOen zaU~_K42}qSbW61iYfX&FyV@~9Qy6f8Mzw}X#!SJ4qyk8EeQJA*i3tH%6seb@1aI6F z3(U*3mwvz>?;WH8&t9g=uDLXET_^?g8DAn zJ{ObzPGDh7;bbz7Viywp0wYZ{m{d6)qfxdlNrBLk~uDJ+2+=F#akcc;8R&d7t)0YNO zvp?RUz$dOKq$W2AO- z$tV&ZOWX|vD|jL<$I6kt`K3Cg?+CHdJV?lEKTo_nCBV7yPn~(3b)6^dPxaEU?;x|l$DyTd#=u$K>rn53A!>E3@|KQon~vi}Oc06z z`LeK)8&;g0It_mQ!}3&B-5&+=BKBB*qv=A6@*VnRCn8@B*V&Fs0)iE@iM zMK+|@F2mDREqf;PF8vehj6yokzald@u0++Uv&AA0myCAYW(0~BMh+|VN}-AQbTY{D z9cy2)rTK-XEBpan&S$>^T+f;vaK34MVAyt6QTO(X8?bJYo{EZ(!+(%z{|&PBf7@eW z`5!%;aqpzN_D^eHrjf9`_i9ar+~uErJp9r~T?Cd=q#m(R9PecQbC|@MIuYP+&kUsk z6}otI%t;s{!`>x&NlJHI_OP!{Gugc`!81>j+ToYt-~Je{bf}f}{I)XL=8F|ME?K(f z=OD|We$-O~z!j=6Wzj9qZinH6owy|2pQAtzq#jn zD)CGpXhLqHl;}_JU&d18EZ-R$wy_Hc^3^gwvuV%xbG55KYCD?J93SUZy3K zERf6N1A|T1tVqm~WY76po5O7$^=fg7{*BZNGTPC^TMvRZsh^+c12~)0056TnkO*hKYO;#*x2R# zMD&-=J*SbCj?`W*CR@!dPKB6FcM2HlHBC+G=xbkUi+KofK4kSlrXN>9*hv%ehCsid zvdrRPM1`%DW(tU+b$do5Zn`SOj5n=Iq>Rmuoo1&XZ6Lo0irVBs)30G9(S8E-kCk_# z%9kIQ#(dwx>eEN%w<;PcfBQ~tG-WoH>HkyA_C`&mtzuU-IAXYvv@5y;PFPOPOA^R4 zpsJ^ua&P*C^6qJTIg(Fu6j*oht6zuo{%u|Y6!dbRE>8J#0uFACW5-RagSI!Iv9&5S zc2Ar?z`B_)O6Wsog58mT=Uh0s3B?_QhYCn$$ux@^B*~94Z9ccPf(x8{EpCE9kHuFv z<4i0}3s{vBHU2F)@>_ox?YWx|1^|bGdhNcTU%2TvQ3D=U3=FfnJm#j~Jb}LcEpw{< zsFPsLo6dnTT8m1}RuJo^{H>Aceoh`V2&#TQ?SS2;JybWTKK;8|dQO>kRK3;YC8Wul z^qClN$G0bk9`z8xllV-fF{!=(COwI|NK!;wtPl*qr<{)J76DMAi*{r^y45h<>8Xbq zhXH?0ATa(seHS=&BhgNK7D>(^g2m!|8MP#2q$%pRpM$`&EaSBvgLyHPGL!eaU(DOp zzn+sgQO?T)qDT>;Ch5EGNX-rF%%b*2IBmeqEblIuY`%=28+Us&WxBI1tk5^eM0axQ zO1dQju)T6_y;becoz@qPxa{yi6!61hUH-sQGv0Zo2>#p3m>9|41Gm0n#C z?nsar0Ti{YYe^+_wpZwUb%fF-RD--w_Q4oa#Kc$ufsfTo`uxI^`~3=P!uVyrNo4Iv z<|~}UB#IDV|4e3{OpTsLJVdAgnHuXoz#qR$IY@zf@>Ul z>!13eno@TPbPu`icY5*^F4L@)kr_c)5q7*#OK}S4#kT}RD$yI~iuW+deWI&PJFb{= z<)t5dT}D~jHz39C*_noN8E0=?jWImS2YJ?wigkb%yQbveR5=Jgypz2MSZPojWW-G; zPPLxsiDm;OWf_3pPu`oGDh=Q(HjR}r5@#cD7vJuQ^GHix>X|FmW2ST&zQ2na)D`PT zVSSwk_zzd~zabp{Z>+8VLoeoX$brBsFWzD}&q-M4iBPBc;_(qLoUGQqY@+b*stw+Ee~{Ksgi3|(~($1AuYyX zKB+Nz`${j$r06-gTQyhYF67Bs81nCD$&i5DQ6z04k+thWwv}?lQR1 zj!d&TTmkk5cO7_z?To6<&G8+Cf8LpGVT2G3fP?QB9~V<^GQWChtOF7fpowD?XMPJPffg0u%O?V1fVl^}HY0*;cPBO<`Xdxqqwd$IKm zR?_#cXMLc)ONfAD@Ylp_49f9nn8Z5_^amSTo-B{v{-EkIPMAcS>d~G|bR48bn4Di_ z)ZZBFoNmh%dUPJhV~{E6ve$Qm9ca)yE9zr^8F2bKv1)E7ip-ebTXs0vF3d;S0a}+s zv!r z6;Tg8h^y6I?wJR2LhM$hV5ncC$?*m?^z`?7>qMy?w3j9v8g^) zgDS!iH`hMsnU8uQ>umL`2R!YjXXT&0xA>!5)N6YNW1_Rk9=A6|fiGc~eylJn4flF^ z#+fqT#?M8|COy`xn1*pO>Ilg5y>4LlK%qGWogixsyxPM7BIXzzPaQDXr=MGQ#XuH!jL$=tL(qTU zn!s9D-BLw(Yl9aDnlP71wOfC`gVz}iv~j<{n>AW-38a*}v4ZTb>WblruRTYpX$(hz zGeCf(5KFjf$i(ahMNkxSROGNrl`S(t9f%#C`n8{In1b?*Jyc_!5+t08ML<*rcPjhU zGd+OZPK4s4DjQj3U637wNzn}9SO!nd{20?gCyB6@bK&f~XfjwFR6CM4nQOL0zZL8J zf{Q!ssHOVA4zr^5BDjz2!G7$f%k^G&_06T`PkcRm8kH{iA@!mTu53i}~zb zOr0sgPXtY7ibQ0Rt_5xne_i^B2z409Rw4<%g{9w`K;y~^^p8Iz2r;~ z<>S*EElc^u{yvl!fvhzHaAu}w)~^A&d>(uvB9PstWA0rIh2@4H`Y12{Xe0Z#u?J9`moeLzD&%YEu^|>Odv%kX3ptrMdr3=)_bt!68fQ^*wDFnNX3l1iz*kkB2qq=d zFXR|FglExflYhwYe&-M+Hr28F~Wkf#xLb|6P<* zNMNcintnY*6R?CZMw{-?{EeS7nx$uG==NN(})7M#<` zFEMt!1AT}_#p??O<_k@Ai7wvcyzlSP(zWt8sDh3hZp1U3VQe8ZXBjr;oL)+-Y<E6T*-h0eNAVH=yy9~)fqa@-7+2gYgH2jQg`N-^;Sn*d+kkx$F^tp{RM348+na0{ro?u?KMPM7*pb8k9>xMf?{f?xGD-?lBO! z!^_-oH-rDyPWE8g-?IfOA0Yf@Q5@9+2`94gEW!7Jv)y#V_uND$huKGoEtIN7frNUBB)cQK^_n-LU$$?yme< z1?5Mr#2*n4vbiYm?A%Py%aE$gs|BQND{fCp?*LDo`_3VWZ@cu@1w>XJ0~jvc{FR#_ zOUJpGWfmF|zQy(|i9-~B)^;_YiYxFCZOivhkP=T#I~HV$llRR~lX!mU+xZLe!;8mKP;j-)s>?5=;-G}5h+9h8Y_ ztc_`4%;AY&9K73>i(>9mkEHX-W@M?v@2f7bRMR^_bPa1^W}7kqp*Mvr5X9VUDUvL! zR1eo^{O0Xdb0h;8tBWFw(0LS$|2G#yut66a*~$CSlb0!?Z65zrvwPWsn2aGowKuF}mA29;M-Q5M96p_J7!dXt?EE@w3KbG9WIi% zZDaGL^~-tf2Ygp(WxZg5tWgUSbcpt)qbh~57}_WPcc>JjKBH$wj5b>>-AqR2YX^j1 z@y79~5vmq>h+sjBG=23&&whu>>)EYsZ-lac9*paibElLO%J_mF*52vItEj8fa5z-b z{d)?x&}50w>CJuPi!^iz5hAF*yTCt>Yu2Y>r(U93=~2GHvbW&YKgBw0$qTxDr7G0? ziwrEfkDD3HmtJ*ckKqFJKgi1e4&lnk{{Pjj|K}(Vn%zJU2hnX(8&7h#0OLk}aW+D0 z#G{ynvVm#E+cdO(ut*66ely*jmbLWAM+Or`%w5}OuqYX|4{}*HL)Fn!wEo+utt8A>YZQHhO+qP}nwr$(C zZC9_pW8CiZ(EIlO37HQwBWJ|?B3^23l=c!uTVFKJZAsT?TZCj=*63j>E z89uT4Uz!_2O^=j-ME z1D(FKx*TsYV?V^Ne%u|%7aIvb%wr;kndQJ5Ty2Z2K9$>6NSkH!u7))o496ggvmtOk zpbtEN7RFvL5@IZh!&MlH**Fe@E`K_E`D>pS)GC$7MJF$AdKuu4v+wQmeGV=o&s4@l zk!Kis(isK!;sa1Hxsct0@K^U(L*6^|_+afl2rb0s`Of5JhAlxg>3wxL|JpCN|hc8BNLdIS6b=}QmwY(cZruQBVcwX6sj_DKOo zZh#Z1!R%^|8A?oBd3uy`>S7qN_nG{u%&N%P26CDo>Ct)hhh0LsPTxU2Fm0PPLU-DkE^~$-Q(Q>34xc#~U36Nj@nR(YfEg90S~=Y1N{E^qN*IQcFmC zN4cJ@5k(Pk9LPzf2`W0g-HckWuxXmQmQGsay61{%hN(=c}+Qnp)lB*O9|0AOyugNa$j$2D7A`S=JGgen@Q_WD{!?JIVVx3%>mfDAAfIB~``r z@n6`usfOlBYDS&Sl^HoQeE@dLmt>|)5fqgI^r4aoM_XUj#>wvMo%QCc*1jZu@;6Sq za%#Yrp*1$I^t+4xzO_f0I|a~e|Kw@USPl2ru0E!**>9T+DeHs^e;I`!CaX=%$m(dK zlPs{{0QD&P(s3yolmUCbpCB+#WGz5}9%p%eFjuV)fpsdx?0tq_Y3kmQ#utC63?`48 zzYfH_{Viv^n+ik<4t?-nNhv;8AURTzE~ap{sNbbTxewq-%jtVD>EQ@#p%FWCGS^|A zT}jbS;WecKhU`{GUG$D6d{iMU2)kf{#XhHJeDwA|63ygFxBQ}i zKQrS>`5{1Sv~mR{R2`iXVe9>pam_ekDiG(<*+K2WmB22fkPc*|hAFut@?2>N_Q0-U zaP#%wj~T!(!2oeqw-m-Cb}fxvYe~*BYuwxcQ}i4kb8A$ZJ;qZjG;U};)7%@EIr|G_ zR{o6O{7_@T-=0jPo4n{hJ}Owkoyfu?Z=vGe|>mK29e;efL3-CrMX4Z z3&Mh4c*U*kSyXeWB(}*7XhPZ_XKrLg-{sAMj*f;X0QO2A>TwlAgLTnqrs9hWwBfNN z$pqnaP|00r%Ly?~s^|$R|3Zrp1hZR_F<~Mc!rObdpN|KKL>F9Qq*(&F9T=B9L);(P zL0!V`c;Z|2GoO3zt_}z{f{@!0j&ow^77lRI~nzTl9?T zur?8reJywrg(IdczgW&=+k_=rwMLLe4m>UjL2*G+K#5TtW3G9m{kQB7d7ePaaJD;a zQ74VkMzU@)H1?GLT^OUJ(11JqIW{>k#@wNV6ewW+FM3dhbfK_=XbQ2T;A-G%MOLdz z$(Lz544^OCB=_R)U|v+>>>Q#>o@DQFJ?vB{qZeH73rmKrl_xft`r!ycbW_Qctd5cn zSRaj?ORnT;l`33p6yPA^v@6xAP%MM7@kWdYX#IGzSeYl>cf@oQ3% zBtO9wWs88YrEsdtBbtA-jKI~y`U^ZdH!xY$Vjd!#UsODr&L9?sq*hv?WwV}1@&zdI zfBgx^x0TYmwCTQI&9SR5Cagvpj1c{pDn~Xc60Ji&4LdEJ#t2RCACT{yAqxHdb%Jmo(A%IRg_#VUllPC=bq^Wc313X`uTidB7DVQ2_k`<=*^{d0;bEy z&fv;*5C7nbNIH3d(fUEKzF3;sKcll27s3yz2rFkh#Ds^UC>#!s@xM{`1Slv*<9^~U z2EhW(n~?oP78gAqs0SUrbf4pgPIwK29a-I@Z*2BXW1}RSp}!FKCC$Nw6)!Etw8A<> z5c!{Qb;R2Sbug9SEC(&K!+`QtKHqLzVltIrh|t)88VQv?ZDi%jY5PbaKVxN$ip=y0 zC&r`c8y&KB_bUyWk;hi-9#@IgOL9ov&v`3@OV(~@4)0(hq^CkC;28x&JGP)Tipwtb zFb`L1fZGkzcXn5FFCsx1pB&WHqvdiAA9smTW#(it8x6z}nxE?J>AyyLo;j2_q5z-w zW=QIK%>JYdBAMzZI+i`$;|Ca_Ke8_CiyJs!{T6JMIbT`+Y{z`8Sx9+HgtvR9Y=F1r ze<)44r`-iWvar*R@L*Vcg235-@SU2@4IMdSsb>7yw#3?~^MaP*=RVs9;7B#e2QsRn-Dk&|CM%8R@MjlY)$f;13J%0Olqy3 zbN<`Hz9=xQlFmyLOPI+PBkjbbm1B9Wc*7pet=poLh&>dSj#n^tPv7NteigLXm^7%- zWHM&CCgSFYr2uFrGrFzG7|7H+<9)u2jiZhQ0lMs>;mx-kKp#+(`vn85SThlMa*=#_ z4?#;u+e1tBn(v58Ahm`wVlRbxr-KNZ;29orZNPSds(Lg{pQ0DMxQ2^*zrxYQJwq;5G5qk z&+Z3xO7+%5qJ{H;K(0ldV~^w|kx))R;)k@WV-UU+ z1V$n^)4-s23OH1=F!7fJ#OKj9-Yy)oodKZZRTSL%xb4B*O!}2eiBTTwv_}q#4eZ-J` zHUPYlU?03On1WGm$t7tV?l=U$#VZ|W-OABboZ6u!@*s(fPx$BC;*@D`)@}_4#rhHU zAd37P9|6qfP2UMs13LcNzSi1Ku-)++nl?#r8%%kjq7cHzXL-C@PmaIRF_yY~+QcgCL$3Ui7Q0Loo!+wo2rof%YddOXd>|WAvX>$!2zs+l{1(DoWU+&ytbeCqDpgT zV%p44trqa7Cav`WcQzC6s=FSC2A|^O@^eUyhxUrA*BmF$ zrBqF)LkpdDFjOJ(yVP-O`+}r9&z2tr@#MD)>EG>?3*$60>b0f1uKUO>L$l@8oJ@o9 zHYQxDb&1Pvs9||M(&O}#}z|B1ua{Azjctc+iNFkbGz`xAPmgKHliXtafXvi-4agXi2TK0ti@kd;x)d zk85HEUFP`#b&B8BA?)pRs+mF{g$?wLvxt1}=3c zvP5|$=WybvIgjNLQvm@gW5ld%{PfHUqTg07t@G*5;vQpjQt#ALV!zRyXLI5Zt)NR| zr925DSx_3Ab_Iofx6qE9w`{oH#KjLj6X?I<>A&NyoBf@H9&Ya?mbfjJog9Sufi+B^e3H)mWY4N3y{>3)ww8-ziC$nzIPfHQ9xwuc zK0WeiD|a4GEw~s9-u%idRHfW6PkbvlIIc5&7wL2-d@8QDlx<_!pULSnPx<9Pk#$3# z`MHnixE34<+Xvpwynin{s+cEj8|Vr>neN^!8nD+P{b6MbP?$rknvcysZR&R)j__kd z6^eYx_Y9&E3j8_;I+zYkX9m!y%(hk=YHo7K50FYM^AkD_wXkyVN&=3o8`7Hv&5Wj4 zagrDR4^#NRAzJ?PnEqe(8Wa2f5iCB!za1%I-9TBG8urY4ShVF4CEe6!^a<}{@Zu1h zki;fNoFU50T)8IiXc)pNZKwk9m5_>YsMHR2bS}_D;}6fVGj%(t!jDxm+I*mXy0g-c zke?YtH5_OHW?PavXl)X(5qiicn%&EY_96)Ehs{5PD7&>ke$U1GKto2!Dk-|vi7IOt z)R9jf+nL6jKZlOxZbOIvE=L2;#mQ4(EU`q9WDrgntT0m41BRSs6jVS!G4A;evDu)yG5a@%YZ6s%K8KpS;)l$TS(?n_P$z^|DW zZBA^stjUOyu~;YB{Tnl7-~ba0yHR$}Z4O~~B{ps3!P<|%PggeY9G~jm*>!0cCHnax2Es#DaH4l0s3|0OAIQ)kk+#Zbh1h%q+}MQfS5M~lZTrCQ zw5F-BqA|#U1ZF5rQM5|1FV_;nw_<{~{RI#(Vv(8@T^Pa<=F6ii5f5^mXFNIXuAIv@=63^QziFl5-P?md9hvf5`&9`I0d^2E+>!w*YspOK1Xjs|P~ zY`;eg6KZn;ZDkU4W%e#t-VAX5FP6<=gU#5eJ)7<~KY@XNGGNx*X zrsrB{%gMIFZ6G_ua>&&v@f()g44_l$Dmk?>ipsTAD!;d}Wff;Xtc45kFy0W_d!wyp z=V}>qV>+&(nj#epJCBzy3SFVmdvwZZ(n7I%PlLC6;+L99q4PH`y3q6Zf69gD&jslF zbi$|pV%%3JKGq!Y0(-23)OEUD8^R+_dixi8f0ZaSv?Z$A?7J_>_lpQ5s4I z%qK{uP<4&?JO9yZTw z!J9VFW4^I8-o)2=qcA^2>-ppEO4%)d^JRNTS-w`B{so%OQ=j$lVF}$oICB6Ih() z!;V&A_`)%XXJ8~uB75m1fo-0S`p#Nx$ff;qMH5+0k?_^+!%xSK!`5b2I&_&}^4(!I z=70n|w@lXajI5@On(}9@G9Rs#S$c%wMx%FpAwD_$fh5C1lt)6(^nmXJ z?uiigImW#!&tQX1yyeORjHi=8a(s5a#P6#0><{+lhj#kf;q@#3r2)KsE=?Pw%zs!c zB1J0zU98f;)U#DfLFmfyMSG;%YfK>CYtvk(1f15uypuZ{)sVZmGyn*IbHpic8OU4S z!D$3!5q1MY#+Y=MDh@D>5mKCI1%SAt8@p_JO$Z`w(e#^57DXdzqObm}dbkbAV^H+! zw=moTYYWvb%bKAa3SzT0g6H?azH5He#tmkk^)Lj{{V{!ZLT>?Ns10PywUyjf87-EC z`14+Vv%)Y`Icun4#PYkTG%zL-o$9-)(vQjJ7in{qJVns&Wh(o31h?r zSjJa1Y%zG*mYf_9RsfQdJIM3;WplvO;Lt&9jG@&!Gz)>khuFU=2uIT+_x=i~qyxUb z)G3~e22Y^t^HKW3SYVDb6OV)&Z$bDwe2pi6;-_c|h+SQPnJ7C8XPyG?y>kbHSkz8W zreWc1fPq#3Ryb!WSd=F_=LDKJqbN1Z05`>is1IX#| zxuvR?R49wW1bR^Fn~}FJdw2UdpHdd#ueMa!mb$+V`+R!_hx7ra;id%84=H5$i!sI{ zW^gW4Jrg8@2lXmwQO=-Zil*s*wlNRL{6m{Ajw&`$4%S6K_TSoW=r4)A~qm3v?AiJ{5 zL6L)0=d*aOa<9cTV3;`JuU%K$jYyC>X@dK%B;2d%M4~nJpktcoG}F8|N%(GN-2>6M zqka1ef}Zptfq**uevB8G%3lnUkVnmokpbE=|Bq+%|HD#4$xc_$qK{(;+*YIb zvkiCX0jt$5ISoXGP}2kS^%h5iFh@)vtNeOJgJ6|N(k2lY`MyhK>{VDsLGzwYQw#hT zqubDY9BkrQ{3_)HndIFrdToeiyiA^OC>soJL};ycd?`#7}nOi zU+5cryOMgLoMmd9Nv_7a`lCEd2UVi!kS2AyGWMT=eLq{1Yb z!GDWpkv>6j=Y^Y4(?2P2XsMB`k8jmX4bh2M3#lL)aE6;tFP8C%fgKad;-BxP3E93O z7mIppTHrC{aQW!E?^MSAb(8WyK(XI!X;G|n##Ql0lOnkT8|6}&4Tgk{LjSR6zEbNd z(kGRmd$NmEZ>v*)Z3xi-%sz}*d6qeTd1Mf)EOtJmzuJUIxH*_MEubxs7E-WUMY$*a z_1`ER;}Zm_Y-S;pdA>RxM0j5fzglYR|GkcGRK;le?&IEK-2k((A07Ku>{-_H+JGDV~H(ys6LFeuER=K!%+ z@wJ}-2v3xP#jsrgz+B%sTo59&h3B8KVz26VgU4Tfph4yKC{%lNbC02W<-6^YRJbHQ zL5}qsr|T8`h47!6OY6^Vtv5@aotBhuH=c?`<}KeZ=G##v3*8$QKqPF2o|m5pzU@j^KiI zH~|;F1^^(Dk=~eBFpC(hI-xe{XReAwkSSc%U49zBTSQ=~RBl&FPgTl!N=o!>$o?QYC!AmvmxvA7f~ z1WTa`CU&b-*jp$F>f1&k-t8nE(1nK1u!eJlEN@pa#x7{!&&hYohM`Pq^9WY3>Rs^u1wlZ=cALF| zjtK6!P)#LK(M4jljfT3({r7`!4%sXruuEwkEY7pzAJ2<2TCuLZuFd>qnpVCeu>tj3WQ*0ZdNV%G&!h}QTUi2LV0N(U@zdk!u2i=4S1?r+6rh?jL#{R{!*vv5D0 zy}Mp*;~&)Fi3#ncrDLr>~kl)*<)fblkn!n@7z?q}>pB{y2EGn{O$*}juS+Kcy5 zyo>wvSY;DzwVp6%CGLT-q(c@KH?e@a#oJ>LN5!e@FAm%wfZ=G`3cIwL{ZL-HSg}i* z(>&)9e(TXTt_OwBq8{|&(rtlPVe1i5S15{4*%aTEccqBNjJz8M#qj!cZ@)thncxf& zvsSgrVd9d{L|hPm4y)C?RS)HpXI=9H&n{`-HyHu?KSWFnh%R%%#=#UPfc^V3+Y0m# zKbn9^3{#o>pxu^Tm2z2yp~`KJe$3%YuTNeQE{&kuX2XSuzn;|$3R7W>!R^%t#;=Dq zj3vs|Wdu8W<~)UvFR6!E)BT=4H$XuwTXRud6L#I)!Nj%CdkpaUgcQb+_Qk{BGC?Mn z0fC3pc{_JFc}VXHxsW0+6c)?Rf2g5^)H~}dh+?tzqmw3T0iUgh zq1Q%SJsRb3!NqM|?&H7h#c(fIeJdONkwccra+fkI{Ro$q@QJ$Gh-g9TYopy>CQ_U+ za^ZQ4+c*!N4~PZ_H%|2nG-RnW7qN7hA4EbF#jX5B>PF?>Kyd8}h-^{^s;gC5lTs#= zRBIppxMK$hd}%&jtdq7XPby8OHanPKQw;iluTmt*BQ}a~~rrNdE`f_TM0I+1cp+w`!xO|6i?v z|IuUF#xSLAjF%Ru zY>saSx0nJOG~au*_$kulG+=$$fvFJeD|h~AcqIlB&KJ|iU?`gx`H#Vu)OqX+)i z>&XY5ho;Q@bI8=jll5!s`V2p~=k%y_LOPb6Fv}<2WWIJ^($eQpGN*#9cpnlNJHv6> zLCTX!Q&Jq57DhN!TKb`eSE|h~Ar&S3ITW?sst6NIsqC$;058$>^6wjORlWRpx_`+q$R;P!a*iibd=c(7I^*TQV6KXvB|DimY+Abup8$Tmr7FePc+ z$;z|bSsDdL)J+WD0iU@K04wVF;OT7mcV``P)WHY$HY%tyo!vDYJiFo*&+5SA6=wEJ z=IX4IsXbRz1**_AjbM8r(t~2r8*|i|xjShnBUn_FDqrQo8v9f?z|xm!sci8JY)?_E zy{dspdy=@IF1ncme5y83NPss=!{c{f@Y`mU%w~F5udtOrPRLGAkJ7WX2;|!HUwYV0 zlx-=RnlAWhSAOOjpA+JuBaO5-=mA(<7)wfaC9uF!GGq+YgBv zYtCE}D&#>u;Cg9e5O3Ot??LAYdJzPx11Kllh0HV0Fc)qf%)mc_)MGAov7)1F8kg`8 z7o;eHdL!L&X|e%wU~FMy)G_N$7Z!;LYdqJQgp&Bb4&T*rS_PHQ7Vj61hH{p-3Kb+xo#n`1I9q{Ih`$dG~zk)-K8DkXOy* zC@!rf1{MB-eW;+rDUnXw6;n_tqsRs0aC@DHlxqyrwe%%=%cIYDfMX^(^m4}hU0&5G z-C;AL%Bn~E)$T{vbqK24E9z@!yi8n`a-h>^w<&a&B>rU6f=V1AZ1*^>gSOP||1j15 z8$#qi&w~Dck2MAs=KrH-fnJxqv9`82?ua&OPZ5yp){?o>?67rnE7BXw!o6n5p!UH+ zyiWj_G2z659La##Cj$b0Ldrw0ct8c5L~9AZVOeFkinlT7Wo|L7UsBrCVp67lu~(2> zCrwWSK{jq;hd9y>Jtj;!7znMMJV0Zg-Jl9knvRnhC+(MN0cPI85K2P+TG7ZTOhu>9vTaVeb zt^G+0jbC2dZ*VWGDLj%F?kzXW86LyI*KBIJlG@`c%JuybN2>>S_2<$v;9HVb6Ze%X zjtQ<(VqL=*)67K^gh2}-uepRCb3*?yTlM&e$DjvB)v1QvWrY-y-g`#cR;(#1EfO4} z+{?{4(poD>_f#+jbSW0#Vz2LR&&c9 zatLlOnNAdJVuLTz@@xK|cM1&U$>H|zS)_9eJ(gdW$#^Y0ieh6|*ELnu8y%Rq;NO&z zu|+dI^HKewV7cG*v>)2SQ_8@&R*GW88?=Wl_?F-OTT;RO5>ful)cqqkc-dw9!|cuG!(9Yz@+X0`iXa}1n}A_@p?8Oe@Ns3) zR-05DhoU|xVBSSY#(vcum@@{3b33dY;qLTtK(_fz95eSQP9Ac_Fo}>>WI=3ZZxF=5 z^oZ;=+)dsWnsZac9Z{CH>RqtWYge?k*CcJBbik2kZ*sqX-BdDuB6SH}`XW**7JS<4 zj7w}vnDJR-_we%S&`xF4NTrt|TC#D()Owh2{*)vFCQWBo+}h zdi;vBP!%zkjB@mbdPpd*fkcK@6tR;8Lenf;_p)i5r*rTe**PLNx|0tvN8qJ0Q&b#g z&)rWyk#iTyN!K@E&f29#I5~H7&|-)qe5daPzZAtR)o-x{t|eJK+DC+k-Pj>dv1JZPD@FS{V~EPq?-I7+7Z#@ zv*%3t0tB+Vk_TTgz+W(0uo}(+Q!(cA1y6{3tWPi(guwPS;Xx(TzvS?q8S!)85xBhw zT4)uCwDM7}3x8k#zCMtX)6Ba6rN$ox1};1&{f>E-P2^fCs}N8o{^UhAvBMdrF@*vp zCG~77;fMjVH!s8J3%NbhZmH9RneuxbC1s9fLzrLme~{jRCg`M^uD zZ2vJ8QjEuFkr5g7(LllM(&l6$Z#5!{g-V&Jye|Ugvh%-_EoXKjZ%b2MJAEK1LdBm9Cyagv&qmUWSdXedg1auL&<*a5;)1u_~Ty2ulU@xe{p9ZaISYY&7 zjXH+2*~3KYLfut*!exj^1&c*hjb{RYPsT92jgrYGt91>b#)yp=C}u8ki~v)p!M6H2 z6k$AfUQkR7=h`%hh(T-IFnvChPP^IMXLcp1!5va6v z!Wf{30WA%m{&XlSG7!WHScmmI;CSY}-yx7Ce^fPYgPq)inRL#p-`OT zg>&l#)&YviC|D4=ghhr&`d|O=wyCp9ZuF<#NTb3-51uq=-<14CYC?OCBT4jj@_0Vo zv#jhF+bC2K@G5^Y>>1w!ps|?E6v-aZyvXokr~gg4tZYf1#{5)IAqKzsbWrGO3Wb_7uXNbeW{PxHC* z`$%t^-2~yM0GK zMN2I!U2C2T7xpZSwRD+z=r{Zvv$*2I`_C%7UD0Z^3=sT6>;1Vyc<}m>@-$ThL*?X8 zfImM8*GrxnHy^4+)ZHYtaigGAY-#B;v*-TSrN^0cYGmxH zsttY$Y0I2!(|T=Vv^OR7mIGn+A4Z6OKMKFmgw>Wy66AYxI>hF%u^Uwq2GW%gb%%Th zVjYeSe9;3r{F4WnUi=u(Fxx^1h4;xoaYZF)fKD6*`JGdQM^&*od*_J5ulDXFOz$YB zJrv54%7D&>xqu{{d%S__)GVl_K~7t9=WdQ_$24DH%lnniPKS!}DLv^cnY+->D{VILWi#OM_- z)M9JCs!D5gSv&h&?IOFF%asY$GwTldp!bVo{{qM_^zie9KgfSs%?CyGN*-^svuZqA zBLm03E`tF3mUaZ>-eQ5soFZU{vbg;R8T;QMb^iy;jD_LOmt&B$!1^lqm<-7amk5qK;5*hQB$Xa$qX_d*aV#NKE6+!d~h2A1J zE~twYDrL=Rsma$o+c~j_lM?B9oy|XgS%N_q&Tn4tE>66DzJ`g5XrrqF49@zYv~dkB zN4|z80nRh>lA%w!DB_Pic}jjXf;Gs(#UPz9#ChE?})Ql8tQze2A2rw|OEPX?-LMl_&)2-CW6csoT^iQhjD@~YQwJO)RSgrn#~$UIF<= z8e`1F+YOqp=xYzMa^7RcZ};4IBsI>;G}24!8~Xu&(Sdz>f3LK zIo1KvP`(@|@47-o3mv!Gm)%;ZbpPq4dW^wlY86_`ES|7|{C3?Q73=(iF@A;miO%%K z&uOPdrgA~(h+@QOkfJ@alpuGUVT`4^$j$gtmhun26Zq4OkOsaydP-W#O)##-BI)Ol z%5N2L?^5Maf)*KP+$%5F~^TV97BjetZBtVSDpcGiKbL5K7to+S0}8aBsAOkxpBz zfr{l~ux;Pc z|3U|1R0ZTRV;`7kT+5KO2IJA1ikd|Nk}e>7*Gy4t#%?iG8b@KwJtAi}`;MXkUFQG3&R z&#X*|L?$FEZ&yvyw}5c++(yqPf&pVpDo(w=jxR)+tlafyx}&E{eASiEM0KDXwK;)D z_RDEO#P$?4LnG#5*P{XS!uXR6WiV}l=5hk5AMbrYf0#a(o-Yxb>g4u5%aKisFh`x` zh$?Y#{Zi1q;*w%N>}_R0+wQZ8LLlMKm%w5n6$a2l!{;YrufdJ~Fqnwd)g8tT%K)xvJ0JCYp-NkhF(OJRKvX&|Mmp#$e0L7d&%~)|S%o zrtEiGWYUSR*t#Bh1rXlnCY#dugHQXqP*lY?l@+>W%}a^`jrLENtgG#r9AP`>%Qv${ zuF!`)KfdThM-c%dKuf|X_VO8@t5_~u$8wVVi|i&YVwXY2N5^k%^brT=$Tc{j*U#@9 zD^Rc1Wvc|45k6z0Pf!q@%CX_PXQ(|^%D9YUw(=(~(zYkl)9swdPp7=+u@eO1yqXF- z{t`g<{LIxhqXjS0b9SXSj8W-MqozsMRMwJYWJW!pe%5=`0)htMT`QtQJzne?)=3Vu zi3-{Lq)bkUzazf3UACi}skH+VTcXv6nH^{fZJIPo21Xh_q$3K=Fau0edur^(#DL;h zPj|ea@oAs_aR>ZI4wN6YV#tshGc{I4N}MmNz3VhzB$hpmiBSaIK+sQ>WCKLwhxU`1 z0%of$n?Bbdeq3#*fWKl30P6TBO-?I-HzoZ-oCL47)j!>>uGkjxFipdZ?5K8>>2x48 ze>_d%IN#_4lQcwrgZXQ98P9PlKeb{Lru(j!H=gdq?<7V*j{+E+h+u0{3&28xX9Ma; zm|_kHhE?|@w8z#|p7J2yvUb2k*zpyE*S;;|H|60Iba8d+Sw4J8!zS8?m5t!rX;6=F z&~-^eUfaxu{{1p-^m`crOe;t=37>(kNhZCqAP!piJ-Zar+;_RyYdRW0kcMsld&Ppz zABKB(2Hy^ua;Q$`YnlU$aQh}=ciiZiuXgO@G0YR3%!=%W)>Eq2t{F?9gzr;!ytV_A zv(?DvWJ5Kiu3=}K)AI&j2>elTf>m1t)-7FG(%hh6_XEPFv0vuG+sUTYmsbc7;$R+z zU@4Lbt=dgV#|w)T;se32Ck4V=MUS*3ZniUby4JoKdMGYc_vCP6X? zj=PZ6r80#|<5>?*>5+lxQdgjuM-u>W}+5|S9TNJ^}0Jvh&_Tc9*d?7nFW{F{*t@%f1dIWIii-r_=(PU zSyVpo)4A?rqQddyouuoX&t=*U!^Dl4yukQkHEBZL(+j!fK5n8@P@HqOw6jXR@!u_5 z8`U_zD&efqVqQwDAhrjY`D^&<0=bDOB$^S)5Y{k3@7DT(<2Me92AuO772$_8vLvcJ0kNFq4ETHKB03S~D? z)$6!u**pi=Lro2fpCG{nZ|}0EU73Y4ei#gwss7$czQZFU+lm_2#Ps+RA4Y}_Mg2~S z5cnO6EecIntQE7hp8 zGEBf1<1&ttBz$+7-^qQf9VR|9Nbxu?`6&^lFyNo`XfmapDW9vxQgywOi)v@q(r&h? z%-Ut~`%IQohk9M$Uac+-j(tIuUg4D}){G>CQ0Eg^x6=tE^uD`8;T^-DAuhMuQk%oq z5|!k3p9+;IsD7L9czbm!{JHlDk=qBT3qOM-4KuRkZ&ek!36*1t#yX*0c;V?@spPw? z9?MF=D(mQT#{~|)NMd5SVUZW+nisJol{&8}So1V1uOi?0e^b5~<44U*P4O@)f8ZH% z>$}Z|PVN*}FK+k%6}EDq!9ehhV3ufh_%7%ENtQ+~Qt@@yC|qS2IbNiG!bBB$2-YFP z<3xXG9daK}G7*_6*+o8CKcK#n zGiR;5)t1|38|xxSTssBq9ij-w(!L&rljqu@*Tziv<&|b;n>4@# zuW6)xy&B~a0#YJIKORji86>!oI+DKQ7-#eb9ZK5n*z;pK4nLVeTE%gr-U2-OP zToQpjQJaNW6AGq;Z7#ncR)@JvZaZ>e#IHgDqEEFIF!y(3ZITOL0@THdOw$ zdl0b-#0Ql6t?q-<^PYms)bcQm4z$`K{MUH%|6%I>Hv~-vy8p2pU}E_{E(aK2kj;v@ zYJeUp4AD-OrCm_%knkFgVvI^UFkgcD@oLYRhuXOTcGeWfl#m?WSpmDnYpk$0iL)gg zBu><6`1LIO=*)(CeucS~3;1m>!fw017h`=+@Wc9^kuE2Xr)ugKk$q^^7)*6z}BQ z!C=x|=S^Y+p;p%)c7=5s_s(izFA`#%?fto!3Nce%V$?kEd0973fP}W>0CVw>L9|r+ z#V|oJgI>4zePR9;6^7QK4o^K1NgS6A)xVJESf=!O%dfD-L%|A2eq%VdE-0fB#auof zC-{^-I8Xq8eYH+?5lpo=5Pd!}T-{aY_vhDjnq_3|cW+A3Ba;bhXqI^_% zGXw-lc2%WNbj@j<2;4?c7LN*)&3UNJ=4RZ7jtgYxtZ#~D=;jNP3^&nD=5H&oEE>$1 zE_}Vr<{^v9BG8}Pf}Y4`OhB@g_14_QoW|R&faM^xS@~m!PQSNN?m!M$?$OUsZ4v`9 zn{fDCCja<4!op-hDSA&C;q(DmS9{Nuk1G0n-yz=l5G#ft`yY|cc#IU{NY1owzX<)f zc-}r|d2)m<;Dq3)s7zm62K)l8OOw$t?K|ivP>$!$W%Co5H~W95Uj&jIXLpO6NVzEd z7hwvj1SiYR?7jWjoMs!G^FS3Qya++PSvvuVm{p${m8IVL@M5_u4&<0DDBCO393dmW zPt1tDv)~VvK2;EhURZe$fS0X{2ylNcK9Dad0)$p%4E1r{9COA*?G`U7U`&`jziBf; zue6rfk{O(&{LAQ50Rh;i#)Sse(YC*n{=I$3BPg# zGB5cBX!@fUYNh|CP~k@fcmnCxSn_(y{6bgixI&1BZv3sQdug&#wkIq+MDP(K#^+W0|(>tLn*A_K9G6A`&%$1128J zE~{I|%NtN{tAKF28V7QwAI(>io~4WiupVn$xq6kzZRRHHnAUktjw0hJ!e24?CGEI` zSZ7P zpzQ(!^3E@N+4!VPBsDq&a!{7AZQ&>lqtqg;42zbR6uWs65k$ zRwke6X_fXEqicy4PBC}@@+C4SPbz7Jfh?IHq*9%q&28w(hSE*^q^GZmb`p)`=YKai zwQXRA5Xzg>?~@%x=2ZffKlvyNU7H9MRpJvEjuz?v{wSr6=#N}7`|-=Wgl^&eQvDFC_saj z+{UVK610^Rn+-%rlnDQq$FA zme8qLWY2MgiMNe>jV5Ne-}M4z)mh%W1`oyBIgv`!Y2WGodau!b4a2JJrU6X(b9QvK z+>+?QY^Z*v9aL{D-Zh~ap=A=<(1&wE2!p~?pQ}9se+!j4P%FBk3`Ssnd`~bw%saQL z|Fd?gn~5yT8#pl|a7JkdurW9?sodP@KL)v0?ErKuW$Cy2?hNH6f(n4p8W+q+M@_tc z0gCMugWy#v{C76Aaoo#x`cdd+U(=?^*KiDqOM|N^G!>$7=Dw30<^o3+GlKgZuw0yX ztJ@PWYW#*uK**msE=+tF@abuw}OQ zyQ@>I7$2Drmx1k~1ClH=Nz-rO$s!jssMuXi@5Vm{&zOxyF!!gWrkYcgd4p?1E;HG|j znRlXtZ)bmb?+#9g0(5aJ>F8u?^g*xKXDmc41-u|>I#}_w$nY%J-xT}HysUIIblgEtk10Mp;)rx?l9a{GB>Cv}il^_}b5LgB1Sh*LV&MLRZLaG@jU{m zQblLDq-3YMcsp3*;SNXF3L50`b{1@ExP5maxi4!xkEybDc9XIhiR ze(j125TXQQSp~DjqSnLa?7psY@Ij*UQIKA+M0EA!T=9tI6&=X;b7^%IK*kceQs*6c z3iU+Auqb1B8p{btRhT)X0K-7jK0|`L_p&2G8z1HB&C*4zN~)QIJ?N4D))TKm-j3sU zUh6M4bpIQ=E@x0U6-JIH0& zG+9%ftKTYPUN;@iMRS4cQGhd!nU|(Lu8*`JW|lx+I<3!YMOHMTN+d{2Wq7UBPG19M zUHZnPu%jmtVj2n<8|#7TzVvV8bDi(H-Qn7J1pW4uK?B`94uebbk|I z%R=FrD9@Oo?>J~RLr@n9MFW84w7I()W*w=RfXDz{c7n<3K11ug4{KHPbdZMy`%oMT}PIV^80EgKby=7IE! z#m9!Li@VIYUd6nD>YJNpwRKA&0&NWeuno@>nla#=5ZC|}!bcT*1wpf| zeo%;UpY=0|+Q>W1Prc5-qhtK#SC>9Nta$8uJQ%=)X3xBr3a)x{!>Af2lFA7yp^L}# z<9u5Tp>Eorg_}b}Z~80IxbDiTqdd@g7VZWh9|D9@sBiq+irMl>3JOeqm1d9`D1jT- z5JAhVxC{B>#aOSGSKrk;^z(=y3c^#Is(bmKcYR`f?B&iimIF~s0A}C}rh^$Cwbf$b z8^dx19ZTLlm2x;|6Wka*R1~#gxNxRUz{i0*+UxN;>nhDj`#5+oXUPHq4B7%iy} z1#kK}ypL934T~vIF=eI`&@Ap@qJ{?DOR9VUt7;0kg!&sJr7~-@lvso)hcX_EYdRz2 zDPC6Ti}?@>&O5I2Z34?Xe`cA|#I7q|llv;23huT( zLe~Y>!U>tCjHen?16W4A&A`SB9MIcu0C&`*&pk!JBnHG%;8jH*sHd^{YDX)jOjVR_ zJZA3a*iQ~fK zs)x0S)-mHeBzeVeic)pjU8hwltpu0u&)!{Oq?Zw03>5E$)$jc#voq<&EX=u5`p`IE zVmKlMYSv!i{8emrm9Twh6#Fx;V&@mQ`}3Z<()%pxB|=7m=b+`#_qx6q`(jU4z?kN8 zj=2u1WTNb~`V5RG=3P!IElVeIpD~Ae$wSb1 z!FLUMMNZU7H3jqPkD%I|NuoALkVm$eKNYhMHu5*iu2ue0{AztdpH!GKCjfN&*unT3>ZuGLsrdg8N8tSW z?z+5pe!fSBVbZ&eHJx6mhr9kULzcvTm+|%UHFWASRQEKoy_$Y^i1S z6xNYWBVICzdAj}njqLQpM_8(tC;&uNAAknnI)>%rn%qJ25^GnL zZu(9WsmP6lk*)*|#H`}QPU|#R6F#L_QA4J1kXO^=XOI3-C8Z}}q&nP*nq%Q=Iph=A^faBsGcsnKou(G#KmCCX)F&;Hh+eX;!7(}KTC)NP? zEa!wXZFaPM3)}v6^gy3z1s7fAUeD0{DrtQ7khcx2O#G=KJi@W}9xl|9mjQDkwmF7> z)bES8=97wz({wKFYCu-fB@6;E9XqW;k%`<)7Z_vpelC%407*0TX*QGe4Cjl-BPP*s@ z`^;bWCcV&4rJ8R&xTR&m$1HAD;!$!}ZsF165p!Uj^#fGuA|UY}9JU_G;csg_4mut)<68O&3$4}k9H?T5E8x<{nIbuB)@epUU4828^O zcmFRsl;KcHgD!3CNlu;R27;?BPum=AA{#}`Sm3g!30>h4Rw!nCZ|6E97l{R21!`Tk z-I(PK;w;b;3?bv_bs#=e#O2+59W`{6FL5S+dgHMl88@k8OK3mIGy(@87mX+~dut5` z^%21qn+MN#ZG)Yci#&)uUN92Z{X-ZYnA;j0Diryr@GZepUdLxovrfRI zf0w{Vm^Aol!q;!;wsgjdUig`x{Uw2jG#ZygwVNaFw3qv*Ns&;QmJyzom{_!e&~Vxc zt=LFm3JWNjI#|{MIHv0smw7Sqf^K+9mWagE5xz3aZ;Sl-;0pcQ*LD@)o6tTg!Z)y4 zgz-8N%N96VtPoz%j>#o$4`iWK7b^B!PPtnAO%AuQKb zl)^oUZtN8`Y@Knu2q#8zYykcmCUGNUDz4(Y*=PZxUjp7wrLuw50_J7Yqizc9b8}|9 z(P|E8a3a;J{+MiJ3gpo1JhqVnNG{*96zNO^cX}a32 zVr)NtcK81=BgudM9LuW7ZOXR*LDvk(P1}qG>k;qfRKq=~p_f{{$j1RZW5o#7M-wRg->!CI@?{}&dv!h#TPRCHh7X_41*S6@Cbe5a3 zmHpkKU%`1BOEVu#xAqMvb_yL&c|<<>)T}?utQlN*^*(%r;tylar7i&1=2-M(GX5Ju z!^KgklILmrquTeBi&$seQzPo)ym23ki~l+A8XLzRKuivbAH=0##xb?~wGMnf<3?8D zcaEA9Sr#3e7vBH2kGw=f0`n~AHRGI~*PxgCw z378?K;dPO^Lv{`y4bE5Mb4Ifc7A0~{%x0{`!XT~4Z7l;-{%uzpVAjp|IxJy3#m$sl z6{fudzb|^XECtnDPB{IZ_?i2;$TT1#F{q*C)`pMZ+}Kn?^5sRdWvr2V19|v+zn@8Y zRld9lyDb~J8M1lAAi^`Xhl#H$u~M4$EO8sG4u3Cmj5Fx4uI5lz&#DJxnJ~G^!Qm2Q zwXj;&hlQLwMms;8V$Plskb;}_O7Pc)Z(UEFNyt}Ci7G73`N49+G940`z1$W3b3DE&~NIwQT8#asK)#TO??__d=(PyP4 zVasY(w7}C;jWS+XJ!@q(J3aeMPl`EFJDk+B{%Hr%jO(2a`YF&ED zj5eryM8gAPffQ5c>SRQXRH=0V_P*A0~Ur{425~uM@_pcRvM@%3T=+nJKYyA`%y$JCB0Npzpm$I1OXrE~QEQ;e( z%r5YI!i!*ubga|8jCMp2^@N`NV+Cd~gb4t15}xGl z>_n$7v?kHb2(%mYBV*q8C~o}{JVznMrlc6hjG8EkC9PQpjhT0y(OvPWv9TVq(*BVc zLq$1Xp0%TB`h}NO`Eu06;beTCY87_`(neDYC9Z41LVcP;`{L>}B>S%{TEF-IlrsAr zcP0JdhWsOBT9Tg2Mvo(RHy=<)Wv*8B62A>28Vgv2yw)$m(k_@!ZE<#R&U+P;h6coxd{)7n@8}TC+$PZcB>%7vJQ_|9V}%?l+NQYuS(hL_%=-w(@zg5_NNeb6Ic%@zE)sJf z5D8vWQXCCbZw0pkc++HtrcW@hLV=c$kG_?92UDdN4*EK%Xq*3oz(&S8Nd@N;r z@Nl}7(0$VH8=x;e=)j1x$%rB}Ibrl=ME4!*lTsP8lR?7@%$i)A(PXtF`+>YLudrkU zvW@kQDdffofL;gU^uaeFV5G5|jteV>Mw9P3QP--gCTXi3D#5oIAv?&Pk&kE8uGN*m z@E878m3A2}+Irx=pDXg*XL3I{j@s(Zqr50z3cx3xe+(%?q0!poTk=hDGs%ZAjb=)1 zAlfFlZsv8Emb9nCCyj!tcv!M*Dhv6PIqN!=l~Q}T4ueCV$*Ql>^!9^=ePit8sR7u{ z*Y!??>3(Z02mH$dO&5noaC&52Sl2+=tTq?US$!=x(Gq7n&M{@K4~Pod;-v^2V^9Yh ztdE(gcqp)P%N3pHA}e^cd)g+-;6x2M@yv|lQy}bvj!y(#ij?4I^*nr5mQk6}_LSXr zXC@HM9MOiNF6_}?x{NL|8Ka1xj=WeY8k)Ms`+dNE3PZgjwp-fitk@tcG9sFi3`{9V zRnHF}o_^c9!K_7?XaX2$!c{NvugsIrb9ENU6l|i3xWBu{=Em)xka-|QgX(t`A!Gv} z9-tYhHHV>X!?-3g@JV$dh9P9)zRVWgUWZZNbidpxl=ePm$sFM)Sk0Al@D zL8Y@WuC*vbtb;I_yTEK(`03);SgBdpJqcsB#;sv^g$wCEwc8ca+@Tl(P2cJ@{q=im zSq$`vf%m3VIa(P@#(Eaj7fzWK%a#0Qij`Be`y|YTj~OH|<5V#hUYqK=M{(zm+XLy z0JjC(#*z9|1t=7RN7pmfwsJ{=*1A<Aw|>tLa&=;e`9UQ@S< zD?3q()jj0~)Yc<|9@BFz^v+iteKRiw@!}kqNKJ|NK7*|eCw3+q!cK#ZHfN?*`XbYc z3IkbBtf!JQ`ak3d);y9RhtWZ|43u19GS5aBD4D_q^H)DqbbQbe-!*`ky3`m9rMhc} zWbncw5Y^=qC2^{+~#j6&p>EA>F5KX_J0c0YI` z4dR02{kU&y6kP=&Suv!zLyg$Xf*hVn^t`}P4z?_KDL*E9K1Yy-CSYj>;Yc!P-uLaH zS$eJR%YRq=Yugpj_hiNKpVH}Vr=*QH76b%&2RCo82*9>VjEjrYCD-6IPvOx6#Z*Mk zSxW@VG{!!P5+y5LPE{;<(u+o^rj+|*Ib0WpNoO25)PP$lO2#qUoNi$e@F^Dam?&{? z{tc=YllA?r)7L9Sv5~5xgXXQ^jNv8c*Fx!%8g;le2*zOq0kc9((j(Z9I5PI|G=(-+Zu40AF?^`Y|ZhWLiD z?dRAe>C60V`4g$ITF?Av2+9New}-|JVtZG*dh7{)(fk5gu$a_Ej;g?lV)rU(lqkj% z^Z7F7HtTKKW;e~65kTH;{{~u%1k^RU;7j3eEW4MTHvKu-dV=)P(VBiQtizles~)(G zrGOITZ%n|wOF^OS<-YMr9#$-&go(;A|7Ik<;eD`@4g#ZrQz>gKTOsUiU4HQudefV9 zMjAsyOcOds&c3-F4WRfdx&W(hJLHkxzyGIe!Enrpg+=>W^VnINMfh`hjIiE+L>`1bd{Ns7#of3PU*QJ9Cf7Lj}{Hj|SvT z@feTz5+LJxJS$@kFy4tOVMQ8Y=?(a;0Iel^+a&B44;Idk(i(fM8gY=S!?nyH5ZB5d z!hf9?Q|vlwauip!9orpg-OndW+wn`NfEa(YF*K5AK+sg<<4Dk&FB@<>#Z^L@`qJlH zWrM|$BUB4YCYMWaZ~BTBW?~*~wqPt*2V?E7&}XASN94~8ipUSdDAIQMYfkke{V{jT|rTx{{GeGLAWMR-H0h-L>#q@3AenVIX=B;&{ z`_cX<*Lk&oeSI1G7E{??MacS7rK`6$;~vYriUtF?MtYUGG(EEsT=u|0u$K9TEu-D| z&W)M}|2ipNx%y=upB>y50ioIKnU}TzIT=?I0#u@DNq2fw^cHz!v4;aLY`CyCn}UB9 zG8aecUlMXux~!|S(}glKtQDcc_gb_BG~JZrn_&|NY9CoVq*#xH5bDwpbKdC=cV(D8 z+9we_W&1!j9459!FuUfXz&Az8>#6)qxEU7)_+9}dNSLDM$B8T@<;9s76-fBthcso4 z0ijkdPgbVLJ@D@}t68!aS1ngchBvknNN4ccsIn2Fma_p-%{TY)4-c%;!zD95|0`csMSlkfbc^Sn%m z(Hyz%1N3PtKNcyGFpoM@x^}Jfma^>U#0b)0kz+hJMLA&TSzv3F^ObTX%-hxYMwLzY zlycPg!J&w`M-jJ63`rsFPa{WT@$DwlZiT^27`0&d`eJ;dkFN^6XNY##QXFpWQ}osX zqxuS}3=6|j@5|nn2=#YWBV|zUPq9>oU-~EFtSKwuIk0()tFr4|7@4e^zJbj={= zQt1|rAbKOG#_6^by4BET!e+|nA={co@SV@F?uuRm!SRgsg<1q|eb;8(k7a`+W0!im z_N$`ZGhD|iBRt#L=C_sV$wO&3b9z!|EBg!^(hSxM7dAo$irR+eawav++eX`4Kl;$G zIRQ(+vosOg@wWnGuw@aLF75HNVDRlUyL{*y!MDc&Rq} z(~%{^4n2;oG`=a6yHJ27fY10%S~mVPDl+vb$9`>^QXpTWwuFNF|g~ zF*hp=_;;ovm;L%dB2W+AZ%}!_j%XIY~B(dVUfva z&bMXeTIzR{=l`kGr|FQlbGoFCLxOO++X^Qz@JF%j%aZOtv24|wuiPf~UZ*8tTn59~JjTGI);<3@yJ zPU@!J<`gixDUEHpxFvEaPxS8hft`4$(^>H7B?Qn3sHydR2OM_&N-rE`tg8#Tl*1Mp zu%{Yjw3%YWKEV{IkxRPsm;TGU^#PH*48oUa2RJUn(|4&L$!hUk64{_jJLeZkuT6fk z1_AyqDHb?Ab~nP-15p4%&nb!1{^Q^p^(n;C<_4H4O30?ToM(bC%dj?5YC! z6V=HPe$}galvbDhzQ2BLlA11#S_Le-Kuv~+j!kr6_Hri=$l(D1bc?w5fpp_}*_04j z_QJvu=_BbIkej{^Jo0-+Q`R}(!?#%I@f@%)4P1+225d8Nl-*%RXzV{012NRVFx{Qe zf1WXS6+JFQvPNqBoo(heX&z;r^;T&_K&Kr~B+FV-Am? zeDu!10caD=+?g6H@C!1l?iT$-`z5y~o~I_OX6$zmX<4Jsu7Qk9&=|i-KR@$oBspEM zPNsNYRC9aX__7aMQOAt*eqpvo!CTVpry*gx~Z>`n1C{8c!C zn@_#va^V!HOjR?q_Gmq|N$*L85^CiQedP>A8u23nLsI43qMhlFofby)`tuMTDXY7g zeL|Mb2Jt`NMN1mq16U#@a(WVvV$T=&K(%Wvy*}@K0|D(s(`oN_g848AfAZ#)}Yei za_7ocZRcVkZB=VOQA0;f_jYdJd()XE5}Ggpu?MU%AC0=Q_^j3NJ!RA2`S54f%D#MnY>avFI5_#3KmyjD5WQIE*mqx@Uk8=3zQ z^ZpyWbr6bf=G|@vkzx-uIr8h~*?uS*JS`BTqX;a02(%UM51dTMuW~h&8 z_Ay8&v$*76SUDk0d?%BZ3W7Cq0pgcM7yU7lUwsar9 zzm%shoVg7|IeXH8+g42#u8*Ng)J{SBZQL;P{>-m!P!Db{nVhUIjzebYQBV|>g4WC1WCVxEjOKAVs zyyv}tXL>C=Q+v@kjOv{Cka|+yW zq={%(E1fx#ppgzftob*GLP#?}qmr0)BZ`{lOunWO(vZpTbaQPZ+xy8Uuldjd->2h z;Q+ERulM9Ed_b$_}!qxuU!hggdB0Img=6xWS3RHae*%c_r7XtL+Ok2@mtqXF7j)UqI`a3;7irF4`v z`|cBe+94mr&w4-57k?R!vFefS{1Z2;*)M^7#h;pZ>Z;hcXo5f+g+|op_q+v3RG3#H zfILV<$*ZzsceB}K7Z9G8*5S+>F(5zGHX6 z?tf9*P&yG`K(Wz|m)T%{hx?6oX-3RDpDs+A7!~1T@f)iN1(KRxFE z&^Fwn?2*sQj-(L5eKzVxWuwbG5Ky$BQ*LPE&a*D!W7l0UJ&u?H@!+Wp1P&`=gp^L%(g?avt6{TCkY~H=Ack zYl%LDHBQm%D*z(>t+~xjY_W$1wtQOxK)OMaZh;G7Pt1 z$@b73-tNSDb5Ky(9iKV_i^>Wh>uxx!Tz}+dK7XG*UznItbH|XOMvCz`4evr~p#W5a zwhPn062Vlqa#MUlyv92JU_S)-^Pr$f+dZmw@SB*5?aSbiNMDA7(b$>QF1u7% zMr!AdWW}n#0Gcf7rr| z<23Je-c40%`xcuwh?0nTIMvcgLJOay8BVs(nMW-1g@NiOG248htm*OzWJYGu)EB`D zb@GCpXDnCTNe$AH0RLX6NKaeTJdCNj>P(bxi#sdlTcwh^NLiGZZsQ3Je6C|ThL9WY zHsoc8{AKba%U7bcM)o0OeiA6XrCYmE?<=%Up3qn!JrH(&6Pw(xJe<&`5OJ=qPJWzJ z2++@>1)n9&Br!J8W;Q=u($tzQh|XvNzcY2m?O8jmi)0OO+YUub$v`aX(f!^Q{? zg)Ue5*JuQQHiifFxSwNYKZl(OE*H^%$6vv$3sJNCHT!b}8bIC%Y(_70Mu;x2>bP8J zY}}+46+$h_!n22j=6g(8ctwmlt7d;3|2aTBhXmYxQ>VfEot?#Fj+-C$23!=BzM=EY|$hKQeNhHN8`+tv`Z z7463PGfh4vARXctsaSdqq7>AwP<)PFoYtt?!#FjX?5#NpnVy)i6I=UL^)kR&C<-s(oDP^3g$P*2i2;;`|5z>JhkmHgJv^lh)4?lLbR~DSXOt8? zNmIf{52+;L*AgRXXm@K-A>|?cfpRtleWlPR+JzvlcWE5Q+3z>?LnSRNO;xKZVb5R8 zd2dW&O1*Vv2WaDZQ!Bb+@v1T-5gY$?U+T2n%SCsIByhm^^jdUUtbC!FgHndJK1VZR zYEv(|{hAldy*%?YcSZdaB-i_``Fz9v%_40N2zKqWoPhgA{8BZJ+scogzb!jm_GMS2 zdm)Xo|2sr0eJA-3tHgW9S&_ek3B5c-Upp2N$WnnJcyV^o>I*;}+tklP#@FDW72d8< zG1Q<~e2H=+bZc&OXswFu%>1sf?V{X}Q8&v{7KXnUhCkp|Q8{Iw{l6lR9Q(M575a1+!XeSR` zBCtOd4qvqHRt3NHyr6&S|9#_=9LBplw>sLU zGyQu*z#B4BtYFwk--*oXoTxIhhI(mT@GIaj24$aTDOgjU_!z>>o}=GaR!Ef$C`edU zpTJv^G3n$Hi?K~oGhZum&YqSVQ+5w~fMS2EO8_Jn;Ui;TjrN5on zeV)ia69Hk*$1mqSz&>*r|Hg4ip`UF_9GZ}k)t3?~1&?_SB zDtwqYydRs$3WXaYaK;=>>hbmO0D-*gBU~IPDv@_#AZor?bG3W9TAZT>5$-XBurlxE zFckrk8sB~6p+ip>zt(kXJltr#>+%Q_z`X>v37p>`C3obb*VR1;L@zvSI zzwMzVX1OVe`jBW{Alx|IFU;~hUM$2h51iMCyE9y@p*(3 zpZ11#ewO)w+PHe;avgeAH?957$_LDBUnqY<*(Er3SRW*rC$z=_4EjFljw`K>2)8-G z#NNI5xiY5kus1Md{aaZ~fSj@M<9%V5q$`fU(Z}!rBL^FNY*5E{Y%*A$7VE;|>6!DMi0G_TY(k?Z#Uz z4kp z&zg2ciBal692d8*$;%G#KR48%zhC`X6XWDuObLB=a6OsU9Qi%$N%gPC@7gnDjSFNu zwS(azlZJ~pa!Zk(te)RzA06l8t%Lu#)JpD3uQOWis_%;hr^T^qt9I>x zm079Kl(HBA>I|3u5uVNqrRViz{ICO(#hF5yZfbTEFcW#LDv`A56H{Jf?QS{eI&L24 zUuj8r?0TZW2eM(&$XY>i@_K%(p+Il&;t=+U$|H0T?M=(ZtyJ^tQ*K~i|RhbZ_9qUVc3!gSMYjtN7YThYLU z_CKiSTd3hsGGprDf~NJ(kIyN5flsV)vx}{;)7!Exhc&bM4t_j{exIATQ&Phnld+mrWy{Vw;Fe>>< zV_K9mv{9?2doRo_wg#ZnZu)tv3iC%zBZa-hCa?e} zYvbJU-1hS(Dvs=ORri0v=ob=?o}`7UC6VAL;1w7n@Gev=_VOEL$h}#2YK;^&GSau)naeIceU#joVz;# ze2t|a;3g(vyaI=r2M!!^Zqa2%AyXz$^sK=823-)#K!yfj#U5k7J3qv1dS(Mewgm&PkghX<*T zKPsOXV4ZP6Vxc?VZCND@RfBR6{7yPC>^P(`|r@26liZcm{N-L;W zp%-va&&OAwRg84tk-xASf{&IO{Sr?yZibd~RGhn>si7_M8ffU*HbBb2 zd$%shEH6WLTXi&vowk70>p`VY?&MZstvn@%@$M9Ht_J<#9CAbK+ifG8h(&6dWggMI z*XrSpP;_rg3Yy`i3N5A~Y(2$J?4hg>KP-xX=?Bh6{#aW!u3g(kKz=J=A^2*L%bUEG zW#dAW`}AgP^6&W|sq?8^nAQN~n?H2_g|1{*9pM>b`%4^2pr>D3vl|17k}=3f=E4xj zHUW(vq;oF>=Gr*}fY!k_CXn9IUKcr#qH~I6=Czou0IpUtr_rrgD(m**wZFY1l>+c3 zyg^6q*AsZ3;AKU2vY zBhrG9H{K1htYL^L7b0qKHbn6U0cJ%8%$vge69%|bt65N!6_QwN*Tn966JsU( zD=B#*xO;`!1`6}F(Yg`N(Wa}J(ginVl9#^X>5ZIH7}ArYEmb*&6o`yk@D~iLg?mzb}dP!LycA$!u0O{i6H9xM^W<+H_cwyUKL5pB4#fJ93qq)wf!{Y6*Wa0TuY^I!jzhuVc_R2(vy${g|Mb}K*wo<#UOyHio*(_I5-P3*mKIt|eE5SkV zN7fJV%)Z54+iNN47OFa!J)aIDntI}i>^j7tQ-ILzT(KJE1 zf$10wiS^X5y2-QBI~-|V0BUvp-px($#u)ezR`A}>dN69j- z9l;dwm2y--QBj=oR0#3l3ThNY)!b@5KhQ;ARD#+;}VPB-bf9BV7@ zQk{2g%7`>=!%#$hc#HxqyIPn8_Yr-ccaW&7PsNWgt1cy(8?9MG-I<5&9H2hJoPmZo$= zxmpdI%{4pmW%;Up^^0XE<=@>rmm>zXmzy6yt9L4e*tbYd*{JPd0Ma#gcd+S_hVKt0 ziL%wc2Pv-zeIyudo5+&+Iien%=6w*OE@9i>o(8)4i9uM%hheGumty^#gOYgITRvo? z^HI{9$m@8!QNv07T=keC6_|PPm?%w`y61CiLyxegFr zk>FR~kn_Ymp$QQ0BqUe6E{F>s1tYI+aD<dY?6So>}7h_AcXZLNdQNK&jvxJTsz4rxww{HlYiJq#b&RE{ViFUZmtC`iUwQ= z>to(YFseO6o;iH7Q^TCu#knqnXygFr1volHB>cv&)=7HmRXA~W79qvi2OyhLX?kwj zr^mq?%j$g9weA;AD)QveURT!tARGT1gfAyM=l`u58JU?l{;9_Q=+RKi(K(A7zC-55 zCe5t`m7XMI!EO!wb3b?GmI%=|=MZP79s~+SCWClnmz#H5h zH{6W}eQPOq5-W83jX!Z~7m%{U7XFwQ6l3n`lB1#uGUC|`_@nM-)n~a(%i0kIC?9*@ zxnp;J1k)D*)Vi3$?yIUXPhTx9-x>*QM}zYIHK=_?)X-q)))!9*{+qGp(2B5oF(RA! zFZxylY7iLJPI_Lduo)>fHNuSfH9AJKJ-6`{1WY*4d@oC=`I2P|k4{eNAP0Sg?t*`wT#O}zF@8a;u?bITF-Ct&+%`vCvCC52u z*zlRzU^fnJ)3^~yC~dWumFZQAV*#amAx5Sh9)dz5kjsGP8+4W0v%Vz{B^DRxJm!#V z%_DV~YDh_VG#wSFsZ+o~AO~i0hWtU=vmmk(e_mMOj$v|h=g~d{4H|$d!t~r6F-P-{EG3`>%a$`?kXeTTf5HU*c8*}LuHn=7 zR|}@%7yS;fEeEe~At9B)t6%?)P?Ak^q6rcuBdK_ezWtK=_b|lfdtk?e=~A;mg~p#C zwL=pu=hg(OL6BH}t8LkoalLGAZV>JdHV4?BT5uQCLq7>B%q9A4cm_6zzvTPlOO~x* z-Yd4|L3i9dR_UN!oL61(^|%Qm0Gj>RV=ZDMc>r(Dwe~2&rWJ(H&g)Th8nUcjy3`&J zfSwD)-TrTVdIZ3Tf*G;3h>EI^%N@@|E{`h>EFw)%J9vsU(cob26%YkvkJf zJHWy{mOE6)aSnP8_Y#pjwoh}SwE;D&4dXxcl9=hGTsR1AP1FjNgMrao5^Y*Ew!HP{ zL~dg*-VSJxlRA>O%M@B*2ii&*GFjDvCM0C)<)p@V_U7rp7j|Uav0-boazFWixVXPD=Q8s*r3PkR~cfOo94z0}?SJvR$Kw2)czWMlNQecW z@|hZ-L`^MTi}pXoj-dE3>uEHgOb>KQmRyS_ z?4OcX{kTJHop@z**-01BnMOJ~$?sl}S*sjWG(^wqojpD-JKjO8D4L-aonAad9@L-Zdm6V^)v4kFiuF`SKkPK8TeWm8?%w+rUXRq&s2eM9DyX(u z=Ls)Mn~-3ba<+T4BBI23#R3!dH*-l3VR5Rpoeu>nc%C3j1$_hWjP-wzN7jR4`zFmX zYGC0^z%XD)Rbs`q+7yE;plzo(k{;>tqRX+DEe46!=w>2}v?z4vJUZZ#2$#U9nE4W& zJW={EqH0-Pvd!x}RvPI;8)j|%7NAO2=&xtO+T#z0 zf$9<8^^5TiQDMtxF{ujsGtciOOIl*B4e5J4QD*k;Y`vUmA(Y{hfEPKZnVHRG|8mCn z-3c&lVvGaX0p3+6;u=yh%#d(EFx!t#uC9)5@YSLI?Yf$4MZi&ibT4f#Dtr7ar zK@}-$(qq`ksjjKA90Y^i&gPhfi%#qXpSE0cxzc{7zYuKg*AO1iLI%ErCmJc|Gh%F5 zL;uj?C7j#LxTzBbKxa@pagdx&P>S8XwbM6xgOvJ8eyt5hz3T?uF;{(Jf;rCSB@j6a zotwI;#^iwjcP$(d7>c^RIrfr}wR zhU1qB*Ddrtx_uyhMCeN^PEkijYdo7+za5lq8LIg2QmZsr_Ojp?Wlw{WfeZkD_}N}i znDq^dY)>zaf!BKsS+iYawnZ?FQ9aTv1z1YmVn*5)e~o)Qxgp4S^$NyOKLAV!c$Dd3 zj!exrPCP?1*&MnKx*$ut&;?@fMwP|bbSw*fY1__~7@L+H)8!B~f!w$bo^s^we#Vhu zF??P*!5(-RPiM3fjd`y*%pf@Rbr3NWN^4T)E(7jo_*hYb1X4rQH(f{ohN_q>0#S1P8FY zsuXF+7rc+Zi6YMi3KPjycUoEZRcZm$AU^-j%|3UkVi`5GDw$$#VTNOJAw>$s- z*ge(vAiZUjx7wX&-Ei91Z2p;Dn#$s4jETMMw`OM2<&H?0VZ^#XbyL~(srwb$FKi0` zs8Q=|Y0@4Q>%Va53A!XW%t0^uN6a=$`6$@};VdI0z?xS_aIP~HG6HO}ec`(R^0AEc zVCulfP2}$D6+A6T&Lwo=FO!5IlO`GJ1IwptPou+WM~!Z0;;!3y@T>wr>;?(;JF)Jx zIGC72S`y3Nt9(){SyP9FXP*Gm+}!Ld_ct+Gg|nnT@F=qH7i_L2@12(j2+Yrj(5+tF zipgOA>mlZ0Ea8=+k^XbkA;1$Z^Gnwd%Dr4K_iB_PR(%Yl3=j$;`w@0E;|6sY~?RdiP3LJ@!jj zG_$abgl?y~{h|cS-)yhQUCUALn}O83fvBNH&WqqjCgSZ#fz#DxOkuCbAiIDvWtQEQ{j5;ZuK~cIw72cH(1p241FC6 zw0x!J_i4?t`0v^vLNb0jFVaZ;Dn2ZdK5qh_AJc*qQMT4Ca0bad3tO*V9GoXRca~Mr$aF zAke0ENMK}JUul17tch8G!U=mX<`2F#{|eqvObropv0L7%W$Y^56MSCkx972FJJ|@V z+j1henyqgSJpui$4_5KiSOx3t3NpmE)UPja8RxM*i zrpyX%Zn8xQB*2EEU6TXP$->|XY(Z33oep&-3ZvVVz(ePImS8lSBXosAF@i3@)sPm# zh-i5!z`0I?y)i>VC7e+@b9w4mBA5NCPl**JvndL&*&HbXwG6iFJFT<#(H%dzG2B>7 z?EavEw}?g=4}sdzcpxzzy5a}b^uc$n8cs{YdIsQaUl~5pn(DCy9J$Ap@I=mkXI(`= zJoHRLo;?F; zXjofjvh6b4)~i8!+ruY_(Gh{G!y;Z#)3YnY<7?sby{m~2D~?@MsOEHu=5TL*x!#xz zd-Y{<6GCF_<~J+#bx1Rj1|0GPIFyegeln-h1{@zX>i>3CS5{})T<#PfAE9GIteCL= zGg)nGK1u$fh2fyyKYsX8Lth5B>2|Aq5{W$E+&KK_$`nQCGo6#M&C}Jn5`1k}2`<=<8 zv@x&I2+fpM53u|gQ!YH;a`P2zLhRcK zx1(P7C|&@fYt-;s_;n>pqCp+TI2j4u^wOP5E~6itN2W*!I-_#rD=e%_w@XV1c3O#C ziDr`VPZKGbo^;q-4md4mkIWG*R;ot3>)mm1A zKUM;B30F}E1s&CbBlyC)MAhu-(4PF1X4A+JtS4ZDQO^4wPa5%FErAoQS)b|345bY% zp1l7;c;a2y_fG6tV*m>W(Mn^&80dB(3yQJ>T~>BXZiaIv?r@ll%L8Tr362H=z0Adg zp#R^;Ip=?e(B=G}nMf9v|MNQkkM(b}<8mkhFZWvzP|B%`ju|I?Q>WMB+s|q`bL8xA zG3m7;m(ag>i$oC>T-{KI)rShTUNj_G=wgnl7dxc{rU_H-JK+9sqP3uD4<(YXPB#%| zo1pybawPLxCMUId5217;NjZV&G6KQB$R*NP}F1m{HQbFN@ zPLHON3z{jgyOh4%T{cRnenqU`^hFbO>@PjFeFL*8UN%sWyQAGs0o>mFuD-WzITg#Pmx_XzTJkYPJyCTlgZ| zQCG;1=R?ScpJ397(D%zIxQ}VHyhx|IfidlyY}x1smB#ypRFDHw3g=-h2Ob}u=921? zoxUI`O;%_AXFiu~iX)cKSN(wJ*DN)WC%`1BT=< z6IA)yK``|d9N`SJlqp$&N>P_)XiEWjZD1db;hYaa}9 zeL;U=f+iAqX1E=W{e@PG=X|kVWJf^}tFpNZx|}Th-K4${kP8-SUPUnkU6t?;pAP&`VcVEo&NC|C(z|o_nVgrY zphs@q=KM3-ab60FiiPfTDJ9kfUil?=gz?z3DNbFtiSG=xj(uW0-Ao&iK}Drh8tUA3 z*WhoqP=vaKC@3Zj!3Dw_WUo#kS{iB)hnMIdHt>5RwAxqF_SU$*-Jw6*_n*|Vt`8Z< zkW;?GUqbu~|4lxz9E(B%+8_B{!7tR1X}u*Q5rP=1NI!f9e;Ntnd`M{zx73{*3*{@} zeReaE7@2^3iRc6=kn8R5y(JCqzy0WWZM{jW=wATCCZ^y5G{vIUdIG{7mn>nFJS5-} zIx6u*hA7wKOq@LYwwiQAWBk?O>~A>y>fGjOsU^sWRE88iSWoY1&?&7sox=h|^s%!J7K$1hmN-ltXDjxOEMKKUJoLn=b{IpR!pHH_fq!y(KX^b|au}2lU>bAnlr_ z_+s|m9VD)$swjaI5*x$v8!cXFKE81}CZdRgKD@*`5d&)g(bqjgWa<~`0UWjgQT;dS zfJHeFvC6!FR6c4(?&U%5WFGlJSif(wMgckK)@3#%nmW$5l0yGgGF4LH%6fI3;!NDhsh4|GA*PsaHDacA~=|T<(sEk@$W(5Ul*wX@q}O z{YM?tS;&R14?5!Jn85LespHMy+X#0z#L+Xldp7WN*;n;#j!s?7_c>9R@1at@ig+c{ zukNs%j2M)8t%V}v&}B87Z{=Bp@vwcNK&=Tf4PAg{t7pjCkw^_5IC zARYRegEG%g(mvT?43a;vf93%&NWO_Lcw`il_e!Z6R&@fwDM8bF)Qrt4?7f74F^gDd zM0gR3JDHcI_4fEwAJ1B6RSoeNVA_-ZA@MVt{)6oMZ;-i+4F7La=6^+b{-Y@qb;jDk z&b1Liln)+xqnt<}FTrDkenHR4TH!{&jPr|LmM1jd%{o32$b!ESId48F1OT5FYsBj0 z)36?u_vJ@ITuY`Iqtmqda zl4a#X`_2P_$MAdg#Qia!$yjZ6DiN^;=xUuUsyu4Vw;tWTbn51vHoOzlB^@8=!7m)X z_0lBg4`iUWE=S9EFgRZ{yJ+`xs3y6#@|5Rlv^fnL=F{uXc`WCTa+{~91{-}(bocUr z{FRyRsAYs6V#CTOqZ-ya#(BRt3Jg&cDfsst;5@#w`ZB~H7eUf?E11JXF*ZD9e#njL zGLmmSOr9D{&YyFCcwhkTFvPvHvpIKS9|yg-NW>Em!S!=_Rs=~UtdFlk_X`BFYL zC-o2>)c&V~RC1n81HmflR{o~vFn}dYm<2iPmgV(X81inGhQQ!{nSXNz)}xPyhtM7s z(EMD6Z_y)(0D&vf;*S7@&>?g-t(|3S*b;!!ac{1FdO<)4YOBWaZ*&B>?2?AfBGh8+ z=SKX4Rq47dQ^m~=sIhEK+5IsqAI`wOvDb7ltDU=jfASrMOZ0HdPC4-hG$|^dU~(=k zFiZ9_opG7^ZtcD-Ey+x>DI1a;Y6aB|Y=)C#oeynEoFl3Z8~o15{1v|zlUAW6qKRnghZevO?G*>!vmbI@7*V5NY+WU3pnw1hrG&hx~J^m zxiLtW#Pn*z{)*Hqp5g6hHmD!) zI~G3f0~g&?ku;6M>r!@W|@wT-G455KW;*2mq zjlaK&Yo>hAe|U!f8{{Pu6Vv}BDp~&5ZrFdkzPBUIj~i7=hqJy|@jo5viO9}MP~5d2 z)7gYQ>5s;1pTC*{LQ_IU|EeYU+7O5Hp2U9DN|d{&`qTXsfUW*#RoKO^o*W-q>LG}xs{Ll^(T<-m@kYwtABp% zxjzB4A)sEpH5A<3`2mkEY@%f~n7jqRUCg^Vz&j|~Kk|J#yX};*Ws4n-drKxm9*Rsc zwh!beVF3NRWC8(e*l*p$p~9|LIV);2-l-Gnxb*M4rJic_LafB%sZO0Ls-=h2pd!Mm zIhh$0Z+xWVmDBBP!TouAEF|vhFm#HKc9G{FhTMQyjKKLJ%35LlxkDsB|&p zihl{rC>D{HjN@sQtuxyhnbq)}^6c{g>C|QccFe0{veNXTzLT}rMX%=%cErA^=2v}? z8nvNutVoeodt^b)3s0ot?e&&kVjcU#PFrSDjOvOIbdEf8Q9&Yd061gzACMV-%lnV&Fe7l)xJxxvm#!ahiLz zq?bNWTKH;5;-B+=S6Z2=AaevgMd<> zlybsH14v%=z@lBgN_e*0BI{=+2b|JEUzpke6!3%#9_L7Bqn1zBT7CK3&?bG8KyV`P z5HGy@6XUa(mZS9fIF-fyE z&4IJhB~<43HbiiK7Y3()D;MI9xG(bxKwvXX7U(S?q<`j%Uc+uzq*-&B4t*TG#qU)} zQz>>7GCl`nSH-+qF$iQ_1*`#ScDC3E)PmZGDbiD|9j4r*_Qm8eD(zT#2-I_&dB(9A;RDp%vu^Y{!i(U-$lYArLl#g)* zt!(CUOpVvjwdO=$Rt-+CaLm7!o)Pb%{s5%O!9YPN-^v@vGQFeUvEBG@jFm;p%Hvw&~S9ZfDfU=Y)*A(x$8<(J3_y+m~WJFa}3;@Cx5APY^Z&&0$NtRl*D9wl#FPivJqz!mIuol@6Rxpot2VIDsuw zHnplSn|zb=$A)09CKX+xH+(cm3sSNjjQ&dQeHkgOGl{u)0Pfz-udWKWIj4782r{mskdNpXRc}lt*xfC zz&&40vKLq_-;Gg*E;=J86vMZs%4QNn$CrV@&W5V5bHC!ZQR#NT>Bq~>!1MPT^>?NM z!J={LxZfRSK%DZnxt*Zkws-a!B(J$V6n^9tyC}aHT%m=sgaSOfe*QiE*-;tY z@dJjf@`T}2e+}0;CYO0{WR>{N8)6}g`uvsesC@&Vu=p4j5+_4gCwS_f5_Y~G56Yi? z)c_^0NF-$AsUqvS&#w9QKXye-jQQH)l`x7gb{`^CBTn_^RR`XM0i!!B7W|j$W(pum zWO)i9KDv1w`WsfH1A;H;G}I>wWULS6LRV*G^JfXalcwZkOu?;zvVRD|oQ+9X#US!Q zr)2#jO-rrO)LF`q&acM{2f8`9c^sHG-yT~5&QtB`o*D8;Y*DUoNB zddc8k5qBz6cj|XB2jJdfKU|QJFgm(F#rA|FX)ty$!b6UI5kPnPH~ApT+V!6mFY-$G zciJFoDzXrxg^GWXGsjF%HRPAT@!Ha@QM0Qnw$bCd}IN1(A8^rxolIc@r3RwG+D!;D`U6@hL)G zN(-D28u%l#L7IvkvaleIN?{tkfWF$};?4Lue&oG8Cb|$4?E4(4_t#PfTyL|WhYW`n z8SSNo&W>-mY`4q@g@tKZn=Vk}ZT8-o&HW`~59a*Yn7#7UoeIxpfopFK4D|t!(712U zb4^}KnaHNIjJ9y)BIy$G!?pd-FdI)srb13x;xaVKrQ*}^D}V3G%>lQ2D5kW{Q?ngd z-7fopNKR-svjXMEP1O$0NNj!pzATk8ZP6Wsct4ioT>LeCYw+CHt8KGnUX&no=LyUN zTPkt8d~OG6;5Vh6ZV{2fOYTLF3nE4#g0JpcD=|jUzV*H(?(an207bQj?8Q| zvgQF`p)oSfG(yTf$>@&jHA zG}!dH$WCR0H=!zbiNJD60Q2kZc+MYN=jUb2Pm$L1bj?3_)QDnO0DtBhnLGTiQ+Yiv zXAhPB){+NR(gfL$53i+p>iUHoOd>WZjt`?E%oFnb2buU^F?yMp{>P;G-xP0Lf?lxH zogl})KjEvR#hX-wcsVCmpEjpk&@y|5XjTZ7Dp)&}y|yp>bsT=} zI=OLo(XfTF?2~WX6nOOH@r0Cj4Q_l#D_HdlQXZU&G~0%QAp`N}oR^T$Qgl1bPJtX% zK~sNgP#avOu>L+08r7ee3OGFx9zqw4lGz9#=BlCk)}N(hVBFC*$)VCkr@t39gT5B$ zyMHl$V=fRL7A07a62o!G*Y>s3_6`=Eh---OJ(lKfnMdEStNb$)2HvZ^devmIy+~1i z03MgsLmHwYv6Fi(`Cn!Gp`jH5tlE871-9+EkX}^J^AC7;6bv-(y?zC!&c$KgKI+M+lEw6l!ontO zc|O-Zyhm2^-!@;0Kal>}pMufPNgQ3@=DIf@uR{lKv9-8m!X#eoROXVE7wC2m)XBUe z8Hk5itU&;$!2&?Y6xKw%5Y5pN4_|pwaE&>7@e2phKx*0{bIAs(8V(TvI>_$?knY;I zU2mVDf>3oFzi`X2jW0MncaWdTxUbzEWpTLCY&r5XqZj0^L^-tt?v#^NZK*!`gwsk6<@F6ClaZqiI&zR_cN& zG`%uUkijb`b?HgJ-#3OA>~D7xA%IN-VRnpX2=Cd!E&L?+i442A+VlG@+m$({@rofC zsZBpP7Ev=^Ha_G2ne`;ZeCnX9!7!%$rS$|~Ui*8FtVcW_IJDlt)9-DlEJQ&ZMr4aS zzmGAS?|xC*g>%dm$zQFA0%C=|S62-l%OG`Dy2l_|jm*vGoRxyvdC+i7h8U`!Y=4li zb6Y@7W-eH^7sag60;vzP>oscRy;bsa=Ux2K76!Uh7}P!E^5!??r)|ki2X}PBV2YMo z(QQYqg0c?v&h$*@iH8O^2f1RTUipCwhhoa-&9jJO`*@Q#lf$MoVExZBs`0Pu#QWwrBW+T9v=DtGsYh|Qw>M?2Ds&%IeDrL zbjqLV+7|KMilE{**&p7r`QsCV^9cQ@rr_WDSoHUjP5MCwkg&&{|6J&vm}_uWP-ST(;{&WivwFJ-B> zYWHe;VMt4h_a1u07fu1Izb9jg9*O3mtpn5bXNh+sYS(!C0{aVonSRh6O*?Mz=Y5ar zf$VyH?2bXw%s08kyIXY-v$uk>k~nt6{$%`(aQ-QBVMlHZCnw{^{2j;MtyB~rUGPtg zF{Hsk$oz7U_H9k}r&n}QHcOEPp?aHw%y?Lj$Bln_`EAjZg6au;`9Y5 z&mmsezU)4-$IcAyF>0(0b(yUXCTBqH$I&9(09(EBUtcjQxCCQQz7JA39MMGc9!>@Q zm|Y@7wHe_t;EfFgYo5$&oRpaHq6=P+JYGi0w3WVV@4)*HnfWE80=u32-iQd_xKsz# zIA-e<1GF@uoX+DD;62KsC+ooFHNwL6I4c@=aKc#9Uk;n$~|FuQ9I{o9ubQ~W?q=q;j+~O?9SGV_>FaYZTTQXwxRPqh!vFSeG8kZ^h?~IL+ zydaPITwZsqAJ+OjNyBS2*`^t^b>$oUgX0elPRRD7l_ZZ8$EIQ zYP_2_y_r)N4Lk_%M2z#!yo8t+zSz(^^#|6;wP!wSIb~2ez3Wks5{4C5G&X7uX{rq> zY`V){hxz54h?48!^PoId>0d@{k27zxsP@EPSpKC)u2n3`x%UoQ7%44R0+nT82hIvM z9>d_UJ#Th-{A5Gs{dPwxK-1zG2;xw6w=EQnGz`3dT%jj_gptW17nZnWO4Q{ zE}7{Tq8`AM;V}ArFvvUATTn-T;#xXU&?oDM%|P^igZibJVp*y>wTdseDGjc&_!f zX)iN`<>^ebj0M=@IK~-Xnm0)QCN_FO4k@!QcaXj&XB0!^ z&%C28R}dC_7$lZx-r8juAJRU^i-bD`60S3WuIFUDae@ZHrK+}=YVk5&AT6ZXafi^h zoU?jfL$Pz=sgrWeAjwwyh7wWfi-i)9wZEfeTQ|FBuu()xUNp`%CC#+<2IeU)=BZ** zPuiE#@l}R;JUJoyPuZUThJnk-@DJVdf9)dv@91ctW8{O6Gk|rHDGf`usFY3Q(d?M| z0&A51G-Zue5BuAZ%&dX$sxi+hKbEoe4%(&sM>0(cab`pAYmX|w_1m9Gq{L)zp;=6W zE%7OEfFf7LclN?C(*n@Tvm$LVwF?;|_|p?Ze_*tCJ8>dOxLp}aApd9%>!}1(WDlxA2+Y~1M6Y)W z{INBB!zg}r9l*X@%^T!}P!eq7koX%|(@*lH-p_PpFonu^zpc+_O7l@Pb$@qU;RP>C z0sP|gcbf~*Zy@{=ay)Y8cOh)jcf4e3t?ivIIg9DpifVe2EB0i*cMPH-^E#=JTaBsp zgSzRj3-$uQay-~GGH)m@?@^jgQwu)Qux-7jYVUIM#%Ib2&)cjO8BbXo$hS(kE9fk# ztH$k{-1c;)unD<&*yP$t5DxgzjeyXb99=HMG~bn>`Q1JHT(<=~##@q$dm#HoYX~MZW1E@+>Y|e*P?p{-CmgOSxL+TWfyh3fJp~X#AXx*A{@x6-d zOlnqStQ~J5bVt)*Zy4N_?(DRafveSR3paxJMOXr=s(16nI%tWEmh>?;fY)`t;5KPu z$3}<}@IHr_%b42j4iPOx8$+XB5P>*9a$jb(l#|ruKT9nmo>#U~wDQ5~N8<;^_{p;Z z>)iV47Vd%7@t|7J=%230xSL~8$ErpR{Lw#;)B?FBu)05qaTLV=;2y6Hrv%+H6O065e~-?X~|@U zKxGtsXCi&b+uQj$1h|k2(bS2FY!TsWy=d{K%$OY1`o|cw74h_Djwbr64ix~OA5JEW zj4GbyZ@W!)kW zF|QXu$0eT&v%VI~Hb^BShKa~MzsD>S@$S&Lc*lAl9mKH!_D>14vnpNCM*u^qlwe`U6%g+D&Pn_6t2zHps zypf8wvCj-3=SZM${6E`*P7gIFsTPW4dLw9c*1e$qgZMSv)=V5_+p#5F_Xgm-|KS?{ zZ4)I?43EF>T7xZF7BX&V$KRN@4Y1gCPoN1PNn$_N^JPJLKvs zji+}4DW;L0dA6z}4HKwFMI^`BDFqDC;_#@|Y3*HpLxf3Y3P0DUM1BIWGCv&iZ)W}#_w%-gc?5bb}p&QcnjD=twn#ZO1%wy7$ zf1iyO4CRnDxZRw~6)ilBe7CYBRm)ntEIPoB`XDI6Zf`tcD1VrPd@99NkpyWnBRbws zbiyUyTK5PW!zzc9V6IpzD#e)AFO}?{6%nCQD74TtYois+z_6r!*f{%tvK2x% z3OC~30#!jq_bph3H+BANcD*^al8v=*coAkJn^2|P@H%G5+m($l_r{>KWQ6bCOF}h? z^9EWB?6aU{sApc*4#bmH2oaxurU*X#*`4fA!$v!7X!Ll7^COX<{=|j3Mqog@MM3|# z5kxGdxs>HbjB|A7r+PxfJ&2r%vn-6iMaw2AF+Z+#jHIGl1Hh;qW4IUd^I>>6vMB_W ztbw*Kf+cvSbui8UNeEZfiK&08au>SsQ6-ZUWSZCu>nts;vm>IkH_Re0N#xlY6=%}{+6K=y=u%@1%ALpAGWDZd@HG-qT3?up zQ~QzrD9Q~tT_h&8FnC226$u>}Gn-2tR~SfTkm~vEyi6{tlBhH)ih}5?^;hNbin8v> zkLq;l4$`>X;r@mUoEJmrFb2T5jsk=Ikwk&1{xppp3$3_0-DY zy7kx&@kU}m5YvS(^2hfvnmE#M{8*KA;7cejE=4*_#bmhavJJ| zQaV+|Xz0_#))v~^20NJ;K2gfi*_Y>O-q_jX7%)#gB@LyPls-+_5?}$%3y(dI}iI+tkAGv^%`e%R5 zZR&W{Q}VxUa3EI3t}7Eqw!7ge&h`Z=5FemM(fDxC>1le)KE}vLnrX|{x;uN-9mc2- z((oG6IjKjepcN%*_%q_#n7jzg{zGdADm#wd&xk95#|dD*Ffw>q1fG5pNq~ht>pF8TEOZJFpji28=AG|LSnVC;gLC;`YCHq-jYfbW2!JLEeYa zq9KWs0z>-y5NXx>QFw9kV4Ae9$QQph7klP1WRc@EJIwhR2zY8wNTdd zAEf*W9?kP4i!{~P{@i0i<`kwN z?I6Pf{ksI#_$5|qtcqN0hgOy4czsEU`X7nw&2RW1Rxu+SajnwQJ_(&VrZc9)%h$}- z6i>LF9=Iz&F98VgvIOuco81+m;rFC%kiBlzHL3AVn!5z)@;Y+WVlv`E$YLRipfN@w zQiMddwYf*+s}EQ>j5$8ZDA^)HH(FNlVa4DiEfA`DFPZ|<#R2_8PugAyWW~gb;4Fsb zwp6|n9bp?o*P{VU(X=CGH0*S z1Vn?dg9Afes8V+XmJAKh2wkQy9mI*)DAcoZAidi49L4V3Ju&_tl)YnYh9xC) zXZ6~vzOdX?JKhEC;pK1acO^IBdn5dm@#L6%Maa2ixR7ZVt!8~uA*9tePba={y6u** z2^U)6f**H_V6>$z^fPnFSrhW6I(D><6)1AOB2dF{oT<_0=n`L0dGH3s>v?>Xx|4)# zy87#AoKA!TJCN)th&&?T)fwPnI>31Y-rdlTfpc*4F*Kwcs0_{C867@vF{Xd#+cQX(a?l!#YG9jT$K z>XE48gDoeCO4gKQQ=lVzu=d-SO{jEMkX*6su#{4grU0m$O(eYC?#?Nj8 zR_JajO!Bha;0LflDAiwHK8u_2JQtTppXG!BsGGLlZk9svk~P_Ycf%~=p`6YR}}tk=3M>mKn-;o5o2?Sxb(ky$i|+l1*DM#y`VWp znV~UWMZa4QCl+;bDs-X!MpC_40KB5gF&0UP(xmh zki=Z~#*5|th$1=CUmty`=w~}N_>Bjt3VSm-+%rehjIdvdoNp|Gk05_XR;`K4^2hRi zv^||+jve_oC!ji~|A(0PUqN)4{$FCn{{uvK`rsu^+3`szgXY?~n5w1$ZXAK-BlYkc zM!dE0<)bTb*!4B9UIYjdVhUN65AEg06#3P@o{kO6VP|mtSQNRfH3rCG=`PKp22m3U zXI?L_h^A&`F%Hi$>>{6NE zHia7Nxow?+r#*b(LD>kkMsA@-HVVQtC?KzJZ<%quF-&>!J@;5 z(dBC`wJgrn#TGNr?f89kRkE~N$FJOXX?bq5jQ!xp@#bTNm@Z)7yk6JNL^(X&0o`*X z{oqc%AEDG|E(#FexkRRGD3Zs}#xZrA7Qr}l~IT?(cI3dd^qOKHO=zvkw=xZu`kG{IkpC?PmIOF>8x9E$G}g9r$X|W&$pO}#%4d@oeedo(exVA7|{z$EFt9WEYuu4btY3m1Tq z-R>Gp9A-yj@bBQ)`DeFBr`{>vIH$4tK+EcM0;7-)2^L9jBsVTgLf>ILQN1Pwz5c<% z3R~)V`hiGW!~E2WRG+xY^Sykxhs@nrFyxwk2tV0+^GKb0ICY+$L1@!sY?1c2O3 z8K~6gJHg0LNk0;PFgrvf?;Vb6TxHklTL;rw{>CA9iOn^#JIURiO7Kj{d8%e_DiYmd zpVbO>pw!sgq6w{=O!UMBpyH}DHF9vhZ@(T8^P?e!uxhT_$$mGOb7K zKUp29(tYm-5ayQY(v1ch^@JnjJN>?hV2&~lVnx+Mw`@Chjle^BuDQYWlLj8BQqy;5 z_V-sl zinA%E2dZ6kB6&!!Xw0#f1T7I$ zq1uc-85GBr)9Zz(;K92WyG7II#dPmB;91+*Ih46sT!RQwVZ?L3J%z9?FdDSIY)@wg ziW(hkG=niiid}yU*)Y8&J8U5$B&Cye_lOdTzuT7SN;Rz~HP(#+C zxR=)vJSBsSpH1R#qxesuI)$_zyt6|66%vg z<&?bUU$=cHlpH$&=0wv%_t-1?a!XErzBIB((+EmX>nl%=DD5L=?TL2=il*^2|H4@nxC>T0~8N*Ga-SH8S09V-`E>R_oCQ7mq86dc2}}l zfS8}TiY8+)n7Ta_5$2vVAz-rx{V^)Zqdv^or9TDc2@uy3hcbh8L`Wz6#Um zD|1fP*edA)@;!Nxq1G$p;{AtPR-!6@^uUYqr6EZc;+^O9HMUc248(AYJU0g_5Xnzr zpR`+zRux_g!2Z5U^l!8+y}LUpkH3qr5qH0-@O$oQ^ba=}7L$rp|C4W4{1ij^2juqj zCVpZ?0xdm6Mpu=snq~fXRf3dm1xh699J&R^*#7A&8}>j_oOWjV&4Z0>>L$&#$%nj` zwW#-3NHR}7t$QT^IW9Lo!D?IMee}khjw;0a1d_CKd$vB%rmk7&aY@CE$LkXj46ym#TqKJddAV5*LG>U{X&oq)gKHBR0?_m#)MS zZVyVPO8N|N5(eTj7zKF3l267JCPqBJ=Mr#PS@U8wnQeqjX4gvw=C6km^_*+m+=sx5 zwl8pZtER8{8^FyBidvT+`Qec>_z05R!ysWA*a1?osFhpwfID{GPeq1LIkRVh2)!*- zlshviGdefS^9FLy1K%*X-5N5w%I*4Z&naC3>9B#$@C_}XgYDry+{r5o1s(SogS`kuto>zn!>86X^NBO)7 z>m|#QqGmlNY;3e@Xzkz#VgfzB-y_ZBzGP5jj;EE!8q%Ol+QVJIQ)$v* zUnz7e*=Xc4JsJ00^eVPxm1gjNs3mW2ad5LL8qdV4U%vo%4 z?I1J9xi^)6a-qC-Y-2QQIz~jP8Nid|o0+sTemKg@?nMv+=2!=+8(x-_5?spnscJ90 z6@<%p9vKvzk4Wh1S>r?Tz!ihq*SSX9SQX9_2!`l|`5bF=4$U_XCwQ7lB(C1lFomRj z*)9k|sjL%4Z^c(w^Kf?FrQ%UlVKd$rVqIK7$h2EUo}I6V++5s&5wWo8agYc8_W<>A zL3P{rN7lV$ubtA0-Tx2^{~L(z|6I!aufp|zY~BoP8EGRv{d2cGnslV)SR|-7S=T(; zckn83jBp+dhc02VGp1WUizMsB#Ylt=o&h<>25O@kVEW+#j#^Z}*F^n-V~~RdTi%=p zBzyS=f@4yce!Ts{6H0%2xV!`7i(qj{e5=>6UN_NL3B@=S62-YEZ!s`IOMr-yCC)8^{7fdKJQ*$?bV6ED5REpS>C3^pbRpmq(HcVE zL}J*%VQXb>HhWyjL-&<-(0dz^m;8vvp+fRU(T(cby@Usj;vPV^P$EOu z=jXA8rae*4`;i`<1h2eVKZ&TOs`Wv*MUDqH)30 z_NG;R`3Lw>yM-^*@CyaX{!y7pdJaS#mGFy)AAOV&tCd%1UN+vP{)iZhjW~dmo?!cS zp4G)7{-jSXcgPybgC>;T;`IseoQ2x(5^vp9JepZv0$$q;RNMQB0m=&_GeH1}FRrPq zsdnlgc7QEh6V<2MFXLO>b5Tzd_FHq|N5({JzJzXX!c<&rx&HF$x;j^Tm z`2e2mL3xp1x8KsF88kbpHHU6H%c>+0!S)Cu2?zQ0bL@r#UPitJ1 zWc|pqpFVfF{C@1xC^y7E%x`nYbIv4wm9(>0#hEVWlbVsa9pGBX=LuYdbLKdQLFsgx;S|Lsb#!?D}|_^YQ0d=jcKAj?No73 zHsOKQ2K*{E*1gpzh|v|LQtlvk#K`@%4CS5f`sKd5;cgJ`$))q<>Y~IRZt<*R!Ab^$ zROi+)Puu`P!7*5H8WIVgpm^qhG>M!j1z}4;`|XSV!!`QfKqddj5{8xYf6F5Oa(r5i z4L7>T8ottR)f*Rpevi71esWaq`lmZWrLRhyl_4CF*E#YrY#6wk$=FdJ`3pxb@RYr) zD?OLvGu@APmVEpUe8{dg3}EU~CG*d0s?Ijdr_Hjj-N^zT&L4w+GYIVQ=%RS-c9lp!biVtVw9>j<+p#UJ5Fek)OWkIJBM23zBwYnuDs3@o)H=t0SzertV*Y726*~m~O zxig#n`&q5UidT*Re1bDs{v0z4hiuzU!H(GLWs_arJ>p8{q&x1kNBXxKUfrl-tjAc&z*=4Rht$X^}@GzY15Lj}Ow$U;jNhbCG3 zfFq2!@4cc(27uO8VE;_PG|mT5d@j%J3{{=poHVh9Cf`W*xIi05MWmy8>9|H2h1B!h zB?gN&q!&l|5%H#VFiIwft^9`GI*;|Br(Jqg%VC!Mg$za?yBy3D$G(Dic0K9PS(-35 zsaX8XQ)E?Yl=FuqOq77?2INcV)+dzo!sVyZsj zu@_k;Ip~$kcN(+&A&G!mwDaz*?<$nhEG{K~&w6H51G46CoQyUa9B3^7n$)6)ceap3 zO3be|NJY7V*qp;}Cm7bgt`{S_prRrZL_gFhwNk?!xO=jbmG}>7T%*KE&1wUmG$P`- zqJ@AJkL!1FbmLH9;-3Y|uEQDOK`WI+$30d~G+7Ym;m_+I+>Lz?8MHq+S%A{Tt#(3d zGD6O!q<`%HhO-8InLGoai+Eebq=`ueY5D);oh$17qy2`Q?sjWg;&JHVqm?8qx5tcK z7m>VBFf?xEn{F_uA2#v`6#4OlNgx6uR_>-3h@KL-7N{;lCt?yn-YFHmN@CF6U$Ar0 z&S?-Smy5#kpUwfqzMTMipKnFKXCzF7fZx)%Ly18AbhD>0jF0It?`6k4hJw;mj}-pp z2`ff!Q^*70*pK_;4(sW4mx^sZ zaOrai1W00KV%khPLlz@)I|$z}kNf~{X6jo74+{Q^oEioDx&NfK<8;S=Z^y$rXLXj* ztE%OT5qDWPH^puQ_UyqXfe$A`MmwK^bW8$a6PSkzc~+mk{>qK!&xO9pk#@_`s3+}JIYS+?mRt6d zYIp01U9IO`D_F*{!c8muHp}18<>PNDy5L?aHp->~U9WE1T_!WCycGE$mLqqs9oA{% zfOZdnL&*5ki~-Mowr!BpS*W8<3j<(+L?xwLM@Jrt-0bE`>|&8B?XTq-HjuqU z^6X3@&;~S3xbcPDfznX>KyzdmF1$c^nDi~QTVxLTcM~3N!+kIvNKMUa41NDOV1~v5 z6hv1zF3~9=Iv|m!gEfFNO~QK&7}lg})hyj^V7t(7gJ=cK4>?G9$PusXtbMKX4*P=B zJGe=sI|3oSeW*ddLLVo58&VezVDcFf_$H}Pajy`#Y zXrlx%dw1Dz9rUhYnh)l{>fy}>je+|4nko205IK}gc$&Ugj#nmzLgjn5Ctk|(is_8U zILQ%x(7lvQuOK;JW?7*qM*8#{UMr)u>+WK@|6}DJ={mRD*xF-^xJGQNMlUa{6k-iM z0w|QYvo7yQDx9jKKcg ziU80&4Q3u#*85Y5fU2wu`GD;j(i(f`1ZojKT5PQrSE3#nNEs{6<6ifi_wkMtlerL! zY_=EsH-o(8xJ2>s*M27vn$Lp3y)5TwRZVGrQ1XR@yJ;6$S}B`7{T!@u89%Pas9@3wP!O{ z#=VJtN1oEp!mTIj)is7{C$NQRwiVlR{Z_mN^DepSM}b^>v%1QE;|?k*^vn!k-s5g|WCF4Za}}5~b~XgB;Ywh>7lo5L)k0+7D=> zP?CNRD(XdO0A)b{fY-CU z5pa1c2QiPfxC5gF02wcS9QJO*tHT|Wi<)2N83@f;yiHUG*&i|?G#H?cw$XVp3@FvT zUdbv{uYb8eYZ^whF(Uw`M3?J)q$SY%9PRR@Q^e}(RW<5XWOzl6SN6h@9cEY? z)qy&DZF_fGgr6lxm;Ab%fs~+X*pHz0jT8@eN^Sf1x=FoCVdM80{O>6;xE&Q;y@FuE zHZC7*Yyd#X%e=Vwfjn}b45QJ!2oBA$4~8_9b)Ua-XXci~q)&0mX_1XGc3IqJJ#Ggc zVLri_ywxkN>RsvjxKnE(qc_-_iliOzpy#}_6r zh{DJiBpWb@$7l%5aG3TCMyUFS7&D(Ld{3EBd`3RWxWNG9$%@Ikq@-g0snR1+*B_{c zEN*WsBZMgxRz|Wjw>Yee9xx|VQdtcp-1(In`exR<1d*a5D~)dJ%NVT>yxDH6(PL~0 zfMv>G#hT*V6v`=plH;$Tpm-=yl`JBnja$4WbdIS56f<}oeM&6{CA09L?ro`j zCKaC4o4N*#9>qR+u|h6OXa{!QgumU?57NICi3cZ-WOl5%cv3wI`cI+!WFH$SZ{9?vJn4e42=SV2k&`RE8P z+FWkI#In7v*XD+OI@9WV4yY#R1j7YP{s0k`)M2bY;HZZADLL+-y3HxOB$ecE@uTA7 z#0`^GzuMN&#!zdMJ)`KGH|UAOqmvy{(efy9t})8Xls}B&_?6=BrfK{ckXn}?N6XNK z=`oDc_t?Z{0$RA}3ybH(7~v4&@?4e*K|Eyu(9Wi<=7SeS3dzS;*mW*sPsD?^<_#;* z1`4c;X=&OJvLNH;d@!gdA#%}t+$LlFsUncm{TWA7U<$bW?Z*F907ThT9d&Y2!f5s6 z12x31sHZIwa17$!!EZ0zfbRG97S!!+HMM9`9&)MXx7DaIt|<8##pggAk)+G=G@>7Q zsl(OH#Jp9$j;ck&{ApMT^s>f-%| zeoCweCZJFj^yL|7gWzXC10bg=`3YuGG9&{I7k8aPm}XS;s1v0Y{G;Iv(v0eQ=JUcp zh<@f7dsE!|0ZI1U{DdlU7b;v1gnND^R{kGf)ifZbbka@m`E- z;WrZ}=5D{tWd+os9`0e%z5~JE-zdYY0eo1&MWDEO|5KXD;N}px2Lp6#L3#&>(U~(9 zb#v_nae|i7&JDYzEDHv1sK|zHy$w~-O!?(o`!WvhlTr2&v@B>~OteRMv<#p1jQWf^ z+G_2;tZ(Px%ulnM(uE6QZ2VxmZ2O7t{lofi9885ZM;r&*@P$*gT0pnwQlbo=zc4Y{ z>1WD50i zH-(1Le^G*LWKCK{`$B%j-3?!Fr;LE2ag%ot-f(YnTDf%MYGJCbZdm)M8JrZJKiYLs zWc;-sI3JARLx?S-K(;$?<&MYe1UX?`UAA=cx zWmVK>Mt_U|LT@`DzT#24^%LapZ?a+wl&jOM)K$UNYEWR!-dxQ99w&X0h^nC4x^mGoA}uyHqQoVzFxc98FqVl2 zCEZLS5ongUs^0{5=D?j=mE|vC=0uk%p|3+T<#TT2!!lGN*HAV}E>M<3RO(BbMu8vs z?Rx+juPH<*#0|jpK_22YXt5$+-+XLN4t*QACrApy13~wS*BGzhW5eW);@Oz%6K^9j-fBwNI2B3aVOg zdzd?O8-F{{vZzp{{gNSJ<72!r!ZKPV7r{IlO;+0t_G&vndLq93j8FDJioIj|2mZ!k zq?*e^;>0Frm5r}d*~a^g)p)SZ(GBgc5IwGY1HGgB`c zlzq$4kiQ3nFyF%l>XgQ&ylTWsNJSTj08Pc)o!s9nQ3|m|L@Cq?)$A|$BMHNjc<48I zK^c}`?FHbPPvyxx=aslE=#ZH|!nqj2bYP(Ju%j1U?7Z22EFDjt>Y!{0@d-jP#^9D% zV1fxn-cJx8`Zo(NnEsJ+KOmg8)~$lV%_B##30V{^0A`e%6V^MtVB( z;W;E}4h@*3b{CetG)FJ(3~cKUmGs;$AI}Vd%|`TM(bU(&0YlYb-MNhUpAkt#`<4Z@;N5^D)>GSW4C! zv$nh|Dmrv5pqu`wmCcf{dXGa(p0G!3LIcP-5ohDSrJm}_VVz*YI*$AgxF#^t6S8Q| zMs}SY=Dp1y?{~?KFvIm?Uh`);!iGlr)vo!&aUUn{-LZ>5)K%u69300i_*)&8)#H!Qc(xP$+)BD1V*#6g%_U&gB$pM(q1D=Mf-30;w?+NPKovQf9k_x0UL5o zoDxXf;htptT4xk$Ad@$zl2R8DXntL^%D+|6tUoSxG)mK$cER2_{Gqp~3qZ=nZO_zL z_m^M99!CX$+L1DOy)EXY0N7pwby?jY7!YS+Cq9?rcNjmY=`K+63$x+vUd=D=Gb|7h zUp_AJ{_OtoytOA$tKzW1^r^qd7`Chp{I(~0ZF$GZMmg;M3)JxbC1^k)YUvY#q+ zfS@hSwP?(hzh}90exV#QEF0nouw`meJp$F*aeWl5Zt-~rO9|hdU7Gm8vSvvVS4YgV@MR?;OhR@h z9)+peByEKZH9t|k5JCePnF3A8Lq~`rJ-rl;60S0(HGd_e37DYfOFh29-JX3#lf})n z0>xGpa7k|6hDlIvbP(w4C0J(!0E;fQa)A2}*XVykrTib$G%Fj!{|-i8$ERVGaI9(C zVv^RH25@r}7T#^c^{!JmClY6EzvUcHxurC{ib}2_MjMu@y%E5||iafR{MZ zI#eARG4_(m)pAS{O#owd=R)>(VcHv<;seq{BCx>%If9+!elf&d4PLiN@_?1E>Fo^)&fnvg$(F&u-l(;MD`{m8Y#U1uMq)=jnXvKeG+3PQ<`{T0 z59sP+9QALPrA6(@v=otClN7$43z`Xzdoj`_G_12sPBQuU(D>%8H$)gBS|w!R$Uxsi zOPN^BXw^8H#?W#NRf8%ccG|_qic_Ufjhp~0iK>`bCdWseD@; z7-UreK956Aj%w)AyXXnb9kKYo20oh{dX9wD{wBrvQ4~!GG{geL^{-@jR}_v*LvuyC z`cQfjzwo?L;Rt*yNYsKdQ;5nFYP_~NTQs_`JpvKLv9uLX97=sMwqcpai>d`1SL&{* zs#_W&Cgk5hHYjC(9TO9hk7pc2f-;7@%DhW0qhdc)xzd}4@u}v*=3b?ZjyA_d_NLeU zG)HKA=vzT;Hw-)VJx-6^rEX>zCi7&2=Rft{@)Ur{@H6O;y|F`F1m00vJ!>>h`?qg9ci4p+unOVZA8 zZ))wXP{$U0$L_u1a`XSZe9&&Ybq0|pK{HYruP*$&E8B~6DG?w`?jh(Cr+>!VBy`sb@7qOBX7 z9G;vl6YsnU%C3$dAiBA3KN$hz{WG&0lce-=!c&V9$Si;kXMCcg33rcModp)1wllRF z7O!WBspN--R_V?!GlNX|yv**~XXhcWbZV&#AvwOnX1CyOwOt1sS(d)`zX+dlEmkFZ zvXU+(y&!+u&98}f{Qj|2lV59WT-Ka3(Ow*SC8eDmW$=j%s92Ge`)nOwuym!AZtDJR zd0a!$OSlL12m69}gNNyJd+dqQ{3&`uS@Y#Kjn#&yzezAm?D?IG^1~&k9ju6=`T7FE z8b;2yG}|y5&`N88=~b?`jcGYHM2wOIZ$|YB?v9p9ZWUIo-+C=nIMaMb=-uZhLG@6l zy(Xir8wnuaKL|WEu+}Vn4PiP}*PVz?{?9M6xwwnAZ7=^Ni%*C-h`irvP8ORQjH>~8JmD^-zStP6AMxjIDz!FF_ z*~v}3P7|P+bE5Vy^F|uwM}QIC(Q5R5#VNU{j7TZn2uE0jq!op_!QuuA^R39k@`@K{5V!%t%6$l0z97meoEe`9`X4j*FXY^#6O+eVykYt(qwb}$qbyluZ zzv!%dQrdnKx!u?NS@#XOV8iD0{JeMDs=E$zyBoF_clyoJsfB_*e*)o5o_t-C`vVDw z1X_4!FUfNW@CAe@?CE!t094W~_>TTOf5l{sax&ETi%l-9CUcY>?0F@%-M2OAfiEO7 ztV^KV3Bl<^QNm|g0{Yxy6%s`pJx$a!p{g&2z4>8u#`q%HumCBx=R9<|nN;y0Sd!eU zv~S=1ZFI70t5ukFJXKH_4`s%-(Tz*EFU7c=@6DV^8yylRM1qo$v+Hk%_?UT~+xq^> z)4iyZdp7OkRIK0Q_N=InfzqX@t zb*g%JZwvF!&|O82thz;yh=*tRJcun%OgVG)YUvbASFlN@OXW)b&0$Y3dCHRWLBEm4 zAU|AUd=HvIE?k!-wMShub9ygvve!LoZqs3qY8!b<;2}Ys5Y&W&4drpGm1cw>Zh!Di< zq3w*S*Es>GR3Ch@D*X5EV5Fp>a!DMx^+}U~yWCUxrB1OEe|8>L@P@U&T)pE3@ZhxN zK@qB3=6{Hp{~dLgk>mg7V*H;9+ynzHZWd^x75QYep5Xb0G%aW4qlUf{!YHz3`@_aw zMkM`U#Cpyc4!(%ouS-4}`5*O6)1Tn&=ycLSjHBvTqLJ{4v`iS~?c&?xxCXqDCx3C% z{eYs=8VkoCyL0e(hL_j&7>gt82 zbRv(KqnxaN$CTyY`g%#o-Xohx#|9PnWLM3RrW{m zO3gYI<60hw6V^w+Ia4Te#g3C8y*=}^z3DpvBVMEhRO%0H-lr6j{f=fEsw3L#^|04U zeq0 zE3~WjxKBqDeZU?uZe6j|^n7{vvgEW5(yz!zkwYPVX;~v z1G9yTw;8(4)r;tudGfIA0u@0_%rMITD0bJzFvj)XH+i7(b^ZqIG_-!mTD4^Inr+$( z<%xUj3T3$i*88%gvF$9`pM^getK#syo2&f2%vWEa+heDL5!;>MB%tsCXDTn%do1?6SaCTL%B)X%r%3a*GgX6tDVuFxodg7-{%=h=rX>lqv* zze3@)&ydL}8W|S?k4nfkA4lE*i?&P8o$n7?WOnYY)KqKt%ql!*-Ryv>-i|(1xqw_F zQMuNW2~1R3Y!W1o48Eo?Oqv+;-8NpD1_7?{0og}Bo14rYV*Z*^??(M(fQM(42c!cr zPZ_aLv5>X#6W6oNr2t&5hYLD1E7DZiVxV1*`$Mk3Ui=S_{J@(0cbQ-?%EHGCLoVXp zY3+gmXfGP2LSDy?g`BHTG0OK2t7dX3sA``tAQmq>TUUat5IY1XX(c=sx$t1`Mq(uJ zIaqSx0J&TQhg1#jjH|JO9e|9L{A-Xn;(C@y7_?3b59T9Y*vCQvXu{P{I=NMr(AVkf z4Nn(kxdWYID9*V-9mWWSaHkXrh2T z?0U~iFspt_0>;S`&ytt!+pqXmvCe?70(FkEA*zm~?*Jj+f@FkW<|9EKn&)(5GZ)npbK4t6}0Xk|^-BSDd6db?f$~dYNEz zeHnE3MSaV(Q&eoT@s{#x*M={*w&~8}W{QNqEYqDmFIewEgG@eR5RumXB+N7u0opNKm(t0)Ejugo ztI)UW457sA4uHQb!k522BM#k^e>y-Y|Mj#@Az-wyc^Piu=8MoPJHi9wVcp_t=7r|` zl2CVTWV$M%-lv@Y_g5W3RYk{t2JFii^t$+lDMZ%itPg1PS3Z9%i~^M{^o`+U zl^53FY;bVVXDOZY3JZ30PM2}b!}kwPGdZy9eR(UI#TZIV$N zpYO&Et&BWoDHKbQEKEoxEg>P@j$C7bIrQPWIi4$tr z8UYv%XkD8Z0i)yBk#GMW{_&L^OQ>0zBQyO+C&@BWt#}ho!PC@$KQqkvk>@u)20JV` z#K1G>|BNcA#PoR*3(f{mKr!K7U!SCgcH*&{Dz54Qg7*TejU8#U$SU32=?!JOu2;^C zeu8uoAylmx2ScYCgYTz0Ln zzIQ+HQGZ&${{>agBmoQTZb~wDyYWWn*)rH6-8~Zxc@X%t(ChnRjnl1)ps?xdyEF|> zN9xmCGPC|t^o{ld()YXp`w{DnGw zL6+5IKuPn+F2{-QBk^a^b)qYp;i}~7*4K7@kcW?{*7>~W@u3hF%Y^ws^1}}jjNzsy zWt5_P9uZ>8+*TYR(hy1CP-{fvL$OZwE{?%UBg~YH$89Us|6oj`)1>e=q+-g>e;wz) zJjzlAi4OuM3+ybzbY5vvU4o*b+)gykhn2PE%5Lq@`@a}_rzKGUZOOK5+qP}nwr$(? zD%UF8wr$(CZL3$@hZFs9_v!r;GcqD)jzO)RqJ>?PU0%o$Zbee7YB#TMqks++AcMFp ziK`5_2qau^NkP-j7>p%SdIDxgw7TG*@>DF*2$dBgm3hcB$}OBxz_z2tec<~6Z* zY38sS2z>CaUK+Fq@t3m?T71mIzARuMW-(S3#B*uyK){z8*bD^LTn9t5rqsr;0Xo9T zy0z%>*boFZdj{`#iA;1RklQmGG0!aCU$BE7uuMLxD`=qr(F@l#vJem){A z@8I=FssSgPM^|g4g+Ymd8QDVAOf6YRQb7OWkSNf_E-*D16ks}y24+^GR=Yyw_}^&-ux@Bzq(A{&R&`!fCsRTJl8x>Qp647 z+()2WR0158IPGyrmXW*P~anCXWWv~&a>Eb6oGX^0?KOW}M1WD>_ zx+*)&l3;UuG1&GXbj)o**9!UPxw2Hc($Yu97-kp|e+Pcnr+i_#1~wt1Lle-;yECmw zS_q2ZzU98%xQw?AX&Ov>S7dC>93HrA<0$;H#X3+i$;#X038v*@oo-;V_M3Zg5q{eT z)o$oDoLmU=#2kSJ?rk0%o$iEhwoB(MT~IvTWFxe$7UvYkQ(`H4vQ{#>;DKviJ_Yxp z--u`ySRh7b_6A?+jUY+nY~i3w@{7Zf)D`GP)caFy@}T4;D^pw!P8p%$YwI~UQcca6 zDW^G*F?EEH-(@2NagBB=CvzP?9U>NEoPxPjh1?)eepgW1ebI%sHGS&${`$w9l68qX zt)bEY5-sJQu2Y^+{nRoG?x4r7mZcosA`^j>+0n-P7NPL4GyQl!;gly=SjzW5%P}Z9 z*rvYJ2@eF4_#H=Y)Mi#6QGbb$gX*}?{MCt4MmUn0yD?gVO8GC=RS8cA3!+Q*gXq>q zEH}q<%t0`m>y<9nfHTu%rkF@ozPIg{V5o4#mTHTUji5&7PKQ8I7y>O!S%%tj3OMm7 zUZcVrTieqgZ*8H;iq{m_O&DVoY=^|RQoDYai3)10`QCc9Cmy?*weB!6{=*smZzz`k zmOlSOv1DRnV)@@np=4jY18#B+Bp^mYkrNTE5QqUe(&P#PhL0X{g3nCL=g-p>AF-#$ z)Pw9L`AE7wRZWyn%d;$m{cEyWIPqF3Q=UMy@2ch_@}x(qnw^^>;)pl;P4Ep~{EJk7 zqHTh1*cB{23|1!L`grAE&IWAX6H!!zeh*9mLIqEHGjWfL$sY2T5HsJ*qK$kZWs)Ib zX7n?fREOXXzpLsw+GaXDx<&=t|wI=p2zFwr0 z)QaxJkR(SdxiRpLzpZLIoh88ubbA&R#7%zz8)^1|Qydn{sGoNByu20rp*rnR;1dUk z3$k&^S$gU9e{_*XsmPuZ;w3L|ri zPh+Egu{_~_&%D%cPjN8taa$R7OycNfhVDpSN|2al+y;q-r zJ(ht~Jt)K4C71t94J;v5sW@22+RRMvu!RieJ=G;wCTzQE4tH`dNc)@{@aTCXRdR4-bS6*X<2PS0a z3;Z38P+5(DaThuxH4r_IspydgV2B3myqd~QL z9C@qqEcKqUP|jo~jBB%HN<~b;sh1uKIZwq{Pw(}i(#ZZO`UL5NN+Q2usxfaLCK-@x z!m>E{16gs-4w2i;8ckc~rk;L`D0My*4F4AfL1Mmx zu}edzP8mv~4B8W?BoK+9DTBl*16C<~I(T^4JSARYj6bQUNED%rgW zOD~BYfdVvi{v3Xr>UcAxnE573f9kbwDdCc{y!)Db*De$E?+PNA$h!rJBUTt@XKr+m z97W#1yMx7jg5TzVNL5Cw2>LW7ze@bn2`RPb*QT#EFvuyhP+<@n2<^ZK@Wl1g*_prx zOIL2vEV*c7FtkpqgKzN2j2POpn$_(Y?p#(Rasz_3E~(!KsFhwGP3(5r_D=mtq!i8g z$r$NnBduX2y21iEuTb}*dT+Ov>pH{0J#O}I!!)2-zpKx4Mk zgN2nxGIW;N;@>9AU)gOxXm!R=*>7jR7^f-a!zJ)UR@#leBT`rrfp@FBV>Qt)kSa8VN(sX!A zRcYx7$T8zU8Uho@RcZ>sc93oH#?m4Bt-cNr`y&~llY&r&jQ|SII#heu16;7Go^TrE zAW5ID#l=ClH&&JD#G73U!HN7DSwUIAY*O|^s9DZ$t+YTms{FusGgdPV@uZqkRbQLpy8|(B7 zPK=Tu;I*ebd}Aq+MP}C3NQyE*llEUqo4nGo2_n+hLkTX$Ux`Mi$oQ?PJap{lgGz-B z$9sih3z|Lf@`R7 zQUY^xpCZ*;j%;lDP&dR`W|Ep`W*xspNV_}`GtIIwNKMO5xj}$R&;T{b?891gn|XxW z_sf@lfluOBrlL);7{og96HkUiw)=|z=!yMm}+5@xM zbQ)AHBA!AcWVx6uBX}3>y7n&rMBW zH(CbcdvdMun2g(!rP?$qjNldaIKG*E-*Faautq*jK@>~YDN*m0AbpGEvtbhmMWIt= zUJfg8XOFv=6LR&WP)k?9md}s##5DmYlpi?8DJh3#UmUWmVF=gF{3FBaK2}Q?01lf| zd(`)sqFpY1bYVy1y43wVK@>O)TbM>EL8qFxU6973XX?zCy__2ILBKP2nmqDdKqK8% zn}coR9}8Yr@q6~gy`cQV4+M(fB$@PWSF+Uj%3b`iFWw5N-CV499qdT72fZ%4o|;&; zN)j1+9BC=j^<7keWhS^tN+6a}jT5~o8#Nijo{_Wxa#RZJ{3EMSAW*1aQMbFqwg$@- ziP+|broEuSPjn-82D3YJXZ8p!k`_^3{ysPth+ zUs8Dbzz?`&a21u_EYQ>xJNeHw&N7#Y(f!-3d$$dL$_L5-{agWxObYG?H8r}id0w6< z8X={uEZ>#+fz>_#^c4<>3EeF0IV78bsw78C# zrXuWZrfi%Ld!Hd@lBlxVahHPy%c0g5eDCvC@K;HXxGU znd-ai$qd2nspgAv*C=7oghAjur ztc`3b7JDJ_J~XjxDibm{_L=JCA_X&>3J+W^-2{r#+f~dh@U2jK-$``z5Jk}ADXL?u z^b8`<$+hjFoAZNMl#is=0Z%Xl~9?gkCD0YJPiLsO#Sbu!2frt^uI5G zq@PLghF*u^b6n8C+Q!0fHA4Z#_9-x-T!A~GC(S#kk&Y=Z>3N^OV`kc@gv*9)n`BOH zv~2Z_Q%=b%C$eFKoo~13<7>ZwE3T<8!9>VB=aqIvS)@x~`k5aP?EuhZ|0r0;zp6&O zJ|TivWSkgjF7(Vh@nG%|H7PaOp;YWC0^RKV;x0k?$Q^FoHJ@*gTP$NhdY7kF&izG>f=EE5($n zyiQaCt4F0b`|ER68RI;VSVnoQVm%Cna`rEnDNTTuo~e@#doNcdMeCwvdp2=rrv*N= z>#5m0mCkizz{w|(RL!DHLGWHAjQ%law_IE}OPBV-I3y{zIS)_c*bYu!;K zTVhk;yQWz2D1(4xEQOjes%YK%&ftH9`bDX$W02J?@N7INXM#f(5LdfnhPK;bfNWq*}t_TNW_lzuJ`lM3jThA|ziCn+o>ZMaiKt>R4 z<^Pr$^Sfsnc?9K1#&|aV{M!_bWkT4CUo?0ddqK(s!nq6|jH~Ip06gR2FG{w1&7+4y z>}2VJY}#*dHJ+|zN32kgaNqjbSP9w0&4XK7zEF)Vqky!`@XF>n@8AcgjH41vJ`PS& z1VctsSxafW0h!@X62B_#*X_g+i(_AB*O1P6xqk-+QL7RthcpD(dH1C29gOX0Kub%Z zZ@v9zES+sUe;5m4?~zdY6x=k2qJyPT4yYWF#A?vMdR(mt88p8wYW0Bt_-?PL9+ie3 zE3jmqw3!RMIvxLpGKY%I;zY^wy`#*$k8vW1LEfbB$MDL9e05TvQY)pb+SHsD+y4Ck zolFH&Jb5p(dH6kouZ&x$`kixHgh8tn2Qa2uQ?HR$hQq-8FTch62i$cVP8{hHglGi* zmR$k9ee#`|w+IMCObbqc>tXAGZPkT$3IIv`ELCtx`SAgJ8)BcfEMV4M%1x4@8d+g- zEINqF(5nsY<{6{Qh;*+xT1k0^bf4y>OUAvrF)S8aZBCg2w)Xqt7ZzFF7E_f{Q@qCV zAMLjWxixFon9g|}dX<;IwX0;EY5B#DAVmp7Ar>!J$G;NnWh;j(mat6;q+;@KiQ5`U zj#=_xLx8tM&|vy5OR7fflDC00iXpRbOn9vF(ha;X=-shULGvY8uI~#97)+)$&1uSf z8N2{f)sJDBk*Yj)K7UBC)W~gAvbiOINes zIoI`{%KCsQ7#7l>aE4&1@XoI$#6}oV7|U#CQ>vB+MeCUx0sxLZt=UNFq8w-kPgu}P zww%_<_ND#1RGyFqPXEo-$!ze#3k7ClwOdnf7I0JMh`q3X8{jw~iA&aEmyHuBIE)yV z>0PDk9$c$?M(=+&vIzF(7wWKe>O6+KSXToYh(^R2hX?L>+YxU2HH5~(Luxe&%U$kR zkJ9sH(C68oH&AWAX8mwGaFqJcyE-J^R8QfRJmYhneRCDaTPoXaiJ);v6~E7OX&>~v zCK$hMB8ktjn>t2URwK5SLaTn(>vZKaoQL~{yW@9qw@H-RDio{BF`nL^y2}pob<+IA zN{T)xbzwc_BJJhYad=6)sve>%`?p-&qJ{e<=^^S3F8H%;r!9Y?fbCK5N z;8Z>JTHFu{OUz?xpkvlc_GL$eA?2%-`^~TFn@(3Mv`ywu-nivUx<|f_gf6bjRKj5+ z7RBjcAy-($4UNE9)1IpZs9wN~bI;_uV2`a+BJ)rqPI3U^(p;;B=}GXx;nkvRRL)GA z(oX45`L7erT;mVy1sCvV^&0CyvIF0Z_s!ek!N}6+uTt&BH-cGvU>xO9@~3MwUN%r6Za_i58Geu!QH%%sa?Ql+k1y`;Y{e~A5#u() z=G55aiX`O+sNI7~b5GX6orL?lJ&fc9ol@s8*pDuF|I_X;e5ZSCK0SIKdbS%ngA2+W zicxWx(#i%dH3nzEzAI!q0*cTt4p_J)x^T?Q?84wJ8NM4SAxhGXz-RjQbn$j8^)b8<$RDrBWW0L^Py3F>7 zlY*?e55f5w0b*V=uzVuR>^x48D!{O#I)e7zGf6`;{wN#<8B4*PtJHuX^zjFZ?M07G z^OSv9xxp&;JJ7UHt$;3%FGnTd#wPWsY^A{gTo8&YY!d#>DAaz=6;#=gkJR%~2+BzZmjuQRsU8r847uW}}hXPVXXPp?$d_886%1T{_@z2P;Z5_=f>%b{XQ zIwW~dud-}^MhE84(INp|>Pubkb;3)on{`Y1Pl;M`G0QeEI2AT= z1CuyeTXqf|pUI}cc8^dr@s{xoAmq>D-U{?NF=5yx;y~iEo^fy)lALwksjZH5v})W> z@H%R8vB{xZamq+D%Q(30jHH(kwk;?O%2Uceyi9sYU;U%6Gb*{JqspGS@5VT1| zqQUCHdB}*)f`h_g`=RFp&*2V13+f#0o14?r(MKy0? z7eiL$Kl2wFN!b$Lhmm8Cj|D&3(Dg@`A2J3Q2ASx!#&* zl=eZN^w^@9bn|7Q@fd8xciIP`I=j_xN1@C%8ejOqOId9BzVp_~t7rZ;_UZ5UUejo5 z{A(HER14{GgC1&y0+B6u>-si49!;;CCF4LDIx$twS`%hkqNJu~>%*y5KNqN{p8AX# zY4A%=P}c3^Rg3m_17vExX@MzDuU_or1Oy^6VHCvU4W^7i&@o1(fG%N#dD{tCMiVE- z)qlGmTqQWi2y33ZdD*Tw0`qoGbLdrW##{7aBK4W?s>g+YqWvfA``K02(?SKko2;-= z4wd{B)CL%9p)Tv=b2^a2+vo0E+azrgJblswsIKNif2>RLac zI+FUE5u3dqJ9y9t!KVVcl%Rb4yiC0(dotu5fZ&x9(>WeZrl9?0(Hd!~A_UO3#4;Buu zczPFxJ>x~Kx#xrHfQ&tnp&<9gpSvYr%;f&MU#WU4hd+#@m#xUz2 z0Yr`w87FoUfAm_wQtq?d3Aer~pgUd@lm6 zTF*=WL}m?M^Ukg4TAMUVTuIG=Uaw1^0iE@vb$VJCs(AIX)c%5h1iJtm*{c)N+^8ge z6MB_kX?Qb+m}SZuO#*O3r;BJR8sa?^-Coy?M*XqJCU;o3!i+d-=RVHW_&k^-(+`mz z(Ry_W%G75(=5K~s7&)LxQ*H#%i4R&Hjz!M0g~PiN7fP-Jr~{oF0S&{3OL6VYVP zZyuak3-vn_Jw>L*aG}&r64UMh;RM}XA^UsKXkr}P1JPVRnS|>3 zv(@fzVYdS{L>Jyc2nNvkqgR3~{Ead}A^yNL%7;&qoLBP{>~I(=zMh`=Mol%@#XkW; zP$}g|BiM7M032z&Bu45Ij0cz^^!GnEL5TEicW2F?@V2itNV)LHsb<5~ zK^_U_DvkGh^+gPW!Qz?J65r#69a5F&pxPM^8;p8IZndq~)2N$xh)wd6$KzX@iF8a| z6)1{U(g$U&fX#lxW1ffI69$org_18^aC3|hih`{N7yb^4BkvT`S-@{T2Qk1(%TarP zo1I11FtI(at$_Ke{aMwvr$8DUGg~|3HUz*5y$42O(5=dxQ{FpZHd$o9KuHFPg0%xb z_}`_F6Q)*s9?J9Poarxs7MZ(Cl`$1HQ~abDSH4FndPGQgzQIULe_PWwbf$i~fN1Fj zdfAgPqd=q_7(P>fk|NQ4>kc(&wyYaV$=4%}Q@pK&)w}Pd*~O8dV`7aVrnRrdV

        NF4Bn|uZZ5H0 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%0AR2SqMP$`!K1BiQr1IbbHYb7NMtw_|a_A}h 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%0A#fYWMHpucJdT}B48b! z7W@DuMSm<F#Gj{Zsii>W#p9GLRIIt;d!g#!k<<mFky`jm+VzQEG3YM}Q8MHjThSOA zRr0zzSS^Xyq>{6(9c(s&^4+vBw|FxZ3`xA@U?VI;v+8kO?OmOXBq(Z}Yu9^VInP}m zBilAw8<)VJ3;k)=W9MEhTLnPV0blBAmiL3NAQ%YOq|Vh2w9+sy#8@g!qyqnG`}U`X zgCO{AR!Ljmy#}!fq5IPFdR`v$U(yI+EYD&R&-@Me)3C>@7@3OCh;p?r3#94+OS{Zx z(Z7Q~ToBlbJXlm{-V%oxp2Tcj<MSg~_-lJp9|IKUQ<HL2oy%{ulX77{|1Wju(BR>s zx1nn!W4B!Gp}g{y#4uWPNn4;Rys7=#HU8PnvQXi}vT2BL^EQ5#iw&9>vNAdpbX|9A zU54`!w|r!Eg$oq?OP0ePmq>MjdH4~~XIYfjLUt`#NaTSs`rMn&kF>f-JV04@c>69= zCcm&i+NP`jA`M@f8^vB^g$C;%Q|6_aqM23nkxs98B>iZ3R)X9{QKxoeX|=zi&dce^ zc1OJ7;1XuZfqt_HZGH4Tr2EF)B!DDLtHgB4naAF?!@;xkM8mWCg%3DDN1rM)$LbZB zU8xAIVY>61Qzj)(vp9n|28s@Q(*~eZAm6Ak!RTW+?-H=Ok)&e7?7B~79^8sL=eVa+ z5U<7Wega+v@j<sbVkv`Db@DkyMN7KWq>1JHWjUrd90}$AUY<v-iA}WR1AY#`2i+AM z#8G7HBz%pqbq#=eZe|degnsoLa~rtJv>U9wMhWk~CO@WA)o#8a-M^P6q^KkPtT{#E zy&UxO>GUJ3p4W*I@!FDmhKd~C*P<ah!4I97KrSD&V|5U;c6c{C@W<NEyLCxR;(T+D zcG4elKg6ft_ixt2+8;8_HX!{Rs&@$VOR~?MUo<P|h-vcGVW4N5gTR6vD8JM^n*MRJ zy_F~u2I25Qx;eE3@jz-TJ$x*+%ULQ(fJ%`L)<$0&nbvx))y!<Wn+Es2!0OYEEOVtr zGeti^RRXunLV^?EE~q;y=|JsTTcnF9%BS}}Ned=bQf6npARXeuncfcbg%R@lka<Vf z4wKCjZt`q993J~!FT7On)oSZU3NH0-F)HScE;myC6n%$9Haq>A+V@%=(T;3z+D5&9 z=h(1xZ0ZuCPJFsQrI;<gLZzdWQB3etS7W#h51xAmKnE8)iLv$VFd$8-SJ2W0qjUg& zOO3SYg#T=+cmMrUrR>Q}VUoh4&X9i-_`=igUzCP>O%B`hNZ(av0=fp7L!3ATb5Z<4 zf@I=nT0<+LYUFaeTBjcl7^VBm1n$4HzxXJ-$VF8`IiR<C=$INOVjBKSm+uhvn8{0O zPH3&9%6NRRrQ}?Y_(ToWi(|(p<uns%^5$6kfl)tp(s({AeKqWf0FlFimSY#%@CePl zX=P^ydh2IBTh8RJBMdEC5)TZ^$1~KFtOTp)k|8a0a?)a+NpcMX2S{rSuPTS`_`VeP zP~aj#kOHUj+Vym9)aH*=!>81|iOZ7zhWwlfM<+v7SR9*LdXt@rn;3E$iZ$6aDvUi_ zDoVUc=xffJkC}uX+_vi1h-vf|!l#(@llpwk0(9+o3e!T8ta^c^CFGe?vV(gON%Z~o z{cz-Q+T~EXQct9QzNBQD^DEcxo!m5eue3j{dn`F@=$mQq)wcp7dTtWg4#%?)tk3s) z*k};nVPOiKGOgq;znB0;`z&Se5b7~RCQ#!x0~<1GAe*Px1N~Gv`i^UtGtSWF1lpqG z+gxG<K=3YJ10nHj@U}Ymoj{>V5q^zHb=xE5DB;Vz(kbW2arMDdnf5gttpR^+-imEz zh|_k9Z=gsvxpoIOQq2=n^~*D#L+cR1Zk#Cvetng#yjLI!k?R-i!hpDW<Th9Xa5%<I z*j+*SON3{^C%&mLYw5co*qGoCwX&<l#Og|N*9fe3PoH9pTqUCB4LR8wrHWRovsM-C z%j*bS;z*ICXI<Y|LHf5%!_s&8Sj57Mr$Kg{T7aqDZSOs|kTa<jMx?8fK%4E*5J>dV zu!!nm0`jl?(-sz|e}0N%IUhl=CCt=ZbH%m7!8hoAzuWvwpaZ|n`fXqQS+>Ig`w1h( z&!42|U!wN|%9m6GdUM3I!OuioL^1oI=`tflU;~9=X#{sD*@Zk`J*og>8k%W-0jyov z9Aq-dG(<|e@n43m_JuZE205GbJV>f|#3g4%7RzxBuzA38##S6qugZSO<E6N{k50<T zTjKuhTR8QDS*NTO3U?F-!B3@!!36hhmb0u^a8F|;Ck*xzdhY0?%~t+qFLPQ1TZdGO zVk(uwWd=%F45Z+hzo0XAB;s<NxTotYW0h7_ZS3O6DWKI;ybx({^R;F$Jnje9u(MP1 zxj(S}z7O&W{cR}0FKl1Z2g?t}HqzJDVyb_f!Q&4+m}~?$OQ`qu7wPIluAuSI@HlHt z^bK+hE%Ayb0Q`k^HOm&G5b#~m;|o^?5Fo0qCfy;&xE;(PmXqC4H|hu1Z+`E#b_b91 zYPPWng9K*0g#KFLL8Gqam|S2V>^WB?9c{<i4+4*YGp0Y7f=IpWEvlieepj-H6dyOs zwwLE$LP?9M8%|rKYGJU^{joy;#^2$is@Sa9-2oV5IR&@HFVR_Apg(^-f@N*y1I!g+ zZJyoPfCI(ua19)+#=-8|a+AR=caBRhg5uGKz$rhzWdA%zz5DsS&r^+Xo1bOj;%^qf zpScc)FK{?G^l~d8s7vcqP~U}CeGc;9I$n;HuJcido>tu$7P&O$z@X@lfl6jp-@y<4 zC@3xrEl)BSezywx%T~fv<gJvg^;LWfK*06RZnu!+>44LSTXI)3d=oEd2!=jcnx~bc zY*yoI^=Dpb!maF~HDPi(2kH-%z5%wyQHbyyyo>QP_NK+qVOxC{$LGCN?$h;BY=MBU zaY-SzpHjeMLN~b*z4>|`KlWWCpt7Up9B*{5`t~nhv*?rBRId#GNSc?_Q!=B~)f@rj zM%O`JIlGOU{GC=EY;{*Y@k3E-*?U<#BpiGa=-x4h7l_};M<}wCqF3L(pEMLVE#W39 zh!px^C-mJzsyfUAm#JhMEQ5OAv?FQj@NtCEHPj>jS|-FIzpftQ(`{IprQM=_5}BK) z4=sxZ&O&AP8o-)ZwJcEG6CMr^Y<P5+8Zl8lm#FdvksISvDRdjTSGaiNYWjV(69*t_ zpw}-3=d)<k6`o-wXbijFX#Y)3J%>hcKj~xp3#I(>jewWsl`(_2aQ`t8svSdYAp<!x z>)%?97G;wM4X9a}10W{aCP+cRT$SgF5zkhwU?)l=x?q#*2}&5-8OP!~x81VgmOAC> z;^4N*ZftBpm7{9Wu*nrR@Q|YDTw`#c(6M15H7+HAg7FiBK^rBU*akFjHFsZBrLd^~ zAY=bKiZ&zX|0`oz|4G{aLB`@eV!&pfpiw4hF++HI3y8@&14Nja(XrOnL8yLxC+KJn zRIO1xH<lQhQz!`9tY?kMqc^bBx&d|jsEDn!JSn<83y6KVq0Bq$q8jt7e5^B1TeArC z5@Zq6J<$Emt9<A90R$Y0!<@f%FvP0smUO2#y%l2Wr1=G?i=Tf=H1rZ3eSEy9{S8=0 z+3&aRy=#Sbp)NN&>GPRuo#?O&F>8Px%`>YEv&P1JMcZAV;ziXOF*W-dsuFuhM)KDF zHaVPcFV2`#{=L#JOQ~!l1yMX8Dk-b8XdaM=8(<q|0gvsADPbY-=ZPKVgPK0Qrqo@a zf&;l<Q_uU7d;kvbM2Y1L`@9Di&eMSsz##Sf=IzPRrSqn5oYhD1(~vBhC45%>)CQBQ zLH!y9%URA|d3EgQQ}J^5POE>Y<o~w529W4yjlmXeI+=VpQu}<Nq{0_Ky5te>xSDH) zS$&y}qI-1{hP_yQ6wL`J-1cFv;&vbf*M(GfcHt4iYs{`?X6i^7s++>(N!2G?ok{$7 z>S~!A29Mj~M$}mtJ#s=KL?N7L;WadZAiWJ$P@a5BV}j$1Vc+YyssoQb7d*d=elW<@ zUGq&5{Qb@>+XiA4@srfPGq?qy5)z{X-){z%pjd#@jb2p>F6))Ln9Xp6u$t3N`MJU# z8y(_&eI^Rqcang(TQf%JUW>;0v<2;xi2Pk~hE5m(QL%3tQ0c4pPPTbm-;6zKf+ocb z%NtHliSXGq{oqrH*awMw<Ih5}BivA1BQ+n;v2}yynt25=-(*Z(L8oiUOkjqyH)Uw{ z*}y5fR$h33IQ4GPjN2@-@5aGEX-)jGiqxoHiZjF!De?dyGCAO7)*q&mwJY~RutXN3 zQE;at5Wg@Fic<=>sbaB6@g1lGdR<vkVAW>Z_I=hOFy^Y(ne0oL8I)I$D_k*x4>+fw zL2dv*wzpCH&QD?;muQDis3}<7i2a2D-PNlF8cP2oTELK;7;Ar-umRsDH;pw_k^Dep z#$1Ds{>A)`UEj49^Uhpzsj)<CikMFdboGGW&5b$+8bMkC%aRv;|0m}*>1?qrnAF1) z*3QG~^vx8c?47<Ls2y&qzQza_=hv4RxXS*{;U0$LTMRMU(|2sc6fW8|3^Dh74&#Nl z$6uVii1kaw=dI?~B0_1n!1mZA$$22_rBHyf9$C5nZ41s%PTICwp?WAq+)91VpVu~k z5`<frXO|VW0@yIZ;r(3j`-ESV+hCUPWvhu@mN|ADtiIvoKyaa*g%KQP-ydWBb^o<_ zEH(46mHFD)nqv8dNMTI9qQ~0*4#8G^sWuVyBcv^9j1@M;Jrc%H8m2R^Rtpd;XsUwV zrz3$I+KhB?_Ry|ODQ$doh(S~I?>P$zjRCQ1)?PA|-GI#R!=WrMZ19MeW;lPf14<;+ zlzA!Ylqbt3cy9W!;cY9KSSrnq+rMo}cKcegb9j|Ay2T=5;fmR^3zlqqPKGkT-Mob| z2OM|yp)ibZ-B(7#7D`41eLw9RJ+%hYSS&X)$KeKJDPz7WiXW#e<(xMe%sZb)AXcGD z%x`WavsA7aYeLs@@AZos9Q-%%SAv&>^J#TB-R!VUWIcVp%RJWBi!?{7D6*F;pVqr% zGR-bqmQFT;;<D$PXq-@^nFYXTN0p_(JI?2a0@Ui4Zatfa=-YV1ZP^;}CIdae6O)!o z^)3=~jOG|0o<|8u58I?j>zD(ams}J;<wwA8K~E7W^6(SuOQEE#Q3ipG$ogTACUb&Z zi@W$`weBKbh0D=+wPT|?!PwY-D~Wwutzrh}R<X_i!#0?fato^iD;P3n!qaS-f80lq zk_EUcQQXf%smf@oG+qHs^ol!+0<5ujsB9<^XX2Cxo@9%s^k=}F)|t4euxnc5es>_^ zJ<a%6AP^ke1l8vRk*Y8Yh`;1L+13q4nski>Ad}Rq<tHr0D_L8;q0Q)6%-sK$vGu$N z!+pQU$C^!Br}riOlcE+Wu+Jh}6l_d!GJj-^m?QWs+R|%DbB63@+Z<L~TF0TR5}u=0 z9C%h<e>nnnvcEcenE<XoWGAw*W5-Iva6NL9wbAg!c#Ju1&Zs;z#z!AP*JKe2J-cdc zU*OXux}`<)8Ikl4Z_{JW>K&ADkpRy7yg)XoKd~hN*-oHA?S`ki$k6YDhap+HnVeYa zUQAdU(&S{Rl`P%rv|~Kb)Db$d7B&@rP05d4Mt~si=8B&7x(|zcWLn9|HM;av>fn_| zaVq<3W|;C5bR&~^igbcM7l|Q;J#Ve1(n~o9BP67-lKr%TItsa=w$M}ldUplf>;fXQ z<wS3aT$O*&?U9A0*Hl}!uOv49p4-WOEBjOI$ZKr0p>u46do1cG(^Na%SJzxp6042N zZn)DwFw>~3A@c=y*EO~Sohhx_E6b~Go|6s>c!wW>YXUFch3Cr9O6Ln)+d*2_EZU_s zaJfQ&qDl5kU=Tu|s%&GxbZnm1J-8uHAu6lfm)PV4Nr2~%yKJr-A|OY<NQm@(&tfh% zas#_LV0~Oeh9SQ;s*Ui38MozSk+kR_tn%k#_YY!+zk$2xH~lZh-mzB{K-scgwr$(C zZ5w;pwr$(CZQHhO>}B)qyySM$AI|ObCn_^FtH$V;Zr5%jlBVLH*NWmlIp{DjDXaPV zzV{=p&G*nqcF@tFfWa0PzR4U~1D|T5-mAN7s;1?|2gbRLv6*jf4Doh<zNPF_t&i)J zC%QPGO>12p#YSR7XetDS$HF831Zshn!Mc#NXH!?T){?w<zFZ{~EGsgv0DKGzp)#-6 z-$TQWz2m8*n4UJ>KcGKRxFeMYch^c`VnqBx<w^sh)O79n!v-b_@lfzid0&>A&{ubZ zG{pZXqF2&rnvxK4U2}4ju2RSMR}pgwtRO5UfU>yzysprggmg$an#ZG))`7Up*yFhu zhZb=2Nsgs|pi>f)jI>2(1?hc8M_a}TB(0IC#N#Yst5}rr7<n8?rB?ux34ir$9Pa2B zEBu@zPg!|3c8!%JIA?OBaQ99BG=Dzm(rZQ@)r}c!VwO|$;e&QO>EOEgFk=t78%byA z=+Py~hS-Le#%ZdeN&(q^a{N12q2P{1th}6y994h*@;N)%S}d!Nld7w5tOUbIVftuk zv+@x3>X5KJnhz8_W#v)b2sXmGvN0$u8!4*QDBJ|PdM?E&0_GbjZXV%wG|Po&J6c;f z-y)^0Vo>!pi4Vl^AHF$<r>ut%JFevWJTkLE8kPVhzr6QF+K{WMwwv&SfJLaZ<+-CR za^P6Qb!!8}V~e{YKS4<fyXP2aCYLTvsOC=@U{Z+@?8N!z<607+)5a@%kyc&N+WF`Q zxeTk}#Z-W1Y1S$sAq#?mIUYRorQpF%AcJuQ=;E{Wl)9lWf0%-$&GH@H(SL}M{|yD3 zk%9gH#7IV_fBvff#aY!cA9^^rt>g!oCoP6V_X*EzDplg}J^=p#uE)8t8<%)=!R=Ws zo4<K`q4pH(3T(xITj#PDmppw7Ad!GX9LPjFrcjRenzoSo%rWlogYE9IODa!A%s!gK zcw_CF1qvj4kWy7m1lX^52^$&_uNH4(N<<xhy-ze7{o?Ik1l9WZPZ{C`%mB;9dZ-<3 zD2gAnps*<b=qnabT0{&bv)|Z^{&lts>_e0r1x;)@`}}xW8Hi@m$e;UKz^-dDA+qOu z;hDtaq@Up}0O{8s2GwHvgz-g+IQ4KaM#Cc`2+9@N3F=-ObHM@Qum3=p2%3vl*|(x( z4{fS#wXKkA-zd+0P0VFs@{G*KVU|cqob2Ve0hIsoklL_pI!e?8B}mf*AJ=Tz!Ioy> zh|}={2vTKe?>8dQVW-}1kQ5dx(kFcd2j!wmqi`|yqp|%+_46eNT?xw9#Z6bV0ddL1 zY+N4AmekhV&!(w|n0QN9ovrHIof0eA10tU}YVSyggbF0w(H${^Y1l$6flu`+^I*ek zW&deOmwd|Q*35Xihq3XIFTMl4F8#;)%1>Y44l_klGBU}h-;08fJIHhf#;;H4sSrq> z!MZ(}U~%=pg4;8Th+lM%D%sN|q90L~69fL61~ey#v#t&C7ePed)H_D$3LuYlBBeP4 zrTZB)+2NZ4qv@IQ$&N1~iRS0b5a*zQf8!zt-S|T)nrmArjbY|hAj-v-Noo5}7W`rt z(Z{O*@yKPt+5Qe{M+oKde0aYimE+t&NxECvNLK`RdSHV7m~7fmF|{({>4n~7`&_i; zUZhqJ#!_H1B&E<@;32fzGdI?_gg9<<hSRNBd7vAuNre3>+7NN*UzZ&>3Zk#J@CRJ< zCes3|<OMx%5VDbcWSmOdN#ePy>_dHm$6=R~RRr3>MSs@S0JHQ8#|~U7ZqBbf?&!Z~ zt#qB?BBs3BwkB!miNrUrT3iY`vtGRsq~o2cu|NAZz)_>MA=sofoGhI8QjK5a$^n?; zy#D*9_`fFaRo}?7%||A=RR$%mw6|q=n7?eFU|!$IvXiK3TpPL|`a)s&ilYboT&EL@ zNyL%?>dqJYJ!uV0-Lnv?<rR*OHIti%C||u0ll*C>&HJ|LpZ-+RB1|Y~D=|Ynwupt> zZe2XEF(f$gebMTf?jBzFVD1%X4;jTwF`*#K%jMjreHwZ?NYEvO3=E&P6}1);(V>67 zI}S0I<zcW;XN~_hE^{Y}Zz9F~STPsK4yk-1Sg!iR=uCP-cp0y`w7x#ae!i;qCntFO zNBt86EKq{c-msw9rR0EBw?Lf`QH%hQ7m;_!6g`A(uK_=kbv*Gia`j}eRxY_Qj%M4L zIJecM2OY!sbxr8+xf~pyfumBdIxEnt;W9eEzcTiz4g|Fx+U1iuw)U@S`bq2<00{GS z@amH5hc~+p{cZC8Eqv4$qih75BBJgUxw)(CZVs13by2=r%UKgk$|=4sY9nWy>G$!t z+(anuububmWYLA+>Qq0BJUbfBub3h+$t2;X^~Yrnu{HKar)j4N;yrzP2llJl(wfR; zryvhCz`RQ@=?)kL(`LVF)zki~989R|a^G?+cR0_hOY0=w5-?&ZKBS9uc;YYVaF0yi zf^%2(sP@xb`X@gI+lPe)x)diP@??sEx)El^!z*i?$8Le<zG;-8SytpL*-EhGKaAP` zhBEtq;}Dtt*ArG=z?5SlC74QGj@hC<EtQ%1D4O=J0|oRR>r}GF*PM$lyK7sUZ-cLR zZ}^KIUWtQE_tpG<uo_+cRs~?GWQlGqSdqd2(#wJnKKfQHYAQ{YlpiZO(eRc(;Z(h3 zxJu8|k`_3z*#~eLHpGpm%}=1%$%g50b*B&_TnD<r=r%?^!yZnKC|a4)v@!aOG8#K@ zFI5WPsMLB-{5QNc7>6}=tZ1R$lr^OXGty4OKQm&1LEcXaxMFcr{3KV$&=AH(qLs#J z<JsVE`OnJ+ukO$HUf<9i1Q-t&3*O+NY1a36@cACTsOa~S!4l=RdXcYYJuVY4VzBU~ zRuSxW!l?|MAjE~X{#NU+U~xvNYz;D*2nsS5(0;Gek%TJ%q(n4@)B;tPoCEI$Ek!qU zEz#?=p@mxbGok=`Hn&~`ys%l!Fge;fCDc$UTqJ#13tzXkJG^s)Jj5_7A3-E``Xh*O zK|jil1(qaz{j`tvQFr#O?DU}e#hRC2qGtnr(UX+Wni#AdUO){!@auNMPPk}9<`-xi zypB1quY4zr2T_qY&ROuPd1&{%Q{rBoCUHOJ0FA)khurky<+v`h$67Bkx`{;xWML~N zS^%nUY8mW7Em*985GXUU!Ml|>z*EPJrRWVXB3Vm}t!b{>$%9p^QB$?xhr|>Nd(m4H zh$l-Sc1_^YGqleXolHT$)0#5Tta3iI<~ZSbC0#nN$o(^;l|ET|!VcU7&BdG+BnVY> z!C>DViGe#NY*dYFz%A9n8|V9=Q?0BI&|3QMN#fvQ8%X{vw;=Z!o5;{`m@UZ%V<~9u zzMG5b!jlg5{+*58fSPG=oe;rgY!>U`yMhwg#MRHvNIMP|*P>dJ_K03ciu9X;;IlQg zP#h6ag?Blr8%lR(ux<lKZqWvM`#s1*`%69(&QzSGEx4{`epZx1hj?89h@r1iuSs6g zA7y0Ci5UAVd|R#|_~_cc4Y>eGw5MO0fZT^&q8(gnbSvb_i`!)DfIYt&R4;oMP^^U` z3So5D9CIh~{?&AFT*-f|{DV=DLS>b>sDK$LK@(NSmuDWGj|w?$DuU#_3+&e8hG!*$ z!eH$5LL^?8ks$u)o{mxi-T$Igh%<cb<@J+$#_v%;kO+cg7=o=+vd@RVu}1u$6<1-c z4%*hzS_6Q#;S;a=UOp>47!kkDS>4DYw#^27Er$hhL?CQKEw<2@kS%~fhd||UiH@X= zezM43dLD>5S3_>FY<qM(i$r|djeFBw-@I_}F3BAR?H1Bs(g)cx;O29s%IQbt+5?Gi z7;CaoBNHB9mrI|Zd)8|PZi{y6#fUSY-5y9(UX6_#MED<xq}Qdl7Xu8*z_UR+4>$(3 zVU9Op63N88qaBQc39PDqA|GF(Q@G`*-<#0ULBRODgpwMfea>m$fiy>ddZipnp;6O8 zm9WZfauh(4Oq6j=)jkS-y?9#H$@I({V6hthYiQz^oio!R<Ah~lZ^pQ8BjAmae|<-Q z(?UTNsXj>n6VLrdJ!u3mWG(G#vJq#_qS_?-n#kw>5=RPW0QYAPPiq$qJQcim1IiJS zbm-dq>D@|QyoX`gz4omoy)L{*S^Pw^im{8TYi9GqK}x2VfydT?sCA)Jh!+*^K$I21 zW|jX8`q$s(eF^`xUj>+eHRxb|7ak7@J~nH_Ieq2Vv-2lHHvKS1Lx}b<1Bld%&8;8T zeGL)Ik8JPvhhev27i!LTXVNCB$OJB<2O)h;MEVZ}y_Iz^BWA?Z3$FJ!Qcr^bi=EKR znbv{$<e9Eu=B#A!8SjXj1<PoTJ_ry+>C@;-RMuAcTbfo2x#OtApjnNz^ys?Ou3inB zOM->$qU^y^Q5T>v-6eAIFm%6Cn*kCaIpXQXszU`<f$4+IfhgRx?&pt+^HGc#9mA6I z*SH)vK<lX)NV;2dUXKmA#jc@6PJ^}L&S)uWJx61V{M34h(>6z%yb-$XS6zxqN)08k z3ROcP(nVXyFRBS<hCHU?yn;;Yy*HaOXYG+yIz(L0n;Qyxvs`&SvCg#_L74I}3!czs zW|MBZDc@Z8h-_6bT6yk;;cF1;Q|mPBkP(ri@E#pL^U2~3nbrp_+Es8}`PxhmeY(!X z_;Fmk6%fekBq6Vp*)y0)nvG@wzc83;&SrA8)m8DLW-RfI$Br~1*<4x?98GpVqCQ+m zMm_MdC)8r7IiOR=E6bL>Lcy*Vxn=WH6PlIWGU8@*zmYnDFbEXAkS;?Q5f~h-KuEqX zsGnOoDWZ%}BF>1NRvHv-Gr|%pkU)S`Kz<eiDxOL03B}^vU)HL%{Kx<>MU{_!B-eV$ z<bpSXGd<E+-9y>Q|HKxP5&4|l2AX>+j@$QaD5Z-%t|B9@DM>&_1gC<*G6y3(zhT)D z64^9f8w#k>`l-3vu)A4s>z}9~Rd9R#K}i;)$#wH~Uzeca3~CRJH&eqQ#Y&HlNwPvK zL~<^Z6H2^Y_NC(^(gsju%_6OunOJ%NqJ$!!RA%aG6>)hA_qs#C%rX;~G&NXV<w*Ko zN<BE;<MjM~Sz5+st`?b{MuOKg<(M<_Dh&i#2vcp26aY@9iu=)uuJ5x?8Y0ZHgeVMu zoDsU~_bK7xA4qj`xj#Kck^#OX*EOZ7<ZI3!QLJTV_>Pza06<lDJ8*T##_s5o&Le=V zb6))v#p|LJTAr6N4sRm5c_j)ab9HV#Wu`2B7lJ~dWdj;t@1P9I=`75P(nBls&rizr zho|<dc<FGv6>-(mkg+}h5v<nFQOo8Q_s_Q4sB%)lc|K1t$v7e@Ff@}2EGb75z<MkJ z2I|v0t^vd!*e9v;$?}5iuljWluh3d%O#qu87M%$me~*k<R*?ZaC;zsH44<dB4ongR zA98XDZO{Qes*CPbs#wi$3}nDS;k(D$vRM2aCMFIq^3OFfih*lXpES0e-DWfjtK1w8 zE2g(zUR))CCeGCNeE<Oa5+)J42`jlonQu*I-ojSI*A=y@s6a(#<W3nu%&Qck()An4 z848aeY0hA)yX;*A4>22;W6uy@U3vM*lKE?(7PXgP+${N$3GNZ`^9KmTi*Hub2IVU8 zvz!r~z=rI+DpLfVGB))-dkWi)m%+2=m-#tDz0aYFAuQqZu3two0OiCUX%z^0%06uM zmh(h7J*O~G=3NfdIGa2FR)O<&LK<5uVA%@8E5w)L4Uv%AsT#f#&Cu6yD5HdYn&CBg zr^cvDxUD_cIR&xyDkH$343>b&zbo}i<LV6yh0iZ>fHX#zJYjJg`L9b;Q#6%@kU2@* zeK<$sd?tzjA{c#;opfI~uZ#Pjv%DdA$V^#G-$eR3_0=Bus;FV2{bD^@R9*D^t0ey= zh+fh6)HJ+E82yZhgQQFF(=f|&lV#EgB&srTlCZVn=c_s<#capME#dti&I7S{4@Z=~ z!kD;0O8Ua5s(3tU|BUnWmTL$P0m>X@-isV4LUx+j&4O@^{}5CEOKSK30X{IXas02P zQU&~pHVI@YwMejpO`Fudu~*f(KyX<^VGwlHbfITapPu21x1H0bl@aWt8D#M`zTJc+ zAeRHK=~UcY|GiRKoe`7;q5je>j1H=@k&a#ms#<<oW#3;lm6&<`z3mzJ$oQ`o@W6<G zcmuttzmfOQyv;k9Kdo~P*_lRC?{m5|NKl?5RPwp|=DMJN*KIzxD`^#E7P^oALhbF) z)qumHwl5)KIaJ9u0$=*f%S_=GvDdKyAe7w;iz2J0&97x!VgF#zDp)!oR<O1vT;BDd za05!EtwV5sj7(rwRdB(%wm7M~OZ;$^>tU%2MJhAe{RxW1R1ih}3&OgvK<Fw$0$<Lc z<iF-e>ABJe)<|zT(y!xyrL+VF?;f2j&*MSu;g5aimbzKaY~r9-b$N;m2tLCP@K%<Y zJw!BNZuk-PkUxZxD=SnS<mF_Bctc^)!1~_fkXo8B6~|tX3YoEzViEzfw57NgW++8L zxq~Kx?V$?+NmzfRC$jywsF6msYQ*>;?xdXjWpO#Is?-2Zdz^dv;s)JAo9@Z`b#|m! z@bHP$bkQrZ5yVLQ-qhdU3pRc@w+Ypim72K5Pq19tY!h5e&k+-3C-2#9((!D$>*+Hj zVd@c>_+!}?Z%J&jUnlIh_k-C`ql&x6o4c8p6Hwxxz%b{PVr<Dbezl|51x))7!$%x% zwfrKd*6v1#^Rg*LfCgDLd7M&u5)5%q?ymv=d*BkyXcmib9oUIV30?zaCVyQQ;-`Ig z`qZ<eHg?H}M;R(@D=^rm8L<dsMrGB8a|z>RXxVw(i!t{}LsWaP1q)<LNyjP}I%^Y0 zE0+7!UfjyxlH8<dzMBEoz;n|3SVx%@3+*riWz#6UwV<0521Q5k%jAcz=aEUkfYYa( zaF#tt6>8jXly<0nzt7!;hQzZPU7h~WJZd%BLD8Ik$=<Xeb3ZT7&WGvcTi4z<8MZak z1b0SEW&J+wWBgR3LSpmd1HHpiNsqomz@NQ%5R=bVzm)kRqALU@(Mp-77X)QI<!#{3 zU`0N>SaY7TIWgIxV>_bU23{m1v0`5Xop<O+6)dWlDFQ|(PH8e*PuCY%^M^5n7$DG2 zGD5Uqi8r0p_>e>|AVk;egGeUuC05_Ej4z%y4`9xGJed=fjjFp`TKggDS-%eu;WGZ6 zbB8Rx>k_J)_-%^{wu64q&37TbU)Jdlk?jV7*mDilpPt>KGe&ZrByH*1(q0DEl_eZ5 z7*Xbh@_oh+7)dn{=}VEwIi3%=Pv0<u2Ip$mG<)%)^9}Jt0y`ZJV^cbmW|-G529<BD zV|fq+b?lKsJ|2UAnl>zD-h%|dMOB1UxXM1kCo>iM{zZ2V3z>zF&CK_%^060sCn%t+ z&r=M~OAwbWSjwlcA`9W(pU;?Mp_3)%+Kzv;V=&I>;9U$-;?kAWzKPM43CV#CYeV^h zVdDbpbT-gjX$9gFO}!nMsp|zwJ@L}^Fmm@B=j$j4cCdqHrAgW+@nf*#u}rXV*Of{T zTh;tniJ!wBNt6!IO^5J5uvBh`b-aL(!0)@^j}mQEtEFg?mBM(#8&KB57fmhv&mEwz z0P54~sj&Qd*pV&tTeaiw#9&#pb;pX^_UfS3TThx*3l4Q3zanUxK$M0bu?vtwgsH0# zz`u?JFO%Evkyq$QK5ab^iX$3l$qcr!uGoo;{a$GcQvDZu4!i4aB_$&*8Uy3ZL9dVZ zCi4fRkqSwOqqMtEw^$@7G?ywE$j~MfrjS78ae4tmRc*AKSoMF%rs`?C(trg-Tc2Nc z0)!rkVF~RcGCl!V1arLAjLy7G>Y(WR$|}z2MeeX%Ip?t)DkQxn{nnY1#+(ygbPcd2 zWMa2qwvBFHZ`t!lXW)f^UpaN!M2X_Z;esYBlzdI?*XN?8dyal~;M*ohs>NP*IJ;9V zLUow{9_kY_W#91mE{tUmp75bnaU=83BO{)8eyGEsY^l4~G6=vU%!UaUBRxsww9j60 zSpwu!v~usI?+ph0^z>+_tcUbnKgu!BkVPSt48a}InZE-T5)n+SrYBDhMzpm+8cC%e z))dpZZRCjPeAQo890dr1PLs#l4z0aPT|k8II@RaW7Jy2HWjyMhM$r=v&_`8c7Rh>g z5%R+v!l%h6!1w82$AtQh^?ychAtRJle66F3Hz#oP`Cte$@ouWQh%`-4E>&4iM!p#q zVnr`2SwXQF{rU~^ur6y0RXD)(L&C(0*e*i+R*j5R7DKXU6`k_qqcs+_U!V{=_8%%j z03h#!QTm)mGd7-*M<+FCeCfZt<&qog4BiLzvqVl>CrIdYzS=Fmztb<BU3V_UiYE_v z8rrT^L7Hcs0deVlA*|qj$+x?P*EPp86L856IY>0k0-&N;>bNugHGf$W{0EIBQFX1? zx3`>n!-iXO<M#w$w~KIfE`sv)S17ihUytTQ>gQjsL<;)XcXYc8CKe-P^kU<%5afQ7 zy@FZ+4&sjDU~H$m!hhnD?wH-h8S$Cyl$j_F<od;-v*7t4hXAI_O!|h&{SWRU^am!l zDQkbdr42HpFS^I%LzoHi&;{~>q3KT*%r-W>4|X@&5GKtAlrRF=2ap?oX0alTae~m> zZ_}s)_J|Gj^(@gPb|NMdl`uAK2RDAyGFK3?7+cR_cTk)Gc4cn#a_ufzEL0AVMODrF zL8YeTkJHhIZ*Vi0vO7PUpy(jN*JR}=?iGHk2EQr=*sW`Mv~$r|-n}C*J5NeUFM2QN z5*&qLIWGxoU_bYecJ^?mtjjmY#@f?Nf9iK)=}!EHwGBh)%H~JvtNc_{NVp3+t?$+s zJvp51(X*9oB`kt2cqVS$-y+k--)44wXq6lm1fh9kwLTLo1FHmuk?5Jsz>qB+hqK!f zB%(hfq}YvqW+EgKAl#_`Rz0aG8Ozqq)6Hw~t-elawby+Z&4WgGkFM#RzBXD&E;F5! zo}hp97v3kweRI>Mf00-IOb_eyrUf2`LV0tOV>n6=dEj6=6i7RJ4^Ww$%P`KE=l)`! zQ!!`0`qWV$!j^WFhA9{mlz`&UXosUN;U_?(q@V-dbdgCy{BipL=2l27jzZ5DhGyZt z%s(bozWFp{Xx%&rU8N_H8)0(v<#>uuFXOF-4Ds(;Fk&@FB~XLIlKqUIT@Om@6`&aS z8`pd=yD#Y4nfsbe*NklCguJA{8!hWaXxSpZ1($uI_9NUgfbv(6Q;q!{y6oUW)0pjY zSlX1JbiPcqeIhE-sv+KH{^u{YF=SVlE!yp`_qr{`iyCVR5x6CmyX)M7B(9ZDumx2| zk1geO0w6w=vzl@c6RF}DULeE9@$<13Or^`=F`7odoYa?6H$J3GP$5N?0VM1ArrhBu zcKJRLx14s@mjG+ZdtQrko5IiqB?Z&#*bS$^H#f}KN|N}{@{wBZvXT;OqKF}ub$k8_ zpTI)JX*o3sUiv^@{0-#v`>zgzRdKvsK#V(C<gTKdq|swQsx(<9mqnvii=h((O(FqM z@Dfzn-vDHftfh5NG3)Q%vyl<0aN<ZuL@?%ufudP@sJ_!9(ha}=5Oe<<%J;udD5n3p zo%%;>{9j8iv~4I~*4Sgco+1jIS(Msh{e}7=avV@w6$*=H;?=V^@rO&>Gl@I?3{Ss| zIg#er1I|rU!=^FZ<-)r4so@l;8yHm{nsGCgPW0wLh^$XYNJ4brhzw=)ovlk$VCZX; zX^w4_IR}~NLxF9oQDsUp3}#IWZacL<cXu<lM`Lb!9C&#mWrX}q-DKhk8k^pt<aKJx z&B1@|{FI|t{FLP9M;4@F2!qX9aPV39c_Ee+;w1|*I|tB}OTrh!C8PajRBd5zuK4m< ziveq9_n{Wk{K0w%Fr?vG+!s<}Gbn%<8?n}r*@ZG<Ysxj+M5O?Bkn^y)hK@Th&o<IW z^#s!!e}OACEU;D-UE0^d@>qkf^SY2YqEmRJ@x)zf@XSTVDi~dKtH4|)Q%RFnFJmT_ z1QHss1xf2l;l(~)GsHOCtY%V@I6ET;eETf_0cW)8ll*(Yu#rl1EoKPH222iuyCSfw z$ZPH_m^~;v#FMJykJzAI-#Rb$#pubu9jRKnrPsYA)+R?IC&bhCXyHK41?}5X>Zj>Z zW0*Vi^?kQUC+}7*J2>%acximx)!c33n7-c8S|<kZ^OSOUPKS|N8NMbS*s~6enyb2h zb;+8#`wz!z<@eC&{eepZG~SBs!^e0-X6##!npSRh52Q{u9X@v1UjeB$heF(RNhMKU zV3=_BYscW2hFgL4cgG%<Fy=j-BNI5%v3ChIttNv-#U`D=#!uzI`*tVo(V6XcoP*gE z824tm2i!Ui6-0t>&sY#ZfL1{7*+u!sXZ6R}e_ExTl$dda*{V#KVw$TjWU0cTWwhvu zG3Tm~*LB2@qX-B@I=MJQ5g)BQ)vk3$Ny8&#GU97k1hj5rK5NhVZFvbu1hl$T>M3z> zpKAoGrrtCMY5k3A7^nEovKQYZ))Sp>Rf=@d%(nlDh*I*&*4JwUlrqUFq@kDun_;@P zpzRv9E68f59Ek*3;uF%sEdVdk&`T)65(A80!xAxs6A&OPP{9;lv@u^&pt<(BIo|-@ zG+Gtyfs^Td9rKwJ&xQzK<}t!>X%)tn-Wx_*jseLY23oy1h@I-GXyie~xCN*7rDRH8 zr~MpwYCsv>sE1gaLvopp{<)ox8}g(ntq$uG=ot)OYV8h3b4~1efe-c@Y8-(c!^q#2 zI=2$e+?Cgaf#Z{rI;DA;N7DSHpt`BD$A<wnsLZPf!9*hSJb{irvtuys5<vsA(NrF$ zMP4R_x75&QALe0arMMf~l4h!z8IR?DOFEbDaV#;mZL`~nAKUy#>NA>p?L>L6DBubb za)5$|F^fERRUs$Qkt*5;vyRTLH12$)@2U1VdUT3%ZW;bMnNFf;rDg)7_{_b53VjU( zeg`3drJuhZ25K)43)6;BswfQ=;@H|v)<Z_M%V@(iZmpfw|Ea?<<1M=Nq{5GP`We%r zo%x8~ZGXS!uXSdYiV(o_dJjeya~o*|a<gSC<Tn9^VD|h`*(9Ngn={Ro$*eTBnA+}z z5U^~^t9eoQrfuD=`b?nL^5&>c#zNWOG!aCBomKLUzxuXiC7_54fB??C`fQa;H9mx? z;Mwgx4iBd3U$v2w6ND+dJf(CIBmnH-hG$vOmkt3${T<{_ac7;(IcyjH`T)IGib4x! z@k(3q&xsE9g^X%!jo{r%0C@6JIl9JjJiGC-_6E!dDj%jt?OH~nZeyK^-?UbyVF^8k zA<A`?!LM1DkQt=}Y)$(U`qWh<G^L-&77v_uK9B6e55k1wK+5PedfPq>Sjw$c;|S@$ z3wW%lI+v}jK<Ydv02B5V^dH9de?!^*SE8~0&)8;S|KD+x2O`~dcKx=r>?8{$)C*wt z&Re7WXktD{YO~4%pS=(09LSK~G7p~RfEpbtPg{U?=vTIHhz0g}A-$04@XY56NhX-b ztMJGP`>qYhRZdML%|m_!%I|+8ZDd3({Hbj&L6Z@14)j>|S;#jy>%hH{I>k+6!Tm<* zYECGXc#--ae6wx2*<L&Dtw^{uP#f@SU_AF?ws#{7pjD}vsZV|R#W59`jhL(ejY6Z3 zFNJzNHqpiWzAc>v<`rvRL+agj_&YBVj;X)`iQ7nyqh}Yoi==B<<U?plXnwqId`R#B zSH-3@1T7y+y7eMZGVMFtmv)I127qSLM?q;fzZ`6+olc$kEFrodLPyj3j<xBIu=OKa z8N*u5k>;jU>2Qs59z|g8HqgY!;RWx#&zKcZ(hr|JI8E+WtwwKUNmU4*hPINaFBZ4r zAxFS{z;$QYdKZIf%fwb|2dWgqYQqMDWnGE{LTwQ{SDyhUAATD*HAjJZN`J0!m#cVR z^e#OpFm=M{QUW|Z1hdP9PC}x+>M;pqrq<BF;YzW+Y12v=*0XRNolW#cQk~wNL;GJ! zN!Ru#EVG&HT*5NtfRc9Igp5%Cm?$<pE^^~r3`M9XT89H5l#KiV>o)#e%h$%o8e^Rr zeug7nXd8BadUZn2ty2{JGRa1}RY)gVMCxF!`U`_d;}S`(e2#VRlgnl)P+D7G$#bE# zZR&ad$-zAdnPTY+I>uGIh&bjwVUqrs{pEnsmGhX-#`o8E5!7;;(uBShDt5C?7l8Ua zOh*D{WSA#JPmS1QBU#e1!akyl)vFMZOJup2fc_!l=XC!4zG`xk%Jk?$bYuG!t_c`M zI}DDl{q_;!)=pTD(4Q(lTG4-={(}I0cl#@zO+fe{OZQ&G2FWx}imBSBy6||fbG@qO zmgFGFUQ}-mqL3HY1JgAIp?#YiPZd0@q+WeTu)e4h|MHQ1_PIZ`8Bi|}ui@DodJtL6 zDL`}h6Mb)Wc4alNK72LW#PLI);2m^&r55Av+R|8)5oOzpF8{UoNt3PWJC^PEV2=#T z!t>gtg;0;CmaozUbx&H(mEFbBmi>*x-2CU{3P1#w9~V4$`JU_z!d}XAB?^2I`nRlI zptLjDRAU=<P|wwe{7C3k?>&~j*Da2d+@r@;se56{XLi>m$oKM+ZKaAB-sT)bk$@f; zl#i)=XMTuwT{Z^Y75*yWl802Qo}=ixCUivc%;Ciplq8k_L??c7MSY#Y07OxHi&<<) z;c|YTWZXTyWtM7W)@_y2+;YQu4L{Py7Ohoiq(*J<E$wCjBGJ}sL>HCwI?sZH?j%;R zk1StW!ixOhFTAi2*%;v5+LaJ}%wr@k?m9o52d*@_BK09Q@P~EsACjUCpy+2~L*#Py zJI}kh4*U1na1G@!UmGpyJ%s_l9ed~9Gg(XS)d?OV_}-$<dPvu#iSp~R9ddAw)*+YC z{a$hukM-kP@i^8a(&9mXJHEViFx+rnCaRDz&w=4r$#U=6Y@jMko=F1YHQEFB`<H=> zJweYZb{d4xen^4R{*i8(gH^)Zpw%GG<b|ai`t39H^<LXJlyioyQlZEW*B(mDzo6_= zZ1GkT9Wy;tW_09O1Y%gxYJ8qp$VsR0UiwTBsOP>_lnlu$O=8+?r{e_lu8A*k30(yd z*^3iUb}nnq8t>S;ybeX*n7ntzeMI$n(ZuNpcm6<OSi9k9Hc~-k(!MadCDOQMKm2}v z`Nm?-i`==EaXl2Fqw{<O(1?<9qa^+~7k#PQ!gvTBrMFS|TZ7`~aT!#4=U+jBtG3%; z(l(L}tpUjxgozc*_2^gq=ylo;7vt1TG#$;XKUSXm-)n2r+aHcmVe61s;gJ(Kf^+IK zEDQzSl;8-DPjTIO-L;;<H|>YZbPF?L11tyUoyEit_nYbIAf1M&3AdB0UfcEA{$Tgy zR&EU}T{oBcZII0Pp%}BEAa}VQqku=G3V|MX7k~w8YTP{uxvy8q*Boj$O4e9O*%bR> zIrvKdSf17o1=fyjszf;A;|Sz4i5-(P5L-2NFJjXAzGW@re*RcL(){ff5PWq5Udjb- z78{rI4#cELaq;{IA9yAS@@nd*<c-#Dpj$v*rR4+RUhO(u1Z-&;i<MYaTa90j+Vna+ zb`SrU2p~?&u$MkhBO?1J?~9Q_lw-LF$s05pqi%oe1BjKP!W8GFxu$Zqce4KdqnlRz z%mo{~);w1vmZHBkli=cfDnh-;rGV1eaD43XCjXpo@B#qGQW`_70&~$Zr&1^@QW+cn zmQP`>T4ScN_~la?K2b#lSAHo)FgrcmuipX^&&|EU4XN2LFR1JLcNC}+ih^WGI_@OB zAnrn{z-J=fW?i?36MOWbS>w%MlcfK>1(sj}m~9*wvGDa%ue{T2IQc!<!&!}*k*>z1 zdA@LtkuU!Mk%*R)A85{?Su?^2H(#cEn2jhnjXJ`d*|A5G6dq!9`ZBU8djI2KiWva( zP|`TGw){z5A=x|DQa+Su=)L*eGV|mv&fBflSEA%<aLo^jJFegjte!VZ<4N&`!pE}@ zfp&D8JUG66zlNx!|56ZW6*wJ4nCRmjoq{+0TWJMdAlw!l4!I3&hhel_yVi(&`=CPT zOj;fi%fRc^>BbaXJ=mT#rqi}#RS+@~hqQp<U{$$Mi6P5Wua%%Q61#?!%Xp&{Ka8G7 z;_z?p#NdYAT{9U(yCMn&n&=MXf^U#H%H2O_QOoG4+$aq#=J}dn{V)QfviiW^naS;! zIehZhl>l*ldYL$CnLWChyiOStu3>BKVN(dk`vODVRxD3vzhOs?S6`u6eS9G1(v`K- zd6G@&$XRpw$mJhg{l5O5@0+69DEzFP_-lP6qeR<GINddw{-5y)edpi#9Un3q;JbDX z%=k1dW(>(qZN~ajV?^wfih-Cbdy+~f9yPEj&lECwquN$#B=<Mz*~EMMfNFHCgro8* zaDp#jyPFTwT$KEXZexMzQm;_E8O2+cpOg+bNfzf8se9I;4ND*CuVD}(xj&anW~oE~ zLRj1uj=a+9Qj_YRf7}}DLgq0kZ&c@q$;t258+bc_&~M~K8&!ILlb(wy2195~&MQ`+ zY+thm;|o*EkcjL_**7+lgZD;)YdXLuE&+yM*pG=fH3$Ga*y0z#HuxzTw#K|N+gKat z;qb|Ige-;YvJH@me#2GGegLY9TyBfJxIzUUUUQ$Mn`rx@%F%A$RT;Q!9{(y!-}YGS zMO=v*_<ow76@=3n?WLiEC`wHE)kXO@nj6SRQ8a}9wi+DTgn~kS-|5&wW3twDV71qV zEg@+HIg+oP)U3z>1$qnK*RfFZY=Afd=_=Gb3|DoDsiHim7Nut;0dDZW`^8Vd^pePP zz8(Nk9(dDc8KYIUKO<dwNWq{mgjitwelFPY1-cU6dozK<5F0=jWu2F4Q55}AOudCU zusuRW`S-Bs*1#U3I%+-`g7BKh8Yp=osHP?KhGR^=%<kr2G6+-a_dY<mu~f4DT(s7^ zB<w)Li)=nOKL^rElt~}h1HPw8R2Z4d=pQ_`3@qbEjtp9yQzic)_WpMicBcQct@wWd z3m(yHW<|sto)3*EP>czo=}*ckOjP|o77)n`7h9j_)f~*!o3h?W)S9-}Yv(uJj*=5v zMUhXHw`JYKSfJu!kG2pzL?{s+9s=_zkOXv>9ag`$d6H|HOl+on*KiI8suH*e)M!ki zI>gq++v~OZt_c^?XsI|>&P$fw$3Q0(_1=pe`jT;D{1fjRWKUynz-a4df~9@`#&`i; zpi`N;3|vi#X&0#91t#*AG#;wy^&k4GB)nC39lnk3fy)<9MK3o%R_<G`@{HsE7-sOD z0G4XYYJJb=mGxoWXT!e?X5n`UdekYZ(KCZUqLOJpe1EiSM@y8z0@k0s^y&R70zh^z z<KPud&8C3SifUri)^tpeDJF$=ef-+hI&hw*GJ-K;byIW4dcq-`t{otmG9x%(d_6wu z0Mc4Xpw<c@Pi);XK}x8(T}$2R=(QXrU>szmnENo-y}>55q#tniNGd<IlI|w1xBB}v z6vFx3@BK8=W2<jJOH-#7xoZ|gUBUVs4mdTIdUxD?mImmltvv5?GYG^2QeT4>Shho^ zLlmV3(^$vg*7$<X7P96ZvSvFQ(^@=Gc`qv}oJGgnQnK}@Uoq#}xqirL=82VNJ+_`Y z67O{oe0u+M+6?tB3hh<SUhZv3O<TXrnM4Wh(rG7@_>bGTIqpg#gBznRV)d)dfIgYe z*YfUp!@XP(;KR%Ub+2FA?R<T_7r_~!K?i!Llsvtu?|s0VrBG`sGl~EJV=Uh#q-5v) zEbS7|u08a4GI~dMS%ln!duSncm%(&LCzP--l#mq@s1Zk4&SYpWdO>q@q4n{1;vugs zKVjzO_sD1KzMhqW+Rb%J5%0<eKLuK|&~>_Etb+|uqXTQkKf0$(*Int_q4`MzE|OsG ziK_h$ld!~{(x>F}l{;B>RWOg~xVZ0KO-*<`r}oXXEn<IEJ#~iLSNWi-<^zf7ajxG* zF))l<EJH&R)GGBVAsmp#k*=FyXIoaVrbmq}mQkB>fj+U@zE2D;jF6^%kMb`q*@h#( zZaW;odnbHD8_%2?M$`cG>3k8_yw#-OBh_!FvKpGW3i8O;I)eU~t+hQ>MrB5B?+YcQ zv}qWJH5eOpZFt4=XU->R5lo+x?Ail0k3(3p6X~kj`IzRh9eZk&DKln@U%5``%@6i3 zB1-sTS1XG5p5AH_4@5YAXfYr?%to5ntGuIr&vba=cnfpTZh~_{47AO5ZzbySAD-fr zM30bziBg5;r#9UV22Z3B((^8eEv!4;tV44yjKik18J07bj@PvMCNIDR`GYI1wnAm1 zd|dGkFf5$21KuA@M%OjPS~1Pk)B_)wa};(x!Zk(LukDoQNJwM$iIZ-SeuR3xe~R)x zG*Eo;DxKtDvjuO7!P)r0;hmGIUg!?AXDBA?$YBE_Rp^#7-y<6m2Oo68en>#v!cS7k zGxrT-4KRjW5ymceI5h;IjuIe5vwF0t4Xsj;7*B4EACO<etCnnoi-TSkhJKN2PfPY{ z6ii&xWG9}#K#lPYo@{tD7tPao19;&?e_G`wVj?4KsMo(Dm6Gr<u26-BX;yGYx>OSQ zoMUrQ)=u+`hvIpn_XkNbIuq@;HAc$JA9VjMmlTI_ym1y=#%-XE)V}g+lo&mlSR%~2 zU1^6G$k<)C%QagotB6Jc=p(VE`hyOw!E@oHz}f>0OXj}s{DZ_(8l)r0`U~B@qDqR* zQwK#8@2dyYCRXYI8`u6Kci^mJTMbvCM@vXgrv{JAumiQW+>-jRdhq?FQb%f`%;4*C zWyfM<`R|gRf3hR0epdr#$%OavcMj3NP@)VR(eOh5mqNcTTrVt<CJRu(z~Fvm;(85G z7~kLIa^c!nyCefGI)3ZL|B~#FoHPBfzo8`2tzO!rYwY{?2sh&Q5@qFc%ivov?PYNf zYXFK(`Kbs4n>)xS_cWPi$h#xzJz7|qlEhjgYU1cY`uC{o*rmJS2j1LL3YFsWen#KF z`}%=``>?ti+iCS9X{_D!r4}}v>#G3Zj0Xbvk};V0w)`qlj~_@pxZN4cpA^PgGXE`A zCFrc7YEj_O#KI8w)ZiIJ5lV{U06)IkE381aL6wRzS&FkdKa01T-@q|3NamXoky0AA zvpPiMh3?sSN2IU;i*KqYLkb6|`iF+L4T!>=UC0^xu(sufKxC!yvt=@dkisq43QK>a zl(#|;neGqIY`YKE@pHAl0DI%^+ESg8`|?v4LMxh#1;}J4{=Spliv~^W`&bw4w$oUa zi^A(`hE*ueD<kZnlllpC7DK9|&?<53)dfeJr0tk-GF!1i3GRT<TE0SW`j>20$Pd`R zq{A^K(PR8+co&5hspRQX#p27Z**9xYmt6?gCK)l6ZF9M-Tm0h<Krk`iB21Q(^&%Cl zfPA^r46ZV+wi?V3sKq95MlU~!T<(;l`aF|(s=#kz424j~C`oy~l?9SGRQGRiB6rue z`;)Fp^d8`=_3XC}L6k{tRCV}r_RwPZ+2XiguFiw9?z-m=Az$b^mh9~_;7kBNkm&AN z{vdFd#Y#4O`*;SH>FoppktPhQNp&$4`qfO2Z8{dD<H8SP4lsJudS6Jdh5#_=@&Ps0 zdE-b)ZLxs36E?#m8_aGUTusENGV#@9Kh>)QX=^CS_{m{_*_To0q0V?uQZ0i^*K`C- z=CpG#Mxx@;7B=(*l#G7_joYOtt<(P;U1wv)(TyTuEl7QzIGH?2s~ZKKdpHBL{$_9D z|DCDE;Tj(i)}|g)Qh;X(b;`alo)pQTE*mvC78xcA8Z8-pcM*G(F})sGKZNI5Nhzm3 z>$wbhHHiFqBZ#_`O#PUBuPc|nXK%3Mz`jXuE(RSj7B-CdCb#a)ZtLS@=DvEB9##3N zI$ChdMu$6Y{2L*ciI0wEk=wh$Jx}YlnPI(n`@m&aaxGCwJT4KYmoAV|ZeXJUN8ckK zne|kCOSQiC4SY?oemlMdUahNlpVtYvm^l!D5pv2nOk=~?{h-G&2vZI%+)|YlmeXOp z(vx+9Uv`xm_1h8_E1jq4_NM8@5Xs%Hdp7+-X#fk)a1kUrqH2pE-k{1fw3)CfV<=lL z6+oY&DkHLf6CM061XO*MwO+WqaQ*oAIjHsHN@nfmI0B?Wg~D7&GzvMfbMmi^CL{%3 z%A{}L=_f!xwD#m?%l=NF=_-Hc=8&4UB)F7tFuiOfIyKF_yCBE91?L@35f>)e^Yk~+ zZ1pudu36u~WG*o*3q{@GBu9e598vft)aykR2G*&Wni$qP1X-yJn$1+4?+hO{Xp+mH zws-BVP{Hmhh)PZW-ZTrCxG#zGx3X}hcyJILlAW}MYmgO%Q#um%D1}<&Xv)Ld{Zj6T zd4h`M*X}>6@##EA`r(ORYqt9-40%8LJz%X(bF7sn7TsW|jOZl*jouevnj8l5ykX;g zfpRXkbMVS(m}+J<!u~9+u(Xj6vY*K=0T(m|O9lD^z2xg$811J2d{W{QuF}4KkJB1& z#H4PaG}M#-A;$hU6z_kf8{_|MZyA~Yf3@y^#1FCrrAtztAQ{br8(rPnDV=s+pAtnh z%8^?$v<WNfeu@?W5CmZ30+u(@v{v}~A4Y1M8l(zzqY$z|XyzIjm2gcZBU2)gB#z)K z{Hc_)6=#5kzbIRSLOWqY%?@u;wX(@)b1-wHaSEuPFSH=yRSZ)~LK}h}1b{poWm8A= zGWEM4mO+p)cl)z#jqF<10hI`lK4bRJr`*2gX4C9()OtyDd&R$~LK<dU9Dhz67}Pf^ zp{`v=QppcTCjtfPYik_wL>0;)_EnvQWDLv<udxEfU<6<n`fFqhW02XT$d(Rk;BDP_ zm^;+UaX)e`F(mC%wQ+t}{ke){IX0Z3ToXN)?v<{7V5;a&^MG0CZEKRu<VyAFiH}@l zeG?UwA#h%tkUAl|LR+=cuB3)|&)RTdMq5gZpYDN$)+r?~D-3q}jcz5gb(TLAI8gu; zXT%?lP0PH5Urdz-G^yYJ*4W6lMjk)N`9?FoULfztXOM_M5NK7-cL1rdsh82=%Ve-a zA0EXXyH~p3%+1*!kCc0%>NA@v<<8P`p<$ch>0o%sWlvy^-O0a)V=C$yaNG7ZjxHWV zqLqXZ`8=E$Jt)9Hx4Ug^D4Y?RW+2pLDx8wL;P7FlKXZ_M{{h@+ZjFk@uGRTqCe0vY zsoA^yV?3y1qlY2A?dl)@NtUY54BvFKDj0g{BnlU;AHK6VVi4;@YKDZw@Iko)klWHp z2PcvAtM)Yjcl*ac8Mp|>M}}3FubDC~_x32BD7#%A*EluK`Aq<{Ti5Ewf|iO!w!b`p zef}%+DsOb&Mfu)0DSme05@3Cm(xDm|K#Qaj7ZD2AGYANJUyuE4p+t`H4E3V47f;3^ zkAy;Iiu1&8RK1dU-jcmXuDGb?W5HQ5+*U7FA(rB*=R%OxX8CFMKy9Q0Iy;+|#HJPv zf=^_FM2?bDc6KJ6gf?1(9{I6Mt_E49)*Rj_uQnq-bR#X2EJbypT65fDG|OHNv>pr6 zt|a2vMp=}HbC@Gjvxki<`R>9nh0nv~-9?@Rapl1D6tX4zQMGaX&|71=j(R0!M#)n| zS0YQ+PPM8n%5MJrAMuI1Er~PUP>uvoQsxgs7pq5}i(Zq8%rU(d1l0X1ZG|820^ISj z180lp)R#s+;`7~kVQblmKxG9%^^N@ziKDi=Gv0a4Fd_BXp|;k`pYAfIzkzOrk9pbh zy2nIp7PHuNa9{2(O6S3A?7e^8-BY{kY1xaVJ)Ksg2>CFkV=Q}5`5zc{%*q5SDK}rc z=<G(f!~>=fWP5C$FnG!^7vw!GGY+;}1|FvXG8@Y5g5(~_ScDBB9K0n|jOg|N80M+4 z$j7hC!rIS~Bk9`SJ@%9J2-KJim#{%A|4B#u5(tmm9gb1Y8EIquXJzPjmLvZ(kUILf z1%0hfhn%c&J1y)aKAouJQxEK(d}dw;z(@>J6K2uiLwETQ*PC+!rUVBF0<<_!F<E?# zxpFtMDE-{l+n9nC=DfbhNfb}}N$BpIuA7^|T@=VU#&Xh3mBkRbH2r!dJ+)!EyM*6H z|L#9Zg8dz2odsvn9ajw2L!NbRKU8GWziUhuwfp27@d+^}P~_vv12IOS+M&<e)QdVa zWfTUgS>N5xD!^5J25SFyUns|E<cS~AZP8goOD@uI0go++nWK}UCN;2q7a~sIMm&D- z%iS`nA1rUm4#&Cr<y}Wnk_HP5h6=4krW<EfS_0{OMW7@Wixek@AX)YL4`cYhp}_uM zCEEXk8)GpEEX+5>G@~kKVGzx&ORpwfWNSe<y5&eL(Ku=H5+=4NkBfpu!N<Dt!y~ii zN(bJg_eV>$pfE^5Z}cTgI<<BsT)^1^{)QeqO2hw%kq4Ij(o~{M3rlGKl2e@IYKPu! z0FCjWYbwC@IkZ8&0+N*ZOemD5OaYLt<;%E1_@<{6#FUch_W}KAmIyU=o|TSk_LpCm zen>K;ya|kVXQP^g<eXru5Cv&QFyFXZ>om8b3U)`Z2VqJujp@{7%+OeB5?w*YF?UIa zd7OZ#4!!h^Fkm|*`n=y%BVW+^ES2?$aO%dyYRxeXs81{VM(sM~^23OVH`l^~QVcLR zZS+(*zYlGqcWQLEwa;s?UbUUKbO76dd@`rH-C2T9^Z?bvBkPylXhB=OApdq?hWpSi zm&>JH8w9=hU*V4o+vM5t8)2;aYnBAW3hNr1G4ccn+&;8}i*LnlUYu-sOyTbCv6=e- zU?X5OvBkN~;;R1w06d<`It81~;#sD<=B0XTw#3+iC2DNW@^JX``OuqI-39!&;O=Bk zT)Y6u`5c)@519wmA@moHLszWv?Bi2%QKY2l<rYv*EYD?HHzgGpsnuLz;?i25%0F!X zC;T!iVr6XppAO^l{4?@M*=#yQ7{hNQj?X&L0yRe>{<Xq@U2P_Ye5el$Tzow9`nYo) zB>AeO;{YWSE@&p-4PIu{!pE5t&Ybi5Lt=+x<lTjn_qo)rrJXYqc8qYqeOR;|8iORt zGCkkLQ@W}yP&MDlMq^Nj9jPT10(i8f{ZZ64b?fX0&1*-7Kz$~JU7FdfT;_eDDitC2 zomPSyNrzid+|@Q^114(jpw2i=y%#^dKMR540Ymlc1<)WjpB4KSW}ZdwTU)}OCa;#& zFR&+QkqlI;nyto$S2|T_>48h&+2VTQ7C*l6-3W1t{T`+a9gev!<B19gHxH)(_eL?l z(w+5UG`2wD%)^^w*n`*#zb2tS<p+rjhALIVmhlZw*Fkcq&XOQuoN)TErxOr^|JbUU zV>Ae$eSA1i3Oc8Z#mlU*=~I1a%@Owx7l9JKao2p^e(csUNzg>Ckco>RLSgTnT+6Oy zHqb_KV*_i2yt--QhT5S^U2~9Ruq!){c$n|rGmPn!NK?QUL2={Lg%IiN>fzCfGfYAb zpPGOmJ+A+VJ#tZq3~H+<g8co@*|9beKeidZO*bP$90tM^Wh%#$LXEc4#`d|2ExMhM zM+sv~9Ri=KiZib`t?}Qw58W+#59o`7Oz70JfK0>$ipSv_L#`|F`=Gel>U~E+95&G9 z0fq5m`z}AF5ZNEw-Cls%gia5N>k_7EqGVrada)S<>#x%b567ghe=4N5U9kWmIpEVR z;^;yvN*9~ded#rhwqyF7c=EJRUrv=ja(L?43-BO=!B`$V6JA8~q=2(!r+iK?PPT1G z{7A1Zukzf*6CyKxx86?3fhv9zFs76y9@{wr>$4tls0ZgC9Xx$8<eU?=Wl?ZGg)E`X zcEsk{%nl@UJ0C_i&^_V|I41qV8D`q^Q<mOOUD?MyiB10>WAE4{3bbrlrg_qKp0sV- zwr$(CZQHhO+qP}?sV`mq#^_sh|HK|^N357rb@Ca`u&BeirQPI<7H#y+g?zS>%2NOp z!c{Nbk0sbifb;>zoQQ8<73ZqAVSDchYmzk{fv(O@80+&r!$WhTlW>O(WOohgiU+%$ zq@$8P$~H^J1hO#>@7?`I$Bd~zP2BAn`D+AYr1rF*kXiMCOg)9)COzea!?>+KCJh2& zfmMKux0*IEPD{3&K-(d)llN=egd-G@>>@P*%h%cBF^(qwbS*Bk5rs`ZqYk$WNT*)N zP8(v7*>z)a);VI(y*w{XuhM70WI`W9*|}kdR!Q)6HZk)e$}{(Kl=|=@Zpo@c_PTW6 zf;=Dm_ZfyJ`c63iWC54k@fY%I?H;=v`Xdod_|P}4!1um0TPVVT`J=d@C<T)JT*%mm zxpo8ZrKc*HrlZqcxIi!y8_g-G=#<m;0L7#uHVLg0-i8oyKtK~9pG+q&8?Js=4iNB0 z@n@-RTkEW*Bn9;HDAaB)C%ItrcZhQV%N9Aiqy2lnq_iKk(I~1op}tTbrE|Z0rNCwd zi-6vVFhMlC$e6y`r17(vdPrl4!B=gZ>DEKt(<A@Z=ca3ahbxZ-D2IP6I3$kbpCZlI zEH#?_8aDIsaiMhI_1Znw?LOW=Fr-Z;gvhs;^64NOJ(2Rqb~g(9rJ{^gnZ@umOD<V8 z`A&%s>l6bN-}C&Ylg`YcZ4EIwuMV9+)yy~W9Rz4b?Fw;A75Y?^@bFp6BkPX>9?RAJ zD-L}YDW8y)i~G59@U13>sVVsy*Oy;67Kb*npku;Y1GA`}eY4Tg_IGtn1`2r!1@DQ{ z0cHHj@mey%dZgA(t;@6(0`eu89<pm*W-;%)_O5JhE_3@;Sk5v?;Jl0?S?+6F#0f*M zp9E<UYcKqh>$mW)45VL)o#N{I_Dr7GP56Ut(Z|CVCCH76ngMvqW&8Mph@p4n>5xj; z!;%>r!AL{$UlIc@txsd*8d(~pO33+viZ9N&-?pTHPvzjck$NM_^8O7D7fJut7~hH{ zgB1gG$3h4C^Qx9s8H4yPzl0(L?LT2lsK2Cmp0ObKkRpR9t`Sr#MJb`QKkx&-4UsDq zFuzB@>2}9ck1pa4+_$&h(DamVA-2b(?h<>&#~ZxHXEQuhz$s)jgmlkE;nWL(66rM^ z6u%+8QTzcgHUWs5()7<?3XQd_iX7)wC(MPuE9qLuePI(!QLOT|Vt86XTOr|dYeyAQ z-yXVNHdzaT(30g7$|gPJtX0>oYd4Ijc#GwPUkZn)Kyh>%K%x#fW}}_V;HP)}%aFQh z2}<HP1hH9-rhBlE02>8lXI$ycXmN1xtSgLBA4_<Y-eOac&)UKyp!q-cH=@m!*VE5K zCR|L_Cwx{wHS@6T@hgVcXO<tE<<CeMmY{u|1??I<xhSVL!)ZS2k}NiMKVW3_?LpM| zX>qUwZ(e&GpWB2#V(1lKZE&dg>x$~ufQR_oTpU3zfg5w;m`T9P@b5Xa!}hXjg=g8& zaWu!z$!&f@5>4#+d~&+L&8}bV$sG2bp2&}Zpk?boFS{7w@?IDGM!8KO@jp3Nw2Y{% zYPii=bFy5x&(Blwiv+5bNpIfFX5`gPi5{|(`@@_sU|uSlUT|R2O<yGY{h~C5^}1Pi zXbUq@gc>_i{po`6a3g&-IpJn!I{pu-LlcnrA}-{G&ZM%bEw5y4k~fd`MQRAKZpPGs zpWS{q$XiBt*X<@2xCz#Zg+r{y`oY~%L&B?Dl`lenSM!ZLR?0llpwI>mzh?fG=enJS z%kn17-BXn_4z$HXk;N;wzWDbKLFdnx56X%_BpARv{{Len!+%H7rvKj*?f*-R<N%Wk z$%O_4!mtGpEDOm9VbIVu_S16~GXws)+c&;u$k#p$!!u^h{XF|cswT^h;m*QTaIi<x zm_2*kQmCa8)a9uRcEX!QL8jFzJ4>e%>|q2QmCU1=W@XI`BhQ3Y3%LPIIv~f;#Zf42 zY#(FxE8!pzG2{r7JNwgx{yJOs)-S4hhWxZ((X5+&D4gs*-nf37H{=U&T<uxZX&(Yi zpw4?A8~13wBq=7O{fV;o%{hXV>#uyGJ$6*YY-xl)0MRLxrHfzx)S%;C#Q-W0-%z%1 zr~9dut3aF1Z$tlz-Lj#OY6g+^bAnH2ygN}0PuZ}f@lUivQxck)?lomfX&<%<XB}0S znMun#`2Dck(d!f}nZozNh(>m1?V8TXNsFPuTY(CJpj_?ZUfz8PIm%+d!E8_n@roJ7 z&ZgUi8pC9>N(CUZAiku0OKN65Z}SyKKYe2qZ75FV#es&~CA@a<eBHw%$Bgt8F_T1H z^5gQOPt40djjO}W9!|IhM6<-m*5acnzeKZ-Hgp-a1|J6XiEK>WB&Ic}hQoMV<R~nd z7+LEnxzlyX@+a5G6>IgbdR%j5(4-{45Bln?`nNK3g7R-wYkRrS{FQEv$(&x&NR7)k zoW<I-5u>@&+Yjh&akDFsusrMPOoJJujNJF;+#&SS=v0k}gj(>Jjw)y_k$Nu#v$OwK zkEbW063Iz-?qnh|@%T_|<&_b91FBXE5#aCv>pAzH?Zv_@R<S6Drb$EzDR2vpmd3dp zL&5S7`o;K~nA?}5x5Sg2&K`_&AMeq}*$Kb_#?S|P9rS98_g;vn?WY0o^BbsUF^CDl z_s*iCkgkbjebb&Um=O7a8%k7+458H7qZY^Ow4kAiB(OePHt~TSpG{(oTY1GTO%TQh zuZ0I%f6SU#JU{wdd#q8rnHf{ECY~sNfpm2}TZ|l%;Y&GUivY@S_Kj3U!)V=<|DLNG zS2e;aEbHFeSdxK8#Snpzq9DIk-|Q!x!`PWpmy2vviR>pA|I_VVmMEc*LfBg#Bpp<& zF!RbB;MUO$Ff((=NwXNoRu;N>yVmyA<E-71b(6MQUA?F+9_4rd-ZNzuQ7xBUWx&#m zl0iE7O}s05aC{NZXOOo^_Aba&hWG$q7?t_UqB5Ce3$P?=`?D)-steBn;_Ig{C+&kw zF#?`F?7jRL*9r3|AE_or=VJ|SPBI~yp*fEpGPsq%sb<Q@clk8t0Il5Ov<LNEYXUUg z$*>6fyn30b9p}$OB?^Ghw>o99hMELU0SO<Y3y(q|F-+%fgNUrIX}g%1Ae)w=XneG8 zTA<U8q?d1|MIgxTXWS+v$=m1X80b7gye-Y+(C<{2cO)BAq}uniMf?WIH4QY>Y#U?f z=`d|FiVH6_)9A=l+qJgKQ23<F@HoT8farmE%W(t+hf1j6H5$zL;6snH`gmn$qbs<p zBUJnQfgJ{qJJ>Y16xNkgt#HXN>=h4^QDngS7gdid)xx!eSDK1X2gN@!_BAdHuj0yV zI*A$&K}Bqe4gs_>O(m1;z@#uFAix18&j?BY;1KNrYa=_JWFSWBz=kQkG_r`XASw5W zD8T&fCR731mYRAxZDr|p#<R2(QBySK7M12s+`#sW?dBpeXRDjO7Ld8TWWgUOi>1aK z;DPw<EOn;yx2qDb-c~GMZvnizW5nz~T|BvOYXB-Zt)X0=!!l)R>y0BmNs2X)fm`k) zM1i^0M}j}vNp|}M8nnOVD6qnEkDDKOeDnC6#|>*Lmm2qDz-D9SrDjckDn)>sH0S*C zqef0ZuX`<wZkJER-#C&vQ7!btU~5W<jwX6@dH;$WKGii33BLaIQWCOQVQ)qcxV;*R ztAJC|62jxUpkr@?;tob|zB~K9E@!=F{>^x4RU&u08QA-lidZltoCa)QheeN1PD(C) zum7rez}4%^0Q`hclpASNv8}@AvEuj&;zG_niBx3Y`0J>fDTJ5*^c3vBuL#ztsCC7K zrnUoyz(-Szw@#QqE4~9yJG%jFYRC(*{}vfC0{I=%;|S@C)fvTJxCVaDeGBy5pbFB~ zFEyEoD-rvF?<crX7D0V%$)Mp7a=f29lFP}i$C4v{!|gq(Jb|;AN*&Ff!8fRvV#T%l zEnDW<)~_aB+>8tnJ4S*@B=|TL33yzaKWY5SeSP(0CbL@Xkzi6sPr9*6pMP8+mq%y_ zQpwZHWnt@EdVG#4G)XA^qPE2-DD>4ZQY<>gfiydt#0Li{s~*{i7V=Z<`m00nLBwNA zGW44Z(WCI2#BVo6M+C0R3Tc;+4i=OAafn5kJrkx9k*LIH0~`p4qF(fZk;zszBv3N- z2UVXSV}^)_-Z*y7(JhYXGmeDSBqE_4)Ki7c;ou4pHmtg4F(`LXoVnjxtY<^qZ`e;E zTm2Mc^+iIsE9@*NI_kb>2-E%9zG^-9XB`9#zu-!HbrQ9lB+q?nC-%S*=}3z)|J?Gx zOy%H0_3x@7AQ<#Jq~NT_AF}pa8!m3yV%-gE69x{4lGlpDqa_uiQrHo)(aj2n4!3<> zpwok$5dnPeHRViP=;k|t(>M){r%7r*sNpTVm2_8f#c80`bO{i9)4Ib!9CGMWae0rF z>qi5BoXf=b<7q3q)fT)=#~85}8<%esykjR{fR-HZPET?Q<ZF$phNe0x@L4>x=p?n4 z?C;F#<53=G<9SoPOat;%6rU0qWBbT@`W#WEJogp4HQ){K#D!Jsiqni(R;#4ld|#=+ zOdK5e;(fAQe~W>M-y<jy+Y$w#f}GLk7{I6&892&kDKeAskNYWAPT3j^UfE~t4Na&+ za^i3gv~d$7FNgvLzxY-?LFfoMZ{4Pd+MQ)Cl@^tJJ2Zh5C4?*2R9FoYBbn=u5|WBI z2^ARYfB2ABJ-^4coL+@vO^6Ss^M{2nHD4_9Mijbpg^Js~Bf4H%nZP&0uvlqfy-vL@ z?z%P0x0_0_rIhplTk;g62aJVf{qNgqHfR9v)nv&_`+tL`69q&+lyHM`Ux37m`s@Hi zAjeJ>9lDMpjy1BT9Y*@g%toeXl+tD90YsnD+66A>W6I>QM1-$psLB?kWga~Bu~att z4Pu8h^JWqE@4G+&Xj-^z>oMZ59%2g$2|3R|rE`&U69R%Vgc(7SUy(x-n^(zv)zp+% zW^)0hhY{$&NMje{4lY=r2}6q@ri#PVeGA&e%4%ZDeShy7+bLgdW)1y8DF=Z9@_H&| zV70e_{Dsky_nVwKicmNdMyMiog&Sp65g_CmXi<k<xzc#=0J=y(@fuc80(F>HtKdA! zQ-xf21JgG?gtbJDF~gN+m3LODUqtuidBgYoQ0e~=BmWzU_5ZlUVqp1ST&(}N6v`gO z`1_LY=D|09A6Y&@1btCHAo^S1#kIJwf`ByT8?UW%ht0PcFH2j!FzY?)D2-nRHG?~k zT;V}7NWcOKR~GL^QgHh^n(coiss!@_s)v;4D6M~{{KN+g*pA@tHNnYVhX`(7Hc?37 zsQZUA6L`OYEa{(Jzzn~qd~U~GL{Y3%@&~aHJ%x&4kEj*Anu1scEZJZ(<aQ=O;}w;+ zskyvrT79H7mEu97&$`O!L(qeqZdb^f4T68NKresH<h_X;=4f6j^0(ZI6!92sD}xpw zv$fQKDxm0n1zOZtQZ{EdwfL!YA5G48b<t<lD>kiF8li0pDHHK?NE7Nqh}Ss6=@s=S zJ;(7JHjl~b`H{Q$<bW34#6#Nif`%W|2gUaq<ip*yGS!ypFDPvoHJ0a<TU|-MdAVI| zzVMRvK@TOkvS;}C@vp2=KL<07I#x(!s$#C}u7pzb=O2p5g>mhNUP@&hsMrzXkb@t` zO#CFsBme}a2y=IwnVr4FW_x6dm{ptaZEXae*!zk&<;hmou83;N6jtMdAx0BoaA^ZS zJ7^V;1{d3YEgYTONfRxq3vdn9;jEIouy583(mv^Hqf4$e|L2m$XgGi*5XMkS-lj%Y zgBbYb{3gB!3h805G2$2PjDUYo5((TE98g2J!tl+`1u#Z<uwn@HK4oQS0|KN3R8?l5 z%f|7{ytTZ0QnAe-SP95-@<K}mc2f!2gp$y2@G$M+4i-a(IJ2Q<#(<O4bW)BULg(M7 zPRJv9?AKT-IpTMoB3^@T%{v44M?H56;&P0n%$vXXp8-W3vNFBXR*kgfc9I3ouw=F8 zVvq;oT6neZ<UGoZP)y(}OG0A1z5W&ypwK&rMXU3o<?gIQiK}~7%+|=`_$i%VAqpBU zdkd@TT&fQR3wa=2`;1O6<kT*0$dols=zt^>`$Erf$yYd4hi||jYyd+!BCws0Rg+>P z_FG1OAh;<PcKX{WJnNVFWF-Y8G=wVlV%S4G^?1OxBh2<O+CG&nH1)tjOspyNgq{pP zeT8fNj}Q^IKm$|8)wHa7*n-IFF;5!*C{n`RN5l)!`s^Xr+Z<Fp{oIS6-l8!{=B@{# zb1Z}$2Y5Pem!bp)OO*<X3lu-*L4{h0N7s5y2+ms+jPCpuJ0Zli=oxi1YS$s??w+qg zS)MWdA=JzgVJ6Fzret3W<BzkNn#NH9PKCYv;5-0kP#va0pgXAZ!mwJd)sr`%%^v-N z2BK9;4pOHW8_y~Av-O%RavgOyNAW~aneGz5H;Dvn;eb59kEGM9l@R*=6w7Ng-Vz+~ zQ(49vQk*9aq@9MVM3!kTF?ytlm|UZr+<5<`PjZ&D%XW{IBop!|F%NFmPr0SMJ@<DJ zfE2`b=(A|EDBTGHpsKUT-1gq)*?6*rWBSuUeL;Q8;UzMbAKc(2=AWVY4M)|>d9plO zKijwkV>&9OSH2iWBt>v{*WfyZ`!3`Xkhp`)Xe=JZNxUZjj4WEFnRbK%5uuUP8?<sG zHchBBA+<KK&5d|&enH0McOs>M%BC9|OQ*5zLfo-GXS`fyyP)E!v~01bwPX(<VBWgs zKdWn<c(^#*(sY#2y%#pp+axqw+bt*TvWe7YQVSP@NZ1$bBaRezz7uuHOX>Weej4E5 zM1t5!b(8Ogg!uj7n*1N+01W>P)%AZYd03eK*MaMQbX-yO1KntbB%u%vvdEcpH8Qbi z88(U|$44Oxp!{Jnxfne^A)lZBsL1Kur}P6j@35Nq8W)BoaG*=#wb$!uTp^alrG2Yb z)HZNWEPCaBGmpZ8>Hj6%oMYxvssrfD9MkkBRoxcq>l4G#@4*-)?;ExwE`}4No|BXz z+;km^WW_>=U6bweDvbp0RDgK_VSJP>Qm~w8OKlZ&4AQ(vGdL$kIp;pB&?m*`Vx#17 zc>>{wNSxs`obGir5f(dZClL6R52FuPkH&>qi)5S=35(nH=3PCT<QUxqV=p0%B9j`O z_KY-kvMZn$4%BV7c<-@O_W%qEe@;%I+JGbHq&8gm%v)3`wb2r)iM2x=_qWj>5j$Mc z&~qD7ZCc%9cv}@HSo&^mc(kp<Y4@Xbr$)To!hM9lUzMcmB086%%9~1$@_a=~2D(gA z%9c05{i=s#0$hEy=1CsPd>S~Ox0I?p3ODU|1}<bRJ@I0k1lX48Bu74Ts<Jr3`X?i| z*t9gz@$Yj|AzvqX{#tbg@Z*%$RYxS8q9ugW+dQjRkx<WM$>k}*fIC}dyBdZK1tYe? z$+@b=qgante*5H7^Zt@XbZHBgdv>$%g*y_q%Bp3oGDU<CK@d)tgp#Lm^kYHlrE*-8 zvC3>vx`%!fe@smWWM*#<6-c!!wRQbzPWmig_!@=hzD^L`DxK*7gVd@R<d6Gp4<p+g z9z62W%IR5}#+s^){dEfu2WrSRxFR*ht~aL@*^Yv1n3U$siiiOHn#bSkBbeAD9aQ46 z3m*+}?=LzmQEOq>bVwyGaN(&#c~phqc9MH<WOO|f`THQy)r<$0gVJFKq~w8$2-jVy zir#0hCYMi&wW?rg455w=ThJO_q+MT;61w@l6_rY?(pT`j6mT6UOR4_M3gPYjTYiOX zZ4{#e{Tm=s!l~39;e*HTyTp~>w-Q=P?yFG6C~GLto42Iv=QpmuvL5j9E1ExnI&U`5 zQ&gep)->p`G~3=_`H4yR0*Eldv`(twIU=5uaA*NPcfRI8PK|NIsZ5}C&G6PdvF%*Q z<wbl84X18tecUm(@0~4fP8|7s{N47TD?xwoIubn`;n(b;JMz3)Z+ue9gJNku3)(Y4 zeIxN)V~dm$TRV=hH6t$Yo<5M<qKFcc;A6RMcdo8M1rtGYS-j%1HXWo2)D=4Oy{Ibx zx-&`CpPv3H@Fz|1&*R$KcHNO08P)Y*E#;@Yhc53QX@MupmLbCH`fCu1R%|T4n~!m+ zuStiyn|$h|h{uB#UJcV*i8?jWHB`|1Zr)J`YMT8~JQ8XrW*?0~CO$ENvyzC+q{{kI z@v5ix+tqd^@Tj-Fc5?<N_#a3Y2Nuy8_O0JDdXDl1$~lYepO(4AnZ_${XvFvw#}?!a zRZ<BwQ+&xLZoRa0rWH9a(%8ool;L0aARGt{%Nx<n9%kz{My#@WrNJF=cd^vgkR_eJ zhb~5c9|Pri(F5(xwvt!0YObpI-6A^Bo&<lvCT6`A?$uLj)JxAb6xTA=XH>R%rUNkE zSW~y>j_naMrFO0Fy1Uvfgh72i=Z<_^@I!Mq+<iLkq8nu=>I1U2G40IBjQb3{#yyF_ zCLKGnPl;V8x3Mn9b&BSVXRGn9V!2obhbt7|aPZgpwu)g%Y(h1*a7fyb=a}`a{~azR zwoaL+7Nh`m(F#k#u*Fv+e?r<g>+`S>sMbLD&<L-H$JeAN5Vg7=E9P;$p?i>E!BK~m zXPJq0<RVf|^}Z<@<Gw&E#EKWKXHt77x!JwnSrX%?lYJz6_V3ZeZsOqoH4Q|?n{Pih zsX?YJ4;_2lgULpo$I0@admD8f&SA@7vB=OpCu=Q(aUsXb25vt@b^wbg3BmB!oWi&s z3mJ!Y=WMnz=C&KzjdAL&or?n7kvR>UUeG-`KG;<%c1UAWrz3i(`_ck__O|c`Y=x?) zHB|6jOWGQ;oav_==M0G{mI~HnxBQfls67Jl4Gne;ViftXjr`MP#ZIe|qdY`dKhtaN za3uZF_eA6%<|;9#gQ6%nRaiW&%nvJky~w`C>H;l}xjBCCnlL|unAvDhNvBVw`WkKz z9Qj64Q>j{gk7bZ09Z@y<P^mZ6fO(>6Jg;b<ckZg-RDP569F2Nv2amzY^)8`MGT;^^ zB49SzNb^9hObP#wD48zU-$x>Z$v4F%fdo+2mXJBR+TWfLVkMe0!(kxWGOy|CFl|AK z5>2S~29ACa@N9<FItO%bzCM))JaaY4La&1dJ37x|+F!T9m#hf|vz+1}eu^AJa3k3t zH_S)Ss8=|IfppzI@$k@10Pv5H;CL#Z1?kEspL4h&-S0!$KL+&{T^b1XYB@|)!p0CJ z^Xc5=!!>12Rekb%lc>+3o`XKfaeTrs{=JXT1|97{p~ZzMIt8GEyDc(VN43VqGT@RA zra~MXUfUW%fv$z)mvnCZHvty!Z>F`B+$zP<Vqer#5^foBbhK|LYeVz%8@h4{Xcn&Y zS2QEu=8=3GEKBQd$w4b}j3dSNEW;pzUn6i4-~<|1PcfD}*_K&dVtIFcej87UOeh8> zHb3^%?+B41kRE1F!i6$}Ft($7y}FRg5E^nU1M#4eN;>A%YQ%T)>Yp1_SEsIQOkS|o zeuA=>2W?4=BGc%h46A?YWTXs*F4;vo5X>r|v+;>4pYi_lx#`h9*FHt4pcw9yIoax( z!Cxjw(SCyl%d5L(v5Pz&>~n9#@KdK<*B#HwhPoY-vu|B922TRgH4%yQEjD~`fm3jn z-ZZFzeQX(32I*0`I0n2_b7_v8IAW3NO3q#|U3h~(AMqyPQw*2`xe&qC!DB+$dLPYb z7ss*Uw3U#`F&mfhM6uZ{Gh&M3-aOXUhiJ5USRe`ejNCVQXIdA7u-(&5#86Q`dhb*9 zXopsnGhtCC3o7WUe|?-g>iih^!TZkn7EaTB?&5>XMap5i;_M3+d1j$>-z{`V5Ey|F z?n-C@LKdmAdEKZxfg}uB#4DR=Zu=y(PigLgS5IhF@3xC$!<bUfxbvi@d#K=b6y|(w z98r)`oD)wO5>16j+-=oU*hrdtM4}-~p>XQ`XxT%rUwZtnv3!dYBg#1%fn=q(u8Lps z>;*L#k|)qu-DC}}))Dvd(ifimIZ<9ug^2cy4t4H429v-Xo>^a_&*rgWn&#gwNmsP8 z-ZkrkeP<ZbhF%iYm)>kQ4Sp^a%)o?0DhQ~6ZUp{XoZJxU9^&a9{RrBF|C@#wy!I5j zk^&`W*!>DA=697m6CJKDXd209@L#xXH0~Rdz@^)q8q~rVKew@|$uw&su5>!RwVt6F zGBw;|V>QSnhc8CvXRcjIpeSYeh`hkifb&J#>=MCo?R??)#d2@q(D$Ny@4KyLT-59e z-hmcPGI<faE)oqssp4~Q5m`~6k1a~L{f)>wfMn6^0<!{klDIpexPr?Wa6pak@-H+I zT`+MtRf<5KI>~Rqn6^6WdDrw<cFK^f_z%;7|B{mZ|5ij9n3?{Ml<d6kR-%KN(K$Lm z#UpGqvoOEpipcPo)Zj!86sfGwhayxr8{>!1z?(`-?GwronOmf7Lov>)P@0T!fpZRL z-1VfFUlitY-1)@CGu&JLje~@mLfNF|C&QkE)!8Z+9F`997q`YwQzpUW+|?z;@;<5v zQNbQa@<#SigX|;Aym;k9iRrAFXmT14w^tXCA(Yh;t{)4#a_#D-N#ajDOTaKJU=E$p zouSH&H~o^g15&y>Y^!MI810fLo>{?rOd#_$wRnOZ5yc#f4vwC^6(1p^t@_Aj!%|)W zdJ`_u%P3&NCtgL4ftRz*$=8aGLrE3OFT{h=cOoD;`W>5*K0qm>K;g#4jZxE|=Zy!u z9fbY8Ge+RecU0?~5!0e>KLu!EMy65)VCTD7VmgefhZgTrizHmRmBO+r)JCot9@2vX z{IbyNqTf5ezO^8<WZIPn_(v|qV9j1lpIsA6Zd}z&Ma%V>b>Dp;P|Mx{L`6Z%(R$e% zo(f-5dlV<WjI{P_t3x8;)UE-5OavORXSvwkj`9!;u{!YkypKa7FnM}AML_CAvS$;2 zDVpf2Yoi5K)*F+k6D^2ctsWC-VaiiziC1Mq7+*q=%qyUWRFgIsw4AbqZpO)VJ#8^^ z%fbj5kD$uk*bkHi*-^waI>9M}FWLO^)%vXqVST(Y8BY>eq_=z&YDrOi#@C4bK}a|g zIG`sHWa)y07P7Ue3=MJ*_Q|qdvO&DX!O7T|NG{o=m3lFr2E1xyg3ZV?rd>0itZzuB z<_1mTIra>xtvQV^_SdPjQ?-c`1(mU#)=&0~0cDvGskbxlLKB=N^Aq3k5LRxnf2H<# zBOt`Ou;az%JmZmtvn&KH^5Z(Igkr_Qo+OnI0s>+Xw`-wlJ<1<<%4x;J`|+`n<IPAq z+%+v~XO-gV6ogaA=JW>AGntHGDiO&%7G7-;1Ma?KMmqONsG<5(?Oa3L(#(~DUnN;X z&?u1>jj$f%>^P6$Hy?qQ?j0*oNvYo@q;KvKUqeOMepePqYYDE~2M3|~T>3rii7I0n zrFn6qJ;A7HhfOs|C#9C~jmmhaL81>Oh_xNRUqSz5o`6+%ii*Ir+QKx_KOo0P2&)mm zr!F2JxquQOu=?Fg)5Ld?>^fU>f3tvSV({3W?L<(3CzEvT6YAwYL|Atm85;8JYgYw) zKGvM{4m$`wV`p)I7FYE65*E6GwZ)DBldPCEvQ`kES$~OZHY6LgScf@>qMs9x9j8Y% zJfck`sF-rhxv`rGN<E{lWj~?mw<n_DO0nXfAN|;E2_zAd^~kLq5mW5y4G921cBS{u zY2_11%P$3MM$<(5=tFI-l}@}=jVgiYe`Q8KS*cSo@b^{Uf+~hAru=E@Zb6U*{S=7e zJup^8GA>`=Y>cVsH$#{pPxn@cmmMpdq1lo<IBd5OPU>Xc&BqlL?><`8Cj%=)=)7sH zgwp9=t6%|`^@iT}?NMnvcS3OyoCK2j>>4|HVG*#n!jXA!#*%oqF$nJ*box<}@3_Hc zVkgRE-n$~nI@;<zdYew)@1%ddi*eoZ32DB!{Fu}mywp)F0a;;YKSZQ3^&JErjVDv= zD%=!R%gsyn;4@nC)@_3MDuOL@X{rv%_kNSa9B)!y!kGHEA8%N4S3Ze`bp@wclYE`L zg(uIR_Vos`>ngR1W#MWnV!u@piM1>^oo`NaG(7g=45#F<4hBTW=dQ9d1Wflr2o*i? z#m3y}9P(jn9(lNjJ<+-9vt-(8X$L6lJ`<nv>Xh-!s(}fozoFCxG?+k!EP-)LL6Cs+ zwm)UONvW)qIZU;K?Bk|r8Sz-90p=QPNzFlgZxr(X43?O86{h899L+xXLLKDY>Be)x zB=(zEjD{44^|OaB%^Guo8;sJT`nhcO#X)7SyVUDecBsTRRf0K4Ky#8(#%jiCs96re zmb=>hQpWFS7*M}v;XRdBX@f`Z;2XKF3nGI3*peSNT6{{hW_<+m6Qt<SM3E4ELODAC z{<!S4$lDebPCE5?krjzA9t5@NSyS>9zkaS_jjr=t)n+xK^pxxQa2D&y;m^SW9JCNi zQ#7g*8;~M{>ZTXzHmbav(Gqc`0XKxvDY(yIZ<FS|&yyjrmY>0Mmj9?4ANu5`1c{A< zZ!+DU8{)M!`MN>`-I;7b!JTO$;XOyV0M5eR)wc*3OrNy(S~HH_0r5YAWU(#P9eg=` z&E0$jTtjjOHLEv;i$N{UjVIHhn(4ZFtEv;;XAt1M7%zEQ8AZR4=l_9b08~PhxUmap zDuJ_rsVqvpITVa!rK#=mc|@X4OX>s4tc`ln+3ab<3lmi9n()TmD~7kNB^nj3E>||| z*JZn8g~*v|kzCU=s2F=;dInHh4L<4B4f}SG{#g2{0DtZ995_quf{&R{z!Xl{wYXwx zk|f`yQ)U|4W6a=l;_yJkVF-5P;g?!D9O;k?K{qkQG;r~!TPqe6MAv0dn2hY%dPGTy zh(L=huf`mLYr4aH<Sjo_9!CS#QJzdB(~@7OTI}SInv3K0+FrEKSFW)YF_KFONkyw6 z40ok!pw_07(}rr$M8`y_A;|#$;~K4PNZpHCc`x!8bU1cP0sk1rM@@#KgEPv*pio?i zb3*RIf`s4ZZpij)DyRnGkg95Q?cA)#LItO{la%d&lt>7xLVnrRAd;5hEUwcb@}g&r zZQfElg7r1XEcBDwz1~@GJ|m3qX#E#XgOyu#UItphf}AI(ro!j8u&C$bz}%ihX4Wlv z6lNd3&0|cjKXFp<C`VT-zD%)w)p9G>DgsB}Qs(8@<vOX}b;|(do@Zzy;g~hRF$;Kl zFA-L|Fvcn@JWv)A#~M!?`-<r(gL-AaYUWucI+-5tDznAXmh0y6F54k7*-)`DFkieB zFdgX~asKU8rPc~jk{)*-5kuN3#2SH|aA2oIc4GorhY3<)2a(4xDhAe$%hVupwms6o zhdlgWgye=;#;41;Ym;P`q=OJ8?}Vf@vlIKk34)zb<qKCJ4HOJu9AAMzU`;ugl8hWt z<GNA?Y$=Oma0?5R<C$Xfb~J3Me=`Dt5iq0(I;EYQQ9f3etXU81awOk)7DReTSae(# z)&w45f->6{eI6hwNcCl=zKM1fPdd_w#hHr>=38WZ2~9;2)a{>buwwJ73bWUOWAbT# z?@CC5UBIS|XdXB1HYE-#f<eF<`*!hD`_tK=$2;JPQ13;{+;bmk4*27)n;7`&UNcUO zxm|=i#%`UB(2nQq`lqUc&w7c%prkR7-$r?SavMF?3({MBkI)(_Ec&UZ@`z|{>}T}q z3Ca^mm!R|GXr0E>h@UyZHXg)hK|DL?5VdYPF&;-AwXQ;^X1()2#LEAMYW+Vhj~Lil z{!dFLC?6ZmxCX=i--?o6PSOM=$%^h80_W-P-6s^1W2dmNcO`ka>>%N5Cjv&E;6|cU zJgTPI9rK@<N1cbFX?-zxyW>p78$~J(f(hCK;mDOnoL?t#YPf(fVhdn|gwFCQc7}Ld zGE@0AiZ?&n+%Nla;xH0^_Eu5mKsUVN2AP1mQ^gUGo?e?WJCoVdLFmqQ#Ve&?7dhGh zo#%-Y)~*&|SHK1tBbvAe4$KfIW!Np32Hbq01fRYNqk$?$r{PcRLh8!P8;a@AFS!X} z8<o@a7t+jL#q74wMWg$Et~Lvz7!C&Ypj*E|fU^sKW3d^tqC7@92>!mV%XM4qCDTp2 zNx%=CF2lsEW<a@U%?%&qa`$<f$L)!pb}kpbl0Xrw7iJ+L>pK|r-m0&UmQ;D8&JxYy zk2&2BX`TL`AnirD2NNM2%O&-Wv_W;)VYxsa62%Fcb}zTrZM?UTEi{jk;jj1oo^<?0 z&UPzQzE-ECZ2m<LcvLt-h$gIzI{xBJ1MFW8*d(yFn4a9LV5HODVnlYK_jR+>jYqVn zKXRbf@o1N<m&`fdUxYvN5f&dF4*nEd6tYj=d9o=^$Tk9()U4&4Zf#lkb@4_@8cc_3 zV_50CM0pp4Bla<+<q6bA{*j|ZSpptM_ZYedTfCxvaY32auj($Qz3Q<gH9u8wYD&Mn z_4tX^nW5l#EAN@Ip6iX;1S=G_{n7K^=9Qd_(eYq64ko_jTorB6iZE{<v*Pd~(qKjL zv4$(^G`D*&EukJ1O;#qHCDhRC#j0uDyXrisuJE3i6>XT!79+e!ZujL=nAbmE4NIQq zuJ2xv5^s<?-#Lx+4FV2Pu*EVR)RvVY*<VEpjwE_QU|Xd$fgxRryvb0!lavpM^%8#^ z>5!0XQ|ry{`zuw|HdQnhU)tww<$xuzT0tzIf*D$M^h%_Jw5<g9XRh3q1Ro0pG85oL z7a}4F0XTFpa$yji>r8+5Ihu&H5a_3g<F)U{WE+I8Ut}co;Xs>KctL}!L@Bl)x<lyQ z$~;n)u9?Ob<o0WEqG?dpx+&akFiQ&N{Eu<{*m}X@(1QvPPte$mF!B6Mh_mK+VZ5~Z zF=-Xk5+C#%bTe+|zeb_wG3y*XT%D@GJpWKDGd%2<F=lFb(TLN>`3{=?KGZLs9xwt! zLElN$I|V1JLU~9`OSaf`-uB=_#w*$?N=%jDlYx1#p_|a!hd@Np(1UkWp~BLfFgO#n zd{Lm#@9=w$&&lICY%Amvt!=^?%uZHJ>H?H@<jP0EraxK|9*ZPi&Y2tXh&W)T(!mCJ zE7NLHwsUPYx7-N0$4$0@gB!3Ka-$xyRR(jn<)C5e|5JK2GhEnoO_V(ULAEwlTa-bj zrBj2HMtofrPQlBFrHfmh8#%fLQrk8SEQ5w*`Agn%_>yM3Q62F|%d!d5e^qIJ$268v zQ5nu^E;7T%AbPJlnW}BhMboPNfT+2}Bo*s^^H-t=QBs79l-EA%Pa;Vcl7<yyEakNW z&apRVJ6e&1)@`5BvcJ62USseyYN^~Y^}LCK9bq-AVvr7!JsR#p>@%e?ld>I|>t+LH z<NCpdFFdX9tQA9-Bw+vQL_$z{B4-8Zj+oUmiwK-q5w*pw#P`;df<znX?;WwCUNOyk z5@yr@lcfEa<drZ~^SZ%0-93Pj!l7{QS4cjppCQN~zD)Y`PiV81G^Cgd#?Xk0UYU=* z{C{|M{~OBcza`ZFmI?e{Dx&YLOK6dY)ND{Q4=)DTY!{81E?N&rPWyPalkZ(=c{WIu z^T+F^XS@$i8tgAXQAbc0{&}5Tzs=lXg3?+-9d9UcfGeAu^sum6-$<ddY%j1YV4WTk zi}JfW-ZH&wU34Y~$z+mvgZuNi8%8k0SbP<P;Zu4NlqW2Ge;@rLjPwq`b9pNscf#jU zt@!PulLw2x4#wg>i8r<o)Lkb|1L!K5B4AB&<tmv%VYYSBbjJtMJLRHh&ttMh-rA4m zHcWD5ji1|@QR93V9>HqA<6g()G!tSG5N_Ca)mS~0lyZG2Ma2;l3%4s`w4^)$*xb9? z!2##1K2P`M4qt2^Bvcmqax6G%-K-4KEex}Rhj!#sdNEmO9l1b8O+nOCSAKUmT$S*o z=1XzaRVEp4epfds#ek=5xoabZLlV*47{S2lva6>_t&i+prQMp9KNg9TAPOfOZI<<z z-^8k>VTn0585uYl|AAhX4-i|VXHJJy4GDKRzjm33oa)`L`}H&dpDtLzrR4t7ZZ#rL zoLbg5OsS2qdZ!IEzI#xJlyV{lcde_mIf1;dI1<?|k&<c0j-=N9fDV^>k*)GDrn4&M z_?lv18an*-A@nW4fW^%}r5!k<SzN>$tLo0T+331*Hsojf7032j#7Wa%nWM#^D6R9J zUmYG?x42W!((^%7Eto%%4+0wydfXf<aty7+EMI^95Oz4pmt!kG1%2;qIR(kh4k@?& zLc+!T9++i6`pD(pA#A;NGEYWiF%m{DPNq385BSbwk?)75?_VvxP|*alyDw;|Q2#jh zN!_o1&C5~U_hZ{md?k0syO$@F*2lNZ3JJXoVIHk!xuDeQkVlDUR8B*0g6#NEIWxo- z=hy!N>!Y}PnCT$7ZOuA6H~NNQA}HkiSFA2LF4IDgG-@sFP;Bh^kVl0%vu^D5Xkz00 zO(0W&7H{HrI$_0RR_Yt=&)|tkvik|z+8Pd);nSJ;j31^J|C>voss!1?Qmi$q!or{s zfrIG=y2iXF&TbF|W}~Tsyx~b^4g<~znl>NMC5I3PW5?dCqMUxSi(sVugfOUeh=wZH z<<xUn5x1!CVsFA^F(w_Yo*D`-34wkD$_Qz<><GcTP0f7Izp=P;f`0?`pho9M?q@BN zlZ_NRgv#nd=bbK&Gp#C#o$kIMpeH~IRK08VQa3Gfbx2vl<_qn;3P$QF|DKBo80`(} zNPAF)g&dTuRcOeAiI$iJ&iL<>4ZVE`keZ2(D5b9!lsqz6dHPSI%R)9X`h+DM-~zWG z>qX<LZ3ShZnSRNtt-TGjaTP@6D_EepZ0A%Qw2LIwY=%#X6Fgp;uMZ%;OzyvYi{qhf zl9jjW@apy$(TkGq)ReMJ7sfMp^7@44MS@}<#iid67V}w3*s88moASzDjiJ4=v;^m< z{0tHYYSUu~r!0c_m5wC+XTgbDz1J94j_1!Fn1ttj>-N4>3qS>;C9kw_Mgh%7j0+lu zc64rAMb*6CAHGr;-I%(AsnRzYlxkgDG^C*`Ua!6<#fwdFho-|p)L1A(-w<&0tLZqY z++Fj|e%>%>ZfAXFTVKX8U)ef5$XI_@XJ5ia0(%a_YE-PtFtfpgln9|EmN5zzXK_{q zu=D&25TO^LfQZb%lF%aNON@YgVf=j|s$pL3o|I&TTq(qfX-X<?BG*K}x>&tkbL&7V zH1QoBjD`hVBTb?mS>brl>-5cxb|HWli*=|PsRQnUFQMNPVBVr`)pQJV(Xj?sK7W%Y z5(w-#&fM4%+;Z>$PwYkb+JPzSjci_TVHT4FDC}_y#RhQb)q%GZ4jYF9wfQSxeePv6 zZAhx1rO5rMGnGnd>UbB9N)e}X4UQw!u3v=9ptK<=3$$z`1QiW<XY^3%W2Hf4u0k$O zs0|;%K<V5oxRytKoW`vI7*e8@)t<Tii>#5D>M({zV~nzJS`25%AQf?R^f_6iusE?g zA;y&lQ-VD`Y%VhB;GIdD2`_itf}x{UzIa2oTpJgxd|csv?RXSEzb<#&otR~u%2iQ7 zP4)A|(+~d9Pyy&LIw=Z1pV1N!#-i*Ypo_8l3&j27^i}5A)Ns%}R&YV;Cx<4v@dChw zf%*2(^aWaMAOcDHrV&hY2sT1;5&_lR7Dyg~%E`^<Urj-)iFEsm;rKxMzw{D;ydL?K zpdY{RwyTk|vD?;-+)jc?_ZN@_gDEk$R*KZ-@u)eQo-!)rg}~3mqrxf#n#5c^Bu!5$ zDB+`*W+<VGGBxYEZO6j;!x8Log%Dlk%Bzyoeagducp`s!0oG}U;#*>Qn*ddYnt6WB zpd2XDs-7&lYc}}U1<ldKbCFu356Rggf7SRD@`b4T>7OkhfMEspHPCQeAg>5XlyeEz zlaaacDXio%$CIN0GtVnvGT<4$)#r{IJBldm`OOV#U8h+keo8*|Q1cpa<lO0{{i1d6 zgAX9mFO^A1$|bxuxL>kdlhRnK$myL4h}mGi{mozBz#&FO&xayA9I4#5q=6i<(q99- zUW|zT)d>@OD#=Jn$!*Eg0#O!>$QP`04%xFt8pG#50-p%iM)VM()eT6<98ZxO86?C_ zeAVk^uwS@xjN2cl(9c=Q<uIcLQFr$t>imL%@y^QtGi!El4pRkd9RSx_Lc@b@sF!c= zGSO%(`<q8y&1V#8*U4Hn`>Na!B&0xJ)JWEdby;_QDa8J*?wKI2?cOB<%T!v6n*Ve^ z?+E^qe~AZdYaB_lLOEk*tb&N#29@wxhU*K-j|b%9TA@&Br^|BLDWFlV>vIkNs%n4; zO?=+D$7d8*M{a?@EH62<`cZ5~zn%7IZimd{dcRa0uifo`N+fZYB}O%f<9jGi7;RRf z?{v+(lc7JH(1P{2=Zqamhyew>wxJ=fnjld$I(3&gH1Ams@VoA_k$uJS*{T5g%99zU z)H2<?VBZCMLVem>Xv@QE?wn;u$)veNc)e#ySbWLoamHnX;pPR*1xehLt*V%rcd4xN z%m}%oOV<I8<aq*N=L^6%HF4h9t<QaGrJE&Q-Bq$rs;(AQZx7*>;=ITPEeKX{5yvtH zL5}jVwS4?}@s5CXM8T9^;DuVl6tl_GZ%tb|mXtw5T%4B!O#=^SbuZ;_LDYnwn9~&B z!!YV$#&ocTFS$05&(+h-k6Nc_4k^3r=<_$IV*n-MF<*e?7+WO)L};QH_nO3V@PoD1 zHgz*-QIHnik-$>F(LW6+9D1^_X}<XsglHlv#oRBvx*=Hao}%mLCeu>9gkgZo9zpv7 zLn}B$UbrC~ovHsa^w8TzHBss_;0>EtA#0!P@ctZ5*qpGD>r)r`ZmT-rgpaj#+F<kk z4>9t;qdxzCFOAq4{!d*ddkGOp?OCS3aG}B{*-ao^`WSI$TsVcKgl!(z%uKfC2ue?H zxm#NUn=l{#K;24{m|0cG{!Ol=iH9TWxITglRiPyJ|NffITCu?UQHKnZ70PKGV+m%# zkbHhO-WI+G;FTb&Szkx;BfIRb<A_XBe$DYXAfKZl6ERy}CFMI8b{gFn88mJEfCYRI z$G&h+|D<Q4w_P2r<Q2EX+B@-Fm|`UoG(l5pzC$_Lp-Vf4j?`X-2csu4=iEH!Q6TdT zT{t;~HouErmVrW(b#I1ZH^GWnT`&UI<0sz#yaG)}SFM~Djx2(7pT7G#_L-N;Pir^+ zEsn_FQTMokxI}km-f*bi<3jDU7K1cH67;n0^@k@}oFkNh32qp4-Hd4j0L+?}u0Thi zXP&fyjp0Q>NdXNd&68;jZl0^wI%tzKvR;veer?p2o!qJ#KWb#G+s9|E@12x2lQ;Af zu7hYFkpy?TEU+G76twRc$uQkNXOWcdn>Z<7KxmEylB}8^BaV3jwq@3vW-}rPduRZb z%Kk+Zo+0F#wR<MhJ@tqrzFRUahpw)woI}Q|XY#(bOS!4>Mc-+sw}g2^uTRChnJ-2D zyW*+tJ~YZBdxH0d=C%VdY58ov(U~aDvWH$i7i{^of(Isa#9>^!p$s$w8n)%tf3YdJ zn`T=oe_uDevq?*BuNYh?57>#F%@X3(dla@qrObeb$m;&Gcy39*+9g?P3Ag+_hbAf_ zZ|iRPxi@RnV}PqFJLMSUWL7y1VI=?wm}yA5dTPVURGv<c0}&k;4;;v;knD}%fqA92 zPIbxjhRH}$q7?7cAMTTmTia!K6b{1<&tFK~R73FQ7t;HmauN)9r0cOvocP3RlEYx8 zxybP6i47PpI{Z`<Pj?N`bP5`U&|ci_OetlUl&U2;8KjPCT?>^ovk_JGikm`CjPN2D z=;Fw73-tj~fK6zi=s{V(tT(!ZLZ!v{<c#fu3v$VtDm5l3O$Udu-fPZ@6e;244|0N* zwW6~6r*=k=Pusjw^XiER5pL_;vTk=d(<FS9eO=Dkc_ljd*$(EKj{sgOqoPY)7px_n zQ37gKL|}t;%&){}5x)7-+UYIddQQkb=Xj?e$*M7xafA3vPQ%7}A8;nrYdN&k54wpJ z+3?$aSbtP<y5M>3IsiUoWi(gahW+@`U|dLtO}c~<lRCjXrvPk`%fSz~70}2<o;&EB zL?_lvwL!us5YV8nVH*8B?Z`u1q5~>SZC99W_kF`{0@(uZWt=V8@z72CIO1FZ@<h9F zWb~@+#@z3y(niretCraH!o0q#B#j}fM@w4PVl)8<h9uBIq?o6s2W?GVlA8R!mFuXh zJ~1#z(741>WDBZ@YSN(Fhrd*6nNUKO<Eg-SO<eF?7gy`0sr=2@#lBLYFu^5_vJttp zgj|Nq?~cz`Tt_Rr%Z#<A23;A^a@F=*XZx}{@_U7j5U<Lt1X1=HgBv3=^<)Co<A2in zmh^0^G931S6L{yWeKXN1w7yD9h>e7-B6{0yf9xeJJsJ*K;JbSIHr2I25or0w^nH-P zv>}m?MfHUHlDk~U61yGVwfWlDly*3P;-#Z%`<4uZy_}&C0CQrCfliEp<A0G{YEcW~ zuc*D5B=M}|V?nfyH8OjW;?g+DOem!gJPeHV{o9MAYBL+`!fQ7hE`+9Dna+?EfDS?1 z^QY(znX{W?xK!kcB)eZP#js=XaO*uyV&#q(GW*~exEn{5YPnaeo5If;*h}_X(nfQM z)+R7`)n%iOfnKnfK`4K~mP_EOnIW>MIMKgY;U9-3u=DnB(ib#Xif2c5a4&|cTYeY@ z0Uw_OUy%#HiMY$Rm#QG9TAZY)n=<iziK)Bs6oJ5ta8GrXy}rD6dKkKzV^8nuF5}NS z6z_?duqsT&ObxyI9-^D<;caF9>Gqx=DE8l^ZS~a06HSn_ds3ZXk=A!72Vhz;ie<Ve z7cUIOo|W3H^=&N3aD$w?8H{Xa3Oy3^#2UjJT<Q9WzWnh)^D6Vb{yp(HONFWeyjScm zLyaAH!l?Ok|87(mICCK8-mB+?@}Ze{-A8`A5nrKx15H_bIyU|bAWW1M`1v*xf^9GG z%R)s|LIttGM;+a&h)FuQnTUy{8giH`wbF<90>RvD&Fkhadc+xM!jEPU$}<}0+a#yr zSlM>9$$Sddzp#FP_yk=OR{aGXG~vG>gsU%|J7+UuZu+2W0dSYzs4hM_MLKAEHA<2j z_)<2R$#Bu%!vv~7i#QvVP;_+=QM6DVvvvrx@|Zc;1DLh96jK-s@mZh2jzLrFIMnv} z6}FeGvOhvOri=mMCF>X`-0PF?UtCnHzIq@jxSL`0>murU-gBAgF~o-;6#HR?-}sTe zDU|SJqCeg4Y5t8_e-dHRqQ)t~GFVNqU>zJ7AM4MR^cEeFL?a{NBhQ2PEh6LzL|mzm zOnf&Ds6loYf>aSdqmAjfAVF_uT14`6F4-5u@H~UlBnQymTG*04c+?s#N8fPu3G4x_ z=ibTGl)~hXS5Ii5e^w?md>Wk54P5pHjD`}z@Rtg=jb^){a_q9rhQx$7s+;Cx<R!uj zXpz(k1Un_=j7ilb%{u8jw9`)(wK%6^hm<FLAA)EL$0W<g+(7sUsGIxg^2N1}Z_XFM z{rdeChTzUvcmg6JYhR-_=W%<i$V&D!U(3SCB1f?Vuh`WJNVx}bu9)k*`0_=&b~@#q z5wNn|@NjKZ+<rLzs@hgy<W7BWhfjX1I|>2p!uwZq!&`87i)KfM!#5B3M9K;#(SKE_ z=~s_VwHn;uv>?TEdVOJufpL{3(}aV4V_6U2DzIHA;;#kr?<)+;m-mTHHGh;~3@oWy z{JC;xzxOk1!#FC6_ffawyP&k?)9{@9_>$~V$5uo<c6~vF!yM5WkqZ40(B5!m!iX6_ z(4TvH?3Ex^Cw=x)Cd8BX6C>dMe<-`hW?RFpTg=n8tu<}iwr$(CZQHhOdrjN6?U|KR zm89OP?30~;Fh1R*)zf>w8o*>ZRi~hNpUp^T`W5wv*!*q&q7+7_`JEXE@iJv3%5zXf z4}WjbTTCFWf^$juE@n}0LvWut$voC&ms!N5nLTF{IL_rr+t0FQCR*JkELI(y$vsVF z-&C3m{d&wm)##O$X#;ePLfxd-s#LTd-+-ETCK*!SilrFH%qX5+PpuNb<`4zUfkG== z$&tD?kZ|y9!@R8_P(yOm`UPKt!v2L_-pY?Y1qxJwkY$cdLuGr`n;=b;qLz;c&HE#U zsqseaK{_||kWm8mtqAmEwZ99SVc=hF`{mtbzh1KTCkrf6$VEDVaZdw{>K*7YmSVT$ z9MX(`Qz4uY6Q3UfW4y3zE`+*o&!ayw@aL$YT@-dZ+07&Dwx#&>byRm`a^Oupx+^xp zHq<rRWDiq6Loe@df)EQNumXzVGh?~$K42&G3pRzFAOr+R8c_OZer$eP3tYB_#cz7c z*5U}#4K^A7A%^}p3iJP;ArgAKY=^BG>e(CYDSfTIBt@Hr><fU*vMpHUBDJEQ{qZ@2 zdS^Yt)2dHmN4cwkqdOK$v_BSHWmDJW0)^hed>j5=20iY*Fs2Kk-4~zjyx1F>a`6N5 zB`#~(MTfC_XWA#$xya>uIpb)%(&-N!jxAarnn_;`e%C781Th(3fr8v!3VY@JC{Y1) zuY?s8BkzI}Cq*zc>pya{`N;7gEF~_;-C#7O8PU>Y{iO%6dZLW^`GJuLv`|9IC{em? zmyhcWTz2iopF~2kB#%`f;B$zBB(XN*=mEIzzUhXT4v486PcdK;uj|nAQXR5iF|Dp? zLMRhFOspGDaL-`{t(?~3i|SMxMOP-2Lok-<GJ7jOZNT1-a{3$aGSY*h$<lro$i7I^ z?fkm?x$Enmn+%qs(qAvxW9n;kUHl-3eX4Z7N)zi%5p{2grQE(UKX8zwk+=Qmh=^te zPZnifpbbw`!(1;(4A+RYgc@%R&i8L=JU?lC;Zz7R@S4FivODnpGnJ)8#hXbm0L*cO z!Sl71HD=JjIy~9?jiGp+N6DIb&J94&Y)%Ms_N@?1no&G{L5tp99bB9>P@-rWQ?%1$ zY&X{9=aq|yVxE#SlxY8%ICWGjvjh_~nNF}s3J=z2Iw^X$g4y4Zb`>sOIc+jt=5%36 zvYRZl49v^EsI|Y!g`az9m*eh_L||goV|9Y;;&gI=%28ez|4tAs0n5?nV!qqA;VI3b z{4ZzBdg{Tlb$`*uCQ@c+;kn<=!IP8$y|#l*uZuQtu;p~yWeC<`5=X4A{FFI^-yb}4 z^rqY7K~Sy->lsmVx70KfplQI<0TZzsy87;&b4&XzyMnyLOLyl+rVtGp7t@s9ReUZR zs;;x5$PU(Y?SjN<8D6fzpS41S4pXUS$CdeO>+r%v(&IR`YSMUIP7O~VIxUc1R!&n; zRuq&~>K3Ddne{3sr^vTVe^6Et44m)5!AB#?CZ}WnFk)~zX8W9!?khyZMS5A=_Rp*Z zG~1vudwPXn<@ZokTh=L->VJh4qvSzc!v8r(yd^jGE`x^_CUm0>+CQZA`${Vw#Qj_t z)B1P<lq-RmA#y`A<v*6B1^De&^}uPTdPXMk(%k@emUWM}ZkE!WEnRtsGMa|Nz2In- zEuhSQx7??k!{e)-3AD)c6VeJq%SjG1`?MDZp!Ku9u^L+6XI=&I1=&W`9}AHEZB&DE zvx?m#!KI9Er2#Q!U(UiCL4pFqBmRMG!eOUZkyqDB;TxSZqQqhS8sWKE6{&6gjJ|xs zhg;qr=fj;o<L!UtQAVYP3>hv<s0=|U@Uuz&h*38sTVI)v8(UJE_eaXk5#;#AAQOqj zlOPtjPfUdWQ#}C9$Jj?zflq?1Qy9HTsitTSS_yvK7zVM*UWD!gYh!7|pSN0|<gfN; zzzo@aCy{?vk3uB8nxq1i$AJE{TE2rs>v(GU(fJs^<9>^LaLR?u^kv?M9jauEX?D`~ z94m6z@>yV(FXEWkmPU463u#^RZIDw&G5|XQg655$HiAi1V$4Y)U(biUt_8~qaY+YV zx0*qevK9zaPvzLXgbfAEt+A*EOVp0obP>@Z*uc$gw`atv{=~!byJNpx>T<s<C~1zI z$rB_(FSOHCVg~=`f`5bdXgMm+K>>o0`syO8)Oh3<CKx{o0P9;=+pP>wd9$$v>K$^8 ztL3cpj$g-}#yOA7jtTWYJiGsm8v1XD#QJ}!p^X0@L!?gReB79HY&GuI19dL<rB$b* zo;@Cs7`kwFtwA2erq&R)NauI}r}Hq}DT^50Ry{%TGp2#k;s}ZMU$JY9v6J57knvSr zU#!&^uDJA8C#IYd%rV4C#dekBKM_n^pCs&j>}m6i53K>-Y`l{bUS;_~hS_y)7-?*_ z)>j$Ri2j2*d3QO40cr1LrD9bDch+bWi<5ZO*rTawwc7qG`74B^<8YYQ3c%?%l^<J} zhG))qlcMyQs1@peUyZgeBL?)d;@dhsCnJ#cUwo_NJ|nwPOsp%^i{$2|fx_|aWaN@S zMxU@C!*l=wb#zGws48LREBEoXwtBNE_6Qu-3U6iCKmo+oY83dD^w>Wpj`d(!r8HI( zLC$fDLNDPB;9-UFdDYzzCHYhPGp5GuF>)KfhkGhev)uSJum^^{bcu5o_d(6T*HM=w zfVe=vbSkQY>M`9V>qzSP(iwFsll6`FBR#Y9lz{m>S0!4BI*Zo~(5-5r{AJXI+tF}7 zN6q_U@4x6b(>u0i_z2-7+Ri|KB1qJsT?wtr<AdAn>)b{%G)VK7vJ~FUsk$#b+rf0$ zdA?4E_AM^^O>c3+#Ds|rhnL|`-zu`u3mpJ<uu6RcqPO>Nl>DAepiJ4I9<ZoY1i}C@ z=-LsrI~^-<&|7%59%P7)!v6FImTvdyY?0kcMY=~mQo_7l+2ZL6l8A*>3oiquJN56+ z&HArt@WLX`3nX~yAW417WGvqrmw&iEHG`+98utKLiuGNZ;*R_iGSXAPl}w+o5@Wx6 z?%rrmLSLPe2(tw-vAOB|I{B|^7qDF{aRC(TS%Ya%-?on(tJKjxXe=*ACqO+(Hy(_` z%=TYqcVnEz^&<6WpauTCA#<B#sCBwc)Tn6fq`9)Khg_<O3fTn<mr*Q~@VF=fFXpC^ zB*TyB31kw3`!ncJD6AqI1VV*#2DjGOfOL`>N{C1)`@LaqjZOCUiAV6qc1rCt=jRa5 z-XMcQ?J1nKwU$i%G2;9}8BA=53E;QA8e`b(Y3efS?Fikv6_W1RJRp{mtKGWUFM1hP z($KEBp*31m_^~=Q@^hBoAm=vSC}g~=8k3*gBKy*$sc_zN6sEn|W5Sc&%lE(STfmO_ z&S1q&FrmDK)=fZSdh%Ii0iF~`atj>L{}%c7xr>x>-sPPN4#NcWDg1f|^}OxS>dNXc zQXFIkLCq!jEUx`vl!SE?u#u^OLV{%j%+}^Bi`;?CbN>!Z2$+>8to?v_RwJL@#lx@! z+G?h~^ycOjcwEZb)emNanTDW*ACk_3{Po~QnDB@4cu!o2^|mY$<E7v{56Z^8NYRr( z97PnSJtgRKEr^Uj0+x>TU_C)}Lf?o^6A;#lh-hF}d5{A62#=0!Wyk{$=vq2`#ye7K zP+w+uBxc3iu>uZYE$*LwpGW+VY;Zm#z0KT4N~%u1XjQWp74xPAJq6~nG^M~gtSfDY zVI&I`Wc+!cYzupI0t`ut`WdLrD4{gUDg}4zp98b)NIkm$8pt%ezMHA;%Mg#?A_&Gl z7HS|A87~qAfvtP|9k3i$6!o<C-Hj7uUb+k-R+VYNTu88v5AZ-Z6=PvP0>D9dS>%Ad z*TCU~9KvfF@P;+U;iU%R=M~)P_JZ+L_Ah)42gVpvt3`Rkv+}j>9CjnoW~Jmf?|{dN zSEi`UBXpWo)IHtUm!mvhbKaKCLOy#_%F>r@YFib5wX;Xs7A@{iay#5u7IXXFNI_C) z9VBr$v!l5fK(EeKg4(v#WDwo#_;PmRO{@mD8H$I_m=_wExfLS4GG`kqQ|!3bByr)N zz~7F0lpl>VK~rsrtyEa$eh!y_(`*3vPW#zy6rdo0OKtk~aQkX*@e~NcIAhnolZ2xc zL^)>61*HPUbtVjp^+)jrVc{{sHAUarIB7P!pG6PsQ9!E^<Qb_?7=YeR-dWWZm%K=Z zUwT-&!Xc{Ct-P+`vbxx94d8Y*p3$xz4Sm^YHUrg3n#2N=OaYt*?Pi)=S8I`ftZMiu z28M=usL8JWYeTZ^EYu2`wSn9uXi->;9<6rr1ICsHuNyZHQ|Xz(=LCQnp&$L|o<z%{ znU*nO1N?0+FU?RoM%&0r8T87xtzY*CvZMu0S@^hAKdy;;REy1UwBCTMp)G%F)`?AZ zF#<7SC-Mg4vc-Ap2qOyQ@YNf*<T){Wc6<aP=z<I%=cqBn6l@8b8G4!!4lO&J`qS=4 zF>wuFqTE<BU+Ac>O>0aE(gNF+4V+(jWz@Ad^>G7K(J5ynuo3|+>Dvx;{fs#YS58ac zMIC1qN&`eWc%0@)A*rNYoZuLb)$0H;2xS0uq(EjmF7~U6Hvc^2qZYUe*LkZCBg6Ce z0@dM1yq#Ko;Y;R8Phpi=vQ>->mQ`ly90<~2JSIVk5G3sx%d2wjwTufdO(hYIx1Fl% z5NwKO^8^@G0m0#Wu8<gYR79Qj!4G|0D-SROSb%!p_xzg|0h|Vfhvpgdw+>@QWE9v@ zYu_S>d|fi<ohN*7rveK1MUZXsuoFd3Ml^&dTJ<mhHM*9HJ0?@Dj@dBngW`hbRm!DR zhGwkd-+%Az?~}2MA6_EgdZor;v2Z<V_9U`53g=J^i+5=Q4`BPjg#B@AN^em5@<5%r zVi}VxsGDsQa4h-@dQma4?yTXG{hhj8%q7X~X=rM<Om}4^qQYXk)&O5YZ?60{@)HO@ zw1vvlk%&Z%*EL6mksjvbl+E+=+J+L-1;>|_f;!O2bJSY<e1#U+4^Zvi(X1(4$wN<8 zwu^A)KbTPkk0eW(ufuLRpoSP@gEoho)sU)6-dicHJ801s9;TJ6K=Acp;Fk2yK$xGl zr(J6XT;3&qnLRfmxi-n@Td?u*>m+$LhB%f1#3da!XQRXdH6A;I<$VG!B6#X10l>jy zYjm7j&tw7v?1Fs;l?+*n^q05t5|In{+_q<(?o6zOb)E%pG)OezqZYS_+e?~>@on#i z+4VkH0h9F@=MdTj+$xqdtZ_fOH35tND|R+mmZo}bkC@6-S#WF={|AY6Ek^Bm$?(!> z^fE;Wl|Mz+@SA5NHT$KMTaH15QZJoQaWxnaxxcLUEkbB5$+<aAEw0mUMqF4hiMhK2 zuc_KmRKqt)pdk;dJW*{N%jl20Jr7~TIZqK+6OxcbD1~6lGYAX)NrsW3$19}Csi$l| z_aiieu`-7|$o_d_i`(jGMCqy4Yxw61JUd+ENx)7K9$bYfUMXwYmD0;SUy9j%tiin* zgc;U~uLuF3LaD`BKp&w&E(;4?*Y7%dm`OxGho#cE-5fS7cf&e1dJF}Y2jJEiizs_+ z4TLLttyqdw%$l>nud@4ph>`!Ldi?+FBC-D4OZwj&!~-VjO*eStcigkKlIjtO3+WHT z!3(PMxg9J+Qadlv%ycN>@XY}7NyX*ojJAn<IoJ3-wuEvf)F6@0t_GPV+J$IVE;O6M z^*d$%t%mo!^~9Kzt&}Y+{AQ)Neun{u(D#Ob0d{o92uD4~kDpz2Z-!BJUNaS&GA&yU zR^qm}T}A8#$McVI)C(GgxEar`9%4v?Qj?b`F6wsSf*oDYcGV*%4`C!A%6M^6$zQ8O z48xcMR9WY^d;ANqnV8&cpj-6|cvL$GWfb#3e>)E5@Z7Q*D8z@ggvwMR?dQA8`Ym)- z(gfQ=x8MPZQsR~TN#5HS#`-2Mr&-+g76!%K-XzS|iCfs|Ya~33%Y5<vqY<t4JK4>{ z%PE|7T2oI=bnP>$@4Tbkmf@S)k&{E?fzPYdA!_AJydxNp|L*TPu|=&1$>10dZ~i>! zA>E4ZIi%!1Tl&S5&nra3i=##d^p42zS`I(bkJ^|>Z~HGWQ29&BhD`QDyK)1WM=3O2 zfo3p}O#2}7MnaG8f-xj-mI>^J@!dv08Uv;<g%z<-8`R|=*&FsU+3Y6_|89zRe;g^o zNKhQeF!dQ;M>)mFr_F(N<Nk3+lEc)bQ>O$~1nkzYACa0LBMqqq|Dv_{O8SnqurCjI zGex%-_M6TzpuzqZHH8B9{3rd(Q={?s);P5t@C5>HSPS6vmxmtpG!?=lpT|(jux~_* z`cq!VP{3at!^we?ht#R-BJ#AzjbS&yC3&1_$K34=(e9|55BBZoL*OB2!cuAPvomhJ z#Su8{Iu${cV%ct`{yFe0^Va)lP60AeL2cic6-06l4t^uXSo&rJ9nv=T+sV8~<upzz zFN`h<a>KAjCiTMk4g=1`>vw@MRVa@~`2qr3Jm}n{xkWY+FnW1K9ZrT%MeET%ZmQv> ze6R6x38sf1JtsJb$NHMpXIwclmFGq4y-*ZALzV>k39Nk7=z4dK31iY-Xi34cSzvgV z_yxv$K%kn58e*E%R3q`Ug@z=j#Bhr9Z{D10qTS1$y(N?wLL}``rOeR0h;X*xyegb7 zDnl5Ay%`cNO6!0XGJfXken!+r262HR`h>=<)R}?dhvTZe73}(i@1I*2m_F_@(oG}@ z4f3UHQW6T>oY!qG<c^&gq_iONoQQ;1i}BU6-u#}%1D>OQBivK1O3=<ce3ewbozAHS z;_CI(buo32%fUHMjrXLL*`(toCY%+Lc!_@=x{%`W(Qt)8#&b!JE0$P*0Q@%bWn&+% zEwUj|6MDA(8GNjet{4pHS!0MZiLo}ftTmEdMzK7_w9|g?F3pzzfWEWjG%p|FGx{W- zbSDHQ7;*hmI20rP^8&qLQY{!}yfNJ2PNFrfXYXt9+6I;bS9OA-_7<GHaY2CuxuC_8 zOZCrWbv|exUt<vhEod3s<5?RHA@UkVQ53>7A;Uvm5Pl$Rt<<^wg&9V?{uGw0^WPRl znAcVNWQu!#i0ew5h@$gkE5=aq(;-b!FcqnG^c_RhQ^JS0^7C@~X5>dUOx_38-C=wm zoabFm_!z{reKV{&Y77Fl@D}aLz+qITkLuNzO2naGRzvM-KC!w0spq4Zg!svs^oy#$ z^0o+G^4CAB#|jWS_KeBTi#^)YIe%-Wt106Hii9+Q4^`xJ<rhlMBHe=S<u$d9bkRiS z4<{fo0wfppeP%yAHOG9dDE(opZspjkiO}PO27JO9k-4YloIC3so$l=9awxCU1r4M~ z*s-LW_sjX7m{_)_>VA!wHSd%dm$uRsgue-cC*>4sCwwuh&2%aveWSCdAVNaC&s{pS z)u#!R614Qs9IYe(w<XuA0sKK=KOdw(yRuV|9Mne7+BQ1$tIo8+NI|jnj<lwS5<#f9 zQe~P3XZt5W!)qU#?^Q~Q_K|9tUM(x5#Jaz*`3RRvL~`Jf_N_BagjMHdWy3gMWk${2 z-(c<2%<N2uW3~ob6_4U^&#I|3xq$7>VsZKvZ_o3AWzRtR*=9`AGv@rQE+eo|O;5Kr zIeQyKOUB8SY5d4P?kl-;c3`82?C2hW&{MrYYaDXBEY|!NHBVJr+d5kCLv2>rfHO?M z<*Ziq!K+Ir>?(Ztwn%*ZTI5FvjTp$tM`!g;z#pxbL*A`Wl&N3ax3F#k&?!U_<f!@` zOSD5kiPs3AgY)1g3;eLs_yvjTCkJ{C`$pwJo1ONCpGWLOR!Bf->!OZ21;ODBs%rxQ z68pjaz_Z)7KUQNExr&GK6na<~fJ`hl>D}^aHfuvftaAs3mH`rmII^6V+@nU$_7-E8 zANbJ~qt{CojGLr$fAGY8v(f@nbd><mw%j!k9H(l!j19UE(naQ(fD!e-fRc9uXlkgR zjsMYAVvO+;>-5+BBVSa{rL#)O_45cb6q4!T<Wg0Kz-|ZM_z6Y+SHKQ{@km-7NCc{b zM}}G2R@MqPV{(Ih9L2InFJ%SeD$lT4d-ThEa?Z*rehsFxc2(X5e;5JDNEhRp0sgb# zn&!264}UCEZ=~G>lvvJI4R4?c=uu{9T>`Y5L7Jdas=ksDHA@e>QR^Q8(f?%Kia0^= z2jBRIHbpr{lBFJP;%{TRpyke}1g~^|{pX1^y`oR`I2tj7`{u%pT%f*aq2b^p@^zMB z$WlH`KbXWOr;)qtM?h?&bAAUykPsMoqJsC$1A%c?CUZKazV>h-%v#dUxLgr{CGTnC zY}Eb*hN>>f0YHBTMYjrYJ418a<!R6a5N>>Wax84d%c4c+R?y6%IDmLWh}84l4z9RO z5mH~7NQqCX!AngdyA#?lDiFJKwE4Mz)af8)vs)s@c_E$70ojtSb+L#74FXg949-st zt4<5hhC|2B)>S5ZW1}yd6%p@3M`F2-@#VmtGrZTJ^&YN8=ON&4UEbEj&mnMOyU1yf zenq~}&YE_>=ytV{W*M&IKpyz)_EeDf^JwdwA(%+}aK>;GLHKgtCzF%Y-o#rqJA=vY zX`gIpOCO6Pg4lX2-%xS2XM<8`uMobgUzq*tfO8Tuo}G6jJ_p~TPOv`%<hNvL?7HpN zpfx*^RnEZUq@5DJri;LikO0eY)Fu7Oz7<@F3kH5qJXb(%{=>gtxM&&F%UQ3Q0l_RX z1D8{4ZdnJR=UHUP8B%OtNp;YgFr}nk7vJ5!iVgrh-)Ww>Tr8kJw*GQnjh=>nQ^T*k zpcThOu9HB{gm78M*Wa+%(ayrj7kw&fIKUaB@ESta4W;{0EG(nD?buq#I(Jde!lQOD zNChL0bb9<ZAG}2we+L#~$A7_jL_a3t6agku9&-?%zN^mC-gYW^*cl*j52x7oP<nc( zCZ&j&Qa6xsij3o!4KHMtU7OgcOn`Hg3NPcFjA>9SA|11n?JZpd77x0Eb!?T}Q8@f% zp*qsyOfB92z^8CpzeKwu>)#>e6GGi*Vf1C&Rvf{+n@UfopkUnY;x<hc5+piqW{?M- zHnkv}>CyjtOlA6SROSD{;W7QM1Ni^Q;XQ^=9g=;eKg4&BEXXh%mhH5Y?Gmy*<s*r` zkrZ-S6ZN<yuglWw(4kd!=zG^qh^@A!Yq@Bs3?%TL`lVm<W>kPTQPr-4maJXmFMWuI zbGHr0P@!D%%&M~fV<}?PR*><&;$k%mfqwW{W{-nTsG&b_n)P#@ry8L~LLMDw^t7>= zSd1*L+f9ox47p1?dXshxJ<n{Tu%&)8Wzg+gUs{!-DQ`I&O>dI|tN@N}t=tWuC821H zs}BZJ{AsISv+FJ?fqFiA`5e@N&BK!=G&82J7BR56aNoV_`a1Oif4QnJQlcjGWc6Jh zJUZtA;IWs+$UbSl;T~&MRkf4}SMw&6&h2w2og*?yKy-!p{V76_+VN076Xqg)u~Q5v z!0K+B+jvtDGIe`r3c=XfsZ=ar&d&dmh(=uHL^Au;iB|&K!IL}c1IePZV^-1**K1=_ z`u3Dl+Qm!#GtQmjZ;k0DzNoUe_6`E}9)lA3?M)$nLz@Fjn*1rl^J4oV67#XCDQptu zX|}g8nfy;?2{y#_qH6ie>bec>-!n&+UVaQdv>?i&cB6&Goj}m@H<g~iG__p@9uM1I zEPm&c#RTqNo1aYIc9`$MyRGZSVzPY=Yw?V*)c6c&A4!)xat%DKm`;NH6@!}>sU^^! z8OiLdK(o-uUj#Hr({QI1BC)RL{|uqNH$hB8i;Xd<q-gWHdE{7B^B_7xUIBih%5dRw z_p-hrn#jr1E7sEH7BA4^23eP5@gx+eya18Zk;Jx-EsMvLd!&aLx)w)>{Vb4IY<hIp zaRxXl5ybF(obpw*n;CB!4Ja894S5051yLj8<0`J8$^_Y&JAA@`O7Ei!W7PB+s|kf! z=FGEu3)8yYUeWss_nuXouL!*0UdJ@4U@|sD*;}9j<XT}ug2Ysp0m8AU;4eSRgH1Iz zD=EPS+8Virnl%fss`e3@YH_!=I6IGlNtXeu@zbtJs}kjUH(m(Z;RkW4#>|IM3LRU6 zQMU8!t%&gVO^xIK;^|e>Ie5h>?qGs{h5vfia{FkNQhAohji}H7&8G^c3(El~pX_Wn zs+MHRFe=>lA8|q18O~<O!;|ANsgOi9qU3utSzX8ml03xZfKVc0K_H#UzrxgjDC8TG zTF?dHBM^eqPUDY<0CAV}AGH^}4=%`UdTi*0lwot?Yx3kW1(Wo@YlVj{)!%q)Tz&pY z((_8e!u{!OYy%yFaE!Qc-0xA?J=12p*WWYYIQWJj0LK@no>0#CT3_7xQzetL-AsJ) zh^?H8N$9*+aW=8x=L?3zrZC>-Y4_>Gvg``~3O;sp!O-bCU}Htvgl5AUWr5c^_9(Fq zt~xaNoGCd3e}AFhebKN~)i(*%r}n-nmRrZGP0BrUi-@r7d|RiP*923dIC+NUC~;U? zCW$x*5^Epr7-H1vMed^O5}2TKJiUzWCQ;`x!Sx;V2d4F)pT({d0pF(!q;<<#&D;Z^ zJ9(kwseH_o)lwrl()=7Sbn=#K(;R%$=+L)`H5Y3KnqnRX>BhjA5}lY6kvPF8L>J}I zQ4bN`bhbL{2zNz3suBw>0RWD_!p=e#OFSWzmLC=oxD|h$pmrdoKspo|Kg6rPtFlpk zFrD;C(h*_1`Au^SoJkk+EQp&hzg$t6N4Zd2LL16(VyzrnPce-r#!}(!h*e8}9Lz7I zNaQnem;!U!$}qKRUt9IKD2XPjDdzz-kh)pDoUhUGh?A!Q{JKq2y#nCFnuVWv=%L`0 zVkwHj(3RTKt1laSM3qot-t0d-)BlZH`agI*7S{hQucyNKP@us?Wy{4w;8(#dUHg-@ z8zyIe@WO?FS+cTaIY0bmUW}~q85@E@JLZB<vEnwEIuu^9SX{bCorG-KgI|>yTU{OC zA<}g2scBI=XzuH%pAF=?2&|HyUoo-ZY;q6NPn*1^pMoXel^}^EfBmnfCarFuBu%tI z+P1m$U(1a1I1Alcf*J!z10^r#5Esggs#A$}3mGv4Vw>Z+db5Rj=SJa0vKrr}5KZ@N z`NXu(SEL+muYdby)@{EN5{O2oYLCcCn4z_E?}u7oXoUv$P2T#1x_~;I?1Ku&-ia0l zMx{emtmnzj2*IqYo&(i!7qD(wU2Vmjh24zZ&JPiT>k5#l$vqxB6l6a6%xs?$XcR)~ zfr+Q{Go8?|IAL_fqF_A$G9gUHTYIp01|E5?3@fj-1{_e7w@+qia)Ik}U3n{;2a2~K zJAg`gwR#hcII8S4Ss*(#tjbia#MvEPJ0F1$NfVUtjoEKBJ<Ly8wSatbFSSuLay6Dr z^&c0lN_8oQ9mMVo1@4pi)qR`1Z*K59>#8b8a~0pMf_GzpsvZJ5N`&(!#$L6C!hDM* zr#p>WeM%o<dkJIfP51pqS{u1$dg&0msv0$Orcb@*paqJ}yktT8Q*04|04q=conyQA zNm-}4HE3MDaHpb^6`X^F+&Id3G7-lb5VVQ4z;mwa7*upZWw)Y0WEUXuV8=uDPjK1H zbS5wjr+OZxrLfPt7R3_eD+aWjRiEnlwaE<<zAt0NceHQr<cJ++v-r${LE>+kETLEw zzn5}@dQb>B<4d=4MR)_w6EQth-Eo)6;mv;^ZI7G?oA6%#)nNJa@8S%UUq+t5ld_U| zw!kDdzHldDC%41#qNPuil6mQw-OB>*a-;CBs*xsHl-KNQA{0-8;}q*6FNtyyX3OE) zR=AkVGEj}{$S>C!p4y~FCE{;>0c2*I(#RagD!b10fT`5uo%Cl3j{)0wv&Dt_nb~Cn z_!~|E`l|vdAR&6GBXs<kGn7bh%|_9iQjCqaJ6h^Y-fLOdfiO1ghUVPDdg(E7$$vsu z=ih)-eGxOj+~#1E7t7Z~7Sx545-(q~Oqs$Q*dR68L^C~1pBk;SBhBY6xZ`w&<mmD^ z8RAJTiFdQ*I~p}@B>Z~2u$R6TfdMTAKfh@BApij#VqcWmPl(yST+zU<;A7D#y@r9s zPP2PT)l1VMlA9zi_B#@;@mw@UXNdw|%+Yw7GbqT-7L5JLX<U7rsy#4`=YExf@oTQy z9CRi&8^8a3_uvS74q?vA=bj|IK<m^-Jm?r)@mAsuZ%?|>-3OIN&}*0*dMzmWEc?`S zpebuXS<SxsU8-Fc?xDkm@PND0XbA<Q%Vnx*CcIMG^IOY>LXMlIqr>(h6#Ob2D935S ze!AM&(?p5;&I6rX`cZZ(Fd|LVH}6b+AlUB;#pe-z4HeRZ6a5pZ)nVom*5m&dgOngK ziOE0qdzjm$e!c>h1Dx9AU<Go>F-E@R?!ggy8$DsYS!NH<=|L~~(P5&IwV40V92+E< zg3FW>9d@(HppoOKk$#@IthSf;K;YoH#Oh8Q_qY57B8Qq!AL&-^`|GZp@Lq%=^{>)7 z62hXNO>G@;ic1F7`~sIuxhYMH(AS_37J5V;_qC}VV;J%2p`?F7X)ohPIJOs}*$-6( z)Mf57C%V2BAO!)6-fdB<iG#L8Crr(Po*sbci*OgdzUb4wI@}URP%y8KqEt!Eo~YyS zCx@ub`A3z%l3W};6xOKNFLE1coILcZ=ICT3LBZ9NLwa98LP}BC@J%$DfjcyPIbmNh z9#xZhbu$<_(7@DRNOMp-FE+7wU@{$)Ir|-+e9Hy(n$oCdq#xFzap@>MlsKHa4d*}Y z<_<IV&(6mU{5Q$|cd&<<GyiHxm+t6}jqcS)Qb)x0y;=lY%7C_ap~EYxBGOzm98`RV z^C<!%jo@yjUuY*>uH4J1nto?rqC)AS(R?$&XAfAzP2%gG^I)G0su;j`QYC3|eK}AE zeb-t^Z)>xN_G{|fZI{}*Cm~t;e&y6H?db(GU{Mo5lOGSc;#Lo!Ow23W>Ihw%wQtO$ zw`UP8sq_tA)8WMN$e98>Phm_PL+(w?icYI+jls;Ir2af`J*);<A&3XA+C=-1!fpXa zJPzwDHhL%Rksq6kFO14-&fdNQ0$h36spU0G8-d3}yX6jW?2*L}D7I+~_3=NIsbuem z8hHXGCLs=grJCf-bzBuuB;9JrnHlgG83u=A&(!VE2{?Qxs_R@bpaD4Yk~LLWgD_8e zq@-gKDkpk^#`aj;xT9(iW2l^8CT^yY?lJ)c>rXpft?qeK0-hDQ#Rn1hZ5y=n4_X8` zq>aH9!G1(GQyRSH-p-2A-3hIG0XFLupm#C2FtrESXLXW)Qx38jGob>cHhak&!7nY8 zaO*Ph-rZ5k7WS!dB_2+FG1hSvU6XN(8w~<9i>!dirIg1#>WDyOK@0MVa=>uR{CO}W zCR+vlqj@nGIX~T_k*1>z#zWwngZG!g`lAhgzK8iy>6M23{3)}KGVI(x;s^kUOMHc2 z({Nb@xKQ0XR#Ar?hYDljeQyClW&?Eo2i5b{e;}OJOMuOgjXn);3$i?vOmyCwAohcI z2|2mB!t5k&D(=>CMMJI((K7%Byg8yqU{*}UWSW>0%e_6rnvjHnyoNvirRQ5gC0k@g z<6#?z_BiJqgDQNIW4R%HN8-{x`1p2z$;}dD=a4K<^j6Zp)yL>=t3m!Xp#87@Aw&}j zY|JEK=XbSl(fH4a?po>k$}O}$4P|ylUX?r+TtSEA!J8J8#)St~vqVE(b9GlH{Kj1* zhEUY7vVt^K%|!VHCm!~7B;mwCQOOv)%iWyP#wS_{sZeg#i_(_T^syT!mb@k3rO`I( z{)X_6uvWGD1UlutgTbuh9A~R|N=s+MNG_iQws=CRe=f|yckAJiI#GSHB{@2`F!>T& ztBi<Bzz*(DRr1lAl=X1B0$dvi;5&lP;W<S!%cB61oly_z@zobeE~MspKwBWboi#?i zPOa%kX`vTAHRX3K1{I;VVj*qdiwpr<HSnBLD3k=UGPtG8)Rn7AV&nzPA2kD1cXD^p z(=$|QvZ^58a?FKxgM8v|>L_gRuXbzLG2b+Ov5`EL&h*4F9|9mcB%EUM4drGDs;e^a z&oyoDyM_y&8#Icvsk2OCRVE$6(paiQvMg&*6Qx}OaGHkx`l5#PMj5?=p4lA^(xG2D zZqJZQ9P@`-xy=E4gn5-wk`y2o7%>CQdC%%bVmtchd-gOBM7GyyE&aPOw~SspDM)mJ zdPtE$ZVdz}K6&pVJk#iB&Zzqx%5k~g=nqvzy}b*I1-}cjV?MqbtuVmy1*93U{}40( zJH?rS<^SG&VrKY1-ID*PIFq)sD)J{<4@6l}h(%>#$2ahPg-!c*n)j=0g(YXVc}__P zYh?b^^GPpKorx&yFZlmO-QoC5e_%tJ&T+Ml+ZD$tfmi94ZU??_%1@=U926OXpnzk4 zfb*|#nR~~m{7yrB0<PnG(d$gf%FDe>nZ8}Y?8or2`cg{G2mB&(5FT+SNW(#E#Z@U4 zynrQX0C+v}&!|{S5ub=K{3%79+Y^w)SC1o+^n~L+P9x&)G1|1jj6cLF_4Oq&*JAW| zcixBk1%D`ZBG8`!W2(K^XTEpwk)kQ;^`AHNmB>oKzYpd`#A;D#20R-M3#spZ(@Bzs zaN1I+uN;d)Fc@4v9q3}{AbbC)aL*a|{To(#_n6{(DFUT+bn@QyXehqD38wP7b3-=4 zf9?^XJO6P51YRs4dN0-%Oh4c8stH=h3Upbi71Bd?J|?WEMNi@+#)0(7-7lE)XQF{8 zbaWLGivpl<Y$Z7G_AL5V#+8Bh0BHKpZH`BN1XxX`In;o`A~4xHHuK%Y?9Q{){t@Pu zqMHrnedz{L`|k>R!6`S+lhSm4+M}N5omyRpBt+!o31u$4wM)mFE=?hq@)DE_@S#Sr z{k9gBKO#vOgM3GQOwGnn<Mrre8U&%NZWD-GZVl0T5J#+<??bFdV|UJUdYisV0vs+# zkPqLk2XOL~o>i|*Z~NE2zMb}tq?#iPgj1(P^s4=dg;zpC<vek}9!Ss`;iFpyH_PQL zqqAjCceyQ!G^|NDJVjWVAeA^FgHCSJqFBFan&heT&8&=>+LVggqH?>-L_lh`RxkxZ zYpB{~mh67BB&4{k81T62hX&k6o@sak^J=W6CgWYa4O#8kio(nwz@JUIWcA+S2L#_q z0-II^$xB6OZq@be3-l^t9BUT{dw_da=&blL5Jv*kdyyvI4oq%06Em|r9PXkhIbRy$ zMXUR7=kiAYfEaFvCT<8M*mU+ojYL<R#Hej3xI*7~ya~y-hV@HMB%hrHNBl4dAs1YQ zAyEbvT`8Q%y1HDBauB=0paVqkhl4`olmc@VpYIHo0MjK2K22KJBzBTB#5I$VxRAAZ zxIF2%5nEK`*(~$Jn6_kS-_>R_{FJGig0~Y0i(h(wn5re7Rv4m%i<u=n|KDsZ^5Fx7 z83H){43oi>NZB&Z>26%QL&(wh3!pGliry-0P_Rvasi~Ub_?<UJ<5t76>FpMGhUqL~ z(2q>)Cgm(ZYqxlOx`~S8_)w&+Vp*{o=n~^3nwHNx=+<nJkxQAYC(%5!<i_VYSU#D* z0r|*>@w89sBsvctv4$8~yi5RsVMQSv--B~FnUx7^OICd0-s$__UfcmRaGg?@-D>_0 zoTG^*o&#>`?@xqnXyX19neX$<`42H$J)I+9z!ZN0K=Ggka!1+Z&BQOqi{fgUYWu0R zAZH!Aj1EtPgaEQH$#8#EeeiCJ|I!sMKjfYw$enLiV6;_8vfeBwS$8a;AQgK1ywLfn z5Etcu>r2OLGh~=3-4!RTf{`Xx=~LhRI=Q`Nf5vPnrSVw62EkDQq}T85pDnif@vNfz z^)q?~0LaWFEp5g8eP73r$XIpzr1Djpbu9R6mqY14i5K#jmk~p?E+*`xMLA;xvZ=YX zZsi@|y3Nzk3We_cJls+{A2QV@Z%9!`-|-VvE_o>?smkEakyO@Zs%rR#`k_@k`u<FT ze7FWeW;wuui$s~uZX&Y!zH5+T!!obeB{MZW!(eE@QfyD6As>!u5ihoi^F`R59MA8X z07lAZQ!>~Nh0iks47m#;d60;-b1BCb_ctA)Yn(G-?`4)XR7>83>pB09C7AZA&A~nl z5cf_RX@;23`G|Sb=2armbcFW{5TyB#TU~<<8EM;sNl(DS7FQ>f#G{!Xy^XI;cx6RQ z=e~AsOk*AIM&5=q%(-s6AW_=&*e{j2F;lzDr`^&IwNP`tl-qM=hO}Evvm~k<t0Ilo zS9VF|&>_1N5>AMRvUUm3ANmM?S8hWVYm!~XAq{Idp4J$Z17DC|_B1H|vnia5z*XyY zXZgTDZyY?LujbEtruwqXQ7ot|RjN}Zkr;%5-^z@U`f}*pXZB5bG$RURe(9D1Yy$G* zWi1-W-zZB=JJOF=56B)_o;ApFPc)7ens|_U;Pep9em7yo%`Zdp-*o$$n<;BMIf=um zyJgjV;XWYA0m=&fVE=Zxj%GJoY_LWx={4^!RXXX#*5msDr!>$h?t(UO8s)9$IowoX zpXdlQz7b`p<?ea=3xY*t0@f{|r=V_BgdusyC(fYmTc|4URkv*Q!zH|(Mp;p{m1`8R zw?X$DK57bj8Iu)~V`_mZn8j}=2To$O&|MS#5He1b>Ph_E3OGjeVieUH&}$*c-P84N zfms{7@=UsFm?g`66&m<xd%j38fH=ST^n4z)ybJb2B)9>e$hnb9+xlSU-szhFHBIdX z0{=z_Dafnua;K0$N1W|Cd?ta5)6<gCY_hFl?Sa1OC&Sca)hD3X7=j&MB;;1&cVx0; z-V_XFd;9FOXY^ry0Zp*`Il+%3PtUeXD6#HmGxrny4!-P=^#J}z3>}&|r&YHr#CWS~ z{DC>g(pr9B$5Golt3TGCd)hj5z+hDEu}Xoz{#(8dz>xrw==@q54SZN+RzkP3NQ4Yk z85ZI`!|98HiXTLkS^}QL80B*D87SFO%~!MhfOT?S&73?k?eOKoi;q(ez9mPJCfhDo zE_d<8?F8?viN?_P+W6*7H@rXF<5BK^bs0w}o3$5cL$vS_%&>tMz8GtAFY#O<GlP)? z06YtHWL89;;1v{7aH!>}QZ3~HOrxPFwIj;ht(i&RLtbTYG}<szw`RwZLonH2;>H<u z+{_lqu^hF(R+`Yl3iSlWYg*4jZVf$Ad(aomc}$SzpQUa4Eiz4PYVxd>)8o<qR=Zv8 z@SS?B-b7cI<iW9pYACiYJ%R@To=njQ7&L8L=_j2Kl95LfO&@xExS1~{jK5U`{v3Z3 z8bo7t47sAx(~?M9ufZ2(o6790-#IyFW4nQTD*Tk4oS3W>$KE77>9M}-(h}kFM0<lR z9<OD~W!$6Vs^u)uWrWurh)wn)U%#j)+T=Znxe>P`**W#y$H0-~wNa}3BB3^ULu!V- z$Fr}{NJva?K0wpU?}f6WdTBG%`^9+iL7wpq&U1x3Q->vES7iF*yTpe6hgkRDD98Wv zlIVZMy8k%jflOii47x_YJ7f?tG%eE$(dH9Js*?FUhx&K0CO)Mo5X?De>DznjX74?L zqLXElP%_qHtjMOKENzXt5%Q$rJ>Lyxux_r{P6#U@Nl>+k_P*6EJV}{j@LK*iykU<h zz(@1vU_`u*yLAU=B<47~Y!t5WW&cV0>p^<ZLgHn*@`j0t7V4SmQza_c6gQ5!vc51+ zo2D|_eZKg;QEQr8yfa+I)Dr|+(_ez1AC3*n?hD8(=of{dG%8$kY2&6!4y-wJ>L%XU zm?SF!B~%sHcHX+WVMR$)N}NZ)Kg399IGxjmGCZpKB=92G3Oa|nn!;HD`uaFz(Vj9l zriSWaxFqtZ+*lk*nL|wAeN(c8p`GQ^9%m5Daje2;BE-`fgAJeNw>l*Z%Jmc}tXy_X zb#}Y1P;3*Y%Vh`;-E;u|5A61ezPy^uL-&%APK-2!mbpco5zlzr=}ZKGMSe3idKk$2 zJs5PP*~fI3v(fhc*MtRuv1wt8rLifcRkddk!D*)7qExLMFW-E*Clx2;AygedKn`(i zP^-J?r41d#GuuvNJsq~cgvn^S)X?B0g2tq7b2$O1!6n5hl2?b>36#`OTU{vlJ@;HP z;dGe@YFC@FBg^wf9NRAd>Xf_NB4Gey%|}P^zkQ;~#eSTkV(5MG$8-r_emus!BwP)` z!Y*(IOlogP7<E18V0HWHC;7?{ht@;TUkhoZIfgb-i(z5&$NXbxm;fs|iDpxr7UOG9 zcn!zot*0_JOw7bC`>~u_RYL|d{l7ObGmt#^AI+OUhtf50%T+CddH>2Ii@Mw!L^rt5 zr)kv=5ru3Ea8x1WT85VM;MoDAhq5bOQcY8xKmOK>@O=U>W}wSv;b_#`iWfH=fWn-$ z-k_?epLs@v-VHb;S#9aRv%{g>Rq{`DMHJY+hD>Z%%g8$M;sCO!=!4|hlJmTA`52&C z>|&e~tSau0eMsN@6x#J5T(IBWIH~wMiG!(k7fQrPdNKqUyAoCw-jTW-Rb>U>aD|zA z<iSJwyrTETBK=OW)N{o{=vFN%0Z}g9M7egaqMAEm2h#~VQuh#+>rHs698RbDmkH35 zHOo1u!T4HMd&6H31;gb%)v>-ODy<|U4H}y6S^uttR6<yY$_|t6SIY?-OXXzTa|ocS zFVf9mgteL{avdBC95^Kbfwqp8b311VuO;>lRZp?j)uQF#zXVaN`10BjDz;-!4S1iC z@{5_Me_Nl^rUyoOMn>(DV6;FG1E}rlnbbUR14e)2SQRg{Zk8dlE#KuX(V0Pj_<1<3 zC%`8YONjxeM92wQI6BBZUX#>pagJl78n%78QN=$ucf_X_T)+jxEu>aWj<GXE_^MjM z?3}mWz!N{3(P`uJB$V+H;sSd4ItsF}M0N4XX;!VKvI~!ENpySmPuhRU752iaPL9~h zcp}<579r_nOOV^j1aD67{A*44q<(?k|JF6zC2f$)wZl{Eg}6CfHTe?iEP1YO5jxa@ z(1ZX;()8U(la`_`EHy>yi0oLaIi*2oN=;D<_f4MQoeh|KWr=k#Hu)+b50@kLZPLSH zb3Wq(%5RZT1bRZ4J=G<hUpPcDGV*S?mv4>?@cR$X<bR`f{*NIGGyDH`$O5W@6__vO zbQJ9wuHR1tCz}F6OOb=$vZ0x^Q3uHAhtsvAz9s7Xcj+eU&v=6Pvj~6|XZrdxUr+<` zD*rppy_PTeO}21{Tvzz)K{9~yEFR}KL&$~fG_Iiv{v`22=`{QPsITj<=R?tCC0D|D zV-(2v$g2G!zTl2s>Cot3f?MJk5o3eH{cDQ+&kT(u9y2XRbnyH*UBl37M<Euw?k3MK zFK;u1L2y?Qty$>R`7+F32yvvPQ0G?&<~R{+%H|FAY?M{Fuq0dQe5XwZzxL9@KRd)P zVabU?=r4C(`cH%s$-CvkiK@d`E&^*2deb2l)<v7-tbIOab(l_hulvIS9qL59t7{m! zY&OSzKJ$VcR!_0TVbCr`IdI%M+#ASv^RrWgknQ0rfeEEng5`0mab$#~K^(9n30s9m zSG?vKH<`48&IK(sx1{oOAJAjX9TgFfJV-1+;i%FP6)zuCd?O;8aXGS4voa)CyQom# z$*)A+Jv2xPQvuhs!$5F;Vo%tA<e-N!4|Zl8W$?wqRIH@^enAX1kYyC6c)WkradLtZ z>#pZ1TwDd~DL~idl$tA|yMAneBIVG%%NHASu6p5+Q*?TO;n2B>(lO^4tFofQ8h5SA ze3`=kXh}21@TVAv0~m$*28Oit#T(U2FSh@@)|4-<mJ>7ypZGhn_U>wW_L@O!XIYl8 z=gn2EuBenoz%kf4l1IdTunAxD@T<kODHT4128*$Fvn@SGjZ@#(^EN7Ubu84QXB^3H z_s7)V(oiJ^%2kFB^&EdZQeNpiT8s{7_|I+=3H0IPC*|V%8GvI+b=fyeaD*!2*lEkJ z;R7oNPUa?5aTc}&L)bcs0pFn)m&S8d*H6ptd}lwkAr?G&4TF7&IE~XFwh+A`W$H(g z<$ly<{*)lXi-}a(JPAhLe1j(4^10(EWUZ-9ErgF;yQ%b&#Yq)l9&1F&&n)rE<jmc+ zxSCmj<yP!P`?CC1mOg3eRk(3}sJd&C1k_dijBQ`aSAAwZoPedg<U>xP*WA#R8J6Wq zDkqyQ#fL*qywg@^{yWT-$Kpp?{X3OBvZ}&j`$JU<8-2Tdt^B~nw~u6Fn+whrzz=a& z%vQ*m9~c^07M-op8T}}$t2>FyFfXYa@Zkn6pkI?=>4D<aP~gP1RY(rbpA)C^^7jnx z*V`g)AjJC}#)EdJ?^2fCk;gSXXbZgC0)+;g?Qrmk4~Z~a*$J33Wgp9^uL+bFW!TQ0 zdsCFzwlD@3f0O<Z6IZDka@&qsKF>zRa4Z_zhu1uo-xB92BZv)pfL%t%iWlZhkz3x& zCmwWf&4_koW+5mKDcbbO%{b;KI0VJM28sMfqU;y{92ujgSnR<~SKcVc*bb<zdykxv zqJq?Ho#>;tx(f6<rHBEMAZR{FWGE<Xuj78hE(5SMSLd)O`WQK;8?$J?*+AvAbxQph z-6Tp&cO|}MZ$r3n)t(w7%l|bwHric0eF_D${|wO`1+DKqGzAM*9Q}E-lED6m1Xe9X z8N#LlD(!Ox;f+GudWGZxF=du>sM2DPF8;>L3y@!i8dmAl826&|_LtxPB1SNw$iKQ{ z<m7ApuNwo}OH)>L^Aon#%CzXe)DsCLr|A~Km8DoK;N^Ks@vK#PCiSNl`U^dBwF}kS zGR<S^EHGPei6+2Nf_3dy96>lmyT|L5L6l;;#v(f)Nh?W4QB`i%Sq-VM3!##um;ids zEL>f~DvVtTR`opRz0`I15q@u1mT%G<QxL8@2O%b3Z<?fLzr9&y+*e$*D&T82EZ-<I zF8VpANr?_9hcGTG$~^hh+;<csu_M!GcOk5;WeGkLV@UdeX8svrS`0t~V_qWJ56fx< z&zwGwk*hnkpV|CK$XcXxZ|WK(dg6dQrS;B?F_?70VFJ*xRLF7EB5Ah1awXR5-C`0f z3gvincBgkQQqH0Gv9y3576~EkuS#~|P7=ju4|2A;r(hnMcHoY<8=i~X{kxLRnoSy) zM{sZgpPQ#nfz_v2m}uV4;fw!gGi_`O27I#XhOHZU=^;NK$sUcjS;%aQ4tc~#pf`Gk z*J4uH6{l*2Ay~O|gS(Fs%twjBl}^<VO{}wd05>C({Hdfsi7i0V25_lzq}e+9S`>@V zMBIL0QNL5dw10@UzfnY7wmQ13*UJOCDYQ=NgX=_L2qUt|&2|K!`KSwYc8aWZiw=<= z2kkU*Qp(P30u_Uy4qy)hGn~U23mk&-npW812o4;xXJFC%?*o$lz%(w2o%~53C*zU? zC=_w)zXr=RL0PpLH)q%7SL6lC99Ddr?}#<1Or!vhh_~7v5YH#L1Eoi8nQOpYARjbN zu`p6>+K3|y=7za{GT6puDA-}|Aic8QJ%)*biB<HN;oq@#jvkM$=&~8v;S%RM^a<Ju zFv4910IKtv#X~hho~{DWV9+hRxk)pks#QRMH^N1&ba=)di(AE7QV(W!3k5GFS&7E_ zIRe+OVb1NkwRws3!9TX97ZUsH=|1|-5fzXtF|p-QS>)Z|SJ7_VqH+0q${EBU&i8Yi z)6dl7an9*=U`ChoxzTv$y8rs3*i`H~61DA|8W@%smm!5k(>_E@{15-`o)*QfuMwox zZ(1NJ3$(VOMzdHXU=AdLFDAR<aJ+tai|w?MLs^P@>2}C@<$t#$z}LNfZPwL=_v(OI zAC2Y-tF^ROIozWxwl2r<s@3YJzW*PLz4LRYaTlf;8y(w8$F^<Twr!(h+qP}nwr!__ zZ#cbMHM=`i`_8=o!SmCp`}3T0UALAqf?vR+yfo;nnQ@N3&}wPE)_R`4YLs&Trk7RZ zhF7ygYGQMWb26D7xaL`hn2YVkKVAW5$*oLnK{<Z4x1pQmhKSFVS&CrS*ff_DWMIV{ z36t>WA4eJwGtuUn^OARj7x&xm9ymr0b90XY#Lhz~(7~!=OW342wVz|dxzAQWFi~xx zpiXAub;nh=4Z?@v8S5o%frI!_-9qtLk>tgW5$AowREIdl0`Wa=nDyu^&BI8mlhzHc zbNFI7E!I`V@dbnuZ*Y|yj!DbB=J09F>YKh7eqVnqmY6$D!iS}z>`v9ZAzW+xXuGNe z04hSl{b#mk?i)V6^Y>CUtM6Pr*-Lcvn>dXD_}(L}u_i_Hz+S)V#?<fjmkvA;4vlPH z0{yI0;gH3!1r3XEh6|^`;H(ZK%HN3b{7OuGCL6*y++!QLd(f3v5A{~@HvxHD%B*{c z&u5Jn<=l;t>@p;`KfZ|^zZ>!REf`vdaR##LQbKb|i@tJU6c#b&Pz*fVSh4EDCr)}# zzqWTAjK8M0a;CrDwPtAu^)TgS<oF$BqQ1k4%275x{zEMMFRjA=Z$}Wz|1ER>k4uph zS>VCwNJkcAcV8ObYvmOthe-D3vD@zm=(X*SXpmVZyGJS%7k#`uX7~%sFs7N32Xq(3 zgStYKpRtItKe4maP1GTIih8*oy5t@5azgoI>uUPxM7v$osVwZ70kPq(oo`gLyV3Wo z)})D`Dt<tIt98Gxd5c&xT7QEdj;NqbGG>H66Zna$Z2rx#V34M-oPV=r#W9;bd(sk> zidcjFZIZ5g7KEt!W0;AO0q)76*NT{xMv6!jPBxzt`laJ!CnFh+^z;E@b;jwOrQvUs zs!Z04$^wRE^s1KGxVgX&KbJ<M%lRV{C1B<&h>oX2KWUyh@1~FAs}JvftD0%7gIoer zQxX(KvJyB4B8bsw8;DLibJsB@>iPgkU6b7|kJ`XGm1ZRoD?zR3&MDn*nXkUmiavl~ zt!S4>r37GvAw{rlwncSuX=w%lJNgDXDC90s#fDbxj86D+07f0*5rKR(u*T)=)6HbS zAY!NGdOe(^-LF}r2T2Xz#Q2d|biFb@b`~koUuPse?G7d`g>&1<(Mtn^U7U3b6h{wA zhS7r!GppcK6wDIrIk=aN1Gsug@2X|DS6may_4bh+A@p~1e_N+Yt8QFSf5~q^o*&bO zibsh0rc-sk+`S+u+>d^Y$QAKI9nk^AfxN@RKLIptGWh%Z&hy<D+r&Qt-}6kk1!q!Q z6H&aW-evx%h7no(f4m$Ct<`liULAb&fSF?2pGa^=N&~MbrXmGR%D=;=I7r7JoY>R0 z!^@}pa|iN6+<@&o+Bl7pO#+0?t1yI)XtcV`anLKDmYF6XA9}I!T`*i^aJ0&9v6jV& z2U()GHJZ_Wj{kMS+rVeXmHck7jbWp(?C)TZ*~>I&(f+s%`vH4DJY_5SJJKCA)cY*L z#i?X_db)f2YajzDR@d|xK!xgO&Ub{0JoOx+t37DNhE%8{|J(+iO@e@M%jCW*s%83l zpG?$}qqLz2sfYw$mM+A2=Jqc$VX(%2ls9n|T6-3o^$Pl#vF`mf)Go{}%TimrkH|w> z?D9GxJ<hE*eld?AVIKnHZS4bSRNrl{8ReBy_oSbu#cK!vCTnTm{5kl!G>`oomahc3 zfqGhhvntv<M8DNk@F3a}`UbX2Ck1=qolu7QQ#VZyInpu`TrlsgV!=#X=!jHpc^BW$ zWQVoi+wM^_X^V|X7UATtvbz-~S*~q!qNp9y=p8|{-=63$LDi*?ik%1Gb~;3lwG}Ed z-QC*tuY<&A{geR5Mo~TVEGx6K+8r~4H&0I346N0-TEfXjWNxi&6K|b^Veg+DQ{kr# zjweZ8W-%ntpZ4l@)CHM0!m2aXQwgjS64!zS-TD<h`a4q%hyd?4WX3^0C{%j)GC&v$ zJwewf6AwW(=GK%Nh-dlFdpcRh26ktAmGVI+HsU750vxwgZXS)2IRa=V;2l;Jut+p5 zq|Ptf)5iBtF|B?XRIk7c)YmA%y=%Zcr*sG$)4EoBDE{cql-EMELXDOD!@)@WNi@IR z0?P~ZK4MXH&u02|;3R()j<8mdA2jC;Z=}BQkXD&rcp|KycSeA1$&2iTGE%R&T&gWJ z61ttvrij?%PP*n9I<O%b)QU>3%}vcMe3H2d1qKHfF2}#z3{>ZVR{Nd}rXv@zwT$y0 z(kP4&Z;X1P-`tBiyExC?R?Q{VbzJF^u{{<dqV$wb2vn9|-DWIkPE!y6@F8yTIFo(y z4p>rHfGz1w(7=k@)G!+lZ}$6C<DS<_m%p9=1EA|8cSIIqb7?-%1Kn|z)nfU~JHSFJ zP6vRueqlOCbrw!Mo;c}s&NjknTBmR|_DSkPVlPGO#PYt|xm9kN@t_Zq{>{)*njSk; zDyIrX)8H{sF*hk-Ejidvocu#=l)c6DqB82@_ViZ0*Ug~SQX;zI*WxHGLY6H0B=ZMz zM4vGNDQXQn5?cA#Ahxi&tOA<pJyxk1mKLCjtaggN&|-AEZMMzC-6(Whzmzo;m?}S_ zZ0|;YcR1$F=qMUART~dj02P_C8D4Dkyy8&zx=!NLn}8AdEU;G6S$%r|i0=gGwpH+n z7Y$Nv`87i@GA-U<ZmJ&=P1?rj<JiN87-&1yry;`ph2jDvQCfU;<wyVp$sw=3&K=vp zt&aD|hdxbx4ea~2g<s4xDfi#ZAIqpTn<T5#l0<>vYl8IO;h9(`zdyFD1G)+UKFiQq zT%7J>pEux{>*(9hK`7mkx4ryeQN;CvR}8wfid_yf38kV+UFkCYm2=aC*hVtLNM=j( zE^J4wQ2Ar3G3+>onsZ~wdGP{8Q+KpaV)N*O+D>`)8<n>~rGjnhgQ^KdpoQDu9bF!x zvo*h36Nn}FvzPL_*Tnd1pEj}9QkmmEUhhVUvb+GqzPdV9hl(9X!snqP-M$|_t4{vr zDRr*^aSh;;WUPJBwKRmZp@L`rm&=i;L|V_hXUNj_j~-~O2>ZqLEF$~tcUXahf}wl* zn{}q&p_dh=bfUnzw_0jWIjp+ct~K;_zecpgFy5)9fT3$M>ep=2NCNF91tQsDW3iQm z49n{AuM)DndK_^zt<F<rk_yiJU(z6sUmN0--Iopxg|kPU(Xnq5A01R$V@WwUJ{o|< zHx<uG_5zy<;;<mOIoS}hmK@&1mYS0aTy;lPy<jfmkAW!$4;tdYnMKikO*iB;vBo_j z@EN&Wh(*JBetW@n8n1H7{iK-`7suOks|f`AT3@pxFTL>IP%H0H?Qq<Jm<_l#spX{t zdcj>^Uy@PW%J#U8|A;nqGREo~u(k?}OyE>=!_Y%ML)P8pSQYv1+L81-F-<uvMk|Zu z!ws;uUsWhd&@HQaI>)7oZb=x~#1iGLSeztqnBMSxSggw@)dZ^QP<{S$uT({RA}{O; z$+Tyi2a7lKfCO@q(HH+#xYV%T;E)T3>4KK+I%WV~erQ0HZo%YvRfd&3*wZHP;+3Bw zgW`X~M#I9FL%>e&Nu69q7%aT{Yu+jR7Fk}#R(E)df@aMx7iqsIU`6YRm<aY#Ozv^h zDE^#Cst0eo)BWrrh|a&G%d%_I@Dus@GzPKv#3Qto0B)gBW>Y7kKNB4mY70<xd`)h# zfBGW+5t3px3JU8H!zbbQOoP*TNZ+!2Y1+dca1Qk)M3yeXtfmdgI==G%+pzA%jz2SA z=m*F^)A;w<@fp|fFl9tGLVejxa7qctGv6eO2enzoetttPu6<IG?h4!2a*i<2W)|=b zLv+p4t5K-DmBBU}7eI^0QStlDMp8ag#xmfHj)3!a>7w26o<>iPbUnRIZc2A+1Khg* z5EK6!Yw*7%3&a1sond5T{@-@~6jmsPEPZ^BhM#ZAZk1WPcL*J6m)>2h|Fb$bzR^iW zR_f*9X%<n`fF(;Lx8jRoea=1y6@~e=^76e-S?&&6h}hehWs_DD2?N26F_C(Y*kxjJ z)tzKDU9m70=3g)CZ{Tx>&!y!!N+yqB?H=u*E(tqy<I8tC>1RCeEk4ea6#O*oru3b( zzSX|#&_BtvTQKUA6V+(T+(DA_HU=b~*g>?lvF@cY&F;7Lptgq<d?+h8j&mGmzuQ1P zSW8!`>TrMH30o(%!Il~Cr^(MEhgM!8L;xj)+*&rZ!Ca@_)I~Ad*D6NV-4kd~XqswT z_hi>c*yvGF9OKCB_Zf+Cc-aVM`)r~oHYG?0mm!<b(F6~8o=fWe`uruAWJlTD0Q}7g zGU8&|{)?Zo<7OBZO_nt$8RKzTighS%px^yxdUB@W5C~B+RKCwc70uoTW4TP?yE>G; zf{!xgE_z-qNuaL%h7yMfG58s#K$6*a@p*HtF2#gTS*$s9pqtv+7mnYQLuh={17#OH zMtD7n#IP$Vb(ZR0l;0}Eoc<z9X|!65_|Ir!kCh0BIpxbUiLE?G71Z^1y-3_?694O* zt;E4*zhagkiA0QXYT(Hke?bWvC~xwt8a)c4=EWh;XRBA_c$B{Z*pcDwYw;4tPM5el z%G}6tHv1QiSaPr1-I{%6O#l4cUPEnCLD!dM!PH`01>43xhe8Wtxz<_fAHV1of7mSS z=_=W}?~vJ{=KIlRv*rs%(kfL$39-E)n|jb+@LKP~jc0o>1<^v3HF9CyJ4}n;$KoL5 z?tKOZ0rynL$IQn91NbR9L78%aBL3{NISIu;YkjY_HzrK^J&pT#VOh1n)DGdomAhJE z7Fvb5Irse$*+9QnQD!I*&d1DC;$B2_U?wF>jtm0k(2TkoY#j|d{m~UK2+9UB@~&>) zfD7^{l7Wr%_tf9V$5l89rJsKRWlgD!s)#sxxFl^xnN2z9wSU;3tE$o9I~w8`HWYhW z2}AAv@>uEVKH_){TP(GTh2F7-jXh`^t9#aEYwKV*xNim%ChH0c*m2VX+1_4tlLooA zChHt`ZFpO><`+Ho6-%qFlvA$ksi@fT-%Vu+GfTJ|`qSc_>y90NCv8BnqAgR{%Fwy7 z$j};|F!Y6YK|%qfA5|S$L!_AEsY{0cz#^spgDSxws7_wN?6<-1hJLkf*_j#E3d8&+ z^Shn#MqgZt2!T;1x)Q$eg+Ii9^+&MkT3*H~Ia-vhP%LYy|B^lW19f@~pwEkhN1Ku` zIQR3w8vKk#o=_!5mNE>kWNf#HiS?NB92_FXs1_^6J3+7uT%;cfL?ifnJ;mpig&=Ym zc?U&<sOcdXGS6IRhX*e`m;n`M;;OYa;7UyI-Kq(0);+j1l=J=hsva<45DNF$VBz!K z#3QOH<5J=cE-8VVF48Kh5%T4TQPfODc=0s*nF`_WSz0NAu&4h<0Fk4rmv9P7>i+Ag z*=)21?9)K0_x(0JruaXMwg1LK`EM!0@ju5J)BoWl&=XK^J{A<^4l6uwi?rCiBrISu zsX{eR>VNgpo?Z!-fAU*h)<uDe)NZR+OBUBpTKmnlTB+ZT^ac0|Nl8oTa%08v!#4x8 z#j={kESx#4U(27BeKLWHwkfF|;qV}Xo7bM<&1>e<qR8wHDTwc|s*rCm!ux|XU$fD& z571mrl^jD-Wj!nK9kSBP$Y_f^GB(L2le%>YDTO7BT3%#Z2cV<O^kX=E$|lD`BXNf% zp^JliUq0_X1Hlk)mad~F=>qA^tAw}p<;##qV+D>U0B!H@Yq<`{7tUXS<seCFig~0S zuDS}lv~BLz#}FA+csFn50#PWIG0|v)H``B0DehD3vXIfD&i)R-X9yOnDEUOVhPkR1 zgPNiRML{dG*@TRq27+CjA@F&bfLv}&d>N=9Jhwe5fNf=58Sy_;wj-+BM$p&Pw&@9- z{+O%i@(&S#34O2=B3Hn+@S<&-&HPo2xP{9Q2|^M*;I}o9kwLtMhJK*Iqal$SDLG^I zq5}7$m2#QOC0^SH&yod9ezjDR5R6-)M$TKH8ja?1`Hx1FF`Uzn-kts|urk7l%3<hk z00c&!eZT!GmsF`+=fz#x!Vx&Dd~WvvDv)HKQd?xUrPj*UKO(mI)tFZ>&&^Fbe~F<h zWhc<wI{LJ95!qyHCr*l_<r@0e$yaemkXA{iCxrL5-Uz&vwylo;=CS&m5;#>OGMvFi z3tD`VG;Nl{%YLNMeuooDw+B~HsDzO!{2{b2CeuuOHAIYWS$8_-l)eA1C_4cBif)%$ zO4l^ERmYRCB9-5l73P|S(=GsH=a2=S6jZ%WFct$~#}ya2LU9<Il9JvWax_Z}7Waq7 z<g`WdoZgnv_p!L;iIj3imvZd;#XL%Fxh)*ALz}84d0i*Uzn&8U@>S3UmG=BpUT?+r zyXSYfPMoIw?AOn^6;N3nv$?@<Cmm<zS}DIq#CaC;+_~25isej&fO2cu5=5)6#{Fv; zdSmh#aCHl_J(yc%BYn@$jg%w;Gu5#|%v}L1N}#0jF9s`bMHfWQAm#+Vc3BJqML^dd zuFcUm3>SIPlztcWEszI-0tJGbRERqBiAzLrKljqKhy;e9r14U8T))DUAv{wxl4$#T zhmrpN-<S9=-?>RCXIp#_9~Jr@7LcabL%~>=uN2QK*6@t2(4;Y5`TooR?Q#B)GX+~_ z9!$fvDEghYV{MmCCq58}I23D3Y+~xgsAL`VnIxf%C4C`he4*MKrD6msi6n7A`#jaQ z5#z;}nG6X9BL3Q*-JYlY?@GiMPNUQ<lfe9e4_Arz_NCwzKT$Qo7$|v7sC7fSJqH)i zhQE<s$_wsl)j@xAb%&$qv{Ajuw~*!>occEDHxCvoDv9F`3d*Q;1vsc)NqzWB5#;mP z+3kxrk$cU;i>zawWlZo6LTQY=adfYedYx;$%sRm4D-c)iOq;zRGA-v+RxBP(-yNTw zi*HUv+(COE4<1SN+!6jhaL_d}6l0;j4ytSx6qDrWStfVp2TzpeDSXr$y+Zal;L#YZ z`K{e{Abh<JgHq6IWea(VI?W;X_9>jlMGdy)uMpzZBj%D<<X?#&OuXrb{thf1a8aAC zrCdP)@$nT&xx8?Exq%z(Q$-CW;cw`U3nH9IRw-SG>Fuq2SMBzRzK@I^|K5(eSf*)k zNh}hj#DV!%44uUB^p*6%<zKXR_#+{xUpv|b#HI3HV)Tgf#tEX82$SBgkvUpJ1V{Z+ zdvu@x+hO**%fZ-Jb<*kf@clC^tgela15=$EzP4TKm&t>#Y3}+L?V;pUF@I0=X-gsQ zXmORumA1k53i%nE%>*sEGuQd+gFsYF!j)dSfU*4$-T8zNNL88k@OvWkbQn|%dHoPC zfsC$~vEID6zvhTvRLy{371yNK^*~x|`rPYW_GCH6>VU*1K&QI*$T-rBOT~gd&ln-7 z<%PP6Qj&QuZngbH<uqJtZCnb_*1MeNb@f^O*m&t17K^X@<)yJ0KiASmER^!FMp^$; zy9JM#Mj^sA2=C_7*UB*X=<yy~m|9d7Y8uJ<_vFh?0_kzS^746JlwRk>WYPsUFxs9M z^%SVvbAFE;TVYSoi=qb5+DL)Y<~0Bd3_`TWMIdkXAajYXju@5VTvX6lY%mw(gJ@rL z0iSRqICFC3IZ?L!FACe_{`-l2z<2Y{R8RVbRhuqrD>Y<JH_7n2F@10;TJ0m0wAb+& z#b_(;lqqJg^T#j>5WBR9#qonV<owfPdA+xwyTY53IjXxg_C@*9s$E9Cvb{EvlcE>W zm{(t8N!EJB*8&g$P51HWd4c#u_)*%zSsJiJToNsF$>Yg<m<hB+Fvd}1vc<O3?-1Lt za~2koVAAocC`sROA?K;rkYbDXuKcA6H9<xTf08%>;{m>q@iuMHjI*R(G*E#2j`8fx zpBk5oB|+Uwrdov>B=5T<8!rxziNOfth-+_cYnVMq^y6p=NtTE8!ku5m)Je;kG~b5w zg0vrFqnl3o0k-w_{qX`U#0wN;lQ7{8#%QiPEx#M-(=O|irCeHLs<TjyB<5Pq%<FDB zc853!PA15Z!yvJc;mi^f{~pkw|HyVR!=t9Zw!kI-ianVK+JQ7I!?$4D9+VY7;7cNL z(Of5!TA|mKIBBU^Tgx-6dh|Pi%l(7{8?iv}^;;~1lRvvyr1ycOwTA(IL0^BY&ulMC z+0NqOy>0`?ACm$t%ItE#{nAN(%GdTbJ4~&2oAD&5F}^>=g&}rVe^VPln(1fmOYmM0 zcuQQniVFhb$407=AFxr<)!qd)`0`$(-|POT^`&;DgqQkYQ?hWDr1sk>+I4{}rcC^* zj2;0pE(-59mknXhmSWbr`H}!YKRh6wMBgXc&G0=7SM2)?QmL-B@!-zB-O`n7o%Dh` zQ59{Bc@Xi0@J^8;OI%KQ=iIrDrsQ(fuYi}>MjYmQ?s<{$wXt~KlIQWr<{Z2vC9uPi zW^n6G*xh4lIKVq@=-cfmXy?5?rDqn5UmENTo3YNcJcj6UeVyrl)l$DMnBPz9m};A+ z#Tun&esX#zTsY5bGNXs}Tn~4UBcRzYh!}pjrzP2Yl^a0RI~fM>DS(Mh^=-1ioG87L zEG(@RLdY=K>|yL~@N!jb$%N9$FL+oiKF6Z7UKetzk`EEme3way_@1M#h|Z&rI?;K< zI8JO5R{0OH?!UC${y(qP|C8m`Yld^HuZ4-xr7g;WNdGiUMV7k@HI$Rm1en}y!IwRK zC0LstHQWWGjzEwxZg>QqMBF|MRewD2Mh3|7%L+?c<2&@Qa+c^F;?%k^qXaL3?BS@| zYk#4)i=9u(VEgqcphtEyv2E=x#H-PCx$Malmff>~Rq6z?34UY}r0sQVSF**v&9w+r z3))40y?e1O&DC_(w2q%VeC@M*5Zeq<yD&_adruwvSJ0)F!Z5xZa5;5ePTqc4nqUjY z=ge#ar>9w%YeEl_g*Tad<&L+d1k~vg(=Wz|s%`}ag?LLVf~Ptqdq;vo`_hTSw@FGC zIsbhYvobi04-aqwQumW%W!Q}}J{4+OREFB4Jgyb;*jHOGHeP;yXuWkmJQW63u+!Mh zrd_Zr{lDAT%d}hG+nLOwHfnOm8x;1W%V(E_lKx<=LH_G)P?rum12CiuOrZoJgEH%h z&@6<rM<<;HxeGXPIAgkj0A_Kxs6nDIkk=}n`eThKv(wFtDII_dB1dPBl$<W?^GLEC zOc#1XF@f|v6%(9_t6NUkw@spFc2K~2;vePNZ3lD6>fjV~PM_^_UzhO|N+7(t1)1(H zM}7NP9+&K1D743_L472Ht$xdh1z>PlduX^!VXhl(lgtNLCT|)iK^SKjxp_ae9!{kA zkkZpgJ1iFba@)tIsnOts_S9T{9@r~f1>g1zoQU}PUHf9`12ULBK~0j6joRA6z+A0B z?B&#azDje{E(tP%Cz!a2;>|z?GP5!u8cUUCZK|QwAX=>xg1O5`u`Q7iDT>Ls6eRO( zU)gYPC2npf0hW3Ut>U;sp(uhUSm%Tn^&jf@kt~a}*NYDto8tAnzd)lr*bh43)YM(; zN7#Zcu79j%ok<Y~jn5b$;{ge|m$hJk<@WMS^2q>FwVDPm$>(@M!t)=M9J!!N{D;$% ztG{_+h2EE|$be~*-e_Vs2|BLt8Lct~BC!4^W6!Mj%}aiYO#JuV^q*Z>!Nsfj<dLyi z{O=dl6zP3lbP}_dfO``~738<w9}nXKlHo(i_AZ9xiMw!k<C^Y5DHPzjT0#1*TWRN7 zBTxtIq2KH8h6Tqs+KS#Z6}0=nneDi4#q!285^@<P6%}e3*$<(&&{ap+r6Lc7`Ww4{ zvNcs^J3v>dK~qJOe<T5d!Np)!za`Ngp5-;PB>|QQ6$GM?OewQk)nul2GoN^)%e3i7 zL2Q*cpQwL3<Unht9L{v<CIcVx(7B8nbl05xhzj>)zkobuqR6&dti?X5YbZ+Z7K>OO zH;csjZe!UIWRMnpys-eqIz;lT2v^=t?@~c%a8o>8YAdz#l_W~YGD%F|Av9ioQ|~=c zdd)mOcJFDH1>+$4qgCs>MjCQ-T~Pq10#B6RLmRccmPER<<O$DP{O*LSvICVplxO!V z{vJh6Tm~<myrEMwe{>kHCp9S)&FL8ma~o|W3~4%GLcC>JB5+UqBJT~CxLe+W+NmV2 zf~A+@b4tSIR42~0rPUzYEv{>*#GtamN3>d4WC`dZe~U4ip!dY~UlWxrX^k$2eC&V< z#TkxR{VUeAtEIsQMGL5(zd!_h6|G32q{8GDAI!XFX0e4b3qqpL3E*Gw>Zd-#!~!zJ zsC*((<DM?5Gyl%oMM$zwn|rm&P{_kbxPU^O@Gi0dfeQnbGlo0UzdFBmvD64I9eMqj zqr?N7!L-uPSzZx|C#VC4WfI|C*~1;yU_RNWd`)p3>St9FFBbl^+?&;EQT6yR(f$oU zle@*yI^sUerb<!juiuAmP(&De^bzdEEhqr(59KoH@$(t`b?iT8r7Ne;*Iu;Oq|d2~ z0YYu#+9))EF?sZOpwZgZfT0{*ABw3O@>8E%fsEiwV8Kp>r9y>!qc>dgEDy4?V7Rq( zTxNmA6gj%Cg`YG=6fh?38AknQoqTK&^p2h|vPw%^2A(dko}hfk*J9#Zm`%CiuMgIi z=zY#;FFA^W(V+RiT4T_esdyo2y0Xu2w~?kfHGgGi7ff_YZ7<X6#%{u_xNL3S&e`AX zB(~Q#u)-I4cQPcLWkz;y0C?TKFC7%gXCz^4g_0EB-heO2mPQJQ$W69_jNB6VgNEyy z)@mQ;u*I?o!Bn5ofVLI(zzRjF!LFtURX8WHw{s-$$TjaIixQMajkR&$u+#S8iBum? zGhI37>9-p^om$l#^hi-Z5A8}4E{>$NS*MC>rbC)S8tzGwtF;|$y9^T)`ngCmub#;% z+^30`rs!wv20EZc&}~%9+vzseOnXVJb79{d0p$UxY}I;DZXN|+qXViwf{U`!EqszW zNWf%sJsg;vihPp5p0LF5R9?`mt{Ldf#_sUp%yx(-W)0UPli}G`t>>%j;>fgSJaP1u zI<h{>N`k)e`8L834Uxiaz@7etYcMUvO<QH*h}JJROcU_nF!OO*1!WU;@g~BjWBFKQ zNz;cM0TS5(xs1XDr;x7Oo@y+b;ggi_Ccr<O;-yN(vFi3bTw8g@F;n_RI_>ipe3hEv z#9!pkTbBi|pxaOX$TPrLX2+hej1jItxt@HQ5X1@7LB@0eNPwr=vN!=8tZh{+I1Y?! z7vk1G3PNHwY%SJDUWWonAbl^?`+&o8vsq^|IC8PZ^E=i)2}5K3m{cde?9_C3HfqDv zjLzu$n{xh=!rmL5UU2fV5<Hh;0t(4UCr2wYT2iVWj3hq_CnS)1l-XK=sd?MGB+(5R z3_n%$_~dirj~u6dKZ`)lc4=i6;0G_FM%-82lIMY~qmod#i%Buw9{xlICqG|;G0W`5 zHPuB}A{<HYJ<^{2=75?a7&KSZg-f*fWI=LZ;?}0dzOz=ZZus!0iaYAoJ38Om78eZA z8W9qbBtlHw8{Moa89m+HTH#3c_fd*k`++ZoW@hw_nTh>ZklySr)NX}B3J5l0^gH*v z_%ACC?Mja}9F~K|YU_^#&LdiD?eK+7Q&2zxB!E=qmIEVnbRaM7u#qG}SMf*y_5&Ut z1IbcdBPLY}2^8KtDMLb4`x+i7-&u7?gLTWBuU@Wx-g>3_o1dbs(<N|U+n@$f!JXWw zb*DGV`qj>)DLm}X#I8ZmIMm)g$~8D<fLo%&gM)%Qyil;6ic%rQD-UbT{0L`)o!&O# zpb|M&-&Z5dBm42?4V8$_^G2u|>106t2zB2L8-u1R<^x@ME+n#$M<9I-iBY`TRln$& z*@VaKXC)V64WHn6u5sd9->2cp8;$910Uw2KQs7S)b>a*P<4&thvrqBwwYceCTn`1W zc%3f7+xNz-qy|Y#Rrj%21v?Kh7Pp6DqH7l=*|CanQy_LbR<vVN+;__6>_;=FYDl~o z;r|dL{~OEg|4NoH|6f&!|B)<d1)6?q!SXrT+x|O_?6S=`&+%%9ee{QVKka1cN4#im z2td5-tHW#lR_XSthA~D<XP9rsYpi2%Z|O{vX_QL6??~lCz(7axTqHkRGMn#Mokuv0 zT^lU;9pT`wM;i@|rMsNj0iM4_<f!S|9c+Tk*dwL>4#j(6qyR&I%0a;+k^NkBS3vEN z!0`PSH@<~oP&oOQ*DVrtDaZ&{EPWViOCMgSzC%_`^M!@J#PpEtzxxt8MhGdxb_MZr z2`R;2;t0_<;YDSsBim*aXiSB$xxsB)JtlpGDv6JKMx5~{E@k!eS1;*GP5)dd=}*O! zcnut$IZ=IJLx1i{1|dEl(aaJ4(AKDPQE)A^yS;w?@)XQsaeW8YR0ZO@*l+>Gb)?-d z4vDx|sP2`oz{L7s99fBkc528cH&J~E(xtBdEm)kNB3eWgGRsWGYg#EmXU3)XL2p_0 z5DA-UD-1n?x>|!LJvZfem2UkAIeWQ`KisHD3oi-N*X6D|te^(cjBAK5bEu<b1A%-V zVS#oUCr;~nSNFlsr)PDpC#C(j)qn<kxY`Vz`9jOHDSveQYj@9DiH+WS&53*uw>Tl* z{LH`pj59SSy`Dhl^73@vSMX9TgM(ht8D6o#V@HQ-03yA);53O)-2u4}4=JlEP@W`- z<Aiv)krLp*q)c!08WK3BD(A!vuxN2aNF$6sQYu?LWd`7rD*A}uoQS)i_~2juvW;)S zCQ{OJgebW@Z=F_o#EGYBpJ5itTiy3|E;lbNyGu#tmpaBmLoiON5zO4Jy=J*3w7#+M zItz=0GkiLBmkOKSP*1Bd_!eps5n;RS&~g5xS5rc$uizFDIZiW?s72EY%=rrM!5$P& zFHV<ZVm)3|qO@YkMXf=3LjgI8^k#`1R6EaLK-mSon9Mnl08iS~dRuCb+B0>glu%v- z53;-D-t6-fO|wP}xn)fb5JBn7daJEHTSrcI;ftVjZ-c{F7!s77qWv%?V_8*VESSJD zDAIZ(cwgGCO2H4C235Gf)RRd)KBT`^m~6<SjpR)Tnmsc^u8s6=fr9*G=zuJ<JbKkV zt%P(R{O|(ut(d-)tD&@%c~dRPI)Loy)h5PUQ>?r>S@LX)gH^$kl(Dze)%P)!z3_HO z9tiNd4*y=C+P~xUGQdQjYB-v!1iy}<3K27qo80HW?yaD^iK%v>Evu0tj{|zn$QwVD zY=N374Y}eg-?a-Lp$ZVsW$&_#{9{#xK-zq!T8Kb9ZS`1}l#~AkhPHwH>|KTTHeRlq zYL(INUDuh<uq|fzJ4&K)kQ3F~0;)ckjL_Oi7@g$RHsBY*Uom`M4*~-vQ-epln}Gdl zx+Iy;c6ODEe5qG$vq|Lj&Y+Dowz`Hpn6f7=Hs9-H7MAw4Hd^KVug>$qLEgAY5TYgQ ziHE=*_WUt3C?pDV`ttS-U%l@?uL9lguQoHHdy~sk@;?2-i=nd5*1Kqv_wPQ+Vvz>X zmE#bLp^rvis^}&<+&WWL(CT<QE{q?T{bmZ|CcDA-Y4;<Y-6ynplzI@ywbwNGU1=1c z*u3;IJy)AeBgr&9X^9MQW3rlLjq#>NN3U;b?+fr)thj82*qndeqJHe`$Bq82tu3_L z`P&Ati2wh`Cd+?gUHo52lmCMpTnJEIEEYwe&1`-fbF;Nkl<0z@Ww*^$XvtRgE%X)R zzL`lND&|V|mxq>NKP+=5e|ht{ELPR3>C5F`=ZYu!`xJL2h)m>le028T!=TYJI?7G# zjJL4d+4$4Uj>l;B%n5iyX$Ss)L~s`pP9YH2G64*?0xWr!x5T1XB$lyPsl5{}%oL3# z4G-G%aE7g;v?J$j6F^y1nB&*m%xx24uKMdu68Zu0myk{<-GhA&===l3_Hr_7!HuTQ z77W%&ZZeS}Zl=+1I*L@bB2Ftg_bKHH;WJL*)df3cYpV+5MeXR}&#n&|i$j;iBIG+s zptlS1O^m8VClx=~m<iE*=F0NTz-ymg%OpjuayE_RPj{HRhBEGKy64R{=CE_hQT1*1 z0;U8=j6F#;Yd{kyDoUSs`Rd6!BaF6U1q(lEJVIg;h$m_ciYr>sozKyt&pDY!?X~}Q zQC~00hC<}BqM+v3RYbfjHWzzQIF-jk2PWO4+GtzOWrnDA;1}Vj&1yjiYs?PVg)%=l z{GF*nS8fe9e5L3*k#r-8u~EPeGrYWtwLDSLR~%(b2|VD}0N^-R_Y`Kb(2!>9&shpf zN+mjsdDmDm^YCNIc`}zIuBp18v4<zOc~73d!CtF-9*?NWz;zwsUS+A+!2ylM3**`P zpL0x$DM@M?`_BtuMh@f?ZD$*IBv=sSyV2y7NB3bR<t%aV8uklEZwKa@9P%@w6v$C9 zKH>7;-Ocxyu5ORE9p|XMfYFa&XUE0IDZR1%OrdmBh327k63n8kEh^ijKaK}geL{nY z$e`?T4qOE`F&~QbO;4PnWYuge1*ao3N~l>h?A^-rd!;w9cEmw;ykI#^Ef0Rx3jM87 zVpNs>8gwpZ)%~+>k?^^N{g+;k_vaWO=Vi4#6Q~Dm2dLPo$IP<1%vXLGOuZ_%6`w+} za{$6#58m?W$vbKIIqK;4$~vixRwL2=W-C{#NE_`4KURStQTK>#(X0M(uC1>x(Kvxx z%KAly=K9g^Ki&d>s<G+sJn{$yp%7T6{XKCHgi;oox@QVkcR=fih76+th)NdwkO`K@ z2j0Jg)AEn8{J;-H2F}z?3HSl@kZChq#nl8}S*^s_I@*~9_uSM-q%JKpC?hqnV!t)< zI#`yBq=#RTqO`I8hDZiE>Eo1lcA7a3z_-o86}luy)erIJ+mxEa#c8b`H6qsSG~dI$ zzv9IPuHX2^qftbpGsQcR*9KHtcoDCBdK3e_XUf?)QPRe|hMp=n<$ClMU=fN&5~40& zphn0kcOYJ7u9{<A>d#eTTPxqB%yw1Ahd#D#qG|Lhym@*`vlc77mfuv0k=90~Z@|l% z4j5_Dm%2c^Dlo58g^4im6nRkxqLqB@y|HXKc-T?}qUzSewENUfn+aZBH$^C2bni(; z0bebS&HYBFWz)IA1O`8m+uyB13y7`CwcCI+Fu4hIfy6Lz3>-$qs%?2~xqqm~9_*qf zAltgsDX~%;O-$S=>8@7aBeyHMery3^mdtvt+Pdc^Z$BeSk_Z=D9`G}MBJ?$hM!6w& za_H1mNah{5&w$q52c^r$I}f4iTZ{^p>Hv5ZT<C-(XLV%c1wW5;iOYBWm{rI%RLtss z6gG2F=Bx!n)T662xPm>^oYa#r$g2n%zj5cNRAW~=Y1}|(Hyf0cSj7F{gqsk)8b_^7 zDZa&wX6qKN@t!K?qgxJj69LFPTHTfI62}>#9u7nsG0g&LIl$)dP$g;e^oXy^*O=ha zhlia+0#kH!rubHec)CDP_-j@5cel!3k?f-nJZ~gBY<E%b&5;x*m8*;Px0n7fJ{Lib zp`1-ktPw^yim{#|$>;n4NueO}!2BA7qN79g$%`2nQ@f`bs?*?a%(<~Jd)z>uB$y*M zi=LWx!^|m#Ex$Uu{VSL{bqQI>L>hKNK8JkyCGi4<iyT%plK~QpwJDEiIqt-5_cWT_ z!ow#wYV-bRJg%iy;a%#N%OX)G@au;5?}OsB+393}gxw*UC9V5JQ`tFPCiEVgAcUPE zzi|}$5NUqn)1<aQMF)>rUg<Zq4N$oDm!o==r}0(#Y3<~f^X6+$A|8IredRLPlD%nf zrWsxitw8~DAumxmNQ^DA+Q|#gASEvj$-Xp$<I_;2x8VXJs*aXqbC2W}uES9cWy=L9 zn5shQ@W<c0Rs7-BdC&5~E}P%(8q+h=SJzdnz}KYZOqeVr5B4%dzWrcBa>_hMa1ow~ zT<xL5mx9oCKDmp-U}Og2uF|pna@qMa-7e#{``goqCf5z0?~8FHB^pE<0{)fNQer3} zxqB{c&Co$DV+Fw3H9Vb%)R&k*8{Cjos?toIpCSD$QZy6mbFwGraO4R_tD_gHt6&k> z>e;ukbdSY-&1#Y~d~gq{;smrER=GC9dl#fET?4+Uta0aN$Yt;VF=VJ-$^(Xw^gqp$ zPs?i-DaieoDvyNput0JbcI>u8d?~+SiLv?_i_}h_L3^@g<0-D>f5AQI$WVwhA+g4z z*hB~T8B1|BmbX9ocs3CGC{YH|6L9$M23Cga^DOxLl53Z4nW80zG{EJvwL7{c#Wug` z0T|zfu#o*@&iwfnFOS(r&6{dgAMWG^pYY>5uacsx8Z`pLRSk9Nci*jZ@0w(j3F`RA z5UmT2d}*Tt;tOqWv0w->$PMQmi*DwL7`&)2cBknqQ412Cp0{3nVC_GytI+U=U0*Ei zC>{rWi7r|MVGYpBw&8s`I5&)O&0dfxhWxYe_fM*g@ACo1OyTV=ePG><>)`$r=Gqt% zgk)Ym^`_<SE0)xE=OQS4Hocz?^)D}-OV$zxQF$?JGU&~@?yCENZB_9RYIGHGm4`Br z_6-8C;!9am7M=5#iN-*6U-~!fJY1k1p7kcXx_BUNt`OO)2h5&eeQ>h;3F_x=8~G+S z_&4M1h+r+jQVs-XZg|uo>wW{45OFuNu|H$bqDn>+Ne=J9@IbkbKwISL{P~K$=?O1E zP(9bN6`f;z9%MU<!Y>%uKfT&(!T<qfz8uN31XA3n7sJX{AsFOfPz^9NoS~je=<?fB z*Rg~nDh3!o??Z30tA?X#l4pbNWZu^bm1Rqo?hykUY7^vcmjzSC;-$fY#pVgr(G>MA zgF4cZMwuBQ6A`CF=#B`&F_3D73{!_vd==@;O5?kt<qZ0g+9>FWcG$w+j)^mgwW0hy zymHP+OLcSZ0lO5XQo)U1*ZC+hHIp<>T;m8HLiX$#0d=Biq<tyC>kTOoqYV8gJJz!& zC^x`V0dh)wFs-}6KC5L+>v5*c$@;B1a?^AMDAOG|;PY$e-}UQ`3hEiERI&4##J|s0 zdfMIT@^a2$?Iy9^Ws4iYK+IPby`L+pJ>UQ6<T%A^PFPgVx#=49K>;E7z(6OTb}|N{ z8yxP5e@f!Pq{_B&MyM|vdvbxIxpJuN(|kl-T7%pE$Z3h1u4w*%edizP@%@LG`rlb+ z8UH`GKmU6mIwh1#oVP@kfzr_n_mzqijtB;MHiSJQY!M!@Pcjs#Y9akALKK+jT(0t- zr*tEVY}p^O75@bvL?ST`IM=h9S$XMihCh*eV+5{)?bNezK!jStAmOty+7&+^qwLtF z1{A5DA%G)Jr@9Hv3Fa{gDr|y`crcf%OpN+@2#>$SHiGq>4(3moSUMoJTts_OEII0I z;d6#=Zu_wAQ~-LRxAw2UqYK%_#++t63BBZT!F?2lEEYPgt1jyU)I$U2KX8)>m88f~ zs@I@w%uVGIhMe%(yfu6B*`1x`w@uEGKofJE6v0I;8!g0VkZM(<&?lB=(cDQ&sZTM~ zZj~*t?~;>>p4_jZY{Yx_>C(c&npia>DV5dm6JqGqFFY-j!q>|TmNAVA#6ekVc+n<9 zcdTbDLjPW=0^IN?!|14a7H^lVC_uPGXDajla#VThHIRyO8r_it{&Hb!)o%>h((NoN z`HaqUTmojH6`q77tyXn|66v(&Kj+;~t4av&7r$C#?Qp@TNsDY<8v|0Ws#8x)C<|Dg zo@cObogSHt97GIa2Af+anW~K;JIOH4O1n6KVV<I+ttPrlDwzlyy!my4K2hQnuSpRD zh097fdAKZ3;X%4kb#+a-P19aS*MSoTYd8nl@y5^%66>PqFW2QoP{6A$*jq~wd+Wd5 zImXhoDvVv^ONTzw?PQ$QpCXC`OS0Xs<X$x(#8^A`P0y@N))l14LokPA%|;=g=bdW8 zWVBe3t}|Y1wkBN1zmQ0<uoHHe@FGv|x-h94ZkYxvKT<lfaJhYkqK|$tT@_}d2)KFW z5dy1GT`JK^lxYDm1Y;$6!#Dzq-R8wu<@E<y(Nt*kr-eMi#{dn&`nhM<YmN}!c3`hZ zN5x}nh=4yP`?Qx(LXodj3r<xyZ|VhhXyKd^pT^DG+DOCLTDZmt8<o%>n7Jq{OfB0_ z4~G~@XkHSvQXVb++r%CdxBbcWMs@#o9w(a7Zj>BpiN`xZX3ThBXhJ|2zAV1?ED6os zd1gd@5!~2lN6r&rRyW+#h$EE0y>xmsx3*z=p@^YRx*MZmHVz`a<uvE5#O<<~f*IdV z6+PQ7|G*lVKB;VVbir|^`yuUibyFH^ld}d|U`pfNK3~`T>hcCT3K2FCT5*WS<T&7M zg_wsW^0D*`_u0ab%KzbppH2GAvk#dIhYujYYAy6kj-QAT?N950ZP&IuA6~w}aVA4e zw?S8XSzkL2>QnH^KV)PAlKR=S#QMFb8LH@;%U!m|H`lDv(tmJ_Pi*keka%q4^bPTA z-cL>v;c|H^qXtg6IR$U!RjVc+R_m0_9_w>dij<>e9b$-p2&dL9xyH@Mb!f4MHvYOl z%~~^zs2p=Cqq}p;*Wqmd{f`pp?C*400P~}Jw>NxjLuL6Y(m4%VJXYJd5Y#Z$m33i3 zCuEB9)9KYVm=UvV#j`3da9g+T(Lg(^br(tW6|t8^;sKct;i%Y=GpcaG<qc-=TNie8 z-sRQ8<w!9>^K=98>@1%-J;s8U9b3nX>DPA(CsGoIMJu%)+Lr;~%fEC0h&ggYlx0jY zfDyHrtGT~&#FPVwj(H@5!WX#G+m|S<NQk03+P5dUw3^+s<7j<XaFQ7Vm=OYHp+0{< zCJuC{HFyK5IQ;a**RZ|$iEal^Vc_62dfDaDbZAth4ax*tq$I)*=NzVNj@j99{^zex z6fl>LZkgO0C{O0<xBK)$?*toi9|D|2BItn)jHAC9W3h<tEhIIiVmpUD(Y6y=N`%(= zEB}HhaHv|eK1veupMA^F9A8-yIxd{%4-}t+Gjs5=U&qW)yF)uRQhKi`#;cn(?hSD4 zXv<2vqvRArq{`DA>HulNW1n)1ydMh~(@g?>MYxXV(_rT*g58UHCRMEgPbX`o>%V0> zWL}G%i%a(q!z~qAomJ;6mi4x~4xMdvl^rWmCj3B8M!=(xjg?il6F<^1&d{u@Lt~z) zORa~3lib|klS^rA%Mza48~#cvBP$zb!QbqQK~UaZa~rmC!!m90=Z5IvNbizoUR6NO zLG?Bb=uKreCi!nehIJtYy5$5oGyIlmg=^)>uV+Og9Y>G>gg(7?I1{a;q<&DJb4d=h zIf|W6M8wm{d%V{3QFDfQzlJ>Ug7#DGR&#qhr`DJv(|bZPpEF$iMwEVut-Or9SlsAv z`$uJ{B8vBlnCErm`%BxO_?J)#_#HA?!0^~qlm{g|wcwvF1OVfIVl{Gut~Jh#PeAl* z$UsCyY<xjOj0jOdQ?WME8b6`V58f#U1axV>TOpz5;!C01Fz9w=m9K?UzY_q%Zb;Gz zWJQ0rUJ9~Q%@5ch>HxpK`LM{qTB{>DZd@|vqqpnJs-q<Vo9iJ)RA(L|-R1X}fGs%I z--(3<;V`DCpw~eT(2hTMZW=PBGNX<$Hmob`Hfe?Xa$gN}_fNrbwxtZ)(nGN9_KmC1 ze?<wsP!fv{g+Ss1xzZCCubuG_WcYndt7dyb$4akbDg@5pm^^!pD>!oDdX-MSJKrX0 zr&mui0_Vt9@pN{EI%V%Qxi@^phjnB=%{o{}1+|nV6+>6@Arx<&u(2^O-L}NUFjYf5 z5aLXjXPo|%=-8{1bS||#+mF%GH&xb~qaY$N+`m|X&!r~hAUiUDK}C*~8QFkW5=Kp+ zGVLzw$<HQ89@9|@N3fiA$$I^@9}vv`Yo0PnZ-0&kA-Ar!gN{OH`hsUQffFoK1Yf)N z^|VX6&h;@wMV43v9$U{KfnAot7p>AZS{s`N%4R@LjxIB>Hs3m&u4`98niIBBuEB?2 zbA6?_@$%vEr^-~m1Mlc-`C9QvTl9B-EKV!g&DSG6Yj%5-m2K5YPmYbMP^PX+WWU@e zI@@fS20HEu0T>n>Mj9T5Z4fU0Ps-u<AM*7<<Gk8nuLR>hcx69^npK?7cYnPQ#q_Ea z=&=la-X9yGIQs9>NG4l#FimLb`Ws|{4A(W`j2@Y~ltd;(tdZfkgQ+NnjTL%4e%^tp z@#5mr;+liEJxzGRx;+@on6<>`L09aNytB?as5Rg@;`)z%YHA-HMtS|EDh0k^;;7ow z4D3)#mIoeKa#Ps~2#QK4L?+87D$Me2`t(Pj!Y%uRA;Ud0Jk1{_7|*SJ=aspkY4Mma zQH#+2=%};sCAqIt&blwgXYFi-d~F#ila9-S+f)8PJ#sQe)qongt$%hV18>t_g60~C zF`^ANWS6^Pe}Sb3%0?SjrkV4Wbl2_{>ZL?Ad^VPUl<|qNq%n&-;Y5}e2`ANmh=u=+ zCH8+IU6}u!hyQPuK4RWn#V^A;V2aAbhjMVB-ixv`7m;$Rh%#&=bVKu2OG3PXkqtr7 z<eq30O7!~lp2;M_b%~-i11_buF3y11#Hxn|D2K(g<gc=LE_uc2#rm-I@6!3n7RnQZ zbTodu0$bD5WtIRt#V|PzOs>=PAmU#dORZBN<Y#RtrAZOau;cY?j+KwLOhTTZ=^ogP zY7eqk9TQX(yO_K>lYSOASL-o}H1<j7wau@eW=U(_>X_J(V{^W7SUv3bN&RKLO1c#S zDmEZRs}<srEXNQf`v7g9lYx&u?xqvFaBje%o;Ez|+8)r7QPBClfqo?#jQ5gg-2i_L zJcV~li8I=g^9~Pl9Z=Ad$n?i6z3CY?5;bZ=4=j!L1@EEAIMyvSmvfT!EIkuCQ!I~I z^=5JDCM!KR*;}g>+&_1S;DanPM!6t)aKS2+jRK42pa7~1gP9!PU9dWXX>=3G-N>WE zNLnEvoy+@P<FSk{8dTsl678Q{Uxtp)yj@+wDEmbZU5UK2%AF5wA)HT#J8S(1<}MkS zXVh9E;3{DD2pXAZVT~{2DHZXsn1+#tjWwIC0o~D;VW$nO<v6*oda0-Ru#)Dzm{v78 zQJ=5?qy_izEX?0UxkE}ZM_Z^gAJ@J>MDsoeh&OB?noda(xP`VP%j?Py{yAfyp?}+# zMr6ioz&<Q?SWX1G%7Faj@AgcZqsHqLyaK9amH`1~ts0+kP3r?Qo}h-4(`y%erH*_a z9BkboV7+og#~APjon^jR!)hB1B23*N?L+U4L(v4b$gNOZn1$NA$=9F!Z+XEPC<Vga zOLb6LH41tcm(yH+>MIes!MvkbBVq&C-4BwPP_yt-YWC)f2aU(?RPB#xomS3CpSVr1 z0JyL#hGhL4Jr%mow^2x@eijimfbHyUJ`7D%K;X-l;WY%|KAZqL;CTR*>G);{CMig3 z`e9xni2#-Gpt`th5BCD{q*Y*u-Ga%jr{6LhD}-j081@k1ugowuiBauq0*c-Xvz_~g z9%(#e1D@pMB#7FWywrqoTLUUdW||KvuAS;<plVX<8~kJbMAX5OYQq<IZiWzB-OIiO zoU!o}O^AjoWC?5S!yh~G^D^+0dtUD2Yjdh;in2ce$|gCKEa+iXUsga_B+s{fF<juk zC}m@jX+C%DQ8y5h3oR-OwDF!>!)<^An327MLWhdRZl|v|&knAx@?>Hi4_n!kDhGJ$ zmyt}dHTh_u{}kio>!}@?EO^gw6G#WWRS=7DJif<yeDk1&{;d0l%S#{sd#frPcrb0j zmRa>zy5~Sd6B;~^89rek|9tWkcH>0k%fa^M5#xO?Y|fjkvpxjxk;FDWh)-xJ*A9E- z1TX*{x%T>6`@^1CUWI-|AaWJuS>LPuvh;7PJT>Ih!886JjJ;ErX5rRt8MbZPwr$&y zVLQV%-mr~~4BNJC+qQMGF6vaB)@pyX|H8U>+L&w3(fjcD=Ylm|z!wyPAN+Mv1@l2R zCL#wRjS?k<K*Y|mY1P3QhZ_hrY-LI)zlGqni`}eSW2*C}v_?8kzT6i-tm5FH@_G-0 zA5INTfB>ahNyvzz^cI2`OYhiqcd}7sW!wW8R)CiFTRI=9_QZ|});m6^V-^C1Y2eh0 z2od|1pX}QR>~BQYC2wZ7%XGq^--Rr}kzjTvWOSAzM!mn7?j+PTP%lpXtXZ4paajEK zjN)YAW(p$mGg=a59Zl-`px%~AK?hhiRwMHmKtKqfe`-|0t&r;Zem>dviejWwi-I>b z%W${-$mV|!5(^qFa%P^L_DAjYruZXm9gs$yNvR}b{>dGQq%D`PdHN5}@_$2l{I^v4 zf1Pyx^9=k?@NSk=d`=y-%%+r)dslsqGRD1`-xwtKJAfI+F)~lOO{qi?PfEsJe(yW4 z2$}qtq_FBdi&pfOkh-%eU8incQ|V=vy__9`4teWAcLSb>=u!x02x0V1>Zo5V9QoMv z*7Ia%V}7))FLNyAGg^DPY*bc^U?q>8ZKcPSzAOQn8=NR`7vi9nN3(HW0uh+R%4geU zXQMKsx%d{gLgx2m`*>?3O`Oio^S;egLsqJ_k1PuOG5bkyJ%MSZc-Hv9$D^M$5E{oV z2-a1X%U3aQ+}gV`^qrH;bB#5JV$tqEnIwxiGS;3xs3JAaRDS--6)DvT594H#;c|Z- zL^{}_i=2*3LSYG5@{^nUA!42no>j4?{g&42e>*%k(ggL)#s_yoRD-`*Zlds&Laco$ z^Wr}ebfO-oXt^j6)_BU_;NA1zV){I@XOa(R#plAaFk+0IHzs)@(K|PD%PgZdx<6Mr zOb?Mp8oYI{M(Sg(T|K}GnliG7n0P7TsoYS%oGXJ(N>JLz6NWr#`M+29nTLqXLRc&3 z&%lCY^a^mc1bPixD|>RzFaZY>LO1JW#G+%4W-)tXE@3WFr&LNTYLCjCe^l;yd1NOq zaX_!7Gq>P}^IsyhO{h1~f^L~bwV~IBGdDyxOPDsmf7n#X%%Yx23nMQ7x-{zCh9Inp zV#m!OJq>v*)a<y`T{C$_81|dqRkAX`qpg`;>l9uqF)N_338gK{m7^GYQx4IV_fg~4 zIyf)Vy4{?I&)6S@6lfj`4s?K>I(+&ootYWFZJ4j9bv(v)LW;0=0E3Qke{B2?=I>yW zhJQ|Od2pgHN)1h>7d=;SC%-mACY5-(2Qm!jyrltvYMH0nxT~K>+u^Y}aYMOh>=a2g zH9`ClLIvqcmyNbk$;h=yBOfg%p<a1*ahy+5q?+ul+f3pd0EQfuvv$~#kP=)}GgXWg zl+4Opa<)rl8-o;gqhgx52Rcoae5S?7<iB+dyC1gWv((1GaP}4-e8JbK$%oGYvXKMb z5c>1C-fWW~bcw+*L4A#U>`Mul>OQ_<9H+K<%DtXmDGbIa>zN_L!{Ruv+N_>^9j2qN z9xQNGT79w|5l*s%=>&lMJZM^1R25~#QYC%5rE{7Njdv%w&@wJU9_+|nwZ2b&rB4Ul z^)ChQ?;}!&(tI=W1aP(2WE7*CY`}JteR|rTo5>_cOl7%T<jrTy`o__sJz67QDuoH6 z3adl|Nz25l=*bYt$@EAx)Hj2K-&rj%jZt+K;Y<l^i0>-GJ#n}|K)ms*oRWI4ozfCM z;7dUTJB!1PMS5wg%z>3dJu%K=S=aLD?9d3P_3u<*WlCZf*Qvlek_MYf1h*1BB`c4& zD)FqMAfs_8DjX8>^ZVaFkrM+7weGB$ffJ-<Wf_HZ1O$ShX-%cqQ&Rx?xadDS-|O=a z*l1zAuCaxIZbY?iAg*VyWLRh1mK>|YbWH#gsY`2_0-(2WFMG#Pa0WHE+OSe%st+71 z4*nUlV_;aJ!7-YG-VBox2{a2{quZD86WapB2TMTkFNd$Qq)k*uyO8|QeyK0*IM{_R zIn^~3S!DoKcj+HfS=_hmO;&wM_fEC}n4J-f&Zm>fvHPtGscP%c(P>ut&AM>dXQ*Tj z40w(CdStLrbUcb#nFDdj`UaUP0~vwKN*isV;Pikn7J<g>Lh34|hdeK+0PtlFtXFE* z5i4i~E|x?_1K01jv-dW^?Y&9Txm3~G*y;&27b6o18>)9Jk=EH;lf?34^epE9H2!q} z@G}MEJ^WF`>WIu;=j$Lvl$1ytHdpnL1rRJ5%9UTFihIr4LGa|j#TfA#gHkhCSH+V_ zs|h0!^F7^$YoHC|>h8&-DG|o##uMP}=b$b}orw#bAtci#D{{Y;PS%8;{3kY`eyj5L zj)SgPl2>KduitB==|r0g_V(M_MI>v>ak+8ckgg*JGJ41>v<4L3?$8BQa+G5fCzj); z9fo5HnG8}DLl=#~I8N3Tax$DUM)PVE!&*jd=9)S@{AH(?cJqs~%~aT^8<wUvq7C$C z48?LFq#jqnn1DoB9;5VWdB#TMhOhggOx^jntHs?eTA>0N-A(4ktPk(@*)n$<U6Grz zF0XzYuIgzKb&)lQ!EuV<KAPg#+w>cljF!ne&+%OpQz4+rVUQ0XP<dnsAyttAGanYJ zhm1N63Y6bm40$Or)~)7K1W<_!+?p&MC?T^(4c+q`xC;u$5*P4@oLYv%w;NWjpc-cO z4|MPu<?L_s;)C)y%Ymb^G)EJoVvKMZyL`d5g#vxOk-8jyGWV>8*`TrR*j>1|mUZ4_ zjca$nrqe_4Fvkw!3;bqGIX`zeo)53-HEZ|fIU%1!Qe+CJ*JI>Zl~6265{b*We{$Qe zPow`@TdMXsVXn86wf<#{B&`LK82m_#UblV~xeo*JxHSM>+dRPV1na%Gby9M+)a!Wu zofnQt=g}kcPtM?Z(_zF-E}nJKT(YiKly^_v^@+PIPg`Pjt_8C8!0&jqTx^wo32UEo zaI287KYZv%s~}W~$r|MO#EX-!OB~)OL2DREmI5Tb=&PObIIJ5}y34ybEVR^MVpaK; zA7yId*&^a#Op?U@G(2owrBXN+LDt4{j$uhEq7cVG!djCAz1jT+jaEzJ5Y*(4kVCEB zQEjwYjEQ0F+<sU#@hxWD`Z&Df0f-Ktj>jGLkTVXV#!6#_HbhRmhg=Rt^7<7mp6d7a zDA&js{4UMtuPalD_1X5$KeUneB|xe0ak*xbbbhSl!$?V<zcS+Q0htKmPW+Y|Sop{L z23CH}EuSYMzxL;Vx9WbSJkKIyBjeLgQ{?u~W{Rb?OZ`Uc3I+SoxSK=b(UQ1OHV8h+ zCZ|;MU~QyX<`}A!7r_8rL0kG4SYDk$cmXrR6$7B0+2srkrv%Wcu`%v`pwBs-8HCF1 zKjhQnaw#6s1!Q>$IG}9yBZqDagvmc1sydw8`q1B<)bRZH3Lg9%*bJ>kEW9vnBWQ-m z{Zl*)C7^fy5P@W#9m96nV^q)y^3JfR*`K$64^&`ibgw&AHP3Hme5n2mh2-<)Zv~pN z$|~-1!YoRSOo1T5%xng7sVz=)aG;msd8gRUyO0Q$$zfEiqjd9ax!YrZJ4V`H$b6Ek z)8QCON895$6cA5u`38V|{_!mSIJ<9wiu49WLg|$2WrErZnpH#jsaT1=8v9_u00E|E z7ft+T609#kNGJn(-h)o2fcXdD8K-U71yHFZrT?PyxWR_3xPgQ18Q6$lVLxksf{Iga zD`OM!&wx{A91o3V1D_^wqg!rV#k_gsg!>P%@xP?r{y%s#cFzCN`Lf;{Yvs3b5QSL2 zk5Crm<Jq;5hPKLQ9XDivn^?<{G2>H_wqRbJe!T`lM_A+MlI3u+gy6*XNayBEKYh_N zLLyp`2&f6@sO#l}wDpmT;B4g4g%+RO56edWGtU!J-IMfTjJgR<@8Jhg)j;he83`K7 zqY4L=E0}78U(z|tvs~#d2Ul+&zc!x3we6UVVT-rOqm3*+47AX;|3na`T9mn9pi>6N zHM5GDX|o4y*XJk<uu7_3c+T9n!hy-hWhP0b3rgSZg(^bp>kIgpK?(`xuG%q)J=uah zz%)0|%Q<BKJZJ7oyQ7o0j!F{@^?c4m5H4a{#Xt!D3>tDg34YaX2`E3(k8qT|9J^~0 zR~K{yxJsZHUdJLU#dVMCO6dF2Q+HYTZ4XR-bHCneREl=}^JmHX%FoAPMQd<B^d`E+ zB}EzZQ6-FzxflYj%9<Ot*`|m$?(r8_m5FOI;w$f%*4W$e6QaH7oo({QxZRR$&Q38A zFkIy|X8nfIGZ<JC({5Jff>F{=3E3}!ZChD>Qy+}rnC?17_t*$3_ZA=~<T)j=xRD%+ zz7gBgVNRK?8G<b?iZ3;Muaqa5=?Lyj%VDgYEjoehzIWAqraKV(YjW@P(RI9z8B3ky zRNz%QoLVr6s+W@*$Ri)|jcY9!<PX$HCL&#NE=K2#I)e9h>U=A7^$x=jm79E9mJl)v zueM@)C>J)vN636RhzYfpl(eBn<kXW21chV_P+gYT+JY7B9@iPTZG|$j1)0Jp@y@UK znhGRUG1s*WVl62!QFO+BsiD!>7mP(4D#fU_mym`24T+sJrA2DOeu!7b->M}(r+0*D z|B)X?Hr26)ljVyNR$<MId#lBcZq#FN&aNyCtM7A#&!!ej;pZ13WZb8T*!)yB^&QXa zydc4pCYNyb7g~vWD5c3((91$tDL}F71lHNpV1CvZEDaXa!92(yfQXfQ)BTHbxr}1a z%L0vc|KPn{g>hCy=<t(zIhaZwRRIR=fZ(LUbxep+7qI)}bq47N-MR6li}ekL_0G}5 zUdYF_%Y=?Np3t7FDMB=)Ni(SBJuxy(CWLWrayN&0^M}Y}LRWS}pFgghd*4FII!3D} zE-ir*XvzwA<O69JM&9-0)9+{)pwLSG5Jbo6oQqYEBAb336NRa)Vc?21r{fgI+Ltut z<#uuI>h<1|i35@!cNLO(Hqf7v!HN0pbzEG#T;b5ru{x{nnR#mM<?37VPa){$Yr6Xt z0)z?P22}QKDlJQ?89_a99K&2}5Su{S{Llc-J(b|=iCPf*$8At<HNUU#EJK^<j=?ik zdN7AK8hEtT|1p?5imy1uwsv?}&quEk(^bFI;dS-oGJ{)g3PtAmKzsGX-HTFaM?*v- z0zz}a*U|uDT@sm2h*V?Bn$s+|wZ=p4fOB)AAO`i{8vAN9&A5Sz^7Kw$Q6~4aQn&zZ z+ZzRr(M}%l@z_Y!v@Iy6k|Eav6TpO2h}eKd$(1cz?hazY^2o9M<<C=`V^B10l?!sw z^W_Y6=hs(tEbVcftzon}^jaUtMU46N+l@cS>Sz#MibTigT0RuXEd(fzu9#~A4Da<7 zu$ox%9R|uwlr=M2F=2iH#e!!jnOVQv@kSld!7}XKF=CdkR>68>NSBGBcBz2wAn(RB zob-h<C7RdppsN<!AROwjw$x;a>iKfnoT1u(VDW4#k80b;N9Yl<V1Glz>irzuxHvBp zGb-hS5Csdk(<$#r*(?Ip#ciW?9>$@niFz5b6S+`jQ7DQ?Bz+;Yrmj7|GUtQ?)=DJZ z$tX_MPFK}s=zG5lopXMG+Roy2y9E@|4OXA&-9a<Jt_XT&mS3bfV)Q3o9RqV_8;|Rx z()8AW44q}$6;HGMK>A*w0!gL_*;rI$3*Hl_Z}UxP%NRNW^-y;v^5+G_fVV<d3X*q% zIZG}tL}bbLdP!C0RzF|ivT<*+{S#(yhN?Gy+@V%geiHVVR3s@RY&7DMIX+B92ZTnh zz7sEl>)7`bO#sgY>nc%1!v|m!l$lc!$mjiIfL&2+`<r>S2J6EA++~rA&pn%0{XQ{Z zj`6HgBNHxGd_{YFm_UI8RXq0tjSN5TN1zAa2XCx0v_+Vv8RV6me*BFh8hH>1w_af> zT3#^0_Kfk~wWGsvIq?a*Il$YqpZ%WuS&_97Y5d*4Z%*dZ`$FoHz#yay)Mo(QIW^1g zbYtPwEebNgZ~C`q7P*!QA@#eTxH4>Vae|Fqf^GnnlNE<gleE={@W69~irgKAJJcuo z*8stsKwp;!C9?;nUVikb9o_7z3sjKvLe!$xg`;>B@WOJma1WV*k;<aQaAx-%gA%u3 zHM4%Wa_ru!@RGIY0h+}n!;{(mV^DE4Hn26q@qv61P42@?P_w%5COfF9!{^1A{RwM( zOjX$7!nPWYHls#4!W_VQjT(Pxc=m_O=|bYqogBpW+f2I%FyV;!h}oeX6UFa^;83-t z!afSPAG*KqzbNpw(zWR<9-#p@xs&!8ZZbd0O=3NlPv3=)6ugoat~iH8^$uqWxU$vr zJh1id;>_IF_L*jcjZ?x-z2JEwWLt}&Z%1OpmF7S-Co%H-WxwD5sG)q=Y8(K%c=}a| z8zC&p&xe6%8C6mA7DA+vpB)_r#;Os6q>BWb?yY)lWCD|(l2uB9cY^4~2Wa`SGf5hO znnBk$gt$j-cV;Yb)vBI;pTu_Rls{s60%Mdpn}3(te3i_8B%a{iXYv4<k0W?)BGp~{ zMF@~v3Cw>6>p5oO=(Bnsw*g{#bwhwLtnb^$s`KH}7yj@GlXzcmDO<&$)l-wYiPJ|E zo$#b>LdRBJdOT4hS^Pbrs_Q^DC}gV~k!`eSCzMv{n8+&liz6k!Bo;ObaVm&P84ND& ztAQ5lv2nstK$@Ns=rSqq$<J)bDZNb%@_ebFQc<B7Is{TPX{-a!;}J%D2Z<uLPoA-y zi|Y72cI6y9EMtHr<Z--ZyH^#MGNR1!<7+`(+LTRpQo%#mX@13LEnKBDU^$6rT7X8c z6Ol=>1Vr?fP32jXX;1lD>sv|cC^CnxDYZ`l%J>6lMHZYpFE{^4F3B%q7FN8aJm;|e z2Tqpqou{)5hkr^ncM-C;uJ;GykWE>p@PG;!i6ZSW*&s{QV-3Svk931jO%6>M!?ISj zysz2+7Ab6BIMXhmQ}VW(Jw*nd1G2YpqP7;w`cR3~2DTOrWw+Tthu}ZU<(+q_7{F9Z z+B#c^Peq4t-FxLWRq94#SiR<tMmbPgpygZ$W!<}fZU!gh-uPLEFoo{+!5-;RGXq(^ zInL_{J>~;BvUR>fOCL3Cdpmk_rQAp!7QPwocw=L6UK|Jr_8-Hq7KADP7T)RsY4-!D zCs7$q8ISeb+!vS=v?w(J*(?5s*!ka3b^p)i5C_};v_zVisuIP5+O*MmO+<P5qAX-) z&|i8dcyg<1wt2|-dh|4cj8paf0*{k&zpu|G9)a0@CQk=WDUVvx|4fzNujBfgmGWnP zIl}|hAzPGBnbSybkaXs`DO4HxjsPEgv1BSp9K0JempIC>e-u`FE%t>P>~vkI@#nJU zj<h|m+Rfgi#twqeMitFC#n&ZSJ@CCoo;jt|kHOwFfyU_^+3{KW>U5%OdJ!h%W#lc~ zCs?ipC4O&K=_JpQOI>=2jW2SJr#C7HIrrI)=5ZaxYEF9>mW64M2N=JH1s?%18`on9 zW}w9&D)cWMAqil=UC;2}z&2_viXDsn$8&kcG5Rtm$9WS_kNb;QsK2l6<g(ph<0@Od zGB!N~Bz#zZKSYsl%-vahHolUM#j(C!y|{NzL8*#TpeQH<{M+v8Wh$nW%};UL{(AC( z;6@k6xMn89I@$i%cYj5u(y4}*|61c%P-72p_GWFeM_A-grA!moO5P4d1+lXOYHL3= z-MQT^zpCD(g;h`8DvA({{pg<!B#~Nmi?HMvM9wa{B<!Ur)fh&q*%|>41N)+C<Je*8 zpROVgug>E!a1)8@x3J#>tJ%CGB$|(mSK`;1I4aB)`sQ1pb*UAhXDKTf5(UQEw(p5? zt(qntb%^E8PJ$dBdXuk6c_62r&I{*h=D^UUc0OuJT%uB-yD{>cH1AGTpFpFNX90`; zZ^+m++Kc7#5hJ4(k4s+-d%e|_MgrzV<6G9;?HE-B^_b7VaRb49x}qJYPIPIe$ZCe! z#!KXsL?++QA2LTMai~2*u~1T7<A%g43ASoO41bG^WpKEC0!A)FirIvGcrB~yVjEU) ztrx-ozqE)9TMG?Yjz)dDCp;+-GDEj6hMNP%>(P$w#1tPkh}J4Rv1uYhY%tT#8$*e$ z0e-+1LXF??ChpK0Uj+Sdd{cp3!#o8~V+OWEN&&bCAvFR3ke1ozk>;ItGkvb9L?P<g zO9O*NMxHMxRRLj{k4XE(EZ;Eo)H396z9yjJuCS&KQ7`oK7aG0HwxABytP}nhu3w$6 zDs3V()&A||O~GC4_q0-&zi`#&j&3pe>4aDHdH_MoD`XE23FlO~okUbl=q!`g=eY!B zrt%0KDf+%CW7A9rj8VGh#MAFD&ZfAKEv{c#-aW(@ym?5@i74$Zoae4XK+Oz7N@>5? zpptSLqi(3d0UZfX{)PUaWtuj$sG!*{O3WT!^F(Z47Dw(Yk&h2wMvJF~M#zAo4(CUx zr4<lkSeQ?zUL2$d4GwIDgs-W_zE+-gvh*9dDgsn)qw%9B4sbz0;kEl^d@F&Ze9Xue za>D~WMC0b;Op$zp(S7@OOm25VC#!6Y)sfYfW%~RIP2UJy|JHR}CVN+0@2;)#KwC5r zNOqE`KHey$dUGuDN#Y2(0JX2HG|3*iNo-G?!?Mz59w;+f%!WiVCw5lmoU!zo79ahI z{-g!`r^|{fNbYyDD<q5j+&mb%b&-unrVtqpriEgFGWkXS?>~E8`JCzZ)3{jnKoUu? zn`(%MuNT5Rg|{M*>vwcB3t7%hJyPsXhf-?f(Ny&SHe6T=XShMj>2Bcwq$0*(#bRzJ ztnJ^uCoEc57(!yWm?m0b^JBdLA)7Y;C8Ttd`JxxvG8H6GXP~uz;563LWCpYRYyP1B z@T~qf6w3dzS;YQ7PV>@&E0*Q4`Q;3BY&6@@R$En!PlTf*S)E+ucZ-Nd&;S6_BZfU$ zr@0)0;am6MfgAPIznaKv9iFXo%(xaU(M($`P2G{P;z4eA9S03hjylnd=w*ua&U=Wp z`=QrMF5e+KONS6ET$CdsBC`GnX{YtQFS7D`3A#noE+M@@A&lt>*ym2`lZlH*Rd(yV z1bvi2;Y~c@=8=3MwmoNVWEgy{f5|XI4LOo`0|QwAN{IrxUX(cwwmw<gn&4N}b_7}o zIIC`plVl@0_1&)AKDK#KkGJ?hF@I@INY+dd=oCPBMSzWJvxcVec;raC?=1H`7ZN4p zn8=2_UW_KtetPPsZ~&TQTP=M`yPTEX>jWs&;9fXV6+8jGftY+m=r?}T8$ai`Ac`AG zTgzZL1mxMRlv)pi?+|g!Of3Pk6LVnsw`=`8=+JF7Y+By@s~1HxGJu%H?ij9yMVP?R zAX8*vpF*KBaK+JxOFO>-bzPPefs+~>j@~Ky77%&SmLwNm5a{Rpn$DiN=={`sC!mrZ zX!rY}8_GgdQEjkb#OH{bH&u}<{`gLgwRB4^x<S_OU(?T4cw<*MEwZtW*E$<7<qHXi z5sgCuCNO?7j&1*1I{gYm^M(SDWU`Dq(l_}`>09%dLp@uXYO#9Df6pKBx#B)xM7Ose z>_{-k$J653A)Kpghi86>-;BquPYPz(-|3sl8C?mC22pAdcrwm?%b^$a%qBeLbZ3#x zo02qfK7o|yHKpQXjSKM^bz`W}tT5BkCMGUd1^RZn2RIj6v@e{EY3kbgap?*KT8~XD z)UsYy5PQ^-Qgv?0b!iCDkuBs(ij+)BD$cO_I_Zh*Vdir0k-f6&`${y^`#a<O>(=38 zuS+6g6b=d0WdEzYhXK*P$5VuJaEF`&sDIwp>A|>)FddBEnKg4#rrD|P<LR70=XPF~ zt7?e2f|aP`q&d2ZRUQZ|baVa!*GDxT0)l~h>Q7`~T0yp}akSu45Iw|^E9=)1sVZRP z@!_1nPmE=qpN%~9pAv2Y#j<Z0e6V*N8Y&#oIMA!fMH1P`J32Qak5vCX=$CT7skzZ} z-n>^$hz;nKjwhPaoH2vtBDNMfW0uH~aC%VWeD;VO!LQ1P9MrTiW*cW_7Wd^+NPXFa z)V3ygS!zt&tTI{clKXzwwVt~`y>Lvu6QHf?*ZTxF#W|X9xFwzd>tyNfRkVldDILkA znK8Da-K<omUdw%oKDBt7Q*7MTXB-+y!o9_^x!(asxKY4i;iCh$>+2uhz{-q_ltv4N zV?hw9I>;+$VNuPvpeu|5;{fj#Dspyg_K`P!hN1QSbn-Zq$m<v#G1R5dMe&!)UOy#x z{9OjT!Hvgt%s*uz6z;ZK%?deZjlokRe>K|6pyQoai%bl1gk~76_dqPv<xD}qo?Tkm zv_*tcZwYuPYeo>SxdWu~2~iQRf@j_Hf*;Rs7ggczF9OM8Bm=^^V!%{&s<$(L)z`#g zF<5LQxI47wmA6SiGUZsGjO?>WSfC3s_Vdo|W!TVZ2Zp}#E~oLZCh{*sfLl)Ahsh&4 zSgUtI-RWUMu$lc9n_mG3*XwS@T_+3RrGZDGhb(Z3Zb@blHrkDPjjLu4`RQ5}hDKX) znuf%sldVdr4^am{di6V1?%>r#Kr<LQUjWPa?9s>ro?}-!PO;$!uzUdYbaSSoTy-<H z&4_blnj{w<#WP+DS=MVWyCz;3-1k+@9)Q63?FkqhFln_PB3cyQQFN~*tB6Biu~x|D zqyF+$UhWcN(3UA~I#q3Lf^Ii&Of$kuDm-Z@K7WdYZv37PB(#{%Stz6uuUR{!H{)<Q zk~?iOiUv=RWkLuz6DrNaKxmMa)_L#O@CVL*z-T@&MuumTO4VDVcHto?F*EW_O+6J( zt~BZ+JZKJwk}z(=&@ena{;qTFMAa3XsZfAG*12eTwF|GrY17pJoy@Bw!|PQuarix# zwR8q1tembt#NhX}<W018{{hpKx?$b*v_3Dan|y&rAl5fDod0Sa%p8M1=4iX*KHD`0 zh{r2kt{BTnwZz;Mof|0$fb8m84<P5o6EUOnD>-%mDGXi^O^f3kI0f2>Ehqve?`5}x zksbtzorQK&KTC;rg_ORnZLqV_r9nfkpexuncU05zVuI5-#H&JB6i*7vpe|EL%S8&R zhh0H==C>!SUO0<{rW_E+B!_G?2*HuEfRL24!Ki;pHeSBe6}Us)d<duv9^AdQlnl+M zxlzaegHD_e+e~90v$unJ;iqFox`Rou$U^5<FnG>FqdSFan`fF*I=<PHRm{MV&?a%< zSwr!ZRB4)<-jun937j`>U&-xL$HO#&=<Yx1j4MKp+DZUD|7ND;?~p*{53!mm>g5&a zi|{j7(xI5==;{xm`uuR0)3((BU#>MyVoqVKGv4e=<H|={%eJ!&l@4VhzlD#E+SN}g zA9^0XZPM5k<w(faF9h`A$hew0UV2i54kQA-$nHvd<zw*lVl%4_DR&;zEE=^aUb!<7 zLya*r*u6-$f}1BZ2NcE2@*NP;`G~ELL>u_GC1f3oyul*=WBj;8OZ7p)J%Fe@)+fo< zE(`){*0N|24iPzjK+Sgjwlv$<2WO*8!?NsO)gjN~*GCyrnG@T{kdQX~FGKDN=O1?@ z==gnKK6AW6B!cB}7>v;D8B1bJcu>%*>w7cdgH8NME8)+DB)MrY=Dbp<;&J#x%zi|r z{FfLni|7?|i6hmHBCGruU%|WMRSvSdz<TUO3WG@m3-k)f;rGO_`z@`hPR>3h!hpz- zb+u?P@4MII_|?;IKlCMI%7MQm`M1y7Vh~Jc?Vvxw(pwEvgb_pP2^fq??hzQVF5R|` z13lP~U_ZD5N3VI?4~m6iSY36j41P&n%Cec9<zyj|oyz`}1c29fIE2X@9Zy7cLEFw~ z62AOCS@rnl{H#^XW2m!>%3ln$s*4Tr%FeX6Z<c=}@|EU)_pmuMNQf)-qm*Cd0P>>F znVkowH0IZkC)vdW!lwN;nN+q$2@raESLdrt3Zt^qMOd{lIdW23g?~O>(H|wh2?ifd zXD|HMljm^#=g1;$RS1LSibusVAs|O4zkvT*Ev!F!%Mv@4)cjKpwDYaYmC2$YkBC!# z;j=>u!y;4nFs0o>k>xL90Gq(4>O;FgRqEnk#y`G69pavm&$nzc@_2|6TkhQBACig7 z<)F8i04___W26C|h<V6QQ;aB;0x4O`o=@{MJhj=<_I^0@Mq*sFW6|&;I0}0+NNZ*; z#PODfh7^9#%YrByeT1#Olm=$c57XAg^YefIge6;VGlxc7yZ7%H5{w2w1h%$&T3OSk zow%uYlk5w$W2Hh!PiyMaqabV=)sq%3vBn`tY5pjETFaP8nDCSIdT7R>t&Z1Qgu0A^ zd2=)FLPn?R`YOWQ>3}n%<#^Zsx<zk@oU_Cn_#T!ULQu}aMzo(W4+vaE%k}kPF6qwf z>sVuj!R(%}p5sv7kNGrLT!h*B4>9(?qz<$GZ|X4n|9s2TKmoMGM;kYhb^O8$jLnXS za7PwmRE)!{D~xU@tX!;^h008DfLT=XhH@&3nz@$CI!wNjOz4OxxTrp`m&H_KhR$o# zYaB|zuvD{lolj?d$#DGA`9N39Pbrz?GAMzeTw-&71!=79(BUf@A?FW`y%^>K*ZKwD znwceEJ_E#x3*brH7vo@Hb-Rx})Ec}~cX+dx)KsF|p$Y14@h#y@qExZPklKPfwm2|C zN!kB|IWwp($UPMUGA-l0r+-6!w^ui?z$S+NL1(z<ZugMH|L)~Bs$_MF!qk>{H}^$o zWhVYb2Zp0#6_u<bSpaNtCj85XF|r#~07^Lob-H&?@2!@$IU3G{%Ir|+nCp4OSgr`` zA!^6ujNVL582Ca1NV&@Hhn(sebMk`aY3@2IcpuUv3Ukhxtf}fP_ojSn>g^ByDL)$s zI6`S3`o&wzjobS8QS@GLfs*)Bt`q`_Jo?k@W?cxStE0Eu2H?S34aKY?2tik%!8il1 zF1b~@y&p5#=1M*DZYL?J$oS?S!$M|R@eGrVH`1i3V*`7kDhkvx9;@ziSc~S5Olr^U z^yzcx>Im@jufgm4iYvCSrGcL=MZ5aYaHLX2;V#$9qy8}pg{>jeKhpF(@ogtb9MgM@ zAgwpnOm0k_kBe(Bq+j!i$Qi4VmIhO`z>AD)cV2-P)sr!FGrnv<!9#~DTgauLIYiK_ zHyS4Rci`hkI~_`>oKRcB>`@WqR&UZOwT&MIeA$a!-}hiypZ@iBviAf~?l2jH(3rgG zS+(KxC{`g<j}Dzo{kH>E8MO`-qIuZsQ5l=9Tm`wo`nN?o2iY+Be$K_y1$_bw)oAFB z4_DJvYbtP^zZ1-mGv>#sJQ6~bDl(+tS8^CIeI_oNpG;Uf8#pC`h^UaLG>@QCUW}N! ze8m33ix!!sgt1<D=4!2Ck3WTUf`s1IBm=3h^U+I|9M6(_ILYU*G+q&(M0K{EC6N2g zt<4Smg-h9Vu8^dY0#hNf3y<d97xm@XEctsaZAfdY0VpV&iS~NUp>MhT8UVuqzMQRu zoP{%2KT5Lf%T<O>*D|RiB(W@U=a6`a&*|(;ILVf&)o*F!d!wN>Z)H4^GQo!VAp{EZ zTW4#C5HU~u___U(5Pkdna~BM|mp5fYpsB0XTLN2rYqQMljEu&xUE>EFo6p_I_Gkb3 zZYVSeI`Wc`R}0^&se#(hq%z@aa*?;v(72Mqu$diwBQ8(ji(7EI;V|mTVK~}JyWM*= zku@bKIfan=&)K{sEWK2~oPl@oR^TM`u21sEOU<Ss@2Xh8JV?^Hy4NfGnU0_mW8uLe zY{Jk&Qd&g-q}m(t2i^$^PN44qMU@JohKiTnGz;H8+|5%#EFTZ7zCz3Lhdq7zSU&A< zWa#7T$kTigIR@2FEd*w_*I2oM6)9_ecOO@bCM<a!JkGzeG;mhGxhGaQ#Wh(nTp-wp zFg0H(vHtLeLGVI#csG80{BGjNyUW}i%Nd~0F=hxNzcRa|SYaF9^fO`Mb2rvARTNNH zx_3n}osdw>9LMU)?sJC|Z*2ZeMP6-uT|tM?Y`xSCqY&`xZ>d@RSdVs{EyP4gqaKbf zDkbu|ActlmyP5uFu)Ybu=0$a_MCX1vCJT;#Otrr9m3PnjueEO3k7<)92?1$tKkHzu z?O)!2eDki@74V}<X-+Z<51{C?@v*{Q&kj6!T79eybSfEkx<zs*ms_7QfAw-s*7;rE zmxKn(D^sSPHK~ilF%uHBDP&)5jdrRCG$fo~^`97Cj0c~z=UQYBfi^^JxK!B^s2r1z z?|Z0wMpe2t?VDpHx1*83Nv{9S;bJRuXGr-cx`P=5pD9F{=C>u(hQh}B`zV90J3`Mi z*QH~H3v%i|1Bxu1e>zU(9Y7Yl?ND{m)TqK8b&f;JZgn+<P5lvLXYi_mv<9UilZgYZ zF)&!4*RgI#5S{X-SMzg^RB!5RRm)dc1oWgZK!48>1nXfcoTEOqZ|EYVun!tdIOocb zT?8oFLYeSU5yPzSG&_>{#wJ9DA@_rY{R8dkk`7q=^*`e}It69*a;OjnMe$S3mG)gB z1$%aDqUzxQkqwo#hx^&z!t11Wb{d$6_|PP)xD4CKLJ(nI?Yf#M-xM%-Br8t3<eUa% z)Q*srJ~ZsO`|64+|7;HSu^|u8>mRNGnu!^(X7yoD02r6y_{(n&UPcX@k}5yr<bxgD zi^(@rQO0*%+n%S6&)I-UYwWpAJYmRI%#v*yha%fm;9g*}z2<hsTr0}(SJm>IVxpeD z+r#>Tr?|{yhGLJBF=+I}RE_mTNeB8QPpzOf;T@FOO6^`MuVVfi5!~BTB7KwJmbXkt zEtDK!oCKgrF)Y5DHw;Y)1~5Z~MB0o<u<&>}#<wBacpmnZ`vA5SaU$fk^I4honf$)6 z<CVV}?`)~2d`c(GdNZ@}$%M;N_z;0S6lC9xon)LM?+kJ~h0_KdyHv@ds83;~&s^_x zN!MD17!jy-9X5F@5y72PgxIL83vQO)LWqGgh;3M^su*R#yCEtV^r#Dra3D=4Z>Ie? zVPJ@hbb9Ym5c!LOM{1hdu*0;>0eZQ0T>>aclW7Qlc`&4pkmO9T-C!CeG8gac&o35Y zILbj5W802lHdFQhf;&D3w<^~nn}SNiDZvEvp5n>wUB<)DxWj)5nO4(ap<6yYZ64{X z5+I0@p$Nq)!1VF5jo%n$Rl6$ys<Kx@oI5Q7zjr9pYU(g%UwLJSX|I!LbCI<beVCf# zSn+;8VT}MGvA2b>8aVEZ<AhTp5?b)5LaW|YHcYIzja`It1vg4V@qlF4YqF$rD0n<H za*`wOTiVB!wj@#8Efb#pfhRJb!V?{-x*3CqRQWLDD?*9blu%}?JJ6!1_teQ~Hlt`Y zvZ(1Nmgf^GLq9KDs|S&K>WvJSDEit5(0&NqO((y^wl%$r9uGF_p1xUfrfciD<I^C< zdqA5|^(Cj!9!(<LY3qWm2)HhKt)PzOvaJPRa;Ej7k%QDdzT$3d^5zuo52qF(!J6up zL+YCdmG|L|d~frI9TKBI0w27kgnhCFgtsj@qq9{+mECQ!Sg?<tTTpg?MQMl1eSkA8 z(Tb+)<qOk~dJfIOmy9<X^>F_w{tj{Z_`cer?idXL>SZ_1GAXf^T{y_U43r|q>Qmqz z!Jl-pL?NHeVmTp$Z(`yfZAEh=@X<*~^6wy+3<pxxPESr`CbAYmSV4ZM{-t+j%m~3m zun~Dy8UGG^Esu^U(E=6vtdM)7-LQCZ#l`LQv(Fe67Q7~hcyyw6RDB;erla(y<xNr+ zj`BaqD%k!Ts`3A^RQmsM@JNvJF#e+K`>ubWDeOb!s;CcEUZn}Vef*>px6fH+aQahH zTUgJB)jObHn#JIEGt`UtQ$Q(YV{2*itj-i}hOV_Hd;L5?dhp1eP6E-+T)3fRZ>Dwr z0f`3tO?L^VrS7<j+E^8646>QcJk*YtMXd~lcAt!LR@W6?Ig#4q>KcT`MZDWs%`lw; zs9(~z-qWvAq)fJH0hZ~fAIa&7XYm6^H4M2OAv;790Qq&hn*okkD8E`F8AKz(9h$;y znP(-5N;a=V(vL#XYQ;c~t`{;mp@Xm2ZYY_wGvBSOA2M=BpL&8f5^-P#hQi^}{h|rp z7?i2pW>E3MIx%=g%Fjet$iUb6cRTYD<a6n+B=|1^DA-11aRoyIaO6bWpc}a;)(m8R zE1thl|JOpoEpHwR&n8<7me+omeZjjr5vMB-X}47bnpA+P{dPj|jZ+(2JU=tURa>wW zsPhjtb+iHcws*SCoc-TWTo1LiSgK=5gZ(16A_)y69{Lr1o}SQEyXE}EdNw^lz+E`P zbbLY6Q``rpN^^`=aNyoC=EU$8NbB0aJM@9luH^=v8F-5LA0`S9e`xU?8InAR!v<k& zuL4<riE$ShsB{@Rx(0C)|8WCeuK{lAmss^}kejMWO}bBQFmR|M4t-x$ib2}|@<}1- zNx)q?U??RzX#2UHcydvz>bIl?9X1&&J4;NG7gLo`R8g+vOCqB<uT<f_B)@#4u_GZG zVG!leNZwnEuNW<_4#KkgcTNp90GFSJb4i9Cy}&$|15KfwfoI1Bi>JE~V>iPyfX&S$ zmN+tN`LFyreyQE^(=5+Fee1KEsHUy5a`M@*dTd-H)rwO3{B$2P9*+4_+I$|=8(#<7 zw;`<5$0RWq!cNAx$<R65?XJ-sctiXa6eiaaq&Z>Fx}tx$TOhk#ZCY|UEG{V_U+6HT ztff!6e59TJtJhCccEYtzoS#}~)bTFC(V>c!L<-7w5HjDDyo+B&GN88F_o$Y<_-`$H zv!GQQQM`ge9|LkfIzECFi2*{>==iOdWVtdal&!xgJ+@$0JIL@M$R$c!Sc(I5Bw(p3 z6mKHQz12m1lP!D7;z*hAWnLOB=PH12A@%!A?^;ejZmHy<(?Y!H%HpfN+Z49>ChW)L zx`g=`S>@A=pYX-0bA7u@`Jp~R<HlPg<_S(C2r}&!fKWDsl02>%6nE6jag*bV2M-wE z5q2(fg<c!~Su#SRUnRQEId%AIwy-IcYD>rDOa*YjW|+4|X^>Y}0PGXy*}Paq69hRa zE!+J^b$&5v7uHiiZ6XaWqiTgmXwR4Ap*GtWF}>V(ftFIKWmaZwL@}Jdzki^bD&04- z#_?35VNQLRSSXPa;tIR1a|bO>G?LOAVuX|*Ml(y$e?K7mSe~ifN;#P>9#Sh&e_x8+ z&Ijbo^N#9X_K(_0LA!Bg)r2kW5{5P@dk_K)8`WHSLU0|}R8-UUrr&IbcAHEqzJB{I zU3`rB;1kCT`hUX3{Wp|N78Yjq|2+-=Uz)N1q1p54Gw2O!mS-NT$Y-#nUu_tuVHpd( zmbyEvp`J;*Hr%eao%wr*txNeTR{ef2$hSTie#gfcjwGj(Faj-*EzL?il3^;36uSr} zwBrw07y*UynC^q`z^1^~M(nKI30KFVW<L_8hllxmT74N=i9S1PhG4B26uzWhVYrxo zPv{tJpC$!W2^tG(JHET<6eszsA|6sk?e+&)AN{o!{cXq(oxW8AL1n>py(t4L=V-CA z+$`)*;tE0W?6jkV#NTb>Pzodjecu?{;{=+<$j~V2qI}!_&1(@J9$7Iagagq!vQ8iR zpMLlZQ_cIs`Q^Aq)X)6Gp)1#uRXx~RkK;i(mtA`paa+zGAlBE1dnnCyedNVLo*e4} z&@3x3S7)=Ivvnpaow@19T;$Bl&TLlFN|FRJKegfSK|E^crk;8*Fwou*JG-^x>Vs?3 zrV15$c(kXX5q1BhYcX_}8&N0b<kx9ecjg;Vxlc}5=e?Ax+2Y2f=LE2ynI)$welQ7_ zt%C6Y*phV@nzkXuc;V-_M*AFzd{{rbO}-%8F)Q{5nlx^qN?^P8OopDQ7AzP#kb&3l zRaT{=r9YnPTpFTqs&Z^j$P6l>nV!Slzn8U0C(g=$*m{L4j@3(T<#DgC?2|g$v~8H{ zZ#+>*Seu$5GK!j%fJ!6p_(!h9EK72c%<PFwogF21l0<7dDuE$l6yQm!%4->Fg!meb z5YN=IpBNYuZFX}vRlCTlj7MJg&o*=1wCzKzU|B1nVU)*Z(X$QqGO%H{!3!2Isa9sv zcEhPf1A<aoZ0uNI-0G*#^nMj^EB<YHzlvF`A?_ki>D*)JtlnrwL@_zY%~I!hV5?#D zV}7KM5@+dm$gxm@#Hem_>lEgL_HMd9`T<hun{Rs-aC*@!@ysM>sPQb>;rlS9*x=sS z)m%AmaLLcuPE;CUy_?WP0TOeD<hzR@azHp@DYuoivfkW{`AV33CsdqEwSVe(H%7zl zp$<nJQ|S=W5VNbhVQet^ORbyt1l^BHL$shoJo~5Q0?P|7T<^%>mj<x!D<-+5wDry# zvRoFY=FL`(2DX~-7H85&aV5_|m+jRKFK!$%UhUu6I_(@8ZTtxdK52{XZkZ{KE|fmN zf#X!RIedK`1|qP$%uP20oLu-a0d<m}AkvqqMvv%m>5G=f&T}Ko4bx)r4fC1C$(A28 zQil~uTAnRv=e(WBCNUW)x4rdlDcwMYZa+`P!wB^T`tC^tjp@m|@fjKyBBJZ09E?B- zyUY{&7YVSl6QNSp5?<#d!5!UBMm0vda~2pn65~K&_%yFgebzTdJ&>5O;D-zLVBlWO z9--^U<#-HA@k$Kt;XtzNFBW|I>=P`COvH3ywmT{RSig>=n7hXxEGqnGVqT6g&!FTN zeBE%*BQ6*Re9eWVx^7)9T0EUX9fhV`U&tL=Kp3FvWC*OoS)1eD07zb00J1f^LiU)+ z0gBh)<wj&YNkuHD;&ZU21+v{|#3KYTV?(;hafs2T#iYk)x8kwnkN|n+8%XEZnQ#4Y z@uQ~wBYNlghvr+xQY<m~1(F*8D%}F7WKa1{2dc@a1JnGl@I#C)gsxCyyx~Psl0MP( zSGbH8<a_g1c5KD@#@mYxv=$@J4z0h>+F<xDGG&)0-!G3FUmb*|E%a1WXb5N$jmYy~ zhtFnmyL3(clGgqlYBRwL*8Y1XvEW3-49-Iz8PNU1Q!R#xo7AsrnifvL8ywq_LrR9G zVFc0V)l&z=jKp3M_jt$~G$2lOlna-SUa;{`_CA&QzCdkw!jj6GqplcnY<dPAxqnuT z{bEzIw3%#r{bK2Q-C0h39k@G}WCam;XTZW%!zUm1BXe7pL5vOKJBM2NnO9)8pA56& zO{UjEYQAJtce9X%hkU*<DuRB2VGPE_x<0#U4?$;7jI$is_ZSEPlJ<&jhpYkNP-e$L z%J`dXQxf}`^WZ$J)oe9zDI|e2Tb^HxB=N?pCkmj_7Z!`tIra2aC1|oEptxs5@yz2c z$Wm<?T=XHsFEIobMQCPAD1RA1(RlQ!nVu<|U_dq90-wd`PD(_AYZX=(5jZ!W(YVE0 z^(BF2PH>1o;2TGy?DYawmg1IK<QfiI!T=3cJBBgY`58ECt0htppY=YL2o3xT4euxG zJ9T#>ax0@lh`bPrW}SYxBeFy4lrVx)L?8u6%c=utBVxEGp~=&ySC~XC#S=W2xGq!H z6CrGokk>Qub4P7eX%ctT;Cu%{QivyD9cjE_$>fx>g*(@`n7^T2cIj<RA~FP{)+QNh zHMyZN{H}LF*}Db!P8UR36dd(U_>f1~HqPGaM=i)ZXW4?Q?FFOTN-)9c&BsaEI|B(g zfCjn!s9I8_vokud8reb(kylVauAsevJu*wL)tVpT3Tq3K7!Do65}bl*2pE$<eVY>) zC$&ZOJf0hO5$VjmoO52evBUMy=<WhrU>(e8M+@>c)OvKeihfExBdt{DxXdrJb~l4Q z6fpovB=5?Lbc03Ybc@GcpqhlD!u8W{-}!asm6qv4u+<T>*~%y3D!DF*sUA=!cwMj; zd0$H>Fi>RHaCVyM;~cfkYLUpSUKQ&<a6M`OG=}bJ_nxQEJB->G#w`yCMEt7EMF`Ks zF|YSRoPgl24a<oVpB=z$Ze<Sa<nRajcz_m6W9Sj0;B!?(iS<e{ASy0AbPq>a1(fib zBnQ6g7G1A3$IjE3SV`ev7PBm)%=zCp01|nceE*g9|NT>*{lB8tGIO#0-!X)lgZqEH zEoqwk^Ck(Hhao#AEVWGc{E;clnY*@Unem6Pxzp)unh?Nm1<VZm?C4so{@HBifnc@2 zmy1ppFOgotLwzTX)Y**0lJ288)db&tKA3Wh{Z}x!y2@neHF1<afn6^|EQNXTj?-Zt zBX+_H?9^53=<S~<47UrNBDyfmfQ7wnbIo8MQ5Bf%#JOIPm_KOGjphhe{wX6G#m_3} z{=_CGH>b(8i!%<!=pw?GTCdv3_#t3!J#3nU!%r({q%$3)rcn(>L7^+H0@1YpL#Ogj z$kFX$iuueFrZ<#!w<7=s1tA79O!2%JcsaldQ#SgJe*i3_HBZ|b&k@jFt?SNNWMlwB zGmln3D6di7?~Kc{2Z@fPfjUn^GiW58=P+DG1beJ~+f9*23v@4GJ~zpGk($D)2#uiA zc6#W6UzT+PiRB!%xc8!S>S<t+e~=&}#v&$aedt(AgQ;WA`&}EG3%!VX#0oSy-ST(i zG$IpLi>jjJ%udv;$Zp-r(SoCF)I8t*IL0OyjFRg`lCn-&-@lKC5PltCZTmOg1y-2v z=_$skC2oPVkkT2?Mhzt;CM;rvf)ctnw+JDA!VLTOa+0=YG?~p_+>L_(-!ZZQ3M!Z1 ztM@O$)1O?%Lx)i2L*!U^8z;<t^9i!&mt>*+ympC!?=_MW;hK&EW!-(z#+<Ps&y0k3 zar~Au3w+hzfEe`s>$t2j>7Fcxt}sT}{<a`^v&TcwUt_ZU&-h)p6Zw1(>?AldT)ayT z)Wv6^)oiQ73dqZEbM2BTk~9XfpVF6?vNx!}9Gg8_C~Gi8t&6H0wW(4ssS!Rj$IL^| zNGlvC;C>^+ASn>+TEQfa+Z7!F4g_Dk;Av>2cBmkP+hW#ZUEWqk3fF;e{(K`y+`Nto zsl})O9e=eE7mXnXnp~BjukiWg%b@96`ogg-0uuQbxWQr5M;e8Y!Is1@#H_5FVcBT> zw!06qr#UwAK{QmaSljE8OvP}I-#jD^l=_=PZhV;^41XtKsK*t?q`dnj>Fv6T`fe%W zj?#&Msv`SAK9We3ax83KyKdi^s(EmFq#3-1=8N$)C$*0-&(q{U#1k)ma1?OIdAY99 z`E6-#(2Zf!K~Cw;TGTXCY~-tpC1q)Adu^N8<`6;QJo%eT1nv64c+91+YIH#}+h9}Z zP`QJk*r&YPQhuMs%~fL1yr%t5*1(}Twi!;0x~F=&!OnFH+zYQonN`G)%to})BABfY zJvSJZoh_rQ!^x-VLa|DHD2Hn{ao;$Rw5oZyC1l?Hs=#rbnObMexp`<_fS{4B7|8Lu zKpMEwK@AH|(jHdl30i&0I=()3w++?98eM0w<ZNqgSYF?M&lGGoB0Pm?RK}wk|MUgX znNCkfQS#+>$W#Jbb4|d$xPO~dIU77cGS3LE-E)l@5z?GIm02JI;Xd4SqWcO)e(hM7 zk8(Qs5MmTvNkjJN4OqAz<4nH`kFSH5jCV_V9*lI@U&(6nFe$4vCCP|=Is%0cwvxFY zc9~=VKZmD>C4bmPVdrjRb_zdDnmx0#8iUtl<2+a|+-a)RlUW~Lwg@E$jjwzdm}ApL zVpmyDwnmW8EF3^8=M_<ir*N5Pt&+=n@r~p33)<AUnw%FVvo}AL<)nQzsLi1T;_&t6 zt$sL8B;#K#a!1i9ipKX-Kgwko&l>H6h4@T{bZEX_?=xpy=4lg}c_QY*RGuW0%#6Mm zH()vc$ooMCnHR;$2RbbDzx?u~1}(v}32k|cd`|OON{xl}31od9Y_vVq1QwO$8L%o= zC16WKfA2~1PG!(f;jofC*rDhH9@qkf7;;AVUyQwDlOVv-ZriqP+qP{^+qP}nwr$(C zZB5&D_nmVhF3yMj-u)jcva&MkSxbgwb7!$KVN%~GdJU|xxI=df8J{tor9E@9nT|J# zdS67Yyr}!)Xv9@5WDK|nO6_IioaB*iwyI3=L=F>ogT!8PUxk3tALu(<Q~&q-@!>`j z@|xLwDJ43s86ioIlg?pb?b|0X65+@R$=sB}`x(cfNb{WCqzYf|udGN&ax~0a_(}7o z@df&mbPPS^ai`x{l9gySZjUwJ2L~4IPxYT4r@)ZVqw8?dNrf|+J2J1BHx!~@<k9Av z3Xm|{(~H{#t&eN&OmI)_L1i5pVib`CIjouU)$dH#r1z~YH#|VkVD&(iUL;q*i?{Cp zWk&VyhSC6Z$|S>P@Lwa}ktvyg%%8O0vbZGGV&7Pbr*POvMA_#WmDa4|9hs}_DDd6v zAxRshezD;o`!;kB^0KmInpeZHA+u9r+yq?M|3JlL{cot4j127T|IanZ#PGjf<Nwil zkw>s&cgs1^@#LiKV=4OK);StRkwDrA0V`XOj*h8CDE=1(qmm#*>o~-_OsYz#Kc+I% zY<hzm+4|A8Td_(+fH0jQ4VHC}0N5J08MW;z);N?R3vtN>!|}YYIxI(Oom(eF#U>Fy zYkIlPN?bCC7bKZbgqs6pWS@nTss@^kB&RGHzg4~dx^LZj>9IZcoFI|<YEkMDWHOyM zP+nV#(8hm2dlh_nPS%k!xfvj}Isb`q96fLYLYZv2i+jg@vWg;I>Ub|SDC~?OnOg5j zSCW-FFZ@$!ZqHMiN5+jOx`H?Hk(+>2x$f~mN`-bzbyec&=@gtL2)Kq>WxRFZ!mA1P zR}`tBaorIU<&Uq9D1v)q{ak=~f?pXD1uFz4?#Ty<8<mjP4^YDF0H%MKij1O^WTR=3 zZs?1EWXSkY@(qV#7Fjcj1E>tn8WRvU?t-m*Xt%>61zr=Fr6;{wB^i<LCJuHL2AH_^ zcDUF&%|#M5*APR?PdNitaG}_ws72=Vumy_&(fq#H#*RpID$_AY%mzcy#Pl`lLKR8k z^Sy9oa};fi?fQ7Ai*n-n)st8oxc^U1)orjlh758Eo7Ou7QT96Zq1h-O0*nBoSYr<j z#1l^BASe+hWEaKuMkQuhkuMxxn)3<YhL$gSePt|8lDX)}+E>Fv6aplVeM3B?eF|LB z)F;OQP6Yio%-IS68&SbA=D^NWuB2Xb1iD(wH);+G?Dj^wIl*8O^#=$ck|9s2>Tp6! z1Oz(}6m)~FZ#f8_xMC3`zdGW6S^mq#x4?lz6n#1{=v(lTXt5&{@eEU7FebB+hF}zN z#LWiA5|*c|Ar0)DBHws*CXPlbStj6Rm94A$B*$3})!bCgJ3MEo448{H1hIG=kg&fu z+B;dLSmzNqFFYhjminaE02p0%-DLT>#bS)@(g{Zu#YL9Xg;NP1ZGYUkpxK)olw@v~ zpK^h+P*-RQBlN6Lvt!wc%_#)^vY7_<;VykZ&4FnL@gxr1-bU1N?HnX~X51&10EPvH zh#T51KPPz@kKQZ?1TMv){x)4<RcNBKdg|j}sLK6zx332~fbaTM=S?u028W-b7yBg* zBJ)fGej8tLpRZ-Z#8?{usd8pShsepb?vI>A@{F7Cx@eR?g?yeHQJ|=0cxn4@k$jMN zxV4u?vOM-bdLQdI{g$A`DITe<jLG2Y<?CSS!Oa2!n1J)VTk$*`cl^HAP7>NL*UDNY znB~Yde(WQ4lW@RY#yX0yy+*#_>R6qzv0~A+*2C{Ee0??SWAfE)D$ZciMEQ)f37e9h z`0ed?S9K0>lnoP*%-e2n2^^5i{D2Zj3_GtmL2bHgeX7O-pYAUYhx1Yo{f65!m{*z| z&q#hZHzo%n>u)~3ff-T}KKr8W^KX@EJ;NXG&~93WL&q0qPn&rCYh?F6&4Ef(7TXEp z<Z&0<!6`WHZCIp{gG(fwa1-tz&ONOnlY6tFGtKQYNh-h#Ui2-LvHEM04qyiyfr-j( zg@4K730K;VyRgL=jBe&i9LAMDJsmkau91#CEV!n=$6WY4j&f3)a5J`TGVAO9y4p+z za{o*V*#C#u!GA-A`!}TI{J+a06U+Y&^!%^l_{YQEgkIjzQrX#tkI(7f0M5V$777a> z<N|6=53*jl!THaR74Vb}G_!|$vkrKD16|${c27brMEa$oW7w^NUt|<c8M>nJQ@g;% zeeDmGtm`{v?#x2`>f~>g(zReo!{nbYKG(`aFW9Npk0m@1e5Kv@kjmi)N=}K{w@(G{ zbB<af5=13gd@OBlVhu@ZP@Xeh9#?bWFy6l*mEr8QVSH=kOfqb7uftT4>-Axomy$U@ zIPQIG5I47h?To{y(Ig#%GGO%#ExuQkSJk+<te6T+`89f4q*G15@Mj5lIxfCa*KWOx zdEwXipiXLch<l1h0|P(C=Zab@C_hO`+xowFFJK=qkCTYp!3sB!G)B<$vg9oh=?U*s z?NEG0H?H3+b=qH|a?O2BwpxxiL~%tm0lXfA3#XXolYU1c=!MP7CN~`Xer}>~p>{kL zAyeOO2ETWDSD7VUyD$C8s?)ar4&3ted0`dnbBtj+oDAWxTwjh;Nya8%>=Te^)J5UF zf**k|WFWy1BA1nW4Em<1e%nefg_MvvN^Afr5i9OL(#R>W`PegZNm3InlF;be!x8;q z$V;1nMzIfwX-k3u>D9x%7hge`!D1-lWF>o_d>1T~z_&5=H0yP8|5_p&_yhV-rmKKr z+u~_pkZVYyn!+j*#JPg*cD1@oQR*Y3c_#!+g4|AaPu#!JDC|oh(zKrnz<&6k%~;gh z$B6TMID;xp&?Jm1pSQG%!1_m5r2=q$ej*0UedVkK?TD4%AF8+zPr34^On)8)19;Ko zc=0QTeFveN%R~&!Mw=fik-|tsxiO#3%4CApezpn2-dz7P?@6?Zn~Dp>(wUGu*-uF9 z5|mJ0qbBHpTU5L`XHE_X!%hjcf)=TB34*_76}@H1*aYC7-VuAawJ7wzmy8N%kw;ia zl55p`b<sU76)+168*1?)xRIxMhk359*%}N11m>N%92V5q2SQzIo7hrk!?TxZ5=Nk_ zad0RxCLa4A@O?8eBxJ}&0Kt=h`xk~Mr|IHQFu4k#YNBRrT6Z~)U?+d3e5TDHvdrm- zQb?igYmpHsQYKfNL|LL?#1tM3bDBsk0~TJrG|8byeWuS&az+n2P)u7J5UAcp|D~M( zObKt_4sg_MV@E96r3`H?IgFtNsl=|I2?4|_g|+}V))*V?t)COY5WK1fgpAfgR#Tjg z0LkpWtE^bkW1abH5jYv9`zh!ly}C3uc0bngj|#&8YIvq1;D#$FTU=f=Cs2;k$d>Xd z@?LaFz^zX<lufB4B5W)%o<Z5lx0oG4MZa(Z4mre|BY|!!cY(h36z75(VcV*i>W_H> zSJfN?s3!{O)_r|M!8B%ozB1du#?JdzLba42z2`3gpDQ$~OPk)FvPEK}rvDrs)`;rw zg>#Di94wV{^Ujb<Pml-fA{4n?8^X)#8iddZc5TFrAC`R$M<i%$7_N8~NbVAfN1^sP zIWkWw@SD=&A4(sA9J+X~|NZ(FCIS;c2LVd>>yU#cX7(wm_d*HNmbh`*Gd&J+6r4*) z6Zngawt2(WaH|JFhIRKvVG-(GTC<vTHz(yHsX05`YMi5oTjHG%mAaj(Y4whoc(*uo z$gBjkhsevTtTNo)by=;NsZ={fTO5l4u&P;zD1$n7>jezJOCIf09r}pXT%;AojdCBT zfNe?fRvP=#!S_rl4DZ*<d}9`A5mq5RjAQ;?FINn6p0qd))bl;HD|1?DDxRN<IPnQm zrW0GoyXbLv!JWN6;qFHOsCF)?>_S^j;&m!to|gpBAq!qPM0ovvy>eB>XUQGbZy`lp zP3p3r*_lp1Fd@#lm6xzUDy7AZ&s_{2gIBZkx_5CF<G^G)t_8ys=Z1yLU(LfkpAc@b zGwvmwdakU7%K^e2&XBJ7T@C2=kO%1p->=f-$ENehg9yUm042=n;6Go_l}r?QoPH3q z0%_I6G`OO+P8S08bxzplUek;w`wSKcPJASHrM5W@NFUcLu(R?fY*+Jf)Lng4Yf%RR zCuH7s19VwQdoAJ?BmG{oC4)Hb5`GKl{igTWo$~E_JDcL!j-LH}ZtXx!%v~>ODH$;u zPc$M8aEu$g<-5rr@as9LDLya$&yF0q&HZvsHIjFq3QdmEi~PzRrI8wmKUnJrp1=eX z7c>r3G#rsxbWL0S0XqCmBW`(jN0q-HtXy(!9MYWvy!X`Pw1eVj>2()bsGY5%xQ0+a zZ62c`BDA(PZfuQAD}}_sAUJuW>?x}U&?$b7l{fz1`!{M<)USy|^rOPN2&7jucSQ~_ z;Ha=fgcnR#8?HYI0%KsVpZN!omaf;AiD@oi(UxQLmsKn@Dsni1D*F)^36Rv)0Sb5s zn?R-1;LkNBmQ_%2!;Fy2rw+t$OW^04tujA=ila(uDNhfPj6DtgS_!M<=j>ioMQ4E= z?qNa<d4pd?V$8sIemxegmwzr5FT@M8bRME6s`gsk6x8Q**xo;s!K1XG`dJAg;qlfB zR*WM@0|=X4E~*MTPMH<jg~!8)`S6F98yi$k;jK4|gM2H19iH9MSIG-k`#p+pH*)ue z<Y+t4@azO;*79aL+eoEF?Gu6XSUw%EpKytAt*PSOkH1ZF_@im3OF%C;!4CeijwLbL z?OM4MOSbj!D)3q99h2DUrM$haabW0ww83`(yBumDPHKhjrZWte`>#;(Q#-pon$#&d ztmibacPNRRc9=W8J{Pw2LZiHfZO*C#X5SI*Zu;O6WFF+=zK^AQr4O%7LN;2X%@8%5 z^gGe_Vh8wdRt#BZi#(G&zJyGCsPK6#$%+s6k5*69&Y-GMTNANt_5CuG6FD3+9Hexy zw+3AK3r=GeZykn_p0BBx{f%XF(59xa_ZbqG%8eD^>F#8U+N4s3k02MKw9XR#hx747 z_KwZ>mn%I<Im4$tJ2h&3s#kKa8hohw_0B9CMf*7+4vferz5~i=L$T)YV`j61(z@{b znUQ5!p}GS@xzk+JI6^Jy_(V!K01jI%D7x;qh9rM6*rQuZRv(aL*fJZE$aS<hmGMMY z%$4NWi8(V~>=pfiIpf+L?)ABG9K;%#>=Qa0RL3j2zavqvv5?maXMy*6pUjg(UBp1X zGUyETG0?IE1p>%I?@w-vsmd#lwJwpOILhOzA3NJVM3;;uHrfiA`a)lF{9Mcz*w>!Z zL5!4X$an@lvIug(*Isfg?3XNHCe}%Rzi<NPC*y&tP0rqpS3@x`frS-hqqn_msH++* z5x&MCknGtxGA)vXr@{WE8m2e>4{hLoNum6IhQv&)Z2#k~dNx1un1)uU*<71VDUy98 zn_j+|boI&>hW(!h+PTHR&BU^<>BAlXFC?J$WSd&?S!D%a7@3VFzf$Rzg$GzO9Ry$2 zo;QKt`=X2fZ7Q-w62St?C%oJkubZ%iT3!g$V2uXspE_(j_BJgwZz?!0X0uf$K@jQg z=m!_@QvlXqW|Os^DaWKg1Wzh_rBKTG;w?mCj`^y09l*8TZbb#ngBQnie(^YSTn?)s zjJ+Fy7v_r$hDbuHdWv|ipK$8PUwdU+NTmm(Ro9d*GiI*BhSeBh76)bAr91CEaQvPu zu~qU)0<QXlZ17aG|F*d@MSKS2@f(QROLlA|0{^yRbahUXu$+>|GB(#NSs{cbPRPxc z?)%h1;jd}#F2;A;Npl_6i-krTi-0gkxm8GQEdt8NhS~b_l960M5~*k~*7meE2~aWt z&UC3KZIX<Cg0Y877Nycc)Cvf)8c6w(YAN5vB1_KLJ5*KE!i2=$Y-U;#(u{&Xxz^>u zcp6?V-Gz)+<p34{hapqDL_!6v`cDM-GvYOv%>>a<5REBLn-rSKo+|2<V`KHjc&#x8 zFd8t_Fs8a*7d}#stxxV{xHRFK!F@v7bGE|{vdiF_*AgpPtV{L<LOyx~TLPsQVxDZ6 zVU(v6Yq&gg2X?PfchPSzZ)urIj1meaCs2%R)I=K8$o_g65#L@lvX5iF+YXAUjG!iN zG(4sp0aO_(6+sa3RKKx-t=p=dGm~ShKfqPHO>$P6N!FE78wKr`|0+>d^XV5Mmv^HH znZ9y8Bo{!$NI!nbBr0+C-t>;O#jsa$2VSY~D>aF)PhMifWX0*(!~Di&a=fd#!<5tO zV8lYe>8f~vs4}Qc7n!VQ*vGkp>H`l0K#MoyAo%e3T~6L>f&c~_v2(JQ29TVzz`%Oc ziK~yr+M=|d$_>mcA8rL!dH_5@&ayGdqh_GUa`3i5)&(A>y7ZK!=;sNtI3D^@OT@ZS zgy8C={r!@Q!!hAyPb9}f00yYTUT#T{k1baH-0~rU;n%FYB>~BXhoXy_(y6R83B5b) zYy3WL{|iiejxfCJH9&87jSokk!WbK&#R^Zw6FL}{6m>`Zl#3;1d9VD1$MyTf$b5+D zg0#$8`!?>fC$Y>-IQnlm`}0)SKlD4e;c=B&79s^*^mq&~-DzMPUwXd+MXf4Hl%Rj@ zc96Yn7FqFCl?n?Fif$hLkL!ffkkqNzyv}nVW>QxPydnse^E&>`xd+Lz9h4*qP53vZ z367Udxb}YWy5BzDUIZto{s0a@@Zt*uNVQ!VEH-OEg<63q0i&@9I0BdL`ki5lnvUu_ z1Eg)bMid0zEFQz2+#+#YEIIEp)ho}wnmTIz$TvO`wn_ZAu{$cP`~fTO#?as|zP+ri z@j>*Z_TQyFxxeIVLmEk9haM4T8>{v_ISJ%tL)l(vYWY#{A3siwxIKcuvC?Hf*WrE6 z*0hz?57AW;R>E`?bb3BFVZdb{l|9Yvfhw83;Wt<>P&YYPqEf%=70LZL@%^%l^tS$c zm)7{#WSoj+yaiVbbO5>6@BS!+S2)WkFgBNqHC}ny8`pG&lnKR4^y!O~LhC5~9q^E1 zpn~%f-xPTYEg|J_xwBC#iC%y;3ZWGVrhOp@HMJ@`>!^?x%)ZI>b%GR`lUDXe&fZ5T z26A+s&E=r~f>A=@5~S8uVPD$!2}E+<-@G-FOZsldKoL!VJWX?*`SD&dqeb0UYCJhL z<%!z^HXul>=GCjsdCuEmt;QtM&_7d^{E3@@tX()&#N`U73Zs_?jmZP3q>Mi3Amefv z5p4{GF6}9og;nKESkiibBj9-+!sk#<mC06pF6v+yWO$p;a1$B9b!WvXWodd<HiHZS zeWrHy^0VN8Dh&a^hkon~pX2epxYe>RKXrRF<}WtbM3ix(VM_Lfs%~9oS}^b@UGDn$ z2u4sl`&*1cJ-RRo&NO6KQ_(lq4V&LM=`Q3)Z!Hmor`!Ingd<5lrQR*}dqk#4B3n8b zZM-9g+XoSxltB9@b)<*l5qhsOCap~%rW|fwpeb5-$7Y>j>ewSdS1D?_TSZ=>Bwbla z8wkDc9^rxl5TWTH2i=+4O~%GJBdtriZF?@VJ_nVSyz1c<12yu?A_ZC&EL=i25S+C0 zLB(dd<oW}vI{sr_1e6R;$4yJj&@Wg-(q#7`IhYA)+SprG->nE`kpa2_#|VB(8Y#~T zDv#ltq}`{mRl(7+O4xn7w4D%56d!!T7v-O<K1`A7i$DiaXS?qeqc6>q+{BQVW<lU* zjA)}`C&ld>bJ}y&@tr9v@2{U5Y&ODC6+S?1Yy``fo%EOP&=fH1j(qLZ76)eyNbpMG zp|0J2%UP%G$)G2>8mWs9!{y?{x?;XvYH2M>NrivGa^BS+5nwx2b!)i5q5+wrUWAXd zm#K|yDXIYBK+J_YuNc5%HZnI9leI&$F!oyE@Du|e^4pp&!5v^;Vx1h4k3b-{Re$V~ z>R|C|pr#)it@3_F%t-<HIj?BbBB|ncr^`hA0p@({E5Xv>34#W^iNQh5iZb$@X;mdq z-!&vAvh*@$<Q7+Ii3ggcL<bQ2i^>d}jdiJT{mb?2<#4Ul=tQK)$biLo<TLLK>i8ON zNE)*Zi4O`bX0-z$?MJ@DuYGxtL(oFa5gzV*R~6XDvaCye_Y~bvvYrEKQA1_`Mvm>N z-i2wYHzpGPH~jca;yQ6ag8d-l*`7;#B`6&3H^O0xB`KTrv&m)DI0K7V-wNvbV6BcR z1-!!7H76rtDuiWa2ZfXxx$=r#nrD}2Qa?j&5!=!*ULL86rc@)&*Z6v~U6QIOFMc#U zH^HnCuGa_4CG0gl7-pSqj;REf*NyD2{>s!>YS%rHQ`LS>xTlG(%m&pyRm$q0p!uFe zaIEqP>A5$NV-}rpiIZH$;^&X<a6Au(&;ipnyUd?84*X!(2>1HbMedLK#jU}un9S=u z%A>;NDDLgAoZd^Ona-L-C%*$!ReFS*Z46e|K-wfT)d3-w?d71=nt2H%Gt#GhU+`U_ znxO9QOzU}>vZlO1a>&eb<&utN&k5gDPPa<p`X_(WI%o(Z5GKhG_)Cb20!xtsVm9&s z&#-8gdydeKbl8rZu3%QE*Y;yaHHd40Lz{!n(J!>+0e}_z5XTz@OOTL_3o$rX(^FoC zXG1z;9N5uJ(HYGfM_^L#=oNW87U>X{7kuPb9<&4q1f&q<5GOPCuK->-4u09fZ)z0L zBh13PmL{O=xallZAVrEVlQXuek_$9Ro8iIfvkJWkMq4S>;pH!|?=U3w%xZn4uirQs z#kR5mI3C|>r@7PhO<^ssstIhZ6dZ{WH(FiQSiqd@@JUIhs~}$Yb&I*LxY-X&A-Vt1 zX8t$S%Kzi1H`D+Ai|`+pFcyG`N_gNpIWi@F>w@CWKzIW3Z!hG*A^eHIHfG$!3k@_V ztb*V9VPijHhpt9Fg!>%T>`)wgXaY$l2kp8<aagcfCsrBBx<`*Y>XEd(1uS^@drIJl zwi}$4`{QYxvwLUW)FZV(*co}RYL2e@()p*MJz2?1sIp?rPqRTE29PcqE8^{FraSsJ zP4{p=!`Epu=yPV{`+rz=P;OMrYyhUQDk-$t9b|(xK#g{8FkB=C3dr3=g8j>vt$25o zu@7M({f71{&jC*f;;1hr)Hx>8+AbyUeO$4NNG@d|xG0T1;%m91FR+vAA?C?d>IfH; zv}(<S^WVimKLV-{+0G9LXpN=2ySGiSb;hEbTx(Y1IUIqT7vs^ka~+zbka_ZHO??D! zC!*%X+smg((ZR%Zpl^bw>6l<Ejg!LZ@og}<=yV31fH<Z2Y=Qo&;lJA)n;Dmhq$BLW zZF;nh2m;!S*}s@>dn$+NTjSM$9xVro6Fo_)MtaLMQ0upy*59XXd?f5z;fCm#r$0R1 z%_nKvSoXjuy$h}((K4rOu{P80EIcP~4Y3`Lw$EDkOi}{W;isGv*#)<J%9KDafUhg^ zg=%NzOeHr>sw?%FQGK8QPFCyE-3n>42V>!tSL+^rQX>b%oMzF*yla}?jvNIY_f{jq z?$h}kr1;Ji`2!sZHHO>5>KheYVT+p<=%Di^TZ+WDMm-t&r9L?A`ZvS(S=NkoB;JzR zpfNY%34@BaMdi2MCaO6}3Ep*yMJ9O{0{75tgty2^WY!stnimoh{QFi84ftJqGEn{g z0rLPB+8SfUL>9bU#U{`|f7GLSMP6uWi<ct41hje7Yo6MX)UN1xb>p#2h3AQa&ut(2 z@nJbhc;2TEe|XcAUa@Y1aBX;_>>6!aBp^o6(i%z96x@)9KF`-hmxgL=#cRYol$j>D z6^~T7rV^XL>aJ@n27?16ID7_*R=|!R`3YcKXfpE_*AD~>o^j1|no9V?OXP&M?2dfU zC!s`5@{nWOzV_6Z*KIcl9BgCAKeMh|QZ+7fuK#ucICul8x)JBU>(s+(V@eZjphR)% z7GQd}^kocbkCop2jP*I#smDpVRnXkA=<EoqrY0d_0}7D!@{EKW4b=qN;~Zt;MI|k5 z8~tFH28Fy;<XR^3_NIu6iE11lS&mF<%#~kcD!w`61AAlSM~h91=P7=B4y1I)!Si9z z2i2?o0??pg8dJ&Ob25fW{{)tuK7O{#dtfKZ_0VNa{m`H%C?Z&|N3)e`RT?jjpBcG9 z1a&)7Ly7a$)fsWMxGouxWrwgjuYbpCqI-oe)a=QZOq-5E06T)R;~qkF<;#I@dREOp zQR7t&&w6CFcYOrcdVx?o@q=uGnO12mGQVTnH5dhO`7J!#S^nSwTCAr~gA3!?l1p(> zBcMxVH-(bKB9Fn=6)<&QdUpIQ27fqk6GSV$RGhSqtT&~`^|}eTQLRD?Z;WS^T@;3` z;J>|z9zKBj7laHKFMeE&MmDN2DXO)P*pKThii?WD2-$mqyPASieNUw|^n?|~(n<AH zvm{L3J~KbB>PwSJj)iD3$*2i4)TIj(#$@GN$AOGE1@5hkDdBqWe(uoi7s7rH)}rbf zEC>|U9U!v*akjt+6fIuuJ$SL+P$O84Q(;xRzRy8vWBtp>q3(F=mggyk{Nlw;%I8)u zwh*DqUAXAcS@tyjF5^Fx-T#K#_J1sS{(oS>jn>Vs$3&}T%V$aLCrAuwE_i%)zqoHz z!lyFXw0&Bi5W*hR2sgXW5@{{yn30r$6}e_;QjpiWP0a%ydeBuWOl;-E#5Pz7x7faf z9${21<FMpfJi(ENTr&a+&bY>OAyt+%WDBc?UxOHH!DxV>jTkxJ1i){>x@_2IY&nmC z8gtfxxP9P}id^~C8o@Ohp|R=4sTFJ`(K~ckZ;^UGqh;%E_ka`@*~iBg?H0IWN)>V+ z>wsq4WtwGH$+qc1qbUcx5Q~o8xwBPUtbdWEYBpTW(sPzJLBwuaTfc5P-HVyE@wKPC z7Woq+d*-L4(f^ztdX!SslYgqDe{ult<WJSy6G(7U>u!#Rr<{=&Sn6vPS*ZWQ$J<;0 zsh^#Za3SPGJVz1)mGv@c_RE;hD4I+^Vm0z_KH0XgLI(?zPpLBa7Y_RHmu1~G70h)& z!M+sQEeQO37=RTa|6HV%ws9LJ)%GNGixoZZByv3xSoU@?TNJ;l_`gCwsbjiQ5Iu=o z<U>@So9YuEhOVWSQpXs683jBu>7y%K(t~ekFe>)cit;egQ^{V9683&A?PP8nU&-N| zGd_O7ChwflYP<Ra$_n3VjN3+}H{Y)IVHRDA5AeUin&B`rUt-CSw8q~BT-Q6J6&+(l zUQGB4Pw6!yQ5Zu}6((<+;kB%HTMj@0PON@Hs|`{`WC5){xo0G8e*c+AA>Z@%*p*AO z@l~xnhR4oSyunXUe(3n-i@lvJ5opQsMR7B4o?s9O1he1)-%1o%Y+}?w<9Mtgso|g; zy!aN^Gm?|0qTICjgUrs0ws#$s^9|5+-_s-p^8}X-_sUB=>1+GJj?4q5+95t`4}f%I ziAD;;EmZ^0=h#^U0qz>wZ$PS#bN3tOU~ZHbKf@arp}w_p>IB&GZnS=NMaMP!D4lt) z!8@Q$*PTya=@G%;zJn)HTHYBEqFDmsp2!dY6bRw)ZDa(-aiKKhK2W2w7-H=XEb{CZ zIo?1j=5blhRg)2R`{mn3N_jc4LDZzS)K`1_$H8a*rHY{n=frwV?KLNnAF^L552=oI zERqHZzAWWF**&d-_j#{rtXYQ4P2d}JOI{BX>f<3xO>*rX{-Ly4W1gg&JKhZsex4a` z-C4ywaw$-a;C2jB0vK1H$Kx~&Vqny4n-7&uY+UbJ;ZN63&UlBIjXV%XW~u3|=VNw^ zY39h`Kf;!(RR1I@VxrNFgkx2;3NRCSK=YxkkgoVHPah>kL#@0GP{P|UwKGrF=Z%O| z!>m-<&4`R*Me;`_!tL~MF5zW`z=X_)TXIzjaB>Scc2ujXnTh5Axn$Mo4eo|F_J_1p zcEBk`coMs`ANZqACW8lX32f8maVMTo`W^uGfkKHm46<ATsZfE+1MP3B^VZEpB2w{E z^p(7rn%UX{#o_94DM2a}bi~U78K~~j@WSHM_0rFycLqt;EVXleOe8jo=JBoL!fKTg z5uZpWKIBFcQvR1G@UUTQCFE&}w0hUz!BlNy2`%|ZeXI_gwr}CN7#9ZQ#k&aI3w};= ztDF2<YKUEbqRy0^^F@TlUp@>+u=Y#ZN{VOmIEHm^tap?+<0&%CU+kK`W)4#x1r~S2 z&z#F>AZ2w~U_SbEzS9sTt|<e>3v(n!G>Y=wr|b0Vspb2Hk91Wkav)I3-;3KA5pOFy zRi0Uh;J-c|!XEbraonz!*Q3SCYF56o^vYP^Zr$t;h}FM3>k)?mKxxSk0Jw#^4f?T& zqt!Qt{7iG+bzkUv-jFnG+SI3U^ey|36NLnR=#5YAR=jZ8J%{vsK$TebXLO{00+~X1 zXrr^EKwx+`!RkXfS}nT5YEThL_b_w!j;Z;fz4}zWi%*2J{ie;VD9$|b)7qdRL0}Za zP7n!=?YL<|hXtVIjIUA|LL9E?7`VDjsE09OqZLI<64QkmY3dS*|EQHh%HLxTfLuV? zw_6U_*(#)S<{aQP_a-n=(`_c!ImKX*S}2+&ZIWy>&usZ&#-PWb!Q!T{f8C7a{-p%r zX~>z;u>%xAaq+smUoB^>V*mb<PGOJth|_)rh6_EilW@lUNX2NCV&QhpQ0(fb3q7Qo zO7&GGZva<Hmyi^@-qnap>{1~T-3!jBTG7fW4d|TPK%{;h33(tOjf5yT1NPU;(I5s3 z+V$w5W1!{e_j;;giFJFW-DDHNHWjKXSHK61kDh8sQotZ)Y<p1;sy$#1x8oppwKqU7 zh%~zau`1y;eZTYGe-I}7#^p{EDK&Q1MD<!9%eV}Sjg82>s1SkWj&1xVMPgRR(QW+o z*<4hVrQ1I7s=%tms`>o0ezfyowEWGqZ?^>ODq7qTIbKaUotM@wnkFvBEFgz-B@#xN zjQ;eeTGP8?)?e?gAt>29oJDbI$oV1q_cQ8Uo>yq+@@sQ&bT?Org*saoUb;G8eWuYr zvz9heZU7__6igv5tHwsWmqsbq8up8X*-0(of%I)0ip40_j7E{bxTeFr?gDH&DhP+{ zkg2RqcW8=mbHmuiq6SsHT|a>&10TL*to}N+1ULq=GV{#Fe_m{12p5v)sQpR|QC+{5 zJzXlk!yzldypS2MSd<r1%?1e;t6?n8(P2oD&b8Y>xksGEf?3Pmfioti|5tuZ`b)M? zK6rv6vdVVg<sxThB#uh%f(njTCy1HrytZqG)UX!v;uz~GZb1_k9b&O$+4}>;yM7Yq zWX~;w5U@Vy0T6I*VIsg{!ZM0PI>8cW3?5{KecS=Sf6K54HfE$4$F_+5D4xiokCq;1 zMVe`n=SrS#^z5T{*}{D^_8LjeqJmr9=L@g`y$)A<^n|;q+oJH**ekPE&0ot-WVV*T zgW%uwZea1JvXo5~;|vw9K0C81uT>t%Jj6#{c<6O3jL}XN?V;Jvnq_SI*at^klnMi) zIi}Tho${2;oWapE+IoRw1NeSnLmbJ9{NWG0GS|>qINc3$=b=ZtW9y6Pn2wi+dyUXa zBEU|_8ID2W=hG4EF&bWoh_1byCVl?Qcf`9@>S1hB`K*K)4Chqe;1ha54tPLTU^w`Q z@b3Up+F|od(*@70cw$<_((5Dsh;RVUAXyw&5$XuL`W=l{jLb|t^Ox8b&ALFlGMFra zV7=nseP{s7AR7$@aDz7w?uGDC>s534y=bJ`8p`)dK(27Yyi4I32LL5!K7tO6_}1Sp zRsD7xw!c!?>ryBjpXV`4hBY-=Ejg$}2`5CtP^qdQncwB^kqM>a?8bifhp8`mz4|^U z1F$$JEL)m%hn)Df&seQ?p%F{(oy>Y`DRNhEcGTX|zUm_GCa@0&uS16du6E7sPH4(2 zPWa6v_V3hT2+LqIEjbDWGhBzHIY#(-hRhn9rJ~!k>Sfm#ei7mU(xRf2{k_n%=wWD| zeg1LG=imRK?fmbkmj7Q7`Tv|eXk!(Bv8%$_e2Th4)K=!gu9z@(+SmEQ>}w%8)k?_M zvA?AWFNPSYV%VRwNX-GY|D!CDxS2O6jD+eD5KV_a8~2!9AaMpNQ$(~Z?^u#DdAHw7 z#vC4P_Hv0lrMs0TF%ag`PqHc{2nzEJjf{I%0ymd#9Z)mO4fkmG2f_Ng5xKH5g`&n5 zYB-a+5SsjjS;tJFcw2+eM&qLe-d)0|El-vuum|X5mZ~is{#;H-1ITnhZhdzrDHuIv zk?Lgkqy_PIf*%MMNh$Joo4zL0u-h|;I)v6;aATwj-v(`%Sw37$`P(@3_+3%lGwH}z z3<KeJiA4gFki<fOFAyW&OR|R;T8|@N9eu|pT~8v<aGLGUK`Bp5Vn0R&PgILfD|=lb zK=XXZN*yKua*~TF(LLONc+B+@?rUIgO!Lk02;&%eS-wc0z{*cXzgvaX?O$6;9ER&% zyC?nfgU8d&IEp-8+Kb?Ze-1YBm`1rLm-5Td#~siR+1C>y+^$ZPUZk`^W)`VJQGtD7 z$d8#5m)4g0z57GhMkxAn2u@6ZjEQSZj~zS;C~~J`3D^7%&Phc66_%xPNJQ}IG2B@; zr@3aZE1%4z78PWCoL?PsSy-;>0#(WVHvPd2F0@vMOCpf6d(Mf^{NJS7j7|;`A~L>< zive61h-6>;gTu9OdmsrBp{aoLznthHnnqT~<32p#ilg@)^9$Wr#buNG_!?)Gk0cTW zmT2eGhM5^3FiP;YiB+oZir}`qp(hbO2D5hpO@iCi6|oq#$z-ui=*$qH6XcJ`DR=~8 zn80Tl_148QDBJbrxf`T}9&%TjO=IoDZY^58YUvX*W~g5`qvje{gxq|gU0oiMTqk@7 z`(vBj6F*mk5(PnDhz8T>qM2ub#W1EU<Di6tM1X~yZ~(MzxZ2VlmX@*-A9gjTp*R?w zO{lhZ2j*2bHz8G~8Ul}hHE&YhS)@aMF|AT6u2S&kmtma+W>a~B@%UNdcQ@Ak&*;%Q zd8|&SsI+ysK)HB?wtq)AQS#=~1+7E%Bgqjun1j-#LW_h-UJme~aZJTj<5CgG0z-hJ zw}Y9$v{I=TNINwO^F7GZMF!8*#)7wj<Y^H2hVlL-f79e>CH>Dp3|q_lwR@d+yH#|| zTMRF3tKXIvc?!Da=)NN3`w)j^zwA!#@F6wYnU~|~!4*-xX^rI`^<^;^;0mSU_vFez zKtlncTasv`C!cv%G65g#6?TVDiw?u2T1zF5)z9qyj4_x-20hPS9w-6Pydu~zY&eB; z>A3?h^`bj08@>iy<lq^-?G*L6v*dJu6&9Nc<<ptPs0MtvXxB6*-^yRzm2tX1{KAZK z8f3t$tU4Z7v}l|ti?f-x{}r{ih3cf9J&)1k{KP<Oh+&8@tvibF#>nu-&bdJ^1z#kE z3CpIZ!z{6ANh%Chr^q-u=;7n{WrVR%%WxHCZWBnM)jKhvfr@Fk&843i2miRCWXc&v z9=N~G<NZ54tw7_xBv6gIhy*NqH`$w{lMX4hR9!G1)z7#edWh-b8tIdheN=f{Jmjqm zI}8G-7@_*;;YvpKfv{}tS8Qx0HG$_mY@MTte_@qA+hG!$JPNNq+`N_0R?6Dd9(VjB z1y#mpAUPPWVqINTnf*|dHZ&rr^~)S*#Zp7xl>{KReLUR_{Jx&-`DMVy7Nr+=IePoI zClB4?vCO6y#&|c#X$3O0Mj!1(ozhknRvjG)bw_W+DiuK%>Ff&&)EV-5zFV#>q3-k@ zL^9Hra*R__a*KEB-s3L-iQ$oRuTr!xLiVlTu`on7`z3?-45obHbqDWmD)mhPAC-+P z@g$>wOk~TLj!vT1dU<1FRLbxa-~EiU7upbpB1{`wFpV_HG*p6#fQZq>z5KTs1oOR$ zoayWc`K6PNwoi*Qn+#f`FBrJpm!#BZm%%nPx;uvvJOb@+-Fq`tC32hSBfaRA3_6lE zQgRm(A=k*PFG2hn##-9Sui!gb&CuU3)=7%xo{g5T+-(^J@H!doDVOg7k58hUEzqga zgp&dpGdRbLvSyRQ5Gh6DaWnB3bh$f;swJJp!<Di_gt+qNU~F7csH4B+t}_|03E&)i zXLCF|YP&;>m|8%J!Wv{8eL9Dq??veGo9y2u;~NX@HwNWwhl~(O!@k^mPQmI0MHn6J z!YR6Z?Wp@9-_&^c@|<JUiy1_DiS{&wV=7_5AO2(sgnH44B<e@iuGFt`d^Csh3ktR? zii98`P@`K}{AM{MkR%W6kb9smTq8}Drb*eweAP^oe+KB$j7oNW+b%g|*QBwtPt*W6 zGBKuYagwjS!2xjAJyx=&+k*c2ukZb1Opdw>WpD2ANanU03i6g(>1)AY`Nm*`m3ALT zH@-e-XG@T+yhp~hyudkyK)qN~OH16}qvE6tReIcxPOcIsGq~CYR-Z4;z%Mo-7F6}z zG3gGMgTSfCvac%yAmFNMBpWhup)32wWNY@ol5p>XrpOogNv`x~<1D#w$&Nw_b**jD zC<+g85&ZXH#5X|+e$`(?<Dpc@6xz$6JVfIstF+Bb$q&+9jXyD>bRN|Qd|Cxl*j@Kx zc~~0$1p`ordAWshLX?7Q6XjWry2{_cNW!brCQ22VDL~_nBI5H86wR<zJs5yoHH~<s zxN7+f!Hkqa>ky=G+YEFeoEy%)4#TH*&Y0!4$HCs`+;EVvP$1=SeIz)IFR3EWr}!M- ztU5B5L*XzB!VTl0jRQOm{<<tO+Nho7fzmyp*GQVn{)y1~V5|2Fa5m_HIG1#6vBT;h z#ZXvkA`(5Qf~-2Kl1cL0po||t@o5uf&9bqiZHc0(pnSyR8ReklUb*7QTZ<D3{N?(A z^`6_|hmYLDpdgNH{pzXrqV_hdQ6$>zUV_{$94e(+tT6FDV9vuqg(hA^W;EjUZVUA4 zEk+tc@wZso`S~PD+>*B0=vgv^Y&`AIiB!Sf^NH+L_^J*EW5Sq;8&VusUt+~8tNP{r z;yMe)#3iXt<tZ6=$O>CGKA4w^VleoC=ee^F6bWhIrQ4RS3N&b_`lV5`-}obJSQG1t z@4!hi(?bb2<Ik3Lu5l2b-t+W^2tDW`m8!3oey@>&?M8SdA=0L*-1Q_5GHSrWQ5eLC zSDV+4%<?E9!9Wx=MCbrLwF>_QE~f)4oN}HDY!e}GY$oLlZFfX~EG}3T`LNM1e5ZzQ zhas6F9(%$4G_p=FIU)h;(aeb`;_{#`z`-?Sn*ZE=-JVjUycGOIF}1ZQ+md%4sq3%= z@~*1&7Thc(C$?K<={7#kiLMh;vu5-k+Qk2c8u@=Nh5l!!1Zf|&;S}ZaHeAHTm^a(2 z!sY~P@9~2mOCm-YvaD?1bLh5rd=ICu1eY(qI4eBSRmP6VwUgQi;%0Yen`&N&QZ#XG z7I_DKwqH<|?+^l4`sN^9Uwa#r6$uQyvA0$^>reIxg}}Ox3a$+y2E07g3k{!}s~RxA zb+#>5mn^Nl8G7#pEWK$E9JJk`q8Fw65bIb#9_ILgUJkzr>sdfOAx@5_Z_iaAynRSL z!DL7u6O%^OGm{+cF77@N0kl?&L)j34Kme2mfi2%h!dqb2uBdN++QH-@^Z{8(IVxD@ zhJM`m^Yos=IsDJrNo{Cs#UEk)<i-2WX8PjxT;sbK*GwSRPuxNBztl;EGj`wi%dl*b zc3{atxt*BawH^pt`&z4w-0<j<K1VyB`RLk2BH)Q{W)4)m!_%GHC|FhWm>Nx<brV|k z^L7wD*jOIfDXEuog~*k1_Kc(%6J}##O5x3#!5N9En7gLsf5#y7Q|cX(U=`>lsVF}m zfZ6)+hhT0tN{oul?D+V<!TGD<$^Ynr`k2Wl&TVZ;2Vo+oV!H+qT!yH-rF`Tu+aJE^ zmcPVy!v?HHw=XtM=Oa1Q_UwE?uA&Q>vNQ}z975eOHlMC8EH^~Gje>F*?W4evEc)3` zu{n4L4D~119C*zlP+^;9{H=yQ;lL)L!)0zNVa(w_RAl+MB~R5Vc@zkcWDL%D{IsvK zUKHkFFw$4~b;^xN-bOuVG#{yO#x+p%F`SYkZ;e@Wlp#veTiG0|c1r+n4as;!8TL@& zgmpJsUhaNui-_UKdWpMLiaz=!>UOAyws+AJtax(UPO}%#fVkDPBs1$6)35H3Yq4hC zj1PWq4UcEztP?X4qQI!e>^~OpRRgLXVcyL5``d9}dnY<<7RwU`l&P;n<W_q8YQ!+( zgzag4tuh<bLnG~zG@_`B#;VGGzR@%d+LO%VB*;J43MQ+vD4wHAZmRJm)D=sCmM!Y8 zYslAA<gW@8`0$iH8_Ztd0Chx{C1ktRjLAZ&yYS(Hy>MJyyE%V8b(>T$Wr@H-n6L?m z{vPzcG3KsiJ=DA~lNedP41(P7W+c%1XGjKU6KGrpe6IFU!zmcYj#tP#7rp&*yzrH( zGJI77pyfPDs$vRzvi=#Tq)Oy7f<|y_xD8@@Ke!ULh~SFut6f3Uu{<6jiE!#60d8E} z)ANOOk?uyLnh)TIDoMDc!0_`Dnt!r4`rgLeeHzC7v0r~BNUC>K%7OB`y$<(4M$D*6 zN~ENW`QBHt_37ICw5$^))2Bl`a44V>f<#Pl5hzj->ZTY4uT~{hu9w%k7wNE;Z99fu z?B0!{d<~|QfNEU1cpsZjVct<9aH_Tdwpz~%HVtD~;j{1Lv$xQavCIQ@OSylZ1Br<v zSZcy04gA<EsC_}L9Fe#gFBfJlIoXmV-b`qQHft2pd65ABb@L!utE3pBC|ikBquJ1m zu-?%a)D#aB<&er^uOwGY5Ejo#0ATxNY|cBDGX(7wg9Bb<I9U@O45}=UFYOiw>qqIc z{``oyf$V<nVvJErtS8|GFWY=<U$yXs&rA(12#|YMLSyz)C~RB(vI$^@U)pweT<baI zAf-Hefn^usZ>*34S7I_-AP;9rq8nQ@aVu$PpFwd~IA=UKS<f>aur+>0od>o`)9-i= zW8;4)tN#sE?VnSE>Hkgk{LlCyX`}5Ub9znrgx2`z>y0J0zr(vfwxK%cdAeijHc8Ur zB*>TK%d=^!)05n`g9fV=tK(t8c5yr3G2nR{^9|QRGz)MZwGKR|kYmQK;FJsa{<ZU` zN|E#_!%&Vlf7lk<{r<K)uU#S!m0`ZYuT#0Q(%jd>d?En;6RATfP$97*4>plT*0&kh zSeRSFZyPd}rMRXFa>>PE2WZL&)z&BWgI&gU-%sNM%Xhp{DigVpVb<Vhs#Hc?_!D5J zEJFB@@tgGE`tU5Nf_rM7^@%hB(RIr!t$o4DB+35p0iv^|hv0$2<MJrQZvm#-?<q-& ziC11mir?4eatUn8AJauBGT72)N=_gYu@5ksd=m=F=I?(!s9~7cH;m-^I%W4`8z<C4 zhEC{Z_)Or5?S|iPA$<g;X|{0G%N|+EO+!XytxzZBY%@?OV@3LVyGeWWi8K8ve7J)| z(gx15irKnTdG}{SH$tUFs;oBrkko0tlYsu`>1KMG#{guE%}4Jqb>49lt&6)6A30*9 z`rd=Wb}2&2YB)qWnb3tgUm4mrtUMo@u;|GjVQ<Osv>5SaG0*3z^&BCi%$vJz5@yBf zLaR+6S}W~4%<a!Mq<0#^HIM(b8cYDrlcLeP4Xz?~G)XM)wCm2q7M|}cy8Uv?gJahj zg<6^4kxLj@QSS9QC;&OD4xH(+?8x+An8=k_VvtYvVmW*<XvFWfAX?fV`KlV<mkv|Q z0<aT1DmmM?zjX8&AxHAA=6G-{Y8=+Y8>}cHuQ?VPz}Mb8vB_s_+YH|PFy-}Pz(+5h z4&1%83($FFgcxDAC#GP3MHi^If<|(NIi^kOW(JfgY3PBa)Xy)7JeFneXkg83nZ)lI zorrx|_~Xt-y<iACd{#Y>Lcfqt7IiZZcqvq-g3(`}tE`lH{<RS5$ZuHw5^z`$A6wb^ zZAv?k2jCRsJLIHUb0C=0j$Pe|Cc}m(9OFbFjm<Z$8i9~=*Z1*yl2{%gPzyi38T+8j zRcltEV~|DD{SPA3OW9u{pst&OJ<)jUx?KO*^ApAS_zGVN2t1X=t*kputbi&)yBMWV zKl;z*6=-lXzMm%8cwRHT>VRU=1G-r;Lo{Kvkwn>AOU9NxAV}buwtwJ>tokZrFgX8} zauWn2ZXUT~MjP(B`vS^vG2_9@Neb3O@EZDcNJGtoz1{i2jMzN&pyUV5qLZQ)ea9TV zyS_%|6&T&H>L^E$v7-Rm(*kJSeLUMa%ETpv&@D^Lei|;nfEc6EvJB@USh>P*=X>g8 z$dNA9F3iumvQ+I&CuaEVLnno-`^*~6_KScQnQv}L1dwMT8Ja*CYAl#n7iRe+`Q#it zj~KICTCU)&#Wv)EbaKw&-Q}9a1!$ZbKn1*3F8Z?Qn=SG?eme?72EC&2RO5@HAo#Et ztfQq}?lYJ~M*A(U>CjSOgl12ew*Be+DOw{`Wc|?~g)7W&z2fA-n4sic9(!2m+wP0) z7a!nw+RW&AC6zabIo6V)&1!)ty`-77?>QZ|%5z9}R{6cLwzk2N08Ou>tDCR5mPYsf zV<f}dt_%VBwq&>^jXH>NVqoNR`k{;f$v*lmyLaMoG&6fGM%giz7!vm$v|*HI<VQg9 z`23X<qIYdo8ac%~t!I)dmu$go-ubv?A>-d8zxs^+E%=df!SN8>R$Z}YyGjmM%}5UG zqu>&&#es}rmlW$*$_Pwqf}HbuNl_b&FmW5)mr1G<27H*+8b-l0q+SP60n<TDB>#_i zm2-6IfZo&mC)xozzNkS9(=W?QGLYUf-W%WpCNke1fNgx4($Lau{ThR$NR7zR>HUro zjq02^2)<YSYi%1>`L2*R+-tany2B#je5X@e%u$+pM!Sg1XuIC21f%ouvb?Ca-qwUk zbNAOe%g}G0Qc$UPv+gp|iY@=_ce4{AozVuZdc0^uTy`JJOX?=n0_@G)U%ua10cx8l z6fYp5N+C+OLXSBKVUh4XHi^F0Q7Pk-n3mL4#~KJ&`fg4I2Mh|7fAKokA!$i+rIZzj z@y?ilg;OseqtSLa5U{;^HD5Z6^>9+j+4Rle*|NS$`1bPEPD7-Z1}6cYQ1au?5Y&Bf z;e4ruox+qeqo=)k$84B{cD7vbl*{MFI43|$UUV*E&hFCf0e;W9-<pE$6a=e#iKmb6 z>qX$J(l2+@+)@R2bHt%2o*ZW^0Ou$%FQa>49JT^lp=kLhsZB{?S+}cSxe2;Am5R9f zO>J(RtU@nPl?+O_^Fx{bA12I8e4i&3uDkUVyCs9bu{YIQd*$Toq$bD*<oAdwzQGJF zZZ=smsgDv6-+2ny&JTAkzQOjJdDGYTdvuU+J2(m&wqb-pI7mHF+|yQl;~|;!twdiX zs_e4|^<Q3M6vl0cB<g>vBV7`Pd&*FiMted=hYU+I7buhRA{Bie`aRZ*_Ppd~4nkhy z=D~ixKzk}^C-Cp_YaxoGmZuW>S)i%%u@J)@(m)Vg-sOFX*@CudNj@HHdFYyvCiC5j zAzcu+&#+}u8oSV8;O2R}dN`Fa&fW_@R<#QLt1iq~2@d5U024LuLT>nRG2O6SZ3T~@ z7fk=x<UcAW8WpPh9Xh0N!PcAOUiBAml2J*t)Al3rPoR5)pu*yNfw{`61eT<hK|tJV zpx+mbFUdgBE_`RNy9g^5n_IogJ>(=sETyi{%2T5=)fps~`0UY}ziFwqcj<XRC`q3D zN+abf8=`swbQdvS#Gsh<H2S7^EyRmeyRb@p(HU2NILHQFcs+>-)eh(r$}J90hdN9i zt7A8>E*?u7&QL8J=F1OPPRG-4Vy&lF(0;+c{$l0R60yZLQ~q*{&BIdH<zyQ%DpkfP zKNRcb9%eH8Xttt5Pl0RUr0O6h){WWxUyQwDlP1u%Zke`iRob>~+qP}LnU$`z?X0wI z+qP}9>wY<XJEHfA{U_FXVm@<@@muy0lK<kYbFM;4kQmC@6LzGJ152WmNM50AIY|L9 zeYgG>Kx4ovoan(3h7|M$)R~MKa7=CR!(*nh-?COs+mX;LvS9tVo2ImZb$i$!qUCrs z4u7>UL1f9$p0@i(ngFdaUMy!Ad+e0DBCDRGdWxGABJ{{vfm|+YeDnja3O<qYpq<4w zthuvqEdov^EE9W_U#JDXdq?(_ny=rLC3+J{o)wEa<ZU3^#X}fHyU=a8O7X#=pvKJ9 zR^Rhg_oNhfcQ@v*M_<R3ktbZ#t%^2;C4OfEisp!~vTD4dV>Wjvhe}iMg2P1K#LBqL zMDh`AN5wCql@~MtZjD^Z#pd6E+pudDHQo>=JTI4^FD3fQMy@<mdgBfhzgGm5wszsg zPy?a=LoEF7sFckAuQ;5Y`TrOk|Kq{8A4d-IW_3drHKJ_rT9rx?AKOa^bsg0&`V<Mc z@;{2+-nd;n+n%(aTgIs7b2>e5u==y(kFr9NAK^nc-}3HDf|5=1#zY++bsCB@U}VqM zuumC+YHf`;@f0e)2$v7w>W!~OJAv!*&rOiSj!*l9f}>-rW7ditMTLEDYpl~Zf}xpP z{t91qHDS>A*l`rfH+;-v5v&23i84$<s#=aXc`NpQ?F#}0=;4B|Ep1(eC`AcjI+$^N zpfd5H5e-(1bNqH!6DI2IOa!4Da>)kUmrf70-UHOL&5<LRpXx+qE$QDcZGGy#M)M#} zAG4c4Bp}4{P~mc<6U!CPLN6v#v|q||mg<4uYdmn(1f;D&0_4MW=;F8-ijT4XcI4sq zdUJf9T(&`P_&ixi(@nXkgTpYLlQ;=a9Y&e8DM6@qkLnPlzrY+LJ}XZ<@M;{9Cw@a1 zP*H^`=Eygw-XR#;hWa*M1<^2qB0Bzzhl<pxN=#92yFqleVLJ+dpc>m!@xk-{Rp6g1 z+np399Vt(t*^j=6`Ce6U8;VXvVAv5l$Aq9==~EL>0rbj5u|@X#iV%3i1<)4f7-hFm z`=?{b(`*T!o1x?%iTL~`@M{HzLjFn2Ke^r<?2z@m5_<T)g<-$y&gYO&B7e*NT*4>K z)Y9T*>P3SB;$w+r$W8v9Ywq$jHfxl4i(q(FW+Cu<Kh0Q@vJ7N8v>^QCC*!hfasT?| z6E`e<%yS8Iq%7=Gu=P(wVi$H7OU~i7-7rk}ccIu=<U0k8qUii@?~a;K@SsAGZXIX+ zN<27?7N`umq+K-V49K2kCo=i%ppwv{T*`Fop`dKmwjzr3I~&euDTh@m7G?59(2ev4 zsjPg7Ar>GjW$jybA>`vANVg-M14uzdm^xfx-WfoCGRclRTI8W+(_S9y3PIC|dPq3@ zb%u^R<W5cjDjgrMiSPU?RPE6PCc&o04oT_&+_)c>+J{b(u<G<*Z;He}&(cF;20Ngp z77|T<(V82+#$SR@?aIT^IQi2~>&Ud%B|JUCTpf^aA|&3r#%{0q*;F|LTznLY@=r8t zBNQtisdS6WCn(6~f-u$O7{LK-kQdYCtj`W}WPAXK>6Q+6h~)dq8W<Vz3|v|*+1h2O zRAduc1-A&PB@x~+tAA->Wc@o_4>eSp2C$1uq~}Tg(@pYK-vb%#`c|G0)tzv;?5)UO zLUa`$J1MHq(Hic)=1@g_h4NOBECQJO`B>N8n-CJs_w}t_(YdRAOH(rY=yK^hikOhj zr)OaQ-7&#&vw)f~Hvx)8advr0^8sIA!Tp7x1Tzyv4}4tLvii3=I@je@uqM;>Ne=;H zA>x-)7&Skf6qczcFjWDhs-)!!ytx!{-`1&3jIGg0`;D`bR9(=U+Amyb8c=tAfu*}7 z3b9DZU91dD0$KEd9I^?=tk-cUGqH-O8&_Vh8)!QYS$@}`7syYhwJRYAAetpX|8ehg zn6zVA$9lzs4YO1_B6=g+NaMjUp|gNPVV}llapOIl@Z~e!LK}xdnB5=IZAwF;H!#@% zn56wQY!ujc!;{%Ts=U%963|M-q+}p&#6pR^7OD`-rWBpVfFIK12|64x=+kE-dny71 zg};e*3PQlrHzTdZh~?L@Hp`Is$8ONBv3N2cY!RIWqo>ZBc958M$2bE7_}8w5s&$s^ zov=(Sf2h}eJFw?1T;me7k6K3+Bn`OW#e?%t*=HA{9^>$kIeoyULmes?DXdJ_5dE_P zdh~RXPgzqs36%b_7W~<T@?Tparysf2y7A_3@u<^8+h{zZU-`Jxjz|XJ?FqgFJod6( zTH4bnek@(Zc%%3ife=@68P8}emRf=h@YNf>W<3eh5;)XVk~AX08gMX?r}GH=PRpFD zsTnHMlCfvx1!-9cnvYcLLXha1Gsh;J<Uau+z@sGg{KBct<QM%H0h(-OpUhlq`)h^e z3zxiP^}{^XMXOr(1C=D9HAlZ(_9r8gIg74)AI@XZLe_9*w$)9!(-3foBiL)2HVDx= zOa@8lHoRf^9@t%>-~4^;Pt4@zdKlZycF@+AzV0^nsuBfH7{pJVBkYMAJA{*l&zzCa zf|?}hoMjvfvFu10aOqht=BDH-y)Vl}1p7plwe{^Q8B7}on0LKWDd*F?p+82suQU?2 z3-UP=A8b}-+(h$WIMpQd5MM`Z80+R?!d@`^V4TOR_YUn%U>GHTm!tGh^<D_L8!Rvm zBZH0Z0lFvED|W7z!G6&3W*B}U`HXi=t+ZNEBD|D(53yyIYa!Ei^=|aGEB2gdM=FV{ z75Iedrp;18l6Mr&yJDkb5pIR<)>e+}`gNf!HaD^K#zB*bNl3GjEvRYT<7E|L4HT+B zjoSTA`t=jDK;VQzAccB_LhXAB_lnMx0Pb2h95IZqYHp?2Rkbn|M|o%yif`MR;kx3| zz5IN?7=3cH=6ji9!nsSCgQiE{?QEYes_iL5&`4Gkl4Y!MEvb9AnoW+=Q3)+!Y>MM; z!vy71Zu>_(X>NZrA5ExD#7H)j1Al;Vj)Z!PPjzWaK=bz}Rjv+j8Q^Gox-0+Nj_c^t z29VpI69_}N3#ZNbD^gz^hC-Op!+T?_Ar8&tg7YvY@L}Q{U<b$Q>&Xk}d)S#iaSL_x zhD20G>7Uh}BLgPIkqa)Ig~R0|5e)PiV}wm@7bYCQ&2qKQ<z~lzDQQtLVUCEjy2930 zNIixZQ>O8xRjPCSMY`&!ECF$G&C-KRV8ws(Po17Zh^0c~eS)5itRIx_rPYn6qP9;8 zCfq1A;_eel$+=VF(>UY&F}~-4nTrkCns(krSMJ-Ou0J6xwp5ZA#_5AuG7|B-tzr*# z<Wop*XTRdz&3=J!IiS~_CE4tuDW|o_3{xOS0>EbsL>Nfy*s;`@XB37A{^n1c$9*oO zLb7##6@^vtcK@aAv74O{=<0l2;Ib__fx|QQ?n=&18!CqXQ>(dmLV;7)s=&dS=XlO# z7j|J(GBKK$Xuit4p@At-uOPqqvFGbEG5e9TAI!%laU^1s3jP+kwHx(=w@Uto97lGF zKR=7$=n(t@jbV6~D!`|eV{BjS8ym0uaUP!CcvQESgtuAbb7vwFi8e{u+TMeXABSFo z+}%nGipm5t#<3vh2XV7WZBj`rw6j5VR7O_S;Xh(ArEJ;P)a*BlqvPA1=a#(Gw0G9U zWU6E*uGH3;$;juWVh2*9?_NL@ww9ev`+achl)pRAnA3H`!-*5Yfe?0al-%~X4P0|v z^HgorcqVfY3=$~6RLI*aHH;S0-x(<x&*9c-C;2#+Sm|{{v5>Clg0ka}O!G>1?KB#7 z9Y*5JKYDm~BF6c~wNyGCu1shgk3SKez05YhbF!V6(9RI_5+V$te6l8gr&bP!kAk>| zZW{sjYIzr}3!iEMAqbw-DNv6e2vjHTUZgLcXeX#kB*$a9C_v?#Hr61|(u4~PKKcJ2 zQ`!F;YU#gH=zpe{OsuT`=OFz*UJCWWG(%Z}vA(D!ca}Oa{}NmjLdR$kco$#yuB%rZ z$J`$>LfgjkNgUhqGQ=FdsHsn)D2vmCKhGUZVSGUJ?E%@2+-x4}tMorgzvnbR`t0T! zOV3R^eMU-op8c4enWAcCkG)evAIfBhzI6y_Hs|&LtGQHPS8$D7Iv@`55gDnpQfgH5 zs)EqskDw-P2w_3BA568bEfc{LNHPWUQ!sw(9%oT;y3wPpf5U^UMVv5#Y$&vAyjNRh z4IrLkI!N|_cGb|mJjUzH0=K^_ephf-Bt0}L!#G3L?5X%n{ByCtRY^7uJ6NQ_Rum^q zeDdzL?Y#Pn$Oe1MT+rjp!y=ds&h9j=4;CwBqz!SZpKUnVhPi`*l=j2VXQ6l~a|WnE z3RyZ(E@UC$34S}gua7%QG+X59ApR!K^*}a5UpAb|zZ+}wYTK+hkB)M1P*LV|!4gNU zpz#sXq=AU#aFFQHtPDK!uM?3+DRD*dKMSF2v;BqGX@pdxmSAL4bdSl!K$CgF<0QN! z1cqFNO9dzrE$E-e$0XhW=AVqG@piZ)M{;M*h;+xUxO;-QG5hH28Tjn=!90AkE_z$a zmG?YnbaO7^2X>7crzx2uobQD@H@Ou3LS&PSb0Tuq#?Y9$uQBM=Kpo4agF}nOTgjeh zGQg<46XKTXFUHB(0hw8lsXVD#6_!`1rpEQFy}#}ZoXZPdk}+mvDM*AhyR%p}B((Ni zX<RG2)r!;_Q?u^hu)$>u_VkTkwi)cqY%hpLjx*%0*~LXz4;dE$VCXr2U77_$kj&hH znE5TW3=YwZ_Gb}SA79bV0DyJfe0B)<vZQ3RC7gZTqc&I_3(c_vQtdUQTr!sjsBAv$ z2Xa^;f^qe+k-9%2UBvw4j(=4Z4jjDhe+RTqcCp$NrT7E8E!@hwSE99&*Snqumtf^N zLlnKGyh9SVz!!YJMREnHPn)mfxYMJbU2>ewaUPWh)Wf|IqIk*Efr=eJdV`GzA}vb@ zQnzqWeY!UF6T3rU5NEYRJ<;Yyf2_=g>)KD<%mB{#WVKErpu%Kf{_Y-QwA-{xEhY7x ze(>O=odFza4(aAUFg7AN<oG!0k~Ws1Il)P&Di~c@U#f^*;@_Ozltc2Yn_J?O^Uatu z@;68@=-u{oF(3HpLvimBf*A#X3YOoQ)?#Ltz(A)}uCaU-C7T~^{ckocogJs;MQs{S z3U+(;&~G+gutAGOTlj%-YcMY8p((b9xNZ9=C<w~<D=8r__FBV4n92W~L#G9KG<;Hh zV_Wy*&}6HZd=j#ghw!7iLN3xS-iovNm%jz8%C|u)dzB1gD*ZcUFhjj7-N5NfqO(8+ zqjf0k*+R>p&<&j<V?2qrPv#FCj$ava22bWS5=E_oAFuXRr-*8xn^MM&!X%KpY@{>h z=pRu)9lR85O&0YT(GI7egpx!@{mF{6OBs0oOTKGwTj2J~a6rd5aMqCir2y1qg_D)A ztrS%)l6a?iiSnMv8JUe%8`vN@k$Aa?2-*O`QTNq67#}i5Gci138aTd`^{B>hTiEs! z!mcG;8>V<pzbI?Z`hEkcaEuRu(KK`o4r->{o?FZwERne*0e_1_5>0qAB|?<-<K6eQ zOyn0Fu<wMicI_}>cX|tdcDqR7lwEEdZ4WvLkkv1Rnl;Xr7P;!XZG4ZDzl3DZJAAO7 z0PujH`YEGyDT`q!rZ^ez$k@ht`q}ZVSRPpXeIHxRx1Vb!rFL1jG6+#p`1CBeewpF^ zu>vKMMkD(aT3iER9O0};16#?nN-J;Y-fr@1lMscMlxO(JRd9CU#xus)@kx93IlqZ+ zJc8`PlY+!|DoQkRaKw?tx`VnIq#5;~Yju0&SWZyhEt1o%AnTz>Gu=HXZ!DD~tAs4_ zdr@?0V}tvs|L_g`H`LC59oGL)JDE9H{#SUl)>nZ5G7tJ&1JpDIakm&OgTfUqhSP!P zVOclMTQv6}d<c1GM|a3fn@N0{$=B}1?%d(5yiWX6EOfakZ9`a>O75dead~i53p6!( zDjh+Dn%i900=EaUwg~VTLTda%F@xO*6;crB#<MR=<p6b7<assG$wxbtoSCPG6;RzY z8L?>={ff{nTenrV{>#^w+TXE1`beHe*&oUym{?t@y1$SwE#^=ZzrMjG88x!{4VJi3 z)_}hP1oL8ePJMR=Z5aIE7o10J^n3f7c7krio^6#Pih(9zwJ&vFv7F895}Z!w==96t z7H<X_-aa2;RIe+qyJs>fzO~l55pjTMxI|ZXx(*OK2p%rz)-e?^Bs8@0gzfIbM5yR= zJoY7nU14h3%-9lA(Ijr={6Uhrqcnj3)MP2`=@hPkwFPNj^{GK+)en8_9g+Lyz87)( zIF8?Cv2|x()yW9m8$vVrHvZiwPdLu$GSz}^WuE@by}xI=YQehSg@16p-)d=%kIp{S z{jOmuJE3JxdbYC2AS%O*FQ(>^lR#Ylb-C8CS;AR-YEnw^P|%u{#6vE9#ZoE&m5KI= zQ<-RE7lVCjcER0wlKD4tnIs@B=LM{8AnM}L9hj`%2j@wXP`rDI<{X5wGer|GP|y|Y z_5jmg(137d&=>S<H@1x#O|ybC>?O?&f}ZeOQ^Bdyd;z!pvL6ROrqCWtTb9!}akYEz zEebtjYb6J&BqqsaP6GUMt`1_3?%c}MT@7;x5XkN@r$D_MSWpLni=wX}0q3D5cvM!t zdrAXd_{X?1sb3JjM!s#C%kBO!_o4!PmXChh9sDO7^`@|Gjd?c9BCxRD#;FDSPusC3 z;=8j9R6~X}v-Au|p1v}kuS!$PL}Wf>+?!+i`7b~~oPh56n<aFs{y$T<#XX9F>?8M7 zS!h<Xqsf|GHEF_jM^geRS~UC2{_S0YB;yrew=w@hz{q7$LD6CgxCGRt;64c~DD@z{ zk?0u9<Pxn;bBPT7jQ#YItR&t_z~J+}Zom5C5>tq{D52tvSh+ZLTioD14p36Y!i<YR zB`E<z(QVU;PZ~UTMC+TmfPo1f1I&-$7vGsWV3ATtY_XFMw09ggZs8VcJl+7YJWvH% zu?xfBD-;le7j@Sb`eF!@Q;sE4En$6$z4}qob6H)Lihza(TX<#-!|IuaD8o#g+Ea-q z*!*XW@y6+I5d6kWYDe>I8IDSmM0z@+Of4|xbT|kv9<Ta=?B;}FPtfE>r=_r^Z9En; zeo1nrH0;DTW@Er7_Y64}Adx?`)r&;=msbcD1&A~=q!mAWwxtev5l~3xU=en>8iNE< zSBc^VnuOu65SCWY#lQu{4|UVV!;~M`X<}T|oQHbJ=rYKrU+5$O#yx3gc^h5|Me6Ts z(3o6Scwvhr<y?&ppriJ56(7u!eecr$plP%g1eqsP8ka*VrU^h{*R2+cv`J(xX<IQC zGSk`n{zY99sbm*pU(}Y32s^rVs+O=vY00M#N7nIfS;l*R%%)bcVEd9XbSSKN>;61@ z^<7xAexg&l`;L$U?XPG#81D$x*6O~>U+gxY1{G>dMUbT1LQ(sy89REcR`M$#H>CHS z9%?n<QE6b8{;Hc6=qi_|+SSXx2`>7#AZNC!VSdEcWKUKfq`%anw!G1|=hInHDLHjp z0noG~`P9B5V!+1a#;~!8=#((EboS{JkMH;*=VcR!Bu3maBV4kxy?ec;#G(iY#>=?p z*Vs)E-|!QE?RTsVWb)IWn2gkPI4DGFV(xg=Dj4TdTv+~x(G|*1$T-fhrzD4M?}sbo zRPZis_ArR(b*vtXn7tDFx2b0_2obJ|MBi6v>`BWlC|20l;X`q%=0oW|{@Ug`;JQ-$ zRi^KmRcr-ih8)<?`nsWi4Tmi6HO(BZ$G9cfh}+31xR=_@xvG{1jS+*26WY72C#$Jb ziBtXz_8AzC2uYtAY~;%pz}FUYR}QWK`hCju5>tcPg7cyKq?KXKdY55<5qs!wby)9t zhbe>lP#kZ%Hi*c*AdWsmYEQfzYg<z7avww(tM4@sXnK2NB31t2cl6iA)<91m4`N@5 zAQb(@(tF5SrDXu0qnx19?<}ub%UoX;!Q-jpDaU59qhuG2F4TfAUlkcAJ@As)@0KyO z;-{~PIbHWY@($eBRXYv#2kw{&U*9SWi5BDZ-IE8&p)0Md@Gj`Oj>!hU8UL7xT&jse zaf8|@O=d^QFo=V=HTx=TXL-$oq&)mfatoGQXPxtEw7~|k7J#L_(I1haIUnSy&)G2V zROI!N!{y>`cWX$76;ge))9OW+!1*hFBFj*1Tm8)7$xD*<P<7p5iV^K?B<%Fbg>?1x z@?i%)4p%-%9Y$A9)F#%AH)k#?az0bajE>J~)kJIRjUn?<8SX&y@|p);D&ykLUXk-R zAE(z552Si-_<7!SlQR&0JXz9lTu~89B?AJ}d(z}667{hRuMQdojbDA;Q$*R7lKURj zM(6llwFM(LRm!_X)tm&(#rcnt?_>pc<RL$6#izdYJP9xDSH6e9`Wo6jT!iq}a{8Jr z?ygSWu@MPy_Y7_FklWbFF<h7f+MQ%NmC#?Qd~YNT_?hyuLLTg5OSm7^q_q-H_m4El zg9~J@bNvKr+v;s@%4_<vKqfPzo4)mxrFZbjE>SULa||DNnpW@Y7zS?w(nd+zR99TQ z7l~GeO{EPK1<~wwcJVo5`7LN)y~Y#7nLbg|WB1R+{-INy-^?QSkY&A9YGU#BEH{y3 zPU3p|kzd-ePP!R^ITgs9Q&ad+eZNa3;;dNe3VuAU`|J3pdc=hv)wMoOLV+rXFv8}^ z<!CpUt&U^dr9|Ow#V$Rxnr?p+Hi>f^ZNl%Ey|JYRELf8hp6ikNN~t5V-=p46@xqWx zr<WI37Ttu@q2(WsWR2HK+bEJt#20K^6=v4fo3y*Aj5_{-c=R|uRk&%->y_@}`1HB# z#STRTvPwrl+iN`~8wiAFwSF=wO{sImokF~ie&lS?1Gx@vW?sNXj`%D&_7O$xKDiBU zoQ|;|jjs{$Qnj{IcKGA4<-&vgY(to~<6Cmyz5t4sOn%|hA9N(dYhxV?S}r&A%-}7q zZ>|ecI9CPioyI8yUv=V_5q?hvjyxPTrx)^|1Jo3jl1N55^lr5+txm=TiVQ{bc8t5< zgC*f2N8_p!*W*^ABz(8A;F!lR3Jm}JyrqHs*nj{W$lB|c{vBsveyeF?_G(g~bL)N2 z!3FdlL^xp-)_#ythU8?-%}Lv=8Rb}+@#whL{yN8df|JSKxc<t1yuxj-bs#)9Tl2M{ zl{yKp5ijD?9wQG9$Qp>;#Zhj@5UNTO3+oH=%OR8y_2Lyw<eo_{n%I!k8<u`Nr90Q+ z4JKF6hFfNZ$B%cc@Xo*9r}}Q2qjwthc_#c>KpY|SQzD;JL+RWN3u%tl|N9G0ccVWW z)R6l~V2!av@bM5=*`kUObSAuQgB%wMMXg3xTXz<um%eF$+Ps@Zxgw3BP?sqh=N+BN zRo9(5&X5?EWJ@$LlA*MKtAn&<d;>F}qz)MwC5%GCsc{`cp9a==<ivB8iutuycA1Hp zQ$3;tucLZnC4cxo#Nz*s+WddV;(vaZ|E0tuio!OXtP%E~c*ax(zlA@ua7s&Yz*sNJ znqa|5I9Su{vTfEAGUxclU>QN87cp3vy%1hif|Vv;2K1E1Tz6Cd)fZwe0%r(YjS8J& zaz6JA&jqNk2eOJ1Vx^HAgAnWie8W5jYv?5X>L2^d!4xLC=-m;arQg0+Ufg?K<Taxr zHmPq^uH!VvmePKm!mf0ryHc4E*1vicR+=z}Mnu={tSO;nEK6hJ14K-9Fpokir0rbU zZ8Y{zkQ}rUpQpr*?4s0v7yg)EIcC0xjtnX<r-jJqB3k^xtMi<r932(EDe`V~WHj_9 z+R-6$@K1(gv)dCh5!2%h0Y?siyEIIeaN&j~-~tv$S3t_h30;sN=%t)whP-yt9Lm6f ze3yn^KRCev@~oQ$`~qR&`;y;v@@tQ`!K@DK`sZu8RVvv=1_JvN6k6SNg0fBQv5@m! zJ==#1%Yf{8q6VioA0sB7;l^;QQaS_{faLKFHtMX-(33pn^Z?O1y@30oWjOn2%eywX z#6<{(_#(g$LT~+P(i3;KU(L`eMZ3663022=wCvPt5kG&IB<Qe<UJc|gTJX>aZdIF* zptVnd0aj{L@Mzkpf%)h-c)?&vW2bm#$SvxEb0EMLTHv)04ycs*ptMIuF=z&?hq(cd zCfJDSVR8|EL=0=~P4HNS@rHns<r0@ESG7j4i?^JY(Ef_UV2EqEeIiv!WGlB-?jc`s z!_eSYxhOou^wT8M3424OINvV)P8P}6*19fI0u{%A3ofhda+JJ23`y)xn@Fd1k@9Zw z?Fr=R#vL$0*YA`Q9$(9Z{>BSPD^L4}C-?@ls(kXG!PT|A_{&kc^+t{c1*qC(GHza| zmr4SD6=5OTV#+49pHyT3g{Gr=2Bn3xE^`(b6E4;212tgTS63oIGtO>l=PQ|E(aw?X zCp9UJ-z)jdGuWq*V2ZShd*Ffl7aOHZ8OIFHo-1|M{QM61ABd#&{Z4mfc-$DxCz!6h z>uj=YYk7Y48vG^4KV^ulELxgiD6x3&<GQv%7s!Y&=|%`lT}wW@;NFWgVvYBCH+d`- zbI44tD{IHrX~X@d;0R|t7#7CwNLlSS2-59MmPPl>kI44EZ@!kfTr=0k)*m<`#J6HQ z&|qcacaK2**()^H$(u@VA7jYx^BOUQSe3XQA?zm6)>ilvBh!P)4Hh`zF`E7mDY^Jh z_YPCGE{MKsaOuTyCP**RZv_<!w3tRha_7>=$jjBKGfQK<@idrco)zKY5m(Ys>Eqxh zP0o5)UjsW2aPkz}#m1GHe#HLm?q^wzVd&fuD-|H)Nks`Mtc(Sb945N3<hXpu#sXU# ztZO5#$DxD>BHk@xNwe&<ng6pco_{TI(q*YJiY{lgRvWryD$~1)F<LI&JU2u*Xa<vE z+y*MnzIy@gk<^Lo1+DcM3D+o9L)zy)a6KX;XZmL@<(RLnY%`r};+IN7`6jjIakhB6 z#Zm5gCDVh$6XS*EI%!K$M0~Xv5ySzT)_ZLpih9YHWiIND@8+~yt9oqRd-1<@N1@P! z#-D~5YOjJ1-2HKzP4?s0?K~Qz=B@;yF*synadcuM%5S9<l{N)q)I2}i)Ickq`Wf&a z7PWsQ$?W2MojUTf^-i^PGs0U9CEK(&n8RBA2Wt_HQB*;m)Z(_ih#EN&F#{LFEuk%e zEV_~u)07(X$n_HPKecFNg1LO$%p~p|Pl?}jmHK0lb_$%XdNAZhp@=sCQWvt+ZfZL) z!h`A%tz;KT^&0K!`Gys}W9<o<xXr2r5J|{BsES3T@4q-sMNqXV_u)#zgBG~cCwjZ; zNq7Jl6K##08c|F*lVMI6%(F-ld<+fLxNOovC;Ej5KLxq2OiMVGKQHik9<Br<#?8i1 z-r*dLu2QEH{Vcj4m^mRw7#w|p1-e$h2rDHJFy-lnzb;rhyL^GX@2XOkl=2@Swjl(V zaWuxt{KX=eZ|e;j1*1>D#2A2pLaYrfvMz~zf2$7E4Kqu}lx=KDZECmLQNf?A83YiH zylKVP9pbExpG9!hJzRqOyZr^6m30vxQGRLs+a~`$a{6Qu*x9E*=b6e-OgT$twlT@_ zJuMWKvcwDgJ&d+pc#<a=eGt<Tjq!K}M^EglN<zy%I(z?+v}rOkE08o&cl8?udrSaW z9u`YfhgW$URDC`vuaoX{OW7|x3Jagv|IY`?CMFFGm;6vmaeL~eACZZiuuGJQq7~^6 zpMgv#J-xi?))yo-r6mrtV;gErh033kp@7?^oyw?i7fb|wE#7gQ&1X>;ogE#zXbIL8 zdX&|2i7H0<TP7Kh*wg}=aQ{S<^M|$zh7ermATpFY@^plFRC2ZY+U$@7CW=1t_$TYl zPdMiwiyui5@pZRPs3oTuVS%53-!w!D!X?1;35Rxjg%h$$3Le&5ggQE6VCyekX8B*N z-dWFZQ;!WMS7ibxWXa^di|`^n<W@HfM|b(9H4wXSk^k0_n&k;v%1UvgT8{}_-dEu7 zd&4?lIdjn*FxT04-y4%E3@6A@MP5|2P~hQ^abK0Wg%Xg3DAS40y-Dg22oV7-^WZN= z4-^SXSHum@FV64nPoKQrBs5n19Q=B}@>y=-^2cZAF-=@Kx4(?*;;fJ}#cRU=2t`%O zO)J6kCBnnElIJ=1EkPxQp*9Y2e-O*tCOk0@RJ{UBpu=By6-P-B`Z>wl1SCSGe?GI; z2ax$H1qmTk9JfAd=1I@|)<%(&+Q{2`R_Dx?6)BujtMnwK1iHP#g-Vj_$v|>?&dBtz zbvgMgd|f;xOOM>Y6TLW&L7E&*Kj+CC0v6n9Ekyk;@75Xm-YkV`=IQrj!?1UUAPP%t zUJi3+Um(N%Y6~E_kwj(ih=Tv!p_EYiN|Oz&w96$u1olyX?h83W!9{M?7VF3{|23go z<>^%HEel7p#(ow1v^y$Sc8q2eW{3ufc_@G(u23#DYcQBP=i13TW^rApC|CJpX0S69 ztoGf~&0SuCK*5pF!bQw+2f?;~q$&7gZWssuj-_4jq_d)PrUUP42vIL-PTZH2Hb_t} zr>hg4T36HpAVCcG*!o~lQ?4&~%H3~oS9S2HF%&644Yt2z`kJ8VSoa0)lNKJ+*<&;e zA*X)R-Q|Vr&p+h#m9!}tJKHIb)$nn-u(Q$D0sC_ANZG?#+wb`)P<V6tknuOBXW$$Q zmQ*%bjvRuhK^iak;bO|Gb0G&CJsP0Ab4O{F5cfFIYWD`q{uS)j;Q6n2Vti6H`J-EX z2xuw_@8L5Ht<`k9slI(PVZ(|tL?>Z?97QNG>wp$9d`00|0ymu2jV)TUZ<U(jR?D46 zY!H^C5#0K)r2}o3NEy^Bw*DPWU7!0`vt}2N&DneUd{fuF;Z#*Jr`oTwnDGL{;o?2- zw?0dG4)d;7@GgqR@&pN5NevtI^(ji@@fdoIWYr>*AtBJ(C}V%i1NIaFR|xUNG5*KA z&%yx;-IReNuL?$p>4WO6*r1*Q;zl7F1naIZB3-6whtn>jl125wG|!hez4?jZEb3Ir z37m}}0?XCN6DrBP@R<%l(QO}3C%y0O%PJuyudB~OOQDJPBwJN89IIxJ?WvrNoal;t zv3jyp4Ev+7x6V{Hb0@$OqV~IuUH1s!yj4VlWJ-CnXr2D36*@T*#$9>QY}pj`^hrEI z$iotuT>T$n^nXLW{^x}HANk2Y@BIH>GP+3pZY?BNd%_@28M8{EaqbwN#bMp5nvpHY zL*(Oz;eFeUZ9oe>|1x^|vUR%+hD(shLJ1Y%D*W*sGK!BEAMhRP?e}?>0A)Qcpl!5% zAKJqQrK>cTRE0*b$#HK!&Xa8Avaq6dji?h1-3qFl!QU(rk)eMDb7ps6aMTq|2Oo3b z2)WF*S{hNSe>IU^I<5wHp4s_LjUI;I-ho0ynd3O{6%1SmwB`k}Cy5><rW0?%P=MpG z0peaTs|@0cx%2QUml`LgdYRk8w{=6!as^j<M*LC`apAyEOj^Y~q#Roes6uC%&G6Xe z^ZPaZ+_LFT<L-Wz_I2(^o!t6|D7fgEoU^QYbqy$>MqO`;R(m(r3yBC;E!9g;Vd@~Y ze#e6D3f=Qlo}BJ&RqA9pP<^KsBjt<Pr}-ye-ql`j8@7YI37N0ztXt*Vj6b)V%}9=T zfc4BoH3klG*Y*6xoV(!YXN1LLcnScM#71kso|zuBi~#?}tbfcW3q~at0txzW`Y!0+ zG$sh|fFu)sm|NmGp4LFCi{$t!J6n8|VuqWl@lE8<MD}|@n(r;-FKla|2Fq496*W5V znNY$Dg(ymz9H+(e6fQMps*o<JY8GWC-3#pgr70`t+d=(F7&65K*!M?ck*^R5&=CnP z@oo80wK+2um@!q5r&)<ez@87R+2jq0yZ~!{$HrOqq@QAPZh-d*e$Abl!JksIU{V{8 z!|GjUvRBZK^jI$C;p%=|j^8uFj46s<nY+9maq&-pDT;aw9)^|4QK}K!EnMr^R%NCH z7HuHgBlNQ7R`y#ArCFGMf_mIdW96Ow#Xf#1fQJ7r$ji~qk6gQ%0i|7`Fg>4@(g`Ph ziB>~51K;4T2tR>Q+$eGX?D(!A9Hsl;P{I6>k#<`HH&^)&)%<v2cit4LAW6s3Eg{Su zJ2aP6`50~Qnr3IsVbh>4yUDyBfL*z966>QD_U}!(@GW&L(+pBJd#gO+eCw~qTVQYq z{X$zzLC5A2+D4XiA9|g?!@Qk1k}8_McXNI8vw=ZeRM$A4dD0WIrNnN-CEl<ro`8YH zKD)n}lXDP?^uCz-X{tLqKf|#eEH<U})CD7k-EAJ5C`tqsxH2=!n_6*>{eZ1+6b!4s z-?DgCK@zA_G__G8ID_l1+Xjxxx?alros{>>zY+wQ$GcZA!Aps4vPYOAAVaUrNy_-L zPflk72<nybfP>JJp~We73k|+x-ghgFBw@xQ@m)1-{Z;l73;($+Ni#RYJ^WJiAcQu% z_|}WW9c@9o_Y$KQPE53(S#{E}p5$fi5NW-NwxTGd12ThPCA+s`&9oYK0fZ^ONdM4c zRg?SbS?vO6_XCZ4pjLQUSOFGV=d8^QnKIJr(Ku3Q)Ty-XEDrejzo{(dimVZT^_T}7 z`p@28|H&@V?+7TyNDDedfOFu!-A9y?dJLt5f4uPx0)<z3XQqUC0``O2?oWvw-mwT| z_szy_@?WBN4PO%}?|JOu6-GN;$jiofOV!KQWTr?a*L9<=#U-wHQaI8XBF0%2@qbT4 z0ZHjT0#bs!_~16Z<EpMdu1oy%mOI8RG-HGjw!bLiuC*-}D`JZvqUs|2YZz37Q(p0^ z_LG5&t-CV0MS_>ibuom=lDrw-EBv`^g{CSd-YJ#KbBgI?hc)U_oa2+EkCM8=TT;Qv zGTu^oQ~MY`Zzfv)U9kn?4NqrwiOFrAFgif1-$HcX=Eb_LYg1Nwlr+q?+nqt2A?n8) zGC4Qaf@<;zse~QJUCW>~SQ23K(mBHN1qqja(?aBALh&D-?f-@%`>zya|DVe?4#xj= z`mwsZW8h;NqG(~-iF%UG--9lvji1!gfG%R*Z|LM~6m{nXbQLKb2jJZM40UV!3f7?l z*n^*%q;l`8Z?_)I-e)t#QR(&uGrtA~S}$AN$XOh6F|+_`L7ZMC6FqH0;!oBczp<sK z(jkxq85Y#vsQJtXX#)&kL4_%5Ya#hTrr5LZ5!Ul58*Skf0je2HZ-Pl;s~Sh0Im|Be zvYTd91^hy8!4O=}18o~8yyD@2{VNuP29aWLVEv(5g@HaO#nIX3GWB(Tssy10CMdIB zp6OfCM#M~S!m*6m*tf1)P&nwCs+9LqVVdP{Cx4a#klqHk4b#lyqSjo->&x>r1YaV! ziZL=`Sk<h1@>zwdCCClWpK+L^n98K9v4s2f6cc(pZ7`R#Ju5S1VyLaG$PNwrpxH8- z$Al+SwBs1!L(s|r38Q_<A`JjGEF_oKAs|D$oe22bK$m=P=$Yj3`sx_UwRu4&1PcIa zadEsaPTu%~xP!iZT~e84?|I$xxSUK?A6uyu3I!8FofrvM4KM^}5khNp(6k27+@fMd zHTOo$ycwnmZo{wn$tmj)19jTVNkQa?kUt>P537|t0F1Px@G;eUSEk8P3w%yt;ks(y z-61#@KkS<oa+tjc!Ha3l=ijhUiYp36nOE!wN<lkFSE?mxFPl^F&$q{RO@B1wR^SgX z|I{2tn8D#Zk@MW^WPSs!vsKGua<xfO4bbE+TJ>4+3qc@0U$-B>kZuN!Z@aC3XJJh+ z@*a0NL~5DReQFTAQB4!9dnVLk0~at@U*>eMC=QXb)b>35DIW?b-~SX4m!XIT)K_Vr zto6NJpWcYpL=-<l`Rw3XgPMlzF$>ynJb+KQ3jCl%c1KPgJvKLr@w|5}tXqj4V9Ne- zRtLqAaSb{+m>Q3b%q|g$t?NTUExm7tdl6%=xgLi(-C}Hb2O6&TfSSGF;Zr;{1jM<s z_c*A+7Q8lcWVK}YUm}UZcf7T$+)2Z}^me{dbJEk11CZGF;^9C*`XlAd<(JLMb!lA{ z=yo^>M<IX79pbI_<9@fisZnGo;NLOaDn)m-lCF`-b6<HkU-n3%eCq!8EKjAn!!%S+ zh0$pjI*Uu49zb_XSK@UmE8B0x{$bx<9X}LgcHYw|u_2zvK<999b-4<sdYhjMHXqJ_ zum<xpY6&g1t(aHS{VXryOG|Adh*{AS+3Uc9%Y@+Jza7;LVr*{;vKL%5#osQ?F5k2O zC$bKimLB!qbVy(rW5vuoi-p~=_UF%OTX@_Yh|}ZkEHV5$dm#r~JL#PSV;!#eM1=AJ z{a|Wx(Vj$leI5<qhA7nP#y$1H-kvACask3wkiM%nzjuRIsnMjp=Quu%?dR{lu@gs> zK4cTkTnD=SLL6(tGD^#Y27WD5x-o<Nsk-GTAkdMJ9&0KTsjqUfK(9<3#ac&O(rz)3 zsCnP8h~>l?@*%T`8cVhy;c{7@*re4vfzZF+NvWb$+l+d=6+!T6H`$!i4TbQ+7TI^` zm!#_>oLujrl@3weEvt>IB&OS4?l9%`1tq(za})_bkb;&ZJFxL2>PlO<!T8&O(DRF9 z%M4#gs+*lSY;+#2ll5orNYAUlV}(xj`uk!Z)tKdGO)g(*)4EQghF8A4W@g)zE8*QN z<_&R4W<@sDa3nTXgS+G<Xex;hPLTmqD3{?qWvLA7Z_sIpXT388!;WzE-JzAgTpw=c zrUX{h3Kf_T2|wb)Z5+3v@21SYjTJy!vS!X9qR^As`Esrse}@X{tbe@-Mgfp}2eIB< zwFk8sCf;Gq)!^_`=TFyXfskI_;<)BmTHNz#eI8JIP3kv9`=?^Qeuzsyqm^lO1uV$| zRi<P7jl}rJLmq-wSPLvdGmhSlk8rrY^?mC-5k3<`Qj~J?!_U(Q^F+%8ju9nuNT*Hi z?0w7Y?xgD;yMBh_=-HaF2rN=|t3F;|RF*8@j@~7B9l{wxtAJzarT-vX!mO7h#Q3Lg z-K>9}w)hZemXKMOI*!*L*>BIL-GtBGE5-CCryEExPO8DfRD*m1ay)8xqt%ija@Y4s zjDmWC!YiJwY_UQCifTcnM;m!U)OY#b&0WRA?iYQZiB@pU?<3oN{ZDtC2!%%Jx1cJI zhx{^`ym9;zy~BkMBN?1lYahh{opyzs*V@w0kA`6IO~7u!vEs|*jmwqnYIY~(yJW8o zEO?EW{j?b%KEuuEh_NriXK+A9LD2<IfuWAsJw&3I-NPh#5MCr#9bW7YHjI+Q(8Uxj zDTkPog07k;rt74%07|fpSZ{f@zkMB`mHeAEdgQotq_Id$uK|~kdo;=8AK$)Ys=Bi4 zLJ#BtekVB2pmQPz2QSL(@1uIJ*n$EWRQFAePErq7(R5hAC2nQ=qj`c|<fTtRD&_P5 zp(_ox2RO+;7;?Fr_?N67N(@(-PlmTW-%&JZ;>-}MjL1OK+w>gKXFRYwg{Cvh?)^kg z?lZ1T$TT0ESZUoj#fEAk9dAhvC{AS&4-AWdlcLJu)x3xHNx7W+02D_8JDetBp!L9^ zVw~bj0Whc@JBWA{0Y`=&`LhyCRhP^QPv^}K5*P1>79S#SbTaEOQEIq*!#H?$L~dTj zIDyxt;Nq--f(^{Zmln_6wxX0d(|G1ljFnlTUynu)$uZy1YAF=R-fTW)@m*9$d?BCN z4<i>5#(k%*rsaW8F;AGS7m)|D+gTOkzRL#!^M&thhw~y9U1z^)8Lr+_+cH?*5dIQa z4<{zGI46zPF#@Mr+QrT|<{SJP4%t}Ruzop;1*B?UF^Gg};{8c1=q1R%_eeP0Fg7UT zNp*NI6hYl%SH^h@JxyaWDfcoW`(=UUFs2G>KDiW=Odz%c;`nSoT|c~Pv8TEzkU&&} z0^Sli0$2R#h_*gg2xFx91!P@8|F$;nYQjA9)XC<n<P4@Wz@IvUg`$mb9*)`YIoOtI zBwK@vZ0>2zFjaxUj{n&1PPNYj9~#n(ibPIoYw~LAcX$=?WamZ@-Ks#}O>PFK6StBf z$s6^DGVK!x*vbLZmVvcTMp4DYn^_B)t4;SGZlC6UU;~yZ!X9%lYi2ZxxtFD%7k=oa za09R!IR@atwP;~`cquQIyEGwF?;kUwim5goG$Nh#*UV5K!4SxDk?SL<$W3z@bKqoM zBFipsNSq-YdKldphvJG)7`%b%DK2g6x%ci~zmp@?(YHUBv!5<j5*K40p^|2T5*d|> z+nUgoRS*RJ*V%=3z5(61c!{;P!}@%1B!PNL`invPA~MUQE7FTGO}N5yjvXAmAv(uK zeWgVw+(&+LASmkjs|h^pJ#7XoCc$(SLlz~aq=EBQagk{3OG(yLK_-lM309B}$KT`_ zE06;-OCwu8oweKXc&c750Hm{iJOJof1C2m4-Y3KAX!9;wQ}3%GpfXO<f*w^n^ioQ8 z6x#w6drkz)n*w1D0y3Q=u@VxY`W?SZZg?s_!0}wH?b9AjM(_LP_})tktP+Nk#^<P! zbAbrSQNrVT-)UE>V&2b>ejzN3oLj55U|8X9Gzf5*F6qpK-Ppk~D-jyneK%<hftd5x z^*_Yk|BmAQe*+zu{?}bNx->H{_-A^fb3b7%t{~y0dC{(qHs%Q@{`GYV_eUa%r%W`< z?=5>~pN7jxmJ6#`o-sag6H`1<J9#Di`P<or&P1k7ABM~ZARUEstSfQbAcrYG$zXIO zk5+USV~>{6tGt?kbeA$5^=|rtis=fCGjHgORV!J=%%}uNH{o-h8|7b$`hJ^QYr9^6 z0Lz>?YCk_2H2{VrNU`~~wRxj~T^K=NiHN2|SpOKMd@5JYaKjRSn@oNUo4bQW?W}zV zgr%^pL6J@zQB@kxjg*t@1nm<@{=>CM;R5J77s9cF|Eo(MXf;ta0kM}V{AYJ0`5e>^ zX-7K^XC!Ykn1nd~ed3`o#uRrkZ={*OLtHy{*Of>7=p;NnFN?MtYW}V6g{L49bii}V zqwITm;9FjE-OM;0Ns22jdS`J8c})n2HUN`&p#*ez?l4VGM;$$KO6qHdB0H#N5VlmM zNO!48AD7~@B(~uoIpMasb^qj04CcLHE#ARKB)YGd!pD?kwa3_KPT6Cr@r@#Z#ZY#N zTF}~;P`#2XpDPA&JK$+yoG(R*4kw5@_#l3oox3;SmUGX!l5z}9b$xeogU~lq&dNPF zo$@$V*Q$lffzKyTpn3Lei)(w)Q3E{_M(xVJz9mJ$z3M(wwt_Zd6VP#5c)2-FD*geJ z%lk_UO2*-VWlzgO;4rWEWR!jL&4R3!5@)=~K9<DR=?%W9%}(YvFjFCQp<k@F$O@ZM z>8SY;+0RG-*e0O-R6C(qybJ>exnbr3(QK4Ohe2vD=J7C8xe2isTp?#*VT`8+9nC^N zOTGRFBH=e`4Ep!R6cgS3;&1r^h!UNHFdv)|`N3&wq#qM`Wa&mdYw5#ip!4jS9k9ah z=3)Uz-Yvi$$45}z!gK`Avpe8Dx37o=X~#^c98PmiE=%tBLx~@YI9`sHs%;^_FtT<u z25~8t0wA(#Ui3Nf0&D9|w+WLqT>V?OK<+{=L3i#;>l@y-{3R>;kKu5elb0BJro*dU zE(^b^t|Q<3U)Nq&1_?K7l@&yNcHx<d{A5s}=gx@wL(XCZb%X-18o!m_DQc&xAu7Yc z`$QHc22Ck-iP7*bHo+9XcKi9advQ>xPiGTIhX2u<PTA4(L`PY0C4t9H6ds$iOVFOc zWxvgK>E<O9SnOLNcD0qy<d9u$7_ikjjAnd;`|RF1R=?#|!@n*P#PK!+k)}Tr#+bJ7 zSfgXNz_WShE(tbZG*(BuKTSMoWoFl;itbuG?}9sh<Pr(Azl`*|Z3_l1N4eE+?2_<) zqZvS@Dr3OobbFfjQ3Ytdw+=-&8AfW;OKj|&qw4UgpvG?77VZ~$Hmiw!k!NJ=!RhAy z^IIj%ovVf^tsF_IU+aww9mkpfU?2amEBdQ3%narxVW1&tc9y@6#Q3Y=;-}XO)|pZ! zCar(I^9Sg!;qa-q%rCkQ0a#1+82O!H3-R74DX0<M92YG1SZXTH>z|saMbHGA(VlN) zvW;NOG-{3@g)`I6Q`zS0l*aYHrPzUCIO^^grI7@33!xC$a9?u6F*Z|nbq0~Zu6fMW z<x2DRbQQX<J*$TMC-RoXMZOaFV@)*^1g>wH*B&H0<O^ZQwlK!nlXrtx-+y`xP`czF z_CS*4C$lBBx%h=ftw~;k^BVZe^h|Lq%a;Evb#?Bp^YbnUjt@@8L+z*M>OHawjW!w? z@}K#5E!a<aUeWd$os50bGPkt57h$6XQ{;~|S6_t@?_fXu>l7@n!af*Mw|mQXLpVdZ zw)(~=Q~ue`rKCTd1W%QioTrl8qS~R#56N*#29cVo0hsD!s=$Z0SnMPvN(ahHXBCjc z6<OtMG;(i`IO%5#_(+<5b)Wp*m-Yd+6Oh7;tf>|EPm6<Z<0@=W6k<cxvRN6itL86b zW~M{>kb2G}*QlZwv_%%9HY>615*CmB%;TxD151{qnasyk=45fZa|5wG`O<$ZYl77{ zJI#09j3ZOhS0<l1a_*sT+tSi4r3ryQZ9;->N^7xzb}Sm(2aEy;p)z`SqK-~%QVG^) zl^N82Df=A0Lw$&Jq;a=hR|lZ~-ZUnpYwC76cRHApDv+I{)`&I~;LTs@rxtF%?hXOr zRry90Fo}z}^AzbTz6LLAu5|Cd-bjatoC-@&weuztE;pCreeIrYn@A^4=Cw*$x<}=b z(yWJ^=LZ7`$|r{rF$#>+=9a1|5mcBkwfr{;=ksP}JUToahN(j~qa0MlXxsWda6KqR z9M3FPqVFSe&wk5}eMG$fE-ERs;?%B7os3*hUoDiiT0(*ODkT3I^2t%V=oD!>?VDF- zv7|GaGkB8)g^VT+WI{>>#w^KWL%hOpuMux;T@y|b>q#{;1mU;0eydhBCMiwuM8cd4 zWD_$y;kk;52HJ4=-~?!_35Ozx3hRig50H9n5kj;nim?-DhgpKe3bNzr;e358c=XH7 zL*+cea;QU#VnF_L(8pp}P~bkf8t!8#;hfN&28`4D8V`Mi+Etj0l73x)U&aLR&*m%E z*cG*lx(tBFJ5t4223}8$-BH7vs$AI#d4UimBE*un#;fQ7kE))Vzw7Io(t9{xTt1Wy zrHmu9%vlEoYagJ)z<Pa2LF2tLX;4O#m!@p1mqsWV)x^B+ThO@j#gg!d#*p@+*%t*M z3a*sTpFo2tlL;euQ3L5WXA}2p{rJIX#nJ|R-Myr;ASM!N_<tU5a!ucr!`wDMeDZ8R zPI(vDQbeWj`J%iF47FE(W#9kP*(&GD1cmu;uas}<85sn7o=Hj2@X9TA=e47rF=Ts0 zslleEDbIdPV)&9K2}36<gvMqPZ74H(@GT#}YqY>ehE};EaIknyJ>?KTfdA}pa;RP7 zR%|?&<MfD*yrk|fFI9n|B-#mZUG(LsWyoZ^oWqJ{g(tRhHyGd>C55<TyWHxC_UT#V zlL;d7waO5SV8aSo@ZVtX$idOBqr-39vPqNtxNCCe08ayLZqpJ23$(4nHCbLCpEu!% zJ!2aWoqujfZ3;;6RtfAtr8OE;Bxe61cof8p3L#g~{r+8s9cmffp_$}k%e>Bh4wQ(j zu8l?3CG4qA)tx|8qFM!kEY_}~zgTm%7VGdT<Z#q;b7G1iVb;#qL*mvrhr+S-HV<+0 zXZ~0lT<jcx3C_OBb2?xU_L{}kBEP^!`<rz%Mt1)7quC$3(PF7*>p#T0|AvzN|G^)! zFmwKImu@KB@|RkJ?z&V1+BN*Bqv@5_O#0}=I__wyVRXND#LYjp9cQ6ZmHr>b-ho-L za0{}$wo%u%ZQHhO+qP}nwvD>BZQGpcj+mb5h<QElPkbliWbU=@qFh!77rDyJWWXRP z*rW$bVdps>oHd{Z4u>JD2HAdSAj*qcm_U6ptEPeQH75NzVW8lV6s8a+?M?wWgkDGK zK3(_U+SvBiG9B2I(yD)~am;T2k)t1A%P4=e(Oh)dJ`G}omltc}UQukwsn?bKm2UzO z4br>Xpr>QB$Ivwfr+QwK@b&IwGh>?ShJE1SjVMt#aV$R+KzbvYzh}=q^b&#lF1w%< zuy5kOZ!%I0XenGz-3-)w88^&v3tr-U1PBh4$<Lh6GZZu(-*C5pee2}<w#kha@FfWm zPi9>NBa-L+JB3WEAAF@l0zS5xO9)I!gU*=%H9q<LZFI693jE+lQcvje!X|QXe$g=% zRZ|<7^XHoM?}72K>4l1JTQ`NUZ-N%7kh#^ySWKih!h3>0F}rP2P?<0RP}UZ_FO*V& zW;ur6$EJuT;=8UrB~ncmk)S!H8rK1*#1(dnGiIk)%__nMcfJa3kF8l2HlGTa)Y@f2 zYR?Jl{nyR-rG)(VjKOdaRRRO0PgD)w3Jq}-SC&w%YboB=>W@Vtmuj1=VD-l@hr?OG z9xbU_Ap5<M=s9kry}YEztN%J}O{O3#r;d{iupl(vmZ^r~ck0Gj)!R!w30{q-n0z%{ zf-)12+wgM#VKFG*{D(iHL7f#}tXOk*mRQyWV3ZSGAmi>faQsq2I>5R#Z)Ag)ie@N2 zz@7<!H`SNz)4koyPH7FT;OtRL$<m(gpL#+F*sKkYZR4E}`7VTuh`7M<5>iwt=>pZS z+YL}duXs!>N)XAL<r%dhCIn@c7kJqd`pyC`!_yNZq8?mjXmq(RYd(d}NB;se268A7 zWPzRaw%m}~dqkQPHplVE;K7pJIs{4#2|pYl@4!r~h~{XZ<S65F-?EYDVZOKrV^9YP z=HFXZa?XLP=?iZS0O@=TVM&-!bzY6*=YC`q{}M!*&?@4kpt;&^HxA-xHi?b0>#yvz z3E3EN)ljffZAJfbpcOsJNT}vTO)WM@`m}kad7LLFE)hNKH$C93;KDj1oiI$69I|4@ z^d7hpDA=NDAq`W9AmN%P79n1SX%eo8hxw&{;ICRl(}MXiT%PYZdWx=Z9YqB#kg`+- z+SyC`x(_4O*B!7^BIVe&w}-5n1gkumsTF>W5juuqv&4RI15Jnua2KQ+W?j1))jhnn zr~|(ZuO=~Fg^EWQiP?t@S%5~)l_(&jb#>}D$9EX^FEh`IVhWF>H~G~i^=4LZs9pEB zXv+@3OlcE@n8MQGxlfX21@V~zx34EY-@b?!<0o_ThPhm4^<#xD<SAy#Zsy%W5jZ%M zRtpc+{+x@REDTMw{-z}R(n3ZTYi3OTv02$o1RIMM;PYWH$lbV}fP{W5X5;+J#)^05 zyI-zs3H_I7EUv=&!&j#wm`DRzgFU(*Dx2rjcI8!&YjWlp2=XfMa?ST?ROb{VEEok# zTproyHZ*8EYxEE{!{bR6_EH#ae5R8?DrR`W{8T;Y16_V=dwL=PV7Cdqp)xL$mb>hY z@5_CbLPKnr4+^znB|KtHKrUJCGh0>ABzq~m7$l29wpU08P$uf_!gCMb04s^Wp-ZrG zF9NFUH{WAZlUu1m-?patT6O0}9O?G~(@vX3p&ViXh6EOKx%5*)qk^n4TunpnE4CZz zFK6*VkM!aQ^YH-K;g30;`UTli19aVKi>|;`;D30Q{~Idpzmn<yWyI!S{69@>Q<1>M zSZt9wiQ?F>rVrMH>l;BfYwS8Pe@Zn;r16K-s3PZ)WGM2FX5agi@nj_7+L8$mJ^hw{ znk{GrF8PN~HGobZ8C0<CdonaN4CKs;&Z<eu{PPdx)FEwWeEI`;i@VIzo-pl;d`#0g zEhGVAwFt=%%%<Ydo{Cifo*zM<m3Nqm=Y(g%(lIrI$f4CR#o!Gqdi5D;nztBY*Tfbe z-*&^n4hq5j_1)}^2J~k62e6o&ls!3QOe?9H?e4Y`#U38z;GJ!Mfy|}TM?EU6fuF4- z99N0))~VW5IwAbdBd2UXx!hrcA>3$TrUjFA#N{XDq>YM-?B)$YL0))f`)793o!RmJ zWHIggRYO(owm{~#mNQzzS7!i5kqDD_(nSJt2o@N$*SI;W#3@?ZX&Koou4%~{?Jgwr z(Uody#<B4ttowiJjYPv_wulClhvcni2vqeuVcuF2vp~?6smlQ7mrIxE(k|-4S^FxU zzI;dIV3BJ?gE%q9wdBFP<u6}Aa_MA>E-1YTrYyJ-s@~7<ZN-Aq<#RYX>O0^$Hbu1X z%QLH%^ag1ieHFcJD!PZeZnFsZom57g>b%`YkFpNXTz2X6pCwi%_b(v&@LSU`Fz;Ep zo5S)mQx@cyaH!(^46wpV1us_Ba;4YJZ~>?Zi3M?+a@IR-B&h$}!D(k*ShXq;P|3!( z8Rdc2GN6I>P-%-?(6GV>R-#YXQIaBUD?~9fNCrr`@qqLQN(xVVL~=1Rv)8a9AWB;k zW)>fbZ^^x3yW;Aq;3!z{IZm~6e(i1B+N0w*mKU@8&swloRLA+dI-*~62u|k_@L`H+ z6)5ycK=U!}^1Qw7cVnUiBY;i6{nN7`%-T4>G_I3I6h8gorRZ$b!Z38Wz*Tn1R|Fdx zSFi|DFb}w$+14uhCz?JAUq~QVb*!afbhUc^(u2UqtHVQUKI&(gBDdN$Z5A4Qyse5k zUex8Np?gyeF_JvW>(CmdS_!BQ8yaI{x;!(V;B1;L=;`9?Y<|YuHZD*a_O`C}3AUBK z4jn8v)QxaYnqaQ-3?mn$U|bA!t@>q#s*cJDMJZvsP9>BFz3T`0?L-W%X!6Up>@NiB z$=3h7BbpAnw0Q>Z=vjuDS%YN-2u9n2bWJ8O`dUr}KcOeS8S)6|4PzR=98_narP}ih zfGCmG#_A)ae4|M7<_C4ZV-X04Q2Hw3bT=c0+%e>SlyKggy)@yEtJ#re&OE3OXMy={ z6geRO@lUyY5X><{nGq_(1h|d=N=ZGM6T2;e(;Zvk7LAEsDi@=NO5#NYJxgyPVy6EV zPBU&yH<(swPP8bQv0*JjH&zS|R%$*-YI_ShG{>z72PN;0jKxROVSjH$Ue`f9(HB(- zD-E3X;nM+aJSChI)hyGK-iN0kF_GSp1QcDE+4<O<il6nh#pwhdDJiIS9wZ(UD57Mm zvo1y|Abnm$!>mRb+Z^2rD-Ex5(Z@6faQSWq&;?>h$-jc)OdNIz47+QX9Mz<eyu?A! zhJ19QOC-g(k^&^MV8HxNju_x;!b-P>9`(b@AR`}XJ2qQ64&ik>><Wt!4xI{buob1G zEOe&EtI*xa46QRx6rzQ4E&Hd~O7)~8No;T6Ski@(;C2FAS4LtkLm+9R!1sCJ@W2M; zmGKOF!1**E&OsWsGmalqFT)pP7b!Eb{((XP;L(9^3{<vcft5TveuNHun?iad=)Q4l z9azLJgh`0I+6NQfh>?N>1<RbB5W?@O3IA@SlDegs=8TsfDjx&4O#$IgqK$tJ+WNk8 z`~1BMn+boX$6G*wh6L)c8Az~74%@qug^gP3tSpbaFrs_$7P3w=x_B~7RrfDu;?U+Q zsYlMm{?AWVXm=xbpr>+|QDOY2?7Y}ke>=>^XM<TTyp~W>dD+C+C-e_60=L_rU-(Lv zaRsGdFPosrqTFmR7O1#{vl%c$yRRB+nD<<ztoJf6^uTtPY`23&sYr(OOA6jOwBZ5R zi%och=ccC)u*lM)kgAwV5DzDsMfOtFklUSqvZl(}0)z`~o2u4VPyoeefjig69e1MJ zL5&zJhD#a&dg?X#Df<?fi12Dhu`mKd2FvEhk-Dc_H~%}D0U)oJHEt2pSEiSScGtI~ z&n<zPoND6cGtE77f^BD=jl~!Ii)cmWE$Vx6*p94!7tC@~`PtYjkwUN{c8MDN;rO6{ z0s7rU5PH3ovLObMo+I7;Ml`KgCz!_8u^cZrEIT(4b~0DDg8Oak4oKpf$*7uOcIZhb z;$QCTEHx}~8CpDpPJwbwJ7oat3%3J~27_E3$gwoBS&B{Uja|VCJ`j6TAhB5{XGqp~ zM&VW<;+7XfI0JY%n%uXsumRW6!sDF2nOP1E-`PukHEJK`ZHq<fbGoxg;FX3z?9wsm z&u=>g{fT`ZVA^<dt*aJJO(%CaN85H*e?hxR%~eKjAZ1LcYG48%EBJn8=JP)V$&HLk zv4P?S%l@P%>A-JiA1t85*i?l!n`ln?>JGT6(aBj$KIO+#OWq_jT>iC2AXpw(R@BD= ze2^nyc?x9`_T&nRUjG@9pok$DcG>voKP5ux9Qh7ffYd@VSxk(^z@8MmvWZfLyGVlE zwG_^m1Tms#xC%5!!c_Wtlr!~!PvOZ(B-{HGJJ|G_ei{<cB*y*Iawj)msUSm0udpo` zWx;b&0x=0Cyd|*^ujyfL&XNe0BA*Jdc9fSZ&;x|MEwLbKrZ7aI12D?C-m%~`mRvH| znwsAAXf0Ni*3c8qh=2eFO36>{?d*e$A8r|qE2Q}%y@jmJACuWWc%0+X1#=hz4FNLI z1HLU%j(nfNKdHHc$VS)l6C=%G;#S^hD|rPzpyeI?%_3PZH{j$q=CT4K@|T#sv=8!( zg)p-l4BpY#H(z+4M}%=9pGS?01Bm)ouvMq;tW%0Y5npD5$V6)#@+k*1E%|&9iv77t z3#Uwu5QO%1$IO-C<yCw|Ura^O0&q;!t9A8FF-TK4-20=FsqUjm83grf16A_iXm;eH zJlHQVMnI4;*I~p0q7>BivEYn`e<s1hp#8A-`F1csfIOw5L4s4)6Ne_+Y54|lmSTOK zgzWvS>s)-9>JZ`y>d&^x;#_V<+F7_U$@_5r9m&s@#_;Y6cAu7RLv8Co6G<svZM!Et zH?_wfe3o>mju!E$7ZV5xVHIt)Qf@CiPy?SKa|D^Rks^N7rw~?FeDp26`F~~Sr59pq zErQ)$VN{|nluU6{-qLscp_^G#5Rs)=Q5Nq5!C8WzwpmRa`W^?-!7CO4?BoZy2=aa_ zqXQDCToZ}+pXl1<qsnPx_Bk=RvoNzD^L&v~G%85N>Ju%`(>|_gGG&1jhVq`kmW28@ zU7yZ+(iLp)Cg)~UnzQAbw1U+moMI#BMIkjKEY$L-C3k9o83G*35s?27L;pL9Hv`lE z+Bz}+pG%+B*{9$cHRg5)aD2KGIY0H68ST{@NRiW?_-GV!87{wKI#3ywe3Y(jpOH_r zrIF+_wJ16sNR25JF#mC6*f{j&GnGlXpNf>^kofu)Ik|rw;T0NI=aT1(t?!>!4cyph zP+uk{F6vgw4SpKKh+MahHHvZ*q)M(Vcvn3&E{Mz@n^AGhI_`~F26UsFIB2fUA2_eZ zvr83=6|_D(;T+0qX#mP=*omWD(MW)W8Wtg71C_Bsyg6Wca#@^0XQb7RzOIcJBlV8c zYIUWj#Z*cOJBALRuNQ1M_V6nxJC1;sfSr<J7KYJ>XhIUZwiB0_WQD^f`j))P(bUGy zjc^J@$#k@L14IEluqM`t!t<o@gVz)*s{yvHa}K0q;}+t=X=o<}p-l4FbWmf3;rf_4 zU2x08BuIzQ1j7{}E<x^A>7HOxIv9l18|JAH;S;iTgB_Hjpzo@udmoB?j;sI#^prQt zWGdbmdo_((qK_K*yqgVqOS`2Ua}v<!-i_bz+(orf?!p?dVMQb6+ChB5HF+;MM}ds- z4a;=}ncNyj*0Y`bsAd;>QWF`+P*5x%do*c><AK}Mr{&fKuh9z|n9bX%LphoRg0y(9 zaDLjcq>GJ2u}sm`H+lOi;9=5Z>tC_)s)Cv?3@lIr%Ga`ga|MWK)UA@{0_lXu8*M9r zk~xbr*0x$Eb}^yr+J4JY^*2Vn$hHueVLD!R3WcfjZ|z|^z7uaO5!Zi19?NZWM#2Wg zv}#nYEAl?594E*$82YkdA3S6v2RLt~Lng|9M(NbA#>WXv63Njz&)pj<7Br~UDw+vY z55f+xG6mhZzCO&OV!t<#^`XrY6Cavz!aP-_2zf30J~!Pz^28Nqq7#<1=<%fb@jA05 z=^?!Y`>9=@Q8?cjXixD{OFp6~2K>&&%vycZ?97Yu3C!rsX2i`>mI(XQWoc=PdP3kv z`q2-GjzY;<C%}p*_99ceW<|Gch5LT@$0&lHpK)FkM=5|aItPz}Y7V>xdA6PT!wWqD zvPku~vjy<V+zc;_NrAeLoXqidaO!QP3$yuV7}fS=^7emWkmA`}GVPbr&FMHwZ=4&! z=^P(1TRS$1t2LjsA<w#A_X<bP^`P9W6|m>|=RnDQGPQ&Rm4#eE&lhmT+K-;%yXA%| z3bJCqk*9b4SoUCH&#W*U?Km62{8JAd&OF?Ak}`BE?JEjk*3*O`_~sw+(JtJ*00Jx{ z**_JfM6R22!3$sfa7Fe>$ld<p!?%eexwQ!`+<5~v;&lIjahYm*2MQ;*IVS|FN&E3W z<B`?cSoLnCjVL_RO;*%@1(1;QV&xTQU_L)Ey0t!#fGv#4Yd@x;)n<<_L=F6^`S<yd zO}m;Z1N|;EfdW+Pw}}32l<{+Y3ycnR8+RS40yeeoQq~OnM)we$i$Q|&(0@-r8FHsN zpp#>XYwFW-v$=@oy1^}0<t&v|sfKEyI!b)vPP=q!f~;6`u=r-n#^3_?2O!;NF-E;` zTN)Kw>{Ia1WJ)K6yXQs9?3mdiuga6+uXg?FlryW^D-o^+{CGjcDMjWB$!16`IP8*4 zPXonkE`79AFy0bz`y<R5Dk9*BkRsFGLKyp<ntdvXKejj8KFCZl49vKw1(EavtLLSO zdDn6oQ^o_S{(XeKdb;Vv$4t*Wm$(S~QWNtFaHaCllodf{UyrONvBp1R0XsE%v6SO* z;arq970Bx1mY3SirKLK(>wIizO%KG*>F@ILj~6=LbLODtKXXu3SW%)QJA<y;uX$*T zX*_#pX#P3|va{B?Zt!$RvI{PF5bWgvz;Ot>AtnL#vivFgXOd{8R!ecw!V%2PkfIke zrs#Px>p4CJoC3_8bWU3kHJupt2mjVyxJ=?v{P6Eu1+CxpE|i=FC(ID4@11I+-Vpii z?H33dVVkM&AvMK{@*nBx6C9l%`54@QCr8$o&6Jw*Qy;s~qNJ-iLxG;DP1iv@wSV?D zI}&9tnjF&M*2!8rK)3vY+2FXAP?_;pk+H$iP<w?9x~0=Dfa?^3$;s<J!y3Glou{?S zRNZAT$f?HV1Bx?Q9HXLC!^>-Fz|wTZpTXw<u3xDX?Nm7=XUHk4BBce@;%%_ALhm`j zTA^1f*EX<Y89%>b&d}8s=LL6V*{p7i<Bk>e1mJ99zm{5K><To3x8Ba6!^vqS1!)d) zA~%p!+#d7!KiGWGLcRzFdedVzg`N1>iN=+<Nt`UWMzKOHzkHTXZKQQD1L_Vr7F>YM zw}d${MP}O8>0kkV=X<EIn4MXy(_abon!_$6s*`<<oApqF3p^2TBF2<F$~k1BIhgkL z-n5B+SS)r2&&mfm`SRiO(hms-6W3d+{AucZz^pf3xB*28oq=&+EI;_2$*QBv9o+XH ziMGTo<p!_Zo`HHa$zksj%-az<U_t;{Gw|RBIV7F$-0viOt;$wB4cKOTdN3J?+id!X z-avIJ=BhzlDS^`mOu|x`M)U3rc|jMOrCzG^adp~UJ?6MWR8EI=aTa)GHB_H#<={11 z+TT$YbJw*|FUOJHYA4E&M?C|*Y>BRRkTvdSu>!-%1tr~j#IGZZ%+2Ck7}v{CQSam9 zJ~aJKKExA-<YTBHDh})Bkyp-2lBO})2sz}W=JZR}xxGD}WP@pFLr4zpj7<$C7g4{! zUy5(lq${BK_Hs@_?bVB>1n2Q;`U-Ku-+26qv}W(o8GUYILDAjc*=1)vxOANk4W9L5 zp$HzfWMb*#lgwH4|1P&;W;hzVh9(S<DlpCmunwEevigY}u*)>sEY2PRN9xAy?gF5U ze`@0i6a8f{^<orYLcP7%f}>H^52PKa>9~$8Pi8yt)haNbWc&n{2x3+ac+2GUP_Rt6 zL2%AweP9BQsbO~7!4MA3Hr@n(=B$UINC3QEd{JlkG~fL_+n{-;OAwCaR$Np(*x0c7 z0Zo;RlWrvpVE)#_AeD~m1~7lKRrI~JGoHWXep2&?g0%(ZsC;buDFF&XsLiTpPy$xK zMr=i(9j*z5s&8+DLvd6fo!wO-#y%s;93^aTM4=gF?H*^b$@OW<A9M~P@@f%K;>jN< z8oL2Uu?G&j@Zq-W<7B6SjCWNzA!L<2jVffAJdiZDqh9dhat-ugHH={Tdh=@&(*So5 zF(bW7)#3<TF+Sc1IbGEoCX6W#oCC;8rz2Mo0UoFU{D)Zg-%z;!l|J<UcdTPzVEG?^ z7yl#P&}u`s$yq2F6II}VM<B_GqxEcFq-^pw^KDj5@FiP`;Et5xt(c8kL<UV@&#H&K zL)=Tm{rW|#mkb)p`5dh;0#^`8Z%LtlVa6Uz{uNuLh$hAzmQaQntos%!WY?=fG(B<^ zTc$&!H?Cfo9N`v6S$`o`^>e2?B91l4u`v@Jd1%rnd9S`!h>tWpKff4R0D?N$NtC%h zPSEf~cM2cJGFXRK$Y@l|@!ACUqQbb6Q6sffKRjlB0I`?^YbF-fKbgzx16AV3c66|^ zBJ^JC;g>1ZhMMptKVbJ&Il2hvd*F1#waBls>9p=1X3`D-A6@|L%Kv(G(1+8!(mwR- z2Eb%=NHX3?3p9H!shyJdLb=sLlHAAG`q2eg!5&EE(FGri2^;`@iGAjf*J?_!{Ost} zGZZptz`#&kdNQPAE*;8sa?8lm7%oooH491rXuQf0aJRdsXbhR$WV`z2?w0(E8ovF4 zS0f%T#@+QV#s=8U#rBXdu+MdDcg4^l@nSNfmbT?py(U0*?=THaX&K2&BT6CrcR#~L zUG@7nR_pTLdXG%LjIq&hmCy%kc(!cX#C{imH&)M-<$4^GDqT)_)K`ZGS_f=oY?qs@ z2xQ&ZNpwxw=)TwaP+4+6FUX|a)<Sc|2BKj$Z-do?##tcW8xsV3+;VqN_L?g}CJa8S z2bx*&g8J#*e#!KmHzp}O=-~hr?d!6!!5pvJ)I;MGZ(dC;V*GSOGx;^G+i)gw$ypaB zqGjho$~f&vy+QA@ZvBj$dYi!MceYi577M(1vKQ6HY}QBIK4nr=L1G?LmUfw{S>U|p zK!tn*#O1#Fn#8|&PaXKhrErwR)TqKGtEYtn&zP$98acl;M~OGk7%bhg`xt#SIW)KF zfR4A|0cojjFJEARuS{muN%++?p)s-CLEigWj8;krSuVuWCxQX=VplY+9H{hlpY{n5 z%o3qNM|GCafyM=U8L&*Fdlm!F5^sLSH;h0<L`8qYcY<iMWGKbf6!e^{wk}}MM=hT( z6W>zCDQU<yDjW#npR*3#DP2?kT8OJ)&gMC0X5)ADsebu4Z?R1h%MF7XTlOsp!OAQG zhOJ?0Jb_!WuOR_}&*dZm0h|)b?Z4MIlF``C^M0kLB>pK77sX5pkto=~ShvX%*J6j7 z-zU^-e3sN=;r_THPg&EphvYt^?Sp8stp-lkyA5e6jH_aS+qL#v0P3Ua5+cj&z!^$a zn##p=u`<50kL_n`MpZna0k>K4&!V6%@q?-@Wvo&IiwNYitu6GgS0i@n!IUH_z-#Rb z6#?Q3=NUYTLe2z*Pf1!2J(9<l<F2M(>5wMGrTa>vL11~zsl76}Tx7^KXQk9;xZT6E z;re~AZ4va~&jzTU^PCn2@~tK)4leM{R>gRQW@J0{L+aIf!zFED2Rh;N^udBbt2_p= zhH~@qL3Vx0?M}vtiC_TUA-&0yb;_VB??-!+bM?>IE1l|ZrO76?qj+7!XHYeZ$<cM+ zA;T-qo9n{A7GcyS$^QR-=GguliYp@{)BjVVF#k`r-+z=1Fg|dJxPDxQo!pVd<lf>+ zq;Rk6V-v7y>i}mb_CJFInJfJPymzm%vog1=W5(lVPF-@alB6>-qokwKEBekWLt?Nf zARm%Lk{|(DD*;SeLRn6nAL>lJmF6NiL=!RdJp~G84M`n2$wZytfs>Z;vas)$^=wog z^7i)nVAl{0ms5Wv^M|X4l(wm<nRbA6j2AeC!pFPq#}aYrD%ju8+ys7of2V=hCI7wF zmOs?;OyXZcLabwK)?5GE9rN$&e|K?ogNLN9wbv}JrP1Tks^SBp_Z?>+f;L@OjQ763 z=P_s%ZFuR3ZUYiSEe<%jxU$L41WZUa_U#>_sjMy<x$?C!f3**m=jz}K7f>hMDtoc| zx79MF@<hxDgZEEPI*E`FN#ate_y>DxFQ}I7ahu<5E0oVe1sE*$tG2X$!}A6LCRgO# zcg?GeBuB(LZCCld%ohm(*fZC6XA)a*+SDZisD~mG3W$PuXTWTmR4A>J#{PV?JAS;h zQ$OWid!5((OttBll>g4}k7CiF-W(Q*B{Xe$CB1J7Goh+7kWcrjp~*ifqWw79PY6`M z1LG4;16wRg#|p-mNj$=@YG4$V9^6seCHWj*;k$6O6D{Y^8(AW<!-r#x4JW5Zg+mtq zH!Y%eNKYxn)%jtM8LH$hU0x|9^SZWH5Ijb97`=kIBA^wMKpzVDp$M69GEk$AP0<n2 z;!CUzz?Ju@vWqBM<v?pldiavHckF#5=NjHQA^>Zu1mItk!+;Uy`h^pMSBc4ib481~ z1f}5hU+4kPOvp>sqZ|X%>!BdDXDd)mqV1J;7a7;NJuy#|Cc6a{1L_<u4QGK8?tNnh zf~@3JoCk9AO$$#ONaX~Y&a%ph6tThhdXGKbZ`@dU-PTu={?M=Nd!{QyJA6CZ!0IF! zwBcvJ>#N*x2tw;OIzMBLZbt9bC00W<)3c>tC6;%xa8DV0L*)#}6VwHC<cX7rg(T^> zy;pfozG_4VWp-Z;o8r@V>YFf6HFql>Kz$Tqxjn*Thbj@REIBUKB?wrM>Y^oB7?&g$ z-7#9VO3WsSV<q5X<3(5JJtK^X>y;PMI4S2pS|0cV;Y%-_yc>St@&877aV3#`MDKR+ z<w*!VU}<Ft49nl|_UZ2knX^BQM*i+(ccUJ<H9)_$)ed2n#FG=UYW0jX;flOBb|?ud z6o%CsndKAs$<zLh;$?Q`z5}#hn<74vq3x^)n+Q2>^n&T2&@&RuMib@`i>vGhF3QdA zW(a2oG1=#x?+oN!`kp+Za`7dOQo@^Wz8)-`e=nq+*QCzTT|ur~Iid3&q%hNP{njPF z_<*}6alZQuO81j#gpF_e|E~Ie{~X;0r0k3wS<P!8ahB9w(5OkzpXX#sO0K644<DlW zvs^!Y*Nh!&M~cUg#VDEox}QYzR1+N3a%w*K_Mm}X=zo^sU}}nE_`1)TQr^n=L%a%Z zh_3ZWwJFPFWmHe!*K2I61{g<NnZ_Io5VR<c1PhD)^$%_i*nr4aHVTGV&)bhJH1NV| zLr%77GsgO?w9>VS#@J=@gQb;WSX3@LpURg5?+2K{qksHj$(JaDhE_f#vUX5v{2+8S zrasELJ44E_5&=dE84(%j-UUyZk(~HbkeK!oqL>p>;|Ou=&p)yKAg&Y4NJ**tN%D`h zjCBYkvo8~^M0QvKY24QhVSCe*m??ghqOMb;BAUH)4)0|IApI8$^UTFIGctdR3rCl; zvC(d}{SYg>1i5hpVe2ZN&ekLH7qupniOwIIA6|pxvHbiTu3zW<P3bb|7=w>Qw|OA+ zr%^Fi>|;#ZS<U<D(VqTokaGP)byu=<_6UuegtP2-=Aq;$W2fQ%Eq<*ug`*x_jCfC^ z8<KX`;eF>QkQlD%PdNM==u)|PJ5ZCWPA>NnyM|Ilda9Q<_@RLpBfyay1V7z+XT2@F zl#XzjFkQQm-+-I#KN%vu5}&!Mkaal6;dQg}9O+*JMW5J6B>{c&GA@v2O7HH+Lxruf zj?qm2QLa9?QD}SrDrv?8RlS7m>{kaXEDMg!p$=F9yrN(pl8icw&u~(=&t~qQy*VxN z3!Z#&FXoR1yloZN?tPsiIyLT%YLPyww$P*{hxA@T+Dy5Bi281d0CUfFc(`R?<0!NM zoxzWJNp;;iCEwJDK%WzOpDV+f@=e>!s?22y0h8>pMjKP^D(s2Z?Fh7{Neb#OTlo)# ztIfrdnGKBzca;ph(Of(%6}MNRMLId-pXK;v6`BF~e0Zuiza})ls(|Xg=UmOCEQN-^ zsbCFR8H&|W?q~}6QxQmb+ovdZOW6En#6c3w(FUx<En>?7qEA}ac?0aTUvetXCn66h zt+UwnuU>fJsu%~&eB$^uaWVwJ1ZIc4_{n#tNhpKwU@JYDJFt;ab`itJhT(^D7<Ge1 zs*|Uz*ix2AGWn9<wJsYC^5G?T$KRHS7j*B~^Zc*Bv}$>q_nP_y%S4|eH*~y1%I>#& zLnV8^=s=MFnoP1j)|N`(*!4nES`!N^QX~1U-Y3RUmVp;k@32jWyY=U`rqh#y`}Axh ziMEsi>GtzsH-SZd`X9BeWBBf$VZuMrKMrsMIIrhbSq>o^PKq6@u<)qC`u2D`RXaKe ze<=N4(34dpk(2cDO+1lznN{y+U{=kgE*<1L2cq|#J62o=9{}?10PG5-BI4jM9w8$& z64FSn1I@|95u}A1bnV198z7B&Ie=#bzu8p`ScU!qN$5K@7=?jN`=XHp;8TX_>PJq8 zozVGD&1+lq@|osxE5(`2y^Y;GeOR|TPS7-6y9No2E{7C>o+BI$?A5nkeS9=+v{j#h z`xt#6_alVg<$s)BYmD|+u;k#3;Oev#Re!$rh_?f*2EeH;U1GP7N=~Qr^+^YLD(i9e zRz=KB?N2kJg^)~yF&qm^j3xhtJ`7Pbo#v@|)rLyE<y7ODX=X?LHA$rlin>1KtOcuQ zP!Q8)zO72Z&hgWYHR^stnzvrUAZM>+h9hPho(@@a21<VhkJ=Fi-{)6;ih)kxcUO)$ zR;jv6-||#1dYo|_d8Nvh6$#earD_2pN;Y|@<$>;7W2W5&NiOJ<_it(7YM4oi5D4UM z1I$@9VpbyAVSuGyXA+97Qo-_fxeR^hR$*kqnZd>XVn$%iQm7^oFbO!omXx_x27p0e zR9ww5svLwxV@-ILB6bvyxUQ`AM7hY%a}~dYwURHE?HJE0v{yvXn-G{{&NU2wN_+7F z&LzR0A>;iIG4Q{mIR7gyq)lwioXznW8QK5G#PL7IKy1`hD8{BBz!D{_goOT~=m0i& z+^O&vP-l8T?GHTAJ4bTPT<R{sO_V{?0&UG%FhE<1xK)vU?&-GdP&^P@EJ84Mc?zba z6H~<)?b>eVr^Os`qPcH<Fe%>#A%$(}t0ws9!@XzcauZ<oshZ+M4Bh2Wf?<u>h3R&b zv@wi))~Kc|%7$t8z_d>wN!oZ2(5?`@F$7%U9~6P_+Zn4HKC-14^D?Y>nkv??akblp z?mRQKx86<ZM3t6P@8iIV95TM@xZVYWgV+!em*X|JtZ()5BRj+9)US*LX79Opnmef9 zrqvH-#f`8w!Ib^tgmhI#@YD?Ea<4sRwX;t|kp-`0l|~^v=w2y<Z?RaVp!S8$o_>NA zxi18lYgDkdP+0)9F8a2+O>z$KznO0IHWt`*f0Eh#dO|LfZ*&WeBOBn`*qt#DL`tLB zbG&+U-4-A&oDiEVJ5BF|ZjVYSexr1fd-RTBWeAw;dxpv+5{{@Tm!mk1bv7Uh#gb72 zDAAOw^!@_LRsvSHqefbXYaIPDn8x|x>>Akx;HKi@*RXTq(CRK6dv)^<5(Bs%L$fqj ztt^Vk63y@W>?h6<y2I2>rMm>vlJd}56lDvmVVMQM%9#ffz`TVL0ncNevAi+loM}*# z4KO~oM%5(_3m{urIbzk-K;L2wpPI)d=1X1h9MBo8CQ58060Y_>y@8k2`~s&=wKzGa zVDoGf50#l0B#+(bzdUN(6W-9i_QSR4k5R?ltD;)}c~_$G^KI1xlV|t;+elfAB%UOX zlok|Eo3SIu8rC%~p8o?DMTXi`u#m6)HGp~+>dKiUgq3(&q<E<ai7$eF$Jh7{mT%kG zu7;hM-YEhAudRF=?*OLi;2y`acY0P;U)4*?^jFM>;Sp;pddLnn?JnD+GRt~tSAH3z z%j6~@vNsdl4U!EOJAR+k;hI@hwmSf#skxVhHRTw%|1<f$_mTaq{D}9>{!^!C*nc&v z^@=}#xhg$V&b`gJ-S=_O?g%*x1mt$$7xDJ(*O{PF9|9D`t~-E{XJ&EkMzh#JaYuts zB!^K>W|!QdK504(fUQ+SK$R*(OltNgVXJt+EHNULujyT#(2<M#7-3I*I#`od0G%wZ zVm}_hBQW@z0{TLj&o}>XF=4VtKR=U?Lw({t$qHrIthK1Dm3uLqZ&`iz0BT<&u*nJJ zp5IhFQ7elm%cCA?Nu7Fd#Wz;RE3GuzRz-lKqb`dCL{qq;0PClhjNB!Gl&TsnXldi2 zb5r>y(v9~Ewf%N5#solBaK~NPlizT6`@?lfaINGYy2EyAr!Y7EPF_7AJ-HSp)biqy zsJq@v=E3+*i*xX|gc%XT1f?}2`<^m<yv+u7@px{7GTuX7{l~q%>a<{NSbN<sh%?f6 zw8W?iaq<(3B{Mc++`~vDT{8!9ve~3B=82jP8=y=|Bo08d&cbI65Gv*C#|8P9U5H7< zqgEx%CLN;ggUu_|zWS~3F7nLFo2D#x%+m5r{&;$Ei}rX#eH=IVeJP??H8?J;oRptt zF2wkr3)^Ar+e2b9<k3&oz{1MKN75TxCVnqfPfA_f^h}5x#3eRB!`>AXmMt3Tyo35< z%D|QMd8ODl72QO;EUd>wy%4O!8iR6@cM=$vw?m67DlAhW2qkQ$x~k=sjW1j8CWoPP z@rJvXNQ)^YQ0kIH8HZW3z+f|Lu60Y7VUF>9+bUG+zV_qXaK?l-$Q2)R^C%p9u|PgB zp>tK~zEo0CH;Yo#=AKPo#l-mdf9}*G7$vy&nku4S$wFKZ2T`Tn(l%=!&9=4U<+vD- zXN{6pqy2(cSL#`6jKyh_va~|y8p?r;t;gUu!xj+4s5RR$l0!ef$8_wY#cN4&0bmXs zN=-(4G&hF1q{{K337k)ur-l>uY6OSoC)r{Q*5%ZankfsUqR45_ZBbD;VH^?`|D2PO z^aQQ+OHwYeC{)A-P@IgvK-))<$pC)5!%V&_Jxqly$KL<0wRUnb<A<M!)h%zhT3KAB zXntnb{YjF|N!+L^NQfIa99(%X3Rxcm|E)b%nlto{S?A>B0sSXJUaUtK;{PB7(>M1k zav=7lWBZYbL~Gzp8DREZwj+%Q&S9&A?|&~bzf!-_*`%8Ua$1PN!orJdOF$gUPutQ5 z*}~H}b+MQ70-I4{)+HUy|0eO4hZ4SF+`?o!6UHWrVY+u~*2IstV>g1QJ3euikNWQO zo(V$Ot%$j%)zy#I=W)!!oi~~KG<e(E&rh*Ut(Hx4Q1pVJbO`yjt_d6mo${3WYi$}{ zE%DfGJkf~iHEpQDa6V|!t{pwbr|@O{#Uz@A@CTb%q=h+tW0Ibpm|j-@a@z*~b}$fP z_snDC9)qI-iA-hFfNIaAPxw)e4x<;2U6;t!x-b3naX1Z7GHkCpVtuBgI5s?jZs4gb zTpXx`*&HazsLW3z7mk-pI^3&2RZ27ANC?QV0qqj1fk96vRDG&4b;Ud+{$~8uo;ch# zsEDK3mFvUJHx7JV+#ZUbL2z1%$%?W$7>Ya&iy5hD$a<vLt`QMHj?!sVm;@++{O0S} z1;kw(g{nLkNJIMoraKh)sJ-21byn}8%^zuCV16s4t5uT>MJCx50z+P#1OnAkzc6>+ zu}c<w+V3cr@YvJUYe00p4MJ8?MBF6+X<kh0%;<rb`CLr*<yp5Q<<NlW;KT;_J~>1n zF+Q~(;I~^<mV<;XbFt@jv583S!dIuLpTGG4XApDhbP*>EH%=#YJU+SwrcECN|BF5; zmytKgn?7Xjzv0+i73<z@%8T7tltKBioo4fZMNXAbpzqu@eK`+DanWBBv)5K3Z>GwX zjpAf>u`;zvf(<+D!1(d^b;@{e8?jyLIf?A*!oeJ4Wp{mI_m33*o~^f=>mT#**Qc}b zQ^!khH@c}j0oh$>(|hgwuC#o?b%yK<_YL$UHMe#BeU`p0w0re=0-KLBi)DBB`>JaV z1E0&H>CrsY9{3H|GUyX`qS8;=cSlID<3Dc|9R`JK+BP!(Ay)l26yX28MEIX_jQ?07 zfb;RmjqR29_x(cm1joPS2{}XeLziC+7dn1H4G=-nAAJ8Itkl6orSy7f++gEw_+rR{ z2l3I|QLd>i43ZN?dD#7yMlO?;;;04>F^{bS(xHa#Md+C;Jb#|0LSi3qlBD3SN9Gd` zQb>kqT8ro%n0p2&y<QFU5kyid-Hx7JHpuEWBRJ=ey8{i4A;5f6<>El`V_$b(GXVIk zC9^&P_%^)OG5sd*5gDz-Avy_j$OPTjEcyw-Gu}%$OKHgVhjn6|n-SCGuI-RMKsK4m z8jqT$j%8M6s2VK8Z7Xuw?3Zk4<~=JX3I$)EGpnC^+VLRx8l5OuJVudIkZardyxpZN z5;6hS%Uoit#k_gKT6|D>Z|*?Qk4$t8#p{I{@buGf|I{7kc_`Y%4oiYwkIsl(f5mjZ z8Mtqa<3?KYbi)j8MH-el11sWVcJZ9+o8j&^<4K>QAUQ5eR@DIB7eX1DNz&mu3Ms>% zv>Z<hIbpes*o7rEAvrY`9Wd6{SxE$-Ak{!F{!ZTb3$wHAF+_R8T5yzNnw*5s$)Ee} z=J3K>0;vP9wj$asH2}R|%Yw5#3bF___f?AHFOJt#UM}oQy*Svh7&zeJTUTu>)szeZ zg$W2;&L0mOr#H|Wt;60Ioou$A5Bx<h2(!9PWTajyq*6n>Z`$d{*_3@hk+ro@J@ZS6 zSdM@9)S~fG^QguTAy}?Z0IbkwI%uWdJwr1)4|Mznb}2P)ALOyb-tP<=8(s>(OvC6l zf<dHngUbG4!Bh0-!$PCm`aRp(W9|IKVG@}=Syy+VuTQ5mF-IMgaB-p&jc}ii!~A;Z zbrs`r-%}@MSfTTY&SS%4_*-C5XA5aTS;xy}kx2P$Molf@>=5Lh$nZpd#=G+Q`QH?Y znK<&JvFsUh151&DrQN3hVheuo^Prg*1JZe647@1E#eG6wUQH5;2sjbTa1#U0o?sXM zJ#BQ#;6j#Dl9aP@u}ceX{I!FY3a3itQnaqvP_rkqebcu#b$=BUkyjVfx;^-aM4_W3 zi^`A}UK77k4SutQraGmXK|QuwX3@WvDfhk^A-1zs;fK1#7i{Rp*7G#!)3+qEaw#4p z!8A*Cjz_Q%iXxtNN~1r~#q}6KrwFV%UiU<zJcGs^JVd$pfpgj|zi~gc$q8*H`|W2& z;Tf?F^waN?C-Hb1i4l<%cYTbPJy{9nhJ6I%UY}(=Iha?->oXBWwCvckS%F+?G9+b) zVazDuTffB*&;~jL16I#^K4D!rqawxG_JV^bD><vGs;ET*Fa?DsD(S=#nsuix?$K-4 zU#$hEy!ICaitdT>I_+@GmwQis;AvyAySh(#!Jj_xI*Q1C@-gc*Yp5)P3|OS3U5=$b z2exYXauy(qOdu=S8fNBsdz$o4t-y1%>s#5b1?oawazo1g@B71a61FSMjLS;A?5blv z6ZU8Is|QhOLM>t@d>pwIuS-m3&lH7Oj3p)e7fO{~LDF8G_N)d0Gcg@h?0<OH{u?Ue z|6Up}{U0wcR$IUV9b;UGG-M_$7TlZzED?AX_rBphS~*HalnVnYIt)|KuFnh*6ukpb z(dD|D@k_B+tQTt5uUvcpJR;_R*!SAr7gf{=Nv4u1!=7=aG~sSK$9wHFe<XcV(!BN? zuZ|TaOMYSD?`ks|oY{^>C?i=UjzOxs;>G=G+|`KdvPQ17-6Jp?tI!V%&Yg^3|9I4D zt64uuo>PP>=Cb&z`=EbtdQdvK%U@#ISi1b&R!3YWN^QxlSj36q=`(<xyhho`1{1rp zC-m0R4try}p7!LZQXHO*1}x#+gxC~8%vzLz%7$QCVauHNOhAD=xQ@pKR8X%BdKyPo z((Ug=h00un8FN4TrY+fN-Ip}zeXnWLlcjsvR@?``;Mky@VM}m%59q}45$UWd2JSVt zTuWuPt-G3*J>8-HBzWSXBH<8->`iPhWgn2(i&CTF!?A|eh`G>63F{aQG1Gu(2-8ie zod`iv+W(dkhq)^YF}?i|x3yeoI5$Txq>ope-pE2j{SHfblHn~(c?}g<r~0z2QW4jO zZqoML;D2~qJ*{w~Y}azSw_S`-S%13MGBST+nTICG&`Z(|8eUMm_~oK-6~PH*UDpV^ z+I3fbUD@jo6ykBQAX95{R~}T?23V}}^c4S*qw<xyG>I(aa^+yb>Tw&*mZIl*Bv&0T zfqV8-rQL|rAd}X8PPM2dqu*bvaJAPB;PIvlUZ*uGY}f6#&(;r`*w)f4WH|-{iP=`N z>8qiE=cS!4C`|lC@iOMJElnX+oMnr$S+(6CU&8Rs)2Hz$mgGO*ykelaGHXsYj0)FV zw%o2u$J*GTRT3V7$sPQDjJ)Hc94(SLti92pgARog?Z-HH4Di~jV-LSOzg+|YLvB!J zug5=s*JU&V;zf;v`?=Zz@=NVY2WsxeH10(~Sf>ur9ZL+xwk}3_c=1pLySsL-2`HsJ zJr=*HC0T|AByb(i-TZJ<v<48XdC{?j3Z$;FIxg=t<zZy2w(`$L$sQ7wi#Y)N(IgP9 zq{=%zISQbz&aU%bv+yGNJ3AyY0tpJqe=IwGxxO9(-_#41xl4RoS-7C#j6YkM5m{$U zfkTC^NcVuI<%-dxxI@;hua{<U36=y4V63C<0<H);#3Al^HNK!e^}#xA#j8|77vd}1 zq;Fz8@EQ-BHLnXvTxYYA%|o=OoNB{t|87N*_GcJe&Sqi5%S#(aC7KI|n66$CxUbKR zWpcf@qpIj8(2Ih^ESIDpuUtQlE^HpYqnL7Q!HpI>Ai_6e1TOEh%nm=J*OJ5ILbQW! z*H-C=<&GL<iIEIXg&GeGL~X>S_zB=Fgqd6-td@W7=#_8FNp1*x!3Vf1rHVA&osJw5 zob;EFUo<y2j-Tm6y3>K&C@~Kpklxb^uMRbT^H#EnM*itWl>QxrWWmPy+LTxitJqae z%c#|?1QQLz#UwzP5P8D}N`Bsh8P>;Tjg}sR$DskCa}Q{{{X@{UXN9X*&$5oJb(v1W z706LuPj@KxEm3;^@k>M)QA!5dWn61`R*|_|(#A_w<Mwq|f5c_(b8Vt=O_u)It(A;- z*RBjiXaFKL%15STu$vl33rZ2=tK#4J#8qUhMYcru#>yw!BpcmV{oh8EMbr_H;uH<? z8v&QLQ>h@>1NYf4DCFUaMP9&chyias?=Z;PEgFgFo>1lEp<Y=P?y_d1C})3Zsh0@{ z14=pu!(C8Ykmx&hrRReckKRO5?y1v!<0g)jh$Zt0VDveX28c5jNNa=fu{KTmaJ2_t z?yj|NCGTilcBMK9jNX=X{?pE_3(SW$+=9X_jz7*DSt=^@aE&iiX@_}0uRp}5>`9<8 zC82ig`b;g_d*n(g$@ZnMia{<$Y%zt?a9q}jThh%P8b=t2Oc>-?{-85JUjj<X3M`1i zpvCZB(t>3M`7vC*wj<SzqTBE^(D09f<GU}kZbtxt`wZ)XGK53ctGt>oIDPNpK*zpL z2K@OWjfh6w7ovvdQBd%APx5)&g<_u6og$b$P0pzlfl_7xwJH{E7HSbOf+|`bRj`Xg zgo9B>V{B5YE+rb(B_DL*@~XB`nnH&OF(rK`cB6>xv;NItVC^Dk1HDHASA<rE3Sp{U zLhBw1Z{66;8reYj6P9=LI3RDB<WpG5-7zC}l)O+t@{OmI7hsT#EVm=GUkgivSn;5U z%%4^ei{_3rj8dl1RpLmI;2ZEYQn7PI!6SUP^F}Y6x?5lWrk&0i8;ZHf$#qAMY{6|0 zJ2!)mzW34?8EU@qTW!8|*2*e3V(u~%zhiAOA;$c3ik8D*ZM&ipzLlPLd(kABuFXP> z!u=FqGGA@`D@W!tY$Dd%jQ{X=-As(FllNGn9}|P}Yaz2E>hdXYdMA5`c>+s!)dkHc z7tixV@Ws{cJ)d5LcReh|8{z}Cm}N7t(fIlcG2H>-8|Tv{O9*V({>1DetsC<LP6Gwt zla_9iKe#oX$Zueavcp>TGUV?fpLir+$ccaaSxM>4Gi9PY03M5Z`6GC>t#PxQitWo! zzfd|PsBOalBOoo61`$lGuaGmN`%`5h)i`umow{rJIg#L|*h-IDp7fp=tl}(t=SjpD zNpe-Llm$Atb=2?ge=G^p)|I%-=*k@N8g)nI!I>-Cqsqu(UxE#tF{c}0vhE0P#M9uy zm0m=sKZL4!GQ;-05o^&0IjBeiSg>t-cS9XE)C5Yo3Z|`YW`U~M+v6e-60-d5Prh%o z3O#ta;ho!LE<u)yYg)6cMq)ve+)1E$^UEkx?;7CaN_DeSzYT^ON6c_$!hDfdS4m<; zR0(Ta_eyhn^r%|M!6s$iac1Y9A$Enib&_e6jW_fj&4f4x-KZEvW}D{)K?uOoW_n#9 z6evy2UM43iphoisov+H{xgI-YEtC`H>7xH~h2O|X5nrS8eoyL^9oIqgw63v2hoH+O zG`fQQImJP!Xr+G|jv-U#QzYkqoJCYL^apoz0mOsrDUt1jr-)d^&UzRVjN%3)sV~>@ zG6BMszFaxKu@Wc>tIA;mzNTBA-)x-Kx0VTW^bx0LRV;&*7^omI3%ML9=v0R=x3-ho zSJ}DOQFBrZw}2yQ-(gtmCqXmY5v3TXxOj(2f7(HS=Qb5F3)71zI~W;QHu6$+@gO9h zn)tKwu{7-IF1U}(*oNgAlH8zed4cWZir=%uMpiP5xYX&D=+*8$Lq6%hG&(lPvh^Qg z-hWAP{a+Kf|G!ees+$~4@p6UqJsp80Pt+yBs2c8-!t0c*z5sS?<f7P~x<SFXCg3Ge zlF?FmkL_|u8jiP&!K2cq_-MV=t-4B9IlhP`m;Uh*DU{Wyd^6VX_|(HAOkw^r$lP&7 zntV6gE*QNNTfY#cTR)Y1@JXzj;k+r4_D^e*bQ@JXRp+c8P-2p7tpr-;$*vUuFAV`8 zVIFppPKDe6f!lWa<c_8+tOB?0{R$q-lTZe~ALOkn9p?;OW<MvnHG0}i)1Qdh{t;ck z4XV5s2Dbd%fF4VrpoF>yC#W&Y?SgVjeotXmbm6uZOt2bbM5itjrz<#>JCC+1qMu3< zDBYitk9|R;v3Fjaeb6*1&FFUb*b9exf~BqSvwlXw4=*O_{P0iT$P!x(dxc=m8Vls# zJ*15Ge45ZdBR6vI2rj(Y$2vY|u|Kk~pz}hlF-}$W^662_V7M~p=Sx@y9I2`m6jV1i zTVX@o-v?5*y=e)l7xC}1d<7?`#H`%b_e*WL4gK|ztFxgC+`!=<?dupBYz9(KbxIr5 z@tpzTTX7^Fm_41yc=gVr_T9c`3*R1z-1D^Qw4=iK_`=BM5^6(nIaly9As8pwMy*K( za&+${Jk8ogFFUh&l*)G)Gw+72%MnH&pP`ji=zWT@!IY3TrOS7xZ(QF6ku|`|g8nC( z;=jhk-!Qsdz1t^+P0BXZtpv0imH~?aIb=DIyw#nMLo@oO36M09Xse#5Wg4Zrc(-iz zsKlhIH)EgkTGs7zx5|ki#weRYgqdg@g~k2Sgo4H3+}=B^oOoISrpNxSo_oZH+~!OF z7h~_#EDE$N=}y~R)3$BfUemU1+qP}nwr$(CdqqEV$BDSR@BRzpp(00R<(G~ZhvBS$ z1@2GO3>;)(0j=IR&XAcnYzmgE8RmF7rff<d)--?(OMcE@V&0d~lK#clEBhld#LWzr z3F<dIO`lS)F|JP!smK2m35=qQqr?|~@kQ^G8qw+T`$7FyI7MQtyY*`AS<6tnRYhc^ zMz8WzKjCFW+_7q`46`Z)9>6*Saq>uc<prX!>GNYG=N#+7uW1TDvVctX0~64DH2AeU zO(9v>BFCzOE4`ayHGlbW2#1wnN`BsfSFBRaj%B5x2llR&U_mY2=7Se~Mr!e#r!m9g z3pOnK<f5ytede3u(p&B0G$3b34-vo#;wj`#syb@a4^q)^4+$I<iv*DU<ukXQBQT-n zyptd**-MeE-+sy*96c=BR;d7VrVF>x|E2Quys3(=*T)r?{<Fo55?xlbhV{K93JU(l zriNmH*;S_IS`QO1T~oEP+v$>wpQBAL9i=K++v4G#`lCV^O|M;9?UD-==yE5~l~J7} zzC+Npwd8%mCI@KZiRl1|_6s4L_B+lZqC(fR5|E+K#IL2S&?R7er(18ZtN^zTP!YKt zk_ec`9xIa!@q-XpUEVSN2{Qs3ccZq$SMSYQPpKf?-8`#fo}LR5&4B};mpu^xxh;UU zs#{9if7w$*_bt=Ct(APBm@dVr1_8?~3OIBCd<P?ZL5e&~%BZa(Mu)gpH%8e@GQfc~ zJFFC<qzf!ptX91|lW7HWC*h`7b)zKR4VkyyLb_Fz!`654xSnV2!4-1Tpt=YD)wXZb z-_7fc@dszo9`bG5$6Z;qCI(;&u9Hek%da6G0tG;kH<4)l0@9{kU%BV}C~jD=jNXRv zFFeM<K>HDRfS?U=F%8p$6&+RJF!R4CQJGW85kB4uJ1{L-sc<03=pg9e^BzO=rv#ND z+Gor?dxl^^8|08odTL<A_-1fAv?bZ-FhH^o&Sh=5FTB_=Dg9%}I`N_<K|Z0%N=YpY zHZsu+E}qP3m(K+*(`kDzIlo#SWr^|{1i~5oVJbpWz1a_Hm4@KGF#Up<JlCgkiD4Ls z1Ve`$z@B5V@#RzagQ<fIP~>u6&g#bM2<LJZ?Vcd}v?tFk?*Q|1SiSLF)E#xAGIZqz zhhKXW61&J|%0j9NQhIHR9c{-mROQ1_h1S!#l6FE(q3^CP>u#vk>b+oHiTu#0wNXCk zxK+xg(7i^Hxr-}*f>Dye$av_@+VOF%YT}5{$nwJVs}sjxO2hAXHlg0v1xtW!ta{B< zoVGMng336WIsa!rPavY4x-&2)e~ue2gnkFn3X3QYQlQ`Zz&Ewv6<g-D?oyps-j5FR zZ2*iOubkcyu(`fzkdyO&5`a0_f|x()_m(AE#W5u<d58d0h_9DQwj_6RV!l+>CRVf1 zDTGWhK;=&r=;gc&iBwrM@t81yE$?Gx*LaC)N#@NKgz27#=%%99!HE~W)FA2$Fiy_b zrL__4$uK(Iu_#e+mu1q_7JZeN&~c7`Q3XY%GPNsmB}01~RKBPdmH)P9c8vjWH>e%P zO=mu)BJ~q*`O9$t;N)tJT!VLX%S%{h|0f3+fkWELdgehdBcGoQIAfq13ks9emf_BW zA2v_hhr>>6?HxMlU~^zB$t-0{p-8>d35MlB=mMm9_SD>{cAOSDq2RdU@{ZpUO}2O4 z-rk@if*Gh7D;sQ$6#;?Z_=eU(D7y&)>27@1$`e9y>8vK=rL>o6YkWuIRfJ1o7%^e` zV3=Emw?#z$6^|8+fxCns@kRAOQviW@I%Ye&Mfm#6uXZMw*(Uf93{w>DJxy?*qmWvp z#zEtsz_rR?1P+@1`G(2P)xaLilv}B)I`&Y;Mr?w<Sq<;yHpx{iJc%&fBOOOvhPA;E zSUEY_!Sf0=6yys;f}$^6@|CB#EHr3@rE-s_S6IL9lBiEm)3q=k3}KZHfD?D?_F03$ z5X%=79<Ve9F%L>=H#Uv6Ml0Ty>%RFxJf*OoAqas}a8pzKLcen$C||8T>4V`%hvZBR z#3xxevAFzTSAdOb`D=E7J9FT+k0h|YX;2rimlaz0d|`(xE_lRSmMMV-;Q6koF2mbS zS>FqbBP%&bHUQoOrq3uQebICL3J_=_voziK3DGBqv+2ze4S|K1&UQ{k>unmGf*I-a zK#kWW>(!A4=ea?)_)<O|7`l+*Tbyisv+~+=Jrk_gRG{!(jU$|UllrL^ctk24(Q`QO zuLv>5DJB8x{~)XW8%pT^GzD1ypExO$Gt+H4Z>o~@6J1x!?+X5$6-L=qpc)%%+mP~P zpsgffd%wG@7Jzm`80F2E4Tm!9jIN5OT;JacF=}CkUE|HSs&f-~b0<+gRL)3lrIgY! zdufwi>QH;&;BXb~XGUkER9m6H;y)5suK|m0r_J#ubV3CI_3F;?8=UIMUcQBGQ{*7Z zRD-F!x;$QjnZf}Q6@p^=`94m1Trr&cIJ!po{^P>6ABoD`)Ht*%W$zY}KZulETheGz zi>;{bSdzrnRDEo?BmT-S>(q@<7|hU}1->60C0CrQh86?Vrt@j3Jp~>M9kyb9tSaKq z4R{?&$s)a&X0IU~#FKXb3BPyZHz8aQ;Szd7)yn!u%hiCF4s4s61IReK?au>sOvf=% zt_Nl)@3%^Pdqhh~Yw;T%&(cl(ugDT9>t4B2gQ`Y_sOsl%gi}U8M@5ejWNR%}$i%tS zwCKgib%ufb`FcOTbecpr;DbX*wK)!-g!1foPg&ELT*?PKz2x25=MrdaK&VYM3;l!i z7@d^l>)L>9-NA;=WD2-3r>1Ypo&(1j1-(-}&^OpHO*3Wa2}zIyf|QZ3jxGrX3x*7Z zQKn<&dW1B8m-GT&cBDKE?PFi|@{S{ktL@QYc!wxCNYN3S4l8ci9TV~`*)c%}(Sty! z|IWwwA+Wy`i%#E<qAkUFEmmAsV6~4WFCeHDEhBXs0qa%Xy*3Ft%QrK>VsNF7csSLd zkfKst96&y<LCoqZlBOf&`V8MMm3A$R?-`>tgr)vkwi;9Tb%e4r!BrHp;=#O2(#mr0 zbm+;^^C@_?BYc%?Gxg_o`@H=o9Ru<KJs4OUIntA-<H_vt8enCrO)#unz2N=1*$c^E zS8DmaJn+Lo3jwwI0{pIc>|#KA<KF|M4w|WUbsq|#6qC8fHfZM;@ISruDJs0sJA3zf zH^Sd1MNR=5`*Y#a*?G2K<U9}2_$YjY=Da}jue-%^r`|d%Z_XOWQTQX8D~n!(G7%*N zP_MG^Q-oHo-wA-sQu=%!AVX7YLHe!v36xGoTBZzUaOjf+OBnw-LJR#J%FuM*Z8zQQ zW3d93TL>PF>I?Z-_(INe3F8?h_D@NT4!ymNx))T_WBn%cdp<L;h7m$_jOj5`Wx`Qy ze!$sbxnhd~yH0%~D3>I*Uc=)F_aSp?T(V~GTSzVx7-T&U95oIE5}11Az?@I<GKR$^ z(!m(O$LRe8td7dzO5-CeW;#E)g8|CyWTniZAn2>ryxEJdb5bt;%{1@Kv=eRQYu1;6 z)q{Fj_P6m~qwNN*#!H<RQ$44lAoFc8q<%b9v&cZlgM3yNkW2vSXDvuV+GCOK^%MM0 zVb`tNxem*C3yE@Nta-61T<WJ{HEy!a*0ZKHTN-^0>yYwqgRNQ|*9JDPoA#vVpDOOV z4}|3AK6ZdWe_#Bo?>S~v!>qX8+ck1fl!^p+ab^O196BOsYWd(4jdSeZWIb;MXQ$&P zMqJW75((vmMEw+p*b4}yBLJ)Y8`J$8r!?;TF@uCACJ5#essu+CXdjyzhtt=||1kFc z8;agP)8PO9CYk@=ra{o$J|0Y=%kgS7HXD6iEo68>_w>fGga0Vs1|@`PG}K1LYLaWh z?MP7lr(OMfC~u(RL9(`T0FX|dpt@L4-Ph&$>^+eaKMweJDz!=|4rvG)w-(V5%(<B@ z>Yo>zY5gDu6?BxZ$#9i<Izz9#P9Pl6@Y`8@CXCPsyC0q1Uu?f|BgGSj%utkLQ`(Pv zZy|mTt)KV^4G?Jo70wf{5znfK3+AXlOdNs0UfY%SAilWwJWAH~wmKwrHo6(QL3HRP zlKrj}e4Og*&E*nzcraN@)RBmU%MRK<D>HG8-f3Hsu_8B=L-$u*$EOc&BVwT6lFgLx zjYtQQ^LnQ*QQ%%M-0*C*b}KVyb9;CTH@j}jL<E+{=$ma=-JZ<sx?ocrRKrp*%c<m2 zPR3ob3XoFvP;H;Gq2?1a<HJlCQd#yUAJYXx?}BsB)8UML+HfNypo)UwOu}6<Wtzum z500^lbOojIs-H^BF@q8)&;PjTQUI@|*s`IpURKI|B;Suy#O-G(BZ|9z<_mL1lyOW^ zuQ0NE!mrJ+XPc6Ibh+1;<}S-8EjNk=^;ulUHg5)S*%}`a+l|y)W!7AK1<!{M2J$LK z%Mrl>5n$p_$-UmXQ|s0m#i*f%(K+txX&ofS7Ztm}$j%P4FW3)dQR^xKebN9J3KCfd zx0@V6u6V=qfki;I4`oP|ogoo5Dj(?7%0>_lr#TbQnGvT4Apy-&-?UVJjvq)MQT6^j zyt4<1(~utA{w1p0?auo?qHV)K^Ke*EJW;@W7(%q$f3a}gM}4S!qofhMY=DuRzG5T% zbjJOx6kPbzsmMP-4~^uUs$1j%Zt-mE%jif?oxITs(b}%V>AZIiU|Ez>r-P7)If4kR zyfj=9NdJr7pl^kENBk(4Bu1oC$=-mi;>d=mb%H-U>TeDdDqE+J+h3!3Gvm<1_)DRu zvBq36JWbF`bB}goVGPfGs}znboW9+4!y6jE`!Wp`_DysdDeW*G`%OLa>d}bAa#7Rf z=0j85%gNk!9ftX?Us0K+^zKNI0Ej_VAHO*;8^I%VTXvE-24bJ@Ikb6Mzba)=dkvQb zDfWc)o#?RNPK=}cfU?{JP-@OVhzMUf8^iv_Ytkn5ID{Le;8X%H6!94`P+S7ObVa`$ zQjGi24AJt7{}Jc1;9CvkJ*m4jlom%H)Uf)r?VXW*9tR4C#DrA(LVM<Z<;ZG1CE<IT z!Hp5viYu2qevYQ?yI&QYjyAL5OSqQ;!lL++qXjx8beU6a2unQ}jq&wo=4B=G6+Ttb zi(@#+mo!f*HCK^ZNwj0aH{wt3;-o7rPMxK!I>0qDv$*2s@=`Ec>%aCb@z^=hj1U^w z@*r56VEWo65?p(*IX2siU6+WYseE7^X~p^BAq}~<AtgpeO*~7czDl1;-QDJjD2zTy z%XRHVBz^4?eM_-$N>eo?jeMY}DUh&Nt{qRH&#L3prVNd3f{i_J`(MQnOz?96WaMSo z&pQ7ISq~%$f8{ury-$%@_ny7e8p;frx_pHI5zbSF@+6#GZCmj4;T*oM9kioG!EhND zkUWAqBxEUbNnW7jC1gY<#G2Hk3l8q)8YsXCL=q^#>EsV$W{t&DuppX)hXfTYaHNf| z7FjdTACt5ZY#t22ajCJkS7hX~6@%Q4^Jq6Z)EYQYkk?I8i(9q7iZ?4i%3S1K@er8Y z|9XNz4N9kwJF{m#a++$D7=5iO;@`swp3m32Fu->IkfGvZy0p{18tvcl*vnma^O)aJ zqJA&7f_(^@B+hN;bZzAlf?cVV!cH~6pgJ`!SeVe`ZW6IW@MDvk!=&u7{yrPs240K6 zzNzcqJvYDZz)1%U&7=hemg+z{Dd~_Q(4C%7f|6)G0$tYF=$vBCQ6kkwDiz+<%|er> zF!3Vfw5H%jn!JxhrDRj8+jp`nmYM{JruGJQOV0FT$Xbpa-l0n7$3t?rI3L`6x<&>b z@Je)Bh2O;Vk$|G%4FzJlq*lt1XrZbABu$%%cwHai4qy+iS*195R5ih?HoSmxpOY$L zgsuSBeCZM_Ix%n915lc-a+LQd1w+>SfZ$KMT}!oBW|2X&!1X$TSy_xz4u&9Z|6Raa z=Ou3JkT4R`Wd$h^OlK~wVhnr92P+e`O5*=KN!CSN#1b~bTe!A3rp_oUZ_R&VwX@*_ zYHFjUX?mgygXZNrPX<hasW>Hq_8o0a)ERK7yOqp|bv^F_S%+S%yITWH1&TT}d>QU6 zHXXU+R&i}%?v5kkM<plMnYd&VLAmTw<91bMezqPA@WiJY7Xeb3Y?2ENyh^Q;Xn)+q ztUg8SLl9N7lIr&{62y^Vs9G-q-Mu@C)oa{euj8Si?zMKw_yZi1&X$@5<q3mRoYIvP zI+|ZTOn`6Q1C|2qn4I*2q7cGMJ@JfiYcv)FQJel7&>vxVJ%v<bq;JZGwv>Rl438G$ zgfZczT<gDMG81rJ4~~6nPz44Q+k6_>)W!7>WReC1KX09^X?&mFu<SS@=}p(``QQx2 zJ;ml=mG(CDuJoN``(UbG9St)V<uAI7698-Yt&^I@<44GR$S$QHTyWO&1_ckzCqHpS zbiktpB0d9bukWf(n$OpkVku{+;al*&EF!uXe?(UY0HArZP#|+{?lX-U7!Vy<)so2H zO2em5@6H#naCfzH1`!P<{Kqizkmuz64xywqd8ymmY1s2{iBNzR@Fs(lSYD@o1x_O2 z`7<^SQn<U9{>#X?HrUa};W4(&)&<{d1m#eg(#@%)JgplN_8Y=~e(-d$<{BnwSNdix z;|D&QI?HMie(|`o(b15QJZ22YVO1d{D!ch-JSqwjl#TxUnDVtMawv5c4-wh%-QQN; z{;iO0ee{Eb_HnsD!J)YBm3YL1w;o4HY?5QFrCZXCGI_;F8O#MqPPAC4e{iMGeE$k> z=F~XEO>#}7)Dh#*3O^jEO*UV#Dq*hX>TRKka>ewF3dqbNgIi<BCCYTa3jsSVw>0EC zh#YL6L<y+A@F~K|g?z;yY=;TBT&>|yWv_~t;Qc&?MBQ+b$+W|ou-43ub2wVoy)PLL zq%uFp29NZQ;HVIQcg<^C57r|!)UO(}Su_w&%nk5l)1-Nn5gtAQW8Miz3{Y`HVP(#- zIvklSb=2Of;T?4lG~p)8L{9NwXmRYPeL6|Xjj?GwC!-WQHUV7JAV^PF;?jNL)|)ni z>2Kuee~@|q9hH-T{r@BhnEv<4+kZ?F2rut8CipCzcqDTt1F^E8#G?lJGZT7bpMT4w z?BxthTDgLq{#lD~7wU<<Yh-L-k&r5u$}zTq=>PEgz+SPe2R%L6N^noJf5dhWx1aQj z7GZ5+-9oosZ5Yy32n!y#<$N1Nvn+lkBLmNfhoskL-}Trfx7kFtKuSnz)mv{tdU{y* zd!kCtD<a^Do`_`fCm?O*@e_$bXGotucGYAU+4tb_mVo0Oxm%%3W0uxwaxn6|cQA{j ztXeCr&y^F^dVpJze~-v^EFioBd9gAtA;Ffx#|SV{XsbORrrYbBT?&h^1jaHb3+lYK z+rzaEGAkSn@`0CstM*;??0LhnEidnr;97nYP~CF+JyVpdkdLuk>-pt|1DPkinn_AH z=j?<rr<nfhul9+S(x*w-O@!U6@{57j0ObX1+OUyW_llNsdz(et4Gl|=p}u(|zjPd& zN;o*!{8^?aGzaMjb+*jFr9wF7-x7y57YGR*40As@U{2&~U5xB6VOgxexPDqURYl7C zx(bVtGM~XgqY{T(<}!S;VG&j1<NAAIYzB?DuuPaHzzp4YyXPU(aDiz{H<yy0gkBK? zbP5Iqawbn&06P_O>DQ(~(6;>~$4(RsZ^(=-Q<xvPIWbFdd#i4t>4Mnkw1m|G<mOq% zTK7fLs=SHUUteyT(!urR)ZEuiI8B#G;Oe)MQtE?0?T7-BY&WV`A7-2Y)sw=Z<0+ZV z;(@b=brYj%xkZLqkdMB$|Dye&`G~|}vkXx{3=xFOrJ;43OG-7zUQ|dC@de_nl<%AF z*;9FgK1OGK2CS~422p*_hn}l}<TVteL-29j$Yd1ytJG`^I=iFZlJ*IE96rYVr|+VG zwoj0QdmhZYX2BCpwO?eBG3>6(;PqknKx32@Sjs{QpI)MTEik?(NxqpkGrWS1opA1A z_%7bd<)CwOWC2nfQkot`W084!d;zT?WCeN3vy@lDnvBx&<?Un{#`emZ!60+9N4tJ` zsm80nqYQPUA51<=J<ViQ#r^1EkqH6vh>xnSxQiMl&-n~*u7BT^l=;O<nlbpsC@z2H z_o{of<~Wl{?HGAU**~g*CZ|W5KXvJEf>relUYwuNEE1;(@)UZ^S+EtK`LyxHNp47E z(%O42?_p3D(%tA5KOD&|HYtVD@Q6|C!0~VRNsVeP>KdW7Vmmr27u}b!i~Y8|%#JPC zbBOpF2qX+sSL@8TAz}i2W@!F$h9M+R)F)ib0L@2l0Ux;^ByOuvvP3zPP>|aij7EAJ zg}8^r;FcS)l7?Vc3(oJ?UmluxJuzQ|<ThS=)!WS@Gq=JB9IxuKkl<XioHqxi-0i61 zE~uq;O?TztTw890MDC^{2Xnp;+;ybIUxf4Dkb2J62Lnf1=HSogzhsi17$tNXiV2xQ z*J#5R322%dLowj(-h$`O8JBkgVFq(1LdT_F&{Q)5dDHQx$bN)RNDdyzV759c4zX2T z2tlP#1a@YwB3J^F@|d&wkh&h~{A#53BNQb(w}>>SaG@3rTW*4Vf@G$x(oF8!@9^E< zfsGXI5AQ;Vn<0;LPy1|l9l}@+XOPa`v-bUPQ2<(1-eUbRSpT{hZvZ;C3tmw2=pAfO zlN|IwS~g1qfk)YDaux1cR}h4fQsr8J8_Q!ZmHcVRWBGDtk{5}JMb!>KcafOVj%Ph% z0$I=7iTv-Sysz^bAS($?U+L#XC5^VO4F>x6FQwT9j?N&wFz?-ON;u3yDvE_|DG&@g zU^{$N?}gj<e>p*SOG_2U+U(y@&wRmRnu7h^%1!ljG9!0h;Tp;5i@0vnl|OfuL#KV& znzPqk{w|laj4r$i4(lx7hJLjYgpYZlQ}=IYew}6(xx$1#3Yo#K7thD9tkMIxg%}Om zQTon}9DsMl`B#3`7y|ioEbA=i9gyqYndkid8k$yuNxZB(sZy`V#>PAQ(-PX7-@vZ8 zl}EOG<tQ0F`uCiBhqhCLOO|6w9{6uK`20EJ0OW)L?+;!OShQCmWS+3trHqGwYv)QG z)8#f6=CA_G$vZ!Fc#J#lc(%)2D%jR+>gby`(V6!vZe)Wns)x7uAahR@{a<@J;%<s( ze$q-Cm0vPu>EYM9GI!+C$3qWAjp6U#CRM1p?Q;bIsn{2wFmwvOs>uxt;FHD?kH{-` zf48*9)B|ksyHyVtPt>A}?xds^K(5iY`_?==?Z-ZiM)8d<@l09Y^9?cYmXCYn=c$f) zp=olZ5-z8xM#nev!!QF4-Z@m!tfqxo%^M<i>sir$Uqi94c++kpmq*3)_24WCeB|Ht z8pF|9fn_Da=I^A#5w^;)Jr&4!&adNHlnip}MR+<H7(KHXXuE_%W=z2AZ#g_eV~w}i zeQ_o54p=KN;UX9SlKzW|5KkdiMyg&vvg#bGOk>glp*HlJU%XMr%evtEx|%jcKuVxn z4aWv85mWcapi61f_Yiz;x0`>pI^~wdeON3>G5p{&Gjmr>JixB{d&OIn8QDGO#wsGn zKs%KYLj9ai^)~dBU&xP4XyzsWd;;~+0<G6keR_tLRHa+uoUnrN_+n<kcC43}0Gq7x zDV7D>WJ`lLbTtM9MssX{x{OO2*=n|Pi*uvO>u<fMr`ps9am%rdcnea|jOFFVSmWMF zg<D>DL#<j2@l>=Ox*=>>RR+p)Y|P5NTo&L)iZUXlrv!FfX=(48QO(VW3CMgJ%L1G# z$g(3m7fzK(5enVmUb;;&m@*}dPFV{h()4qqsDuKwB-t;*s8O>fsn{9(OwyDZRpO4K zb3Fo!YnxDS*=dn0u_TbX$H`O56o)o?j<yxk1u}CWkRip<!^5;(Y%F64VFcMbQ|(2@ zN^&RCm3{FTT5~7&p@3HLJk7DeFHcZG?+a}+k@<Lwd*!*hv4cnMh+ZAsfRH2y4<Qx4 z9c6SZa4R_A%*<p98_|ez(g{TB59dxHVAomYq65E@L&zhx5)?Q#@umWTEqX4YvY}yA zVEN0(`t#9mZfD$a=$jzGtQmQ6CX67BAE172Q<`$0xfQuATtC7k%#fZQ5*OMEG$=#U z8Lf*W^}cZ(v+Z%DnsrW&&H9l5i%S1NhW$5G%KvFH{J-%<%qoGCuQN{rNeN7%v&KWP z8K#=vk$qj|m6dyh`tdpv*p^(`Fnzhqv$aCdw^KHziN1asQIOMav%2!;Hsy-M{JY%- z*?EmmV(4DSf8UFnRRzbtEjA8gD!C)_ehI@TD*Y;`8^(0jKD}hXw_nWqKKR7{SdQ_V zUI!vV*taD>uD{cIPUh#!Fx3jqgNVEIlrkSZ2$BFN+0y{ypL(tE7dtEtPU$)%u5&@p ztPU^W0Fgo4+gsA%EQy=~cRl@uHfO6=XQ0ed<=|;_@!UO>G);B~Ajir&c}b<_Ry`Hb z%<$xA)vXE?=OxU;Aa$~*=_+EYst@HyCK{t^>+-ew4oqZ_kA)aAXJlS}CM_>7cY^fO zu?&9bI<t_<R*|$j2mXF9a`XE%V9$_9OL=TQDq)LD+DMO%0nO{0ZK#W#4RfTg<F=%a z8oLNmHHcNJYpk~?{Oj;r=pyeq&a9TSwFP-pRXMDok_<O3ls3K_ZK{@~S5Qxo7ae1k z(~o$_yW^guugBP8vg?fGyu*(8mUtVe4kjPw+YKQ%t?ST2DwjnH2}ua&<O`wi3|QgO zO>3q5*(XBd0U0;~Og4NelvL`t?%2`W{mpe8^N*H%tGD&i&k}7i`8SE+=<0F`3}C&p zqlG0yb3-rjGlbGTpa&te_CxcI(G+zlt-eC(rMG*sUynG@G+Z5zVgFTWBu?27-!6C( zL^O1<K3hTcr~b$IN7()pio%N)BAy%wc4nW3(vArq?en*Y68*v0F%9z|aW6*OnZw(9 zmL20?;iBHy!e7TqLW)gS_Gk!#?o$P8(s=xBvNF0zKOEzZA0={Ha2M%u=!E-RUUfBT z%r;j;a?M~vY&8BoI_G3rX<Ad&3>L_>e%|c#-$0m`-0|*b1joi6y*ADCeU6u~0^y@h z%~f$)`lB4iRKQxyjJHC>BJ!=#Wy`C?mD!tyPg(h)^%izF<2$4DA#t*)OL0D$3+Zhp zhi<)2773QRqQNrJTb~k<2j7897yoABoRue*<VGZ}IWe6?!3g6TCK~!HOy<MDt`^U7 zc5LrN$bM;6{iPW9HgwPk*d?YpfcC$Z_OWWiZ+oVSJm(Nf<eh=74_F&zjH`L)^Y<<H zxbY0nJXCw5G?qy;j&ch=V}!p1Zs9!U7)t<#5`=p&6}GPE#mgY8I$S8cL>%`~g6Ys9 zN+wK}qw(`=UkZPQXH|VK>R)<e=&dxyX3_DuqO{$2&@-jKc2|BKKBMCMG>w}HL-9d@ zB~H;gzcm7W>(<<XF>wFUP0Wam{Fp@Hj`AKLKSpc_G`5E9E9H9!;eX&mAa_M{69^L3 zEU=YEv40pr2~S0I3E)BZmHWWr%(7r=>wc$j-i|yt?c@M9?j9_F$RWO+ut4tV9{!k% znSbnCmKSt7Avc(bJZvHY3+lp(FW!sj?g)!GY$sD~rW|>RGQ0$~)R8Gg|NXtYsVL!_ zgJtfR7u8J%G%``3)Rm#Fx#b}2O^U12**(=FbWDDCyUYWvr|_+p1z_V<Kl~44?!Te5 z{g0w?rvL4w{>R@Yj$6?O={Ds!(IyJ=Sv2@turl8<MR}>M?^^7TBX|`)j(eAa3#0`Z z3-ZM09-+P59pG><SdAnCwud(d*x&K}lTy$G7L((2>sD2ya0p0?0&y`?-!`PbDUfcg zeyvQ`w(VAWFc7QiXo~e(KP_A07Q~1@lBB<woEDlFgO@r>Z5mLI45={`tF-zo_#mGm z#i}}edl(4vEU0=$f4?7o=O4B2Z(DH2e1J5AvJ6lfzD(N=Qply9<Jwh6#(fw$O$rP+ zMzT#Qw3#TP%?I>0lKy0#im`9X67PeF3Ew<;YeJQ4Km%;!d^#Y}^gGM4Ez+ZB=RY{f zVfIw*c^fvdnFZP-Q3lq7ODSg=*5|v&bB#B!-rpl`gA%Ue*J72rmogL7H#x7RH>ZKe zyAgU3GsTpgn1Pq63t|BhiN9`5>CAv-mQNgl4A^0Z4;^eXx!i7nJoO1y(@JWQ;U^HC zxwHwS?cW~-Q$$niAlB@`Qe$>++a_8@*rMG*4dM?gq|l6x`*Y*p6I(0e^Qi+?zhmlQ z>^>G-_ss#ybc-cmq3*0UyZp8nql8|RsGWBAVg8j2D1k#kfPEE{m$-cV+bKVnYTstW zTEyfT2C(~7q>h~C4`S<Gi$*qdWy=T5?Zb0WqG5B(*2X_oknH87FyZDJ0^&Rj!k1BH z-+}(wrNRNu@{uu=f8>xx=;r;(42v==dqvNteMXYo3M6zGTB64kCI7t+P_Wf6$1{ss z6+eTqD;r@N|NX+H;o3^vS^BxOrJu<H8BbmDw%~*3E)rHXi~x%V;xW?OMVNXJu5#~( zxnYPVEZ1#k@H#4u_+W*^N(E*Y*vQZl#gxrpaky5@ln8S<1|1gOv#}M=M=F)N+qB;T zUm#$<XO=9#l;+DxUwPGIfDmLP(B{>6J=vBG+&jg>x`+#yW(5cX@uvMxXpqu50Pg#N zUvQoTt47mSR3OOO4(XH1jwl^})CBU#*T&hs{(5^;VD(tzk2-3S+^feFlFlaFad~#? zrmF$md(R%;YVC#tR58l#@XS5IC?ad##DoU7?v3`Yst8UA+$<zd{!$4k+lOY0as5uY zr2|iw^wA+HRu|^*xK~gW1R`)jnn=?gy$mklmRLCRN)p)SR&H$QFxo>*MXmXX*{l+_ z8ZtXNJ0ZjULj}Jca2YoNj61eTz!@dQs`#^(@Mu%nAxi#K(yb(gLf^I`3T8@5@p5(H z!epMdX0q)ak=E%2Nn&@YSa|8~;s2{IhwSqXKYar0Y_0Rhtd%8}--riZJ004?!pIg{ z)*%Zlm2FR&yn2+Pm=xvIErSidVK4iW5jGPWfUMx#!<a?jHP<|2RK*MEOku*QCm5`L zd*y*0`^=@vNrTM?jNIBF^rRT~moU8D^(%b%f~vNZ5aR?Vd3Xm3_}oK$>EK;Dy2D<6 zhS6grxtHwG?PNrW*oi_bEnGEzuuav#4tbn)jteomXhalCtl%^PRcTSY9VTyPt5P&c z#>S#KZnl^t$IR?@u^@_>fA#hKI>+uz3T^9EL1OlHw~o+IbCU3+yg;1g(dtPaj=eB( z4~C_}8~~k08VN6%?6{Juq0hxLebpjV?@UZ`&r5`o8yA{x_M%b3@bcE(l6mib26BLG zT((KZ8L(^uDlAU|*0od=p43Ku5s$OX8>XParR+!74|)L9nr(}wD$=`k1v~ckf!o5u z1}yq4o(=9*EcuTG!zlhY%IYAFO&qwAh!!Gjvc^>Uw-i+Z`NZ3vE=3V7iZ{4+0u6U1 z021(KB2dC}GBv0;L$#H+$&LXkF;Jx&jke?>8!cJhH&vQM>l{A=vTR$qVu;^oSC}&x zYO%O+iz2)~OKil1<FurT!i$i!)+J}vPC1p;c5qhNxy&f8+g=vi9T67ip8jyg6z#dE z1|q2&6qRZEzh;T&pXvH}zWIYiB`!`E1QUw=f2;_IuQr2-&N3xVWVCD{bKy*+i}hZa z2g$Mt`wGbP{Io&U8)oPxSw>f=+#y=hD)kGY$Fv{NR#i_NOtL7oj5iU&{`N9bJc}Jn z<@5_6ib?GR3W+2RJWGPJGpFLOjL#C(`3+g)^zXT!-D@i>Y%b2+!CrpfbfOm@yhp0} zL)^a)Y780#!?$98)Xcw>&ca>^@HxokhTnWsgV+{ZH^(r%-(2O(-uH^GM0Xai!=OCP z)}8>YH|HIcX(#X@DF>Y&!s-_r{Bhg2(}tq(kTG7XT%MsMFfYUAUXcxCxoSw4Wr7oH zn~6Y(@n|_f6!y;`c?2#AE7*zxK4w^@M&~*A$xTuFZkjUHXk_dtoqn5(guNe%b*&FQ zPd3N*tOF!sKx*`Q5g81>5l3U%7*#tCQN?3w<r61Nid!5%yrBEpr4*f8)pdVu>kipI z);C9S()+1yHD@Za87|SNv<dVgsE_@<t4iUB?fPAsY>xTyAS^ZDd_4+&k(wnYT0g7- z8?(6p5;gnGhpl$?_Xo+kNd6X1s3B*u%M;L6!l$sOY#`ds8%4d;zb{Ie5mI0|bY#nu z4Y3_R(k6rA*YeKaAUm9zow@yxdrVN5Rm)=YtTzuxH+KaeugG*PO3kb6UD;b(WpHYQ z@jl11;Cgw|so)jDTy;&OMwRjRQO{2<fE?WY@x(f3pUS8%@kIdAG@^DVL$wq{=0@Dn zk{?EJ4v}?drKQ%S)H-soJrg2~+!ZtCN1zVT1hmsmB)$1tw-T|;&K-EL0H*-E3sz}T zg0Hm5cq6FGX<AC9|FN)pC8~m4^gbKL^6UWv7mi6nUQNjm@aD1Wu8{rNyT-l}&&3i* z<cNqUjv>L+&r(Mha2r$=ta$ZDaBY_;C`3luMd~*o6%ZjKzwMCNoJZE?wCAUzUCY2x zo&M~*l5t?s%)=#$J$)WGi6r)x2HcC00f+o7&ut9Cg?<_1M{@FB|LqZdPSR!C(2~r9 z3{crKmDo;DUpYQ9mN&Wu(CA0SWo;}7<<$NyCH*ehKE8Fn|NKVcOPf~fqw&CSL51H= zqz_Ed_8S3|k%GlbWlojUSzCfKPjnXB_lt9XvTup38}s>{y(zet43j<|Wx1np<;P<8 z2bQ^*Yq=<dS%aRBh4j7z8N$W_X9}F?=Wxc3-v(>iLco1kYNs3qwd?;|rm_Eblt~7b z|6>aL|KNqLN^T@WGIj70eb>gvV+8jvycI)b5~o&ivea;8d6!7V#j)t6Hr1L!^R`;O z`Ec#BWcfyRhWpr2y;FR+4>-jLGVu&Q7)FC@>V6KB<MjBcy5=>oG<gDAl{P!J0mg;N zg68)>R6XbzOOKZI$(pUFtt%f3`Z{t8?%9duv9MTGFF}Vog&bN-3(+m4dj#;m=vU5Y zwcW)i1yf9?g7Y=n8d%6&9g*t2)xKI<oW-4^Y^M)hwQIfA1>ByOUN>5&mYLsAJNsMQ zNo<>Q9O5&`1cC)n7R~>jK61B_V_GXaz6g4ID`)Wk#RP(9?W@<yF(LkxGK~H@8YvUb zd0E-dlw{KSFswqQ32Z%f!Hud7f(_Qg_E)DN=UNH?z(`)8vDUw0jR2kmQ%V;O(Ag14 zjApPq5^z(mJC;;v9@FhVKPN(`X*=UuZuJ4(p-)&fSmpzzMnu3ul2#(EEbtx8#9>io z9~H2QO>TB?e$Iw6`qPFlDr%F)b&|hN{e7wr9GlRBUx|?{!4<~zMJEwJSZ~~x%yU3< z8i2y|M)&%_j!w+te;2b%M##)&TT0%2ih$xe;^=#P-;gf1*DM4E7d?@;3`S?P?kHmW zRHV=hkwh7BV7GDnh}E}>P}-MtE4jX=hkVekvihum{_`_4h}VfR-6TGT!MviDy}b3h zXgkt<&qM*1mmN<%Xu-O(2a8V8FO43)3>`DXwthI>g(0~n_2k9yF%d7@BYBe9hC#Uw zFOMK_d<z+y4zf$=jR->vgtt-4z@n<X9>NWR91gWNjCgFw7VG~GHa|SjTN31|cNdfD z-l{e2No{)&#}Ioz!cV@kgL)AGg0WFzY<~+iGHK%_6c#0xK`z(6GGBB~n7mv4m8yB+ zwwaJA??GKZejhTc;aB3~f=i9^3ToSi^t$8cLlsDfFLmqjND>0mMyLo;U;zz6$DLG^ z&4`DG=Xkl!Y<@@@(t=r%@fpUtHmD+Ed@%;-m4o5gTQu$jKJS(<x%}5!jQfp15ka~h zrh{rIF+`~&QUBK7v#Xg8$W&FS{0MgbWCO85Ck#>{=M6(-5T1<XAGHNn5j?IEK`1hd z^ytw31c30<We;>2mu}RdJ)2aZk^4o<_hQ|=cQ@PPIz&$lAp#$S^#C#~rp%vPBF%V6 zAs)9>WP~R%G4hU$J9)K`=_-{1lLZV*tCRWtn~P~E|9iTN{l)_>Dtzqwt9dTRMVjvU z{lK`Gz~_?$mdb{I>#sG`@llF4dk^B=<ysxtA19il^n@lqH%xY0E3u_caa}r}A#+|S zErJlje1<+#5%F}`PUh7eC$jN&#n1tI<{KM9PX8>8;%()$r#4)E!jVBgvTQqK{?ewY zn%RCq_mC80vAJ7V+ZoFSnWTp4z|3wJvY~z^ckZxYN7Cpvt}yn7g6_x`@(d8n{2V(? z(V|XT7PmLf&h9ybmy&rcW*P76Ezbq+WoQGAPKvNw2+tB->WGTe?_)P1dzKs2gbYhd zSTP-vf1=Q)edbXR89^(?6~RNj)Iz9juQ4cL`disranjRy1VZtTpl`2pa=%oVVmuHL z2D%NyvC)j7AXb>%5Lpj>?$~%@6V$$5PMR9!i#B$nS7AleqXVzq7Zn>2X#>tpYrKSj zM~F4b3xc_)SFBZW8kf*Ff9K+=1|LS4#Y(%|tbX3C0Sd9kr?}JCHQ)F53EOVR-5e7h zAGqi1!@AW<hNN?Ua^|jX6fLc^Ukg!A=ofS;U{`wP@+Gj+tdX&?JCcGY-*wc#T@*+N zf-RL~#yZ#czNDL+j*;>z+DMkTl1gr^-!k9bzsJYI@GS`vSFVk5?WZCJW)lUny}F)n zt3*6&cZ+8Sz!x4H?YN)%`pC{HCz;fy1bk4+<0e(K_AgZp0$7j4#NUAKie(%mgK%$3 z;D9fdklRObGhXN|&}#nCYjOBHpUL9-hk)e}GklHZdJs~K`;_tzYbZzRas=O@OJ(Ht zFP@Z{BC^u6GgTpwJ(v`08kSKbPPu9pi(FCvS(wUCMz24Xa48SZfr6a9t;tt<tue_U zGj}5i48#Z7SYJmDVj9xXl>Y+q#4c*fhEvnOke1*XyNtU!qnf@QUIlv3?frN98Eda6 z4-_g7>=Zw$Y8epp1@geZlR-)p*66t&t$7tFq!5#8!}Nn}I$J%D8!$IMT0lfN-|Ds@ zdyj>cJAmS&sA@PErB53F(E2lO3ddUm*U%FrM}Cw{9_jualg6wYLXc(3o<+N`=x(k^ zuJCb3`VA=P-h}p<ER$bvmk!|fR#2MY{#tmrSI}diu(MaAyfJFINJzvxD<)anrtcVH z!{yGg1ZywcZdo#FVO=0$RyVL_kiEjVQl_d(gtN@i)H%qPX&(``(_ehHTT2E-+Egy| zQtG=L%VEq9C1jkQyd0EC`tseJ&<i_^kFf<G{4{tFQwFGyn`XW1P8V`_M<n-K?&8IX z(yp<0H}QA-AAO7aDFH)0J`g@-Vg)!;j{1o{KEIj8=H*nb8r?r37q;Az({nJK{saw> zCnijPD&`x%2-_7gWSp$7oku`n=SQNM1|QklZjhf_KeQAS!^moef!z>7-X-jr3otd! zPJdDiY+)N4<%-K1g!jI5-+Br}^f8?Pmw-iH+D)>mp(E-Tp|IvS5dhek%TWuXB`rYy z-OuBaR$K0(fwp84f`D#YoG*Y#O!}PZ>Z6w0hvd0<U@Q<f2D{JS&xDc^nY?V?LUo<6 zHD)FHo3USSSYekgDMs>&M6IE6h}_Q%XWS8Sj*c#REkJcj@%400l7E$DDE_o3Jt9EY znPmf@J@F%a!PR19M|p&3r64|;MH^(Cx*_p>idvVgpRV?&O*axfLCWL$OMYAx{UjWB zt0`rqHu=oV5dVTZkdQ<TO0&92YDfLXDAM2z88nV67^w8_M>-X~$|FCq;(!0tT!Z>K zr#CRYcj<R<5*`F@P0t?2gQg@qn8`IYeM^e*#P58kk=3AhCYUwuyr8?oE7NxKSvTnf z9*}GZar^3A{0CX}-%uO>=aQe1{vWmRKjMXsv@21w@oPb3!L>o+v<n+!j4WoxaBiQb zby75EYTjJMjw|>HoR^C~@&%f5;(8jX`>{Vil7K61k-SI0G^}n3ko*9%TM_P=rk3rh z8{~&Gi3NjgzHt7CNn;98vP7u-{GEXQ^WC0-mznVfkk@(Ta=;8yhW8IbHXBE0OGoBU zND~VOt0s3+g`0!GzS7E{x*V-=A&={o?!r_n2Vhv#pSYs&o`UaCSHzasAH&I5eH58h zP@R+rCX!^`_CgDgpwlCJ!8;6;y*T1ZvdZbq+UkXSJ+lP+ER=|ErcuCi65<f{6t(6o zl+wagR<JJwSP?UyPCkPJKyHP@hjv(X9)C#&x7XOU-b#O}&yzC{Cegf)UVi}e)ZF-Z zc!<fQ%NiB?uLCtku+he#%l%jTOpl?Q0ZYBhx4uQGqw|dkCR9n*((6Db4WJ?4Hg-C_ zUSMa-3UCF|XNGRlSn^H#D;FHjHAf4ef$R{VYTT|Yi6UUDhfyD0?m>y`vL$alH~`N$ z+zgjc@9rAzYz;p%&Ps5Hsdp$u_R#{EHpGq<lz$}?l`;|gnK;itUEo;RMns}vfxJFm ztj2T>+jlR(1VeqAS0lms@cz1CUAavD(p^G)?l4moa3cl>bxoAVR(G8n*AXbLXuR6? zq3GaGloNoJ5I6f>Y%hMS#VB`G%&u65+5YSu1cC%uzhbB~)D|a(W>dS!xBfKGA)G|7 zB`g<nh03x69$$->C5up$l$&=y%{czc-BoA<oL8l%{&@szQ;(2{t2KMO1ROzvNIGxl z3Tb7?edP{e+x|Iz!db&=^tij+7$rVPZ}3F+>@p@TSGY%c=e8fvN5B-mu$S=MF8uM| z4q?$H*R6UPE-AEqTCGHwS|j(^BR>z>m?xk1MLvIum8i5ZB}?IjQG{R5xBQolvM$)8 zp4IxggSeP!?RBHT=BrTUishsixzAnxCk>YMkKj4w*Aw2_0|ft59^1VUuS-rM+)xLA zxy?)x(9aiim=Lbz-T}qAl#wK)QKBa;XPiWb=eg)TWI^vjyH2#)k|b$w8(Mwv$RaEJ zP6iI;{ZMN-G9}}Ha_Uxt3*-f-Ld<brho*{I23lA=LQcFPSdS+bFt!!tejsyx=J(~B z36KyG+U<Q-)VUp(@Sf;=#v|tGB75!tP*&(IWSWSxsxT0q*lO~vs0`ga&G1?%!HJm1 z6xN_D%73vzW;;Pm&RW!u6poUW=DOlMGPbn<N=73YM0^J0-V*e3h%4TK@_Aji(gbU* z?O)?=%;js#i6GDhuncUd;bZ>jX@*sK`%=jjik33LT9_=TD6e84&2<sz3T(VLLvR+A z$eS(eM!-P$#I#DUdvYc&6nMbei_VI$;=i*E)&ZS*qvE1FGg&_OE?*Sg6Y_G;Ka8x_ z1~)f4Zcujqw#L}otn-jtOGfWye570znikM@>%pCuhFtQ{d7ltjdBiy6#b+;&p&%#q z0id&x|6z>%H<Yx0OZ@+PGRDlo`frT=$0hztgJXOTPEsXTQvvf};ugH{Zd%a4K1_j1 z)%d!Gef&nTOHpVRWCpaFRXhoP*r)*`-7#%pF+2+tYYoIxmCcj<W;A@$=jyMI8#tyb z7q0p1hrIePCuWFhtsQ=RG=8kuYONgi_^g)OHt`fF^6I1dz}}~BV614HJv`O;+*u2K zGcMe4PHTNuD^3D&V641ShcU@*>Z7ttSJ55q2mbKJk7`Db9;Xm-<gOa!MI=)(Sa<jk zBF?Z?SQ*`~KG!n+2_Lm1^-P*Zw<tO$AoZJ5LkL|d5HVT*$M_=Y1-7Vh)BTpVcS*h# zje)nt9Qcu%Eh0`$gI_#%xjWJwY*xJ)HR?i*W^0gYo7xG?uOf=Ej(8?{izc+^kL1;O zHXQZ-7vlu>vN0jAa6Zk+EEYCdPO*_?2|weFqO%ZzsnIHzkBJeXU<pu_Oseb*2mcEr zoGp4GqqBRm7Gnl@XB@9cws{GkaXi(o^yK~(a6M3q%(A-y^8pWz^yIC#LCi-IlopOo zSdLn93+m*U>?tc0fpG4KX}>lj4n<w=CddAILjYa=x-~CJ2<dUSAdgc|7cq@5^R2Q8 z_=62jxRqKnC-KUZFVBV9GsA(TXZg9H$4}S>qUTu@h|#KU()MH1?qi-I#hNym2L^`u z%`qPTF(*EBDa}HS#eFAl*Bf(^CW-Ja<A-ZNgDGH;Q}t=Huepy94G|_%xP`z{Fg;g% z^o;aEdwZ1EWLsg%-e<SFL!WUtIrk(*1+&p6yrTAZg%j2<c$E?SXoQ?>*QB9@DXS+h z8|oPEo1~6O7)3F?>s04usuyjda{?&<1QR=)4;eSRrNrqNe02TAullh_2-$B^zX>h^ zquT6MU&*>~hwA?GJQGqb)>(wgH=Wzzt&*LCXT?&(Al{To-@MRunYllj%-9Em0s$OC zc<p-wnT{k6gHa>4y%bpEz&N0pMsh%<m2KNB;)%m|Bd?#ph)sPULn3k`zyO@Oi9NQD zg*niBt&gVfo4jmLdF&CPk#IQ5=9_)rqBODs<)cT^W2wNLcsccW=4nit9a+|bY0eD= zHUzqHL_Jkump(!fS#q8ij9nk>_@VQx{D*h8Ro0*Z5tH|dOd5}UykO==8x2W^3p;1H zFMI0fqSdH-MwPyXApWN{3n^2H^jX1)2Au}Seeaz|niI+huGG5>yFSV<O@BBz_Vu5p zEZZ$MW{S4LPuUvm%O4NZuuA|2K=IB%3oVd0a)JQTH*<mQ(O*U=t6?26+W!jcC(mL( zJ+k#r%2<Bm|8rlKae*#$vr#*ceBv2`KBn2`JG7S+u}PD{uQ!~*mU#3!#a!-gl{J^q zjxc5ZsNi$lkhwOCbhvNiXoNXsr<FSnKC`Ie-bZkX7s6(0aYZG0EKb-oK3c=BXl3et z0&upUx-MBj7MenwConJTo}?a02|LPep4<<U<h_}Pwpn9yT)8$qipCW^Jkd~4rx3h< zBQH0MB6=*lOQuRZtDW~l^8#H2Ish<5+?x%x0R*q9M>$PJ#SrA{pSjs1v*!d~P)B3I z5>I(a|Jt?ic&uC9T;{EvD2`B#>~o>`$&$hG83}Zbef_;~kL#FezqrIr?78Sp;Bab4 zxa;KelOppBE0%r0v7q@1Ip_CJc7Ey}<)v464&p~k7bxM}AoVylJh!0?OKs8f-D$`` z7CMZDCfbf<7R+Xv{S{J8qQGJiV(+-|515pl)J)sa7}r3JFm0`;?w*D*u_|^h@aS&L z7kAmz`75s_qBWkg!Fy*+c5{VQOeNmO<xKvbU&G{e<^518cMLWoWKRMJp?YBRo^p8j zMjB^?OT|^w?KiU6M|<wmgX;xYn~s`R<5juAb2)m4sQ5z|vq_@>4CAItO3<`Gji1&W z-Ul#<S<KMdq_yN=$bPqTrxD?#b1R2cxLd!fW6qmV+JqXGR@PO5!U0fotvs|p&<wAa zj@hgZ%8OP;_6(%;q>?FCOnGXg?D<p$-T)*gbM0@&Y^#v_D}Qit1O3+vi?^xv92=RO zNTKN7-|U_Q&wME$&DB^;2OiL_ord5y?DWx7y=H+QLxoq^C!%qFQ_%-6gq2MYl9WC8 zEXMhKD~e$vV8@e)m$Nq@pADzcGVI+tmMPdu0w=;h8=n;HeOpw>ZHJ40x_s{l@|)-7 znPJX!REzgb*x1q{n3`SgMk6OWDyDclpeYlkwt!2S-;2&S>Wg%ohDQ30eo8)y|2OCa zrnvC7jUGbO2oDyN7v`0aQGB@p&l}gri>oIT%Rs({$+hJ%Q$jTg9{E&F9w9*~A_u?- zPFVx%`DYSrRNGkb+aMU)CXNf?VvzdHgEY?%-%5h8SUfO#OxEy3)xWKn(Vp+>jC|!Q z{-RB_fE%Y-VK7f@1~SV(KSEY9ZGgp?XP;)igWzm$IF>E!4CtZQ<OO+kz#jFP=o$p$ ztj2}ye=+tBOoD}5vu4@0ZQHhO+qP}nwrzFUwr#u1HT~U)duJwM&cyi<J0tg-xt{cH zn*!kJH4EazuQ~&sHyQL&=mRDY)Cqh0yjc)@C1YW6a9od(iy@qNo_Qprg2SM=M+nP( zHk@Mu45_tNGaj2ZUqNz{5n3#1Lk>A>55yKn|7NvgDsxFfBM*w$X2<cc9OG&>OC^?& zK9CerYws<z<G?sNTr=dXU9c!PV@_5@G6kf1J(>!@e`rl1uVz(vWMFuEPW<p>MWw$% zw)9`i{I#wyjsU_gjjfc+*4K~@y)nLo9Qh-`#>v)k>di1Uc8FMR&G--i&!Is)IMa|| zLP1M8?l`ub?cfntQW1!O?nSTTY6I07K3ArG*CMF1mpP#ekapx#6ZJ=34%6SoOb%;} zI#+6~A<kKhF~{NclsDBO9x5i<-RlkY-;x)C{+l{+@&`b5<b!m*y~3`4AI%{{5P*BH zTlkqgNsL3pvi@V5vYG#y^`h7kWFua2$6t~2Gv+@)CyM8-!cgGfVV^~LHxn`8&c(9s zEJD}Glb;<8XV35Wctp?RnPnOonzN7k0{h1cU^*1A%cEa+Y@`|y8<@A=dAuT=(Y4JE zS(qbI5FPRggC!u10#dO8%e8I)VCL-)gdg_>xF0n%bMrx*FEX8Y6KHz*;DmIKp;BP! zk^u&2-0Z_&)j0>fjhak&cavk*#CqtJ5zb+gLC>!$pBI;Q0`4h5uM`)5TCfVj&r1(_ zmo<+Sgypkj4uB{|&H4Hj7I4ilviM9!qkRGN)CeeHYD8D+pqV`|({l^2Llqd>y<gAR zFXyn@+)65?m-L3Lpof#BH@&2hkbT(yN=Yb<S?2ayrJEbZU5st#6nMVlU^on*#Nkr8 z-Z6Cgl~4YD%NODl%!0dQ9&oXUx>)`P>Lka1N1gnCUKaeXO51<5i9%kWqJR*jZ#yx< zllmSgvi2<-kHsQ84*BN8oYDg%ZPoKnor23PzDE4yW_AHk@pKvRJ?j+$^t7tU$nQ!_ z@*&#;Y|W^OJS><QW80~Gk-($6oZcBk0`xre-yI11zFauEUiidalTWQR<CS&uO-15@ zSy18rCYhrxI6C-)5mplI$z}Pd`P*tbe<3s8cG)9d%Vmg+BR@jL)zuKY9oG7;fs`-* z^yM6s`WBNh<@Iny60eWSsrPxxc9Yj*n<(h1&tlR@R>&$c8p_-;|BXCt?iLZ0k*Wa4 z{Kjn&MwUa;rxUD!EPt4Ye6@Y+k)n)ds1JqFyeC85)FZH&Z@FL=h`XvR@Wi*fY&kw` zA!GT-$!_bhRH)sOG%st}Z@cvK2(ylk2oIIvuI^%nu22&|2_9|rwEvn;o0fvZuDfe| zya25@xPHO|ziqGLn4WMN;ZTNh<Tmgy?iB#^J-Js?Tm_MBGR;o^TVcAHDu>W~04CSi zlKp$8KQ}b_VoBZnT)LYaVUKOxU)}f;U@rChMojv1k=_H3E}WCI*22=7WgRZr1^)Ou zw}`yj4@rcaaLQg<IBrL4xB(V!JRm9RRTqy_pdL|1Cbem<eA|NkdhvqIlLD07q1vH; zvQ6vRrJ@%^O}pTt{1w9-?Z(nJub_jcto<V<q{CFuKbJT$dgZk0{@n}3_XQ>I)ppzX z>yA)SL*1cZLO@e*+F8)q_6CIwVr+u7b0gZ-edUGo;pz)npyr&Gl?cTnOrkZmHM<{P z0`w@7%K{Ysb+-|Jp0~a&$<)S%G0NI8cJ8}&W`K%5z2!Uqo2;tg5*{OXUx&CskgT{h z1rqO52pF&O!+{-!8!e7f<jq}9?X5~(nIG0c<999LhT|bijjpz&PHarIKs@i+q8E0c zLY*y>+>s+>6@R*x2zk<rsobr&%QX(*Wm!r`JD4S)Y=Lns)p-#jgU4l7Nck5D147Fa zY0oy*>N5@q_3h8lTr{8>4TYd3_v(xcU78FY&~a&r_wl<wV<*T-rzNCsRyiqZR%iDw zLys7oVFpM|RTIWS=na9wnjhFO!soCNvcyC1)E2SKy!vf1&Y2)ot7H9LrW?%2ei3Cf za^On5vLW+kJ6@HcS0vq5Ft)FF*~63#pVJ&4&QVA{H+H3kl2ibWW0m)S!I`#gQ&KGr z2(44dAKPep2Hmv-uxNB)Y^AlHj<M`B$ucI`Uz+FHf)7kHEw1TngqSf{tGcofX{tWI zNnI#3_sxWL_=e(v?xzyW`o55LKQ@JJD$8rWrxj|^=d-!{fOHZ>$4*ZbCbH)l%R0Bz z0erY@8UIk3pYXWjJ&>6Pg=jJt+qSggtBOD!PqtRb>pOh=p-a~KfUf0gHehmpD=S3; zSQY_#7u}Boq?gD#vGIjP&oj(>6UBiMrF4y}I}|PM14>xTduvGQ)OdHwnK4Ri6k(ms z!%2uYr#|1-&%c8n)1_So`C>Js@KE~~X0ZOGkR#dO?yDs4XVlC)6-<Y%DSQ8Fjgq+Y zm^?^A*?dt3iq%9wh&3$m665F|W9*{@qjrl*4>7I;jgP7<Sepz4AxXxZJ>MM?tEc%T ziUt~DEE4%q91O!S$2yh~WRjh*n4)9PJNx_sXuzUwy#AB2Lgr-*U>NldXV(x<!km(v zl8g;)wBFrsjNfK>A`{J!k1z3LLQm(k$uGyFB!6`ALGcpqYTxFc7TQB9m8ILN$_+ON z1jg(tRV|TQ5d)!Ho<WOkmzMTahO{YXPX+vg-ky9@{to;m=pYsxV2~af6|DR+c}|X( zCXx5!A!6&T4QvD`2{9V(+92h2fIqOaOAkzp#zm(`2M+sS1Q%f4lT+oEJD-RY%~G2| z$b%Ciz`etb4c2VSc4K`c#$<SmS*C3joEd!$I`JLD1xj2Owl&vYK-sj+IUV#Rc@+3y zbeD1p9k)se=ov39K&Ta%%MJ4iobsm)q+tMF5*G<n*zP2oSYK4$(LRTuJp_*2XpgOB zuh)O}IB!uyaA)ET_v}D)Gy=jc_nsVMf%qCjSgiMAkp-a6)1;@!(aC$4lyu~=18G7> z4ma!`j=PXTfgbP*MoqX-ioCyKL{E=EyRl}?E#d##^S|g+1NZS8nv7rbOVbSjLu05R zT+Ug7KJL5)q-D9jZEEqSqPj81`5AHZMQPYi-YLb9b(AQ)044^z+Y({8DIbZe0J((l z@~y@ki0&~((*CIJKuS(<>_|17Z4Z;#8*i0M3VYm1HuFmrpCJW~3sXG6eODXH$OEwW zAB;O0@8FhMrr#mGeKP8Kq`gTR;B#H@&y<t}w^@e;)8(fpE{4E0?A60@Fza;0Wl!Rr z|H#mQOtFKFI4(T7pji+MAGjPtnrr<{jj8^WIp@dL`Q2B_y*9%e(}`?;fb(OYt9VEX zA5Pm22W>zgVi?oCG&p?~&*K7Lb#)eFw)3>RiEWW2Q-uU5)UU#)lp51ps*sDvi%{s! zF!mJN8Y}7ZZIg-O9r@(Nr_T!`%hBRs-pf-&)V}_zjZB9I_}gYQN?@a(^0D)yF@wdP zkyi~d59BW`+Bw8zvAw>ml24>QwOOP{>ou9y;KPQ^viP?28iTOGAv-e~^R-zx5|JwZ z(tcFc#m22^JT6tbX=--SrNc&GBqiQp=uqqr1C;ljr6WWsKgH@9w%bG6t3O*LLQVKL z>g`3X@+VD9i{=VpxZA%LpXc~Y$n1Q29t)DtE|6q_=iu7b_aJcarqb4tP8op+Xs{@_ zpMepc%K>LQ25DH6jrQ>;eSeI|X@oJnAaI?|3RsyoL5)OoPX}c<D`+lYn}AuWp5ZSP z2X`!Ia&tYMHyK22G~LoXLcQ8<A2ZE`pBp#2x5VOO5Z65Bs9Q#&Z(fU>KZITW)l=nY zJ<?k_%JyF&J#9MKOgB+7)Qi8Xj)Rwqa_#bUaZnKAo%8Kpd8DeLv(F@zk{4mBC#KCt zU^mCTs=`qyzE2=17@C-{21KcYz?&Wr{5<23u06cDYn)vP9)R^SnXEW^PRI~DNpl|g zO)(ROtN)_LBpq)s<cc&%Jr3(2>1+x9srfu~QS}T%4<Ul+@WrI_2D6W^iHH0b#}@-z zBQWd#@Ot;(P$K_dAq3O^;(GkY5CXdv#R~wXz`$2*O1xpN*<XB<FQyrw-dAvRv(ubH zv~T$0Jgd>70p-%&rodf?XlD1s(<#kFn$0^S+gp}cv0}UeNTkjL&t0aNXb@TI6th3k z>8*Kg@$fS!C_)F`ziB4}MAMH#Wz`mb>_yAUVf-ACS{zS3jnqEQo3++cNG!!=r^VQX z{C%LEB-(yf?V_q`tLb~F;At_pe)$yT3a1fzm8;BelXH*kcVjP9gL+ve|MDf|#djeX z=3@o2ez`l*8TUXH2u4!REKLj)Y4y9&g5<ovWfvZ=A)HE%Pevj=d)tz9FKpQv&jVas z6vMp$Du18%ge&6aFyvv+mV%NwmzJpr1R+9YVUbi#vV~}3s1_J_LW)HHn>To`Tgw!F zv%#yA1vT~}_5&iAD|k0tMn(BZKMDTp&@_=nWEoZ^;OmUzybVPBMxF9h%x3fyjdc5K zZUsig@a3~Gkgb5!0De*btk4>5u0Cab_C-?DzFMHX*t$6;hmOo52Y0K}sY$6<;i|99 zqQmN9oZ89e<J>Qg9aEbx8-Bg-`GUwGX)<G`>~9B<oULw*i1=;Q4N)`LpKokc)a}+I z%p_f(t#RPyyM)1_$cD(ZlWWq0iDw%Q6l$dj1JKRPV4cK~L7Y#EWY;^)D?sFPo&kJR z;gH=xMafvL3ljZuky9_fEOQy2(O9Q~YiEfNdMmkNbBUm(p6$?0SvqH0oDI|!IzErB z_qt6Xhhp>3OdQo|^}Uw(j8zF8w+fvIn`&HzU%Lf`YDRZHt%nd(8ABuO_=S?IpjWHa z{?;>@=EvS+JZ0dw@sKP34Rq3!3;`tqJ1$Gt+BPDs6rO@0jK&X2RgAb)QHASo<4EG_ zZ2?`}7-tX+E<P!m{&A&&zsos92!JEKu?txQt0-})>Gd(ygcvAb;#C712#M;o#8mNz z!@~mZnMzQ5YNtV+;x0PFi<sDbsnl;@$2D@J)C6BbkHiiYVA>zv5>&RC4H;7br_`vN zT@N(0DLlG=>V&q^vip~b7>?P`6H33vi^fhEhj!S0bwBeuT?d9mXQ{?4QQ^NYY`fSb zA!^mAn?#vEYWP<(#`oQt3RVA3Ke}xKn*H{NxQeEn%^{CJ%+B(}NBCN`0s;%iIli!q zYhi*))M{%nhqP=F-Twd(L4G?pwn2ByJnhB?0=Xdjs{<!97rU#vH01xh4ix9q{DZD& zVDg<*fdg|?9p$C^br^I+jhucCjB*JOka9i3;<0-?6}QlCLW1=hb`seUXc>7qbH3&M zC?G>oPUH}GYigWl<b==Bt<W+fxrle%P0S|cvmj0Cp&&EY3L7E6?bJlN@W+Lq?!0ks z;8J#SijAw@Iey)Zv;KPz-`(M5$7TyZAFD-iL6y(u3ukd@W0ndvks#Cne?cZmg&EI- z3jSU!y$ITQYXsc&P7*J<_qRWc5f%kfDv4xiR9Lr4f0eY*+avG#vVG-s(jo+cdj6L0 zOP)}Poy#*JtuYWyoB;E28!nM79#dXN<q;>S&IW!l>WOw-y%RuCM@;JWRC|PaeFs^} z`G=#>*7z&9+?gVTK^=dgL_vkVMl&W`*67?t34eX(0C07vriKh5C+XJQD$-{Zr|Uef zR<6NGv10olWb?nF!2Jt7{_jd03&a0pxBu~P)|>#i6|T>Lj2JGRlcfUDjV6#(^>E@% zVfZ@KWwH}%4QYM#Ra0IELks?(G3eQi7$B?J+sxf8&%%_1zzz|nWreA3XZ(ckrA-%O zIuwQz`0Uo5n?CP)<wJ!9*Gt01&=Xyv*IO{kQ`GfxC?amOd1vjTousavE=L1nENZb( zx%D#6fa3e+cH7SE0;2%$GjmYQ0AiyWOPkv5@a*L}Fl1yxJ$6gg77YdHU*geqxEZ;1 z#!RV3ru+^X@QqgZlrD{eyW*<nqN!S8#gQx0EYyhuD;OCYU_TJkcl4n|ws(X*sAsWx zv|U=yL{-$sLZV%0u*l2yM8hz@Tg+nsC{rLgf_AZS{eE5hKtp-Zf6#EXP%wq1g~`KO zSt*VO6Wr7nx%TYgq@JPgB-qHDx=fsNU;RQ~>rJGep5E;MWF@6%PQ%ZWXxHl(4{V@_ zl+?7t0W1iXu<Y)U-WftM&;<7U<~EwQAo`Eo%&e1@fnvmHF&E6$P6}<8il>U>4>4Sl z-ax#hC;jkH-s#k}!%d%C>8n30$KKbrI<$>wCh*7DQ6VCO0sWD2eZ8$*<O$Yf`|*_W zCK{mmHP{9-K&F;_Gk$HD#lE`~G<O6Du=t$>YvY_`EK^%cv0rXR3H^;hmrxI8arwz- zXuHR+&*X!5jL>{wCh+K*&8fRP@y+v#IU?tq>#kYuDCCg1Cxc)4SDlF9Rf1o0?r$%Y z(pPDiXzCXOhgZ4>Pk#HvZTW%{Yj^AzHv6n!PE{#<B5dYfuoo`|peC{btFt*6y<~rD zG9s-V&M8KBJX<)nc>@bE{z=BMP%Fe^{eI)L-7nU$Td3Sd^;}?t<LZmc@28(CrPv4n zs1TG9rMVjRP#<b|1PBSPrLpcw7>IjW3Atx?HZT%HuDdDuNLSVZrpXo3(fGCLJLALf zX%*%7`~2^whCV%ee=bJzxE3=o*kTHdXF4@-hT1$*KmeO|_AT^qF<FC&2tEe^ZtP)R zP>f*sXFu~((u&8aIKIsduaMntt>X2D4}!u&Zdy2$(p;*yOA6#3Gz;*^P!5%UfK^Zg zMg2(Bg#82gVsa&j)MLnSf|#<RA>=^DQU9f|jCL?~eA6363hI4ls%{#Vb~KbH<%K|V zwis|A>%0xh6O)9Cv`4nmGUMi41H-}@6G`B}>+u)%{es6Knx$h2iFeppT&!b6X^D_N zkFW@Xw5a69G|<;^+{*`9D;dpeZy%9KYs1CM$<mQ2Md-2XBebeCNuk~ZvoG+|I%B_h zniXIPnvx$X+mToH>fRxzO+02C+QIsxzv!Kg6lRlO-93)yw9_AFmK`+fC8N2kC5Xsg zsdizp#KOl|Jkz8XMC-Ii@{EkE3^C~X6nQ8~&(gb(VY~j*Z9#TB1o6tJh~(5|AFX7U zJ)a7@oL_Chw!c1l$FQQJxits-1@2Vf8`yUF+it-mYdpkTQt63ruHNF=EOyaErxYL~ zA9k7v_4T`p@+!|KB>I+uQMngD)b(YPm!*J8yf~l+*O_Z*F~EB_B~W>u6Ci1tvjYtk z@00@Hs?Iuc2=8HD`go0G%rvyK+&;kR13X?vDDM<1?Tqq+Zn@WFY(o5ZTI@NI<>T!K zHZ3mtQ<mAYak3qOBWLnmoIFJgXp0LfWDf#IQUc0AXus22lr>7bTk=4d4;*aGtPcnt zdyM8qm*Uv$f*e=d%A}hQ$=T0+_WVB9n38U7-<Nfhg5D|+Pxo<qiu9ip3)%{NbzP=M zDJQJnJOe}nXuP&~hRS|obP2Zf7}!P972SY{6#w9$`sUpKmMahEocqfgd3ryw#zeJS zK!)7Pt(h{|p6}~L?zwJ*&(=qHS6WecNKnl0&n-JN-0tlfU8Flp6T*^vRW4ts)o@^F zb(hSV)p|RRS@Md0W@rHyX?(W`Y6c5sVDwEv2wHv*=t}2rgtP`^$PK`fO5+xb%oY_4 z>Y^^~dr<<-Le=7&-$hSV+XL8IBWoZ$|6;pfx^gV-*iqO3PSWGGTx14pY_V16FY=4^ z>b&+2y#@*0S0>-LQLneg0J-_GUrBj{9q#8@3ujLD`STy3^XS#;BCy|wH^)t`JaxN% zqm^<yBVo=5l`3-lR_t`lL{qQFV9?f<?TyZy^Zhc}C6s-qui&^5W4Bl3o2-fLP%69w zHsb?Qo7T{Jq6l;klKY`&ss7tVl>8~cbRUcR!|!&A2Qn>4U5byj`E>sBq=cY~;G{q~ zdwiI3vV5o6MpP<(wX*>P<fx*S)TVnQk9x1W$hGLZClM<{K57(pEEH(n#8|a*cl)-C z1?u%lOnAg%7kGIE4!{s7gq^6`D6QkQ$4<8%D2kW0@M^T6no>c$O=yWgsVGz#;Mq+H zm;}kl!;F5)P=hkckubg8(aaySe7d;%a|2L^+L8#BA*xl!<d9H7KPWRiU!YI<9lwWL zPCN`O930%~^&?%Qm@d$PadiEPHqddaw`V9Byy(~zvVljW$!+Fn;*X!~v;!487QrWz z&3OfzZRdAL{`(=<C@|__6|B@Y1|3yo+sx*xT_^u2)eU(l>%VvFsKX{Ji!e{h`5WIg zjbx1fyqMaQl5bDe_F$;|)ayQ%f40~imG)(uolQeq*T=cLtySz7sljpC9VSuIENDbl zNk9A$=4wK5mHc=W=FHI2+_B61zR$A6F;=qiM*oyQ%(Ku9Pavnt;Anjtbh9Qh_p`Vk zBhZ=OI|J;K%Nq?ClqeFmLAJKQ1<)!fExT{La1ctajOXu0{BD=SCaSdK6LDfFYcO_@ zAm0rqNd{b$7Vb}r6)`Sy*T3~N8!`Jvn}KInE{X#EVtrMsv$sb{1&aoD@C2d3Ur2LR zEfIJZHhn{Bd%i;o7~te#Cvt<^RW}D_zul&oMVyMN%P{5qq-tl}8kJuXu(t1sf8l<K zWxSqQjihb+YZ&i+qWVU-5ZOqT{Y6@Q+Kf7f;Iq7}ayi?_aBe#6|7+u31G~`&I}@uA zLE~^Q!4XAp?!zW%o<5lFsC33(Oc;~^dY2E^zu0jO7RB18t@4em*@aei!XMTmN!xSo z-PfPZ6mfU=ugu$ncA^&KG;C8lHSJybzDY%$WLv;C(?E@YBt^;GZ*7klnMWwLSnS;M za4-dMTiYlG1Z?Mui`=h`3p5UFT&FO_DXdiJ(t~+M?W7z)@9`gO+<!;4WaRummkq3J z|GzeFXOeuk#2amkSU6mby`3FG@re3wQ*AuZrGQPNUuiu&V}g3Xi>u^S=`VL${>%h% zZbEY~d1SqCQ+Ytgxzckx3zZULRvJq;@=9zd@e?uY9i>P_)3xb!`q#(PAtxm9Q!lJb z5F?*sX5d^FBZ^L=7XCt0e|JxW9<daWCC6k(dz`PyNa7RKJ<QOD3B+{^dp?uC+PvnB zYQxV;50^e7njzY86xKJ>M^YLHh0{4Y{pGqHe@H&+gC@oj`8{LYkD&{d;A<qYyqqpe zwWUYXei_C$M3j}_>(~|KzoOLR;;}=oQOc2us21tw#}b3LY_GO|E+64924TP-a;DtW zCNzF;WwEXDJ$YSC>V{rI=QHLA)s5PV4qew@TNN8E=3*^lM;Msu=fyL-QeBY`De>S5 z`n+8koIK4C179p8?N2fpJWC$kuo{gI@)3IE-p$M~tL*VYLx?)*hS+K0rgd5Ze{>p| z1T;!e!JT{PLLn$Z7gEJ4d0@^Ai};4{F#U~)b8_;n0r+1nV1c2^#5!q~nM7m(7Q(52 zRNtRJ1o=xilX|5yK|e_*YN}S7aO0)|1SLcVx#(qSnH^|Q?J#6Ki}ydz$?c+U>9D$k zFWd77!XW!~OvcyGgHtPv6A1%v?}C5q@JcB-NJmv+(_FU{ry{rZ&9MjX7f6(_vl2l- zc}gMU?h>-C8CSb^5rd*Uxpx}OUb`0TaK67ENpy_(DsqXTwmmjTBgrT6HqPH+xlUjX z{h<GdUiXzF0N%P6XX^CHa%=?X=TCjl8Rm2rg6E)Lwh#SnW~gdbL3A>k^htvPd;!J4 zg88@5tm;<=<sbIh(pY0v7`Il2w<8?a;dy|vhUcz6JF$&bucRK&UI*bHxzPid9$3Hr zhJ5GPq$lEZdr4X@U?{d)6k21`!rU?-lK`c$fA}R39sF-5MXF>@ODQ@QznP(O6jWsu zgf;k$S|81jmT!9|jMRB*%@D;-OKwzl7dW1L)Kls1%OTWv6X}?BX^cIp=xDYd$0NEx zp?nwH1^{VDL4KzqnkPMWW$9BozSL;(Mw{qRle6kb`qUL9bSCxQ-a;SCdv)MpdxO=q zxTSVaj%kCP-wNlU62?dZ3~-BPdlRI1sf>!?{Y<q5FBi;#Gv$KT0&#i5O=+FiaF4m8 z*vdhcG5ZIg{{c^oATAsvT{;JL<y~!h=o-RR>Zc4*z#BPiah~i(dBD|KtyiIjqp(^< zFb2;_@{t^B40|7tB_e934{euKTODdFfhGnhgX|_r{Bhde2pP`AjqkkEmAgsSfIrwb zV#bRD>DofMJQaI(5tQy%h96tMpqe&OQsdHl2IZ0JuaCIOS6CiV<G42ON5<%Y_YR$O zHl`rXSJTGABO}Ogp_>N51Wn%EkaD~B*sd0Dl)T&iX`3AS3>I@n!prENF*=^6w`Rb0 z<5@z2VH>{ORgcN29G`C2c<Yg?DN5w)@0m=1j62YdgIUz2+1k|ab!y#!9a6BJt9n=Q zQ17j+*NyxKErKnQr^czV$u8EB8a)q7{%RgI1>hG`?Rl>JlX-_r7w%5I*!lX^WLcy+ z18ayx6X+!>OeG%Nm8ytD;9xW_8uHrXtH=|)kYQz*urYnNsLNuG%W4etsEw(ZC5S%e z{Hp}~A6t3fupq}kar&Tr*|PPh`a>F%gT|p4y)LLjG?uQ@^MO1e3Z@m>9MAf?rm=ci zp%COn&oRx_v8_O@-?U#F?p=7%)PW9#)8&OuyK{9u3GAtpESH2c6J3VnsmjAQ5T*F{ z&D@fCTRP3K$bG>$fGfQ30AWj+YSiE##kC4Wk<5!}sNH1zuV#5z#uRfISo*rZIv-2g zSYD`vU2@1an^f}@6Z0_X$bga~q?BnZD~RcpsUN9KFvN3gobEno*=zHGZ*evIA7Es} zc0>hzof`MCm|}q7g)*iYuh9+|kW)1~(^0<o^qQV7lg{}Y9)fJ+ACY&YaA7KPb??Am zSND=Uk$P@V;PF43k#X4}M7Xm_C6o(Rhygk*f<8OM(X7xU_5|c3`tS2l7zBfC)pp;g zcqZtAPk=P~<|$V+TE5~Iqw9;Umd$vPsk4JqJs;a?z<9dfbf#fPIWCTnQig9Wg_R}i zz*I_G;KVRtZ3^joF+$ce)Px0MEzufm?j96jmbf9~#tN4EC`sr>9|Wdi8B6HjGBG!> zKtL@sjZ|#;hu@RZ7i)UIF{2(No8(!g`yp8IzIDH|6qhhix<dcb6LGpngr~t*7#$Gr z5yq4w`QEF3^~CgjE!^2N&7@VVF{FwiG;%{vq3M4+qnb%(<xw$BIln*aDk?W~{c^jk zSD{Z_F>9to6vKpoxRh!+X28kN%Bn5UPt%8PG;Motxhryf;X7k>-|r(VUZtmzirR&6 zieN?*dorX%XOz5`2b+q`oM?-dRB;2oZIF2?;*)oq*gN0$5s~CKRSDc^64=m4F8qg~ z!*@w1z#G$&YZ>^kY<f4NX4p_n1mXCN63s@D288MIg4&nlsU?w6VgkjtsIF{m7LUXk z{`>Qe^popATs!9<0CY=xwChP}S|vZ!`z))F?AviyLFBJ;^dlZKB%FZx!<IbFk71!2 z08|7hB1qHa(D9CJce<Pn{EXx-Kf{nLrbA+)HI?HK?pXxN(bn^o5T>6C!6c<;K-uUo z_MT}oWOBIDf7J#tByWvAGF|-TIey@kd-KQ#-Bmv(Pf~XKGQhr@A31%s?Q`Gt&0MqJ zCjILTuG*k6VzHQlO$zkrVtyskmXEv?QGGmiPiQV{_Cz7$-x(@umEF{9lG}aV7pYko zcuFamYfPGvBUe`4ghUJABC04!!p4+?1B@$sIsnv6AyM%0V*SbvxLj@b(w92?bqG-g z!`o-^#^i?T%#KN{wD`UU@H@^?qdw44bmtbQ$wG&WMrYN|)Fg`TFo#L=dUAEj@7Jw6 z=ft5B<EpFcB*_yFz|D6P<)XSCS~teS2pp}bgVrjHTL$5>^UV$`+zt>F%KJpKb{Ef8 zQIP)yeLX06xpqac93hv6Qh^{crtiY=RyTldh1@gWgnqecu{h$kmr@mGV9KqD4&I8} zhvkPC)j92dLa4G%ww(qOllZmL4DT6q{dT_w8rOw~3+hz2_JDSCJ1?-)8)p6Ji-Oni zD#`b}ZUI&F#eimHCFwP8mwlKkrvZx^9Z!MNKFp~70C9Mp?)Z*3X}%>1$a;=<XNUmr zE8=lWhbKDQFF3hkIq#FR&znwR{*s2{XaquH`<3}@!lkPUgdnH1vSp837h$x9Pp51h zMTI7!AY4pf?yQ<uLrec{Qi75T$%7}m6Q8sl@`XCS;sSZ{2UYOh&T&>m2Rv2?zRVn9 zeI51PTTtRgx{6}#BcvV~IQ|bd^S_~L{tH<c|F_L#WMcfEiu8XBS%fqzOCt1Pj*{!u z;E0RGGx>11l!+_HsBtH7#wiUDgtlTg{giqhI7U33{dQ73=PoJ9*}G5<WMN!yjQsY` z%F_8mp4iVg2~^@uWmYKrIGPistQk@4h|OOxiP(usiX_7QjGvS-wV?CMl93a;9pGA% zEl;2e-POFD9k`QDCM<-6fEy%8bqSl-{I5&yIZ+3~%mUP^j&gg?(HNGHuns=ONx?{& z70l?pz<n;$t^{~@dmxCgG3{YpRfcM913`9)0kt#nV!d;}nEYHH7;*f*yHwDmrkBxT z10)*e2j@TryMb(0x(x{Lv`$oL>maJTi81BtbTtxbsp;r*G|x?QhY-|lBp+<hPya?j zu(8yK!=s1n0HXOq@bL{6@uSYpy@-|Ge23DS(25jv@Gf?RXcC*s`%!~~lLX*xDt|y2 zM%Ymyx@Z4JUEZ(kE}1Y;(RHD#wS(O;xTkz$07>jG7WcN_&_fEMRDF_jTf}T$Rs(q# zp{_-e=7=_2X8Xy-QqP9<tYJ!eM8+L)o$niOEOObasVcwCvIIjU{oBlLPTDD;Q@9ls zJU^)ZO@>>RFq0N@<Mk*AZpL1Zu1LX3h1G=@?DXgJyYYh8UB0*RAEw!V(?p>Z_VZF? zOIyZwb&7V@1OEk|{@Jm0r?IHY(Sd*8q^mUicE+)xQQuv@owk_n(rDA(PQ&TFq*0aL zOmYl2e#lQWQcS2$6N0Zb9Ez>3#MTg#YhM`o5s{X)nRC-Ik|&FICUwl>)$zBk7G*#O z021pqdjNPnWNGx77`vZ$`Xvt<H%kg7OF5>$7tq>egRYVF%P!8@1KFjaW1eeaE-ox+ z=#P+DIWB<J$E(V`m~2h0#rkn!K@Pjs@f;D8!z&wT4-%otq$9YIeM9_ottDHWt7H#F zVR3weawe;^w_pj{V{-A2J>ww9zYiKDztiNTn+D)QHO%6L?Q|{|=*FIE@M_Zs;}S_B zk#Z5fP5qR~aGn;Z6HS@WqA7-#5Z~U5pRk=KenQt9dirx?txSH|s)cyoeRZ5A0-0=3 z8}7WgEdaI-?WTE9){%V)t-fFPY<e-aI!>;`)UUU3a;2U33e69D)A1o~)HbYmd(gj^ z+l~5*K43%DA6892l%KjK|L997C{9JhQXj>Dx$-wPB0dqVn7ws4yR^tJHk)J}{(jvL zLT|VbC75*b$u$RZz>nIF+zxFCS;vwLH<3k!%&nOni7SNlbxL@wZ`x2xXuwQdboExA zfBkN1iH31xc9B!Etkk<l_HNNrj3^HRUb@KzmDX!_?D&OFL36y!s&R_^nQ-~vHQcwI z;%KYkxXP&Bc82F=xX$rLb4J#MeY6wYOe*8B=6LmJ5d~Zb9mZPtFlu`SFLE!tGm&Gn z!SA7VJZg~7<q%!Unx1pWu^DOQ<^a|B()Jll?E|Wmz((+S3pQ|cm55*47Q9O#j$(y7 zqX+sV$vhi)M%8*Q$zwtM49%gV1q-m!#&8>pI-d!tSe5azh#O%<rCg=M>OEVy<rf|a zt+t2Ep($odyAUPn$lJRCzYuw#EzOjd)MNFv<Q2R;p|!U^BDCu!bOWW)EbdD0-1pZO zv+$(_+7WLtT*7~l$^VXe$Nqm*l7-=aE$cASt9Uw?(#soJDZAM6@j1IVnHv7fZK~ax z)956LcL>mmt;gm>jUwdscK9C4L%kHx8Kt5njxCPkg%NxAr#iKI{t>Ggq;Q5DhQ$0u zd&BKM+{&#?pX#Q?Q0SGawt+b?EjG6CMbTUAHmp>*LP(Hvu3a2ndRb(GgfW9UE7lEg zz0T0Tg8odKr$TLqUYv9VGZ==Y*35e|M-b^Qhi2wC;=!av4Tf+2y!KhfUxkWMeel=8 z#nSY@4@b)zRa?;}yp~ifSdXhnqEozzFcD=OiZh(jtL21PGFBKozp353<cNuQ#l_8x za-*0cOFX@MM||ThaZmnHpn3T7oP~=36d|q2zF$hH_vP_FQ({o|kWV+&O^{eOo!0k7 zIor2slT@ZFcv!M&qRX$+V7MtEYt=WZBq4v%XYXCSZ`0aeGPcU-g>$4%S!a2mQS*pa z0l2Zp6PE)ZN`QWpNAwC7nG8Fz4*h@iIZa#?0(Oo0O)4bQrTW>Rwe~wYO&K^ay5Y?m z)T{_iL%0_B8&TN@V`A3!Dg(*m0&2vMVke;S{4R;Ut4NaeB|e`+qAOvu8a2`PB7h(R zoX5d9*P<mdgxl?b4ANTp*O?>W>C^ah6r_2FgX@x(s<?Xgf>o&4JqazO##kU2pzl?k zp%~hlO8oc-97nCfB&{epm8w5bgGcR^8o#c%X}-!V0onU{B+5UoS?kv!{8ms#PDRob z_@pwMYA^+AP$|Xc7ePz){(*hoJnKvgR0Ne)yZ3l9amr-MBSqMs`!7m7Et=ijX>aYc zHG-Pm^<D`m-1!;Pzlo|a$0(w`Gpl%-JW3Zk)A{~IoKz^dkgj#G>)kO$!cx{Hm#~H- zfiuTTiBLCeS(qBnz{Z^+!lXnN0+NLG{C(&eY;M+Glnh(doC|g^b=qX3R>Ju`T^g%s zxvNdlo?c%s2q$!K^)JAD>x@;2W@wP-+nSIEc|dWOuNgQ1*1C@6LECbwpXIl&>7TCh zcGaqIF220&k+k!@weV5vgBAN9;9}yC{E{%SK9s@e%;bnerH&+as(=7cnF_EAQ~VZV zNIusLB=w4$AeUE|Lg-V<=6}K4pdc%?>e=K<J<k?L(tPydW#<H%`M7LMLf=&y%_xMw zU&uGAirqDSg7L+vS3-2l>}jyml8H$vY3}9gS4Jdw1^B`8zLsvRNOnIEaoR?cu2gP; zFOHC?kfEuJa_+69S){Ar*}S3+GE1cmrvM+92$6)c3O-sjgjwbHhg4?V{MVP>vC_`@ zbxk5Xf%^>hdhA+9UFGQh!W&Zm-fXClLtdf|uKh&gf*i1BC#?p48CZm<weNY9UET!x z=F~S>%J@69qI;$Ml>LZErRnVzlqAvnAo`Ni-VwFsVyT(polQrCJsIt`{9z#Ck&B}@ zl71574eP9b@L6yE1-qvl7=pg5&uzLi?%vUCJGx}<oiju<64h0TaDtJvI<YnyZA#F8 z-w{QK#IWs57pfA3&((B0nUT80*Em`9TB!amOJ<}T)eRDSr&HN}e{=$i*BokNQfwH2 zzX)bMX`N5xCAD+bK_wiv&+Bvon;R)BkFeZwV^W+`O;YkS3~dgt9l1*kUS3i{>ujIh zmBIrG*}_8_N}stGvgi{7INC~#@6yln1Y^8Q9p_<!bft7yqXZCASX_F14*Yzms)gS! zW11G-^uIERYZK_Q*YJ-fv9C;V%!T?R`~xidB&YR>!4~*IZ>{G(HV{L(A%|`2=98bR zNH%o=`oueKsRb)}->0`JOwD<7AHV*(ID<vgN+fGb^ZucT?w&T9%(V%FGXYJ}HiNo9 z-xeibYvqofDiChRM;Y(!u?N^&WrtsH-&~H-QZ4e~UMu6Jf^aB2{q(UDYKsBGZ&nF_ zW%nOM{=Z@VF|si+{cn|LW&B@+c}7<D|8JQu2rZ?0v^70Vno&*am^~CI^l^(zY49PV zN?L`m^Ajs&5Im~{UIV7uFIl`T{@_RM1e|a|9aBAJ!vlOimCJ`k4cl#g0QQ)HGK<rd z@*;%$)vg72RU33GfDIO!RgqMmVfn<Bc-r4*XVo8kD(2rC;<HhZZFK$)oFEO)P&hxo z$w3(hz)+QhtM$MkK9i@LL5U<6VCmS<3Ak}@At<7ex(N=MqRBCGD^2cCn*M{L!AaRv zT;S<|-al7P{tz>QpGRG?W*)b_LlO6F#lXS>>0aN<+Y2~v`%IugpE{7vrNSB!Q(J}H zwt2C$LsG*|eRVS@2btVFE}s4nT3r$|9PeK;yTaMt8!czlJLaXMaejL2YK!F?O=nPP zWQQ2PE{~xa1C)Qh%Rd>@E(w%so#C2iq8q*B=ypyHQb2I8+7{}<1YT7rP!)nN1ovU@ z?xF%3PuzMwA9w$vCCiU^8=XJ8^F$p~bgeC~H&Q|6C+9rp6TY3E!8A!mxp84*JDq}s zxT~o`$If@|woke?lf=h!+>UzF)+gOLS6z|vzRt?mjcpTOn3K-(BQVtXD!dt4Sqt*= zVIa)I?SP3-*J>x-G+(m&?O6QhmXw1#=T85O7ob)1#)Yn>2dX0bqRxF|1b}aO5>&Fy zCDYf2?)ZyK)DqbJ<`WxO5BgO=IYVOmsqKy>B}t}7ViQvvF4HwwS21(u`KP2vzKW}V zHLSxDh&$#PEEqaE>F1TQ;$J)MjJ2=$$&en9eK<AnNJvB);}3u{^csy<e4jhu{w#nY z%r^kp!VV2j{3E@}%wuFUw~5>P`O%1+YtHvx%(X!#bWCUoGc<+`>e_2jNxN&ufao@X zq>%g_R=A>j8L4t@Q>^+t`tJevfQ;|n59W876i>B+50Um1!`CHMe^$DthFg0Jr1;`^ z(33&QTx(Q|<;=rI9aZW^T-NRk>MCi)PG6qUondRb)wZ(pi}o;hR(Sy4x%VK=bUOR{ zdHSdBt3l2&-iO*G=Yz8ITPf=Rh<Hxg<ZjvBom3+}F@dG5Q-qpF2|B80PQ=$K&^|ra zui9`XnCO(gn4i+i@#eu{d12}#`|xsEsMUtfF>iAarJy$yM}S~Qn!<zqDjNc33}7#$ z8_-#_DnOFpgWSiKQCtX-jRtQQ*w--|^9X~dN*1KhslEA_U?St3MX!xR|DztDlt%rZ z^3T(Uqyt1X7HJNKc0FYwdWW>m-t>dr+lq9iJxJG=DOzNFm^*o70g~AdxOwgnXTQjQ z2wr8k@P6{?uBrZnjb3Y5`YI_J7}{VCc1A~lxsW#Iy?wGhulKm5*jH{>?Xl>w0mVuq z6zE9^ot*9!1jH2YJ#JUZsl|qqcx|efTXH-{aA$d!k5UQT4lrgZVc^KCkU{AmDj%3_ z)-O4$8;YT^l*SmsRe#rl6We-OUlSgl<L%iZrmVTORO9}8weam{8)IxsWVZHwwCWw} zFa<%gQKju$r<W-4mV1$jiPctWbYU4Eg!$L=G&s_s{IO88)i7dK?$yrR`=&RYD^S<e z9;2_8wVr>}fvl1^e1=s3P);ayR;tE%^(&n5pSREUqkLK`4YPD`QY`9>F3dfN45?eE zMQC1v+$HWAM(fMNAM;&|AOyh+mxbv<W34kQ(bRK}>2@?+qZHQ^&o!^Oob*;<U;7F_ z%y?+m+Gqrvro~or-ct@am;R5tzi=8oxn^g;|M(U;BJV0bYk=U*FwA@w#)SzEfC0W} z^GVK1^d(t1G9H-LzA3rPAQLE#30g>NNeoczxNVp#+Q;~rt9*k*v^RWfyd&2nyqq0I z8zlHwdmye{ol2~6#7EjI5~~>mQ{4rx0tRa~Zq2~P_#BsbYR;pD_y{vcLD8CGhe@o4 z9tK&IKUzryt5qJOxl(y4!0AyiypuF8$f{ezXNn_93tm(Dg+C$c2@TUr6Rd;K{~Y*b z7Fw>h9hM+dm?JP4l3#XuT(^VZZa>4J0X?~hrI!v<G$a%_!k@l5;ns_Rh!u3C#=;CU zhR*$2Zi3k(Sx2d8QaieO&09ZiPQD8t7k+_Ue35*DMxI0J_bWRf>t8BKW1iG51{w0e z#ID2HkrJ{pGX0Y&`R;$zj&##_n44eFl=r#;S`wc`Eedy>ExeKv?Z+{HLIV{A+zra? z&})!}mnNCUM2?sWryo26ig7a^h>s)VaWPeNw9oKkUW6Vfn59mvic24FBr~L_w(nM_ zXQ>BghE*{2!XTxQ-APTaWF+fKg!sN^lBJ^eQ*hVvtjV(~?2jg3ExnG=Ub)Vehe~ev zfGT7&A%<d%KUMB&CR5HUhnc144mZ?9CmnJgQB;SUJ{33o+a4l^-~9ao3C(CK{wF9R z36+=wF5%^jd_js_&{i?Kmjnp$KTl4gu-2`F9P}ZnlKiK9rh04uJtQaOkKknL_A_X- z1%_OmDbX%u;WxOnNsMz4Yr|xHkgYE=Tb|dk!}3tLhz$?IGUChlK{|i%U`f%g!LH=Y zx8u<j(zXRhxe{Zvrz>(fRD|O24_&r*?^>0;-TUr2ZbK93Ttf%7=ZJ^Avc$ymN98mc zgA#q11<CasfxEJ6AqAD}4Izhcg|QR&U4O&0bcl$qapwG@-fK)8W`P9>OVIiB%&n_Z zIMmp+>4!ce408V>GZ_%BdUQDq*DoU0XMok|@IyIGlT)Z-Aey;|49)MqxUrDvBnrJl zb{A<cjoZitYYFYpiAEMU9J?moJ9Yzd3ad3zTLWPrt`Yo5+@*+VAgnAdF-b`@jp6@2 z7M}Q`id-?71}#Ic2IwRRoVkl=Fh}2;cSOhpd-`U3mZpO?4_n=$c9}V8LZE3V7fxvg z3Tq8a=Kmwp$7Y4@M!wmo3FqrG^SwfYqIDcyDN{ZGUdDFiq+cRbk4#Pd%P6mz@qX=p zHeWL7zgtJR{pPfot(ZI(P*YdUzTR?$!m7}_aO2d;iNy$fdb_<ru^a15&z3OfmmL~; zwE5P$mqs9(dwvFT2s9VzZ}2%O)PC4oo!+=3GDBiie{H?W7K)z811}K0WB~`q7c6iu ze%D(cYSXvO-KUH?qO?uLVzz9-Nslxp+yallA#>OS02q8nTP5(Z7#cC32$fdE36j#c zv|xQ-FONVKifoHvE-;!AP#-568bj`g#|*)M?Z^pZ$u|U;A(Ss@8!en53Z`Lg%9Okh zT%T)Imw{UopM4LiJ=rR$Rpfi$^9O~rrefVJ`nzPDc(XvIC2zybJS5tbhOhP2`#H^y zuw8)c?N2ff+muMR2OgmHc(60Ja@v>MlciQU8t$J7nU*$^>mM>~Aa{b7TRepQ98Cw& zaWQg9(8@hbHX66RI)0Gi|M{#D3BQyyFg(vv<PHQ;o-y_;ei#O#@uoD3ERx)>X_pb* z1;)pwmEVIY2^oV&;%E$r-=wLBk%;SQqI3bEd)%i1wk)W<odl(}LODdDfzv%F-JD`8 zREhQthh;TzOgbxD-uOs06OQZ`NnosZH31Zy+91=2-+#lBI8Fx_9j_snv9whSCa-$v zVhahAZ~{B@5lkyWoYR`xX27?v*teij<k-HCm4#68Q>^zv=`H{pW0}m^lw?Noq9g`b zemow_1w8E=8n596Y)I<NzDgm3y_d8JjFzc|#^?SBl$TgS?-SUIFiOn!cVd7bdqJw5 z;&{1njCvw^<X;Nw@V#&ekc=3e+$)DlBWi5^YiS={p|Jgp>;P$7367jDa~g5}{zh{@ zhddP$EjwWYD~>6@r2B{(h}4~==b3HiH7gcxdlu845xJHS%#C$hWPWfF&S<|QrqaPU z4o&U<*LAVemaINJSv|C$_u<4-Jm#z<C<ru%3XjRFEA@{lX-5Q+MBb%m8#}anEM)xs zilNzGj~~@k2kuW$6YZ^kCJ&Nj>KKtj#^rg<P`@^ImdyJ;5=C*rJaehSiV*~O>bAe0 zSWMVZs8XGv!~`h8HBce1-{5S(Ajt7c7zo8Ze@Bj3HN8gL-xx8UPw@_q_fYB9wB*Ll zMD{&=c_BASP23Y>&0{ZdNe}NiGDyuN>6WBl$}K+pOAkDo2FZQqi?wuXa2MEmM`KK; zUGuRbII@i8K#GXIKw5zS3PZ_{cG4pT3PreOtX$b}0n;P5%8WN1*`9mGQ5R)Pb2<@! zaMwjr61-MbmFf%L$W5;j1E-W_!>;j4#`LAUJ9z8@uvNPn%YYss7937ObjpQ8<*-jf zz+z7i4#gr-R%%!?HkJ}LUa!S(>qd@XjkX<W!&is>o~nZeOQMF{K}EArSq>+rz19wm zpzm=_$$SHyx-l5eFnNR=`>d~nvARkLV|R+E%Gk;%PInEN${=a-Hcrgb5zK409fA%A zF2)%cC5+2)*?$T-fR)6xi{x}T98*ee@OccqshHXXfHuxfW|&nmmD>&v(zHFmaSqB5 z#m1jFj@-GRzZf(*47%cBVo7{#K|iK&Hl|xDbWbq`VzJnJUn=*mN9fBAQc?Vy<a(3V zEj6#LzKV>b9FjfsUC=S=ZR`R32jEqA<tWBc*<SIFMTDOE=}5yD$Yw0RvJC+LtX8_E zae@F!S3-9OWXmW7=lvo<;p-%TElCtDSEXFfi0S(pWXJk&k|Tik8LXVO7+FbwoVb$n zA9p93U9@}>@WdKJ;GTSIdXVB~@}^KMvIb*+P>f47X%aH=A(9*JKV)7bmOaJtC$}iM zt`CC50Nnw#`JkDju?Ynm3-uy{S~q^;JT>(h;4d#>&+vvA8so+Jv95`)S_&RlcPh)= zKN)8qFz(7f5-gVSIb%7{%1O@JvB@37UQk{#@qe5d;NsIpE`QjE@xxMLX0#13bn?6F z$LOTHY`zlCIq$K7N#r-51e^5UD0{_XSuh@ux2^FQ>ZuvsDbdABeJcA)C#3>XP*ZBf zs3AgOB^D*?N3x^IAh_u?RpQnn!B$YF9em9!2p1&F);pB6-?8@T!348VQ9)hhigk4j zt#qSJ?v+*(O*vtopwJ~Pu2ag5A-7)<Za5Ld)0KW23Ty4Tw*f!cZ(cHPDnZ{p<D&LE ziZ7fBjPU_Bs0e;Y{WO;!>~$&8#m&B`5H5hrnz+0l-kcMc%K~bDLZtioLwQKSAm9J- zJ&B~$%W;B!HSoMko2mza3DZ|;B^*cDiYHYLl&0VlJW{uw`x+gh=m`C>nV3$h(rQI@ zj4138^o1!kHds-PV~a*suB4G&ca_&6Tcj61p#6yp=C<UJuDT!1elI_QR)QXw;PkxW zpCkygnWYM_h8Affbqdm?#|Y-B?Qb~qPt;yjMDoLk|DA5J4`#E559A4CFIf><DLTzH zJm83UXMZrTsZxQ~yPr>BU$wT6VcA(Er`WQYZ_e?EpMj((&9#v2aMM-wizRH+ZfHrf zT(yzoawmmj?v}4~AY3o)g5Sl!n}C*7ZE?pIo5K~KL-_Mzw4XG74qhIh`@17FqC?5= z7s(Z(cWkpF>WvW<{2_CIKdSvERd$hIV;nF0GL{SK2{+H#BHMuq7*tGN_nL(~^*(29 z5@u1{x)g#AM8$aD_0|tzHxj?%cng`XSfyzFWH2Q1io~3fc<D1rbi^uKnE2OwThUB= zd-ar3vpT$gQU&YijeMTU^(;bXI>#4;mCth~w(`*s0-(Ko0!5bBH&Z@-Ni4MXpI_P| z^^9&4;238t$GW?y7)4AO5rur=jqr2cI!mB6>X=jTAHV+OxY~t`lw2(!OmzsZ%LFwa z)@%6dD8q4D>GAH8rtQN+e6~J04sFJ&nxu6+c!=C+B~>{^O|aL6FzcFgxLkb(sBZ|g zgW_YhIjS5c&&q;52>5C#x*tt&S`4o1erfB<VlJZ?2fW5Yf*R`emvajrVL~A+a;|n- z|K6B}hsH?w5wXMuyiS&Z7k4>Pxa7TeE*#h4?Hw%>uE)bkm)@m@g&)I83_*Y#H$07= zl(Z4$J%>x-BpYut-vd;<g=U=|XPk}ajS{30D;(c$`n84otJ^Z4ER!qPGs0oFiRK7w z$q|{YnMjIwPq6_&9T_`s-W~(w|6=T&qH~F&wA~mxwrv|<Y&$#Lv2ELSc5HLUwr$(C zjX(XLGy0s1?jC(tbx~{7O^sS>&UZc!YyqTerpZzQCH-7K44}{a7D19Pdm|7xF5xxl z@s@Mj<dz{!2D%l8``5C)r!w(}wMaX2eiEH|+GA|0_hBHEZ9gV7mF>C|DscgD8m7RM z9}Ar!cWEd$$6!6TLf^MAK+J^@`HZA|sjzAX(VcvY!O%HYya2=@<w-VN?S<{cvlh+E z|H9~(!mCE?l%@%yPmL4ps4PZN1P(O(N7YT?Km>K~&}Lh_&Vko}QLu5onYf;`9!ham zxTsAI?H2c@8I0W8#|=VS#lU#Fr>o$sItjNNc0m*_omE!5dz#hK;~)JlV5tX>98Wvx z_{v^vHV_WrukGkxos6zn_Rg4ktlUC7wyrFin4ts9yg6RV=i!Da*bpeX?m$5BjchfP zt7S%`QpZ?a0|NuvhAt=M(X$)uv9H;S7sn8F{H%mM$;cwst2x@l<>yJ1l|Aw^>)>A| zPGWc2@hBK}*V#bWdJwm@8)2L|P!GXr?93YIXcugnI92L2SpUp4NJh$1LSQkJ1l(0t zac3@Xv7^`&p2R3@M_Q}9`HR@VMNFBPZ|>-&-Dy>Rq1HmwL(}BFl}d@q|9VK}Zu9CR zHn8&fsG{UFekhv+v6`qcmhHQw$;O{0mTJOwwe!2+B<^!2ZH7c`8E5<z7ZgN~#(Pb? zE=%Ov@l)lfou$|v!^mtc2Mh8dEZn;M7nE@|$)kxv;bnNbxaAF_v9AB<y&)gB?Lc=c zh3Ac=PsGG#oZ=wBDPNRMUjc9=HDLd*%Z`Bm4a1rVz{v8SWk+Vt|1s$)m(A}(o)6}i z(&~yWKPiAtDspuZPjEiiZSPn^RSv{g*HTtvAJDU0Pn&IRkzxsIM`{+h^JeLQeWa-f z_TEbU;*9t+L36UCHpe%4^mLNL=!y=#bWjoJ)&uTjt&a=Y!T01%zjn^B%}25=@?0)2 zH-#fWOhzLDuljJY7+{MO`OSO+`ujWgz3Yi=>9c{0|6c+~e|qDlk_o;x?e(w3qShB8 zb5g}q-wlqc8BhjTS<-=|YcsmiS07$+YS&ZipiG%GqAzu1HZO)!-#V_?K;gR#9@)SZ zny3VK;8{^ZhXEU!5rtCNkjb>IaRL$5yZ4Vp(uSh;itEqSlOQs(h=5HzOc@8?RJPB% zo+DZ)y=Jp*)0)$h)*m_wa7S=_h)panVLMG1u<5#(`UXX@KiS%re89|Fs`GXZ_sdBN z`Xt8HDdhpQMLiHJj4<vytxO;(63l3UdE~jZzkx;L*c_TK<W{UV#+=EDu--{Le*(BS zp*Et=x0A<_n{F5qh@>g~I#sSY8^w4nipiQWk!-2Gu0s{f#{S+@Y_8>5lT&wTk(WxO zRoN{altQ~1OnqxTfu)Hb4sw~BTdx<!?{cgYXs~1Ww-qzURu6aU<}#b5o0suU5G>5R zMuA)p85N)IZ1$L21Hy715LG$b)DeZ3Z|UQX0^ULFPeYE{n`Hd{s8H2u!&eX?KrHm4 zPxrr~s%k13(jWmas~w=%d6-U;4KCHeJJV|_yr^@ZHnuJ~SxZ_$W!PmDU2s_Z?z%<F za!s$Th*Uus>Uzkv^Bnkc1x_lch%zAh5T38|PtM?4ZXBU)=BF?NNLNT*vHBR-L#cl` zIKN8~xkxgby^~%bX)xgTvuCX!WybAD1w);wzsaBbOgSxV-mDlP|BM5u!=lSA50&3T zw+zdWsLDmBPb94^^BH@`gGGX#cg6oPabl;b7rwx`^T{S^f3jp?P?eilhmEw0I~!oO zC}58pm3(=R8_RofLJ*X>n!INxj>FJ)EWj2CQM9NZQ0SQ+ejV(uNfV{tn@l5?fl+{J zJc5aICvVq+W}!nR35f*#oi4Frkhp5;nn;)fY&5<wL9LnLSj31l2*}`jBpaZARZw!{ zI4UOj=FMY89_cQjunrXCW_+fHfjPX6Dg>>3la_pecPp|F2?(=w?!mO$w+DA2Yov}y z*M!|GF8=s9KP1($L!vACTkZN?8Mg8yg{r6wZ30u!-cGd5R_bqehC-eXzWEGbCxQ8P zzu;vSrm$+UCbG9{D?u`a&&J`VEyK8sG1Z|bO#VP`XP!L=B7`g&CbP6mn*-o)%q+>_ zBBHM;wz3}KkRRa_d5X$P2CdR^iVUQMhSDl!M>K`By4@i@sC;?EsrVC)@Zk6mdG%7D zFdye8=qCQY#0|ZQtOvu6UKs*(af3licXvL@AF!0zwjdAf$hiL`G~L9%<XSQVGn!Xq zjxQ=Ueg^_4wHxv_UZSxv#S-TOom`$$3t=bcY^(3XXut0##DSGF6Vi^FDHN2XK=Q0l zD}2fG=`~C-^80BvnW7P0=;S2En#t0Q{GG$NAGa~DoOinmXmhOm2O*z<qGV$`YUv<q z@QElpV^a=ugJ#>Lqba6%4H9bB>p@Pj^cqWVp}WW|p;I5ndEcp}zbgTc55b227rEc( zB-^w{f=(Nw^thB`!n<|<Kz9=w9#WdHTrDJ_63wGzFT3dZ__()*xS$S5ZsF)WhtyXV zxKD2N`zuTfF1Y5t>_~iZ)~<>T6y=#P6c2I>G(#Ss&B|WZAn_J!i*-hlT%?%wSt}zU zZ=1WPZ@4DE-&V3@U0tt@H3Ln>QnA@E6y~0hl|e?cx%e+m{QZ(B30q|eUz<?Ug2X1E z4p=wb>dC%tlgxa&8nzYR%Dn`axgv&zlMi9+$CqO=(22s~#ivR=0i1`^rrYlS8ZBGj zu4~J?cOU=6?>$jJVei9@_s<*LKP0cqHnMLL8TBF1iJ{5E$q$kGnmHmR9t*gb`}oa> zYou!Ju22%W3yo3@kIscWENZOD>Yo|XmoRh-s3P?EXh77J>w*Yc>jLEjR}h_Hq_#H% zQA;Nx1P`0g1|1j7n8o~)Ms@-wn)^n2bAa{1QaVBq+4(}=Fb_CLldr#yPuhTWIt2tu zprfj}#bze(CMu`Qw>oEYB!$q6P{Nz>+PGT#Pvlopea*ScxsRxpnG|vIEaYDJD{9Ej z;rROIsB>KajYq6$OtM}150&uyb0mhq%mnwNZIg)i>>G_)(@QA$e*HMz-ouILM6)ZS z&n3G?TdE3?x^=0Qc#4Hye8+8#(Ck9t5JndFu@COIOKO{{OnDqpdXhN-xb10g;!Vav z*o94YbUb7_-{gIq>5aq;3819+FtQ8O4eX6G5e(6)0N~Te>I$MmX@b6LW%sd&<0cs~ zQeO(>b;8DS3*&qU=9pftn4XGbNQ);)&&kdm+|`nG$!06oyq_kpc;tR`Yrgeky!mVP zYue4U?yr5jG<!<ckP6L?AVJ+R+J5~3B142~ge$qJKNqu_tMgp!K06xiFAFf&f2^z# z>+ir-vSe~F6n>m{perCzJ=pSxEZPjZ!vh5lu-;*wGJ<H(i$!+amsE|PNV;J7Q<^ba zUQ3y*icfJGO@$G~$n018n^WWSi08QsfP>KNxzB98fBOYPQ>3#MqT8$XhDbxCHl$zJ zQAhe&-v)$83w*boe}1RrdZLn7+9Gfo9f|y#xBA9)Iy#|ZbNsz$whI=Z&BpK(EjU8H z6hENm2nAu(uhg8VbJ?2@91zRbVry6fIx+LPsL4eUS!BYVHC}vPl;Z1mPsl`D@8cg= zj56|QfJ_3Z!ciWrX*{`VRPFrOi!-evjagpXH&Nrj)br&PT1~qJQo}pTg0)6a(yY2b z8|HE0<0w1hoXW9%Y7z-={Kq<P`XL%N>jc8jv&a18j^xB~k=il23ObgJZ>d2^o}CUt zNS>yN4D)>izk%8`!|NB=&`fP~k89ZtLjI8fk``Ge?PHsb*S+yv%SelV5Us<Aw?e}i zxWI*jZI3XA!?&ys``xjWRD{jGzL!?~c#79pF10yKsf=0wUJ~~#pzz?zf*^E^4PX7K z#5tv*4jP)Y#Jg%bbUY?~zS`K_+)A?T=Cqqfv-{5n?Ffyy?InujXn&hOOTP>pJYoJ> zZ`uj0lz9~RMo3c7lbfhF<eU+lkPs9MHvUds(lE(PFbrDB(jXzSLZ3PcZ-b!NHmE)7 z&#Fk$$7N^${JnRyeXk>kV6{b1c)GV+-8(wocoIeKa&!sVee|#n?&O9}8sP-*t$w3+ z6AyJOrWS5febx8qGz=x$ThN2qIj_8Kr*wrtWJ1o7In&8hc6aU?C|Me5ij`h2CBk00 z2dP?h>1!yENFw`;qYUdh-K?9F(rp97uJmzrmY;On^+zI<<@}#gG<i_^p7&w(zir@W zLDao*=frj`#U8)t-4U)3fC9BlBI{Bk`H+`nx!F96BNJ2N#issYxT~xIysm@nytQdz z>@|CFC2YQp;3#R7?{;C4VrH=fpLSBVwFlV2MSiqOUu(a)+s-$4eMOBM_4KHB13g~> z2ign3hJ=%*-<50OO^?R0nZhybaN@gQtNOtk$G}{Eg`n@VT~Ia8_s@*?x~Yl2R#0ZK zu=iX^oYA8Ey0!^2r%kmqS07h#)ie!i{L+=?B@TVxlJ&R{1pi38IAo1Zlyx$0(`U3m z-MDtg93qo9ZTm|qVWu5fO%QRUk9>4u-_0~nmIHOvlDVc_3A>rkbn@z474x)o{Pd5s z*i>vTaR)sxAk-ggBehOI22d`r+bHL^#53lFcGhfrSAhAcP8*;)ERKxO7&^Bmu$%CN zZ@zWx4sJOM02~@ETa-V9$0$f?sy}Tx1xHVh3U^FS#O#~Gpe26iWoncYLMOlpew^S; ztk|2LsB$TJP2i(O9ps3ZEU~lOG<^Jr(-g8WG~a_E%i&kqFa!AJvR4=pjg8o8NMrd& z*Q20mW3V#d=LeHQV9A&tn583QTtpYCYn_vF7EpC(ZR<-D2kfAWnv}q#=e+m6xlyrR z%^pSfyfJuqzKm0<zZFnsBn}(}ntQ=*r8X^&m4CBNy<Q@v{5E*1HQ?eyczE!oyqb08 zG`+crFZb|iddm;ga02P_a2s&%J^}3!^nx3W2EmIAH=Bl@FDxA0b9^~PkIm8E-mg7u z)t~=zP!i-Jalvb+PeAg{8n}LF)4xS!{%&H6_@w)i<Tv((+2SZj2J72a2TftZUsT4` zVXndL8#P*x5>XYi#OyD|qJlz)!od?-ut#{8C6pes;M@l7VBF4sj<VTyIpCN<YIJnG za0=96{z9xdr6M`U*-ZlAoQN+1-Bw!g>^=Ur`{~K4A>BbG%o*rbifxb7AtpoWwrV~W z1Swtkg1x3o%#AW+Kw$B8EQUaXe#Ty<FhM5JW-aDP&(?t3EP~vN=VY~~yNA#i7>qHR zv}>X7$(g#f>&+D?)k36vGzU1dv5#{ye=uFJ2e2<Lu`t(03ne1t8f`q7AP`3p4+LGy z<L+uMsM!N=`;5$MELvkHMRz<U$3afa@*#47F#V<)-J(n&)!Yg2n;P!~&TZ+EUqq$8 z7=jK)0T1J#sE^%LLJ@UqxK#JY;PH9IGxtA^kWKYSA3?lCBZPlexiCIE4+K~e@jHyn zpU+zgEsG3X5`}5o{7CE%_T+3~LUGI$stmw5E_Mj>qE!#r;|U^rmB3vP?GmFiN2`M3 zghnOVl+5)+qevoL;+PYf*3wMC-&`IZxw14|W7>{j@$~1VlHsYg(Xa=&rDo5ec9t-R z4vDIT(tkzFOV)q<J1~+l?>;2Y^vT=b2{}I+=@0iHQ2fJvnxRhU#9z@tJ5mX-&cW3? zy-cj(V9@c{`pNvXprJCbqX#r>t_eZ~-=6>V2LmhMh7}MQfEYX^i%MnCdUc^V*HY+X zhqwFl?|Rf73N>MDr+@#SG|ne(SwV>cRQkj8*0*)mPo!yU?rWl{m6C6%kDZ!{4j}=y z3G-GEjrL8;<vpGSx}$@lst{U-Dco=tz;(pJH0_}$q~k_M*uysi4R`)Q;0vA88evmK z<P7jT!WYH!emz|Q$q24h+e3>6_afdC`BmxQ{dzmx6kTZ6kpG6^aqz`#Q!>Q>#Opl} zG3V+L>Sl)FrLp;8C9y_VTZgt?>c;HbHFYxyL<6%G&3(J`mk~<G&UQT_D^!07$}<n? zL1a<PsrQd3Y(0=Lyb4$ur#?8JtI%@ZYdRd?<~}87OY5jFV(G`c3yOf;u;`1KLfx3e z_C%)w3mSmh^f1L$vd$B*Soifr@8L{+^@cAECtzURReBOQ5f`oh?d6QOTLfD*gV9#U zR3X5?U=E4Dns4=NpNaqk;nMVkwV7<XeT(!8x5KU)K7=mdQ#qO&2)Ur>w}zdZ;W^{g zqm#!}!*~9LJD(IHSwm9`D7ge1WgZF$HXeY6*e4c&=+${YR$Dc1fj-|PJx$T{nIi)f z0~I186H{~HZ<Gtnvy~@2KR0<MV1$15?WrMD@Af7saaZgr5$46B(DzrfDIRyzCw%@R zK4S?rxl7CLDxO4o%?@yE{~MBG#B*atDZz(p3ZB`dYH+m*pDZ?l4MrEH`IUn(s4E~U z8oFIOW54E5o22(5Q4xp&FOk9hKp16u=d}#8rfV$__ZCn-7mBa8Q5`ZKtDe79MzTn+ zKGRH80Q`(AGzwwbG>C=B!sNulCwqdbhoYHJhr3x9@`BHbFgs6@Q?(4V_j0ytTLOcN zQvVMk>&Q}a!Dw#aprs(<g=!!v=}7boYRhwQ(rH)^Co~s;`4<IRyuJUxum=LZvay9A zZv<YMdUaS>@=0kuoe@wzSeJp(i1`$3ppt8OM-xV}1AFK62Zg#>Z>(AgehVb1OYiw{ zG7IZfj#(9?)lH*ObNhYxH4-=i!uVjC-GIhWx|uf7i%;W)i2mOb5LovG9fGg3%=kpN z)=3Woak=$^iC;B#<%_UnVklCB@!=~`u$BdHw!XQ{<sS47cIVFa(~Hy9-tg`kBkDm? zAndJ_XeaIP;pYcC?+C1ip!K=w^!x*PMbg5O%f-z@Z|vAP!G3cRy{!_2DpS4_=**5Q zDJ6TqAqfe)*GUxX9K49eZpbgi*=e)X*$^Em`<{(=SQzhn;3l$u^5Jlzqr2<M(E@bv zTh5B`!dHfA#)I<g7^oQrsL=WPY55oQg3LNqtYR<b4eH+9a=&JCs`jR_KZSaiw0`R5 zCO2@>w0mI#@3LZcsuP9l{U7|2p?BqAmL}{jk&JPL-6lLqA_5~HH81~`IfDop2}Omh z?mk(t0V^Cs6;#;deQWqk^khpuN#Zoq2Md5HHr>BLXo63pgV)}jD4tjLERYmyTr9dh zS1QGETM806%Q-4A{dm-9DwuNV^aSG9?Ljz#@zmIL#4<rv9D$;*W4Ju)$IGqPwyVLp zFY855lzS!0H+_HbS7EpKl38dzh_W^I6lMMTNr7th`GKUaF=Z%{jV#bMK}@G7z<p_e zuAs6Dw#j+yM3!#!V$GrRIj`Dali;6^>_Xf#asWm6PRyUI;T-=GFH}_K<(qVG0*g;% z9qks>fE%^hwu;CHtc_9{d8e?M=w0j40*auDRJ05d5RJ)L>cZvqQT_$=haG>ia~)VK zMY-u$gtT~lV8OJ>#o5Y)_uv%QQ7~7>x4(_=vG&N$HTL)OiZUx6Hs$Lb^0)R6CIYZw zT#TQHOjAmDlWB+0m?7$uEsb<NWZhI8N8Y50Yv=Q&Q|Qx!-_t#7S^}CzMe-_9-x0zu zDl+eV*;uH}C@OR-DPpBHRs80#c%T~08mHiqA+pN>y3XO$#X$U4ja3g|2OIGt;5Yly zY=aI&5Gr1xhbjc>R`7@9C>+8o!c2W&O-&hm-<K{_attB0SKQ>3f|D0xCj?^3d~sbL zJ}2a;@e*)4>*Mwdi9oN@-&1?wc60yDz&qf7<DB7O`p+sT6UYCZcjsXHud|m?o001d z200jX4JG#%GsXx4r8j<$v6V0PEX=SxoP;MV7gmCDJEAVuO&F~NkjE^8L?F^u%ta<& zF`S-a9vgNKeT^ag*MG1$ikYts7vYX)B`dK%y|Qj3I_l+tIvs=FVEe99ONlNXcr5{s z&{e}kmD%LcS(lW!BFHQkehC4#+z?Oi`qz8EOwMeM$^s_Lt3oNW*^W{qsh;Y9nrbmT zEMM|O{xqg1_|%cY%dXTI%rQ=z%w7tWQ*;2^UYWHHR`z0wpup&-doK&zR8t<Si@T-- z6AFa$<d)E_{XU_Uot8#Wr@p=S3DiWG1urv%ME%a}R>(o_T(>ockSFBy8<b{%mOkkB zg=mrOb{3fMhlm_PAWF=YQU0|yD5(N_K+d4}T6i4gP6SBRn`8YKW%gkgV~pU&_|S0P zmiO}X!vD4%<Db;hHfQGl`>(MfE3L>!01DD(v9UI2uN|{Fd&<c(%pg85@K174VuCbw zZP&Q4OfQ39F0H~=(iB0By51AE(vIa3p4*R5ea+B$jyI??5C$dKA-w1icuXyG;hunJ zkDdlr25Rq{bMlI|-pG|gC>^R7b8`hZ=~r^Ag#-A`bIZ~keyyW(K#9qu?p5*+{!p|? z%9N^NXwhdM?3c}|rQ_b&C2y4kQJ4c#{}2_5-<q#B8XFzKbh*TVoRlcbzU{x}X@xEf z&<eTojI?Bf!E3JQ$lHr{-kQ{1W7BPXvy()I-KC6Lu*)$wK@vAaZb(r^`0HJ;N1~Fa zQV8yp4RA@nddq8rc(;8LS}2H9BObh#PU;++*!}^~9|EN9%sWeq&p%OurA3v>Z$GB@ zq+ghj30RGlk!50o9o6gf2Xh#=TE+eSjry3%7>T6FEg`||da`aAka>K8@ZcC_<E?bs zNlOY8chq~0zBc={^qC(geu_u8`&@aGSHBRiWfEPuRr>$xN5$O{*V3$w)sKI|nBqu< z$S5BaDsw>~eRSX=tR%4C5Leox3ubFqt0b5V@_uW?9Aslwe<?H=VL8#T<GpIO1_4v@ z^7h&GJmAm@%2`DBgtn`P&qj}Babv4UZ>wt(T>VkeDxgMRBcPW`b|C76M`DO>I-ZF< zQLi%UAf=@r1@8bwrSL80Zsrq>nG)+wa*l>=3+-{OlD14R;X0|wjFROv_UUaSL3B65 z%+_~v^8hnP$XB@F|NNlO4}KCy9aGYepx@i6B;L@c9!B{R?HQbTMqr?ALUwJTFu}sj zdDT+CPGmKU{MfH9D@t9QA<;JMW&E9$FS&9~#<p}m#$uNc>zru>b%II-?1pkGh$JNq zGYm!g^bLNF48=$(kSBgLKTjSHAq&euDzkZPJuGy+`Q6*YB4QgaVu}hMRrSqIuH+b2 zj#5wB4a{V|fI^;=46G0we1HI(;b@k8N;Q@4Jm9?nDukZ&^4t61Mc>n(*)PMAPmEi6 zr^*tMNi}GSDU}8^o9;KbLtvUyGLCl8cTe>|-UfPbWdVtB>z>*%d6aiy5KI-ay#oUv zJ)S%fpar8ZR~-`NKG!c+V1Naf&|&5G)f4E8LQtbIq~?4f?Io{V^=k=km!?xib?(bw z|2kl!*eb7zGaP2yTSF`Lw0+}p+6EgD5DvI3YCKkocEWa6d>d~90q_zEJoAw*+ze1- zK~B;RXLRj!C&v}AMS@@Q+o}Qsc(F|o4}L`qT<#N0lr42JsNr9UUlMaPrHuIK{@8}C zn6E(jiL8}O_l=0#a4w}W(9X*5{nwuSyZr+shNFtt3Hnd71ZnlqgRQ}JE*G3k?eVZ( zbgrT4D;2K;5i97caD_?)K^MtT9ZSzk4}^+I?tVHB2+c1dS|~TtQ;ezNMs(HgEGtX5 z&Pr$=$yvuk*4oV0Qkv(J+JQ=Fnrh$Lw)HhrtA=-#_KQ;aH(aIA)3*NNM7Dda=0Xpt zyG3b%1LD&8d^$~I3JiSMZ(^BwsRA=jsCj_d43bD__4JCK{&yPkZ$(Wn#XIjds~$l7 zK7qvnoeOM<L#y#$T!@&A*fie*y$__ocZ0=5udIgyD-|go640A#r%-`%gxEfn43Q(w zjL!A~$K!><Is!BR`8<d~dc`@6;|!t)!-z73n084cdrOTWC4(;`F8b0Z<<&I|1WODD zRY|9dYa<rV#|efI%pUxXa*}tU<m^0Nws-~qffQAO4($mQoS!bPorGst*AA)WdvURu z%C9jI+HoG!Zn+1`T$x`5%cH7H2@nG4<P`%Sh0xJEaXwWK)+Mj_+#D3Tt<0e9J1`L6 zux>_B9|ZSG1a#h?+~u;EQQM$X!nZkuB7aMgf#(>}WvWqXsSioC|C?Uo|H^p8`k!-Z zob0Usf&K&h*Z<H-_r&1$*B~kxJpoeA`<ASpv<D%;t~~+G*P1C6on*rX>enxOKyE2} zt=uo{t_-tHu^+nvs1oy=XzE3fuj)tuJNNZ)+~W39=#R>I$NB7ycT~TwMIsWKx7-*w zYUo3d2-;p#ZFFdQ=2W3z#NEX!{y;Bu)Vk767gyoC!UPf^h#LmITt@^#NKeeEoD?o2 zm{_H`SD&<NbTqEBZWZmPdSVG)y{KWTBOau2`&)Qtx>rx+x0yo>JWIu`<14jkn8CzG zS!eLPJ9l@+RqFc^o9Y)H(nD+x5UbXj_0<XbRkGs&V*ec#lEUheJm)z)k${Dz{!H2O z&h1)(^Nf#K<f>WPIQntNA$F=Pu61Ga)f9fky@KH|7?#WazSg0wF3(wtM@u#4Cl&}1 z4Su-1i0DsQhYR>w^qLO>eL@SObGE<T4juQVA$UAcF%Rz+_41DkVSxLhsZNA>*{w0_ z!-$>=hzr5ryHfbHW>ceu1a2`<oYVm9H~29yZp3X^=E@F-c7<{JK2QBLzGHMg2o~fP z;A#PR%bp^a2gX`~0;y8|@ZK9TR&0YN><Tn!m}8zrRupGwv!He=-bCgRTyPi#diUU9 z7PRwZiK#CL+ik$C(1Suc=SKEUg4}R&O`V<)99v!5aDx1yMQUK75-_`2mG9@x<<Jf! zFpLDnq7S;vI*=$XAuOli#aQ2bQ1c95&$EEpGy(dBUZJ(WQ1htMsQYBze12?*g8Q{B zP^h0CwrZpH_Y<kKE6eNbd&c68$(O`>se{T@hUoqGsNSkZMJ8kfoyL56jWT0^L_ApR zt78KS{9#}tR;cK2%cZ-?0tKzeS0D|?5EVdzMlMdIqWI07@IpG_cOHfcxYo$C`IZHi z*H4HWxMGh6S-2EZVjZ#66+X{hA^+1@Kq3+h+lSV0`!AYX5Gb!oS(rT{S7XBWiz+`q z-pw55*$yyS=lOiFuJp;7#4td4!lg+LW|6!Gd(QBhLc^yz^vAAE{n!AuFv9jq(opsQ ztU2YIo*kD%pA$nAEB5)|1wY;<l(l>Bn1B#2OCryc6O7kGbrZH1P093I8EHN_rbHn% zeg1sK#og!S`Z%`RE~Z!IV@VhnWK^qXhzI-#sVTK#Mr*1X=^aCphx75j`G)^DItnJv zpA3MEv5l#d8R5^Y>HnAqXgXHc2J=4oTfE4>65UoH#z4@Ds;tHtBm>#<Z1V6xAC+A9 z$&)RhKO4l8sFr37Ppe;2iB`Q>Z)v#dS9xi~%4gh}cYKd>euN><wIH5T<Hif+t9^!n z2Z5wjc3zXb1?xRb1QDlE-N^vGS6?D&cfvD4H*V>P2Uc)waqqKgdEm!m>cxoJq?M$Q zg+#?~@V0;|c?9ouR0@$n>;ghg{b?*B7NeGK3LJKCrVC8sdpMVJ;8wLBT6P<sbP&Mz z1)d*$`p20@bxR!avw4n<#J7?JNLuBB)-y9_y`#|nct5rZz1E~lz4u`wfI=$X^j+*z zP?^>jCx>?)fHjWA+!w?!IndO?F|blS_Z+t~h{s4NleT%fnD*XJ=&v8d1)XNUQV$@L z(!;J8qiR?w-n|1dpTpy(i6$sFhSn-|iwt=<;j&hpK&vNVya?lrt+!}|Dxur!+j85u zlZ7?xTH47}7<}EcU;tQ-{V~We-^0m&^qKaI-~BKuZa+g<vk+nGFRFf8<G~a<Qb1j~ z53W`PqwM(;LO1T)@cqv<PQbrr!+#`G!;0p%Z387nkuC|0UpCA-Sj9Phw{CUCo=Jaa z=3?KdD{lS^rXfPg{j^($T%7fMbq<f?>X02);u);99z!e!Gg6c)=9Yqy@XvMzldIAJ zf(8DNWyav#NtFt$|4fojv38d<^tn2wYNCz$tUK46!%$OeamtVitN}Nw0#9nEpqJei zF;v1Cb0ESB&F3=xhT?(8v9iw*Q(-1_+wAy55$1GlSA&7XXU7--nIP60u4<}#=UW`Q zTOZ3&n=>@qZF{!(WeMBVJgY#h#kUE?0%kGR7S795nQy2(#S#*l7fWGhE>qMdN!u#- zU%J^+O>f_N05pG3E$}hKoqkVJ=AlGVWhpK4{R*gPYTtOM`!~8d&`v_Cb1dcSK>P=; zO3rH>hNNx#-v>+105yoaN5d*lbBIuc@yB;pwJsa_vYjtor#2o6Fz@Nb&ovh(#%UEl zo|7VZ7Os&227eB>zRXw%J==3*%DTo<GJmakx3ILg6^*v8&)#7e=E(ig$*_(&W?_zv zO^>&!qnr}&$(SJz_O*$%S!_n94#{6N3cur2_Wb9|TIvZnC-dd-&Ku>baj+g^SpNwA zj7T3pkxXvSLFT2n`>_?%y{{aSDjwuBOCvx;@a|z{KL5enJYWSOeEC~ENcWzKv23Pq zW5a7B$EZoO)-S7<ER^@}y~~b3uA~C*72|opdAzGO;v3xoGrE%&?*}((6AX-BI3^>J z-l3O0b;rG~>DsiXJNjrN+%`|ExZZ9%r0z&<?)m+kPpvX>rM%6_ca>(I)f9}i(MEz{ zf+0WWAmv6d7z7hoe{=lS%@koF&^8_jNMN_|%&CT9gaj!#TdL8L)+Dnuh=*SeRu5Hb zT152(X5cFSe2h4MXXWHzZ?Bflu*73}wlS63w-X)kVb;vkCl8uUcJRKSFzyeF725E? zzRVNjTqpY*>~J+Gg=!OCw>0dy{~U;_1iO0-MP>n4x0)PfV<eVJ-gm^*AowuGEU#TF zTk<zhh64H3R_RLaC6CdHSbrL2tR+oQ&%xU+d+643Z@Myi#Stzw5qHR?Z0<{>==vJ! zHk^t6pEa_B6k?3UY(=%JHYqvkAvkQCFl*~<8|xr+l4zAi2A<!Ew{xrW!$KPR2@|^Q zd=!XBRZD+4)8dafV}k)>nt1HQf6MOXeYn!GXcg#3=f{7cm7|b~aCm6lonsFjs4jL< z5}2t;PtpTa=v44W=6!Gq;If1r+aKoXaDg{pj#RYg0=$d&BeU5mF&mAK?~-#tY9pnb z`C>+8K3LUxZwY3Myd>~D!st$o0{y6fqkl|tuuIa#DR8h#Qtd1m(9^F%$Biiz;%S5| zRYcXxy6d2a;c*%UTo7%3P;N6s5m-KTERv8`+~1$I3Wc55Sg%UJW2$TgHm5v4u2JA< zPsoYcFv)e}sGGbL`{bci$Vep6X4Hui^9;XHY5B}BXWrE6UnIPHX3Rz)v2O{p7~n4o zx`_rcT~p>i4hc8^6%jo6<LptutH<}Dc|*>M?E2ZTz2_ut1RTY0fmJfyk&ybyR6zmE z^<A?cd>R%)L6iP^gj~<Ov?Vb8(*(N?JAFYUYzD+(9w9`+H__k56vz=A&ZgPXW?7?p zbkf=!P`hIr1i7Pn6gY@zg_QM^&d|*=TIJMUJuVqtmu>G3=g=oM5bL=4(^SB@%3Nap zZ2VTQ9or#yVM3yNje6<6uW%3cVSPS9f%eF!#-(FO#PKLRd3R`Yc+3o3N3f8<Atv(W zEJkz|8th>|xt1f=W|+H7R79n<Wo>n-lhDS7eig&}q(+C<m#NLQk4=njW@t3?$>zT) z<SLc`;iW$Qy_ahR3b(%jQ^_1nU*fOJSHS4Vbr<d)=E#*K8bLieP~3|ZGVcFC7rpP~ zELjC=@f?`8h=jvx@Y1yJ3WwGOp)`)NKF(9A-qga900AHdYV3z&tK|mGo>qG}T==$W zBT*zHP@_!N_Wcn`)-ZgC7uC@wJ$gqfG<Nw8($U|?hX3N!Wc6kCFcOZ3^u6QXbFz;N zV0Y6%6SFFKtez$502}!t8o;XcP583%hE5TYdQ*p4ANvxCu8qeWecSgCXUh5~C^`4I z3DE{7D?VB*MFA0t4L^%`W37{N_kK*o$rPxh^g~Q}uQwnFFpvXEo3-`K*L?*`8Jg7{ zDuW#ZhcJoaOZ{y#Fj{Dw=NhCqw(>&1*j@~+ISkqy$eJTu$O`F`!cngr8-m)D50*E; zq$`GFER{09!!~Du5}y6a>2-Fw+)4wsQF~aJ?jA5;!{<<KV}5OHzhouO{4Jp!7sYz` z8S(3_Eq(P5Lhtfl5Fnc67SZG13Z2ZOH!(xMDMAW$fr2FlsmjRs%6^|!z@5g+h36&q z+94<<H6!5xj_u?QS~TNAyd*?XRMEvV3nB7TT+y6?`rN~px&w|qB5{P(i2n6Fo)xa2 z^5ZKQBfZu2JCC*hDQPLNWE6SxisF@oXiAo@97ER#vbr|d_G|q{_KThZwIniL>qpH@ zH-2QciSXIWKf&xizH-Lx93^T3mT9m-(ICSfCdtaTSV^ku=9y(dW6snS#Yvwq-{(A` z8*UC~aP-AA@Fzx{43(3;Rp-;A*L6Sq(=;=kVus8EWx3Eom%2a@gus=?i0%Zh&6C^< zR(-9#S8v9Zf>uNqJT)~5?Q)hG3Juk3zP=1V6RiwkU~Vp53`zwv&9Z=SwjuePMX6m1 z7GzTO*}CJS2i74>5IgJRsT{_xA)%O8MF3;iN33Z5y=k12CVrFQ$O0s&nfJse?mq7! zQIf~?=qTpd52*ud2bF*6BTYS|aacw9TuUJ(3OMEb2)J^*u!+7ui=Eh&5|8a5^PZ_6 z=T@Q_mXy89*LVF5ON<<ffRmaAy#O#aziC9&$p!zDs~!88F?)R*psI~(0XeuZlr>eu z7Z0U%?QyX%iL5$5e^?uU$?r{3;AbgMcSRpYwU{{Pgq&dM-C&^eE&G?BKk+P8Onm<S zH7y1cvPLMOK#ayc80G7rC>c~f74s~2AR*?4w<(DAQ+}kyZz&r@A-05pqB#HEi^mEw zS|}I!B3dJo=_5BXPNqN7_z@>#i@&}=Bp(0R!MUDnTjs6Z`tN&9=#-8s_`%#hAK~bb z!V9)Q10h)?JDir3Us;M>1FtDQ)<skdLnV{`6~$EuZ{eWMAM8QT$H0&R1;+s$^hGul z;A@zRYK+2@Ko>@CY62j4a@PX(1jIELz_o|mWtCc|K2~LYa#ct7w{VvK0Vf_yN4|^` zLgcGf4}SBeOb08x8Vy6c1_VziMOyeplNZsYRT~Vi$>GBl%V?`Izv~j^)W?ibj^eDs z&aZW*Q$vZ;B#H)Q6UzL`zXWuoBlIGfIW0lk{l-E#8xMv&vI$cIha6Mfd5_NvOFpq| zjzf%ua5w3rd)U#4Y(H#9aa@jq@OQ&djOtedgA#V5cl#vw_R%%WIj!)@b%57}0TcbR zw>CYXN%b85^M?cjnLA(kR8pQ(%R$Uh;|hlEa`TdV?jet;)C|Rh=^@7|R0{7RGi98v zIJw@#uZQnlBI3QLDo^iI3zf5F7e(X`hO7<x3zJe`zzcYzMYSRpF|fSz_yT3J8FNC6 zfQgnf5S_-pPrHQv$OzDIsm)x$<;J0ua?ad<yvp^Ri%qlbet~Bbn{g=yi*xSPN>0*U zh8ih*byC@#?qAdT*qaD{NVCZtOE^FfMtGq$@|s1PB{nda+MT2OR_@aj-mo3?58N%t z6}>grxgA2Y(0`(F=h2`Lhx3+S4^MH^s<jHXdKosN_GM}X7%N3i(k9?n9jWNcBBQ>R zRecmNLnwDVw6Z-#JDP;!aiayb{|0pCv5-evZf;06*Y7$7AE1#rHgRw~P!VyEq!-=l z?7<?!s0oY3(peAeN-lg`2|Uam7lb~w6jUv5p23pJbb%|y=F$>oKSUO?YIpnhp1~y& z4D*Q)4us+&@*2pR(?l1h74E^LNE}oq7$mM{!6_S+yFXH)$u^ews<I|Sq*`9?7{-Fr zJ6n9~Rb`2e<FmUjXSVl)fIX~}#J`e8Bac;(@z%v62}5^4MSJdfJ|u(O6u3~;H1=`O zIkf08=j+{&uUD=#W9@*CstK&F9b3aM@mEq*wUZAWb$v#63h6}KRsUWWL}E5HqiiEw ztcDUUE#IC%G)5Y-Ad!oY-`|cr<S6P<O&~sE+1rduQZ^e3!ZTq=D9ME_q{Ze9e3A^k zX%Sy+t8l3Zn@3H7<~45W;eQj?Ldm8>k#tmtL|TA4=!AxrK}h8rNSB*J8;7HzjQn*q zAW0%V3=sx`K{#7BjA`a;jyQrvu(b7;?J~t}(CDHinv4M*xsm1*zl)BWjRImMUGl_4 zi8~R0ar$_KC8l;7_$4_p6_Avfm;c4iv>OAxU&5j4ME)FGaZV;<FT0;{8hu_a+(q3Z z6>3bed2f-$f=tM&20Cf2vZJL$Rnmczb2r7<&mxG|!PJ({r%B|km)vl)W`*It#bJ)z zP+v9;mmlt_C2hd)2uz~CE@C=v>6`^b>R}DLP-D*bwcGH0iie}M^>SWM{uV#Gb%z>n zk`z#=OQ!xcq5IpUEmyygM8hjjc%RmQv7}i}A-Jr>UQl=WU;BYzJrux}?!LCT)irCs zTU%}bJ8m5Jq6|aVpHV4x(5j&L^WP0n<F)o7*c*#WUR&<L>tKS>Kw!KrTv=mu@t;~M zopza694C~>$Hfc6zq@;rWtWoP<bqof^4v;5xD6(`F)v#ge@chZ=4;KR^-Ug2U^eR& z<GG#(;cfESw%y4tA3^<gHeirm(LjQI@L~wrP+NglSD=FIr{?|Os+<xB{+qJG|4yd_ z_)pRwGvG&z{zLlv@m~Iy5G%GgMYRZ^rOuRMLA?;c(iM?fEuK-%<+UDU5ZKen!$bJ9 zqNRIm69HqVa0*jwvEEjlPsop^i6jU71R6sm((vrA0&&QNk0noemYN5^fqF$QYT{xU zSia!Xf$Z=nbmCZH!is$Aop)#OaKS!u%;h+jg=F+qI9Gly&2KZWmFf2Oh})aE$mZNH zTSdG^RyNNWi6M~_!sw?K+YW?_$q#n7{WP~^r1`#-qo0NoePp!;|CfBygDtRI3>D}w zW8EwU(^X<|RBdHyiBltpESG^AO^H2Us(h5pCB|@gD>ZJ2070dqF+l?EwDrBRnUtL9 zLg-v6xi1R|G!OBYtt3$tv|3R_b|~DdVHE#_hRU<EK97`~#OpP3Nm_oIa!ZnYm+;8i zJ<8-~J6$l9amCflp#)M!DRpN_7efN7O<_){6_&432BzK;OD1vr@OLqbb1Pew{*LQp z{f4CgTNl&t<omhH$LV3tj6}p8Fx|x{ce`4#0%{F*R$(Dpjc!xO0Hhf5DXrz7JCO9Y zMB!`IOup8d%N(n24oA0VS-n9#KqT4s>%LFaI`JO)ZhI$nFgIZP$L`53tRk!DPPGqp z1SK%X!zOM__v*(~JlKC>zdS*P_I#@kXVhdLMDCQRnC~_%QPPCco(wm$t5f-Sa05`9 zKFxr=b496#<B#=CLw8Y=h@i}M<rpAbK_&@8wX7qanG9!)r9-4AvqFv8&xNk&$)1)@ zPmgusML*8b`iq0tzFNBfX7<aB6|t(T5zI$>xq|8n#XRJ^-JFrn2PR7;v6_}11Zc=p z@x9sqk2O`JYZ99<Zr65SdMYCW_8k>O@%Zs0yTk*|LT=lvLr<-%UbK1h`H(!p$!|2p z@8Ms=MmFVT;1jot=fYdlm0}R)JryLH)jfn@f1znV!nsBK2cj!1(50^AKE9^MbPk<Z z<_sv-nH>*tlZmP8v$?SJH^~%>ZZUr0kvqjTYnk`y1#2m&(IJQo#)6gw*=!0}*8oK- zqhy_s1LAAIwF;S!c+4k$%y*(WQV5{ll#YW^!GiWYa5T3NJU8B@uX=qbIjcxhE<q#y zi(%QZs(GQ%rQXQTv7eDFj)IS6YfBvlSlvaMK}~0Tp~no1HQ*)chnE-e42Fos(tGF2 zRF%)RdmjO;y%Y1=&dKESR)Fod<IgahgbeBluf&3Ze~I~@GQKm|7y*5ci6wcUe6GD1 zI*wdfZ*8K`5Idj>{oa9pM2Y~^umM^DAtTm>$e-3R=x$`H{F{e*g*`edGE%D;5;>c2 zI{e~Ev|hw971?jjgpyU2N5_QpKwjTar94zVkrkSxc&)lrd{tPygYb}V>dKnJccu^F zM;A!~jP+_{Lvzom;_ay*(0D<~Y|Bt(h6j(e`^PMzqDkXzX^7%Gv)KYx5|R0aU~tQk z)8R&0rn=X9U~N6(B@!tjEx+RbgojZ-4y84XOuD}MrsMQre1L0!5KKsrAfh0cD9@Ym zmHgVqq$~G}#^~@v@rzMs7`vd;e2$4BN8NcPAJ)dJURP?Qgp?^mX|{I;mV^y)n5fx@ zcv@;!M;O_<KLt>b%M|`<J}6bHL*8v<?n0069Wjg`*js=n*Pp68wOyE?{KJ+sjCmr} zmgLE&1)ULs;f`w%wG`konm4=+3hmwDkg2|Wqcb|loBL0FOId4o<HQ(0Uuq<$?N_(N z5+Zau#TYHWR6-HkG4#B>pUUaILTIuOMDLR@a<Am#3+~Cv%b_W4P%Ls9NP-cOIEFP+ zDHD`<d%E=oX%_4@MB$X~DckxMzUYXm@q8^7fo@~5GNqRi1{n)fFk@0j20=mEMn}T8 zG2YAa_0v#-i0rBFyY5G#1KJ7AYy0wYi@7R$WzoXbvL!4I_nT2sg!O!X=-JG8>;x4& zMIIG;DtU$95IOJ1a7_j`YVyHZ)O9TJ&n&Viln^#bEB_f{(}X7nw6+jP-a7M+$u=;v zbNXMH(b~(|tfJ$6uKM%Ee>5i&-878EEP=AO-oz4v4X*^;et(&R9eh_`nIrjN8YKCn z#-7lc#!xSVU8vy&OGv*`tXol=6J0NWf-Cd$8o*Lh9UUEpwLLnCFqio~Lm{I=a^23A zEvhBMo-FHcvJ1|Q4c0pt+fobNvzuAh-`*y)L{nV*te!?q6FV^*H;XDTPi%cW((@dm zpn)(O_ZXx<Y&Q29Fao}`SfCQ802K$>NuLdhuQoEt+ZF~la7U5OuGftD4Wf=+i|wLp zBnB!nmE2^Z?H7<QU$zw=kn<w>hAU;Z3=yl(0Qd2i9WxTmH2Skcts$@Yp(AU*dtb{h zR?kNv)f&O$5<PFvlbwv42khL+PGp$4*h1gI<3Cg@B3Kjp7>FV^vJ~n57JRE8D~atJ zN7-;01Hxr3a{f0}+hG|ABxH=Ao^(H+JY3u0<pR1=&iS2bL<7pK$8|qbbZDXV3e=AG z(=jIm!3C>47%D*WJNn;0+*5J<75>w{cAQ-`Ti6ETvbAqL(~1giE%mJ(@7-iK4QS>o zCt0a;-A=pLb&_fIY}q=5GTV=84zfsErcS1wo~&xEzY(Q7hw6NDJ6a$ivhkvWc3=<r zSnZ~V<6&zYB7~~WEy4LKs$<&n)qHIpP|k1yz)lp-8L8_f^IKi&TS@tSZQ1?aS>qqp z5|Tj!KIXlm+^7r1RP+b%xJVIj6mL7sOi7Y>SV^G0r2WUZ;Z@t_z+oL>oWGqHdX9Js z8s+L;4ks=sl2=K;((%?9H<P`?x&@pYzZcL3XVc8hm9Tq+Zv2n3FVg)ayhiY(DRFkM zj;w4o>1(GFL8k_P8-ZYeg2;vwDrPPieVk!pV5-E^<7yFQpDc=D60Wim&u9JSlso6Q zMs57#y*8*$xNYYH2{O<Ci)CL_35H3rh=A4m$oQSE3YN?)P+r_<h1W!8DRks;GyUuO zaoXxyA1??yz=8u`JL_LH)@%g()V-Ti%Gy=X0Z6N*9Ea{%gG$VV0jio|p)rdEvm3Bv z<_0>g#5cBn_94i#SGH!NZT}?`4HD(#-1sn~HFMv~>S7a1zMXpfD#wa%^5cBd67wPY z0dCh;?zKG5EL=?}g^zMu-&LQdQQ{K~jHWw`LQ{h-2uGCt3zGQuCE_h|wlXBR!Y{58 zMF$H#6EsSg`8K;X7_U0!dFogM*})dHCI2Cod{j;<$r=j~|2gfqTX5+Jg5Ysd=YR1M z7m^{QzPdvYa?c4ZcULU~Z*WU|u%f)7T8u+-%Gv(N3EW0{N;4)qg-D+yt?*Lf%c=~^ zh6K8)313B{eyqXF|H31#D4GSJeu4I4Qcn62O<9f)NA>Z2r|l7vpHsOP|FvCJYiP-F z=aCz&QF`uLjmmOqg&rIDm&aoLM7x*gyaENxJ#U1YK|xI+C$rr;@(?cY?$rQX7UQ+m zdm2gW-~`!Fp@7#IYpFt66<xtqFFzE=2N?q+u7^0cr+hRJ<AdPJdL;ufW8o}LD*~@3 zpA4N)zxtu*{_C~WLf<7o)GK~t7h#2U^|fa!8-R<GPBxT~U_l$#i~3mX@jb!Vpenrm zEMq9dt)EpwMIM_U0<#3OEY>%+Ac}FTYf<)M!+knsgpiFnaeCnfv?xkAGsx`Ae)#3d z(|k*+uS8S7RW*mK7tK8x-qvRs57ciASp)L9=^Q~ren$5NggmTx{>RC8_rj7wopr=* zrBTO8i~&oPy)|X!z9gb8q}NPuluDrrQxi#nsNUhJ3$q=yQ%M;JA--*Snql^RXWaUW z#z!&o?PNI$t||c3225k-q?etQB5I-N4HdSs>iiY5iRpOwfT^i7i-+i~O{)A(_{hZ{ zFxT^ZC(YS+{N)t;w{|qzNb(C#T6YWCl6T0BF!(8*r8{4Z=)c(3|NkO$GWs^Alz~SS zU!^WD@|mZB<$?zZQP!a-+~#ifgJq*8u@Gy|Ayf>q`VN+oHYT<_JpcF7*oe@{!P%IP zk3rVhN#97{NuQ9Fg^}eypx{aj^3G0H<~GKTgiOrL|8aOwVo=aG{ki>*jDZq^^3Q{Y zPQM+Djg@R|od}s&IRE2ql>VQyg7D8uR<@>md~n7#Mz#hPaR2k+<Ns}Ba<VZ0e~jE; z&MAbVUgEufKKp<&_L>Jb;XaTl{~-)`T9Zt1hW)+N^XH1(#BtzLx0O)R#Y7bP<E!Tq zepsw0RAivlRUhGL1_c&B;mpuV2D$>Tzm$5zw*p{?@gM0+hnM3B-zCQN$ubAhJnDM1 z)rAms3D|;DHwL3wp;Q`Wf?D)2%d?N5FOh0mYY<50CKFi3Hnzwo@#I!Dm7@|0x0Y<l z#YbpsJ{@>F7ZK<e1Hc8-n0ga~!)t?4as1_qpTkoj1Y--L=Cm-mL;c>Ktdx&C6R#69 z$YIpI*fi4zXJ$_2Hh60Eb1P5sD;>SmdJM9b!Yu&~Zgr!VJNV?jNSltmvbw(m;;|SE zd(Z$V#UIG=ax@dbG-&q7KR56P*yv79rVJ_Nb4R^M%^wpP53*`&N#)`FY6@u(mII0B zLw(m-CYM|708gDJgLs8~o~R*?x_Pv3hGbdGJQJb6b1I44wZ#cqdsyP?fQ&7lHc>EY zS3NtML_yAvW!AqR7>45u_nSE94Uj=C1QW(sq$5wUU0B#j(&$d!?4o3M9xFW*Zw9xo z+pD{sNWowa5QgRhs&p{spg;<;cI-a)xan?%p8_CkL&eGEwwsnI+4!167KtqvY5<g3 z^ZqU|vnt8!KwvJ+;)wI-@)O?xaNLnt4C)$gWvR)7*SE;~c#C#lm?zCZ3|wa8<&~;% zZV9X$JFoWFbuTEs@MU>7O2|Pc##KA>-QF}pVPBQU>m_J&w0^;G^w$I3+rsoM;K!hj zMyb3!r5J_;KxBwr!3#@%La1Yo_vU|Er%AS*s+99}{Ssw_ODkddOHXT!h{but=bMEr z@)9ZhMnyC&<`1D-F;_gaif*Z0srPl|<C?nA%Ga_{&f0)gv7-g9mpBqW+x{&g@93{2 zgIth@cxM&2LR;UoCiN97t5I7#X`z}r<YXF8N}kkCRLx*XB4k8CqK_oZ-8}_k&wZo) z*QpM`ngNM}ieCA|MZ~X!IRk3Z2+*eq*DoT>MNG$ch^?V@&UvmUzlCgrJ%l&3!yACs zZjJdroSj3kD8QCwuWkEX+qP}nwr$(CZQHhO^IhBhespwn4{Fd=;~eLSjFWq<&7Nbo zx+*;+1l#g}Td04W@5J{f2nMA#>7HTuY@}{4V@tL+%@uc*C`pZ+@m2IZ!uY=!7ynN) zsGx<jle~$eke!Xaovn$jGd??=ke#)iqmsRWkqMo!iK~T?iK3Vwov4Mivxy^}sI`H! ziLi;0ov{g>xQT_CxidZ^13jID?Y~2NyZ;>Gn;KX<nf#wf0s|uxJ2Rb<jDeFC{(p+B z{*4P4L+AgfuqAB%&5-{+B-H<Du}zGe>C`NY|D_lh*g5F`@9mdVN55U889yWP-vE$S zox(pTi<Ot))G8swBMc5&k}zn+l&*}}PJK|@mPE3jWpQ5`mMNnhfBJ(4Nvf1&0^ahA zrdEY~)VNV|!uE!%-6);eu~@d&VqjS?XN#E6y{DpbM$aLv)^J2*phXA#^r`m3n_tW8 zTB7~U;S;CIWO1?pcl$GYXFzDJF}lksD%ob(AuB=GL}0a)N6%#g7@V~oK0o~$1Pm6L zb*T4yQ<>__&J{*PpqZ`)5G@YneM7J7cwkdQrJsD;ID{<g)fDl%&<{e3+$K?S4Kii$ zsqbkZnI}lW+YQ#};NCmhmmpdc>_!JZT43(gX;VnpGPju_r_|<;ls9+^)o0t78f0uU zVgBMCe4@-Qm+<tlm%H0dtu3&A{z6mXFAa6y#(RPQ7whva7vFx3(u^!jq!hUYnf{Co z_Z|$nU^Pa%ok425Zn+Fr38#=s<np40t&R?_a-c$vdvcOYpo3F%yyL=hcsSeJ0aM0c zYK!ZJJymprR?F1J+{Qi#<HkaLkXp4iP!@{8EYR}06zVlnqeqLN6TkHGA?M3@y)tXh zl;@NT7<(IYP}1v=Ti6zV9;V0#y`Mg;h_o51+!Z4($k=!mx^&Q&<Uora?ROjaW0u2P zibfK+s<`q@`o=VxD9N431;o>y559OELb$|fUooIDr^^PKL=?o-C?;<O8=i&1F23_X z1dCX|q%;=S2LMy@VElE%IT2>~12o@F0d2vF!WTkU@Osdz=FGHqi9NrY(G1xD(;dqC z_9kY(3^&mcifu>TE3JWHiFo5Nm_9sqo5l8<AU|j3d5m+N?XqioE=|%&p%I?UjYaL@ z?EgocvVtAP{Y4zawGW5~<yGDs%!F~hvQ!rlSgI;#pP<CfO0HOc8{wGDiHxKLvcA=i z_JFs}@3#_;9R8J&sA^25Wnim!X$A%lg+rF9Nm`NfQ!DK&G8EvCY1*-bYxa5hE2FEt z(cR>^zrXjx_!7H=u7>C*<X5k2Xm-8RgmRPx$jys5$K6xPW{(Rq{jCfmRFfELnU0tm zzP}5kp@<Alk~p2F5j+^<wm|N~@isbUXEv<K98GH;HMXO*x|Erd_co)qSFyzO#rZUF z=5rkHl)~*+6b^SQSBBAI#&}FUhgTm|LklD?ltSdizLDpfjp-`$4!9UC#``ztC)Oi% z7qk_KW?QsdH?UJDel7<Hq^+uOD!ApIE%9dur`o5aao7`#SdWVvB7636j*g(ih3l`S zq|t1jOjW*MUm&R0lE6VLK5=%*<l=IBK?0-4Fq#-~tm$(&F~Qah6(@J%$HgO;`W=nh z*vK+?ogcduwS}S-;rq>@EAK07(TDzFH_gbhFLwKx%TljF>+H-!rb#zRH||+*@*fR) zCXIkpG~gOy>NI^oVE`q&whAh^*XyJCmD`^T+s3z$B?HG$V=YIaAj|3o*IR99KVV@~ zbHme(OyFm9T|?Ao#la$#CQ`pFXT$lJfCF4CDe$DO?<Z=hh-%Opb~_OrX;XS@mF6Kv zYxEE&a+xgO^<^*n5E@17K)y8t8AiFcS69x;$DWwwpT)8!cbrRHd?<*hvi)lt&(RBa z6s30ZBcjfE88D?a^k&?SLuBksRB6&pEsn&aAbCy}Yo<9EF%yAWfzdG##K8t-{3T?# zb_fNSIO+6i<TG7Y@rv38d=5*%E(*O&Oovn6!wNi#R}wh=Ckb+hX7D@^U_KIDgf5c5 zQW?z<nVXH0T1I|!rPE1U6a~Lc^&;9jO|ZqLr_Ih4Sw>@K5a@Y%ot68>YP#Xlp$z>A z1k3r}rzV=zR~W{r*FnyQ!Z~~s?N{|NXx+gEYCMG}$6G8l1wlcE#6Hi;Z4D|GieP-{ z&w2@-yl;OHpTkHN)Un_U_ED4Ak)M;*1Vpq^u^XxY=b1gQ4c}92ml5|aK`42N=Xf(- z1qu|a<;36WJ^BKJBhosvc^5*qn<atgEvv+mDVokuS0`!rB$>cS0Cu=-U%=4x?i0IS z-Hl}TVh1ZnZ-J15-5{K1WMeXwd3zI{&>*RGAJ2k<_1eN7>4_VCZZnCvYVwEud|^}M z{@DwOsg*5`lBvqB1DmUC$G;Qk4$;>fk2oGe?;oN9V&g_8r>c*|gmHXd7SEk>vf*nV zr4{fEx&B3p;yZiCdshfpn5BbdzCtvrHP*YI4ZKaIJ$d&Oh4Itfd*~LlmD`dMu{*ma zW*s?J45U1aRc>GEh#c}3mHFwDPYe_B1M-}LQMxwJCO<%H-Um{}#rohc9Q!2#!-73Y zyJfe(M+9P;^`^2;=EsWE&@kd^P%wb;T|O|aUs|wCglEifm0wLtdgvVgJce7{AuWtN z5Un@IwYOyFdfu@5!@e`$!d=y=(BD>1$$AD0ZxyosMyh$}*S$bplcwZR|17hzmc`kM z+%^y;$@=$lrhva;c^<$%73gp9bI$ctmVP~BE~Ij-1^5*gkDrYh2rvFq{fy9?)<L{U zLkbkD&iRhgZ5y}dZ~q3w@}is;^#<FwfOCxvavH*0`o6O|sVvdJQ56Zlet(@lf$lbY zJpvi8a=cC!?lQBP8Y_a*0!Q$9Ox!cO$la?MI@VW1(ta%o;?tX4?Ndz0taUtTE4G-M zsH%AK0aZDR;O<(QNVqYoN1glk_Dp6}ON!!_r+1PAp(|>g(-JZCPRmPD*-aB)gkyk! ztvNHJo<Cup*-iv3>{q6sF+X^Ig~8B7;(RB;!$W3q1V;noF7m}LS)oNKMWfGu#p92! zK1DNkd_Gg%JnRJaWsE>+Ho8LGue#8CTW4mUh4XFVWFynR-GyozaA^~8y}3@B*Pc>R zZ{P@QD_k91K#c3}YY1)A=eeA)-RuF89TZ`8O_xZRVH^~!Ln-nmDv)%yZaEEHtBJYA z<(Gdx2M4aFzSBmCqr^nLp?ZIYB73kMj7=DntpM=+tpvta1kV+Xi~%zDmh_2CSD`@X zlx{Yuah8XBX}6++au_}7-t)lFtp@KuD+;xy{H?3nOqm3xq1}??-xGLCp+(z>%&~d3 zb-)os2IF}CyWr=rlq`J&w}CQ+z`)gKn?#me^hwHrsUOlD6kMhPk72Dlo|{Xcm(dl* zN$1e1;C-|jCQ@%`Xu2q-4-nA3L3Ng8v+Sy2HmBgqqg7daeD7`Ku4z87Zhh!d`1kV? zDkAtIV=JN>nFsec58fEoLxjWpy12F+xDJ#d;b;MJn<(rd;GZk9647@QY^^jbUoYe6 zbB%$~3dEWE0@O0`@6BTh{;hchKz1$Sq_bBUoj)_w@GAKCz`NW2#y3YrU1zl25{ljt zLM*AE56Q<f$PM*V4zAOjQ~7&NEktxLz32IZl-*ZNHnefBO@@CiIbLb0ZH8<77t%uR zPNVO>i2l4vYCj-V_DhowV_F>^I2B><RhFbB{$eKxE;LL}QB`Q)X;P{Rom#>q1-Jx) zU*nAG91e`>ZPc?X{^=W}hgwC+w7S+9GA7z&z`zq+^XA9f;pu?qQF!D+cWju4E;@@J zsf&p{U*zJydb+4aSWqv4afCirv0Ys|+uWSqz(xVSb4576&4Is$RZ+{ar3=d9lop3u zT3F=`DhI}*73MewUt7E=P-kq2O>vGvpvYQVw5BMGkb^|^z&Ui}J2b+gDVTBGWmXjW z)4wX4MACkTqO^Y9m6diEpZyd`7WXj3^Y4jw2;pY^B;Wk!T4{Z1w6K~AYka<xPdQ6s znE<Te7t^S)X=8$JO=8#aa4SA820Q1i?X0%bXnoZe2&1Hf9ByL^gE5Z$@DIW?kUCo9 ze*DLhAm6)wHy{>mGtNX)){agzy)~UXUu7pwi3AKi36cg7PxmZ47M4v@U+FXN6EK{j z>3(Au4*4PSE3=4U-V+wP08*^UKNjzSadB)sVInl#(mIRQc`i=91PPjb?p?K<ccvZj zTuSj$JEqP&R?Ge=#~0X~AhjtVT#;8v)9p=~W52+GeuVRVu*bP;oz#BF)Y>rgb$e<Y zk-4Nh*t9*TV}qy|`{Z7R1Ghw-#`9!H<v6fN)XwTL!QdI_7t@~zZD3ZFAVAi2!GB>B z!Fe-cV)>ihqwR}R_`n2|Ca)*WB(>G0?zr<<)(9=a8%eNw_I9Z!(c5NuAFT}>pm)Y| z#B+WXN&Zfoyqs}WX3dQEv?b#wsgM1H@0iUX+#**x8}>p_N~StrW^jC`Kk{!eO)ObK zbqbh%AwP)Z$p%F~oJXir_V^0m5J77%oXsnP8Blccd`RIwlJax5ydv<ort?zh%s5Z1 zM&nG@H}$%|NXzYADrA4(bc{fd(bPt$JMGfBG-_EGtap0|`cMJ%xQM9)YX8((orpX? z?C9|Ly2D0Qp|fby)i-p%*K#tkJ-%UaW<z{B7$&55;**)y4ksS+>8krm&~RH{=nSw0 zDkUy_sS6Lm{sG<qS7Aq?-okFLmLE5j%;^U?u3A;IG2kQCS$(0B9P0ezS%nL_ozeZa z%<gFc+(<PV*?6%S%e2Ed#0iD0qZmw&PUepJ448^2ob2&eK5@D<v@k>6q6?ka!%AC- z(zF<t4WyM;;_@1KEeks=$$MB%2G0l>n7$6ERJ_sp4BiH>x1SHw2QQ~ZPjmBC_Mv9T zBoV<(qhTiWut)SE(|-j76h<fuXO7W}2a;!t2Hagl;Oyvpp)RoW-o24&#zVubxh<i% z=djQ(p`wo4OzH9Vgdg~grx1|hMB|(=EMa)VO<bG$UqzvIFBGj`l1K2&&w+73@2AiG z1lHm2jK6YH6X`f9D<txz7dlFPnq8$4iOnpnP{VIBq8iAhQtAhYzmrA<v^I_%{6o9k zP@wt~*@9Y~5LWZ0PFe)9Jac4^Tz!56WEy+GG*{ke$GmDi=Ri70)4r#Iw}2D@!+aF} zKD<<Whq{_E;9~<-0i4#$e2~2hzM;Qb6>t`3>Up?F4#!%MH_l?sy+H&7&r5b#@epBJ zEdATM27<fahy#cWx2o1@sUU{W#pL*lewCl@rMA|N<f5GOCuwstQVJ^wL1|7`BI=hq z?;KQqt3Le7;%CmEr{8B99yjr?Vj!st-4opUD$$h?#PaZoOiD)bP71cT8?irdHZfr$ z<0l1LGQ4J2<7gJPx}p+mPszq1GCI=SUhaBvDjqL-3?@-<F9-t60+=I|u)A4O!RLy# z9!D&?QT3yyZOw+R-{g2-xgDxJ69q3py<tu;=!?#=Z;q`ICIViEa<NeODX25{{J?8T z&@Y)f43{PcD17(9uJsh%QZoJ{(mt=ykz&!fQ0&BW{=dELYj1$MHE1^Y*{6TPyZ!cJ zNysxol*VHu=_ijfW$ScRpN1y){z@8ElhujN^{z>>>g1|t0L@~1%KIJFx@#0-G{*;D zAh5H~*Ws<Y#^{ZKxn*3c7`<ac%y=7_?AA$wd6SKf1@RKMR?=`jsti4l(4g2$-)**R zEymCP?44}+KhmNJop&W`0=)%d5DAWhBUyHdo?v~$aWvsT3v1NkD?g1*ajis>#hW6G zUiv7A^=YXs9308R>{p>|J$4_mnVvd<BvRhdyC%1+-BXYX0YLes^C89TetrcY*pqn| zvV^9lVJzM@%ZZ5y*&}wGfpSuLRO!|L7%_4Yz`ND-ZXGSI#atE7YygbG`MEP!7WViC zqT833_jSn#tIsx!Q~vo5DS)NXZ3pc`u-CfMYu~q)kBq<b)ePTtnF#s=qr|S*V5Bfu z360pxbL%QJz#NFC&?Xv{Yo`<P4wvGMb9oosvlF`+Y^eFG-=z0@igrL%fNz7QCK})_ zIEofg+h>R9^&Z!WOm%n)D#T|0LaaM*jb2?tD(S;{1&@HbuxuQVFM&p@Opi$f`$xYb ztNb%kfi0Y)iz%mA>KhL_oA21*D6j?Xq3Wn1uyEZ87pnTjRVqkdA?!wJ1mk;`@`d14 z%e~?}V`wx}W6io7yCv_W3{w#Zp@zz{j*AcXD%A*<ot)7J+AL)?3>mvj!qY?)+&>YH z#YE<MlvZrBfVcPuWu0I|4z^}LqqO$3zUXS@M$9X`g0`>32+>`Dx}%1tXa-~DkcSG4 z0haIxcqO&!OC=*w`ImMqbJ~u-Wrl-6W7gPU=0p=b<np#$G53f<Z@R0B06{kWlSY#} z7SzjTD0(2pYgC&f7?PS1%-0d)z?QsAAB+ndc}$-Hx`*5kMwu8z0iNt%u5|ul{`+X9 zk?VkgyCC!@wb7Fm)ea8fQ$W1ZbeoZTei(YUlxeO-bCA+%ob-L8bYpE*j-vo~RC^-b zi0R;d0u-|*86NNp4DDbxhBaX?Ii9Rz=MJ7U5F-jOi=ZEd+KnR|TG;VK#U9FDv!T5( zhk3Xfz^^3KCMY^dPrtwdnv);mOOeaqFeMYgMI=_Xq~MZUQPvO1KHW<H3^^3nyV0T} zX}O>U#+B{l*&Zbk+pZYA(cIkpk@3AVl+|iS_bRP6@_`}Rg7F0}V{gQnK7pos#WTe> zOb;s^I85KLkG_V`yiU8q1?)c07G&>M32K0&iYn+|lzufD@2I>KQw%9vT%n)vSf0yo zh@an4Hc3G3R7dAclXMLKvW3)JjD9szKmd1G<uHEk${5bvQ*8~y1kC<G03Ln>8Zr+s zU@cogtNvnOr#}H(rx(Yy&=&5+R;}~LoJys*h&tIw&tr!?Sc?>{mgM##lMHf~vaCS3 zd&=Y9iG%dfl6<SaY@ob1g7t}Y<yUE~&drKQ^fKn1`v|j|Rgh2BVCDed38UL=K|ep@ z0ahT=Yv!yQQn|5)T6oyiP<c^=6p^+g&;T9mO||#L=P1Jk04wxTGoUFIa5M|XVAcf; zBMJ0Ice469GA?TlhBaGH(0zu7Ulx|m`}T98gmO@8H6-PHz@2xeIb6`b?CtT(8RN96 z)YH>y@$`^degBx2EUa!U)|D!0gC}p<CUu?6gJ{N;W?g$Uaq4Q<&IbrP>Kr?kzBoTM z=kER0t6?7SegllhT4u1T_NPkH;LaBvDmy*zd6;1TtujLmMPYtxhAxG};Lji3Rm{^% zmO;qWky4V{&>_5^88Y%Gx{EJ+CjNbw!|fH>C-t$H8=?7F5GS9lCBoFq6ko!vrXjj{ zX#FCc2a+MQ0kr0xTC@?KB;nHTm#KzWr5-C2f01NAyWba9zjB09$;a;T?T+=GbcgKL zy?YwvAe6+qV#{`L5>Ch5+`Ee{U1Tm?PWZ|fq>*jgQ}_kt{ai?fK%15!mr+j@FkXZt ztSm&5=6*Ov^k`!K+!>d0wTk?`6Pq7(0R{^>@fAw19u-8K6{V4a7jSo*=|20WIGj-l zc=UQ}PDB*N$S^0~h@_z^)j<@pPwlNs)rWYJX+;!0ThDXp@4W~*Vqm)cz_~W8ajF8c zgL>y7Oe?_a!X&a`h;MCYjryVs@Pe9o$;>E3Q4DvaoU$Agj28tW2x<yj_+Q|a^5@{` zK(}+^X*;cP`2vc3&x-40=VBySY+jg$ze0n_asVIOT#Y&m?@TSKP&W0eXE(8bjEwxX zT&2Hk!D~?l|D^hohf^k9srl<L`}mxP#!8tA=f&N;T!`^^fe1Z>^d{3LMdJ&Ji$L;B zHQCT_BT$9zA02q$nw<j?HRi5U8{%o7&^Hw%iUC?5iIX*Z&otqYkkC|@*`$X$QO@<! zR}0TKMa=aoI*$^4l{#Q?j%)xD?ftU4!6hb1%1Vi&3*6oRg3y9Vm|6>zp*1d&N-n#9 z=6sy=NRs)gUg3>y{Kg{4K2(I}`3{ndQVAnA>s5xaOCYQ-Cl?{ChDBPYn4-W-?l>7( zIh`V|7t)>JQpHLzN+OlVWk0|*5eT>l^FbzE08v#S;cqD3%dPMzfSUo+q@hkw)!hQW z$vN^$9XW>d2jRxT9$Qn7H_rDj2(!u(pQ_qIk1I{ecywRj+Gui5KQu($5y64_xvO1( zQR`EVPEd}+NNkWC2)F~h4L=lSV+<L-Ri*m0Rd^l0*Wlvaf#X?fy@5Y%!BD>{$FsBB zHcNvF43$RsNJ$zdBkCzJ#WaQS&Dz}24*p?yxuzoXLJZ`+tz%#87O(cFZ?Wd>Z%<D; zAO8v<ZKrYJ&(MhEB_%U1MO`Nl^wUC2S*P*>O%d88-_L?<VikSu0z>3!fqM49t<~w# zWNWW*<=SnUmS4->z+CimLL)X|E)FsZ=6m5R#%m<h%l#;zD5ga;dBv1YGdvfbHb&2K z19N5;BgK!$_f9mzhz^_B{6u3t=mG=08lxCtG1?nZH^lZ`7+<q_+Sc4e361=!DZI6~ zyt+U7MEjK*y5XQ0?;Q8|P<a<9TPCfXblJ-BFE@5+qnsH*uyT42(mIM`4kgju!BQ!N ztytSBJ*iZaN$M}epb*u$ekxu4fCitQqgoKkeTJd&OPP4HDM2mVqw7Lgb<u}M42Rjs zhKyb;b=w^!x|P7~Wj;9yxyr_e7%M^8az}Tzs)~~(=L(i3(LgX=SFK>x%_N>e-#C2h zWBKuAQo&+M)xnV1gsdC>I@e=NKzeuX{FbGljtBb#cCp6MDwyheDn5<o=EAeH1iq%5 znrI|yBGvC&J#=U9dn`}0;G)){h~K`LAJ8;IP(O&9Re$yUo1W5W?^|@0De7sYLst#V z3()G6H^@K=V~Zs$hW#3HtV72og!VV4U3Bwg!$?Ro*fZ(mh=UR>d?^5TVA7*0A^jk^ zUx3n@KYsBCv<?rgn5KwDt|l3<c&1XE4ZY?kB0PDJt8#nH15R#Jbx`o#W_ENxcgpNL zLHkxX$QLzKOc_Iqk9jM@vF#R7x#La%2Jbokm+9R#kvI?LMg?K!{IM*8J*=8ke}22W z%;n@vQ19^)dxbv<8NN9`_fgM!K13WXAM>egQ%lOcuIltgh~bY1Q~yJ1*-Ku!7W9XD zA5Q8ycE!Kt7W5lvAI>VGnPyRPc55{S>a~dc7UKXt$;j3~3wh^2-jnm=&=mcmK^4D= zS2)>)Rprd-pw$+(@2OkL4$45$ETS!DI(}_ZZ4xHupSq%}#>t)^xJvc1JcRj}ijGJl z7Aq&`O6}ktfB>96%MG4x=*uSM+>+nxPJ@nePX170iy)tzyLL&451dU7L*i^shSh=s zxdbD>#H5GNeiwfm(k8mh?+-@x-H+Ih0L8kS*&2CQBIK0a;cZq>A$(zo0P{=gF&NZ4 z4}8+twoc;wvn=$$heA#r@1TGn)|8~Q7JGO60tBGf_3HP+&q>2r8KbZWF$13n9Mc)@ zy3Futj;Nh=IpGWrVchHXMZ7$Z`}F>J<qz<Y`N~_t?kJNLhlUN)DJ#g|f(hWFA~Og~ zJR17gPHWSua0Dd~pPX?QowB?nu7`4?(bgxKS~MoS;Y)h=&KqvO4*I#ULyGuuOE`es zwXTZ*&SR%DejW=A-lOPv+TRgJ%34%+Bwy}%pFJ4om6Wcn44P6PRa4$<@wi1B@qT)y zT~($v^_x5E(QtCs=S&+7R{pW|0D;^jTqV3=U)pHC9|PY+`0~CU9R>*V{N*&pWg>K5 zy6{?Dj>7EvmEe<U>5+nZhXm*3^C1`B15@xUwIeYfb9sZMGn{MO+N_oLEw&KwxkeFE zxFS&y5mI+n<d!{*!E?)hwvGjj<PLy=2x_eUVsL^zShV{3=HbQ}%On<&btu(lXB5-J zaZ^nxCfNzjvOe7jvJ`Eot2g&i&}9)MIMC&6AGlAf*FJkpkmehSfHH^7+nwW&pN&gD zxShNUGbubDbMkbj?&L+@wJ-%*K#GeGJu)Ij;>|8Kld9f9H8Den9$BiytSH!re=1KN zbpZwG2jqR*laR&y1aRVl5#wNQ{jGLhntyuz4y|iyE>s{EeQ8ArJo<)6WD-Y)c6m}H zQ!c85&*gbjl_h%?8kUGMm$#F+THr(^IYB<mNl+``r8QZFL^>NNYAkK!t5V;9&d!4w zRvhILT2`rQFV!EBF0m-mm)CdQrc_Y!bKt9VRdB_)yieRfFtlUv{CWtIaOai*sHDl` z31U;ep^IyoRW{sP3JTYkF80y!oht+QRtOI4r|(>ndt>nxunEj>HUYTc-cz;>45Iw4 zcnoZ1s;swcR8}eA?WkkIs5Syz+RCO5IkUJWi^R^tt?i<a%Lh0F$}Y`E2aut>&>{MR z9dVP5jOK&fQU7sv_fS^Q6^g;&65kE4C~=xwKwb&z^vR_%m?-QRAO|&E^qAr!LWa$j z^}b%@P8F#WaQ^#IdMUstO4?O4F?I8PWsJix`lu>l{jWt9uxY-gYaQ!;_71k~b7AnD zDMTt<76!Q;jZUu|2%$U_g74oWvR7du!&e=xY9W@XPK;0Hma+3G5=_pzO5iQ8fyz6p z0B-xlc73kQIQ2+$=o_$8-EBS+-mV0tZE5-YOoTydjvh~g@nA}faIR7zMH<S_m<?&` zM=_Y#K_j^jt+)4UrH=xQ%6amyi@^uZ)bZ8(r>*lgW?kiiLnw{f$O}ZX0W%zKl*opN z3++Vg7RR!QLr77ljv$-`2E%$iA&gryv&4F=KU=B7@Cq07uInbNNY<rL-f~OMDDQv9 zg3`JD`+i03JZL~VMI0wFv++sF&Xe69D}iEgbb`TzzI#P_hk9eR%O8VskT0auhYr~5 zuqKg~%(wcy?}Huz*7Uv+Z=}VE^4P^8A>$Vx0*pR*G_p2Joey{lptba+RD7oEm9AhR z@z+u|#7klt)zKK8!*%SmH!3`B*~=v$EF++2H@|dq<Y_yC+WGj)dOMe@tq%tqLY^W0 zbB<Y_;;4D(Ai3g$hG*_cO^H$<Sz;EI9|wH6m1yLuThiLoQ`HSxl0Pk+VC6oz#!WMW zqh_KN&uf9&4}?c!Mu8J3BpXF(obu+15kKI9by%R?qCMmo?hm8EVPX+#MBhYZbR)Wy znTw?t9<DahQ8Nx*;`fZ#-M~5Ckk?pH*_2>~IvxtQLik25?vP#1ja?tz6CbL0@V<|x zODjXRXU3=vmh%Xe#-M^sD0H`H7~Qsq)DhO!=C{4ae3ebCqF&3?IP|adR@Am@xH(~^ zV`Cf5G{{u|QCOgh030P4a*omh&VzL=&<YMYpJemqLXpeYx(F_x$VJaceg!inm#O>e za1`-)6p^vymej?s+Pzy<`Ql=V@^tHK_={vx{NI1m^(07my0Nz9Cv-^XencR$N{!Be zGt*XE51r@g*kF9D&3T=%NCJ}_Es?+<a*Y7^A$|>kks^OVzA+JgD2e|Prz>SFG;-_m z$ts5=E9j+O)R&Sbire5)IKje)hiog!X+0$E;h%&R<jm6oRo&&!H1G#S={gZXX!6*J z<UF6Up}+MpQ)fdCy)IlNIai~_OshjTCV^OZD-kev&}v0x9j^Y6FklHpZuLgpWb{?c zH78x+)djt=J?4}5b~^;X-?ZXmVxQsw0fi`~NKvt|VcTM43)OCMaA`wCW7Xs<hoVyW z9S+C$qS$$KikI!fQ|LV2%s2x6Ro{I5m&$!5GN}^BVr=@?-lxu(7r!D2Z*1qijmf7A zv(DH;N;Uz6pkwv8RUE}6pakLv1c=FTr08wAe;(;nRt`1hIl;+MLr3C;FCK4PhQ<r1 z$^$_LXRPfA-oHjq*c6Ojk_;q&yo8OF2AEvH6~z4M^aWy_sV=~to_Lj8?uZIfJO!Pm zG2I(CGt(@rUeQA#8r4I-t7W;WbOuE|S*hJPB>Rxo74vOvgjTlUgj8f_*<(#QBWTKZ zEH|f1_D@#Xl?Ur$*7z!}a^3ehgLzMe302C+LU4!yr$gNkP54h1Q};6~lcNLOJ#|NI z=ApvbTn!Ek&10)IwkbLXAr>?Gp07^fg|0D>yL=z!>ACJ{cBm2xsE@zn-z6_a@rSNo z#u4uXBOa0BV#IQZ6dJID@LOpH^rhmbU#$xl2ICEw6i|32O;COJYT@1n{q%y^^>jPU zg`L<h%g>YhyT8JE^k;|+eg+6rMgtFh@|==J*4>LPL}QqNsJ`6q2ARubtw$wMW^F=I zv0#7OQYgpPJ)A+(2Cb~3?t){WXzBo?Fcxw0L)WWmPyubpCuC)hwvdRSWrU@5O`<a+ zk*PJ%vol;f9pWZR=FfZsnEI#?8T@m=p4}B%D>gJ1Y_K<FC^eUacMyeBWeMOVdwM7v zSLdqhjESq$FE!MdcAdieTC8h55U<VIWbEM!aF@-^Zd({aGBXIqUsIQ~3r?;ZxAHOJ zbNM0ut)%iXF+EULcmZKOyWA4@ynlaf1=3VW+$UTh(4kR>LQp$wKAX3k;!>Y<sHmsO ze<zRcChHryzC3JZ0IVe~d+IB1bfM4^5k3r!_xivwsPU`Z#f3r5+5;Ym11>)uf>OKL z2>NuB{<vA+2%%(kd?a2fK24442L|RNoZyHQYF@>&PO6!9Qa{Ohpcz)9a@mk`8KP;* z>w6C*V89iJnXd?Cg{VawIEb@**Dx5D4mCL;u0x;D3u}+@=;998P2xLo2oHB5*B^p{ zRf!<=D?lgNo7#tW;Mizg9yDZWWVmI9kM(Z7vAUMt^M`%En|i?d@5M&&HKHS!ZCzMD zetD1p!>q?Wj?hr3F}n{;{4``=&;)Q{P?`o<UI7ybnAP-@q8bbu6H|*<>6iq2$fuvL z$4BDbThDIp2dc79+-FHfbQ>wIl`{CY5NHcAd4tQ9>g;A6qym7IJecBWhH`wo-xa&H z&use*R0qxcgh2}6Vypy5e7)g)Cj)~(_Z`Lru-y#m9T4L7Y<5+szkz^7LSYjg*3WM+ z;oSz-#wu9dp)qoaU-ni8*Yl_(wg%NoVN2i11|Hk)al+*z*G;b7USu%XD5ip`VDn}q zxHCPB89kRK89Vv*GVcN`Xcq0UE(YuzKx}4oz!zD^_(%cLc&%}S?ub>`-N6m;0H>4- z1*o#0LhFKsOB;m<`}Ch&VhtJL2Y!@!ETA?gqYzunN}EJvWnjE&L^%F?3imsjw+hd> zUbe;kG`|vu13YZ+%)P;(AM~<@DCd#<{aLM^P_3YxI?|-J{tP91r+Ss*{O0l7=trW& z0NJ!c;0UuHoa53%O8*|^oV3o#ysW3@zEQ*GJhe|G*xbHBI%Mq4nMqV~@AoE>iC(6C z%~7J}DFko-neG)99aXEcB{!qW-G&#2UDd6kF-nN(O@?Y*wNoaxkEw=}?r6NeDU=sV zi;DTsY6BZ6&EZ7Q+E@0#r&%Y)e5vwaU}`e4LYo@B1uZtj=ba}`VpBKxbE>!lvG@0z z4P#mlO|diU41t?)1h$fLZU$P5f1(h;=wl9(Gk%+ASk>mGHOg*sVSzAgM-FFvw~)!# zpj=NZaz%Fa;1wVqzGx{duLoNuN-EF&q1|s#+A??i!^;}7Bb&bp|4rad72a4RT0q(H z?c|gP-Cp~IG|OKgQDH&lqp??1PRiWrRk%esujIu|r8`ou2nvXJ^8GXp=`x@t&)_o* zE~DVCYKzDq;^HBVC$25q^!luo=&U|Jqj5=N|CTQlA)$Q20t)tI0S_A;Q_3yha_>3F zMIjqZ4Z6P({nG`#f%Se2`RkG@`WwG&_OaFk|BhhrPKthXs~(e>ys-9*bYzDxEw59L z6OzrlNjBMmuRROKN$FpCWOk^Gz)CYQg{px7USZ}u5KWLQz^_H%(!}grXFOO<JCWu# zpvGqK1T{dol3yYqiTSSRWY$boG}R0_2u`A<Y>qgCzPeX$;_Vjux76=9sVoy$8mX8& zq`nbB-bK8r=c`Aj(aqI9X+VS^!^bx-NJLoydLM?vvUw?HTa<;^-!Ql}cj-GTufKYx zD$T*7>C={LL8m2_+QnX%<mytQ>O~M+lawJZ)4$C<i;9Qef|(raIuhVbtK<?eQ7rzo zsHlz)!F?jcubA}xw;FVT47R`1;hYS-{;vuPWmj)YN-^6@<VRn%VC3z{wH*!0$NGyN z5|<Z;^7`a}G_o2%7nl9y)=GDdU8I~kseg$eP7!$>hTy;VIwZPb+Ha}P-RxBt3z!>( zX|+<^c0pucX$?s2VO`)W?+hVKr2++?=V_xe^50G*ju!e-?8<RSq)Pshol=c~Jg?T4 zk`H`BpaglWx2xbsFF5?jpN?`VxISMoJrc|M%#LRiAB0rnKRh>ZQc)m4ra4F$zM1<} zUDel6HQHL<>csb;fin!8qQw`oqmO#wP^Ovt4@{Irf{NFHJWMdxG>QsNy2?AQD>g>< zC7nQ-uh;S<=Q*yY4!AH<`=qaaPJ86FTEb-ydD74UGKM|(kjmr2MWb@b+Z9LeQr6O` z@ogxwhv{B{a!r}*hG<s^w{JcN;|~(e#!AGK<4)}8+*T-^I9_-u-V1{x?+mhXpJ{B? zsQ%p_!?)U6@pK;nKuo$Qe#2=z^|Y>8bU4`Pi;WB7shXpp$V|zw2`WoDAc|4{%X@C; zgV*0@X43?g%8%@XTMx5fOu%f`W!g02miQ@FmMAeJe(r$IgLaelN8NmUKmu@~%5vni z$D$D0fO^yP9J{WgG;}?2PP8%Oy<n`<9ue|us3-FT6qUY)^#0(iz^9P;ul4j1rcqp7 zy%m&OIz7pBJ5q_l&z<xbA*r?>K&bYos071Kk^VbbO84{VFe~-JsU5;-Uoqp3E9KB% z*He~B0rPEycW=UyFHzo{AFu!rO-$I-3Sy^}cdHOA0brfCe4xaKdM*cQF8Q!ZqNQpE zC1eA$OJJ7UL~z8Vg(gAQBi?rptwXxwyqq((x!e<LZy&tj+VPe3Z8r_4Z0z|r3uZ2j z>I1XASFG{f6yv`-c{pk>!pl2?&vkgsdr!~a>(Xg&i5xp8YI;q?Pa1S8VxT4Ca8lgf z5A{0I_uhnH$z`{+?1Zyl8u;Sl!4M<umk-8h?7yTjCAyxWp2N>xDosnn(dn`G*9xon zcmq0Z!0gG)E@jm|i*`8ae^2zsU8D*&Y>zlP;(j5%TM+<1aVMds#31DAmrj7wy-1|& z7Bl8=3}7lFTKN*oHkPIaK7qJCOYm{*#L%R~g^;`V{A{kzH@7>*9f*8Po56qo%-=b- zd{F8tT6gj)mb8+YS7bW7!q<*?IaRC&!VXrc=II`RaL9Pneo)sT?>J&ViDL))mG=Z> zqZ>tg3udmylIW&4VlKz%zEYV})|MrB!|kLdZ?1{BI_D=ra&tgSW`S4M@XTN)v8OgF zHQRvrM?2K2sB{-BQ=j|fW~SykN)^5oA-57VDzo+7BP=saNe}2u2k{ld&gyC=3jk?m z@WyR#!)Cceh`>TWpsGn*tzxpGYIG3~C(TlXd)IjHK0V!x?wp?`{e9u!C;GwpkvO() z^GeAjj>n;rYuvcTC_JYD+25*n09eh_N%cH!L$r?nI)-wwVN7}U2SU`bLs78rU^u*= zc2~}W%%nG}Ap98ARF0&%<SG1{_ddW<fBla$Eb$q}2GckApuwL7XvbCx?{#LJRh)Lg zrR>5=p^Y}?`&~~>2~h3;;NGyZ{wuQbxYRMY2G^)g!ljo1hM+kmELF<OlPOlGV`Bjr zXB69GW46GsiHu>2#FiBVXu`Rh0hr6O2GYo(7nbIkVGb@UjJ)WG&QZod)Ewce|Ic<? zF`8Np70}g=XAJ=Y$~uU7F2X!*su#pRBlNJ}H1vTm>gs$Q&yJpK+oxG0ptfONGu+-E zmKUK19*1OCZek#4K<fLuvA`r9-yMFiN^Sxu{;oaJ_ASGwJ|GRB=omYbXMHP2l>eGA zD5+8!SPQ4*?DJ|)mgz-II>gno^~SCnQ|?Ocn3$ZdV&N|wQQ|%OoFiHaS-Sp@a}7C? z7Bg?DlyjI-!G{~5PJZo6nfC;YOP}VLU!y`qaC1)0PeKr~$B7pKzwDg5r`FIhq2GX% zB|PyN$7*bc{2afw8`OrR*a`9*{}XZP7X5ZT6<04+cJN$r6fsbOYw}TN$%=5%xH$qH z>AX8n+wIq%=Qo<Mt^^Qnxx8VI37ik8cgw(}`P&$v08~CoVXlq|DODV$&sHW(Bza1O z_VAW<PEQx%WQ5{rF8%}$HNo^Ye$=-Umh^g~|JytTVQRJu>{h4axb!Bp%5jms+^m$z zaTfleR-5qf`rt=1&i&#&szhS*ov?lsQJ_Ud5YziiX1(e?Sq6vSI1sTJR%o8t3_?S{ z37&GW`2aLo2ZAsGP3d$91a$bK)v07%y~?Lz?i^zqe^Nt04}JVsU7BmqGhl)E_w_1d zWQtWg3O5^t6o&d5_yPckVR=<O2$$d4j)N&MmQ1Q6((E{2+0%*&UQycAxQLDivmM%T zh2N(5i7L${S7ShjrO$-;-wFurITM8(+~LrLfo}qElK#Uinc~GIH?&7o)QzwdSLFJm zIpji_=Q)I;{B)~cV*v}+@-UnG$h5QZ<B3UT-mBxu=81hu%Yn<t=kM-r-!Xf8ipXtD z1FO@2K}Y<DQ}_?6^bd{t|Dhwq91T4Fr+5T26AR-%{>s_eMC(80kMuhKT|6QY>0bfi zQ@>e_%I^pyZda92Y4z72p7)4b<ZMjA6@ktDA3gRNDL1gTn_lI^C_g8*Dx4V>;EB=h zft1x*R(aFm`E>>P=A?$B(F1Yn&?o#wNDKcIC|D}$3}1#c<iYt&XZaNrd%ND>S6{P{ zp>5qWhj>JkSMo6opgDa%bE8~@4&b><JDjd3R`GEqy!E<Q{-+4^uYwLAX@p$eo|w5n z%eX;Q57pa<_@~|})@^ti@#y7dF1CU!mJZVefcE@>;I*VK5^q|XFRD1I=P3Ni?l+>@ z>vCd_@-e-&Nn}8<5q}Ih32lJpdMIFpLyq-*^9ZiqkP0idtM{bBSe3I;05J4$=K3?n zao6f{)M&dw6v+9sd+v5+dZryu{sL3GwPkmq{>pr7TfS8l=>r*)J^%p~b0CCfgx#*2 z80xXr&y-}HS5++hp%eg1Q0XTNTJ9b0%$>gqpr%Zyk;tLL5fTeJEC(NHd^g8pK#DPx z&LnmiU@LcVDzW&RSzJ^miAkIJo`tq3>dUhSVmv7g*7@krh&bJ3zH`v}!|qV?U$?fX z$d$&%N}p1pHXe-ITyg$_YJ9h^cmwQi+IEH3y=E(I*fOHl1(%G|EGAzQk71xNJ>w@^ zi;;QLc_;M;4T?6C2n;h}{;>KuZsI3X21*<JcC6IXJ&54j_cwlZ72k^V^aldt;v@?E zRkU?-5OCz%=y?=mi+HzOD~l*GKxd2i^kAKAg+;Mo(DSPOKime~1ql{HQBbK)Z*oIY z&TwqBsD=n}(Ib2nv)81m8}hfN!c7qfNKdSqt`;6!k0Y!~B|YJfA5$WX;qykS^U@e4 zb0e*%n<R19#B`l%>udq5zm^%?S`A44q<QzYlh5N0Q;%ZY`WW^=a#$4MG4#`&*OkOi zW^7OND`f0<+#(rXJRbGGZW+@ws!nNHqprZXJaice*}eL1dx|i$%=XY!72CJJdCQ-n zU(CoCA7a(v_V?;uu5Y4<fJ%R}nrLlle$0&YA$&*vCX7T_N$2<?XXErx(2(ZKNE-FR z8S69^1uTn7sjNej#BSzU58l*Z#Q~=!B{h7=zsBhfs~7Ei5iEvXCp6vx8y6A{$@`%= z_088O#!k>lftbT(DA2+Sd5=o8H|)YWk!aiHSJ!b*M!_*S#@8xy<FS<`UBBN%t`=)X zfm(4T>s*hw(k6;esBm&vNZVlNU=NcGudgf%m9AISZF}eblzG)YrA$#HeV7&-!%8fq zy77y%cv7i`DYsG&&Y^Z{rh-C<aFDZRP+1BEq%*3JhCmLH=Q-B8!M3zB49SxeR_E^_ zVs!a0r7bl=|Dkegwwrm}QMDC*UIQNpI^tu2zNd&}3VBaIucDVQnJQ<GBB`V$bR4{N zH6Z~e-3oB_@apSKAPNkf4yRV%>{S-@G>)Fl(7aer%ym%U+LSAns;`P)hzQgL{!SVv zbrf`Izf(|3u;-uTT4M^nx{5V@ePT19Log9z1!b96E82m&>XU-sDWMt!adH^R{X4~b zwQ7?r{&e<M|MtF6IItLl*9Z+XjXzZCxuZiHgf<r#OHFvJ!4#sS@sQ^djb^k(JWTVQ zC+la1{d;1MMQ`M2&-T+1(v8k0GA{^O1QDw+2{DM#EC})=cqGx`IFm|-OZU?r@G9ee zuZx81>R{AP&G4_rd3$QIU-nk61s@~72`brH?!tg6?Z)US-&4XnF&F~gf4rEM@5L$t zO{2DEzdV>Vbc5$_6pq9ozvrAaJBrcGN6M&8RtSv$3VYzSH4~OKkPj|FjzGwUPenA6 zVa<MplD%mlPg@pFjApUG`#%B9Oj5jN?c7k^!f1#lA6U{AWZ-aw^tp}ZwmvL{8I11f zYX5`00~x13DL(77yzlxUh4Gs~gaLCdInn%Ofv#zV2$j^$WN53S6v`M+2x+aEL8O3s z!d8mWwmRj<X)<1QkQUNf4=hd*H%hxXX8O@JNV*)@lZ{z=@{t)8xMLTVtz*Yz#Gvgt z0&k|R*x<=1*V6<}M=vm4sX(CO6*LTrJ|!h3U95Qlmb4PV6vj$k?-LmW)me8xs_+<K z1)_2vhAjCr;-SBDyFeI?W0Dj7xvkS)%-83sboE*%dEKO^d0CZ(_d(s_K+772?1CB? zBc)BC(!eX&Gt{z0uMz+084I_9+{>`4TUB=QWAlV7H*a*VU@o2^KVNsX{zb2RABTKa zxr2+PCZdLR1o=uRNymlaPcE7gpVK7_y|pA3YQNzp$N8GZ_=UWiUSlNiOp?sF5J}8g zZ3v}>@hm{kw10Eg%5^KBwAwnpe)&?&hwFt$XizL8OnDHAh&*(eYf%M`>-5%0)MT;6 zV(cSdUy$b3kUC@JS=_yl)%fNBpC7fZQP1uVH&EZn?F%G*aZfb^|CR^}8*)&lcEo|s zQVSp&;hN=y;c$6)zZ}=ATFS<QBbKo-3_x@$&K5I?aZ;|l?jSdju}4r()%&49r^=*w z4WcOAfKNJWzPVC6bR+{{qL!D{J}UeRx=@4Q1Dj;NIPnfq`dh+$G+Kx+F{xqLr)pMM zSn({v<fMM42wci##I*1pJ1Dy!6Mu7o_P|y@g9Xl!_?29q{-noO=;AS0o=D%!ZlWCG zA`3D`*0poPHX2^p1qH_RLKiD~lI%tO@AD-GnFz6C#2iE%9EtS0aYFjSfX~-=zOcZ1 z_>WV}9q2;y3bp|_<V4USBzzK8`)P9XCh`}VaEILD3peF$2bjGFfshFPMcBE1i0j)b zd25e3h_;r|2`xkwJ6Q^zVi6-#3P3~4+~v=d)@j`Ufc*p>v=%a~zLE`NO--oT+lMiM zVvc%g7Thej^57Cc9KY5kVY4zTi~_#mXEU#~QqmM&v#V-oQcnNt28rsT{Cy7UAi!9d zgoU5jGiCK*vXoX^fE@al{M_em3?GPD<dSt01GVD?w?b<)mL;nVqrZ)w@|t*`yy?>o z!#$|6Hi60e(O36dppd{rR64DlxF1_+P2uwI){B4p^_2BFqH~B$d-CRvysk*Hl*PjL zPzMn~7@RKic8ht|F}LH7%?fVZpFL+dNBiXtL2JKX$>gT^-Fiy+_<+@(d$X9_3?=44 zrZF@<%6*;#d<bw%?Ew>60Bwz-Cwhkx>tBW1gUq(IyO*aqn>}UYQf~r9XfBH-)~(!t z*-#iJ=&v}&u+ps$r<~alAF8NFM4cPIs;SkN6(8t15)Q@oGU6qxzIOq;Zd)TDoNEc~ zfE4IZ;0Qv>E24<dSMmiT_QidKpT(3imS^C62kA7yUYwBe6_&&l;pk8bO}`IBer#_1 zA=_E!z2M9*93ySw(Z;BdDrtS_KwbXM!0u%A11@m*45#I>ky5$T`y3Z!L3bIng4_WU z>w^K+mRM#rrnTD`zpOKVE(6ECY@o=2$QxCgxv8^&yoNju7i&1BnkpZjxBF}2dm(Ix z&vgbBYDTqycOsSMH_^j1W#URk+-wTyxsbvwLc1n*^@w?sL36bz&vJEETjuYYXWiZ= zlgQapK~~<Gb-6ob!kJn3yN#x|oO)vjvivvfY*5*}@}aiWCItua;O5)m+wqI^?_wDK zt~i~4?HRY<4JJH4^m(+Rab8RFzVP{AcDxa`gG5qCQD@!P?tKHx3C}>^<q_#r;)gK9 zdc?oF@vhs#DUYV46)aXOQH&IuLY@Xa$oQ$K0)-`ot7d>;$9Ue_FnFZj*4sj97D-c3 zQ2D$jp{7D{f#bGe54x;sX4MONhboYn-Q+`a_WeA+NH~MtITIPlCqsY9AMCWWKq=mc zqIQlOr|+2SM=;iQ$k%=D16$kZcs&C{h2P7#7eO(Ml^qp2*3{EB1~1}@ys^+-?A-J{ zycG3i<kluXx=%c7M2qofVu^&yWU&Lcl^?^mWEQaWOUcEDqKeG5%Uo~!6efUOour2T zeiC=q>~{+OT>@3X;P-P9ex2Z9y$VY_amfwazKY{TMD*gr)J`etxdb7xI9Ad4GvPcs zW*Q|}B&af@*uY8%M>Z}!K%&o047RuPNC62fu!YzPR)i>A)@c91?d%(Dbf$Upxm<Om zKyA@(4kYe}3aBkrdbh~`^+T}x0_j8Vx$$&cd#Aa`I=*u&Yp15_!y+k}KkH{69k<d1 z(YkVyI%~c%o{T50oTL1u)LU(4c;RO9z+eTi%Mq4ZnfhVn!$1Q;e}4>`C2)UUn4K{1 zXRF4a0-o8;mT8ahEliS(UuI6RYDaYBn^m-qTYE1xhY3i_J{T|$0H7d<cWj;I3H4)7 zIsA_*jQ#L<knwi-TWCR9s9Bo&`n#L_bJ7nNRU8t3b+#MSq^(;-f)%4opYU@V{u1|8 z1K^#rQY8=TUP*zl3&@h_f$!Qq11QA&K*6wl(lb<U5nH%NBHGTD(Q3bB9MTT}gK4S? z`OI_sG2>H#1$O84kw(knC@UjkLon*MF+JNsb+)f&Lb#Oye~H51K@E}o2seNaCVyi2 zYO|R;-1KnXOO3mRx~n>Q4gpi?W?ZA7s$*&Ay*7^`i#M0vmp|Hy+5VNCVeSikCVhZf zk|(X&$3YYib%yjXAikcL$MiZIXlrM}lhPYeGQN=-EOUS5WA0WQOr2!W?rJ|YLzBtg z@i9rir9g^QkTj}@p@-z|0;i^-`79#XEB(q<-zga+4p^Rd`n)NWVPyRNn>^xbfTbaj zV}uMO9`*MS;m5cOLR4g4&jM!qv1Y__0XuM6kv^-7Ee@&4Iw7RsS+*EW8o~5{=Quh8 zoJlqsh|`vPo~7Cd`Sybj;(=5L&jREWr^00H)P?(k;q9>|_F8^|xD%YIU}|&kMfk$! zWHDSrAm&qmo}ImR_;FVJ0UpFzPg^wz{C6psbOh~SnPV<g8(@SDCw}XU6+jNQVT{An zULW6;uEX-9Vz1r|cf72-#<%IR<HfB~hk(r#bA%9h<_=*Awlcg&h@2qznZrrb_#18| z6=1iC7{7SVU6&22utcTO%n2xpG(x`HR|hEQ6+2LSC?e=jhFKTyY(}F;CE+nHj)%J0 zx6NeGsv_|al2Xrnrnl`@@OZdh;S3wM0GFcd<<s&GtS>hQCxHkEgT-Qg8AS|9a$)mn zmQVk2zugy(C(Zw2?VW=pYqxFhvfX9dwr#V^Mwe~dwr$(C(Pekpwr{;>?;ZQS@$Gx! zoQUtAjL2B|td%3?%#4+DJoy_lH>tcV=c`R*vB63%#lX<73QHwhIs*>q7iGGhy26X{ z;Twc1S)k~#>$;r_<i;k$aq?P<rIIy)?-&tutuTb^KK(nJNnKGqz81<npd`_HU6D9m zHwMo+{j@tN4@wz?n4X0d`;FM?4>Ra4Z(QMzW{X~VSSmK+eTC^ML^REXK^;N@t!$bV z+v4@@Wilzyg|j;1lnLv)oIbQU1V)-AHBPp1C$c?2Vz0|I;NL0Z2x_LhZ!FBJD1Iv> zi$fW|Q@g2)zV3-Po=v?o5$hQYZ?<ud;bIOawAk6vKB6qORa=}bNLPmW<MmEyE}Wh$ zZ_PN39+K;YSK8njW%otk)tL(m279%~+)A6h8Bm5g(w8x+6In(IVbXZtI67OBL|VYW z<jtUmaMXEGQ3&iT6R`58M?N*i->z{EJ9*)iW$v6V-HLsR(rcmCe?(dZYn{+xUAV-j z-HOvH;Tn>gCk{@+sz_bDygR=RU*<gz%V(*>4QBz1rHLEqf$lboCrTLT>-yBer5i_Z z1cxc?v|<6wIc&>aBLOkvgSAO@gsr3ovZ*}0>AO8`5q1)c(D2FBMVaeqhT2;IpX^Dh zjj?W*D?k=x%Ox=jfSisCMIos5wWY7mhG8VRV?HM37`>MVMyyEji>CaC@eTXG$2S5F zhJPU~*jVW41e|~U124hC#7ZZmZ~ISp#b1YnjsNj78piJ@-++r>4){!rbfPxaj)H<V zu9`F~3>^4>9s9=LFw_5aGVT95_)WwxX2fS^<Y4;;CFidNvierWbOM4x!XhG6Li(0w z2KHvuf;N^$|FuB%AG{1U`fpywHx<XsP{8_^r7=GJ_W;QCpXduV7LIS8j<MBGd={pE zurdBR>tAos-ptm~#-2{?U(gMfZ$`$ym^uu9&5r&#vHFja85#b!lIfZLd&wN%S5*8j zRsTWq-_<hzcWRlL{-u`jf1&no(MJFOsAXeh`IlPO|5V_A0*(G(1^!1d|2xq%3=DrO zGRI#;lz$ZYe<S;E<fMPf=Ai$MaQ|0dGqZ90y~y9l)_?c)H=*S}^ffCZ`?u`x=3%6# z|CY_j{*S)?M?vk)^ez7ftt)M;Z)9fu3!jPU-vSxGPyA1T-vLwqg^c|lb@AWkuKyIs z{tco1w?O*8cQGpm)87TM{wIMftp6pD^&bMiSNu(&vYC~!0}&&=tg*}YqoR$KzV&}s z!M`$g{-KoluYv79Kd+46SNNAw`u~N}zkNmh2d>UPAy_ON^vwU};Pi=~48bm;f^l0N zTr%qvj>PJRps+Bhj)&9i73?qG?Qc84W^!$u94{kqXq<=-pEhJgl?ZX$IVU*jh@B&C zGaul33KJuhL}x}P8B9)`MDVu0Y$fx7`-aC8#)b4!B_urUjruVxQSOUL`NseD_f>0B zk!e9nDGjK3cYT_DaAV8l4vrv%gap0j(zDlDf^}4a^~>k`<TtvkudF6i{>)K}m>1<$ z3J%;>jdoD!2{O!52=Xo4lDB|kXIJ52G|x|PZRDH9Ri$kvEIgkuxG@3Yfnc^#x^9}P z6V7@eNnp8s<msA!UJ|M~3F}D>X6H=s%el&aX0zHE9JQxLjy+mKHOpkTw0Q=%!iQhv z%Uv}@Jvz#A%J8j>*%=FtiQ&)bCcaxCEuX(}Q1r3<-e!g_k*HsoP+Ccs$7ocl9}X2_ zQYfY7R06T3;<V(Y3C;fyT<&QEfFxb}ON}w1fAuU+Iu<D^swLfL2OwmbeNPGXX~q<T zsjf(z{6!B+G1MNVw`n$#oO`nW!v!QNL5!%><pJD?#IzvF`C^dst*4*w)X#gMs4SgZ z+%BC=Ym8+4&BDV3u!s5-(ToJT(ByikCQ*V`gSjM8-0~?2I&uy9j(+|8g_7}C*d~mc z2{ZcjcT8!N)5EMt!^4$KBzB#1jNYO@)mN+N{k6&HPvlk`hIOxosh^|kwJ>h>ZQSXA z9y91CK0gf}lXo&03g7HTC3VcR!EDO!p%lXCF?k*JnI3)`ft!I)Q^3#1H+1CVR9Vq) zdHV>B-c|&AH2Gn0G^($SlmPw&MGNVWpeKh~tyr$*M;tZPQK%1ihqWtA7FbGtPdtB1 z@YX9mL9q_mctMr+NjN~u2MM!(u1@R>Igd=9B%dk{Wj~r1Z|Rd}5{UM-@7ix!*q2bs zS#j{k(lz$bha*seL85=!H%h}2$t)QW?5}I%wJDpC@zWDUV^oLE0C!S^y=(~6&f|}9 zsbt({jc{^~d;?i25l^)U-lkxR;A*sTWrs>?wGDgyQTo&80OBC}Rv7Mwi+6iqInN^2 zXHlzmjjxScn?`0`Z=u3nL5;x`Qk+Zql2GSamkRS^Z-TC-YG6f;5FPTb?bA}!v~Ftu zP-9tQK-GQl018|dRo`pil(0K--ab3vx2^NXj8goI!Bmd3R!CvRgcK_cscb)o$oUBJ zfsTW&HlLCd0jp8Wv=j&><38r#F2eF8L-_6{_Pb|q^~W`GYx;0L)CP4eo@`BWKlF*t zNqhyzrCZf=dE7`uFzd5a`pRQ>!J_~jl}xPh$26EA{(HYTP3OzBPOabcos_ofMeEB- z!(HNkgm1mmx`m6VEx-x^SHJK<SNVQQM!5=?O_3W@)U^B1hja>^*ZEhmPlN$dG0B@5 z+YC~$A*nONQ;(PE?&at)7kchHdqW1lDbj}(#v16bsFqJ!sF%y=WBY|Q7dq}pa<XT} z=4w~iGt><uGXb5BlozEy^eeyjaG~5_xS4BEnSn;$4T&agC5T{V8;-aEL=uVj6-&W< zXKU7L7nmIi^&3OjO`9<yE2qfqrSMk#*;$neJ312Rt5a8TzcpZ%V@e5nUW;`eG2$Gl zQk~Y-Bd;N=9Gt4bz5$kVKBn)ir#>7qz}~5D3@Ze;Om%1rH7r<o??dh}!ayxkZMzzD zG7>72o3Ik(wQAAvA@3>B7jB7|Jx#bQugn<_sJm-vRDN$A9Vf|O)IJ3g8;A3{xQR-r zSWV_t4Q8&rSf=UPy}1)%+Iipnq1aCU4uRHHSv0CpbxW?ab4U>cd*9$f@W*@3hl)3| zX<T5f$kqgFhvJDr)NPy2@{DfPf>d>pVzM=Bt|HY=xWHh1v~3sn?aOgmi{$Pym{-0G zkj|RKE*hu)CrL%;z6m_TGHty#4qUy9R+}X()A01bP54}S0M)#{J4AR8&60HDdLO6K zR_0K506If1>7hh^Gf_66VAZk?kS=Y&S9uH<2Zo1<Ze~4>8b{GHj#s{OCa6@x56_YQ zY6YCfOJCMvRe_$|muL;6Sjx5B>|{mZX^jZqJ5BJ0(*+1$#tlCT4I>s-e%;Uvx>Zzb zoga);oSkz|_%yM7tv&aZk7jY{VmYT@6h;F{j1F+}=B0TKKgaICO6A1&V}|*ibK^h~ zi+)e+6E?Xqxjag<D-Ghc7DYOb=N_7F+Zktdnf^8bgSD8u88EhDIM|M7Lk2?)2dw@@ z537wD{nl%64}3^Kr_Isa8L`$j&X!cS17nowo^hl~eB0^*iWu<2t@dc^i!Uvi7J(#4 z&GVLGrGwG|FtM7g%o!z-X~0a;aQtqhru8;1?GGPI0U<J35%oAe3a%seBK?>%-U!a# zB<EpYtkGZ;h!WP_cs7w4F#jOpA}J#=(k=bvlCW+~#)^gCc`hu!e|`7xYRz}ZErVP< zVDPx;q{n!Km6zbXXfYjXD0!M1ZiT1><;k>bD^=m4+32Cjta9N!pJ@_8t=T>vY{2<K zo8~>CKox^}ujv!z347}`#}NtQKmdeK@^CzzvE635G(x0nE0=zLKkR(Mpxj7~{3~mh zRlp5j0i6r)ixQceLh=@-$&8HCZ~fwH;DI6O%+c9%$gR`>C38YCt$Nm<d(Fp>mG73j z%zg9B2#X@f5arvu*JYYvKZvYbd=^-qD((Cgmad1zEl6N5;=H^dGmKR&9+GOZ+gET} z<LM!UvKK?W69sTAAc^!=qBkCAOw>|XX`Ri1=JXh|W1@1wFL~(-g(}Rffwj(IldX2F zm+gPNdr3c!TMLvtrNLrJ{Muos5G+x}g`dq{<Xs00{H^Wx7#`{bj-O6o@~VnR$ZnH= zcMiBfWAh6Q2RnR)6ODO&&1jnyo^{#<v79%KSAGVx4eG$$?8ci*!>7uUj+`0&)XR@d z-;DS(k0ee1DDU!xDnj@@x}<H0sCcE-+aVW+9ZD&fcr)yWWDWa=dJpP2GrMg)wcZs@ zgdyz`a1==|kqL$wm|HUU)o~?<)Po<TgztuapKQ$BF|`dm3v<jIo`OibzEeTlBqPPa zw7<Oi7UvcX-fWsq>pbRAS+g!z<VhhYLB(NkIOL1i&)e*IC!LY47}_SH)4n(h1%1U7 z((kB?Q7m>ymXmoTFW4ZYHBAg6fK^us)(6fpjdv$!@`trCQG^8_3dWAr1Mp)9S;x@~ zfril87EjzHF;cllL$|Lg+2A2JWkGTU__5qSvV*oV&lVH&mNU1Z4C2829!#L*B~i{t z+#;{lZGL3srl@kGd86XeGObrt8`a&e{(bdL-*FM(03lhmr*P)fr!5LCF7ixTV$G2# z7_t}7Jq=DTcWyR#wPn(xIa{cd;c<e^3u_py2s#h5oMY6ji(Dc{C1YVEF2}i5d?v!S zG%zXm$<UU>Haj5-8lmgC^aY5|d{LB3n@AjwJ1+JJ$1g4?F}N0qmsr31)49&HeM^Ll zrKPIOF<vORA9+bWeAqU5f(mRd7`>+>CA+F6hCNxRlNZb9Br_UAA+>jI^xh|DY!=Pw zTtO8(-ln#E);glhUk3dc1GR_7{Th_DaB1xGyR<1_0&^l1U$EL7DMvEU`q&4<rwX;3 z-(*jzb7TO`+eCA4=!oVHoT+hCWC(69x!C^DN6fBV=SFA1sm=r12Kp<nM%hhaA1enT zWgp>6!zuxH)wg;O9Oz?ofsii1VpX?jrs~vDgylpq!9q{lYkoLKpOb%NrU{0sX>yU? zgfmAbda2kj3&%YV-nS8H$zI@HVd~nX^CO_)S7y|?;&ai()}7~e=KGZa*(QZBODlF3 zPb(ZHm#hTr3iO5^%57HH{uXY<zCqK{DmO;O*-HR<3*<?X!3&5mR=0)st>GfoSAk&2 za!N(jeU+SV-y#J5Y2*}wLtNRRGn54OwFgox0m?!(tJ5_oe;W1@TP-an5-8F5fbH^p z%uO@LEi}EQ+2yQsL)cgfn?}1W8sVgqNd!{Z{L@a+*Hf`hcago{P@39jO+g9Mv7n^} zsv*tE5M}ie(23^*1doPJCBRmxQL&z;DdjOudL!Cu#p5wG)SlY00-41oC8-<Fm(;tq zk<Cs{LHa%bzl;Sf%E<#hqbXS8?%ExIgF8Ie;}kh%T%psNqtV)(H(J9ddTG`G86;nj zJ0h$uN5SIkZXv4sxn^bZCe3bWJ>Fa03j6G!YZ&*C6P*x30}oKmXHk|v7mB|fMOPOo zLX<WCRaHrdj41#L;@uc=mi1|e92A@$85U^~k6iP@XcJd}yehLAE-HLiW2G-7=alvC z?6i|<S3LJ(ruBo!vwRO_Aab#;^+Ez3@*2HI(&?2&4iw~7`!erZW*#%8GlXJP>^bwg z0X3mY?K*i(7#~%lqK`XOI^Mhe(m}&q95=K%a@+uT%Ls7(Cla=5ZRKa+BD0Uz+G+eH z%_ttX^AUZBJ^{KxUn^0pJbB~iWaj0~3iF#NC7qhA{x#fEx!wM9*ma~*srKI9fXarK ztoZEv=B5{oF6>g0#kz+Kp-fzK^Zmr&Ugblww8-b@fMd-eJQG?>BrBlB?L7_Rwm}ND zcL1?Nc&LD3<Al;}Why}<WJmhag^@YW4Ap8l`m=6Ay_se~N{JoGLLULq4Tn=6I0Pj_ zv?Sh0r)iH30E93YFiL{mA6Z2KCFWr{suA$MmE%yNk!SOYL65$cQgWrP9R9OZf9~0q zjU5&P3jr>L88ZGvx8mg+lHV13^`VqM4%{JRja?<V%MdtBcA!)COH`DALRp0JZdg_y z3Nn9gx6xnp<OK?2?u470E?%ZUf#SPqKTaeXyGXftaby_@%@gO?)H5xQBoJWx+F}4Y z=eOiVy*mOP;PgpSrM>80UH?E_P~nfcv+02MprqE;V)QB@4(mxCDX~P=W{zsy^V(>4 ze!u_xG355*!H@Rd9p--ifGs~~pNb!&u)%qE!L@+%N-T?Y7quy;jXYZq7CR8;Cpyw1 z)v%tWnJd3AZT4Qb_PvwKOL)9A7A>ck)jMV!F)s~X0x$Cl^m0+Qkoe0sB?GLQmvs^X zk$ZQO!qCd5oZje(m(P7Nv=v^6FsB}KbYbQ|l=)4*(?{hRYAnrMCWzBOgH@VSkO8_g z#C(Cm17~oCP>+qC6SOGcaZki6oH1nOp%pE)?J0A7qgxImXP&Z9XgTLp3AdnosVuH} zfx+p`k)4?f)9sa^{Jp(`HwbKPFvTG+1jln+C^ly3E*8h76=sySgeT!=+|>_@vDq<r z1jPOv&)eY<>KeV_fN7Xgp7qFu1Rw)!KHbR`Y#!X44+;|fs)dnf+>Rvm6f$GC0ZHsg zhpH$C7yWw!tFF4F9pztm1nM{b9KaNhK-q=j+>`#4%^DW?h@VRG*$#mhi9E{EcQJlJ z0ppgvS^jPo^aRh@Z?o3Qr1p_J+7MwgCA_PZCw2mLn%?5SibX$xrs-=|wCQ}kfhz43 zf-6}Qe>j&otMXCtc>Q_m>!2>;;X+P8#))2`vSG!M@r7Lgr+GuG1?6_J98|WM`=DA^ zLaMDESEm~ekvP9R4H1;P@`&e2y1L5{WSvMV^p?Q>ZAn%%9aRF_-sp|&kk|M2^e}2) zd8mJ^+k*I2vn&t;ZpLP4gOW&xPd(Z0+rhTcMit`fYK`*^vA1uXJzLp0geaMHHTE>8 z@bxluTDp(hkI9^hS^71%a1}VPon>046n=CLBYTmwG-Ld%rhUR1*8c{7@IF1Ieh7XB zc+!K#cFl>VtUQsLBZ238;aU_7FZoeqIt#*~b>KjU)+Mz|FK`CT_ZsJmQf1u}s|w%Q z5vlL5p!U`lWt6QyI{(8dN_?Rh({L7f1ld>i%RdboCCnwn{vHbb3U!T&QXKgErd$)y zR;ic;CUfYRfEJ#?@>%@~(GSIC#JcRXf~sZV=k@P(@>{?Hs%kgy%lP!%aB~7u^gWb` zS)QOqqH%)VP3#OL3j7B4!6}v#L<w>ASFPe$s)<?I+!h*)+|@qgFc)9>%kxJ9@4zaz z#xdBS@eS*t&Th=Nh~c$b+g039iS~zI7xmAoovZM$WHie#y%*XcprZPJFv5OGw=B97 zd{xJEha#Y^M_6HW!!#w7#U3nev#nT*0)vzt`d@cqPY7X!D0p7K$vHYc2iBBgA*HOd zLNOe7s8brkJz2ljN^FsNwS5i|9{K5FUA9R&er=kH^BmW!k4IN~(F#@15=SkztDANq z6rQ?*{E1$gX(zVOg9>yhD`h!K`H~dz$Y2o16;ABAyYVCKWKVB1Nskj=qIv$N^brhu zv&r>On6~3#LT7YIkrL%eum<zSbjYEOBMe0+w`QDX@A875DXA27^r(R<>y(1$Jho9X zo#(fM9#Lqhgp8suI_#BY(%(srGJbkK3Vo&Gg+y{ZplwVc9j_@G(}*>3Bh%F(Q6v85 zOMh43u(3Wa_+S_>cWrK}icBJNt}M~c^=w7nnPiiq*3;RFxb5}^Pv{SJcy>?;>*+$O zx3P!g@n{J;`=~WB*|N6Z6GCz;ua*IJFkv_Mc2I?+Zr}9C;gba9CIx-Wnc}d5bLKPy zNXVc0F}5$#cVy5bq!R%{+3S5|th?r2o|>Y38DC8AIu=SE$hZ)1fWBCByBnRBi5pDq zKE{sb)FJr?t|y=*#^a(0drl^fmW#9xF4aLN>IVdDHGy2l^&d|;BwpI>%DDKMXxosx zEp)pe{=}raWIZC|tI-H+^-%VQ>^VmQe#X?Y=mup-9Yn4?9}0mWGlSXdo6m1Vk=yM# zF8`PJQSnPU`+CmZBxX7*T~-ea3oj&B21nL*+C*>>fKkK1Av|E}GUG1P#R;Sr<ikO_ z6xd7dVq7K%uf|@2g|n<NfU?S00Bm<%UxNZ6nz0?+&8wa7Isld_uWNYZ7DYCtDn2=g zVPM3h&FuCGQMFBxfH)cWELz#Qu?5E6z4+eD7~lkgFp6Hx2-Z=7&rbU87bAHL`hAuH z0mj&2wpM_0+*Yc58s{^*!GUO;<3jSUx1e@9(dNXOHeeSvWDQpX?Z=qF_k#hRBlv{N zSRKc))?v*lU!YfQ(`%tW#lJ}c!-Es_$Z{^?aIl@sjbj=!?$+6cF@s7sLBDa4b1MuV z%T*1<VOrph<=?*^h33iw$zAk~Jqdb!fk=}<yxcENdN2$8iaR|;xvEk@*C%h0W~w9N zOd|4tt-@ceNAc~F&UI~92D?gP#Z_8IjAF9k3D3Ly1}UBm*u*yYW6X_<=Uv<%x3h(Y zrB<{R?>d;yylGTjPS05*dB;J>TLGdOcA+NdKZ;9eV_67HZ6!Wd9B+Gkf?<E-fMmrL zA3o(5{l+CJq;Ab_z_aeE{)5QIJs%5m^h83P(`d}RFK<qn7ygTBNsM~Aa`Q3P;PC-< zYlug7ar~S}><qOR;&B6$PHD%2Z8pm?MtFG9%9OB(^4yI>iqfd|^{!12P_&n<_PNDI z5G;d-L5>Sw-yIzf&TQI!@$<qA{He^usl_1|dnk9?(fa@mlx~eFLbyy_NAeQc8N*D9 z6eoJGF!RS~J)lFnisS&>?6ntwgrq8c-&9Utet2|~)PgrT7gOw8_6yc-2~#(>1R;4G zBt+NPL9`B(Q5@fB=E=>yjDo#7+>alFO_ycrNf?7t0*5Xw8yhKQE;1(%SpwD}DWR$p zXhO-}ESb#%``p~Y<ekrcHgTC%JLfv9x*vI8M{Lgl#H}v$v1+?)onKOv{lP$3L(6`X zMPjc}%g3{!?8SAg+f2ZlpEGbb9n;jf8xw_H>2vo5t(!Y%ozH8*&PfE@YdmVE7M1VZ zQ6gsfN1mraa%|X|$@)qD!=i0(Z|}6(#eZ!6gYn1w|22mGZ-<2W?*_uR-|=??;XgYh ztbZ9p|BXZPKeG(}Z*zo|<zJQo^Z(p3U}X54{qz6!3|Q%z+5hbsH1e^ULpyyZ<LT_n zprTo1UiGkaRjz;1wnjA}!-KGAho}2Mq!ifc2u_5=M2%?@#O(|JZdb6cNa;dLm-L@~ z=o^3N*gDNnerUoU{}EDS+sSnH<31hi)d3_8*Q9KCiOy0Umu>(C@Eu(c-O=~J)6>Au z^VJ8AToe3}bQE2hx6dK){WHP~n7$(fL!y$M2n4!et`bJLVn0`<H-Yb2Zvvx+9Q8&^ zj`wZsEdTK}(<b)=%`lx%P?qqNK4*(u>$(74mJQ&(;dh>hiDw&V0qibhBj=Att{<6Y zRNHk9h(lE>M7_Y6h$qQh!un<X_*R7Ibp8OG$kc@Py+7UJ%;F@xm_7YPN1+0*34Nq` zSU4&V$$Bx~Bg@O!L^9{}HXcmK_5otrH>X9Ar)GtJU&nS^43ZbsEG%8kx1fb#xt|1e z7k+k_a#Cv8%}X5r&H}=mBF=rhXw<CaqMyypQkJL@U2l>az}))w6rl94VBLC2;W~Z7 ztVBksi`F&5%{1MLX?_E@J=am}Ne+N`LoNFbfxY00ElsF}y0U|+ULBwbvoj=i{Xy*S zhN=R|tt!mZaDo47OxG|JN4SIFD&Nn&*&&8UNq-6_V2R$fguE|_bl5I`_(LKez`;=$ zQpG?T-I`?w%ap|jb@hjuif8iBp-1J0eZ%D%eeHV>$!L5&3BHi%h0T_0LaJ0$w({uL zuE@{I`k#SyS=28KC>6rHkAz0UGF7BJ(z`2NZAo|La7~m)ZtikgCY2m(0m(JmeP+M( zP`QqqAGYQ;Faw5jlaWOxW=*`h%GHt&$csuX$K?~b`W`tnZ;5SNTcXqhf;39kY4{_K z57RfJsAOC%C{-gbLYAHahP%|3Z?+F$sVHH}0TX~Cw>gbw{2+W4Ih5vAT5%~W=&z~) z`He-)e>Faso*L6C=^`i)YKB5lK$uUZTg+mL(s`O6f(l;$+)m*;e9^b_pMRxx(d36n zdE?W?)qDKSZ)o-VZtZjBb+z*KbvuKzU*Q;G+3aX9bQN8IwJi9Q88lN+X2oLseUF>J z0h}lDm*wq`XlLIez;@j&=GiW^<}1RPKM3j0)Ntxk0|*-UFKsU<qmHLoKdtYvqEyEX z6c|E6>AzBddKn5|G6P6tT(kMIp9bVc&+dXfEz#Bh9d{N5+E30bsVcR8AOxbR;~<5Q zTeyq)O{9*2v4G3fJR&s~u9;1dw(tmB>1j=8zD%Ey8t@8#9<MV(bpj5GhqIyP?4~58 z2nElWT(X8%hk2D8=w>ix?uo*rmw50h`B~VGZJf;s4zz#Ys^$DzpP9sFe%ww49bw#$ zClxwh9iIL%BmAlSQFv#PNyp=EJcPk^7*n1TP}kb<wnMj7VeEJvEGd6f=8m$18B%uA zKi@U#nmLcdn?c%FHJ_qV@#p&MY|SqtN*d|Gy$eNXzh7O>_t~sOM)vI;UWtHAF)uzr z7ja|B0Kq9o5A#<*%bep-WGT2D^lus_aUdM*&!;7%jHD9<x98Q8O)+Haf?J~7lH*re zm}At2N|2yxWRXT?uH)Punf$6xNJv7REgR~@Tt|+I7-5GiCMK%rEmGs@3FRLxV}bkj zgd(vEH`p-YlKS=fg!nyic1J&zJ@=9`m9n)6V{7ekUni6RZ+#O<Y@vi2w%nXHf@n?c zQV=Sa0&c_ztp*T8^KE)6*4@1%y32)ian7fBC_DQjVj>E1)-@pWBIKrSlrrg^q1h<5 z4adB4ili8-Ai<yp8WHp>98iSggR{l&xKP4l#xJ?PHfQb6Wdjt@0~~+NKUza16ziFL z@e(#-g<ln(FRBi3in*`#K!8aNfz3yNqdw_xc?{DRlkqvF*cWZEPi+g>3+3wpjArg8 zzqCVT*b37)sshAmLU9^Wk=2B1=fsUczbwPHHa1%BRdW;D*}95L$q)Q$|FhL~JJe?U zyU~l(c1Z3?bYTv$u7{m<wA?PF>wU;yAf=6U$P!-%h7rZ@4xwG4(D80>svPJ&9B>dG z%Yxt1L9pCCh{|JA%lq-ONE#%|>apNw41w;#l@xe~Ah8q<lguSNL(q_QcC6su#*E!W zF!|&Lk&u)d6lJXO*?D5w)PT`zkI$m31bjj+zFW?Fjs0+kIkdeBBO^sOX5K!P9gbWu zrX%v8m_<T3HSWcS1Q^}&PxE$G4P3I7$N}v3G@TF_jZpFN?cDKX7;6NOG;(q(foWPv z)djDu`h;N6Yf#DjzK7AG@*UXyOR2${F6th^4}9p}rg~}m!1X*+AHBn2smEIs0N_eI zK2odKfPFV}wdUL`NYK(|CY1p1V#&qcc?0O47VZk3Le3<(1sNfT+br6O{j%Ldo#E*s z5^`RNsGOLH4*??-D3AG)oqG1m>byq7L*Y5XV!nw~7&oze{jK*ydjJmEsw%Q$2_Fka z(QQb`JL6#+9s;Xia=z{Jy}H5IOHOwgU;B$$*4E!JP%DyjFa^mJKVWWaJJ6P`_i2L0 zY=0<twxX{O`p1JE`9Zt=@@(M6q@DlK*BygvyBStbj>#P?)$WrMGYNJ!7R~#MOzk07 zx`O{>u=EP+Ak^}nJ)rJ-!Ew<jo$)2bU$p%#%GyXc19H>ACQ)nijR_JDY(5Zu7f0fu z*1w|K%V8*<@l~?~w=SX9?vL>ws?4ZgA=z^2wsOP^3(AYV=w0A3^~L?8KJF}!3ZlC{ z@g!qFw=e3rvD;x?TTNP-S0P;z8ul%4KaxJP$BwJUp!~*b`B(+9A$#!%UOB!(7N)vS z36>F7oyT3=GU3WLtTN(32@$htSaOG-kHa))k4MH0sm|@n7}HO;Hi5KE7vc?Lt6UOb zKGYB8e0Gs3HwicpKnvEb@Q^F$rtCIVsV3N#3>VgNxPqJYWdM8AHx6xwlvLtC!4$PD zM>P!LR2gqq_F$f<60e*?-7E738h_;srpXn7o(s3G`)3r1Wf!#miMeY^ljlM$Cp)^o zcYXD3wPnzLV}wUMBTrt~aJ*hKX7H?7qg~J;DX~@yv0Zf4w(f-IcFzcoL5v!>Z0-n7 z$VuCP63c`1&37S!-r%LPVkqv6&JUR_R!ez}y7CbEd_I;>tLlh_GUMg0u6^XKga$N= zuMUNoZ_3`^Mc-0cTvq`#{;k;IXs+f)N5~=0UWL1~fn{3zXMl8oQ4vE(SMhV984BEl zMt0pka7@|^Dd3>Y1`?d>3__WwccXpLlvjycui?Xy6&Jc4x)cn~g!^TWMevbleW&`^ zqb-YS)-iQWgbgR@Pf*?}n}a?!z;7j$748C;07f<P!lFo8&>Zm-qWzP(mt!cu332}7 zLvlE;n8Ecq#w~(BqM*quf{r_gAov{m&E7+vv~3|MkW3-lb4tb>*dQhz*cOci4rH`& z3K5nANT9r)=6y@t^r81*=+N>zomJ=Mws5`EtQ0vq(XD_b;ke=t<LUL(sd(2wF7m<_ zwj?DTvV31ILtNgFTI7}ru;o&VwH1}DKI;+~Fj_K+)b`JIg_b<287q2{+T=BM^Vg=F z+2!2ZJa227fW~@ez6hkdRG<}M=W3l4rXKQ;>x0NRuku<gRg^t}rk16xIV`#dl6<n+ zKjNp{{E+ZoQ(pQ@8kXBB{K*Tu=*o3%+MK+1BKk6xY^?M~er9L|pm#I`re4_K|Jm09 zo%&`e%PgjhBtYb_dvp#r;JW2hN<rsp1V?kikO5VOgx5)fT?^i~$Qv)*a(H(Ro`+I4 z7{b=C_>fzyO}20V?X7#~hTMN74r8tLoN)UWlhx1U2i}oKEqX9cJIe8IocGP=1gPt! z=XRv|axyQ@^A6^#-d6&$_E@J6E%nYhO?xeFHt&ICC|^_Z+jg1b8lg31Z&q!H_V2v! z5V1mkCtoCy5Q4cZEY$okZMt~~D1Y>DnijmEo0Ev=nNiU!7DX$SY<@HXzB%pd%w=H| zvmG7~%>|{)Gr|t-;2Y0o&iB8<=iR3o=uY1TCUzWQ7bLO5NApt9<zOcrgH8Dk+Dj97 zw(+PA{#k4*oo-t11MStNToRWur3DI?u>#?5yS4|i%3A@3s$vw%VKkv6NNX-Yt|It^ zh9{0LL1pYyS($N5JChpMjb(*T2&rzHqidodw4fzjy1lK)XmD%(k#UjJ8&YL$!7QK= zlNsZ&E2g|w=(!>rMY47^%6znrtCh?yJM#cmjdvN<c?Ef1*l1pUNqa9VT%)1?I-P%l zACzrnU4kAs@gw6-_3X<ed<I`5!2Pr;>I^p`PUeo<E;p%;u<0yAn<HM0ef))nj!%1= z;oTk=q6LuA*^PFJ?;=YXQr7|?40NDX0=`BrO!;`qlC>>l!f61T^5m)`@is+>uP`YY zgmk9Ob`?B#O&sE@M9IIs=%7ZcuS7x13G<c&^>?YH$PVj?GW#5)evZ>usy97U8W$=d z4{IFW<cNA1f!ZQj8h6B^dT+*t(aKARp!6;n=$eu`tu&uxFRS{oqe|y0aN#MfxM#(K zZlIZgpq`3e2<{t3^EwsZJ@Am|YyFZm8sJHwt3BBaHf5FOz$ez$=GqN4&D01z`IFRo zJyJMTkTj_hUxj3Lx#zC~;C)=TTXUU)P3!r6<dV7pOwq7H^WLV|fXN99`U~;^sP;sS zacs@}xoZo2|MmTk>biVd&%i0#6{Gg&jZh?)RMbN#6>FzGM9tbaBR<mG0elk@igL)Y zD5VO)L$0wc@S}p35-VfVRc2U8w<L(`;|(gv#7UiLFOU?Fq61`x58`8R9$K$l&Cs~^ zTPKuI$_i_mAgTo(?QUk!?X}&z^bQ>DT`irh*H=Ole}>EtPp&2sU!U^Tz{@g#(>E|r zi2y;j86qV_B+RoN{eUBOf@S|M=;D*}4)0+<e3vx%5Olmddx#4|Yh}l}+iQKUu_xOf z5~K4Eb)*S^2z+fQnvB#KBOpuS<;kWHq+nM_?yrO*Ofk0*UCYzl8U6y5J)P}d$JXP3 zV<Cj=d1V&ZodCs&Xs<m_TEoB3sbX}XO!C6<ln3;}&45(h$*@OwB<bQWf!&(ayJqZ= z5+OWKYoXcPY>t&*Zj~>7l&&X8LWf|zr`+c7L)jW>@r30E`@Q!2ZAmt}L=4VlOVxoG z3pM~&;>+lA<gD#a`i&@?>LCLiPK^ZXU688F7W(r*2$K2Nhmh7DPg`4MDLTw0O<M<f zz0fJo#~blFQ7Mj1R&nc(z4-yuyF^glL*1KPrEH=KC^%P*H4`c^s~ejme<s}VRMk4z z^h?bp%u(y)qA|aGT3&&Uvl#eIRoL#-hhv6RMeOCCuH^*9Dx|ol2wQ)eFAUtW$DRx< zK2}7k=97-T)`e;r`!<fkkwnB4Zo-D8Cx)wvH7NhaA)I&=l1yTtiA)K~#JHH;<md$j z>kZ>h9kHMZbvf@$?SRyCEr`DMl(0-5q~RqIHSrsWX&);vc7)vmITSqhr}$10fZT~_ z9X$_4JHvPZ+qguKqz#bjs_w-!c#Nvbql1fHVtd3g{>>h6vrWVk`;m^2s?pX>MJ_Sg z8}CYiXzeuMW_}cIj<#N?t=1-SuR=@Yb9!g_@;YMkvp2R)a6nU+`YpAMTLFZoT@m`+ zTr~f{c97e8pX(|FkFJh@jk+eyP}$i!?tlZ}_ex(Z1zJk=o7>wTcBsw;F`;ey-qCyN zR(;{gb-)>3=Nph(u_%%Wpk6PaWuv<iT0FRX2CCiIOztaEH4ZbJYj3u^Ac2Dv2}(H3 zjq@4J5@$CkseGOWX$YnaE71>1o7j#$L5X>Wq|)9Z{)_wt3`cAS2LwzF8t6=QdZl&= z8N3`K@tqu}<f=uw<>X>?tI$`MYUv*&MH?MNq*!9#+a9^^MP+uQh+t9k2QcH4q1|=g zo`?rE140Hv4^wy{7*;0}C9mHDNYbYr+M#7eJcHRjY$hd_->b_WUQH<1vCv}=g~r2Y zge?FOklv`f@;8U4tPF{*3s(G=$`-hvuw0<mZ%Be3b<)^>bNEvx8g<pjEmvs9F~jYB z6jlH}^=rHbfOei(@V?%B$Y~7JG}?ct7G`upL|j8G`6;!*8CK46>Zzb4=`*!NC4bF* z{F2bsI{ykBz)RIH(gADTo$^*5PQGvK8_)=$Uz=-)G>^0P6ollEH?T>&|7_hPZq^jD zWdoLO&N<>WD;ddezx;JHrpd0>wV?*Cg_+;s^X$;kle+Y?JaK*E?4hq^d_9UQ?<d~Z z*W%|Ef);OLeo(jXiV1hJZl<Jx2r`seSEz|(cz`)8A7LBMJiCHhraSE~C>sIk*|}2# zMs7KV@$`1_i0eMY1$4tcWH`YLGg!Ju-bMsO{gy!@de7eHw@-dpIJB*6qboTny+%Gn z1#yFA@(JqD<~R{^uoGN_LKTc5hm*M7>p(CvGCa3SBB>&m#}ixTmZ-P`UnN0_G1wTM zeFl-`d!TgLM96+&MtagKTRT$FSvMT`1Trox#>;6@p~JEu`eYj5^HS&RD1~3PZ@+XN zKqCP`Rzvt&hTnmLS;apMwLni}SaV8s5$BG99;Qr?Nj%6DRG0O3wO1I3cx492Yx<~| zOHOqi5E@qQrA0gvuRm;#TUA|nsq^#sWk#a`E%3!aP8mYDHr}|a6)IE?3jo3_M^LMp zyHh&%D|r2wI&o@9%r+((ft$(VgH#dFoufLVa3kSCHOF;-@$@anGC-B*qKk5B52Kkp zrsv^F_QM?N9AY-|d5(xG%$AUGpQP)Xrq)a5#vlB7(1%Usam}Gzi_T9aqN=ux@Ja>; zZJ$LB?3%>6*4pXc;6MbFo0>7L@O9jMJV}1lc-6(${(59mU$r-=64EU;%ZIHoW38`= zC_<3I{VARN%b1l({2XU!xh$}17ni7>t?WJi98WG(5q5$O>P94z=q1gaXcWkBr?d~= z&h@O~kp2-w;5w{UdC6VynR4qVMm8$_$^^AnVJ+ZAOwyBM{*)$aq8)+xDU8{Q2D)jB zAudHL)5wJtGOGC74;(v#umI;N(eWCfnQ?n5$w)aVebA+PJ}bH5;aeqXc=oR_=CM6G zVEaAU*iSOpvbc(}={M%Nm6g_{dXvJ6A>?I%*X%#=3u8r39b^kYoTT0`5@QuJKHlYT zIVP-5J(7jqdGeu&dcxX!a$o@xT4QP{&tBDEY-w{@iNZsFkR^_;`iGm16_xv>#@H2s zNp=Mqu%D{pp32)TxnP~UdC(i)+;A$Gzp7w$_uA#XR0}==Q*Y7o24}3mqX%y~<5JoT zro<ZT>SY@x407TDBthD6a4K?Gh~0A)(uAOl5hVPVd4|I0-S@&CH7N6;E`n!G#cClA zqC)Rxf^P3h{kx0Y!A9U&;aoI=(fv5f_8K~tGxBrg*<8<mX>+B|w&*F!6Ku3>QRT!c zmd$L(Ni>{^;87ohUl)*5OwGwkF4a&cXd9N-iu9y5jI5bcd*bz%YIsU-Wkiw4v%tS5 zYySx!Cf(==@?Ee54)w%qUel<D6>4fW%KE()?=6?#9Ka!g(^Nduks7TB!Hiw8Ley<3 ztE<!}4FzdG8-j<Bj%w6QbglXb8E@QcGYsEGN4)un<u=PuAgr+X>-H#GFDtQ-bz23S z^adZ>o77x&NeQ+SYox2Gj2)Bq+DRZx+#Pd=J3O`8`(5MJFIgn6LLf_(!^47vxE0)u zb5J)*7_=Oa$66VINDSm+x<^BvwSYk+%F%<BEOC01P&0~X4bCw^cFbu&TqjE+qtwmY zUdA>`<RZXEMYff|^mr=K@#YhY4D2;O*nQNULW9Hyl6W%wixke{NP12dW}Nv#DO`q7 zpuc3<tEL=xFu#`2rg^OinQE;~DW6{Lm}Z7e$J78Grvf^Zm0}C``V<={x>mYjX#iza zp@DPt91X9|L(HxdZEt?q&rI0GV_B@G+zFO&V2snh;t@&DH_;K?P(P4x0<h9uLtiOa znPO<-NWnS^tS*S%jsw1f=yp;VkAd=lM}JL!+2HyZD5dzUhnMN#jVh`sDRP$cp#)iv zQD5i4G>mfCF(Hd!bEe+lKX@2SO#ibvKLf|#60&if-GopCd?ukM*Eu%9gl@;tu$;x2 zL$clc%F~5@n*k;cZ#7efDCR|(Tu<nm(Nb_HpXWp~PAMG4GmUWO7qS=%&1E};gi*4) ziRN&oFg?;cy4u2`TYXv|3%jM&#G0&X5OuH(5n!@Y*wSOwY=e?S@cJ)7)L=TiVpFfT zkELY2$wN^mj4fxdCxQba5uIa5mM6Sp7CY(A-!nRnDHd^uZV`$?2mlVB9iuy+-NZdB zrCykjr5-8cRQgVG?6M?firn~JfhmDd23q)gq4x|Ynnk|pLADt7B1_O8<>HX(=^ylC zVY9sd+^Xe3))=LDVO;lvJ|Dc!Zq%jzje3eIr-sAj&(VL$Sg!9tt=yHyz)9R_V0!FP zWTj{Kh;t-4-1iKi#;M>K3s}nYigGQIyiw?2GqMAg)SoUvnMNME1g~qQPTZucKr0<K zQC+%nC_sb8rwWCP_K_e5i^6pnia~J|$v+(b2PY0P-k%R8XEJz`L7gC)i!?A&L~3wK ze!@1gOQ1BG#*(L!Xb1VnT$l+8V>X1l9{`T>MeRuA^pB;wjnXv+4@7(RDp$W_LMWVD zrIOT3?MB-T66?41FE-Z)9YMIHbCcMNxpghZa6jo2#TZfZAZ}ZHF9ka(eE%HFf$doP zzzT){B3p&H10nmVe6hPDggij3$;{1%Ycu1sTw%C{ZPZnRpf}cLu0My6ahSsu9lngd zU-+3ndBdG8?=PGP!X}ZfgQ`qB-dLYN&^l<pO0ljD>so8(KhwQyb?M)iY?MN-5z}jn z5NvderaO8SC`NmN^32hRUz-V^JbCm*g7`5hTXFS8sl20VcY0E>+^gn5CVyiNC6_mA z=VRiC7MX_0TVfjzl*F`)<L%e<N9P^3NO=l#dj+;oPJXCs3^tNGt3jH|Zy@!@vbNvg zsoq?rdqiCszK{F8!}TL0jx8`X)UHTq5|6D_&2^3(sy1oKIsf)IgQswLnWg7M$jIL1 zH=M0><n#J`*l>*rw(UNV-gg$nAR)T5qvoR~dngnm&f>ylVA#6bIRgAjE)0+N6e~JR z4&|>sytFA2VIJadbo%L<cX+hD7~T&b#v0dNMUc0Id{HRT?A!%>&SAoD!n_EU#HoE1 zZ94BpcEFh;?7P5#8r^iGN8o#U4U+%UI?BN<Air~#C-_XhN>3)offdhlhfQcUl=XC| zz7TjwmH&XmE9{y)9j}>%W#3W)7gW{~tN(H?&?K@rmQ@b-4~Om<@n%&UA5}AHPJ`=Z z1M`fUEUoWB+l#mXJzr^#wL`aC$d)X@!qLFvEs{x5*^5nO7<wLCdz6E6nz^gU>~Hxm z@J0hpK1o3-ZkUUpJi9{?p^j)v3auj6ao{!R6$Rw+f_ZDjAf%Dis)`ZA9wTNaS-S~0 ztimD}@-~^^&q4In+OwQ@+e=y>k^n~GNQ7&q{IC37zlG{C{I3~}<uvhfT-o!|_lK?A z_^U^h8>6P;@>rcb#)C5dZr*})`Iy_$Cc81!1P-HN0vL6qmjd}_jSg9&^I`H2L~i<c z>|vvU+9-}O)S_@-4JeAYZEd<Yr)MUsdS7fZI!g;2>5bX-Twt74V8K|NEpe7`m>e|u z3pLj`w^R+Obwd2$OFXj(lPeN1>jghDFH}2^--xCy1({E?vp;SQA=bMNvfM!R+B20( z3;bMAqh+X#bXYU;e?qDm`gLj62;T%)v!o7Vj??(`JJg6NI<qz4h_%$@&hkk$I*bze zA1b2bhn%#2wDc(7Z_A`V>)ULT2ioU;k~;!lGp5qFI_+O6x8O<uF8Iy$Spbs2S=r{- zw5@z>=QMM%55qVdJ1d}BTlP;b!@RZKzw{*v;0??m-_Gn^?3cvq4yQ^Y2Xg?QUc<-$ z&=%*JSN^b%5~X{EhB`dF6o5NDS;)pmz#7?lq8wdjL4UWit`fCDuy-1H;dwl7Sli#> z;zKZb^obE5x;EZy%Aun)JV#?YXvj*F*0d<iL@NvN&%D4otdAJF#_IH?SMq2Ul^$O{ z+i-yhKfI)X595hC>Bm%B&Id;=bB_G!44lvXr?Fu5t|!ZNMxeSoe_|A|D3SF`yxcQv z90|Zo?-$3k(2tmhV1>w_9g$!-7Elj8DOZBF7PL6_5>vL=fTFj6DAhpwN2=`JG4Jg! zXXa<!_ZT){8a}spZ4Yj0kUKNo2w8@FkciP|EDX=qd6IEp_+g*svK<+*;JB{*j`^!& z!i64or}(#A%IT0Bv=}3;=*-<U0QG8g@wUk&D}-yrqPqIi=h`F>NesXk4B-V+vP&;D zDq*--PeIR_h_yrE!F2;EyB0xK3*?LIN|GuVyn6lM*u6rjq;R_xIr;^zivtdouS3lz zhxvxira^0pd0;z5&%P%c1`bfqeAuTs^K%bGe&1l`reGvZn^69Y&#AQ5dX~~<jq`*Z zc2T$FoAr)#Ked~F{5I4D&4lVcx!v||umqwh*L<;sExbkjPrRtny}KRy7PKeKak};J z7vs5E?z4Nq&TvZi!3K7m7*0^-G*t21u3z`ErYjrt6UI(eYU)X0rr8YP&;U2gXzzPs zq><jZ$}XOu-N>LG7fQJZM_7R(AiN#$Ls5!u8|c#kS@e0N&gfbJh*j17)d=gwke#;i z&V@M!w^u?&Be6ZuAW=3SI54v{b>hXJ9wZ{M-9XAbUkh>KlVkRquq_YDwQYKPSx`BM ztJy*_<0HrOlVEqs#=*{7zA`*d0$PV{^jHPFHhiKnQbnNA4s;CQudX@NPf=dI#4JSt zp1?R6`xA6%{EzFR1ILn8nIJ9|zG_?;nGMxW))6H)x&E<o1R-;74tWf;#1t-CxUj!i ze&)JlIKz}_7pvS;?V4(2yIGH~OMEaGO6>z1ZwRn~(s?2fK3?Vb&A|N;%-9I_%NVjm zP+u4cci!Qt%{=u5um+muX$`j+_U&O(;HzdN`CzaA1+#j{5q5(mh3lOvo^QNC54;2F z&Z-ys0#_elOP9vx6++FYP_V5)KxQGIh};gp!4AITK$QvYtdx0E45bFYHQAbPm`sV& zBw0-kbgYu-7EyW?u)sAHR__mt{=seN`%z6@Yc7`e<>!gD?GJW<ElG%VA$$QYhO7B| z@g4m$g>8`#T7GdAfA&cu<)CIW3ECc5{l+H=uyYd$a0xpiy<WiwL?>q;+gpUY?N%G< z&=RRSLFQT@bS=4tmS*om!7B4k;-GnR=EKnRrvQ(oErFQ<1Wuu`@_u6`<Jy|N+|!tE z!dx2IMw`xB{9-@g?q`LK|8nQvR+En}h;OlAzPkI<ZJSYu7XXBrMgIHI8S_Qc%_?u# zl5;yLcnuSO4OdN{b|xO_m#P{`w%clmP!65@iyo89&qOFaLRiE^C3LgVxt(B@J09Q> zo*@zxRMsN_w=b6iF%CdYgnKMAYVi;wW%+i-ee<;4v6GaTf?A85LOkdIx+3}L>l)mc zgBZ4aIEZUA#qQDmLS~qh?#0j%3;;ca*BmsIRaGc?t*c74o?xYbrDErcdbg=+@70K) z?c4db;b{6htSd=A+fNcFpl)JjQ-c`j%OT`pTcHD|yY`1k*BropAZ@badNrQo=?%Dz zFE_sG0SsMARrRy1q--BsrxO3~KNZ;Lc_DlTl)>27(2~jw<UX9C5(Us;@gfiojjv{C zM0WQxGjsP+5h`gy3CXFSKNNHyyFG5^_Wg`!1JKglnhOHyZ%QAIU49W7$1syV*gtR` zfDw!6A`<cyJZdERL%XZpgE@_!1>}IcNj)1LRx^g8z^n7;@wpC(uv}Cci;1|r#jkvo zG_Nt$O|^H~tiQ#_+Wt1tzOP#f%FA=kz@VCX18>s1uXYMA1ODxDlullZTbvp<W30`i zd6aTog;9($;4OED8<YweazEnWPcH$bx{>T;93)KP^7(1@B!be3QGbc_Z9_aY1sh<- zX{R9?9mpm;kfZG42INYLSw#|Njh4Eq*MYnsitDek!ZYo3JlK}JA<B<bfVRz_;fuyJ zpG1_)lx|12BYQl>`&%iW&Ppyx@q&ccsimsClm%=zTTSp;b6%N9@(r)|tc}Za_v>=3 z@}tsHnqe~$w(Oz3Le1T4^p6S=Tq1(*>j@FL#e<mfZMrxIGkuM_v?!3uD>`dm;)tqS zSy0xQJph(jv}_W<`PqgV*!whT%J6;fp{J97L=sL%ty9Pco~704&G&L<9WIar!n9)f z;YS~EO6pphcpgO;RsH%1WP=i79g`x$#)zewD0X?NcDEwZHB+Z(1Np)h9^yIAHYVh} zM~7^}FWJbxga8$!3VFm=#S;tZ8%s2#91hWEC`ykCdxjQ<a~GVTZ$m3ovgj}hU^iJ1 zeR|PRKq<?aIq@xO63*I)jTFcqcVp(QO;0l~kud=Je__kS4hTF%ZWu9c8fb@}io3$W z*%|941K?PGK^j6;JJxaP2jS}a0vk!GZk@{_F<n8lo!r?dG&o6Q{;Ut`v+15sdfC!# zof>34U_`vqTyhkBt#yju;#<JYjR}g#3L&_2#%9ATHAxmh)_1w-rt!aL3<d>QWg{a9 zmzU80-QOf;Mrr2%C(6iPVlamA0C8jHvEiu#BQ<{c9<P0(FcvMG)3@4(aXo83t%CNw zo`r=|)6&ZW7y?_h2cs}f9U(Cj438-zN4+!Jye#7y2_a3b1*4m9ICyf1<80PgE1>@b zXgS6%YHTUvipeW%1pIpOHrX0T1oqmhcL%;Q?dEkE)AmZgYePMRvmp&=m(?RS;_bwj zNu=PNkC<f7iqc<@S0^+7f|z$0pnMPP4uIUEU64@M$$tU|gNJaTVD=M|CHd9HN2a;B zv7F_Qe}%c%@E6Lo{{Nxv9pfY2wr}Cswr$()*tTukw$rgYwrzFTanec0w(U22AMAbh z|D5}tdw=(Ss1K{^S+!<8Yu2n<W6n87O2ZUBxu-`EB$G8n2`QAuS|Vt#2lqVAfC+l5 zV;kqZ=PTVwgTYHoxq=}g0TJE#1z2NF&a{UQ#NH>je(Itu_uiT;aRux%soFg@1dz+? z<VDZd!p^saZ@O`PFwnC)*T!a7G^ZHA)U%+5emwF+m8HS@3)uS_vUYI*1x4R-OnAbe zg)MC&3`6OVIH44~mN?QUn78=W5HA#)D!=5v7Pe34``VsPeD=J%5kqAclY3i|c?US_ zq{dG=l^<_RcRCGI>rZo}HW;_As-v@AaDIgx;_9D&EO(x~q?kZz=xQi<GEJEXkoStA z&U(=&o}V9riEjZ%Bt(ZL?~#0@dU|ylz$GvUyz@_Oa=Fwk&%RXF^Ov(rI2fLM1X^Nx z=Yqgh&VNqp`y~Nrq5Gs%gE;{AD--GX<J3=bQm}1<8~8Bzmqr7R3jT1uh5GQ66-k3V zo}WUS{jnRxNJKj&-}ZO3%&9u((-N9%2U=~^{m{)N>{F%e2ud(s!%lo1e1d5?z?%xm zrnR&|_XoSAdPGWYL`#fIJ_guOmwErI$-9;bqPLDimhw6b;sf__K)cm#!#6_;z+HHS z{4trhqFlker#wr;h*QSuhaV@FvS7@;q%p>pxHPeJeDrV^w`Yv&TAZMr8ddd}^h~h` zkv@2!ieMg(GcYzsI7t=Xi(7*PdO_!(33}><M;J5Z+8+uznrQrKqO2IVlXk0YQ-VdS zJLWOsi6KKUJ<4J|`tGh5g(^h8qsK@#X+H`&V1X%|?sX}5XnG~6!k@sb6aIo4-eE|w zW~tfuXlZg>R`b6GZRJq++U5MU?sJ5_by_Gm$+`4|o9QX6jT&0XpNiPT3=MZ-kyaEr zhGI#>!@mJ7Wwo%`9k!jY->iE)F650_@O~L%Ca(W+G|Z!b@dVnWKkQTM@(N9{344gt zjv$nb?iE02yqbQUbX1h8ju^=iSSoNUw8MMZBTK!J4pv8~mB*dx?++GYvg)=7N_w&7 z_5G9QOhyO2H}9N|ixN0Fxx%5*{MR77_srcyMhe*_0Zu-3Kw;Oz8NhP1(~uLt?Q$G? zL&jpQU+F{__m)4ssc@zz^Ue>DW9RpjB_7uzBn(kRH$Y~i)vp7nG@7=$F5@iy^;a0L zux#?oV7huvflEq85no9C32T;Zzizo!de4epsuv^ySwUO%kx<-u)^jv3!;Iu@RO9xG z2YRLrYI``EoPdgD#kveloU6QQ%&2f5GU)<QvH`uSz+h)g2ft`ioBdF+#&<M%IDLl7 zz&jPK-5_x-izIa#eCg}*cPP029{3jhl9DzQL+_SQH2hQ5jOjU$zv`)|FZjbeE>cmL z$aEmthcyxnj`@veKFfcmdgB>UHTIiSJRp$iVW@A5V^bOmUHRnq#0@A*S(@RroXR@? z$%T5|dbzy826C#?w7x<VQ|vE4fI2<1+`-VIQ#~|PqT@XhNuUAEJe31A?4tUJWxvog zBH*;JjMden;E{M13H<t^6?}rP2WM_-wY5JxQoyy(BvRC^F}b3ruqqSzhFW|&kn5Q# zW=2)`oXGFRu_UujHFrms3e~L?g}^_l)7bq$3b1`AZ0EkxR;Z35?CqhRc^ZOFe<4X# zPbh;aoEk+Xo{<CK1V1m}MlZZHdsS^HdY1i2NG>dim%D5}O0lk^mG;h0!QaPB-%ZeF zeYe(OlcqBe!B4~zM6MH*Peb`l>oG9iviz4xjIu;^VpV$CjaghePWcj}c3EX_I@lnN z<_0Dj!7`}spnr5BQp=#mc~;}yJ)~7|MNb{p<K9+i97^bZ9?e>?<eM!H2b%2ViR+eu zHWGv|+GbeB4IIwZ5b7LYi$2Uq<k$ft^-jysg`v7eyf!ER5GsPqs3J`0OZ+^+82fP2 z+47mii(;0_>+Vpc?gmKWI_JxTgQIlhYGN4H5kMjFJ9dADJ;6>%S_P(?++IU8Pw`Jc zrSo}yWqTumF-DZY4Y!D2QL~a70@Z5_llr?1L#{tP)_c&97r;|=UB!O%081q0nk4H; zJS@u)Ab`qzb_a!b&w#vR(*zbhK|S0c9qz{_@V9__bw(T)I5OY|G`H57<7_x|4Qt{z zp@kO}W3Q`kstn*lt8dOt&59~EA*T^EU2n)`eQ}6N*lnzi*jPFD%CbRx8U$lqQ}H6` zCl!l^K7N*5*Vec?Ir%|WUU-$oNc&E&^tJI`Pu&HY3pU__#k)Cgid&EjP5wutcg^>s zg8s!Dr0x_FQHv#j2T^dDO(|X*idyg_ob&tGqPB_k2kcq0=)l?mr)JoDm3gP?6Tbx< zfXn1VuD3ND9n({SA4}#LzAe5z?U(1v9v2@`IbGtKmk`Cyn92>_C@wzqk4iZ{d9_fm zOM51)2(gIgDv?As=ZssDPlZ{D1A;Lvj+T$Epwjci<WDUF4ElQkHOLYJ9~hy;+S-7$ zcdq(6sA{XLbTbc>k5n#^5<>ZC&>)N?X4<~yFsb9E<dvFZYW9V9!no>V095Z#DA2CQ ze3ENe1*`?^*<vXAQ?S><j=c=d8vD)!g~t#DD$Y+z!&6=xXW2CsYFSC>R9ktWt5g_u zL$&J-dRA@eLht7djRSyIDXPv>;ot6`L`;UURntE_imM^%pXXh)cRwXQG7e1`ISwfs zA1(>k*|mfCLVd`UX>duZ7;R;I<I!g*@?DD!3r)a059sHaa*=nn6kRTYxAfvIx<)}# zd{pCP8I^2t0@+EKgg5;}f1JGGa&mL@We(t5B3>(pLm>MiQ+IQDGaDIcec@~|z~b56 zA4&dtNRk8<C`v#@1~0s!Fi@7Emg}|1ngvqwf~*Le(ImA>viIYf$nx<UGZO*2386XG zJ}7buehny&qlAXywOu6%B>7aEXHj#mFa1j3O&PTtUNGwgqLb0=hf5COFWLDxCyTA! zS6QuAnLbIW=Zyg1%diMJ6p3#wwulHHAmg)TBr|r|k3!0K_aI^U3KOBBKoI)RvU-&~ zH8K!F@Fz;+=FfX?4AYao5|tM(*WqD2?&HH`?=w#~9c6VA$b%(S1G{LR%w-p%C2@Js zC|qYUC83Z3$!d~_TQUPX6SFjT;gGuLHwJhuhd}^0;y*Xq0u?}3JczVr8$~Y!cj{1= z^f9uW73ShvmNQsAb1zuhp(WL@5F$3WP^YQP?EoP&w$_{Bdeit5iDNXusoEqWJ&DJ5 zGH)WRau=yxQijBw6elC|!mZV?(MI`B1Uwz$0bFkpZijg(^{v*20E2)JHN1qKDMGao zm=!&yA7`s-0s4#PVr9F#+?9n8uRR7l0rECB8eREP)#qq4gJ3-^;71?$IFpT}&f3s; zb`d4I&;M=Sf%Oj#F(DaxSvyA?1M9!_Cy2N^izzu9IGfNL84xi3K|99G{3phyKjwT9 zBw+l@#6RYI65juP9W9pMrz`6GgT?G`<9`tE8#tN#MjAyg_!|)w{TB&gB@d@h&MXOA zQ#%3{=D#tneLkyfCng~*V_;7&Vf@MTX5s8XFRVtu_{nGWduPTU#A%;%ej{B{{3pNu z=iJ}k|2KB3Kap_JtNljk#_>D5*`JO6ZN0x+Cg*5u;`m8<MPY&^2gbU-ji#J|kv}Y` z?WlfBd{%M5@+(|uz)PsLxzd}GUeUzN!pYgugF;(-DVr2H5>-F!wKFo`M^8(e0x~LK z;HLzC<af5a@erMT%1_Je?X690ej}{=6Sv#n?EY7BxBoX?E&t@R<M`X1`h)K5_bvEs z_;&`o|H<k04|1&k3!N@3EPwK<|J>=q`R4>!Y8xN_qsv^)*29%uv(zDrMspl9=a7Zh z)%nd-ffn*L&W*d9x#gUFv&}_9^fkO9XvlkQlvNB>hhT_t^PwKcEIHNKW+~`F=01EQ zJTF<&9B}s}A6+CYoh~iT$!%Dz=Xj>}D}7L12h;f>iL9z<&iN=BeRL6nmjH@(9W^aB zGCR8KHAI3*pTl=s-*#(3nl`S1V9<^s7{G;NC?!$XFLVib6s51~Dftv%Tp^LZC7*x5 zLF-IPZva*_DJxXh&jHN-$~^Pqx_LpdbKC0g94d+lEE($hKJ_RoYf;J2srqe<w8{<| zbB*vJ>X6op1Yy-#edNfouoG#ZW;|ZwGTmo*UnhDGcHhKW54cx03oP1BQH6vBzxQ>& ze|@s^h*nHam)62|LcRl?LFGV`%x-AuK8*o*b=z^1PKf%5ZCFue_bmf09Gb_w(4@FH z_q(Nu@Bq`P!s|-Qua>q!JEbO=pO{jv0k)N{9S#<?{c|W%`8EZ(0aGYF!_4rYqQ)<w zOYMSfnE)_`7Ri*wzIAxuT(kR?>+?%9cki6r*c%ypc3#W&+cy`6im%v{R{PWgG)T&& zJt|9RgO}zIDUdpx%o7CbMnh<%Y(2`lc}d#^dqgA!JTw<RZb$uWPF`WqWIulfnn%Cy z<i`oXf$SR_xc_=da{HPp-V=UY0j+L@uJ0%g>%Kmk)OvqTl=0MO8)Wn`3#5?Q)$)Pj z#*mDAF%Ywe^^_;({(cjCX4+C!Fy~6R(pm>l%`^6kDmF2RE>yydpbuYZyq$#ng5g?| z=|G_4o8AG|$^*^={txW~Rqts8+{{K8_$kOPyfud^^&K7Ic-GxXLhwd&U#$;sA!Ww& zUOqF-((ORyVKrrR+G%h!bvA=c)S4negaEThSKk6VW$8zO1V}^!B?9KJU2GZGDI{2F zohB6fSoU14$r(_m&0ow*2CC39B0`)^x=?6zX+KOvjc>ghCUp+0<3!wGM<*A>RIB^_ z@_X&VOlPu<RO%*Jv-!e7LsqxW;Br?q^!VhBa3i(B3g*TIx=2>o3NCM#4xKJc1f`$y zT!vtxxy2?da@-f9Wf_R$6`S9^poZM;lHbQe@3H!j4mM(Xz^+Px9Wzb$C&dLpq0;r; zTGe2^{R!rJ`lv^IB}a00v@+F7q`1V^swApn9JVvnm=S4l$x%`=Hml$7yka|UIntge zWcfd_`ab@Nws3aUg>mHA#Sh`_2&ZFK)dU!tZhxnG+o7tE$L6elQ3|`;)<8~KnA4~S zPoe`h?vNj4N7^!Zwe!7<?p*iursI9^!nz;GT+tb;$#wtc2aAQ3`Hz_VpTh*}C%f$* z4RJ!ZE|3zX48?(@<j6S-y+Y_o&1(Fc+R3P~vi5guGkD>NjkgWi<#Vm<g%1bL=(yEC z<`^IQez~P03-EnBX}^yn=%LK9d!O}RrPlRCH`dh!Umo2uYWafCYd{@rBXTyF&sE_} z)s`siLU$0&hmX?O2WdxX>65#R>cQ3orLyh0oc;2RbGuXNHilwd9IxgNJK=6$#|tT( zA6ZJW18CC=OKdUTvv?y17_!nDCsN+|AW<zWze(Y{J%aPIhQkIbs)QfULFC}vFK3zD zE{)CR=l4pMu;lu3F$U*8wBe|(^qLL^mxc9e4`d~;nc-G{Db(2qWUet7`ygYOrW_g3 ziSJ=S3IwS)bsG8;KqcqVrPsLiJrV4la>OfyNs*6KCrH`^R6!h;Jnq<$fscP%w++pE zi^y~82MW!pB&>-+YqEd!enLsB0K+=9eOFO1{dJxC<+kQ3veoA6S3V^ul*HBi>D#c- zhxijI0tBq>^CzuM8-GuQX|!*dEP*>M+ySa7I^#iT$ef~bY_bxAN|)hAfcD^tG159s z6(lcc^!EO&fGwWenPFAMT1)w!UmRs8V~s=@x|W^OWDCDoo9J>2)`-==-wvKJGB1(O zZcOgS!fRZ6wfVq_jF~D#zd{Q_9?HIrq*2Xqggngy_Kw^*+d2SoDhMiC^+&_~RQgux z_Ejkfb6<Up#bZ)6`$Q(2F93nMp{q&zm$fbA2lZ939`{W)STQz9GJL&~@~51O2>P%4 z)s@%w;>`D?{-3!ghhU0JktH2Bpqv0vv+^iqTQgu|?BMQ!^XS=_ndW#a8;sU{V43h) zERKCTdB5sIoCsZ-wIy&tw)H5*9$R)D1FLc5I_^kwpNJ_QK3Kg9jU9JHpueSoXN|@p zCVZ$OY8!t!`GMt|?Jkd@q>W}82sEQ5D-b5~a&|U0H=D%dy7SRfh?PDq%h|76-ccC$ znP@^~mx^vkD%kS{finY=7sc&UUmktjM4U@AKh~GW)!ssvGWl}6(tnaTbm~C@{)3v~ z@maoKcb+!LDf*RYe!wPbMSL4_UG2dt0s+4-rwX}DOa?geNBZ&zHrI%H(NV?bt8l4} zq$ea(*_~yo3i)hKpNdnD?P2^O+G+Qu!x28gYDHFGW9Rs^H+6xezF1j>mLF0^|8)N4 zuFg_tSc~o6w{*lga~E8&uVpITO<tLvJ*fvs@`nQU5nmJGix6w1q)SOe?RU5zPtgwm zBwm+&9(-gAdHS^D)Xh*zp3?p6@b&euxUjmVXX~j)ULdZ{@`a=UhH6tnt`XE?ng*q* zc@}0OSHuy<-`dbBEfxfGo3$B6*kW5(U_9CuobFP+M!G9k)Jd<|OMv8-wpaA#!-8#h zyYqX+iMJ7$ZJfiW?3WB@pz1_i&wvQqTaMHhaBO*8P@lWU{qU{`toKog&aU&^LYQ?J z&rm%M9WK`yer-YQznICy6NrhZLsAtZxl8ZaR2bn@Zl^P073&3hUyQ$<+vn=qk6v*f z2XxfM5QOR@5cRO3i8EDXx~d&<Ghyrb)e`lKAJn#rezT~dcs`&|6cczZn@dQXNp)|1 zK}Yu|CX!${amn*4k7*26<P5lrNSWKS<s_-@wz@s;D$h+ig22QrGNe$(8j&)SXc6Qc zA%P|X8!5hgTbgH-&8kYxS=vWe*L}JR;X5PgO5TZr+_?&dg2zD9!x4#y9=GvzItUG= zd5zm@fZfdQ#h$YQx(>=WdV6H??U^7P$iMichdRehZqe8-ieM!j=)1wpzg$9F>6&4~ z)7QhE(5xrDK6BpF3LT8<x_fPytI8X99pF}vksf<pqSRR5E|Af8?fvlOd)8=81BQqy zhAAf7qWY5gx_+i2p}5^7!^C{M2HthWU_w=2JDt8ihFZQf$;;J{Mm8uBE0J2p1y`cg zS3pKqVmSD?%0M_G|HOWb8Cks;(7C`;z&G%|x#^AhQE}qJ&}$<QCGwTcXw&-<_ziLH z1<CX(Y{xmag|0SMQ}Qi1TCoX0nl1bMX!q$voAA9qe1_}I6a^uwC1lR&g+feMENKTV z?n}54lPrJjI#sX(w24iX2shuFU)-|SPHzB&4b5P`(LVh1=#(1TMkJ}Ko6-q$;#K=- zR(G5uJ3<a;Cq`;;>ZJ1N{@qiK^ER+?qBelb6fP;F`zUK`gHqKM--A5PQbE)Zw=3A4 zmWmN|vBaqf*#ZmQEW0>jW}jKDY;vG%nIJE}OD??zc*D;^ldw>zq}*<mMr#vkM2xm~ z`KssgwVE79V|LnfIgJ7!pnkyOAb#rFzW%^L;^#e7nG@w-w1t8l6(Z~(5+G8jk2xqJ zATHc%W3}fW)O<8#HZD;7v1CYvf?@9U+oGZs)&xiXpl6Nw?|jRS!w0`ua|f7=8Df6Q z7Xgj!02(CtFMcZytBI!J^pn|YX4+~?B}rL(Q*hqR3$veXwV5df={~KIb=RCgQQU#Z z11bEb>*ZLj>X9Oz6KH$NEu6T0GyRI^%PO+RND+axo0x}CJ&#nz8N(}}v#4;fz`s5s zr7@ut$a8hcVYO&(jumkhX*(W8-%&q^&})%AX4DddsrxiN3kl=}z_O6m{e0Cme9Gs( z4o<rmc$nJFa`>f$0GnV0>*CAcMFGJn=z8JVO!rqQTZl{Isy2Us;PZGs&wK3|?G?g0 zttBs*Y7s;_N5<yu0d;7q@4vq9Qs5#fZU<MlJfy+wzTYJh7++__v&TlsXfx3oXQ50_ zDVA(ai#QY0O)EL_Van;M&9TYx9HW7fexqNgHWFCUj=^z(s@)&8pV7w;mo5wiH?G61 z-?i-Qjbg{n;|Fu83PqMr;Z<j1)X9<2#4ErApkwas)#rL!GLV-nwMH#5J)`pK1LMR1 zb#t-g?S6J8Wr9qjY>QbJMYvlx6HFbY$n9hHh5s(x$*JD-zNz%Q_ROQNftzx8Sel(j zX)!qUqb}a91I<$u?&HqmDiZ+$OUA|stxHF(drju?Fnr^oQoNh$G&*<f833jnJl}~A zT0NHAi)TY@H$Pa;OcR7{p6lUUAyhX;_N}wEO-tDS+ue0AuovF$q&}sjcT_I8nulM> zaX??4Z*~~HsG1qjJt=DSnrZuj7=k&!7!{B>#i`h845B>Rv=T@Y#&OjGw&e44-Z}xv zMLarVkMvj1f@8T~esEKiEVPocG@E@wN2(RCfUXlZYqW5qI8X%8Fy$L*P<vm-S$YFf z7(l)URAphRtDR^u?>W9XUC$R>HJcfsD4!Kza#}efQc9MT2W_~cy?1~EWo;VAwSsp( zV0;9c3El(l_@F}ab&$sf(UHYNN8TRV&{d_0uKD8kTaH>>Ny$ZBO<EiZFibJn*GINj zj)=Eb4W)FRJ161kk?1YW<7vA;a8;|Hd{`L>ogMipeV=zc+7@H>@irJR;$EXA&ZYhQ zvuVy7vABoecHldB<V3`@$t3*c-j|%WqZp5{yiuJ~i9TL4N62F=^1RMy^IeC@?P{|> zi2amc0dlT7i5`A|4H8b}82#wdiL2A@n<cdZ+w<X~wo3c+5IT*v?+eW6Y_r3yb#HW( zla@9=`Xp|9*;i%6#N;vL<y|?!<ekLD-m;!RJ?_2)P4dRL(=t(N>6V)w$<bt(hyCYU zR?YOqIb@h=JNci|>4NJjGH#3_MhxFoW9@%p%>Ck8^JZGYor|Q4Kn5FDw;km#*;`=} znbYqKvOAtmx#Ymf5rFz~_Jl`u|H5ES9>Dt=O<aCGfZxSSVHwJyfS2&n9XGqv_Z}?U zzq6hf$7zQ;Qzo=O;1noW9kXCb*npxMe=~%fbGRr09J)rLV97NuJxaJ*-uGtQU&;$L z<{dV<>h0MjfL-BvO}iY(h(LUou~wDom1}g@cFWsn-~d6!<Fcw&Wo^!1UHa_rzaw88 zJ*&)ItpL96985x8Jtj$LodOM${2B@v<D|z&22o)7rrD9Agnwofm<gD|)2bS=EPOM< zV_H6N3U+c<LKtmom6U39Z_oUZ@CZkLUq^?P&#BmZRo1Tj4Yptv^fG;q!<OZHYnl7> zf~u{xsE0>=^2uBfGmK+CS|Cu2M`6jUwr4Se>}1n>;k@6o*Rfq2bD#f}I0^*9q8=bO zomI=d4OLYsvk1kJ*Rg}`5wul}mv1a8r5UvBW7)+@GVkFx22b{C=zPmYzf`ZnXfg!D zDMMiuDY_ENE0qRK_3ocYhFE!pRYUm!z^-(HG~5n*gLhJNBx&&CbsttNa-hcj+sQv} z5S_8`$6+vWx>J2g7i~KjO`sv<JW_8bR~}|<-eX4rv*$KC(LWC1FJi>gLmbz)?jdQz zH?&}r*k-j@GA2ipJehQ=0V9yN%<xUoiKxjj>>wQwlIV&(*7=iADS%faSE3@XcOY!b z&*NHg;QU$Qts41T3UUc`R-*eZPTv~K)Ti<n1G!M6Y=vI|=?sbwdfHKPc0RfWx)yuC z*{eegn+0mQKGlJsr$AjGsuF>^Td(Y<7bxqi#^(CtzFu9wXP)bd^83YrebX*3>`1nZ z_NA$o!A7?76;x~qBV@i#pz+pi!U|K(Z?psz-TgM!(hvV66>uzu6SyYi5?g~za9AH| zH%b9Dt+g=_(T9prWq({;_r4>x#S3qdd`Bayb?$B(1)~?0;!%zoJ2rTc8^mi&(u@(j zd@w<&Bzyn1$lz40{w61{Oa4kxm2YNMozy3a1At@s=saB~=wYVA;z5C5p}P>&Gz?YA zYsb3g@CfXCG^ROix?SeWBphHNLLHQ6NEe8T%}|{%*T%&4AbU@=f>%bXK0yriV?XBz zBwu}b)fVHXfwEEYM?21~L<9RO6yFs|Wq{a-k9Sz>T<7C~02#|OHt>N^iE_c@WCOH( z<|?TnQ+C_wYE5b6k5mZ`DqKZ!4x*YUPEeRkE2Ktbxkx&6ulQ9N4CIBym&`4i{Kb0e zd~{gah}C*O+;%PzZ1&Gw;S}66!IafY{>>H74_m$1Vm^P$Jh61}9tAY%OH3wrZD?TW zF|g*<W(TtLm1vv7{owkdT#o4!u%FYuDd}^4X^=A95;S8W747ntiZy!zqzrMI1nMC} zuf*OS@=<XLUTsySQ3N|N6s&Qi@<(s+p<MG6$OFk{$*RIf5|TdRfMeNY^+jG;Nec3B zXh&*SIXV#;6qD+K*Q+R^WM#c6Q=+W%CUluWynRWoU+0loG1tj@I?Pg1j_OJt=8yBc zhIX=)oGMWz2&#nI)?2IF+=YWY4`1jK#IpzZ;98?ggP1T8W-rtRa>7q>lUjhF`Xb@| zp}~)<o%BuJ&fi;|3;7Y>gheXn!nz7?*;2%|i1e-YVTsk6z2DrF+C@O~vhG^W_IMLI zPLfoR`=uR?(6t$aiDW5gFR??YQTwRzZsc2mHF~d#oRHb%y+HvZAWU+LP}>H>jkNc9 zKp3;<(}X*1lh+Xe<fkR4Q!esu_m`b}<uE$<T09zq;qQ?Vjy<9=U&)Po0_Sd8)3|DR z1VMn*X?$TWSY#TU)vaG2&b7Xkg4I&1>Xxb=XHOpIq}0#HGFZ2F%*Jcbf&fJFlIBb? zSWL%;(IHm*XY|Bn?3fHBJ-0YjW%L;{rSVsTo%OKI2&0Sx>I}a08&&ha?PL9lBcZT% zyf~iv)tq_M`s(mu)_a9_43k^ZrPd;$t{yUJ9wsHp?6k{ab*TPJ-g&Wv?dT#Gp+t+s zruF_}O3)PEol;8e>4+Zwwb?!JAa`e@u;|LYHf8z4{(~IgXI<4xr>q+_7(zJjddsm= z`(pD**)t^eHatLdiHN)|4*KqV3=tNaN|KSMCl@x8I>G2%1=;?c4P2z;#fvAB#Hh<_ z`KsYw7;u8?P$~D0>NhJHwU8#1bCs|jm*_b0;BKlt^y&<BCM2iCDf)0CAmanO7gRu2 zU4J_l!^tX~xaX?0iJ9+%Cw7`1TxlFRt!?X$M=N|>Q85yot$N1YT-&ash2F}H&rx{| z-Gc(Ocl&XcAZ8$PR-$(==If8Y>bPBrvlFDjMTS9L0SgvfzoP{FEZS%h5xUttOI@z& z!i5g0UE#uiP;Q(*Lg7(8?-2}PS=*hcqk5!tV)phAe=TtU+TtY4hyJNo|5GT)G=38V zQzyeDVOywicsFT+@4M->^VHDO*X4-UU>?7QXhR3WD;8U#I=mx=aMqEq7-tC?iXkba z8rC{D;OM))1E#rM^B8uYQKgKOhcUh$-2DjwU7K3JcI1oE!$N@a`~d4!1`lMJvad!# zOM*XV_47C&xCXs_C1pY@W7Owy1t~4}&=iXKeCqN2ghj!e!ZVu3ue-Zd&_B=al9f({ zdyZR#9?`nxnCPCwCl)aPxP;T8ulI*~5Q>5|H5yxW!J_enW%W|&Sj*V+FW}}}@^%W3 zDH9sH*i4TKV{?^wD}5tIeg<T7VC5|>O;Wy0Xj&LVnqj`j)=?7;iTI<e&PM>5*S;VA zxd9`$B_TuUvMi!(g+hUwg~Rz*CF^xKKZOd?)w<eLk<xDl`&5f>*T~<6r!`=sSoUm` z+DS6g*JU9KqN;|{&nsXL%CVl<1`~2CM^3;oLDKt)Kvkvf&*2}26<A$oEb(z)Qqmz9 zF!HT;8zf#DF|mMj&FM1Zeg#WbWJ#%0>x(gqs(ll^Lc19w6fDF=c57;Cak!R}w+Tsv z4nuY&A&S4S$`uWGez?ipBdOE8MC{qf6O4{LHkxHWRr~qX&!W`Xux&b3jze1oHDbW) zV0-uQ%=h2ognuNQSbxhb{3+q|`}lt(oc^ZXLoCGZL@dNaEX+(S$Vn_JNc@GBSmaY- z<zEv~tp5jzDAxZz5ykl%#;N$HMAYx={WTGlwFvD@*Gh2EF?NLB^PS6)K||7H@(dj2 zFddOAGQ*zzPkAWiue+s%0bp8<Bv@5uTCOw?cpG9HggPVSSH$^}+O~Q9|1k~qyVd`i zhT`}XWcjB$3+rdf?GIU{-(LEs{0t)}=f6>BVIZLWe1U-T^YMB0UnG?{f1`5ypZY@o zVN?FA)YNZQ{8PB)bJc%H@ceJ+wy?1NmKgl|P5954GczmepPI7_NGDctM)HrVo9Uxg z84O0Eb{6UyNPhVVCq^FrbllMjp|)ted3NufK((gzu{nASEv})1++1kKC=UDCvw}at z$~^-8?kj@E8-7~ZD&1RaJO5xA*!r?8pI-bku`w|*?CWIsoHN~tKJ?YT+gQQQcg*9- z2YaWp;Zo1Dy=2LeaX&L+vU~Y~w)zx{rrnkLk#^5#CCb@;TVm6}845x@e^Vi^y~f66 zhM^D&70YtzM&#s20IglDeb?*c)3E|;4t=lyBd|GYJFNYNj&Yz317F&%-FO@nqK4z; z%sFr~8Q52gw5@BVYHG=GKk!3^rsDCD%S;4ZY_NwcN*5a3{*{()6e`dka2#Rrf;D|= z)4P#YA_YK6w*4QToY{s1bvkeNL{-}!_wUBU3VG}^DGF~p!JGlRPB*?0GE62rL)bo3 zH>#A;dk&fsTIyP=aYvSO%<&Vdwe+WYVacGu^Ksb%2;rsNV07GW<~D}b-gtrs$ibeu zpivVRYgFOW5eBB>4)VL8qFI%DS=_UyfUdRHbaDlIkf~%m-+Bd-O>iajXlIY{;N{JT zd=GSKv`G+^3Me?rL12h$;<$C>8;N+Sa2uieP%HQ}hHIeqRD@^=1MC*sR!LSINl$g8 zs~IP3H%W<}%R4k(s^ai~2Hz!=SJ4f>hCITu<&F}c(x6~tV=d!dx!cd^1Rv2SGznm} zV<YV&DA=iU^@YB6Fb_bcAVtG9cX@~PVC<*ErcottLxB3KLjU5=8;eESecE|XdQtSf z;Np=%wAXQt8ZBZqfVLwc6BfP1>McTj6w4jsiM<il*|;@ekh+(Ees=&MADlV?Vw%&* zmevSRp5-u1^DSi@ujDfRb(oIBn|g0eYHhLtRS_lllzNb$g}0=@C9-qpjjNq9=w;Cs z0!xC#An>w~BhcpQnCl~N*USrJf{}o&a}h!r@eAzv4c?>W=7K@iic4^94{w~D+PNBc zSzY}GbLmDRo^0Njztlc_wBb-}z-J>;RHLPtTEA`>FNLC8WP>*^aIc`?lW>R0SI<xW z(eyRG0|jT|uI+49XKD9|0<^9E2!xTh(0G8Uk=!Wrp0Ne;fS=*5FR<;Fd<BH#K+IFU zHdWYTWtx#AwZM77$<Bim|692e*f3uql#2BBnCjXDfyA@vb3ZS?<NgIauqKnQdTsw@ zVjy6EO_s$&-B5Sp-Or^8d9dK2d(A=XUut8*2xy!|i)lvXp$LvX+e9ZbBL;p9y;8*5 z#zbQg{BQnXRr^rY`0u`(#Kq{WBGbV%8nsHVS$fmAy|qQ6ODv4lUQ`40!6$JJnrR8r zt+MZBCq;#Q$A~|xw@c8-cJ570bk~(=h+P}Q)^WxcU7W78JO*{-SXoM|Zo!O1YYK1i zIO6qRc{2lbJtYRE9Gi~}Q1#FX-k42K{oSK&$gsisvO_QF`?A&WUWZ)(8j{kuemJ2L zAlp1`j7VN(I?H6E)8pcZnG94O)v!q}-FN1#O9$<d!kqZHScMHA8mZMFQJau#O&qKM zCV&k^87?nV*@Z<uxa4*?(U$2X`Cg^X*AFoByfqq+Fl450p61=-Vqff3eAX~Jy{>(% zIzYHPQu8`9OY=s#(+j(ar_|)U#eh13q4t06s11+N<~NB&dx?0lZGdE=$g-cW`JMuX zixj6YT!au+U;g2Sv|tgXfiZ}5On%DoUHicH$;?QyX4~u`{*bNMTYuh1Z8H)@0+G3s z-zv*3b5wNX8tFRc!g8C`$A$jtApc_$S!I&SUMjB4%YvGFfTd@8gU{Lp(NHcyUi>?& zF0&vac2%^sA#^qbrv@zt@UQ_Q?|^#EXc9P<pD|t0&s%U$sVJw#B+&IVUP3oLY|$H- zNGFl+BD-^VkugxrR+d%ut*)}_!l#~I5!|z5lFLAvTCY-v5rAndZd(w&;h@~x0?`ho zKUD?$8dCLpOm+C1LT}+&C3_*7hK1JDy{8(u$s43Nk93`aSd#;OnWfd=T#oB4_BVv1 zA#0bFHZ?>6fA_-LdEv+4*W@VD3|_am1lWPrPb!gO$Hv&Wkx_ti3VkL4roN+BRn`R2 z4Mu`~b7wdIRDF)Q21np+IpDXuuKE_;*+&*zp&<iSm%NGW1%lt`jvhy2o-(KgjCN%a z%3=M^yWDUJw2dATPQWNV+i^O2tUL;_`No7l>;B?*X@&uJ*EQAl(_}*_QErph?16NU z;I(AhwlL^)bm&UDvq$lPGalgkfEb>dpIe&p!u-`l=e!IfTz`6!%_OB>wcFun-5d+! z6sEv|c%U#hL*Y~&0zjRF0y*%tesR}kz{yCr$rA2Z6^IOa6!#jnl)2K{9(v}CK&<mD zExGvA;-S<PQTNauCi705lD=uy5vlfWX?e8Ybk?b&H3eCu+6qHK4O&1#@3HUE^lOsc z!k#{R4JqBpaw7?;>HURz?__zOqXu$SrL*7-$M}Ge?*v$;g4Z>xcM`+}OJe6!MhiI$ zZXT6M=uf3PN1P4DnOP5qNj$6ws9XSXJ`zv+oFMq<^Z=GBeeY=VDrAz=Z(Qv`B@N*v zZ}yF#m0$5e-&6!K;q0`@p0H{>cwE{;13{+g`jW_yP>w3RNns_7gkLhlZ$p|;@7qZ! z6_!@r!6}pOW05dJ1a$_~+L?>xv*=@ax}nc<dQ{;!NEOK42$?dwU)=R2G1b>pOeni| z!>-K)2oMCgaSlPWE|QJHpbGA*ng<cB;^sY<;Zcc2BJk*w0G&Kwz*3s9AV&I(G@og2 zzF+ds@Lx9h%E?FTS4GzngY~)PUk3C_&rnV10+vf5ob~HwexreSfuvf+d0@{@lr}6x z=Exf%cFzEwq1wZ^jR${Z{|NU%hW6Tyr=w9nrIy6Dd%x(x3Qk~n`Dw7D0$jpO)6KL+ zuAHIb2Gs8WE_R}>%minpt79$~3uOlJ#QSBi))tScKF*nVeL<vFe$@40UKmZn6k75A zweHo7Q=Nntgmv!-7C~wnYxk_gIiGwBJBv>G`s91SP#P2yPU+47Q8-CwI%=R@&)jgi zq~W5SyUpGMeC<dY*9<{whAsJ;x-X-}5EE>y|0|FK97L&>IpIEb_WNkwvpuL74UjTw zDfJVno}26e6HrR5ld^Q0q@Q&ZGpY_rRy2bMH)^K`p3E6iM$q&=_szg|N<-PHsqjIx z-x*4l!Oc$z6}&mgr;wiXuxB<Q#z(mLgT|<D*Qjb!Ha$NBngn_dI!kE`2kQ7!B?ak; z1H&+BA$L+(3$d|Z9MDj7tzCGGTk<L^cGAcAq&h5%<ZSaL6{OIlk4D<PExiuz-O=gq zj<Hd37fWjvJ;%~YOsJvk^H#cBo1oouxBx*N`bYF>%q=M{RjY&>N@gEkw6&+e%t3%u zNvEn}J4iPp8+z0q#2}6>Pm}rjyA)hCO%zEdHS~-FnT*@GF>qZhyQ|R~WfU$O0+rl; z;CITmwkw|E>WEjVdwWCOzw^usH<>yE?CcBMHuHgNT*dD>uOtMut+pZPDTOlnw|DMd z?B~iz-zZ2#rWL-C0Q~GGLCX-X8g02$5f}wnmiSueA@OQgv7Y3HQC6EtkDR(Xxz9?? zbYj^6D?@bF#dgq#d4fw{7rvi09gvZ4Hz3LVsdl1&*)B-vfE$-&En;{GHzq*iRutwu zkvuHqQlvrLV}_wT^?A;3hAYU^XUxr*c{gAdSU_+wWZXY{yZqSjb9Y3%vYv+ElHL^g zmdyNtvZ!rbr>QdmXBH>E054=2)lROJ7lLFtiQ8i4!!KaXfQAFU2`;S1nGV^Mw?Jew z*3-3HdJIm22nup>w-?lJl_Ebv#>;B&T`WoRbtvf8U=|p(=t^0eFPZ6fZHK|bu!4I& zF?yes9g4-kj&d1lb%olfED>?@B9Xn^1U0iYZ>UaTQ~XP+o3rum04)uabMUUYOv4<2 zxuGB;>^4mEbmqY#H|TqzN2#+t2OxWa;p(9#OF^S;m@VAe?KgTx;XrK-fCcST#>*}~ zsY7<alY{rC5A47aABRbTJ9-_PM3px$2a!^$YkgNAwaAtj1<lWzq3#_IINB+VacY$< zZO?99Acd%P5Xbm?6Q`oOvO}IqFv<)oY*!k^z&+w#QZo2Bf0ueuBph~<n~B5Ll%k7) z*15-P{a}@(xs7On>+VA6P^tnz6oBgwPe>^uu+iI+%ya1&<oYDuS}VjU>jA<SxU~CY z;jbx`_82@D(cHUJZ<lqArCn}Pr>a2T>mVB@RWP$U*;0sSy6#czQ=i(nV;0cS`zZ@q zKCEvRXsQy3XV{NgZ5Q^|3mCw@eAeq6duL3YX;40$R4zSz)x$#jcy4@nF&_EChw`|( zTT5HgG`-(w?MxboeyUMWnkqxuXtGE~X~~W*743s;^2U7{>HjpG31-sj+PBiBa@9D5 z%VF7{U}*QFH`niNS+FiNXD`C)IPq@4AYmHAq;=VhL^BIxV2}?RD<wY$)J$jeUCiXG ze1eVj51&{Pw5}anuMdp-9k=FhnL|@JoIQlZbNN*7X!UR{6+N8Ct}Qi{2-iwb^xuTH zXOt~Z*zT!ypOA^5;i<fs8^+=FFpfzB4MeqUqYqb9KL38T6-+;p1mdkEXgsV(<9|fR z?_DDSMIQpykh+T8|H!I{cij_-sT7LW-RgVPh!6RYz{`0KQ|sPt2@iTjMH=MiOX4db zR?10v0XkPTn2h~*m;)Q*-_MC!ENs7@WdA5~{eAo&FbB2IveMtwRGt0`GqC-R1N`>v ze_!v)_8XDNe^>9y`8$g7Cz#>)_5KPoEL5ys=5<w{1)1ly%#YOfGsN+wr<v}ez3|z( zHV%LH{S(aajDm#wfZa@9aEfATpm&J9iFO?4c8%!fgQQJ)oM0ra@E>7@->v=&%<y?u z|0m4A!TD#Hft~#in1Sh24EKME-2NtR%Syn={CRT!y!fvu!|!;|@0G%TRx$o#8~&HT z!au=;-`@T2XaWc4e^2So!uF3s*H16`eFy&JC4VY77W!u?^gocP|36gfQ}*_^t^eP1 zm)~oi|BLcy=HJAE{}q+`eZ9ZB3z7tqvBppaZ_Ab@cgo^X+8kYNq-D+9R<|GSz;>Cg z-k;p1AL5QB;p6KvQ7Lsx!l82`z2U=h;qzdCHs#<P2=t0a-+y+OKLIlT&<y^6h)VtK z9{o`m{U0~vf9W{?D3<=efk?6c5oy@}5@~)P|A$EP#lYrMn%v-1`B=ul+5E5JhW-B_ z+_3+*;pWqSe!uij;pX@C{^~zjR@%0WX@qAx9f|4d&<Tcx7HFU%%r^O7vpJG)r83x8 z{^UT~j)f}zk#lKNuY$sC4x&c#SI;v<dnFytVChqcqN7=)|IvYdH~U}X4d<r{{6FIj z8zbwVU`=-RKWj!XG5wo>L(9m*{+nn76B7Xw$LAO0bIQL&ozIW|x4ZjSFZ#=t{4YJ| zpP`3^`BRSiZ(8DPe{Z_@ZQ>t&5C2{;{x=i<8z7U7<Fgatvw^|Hzy=lylz&@1V6-x1 zVdLoGP_hqAi|y#zT+=TJNIFCL+?-4$?p9$~iG5LkwnYr0%9qXA5*QS$NWr35;qb`% z3q*t<5OieEhkM(X9$HxA422E9sKcD1!sp6iS7_wGT|2eiQOiEbw8Q=#C7(BgA!^SH zCeINEUsH2q977y#-4k5#o+~2&uzN4*qFJvqr^Iuuy-sVf2WG*@At~}7uuE@nyk@G7 zJsbkS%57Uqy*MWNn^Z@><H7jN25YHvia!W9%mDpH3C^}?f_8rr<G$K$W;L5OMS}2^ z<c+L+o17Cb_xSR275l>!%>`_Rt^o5Ikv0*v;dzy8-!E{?E3RW5u-8X+$7adhf(G`w zLz~;jTnxGN=@7kEkUBs{U4*aT&R<q!NQ0z>bkl|wy_u%efGF&<m<<Yx*97HZR*LtG z>?iMORY!o~4yTi;)(zpMHl>Z&qFE|%`5G_l5m9--&*L|G@Wk~AezS$cXcERwOsduO zlVh^3T^0j>)DUvUmX6`4DQAJW{J^H(&4}fusCXyGCZBu|7~x}h>UC6^@*}p!>@vR- zzX;9D%JQrdK6i%No~aW3!N5b*VKNTc3t*W1ZUp?<NK4CfA8UqIzQ7SiQ@Dn&hw#NL zc$Yi<r~A7%&%-#pOA>9RYzuOV%`v%vcG_7bqZV{kO%KW&H`MpNyxdiMu|%6$<#gC0 z5wGH(uvRIo4Q}(<wd&=X`!rtdjn4|mweLw(I9Pl~TT4m8(TdmbZV#yn)iXl@TXjTJ zg&$o{A)EfuTW~#PGUlWrjnaUNU0hO%gIMp-*c9&@COC!g#;}vX8a?k@VGnXJt<NtM z-+^neA(kdWSR$iD<O6c1iM%QynT~y~@5h@Jkb+Fpu*=Z-Ot`QT#bHRW8RnIZa;RQ~ zW?aCHz6Z(-jbctaKxlOL<WBS`GxilZn7uQbu{EUwBCMX070O!VQN$tMfOQo;MSg}5 zZHWLoM5?S>a5IaDT>TpaiFEnxwF9eT-kmNc`#@0YYu?AtS;gV(_SMh(&%P*XJ{9e; zhcN@B(7r5b@!#TkFP5wuqB57AN%UjS`?8J5j|p_2>K3#k9>8VxV4%T$pi{T2>;ljd zy7GgpfUny2=RMDqj7<d+5j>`a@1S3Uko?H(HIBzc!--OnHKgrR^y3&nk@7pN($nVj zAvH&Yg$9W&ZnEisN`lQ=a)<i`L!cU~c#C}`RvSD<B%+Uk6=`;3a>FiVV&z&86={=7 z5-0_l(!zDJD=YPIYXlZc5N9+b6)Tz=96a*-5D$as4aGgT!=!zjz%|FfUIW-!+OM3# zn&r_eHXbs;xBH1*^H!0zmXQZjh`J#?lIfYV8u}9R0zl!O2wT4HeZX-eWXB6Qw;LD3 zZ3*aMz**!32zt$xWh;K!GtRVZV54|E97m!(D+*Kada5v>=~zWIiPS(}q_VCo%o1M_ z$>0pRRU}OPRe6W;jIx0s9aI(rqn!r-qcj@GrhxNlS6N)BU8OuL7WHf4r|5QYXbzdZ zVof5etFhW#PiYVN>XEU!Roqq?zya{G%@P4<ytS+gOE2tsIz}vV+7c`9{PMgW|IJ;h zJ@4!ATh#{s-LW|4f;%O?Hm1BEw4QEDW0tqUS80R#pM!P^?&~xUx*HM<TZv_5gBLeS ziJdv7omWfWTkC;Yub3=563`zWR=rZCAvf2c*ix#6U3iPX%yBnh#_cgofxQXO1FFjb zD5S}mh(RVDM`ye3^rSwJn6<~`1=S|!Pyz-Hih&I+tFzlVnU<QGHWkMdLAND)lc~<? z*Bb~ssQOjmoBi_BnNvQt;fo>BVmv9V5r+EiEnqk=3mOK^p?cc{!cq5nCn3a%J520D zXyq_Guwyt|@2Y*mUJ!~cK%^yQPU|Ry<~ENq%j!@PY{eoQxq?Sc?epVIy&BMB;evAK z>oF0ci6&%wX>^$v%M1UIgfzjYj5H0l8;Qw@qy_8i76J&7j8Pg=lJQ%pW*uB9@fG_o z^!m;3A3QulxD~z5Wk)4tenaJn7qK8qKYLN{U(L)E@jc~excpNj$H@fC<Z}Cd`Jca8 z3MgZ}EY05SN53mOp$ls|>ug+gj~(neVgAgObAWxZ`{mYIh=Y0Box?6}u@soq{N;Pu zc_k+*V{n9wNVU_~otkj^Yt%=3s^P|4+Us-(wv-%qn|LV2_q6P!>PCt=^@{9c^3WYi z>me0{jlIG1Xj8{d+FHAdAawlLbz6f?u&71fb^Wx{En-w1_(VzN{w(mwD!9GIsug1~ z<M!mUHLj&`-3Y3SVLD;?bfSdz0KB-tIqv4e@3d&(FJm)hQAcfA_X+5`ga|tR&kV|z zS7BTN<|AC0NFL0^T>OYTdj6gxSRe{RW1P&4A`!NptOB913v^NAV{=_k3~{qrCaLox z=?l8*$-`eUCmjuOV4QWM6~*M*_oG(rR6m^V)HK-fG56CPPmmnFa!MR%kl_P0BX8D5 z<?qkadwsBnma3fFuVU_S8O+#Bg`N|u5WGH1uHV66g~c9^zH)#$IAeTN^pet8>;syp zoO{_Pxze_8`NGi*-uZc{YLGy-1P$ha7Y;eLvl)<Z+)7|A&lAkQ>z?EjZzglDUXbOy zpk|jbB$jbgrhbcwggTgPgN%%3%*PsOK!Ao8?f`!Fz^m|m`{5^uuMvD|aHVps1oADx zS_x=xYUoDGXt1)j_LL?lqb&}n8^vFsjTiPQqXGEnwYrg7Vd~;c;p3FW-3Srx>CPNR zg{#E>%mCo7S@WP=Xcy>x!emwdJM?j52D~0J6BBoUs~Am0w5|M;|Jwr^H99qS1U5t3 z`nL@C8dfl3gxG4yv-U~vEUd;8>>%@NbigPbJM*1&G`mqp77m=!MkyjT4z$}@7-W9T zh*}<2;QX((A1+=w*EFO$TZ*uYnhIefR)H{a@z>_04C~y!^F#vzP8E@Jm5`j@MCaN1 zVW)Tq{agb@m&nt<hl-VowqEe77-ZT~uOAqULF+h$=sKNSsJYR1wvlxM(wIv}UA+Qe z^*t-9r~?ePFFl*_B3@niA+D-&3(^tfn2gD8zbuXv1zp(UwnXa8chI@E3DZtO%Y9WX zT!fV?-z#~~-HcGrYH}6b_+;XfgMjn9IRW_my5K~*W1_fEf|3bOo>?F2RKz86;ke|X znd$HOGCzg9UzkE;f+8E{=eDr`1k6D9QE>IN93g8He2eivbgOS@)26$({#72yF&{6n zGd_8JdQ*sSSdl>F)f&^G{yf}uL%(`hR~}sv#G~KDM-BuG<r2PO3Ah0a*J@3R$3bQ! zt3s9(&?Ea@>DwXpq4jvDsb-L`t1w_3L%plx-rX4&t7ht$<|VGChuq5X78a8w8fwUq z3m`nBtm6h}MW<0<gOXbJCF~qwAD%@~_+;h>`&_JC!>pyeu*vM6NM)8|&sqI@yfW>` zO@#NCan5nyc5McX_0Kx1X~ugtgHL_eT0FJYFP{D-JVWc3Te<}#pVA@r<Rg;-kda4; z{-<8Um_u!N+fL{mKbe8`Z)2Dj8?*SA4zN)Y-YU-<V04N$#(ET_g<dxAObFdwVWQ_K zUd2tx<&F2cMPKeHg9ctWr+DcJAS9<i)6J4H6&GNo>re{KXcARDtH%w>q8<=nAmxBJ z#Ndm6v`}()e@`ti=^S3lRZAV{30l$l<uEPl4}hY<L~D6}U&`<%HAj=+9#O-SL#rp! zC3j|HLOnr5LD_YG?`uo$ATNn|j!=k)H&#}$K?gZlYP}+}z-@=PE^<eKF_oaGcVDDK zyyIru8dx=-FpewkhaF;l;-vzi@uVsNorCtpqODF0B_liR<m%Kg7FrN${O(Y&T9ER~ zTOjqETLj(9*QEaQuSsEEi1;LPcEa;(2Vm*ZQ+Z*w>7+XdpL}hYG4SqUqsZo`F(&8| zv&@1St4T?bv<Qq%mWbgVwL4swlpMG_-!HWR5}5UEq^cAIs3P&Y#L7|%)usdkw6(Bn z)YIx_t)ZUqdDk=;JcePtDx8X)s+ZJ(tTl@LNOx)oCm3@_Vg}W$XOwaZoa$ek9rhTX z3p1|U*>JB=Ei*#{25u)*FsOLO39#Eql*8fjLS9q9xT7h2G23r%*ba#OR!tar2hC2m zW;rgJFn%CG3GKrVAdY$tLdu&(0Ez6$SX;T)+Zc$3Ly7#<pq5(RgIXmfWA5aH=KW}e z1ym|F2%+e)G=4^psrsv&CZRbAdTE@Y98$?Z`HES!1yo(H9q<FHm73^Xec!3>Q2|=! z#aK4=U?2FrJ&JFiFl{RU@|V(5IX%H7DtAo6<pAq*;X*M;y>6MnJ%pjHO1zxWgQY9< zX~e|xB5b-{w_${|vPCTd@$+3+b01(YRxnrYv<RI-J4Fx#O%|&a^2N5iFqw9UCmOan z^EB<x*wlA~wop`{jvmob-*i)n?=2>G5nTN;uVbepU?-NPOYZ|L+%4y3@&n!<U=U?* zBNT_YwAN^mvPA;}W<8LuffePjx=bgRSguUZfJZSm$y3Kij{-XYD)vW?_zQ5r)7fTQ zJnEoQlBttTIY??3^f5B23bWS7hb~NHvlB&|LlqE;y=&rrm}$BueHR36!anCW)UX<U z_k|QI6nxoOE5q%_rerWRH$HMEY7`QW<2EnufVbQllr!>6^;$OKwbr2`J3%frl^X~D zA9d#xBuLk8>9TFxwv8^^c2$>c+g6ut+jf_2+qR~@GjlKz|Cza)h>5((NZ;&?z2Em) zYt_|l1MEjWud3Q=gpz$DP0gfHNEJYZDwJY2c{mhZLicv#(`)C2yefsgm$jHa0fYA} z(2E{R;JX98csv)-ugURn%&QHGWl6?70ckPr4|{B}?4<`U;^gBSAU)GeCyG=HGAimX z;2s5m@JcUiKJ%>W@9cCkeOI~3YM2}LjnxW)C>B549iLBfyntEWFnRu~LMr>em&kZ{ z=>L1*hKZAf<v-V{m~3q%=TA(0d&EqshPhRLtVJ`tZmsvw(|YW7E=E--y<hxRuq4uk zhK;`Bkk~PD#45mToETuhfV$t$F5M&13?o3m!Z_2FsN5sF079bXB_mb73qD<RH0ROs z(!(cmR-3fdK}L6087b}=vA!&WP_aC2(~g1y1~TR2k;-k1x4h|FKQTx!vN{OU5~H2V zHBLeXdX|VjGkDbjqu<291>a4Vpn!i5W5wwuq%}oS0L_oj$1VY(B;=^Q_{KHza;7X- zp<KhM?M=HE;cLX+=%Os`p*SfOZ|((oN!cYI)1BF`zrwxwhs;sR<r4VJt{kx^@~A;@ zh^pgc&^t}P-Jc9?R03jQiMqp;`OI(n>Yv-))hjK<R?tHPR&5p_3I5(-?<89|0#bj& zXSyL*B#-JAqi{X0Fj+AngZuLr3@OV=j}#YfSseLx-9}UKD0&)Xb|w!5@Ktb{WCFdl zGO;(VLhX%Itek=PqWgTZb{N;25U%pT31VX@Q8BR~5I_>^vW`6CRijMt6qGgNs(WAG zO`KlD3qy9LXi^rA`mJ?W539E><g{O__K@8l;w`Ah;+GN#{A>Ni1a{+(Jm0wimq*aW zSVLQNwsUuYd=X~+`971yOmL*3`j7qv++QDDe%LT-f)+#)7j0mK$)2Z2wP>Ey%Lu8n z$2s}xV(1Kp^|-|QGm{2iDQQU0(cK$p=z-2;F-0(QIBpar?IS|({xQw2K7@CRW%S>4 zg%UWu>&<&L<Dw<bY&1z_kUNGUCVSVlA~%*edt7{eryKp`CkXvXveoOFW@cg+IEVOe z(6Ukzf4CTf8}fH!9zQV3@NKNSSeK>>)Plw;@4}o{NKd_Al{b$Dg08314!4&;%^Y`= zGiqmjTgN-;r3CcJ03ws`6ZcDg-^`^0HaGF`MM-u$t-uMy8iU(Kh~RK70sFgM1{P<} z3fPePjc8X0={9~SDB{(teSq6~^7g(R_7i*o?DYTc(&VyhvYr$dA<%S4Ox--~GtA{% zbqTH45^n=N1g9HkNc|<fOBtEiV^XS8qao(8GgHeco=$QpCRR`$h$n$djW%=E)N35) z7SVh@QY0{PYP*s8%hrA6NQ!O2V22eMk?CQIs$P>1s0<?&dHv9%rS$fTSH!2L=WRhX z=Y=6IbJQ;4WlOz8^%OA`Oi0OZiJ%Pz&&J*vKFtVySF~4wqwcdm#D|Wm_~whdY0-I0 zTKeYe{c?VrH-rMFS44u7ci0rP!)P5!HPcnn%k*SHv-(W|MDNa5gxNnC6yFsO<*%A! zgekdgTsYKrRq`0+sodhLHFGu>G1_R}dw_w$X!LaDQv+-XufT_WB(I<TGiffpCrBgi zJZKs4TS+D5b_~?Zt7^c-R8VD}B4>e8{PB<VNoPn(#r4^q$?fgg5tj7kXqDzVIo~X| zPK$sH4gUdp-uq9u`i2)ip_F*tY%%el;YOqHc89>Ra6C?M%HfwCeq9|4yzk9q(`ZZa z{9!`UfyVii7kXML;lTOduwU2d;6S3|g=amy<NAj9B|iq!P@w}AMd=7=MbTCu8+Btg ze)v<VG=m^?`q`GnIZ8h6*}-GX@1yt8dpR7e^~Qjm%7eOs#C8Z_G0x9mZUfaFX#M!E zB;HJdpuA9`jq#ESV`jXr6*GR!)6P~C4up;5I`&#t_VG$_d&N^-7Fvv?<a*bV)#?oM z>T0=2UB-LblW1vU!gOyV6`MZNdEV|eD-O1{7hGpgElGs>Hq3KHkBf%iB&d$!Y=6-< zkdz>cIE0CH0|(a*(Co$b=b3Zb9ZJaVBMHiY?Zyn>TWrv}qITECwv(DK9Ku}!p*9t+ zpp(zIPL{A*6hy+18-(_RaOo1tDU~}!(PcqY2Eszc%PusrP?He1qvkcvz3)V@3p_eu zuCcRJ!2N8kvWRwj&UH)+Tg4NvF6*5O^HEf@wLhIRbPkoE^BiHLw6}lz3Y~9FiC-AQ z@Z%|pUvUaw9O8gGIMjC|Hxy-;utY-#(3%{z|IG!W43pzFb0Tv#rq0{6a*V-dk4PH} z6JEL_d*+q9c9=z26Gh{fd(89lNe>wL01PN6RH+nY@rRS#vly()TCW_tZ0=oUgXxCl z@x@wjJ}>Y%z+%YCgS7DMLez0CzB2Fq@#UOY%;mO7^7Fwz({H=?Ct}&3jE7T3+Lhl9 zlGNvv&QwQ%1hQtR$ryYlvIfi`0?o^v^S~!3Z=m}&O&;xh<{;MSa(}nOClr57N3Uqo z9cd!|E+Tm}%INY1x$)gtIQ|`z8@mwGG*Z6~rG$8Q?;%8?e;)LaCQ|_jen1_ILY7@X zy!`MbKRv*smiXc6))2(1$_2DHoKA2k+_t;JBs)E6tYq)ERHK>oJgdY^1&K0IWqbtg z_4w<-|MF;(CZ7!vkHc$t>2*A|8G}SRGp%{B`V&8e83g`Puk;;mD+1%MV=K}e_SEP{ zGv--#pn;(JQ<-Q!F|=kKHV!&Jxqx9i=I}kJQDb*^gUW~_<`K!J5an3Usx}?gt`<(V z>kwjxEe6<2YR$21sBKczo=?aLQE%^K{n^Yzg#t4ttc`mwN+WF{0N1YBl2^KAi20mw z?uFik?CP_2%4osUUF+h+C;CGX(b={Gpt7C-7!{N%fJx8#QYX&r82{J0+f19?T;Lxj z6U;6b04B12w$G`T?|#UZQJUj!61BgqI_a(7QE!60h1dPa%@54LBI^A&kd9zu>vVtA zw>@SD%BwF?#7Bi}$b9UArk*Ejjb9&}P%JAM2o{<&M^1X~>q_fRnbSpPQ|3c2j<uOi za#9(~tLNwQq*7uu?xok|+Rj&17Pq-;d$yvtdGpqhmgem{Y<DdTi>rE<W6OZJs%bKK z^w@NwrN8n`_#C16lUMTR!+TMzFa}p<X}?9IShjUA%{c7eksL3%#W7RQ4k+Z92d_#$ z>m}t&>zMdHi*o&csc<bZ0Q`l04sqv&Ea03QIft-p1wr-gwo57JfrziqmMn47kM+Fs z4Wq~f?Vty#*SQUr79e8D(;`N{bCfhRwfr**DGa#Sl>zcs7JkW^35s%%pe-HN+2|Eo zul7JeS8B-p=(1h&L}=EICUeOtq+beFTmpQH@+B*zp_1WPm{dPl8*_89`<kz_H$eSe ziqskfcr$5LvSyZWd%gY7_~0vb7rQjZbo$LVy_NHjANTx;h8bmMI2Gb0^{BiLOoyA- z65(<~<Mbo#T&=YqPsq_zPdh#(&+=N=l~oGuATP%^xf#hVcZCRI``!sNfdem>gC$o4 zX5^IQW3VK$xLPfe4c1Iz2f@61t%ZNQ7#?;Hv897xTls#(oAno)=^ihd6TPX@R907+ z9la4LKR;2vb@jM1^CKe2HsC#<X($$t4MXuGPo;zqgiTe1Q*#CVQ&ot&UTC7P+dwvw z^52a+=*o9BDO)66_f!p_F&I?SJ_QMkF2YvY(+BXfza4$5RK$A6uqe{>oMgAQ&Z6>^ zfg{i2ih^Jk!87|*Ro)O}7&kcFmeZ7{BtYVMPt{sWMFXlm^u0pF3qlXN6T3eSRqsIu zGvRJB_o7n2AesQ<>i_Hy%Npr|o@CZw%@5~iq=V%q(2?l_ESQubv?P%B)`y%+Bk{G# z5PqjqzR$}vs<pk%`2uVah#PWN>r+ORgh-F*BmYttSYP!mqGmeGQZXStX8K}U`f;!K z48Rzs@TX=O5v7PKgQ-g$lsJJ5yE=A?8TAWwO9<Y^??Y!-Y?oskBD^CmKsQBGp5U8O z{A9rIP5>Y#jstqO>m9@_$JBLaJggAy>5QnV(_oHQfnB=8JZ4mzQn~r=gQ7#<qGKh) z^b=onc_oC^nKIQ}Y)mnhVB%7OX(|mmXZmfpi(@=$-DsN{qP25vgVYL%1u7m!_Alr0 z|D{j+-_PS2nf_~fIk4NbyzAyHv~!+lOt#z%tnum|f<gk-DJ;O>6Wlm#3)iOBy;kvT zX4-gGrhFuMOKEJW6&XYtVr#v58;2=T@zQ8bwTz#n<sG=c`4)r^c<nWzy|v=j=7kgt zss8)2TMKY*$?N#|RDd3rB$cjjg@CC*gh|?jyu<A4LMhHx3N)|6=b&EhjL2HU<6^>R zw~%@wp26<z@RYv@{{BV8ncyHy%-EWrDd($6hW6KT^!I!o+z&O#lY}EsEVEIJl>y?1 zoKYGhjK8wpL-xok|8ksNk2>lM_Uv$Tg|%6Ut7zEA^mKnQ7!#RrsY9B5{ezQaoQ8Z< z&4`XFt4*(T5%(Z&PONis^PukE;?na<xDN>bVTvKRG@jq@k)itAAR^_or)w8T+-|SH zBDP+jL{D2xyi8>PJiNW7X|uc~n@T&H7yOzT_NDlZ3%Xs3BhYK+xsCNrT5+lILKZ5q z-4;9xD&7}xst#zoLt`5|4+N8i2+G$H%mqekNNFSp;ET>yZhLK#t;xp&`-*6}OK7el z&s*1C97jvoksEK8vLv`tB6^Y_W$J+rIL-0uwm!38rxy@(oAt_C9e_eSCe6u>5{>1? z8#dWWXAL{%)>s>qL(3=l4aD8JJfH!de#HpBuh0*nB}u|XN;zTxK2jT1OOoy+zAC^v zG6EsK*MEio!GMJY1AZaPM(rx(<yO>A$T;DfuBuntcwJWBcP1)f*^=v-I+5acn})fo z8Im=M6b890+)aS~r=2!s6fu)xj4fW1oigPdasl@-0+^ZjO!=d7r(!h4Y}Q-~^4(<g zIxCJz(>{LuqS7yC9{WQ;oWak-$&sh2z*{wR&j%i=Wx|rvLv<jZimnLvTM)T*<Wj=3 zkjJ6TYKcqW(<LueFK59y1Q^!qiUmfgeK;v~1ixN<e4)yZ!S@mTEGygl?+yy1>ZU0r z>3L%(S1#kIr(m}4!krv2X=6Ixs-?$PSo4KAgVVKRU!48k91xSPV7sLDM$X*w#=KwO z6wu!yV&`^tI|OUv=Vg{E_8H}BsD~bY4tUxiwmCHq6uay@(L&IM`uKx#TZAkkn|~x- zIpdKJAU2(Llt}9k&<}J!Uii1)MvM<Bd72JJTA;&wZT%LX)2(S!8>rjk{Wh70J?+Hz zLyN#W>45!0LgM1#wUx|OUxh!sDpg&C`kHcE)2fj4(T3E|E66){g>m&M2IO2KH<ouC zjB{*Dl;^yc0e-1*t+pvWmkwv7)LRr<q0Z37ymSvW;CFL|>@)ThyP+(%zdB9J1NV^! z#@WJXt&0)NY&^QWzshb=R+m|h6BZZfvNDmW?-$5n{K9s@*$dRDjkCUp@erCtAFyq) z$QU&0s$-ZJm}U(HT5$w1(oo|_W%DhZF}zBINoEMeNZA6=GpnNx52HU#!dOIp=H!G} zkINNPN1z&)BA`Pt_M6kOBj)-7M7R9uac=QX;w5~5rxad#6IfQUP!y&%v<>2H)U8Ns zUl~%D7xgoh=53EyWDKR#B`93usr+gTVkqaNnWuWP)d@+&;)JEkBHEt$z$yv^T_BXT zVQB%vvklUG%2~`DW@r&r$iy5+35_EuGThXw2C^B^yuM(9PodScAA-(dz`5&EyK;R! znUDyMq<?rMM#jVKR{Z_1{*xU4j&uCfJA{O6-L(EeZCF_t=zb6_HU=g-#(xkdb1Nqk zhkwumCle79BU@t=dTA3IGpFAK><kPXKN=?|2lJmB=@^-r8UFe0{%k+@asHcti$Ukd zlhD!D*}=%f@#hu);q3UcFQ)X5pX2}Zbo`N={TmhabNCm_4?Xqsj2|%;8v)BdpZ9a} z=d_Zuq0^6d;?HFc*8h`vQkOHdFfnra&qB<3_fR88Du2Z#tEIP}v8r^PdUJiZ*6@K4 z;NXM4W06cN)vpBX`Qljh{cB4=-qX8`Bx$(MV0idQUcDcqIHI1NEXU(23F2sB6{7TN zsukE_gQJy5&z$H*9MJM)Vb`gSKQ*rK<^35QY0Qc>!^yl<BvBJ-kj_@;y;NavNq7DP zUHadUs4~)?m@gAA{L~zM8#@J4f)`paF(z#fxs05s&PH>V{c;w;zvGLUKAM+BL<kNx zur<R#0}EtkeQ0bwLVl6)HDmr&8dGghV+;NLO)E(lEvTjLhh+n=`8c8|VN65or5cgU zg-vO0&XWuZ0*R}(e+<(Z-tS9ontW5=()PW#o-Y!1EX$6b89V39C6R2Vtked^o&c-x zJHxI5xbkmgd^CO*ijv=t!2cdFToiYC85ugM?L!Xg@kYPR>5x~B-C#wCVtgYfox#e0 zG_5G*aKvoHO#BEmsVSj=5SG&xo^&ic_b-GD2RWqWHj<zuYy|r_S-@uOgy<7r5Hn&K ztqw;exD*iJAnQ7ViJz-0qC)as%CM91T+`W~iwAejE6~$Fr&f97$hom>{aKdJ*4m_l zbeH~V{L=V@0DU;FnL4zYGF(_HiG?UON6FesVOJ||+i0UK;z%=wEE@~!Y+TvkCGnjq zv07Z!=3VXza(jjBr3vE;zRGmyQx}<BF^klR9Jr2#$2iz0TGgm-xueX;uNA{xBs>o~ zy>ZS)=dQmM2&=SBMv@kHo`qIb<S1)6!^pUw5m(ta=U#w#9Ad@{I6Aq0!hcbh@b&aq z0?LO_U)!D_L|Q0xotc}(ikUenIa+=~);#yyP73HigM}65vb|4*?a1AVzP=1WW5)4I zn?|^B!h|YU3lI9f>ou}3bI}KNtId4&C5jgC(+`qUBJk~aXCY_XX05*|LxSLFi@k-v zM(#}=Lq?7o`nhsX<B7n)7UqQdMesF2N{-nM)_D#;)WLM4UpIES^d}5{L1B(AqG*Sn z)5zTz84ly=D?Y6o`NTg|M;UC#38t{#u23FA0b|b{$RZRNmxiV^`sKeSrP4|1#={sN zL*@C;B+x$-ZLtHU_oAYIrQ&skpD{dX3xS>JbKv2z<RD!-6X4{Z>LP<rhqFK`eK7*Z zB+3GFs=~ADOApy6ZZZ6k>sj3lwP+Dm$Jp*X^M&Z_&<7FaKn{XN{N%HbqDoyKJ|ob$ zoi1)PWzL*oNAhhF)2Q(BbTpIbfWd<Il~%eDBLRi$Pmd;7qq%!G+fnObX!DEx>Qwp- z*22RKNW9|lXNcpw>iWcB3=(XZvYmY?eEs-2`GwQNC_PCn-r@lv<2r~i-N@Fj0CY#K zjIZSU_AAX=e6`ryY9l084lorUnr&2(jfB3^>zuD#joKR?7CfpJ3orxCMqxp)bxOPf zW}3ZMZ`&c6O3d)|`fJnE7{b~%D$S=b&o=^xDjeB`otw{ai_~?*>Lq-s7QoBsoCYI< z8&W$!0C4(;1YSK<D)t&@pW9d`@NfYdK9DF2S+1b`lmV<0C44YzsVQE&Ly(!UsSUU5 ze^79)a2ldCUB&cw7=pEQf22`C3rhB*`z2~ixIqjjY5io!l#piEyA(t7H)D`<&DUnB zRp^uR31-vyICvrt%gX2ePH*KG9(PUdxMmTE(qrvHSYrM+|5E-PaG&Y~2m}(!6DPJa zd^h$b)-l%f?F)dZ)Dk-{;i@a&iXB6U<J4_~=ohAul>QL>%4pRb3VWkWtbv9_B`jwI z|7hzx*s;A`I!Plxk`^8+aM(p3&)D&Rf8uJ-%v8toOtMCHh>%RtFciWZ7r!v(17t=m zW7y0Q3J=aW4zEs7D8I@V8LfQv@q&9BZdHv3cFX3(V}_Orp)Z3WJ)3dZC%ZpD3q(Vx zG}ya5eCP8iTl<)kR?}SWo6ukwFy#(6o>BHOOrD}l2vdpP5v8q=U>Mp6G$_@25xMMb zjJBL$D7s_l^E;G3$$=HU>fGhd?wir*X6GN1<F=amW79&Mz%o0G!v`)^dt5mwCpGyX zd(aJ1%?l==#Hb1w%096E8m3uG$ZB8)u42uDSrOY-JR`4!m&Po6tiLDg%2B<o{2_IH z*r%NmmX6bPW=+@?PPBj&f8Ga0Vr4hllc`OA%R;|21=T%9_1~AZka{zAN)6+Fftq*& zXR>Wjta-jr^g^f?kOYwhzziu;@tLlZ65QE4f2+IE6YwlEf2_PQ<xDO99br+%YTTL0 z9zi$L0F3)U11qYNOpw;o_{kudbZd*j%DCBrd{LL6F?{pY9C1eVv!3F(xHpX0jb(Df z^iBmA4fH(a%@e#>Hn_1lXDmxEYSTpSV9O(d;}-vWyf6(nQ2m7*l+cYaNGIP<qJvsn z3=r>SdL4-Oa16+gBA9*`O&hi#y*?+-+>5i|EkrJa>2MLOI+ScE@rfcuenD%o^0*CM z>r(##;6@7o`b;|aI%uyo*m~1;=ZlJ8!rZu;20g{EV}2M}zkeTwk};|k5D-uUQ*m6r z`;~S*NNw&>62gU_U|<Ns`Wdx_Sz8|(pvuu0Fm7Pe2u#<LwH507jbtkq=w_q6*>VsR z$)-k}z0#Y?OU$QjRKP}>zs10wk2<*|<L@c|{SiOUb<yQA_I-$62e$vXM3Ng$7@;_( z*N?#OY`V0{h#QRXUbuZuqJdl&Jj9_3fXKmYCt%S{Q2;b2miNS7m%))E|KZv6(EZqy zDTEKfs%tj{`l1!I-GaCZ#!he-a_2JDa|u!>jM6Q%&4S$k%6Xz3^Y?<ymPzQzGkC{M z)n?KVnH85#Cec~p=6-jTZ9Mp(d(B;Mj?L0OR{90Z0FWh#?&cj2qpT+UPAai=#iR(v zXWDLn(@*%NLI^C9Y_oOd3u|V8&dohB>Q<60lmcep1ISHN>VS-cquvjhQX{LAH7d37 zy<zxcV?=n6zPJ47tiJ+cfjIy)ye|6&H8LMWOI0L|A=(9Rq1Nj{j9hQk=40r9!>_z* zVmDUtsFJ5WD!|`JY^|kW^|t4h;gPa~L8@vkT)7-4#b-}mXeUZ<Ux5JUw9mzF)(UH% z{p)6#bfc&$vdJ8DzxoU-&DK7lT*jwCj2Vu@Irq*zr+WiJofEcRT8vPeH|8uUO1)mX z()amEY9Drmah-v$%>7+tF3lT|0_QR#$gyol3N=Ql$iu}bjkd~#r84E#!UtD_PoFec zt}6<!*-}`2@=<{hf42upN&KL~<g0!7<d+~&8e2?DK0dnUGkTd0B|92*+jj*WxnTr% zk{erPim1fG3YPGlw~^U|307D3IZF|H?W8*)7yn=@y;g<Zuha?XAi<D%QI;;Pa}`Qs zaZpqA5MN4xJvVM%)^$mRVg7~dy?m8LoN8RXkE84@E7SwTJDfkF1cTducbtfQ9}XS> z4NNUMW?EVHXNiXkHucLp`woC5%@X+YPJ2HMMpjQ(<?TP@m=j9PyliL6y0Eii(%&|7 zt+N261%^soeHve2Yaw6nYP~4K&(`O{X&2q;l<d4zr&jQ5KU_ath`?NJCM7{nv8!CJ zIULXJt^1b{!-3jK`LhSz%42}?m=%UZLO`p2TMCK}g9Y&+HA;6zWr*UXtZqY@QqVii zxN|jvGkKSg`fyGMvSAgi+MaSnSp@{4ci~_K&8&YBBegr~3s-^f54|163mX=VoH_4F zu*uvrNv=yRxkM(LUhV7jo@zdxClJ_b$|u`pY{*McPMUIqi{4T#Vt5+GIKj*LkCgT! zfR;ZPj)qKY&s8(<FM;tP`8v4~NZ^BPbHwC39rfwvO68tW#UF{mmB@8huOaYf5w!8+ zKrj~sFJR;N_n0605WP4PBJMG4?flBFXfloY<y69D3O{|J3LW}eKgWl;Dt5O=y`K$z zB+SOqcq?xw9H^tVXb^dX|8!xoG$zq^aPN@(<kXI#gn*@GylrAm6FLTXNlx2SK$Fi1 zNB;$-&Xn|BBucU>wYK=T2}A~nMseuc7Bk3hA-2YoQ!UhF+IJr&GWZw{0b3lKU7{&& zVua{7ALysMI&PwD50Q{E#Q4W7=$Kn^_Mx>tehu{U9UpB2v+d)(gGu$J=7oT(2|=Ni zkB!Gp>4dy*14+;K1@?XVy$^fmf&h+ntLcZ+NJeR&bes8H4b5!tB|(KX#-G}=Cw{M? zt8h$LMGrK?I2&-DHe^6|pygYERtc4<r%K(O*qIfy_6eYRp=;$dP%9y!=_=q)uXIK^ z0kx$<sXPK09C@<YaNR`i;zWg)moEY{e-6R!ZrA-agOe8ZHw_#rjw*8#Git3mDmLUE z!yvc#=hw$iEG&}uH+C2xlw2c%^#n+Z`@|eqk~pAN_Q{YkOxP^PzRY6}$0$>YfxJm1 z8+sfRt?IK>`Q^PU1(`bUHa{`Onx;?srUhAu`*Iu>G4KY=^dNdZ7O|%5ko9`++6sK? zt6y~q!K(p;ZAkU+u39_pSFvebbS|foCiSNy{fRH_s)dW#{!xzN5n*Y1h#b);Vardv z*;$IauB+$)nYS<(4(}hav#C(N&XHR2%--@m2bvgN#ED7=uyi?OaqQ1`m|?>{N>_SA zFQ`%&ZSJ2)AmMj3T0~(6cj(^*Y)2cdKwR=wT~cUnRe&M^r_hPlZIwaJ{N-%gK#a=R zX#Kw?zgL9SA>VZ*7Null$H94>;a^Pu!b%**ebsvW6$sy?)zIWbn=gJe^mIo7LY%MA zB1b0zy%M<~4Zs5nZ$NnEjQ7cYBW;>jwsIe?Ns~nO1=AD8vh;;Zl`=tBZE{pR+(a%+ zF`;BYK~$n0)eiPyaPMrWA1aY_AKhJpRG7sq!Y#DSZ>^_B@YRL@;xWIX9U!VJylM<M zn_;1AEC+>94E9pIpa{hnT}}0`ZPR8zQzoKi<|~cX@n2h=2=a6Z^h}BBu6OonVK`&e zg8Y*lEvh_xId3Ax^ks!~$6KXf+D$3Me34GATvTU@hE;BY;5u2r6Db_+5u|plwEf7x zHIU?@1jE=2L8dsU{a3fE#TuT>PB(omZS&#xRZon&@t5nRczt~p%_t~I)7818>LMHP zlFOh_!Bxceq!x=oP#Czy9#j&is?(bOVlSl-TsmWZI9}coZ2!%G3lF!yscn#z92*6~ z;bAN)(8N?i9T2*ZcO-szQSR*)>(NK*SR#tc&9R2Ktenf%$z4IvgeKx$y~fvdc5!(A zIC00~MAYBhO##sws&iwgev0+LJOF-9=}QMSE;){fw*7jHB@>>vXP=wCYFK`teI3uZ z>oy6Y)}@`oKZTZG^BP?Qc@rfa5riJ;Fza!^Yy4M5yVVQGLp@=f*y~ycLxi(#G(u@M z#5=*cbR@0ky`&oU5VAKtH^!g~Wams|d*pTbB-ArAY*^V@qDO|7L(Z+y@Fh=`5+sO~ zY5ekNZZ}u^ftZt+=Dz!T$0}t49S}H)Hl48S@$EKkkzEo{dfF_!T&UaYx1M4iWNHf~ z@kIl`^~GFPLxXW`$?SE$3NQC?g#EN@5ndI}PP6L;@b!N!7`D4w=~Z$Q#0c&d%civ^ z3no*NYa=*uYy7uE*Yq65+<A~%-SAjLsQ4l?=^RXoj(7I~w>zKm)gL9^C~7D1EMEv7 zDf(^GhxkHIjMv{6N4}&PQA6mnqc>>nL*@u&1t*&OjN~#{AYyKDCX<OQzhBxGeMN`I zkM8$#$8uiTd{>FNeg_1{mF_3@Jy4m<YXn=ZVX15&DIS1I74j=#ioCJ0TN}A97#ll` ztDOHDbXf7_;Df|H9{a)+Mf$0b7;o$_F!EeIQa$k$FKJ8P+|%poyqY<n6{{}eiDc-_ z+PZi?asp3iBAHe?!jj3*i_+3OY0NtmOxSEf7^U-E=K6nyxjSee0*-@WUxG=bbju+8 zAw-}WegDiKaqAR7Zl{lI|H?F?9;Gz@Xb|Ac!f~zkLt^fTgH)9E_-;PG+*BDJ)&CgC z5llqbqzT_kKG*sa>0qCSOCK`t9?<M-n75O2_WNBj&dS3PNaJ9~md~cJuvH-no;Rb- z*uQQa4tPM5=_z^mtM*t^iGwS~22uTzD=@1n!I1?ZPa`*yeEQ+;!=M?}lg4GRq&EkE zdy)MNNP!mG#N+UJo;>{&x~s;lea;KN@FMnx9#ts_mYb`rTB)~l*w?44m|zV{OHbG^ zvxk_9gxh3tged;uSFPmEG?326VqQiYNz7D27hcM{-%{K+{B~aG(T~^ps))a*I`(YA z#n$c(+^ShKG+gyiSEnbB`k%Ho#X&-UK!=Tr%|k?yo9au+9$lp6xIH)hiF)mYS15}_ zDX3Z2(#Cqe1i7g8k?<U2g>Bc;c8dIaCb@m41o}ny5^^U=D@MZXzRD$046Y@BxG22$ zFT|+T=j?IiGD93P*J+i`eVX)S?M1+wTY?u_;VX(H3f@|*=QF1cVP5d_QMe2JhY{73 zifN6-!-Bhrv>VanDpaQ!g}-}{e<mCn2ZR`0hB<vhNI+6JL(<P4G+&DYFXS@0digAh z?4CC4R^JYgI5wXElNUIsh#|;sL1&Vna7xP#BA;A(PDQ!9C9hMd71?K+)}~yaF1{{L zFZamo2B+-VrWsoD+DRh$*sJ_cZs9F+g|hLOqnsp51hgcI+#G(7Elkel7Berd9@oXQ z-VU`9_vMbtom@FBsBRY!)3gs~8U9I^Ovp-w+%+w7{$7V=t!`$i?<JQ?s*f|I0Zc9P zfCej<Xx}5@?#L^2Yj>lfdk}e&yb;t=<3mivQX!h*vp3FjPN&#GUn9=q&tB7_GmBJ7 zCL<d-TPcFUv;s|MEEVV=qFgXcO(Q)hY|X-*j~N71US}PXlbJ`FfSStvjGb>l#$b?7 z)Fau7SPAH=yferk!?VoxU{e$E-?CHm&?HqNV>)UEwJC-kKP&>e7uWjU2h1ShgP5E3 z9g*CQ?ae}-B={BLYjq6oAg<Sqe|-Q=V_t25(8LHlTnsMgdRBUB9<0m?GDGxx9AR=W zc#<qq3NjOt@u?oM&pFA~M9~%CaT64wu4El}S?Cs}lSsewlZolt-c)I+4FAk3uws(8 zJpZzLG8u*C1=W0x`mB`x{Z4^G(89S5UXa%@xj>0N*yOS<dPI>vvfB%&X9O^x|8Gtq zVeK0(zH!MS8O0&Pmw0*DJ9<Mxdt0J-mOh}LR4a7)zP6lpS$D=9%VBR<;zh8*7O-1- z;UQ$K6hccd*Szo&PQ_k&EC6L&7LXba*Prp1{B2lAimHmCacJO|?OqDb+@%hah1|@^ z4l#_XYdzQ`!q=qUfYTV-%Y+3$y0o@Km(&c68Y?oj^#S<2AN@Z{R%~->R8fW3a3rCM zgZ-z*EN80`k37M43<Mq8*~(lo15-)xi{!L>VkV`xz64kD@c~N>KnB(Mlx_CfUQZQm zt9Pk#dzuU#8TQ#NWBz(@b8k?Wt(eIM%ZT}jprP<-g?P9t3Mj_qs|?UM;(&RF4X={` z{4^VyTU1tUOsNF)`E;qf=`Lgfet=j{MH@btsa)18A>0BiDbhf%^9g2HGD1#pQCYFY zh=oKEhx#Rp!Pm~Gw8%os5iu(_ox<oOsfug7$J9w0U=it+rWABJCH{)8j|+aX$?KD~ z{G?((=7VX=Nc@`ctagp#KGZ^vd*~abA+YpekzOhr*#=r1g6cppFb{Q3_1$2L)*VIe zg<l_nToatCqrQobQu5tu#U1}>hN?r2JnqpUeXhY^>svB!<uz!0+KRZ4jlxjhK{DcS z8#p`|dsz*dFpU+Vhq*1t1@lFek7xNUxQL=S=2l*{4~X)@7!*46Tg^O=gPB)V*5ohN zL*~tqs%So2DI6~gvt_-M{>tNh-LV5IzzqQeo3jFPA1l7Ue6;=rv}0d?C-(Pr<Heo9 z6aiqCX@Y!y$pVJ=-LH9&qlbdMs$@(jW5IrRS)gfe4D3dk!ev%!7t)@`UHF_(undt1 zfW(8<D060~haE>g$bb1$tt27!81j#T7dk;P56_2vaT@TE*-2{MvF79HrlA7<!ZEsI z94DNxj4f9}N+1}uTBl~XkZcMCloMVE!AEQ!elVvM7tbt#Q{$VxWLb4sB3Q0cdJ|%f z3ogMzH)yEDcE(DLMlmK*sD1oohY=V*+}>|Ly~Jo?^)augbFWLoqy}j@qhQ<VHPkYI zS<nP{v4_tlNv1%sc`A!~7okf^VQTJTBhwIXnt@n_XHD^-ow@Pr`4Y9AExMp|UmNH+ ziVVw7OqRR%E2vt}Hz)y)f*tqCc6Z%9!xLU>-E6{rHN41{JyP)W_Z%g$+r5KaZgxHr zMoejMCb@-wp(Vo~EN&@Q^@qsJT)-sTOe&JUHS(<_=}8|mim%@lj>RCJ^a+|c#sw5@ z$7_myt{_R&F1hU-@E7t_$R;-sxDTECdmuEnlY%Lh)4aDpiI3VUkhw&Ky}yw>qC>E; z2|^uf@%LtCCfMJHZg_xr5eJ+!ic}9bj9kI83TepfcypOPvk1rUm28JI8Edn-UM$uf zI}zh;;<pR|oqd+{a@Co|Q@W43WCz*oDO}0~osUuu>5V;JVFv>!%k+zm?criXz#HJ) z9gjEE!@e4DMWC(ZhwJi8@2MX6dq0uV@6DJY_5wFGGPaSo$f?NIu21IONk44lHp@pV zRVoUF8jXj70=jVJ8hWo&=9ErkuAAzN0~(Ga1>XM5^Dp29L*TLA=S9O}YOVI(+=_?7 zr0J3GF@FzmMZg4;yk5Y%E1&h+T&G`~m$i2oVZFw5*k>O1d?N;$<GXo=GlS0iVkyE+ z`fOz!pBJwp(ns~C&={83LX84dTe`uilBnrqbr6=Dhiip~Jl|Z~extIT!)l?4$!F*6 zRjD~2_P;O`2^vG!ntJv#nKvtW?|a^?@xW4W^yiM@2dZg^Z8|@d7VVu*TeQCb1;t)6 zpT7$jbymW2<+9MBm4B<sIzJ1lnbG!S`6riHN)cIX7*H~srP{d+yto+T#U{9x#QD95 za)~e@R_B7?-{8e?@VnkpKCs)4VBsYn5@>l2yFT+%<#(a=kPdhhAX;NtN!Ivb02bmc zminmn8%KlD&L*D$s>_FbCJUljYTR55U3$?V?4Ae_FkNO=#ltEb)L^_JG;RdoJBJ`h z$R|DlsGo_qNSq(7X-B4cHsr=tOpzDxrOM27lfZ;h-lm0Vy(CIY0PT?pxrqrcMzBk- zYthj_j%l)E2^mId;eOU2p%G7bXix>Xa0VaKBFa2&Tyx}w^}A1fz2kGwcM19ne_D7q zjh&dvNjdkpC2CD&mmof=L~QAELlR~D%Ld{<BJlsEXa4USh5s8bEeZ1-Rd>;^o);8< zlsv)Jq0WgqN6pV!^6<7kHwqnm@|#+$&9=Qqb}EwpMOu81pBSVGgpiUncB_A9MJKAV z0Qku`jl6N`LV*6D2m&E!egHUvcg(@L0z#`EX>X6ls?@aH#LbCT`4GBO`;0X?#=aWo zabZiy^~?s&9O8Kn-jcQSTaOA~#60M}(n0E;#VK1T@6cxjUaCHc56WF~tTPK~!KF;# zdN}w^&eI1sBDD1;S&bR)DZBtcNCu8~jni$J2=LuO6S^!Zg3+(uEW(c=lonYGpp>z2 z5Av-tV{l^W`*@5$>LBHK8D+uT%vznCbdS(Ttcdyhm**Oa_@asVp0O&01XE>Qb}M(^ z6w-sP<c6eTB=SJQS0s~_;-sM@PT|DpN2bzg=mrs$7+>d)?REu>It?^khojSED#FKX zG|m%Pd>>hsmjjg+zpg1JSmbl~=$r#4KeAXdfmwIO+_!<SxG7^i)~ow9j>7)%LUx7B zB}1lY+P8xHbsD;$Ydw<_7>15x*bpMtyD^;5{KaWqPZNVQtf9#RYL<5QSt>1mq?N|y zNTrNEhyckemT330_fx~tu;_Nqp<g8C#TJXL??n~CPBVa)=R<o&WuKxl$!k~Nq6f=( zX3nEVxm~$eA?XBNNuE$n{DQ2exJ{G9tkS#b7k4P@E=x-$<z<B^<aq!!mPszs77-qU z>^g7ce0p>mv{cAWI*Dy@hef9`DuEU};E5^JcnkwkwgO`nu>w?1ad3gF0VZ}ky`tI2 zy%lFVkeK>(_mUUWs4H-IGjC-wgk=yVOzKwBrclqY9S9q)^ge+>JTdmtJX2X;un80h ze{PekT5oz(54U;Q?H{nlG|{>xNx-NYNG<t}%DCU&eSDdAF%t+>7<zA}6IzJ&Th|Kl zVIBiKbViI4ZZTgoKxj+^2ase=6yLOR;u1+s(LMb=v_gtBzvp~qIvi{GNVPZs0~3)7 z6h(=c8zX3kk&dDT97)=S^-6EbI1z_sU&f7T74{Yn4R`d@PZzI48mvkzaT6D978_<3 z9$1o8X{qubT-S%fHha+caMQ+T-~Wih_@~C?KmQ0G084Z4%nXq(YOCV{))*0-;u3nT zQt@F^Lh|lFo$v2$i>hkG)fO<nI2(sK4t1AUjNig1U@F`9L7Pfm_Jy4JhHI494G0FG z(~s+6*_z9zbB*vmy!0^~A`}}T?r1Aq@u9K-d{MENvmKjCmFx2^g3L*++sZ&v$^YfB z|EER&zlQyPa05(ioOGN&<|ph-bZjjDCvJd=gOTk&xdA3NwtusZ_=g){VPt3cM}qPH zlpE-ah@5Xt!Cq8w&QUkMiT0S&l)&g59r}E>cWZq8z)3b%j^V8`n$~wAVnrkkg}=!w zS#=-R2_=^*{v^L_3*Fi4VY9hyytJUDW_eLKbn9yhz5n4uLv;mv$!b9m_TOqYJVYtO zN%fy__f%2}eBBedYDxhl5K_tjVj6n!-X5!&ma-2zszGZvL_%VCnjGOV`BsUR0c5Lc zRa(5V#Qm4T*_gQ%Z(;8eGhnHW6$E&&D14tD1nMT^m0MuOnI<5(9khHun@Dk=Of`*) zz0gxy2}r)>?;1HGaMyW;G%+ylK?DPLF~Cw=6DuRS4>p+<34U1Zb4F}p37>d0i0kY` zI8vA3?b&r!VM^-rTwMZ=Qq8(V)I(auez|m?Hv2u5Ko_H!_13GI%Rz!(#H+#&?o8=2 zZU-E6XfO;PQB03LoS2RRGpcXA6RwTN4qm|ob0Tm6sHj|eZ&-EBtNKD8VN(40K76J? zVk~~^-nzP*xSX`?6}+y&*;tt=(pi|#qzBjyGB+U2m_cb_f)_Da*KTqdvK>gRd*oep z+CAD}7n9{K6^}0(u<#kSVg9pNSwWtpnK-fd3A3&*v+|C#9I&C^Q$}ItZ#)))*LTIN z58A#7M2rVGLR1>WRj4r$oEmB4xKRvf-KSp+gAr`D1Wa$kDJq<iy%=S=MSeu)?2;~@ zlRUYz=FBbIf3;*!-wX1oyxPIDffC_QdUonRXp>x=TEbf+q{xtwVNLJFc!KE+Qdx3> z9mgY2D}+>UMflXJt>ckbKSp<+&~yD%C~&gp*VibGgX*h|{CQ?J?H#|KE9P1?$;tI( zg<K@;FDoq_P5F>nQmMru+IY==!k>6YOfz7TYspe2(Chj&U)U|Y;c>$K>I{NL9eH0c z*$wtAJA%41##dV^NOga$KFUg-o-TbJti|r2EtvwX+=0o>Mg~>BqWdn#B?C(JqO*9l zO*5rNBC9=AU33?jgrAt5<sq3i;lwWuBme-wa`(dm-7jO)`v?ssN#rAlOKdlAhD<FU z+&Q`E`+mT^Vw&M0a#2KCQ)=YA0X9m{&paCHw-isxx0%;>qEY)<F|ML#F#sRM<Tk@M zG*9zOtOc~+7m%C#Ck>oFaML8bpZk%1+jLusex|k4{KnA%&>u7{YUl@2QgX7`RY_Lv z9><mOD@U}Cm@B>Vb|?wbqNzuHwCi=@NMi<A??`vYgcH`Nep#>Oer`7x2w30+TV6#G z|E3ylhreD~;`UXDRRVYj6-39E_CIO^!vfYSy@iMfrPiS#ERa9=D(ROH9$fF=ReKJs zx7+(5Gf|N>VlxZObGoGf01`(3C0hGZd^l4e99JufK8UIUj*5BEW28WatOx2GZ%(^j z(G4U1<<x^@3pqlejQwiTg}!+hfG|TU0I?FB?01_$78&id%LD;Oj-fYYS)(O3&)~en zbr?f6FmXuz7r(^TUuBP%&R?Q#9oy>w&+#MAiIKMp{LF&=YsO|$W7k@9-x&l50l(Gz zNVaihWPa3=0XQ~1sMh2rH5W0=wA7YBOv&}?_8H@l6(X4tZ9;lD^1L$>eAjO^5SGPv zAfw&&S7J<Id&*lF=PpZsNN<MRUZn$xj^mSa*U^h4aB?s~iRot_fDsCkGwW|*D+gVK zfEF9radzwxJ8z2PQtOz^xBDKB$c4TdiQ|G0vLp%gumP;xCr9%R&kO8Cbw)#PmN@N6 z?}$CDL9l(kZiswv)8qUN6=Uf1!@lb#$<~-+6Id6mIZh5efqRs8E$R@SapVagOhcfJ z5E=*@9!bV$R<3fJJS3K;V!(D2MCog!fm)iZSpl*>CX2p^BP}|CN2?qE*+jf&^e48- zi>6GaUD}7SmL6YQKV)GB4{pa^_>#$Yp1k&1#rpzO`uE(Y$&M#v(M(X{R^7iZjboA^ z7Xy3Yhd8XSqx%qW){0EQ+>~jfQ&Ggj8wSW(Dd2V(CuiIawA(tF9E{ep*7f#G9DSA4 zP0G+&X3X?P3P++cAZ55GAkKeS$@UO)*uuikWNMK@Ak?y2D*l{VEx(2lN{sHhW8j## z&b(~CWMHcr0896^J!lQS?1@Rozs=R@ko33Alvfz}+`^B&E*cQ{hCHuw?LH0P{N)K{ zPB}9*R)0w@FU0Mcj1gf%B~|bhLnO@W>td|c29VoLeoC;I_|v)<FGZw2OV^aAk>j(V zFq;z07h6jL=6x&SPT3UP0iAI%X6G(9Ust;6bU+FTNjj8ya9yy525qxaTMXVk)TVQ+ zJWOZ?v0|#xRRzVDEbNB<oOVfRR^%(N%sR(0c6^JD-fjS~!mC2P^35xK7fB4#c=?Ng z()-{SvrIr$(9R_X!7A8@0Yqdk1LA@$rd+~P6X2G`%f3=H8Kjeo<t|R3g4AkV7yhoC z&UO|dtr$ET8~&gVRT2%!6ZX{Aod5Z7$|dL1m&%~AbB@{dHiN5^jKuE6G3QX*Omp)E zF9f-XMD8a|d}~8g#h>i1G^D6vHd@o7`Dp))Qjq)^=0bum9Xg5mhew-0t~a2V@5nhO zXvIM2!?q%wju$KlcT-RL4rGmJ4I5LiW@JO@-#9lc3RVw)oo1IvblJd1|A^CP35bHS zZ)HOZw9@^0Qh_VRf_`gO;s+<l_@y~I-^VRe$G1jdHWSCq1W^`ewY;jDrG8{0IW&g= zt~A`4R?v!;b3!D8!8(T$fPVi=3fSswRh_g|ljEU7$USU37yysrnA$>4=B-LE!s3)u zNWLy)D=eB&938=WxvYY%D-1Ja9%$rUkfG6k*Ja_2L5s7exQlq%3)B3t>9)Lf5&A^d zZr)55GF7C^qgIoy0D~dWokTR;QmZGYE8hf;*v1{6<rwzr+k=H1%>!g`y_`no&ulzS zwee^WTXeHO#Kd{7t9GRdKKeJrNj0wA;gnMZ)jHo2S{~x#NWJ&SPFdn+wYN?%ur+NL z?qSZCb5gVh#v&RH#GWXB+Zp!?2X{so0bW}LYE{LJa995^+lHB>2?cC}xy|smmo$_{ zgiB2H@vyGbtZ*|25MJAqE}=A*)S-?_(LIjE%`IeC>WoD`z7cx$Bd9*t7W9-MmZ+<* z{|#w%>-I+xa~!<T51ZMBAV&yVELbmD7|WT8@q%>uCt;36U}l8HUMKEldT$U+G~u<d zWDEkKEr^LrZ!{jF57=QC^fzJ7T7fGsX}GIFt7r0(3g{q<zKM}RUkdVHfbjjr>?}q? z>N15TTT6Wa=1>#scR0hpA<-g1_0)hqEXYw_hbKP^oW$D=I#JJD+})gDqXQ;K`PH#1 zX7T*#Zt>;p#HootD#iM2qvADEI4Mr7BS@4k`sxfFY>>trNzv1XU|YdCqo(lGDdi!z zsp8fd-2U6KpK%9Q10uE_e(Ru{yqjsi32^#vU)&G8Z|N*`NO=UGm-#co8OcMebeAvN zfCj>M_CO%2^<{ASqx&ec>aP)H>Y`LSN+_NJA>{|I$&m}erv1M7ydMCpcmtqFl0-Fz zQ`QllAgx_CVcJlBMD=e>f8NH6^2@#r&=xh7E^jJfxe)z>&DIQ3C;gX9VC^an3lKOw zI0)ruxEn}sE7CtzG5MA#j=S8}M<FbDu#jGV-;~W(PN4HfzaTWnUsObg*K0Es+2qnf zRhO|Z6!4SlURBeRM-H3sTdB58r&I^#C9_lEWk%HuIbo9=>6kEH1^$V=H9Fd}H{f4@ zYiO7evJ+=MK609eTmP36{C_;t{;%tLj{mBk==1OJxrh)y8RZZ`cW8uX^Qn*g3Dyvp zd9-Q)4)v6#%*`a(wsCUx<nS)Tq(E+Oat4s8$3XZ=+X*u9X0LPK>TtH}QL@jSpq!dC zGfi4n>04LdPd@k9+nD2XrE3Q55PoS-qZT|<Az*Q!#PY}zD=++MGZA|Pp(k@~=}A3) z)203WRb5O$-pP_f<NUOB6nj3MtWI|1_}~c}$F>!*dy;rgbPxcQ-GsRYN^;X2JwK}L zmzFALMg|pySTI9=`$SL_aLDn%VAPWyu?<u42ScB(7HA5h?0$JYJF%FXI(ww??{CZe zfaAp-&$X1J5<wFN)N`?Oj5DfooP&h4Mn#{y$;ahBCxJhP5=T*Q#qsi4lnj6X*3V)( zpO<*|Q-{G$4_Urc4VV_vRL&RmMYo^=Qh*)sx|gplE{)cWk)i_9%nZxP)F_)}l!>5c zL(q3qfI{^<k_926SPXHMow2%X4M4dYAd=u5K%e;zmRk0NLqVZDCrljJ7h;nS0e#U2 z)Mpm-5P&eG+#jk;<GV|sU&@8>Q9_01QW<MiTB08(@C+;wW(QXY0dt2WDTYq1$$EG% zGeMfrD4Jm#r%+59r(?<#DL+o$sq16};@rsxcZ;ezuE%V3)*7Fh`0NHzO}}ruqz@@! zcDC^5?hjpXk?13)4eQ@oEYD558KhX!&66C1e}}x`RBb=+!9`l<!ZCV`A95a-ppz(0 zTO1xL^?y<<FLt<~(v)@p?Z!IPR(Q|Wi#$^E&NZQXlaS^KlwwQWN8RY)&D_zt>_YB7 zaC~EYBKEEpkj}lK-7@?3O`pu*74_eDPZTY|QE<iriw$@cN9P0ZT!ibGbtWb+Bu$NA z4Van9D(e+LSERU^5A21YwFu}&!O3`I`LU;ttP~!Ev!=?pS|qe}UDj>ZzsR4>rJ<NT z&hxzAUpJNeuquH)prl*5VA7C`>(q`7&?oeauX(mkNOk%~GPbHXl$EclpzEkpnkf++ z(Dx_btjiXJ29GTSh5BL=!DjXc2mX;}w_A!R%U)C~IP;SBf@>U}eWe}<s(4|sKQ5V+ zFt`y8L$n|EsVMH=#dnxqk863i7tm1%zf2V&R~y;~c0|>rVTTVuI9}u+g8rAo^1t}# z{eQpiPQ`WaLrvSc3`^|w`d&(ZZ^rd)!kr+}OlS<#{qXDZqe3%XO(&Cu2o;0sy`J5D zSDH!<<8F0<fu6)&L#S1jQxPfJk(8m`?3@(<h(~k(E|5ps?asi&<oz-?5$JNvc0JVI zMP<NIN3us_kz=q=7AJI`VPUG79kRlPjy~O%Vjl`DC}24z_f9k3bsHaT|A<lJ<rTZt zw?b%%>8D}*tcu6#$4*Y4l_b6;?(-E#)Bm=QotgO6ETosU1G^Ng6vfUM1T_q)Fs!+K zNO=r8q-dq33={XOhS2#U`f#Dw9M2SIq}e|5Hj5GW_J~YS0wluqpm*otbV>@`SF>R( zFBRB+OsvBxrJZ^n-A@sxpkt`1oE1$Ag-1NwG{ll;+xRH00bN&Z{C-!_{nZl6{`W;j z4}FiZc}v0PXZ8Oe?wz_s0lFs5vTfV8ZQHhO+qSDtRh_bJ+qP}n)#sa8v--PuXS%O? z{y^Skt{oXWp7{9loBVJ9kpQOO`PLlp-3h{`-?qCEC{|c*1mRp4ozsa-rM}v=KVUGx ztd?&Q!VNDI;_{W%e$Sl@tb?V(zDXWeg&>7GqEaRlhYK207=7@-y^*n^YJemA^nDfi zyOw7gxbuDnA2pm{5r7MXtRf;CN$Eun)JNq@V0s}l<t4X<Uwgxxa@DemNG*BU93|D? z0pIP)h?__-lqV#OoH+!+W#u@@{7#dXGkQ~)+S)4~!cLV<BtI8W(vP-Ugx#3%oI(52 zBGs-I@vXDjpEmHu<{7B(-^fX(ZFanB^Yn+>I}$oBDlP1uIrn9yS#qp_ijO&2no}*t zIT_!q2}w7x1<(veA7!-Y&$j)ug#AK+1<b_YS=l8!uFH${cf$9_q5%W+0vH~R9^N%7 zy+8gl`+6!YEC=jT{m8o52F(j2_!Atu$=$@-s87B<Al4Xb$a!6iG!7iYig2cb-WSW% z>7VDMKAi}-eHnhUFCNxsRI<2V;(~4a;lO?bJ2WGwllpZnR2owHE|kYI?Y)-S%H5r& z1=*XAOOhucel=H2%e}8~i@CrvW@fENekgVII=ezO5G?mgqxD}b{Q?QGf01L}k|!+# za%PZW=NlH5HQEb|Vc+0b+}rmsX=|S5F_85U4=xcvS%j~81Ar)%S-u6=IQ6&R5+J3* zGgCzsd#vnpD&y53=lf%g0JdZDqTo(VuBX2M%s}K9={6nOc)QQC>g6|)%=rt5$_4HP zj!$GH;JuQm>wS<#jRai{RqWd$HS_YN1Zn~*f;5TPfo<!SlhP<;Mm-)`7>Yf6gU>vM z6mT-u3>E{SSqotvqB!+iO7&?KO*ue(n%h(6=VxLVyLoS7uZaAQGIC<<W4`^SKC48J zd8kX@20Q2B3u%oemPl4?M^ZMbXlwa-G~zX-^ffr0_mm=tI9Lb0yWG8e-{2o07tK2$ z@D+82Kk4BO)!{xLH$>C`GXLW21BOKqojR~`>dE86M#{FNhT%NV@AFW0mni+p8VQ=D z;s%ujvFDs{<=4;IOq)n~X6CsqIVKgmS?P7<w<uHI=VzY!NAp*iNh@m$wm>Slk@|Ac zRXw-@Wf3PEpaw<mYOjK?d8v%2<E$n%B#*V@k&^q=nZ8QGkDP>N*Rj-e=|uRY)gEct zN*OcETPyJ+0H%>-R^^D_i(4`yi2Tu|A34FFKqiIV!v@7O`E~NDuAdCjmoi*vsw=%f zs*|#rr{aD-nv|+Gw-C;V*`2})w=~k(C<5ipkGzf9bvM(d9`}%)b-xF5AKIYIV>hF# zZg7(ag5Z9tj?soebX`px2D!H8Op5afs-`a!F|MZ3Sv4BJ=~u4}vJ=h#dnnM1(S5n( zEb_XP54_!qaBRiW-`E(%oZzbH8FYPytYRE@?b)Ip`>Mj?VJK|}&%j-Px9m6cR$yk_ ze-&HPZkU+7maQ#X2c7&dVB55!N^KKGg)4RFt=Jsg4p@rvJ>rJO77GfMz%r4R<sw>j z-GHl=vL6~Z_vJrmu;Gn3RP1)?S@Z`1J6lZt0u2n*aRv5{t~G0XbwnHWJqPN<`*c`@ zr&kjAIf}8D+XdW!M}?uYn6EspzKRpUkyv3Gs($#G&!H-e-msDubHHD<2?uT!3qOiv z<#X<u>qitmz!a^sK{zM&<=C?$@QvApjB8y^G7K^?9ZBt0u)E2_>`M`v<~?3m+3YL> ze2D{T$Z7DDI5gvq6JIBt2HDtHXo1*9yd4(bv8))>j9|fhR=W5f0a)|`?v*H9TgF_i zJ^4OKVc3oB#{$5&3zq&>0D4L)&>%W>0emzMW}<8L*%JVTrm*4g+MeRSm=MqB`x;5f zSqmy=Yn+7Rs79IRL&YE&vToS3HvdTZCPj_;BU-=K`3ZeV$;f?5=9spgl>synaNStb z*amr`jB7Aq=H+X5uA@Ob$JnWotUs7-GM==MMu(gC`x&O@QXsjwuionhO6I2FCff!G zki@i^X<s;9`~IqM10WZOL?}Ww0GxoUWTmXWJ@5Q2=4YC9VV-HOBko5nuU|=$G4Px_ zC~c&DW+tY)vZnL7^wL&k@0tGBkRX{Y;`@5qsbPMVD_77>_8Y`1X3c`m?Ax!%(=*r> zg7Z)YM~-Vys8kvnYYgrr*AybC8_=QJ%pN?z$ow7w1=mUIb;Z}178B0%C3ju4CK$+s zkX(O6xrvs|<*34vZ^U+mAB=7M&xo*Y#Arb4#~fS0^p-=(LxaV{Gp`@c=<8Y@mal)J z4Pn!0Ftc`0eNX*A_80W>&M#!TVJ?u|jaOL{-pk``F|;!rlO8HX({bqj1hHqH_eU{9 z1R1;Nj2A{YZa>0N-Z01a1yO3!77ps>6kXY75}!zArqV*~C{9<Es94b%!vHxXyk@4I zqX}W4uCSroZ4cs-Be}sYDx_D>nbn{CWjZhB8Oc0O4S}E@cu4kOV2UJer_7qh2n%i) zMC^hZzMzGar0A8?8E-Dx+!IxG#x(Lh)M90TVFAY)qKedHo5}MxOlPn7ZgVk;INqAD zRG>6e0nA5r1Z4^;>z3ORwtQrPKXrRqKkY!Tp!Ni55}pycUbrM6lYxn;@BO}b<{p^& z-Y8ENDQO~rvs$N+#E3%diri@wal(hHB!3>f{?5}Jtsnrr+t<)^>+!LDvBIJ~bMv1Q zD*N{Q88gLyo!YfZ5=W-|!%e}A>N;YIcMd5Tu<~;XGTNE$W?;r_b&1e+B*IH8=(${d zI)@&DXZTT)()Hbj9?@InXc>Twq|#%_jUwq1+Sll;)Zaw7g1;CP`Bh^*Pb3!2nQPS) zuAs4TE^`>?sxH>#U*QuH6J4uZN!X=|2;93a8THm&03zL>?b|{t>N?<}6HVO>N+<)g z+bm^5`OsLkdhP@C!fg}O3*0xxiSO@J3M3_W6$bB<m;3I$z=0$>PyCcb%Flc>8mVm( z7Ej)CwDuGL?cF>Fm3c@LX5jO|BS6hH7<ZVg-Yw*x_CheoL{3vx4!()za?>}OHzaFl zWIJ0<ubf9r-W<kIT8{q#<Y~`)p#rDEr1+c~1YU?qzYXSw?)|YM*MQxu@f%Fs)EN!8 zS=G3dl(YWl$o}>E5vOHWy^^8F-e<LjszIhhFrJ`uAxcI60h9adg3c`!m|dJdHBt^P z)8d9#f3cWR!qCnk{A6r*J&31-&fGERSO*}t6U=WV-~npB5n%S2Y^g`Z%+|U)*3{xk zN5};O>AXxEtY`T%aIQH6N3v{+5IMNa7nKJb*=);z=Fa9)CQJQ!=j~3?9yRI8u{U?A zE96dT5Y(P*=dZW+{gC#59Pt0Q0Aw7TZ2vR%IvEQQR!ILjrkmbxjJv+jyg9rt^#eY@ z!&cV`2H*_0e<wt(R!!&>KGJ7RG>oEKD=u%8@W23qF_5>1f%GjCZ`p_7AK7JkbnSRU zeQ>Qq1vOZ#AY+f|=2@4v<RN>GgzFJqE<yo2%ArIayJi%9_k2s8rDJi2Mi-u3{kd60 z!HSu(A`Fu++vpaE+nB;j5?v*w*pEo>Ij|s|eZacI2-O3o9fl?uIR+e5Ux~h*f*VlQ z0F}x>#02e?;U8FRyx7kmA<oTz{0&><(D(&EXuBBuLzG2anMmm`YCVrJVRu}o*!ejb zcIu)``3B$Ti&>JwH2vAXmWAi4nU#Yk><87RQ_Ze|M6%H`)?_IDtCBr&<j&W!2ODTX zL=N~iHkYrKH;^H9h#AwJ^37H7z`zS6Ec)l-Y=qDTb)aDIJkLUg1o*v&l%k`LX*ID< zE8nZ}jX7@&{%6@^+YGkVBKC2WCw`nh-;B<d{Vthhh2xf{iS91`t-HF<C{<e7=K2yp z69P%ZTx)eNL#Yx!7hDVp6)kAwz1#8L|2_s<Of7y5A^&s@B!GkE)NlimV3q=#iVJ^K z#wGbxT-z=bWRSf^7)rnAWdSuhsOj|fm$>Xc_^kQXLfvNTBDnIkhd%ALObOuQyY7Z< zXH@1#8t&5aR0wKyd{lblc8}PRZpBwJ<=6Z4yfA&6eSX7arr96WEyMaVxEu-fQ#R<@ zid_;+?W{{!91&Fd*&`&;=ya#@SZ{jQm@8U?5;=pxCG`rGK|wI)VjCK|;@gWzU(MzR z^N=QpCJ1GNIw1~nB4HN&htn;diu1?X;5o#-V=7RD4KVEVOtpD2m_inI2fobH5~A>u zAQ6}|(rG_#%ilW!dDaWKoy{Tm%*2=?r+F(@3C%6A<IL;_ZB#u<e>?-bJ1+>Bqnz`A zoak<o>)-xs1|MXX_#+sN(}#oi$Y!B+)mur!tx{(dc26Uy2amR!J-ahb)MFh4^(OpT zb%GFOctxc*l7D*3^_;_l#iL>(f5?Y@oamD)<wuIbs)$q`Fdi20#-Y1$Op;ou=@L}$ z`DC49T}LCxmv<laS$VGGcUH;fv&i8Px{NLBf|vC*%(g8K;M`bXFwgyK>SXD9+0>}o zP$xaUYW$XPK!5wEMU3HWqFLC$7m9Is4=0J|tR`E*!W(JAF*xaY>3_V&|GiJ+|H;)e zGqBRJ5HK@x()|~r|Nk{r&&1CB-`#O$*8dBh|6lGn6B8@rfBnn-A9cs4ksDC8>cTFp zZc2A$#W`$NXiMYf7G14AK&BVx(xO`WyqEX;p0^;(V0e=T=!u^2nmzb4N(YW^-5XN2 zBol{ZA<%L_VNtRZv?kU-g?r6J`DTzr3tgzSA53oj#E^h#s!P&@oiD*!@VyCYW(U|` zhC}m90hpKWdC%C67T<*w^p7FrQN)8*^y>^0YeGqh{lu~$Dcy=8f?PxzJ+Zm4HcwN6 zL9$UB9QwVp=;q_;QW+~4Z}f)3()<HBAJ-BujO?f)&_rUJqP{F341zTu+<|97)?>Ku zL)A_f&uDgZ0|+YG5{Afr_0ammTkY%faUe>QgaJB`=Z83LdV!~A4e}*+ip6xoAHN&= z6T#p>D_e}*T#yL<GF(>gIh6$QkFaq*9NYa%c4J5zaRc_Bg+o>;F%(Lx2BZP>OD1NF zle`cH8Hi710^I<6<T~S8n(T_nEICxp&@J!5J&OT>Vv2OB5H9pvW+3s^OdI#{TSxDR z#D~w0+k;1I)ibQ_fx`C!CQ3UU7_$LIOcR~2_9~btWLr>7;~6f1^lP<ec-@_{Yl+^h znE#`R8=uwAOT-5&k49b_u=|V%nd<xna+MOlOQbf3NTPU?MiZC|M7?o`iR9$yHTS>N z=HGKrJ#CLcAro{K5%Tm<SYPURwh>yrkkKkWp)xZ^_$uI&U}awb`S}MyjjmF&!*(dv zWkZ87-Qx3N!xyN-r_|DFmFcth0mt~*CRQ2|ivp?;WUczZ7;ZEz%Xyvsc;M44Ew2b< zU7&&Y;{7XLN_beQhEqs2#x}F(HBlTYQ@`V8Sl6jHygFJ%pRX_>l7;d!DME}?#Tb=! zU6oPnc|2QzX-;%-tfLx&?VCN_nDnvNPA@V>4>oTc&s8)Ccu-~<NNY(JY?j-6;cW=x zlDJU-Og9}-BEe5TBFnYvz&=N?DVHq|uJ*t_KU&<)R)e-RGhEM>LX|0TqAl&EhsYqc zL6;EZxu5pD3eTH9;%$fz8m}B=O*wb6fqY!&jaob|ZsmssmyBgLZfyi>U?_7Gd}k+8 zgi!<&j^KuU0`DdOI(6ph)7_GO&rkuA)D_7_6t93SYM3N=g|&7_FJ%x>#R{lUp$xVK zZcS%+U^a$0JF{g2zTHc0Xh{3|_tXX92GH?oCHLc7t7kP5$83z%>?(F_Oy`;hrXbDr z3*d+54Z}jS3q_J2ly6k<?*)N#9hVZ--NQdj##ih&s$$XwxRGT&g~-pWe77}>WAU`W znXDvs{QhHIo~J8@t_@guDp_l^U4t}^ql+(p^MFyFP;c3Tu#THUWlm2ni&xYkI|(?5 zWUm%QoHOUW1_Cf;@aw4~og>ArimED+i7xx~pZbW6p&e+kt+$YA)!SnPJ4m7x9t7<R zIk%E6)(-COt=sRR0Y_R)eJx&9)E+4kW*e5q?SYOu)0=OC#ZSp-4mBv=eK$n*oFykG zQ}h&{XWys00zo&(DhH|O@@{r-Y*;a;*2p2^=7jH2i6(j)nj+!Tla=<~RYw*h?6Ddh zmie#j#YzR3DX+jzz6ZyKR!gs;eCooqWZ`vyZ29-~JfDWyj}s%lg#jTs6m7>PN>gK) zf4y}V(D}vJ@zK(u%eap;LLF0z=bUC&8bkESeBola??P?9p;`doO}2{_#FWEFvKgc! z;DPV{Oj~#pMYGv;671M}4x4+bmr}E(W6?U(Z|Vo7V0f%IM$Z$gp-Em|Kz(FCHqT&H zcSzYC|HQ`nKOmcy2~GLp+aM}DBo6bg-Q5>hzklnuR>DDeJ>5~H6;MdVSRX+VcQAF3 z;j{3~!xX&s*9Jv_i7Zr7I5@hPwHA>__EBZ!dktyTEW?;nk|AOQOH2A=F?QazHeJwm zQ0bBqGfm?MiU>RmX`sIO_pVKh6KAsS=@cNS4K0WR^E&Uq8z08^>;c`1!XCzG%D^fN zJ3I>6ql<R`o|4~F%0-HU*lK;u^6q={rB#-x1U!$=6Y~LeJnmrU)`m_{ra!$_SS@uX zwPq(I{F9rvzTGBSADSFB-tlW=)N=9&%bXYn#k#HTX*xiw!51cI&N=-c<c28`n)OO$ z2xt;kH`C9GWE_HJ8=oAjSn%~UO<9(nVtcX!^{q8SVp#O&uw92hv!S>2c?ri^-*+)m zcVZ6)z=;Ob1=SRkB3XU>?mw+39xRN=WfNLo$nd+tRs%B*IQvit1aHM4QE$g@XKj7b zQJyqTfc;dWfn}hQC?zvkA%tiYLs)~)aUXEEV5A3PhRuoJE5949a;6^da!_K`#keIw zP23alCvdJ-&3i@B1K?juz_VS;uZ+Rn@kTvsJ3p$uw}G%evK*IKa!Mprf4f%H*)f}9 z!WqSt617_t7<}rqE3%CW3G`_nfE$?d^}S|rnn%{MsOs4ea&hyv%orR`mm25sBPq~( z$t)Lw4?P_P0;;Rk)k_UX(aos+i<STWrVOmCUY}e~GV60WGs&@#GQ<oW%-*0DH~}S% za8d4><v=bVD5?45_k@CL_3lyBuh?rAe|@pO$ofcYz%b;v;rAEei#mS>x@ex6|D`4l zcGD9VJX2C@VHIJ-ykhec-M5<9O7!IX2*g+M`$O5Z+z~WH|7J(xn+qSC>mg5O4h{;z z>XTf_S@hY@C#^#~O7<y35+;g5C$HIk&-7kOQd=1L;Po4!{_|bGDN9Th5F&TlBaKpB zl23bVhUUn5Wp7^q@J~6m`A(%ziJsFmPbZ+G`^uci_j43lhqa6~(?kgeYlZG*IW|Wx zU%x>~HqK<XMoIxY8BW`{gpA)i{jD9KBBQ^%t1{MUu7`T6mR!IjS8c95Vm;`1{*m53 zKE~!d=0qw-fG4IWkvDk3i5qIOS<u*%Pw(@^HA@Z;a!Q_+cBX<SlshFAUWRY^Y)d4$ zp_(%c(%fuLUYp(<YwqPe+l;dZRF1zZM|4ucz}i#e8>a;(b{0G%Le!UbE1YraTZdzk z{G4bfRH@6KLreA;aga(8{Y9I2B&K$<U+KM#C1+@3pha%NmeJyoMx%nyHUt|T)-E|1 zSCsI)qt;B^9*{#Dn;6Xqf8k<w1&v43stXJQtdCR~4DGE}c8~;Gx4(#EuWadrV=ImQ zjZv_h_<#efv3b_z5~UAq@GxgxHylp>`AyZ+0w-@lhwV#U(SjveRI=UM?dne#3H4>k zb7hhM$;kkA8a%NP`lznw;o8x8<SO{N!v4a}r5K2O@BW_!>4EPhn+8P_#iN{3FsOfs zZh^ny;fq2}X#$7d<dpX$@}r$sUE-%w05x8@LlWMo?{l(w*lp2D?lUZk44dI3Gnm@Y zZR0gl^E0clzb(5()zliBy?(yoAGYP_V0G5Y(1T4y9tOT>0g)7~Rp|5T6YScsmsQrr z?BxGw3h{6|Z6F~mn3VmRpY;nsHYF=d&1Fo_Ye@&MYzBgm{0!^LN$m}^$Bn;%fA#`^ zX)ACKQi2iMcqQ=zoV6qKxQ@=WFQ?{abQo2jY+J(7u>XzBoA%O~fY3U_q)ipb<MJ{r z+`;Ii8C!^$MLKA78!bYaG}I-*J%G>@N2*~yx8`Zdb$MNIOYu8TWPHo5XtrhLm>CxA zK+LX=Iun#moAp)?xk!nWuq6>^*Jd*J`H$oHe-+gIuifnb-ad6@*`_<WxIHL{vG9J? zEKsW9E!RCP?$h3GCk-G&-d}8dUn4FxixE0Vx{9%ACvGcdZ#(m830Q-}zt1{TR|teS zHGbiy%_^Bez|(njUa5(ah8C%2ZcQL7P)Brm%%wpJ067UpuP0-FlA(5lV}W(~>W2ot zg8{05Kq$eQ_ec4_CBQMgYp}LKA9GLh9b~}%0FlyK(JQzuP3&eg`zmBSn%6KD8)~U0 zXu-AcelZTIVjq!4M>2M+|G-DJPj!k%H(vh|()kfm4?^dX01Va)d-Y<DVb&^^=Ff<4 z`#D|#LwmFlrBs|Txq3v%Y0802;W#}ZQenypMPj9qFDi*Y)BV{w)0BDNgj%ycF^#R< zU9$F$=fIocI$>+EP2#_fYk*tcLi^g)kcOA$R<Yn!<xM=zCIx76hc(`M9SQ6WxloMI zCry2%p-70NP>JKDX<RH1mBfW<+h5?=`Rym$ivbufIiPTx4Yq|P+k+zSI?`}`aUh28 z06JSKxXZOFqU3wW4fQuE8UMTEjNVFC-vzclMWDk(y{mX~`^4GV@anF9S{*!7N{Nf! zHIjU1<2{qlH(&?0pd4suUPY{?P}c1bahzloA8u5(zS`el!W)NHclYTbetLeSLrqXP z(*{^=<<C;dk_qbvFMO7h(7SMlD<M?=6W&&A-X8lE$DEEf<^DD$SZA}+sd4`NIghM& zAi#jN6%#h__C=}>csy-E%1oU#GRUa%g~y$)pls|M+s}qnpRWYcsgjnz9546DQ}_+3 zR7Rw*l%Ajs8XS4x5tArVxRWl1Dr3=dulvqg^QGeDp|#tZXDWTOJp&2IEVELYC|j38 z-XJRD`}qPnt<!*mE8IS!DA_2Mef>)}BvP`SGOQ4aAE#J6)9_-Tqlxa-yA+-sYI08O z)!<z2h9YoH)8H1o0-k^G+lIQsa-3z|QtnyA6`5Ttv_*v_eA7=gPFkR_@oJMCD095= z$|ZncjzPTZ(9_rZ+zM8^XO+WHPr;Kvjc=gCf|xA>ab4t$lHZVj#l5wsHs}sjH?gSp zQE3%$Mx61}Jh1|`wt@d3Ul#22HZ^0cXD?W^Minqvx_#S8wnlfsW;U9OZN2cFMa=C( zgfZ{&tV$l&j>pPYlZ%{H2Ub2TfI){zD0e8pz-cSWPa-M($7}oFD4ze*?dIg5W8@@Y zW@7*U7SS9m|82#bg^}gIob&%%L^Ck{*K_cHR7CGk<E6`}B$TjhNE^2nxbtC{TIV~) zbiqfw)Y{8v?6;&uGN*w@-ta(-J9pwTcI-s+{xF^qLv!L7L-2+y|L&N%RX%T!Ar~MY zjNn)MPi||3Zz{-6{BF;#wl$);QD$ygmKLv|A)KkBv5Zur<IoLH#LR+p)2AB^lM-VC zT88P2KrkVmSQE%S)=l|9skHlvG$msVtN==P+I)7)@xHRa<ibT6H`8{u5I1pop(|_N zWcbMLz83>bXWwCFLS6SI#{ta<nF}a}KZaFz+jPnZ$3#$lCUJSPzr6F$zzpk)hVEz1 zC&)3kuaoQz`DLtfy!aPw8&K>alRMYJ>;pWX_KosKNNuV&^qg|Z0S4U<lfLU=4d+*I zZ3l0)Z3H5TnItgsb=2MfhC*oAtD<aY-oMLj2Aa=VL8=_B{R(!Ixsil3$tc)^dL6SE zgY!JQE^Su4ZzN5HuFMwMO))A?s`$;ixNo3#05jIJT_Vx;+|{wkW#SU-rL3e(S#EHP z`F=DK<!kD<kQjRwy&@!th;8MmmH2qF-Avw8umlvb%}iDdIsS1>Rp6P9;XPS_Zhc(^ zC9P`?L@H9y_a6ri?!hQ*z}hhpx%I-cXUz356{eo#-b#(Hu1-h+hcIUa&UNQ0c<S?3 zuq}dL0I?sbngCFRU44>P)%7F4R0SG1MHU1yOaptC&NLEe#;{(5Yx(F!R1FGCA~XeC z9#b(i*u_M@SM2r@T>$H&g;4Cs;+q<LhuQ-+qPEX5MtrNWHgVyfK|FMnhQQnZ%IwD? zKCvqQ3@6+l_hS6w_6CnR_3+ll$1$xvVuzF%U8vZ;X$`(r-Vu;@<_CQ;2V^%isqg+0 z-u5tr>ys+(c1jSEqT5?UJEWI04i4WXmlS~)2g0YC8@Xu4a8`+~2{f=4R|{Ja+e>`` ziq;%xGE@0D1W8NoiSrlAw+@)9z0K8cF>5_snTE!TFv9N<<|Zj<T+<;Gn2a9sg*PlQ ziz;;=Zm`eUa7}~T_V+AI8Iz0s%YB0)3V#k+w}?*VY~R?Um1YDbqMNH4KM#zAy;SiP z2pbe}wTa}UNPh=;3TyGNo}QH00~1^Rz8kDkoD`R&HZd0%DKK4FYi+|^`8OSDl6X67 z%b2$|F7-Cs!a2~ep?3X_;-@@FLSKj=SHtD_EM3P;>??XhPj@L0tloapK}{}$#9WTc zr;7B1JeFU2EyRZ?fsP}tJUXk(%jX{wDOwYxH`t`P^pXviCPSTfM*F&ctvD6}q^(Wh z<n?lU)gx_{Yp|Cn%@hte(A9P}1*ZH|E4BqQ8nag-Jdcz_p0S<Nom(2{xVOE4?9T(< zAlCV{kQ%D3Vvmb9NwJ4e)v9^91SDDrm1@PWwV}Fj0!DcPNiJe?$fAI%Ikuz(-x|sM zqHL}*@M*c@zU^jQk(_dkE#Z)wUf3;`;G}tb;FewG!wA1zTCIDX9kJ~){X4Q-cx={# z#6ih*YtclXH@Uco6X$P8bx&^PQEJ$;jdf)f+BM?lnrW0bf9!W_X*0CWH@w0T6tJ$$ zK{ng6{{ZjRP&T+?07Cv6-|B*UaraB1Tq}6!!R^C<Labd4Wr|?N-D$Zw@&*P%epYxK z^3#vMOh>-qJm7}kK0b;Xw9vbJ<rmGqS+HVLd_&IU08lfy3?ft4N0T?$WcX73Xmj@< zy_pic@$(AgilUq7pVdb?hu%*t@MZHSUa#(!D;^!#I^bISy$Fm2z@M8^=OP<bBWh|+ ze6;;HtAB`fbHq<BK~i6|3V}i}ZdiR}>f!6_3_sK!_{mWW?d4~FKQ!!09Sk*{_V@r| zx|93JkUJy1g#bUSH=6{@)H(ZXv0jkBepWyuyy-6HN0L0b84aEIG@4~G-v*Hns1`px zouR?|+;`zcWM_p*v!?yNspY@4Lt56AhpbUbDn>t#14Qe7;Unz+e4&!@zQ4%ctT4_% z%HokTClK_A^*hb>rejQeuA((B+bdn~(UErn#K_XCm?KIvy$J>us#{f;NOUuQ3?;k! zrGl+nfnxZDVqhu6oMhr3$_oBsEo-JC3`O+V?7gHW{<YWB>twkjDarI*Nd2ZW%5Uyo zvQRe~7pn;MO`nX{E)n*e5Vv9*#}Ghw4n}lT&3xcTTHjrN4YJe2fRgck+on;R0V;ER zV(tmk7e#57rh&S%ahFv6wfC8Gs?`9Dl1+DZ%SV>v04t(>Oc@A)7N&~OA<d0g4y(^B zy1=YV%L3QI9lSnOx70=CbuN#i-@a~ZDYA9=@d2;N63y|rlh4dOzbXW@oc2pLNU!Kp z3|bA027(<hCn$)~_rKFvxfmtBC6>dgah<g8<k+QekR`z?%d}FHvxkG)T<xq7Ts^31 zf54wdxNlRS#f=h9J4YNKy0saiN)*QU>t|w^6_b;A<0m!00xMLqTs1;1O_8KRN?Z$j zT!_FqLkZA<6X+uJ%tArD7Zwd*p4mQ&W_mFT#6o&jGq7G?KJdEhmN$+;Kh2lm);~IO zAkO|Nx$rQj8mwOpV}LG7MizOAzkBjgaAl6hDB4}(G~npaIQ`5p8jg!@&|%o^zTk7R zqPO&+dQ`687JRy^I(Jpo1cI7kOX4g~*TXyg<#Y*m@^<=hqACS3*1tM0L*|#r+}LpX zk0{9B5B0CnQv_EO@6!8OiU{+r3FUHRdYkGVLtpfR0-yjP_bwp~t7AuV>^9Val(t*y z<SjPP*s*YK%)q+YbrbPq(YKI1V2E^HEV8N{GvYU-V<PNWCJQ(5ivujE)L_F%-=8!$ z`@66?k$OQ!p)q-D);q;rq?CVImXvaJK=|%VG`IV#&EvvS8^1VH=;w|FTK@{nEOFk- z<4(Uci8xbA{-J9<q#bdQR%(*Rb>Vk%_@!G{gQ#8X`$|t&Re_ao{&^osxpPy~yTA{R z==OMt{Vjh<zBTDl>$)%(isI@C&+Wl@j1&xJJaiTdyHc!|l)cMKC34}DLePhlpb;Ev zax)XMRX>YyUlx%UUWvB3kJ1R&$%C>xa!-sF)fG*0MdMxCa~J5&fM-2!P@X1Ps%UGY zdv$l1b$AxWc$4|fN7pL+kqa@@wGX6G&LApvH+s{FBa}Acrf}n6<lk?lBNA3okcL+M zp%4UgB?<j-O}r)NtG{Z5=d1T%{DaS%H}+-tK!}7iQ@v*OWy>Urq%>1G<xe#;tC<pe zbD*!vz!*_Bj6Q;>kw^6)g6jK0DpbSAh&xz(C6m_FOov#v5a!X+Qf8y}0kH-(xLBrw zjdB{yy(@+Rn+V0k<SN!PCiib55Zt)ugnSaMF;!X&sAZnszZ%}E?-Wm|^8EMlVv8b4 z-Xa;5V5TEmS3Pco%3X}{N4&6?e<^osu4k8)iwj(rh^JYK1(*&D5lYs-cC2Jv70hlk ziyLujC`$e_=G2~48A8T2#u+iSLRs3*=BIJNEP7g$efOw<)!?r7eY5<F0xGv0ONDII zk+0dQSFURe2W+vz1bXy%^q);d{1qi9M%9UBE*;9>&bt@lIl$&CeARdr;#AT1a#4`J z^X<|EWO$1VK{FAw<0;|AA>TU%5BBo&zaUxq#h56*47O1$&CH$9dCsv;RGMpdd&<~W zn<vnH^Uy_tp4+ukgn55?=jAy~rj9lsUY(ZlS-rPTPS~oPo^xyKw&A!gcgk2Z+M+B& z1(lw<vE`%wqX)+MU-S0=T6F(+E4wizv^?eScie-KPIghSq$Su>$j4Q!1o|>>=heb? zPmGkv(Z5<CD<%-A6a2c8i-4ilawuCx((8W>rbj(H(`p4TMQ|qGiwVB;vR@p8*Wj(0 zOsQPqV5P=-swfy1Ij!gob&b&gyn-+~OjkzdKsy%thC;Hxe03X|*dv|qDK|ma$`&%Z zfX;I6FvXuVM#+L?n_bhE;Q_6r)SIB$mKb?u_BImX{d)mzZ=pc=!U@X?0+rVrKT&pD z6}gNke_jpS4WVH--(WI|NjD-O%rMIEBVc!&K*u^Cr_)138jd=9xE@Nt-y?|La+H7e zx<PNRjXDa*MdxGLw`M<H_4V|{HHELM{oI{+5u|_%kDH0#4}kNZ$X}}CQF^iB&N#C} zwU8TObU4vlU#!ZBzm%mz=J&y~!k&W68&=b=Qq)D<R>fTVH{8aJ``}vKO&31gJ(mqq zN(771%<_hcDH`lg1@b06mL@WhMHg@S2lOdN5ioGYWPKxxsvjykf=AO|)|jp4iI;w( z19PcDdhzLDSVeo*KK*U|lM_6ek7Pl0$`1ty+)oGUWIDq2RpM1wGu4IL7X~;NOjcTn zwigUS=X)m-4q-nBf-DN0OWVT7OA9pc14<;t!e%oJE7DujZOEtvF-7k>YPMy7%&0zv z6=pc6ZdX;Rt0-2>Bc60HF0MG*pWxjE5s@U_lSJ_z#<(BMXA1(ElV{hcC3{1R-?Bi( zv938e2k6Ep32v_qji-}|9COR2l|25q-<VJ31@bVMeZE0D{~WV?9lS-Zq41l<rd<j@ zxjAAsScf<CbU&&hrk&&zd~W-3HUu0yv(haYxU^n!-0cfoEeCndC-$(Wj{>hr<VZJ< zw{g|tghzG=Koz15w**Ga)CFX3sxCrPl!0z{D03Rn&%WgxJc?9Q67!8Fo!;R(&&={h zCS-yu>sNeC*veEYwHHeJOO?1=YT&hdAsby09V4S1YO#}#25QE82ddT;djk2+uG{nA z{jN<X%Cb|@)JElF3xm3E;aYNWL^v2$W8~7n+foR1(ordJMXp?7TP}>UBrRR8{GHdJ zYn<NV6B~897Z}ZEOssefCsPNH^hGva+x}$moR<pr<^xw%gqQHX3G?={pw^=$a=kka zgJfJ7+2=-1RF@+#oHJZ3)SY4x3Q8NJn2QwR8rKGq+(!COBAoL-A>x_-H$^zxf8)b5 z{r@e(i*uedljF~1e%_MzhZ+Gq;a~lIn671BZb{Sn@h1yAAAcG5?si#BJeY10E-4D} zs+`KN#e1<}iu50E;0TX@#9AEQo9LB0JxH}@XsCDKAy#ImKiR&BJ7=kvaU+)zUB!x? zq@?~)3?_L%P~~jqQ+9+cgC{KX_08co$nTLlRPB!#ayApz{Q(yO7w|0W)lU}2j{qK$ zxrO_E6HYZ7!*kv?@YWX$la;o2H^yxvx-@(Xh&%lUD}g1;BqpXyRsD1ilo*F-uFiSZ zLIF?3A$P3G72it7!cK7lV|-u%S?UU&2<RF(P&5C=dd>m>{05)*#~CB>y?wq<@JT-0 zSG>W6c9$-D()Pn&8-VVEq_KfB{K-SRA>VJ%h`t$B50een8;ju7x`Uhvi)}>Pr8Q^x z<C!q#<>442EQnDRL6#NbyziPcf;?vvH?#nal_#aZMC6JelNCZ5Ie$dLOLUCoUi_-B zycO^PjUYFO1DJ=`IZ6nqIwQEor`T<hKS5-&EYtuAw+sj!-J~x_N2e9J>AXZNk#{<v z4+Y^(6y+9VV>@BEyt6|wI(TV)!=Us0J^KeuB9@*5IPZpZ9+9n)w-R$@ntkv+fH}86 zm(tF><2pO+(Ws~qr*X{1xmOw!!<(sL)eo!5#Cnl=-7=Oi=+V@ce!qJ*BlG2NN4fUu zB(z8=!_#WqkD)>gS8adEBX<%R$+>M2R9U9yG99ryV4rY1FlI@gvth_CK`9j`A!fZT z%_hD{N6_8c;LRqv5a?wcEy<P&&N48Eb2_@8z7=H6phdy%OuzVVqgD7pZ6SXEjw8eB zj0xZXKLJH$`4hPpf+2xt7b`w}gW<C-hS^&&TppRYlLfBVYn-!abO|Y#W?ErU7Iu5~ zZFdJMVr%Eqq^i)Ln<}tW+WDlZ1N^r?<Oob60R`8RrVOVGw&Y4GUAwdPadcSMuv@&& zNk&~Ig$^6*gW}eKZteFFWlr*E#JHlINtQ*cX`-1-0(i}Rr?w)nXAn|Hf6*-gUunyv zvJEtZ0R2(iIL#<%9P=>HZDd5DOR>A{CRG!Z46+Is{$4C-gi4fHD%VfSV4G<#ovXpJ z9P?EKdh2{C7$FyEcTLmnC`-7C5a4kVB%WplR<vX>|2r54tn;3!rf{rS#wuMKusSf7 zu=#Z*tvFc71wmE2@K<;$hTf0MceahGqQ4o>&=2PED**@E4KG{TPdBn<1?b=Ucwpre zT>};tj3xJ2kVF4nzgtgMf{G$ynfIeEhG%<_=Y({3!1@qm5!zb><w3%T@eVF|A7aGa zZPuLBdI848e0>@^l0|TpBOL<7ML*NssumgQy${ibYHk;h{?yNTwtJ_%(t&cJc>f!P z7idGAb$Mo^6t+2YxbB=gd_q;`C`=07o-_k0aTh87j2@D4tZjTB9T?Y?GwSgBDI0!4 z*fuUHydSVZfV~Rn#R`hK*mIUeSU%`v*Tz;l!US$zy^17%<~xAGqFwf%m@o_<y+vj4 zV9T+K!p6j&#6p|OUSnaE9XoueX-dMLM-6x=r4XO#TubfV>ShlI#A?Va2Pg$Uox-M( zz?l^!@ScAif{Nq8=zn6;_?wz>Su=_s3+N^zsVhSBVEVnF&=+Ktw(8$xVZF?;uyYUw zzCZZ3Ziru?K=!tDRC94x_Itblm8!-36=Qge<|J-0d9k=(5IX`RD`PPURa$C~OtrAc z&O|>L<p*UZn~ZGEuDd!4?Zbr5b9_a83FiL%lA@~?lXK2YwQD<hrwpZL!nQO^e6P(y z!AwwX!eu3wti!#$kr!}?Ij(A}45XC@MZj5=*FXK;_t0NWbQ`qQ_bAPDxfpnrHEwBI zesuu1)LbFS+LAch1-h<*MxAkz;7QGkM+o*IlmxifMnaz2cFn-*lZo23d0eS-ha%IC zK^TEq(AmLt1S9C=)j0lz?1rlD*={<~^-b$Q@d?_g5hm~!zK!(%6Gaqy53>!1PCEX+ zdglo>@nO>aS}Cjx7BK0SXogz1%OtYOkc5Ci|0OaFC%ncnwW3J+LJ?51E{u*xoBJs^ z_pz;l?{6*QlR0dY<M;9PrVQ4Jr?1IQAtYvUG!AjSRi{#w>!}7UQeg$$M#xk}eV{~0 zIp-hu7Uo`(&H20efJff8wbuabdlP$0Z-K8h9EaDiEOT_ycTGj-Xilq#CK;-Cl1w6d z2Gi5%BU+}SIEit3<D$y|C1*1k@Mkf@Bpk*rTVyQ0-0{h-dwTejWSt-zocruYM}ivo z+Ch#}|IHRtb>}vNL~AB>YFB2IaPW3;Jq8v*2uMRUh|sT6k)bY`ldlHC%R&<xRZ6dP z9%GM+Y^;$;CS~Mtb9X(-m=@{fFSMUBo6|A~B)@~6g@!;N!iJCsCmF88acGAL?`eC` z_OP}`1P9qUHGQC)zP(=teW1ZRO6*NSg(!ri$BoVH8s9as5!`x~K(#u^B}M<=guMw- zq6Os^;~;<aZzMA4Z4hRprd??bD+-yTMrjh8{xS2D_1`f9Ps0K7`G;-2t74EQ<4Zr6 zy8u#<!Lu}a{_nPVQJh=uKh`n}j=9+~cE78`!yExr`Z8P5F6X`6MUt@XscT|U8wg4L z;da?rF2bc#L)$dppXy85;ZM0T?V!U~V^=<?3c|G#H32(olabIG!8Ra&m6p2_J_#W# z{0X9ETDu@de^^BSGKTKSZbeRl?C%*y1x-8{r&%Apx+$ch2(BYH`4o4w?sTh?4<x8` z12Oqs*+$teJPeF*jw_ZlwzES9@6VpV5SMwbKUh1}%tADlr2!T%yKctEvif2Bd=iM* ze)Zo~8!PhOOFh0QReAf1Et|@?uoN7M>7D<<Ag<$_cgG{P{#Sp&Z%s-RLUONNH~x2) zv}O{Vv_>fHjr+~aDo<Y|kklIE>BC-<j|5I8)^Bz7wHgt{yII<JE?-rTuGU7R08<Ts zG;Xt26(-*04gen26Wm`T`31+$H?Ei6j?~QoHyKD~5WxE2&Y^<S^$q!i<_eJa#N#xu z!gW-8I}8w|04t%i1e}IZ*t)mcH`qIcaMBD@aTgmkiX7EzZ*t+DsIy*0$A&4Pts2Rf z<sO^=g5?-_HD*Be4shEvgo-j~i`km8x^cEt=7%EJ*6{}Uf^qms%Nf9gzC)cLhx*AK z&*)y6u@~kN79gL1Oj46WK2>HU@QC;Wdl9%&70{L?o=uF)?0L*TOM700@+Uo*BzI^O z$-H!xvtX-@Pe|UfBGF|ZoSd<e^$qtKlr62Kjte`+v*6pZn9R166vE<7fm)+bPFAUK z2%Vwb5tF4x2)T`v!ZAzoO7F~#BGlYv=oyn*4;x9dV9LNNEKP>UtTAOruFCasGr$?H z&L*?sph_k9sLf;boK~tbLGz~*y@s)Jux0KNNHaVfBk|6sBPRH@TC`m@kk(Ub8`2Az z-I*Pcqjd?HW;=6K(L<|=6*4|lenYVY&X50j16;a~Bsqb`(c`Zc5&^2BJS62J6HefU z46xn&2Xt8ic%#F|_@?<g@elt7J)zfqN%sm2t57DT!>oX7F_}F3i#8mk{09C3!44@J zGMoG73Mxh>j$vVW37VZ2HM-FX57K!iz^rYN5@Z9TgE=c)s&#Q%$Q<7Q&{>Y}h_=F< z?9?;8QWLDw=QnT^f^h%N)sw@2oYw!hcx;S}jBFhLbAwz~C_{Oe`cXn(*`vTZo%!i& zm-F6Q-{qCy1&+_PrVZ8nj@bsBP3~)GN}I8AyukfrTtu+06+V%()(qxOTapnK%r%O7 z?yhU=GsGo|LZ*#4fEN#2S&UOW3LQsaB2M#|WuFqruon65MYmLb3}3v@9|T>r9}OkN z8!(NNG9nZP{zKpXvO8P_nWk%+lo<m?u1{K+vp4bAM=;v;8uqF#I}&vLZF{QIdZecl zFwKu<%VK?G1QXB}tRJrdvT@64sk51SPlCJW^hfP3PeL_1zYE$QRP@!fzf|JW_%muT z^rhmHdI%}B&a58iftAJhJAGgm(9<B~y3T9Sh271mX6X6^I|G%aY5^^r?Cn7r?IVTk zM=7bz^=l0Xgp>y?&+fU06cSMrxxcc6!s`w+e@Qt(Q?_A$pkDCnuxq*J&LSCkCp*gQ zdMVS@I@y_c5SFjn|DgoeV!Dp{YkUkBX&Bb|)qNxp2-dF*0Rqc`>d$-=2QLvt0JmN3 z88IHjp)9V=$0vV+&FvkbY?)8py*;Jj@^5?OOifHcn(Rl$Z)7pm(ZI9J!S3mNR5m!s z-CQ}W<3<<D;f-WTlb?bH%nM%bb-k2#XU~sgxx}&in|Wxj)v^&E-(l5n3y0A1bpzh; zl1+>Bk)9!pcGl0u+?@EjxnKgfLwN+?x+Ds+h3vT$grK0_X5{);$!IfBPlknaFCDE^ zyo-r_D&Q*uj%#0bxcq5QV0C*Jw@m4KUzc^EjBSK94x_3n+8_(bEQDRkB)dbku*m~r zqC=sd`7R42HeENbg4-EyJx`~{;qcA$1<UAg7Vj0a`GwM@@2q&jSakf^6G(^mFL=$I zy%bnscQCC={luF-zR<x=vp&|X6}ds>->)LY`ehC6L!Nz_U*IgNc?EF#*^MaVR!z)` zd++3sLXhM7=W7dX0T&nPDtU1zUjx`g>1tzotko3)3OtEMhd>>;?61dG2hXQc{0*6P zJDZEVi2EE591{RphaVfP6ha3B{O|Y>_8ufrm?fT5Sz5JiqaqPuNAi~6eb*4NeJR{b z4sjDC?U8SVe(Mh9v??MDv5iI&c4&_;ui{iSZD{73EM)7P>YlD(+vJ|4Px(_#ii6!w zWdx~AV5FTMGQJ<tgMs|kw#bWaxX=^4^W4U7j!b9XZMAxR=qTK!I1XQlAOZz{+rR|a zJjQ6fJ#;Kexqv>XcDSdWWIn<c=_+e~eYPKyAHC_{`NzS}_UO{j?V{c2xKJtIbIU~= zf2cca%3h8#nuJuk;G0=fKLC1=m;|gZti89qnLY;RMugG7%q;5tE)-j?GwKMwQe=MF zviBdsz6N)hnz9k^tj#)hES9H?j~_9haRnp;Qs~zcC|}I^+w!tC$cI{hy3+XDx{{FV z6V#=e49DZ88|Tj4+Uj3%Pc-yO{Ktfu8GT+Bx#6cZebSbW{A`<p5lCZ(IPPw3N#P^U ztF(fQj1+6^NHadDu-`)&4y5oFb3$}y1|@I1gxmspRqn}G68&Y966*c6)_s<+kYJ(n zI*U{=5A#-lu4?DjB25zms5$_!Y^`R%uu1j~=ClpRT$1(7S}(gU^`1V8PN<LpQom(^ z7a79J(>tUH*>=>RsLL)|Eo*CoKN_HYQjy6+%Ve^0mJ^DM)Axk*b$L1+L8x9mFOBeB zB=zj4j(8Q0Zg`+<q8zKqYCFkmkS^Fdg2(4QEo4SzExZCjAS@J_0~M{UaV5Ql#-#E} z9}qRUYzWwfV}#@*d!mb0<%QRzo=7fQC?=3{0JN{)*neN)e<%SQWSn%VJ|Lc6^{Prn zS^$#)P+;;p?<Nc`wzW&ZP5~Eprgwx;T)qxx{CZ(i?smudm`F=ErtCoH`2(i-ZVvZ+ zc`DCI6J<2Bt+`C$;<C}qdAnFRG>|Umutg}#t^J0o={Ce7leB%A5~PT&Xy`d=S8pb^ zo|uqPj=1hSmPEK9q{14mlZ+{~mD;Q5GcDp<O6LSLc_=9xb_UPC+YHYW(<69N;BLd6 zWG%i@Ei)eOWl0w7w0is18&fUxPyAHy&pk#qJbfX9yyD!13WVVtqpuAjsk*tp2~LYw zt@@I;S8Xs%&&_td9Qe^koiBZ;w|e^(P!dRk8OeVC>d^;}nL@b`pt#7-K_Xw(fOtkf zV3~zz-<^wRxw*+uoDXazR+W7cjz)OYIx=(ZPr|W9`Q2eMaZmDY;oBp3c%c=mG)(Fo z0R<>&8C*{ghpl=u<)yQ_!a70lE8rJCZiG!oPhb#L6VIdBE{P7Oe2)d)_qy#P9m0w` z1&C0B$_LYQCfFY#P7d>to<*-k(*veKsGwXt2K6VKWvQawS;&To@#oP_a7Wmq&SPrL zx(kxIcFMvYL&P_aS-<v`EN~-{EiQm5VjYChr%%8iY>NuK+g6`V#cN>bY^2?~n3Q^1 zwJcX#8ALCNFZp!GJ=JPi5ckwRMAlEk7op^TKE3YprOgRK=`57gG*^f<GQ^s&Y_!63 zvY$jAi4=0bMRUOKI*2dWJ)M?-MdZWJTR%0{iRcF8$Td}M1JJ7<CJx7EAWzr{kVf?X zxy2K{5zsD>Ox*Sxt!Bq*hoMKW=yf~!XvFipo$bBSFp3+ACnr8dphGuKZ#$RM2m#dH z?6@wa?KzvSy~*&qKQm#kB#Mo)6e{z2ds63#qNzO}*k`-$08C$Pgm;W^K=K`;8z^oM zLw@NK)eknv<xk`gnbya32&UIhuU9>`YF#PdH_OmNXsa#7m&EM9PD+8WRwL96#O{5x z5=SF5x}G&MkxF{2qrZcuS2f1^Y*H}f8bso=h(ltz6P+`8+Xs~PwKoy=?*@HCP}_0c z#VV`8<a>Clu7eRM@uTAnmdT8_)5VLOaT_KJukkMc!v=qJvt#IEGmuIZyhtp!=`^OV zww-RezioMmW>%|Xsaw2u?iTG%sVt;(>?sMJ>mA)3I6UuWm&Ntk*uveCFbEm()p|&6 z%)BNdBkARH2GytB=04Q7=B62OrAZf(Yzq}f^}iL|g49~M{_!rTPlj$U8=_!~hUta` zSnu{FGv+l!;bxuq8kl2<i_c}l7ez0WIC{YzxQJRPm!H|E*nli+&dC=v9vvLMR45cy zW6%b!X-pRt_-+Mx(*le3VR7wvIni~)1+|CQ_7M^!41d#SUTkC-r;tPEJec4r-p40+ z7yl+}sJP05cRX1)#xK;I3mAY<%FwxUnNMgkIOl6mobRIY{II6)ujY4+hd(217+?31 zpGoeAb<2EJJt?&<|NHz<LgLRVkr;|Kjc#~XYlBuC6Fl^GU12LeWl~~J(h(EGLpFH7 zpBdtQ*8PW%9lI}Wzt0Pm4SwK8!LFipqVu*1@~BwsHxtA=$!x95jb4ps4uIlL1ydqh z?e$YvB6*(j{V~=q8@HbC`Y_U;F5}rRZ!WLnSCW2m`-;8XHKA+z909}PVG1phQ~|)= zL`}a{Yst-ly?-dKULv^;MA8;~&sz;vB?6=RSpu6Iw^Y@HlY37Q_n{m|zOlQhB`0L; zkn|ShmI5|z2cZ>+H@bu0L$@?SkIJS#%Osh3oIaPy9V-QY1K7)zAFh7fsBYk*#1Ggo z#tCD%IL88ZP36n;>LJlI$2yDf+6Hd-<W2+uq{`|;W67{=SOY(#6AUg`3HOqKllpWz z-OZ`d$MO;*-HikUjn>LayD`Y!8!~^Mm0C-1rruf46b?;vr8EQQ@8o;tw+*hlup4&f zM=E535c*+$#+l8n1X{!N=?M*jy&mFWt|p3H-?rIV`lKd0c)@J%qJUIyeQ1J_X6;BQ zT@8SBU#wVubPn5~IXo1x1-1Dt`v0KooVs&SqHP=7wr$(Vif!Arzi`F2lNH;xZQHi3 zv)}H0IOji9YgIMp7`<yd)j7l1utZ56l_SKuwDY$JL3<L8qk)B*w%=Mn2{Ojio@kAK z$|{uhgJ0g;3%HNVpio9Oq1;kBvXgiOacvkg8m$FH!TG07VWa8V3glOa7&pgp5bWWe z+)6C$a*R0!`HS9=b^jS<$K5Ia+KhHVZFK8URK<jyTWz?R_hT>jWUH1jtWf)^4d1oh zKfs&xkNA%5K>>-==BS!H<5~)=U7jna&7!HX`QvPto<dABlPo$s_B{RL5eN)Q=;4y0 zB%YK3zEZR>yi&lQyc7vWYdZGuT@3p~VA?BB#(5(Tl#=~?@QSi<L|*RIrEJenRTlPH zCL-=;fdmHxGD^|VJ;BxFUfT@}s~gJ@i?2q@0>35ZRvco>a+-bm5#b4Ko@zbkf1gll zDmMcp*(S+PdnGQD$6#V;>WM$2Fe>M`3xTB9tl-pOkB(!o<qm83Z8#KzanWm<nb-19 zJ6F}GHv9Td1A5#Wk@8!G!{BL3*5-HdV%(lD(M)%?aYrf*agz76cVa5|Ckn-?P7jwk zl9GpqinoUxQODGVtibSxK)^+dC{N~u1=vN&C!zHmEe|h$Nr=_ZIgcbim{M}6p@hHD z`8T1E4qoHt1e}-!sK6$^w(VoxNu|%%!j97W?D_%dwmat?r*hHTAQqxWe2Ed!WJp4q z;ak`fxHJfpIkOL-B^q9p_P_INy;?iZc*OBGXoJe|pNShf6O&aztadX<1vwxJTCv0- zLquHI*LDYB2L2LCYkJ+BzDdsai6h-^i&ri{Le~RCUG}Abc+^=6GC5sKqS?Ljqh1t@ zbN|Eguah9vO(e(m5aPJkk#jH1Z`J2WSphY$lpp2R8a$P2@0i?)($lBbm9N)-R@5Ni zVx#2*1qVOW0&TaKpy#5vkmi)ZgD<@3h9X1n^iGXO)7}i3Z2WMYHz`zF;5S$?wb^~# zj|I|Q$5rIZu|0>q8{Y*O*N#+@6-TG9eml2tcQ?<Qy$XWOYuCUz`TJgn(L5eX+ce02 z`a0k;D-jym{qC-5wsxH{V22F>unvmif}0i@y_CTDgX*-#Wc-~cy*VO!u|v;Udn=Kd zXR?02`B^8mrg{JBe5X_hNP?!#4t^?TVjmPWM%>(fHW+B{i(Wg@v=_fJPrawdtHpl? z5&K#jk+XgLSDH}<0d`&VIraq*y-DLI0bNc^96BWMbq=J>i2ju+wq~yCXx?%P^o~~T z3La{Ru$Quayn`O<Z667n_OI0`ut|;`IPmFuOQ-aU)=w=LSpFhn+LO);YuU3reuNYG z2L&69UL+pIi5p91e%7!+e9`Q%tK+~<903RrB^xgLI|~^PEPZbx$knRcEjppqN{)Pg zsu%TNg>X*gBRt@#(r8p>hTh9C`UAXnY$N`u<_Ri_^^t9Zqa;dgV9@R^V<H$>`ieKw zbVG^PjIefB5}XlU;tRSCdP@m2K)3Tb7EP^%##}Sv!d%#YPnp!T<0z1)QBD7G)P=I- zL6bcD7Srcm-+6RKHc<1P<W7%@i>NW^20d)QrN}CR$$5|U*4U4}xWx|WhPj&D)5TfD z4}GObz?|i-8yZDZj!MY}rl<Pu#AVwlSNSr9jFUl|35W7;=b>!=3wHq2JN|Q@6dJRy zq;1--(qK+nz0?(xcPKyEWhNrsD@=W5DKXWU-$`R(${RRK{A3bWCQQdQ1iW3Z=jZod z=2yRX`4!g+rzpdRI)bYCs()wUI}ygY7}@=t2n%=t+RX3+Gb0^_gZ%mby|B-M`wO7h zbG6FbSkxhL2*0%*fw|oOEH4v;DU)-$GAeQk$<(mRFH$Q3gG61#aC<h>pCxu=>Dr30 z+V$esGF5N^T9+}qO+69i+0)f$-Kl5<DF#Zme}_MtpmG$`{d5bZGd&+nvj>scb?q&5 zN@m@Myysh*jKclv)3t>#M^HB_jYK;QL^6c4Fp@7AV?(ySa#buM3kN^<9fpuDlz&7t zEC={>3tW^HJH<l<LAYl9y1C~>E`4Z3`ltN!HK|I=kTMyFizz=ZT(C}-6~<f|#ZUIV zh&(swHMtO|XIh4Ckev@D-jq=9CprZ<ek%#_ZPl)qGi~24EPvFY?vC5K)D??N`H}^^ z`-5JFDTi-`iv1Nz;Rrm`Hz-Cp=efRPz3E>ZhO&c@)&lHaAx`=sm^);j6@(i-RVL9x zkRa{`1`OK3JR1knKnQshP7*jPZRAM!TEe0U>zIiPW<R~qo7<q?WazpnfZe#=n$CA* zz~u~m8yxEaWXE{I1r3;9=kTB}4GN3w2NQ7sDvQ945{qG`pkvhGW-bh=E(5YiPS)wC zaVqK*BgXDjIXT?g#b|yvA_8YUH(1@(w9c{gVX5K#d1k-=X3*ZIa;e$s|9tdJk^?VI zDPJQc>^tI{&e2jd7~0tBU&ng5=ZRn!)k{6QYpm&XbtdUpY8Fkdq)b~(N`#81jOY`k zsN7Llm;8ixmF~5EuzRqymm)RI270!582}HHnaISIns_$S1eLxzxB6j2Cu`rqe_%gj zaA&0nM$$8)kxe-9l^DF27B-IPh)t{F8sHld?7EXMuV3Uar16=ZRzkXlkEtTMG$Ntt z%3Uv@f-F9CJ5DmbMoaqLma=oyxwKr<W-YD2r)>*v$Z>l*F5FdY&wQ$;p8Y}NqqAzI z&^dLXAcvre60}QW-pUMUat#lIXnAFrBSaHI4kjyyz02B><3Mf$OHGrK1<qnVbtwyx z$Z|8e_5bv2{1Td_s(Afodq()kFQT|QVOVmR#hHC&dnK@ZX(-pYLU@&`;?LRAEKD0x z<lw9qb`A1uZE)K#+{zHhWmdjYRwT;vekf5$&pagq>sJ6XqZbDamq1UF$CphTCOC_! zTK{+eHhC}kl7>nT!r;77#kV9f1@WzLhn|g{jML#{0ak+Es3U9En}3{-7vw2CVYnv{ z%oQvIVhr$Q*qx_0H_s3n#{(|}8)|J+4%Yt^_ATHJVT)^8zk|TnjFi_U`{z5Fb(352 z;SMMj0=K+Ec)2Xc={Pl<GjmISu1ASR)&3#~shiJNCErA_G&)4<c}A(av%~E|bnL*P zM3WeSuTyJlAb;zJswW1uKdysC%ZYN;Kv3y3NbpGBu$Zbi^%Fuzv86`b0g`olvxa)5 zSh<7U##Yj=XoEI9IdV9PZTd=x`1VyCx(`r=Zx|l=477`dQ}zvs<{^nP%$8b8ALPIP zu;rH5bM8hP?&;nQ6e9?rj^F?*r`pGhaf)lO$w2lH_BmyISwpSl$s~=yi@^)Z)7`4M zT5u{S)W2U6CEfq(fZb%C;e=EAQVFnUR26SCfou1YJmbs4=hI+v^PHUw1*shV7n`i1 z;q|oki|^%vO1x`PCBLJ!Z$WW>Oo3v5#vz_m!rWHgcy-!?pnpdeCHp#wi_wudsyzx7 z`e&>neT8A5j8^O{D%?q>&X*5@ws)Wu1sjcmx^=DFP50O~TU_Pdpwy0n%vEItF4HnJ zU2CR*D~0)4V-AuF`7EzjS_*9Q{8%q`LXpp!?H<;IP-5>)W?%~z40&ax+^8d?ex(Z^ zYBA9!8k3U|j3>M?^x@mfCNW$u)&e(O^=tfGZ`2Ds1Rh_K<H|A1EKnptz`E!8w`rC( z3Ab1qwN*~tr`#Kg=$1}k7fc~yqQt`)21)PMJ~GsxFu#t<XfO|R*qR%fC3IuIH$nK- zT8Z_NoV%l+^7t7mf0AUS7aa2flyZxfHB4>@@<g7{_T%s9alpRKQbrEh2XB{csK!ba zqJ{6GnoYQtXpP2GxYx(kP!e-rDz3xLIeT3g^39+o2tBNOR6v+|oEDNscBs=qTw9d~ zQkBE7j6O!{=X6(}w?;GrT{B3{bibYxcnPN-t};ZB)+{&hE}a#&Fd+oWx+)qI-vm(L zsF_n+iwwl7fkV}Dzsyb!OKe*mB~r&C#+QL(W*HM6LYtJK5`V1Ybx{AFbGE~tIVWtS zIar#48%Z^`#kgknasDH)9|N2_>p}nDUOvwAs5`bFuOk}+SZ9A8=X8_U7QMi3xQz>1 zJELT{EOoUh7N-a0-JFa8Xa~2_NH6NVuzv}uT!V@Bit+ASG}j0bNph*?t8{g?%I8@r z1Rr?2nnc7-0lA6?dRaZoy_E7~Ohd;25}93g8~8p16g;4Y>tqYD<$lJ>KFI{!bfL|^ z2W%n7=wm)@Zd66NfI*x@6{Uq;^Z%H<Uc6zc-mUi-e%+0p;P`CiS6<l0i~M@i;+<?L zqT#2Xn|dh*5QE4J>WmZ)A%gdxda3Ns6r<oHS(#Q|^@+_@;EM&3RSwz<@}SfG!abIt zSgNHpQ<wHN)}~Ce#e#1)NV<$LZNm&I^0Re5+LSD8pJ7o@m8I9b%JiyWBJ>ddl$yKb zZ&5notC+sOXSwU83a}s$N}=->H_$rNxFAQ6-edn$s==sUz|EK~(L6$g))F1+Oa`|~ zQMF2=78lY%kPA0usK1fAG0FJq6f14-o$JT$q}|V%+%?B4q*`5CnL=z-{;?nkY^|oY zY<duCTxI{ydE5c47gni<mDl1-d(Snzc6`FGp_zO5q#%&aNT0|=KNs=D21)CB^w+TZ zaCo?l27SFWgfi`(VMM3aV`evE_QI&P9bpyVgNY+0fZGRWM~rLEQXT1I%-d03MPa|u zmZ-b4TmLqS!Nxt}J;$=jqV)(B&u)*B41}baMVV2)cbLnm7iX3U9V$V|P3JDpwkpX) zNb>ISgCLpFDe!X9POS`YG=<n7HfyBR6j_XG8-J~QZ6i`@xy!4p6cMSZ#x7ywiSX7r ztO)p9a^zoXW=~iY*cvaa&TNlI@dRqi$B;Xf&J*M>h~5Cho56*1`_H?&QN;qsBnJI* zOroGd8FUSk0^i1?s?$LspV_nQ4A@Vj&$k@<bCw&+mpB|HG`D9VFDG=>h)X@;{9ECz z0=Wf=kX(F7`_g%CL#dXvHG&ya*4@wUuO-^zDAdF9w2%y;G^_&%0=9XjaVB*;@VGeS zb$9O8+zFdg$AUHhfq|V7xXrLY?=`BgLLbm2)JpsxcEKLIO`?Pz4GJ~h=g$C~e5t|i ztrU;Yz~(&eGAu|3y`r{a|3_UF#$=ySV|4lhyy2>g_5|}QiqQoBFSH@5iJ~R!4+i;) zxbfwd{ygaB1W5-ar-SH~E|AycRGeewR^LBz46y*-<NeJw@SY0WDQK}C>U+pk=~38b zzw$~9D4MvN*&wnnG(oDkn$1LRu>4pmyS2C{|L2RQfMIae^V)lP1>~ocO21<z2e#^f zJJ5tetw31<n6n3@Y8dKar2Sh`7M0q&YGc@}I9B$?c;Xu-j-J!HyRb9umW$*hRhI8d zl9pNk2fC{A=0DjP!GC4R3A`Uw-Sl@vGeNlFQ+*cTt<hf?1%T`PkLa7`@Y&0PKyWS{ zk_{Jq+&_g35W&ib8LFzMM2L6twEjd7Jr*9_=(bMyrcBShG<`Ma)bv3G<3L*LKLB{^ z!AFa>WaZXxKzE^aw`3XmpSDDsmadv=+C-$_+|hHF6<4B`2f;cC@Sq@EtjyjskA_%# z=Ed|4nUp#z2K`piSXV$aiKNiA7Ibz*1U*)HN79;wg*k?d==Aj5j7=`^OH;ny{a#ni z@+DrfUfjmG)CmSc#%EWX_l^sw_V>{b_SAc{e-pS-DMyjuecR|WuUgPJOY7l!o=X&5 z3VnAF5#0^0LFC?rsLMLQUCG6+Yxq$WwXh6zOc++f&%FtWU(o(hsfTEnmSmw`(6+o3 zDaMbohv6-I!1&n1p~6MCl*zXS{vBB}D-SXJ{OCjDbqJ5jVu(1@o*_!;`+;vK#W(KQ ztn;}_CIK;Uatq$SV9#&6%r(B8P4z=1{sBtnSLbK~p5Tt|;x{na0+O9>qHY`wI12ob zP$=+((or!%01}5lQ_nDH4}1#(w_eX7^vDm$C2@P^LdxOwSFSbh@!yrPI(_Q;ScQ^{ zdzNLbL#)d@236vo-#`3ZeqINR^7r+njXId0_`MHG<6oX$cX%^A?0B;*y_DG9R~%1= z7a%h*SY$XM=aK*T;<19<#R^Xjx{Vb!t7)O5;zL`6z$gw(CRaW1Gth#qv4D*@1uG|b zb;KAdy(>Pp3<mTiL}9!^5G?X2Eo1C<=LYq-Q&F+V#2d-hmeSL_z2R5HH66hD02_JO z^WZsUN5Z*ydg>*?I3U8>Y~eR;Qc)*Pur^nPx<yIrg9>V2{nMEk8f@O{iY;z!xo-#I zy5RCUF!zTHVpXqYX%+XbI^Narn}ryA<bH>_vkJ*7t?iO-p;b!$121KST|FViNSJPa zD_7~9!w%Anz}@P@?m#Wa>>?eP=5IJ00lA9cAB-?sn0WR>Dk*beR%Hz6B%Gvl8pNc~ zdF_I77IrP=acc!Lz)<Occ|Neor*ckfJ=v(2H4B@&o2~RwCVx>oQ}Jyq>M}vN#sC<~ z_v~M$xGX<bI*CMeZxz&6gF8o1jsDRJ74$=9lOWq$gmEH2U@ofy{@#XC4L-<1L*P;< z5)qG$6gZDa@X$T1P2LQ|qYZIfl2T@TFU)>CWH!}LJY46FUO@zT<smk7T}&~i9tIy^ z<#}bdt}BqAikIR3U!6>+pf>0G(*j&vnNI`60lt4&SUDvC>gP_2)OFiG>>N8_*@%b) z;9nfP=Yml9zq*=maC(R(DAf5r9aiH1EpV)BsPFc2Z-LV}$JAExxl8oiZJJ@pAi>Kb zLF*|PeA+gNKM;Q^x4$4Yl9dkoZKwLD+JV=g;^@z)*v|+^wp8fZ+G%*d???BfhftjE zN)Te6Cf*Ux*$?JqsJ@!2+qAuXyV%MV*xhvd!M<toCA?g?h5L`V5);=vkG-7nYkx>k zL5$XMdD!!%JR_x?Paxg$IXY)HsChp$2yV3wM8?w6%n|+pk-r^aiL9RThgT2E$PQkH zryhf{X*^U~*Ufh+RpM@MqF1Pv=kF&a|54h|OM`H#l?ieo(4a*Kxk+>gF?uXr6MZ-& zTI5_Msu_qG=8H54D`qoOQE9|Z_VTA9>zhJ3WUQ8aRHZ$(1*vVb4nk^aBGWAD3Fh_V zM(9nJcv>l8U%Kf~F}afYZ<l?qoMLC~&qiP{PCGG;vwXcoX9+Id=p^lhbtY7efkaT+ zz<53ixM-3v8eR-4nxG({;#DxNzUv*xp~c5R_0ZI0I#yaZ^W~Mrc9JmSpB%XhG8_Dp zlgvt#vm1^}eA&oOOqJ;PBP54ZV7IFc4AgeQXd_6U07}CVaJgFK0G>d0WoL4C6E%L< zM4G2-;a~la;2EJs9n|KQkFoF)RO=ZQYeWeJk5Wgmah&VDd4>=__3vOATha?vGTt32 zsoHel^iGXo>=4GfYAMAD<NN*z#iT3ebIP`_jFG!H5dUC%fXjLMMZhH^!LHvv_D#)M z@|1Vm%wM|L#@{0T!d@BS$Pc+}kRKwWPRkZbMPaRkH&<L3r)Jg_oSE~<uPQ)Y_1q{b zNdAa&B2ZEkqJi~g(}r3_WwA1C8oWxoWzVn>oaT^wS?vdxmq{J>+z-%kf2o=`!m0oX z+dp6Jx5X*Ob6?=|)pNcI^hJjX76JjSz9d}b)f#pICr-~ozkrQ!Q{e0>lDRG6jcAkV zv9X~as^8V@X<hXbELMaH0uD_{9p^GeljA(#@671_6?9M4=g@n<B(>%Y-OJ`L@!+_l zeA1D|3SD4iP*Qf&V-?FL{pkEETKBj3k$+j{6C3OhNOeSIPOk2IFONKwf1+ow{^AYe z6NWuxJoEG_OyX(S(qrmsUc_whKx1knqFC(l*0w9p#%4prbVi+3+;x%jlv!u2hgjVq z#|8H61S_uEkA_sr#0Dq*xAZ@&1_>B@Z&KuNxmQs;91Rn<NJWCpmNq43#Nw9A-Z;zE zx7N-3(!gu5yZK2j);~Q8E+NY7DZS3zoSB1Wb)8C4w==Da`u6&}*w<JCD!CWmi7nSd z794mMaMt?AuvjYZRJ#0x84xp8;aU;C1hf+&d;iM&!}b$2^LT0*q=tFn9mpK}GniuU z)t}HEfx?vj^SVIa1*e(Fnod{WyGdP_j?w+x;}Q4+?Z`CXG0N8EiSW(afzHB}>|&k~ zAE>ag9S)SYzOFehLyB_ktzzPWa!(@Ii)abM(uu0uz4jl2cX*ZVwxpItv9w(275lcP ztKh*Bsnx*{)S#WEG*2`qlklx~+|mXe&210eKAtye<ZB)TO+Jt!+;kym4@BP<Tn4tJ zG{fxoA_iKpw><85Ye;L(-=_ElBKW{b%U!XQ!8y6k-p-9606&psMk`=y=?<LRq(dgj z81hi@fEOmBIlQ;0rv{?k_cG3JNDExUn+CI|Ov|O*zxdyUWQP4$fC9C=p<Oo4xPap1 z)A7Jq52~s+MuH6byjT&s7aE+TesZmK{A>zmi3Eo$<)=Qa3gx-nWjHFbHRWnQb^;zN zGy`#Wc*Lrqst7h?9%qBrBKK}6ykHBs!tx#jqjv1Vkz$d52HkkPko7ku7GBj%4<AY7 z=`u1fLSa6TrkIDq_NRaizlP6b(?%GwgLGC@wf6nT@%ktQo`6!?`9%&c-hYi*9o1(Y zto?rwAy8u<T7SgPs5~ZBhtVr*dkO|h?}x=c6DIfy*DGsOFC(->c?lu?cs5`BuiTF| zoPt%$Gec2&NIi-p<1(2qy|E8T^}tZ$EotRi-O-U(wLmEf`s|o1XO{0Yb<P&e5RH+G z3pI7$e@tgqq$W>9RHrJ1*~6*ZlsKB%KsMbKN)Rxb75v|;GVX(L2&@p^!1gTZJs&6n z_EzE5^K<8&U({&U8-kuYR`K7stcjzzFYS5%OD)XmNpy>wO$04@H<4+P;7bT&{$Whx z<^tJyz5T`V+F>D8SQNu$A7M9ue{KtG#M~C|u)(znxKx0{VSyD7q|E-Jy}l|?y}+vV z<1{{erK4l6NomKnc^RH(qix)2e1rh2PlQqD>CpkdH2j@-@rmUMfh2ZB-f+s$QdGH- zqzHg7M%$f>^T4L8_?iaMCu6JxdN{@MHjnc!_?p29GnK3bW7B0k$M;c;k16ZcwG3_z zUXH)@=(>M1>1I^upbSVOqp8lB-_#@_;#e^k?1fi008JzqCyX+9y&K_NKFJ{<kdlXR ztH@8ruM~5;^f)l41~GrdtHBS)5k~lK^~PUkfK9lo(Vn||sb<N~ax>Vr%j<IK;)jU9 z$w(kCpm&J1Ds~>2HkyrHJrqpbXl@1LeCNTT4;;qvy$KkX7eT682qd(jXK}C|g4{!4 zwkFX~XaF|e=hhG|&AtB_E+v8SE!uq;Q%gwo87|*4ls~cJ?^4oeWMgTsjZjt~`)R9s zxSE>3@DHkX7_o6F?EF$-B4oNWB7|sEU<fi5v^4za`wT!#=fFbD^bC4%;T@(LHhIx! zutS#izx6aYdjCgv4qF;`5>+KC;J=LHJ&oFwP=+^{5Go{%u`xM}LwE@5Ruf}ieRK{i z)UL_AghhX6Fn<^o+f@TCoyouQ$`9`Bo_hqbeulHMDYM<%CUxbN$Cjy`<)+y(pH*|o z<8`OaOG?289CWI9eNzA_2AHNTayaMHlD&={XOaA69Lf^ZLri_bFRd5G@}!-CeZ$er z&LL=!l6SC5hfM+QwQZR&*a~&2!plBV{_|8dfUNklV%l0Q+^=aqF5avSd%dKGGU^0R z8)Ae&E7b?OAzii~6Rjn4PXY<n<vUzsyXsjf>Nn~S<7B%yH;N|97mW9V?a}gc<9XzK zesQsFApbf7$8zVhwZdfhOLoVz_SRQ>FG|`9w#bop{@cz<3)p4<R-SPi3`&bTmu>p- zX&|@^%?efC2XF7lB+RuP37b%D8y98U38I>Xeg&BL3MmZ4a>}y$d`)kNPCCR8DoM=e zZSl*(^fYKtz-dMqGGV7V{lo-`Qxo_Mf0q550ks|zor?=MyCvO4z#dlE>H+YI5=sq+ zg&xj*hiOt79t+sC)OrD0C?>^3`a-=6n_#L^v8dSGjh+~Lj|p(k0yD*e+2*myXmP_S zh-(Y5no1%2WBV87rgMZ%e4ui#ZhX(MNkgHaKPE(>Or8fVn-IQI0Vb+w>5aYbv4TvI z2jlChmPQPgVC@nOA|#{WWiR!Qdm{lhlzbk-lje*YZ82q#A>>5d(SZeUZx{#sUDh`} z8$uj$vqW-Gt^1$%y|9sqKMO=4GkhWKx=)V$ycavFWaX0*opI;Roe`Xbft<`($y4?@ z<51P8FhdASy@(Y<6K1nz#45f~LGrMSAOVPw6iLqIGmeOw41`@ys>&wqHF6F8Tg8$~ z0A0JOe)qp&CA}@F%WgiaOh_K%(uD_$ouVg&910yxPvYTmC4J#rKQz6r=jOGLzzsiL z*REq%?HcvM7@mu*cNyA<q}1^3`V=RJ``hnBQi<C;eUNwiw;%5`BUwMx`6Dw>!8mr< zrYEd;&@if&DxnOR83w*J=3l#*L%Q?E1UJqPzejyTG1T$<^p$VvtQgR$ES&r$vDy^} z@GB`o`gRf8T`xkHsykfCH+-&VM49VCDA*&|^bBe+rpvoGq;-cTRa80%t(AeCFCsXj zPaW_?XQJu@L;`@?s1O$*S7q%ceGn<~Nth9FY)JeKDTcL3&<!7^>3zZnRao@R$KhCX z%j5JTYjzrv{+xkgp)=bUu7%z6w`uXhWXXk3Ong4ytoazwm||I+HRITN&zp{xHhefB zKl7GT3r+1s{tIjjMrVVNs1;Z3DaP78Hr0bQY<vy|yqT!w5c~=#JukG8;^J4K4t;wg z_vP#ycr9RzElAWPR0{v7CC%b4F%<(s3;H>^_Z(1abk`Iq;JbO{9Vu7vt&(2;(NgKU zj1gzjDlyjl@>5m83CjCQF79HSO;)&L^y0fd_?cm>Oq2(o{lWZF<47BEW(_bB^%(HW zzxHl=^I>pD(QzJuCwvMA*hMS&9iRVe(D(l{u>RjHS#EZAmj9RYH9xEOD8EpEU>+FN zlxnFmS{gT+kGf36IL@b+0fCz*un_(%uTVWkp6+*iunw(e6%jLJrq(u3UV2q3c2`Ks znSsr$yE3;gdZfQW1ZbSt<+g>S<fa^dWFSI^?Ftkhh6bVH(LLp~Im6AlrTL7f)e;VE z-~iOx+)4dMy+2pK)dZq^vLq+y6Uk6d11jnxA}b{`T6&~mPWdgxP}S6&0wI-%aY^V@ zW>pM!jt&m+d5iuUQC^n|3R?rZBR~QB`+1@`v+@xw+gs^?l;njxC#Su(IoL{ggRMJp z2fg&evE4W}^Iqm}S46VOOe&_fIeHjinr96@va-YNpK#|hwDOht$N_HW<EObon!huI z<@0`2&26Z{&Ch){KyqQ&)W)?b!n)jBbIpH`{w{xYfJ5G`mh);)f0r9}M}!vlb7ht0 zEI%7d-zDIwuI?}+@4U0_k!=-7gd8x@tir%X$EJ>Pw&(10P(m4@`8io$cC<AC>w`!v z%%JSnSEt;?(z}@JX@|l8mD4iQXk_u({qC;d7@&q0j%PQcE@YX>fOpqEC^@2n*^S8B z5|Zzt%1NPq^UV8!hy8Ph?a5{a3eJc__w_&p^+3!4@)11fq`R*lLrBc!9!#q{v(Aca zMz&F(1aURtcmLc_b}GAf)<9cPtCEL+o9@k?o^72r-&Nm=tO9)5%~Gjozt-(RC%9?D z&ET4sszAzhYab-vZuIt7k61YLQ}00>t+E{WY-Y}#qkeQw34baX`x=|ntv>;e=8o?0 z$SaywUm0G3Y4uSG?7wSNaAqm&r^4{Bk5enFBh$J(i3`ipJtOQ!!d{IR<rYbGD-E}u zsjT6z+EPl~nvQUL^0gW;+scCMX~NfdP>VDz5*#)D@v-p8w7sPHT}J$M0$%1553?j5 zTz$BQ$4UBEI2j_aLm5CN&T@8Sm0jw0fsa9yX&w|<CODnCW<^u|1&>!i!dK{GwHGJ* z()o)2v#g<4Q)1YEW)`=yvRP4Lb@p=!TLqE5W%f23Ovm6D{dZNb=A*yx#um=Z@AZKV zTNt+0T=0thAno|?MUCin@5GD4+o)nNB?JVn$JEdCn7<~IM-N<f*Pz3!M>1T2vY?<& zjHrsVMi}u?w~6A4^NXx9eLW9FTdmYr@TWm|pOuUu*N<<B%if)<f&>@}tXo~W{Dg1( z0iTTu2w!;Jx<aT}Ka?ne{rfd1RxYGAF>VV|^JtxKiVc*8r;8H2L)4<DQzSjd!G^g! zIz$rCGlN~&+*jq{+!LImcC)G;QCs`-(?c+21$t5GNto31i9pB2Oxw2fykPEQN3PLR zpTRC?e{R7h-9wp93<dC)qrz(=NQdz>lv{7FA2b+3iOME&CnR&wJb9J25AZn{@zI8~ znj1&YI0fBTe{~?1QKT6yv=;`G>$CugXPz#D!Ul-~Uap{dpi@hz9iXxJM-g_`bEtT8 z7?_-v#q;glPyl-QoMD&IxWR|Ylmx}OD}=#J=JzbgMRERDCSGW8FEXpI&}aFV1xs)7 z#9T!CBmeH4QR|kEge3-nIl?v-nb(q<Q!Tc9VbimA4Z5R~ymZ9!dpC1?2Iw$#o&MMF z#xFKKj7Q%|;mVDFP|-ZbRh*Wdmn&oXJe>|kdPPFeZ9XoyZNuFP<0)|p63sNX0WM@+ zH3l?jrJmIJ%)HSt%nC9EtQK7&7wc|6VuEdJA1fY>#x6Y)SM^d=JWr)u{fv5{0O9vW zaS1ef?A!$l<7T5uoO>)d>U2(U0%kqi@seROU!SZ*@N$#z8i>Doh#pv9dB<T^!5#$U zipT(*8BU{<{btCHAHM#Ri~f?dU;B1^+`{~ME78)0T<DigOi3zzRP{l*spOa;&J(WN zgrvg(M1}X+7VyaVy(Wz}jrJ329FMnlog*ctizZdvjV!?w$uXvz*_t+j!c<a)xqfUw zk2s_x=(Vjt$$M&!DYMQ;xB|C<op~P1c$A{wWggNq4~Z{9q&AGOlAlCC%o2DH#vY;u zhG7GxH#6FDdc$2~wG<hOz=v1|snnt#=8AH0{*wZ_c>RJ~C&?XQTyMX4`!gH**FX_T zV329vAm(-$`V|-qXG}f!eeiO#VXRlMKdFmr1mV!p+7YK{hF{Ae<0LTz@B<d?Gp=x? z<uoXiZNTHm2+;-2YJF>(^?*>kyrS|!<9`Rb%y$HvWx_cW73vmz-Lb94y=RLXo04dq zzcK2paGG&=Rds3;ndmh^peZ|!ti>MUjk_Oyx`1J36K5QYWsBDVA0S;+0-T=EEl~I{ zWo948{`!~XN9ES<Ax{l;h{Rcm0;D**bETy%PnaWCnzBEaI|_djQw;YvqFM{9;3oSS z`*c5WH(un?tW&#s8S)Yfio<VF_{!nI$)cvgsYSzf8S0q>-lE7fc9-PR*}=V($zXt~ z0-j?7r%kUKHtfmv%k@OM?7Y^$6$2UV3s#Zeed&bnFc238oni+TRj1lWJPqHS-Z-(j z6hPaZl+COA{^$)3Plf&Z<J^sz(r8mx^6w8?D$_2d0mMF7zd*%vQT3T|(?cbWV)_vB zSDcQoQ%FO~wEl1(&)^-(S5L1`%NfAPOek$y2EJ+ynWwOj&*M$P571QjhY!(a5_N=q z{!4_51ZRyL*n98<@ylSkD4uCMJ>w_%ckc=lRiyzn+25^sp&xFcc6sBs^P$Ct$(h48 z@M=W@03MmSBxRjn4J&~KFWN98cO91V3|sO`9UAg7b}IcOQ6Jz4Ar=Gu?FSZi6I|)2 zC|-yC2&{SR5;D$hZC*!v3_D%KdEk){cSL(_FOA~uyWN*MFx8cg?3?=h8iKl`Ras41 z(!=0r6R#Aqa!cJDU4wr%`b$d{{UBrg5auk2$QAZ8`d^R&NknqOy)_L6@}P6uDKS}g zzV7izvT;*P3%mF5MUL-Haa_*-zM@g5=P<<$M3%!7s7iN~FF>Fq5~-#wBoi?DTVTW> zpu&L}?c~HIt$?_5gU^JMFZv>M-d;sPdi){@KgMUy%Fx2b_rdBh2guDOmT~Y1Ja#>^ zz3U2)`-3aiPB<f7J{Y}~skTff>-4}s3TXY3zD*oMa~c+{>g4x5$~RPVXD)>3$z91= zWjF>%m4@Be9DUv+xA}z;fGCR!kcf{93|G~2jH!Jd<Y_0vHSGz!>?U-0A<&d8TSiH% z%&%y&)%YO7kLG`v$M2?bRoDz2tiwF%p$?sBs*E<Nh553&`vApLXH*juU}{PD-$>BL z9x&{$o4bh)S2gT+!<qHvT(_EHbs5xdub*sI^u7SAWS-7$lT|l|(aTf0!0(`8eM<z* zxs|04S9$~55?qyl9Bo}jyh8Pf7=AJQW8^qjjB%zLjDjV`>|QJLx4uw?3!Za{pNZz9 z7fDX`J0SWUNrLK(e7WT+_xxkr3OBob!mW)-)#f^G4~kkBv%T}i#u#xZkn0UfPLkgp zq;AnpA$NU-;p4NG8UbDV9E{JPVC`~*9e-<Pq@;R15FPhW1ANOc2D{+3Dyya|xK#qZ zCWl!#R*9?4XU5m~-v4!siSQ^!4R(9IYeRvkMejwLI=rFj4!k+^!OLaNeGN|7Ar?cx zd<+4{>UuWz^WisBy)Z<<B(-k>qQ}KsCYzrexV43rRYX+AhEqO%c=4R;hZfWJ!c6!v zKBG}6%DW*VE4U_T=EsOsK0AENa0gx<gfK`V{1%52qHeR-;9+V6t*Rvu<;=0QsTmyk zwKsWe0)R@_=4CHG-`0nE#tu;zzc0x&#=6!+Do}V43^uleI4NZyk|74xI|Vl}O2WiR zcF3iZpQnc^T#%<0<d^03EB8^X<sOZzouiIeGGf_Tg$!^j5m^_`aJ3q_^pTjkLuM2M zrw}HR>5zBMBP158{d52Bp*8rdhaK`8>Ke;=;aIgGV)QkTY@Mh>9B~xNvx;m3nyD)S z_wlmBEbCFobr6P4baYxZhH@k&q?yQO$*UP@AXGRKBlFV0e35;5xAWq(jW*~pk9~W_ zf-ZAZKSofQwI6wR>1y`zTL*;+)^Vm-{wfT60fBNFiV?FfLXZ{9qs)<RG8dDF8RZ&} zf#wstaTYLgPB_X#p}r{mqav}jSlV7?W!KxNpalPpVbCwoWIZd-2tjWtsLv2yFfrZ5 zuct1@Oe^)2)k<M*4V<l`?Ia4z(aq4RBBj<7kEA`7SKP~%$x@Ebfyp3gKKtsCcOOzn zOfUx%s;7(*;2dGd^UsFy0lTGmgG16l;W=YB*ZjI>bSjU;afPSqPV3dLt23Oc?MX`K zzDWlR3DMc$PiW!R$nLTch0A?TB{T))z`#$<@uqG<2>Y<!arVz|K6@)2C>|dC^y0d! z6#`~n&ZDMi6lLU+ORwev)z_6c7DNa1jLdw3snxA)9ifg6lz?$WR)SbG^G9S+ivw}1 zGSn?FKu^fSvmr$#Q&L$9eB-B@Oa_DQC4_?wP~8ls;}afV8%~b)51pz1kN|!acVXRl z)WPj#o&JonT_*C~BXqMYWv%?$Bj-3SH$CG-E#*HYm6jXFNJc%A+aQ+DSJqyCZ}5u- zoezD@yz*z}=QEUv-N$JiD`DX_G)camBta<a_EDvMlekuqSs6@)7Q8l6bH$2S3xU7> zeHI3i?#0g%ePdA!hwUFvunKCehMx7JOYr0usTp%Iw4VS&Oi8;saqL>evUh}Mh<lX- zrx+AtySq8a%HWWNYM;{Ya9TKt=Zdh^c>;v`?J4gegOw?_0=pee)?{bO)#JoD1}iaL z&*ZCud{Nc)q^BLSs?yD<_jQ&qn_~~-&b>&=2&&bd01&@Qvp93la)Oky0^V2k0-QJV zJ;&%D25>#X%~!+*wcs8FPWvjS-C6q>sw)F&u1<p(`X(}<ms%@*PqkT=`mOISmUhY` z)i5Et9@SW!ra)%<#30u+t!u(Iy|XFuaijFO=5EQiBRm3l!ds|wHp_-1=G16o%G;bT z4wJFo+wHbdW-yM*=)YlBSn~&^GkeL{1GqX-5pal6_!#vcK{!8V^ku*7nd30wVuokF z#WmE&#V`;vAaIKvh-y)B2huAlaOOWt9ahr&U|5%3A|AA{K8w`M2!)N%Kz8mt=|%Kk z*e0unXn1x6sRAU$yW()t=%mu2{&2)EzY>jmF~)Zw4@`>!7rG~{XJ0_Hr9uhPD)`Iq zV9k~m&B<8s3F#ElbaM0k$^QFy8IqnRK{v*GegH88B)lw$&9_NP<52EqS@KPD7Et#A zt2u9*EMhqjrzKnvJD#?4aNOvZBulo~R*0G><W}{yM~>&Ie;G-!HwSHG1G4PJ%s8m) zZ$5JcEk>eiH{;LZl*qI`u`xrHZ;fe{1gR4uzXmL%{<1VAITUgPH<)NT%WoJd=OVnH zNmA){RSX9a(3mEjlRfT$Lszpm2yV~r^lw-h=@c%xR^W7cE5-w;wP6oKL+LgKJl*Y@ zFj&=gT8CgcAn(%vMZ7jd=dgCK;Kxs4ExIY|EC~C|5gv)aL%-GEsNbuP4BJG0>sn8R zNhRX_t%w-O;D-4iKr(5a*kW6jQuji`e$}o)HWdx};6);f(piw2ARzoOyWKEddz8cI zonSU4@92$w9rU>FID+m`3o~`cqdB%^{LfFbx)WceAu5z^u;uQ{Y$<8BzW?$qUIk?d z72)i?pfQeYyvq)n=U6qYe^9Iz-@3Mtu%c3*sr@x;3qt<7o4Ucuh`MpzgNRj5EPCPU z##FW5--aU$$EI^GlaRKW;0mW>sjp#ID&4T)kVTK)vWO>3t+zVP;P?P*=%S=X4wX2T zZ;26NsrRw0z{x9Al=Kzno<>6tn)3DVC5oTJxwU5A_I(eGpqnR4;!aHn-iSonM`H~7 z;`ET&K_>?mWaHQGlW8XnHgr-Lyz~{B-18b>xEfeh?MR+WXENW>|7uovUl2b>mv&{* zn*#$FmD@E*G;<7$S*h`)agBqk<CJ-AL1eR@^jQk~mr1wF{1iLKeEB^dcTJW!x^<^Q z8gRngxmG5AZSZ^J44D0<p^pN`H;VZ*<w#Aa`7%BteK=1C8s-bw_fWU<{#0LC@a+et zSveuBDX6~Phw-OL$m)smOtEejTU+tp2TiQNp~d#LPXiAE{EW;D_LK^M8)jn1`p|iG ziUbqqWLWPhKU?aPCGQ;>&1CddSdu977MAPlt>c=7h1jXCQkK;#4jwH>I&;egVE2D% z&1hcp`K=LObQp2Qc-j`vu+t2cN8#|-7DGV|22p?81T`V9V}~}0@S@LlDpeb#_9VrS zkC&E|d~A7Kd#lvfylVy-27D+Ob0dRT)rd`JYwX`qx0mv1G`)IQtYX_a$zNw!Ul-&! zViwovD2vOOnd6#PODYZHuUzI<0=dc{@8^tvU%t!zQ!k8rG4Sr0yUDWb(^$_Hbp8p_ z{bSoCUJ7oDct%#fW=#)$nC_^8LG9Ar4E#)Uj_AUvZUB5b4c>z)o4FfH%Id?Qt!>U- z<op47aZNBptpf)G&-Ehvvl|iN{ik68g&15FttsgH;3%6}wxePZY|#mk^NgW7+?b(a z*niOs9AFcqxd`by2<8$p?cwU(?DAFkffQjd)l%|}k<%IrZu&XV13K790^%=<?^$W} zo7;?E6fpm$AI>^*p}ilxW6K&iEQcLBeNCQyJvfc&r$E!u2FuRx-h(p!0CX~H$_PB= zt<G`FkBw3kQnPu~uaQRK1jikO+!x~hL$(!U-k<a!jl$`8{pLF9n6t?UuiIN4>{KxD z4l4qno+kQwmQAuAN>^Rl*2&BQ+72KH@|HO=gQ<b4OQ_vT+id2!z<Q|mtk?vV3eX0& z)|%67Tg-3fq15d!hMSuU4(DD<`9fcSmRv3Cg=D6uxrx}WjUQO*CYoA&dAkAID{kU4 zF;@rxbnO`9d9$>PA-E7oQ{k^v6GAPR*7FlToSydWRY5?D2@qzaEv3Qz6C?kgE>EBs z;~#K-(k87Dg1JABEfV<t?ptVxEsa~s=p)NmOsm|$J+-*ycVs)(p!8co0)b!Kp<do> z66a$_cncDyQ<N?BASj(d?=qs^nv0<QvuO2ljLRqerk~s9H9}OrRsw0Emd>ZWTM%il zD+**HuaoN@=g!m8{V!N3Rzlu%1=kRd-?98-h9sRvr@f8g+AU)_=b&u6a=QqbZM4jk zIxg+idVa3+$Pr!P8cSF6)cX$*o^{r)&00ruT?t^FN$%tcIA<uh^&sFsq@)r#MrstG z$+ExkifNv(N)6IKYS1SNp-UdKok~?Xx6y~qxa997Q}G+^6@N*Y9Ud>|m7nfy6tXxP znO?XJu~V7fG?=gWqG^A+W}s`0bA0EbNNn>|A6}LQWvz>Z{qAwzgTT4`=WctI(L0*H z4idLb#rZ$sA%^ZWwtc;$P$}JfXknIUY@f@-c|CDM$=#41&PSNdn-7BB_;+7zPcnm^ zB-&q*bSIWkk8!g6e>ZK;qRK|w^^W|;+3eG{mP93}lc-(KHN-=HGUhR{Fe%LF34kAh zJY;EtvV(K1pWRhXy}uL^GGBqrc&V{W29UM*1#AjG=Kg~!?Y}Vv$&9{6_g`EB_Hh@K zt$x5L`Tel*F9JQAMQjweJ<lG~Npz^bkaczP^f(v8d9-{rmpLQ5QRQEntyH9%(=mxU zC;Uso%j>~i?LaG0tvg_mEmVBcis1_hWbeOQP~>U;slsmA3!g|3^7QJJTmSH5^vQHh zK>2oJf+U92@$KE-W;)?GVhTNcRDPe?6~X2Y>KITN6&xn5nZ?*<{RCdI`l@x5^i_IN zl&TZJ!`lozyuk`!t}HWk{}j7iXw1QM1MAUS<NS>&CM`}iwa*d1*{6g8W;aL<C)y+i zgBw_IKCd^X-z02q8;0vA(CDRFJ>L2T7HP~g;QIhdJo&L*Kl&4Kn$2SjIeHI1!^Rz0 zWflxwHgT;z4qRFsvoT`geKErY**&3;o==-*bW{<qt6b{>28A~*6n;b$)lY`?a*Ixm zWH_F`GETdIh6IDKtnt*5@ahO*Gxi!~Ck|161)G}}1~dA+q6$VxPl2J2{aC2BTJ7fm z01Af9(q$^A+Ml8d!n(@HI~)kZaRl)>uK0iw+DscERy=>O5v3K6jp)%+c-pOsz7#Hk zcfKH)@dM2W@lFWk!1wt8;rHj<0TQNUhw}qe+ik$M(!hs1*;D_C;eyA8IB+K9I_!D* zS7DP@64!g4Ur_q!{I4~*Tv%$wS07NG3#)}$qCS5NLN{~-6mskW)%{$o<*g~Rabnco zHZP5P=!!pq4gIqzf1SqUg+;=(PIZ^TsI!c^`xd_XNT6GCO)I^7e<4pSaROs0FWI*c zuc{JzfIM2|)@(}zia1@W@rgRTRF6Sq<u~e~4MEm}?_kKz^vT0Ly0*3*x8p=$`(1^* z(Ie_DNyTfW&o&y74w(gjIuYOIaN@8zaT21DW=@M<3k)<VMD2>x+9`nPu|r&;^uG+z zBNw{6gNkBv`0aq}xA9uBAf<6xy`#ErOb~m*t5?wv>sqG{ofvVCwrb;+j^MY}*(s5Q z_4z&lMxr#N1?bsT+^}Yl(}2Fq@YZZ&N!givX>`8w9{USI>%HRsN@$qc&*bpU%--7m z_DWQPRk6E<X1BA+1q=@eZ;f51d<&aML2)b<hBD|N9K&X}%Cxmbh(g7UsiL1>^W-xk z{-(E%L5BJyW=6@&-m6J_(nN&R^hTenxXeSOu6c>>UhQ)YoqG5_V;lEromO^&+dU{l z)@9`ogfsbt_BQw07(9eev|HG`y0RxAh?HbZoi0~Xa9salb+h>J1Ai7v(bF^u<+}ma zBs?**gs`3M>P$-=mh96$5sLc1t7b_S`ojF)D1$IV>5T4FQMI^FM(Q4$SoOg$3&BQk z0&r2AVwml&M#1^HRd(<`cG^}u&T8={JnpH@=@$)lO)~&8N*pXHuh#I=iv1}v<NF*| zbjM(LWR)tp?~}gzv;7gJ?1bvlroto7QXcwrn`ZirC6>iV9rOD<Gk&EIJN4ge{b;9e zP*x?T?;a%aK#jspF`^HxSk9m$!W!h_crPknY;!$>2Zd$cE(RWz-kS|O=;l;EKLT+Q zit$@1QP27d;^o3sj3`iiJV8v7kphvVH+~-q73_x7Ht3~(0?fAS)C&^jg#do-hR?ue zy*X6P0-XxZokM#vKG!P$iNm}AUm6R(r$NfaayqJbY1i$(FUsCo8WVk$8T6|eEqD03 z8m0vDPG{Gz_3Ig@effyd1SI^<_7F%VhE|=)ufpod%SmTSbS##t6QkfyRK#`_Dh??G zzL_8lDh`{;gDy<D5q2{aRd@+-o3@UPoW1e?zFYj{{M1}0;taV|OtG}062VT2#kSmX ze`Xl27Gf;M9b=SBbeis-bCmuAO#C<f@%k$jpnv+SIrAGmR9=}>Dq@{kTs*?@;<*#~ za9PuqFubeCo@(DWZYfCuvyCR7U2<dFFHT>mDw^u_Uu_0Nw1DoWmAL412p|1F@8Wmx zju&WySr<$tX^Vss_A>0dfD}hI6oo|ugEYj=%B6(J$fxm7{YM%QBV`++PF<@vH8r%@ zZYQ{$PH>n>p;vF(+4ls6(W6K5Zcg@{7Ig42cY!jhQ%+J$Y=*-J`&8a=yRo5u&oJoD zKip0VFukG%VbWU&&)lfF;q*6Bms*$O-Dy=`#CYximKxQCkU?9<P2R2Yw1q)PoS_HD zlN(f6cT*~(tFC+A?kG=rFs0%$-|P;~=6@ZM6+7?AxmhayihjRw@hE@vSpAIxLILWH zqTneCEd|gjcm1ch+>g)uHGWGSt)i#h)vT-k+@K)^kUgl1Mrpn|T2ZJF7PMr>Hf?0- z{*cV!0;Or?oT=pd?c9MJqy`I)zcO)4+9-!lNOC)+3J}=VJtNGw!YYt5sB+HaTD#%5 zoQ(@Pp&aS176&jrD2x~uU)K8U=rvGP1aE2JvUt$l>6&WynH3c^%TDO?%}?md&$z6~ z?L+Zg5J$L9PQu0KV2@YlKO7w&3h=27TxmGpORK+oKBQG&WM~!;q=znz@w)C{Vr1MV zt!$FK$T6o!gz4SKX&2o2OO|ma1{sOIZTG4e5p#O!_Dx1@vBA#$*IaycCp=RRw$_ql zFt14YYuF^uA<}6S{(bLlm?RA)zY=El_!*X8nf3BCUQRbca*<~!1m}H`PMc%!+t&x} ztM6G+k<2XUJ*Y^J8_9f*`=~f+;T-pvZ2%o$Iqhr3rP~j|=mu?S$SZ3+r1+)HlYDrg zE)A9)a?xnEU^X8%mF-ePBlcV8wNaWy$(Uo1o1m{DG12>6oUxw<B$IL!>!>YaE-MDg zp*g!_m6F_HqqjNuWZk@P6<c{fzbKo^Ty5)6mcvx2E!Sbp;#;+F!U+W6pT?Tyoo4U_ z@k_Aj`-&}6{s<i1KKL{*Dab{Xhbk%_Nh-@BrNm#=8zm#jew&5Qngs7w{{pJAv@8s( zgTxJ^PfBKgQqA*{isa?lPHSY#oq1z<UgMmbkzi>tzvv%q*$ar$W?p{(Cwcl91FZYP zv@#WZpYetbM{bdCCZDpld?$0)JANj%4SY~shsUef`n_;@A;-)Cn?@C7>y%fsk}yfw zK>K;F2>RwKj3c|)VFxDE+~}P^>M;}61k@jeOAhYL4l|1lKk-fHiCW+p&n2dH?%Xx` zpGo4irAtUQP7yg>DDj4b$-JR;n{t`0nB(v0MrIYOo=+abJ^pIvnq<ZI#r9s#+F2rt zXQu`#QSwLLf0*YeMD?zrgUOeJ%_z!|WqUdJT55-X4HL(PW;fRD;RF9e**n14+HCvY z?e5jKZQHAD+gNSewr$(CZQHhOt=8A?KIdfb<eo3NH#3>Do_dO-lB#6PUyXmWqydsq zjsFc*IXID_c!__O{AhouMl`{0)eI02J_|=M<0OgfnFt8ReTqe1ZyO>W3bxV?4U+OO z4ECZhso1g5)7XXGA8sfU(f%LByKBzr$|UA65))U{k}5Ly6MoCiD*7W0Oz-Dt9+BC_ zbsSR$=-+WhXk{DnC0cS>uVb}hd7D6a4Y)Tmxz@750{69#FV>6+pjg2daiXZj@RhA{ zR)-d#B&hhWUUd;nC5ertgq-e#jg$tw21YL<+1O;vR@<s42(?~e5dy4CE8%!T$`ToX zeohRqI}^N0a1%lD#(nyo8vP%CkdthLv<L+%I5;A8H5IzxXxf8lv#_p2?Exr#=+el+ z-in0^xX_vC0R>>um%O6k655PW2~aDbcGc&t(tH>U*y)cch}Q!4N7x$IM&MLFx}gu4 z?TARwGTy%ZVPV*(LXnwaCQEZ3Q3VO3uA7x<^Xr$Aea;RJdDrM^aZVCGSY$pLQNC{P zR&$drkH;e7)v;H@pCl^o292uLafWk_{B?Wv3nfg>Y8<y#TEf>EnzG1clYfbwf?rkQ zQmdYL7t<x-c@O=D(jT+oc+-V8ST@fBXGwHb=dl6v0iqM(j1^-P0~QhQ4YHf1MK<OM zNA`X|c>Gv0zI?coEsmeTqNs(yC&H%xGYYjdj2S5G5zVSFCLR<==(bLjln5-2s-Q@@ z=*3Sa)0f!&t!KQqyo&PtkywsU9lnEyjF&Opk!CTl%AtJI!xhwye=9{A>BK6p-I{xb zOm$dp2<NR-_SA5)DMS2~zARbfr-Y$i%~Sh~7E^Y;2gX;{8D{)q1_|B5;p5FfQ|!F< zl@c`p3@H7&EqpngDkc=dr00v<f%RbvV*~9pe2IwsWN^Qlu%=@St1!c;U})fLgR7T1 z%`v`<>L3z+xEi!%02<k0k{y7b?m{P@y&hDusC_a};79$y(N=iZngeJH=^#o8^5{co za0sn<9=S^B%5@4Se;Qw2@mn($J=GA~rmwK~yCFo6Z7X!l$@<07)d_2j^;*%y+#{+0 z;m>+CyhYxGposn7ld3qwF=H|QxJ)UAHWUHs%d2glJ{7X~Iaf8_*JDc=S80~K7;2lK zvR~7_`0W#ugDd2GM`ude;hLr3jm_=f-G2%lHY060tpJDe$)-OU16dYoXQl3RH%~Jr zP>6@MuSebJ8wPoa?}{|lxn4LLZ>=)kQ!u;%r+P^ztTPx)>$)MgoP^+;4zDl|Lf*UA zw>=1VW*^%5Gze;$rqb^DQ2b8Qiw^5iJ$evilde_wpo7qty#$!v%ejk8nC62SyHWQ4 z){yh<2#^%Y2S|P^5jDb@dblG4Q{Kg(5RW-=T^!~b8_}#rlWts0KL~J+-+-jI#&AMP zNHDVWqRexl07|N)4#?$9a)5NZ4$;>nMo)fWk7~ku&&*SWcA0GAA@K@v4sm?>U53?r z0jJrWAR>w6o{iap`W)ifj{3m?^&~a*rbX=t!ZpQg;;{?j3KkpE04a{JY&1Np&Dc+i zn)(j(eC7-)A=~*ien?K8roEeA;m*gE@+~YC%#p!Rh5sSFAChGWPl3TA9C|x^cY<%X zB%}FMFoF9R;go#Al@8}n?XizTO>~F@FHNKhK7MnJq%cE^ZFnTq=*v!Pnt4nLqK_nE zFbY^AsY0!U7sfZ?QkTYDCX4-bkqzcz#LaV{=G|r)+&YsTY-^)_>`mimRh_cti*x^) z^G(RE-sepc@Wr%Xt8Xb^%9ME<lEoSE;?PeFw%6JWrcmr1x$<t#2R?@BHEMJr@#gE; zAooBjAGHD#O?kw%APxIqszk-zU~lQ0tvVRD3Ruqa-oN#~a#{cAjQyi}pvla^`jb@9 zhB2}>{3qkTp8rX4anT9rIT(r9SUb}3+necGQVZBv8qx`h3n{ueI2u`rTN~TpGjsf- zA+GRGu9A(YxRA7-EuFZbk+q|lqZ^%&Dn0`}Jw4q&O$Zq|7}%THI@;L()cHr*Oo2|( zN#D`U*65$Q|CCVrNi)*@^Zl<1bgKBwKLOnTQ4&|+;raLQ{zJ1|*51&_-ptyBT!U@) zAoJ)&3QtQbN{gIy@>iaOb`V!i%rii?5E(KMBh&!}oq~~xnS-Of8~IUr=X)QR%_hMk zJIaVqf*AFH$yo%q<}sP{Cu+VqAU?&<z-(<TjjVoVflvRRUH^wZBfo>eKd(9HS?Ktk zO;pVc9Zm6>**NF~^=!qA%uGxj@!1&J>HeAYKgDPm8Gfu_sb}KwqX_q}+5Jl>j)s+y z{a^3!8Gp?5PmLe3xF1XWka9+h|C;?j_?*JO@?`X^jQ(>O{wb&W-#z`9Slm(1(#(M0 z+QiZbpPo+2NYC)cF8EALKk9O>|1~<spU&tMf7VUqXQ2N!^S{@HPVK)(&dBl~vu2_H zzlzn#%*@LCZ-g%=CI>9)m49^_C$R={CnoJOQkO=Keo=x_ph`$wl*5(j@c5;oWZrg; zf#5{iu0C(HuC7-Q1E~?U@WZVROiL`UkJeBviC-~y9~I46EiJAwsohK~>N5TPDR9}# zBddP2)*X3`sgpkemd^gc*e<%(;QXsGVnYw;SU6ezPoom7GXOQzFs>**#AP6#jn@a6 zZEw|0#gd;$^xUCMoDX9yOcoMq3vG%?zgdzzo0PCoFInvkkv+L$GAROBtgRx79rK03 z#O^kJ{Mt5%=V`DCtC4;`gt!gYtwXtrQjm=6YVxeTB{ng`XUx^nR$wYq024NKIRqS2 zo#(Vp<^h1|ifBk!_OA?1_fxC*tXEzaAQniB8FYMnTID5mw6IfC5Kl$BqjXEq!`6rj zmnf$8OnUXHOcgx2Lp8+Ftlm*Eo|q977FYLeBg5vCrZ1Uq>79rv!iRLr-`_|s2(ZhU z!N8in?w%&rG8$cfYVRvKHE;CJ{$$0h(`zvW^Z3)cxN2@#CH<*yd1X%JB@RZ)4EI7B zJ&X19F^SkHJBz7HXB%5f{0u^1HneqyRsk|rxsUX^V<TY$1EK1^H@(B0tpO}Qq7?Ch zBON_MDHr}uX4zKn6qw)e0B`hlO2D8EioS+p_p64phzOGR81z5WEsA1j`;JWjTHZ~3 zR?lj$Aq69Bn0b_R1jQ8l`*iy%%rFnC3?a@NG7mZacn#M0lnCQ|3YSCM2sS>o>|G`Q zTz*QJZG+a~Y2GzJT%*f8vHShjoX8%O795n$nHmdy`ihv0Iwl|9gkeVeSO!8IsHusT zbkux{2W|c?P_QU)Lqeif+VPy((iMlHEXGRc{Ar75P-TR5ff;2Z*9{`ueGBZK_2bOK z?}NJui9f@pRu_1kq-R7m5pV^Q)nreKR4D{Se3=z8(r9ZQhX{osKZHbo6xdnq7n~OK zCyB=0!e^Ieaf+2TR?W&7IA~Ou<OD}zq2e6az_Y`q%t0XC8MXz4-_lIvuVur8V!?m< zJk!9;L<%A~lR*t?BjE}{q$xjq-J<B19&_DH`z6o%0?>I$q_-6`Z<b#fgJ{1C2_4*G z{@wfP1LNff2iV%+!+CSgF3RCf90FjVs?j4A;T}fqA>?qCE@I)EjnT5IaXBq)Q79%L zVGx_fswVTWT>RCsDJ0v>bxr{A00xa(&#1Gd1VDF*0QMt?J!HD3tUhQO=AYB8Av}){ z0eSCeuka^0pRWL{?*QS!DKI&ApCDs2_w6sa8L72w5(WX8Hz@XZG25STbIq?F{YXZa zonHBmZJDhjR#?{6-H<(ge~hJ&Z}@zvkT3HHRXc`etqP>-^=%r>(u|oo?hw}vREu%Y z01M3Kh9fH2rAj<^gg=c;M=lPHqz445Yj`o*Bb~Q%!(z%KeLY0X<ivQzS%oC2Gqvdt z7orw(HM>fOF)I=xFe;}vBLVZhN?is12$|_%YLu$rRMxa$7-8HQ;ZWj2M(#K2mL8a& zI)%`W2fD~shgs05eH6HFZi|<`{dsTL!SfMgXP`g=s~3RJq`}SW2izkllgA_;{AMY~ zgEc40;Xs~ShD@wNr$xV*6!$b(tHAjj6<E!@5X6MBWMztdp+Y_ArFYMNnb{~8Ehwj- zl~_D&8g|);uD*YF7P=g|S2N<0w(+%sRg8MLb_*<mroM5hQ?*)2caV%%+XH2SDM@vT zX>0r5%HIkFP-<HWs?Y5aSGzi)86fpsgx~rO=pkh?>|m$Hlx35_oez)jx3;-hVGAr! zhf|HxA}L#4KcWj_ijO`qf&&l>%CoRo{SJ)-G1t0){JvcNIKszOvFymzFvJ9`<2z4s zGyRJ{8!EK{J4bONFzem)*9r9nK;8Zi$0E{oYj2EAGfiG8)x2L+VTi9<Z&AYvw;7@G zB8$vr%4V2OB&a^~$k!pG$4zYN`d5BusWR;t=LHOMEurKVP31Gfomc&IW*`p<mV}if zIu%%mJM*$6oJ-);_~_E-i-%@$de7`Bjw_J*eduna;RiWJdfl-J*Of`0L~wXtT=V$z z0e2r+ziAL+#I&$^)Fx8Z7OJ_Yo2-urMrm{)A!pqF4PrU8G1R6N-`fb;FOq8!_gW0- z{MWz-YOvrC;5XA1E8qioXQlamEUNy+q`HO;e16%M4q-53*t+KD2V{y1W|Y;Vn1eA} z@YoU5$v!(vwi&G-A;49uM}xC(CaZ%mMRtY*N9T<dQMCp;Y{R4nkD+dIt?A=FwDRSA zD#l~p5qrTaB2>($I8&AoI`NOX3P9%4Mhj3caLb~q^h1B*7t@^9VY)59o7GYPZ$#h1 zdNBi1a@?g-oH7MHbXYK0$E7rEyfZ&QSJD1MyYFMyO{O!GL4BbiDk5L%PW>d>cDDVM z<G&WZ+@W%tW)lS)2pEkMQCOzxNzB@z^94;PehQP69-4I5BY&lg?9d4c9u<$?pjrd6 z=~c<n$aP@VIXA_iMYsv2GCu|b6>_CT9eX*el-VRkrMxxRjj1d!GrsNLUCQcKd_OZ= z<(<D79nslKENW&0qZv>}Sx@jD08%HO#@{7K$+j3=KW(VCqv3&ZhX#`gSOA;N!I%u3 z`jNEa_=Jq}b?881njgW8h&Xn%G}Z2ZN5=aNIwhd8c>ZFroqHyd3)n-WcJPJ*;Edc_ z(9i(YpmX8;!)J)v0aaN79b|0vX+jU3rVv;J*)slDgxWyHlWW1lZ#1tG%i$tN!zT%W zY7>_N{wc<3)hc~XW!8;kcBMN=D$Rs%)0KHi6n)><qhk*Pul(AV=Zx)vme+mRc<d%b z##}@qcsS&6Aqd2V!!4oIu>%-YpS=g(iR(i#-r2GEH#_2_BJomN(3sHxD?7<^sF-Xx zM%`yil5KHw!iQ`ILgcw2oOC&IpXj4BzfIz2e=0BgXwv<K-+^01RpjhA+mCD)aTdu+ zuDx$SX-lPo-RgA&55Z6PV()S9QIi<b!gB9?*qj4K_L6ibn$QHy<-NZPR%{0ZCvNH| zNUk0Tq#NL~q2?c^?9-Z6xm(2S7dd~^*PT?>adbmvpqUL5yS2HSf#Ky_uT9ZKL2Rlj z71<~A*iFp@^907mWCm~<qeD%6-uN$OAOmv%qa#VGcVDdWGdGWHBjFsY#qJ+|_nPV` z`<;KK9<B*2`|RF$GM2fpBC)q+PjU#UO}gxjHEw)0FSsbqW5z-m0<Fdf7{`oq-;Znb zpJU#PQ->1Ie(lt7<IUOcrI(jWUtFM~QGMSB#<-+%Bi7^Y<e{)a(l0ura@9S0Ja@6B zI;(#47wULQ2yJZRBsdT-_6!%=Mb|w|&lCsq=A-DF!FPnvwM08E0B{?bxs#5%R%;GW zg3;PF#hwlJQ&=wof`NM5B{D*!o|jNGeDH+9dY!Wi48i*B9ph1+-uUoitV@k~;|NL8 zFB7iN4y!IFtBm8oLfA=p%F~<U9HNpwN3kSQT;+iaZs$U|)rAJyQaq2(YQk;TprpLk zZ%3E(QYs;N4EehpH~ukT5b7*k7=Bl*T#2Y_P<Z9?Q`yLZlLsz^lAZ{-o+NuvZQX{F zuXiY$4xeY!vj9W|L*D*iBQ5q#?Q2lp{tLg&-eo+ghY%=Nbg->{QzUSz`1UDdecEBk zp<=BPKv~72>LNx$XOVrNhmC#(tNo|MasVqVzgA+3!H38Z{mtkbE4uhK<I=4IZE>p) z`@qa;iIO03yq<Cw?QSugcV`9rXtW(pdC&-0d~=6SW<0gZ1o}js6gMc=EFLzTcbuIG zuDuz#y*@dk@?fd#^>SjS{yb&%GJ2Q^L_D8Z2+GE)^u?!sS`AWgiSKZj=I8hm#)>RP z89-6W;+pWRT5a#G$TXbLSir($bB7Z1R^P%BAcuJ&SWCUs)k;2NXu@c7zq_L{OzKhZ z8;UP<F4Y0>3@C}2qh9eb2TuP}ylsj%Jaa&=#DVus^V?ObB>&$3D-$Lw$<J`7_i3!( z2VC~qv5&{R>WRy*`L}QY53<84!O{dETss{zcjwU!*K4djDOe(qtZ4Byl&VTE9QPwm zP&)$>fa}sr;gt{KD>Gsf%-=AFsqRJ%rB42idQGc~E$NbDSCAgK-(Q|A{fnc<UHdqf zP9&*3dv@6DjQM$e_JB?jV-PpOv}*<hkFKfIZX?Ztai@iz<Xu~~^EX(gOJa0Q{1;Fw za+M^Hm~fSS-Xa|s_sTjC-n`$tw(|#_A*86wZjbl)t=dIOqxG83L{v_C2wkvvz0P`- z(uzmGTfy_7F@#ZGeSe2y@N>4?w`6q)ac4~-OvsRF6cj%x@rgqE+6!&+A}auoIE0>_ zpFQv+F%FhjpJ2h^T#7miarN*=1<N4&Km0N5`V_zE{uURs^1iaDBQnNn#>dDGh~nx2 zYZvlk^U=ctIwwe04BQiE#;H-<fD77Ab#66Kp}N`aV8zEBi>c*6T<st0n&$|6i!cuu z%k8v_pPl42qKMq7EBJuiV}9#IL{}r$|E06(g+KM|41I|ecv*LYf5v9kSgO^$)eDOR zmeCp;vC>DGpIgw_qx30u^l%&qkPsmR?D{=(O4_L_9~Ffz$$<yh%a^VR@s(V9=+9Mv zjH}Ae9iLw42@NsKU?c{=!J5;GJFpav2Mb>37zBSrm?QY)2C+{J1czL?TxK9&3%FPY zOWk08+%LwCndbRm_T)t@euuFV6pRGhqlFnWc+W_IC<w{ChcT21z-&S}k#FMe-UNdw zh<$*a-2qa8L-KRm{-wf2h8k>XLSJa|*0O1+ZGkkUE`Aq&8eKj!rEPBpcWp{yz$VLF z9qtQ}tu5M~;y!jC8nP$HcR^(6dULJtXu_%iF2lM$WIcPe0~@$e8~fe>moe>0CAG^e z|C8zdT%?*a60+5!SAT8pU|{>P5{43|fr5uqLB*&FIdxGr1iD$ax-5DhV;ZVG+ZS#3 z>vayW$L{7ZF>@WbnjH$6XGQ?+vp%%M;LewTL|_+p_cq>R8(Vfa7dMh0xpgVjbQysb zK*$D-==)%v$h9t7SlZwmjid-05p^g6Fslu>Am8PpEZmmGC(wdIIjA07fW_}+XnE8C zZw#yas^W=*PwRM4PD!+p=-KN|3qdXvWC{Tp!+OSv&Kg=L7kQ3A4nBu&r^h8WNC7Zo zj#T_(*}`oO7c`QD6w&Ao*Q1z2b14gB7)<T>1r6SAi^sf&B%MnLa}HfhiOP7{hQqnJ z%vdgR!n7Js#H%(A^Dop|#Ky%9r~G0ck(86dF9{!3?j2@Y2X%`5@CQqaiPu>SNV}OJ z5L;WYtiow*qN{7bnVDgRj4s7Hz$N96b1n@v0G|#mwxqB^#kygWOO?Y!<;Gja@Ekc_ z^Jq2BsEcD+9s!&ttK7aE@fO%&C;;MYMU5hd+A25y+H(wgZ?|Mn@RGqYX0e%Nc8#>v zDV&O0+=o4w`i+$f%$DD#!%xqHP|VF!+FUhfOnM)sE0NjnnkXpPvynxZCSk5`+aBc6 zAdK20?gM7Pn;|)X)B?4hYD?w|wxYzv<GJ68!gJjt5*tEA&~~2Z65~a8$BibsG~5Zv z63w!x@aajSB3oK+vn^*|e!l}(%fPuQc$JXiTmfQ+BL65%KjT)w3*Sa1jR4J}%7v?! z{nGRO_zIx{hmmmm{jGmmbL#PPxJ;`}VY#N`QjW<W+rq&_KOlH!&9mxLzn#WzK$4`) zy4QkR1%6!M6}rzb@3dH&Y4TtcxOIvXV`T^^{^2utq|lv%_fS(cQUQ<~$LD_HSwU{8 z5{jX(pZydZ`>Q^$zJKhXx^=JFRHH<vxG@yIu9P<3zj@v(hW`^GUmLdkTsA|ZH<%8+ zQA|96G*XI3LC}d^vFpmw(oWpmk#g>Qv`kf_Sc>*DZ9oQ+6vMv9UHhp-JQ=`~HD*sC zVJh5Vh5bM%?0<3bvC#kHIs0!v-v9sAOJ;Va|G0WttUU&`JCH!F=6dzFJMDd2qhnwh zQk|zH^%{)Tu#XcSz4buIwNLPfw);+2ZRkLDtZR|!+d0p6erhf3ZjVh#$%GZl$X~;s zrhW7|j942Ak~CIxQBrn!)f=5}i2(`B0y|XKEj3w&W-RG@bQN{^`CjwMm4{ZIfje)8 z=xo?!Uej&G`>zCgMRBb^wjBXS5%N(0*E&2A7ncGP|KF=#m9ndsmyC;!^Im}u*`s@k zrSvwX;JoyK?$GupsS9Aw6UEotiEDNqXrg-WBRbQK1S8!F6Gw=?p<J_jJy2o|>k>=k zDM1<i9T5h7>Cp~d7hu{Y%;UQAtM@%JInkP+`&({%D;eR(%_fw{FaMdjG?f#>lgGP^ z_$+Fp>c0rC7(y2~-75<V20GA7wE4U(zO0Qx6-^B_gyuq?$2Pjh@1k781M~Yx-Xz}G z7S5mH2GiGb3qdcI*@66PKtP;vW)Pet3VC=3D^No2MeMpr#~+hBDSvUT@z}E~5LXYX zDcWmvg;(U{k@(n>5X#jno^E!SA8eJ@s~?O*01VB=aNMsp9DH`&cG|J)V1!9AUd$`o zMxK~kw%)UWb~LLOS!l{Gw19?$0hw;9ScSbpekoBKj>ajuQb+}Yw&-A(s~jb;ht3ie zkvTT9k*#~Iu?eH?csaChMP0iI+ZWl#-7VyAH5=SFJQZG|AD;AGH1Y>?C>&flBge%d zryzX(NZc|e7@QlPb;x12(Kx_Qq7$dr!;4>jiaKkuZ_SknKNTn6VMz?_<n_T}BHoup z$t>xqlPR_D<8RJ1xvNHesyRGPmc+EYub_4*<9Z032DciWSm6WM7WN(F+cvKJ2KX?Y zlQgEx4~LG~#8KNt4xnn&rr>)d8&_X^^#px*P+u^-fxl#Etugq+!28864ai0`!P$XR zx8WI3&$!E-1*HUOz&ExX?dyHKMQO}N^DZ6E?S5bv<Wgut^?0t3Z_R2jAz4r73}ouM zOQptaui$9hH6K&4h7O+pS~DA}BgZ}y1#61jfNDT|WaJ1M=lW@O?-)<D=RznE{kG;$ z{Vet|r}3?TBkRnNMQJh;<dD+D#W+;I=3kA}k&_cK2!JtY0g_@rub;o&PrbnX(4B(C zs8l!oRCXX+D5M%*AR%116`{U6t#=9YiYE>YPfCAotJjp!$SZ3}X-?XJEKqFM6cx0w zHQBdh<gOyzGwHtsAgBJ$TJ{=iVER%RtbwpC7%7Y>KHaPj<n7a7UM`9-rv@@qE(oU2 zaA~(!Lc{>Zlc!|D;XI3Z{~4Ta<fVkO<CE-|X=Hc8Ai}2|Ki&Si*<gp8IWMqB9$f)a zs;rB!9uLxKUTUQx$t4C*^Ju0QSA~1<o$Th@6D`!*lavc!8l&g22HJFWVwi%P5Nxca zKt`|4oe7Q^Gj-XG<e~NUXXbRmy02WhGEH)LCd4dLWUWX112>bgEeB%6dKs<?;IEMt z(8(ltugR-m>sM}rM`Gv_3i*;`{pJF*>fnkit0D<6_x^r%J_nbeY7<uyc>kK?hT0#4 zPrVziSeOkdx3SF~ia09Q7+TpdU4-p<C&2x14(27*naU|=v0K^26k>h3g4h`<g|zmq zF4NRleAtzF+8ktA|DcB*?45jRnDAyY&ya<J{9vKp7kRRCuwP+b6!IE}Al_(_EHS@7 zBWly)j3U2ZH3sU@Y(NeeT}4~moK{D(f(qL0Sya7MH~IcZdb7l?v@W@6Ve82P<W=X9 zqhiRKBMeD~+eAwf;wFzAPfahFOzGcv@TjyD;V<<oNe0x7LX|gZaI7#ve-;m35B1>m z5ZKA?538<*5b>Eym&ec|j)dZn*qU;Km%l2{S*(zZ<$nMXFW-cmqmv7VCpJY+Q1!== zIjdksPoyXn_hX*KGT`ibic#`Ej|pN@xw?1XF4lx6&;j-Y?rN8c<t@fkbepe(?b#bd zm+k2}_UzP;ss2bocFP%@G$Fy+q<x|R=E~TlnhaKkFRwBVW?0UNmc_it0hXR2kqRfJ zuXs?2;_FmY4XTdb2ljp40=hqVqRr21H7){D#D7%V;&wm$<uCx1D|L}E??AvjtJCn0 z>cwv%C>mP+lT_S4qz6;5CVmGMX6Z`U6l~sA2PJnCq{AMP+)NMypsL9y(Y+dSK7*=p zt(OCO%jE{RQ(|kkPJvgoO4DpdFR%i8RVORLI43@_5ng&Laxp~$3fUU)Fu`2SY^*VY zW}TOnW>oY@1ug`8;mC@YkN)!L&gUe-nG)XT2VtVZcENPTwD}Mg<(Qy4VqqznklR|# z8~;%4f{t<3FEQ2~n&U;_hC9YQEI8J`xwP&3nlS9B)CgdMx3WgQ#OO)Oyyv6O(3KU_ ztuimG)iz${Y9=K+&^|G&JGB7~9GQL9sX<Vo)Od^Hbwd@_7-^e7XYb(4yR=;{m#Kas zNU9XbIr=+jkfp<pNWfe|%a~nkoMI*A!RU!|+I%D=ie2!M{ciy@qC!8fJ8huxZ_sPh zW9MJy2ba=So*?=QgpC0;C#olDk%VfjE(kR`!n!SsnNBd4jBq;VB%4j|vVs*Jp35)? z6a2#%t#uEoWza>*<;;*oF~NU+<Agp(hbM&9$?c&rm!(E_nr~(o54i%DP+X4nGZVG0 zLYg<v)RBuw`0YUJF3xD%81q?&v$AC?Ck2pg6W2>r1Nihi%43&3u0mzmGtTHOqo~5% zrFP9@(ues-QHGpB6kLw*l(y0`BqX1RMI-{X8~o+0h)%D=_oSxT&09OuLv(!GhxCH8 zFMVcB<Nf4a5a~c+Qm6zqy&_RjqU=H{N)4AiQ;4p0qaxtcIaD>{q)BYYu`KdtmYimN zS3-bB8!|XEfZO__YYy_EA3EYvpQY6|19|##q_rlsltwd02@Rkoj_Z})b8D6ZFZn{0 z0wReUB{F;9_F~4tQO;@nXs`W}@euT4J<`{EZc0&cc2NWlM!b)!J1ZS5njp;DT4)tB zo^pDM;S6p~aDqy7AYMTx6F7jxA0|_taP*#Jc0!S*XAqHAcah&geQ~cG!u&;-T6S%? znjWSe2iWt~*Bd5cF}rl~5@iU2IHyUEk$0IUw;$<dE}l%CCi3FE&^53Ptv?o_yb^YT zghnCnWcf$cR4N0yZWNWAk#aJdtU-U7r@$fV10As(+n7lipr+^7HKIyqq;h|W`wXl( zu)VOPX6w?VXuJ~inopheA8f->96|jN1&B#d^pPamz#V79__~Cf+nl`?j&g-ne4Rbj z&k<1xs|b(OrBjtXj#XY{Sg!-I;YO4o(pAlj`gMj;z!rr4?#G9ieL4DFS?sZ;)D8uH zz(qXIy@@tV#_5&CVMr>hFC!Ah!8`yedCN7FR+q!2N$jawB_yW9FLa~!uXj4F7|H0# z-_VtLfGJN?!4`AYzf4GyVNRB-I9Ay=6W>9?*&ng>)U~BxDgmWz*jmlN*YK~kBh<*q zhBVu6kbEE(3XGw@7^TdfT+I*-hG8jN@q(CtHRud^l9S0d7TKee-CL>Ft=x3R+7+Mm zdQrEP)cWY-NS`j(EU{Z9;5`Mb8v6=$FR_of_rcQ89nc_KIXi7!KIQ56UgcfshLYEv zTj%?eWw`tSEoj{4+QNdOU#rhLVU8LPX=-nT;uT44_zAttj}tL=dLfZ-Y67?OL`0kZ zXm)J9h`32<Vm9IBc)hqZeR<4*x{IzE6GMZ5AEm8<qD<|yG$`z-RJ8g5`LLc`Gnrgn zCx2cb@7p%VxFuLXB1%c+D2c~0V;opq&JPpd)W1v$d)L6$VJmCRF7#nN*aeOyoL6}S z(-eWHyf;uWF@Q|GzE>O2XE4_N_zS&j$=OytpCaerLNAlLCk85JQ8xGv2D1)g1@m?k zPI_8lp6#TIWH;EC@S5F*fNs5k8O6G<9nF)Y#BH~&CI3P)+>Bm1a-O3LgKA7BhSHba zgV=v?GsB#DsFJds0kE{i<&m*d5~B5^A%?o&fW5l1Sxn^Ba4XbtdTC)6GsT4%3!jK# zDX#(+MgJc8lamxNtD&PIyN}Ao!VRTmgw9<iC+Hwqjw-$-ZO>oLHwBW2r}|zFMa>W6 zifYpEOY)(=ram@T-Oftgtl|RizTHIL;f+^IL2{S=*H&su%uq*=s{FLg?2fMqlY0G` z)Fxg-+HgWy_zFUYSFPjIdr?I|0G06Sb^5y)gH>;r5wvpRN=dWuv%ZV6<nK3OunL_7 z0A~AAkT{W%j)q^_1x8?x+u4e@wyluAUb}{K1i_u4Q&}bfXdT80{RLPY%Qc2NGND&i z%yuN&>%J($b>1ka5~QiCs7HY>a^-9c5@fO;YG!!jB9RfSEIlMyT6zF;!ez4XHj^O$ z_t=1;T(Jv=QI6?j$cu;$9k+X4Mw(rrPez9^x4VNfCCsl7Q8v2zXRt7&ts}+pf9+Ju z!&Az0re?~Cg9v%Khuv@#9@M0ZoX<N90}<)o<VCz5*!!E8JSfPkk2!-Tq2hOQQgtWQ zua@|~`HRgtL7ELf;k>L9JzA3>wW=RPUCH<9qGLP;DImpmY|n3+jT5&y36OX@lT?sv zcyP)hN34{iwd4XFG-&(07q?*V_mg&?T>=w_V;kmsuuLB*N5xg|*Lt8@AFa6qcw;RM zm|p<X2hMfb>5%m1I<YR#2kYVFJx$zI^tTK#q4_RQUeL$R=MpO<Q!dBXPN|AmflJ_N z(Mla?8ry#i?eI4Gy5nK+arQVwC{;H?Ms=e_#R@T$&cn*)VOi#kQ*cPa3_N(MyGDfJ z#IWkkpY7m|-YM4nf{Ta*k~TWKf99HHCwFLS!t^W;w4)KN1!SbrgJ$NKzc8*%l8FZ- zFzE%4)}_uM)F;ouE@oXA&2GwLsDbv91vfDdMHCPOw9>8z61=)K`JH|xMQVgC=@hB; zTsPzXH$<?gx1pp97Lf=L<m~xdNzQxR1SeR(8K+uyEAV8sPTh!DSAR4!?kWB{tSw?D z8DFxBSi@A4{YYgr2|Ak`xyvgU8gfc#pnPK|el=~0rG=du9@^uOqclt$StelDr#em3 z^bx*1EK#NdGsTE>9md@JN^IrKnzVqSlEc=^t44Fj+fNaeDM24E1JP}5xoztT>`bqb zMRcyi+G$lavFp+gSg)BsHUIT=guEHaIrLg6FEk!NL^m&OulyUeOXFmj`Iwc--w4>l zy#Uw{i$avP_0vjpj!g<cQ>PFhzx`^9MC19Dz@eavk|R$HJbEo|x&q!OvR^T2*Xy~7 zDg1e}65fII#3umVL+U1%o@T;NbL5lCP$sE{Mo-0EYh$tp;v$|8lwf>P>(P_Vkp*3T zzCBfMBXb?7dTT-#C3Fe^rXF_%V+KKs0qv}a0?<`Fl``R-be2WZ(SXk|w#uH_D27ac ziS0L4Nfz1PjrNH_u^7YHBH5(FQ}O*JJA=K12plLQvWwHga+3X@KnW+%^KZ8#)<CJg z9#hc!;pNCG4Lu=7*cn^f-Sray+5{sI?yvDMZH2XMwyf-Rz8aLQ#K-LJ`&ce28q^?^ zn01Bgm7*OL11P^_0xNT?CB$u5-FLh`r{lx42+@@TwtfFhrIg9mAmD3!E>HSVwxOq% z8wrj3plo%7zN(nE%EF27u39baG;V9X9y%_x70w;_N~5D>%2L3*9A8bWbx2)6*&TyJ zlpCW`C%c@qHAt=x2<AewxGlaWyw(Y-4$ErmgZPVP7VtaQRcR0QF11eFucc4xh%N`v zRbT_4V&%%MgIJAd2gL4D>OjKiQU#(Jl~u=e-s==ja2*JE{dxWB@nfzP@ZoDL2s+SV z=BYIZYlH_;EWtzWHuY>5%TxE4H_xHZpEqwwg_Wj1JU(MG0MvG#`sC!GraRB+t+h+& zv$=R;GfI|>*aci8p5|80jVT~rC>{pN6Aw?^NJ{A!go7O*%(;JE7c#ShwrzQxq$8tT zZ&UNN@>!la>jHxnXz-7v`TIe_TEvUW`_3(bC9}-h`<r=XI)C7#AKMRT?zPL9FH_Pw zqnV&-7?VcTr*3{r@f0N(3Q!5RrDFMmT1}lNwK)c)Md|@g&PofM##}gF(6L*oY}cCb z43}tl(-KPv4u{wxW6amiK-)TA_|5d%I{S~}q>Q3d#0Kxe5-a{8AyXYeowGUr+rb(k zNzyORi4`z_HBk|n+wh36JsU?-)+R-C;9Di*nIxfL&%h9Qe~WM*Xr?(W@lB`4Bweq+ zlC!=GSYb<pf?v9>%yN;fidSgS4!&l?p(RW2uo(F`Qe@SMDDFbNG{oj_%K5A&+de?I z4mPr0-M2K#Z&Ik%t+a`J3#QyS^{Z+AzMdQPnlQ_$yAsTC&zTRUoMuEoo>sn)TFYV? z76b3}a)fUF>Eh<9(&D@P^Ai+7e8?Qp$#*b%OE6v#%S!*NpN!+*ezJd2S@b{84D3v_ zYz+7etgN)mj6YD8nWdwV{XYbkqmhu2fsLWj4`O9)^22;_u+sk^R*v>&uA20;OdJdx z|IkuDA6jN6M%I7mEqd)A^31`;$=<-o;fJUbc6Ah0bo^=NCoQVT#Kii;X#ESo<Kg)i z=Jk^;!oY;j!thTkKiu0-_WxjVA~yC`|HW;o$?BUM894r%xAM|XYlp>0m%qk50YPx* z#waQdKh!iL;9eMYKW<hRkvlK8IzJxf20i3gEJXSOnE(`KRLCan$|`o`#)Wl)CzIJG zKc62XF+}S#lO)aB;$}SU$UbR)CO#3>-0dTNMKIzpRWF5khsyH7P8O;ZYddKZ;XL{% zD7n;))@mjn5;p*jNQS%#67dOU(3o&(o+9Tz9fpLgfniTXjzzIS-`?k@3H5Maf$Ck? zTXP&WA?C-u+?dcG`?L|=<=&|a&_VzjLsZ*B2&gdgV>|pcasX;8KJk5XtQF@Bmu-7L zzphQ!-`yM}@NF&Yry|lOtkK2kru&x5ic~0`{|m9e>{$nqtpZqOaa*|(@=t_G47)PT z9pAxTuIR>Rv?tj+J=`oG%-~9fsK=3wJ*&}J#5?}D>;su*;k|;R&XSwCF5tv_wOZUY zlPk49ihSm*;Z!c&xvP+J5`fsFq{e}fV)DRUsfVWS%}Ktrq{hsC_8l8js+7UK<X~;( z-_W_)Dq|pf&b7sAM19!!({&2Sz%6xiduJXPvc2QLp>!o9N>VGeYLE)ivGYP@((PWT z<Q{#Eur@-Y$YjpoOH%S44TQ?^+we(CTEY=qLB48z**n0t@|*HRfy=aad<XDB<8p`x z#Q6`cLkc`4UZ_uD`CPWT$h{~J7X)*TPb-hIPr6`<RGA+c&;_A$rsFEkK?i2V8fNH{ zkr%+Q@XW$scUZecbW`u;%=@Tq5K(1o7sRj@{<YO12aw%G7!17^-H<YDntjXRT!~*` zD`&WjdYHA}5d_a%RwokQ)=Jj2-~5xmX%W?2c9h!Us~R8@_U&)-ivjVec~G$9hjrQP z{XMSP=u>y$2v4z2yZB?xHvH@120e-O5|;1GAp&RR8K*ZsSpNnBW`IQ>;fNu`qYc|& z(730m3c1iuB-g!QX((OFFLCW1!PcMYvL8RPKdE8mg^TV%)Dd)YtC2)7Q(<{#7T>;! zGbp;`R3CJ)i(S2r+_zWgNF<JTePP6i%?OsZs?uvktU7LPPTOm(&X=pVAb|<=oqD(T zM|FbWmn%tzS#GDYuB+!2QFdU+>Asb!D9HR>1o8s@0Jz!+6ekNoSB6CtoR_5k%|Qso zs$z#;&WEn)qMX}9*xsAlORJ>GDK8XH<Etb)fH_wNDcYS#PB7ayVsr28z8)li6#2Xr z9L#z)&KY-VJ{VlVDMh9XZiLp*X`m1oj>G&uzUqV*0hy8QxdtCm%1@I(6LqR*n)4T# zFq8u&4#MOukWt}(+m{#^es+NW_TT>xZOX{_AG9em{r@9v%EC_nU$iO1kJtbIpiP<R z>HoD6{ReF-ASfg(OeHNYs35B-E22ciNUz8*qxjE{u!6YAzY6|0g3A1VAgKT5PU%^h z{)and{(s<38UF9MQwGNWkcelUt&sC#MrY$4ta*s`ImPkENo3o+VERVf5B&u(ki6>{ zPF!||-0Mh@N%FT56HLW?jfzK@^J>^eUc%Eq2yWZVRbe&rrKOG?d~j7cRAIIfm?ZO^ z3{+V|yJ=nM1C?@+=x$TuQRuFpEEtN`>g+mP4}>V`;&L51`--b-N1R8t%YS8oKgURz z01j5e*WtSjQqOLos-Cj$l>awTNXnU^j?$U$QSjiafI_`<Ik2YSngS2xU*apVZG0dl z+&#ddj2W54L{sdYdImibZ4K)hg#$M5G&Sx>LKh(!(%+a`IB~_Lcb_hlnK0jtBa!oM z;jUrpmu<8$_TE$IfEGa)tItFst8p|<T@Zwt6E)9EAkHjHNPUx&2nO_UZ(oGlp!#-F z!S$5HnSsC6Q`75#$T_m2$Z+oHxyz@Mb@<-7hDRjzF(=%xchK_37az<&HbM~R9ya}5 zaBEfw$nLat<&Sj8W*Lu6j2-LkyTLW$Ee1ilhNo4Oh_OCoJIE`K5WCcxBotAmW0(MS zD)I0M5GF-lD;xoKnV16PA;JrS81B$14$^gUIC();ZbkMF6YQoM;}%XhlgXIavh|g^ zi=WJ<<lLlHQ`keDW2mA`r3p?#cos@TEm~dhheD#L^^mcbq$(B9)Tby*qf)qq{Cf!b z84JNr5kS|9*u2;OevetpaczMI+Pas2DuRCAgyIJ2H&<kK7L7is+*})5^_bv3p=d%E z2l~s0NAnfDnaNpe#IN35S=agE6<}P{|K+#Ug#NIcZ<g0(MxUa#aq8DMeMYs?|IqO! zG{!zQ^fuvz2gaJQWy&S!ooOR~vDhXR-ZI5o+LlZpKC^FI#i8l93a$r_leYi|np2>E zB2H-1upyO&U4FVbcoaYQdeI_3tPn!%+%yfLG6N*r{9C?yP<vbxBHrRUV`Y)O;0IN6 zrKJi**%&loFvLcCam^`dI|-{O_VX8MGc%4Dpp@pZF9R|Giw(Y+W24_(%w3&DW6X`z z){mdH-sHR6qy(eo#PUMa)F)-DPx1>wEjBByD#}NFnkpF5UPvdubBzeNV3U2qXbmZ^ z2`qVG@_iYO822ESex^#~PM^C#=dZ;z<tra>7@&49kq<+;XSwY2r(J>gCLpGm8(I{U zIA;}QC|}3|HqRc~bn`7!=Yoie*YO{5@B}SI3iXscE+EZep^{kUnMC^es?)7N?mA&Q znKTl(Od7zvAdIW(VSCp(W6QZz#AlN)dD7ty4LdX|TC8mIFH3NS*)My$LzUptaL5$9 z*Y`h<sRxS7PmsF1A|*t(O_=eV4rF)!=O8LfC&$5=Px2jz0d6<QF52@>4IXD)YYO@m zKo#ivw?e*C5x-2R*1p6^TLHrR#-2pz3@&SgElI!jE6MW_o-Ca361o-y3iQ+q>9zeZ z6+Yh8moJX-NaxrHmc|8n!WUw1%!`b`(2pmqEf+)o%mXvcl<6NWy%9eoZ#J0hc)sGf zF|&?5f6uLW5^Gqh_j{`d;PklK4}2!ZvZa)l_AQAWISo-&JTJ;}F5Qeb4Ak0Lrboy< z&xxIo;;NkHrr)*TaZh;l((pYe5cMrG)?JhAt0x?VGp-Y9^`Wd57Ay^;)fZV6lwr!E zxW6{i$?Ty<Zal=Y$*%?K@#@R9=XHCgbCff?i25Bt3-9PG5n`T`ILlGK8ST=UOs<qs z4KLOl{Kgq}wPJ#qnLx~!-!owEeK|C*D4B|%Y_}h`?d?%M&5WniE+QcU1@{?2dIsqK zT+(gXX^^8ZBS!8xHoy5fvZQnYNA%qxQ|SYWQUICS5IH>;nKCMXIVqaMw*ndd)*b&c ze$@yg-~CMY4}r;Gk*NhIbeHxO-~@d7?f+}hfx=*S!tO8Ku)YX@c3-?TTu{iW{WQqB z<0_Xk7&Wu?*TN=yTqug4$rsuHcxq$)t%*XCf#SBL-&hbhc>x;4x~F&EnFwfisDn6l zgIq^7Gs?mr<3e!jjYWQN2!nG-Che*il`kb8P+Qxm%83s?I?b3mEpc%$8U!3i#U*0_ z)ZJCUKkIBJakFn?+rKo_76-e#tjrq<MwxJ>-CL{jQ4M8S4$m+$+B5qKQ`(FyP`8la z{Sjm~KG*Tz`aF4JTGBd9QX5IWp(EfBlJ6Tjo!|W@e5)KFS6JRku!4J$6)&)W6tQ|T zokZF1>09=y2=n+N5N9trF=2ISz?%zXhbY-n(O3JAQ}zEWdcVC#eOZB4WYa{!+QX}0 z;q*IPM$UoRHo{gd1SP}F^a-Bhr^zo--%e%UK!!S%dDT;Fx(<j<We49B0an}Ryv<>& zp+PANX=?`H?x#BVEa*t)(?EdRYvB{zd_(tG!yMx%OK<!dsHBOUV4%9fnaeD+DfI6; z;vNC3S2xPvkEz7u*zi7BRy_`;P~{QwL^A&x?!b^mzQ2@J&kr8iVy7`v(+uucEP`9M z8S`0RpGkGm?~keo+}5qp9a&@JHx)<*Ot|tOl;?N0#^|jm2HTQ)cIzE!uGnowW$G;3 z`fcNbZh{5Nz{m8)Y1V}fh0Er!?+3e)>ly!h_OK!}N@tJ7t=*a3nNu=Z!qO|iYD&R9 zbfNwdQ}9=nDIPc;wW;Rz=|&lb-nh@0HCIAk;FZ2uv^FT>bCX|+v1H6kYGKhMl(E)* zMmeaR{u7ki=H=u7=8Lplfy|+-pgL?sfB#qLK~7pV;{8oK^;nHgPOP7?AcJ&EL8b+J z1k&G|cJK^MuP})gDbzL0R>bxne2IUDI!YBIGndT%)>ugm9>7|j)4t(y16xzn>Ht9T zPF9g3JP8JlPZVnuTkYVHsR;cO&=GrZye~TOLcA#R5IEW-W81WI{6(MiQsI_%A_p<o zW&aVh&93%ua;Cj>7hLsxANa}VA|<D-GiDoemlTGz(slM)Z%Gs`#Q_aBUY3G>^jLKy zv3O07)Vlb3)jQa}i^jo}DKo}i`=Yop`GL&yA%~0<Fjz$Y^X-p={9)#`Kf3;%hS~mw znNV}=)7SNuNbVQ>HO!PY$_PplSUJ9EzB6YG-;LZ9{*OX?t@dqaKRoha8+S6-pHnDj ztPH*cIO)<qSJ1z$76vXG7ol>OI?T71AJ^^9ng1mDQ*iH-Ts{g}sI4Bs^cLZdXsUaM zC;onoRsP*LQcwxutv3YKPlm1}&+)rXHGrd&ZA4+hsF*fPk=Nlw>fBf9$&Np-Hzk89 zAKFSYc-#fwL1ubo+Co_<;Fdh-BXsM|o_y=LJzv&>e&QrjfUwgN%ndh^Xgreras?2S zM$MR!+GqGW=3q2RI|h~=l(G|$g}4ZVb85e-%zTRtpn2=<4Cbq(@sjY?0j#i-{-*ud zh<Xi9FC&~pF}Q4uStw?tB&R$}oCx)ta{tm}d`MPXXW_np|BvW!UxT`R+-vJ$|JQM= zVpd(txojFCvaYlS1{;N@64EwhdcytsM60wCgG{)G)~l5jsirjJ_-~#o^#0j;3?b-Q z^;s+f_@Z*8C9I-RyO;bIwp`SLB)Y5~hxe+!rmE75FP7CoYHKhO4F*4XeC^wb$jq>7 zjZuNpo`C7!5PJ~byts`Gjl%mA9_7EPecTIN_d94jhwk?au~g769ZE`rWXfTXSeV|e zVo{mrG<YhN&_mq7TbVqIrZ%tmD%@{+K`XpC+sKxPeWR@lUVR*56xhxiCY}py0?=q4 zUz_>!B0A@ieLn(*&hciCHW@Gg8y5$B&U}Tdu>E*x<*o}heV*slu&#QgJYDlTQTA&@ z=B$1jDr#^mwQ3sJOkXMLkHL(w<#nv)V3IJ|LLb6%WWs#VcTMo!Oce{Ou2t_->&BnH z5l#7ums(obdK|=hLyH;MV-*p^@8q#w8w&jj>?*zZ6&3Lp=D3sBQ?62sS!D88@%CU{ zyH@ftGT|Aa7!B&XgPWH&B)_U<-PJny4nuWhW$ejU{YQHNhIpEURH9V8K5dt{%C5+i z0oKiyF7Y^IkC{s9)W}A&vPlOfp;3b@ag<fAvQ@8cp;rVQTGU}JM@tt-5{1{}#@nI= zSE8aQF5mgD4o^B0qHBh~4h7~Gxy##Fok4?+XV5&PPJ~ep9x_QCDR7e~qPR-FgyKBu zGN2iu((L^nQL%T9^D`+Wj%J~>bY+eE(Re_gti+l)`8xsr=sdqjC5|Fu>d{7pT@btP z;jhPwsR|7pe5n%G&F&`btSIE;8M2g556hSJ0Lii=KU#1~&)9aM8TvK#K*>naKw<DY zFuWG|S1zKZ*e`tCzv<{tL?J(;A}-Nu^_c6KHNeF@0D?bV?1@7Ll!g7+1b#KJ2wQ#D z@`GPdN$x|t;+BkLvS<k5gcQMN0Jey3Lv<j6Q+Cx5mo$y>N{Ko~;6iqEcXrK|V8D#b z9Y!857tY2~ia#}ViT%Yo1Bk0aBXxzrzM{$Rx&*f4JtTGpfHrKj2#r#P6u=9<Q{2jk z%o)B~8yxPkXXJL@^<mJhJ$~O~>5!AbLf>ZX`}PkgOP&GKO!h?LX&#{T(gtBJld3Dn z-5T4o95i4@4ZKr=aB5Cieh_e4^mk^y_gIJ|a?GRH?r)n!w$YoOZEb;tWVqg)+i);k zWfX}-DcVFD+8f{<cM%dYE?cqeO6s$fUc4Mo!w6ax6{HJTyXX!V$08>+4VE0IA;cxd zmD#CIfuMeBwlZW`fFsmuf|2wZ8HNXm$F!3)H^MhwgKeU2Re#IoRY0cR;|UI?VS}lM zw%1(vg~(`t>$B=Ou<7ZX{G6*JXZbk=*g=ps4E7XYo4_F9<T7y*FI_|}jVRheHF4Y; zw`EC1<0Y3+26>K9I~m51vFUX4aBzi?{RjWquPPJFMYCl!aIQ~cH*0sug8WbvIg1<w zxj(l3?eLHT{%EExg`rKh-PCnHDcwvSAK>EK2q>5yS@?qmP+KU=BwXU04^J#cOgzk* zbultg-gY4{+2GR9Y!@+*?f2(&q1I--il=@k9*&r*Mcso4K@Qy4tXhk?$`q$POIFhL zbN;TZZfy+)j%aDqFjP?S1VS&*NBxOg%XPaIDaIfC>Yos^Mo%%Qa1ZG|h*BozkY#&u z;*8%IqEEZPM2lI^*xl0OM}R8&5;~h!;dI8I#E{67!-s2Tu~JGdkI1k;u?O|F6wTRd zQs8ih(td@+IHR-;G)56WyI`tQw=uQx`=sR2LVQ%>KUY8Uxs-jvZgi|VLOgA)IS3B4 z@;yzK1n=Gv0@{G>73l?%P4kW_VOCF~6y}q4=$T;!m$&;(DgJSvFY6{5r7IZR!1cDx zdQ#EcaUDHwXDrnWPvnyQWfWjQ2T$MYWuk@Qj+=F38-bitn`t+RlP)<4rLEA2*1jKT zG<kMl*^ZxNXPYaRX{rS4zZ$nuQ6lk9^3@B2YCh$!-gk_}Rq8*AvhAY_XedL&<-fR* z+c~U39oPj*BF*(gHleYjGjhJzy5{i`a8pYNus@MVu7GCDXew(h<54s<pZ~x5S^lp$ zNd|i6pG&bn_lJ%2tY9D^jMg4%s!TCkdpUGM_B2XT|KQ;!{;70%oHVNfCMq%%3pQZC zXauyM^;>x8dJN3^g5XtNB<-3jmKk|~_~<^PNZe<GAE}vZf`|@x8U%?&ze97lf2_N< zjMg@n9lbNUs8W6p5Y(n!{Qo$6#~|CHEn7Ej+qu)WxzpTf+s@o++qP}nwr$(C{qoc; zoEPuZt%?`x=Zd-htmtEo-dpQmLmCz0UrCb%BmR5$3;p7ncuqVQ)`Ay#2f0=yRNah5 zbe860uT+nCF`Xl46wuC?mU{yvZ*=2UzGXbMidfjgWc-l&9n!^3Ng;6}0>$lTHHG@` zyToy6y|w~&euZ~mh4LdJ2CHPQR3v42-thg~SIcoq@WC}rmcFpHVh@nYTR5<fi6dOv zr$s$a^LH9X8GKt7s5M1+5gQb<R6P|oKJ*GNad-$AWH0*~nTl4SkSXgD9WcZB8mlsK zd%_f<R>x2D&7CTP#f>&b8Ud9X*hUFMwE%z-mc?sEPMClWOIo{U*l}7dRCKmm(y{qa zt}U;zYR=887c3yXCGi_1Uj#-<Z)Z8re)l%=7xoimE6o(uQywWB{e9>YoNjpI(k~aE zLw6X^#;_@gwP?IF`W~?Jrt~9k5$x<JJ~NoE@lL^=f+Pl+rmuTR5d<+pgnPLTFn&^d zXP%P2^AV!RYE-EM(AIihvwALsBT22VWj<{F?s=(Ad3PeTo(6VKDnG-LXjuiNQMGVJ zsI_YAm4q!CFm>A53Oe+nf+uCoLBsGs;eGb;`1CyvWhycGb6y9TLZ1i$#fx?t8DE$9 ziNZ;|>YnU?`qFm#U!lLQN|Jk1Vz+rSTCXp2Nu{~cY^`W2$~3;rl5V)EAib>IF+Nf6 z#sN~00=CkfE{u#JU}B^+4-{8h%`uf6`Ojj?MAytoH|tpzjMl?GjWOwq5U&XT?k!ql zCjD(tA>cns9}JR!1aSv3b6M|qV>}pG_S)of$~m|*4I5u3m%wFG2K((ZvUBo{dMv@x z)!2~U?O<L*9lh?2Ri(@&Vbvj{EyyPe(NN-As8@)r6dE(;)REZvT(hJm5*jZ=(@c}Q z4Sq2399r{O7q%=OAs|zY7B%R`HP?!@vT@mrMXcaj|12xvs0T9VlMz55xDQOq1lb<- zJVW)abz-D<4)dTQFm|5d9Q+HmXP?2ig_<Tn6k#YKFMoe9S}PYetxx$fGCN@*Q<{EL z)ArH~ykHzI@H<?jFp!IYrKj50KITJ5r3JMeTYCegEr%A22abgIS74}$6%hCn^)x29 zvfUs3)ELYU`WIGio6E_T5)gt;wW<g~zhplm)AGdjQ9MW8S4~QUO)1!Lwr;KE(wRu$ z?Ewz6n7jBn%v$nC5F5sNG{b1mF45`IlSvke8r-Wi%`h}vbmE#M4>V*AGMj`i=^@6) zL<aSkYX-5bN^OW$HmByD`Ez|OrGI&@{0Cy;9~=b%>mPmSXP(Q*$U)1-{)>Tum6qur z%l`kZuEfT|_)oeL0~6CfPN|;{Eh_^%>py<^|A(%``iuD=Gv)uasssh?BoBt(OT;qm znntP2D@uC1b@J>og)Q5J7T2x>T`sY(Fz}GZ%$wbM+YlrF-Y484YhM)c@f(^bfBLI{ zWMFavkCB%GqChJ(&V`a3=ORx}0A&O}gTsSwReVSwBN|sgLbr#ZndHn>#5AMQGzUwS zXkzzNi#Xzjgo5}4wNlZD6Cy|CWT}rT1#5H$WS<mhY<S~q$^K+o5^GQ(ZPVW}Zq+m= ze}S4F_Fb-sPh$m11gj3p(5F<s;_|q@Zn7`1y&&ksbLyiqikyBldSg!^HxeelL~6KD zE>r0ujv|X5nGZ~}rE*{CN#2QDZIatjyAL%0b^2QLp10C@q&Oq(@tvXkDd;vi{kB!2 zFCBn#<W${)`AKZ?2G$Bg2dzUf;B=sjFR`A_%2iCwUso(VVzmIEm1_rJ@Y9RZQ27Qz zeA)#G+zDYJUK!qfUv|R0s1s-4Qwe$e6{tqXDR#<H?D+cB?e>l*>?nOaF!6?opQ`GU z+|+?5xBV7B=LjrsZhx*RVerpZ>e4~mHXn~21kMGay?h<<OtG^?C(Lg@*p;wr?pTJY zozXjizTN!*#l~@8{=*@KBHS>cE6<}!_G-x9!wrShR$va_+o$X>2#w-(BFx8>hrc1X zLuiK>r}>mGg(tmdWZvte!8D5by&nGB>!hPTw3xza3-}H-MRzpiT^5ZBcMw!%(q2aX z8?k{6dC2ZOm7mR)NcvQy(iq*NRyhKDZ=1|g&6<cqM6hM5C1JTc4XI9SZW>@)VNV&G z#+i@DE!<A`veifF?))7!-uyi`9kGG{T#BVO!+Ht2eoaZn`8$=Vp4P)}E9C?QsjG2| zjW5aVHx?G?c@))q)wG)6m9N`M>BV6RjvuJa-kNiy4P`wecj>guWCv3uM`9j0r1(N8 zJJ9uj4R{ye=6~z8A)>MGY}&&LDNZp>PZAY5HYX<y&-=9+ba-4Pm#XUBFs`SKvHn_y zB5tQJu$SHP7Cxj2{(||JRs0W4<UeRA|53#(3>>ud96x{#W?H8It2)fc!tqaK%)rF{ zqbdKNGG<`qVEqS9<bNn*mLGZeAJs1ZzY>e-{#_XUIdP<n9Q0Ti*nWiMf8(?KZ-wL@ z9fRVWi_*&x`@myg@#&1ovUJpur5sO!@r^v_$8;qya)TD;Q)@eGPeE)%-)Y67IPTYX zJP`Mz(%f1cSk~b}iYRxE{{42kDSJ}WY&NNy;L(r0fynv6zm>+fgg6reP9o<~;$dGm zRiXX9y+pgvZ=5xRpuV~lRgU#FC<lL^?WTbXIZjHu=|RQh7Qk;3+pI$Y1qZEqN^k~c z3T1ryajlmkNt>_K2hM(3)t2*&HmIgD{;>7%vZB_DqjpR4GaB`taI!K#S)*)hch7j0 zbRexJo;sNzMK(C<3>XRgG6ls>lQvaoo|#Cbd6bI|DezlflLxdt_ceD~iDPHx$O#xe zEk_e0ER2St+n{Q{I$C0fs&-z@Nzdp2>g^~aoqpROqB1wKHPc0s;NT(lP;*mQ{yg7* zl4Zi+8-tCyh3-Z2wS(P5SBFl*`UwF|_wb^;jKYrH@S`jxuDqXFd87OM?!@rRQbAhG zC(G!wSI&)=Sg!g2rgD`I(mpRkZX<3Gfr?3z^pfVQO6ZCZF|N(Od#yIQ_oSy&{-$os zS)C?9+m-9KK;nyP;#j`AgP@&|t1p0(xe&ugFeg*>5<z7lEof|>U4!CnFvO3*Py%tZ z&OuA_KDMh){rlJR$?xV2Bgz7Cd<n)4Hgg3+DH@#ydi*|I6+6-0evta5=Wc-i^@W_f zOVg}ic&R1!a~xZHm;)`V9|Ik3e%5%?vg0#Aadr!x1w=ut^t795BK5**IQ<fyQzsq` zfGZ)T^BlLE<J;}qS8Xj&;=&r9p}OlMGDfTM*_G`rCGw3madEI?KQo@<Ep`QUBnJS< zc_;vch5U^j30?d3D>R(DO3j(&lG>9L34tjg_eid>+1-KWFLHh5$;EM*c{Q-qVUd3< z28V^chJO2gDBj<CYENjf7XVA@wi0d7l>Ay|1w>c==mdA`2`@4+&Qv<B3B5mIHMX}s zPOff$pXz#*o_Hgp!jA;`IVtPMy&N@=)7IcG1(id1?#)WIj+E|YuqCQ#7f3Gq$5Veh z-cHFwPPTe3P<N750i7}MHQyF^g`WTdCQ*FW-Gv*@R8&&Q+mn;?vV)Y0yv{ENJ@WkS zlppW--M2vdu>@sSf^`81OyiP)E1hWnNxnu{v;4?^9f^=NtB}rCuKR231QNILtC5oR zdpMfJh@QycRHhRXTGX%{Od5Q-vfz{01<OVhGcjCJA#Q_}5e=`05)WSK<`2%`&DHM) za{p=WKNp36&$In>V1o37zuB$H-U+uaz88q@u}skA*2YOUUoyJ&=a71$Gmj7L!0j@a zEn%|h3L*fgI{o5>&*JzPQeq|~hi5U(4n%!{beCvl7peS4FeMTM1yalk9rgk%tQ3VX z>fX@xXs_qZiy0I(^|9H@y>rZ(!l5!Ty;Pw<ZpGXKW?int{2OX(BjNNy8tQ3SO0|Gm zS&ym8+CeU%qX6e88&}-brc$)x;j!t0JQYe@Rzywm;+ATM$J*Fkz+u;DWE`vL6Qg*_ zMk|9jwDH$qM4&>{Fg}z$K7jSktvbd?k!{%PJ$aPISa5!`^m3qQrFOy#x;JZi9~eWJ z+YKp5i^~}v6>s#>ykFZ(XstxBM%TxjUB~!uUp$1hWcI}`d+(dDT^ReXLY;gdrytr% zsWaGl(Lkje-dL;60Vic;Ts5h7e57IjKm^-AH0RVt&}c=!dZ^U*SGHR|95*g~q+~0_ zR@p}%>`zXjNm^kz*9*num@5wJ5k0LA89Gu{b(+-{+E>Bd=@g!R65^q5xMS1N(l}(K zfxlf_b!*>one=zQaE++EN|+uU>mOM~h=LLg!64-CqL&mJuNO62^~351Vj^+V)Wmuz zRvZn0-S!&qqc9mhR)P%G&V)!DG!=*;%t4>H#B*JPc<}$8i@?4z_nvsTEW?=I><w*% z?43tgWWD77Y)FV|rijLwO%*FLc68_shR5@+cV8N<Sz4Z<q@deTl;E?e8H*{MKR?#{ zZdZaUQ)#`^6Zj?ITDX#e&&xpxL{i?X3}*sjE(@$~V^ICt?X7V}3x>D}n5(%SJ8e90 z3AVny!+^V*#C)a6GMOn^HTg|0_oN_P(W{$KZH#tU$Ambt%907M|J5UmYEkjzr?Y1? zv_DKTZAn)MWR)e9v5SR0LZ?(Q0EYJKY*<U?s0t|DnOCbh0S^~-zV4||ez=AP!d5lf zT$sf5##YZ}&~GRMY(z)CNv|H5E5Oxhf_<qA<SDNrVwx!}J$A~hX?^>mt6KE2>V#0V zzF)1%vn#4-ILetwHrUl?DnnVdOCS+fJdxJ{!u_;-79D?P498ox5h^kksi0D`Mpk&x zkPVw6iy6k$ZiB!Vrir|9gLJ%J$4AmO9CJK+7zv8Ro&`Y&b;zD-QHuIcO0eHq!1)+h zUY5hwL&=Pd?CeomD4e~Nx`&24ppdHWmw5YjZy06Jsu7*m+5Vymq$UIaQ9RKuMG9pN z-Rq{_r)PBBS=7+06yzyTaY?Gvn+=8HJijZ8XU3k!tiJ%0jl{@R)g*xv*d>ua;Cx^| zDWO}42ZRd4#1!xYsV)I}-a__B79fptprG6E#3KUUx4~0!-86GmotDbRuux(Hu@yv$ z!7p>9MzwdNviwH<#Cq087YEoH5`|xB40t)3^1>NB^pu|Z{)oZLFzL9s&%7V=L2b3e zyWB0QSrtr#Ku50-N9c{&+k(w)4#e}u4n*=@#STzqBZf2U&#%YP<sHsjAl}>|mY2j1 zd2u_wNY)nSU5?$Er$Djt+gE~F><QaPCrM5j?67Ls{Hg(3!pkRwikjhe<Pd9)>XT^g z4a7G-^P?p<4fl(TLP=`Y2Tc({zszNAz?M~9Fn<Bj9D)zwU=bF0|8a0H=*Rejb(R?a zB$0zdH1rlL_D%A7OGI*`AYX#+elDN>xR;9eWC*B)B|WbI+VQ1C`iSZX2TlWJZ^Wi& zD+*aEpEbtxb>jG21c_uY9)Po-ol{rAx>0R@Z&8!;lahRMWDuL}R>$S<-0k&oFx{&1 zPr^mo7yaQeZ3lmI@z@`}WUc`G;-@ZdE>d&5g7cc@+Wyt(;a{dxT<xq!9feSyzI~7I zNU4Rd0Qch$1ftt17gvwg1Eoly{3VI262>TEayC^W@JRAdY9KtkZ|d5)G<&a4<q2=x zt|5o|=;=2Eh3@GJHcpmS`RnoHyqKxnXve=Hm454Ttd_hOUt1muU*aFYa5L^Wp|td; zFghLid@c388}i3zpL`})UzlRYN-F^wY(H>uH<fLat|O^o<d&fU^TmOYZsXO`*|yGI zyU84X=j;bkiP&^daK_N51b@;ZEJoj$K~m7Ymf3nAouHYj{7gy*g-cwkILMA)TyW<* z>x?_J^nl71vN#{(ppi16%<@FRmfWURMgbo5aTeRZk+TT6CqUlZnd{kWbm9Ny75Sft zeE-?#vNF@M(zE<Dx{N;^>;J9MW&E)*{kwsZftG=R`QLimfAqOb9RGIn{U0vK|H?nf z`0F2*&i{3rn+-o>zP4mkcXf@p=_uAu8atzDZ)`;sR$`+TBXPRoYUikUe=mP3%+(^L zE6lk)Ou0AXZ3vwvUB(KKOE+A+_Fh5x&Y_180WOI!t4=3pEMVvv^_bNy%?+DWAYBHM zii>Vv*9iR0Ly|sH`NH$t!kcV3w=B;FVWb;wCWJZ+l3;yhF1Z&j&A_NblREc}X9QU@ zkHH?tOB-DhgD-FmnWWjz9kY|}y!2iv6nb5nJN6v>LQP_&YY<>hJ1bswt7W%_2!ZL* zg-&sYzTT4-NBL)O`uGKVn3C7`%tx0q)UWHjM`u>eT|k}9?Kp}#{9pcu|AaRD?}rkM zOsxN8whG^OJtceD&EoSBez+UAv^V3B=O6k;?PoNfqNEhK?~Ki<Fb>KP1ct-qBfU9V zrQgjUmy5FBSe5h(%>w=Ikc-{$E(40Q5M4SN-bFw#c#N?W@#<T<)o;1EAE$imD1{6d z(rh$O$xLIeQ7q8zu2e}V%kt3EB@6_8xG|vfYjrCX$)bd1xjVrZM{N>0-W2UZ|K&^% zF=ZcG+Hr{BV7JJ6o9aHiKq<^K&_Z`VwMadPwos0LZk43k<c~o;Am9X_RxnkUPtLCa z4~P~_x_MEq8+B|vZ3$$a#g?Z+0N-{qE!O$E5`mckurqR4qo!%HFIbOzvU019OrZE# zzX2qAhd2%=&&)O!geVJ8l5(1Y5Kk?Ys5xA(9iZZ+8^<fGd3cYt4Z6B1>ZfNggC@-Y zh8|io#d$Np*)0R8$C&Xd>78dl{p9zGlPCKV^(>)aK<IHmR3Ts$(?;tU>9M}aYwXDY zpsd)SfVAYdQCW>PSS?gYHHWYn#g9bzt`&MPc{UF~x%aFHFOm2PX=7Vj<(Dd%FC57P zYXs7*F*x>xB20XFRxc%*WEU4_;{cB+tJe3CQ%GfWunJa!&ovVY-)aGq;}@JVms|HB zSz?8V^NW5|&+8Rl{8SYA@7v$tnP4(CU|;(AP^x3ZN@j@rqp*SEgM-URcbuC(`RR-U zcq*dKrfpE3v$hrTdJ#Ohsr~4-r^uGA-+Ok$o;0m@25@zExF>bUs|Z(k@1}l7D@nvY zgOS6-(FO(UBDwNPqaZrE7^kdk3-zXZnO1?_H7yUFe%WWD?^z*Uvhbr9p61N7!i>Xs z4&2}#sm>CzY<mO2Zg`fjcfD(FgJRi(`!_<VHGA`)%O6k}z6{g@W12zi2GF7S2VgvH zE7262I}Z^}*60Kd@cRt8BX7?e7!1KTns@Wlezab%<4SD9c9GfVl&q&-f7x>}d9Jc6 zS9^S5yBVaLdpcUbnde5+Iot1>EP;#@<=RYByC~~={9%O`4SUnA&60&e?A6pATkH&2 zwm^L81EO#0t!l<!k=Syol|D?^61_LLSRu9D$Pprz(dBlhxKQH1&Ua6KVn87@)s7I1 z2|KxHUi>4T&25SCPE9V&^NOFML+ou)zvc$@Y+6PYSjea1PnMY=t&(#Vv~*UQzC3)U z<Is8>_Z%mDXXd|O)<KyimN!^2pEwPToeY_1)b&q^j#PJL2ir1;p2a)C`!F`Sn*y*% zALr!yl7~az(Sed+e(5rn|B3oi_#y&8W+}9?(-de!&5*M4cOsRAcL(1LQdGznv6-Nv z2`oF^GA3uRDJTHb+^bVN>BtJ?kdefUc4$Rsqz2l8DCDA?S_QdxaQS{u^=g3b2f2`c zlmZ>ai{DO>*DFiCKHh*fD{6f#_in(gWEY<gU7*2xg(-k9g%zBPR|mp_NC>62HTjI< zJe7MIM^ME^7IBl(DZvy3iw?l)?Dt0Nw?Q)>#EVNGiV})f2S1dp2(un3Iv(aRDMpc9 zsA;!3*m2ft?O8(?C}+QhJ7lWUM2Ce<$@votp_MMt=wKcHjHa<mq88v_4lke6bwmW1 zXnl{K08en4+h}|A%LRLzPzxI5XX6mHLF5WalY~dp<`J-+U+!ab-Q)FVX>s4EA{J7e zlCu@ZS&a5XW7)@-;mset{*Md{K3N(I+WEBq)L^-I6;>aNeWpQmo)=GUNC64U-RK4y zb^|+@npup{gk9AfG&IQ}F1LVKLFADKopQUJ9$XqOL~6fm>ZIcumTqh)iY5Ld`i9Sj zF!Z|_xGoh@dsQAWiPz&+>gZEuK7sw`1%d4KIjx7#!%>U5*LX(OuvA@0f<xgQAhQdD z;7!{3iMn#G0k!#==V&FKjWDA-H0Ih7i!X#*c!Mu0kU=@s?4*R255k%=Igm|t>BNeY zOG|3c+p)wxZNZ)?M944002Oyf_f#uS9{G)90xzwS>P(r>qfJYaunmn^A|qWbgnOzt zR}=@1qowb-swXkLeDZE%=dJOc8i$3bEIU7M5XX-fJc)N(fymaJQOJV}wTENKIB5&S zO)XAp%oh$i31BuG5>CX#OP{q3x@wEwK=n`CY_;S|M|aL+Y<K=9I?W~%%kFVOFK1kf z<A)#`)#=p~qgU9@OJJjv27=c!<BUNcfQl=5nxNVvabc?a3kAw0;&uY{xj27stJ`9y zNvYs>?g+fHfwxzvJC%fpp53zuGu=nr_;Xy6*`m`yY~7=g8pbib!cGGTy(>zcHAg6J z<(VlvW$B%Qbh3EQnc9>Ch?r{@OGRHP-$s^Wd}F5~M7k_h_+^5}vS+Nt6sPfDYWHqO zc#KKoC9|DOC*zWYYv7EnY|DABOWEo2kzjL#5E|yTjWSCtJ;;44J*9XYPsk)pe6Z4V zaG6J0Yf*V@@pNj<_xRZ)d=njhGj67(>kX*pz9_3P`g=^_tH*1KNPMLXN?4!Y&YUcs zd4*1{<#mdH?fzKkEde1=AN1zsTBc*`qNv>Cz^M&Ph`uJfX`_plm^o~&En(;V9Q!x| z8{YR311vr8abQu($F3d{R>7U9wOCVpe>w^{c7*5S!^kAQvGr<582#p99WUY)qSIHe z`dq@&Mn<%u;9B_)yhlo3{8h5gJ*gOExj{2-K8XKF*&jz8Xk!wzR}qF4h)B;^(pb5e zRmmVS8I{5U(_2F=-dBB|XzKNR!O=n?Uns*)4dpa0Dz-svrm&C1f|A~3JnqmDs)<fM zyX%6|X~H>9ni`R?&>RTBg~m%E$d03h&5~c}`c~_2I>-r<DIHZuu@XB)2}Z1r9AFlU z$On^~kRxs%AU7$WM7hi;?hiX1+N3C}c1%{$PbpCguDj5UdNG|85&CDUsXJ`yGo@CA z!+GIo3WTNrXlYrgd_bm;(LGtb{8ebDss$xv9BNn%!8qA`D1}n$PeHG!>Gg9S&r0kD zl;g<UupjXs`eoOrkrSZ2s`!xzqb8Z1r13a6PhxqMYk}FKGv3AGD4Lv}cIEIZ<~NOa z)Z{?NCAYEppqS1RjwC8%xoL>2H4cBC94CZ%Z`JtC=xEDb6blhE$0-DPg)?XeT~z+8 zo^7Bj%bGUOm3``Ye6gxAF2?t*TiXr&HP^wwNlr_GP|@tdzq*Gp{$o1)|2F-z|3IAo z6EV&D<Fo%S#55}d(|;kR8Q9tX6=Ir!k?|MJ&v(CA8JT|lJn(ZD|1ZKc6aD|$Gy4B{ z{sn&)mduRoeysk|M$Z3Bqdyxn^S}H2e|Dn&6XX3q@}(L7SNb~(69?me>F=a%DO~je z7#9x(JJo=c{=)sy5tpZV7kFMP%C3G_?n5S}ArfY<Tgf~jnlmx?8S!{{Y$^x+2TEiL zAf2+xI`{fX#d;%20R$nr6TO|-@CfQh&wWIVa}D7UiJ7cl6V!C(vG2s{zjjh9<J#2e zv&J6^xwz5yYB}=x?*{%#&7H#sySgH#V7b}Gxx7srssLP07sax|1$kw`mnu12<%k($ zj9+xwDL*=DKp|UPPx7o@K0blvKbv(RvXy66L6F*Y6%psgZU8^9w=89*gVDwUx0F2V z-DklNA-D7vLML!5V@%YLQX?P&@mX9%Fse<JjIf1M_Xp)c+#--36?QKFc9C5mh*#)$ zb??#=3e3BQKw4}{LBGMl^+y^UWHEZ5PabZt6;u?@C_q+`#jG0~S%`y}{=%xRiL_9( z&&Jxp4s|=Lf3IRmUsfn*#>5MuxwquAvGKUiUrXcx;NoMEW{Znh+=v97Qt_RRZz94; z{y|)7q)A1Ce8T1R9K5cTIpJx+8Y5{}0h{qq*fxRvDK+u~QdWCSF?AQPd^m$Ga|X4i zM?{^Es*KDV3+m0d{*2Oz@pR!`1i;c|e^a}j0V84oK;6QdXZb_yzYkcBMkXLGd9hV( z;{VVm|M$*X-b2u4D8R=*wDFpS3GnVWcT6%O1S~6B^Y2@^XRDA1=NX_kd$^7(+eeMU z0ko3Z7a}U8C>cCM`d@%DJ4C8qZstBC{yolX$fOnUbZ*_rq$}F^iadu{gcvP<?vo+0 zFKuhoZ7zD!iIZ}=Aiy-xsQm={=QA|99KZH~&>P022=mnl-T-w1p6Fb?Brr5daYK}1 zfhqwZw)41p97JX&XNcIbece(p0kIx?sRyzS%tfMrX+;gsb&@Y6E5|&4R#=BS){rpG zGw_N_+KJi3*izUz$^0jDl2y?i*39*{w@5?h^zW9rVXkT=Kn}NzpTsxjIPBUW#p+<o ztgX`>L-clJqq;k<XzYETLS3CQH&)%AeWxphGhRVl*EQY0sydfEs*SL)tP?dCIFm8@ z<zrL$KH1I0`XB7jH7XM8oWATdP*3J5C0ExTZ`${pWzNx28s&9y@TouE#ZCN`tB2)h zpe{pF#lF*0*->luxw99h)f$MtxX-l0LVoXTyKS{9#_&xq={PI}4BB6C?R*RiC=OPo z2wK~C5DLG#EPi_}CugDQ`j+NeGWv{H1VcNaE=q2msL1!(K{IWZmx56xbi0FZZ5c;N zr21`>oJgy&#r#Z~Hh`qMG!WtDBgy<{vKqBVq0LOK_6~{LgkFGYFC=7~oe=GHcYCR? z9HE>d&4>K)Jw;q5(zckv3O+m(0?J9)ZMb;?Em)v8D?4#q@*y1~P(Y#yI&tAIqRl3k zvs4r>9>q%&qS%mE3}oh`-)VbzX7!U8<@}U{zc+<S+e(wqV^P`Njj#92h+RdCt+i*E z&&CHRGtl9H9;4S(Fz|5Km9Y!G>INFVKKfuRS|Wn1<v>=$0b#^xx5!&)+boVfutUzK zLf9|PJ+xv5g>DYZ>C_SP$*3tsvRu-PIcbgR8U`IzT|k4Kc6x*3eQO~MLYK;}L2%v= zs_aHRirwlgzV5pD2cYcOUut2r3+B!?NktM_pXscozZJO|n_F#7FvB*@X%BiD&}d6g z0+kt9=#0jb2_3z4aKc20ZyI|zTf`C(iLV&ep3P!$m5Qm0**?!fWr)#Ohe3t-hm1>e zGaf58(r1@eeAbsNJIgbd$#1P6@)_j*5Z>!LPxZfc!TUd>xQexwEVhF+INq|_Ni$xW ziTAj`6bZCo1KVL;!S?Xz3V%Jp;N<VTT2HNP%4y^ewwFEgg0?E0lVkGNWYJ_UO#-Qf zH>Nqpb~2{4G#0Op7-7@Z_)%f(<HbA+#&RaYVh*xL(pm0FSetT?owJ1B(`B#B+`d-3 zZ+rvf@eu~~4^rtxLw*v%$rj!1&C)23fyV4Sm0ycjZifuLo|{h{QvJy~P0#}zWd#`d zY3ywuf#K@>6T!~(JT0k0EwLkP;E%us1t;w;k}thnF=|#2<}G?#FIM!H(Y>=GkMmg8 zUX<@`+yzsg#<ov`Q*KElLYz&JN%7JhMOCnFEDo}eXMhAY_%vciG76WA#~IbvR0^vC ztELFwqb{`6Dg|K5ac{ad5`U=KR}deGm+(voanou^`%qhlf|HCiD7{P>FPhW0V?@=d zTNbH-_IAb;FyoHul^oH3krkf>>!>9x9|_ao2(s$OcV%QthONIUO>2XYnq!-t$b)n{ z0=^mC$jLq#;{b%aye0-y-^3aG67qDY|1^NBO^SD-pQWt?9+PqNBu!Q65tBbo$#QB( z<J{7A!L;<Qzpj{HVy|t5>oswl^z)v9oy?=*m<>=tmW#^4WbZ$oT&k=yYs*5MyrY5R zzbwI<l!{&IyD$ZF>s9j(_sNbLN!a&<qI6F8)XV2E!GDedZ|1$w%8Dk~9)nckIp5g0 zq>oaLTL0J(L2`E_7)AGOqca-P#eud{<!n+4sHkfi-7fKhN@WM3GpmkI3EFC)h6LSu zZ+u&IvV1Z7TcJLe0Ov;*H3t05W$LUeK-W(*kwRMER2%(`-to%ayf-StwDXZj%?N;1 zK2u8*q8mdTcO3qf50+vI<r7WH+mxYYq^ut|R1Mi~hud<OeZ{nW6s(Q1+d>dubXj3b z@sj47D)_6~Ucqm@Nv(+I0}D)`y28t%%q<suo*moAMsE<yp$cpzM*W_a1!UtzP<wgI z|Ng3~kC%oeZmxO^PimrH91%vYa!ut{e;33?u5?&X5p}9+>T2Z3*T9l1%>+##pCSQA zwTTxmFph$~*%eJNKs$kn!*i|^l^&nl5Jyi-IL&3qDAWP95A^9`6BSp;8P23qfM9Wc zd~*d@?Bda3MD|RFayJzwN$>S2^$aP39&#2eeI---<7h`urN));NAMLuL!WD+gIVoB zjhcTSfc_Kf2tF(-hiZS*1hW<Lg)Vs@wUu5LB~3f(nmF;9lyp^*bE;D!L#XF$MCb~g z5m~N0)Y#}gcfY6qz;ZO9-0>N|w<;BxYzMn6_I}r#JL<PFKF!2^M|9<zWo(UDrLNKI zmhORE2}Lt^2VVSv`HOo4!c)Gme?YRoXTwBXt&GBWH3I9>Ut!~q0B#J)?Mds2n-9V^ zI6+>y)7xniq>6T@FsnKKW#!jX0@#aYLXin2i-MOwlR*yQ;D5nG)4!_RXJ2M37i4nw zU`PJ|-^y}W&op*tHMBz2t<KNiXF?6s69@t83S};Ae<i|VkM<oMsdEx3pdgf93cLc- z4CPzA4Zk8@1SV2b>$@_)k(ufj5|bX_N@f@h4^aW1OUVKiIa-fX)ZI+PJk!a3%CT*T znwj0=%iS6cu=uP}W_u`sovsjF@{>!C!2|r>{(IF$^G6(-nierbn4)<|7#?r;JyMYs zVAkzV-|Kt=dzs^|w>XVYh|Y-z5|h#4e4JE5d%VG}A1|7Yb&<c>pWUAXT1(Hyh8<u( z5=kt{(vPUCQ3n;~p$NFcskG`k5|$m3pIlMbf$Yfry(ya;5U}fC>63_EnaJTR&F-Ez zF@CVg-yH9Q_~~bHW)mV-unu!a7Ei|q#Cfg0)aM3sBtQq|2F6e|8oeSY-9&bS;C{xD zC|kGSG^}=Yvi$3BAOp81YQP-`TPRcL2rAsSb?WEUigC*_n&xQF{AY1_xL#jAi;#Ni zsYEov{JBzvkiRJ`^66#z0L&P|_p(w2+c(Ye4Hg_>tc%faR=9h07c%EjIYLFHJNj$B z52q!(3q6OxBz_gOP(3b9cueZz2y4~2Qu;GpCCT-+QLQbjtsSGOnW7FmY6Ov{aaz#U zi-pZEU_E<=*|cs?NyEKIO<DAkYmvBBX9G{D7(4fLk;*_Y6L$qjKHMiyq%(&tA=}T7 zLNf?(ghHi_Qwe<NvcDFFg8Sv7k{?y6)>_!hmw)IRv4JOKIq31asJC7^hV`$7HWs(z z50gg%n3P%eS^!7XAIT=@4BOS3J3EeN3Pzibbg_2p`k({f*o8d~G$a+n;|Jw`jH7E7 z#odZ2TJ8rNgo1)x2OC}wYK6imdJ)+@-9ja6X%?23OY4r5O>EIUi^?Wx&G$k>Bj?3L ztx5=*wJVZaH(SLDw!G5Vy_XEgah07>F4u3ay~U~WCo8K<Ak15X)RcF!!OY@iYo_h! z+szArmj!3Zf0JmjGr@3@rz=e)1Lv7HM)ZR9eGw^IpTK1?)&yomDB>P?FAtmgDt1!s z!aUW$;q?!*SX}`Hv#j%2BKEe1hT;V%x{k~6yDduV%Wu)Z`piiI(VMG*^E0$zg&73{ z%(Q1Dnaxg=<7AAON4ItSo&0QcWCes;y;C!a;TWCcS`lDtOq2#?SpixRRAex>S+<Iv z3$SE)3k(NOsAiOu*0g-oGVD?5w%P1P*`(*xs6{N4r9;qn*xOu`C$BU?4H1{<g@+5Q zRi^1bscSye7}>Gz%auiZ-T=QVtRV@p8xlXAdV5&HEK<bd7xP~v4jkNvt$1H1ax8;` zZPbdtDXbN0JZ#kqbeLsC4}~qMhXwOzq7zqIxb_Vj0d~MEnQRfwxZWoZwdcjaC<##A zg<K)}t2)oZoK(leM&Ob)kOs=_^Cf`|Dm(vZ>kyMxV-T=0KX8J}I1^@A0sL3g9`?FE z5TpY_pqVWH?p?N3J#6`NFrfYes2c(bRHjFF>X>cSv%yFDH&~*b)}7o%`qM7~qif0= zH;?*wjv@esVIO9CEWU(YBAw*D3X+9RkklO5LFf?jsOc<27HGK)V*nH2VM?reSxwIB z%s(^kI>4H@gYpsy7#CHIZ{xbI86q|_@~)t#IyX8w_0S4d0L?;8JmlIKH6={FtxY$G z2xPXi;5~f#{)89NF^MAl_5z*g)*Ey%Ib;VO&2UKyefKB;XNkY4RH3~C8w|P%SdBJv zvL7-F#0xRldu-6;ha+Rphb(%vZ!Vq;hNisLQLMoUW+^n8zO?5}eu0P=C5-b~N7drk z%TlaAI6YKUF8Nb)zf#P%-Vzr*k&u0Fu_-4_|0x}$gSLPUdOLY?Jk<L<^1N>bd5X}7 zc5o4GO8GU$+Mb02-Uf3Ar-ZoSzvSWJ<qUUv??ce=0v_+UuSi6*SshlAoj$8)$F*nO zVH0EgJapb_08rrb-o&FThssF-xG<t`CX;!DJ<~wKE4t$5z)G*<H*Mpt*XMNXo>Yma zp}tv4|KNCtH@ycr>XoSzrDp%;*R_U4HPo8~u9R7HBGAqk`kF_3b+8VJKaQ&w3M!n* zxZBCptl(ejZ#BbVen+sf`O>U9($~7eGK({#8G#^_H-Qg&W+#$`N_m@D%u3A!B~&jL zEE38AAFeETucrhu=MKv8%mlr~oV&SHdD5d0OJug6l#G9_2b(LA3*0Ltdxr11A&LH& zi!Dgsc)aV(BF}0$*|ss_#`$oNj!5^Xf#OM3DxQR}%Fl&aC0&hB+oWN?Z+(iwkT-wD z;%#w4MbMDdI|nHkn@mdXPybXWsKexJB|;KQeTY)-5EGhFy_L7L&Q*pL9&@R0j#HY< z5y+nWERxeq7s+WNzy@OeNr~STTSYP&ZTwK<K_n+O#ktn@2fk>Fp5*b+1(2~;68^D2 zaNk@5(OcMC=%vZ`Rz~kYGBgrXyI42OZT$#JLq>cDC6zX_F--3nr%RJF%j`m!c8&-+ z`fpUiaqZt?t!aRygKu!2@<l7*rY^N6Omr#Rogm`ojbli3+Ov0Mm3Ym*CJjWAmZ=+w z{oRvDL6afsNW91?QpkVdR`AJ3wq7|dx&w?y(-h4Vq5Dq*3ndZ!0mgBa>7rY_&88`u z3W{i~qU3UI%`S`n)D7eYWkKmLK*)0i8m&lwQ*&NXGr0<sTt^}mx$B)l1V6zJ3Ete_ zIMgZ5mIo_OIo0Nl@^Px`A457<49eFwf1ax86!c0~>A5=0MNI3@1~FxYZFDf+Mwfjp z0zDD@AyzMda>|XS;j38RYlK`dd+i(1zGAh*u2PUu41mTs^{^6u%6_#}Bree5w?Oc9 zH0KHrBCA~q8Br5NiBJWtlWS?!7q!NT$iGK*Qs_c(IAp;L>{5K|scX%B3nTOkPDK=k zbWXJv7hYT32?;*CDN^<FBVGs{7yISQrQviuoeg9pFCw-6ASQF8+<2IN?<~3PDf!%# z-Wp}Z`OFjX7^6guQrUeGc_8yp4{s-ku)=9uIJEqSt7Zxo->a@B88c7O20h^Sd=x3j zjt{ogM~|*_D-bT8kC!f>C6JUl%@IZ+JUF#4S9>wxWgkW--rq{~-X)BAvxv|u+dApw z$e-XH>xLRKkj~m_5!v?GLA&QYYJOUa)kAVi^_h{!kmL(#_LCE?W&8<VTe1!BpFp`9 z>p`O(<7&?^bLSb)jzxb}L8+#Am)WglI8FXEYY^OoihHThM%m80)7N-Ltu6M}7w-`Z zLQl#k<eb>on8U)ftA71*&yZ|)l!=yOxHh}CwA*>;xPA?T>-cpXkwq5KMk-4(dNM+? z-ZEQ4Jg3=o>Q>dwis;%f;1qE0vlI6rK!=wT6)VM2%|VpTpG?^xuT@~b0*3d+Z9<P& zA){rVd3E|)smEj#cIdF^tKzE=nI10qR^7J3svFhi@56*q$3m6D<6KV3UG}&>OsQTl z$|)-jz}6hMiy9q9<*DK%R5T)y6pS3|Pf}!}?$3VEuJw>0O7=t~T)Yk@5AmTiysWS# z78>pxo8N{cs}>-H!}MW{Z>&HUh<|owNC==D3P$@T(&*Q+@>4;Yb6r);-^M1vG!<^W z01R49Zc#Df5of5XfEneQzrx)s3AYYwI>?Xenu;IwUK&-_%3w5MU|b%_$^j=XR$Mau zSwmDJj3w8(cFhc07lv~shFQEQjV6E$D)M_6obSKtt|{~HzzGV3?MFodb`wW^sJ4#C zK7{b&yGS*EE2@T`K!iZ&GGpM1liF~)DDPHgCRqOf<OB-fKM6GoQ8&X1-z>9*AiazR zq|$jLjJilb0;UWV(fW|y5dsLxq5O0)$2KmkBY=2$e*!2g5m=h{751@KSkN=}m1xpA z0$ZgeT=NWQS-?M*_EZnDMtuMlXVrXXxZ(3Y{@w}p6*9#b|I1PGKkXm<_mcjP<AU*@ zg8NF4G(O20l%m+inWeBpOf#XqrBfd)WwbNVEGH>X;IR)Z>M}cg=>oQrx&*Fp<Fc>v zy!~1zfXb-l2sGB1?jEwTTfK2WZiqq?m!a}>JXu^s)!RV*M+A$+1Svrw7`buPr`&j^ zj*MwT&st?Vjejd0eVU&OTqONzQFfg4BIrR)<<$_u&qHTLSZGAnX5nw(>^>?)vRocX zf7+1PoQsi6Z84<Dcf!Ya^r;;;Np&z-zk+WM^v{(L15Nq;BwnZ3;_wPh&D((qU<lX7 zn3jDRI2;l-FqY-XSUqw<hEpB<VQZa>7#_Jn(gS}=H17C>7BQy5i?J}obwpS0YoX$R z7o3i7f`%~;P!tb&Kwgke-vyeMiu(xN$I4IoJGR1r?<<^{#o!tvE`84&#^y9jx8n3w z7D7t1n|-~ctUb_>ZSE5+q{U-NxrC{yu@L6`X_)NZ18Gs2HjC*XOAqvf!p|#ICHRA0 zPb<IMbL-&_$KxJ0vQ}ezuV6@Z73pswSGN2ENErjUOTWtT$1C|}EUg7o{phEeU(4J} z)=37GM-SebE$qygNNHqbZtXC<s+zz#04!AOF}k=)xA$o(B>7Qe!;|obhn$7XBNYbz zQo8eR_uF^TXlCRzymIW$mOSZMjf}SZR;)`Fm^k8dtzCrYXd#_~&hCMP*ChIY_;rLx zX~5c=&sI;*+9Qs%TFY}P7Nc=;)v8nh;a0{g&NE$tyGHom+P5&PD!s)4D*=Tva(7A~ zf~iJNPLm<tS#Y6%Lzm@>pd4LASPy+|8h`hzZW@%sO|({?^h;VQ$3+Vnulc;M01l^d zTB4*Qrt(t?t^{6~V--OHyIgX=SBLa;@y|jc;nAq&Msxl82t#r*bU;^@Bm^!*uo{=m zaiv=#5=tjZgbahvaqu+f<R`yVffl_~prTd6b0l05A{|D)1J?}07fB8skWXdro9;`I zj-HT<mIQNH6&>j^o%EDBc!$e+I0Z|ay)$|xgd$KTwm8Z&JJ6doH{u^|$n9=-b^Ee! zZ_%af-h+y|n5wB}a(v2^16=0?MxFPZcd5>j#k|*2lsuIJSg7J;&g=l`uZL3{@I;D* z)PUHCYqePZe9q35kmh<^Gm10SLxdd8O3G9`$^`KU1mEul@0%I}OLg-(<)}4c4j~p$ z96Oci-(bLxleJQpLRef4($3Mwge@MfLkg3|x}2HQk4cQCagHZfJ88-i=lZ0c7bmcE zXQ<431oPJj<3@(30hY48(D1<Z%bAoq8*aZ|@dJuF#Ou?@Z~fvvRagnM@EP*BHA(Dt zm5S<?cjis$DCKHtp$5XV#eBGrD*IX3MUAPic^<Dk&X+xyp|&J@Mi4@5$=?y*?M|yu zUd0LW_c&DU*$@XLYgQJYC8%*|Iz7#5Z^T_;PDsLY!FwY1v{SoBtdIovl0h%%e(@#T zNUu^sXb<pafF?sno3W50ZhW?Y<l<2~<^cZt<wyl9d|bwME)7N`FXl><;wT}}D$_zM za~Lt3SVza4YwIi#Sh@iW&DS?0QNH1Xa!*7DCK`09%L6Kr?@ecXnz5?mn&!5&@5+L0 z6N30nF~M|>{#aidakX-NEDC5*0FjLih(3K2sk%vJF0g$WxN9NM+G;XzVH~&h5q^lv zXej)Kqcl70@&WS+6KZdfjx;M2VqP;x7oUFCZj{txA(`-m^qoL@;?SrZq;Ph~?K#B- zl(OJT_6tx11pSF(7+hV;(40PD@Bm6BF)<loL=TX!8YtoZ8EV56V`|!qj>KqwC`i@K zCwHO$;o1!6@A0vxiONaJxUBw;HPc93Jb>7p{ZN7U!>lhFqE_6h-e;L0;_$Za%FQxA z{znmHK55X-KDp^t#IiSnpeGq^3qlqctc9}V0&sSK>dv-7y%9ADEU@_8!L5LpTbWi$ zEE}})_OUw0WUOr-LrzoK;1?+;xw|XM^K?;qzOaC6^t2J>3*=r87>ElmmI-8D4{*>1 z&g7&mFK{UyfEi)Bh|Dz&<ZvQ6R$HbKmnD2w8lFMBHs3p`gGysT(7;!`9kh~-$#Xwr zKZ1-ZmlY~o=7vv31IA*lf9g3^2J)XvJZ3rD(8Qovn%|EcDe}Q`U^HtRPQUvTOZiAO zi_>tqx8U2z*B>Jyduz!_i5-#MA?XGUh{z6>mkfm)|7L+Ld#3!cn-OHrL#+5oF|K@k zOB~GnQUOLQ+fJ|!XECtY_FsnL>fHBCBdW>PFrerMN}s;>gY%=YORka;+(Sfvbgxz- z3yTDxs=#)9STA67S+q@GZOQ&EF;{Y^U|O@?*@u~DVun7ARtr~4f(;r$rUhs7VKlAY z<(trUoCJ0Gbz>`qS7Kk#GV=L-bY@R-zs!z6_ePMFv@ziGf?o~9!b7|%*dk|*XQ|is zSEOjuf&`!83vQ@3B-#&i&P9!_ElzBiXOV0II|#C1)o2%WO}GvZ)u1J()0TPI&h0QP zWl3s7SqBaxd}y?<BBu4YODV_nlJz8{_hWnq5uFG*p*Z@2PFCu<{DDza*c^s!&fIGT z&#%+4qj+QC*Vj_LSdfUGuv1By-+Zamv@Qm4{2mGSqnta(m8nvR`N*<7`S=~+oRogJ zur^W#rzPXGw5>0i4PQFtMBAAlT*sJ9?W7{(gqwT-E};l|{Us}HM-lllLJF+_8d<Bs z%1!dQ?P4AfHi#VW5(gU<o#tqF#fVU)N!Ul7RX>=p3xpMU!=oHYH<xBP6j{JUf%iNI z=%^ZV7`h1Tq`Z*Tlw8I9U~A-M!5ZR-fw)wQ2*a-qCRRWN6fEwudFN3#b4}!Y^qqhi z=jfOr0Jyi{Lou9Ars}c>Zg|rPP@!ip(9H+4T1*CF-3Tnp@@J@SmHFQO1Oi+VnmcHz zyEna864Ee$<EWlHVV&PQrRs;q<@9l12?YF=hF&Yz#iq?4IN47to+LtN7!uZNwT=@> z#H@uSfS&Cf60^1ekEvI6nJYI<K$%8nlzydD_<W0l0o9yF@18ZB#<tv!-!P!`zsEvI zK|;IPGA$(L`1DQ|0(%vxKjQ2@lX~o^{EOh-xs&cLyvq<%r=C~H!3t}1i&kTETB^Gl z+|<@I5khCw%<nr2WNVR7{^~Y;P%g5*iYfg_(DLH6Tv?3gR!B0LBRdEJm-5m|61I40 zY31|Ork473hW*BcD?>L~FUqbs6drv0sg<^`x?9ct?CVG|6ggw<vkN3BqfRi1LR)0+ zq=5;`bYHz~(+l@Cwq^h$0rDv;k<~+2MkB-Fp?~7<T{3`|?=z!Xk>IpPqbCOfOfYgs zSzi_dLdN*vCmNXg-@us5OdL*E%z#zX0QW~TXquy`iv961pkx1LVFIS5CCVr=V7GC7 z4VpJ5&`gY-#UDHvg4q0a(6!YGl*|TV9g-|$B`Mc-aHf_!)naFcNDW=dgzid>2yKgv z;c*i~^6c<;Ze6$1)9k7`zT5QcV{)N-x=VC3#I7u3uNa+ean;bjY)B1ds>|xnQmuN> zOV>>|7EC)$x_i;_R<f??FL$Fv{>r6KAjEdy70i$(CLCbO^{&-9jF;@^PRj?|pz?uy zET+BCBWxMv<HwwwQ_EoRUXT^i$r^jq4d)8ba6kv~bR^4C8t^=D_6~SE;Pz4t^b3^H z-1>CIpcP%+r9rZ+VMv{WZ&hp$7of1#G3lqMXd7k?gY0N$zSt_GOH?Yvz!w?*A(uNa zQpL&^2p0N}H$5_<Hq{spb!LuHU}A7`Ixe*7Z*sJ~PFZKxNL8reu8&0`BbOFym@JI& zUqB$|<@yu16fZ`T*gV=KYluW}a|^k=sVWps%t-^;edA^AM8pw40&KB{mwdq1b2yDE zMdx-)Z=fAzq4bY6(TTvUGuvu;U(>bCb?fCyzZEI^A+-T)KOPCQ%xk@`9UWCxjQ;JR znSD{*Kxx#*6YCZAV+|rB{`yWBR7vUetW#lak6cZc?nS1S6hO8}-I5H)dA1Mo#dH)H zc1hkrh82de+Kr4#c7$RVR5p<6a>>XVnO7}7f^1I7O0X70NWIOBF+N%)5Bhk1?sbMN zf3P4;F&*oUS0i)>JCfMc{XU*wtK(&15Ejuw0+G^Gf*hvW3!@u1XVKyKZOv1kp~(<_ zvX&aww{6=^u#^ZopP2dw)<8WtXSHA~l_`-sB)HelP_7_IOUvBqzKj}I1x7!*6enEo zrj4x&V1Z$7U7Ci|ZES&8h&^<C`HQZ$qP?9)Q_-t`SUlfQh?*Y)c?Zw6WiZbr`n!w) z+A8K<r-IsUcwx&Nwu0tqY$qTJ`jC$lFLlb-5_%svqOdeA8#E$#KEl9HWeaTcl^lfY zrVL=D(<2=FDc4<3?h1Ky&_-Y;kn%K@yZ)oKhaay)QM#>}l%f-cc^QW2@`u|{3=pgr z=EfOWd$F})k2Ixfc0F-Q`~K%~3(HML!~iNGkhZHCh_<D?*p&p-F%ZCgOU|9@unZ)> zueUc1J9WrmIFBii;y#F}-GLgc14BA+7D>p>)CNez+&q%hme_2VaORdcTGLlISro0! zQh1K=CAhx+2tTf?%|>21`{Ni?ctlDIxkhF`5UOfc4I#RLc_#&QU`qZ|=s1ljP5TS+ zS_D74tuGM)a9?ds74|!0ZdRXhee;bCI;r|AEZL0US5AxMgn6W!zI2>v?EaQ?8^4kb z$MG%*J!k=&uxpfnJCIdD;0)>hEbK6;>8$<=x{$IiN_sUG$mq4E6?qLqchHjN^Wm6? zOhS{c->tfvURAZPYRznIA78)h7dH(*m!!s|qal6Cklhi<s)kp6J>%|RVTzHE;^)R} z@Y3-D@g#9LXtzt}?jtCpvt=ufooGKr=}$IMB)K9Vh8u`x3euom|0=oWE{7us3d?wx z*FMr0_iMHS<~2e#zn}}2kV6#DPh=d<cY$Wp0tiZRJ9(ad+V<a>ke`=+N3xGeiaKnL zv^};~eJvEX_0IjPbwL>JIQU)~%+Vn-=1^SxIJ^>Tp`$H0v!}QHmjI4ZocM6@v!Xi( z8u_7(q1rQYLFUyeF)oCb-Vj=J*e8suxORVsc4izBC|#7C>&LuMFAaL4&S%fZy57l$ zVv~`R_TQq%1+Iy!gJ#Mzw7<S2#P21L5Pr`_>V{-uJxzbuk=if20K@E;CcX-N_|)BV zAYRINZrZ~kg8><$N`S;=_9h(^ir}vu9iT=p5IP;T?F;b;kdFAY-DEn**?W_w*_?#D z)JtI#ivwG@<^EdqKW$4lK<Wt#7U1aVP~nfkeTOo`k8M8vKg9i0kSIaBK#8_(+qP}n z+HKpmZTD{5cJH=r+qRAA|HPa*CuZh8+=m<Yt*WAsnUz(QQTcsqy>g{kgh3D&v|f2P z_1Z3oNlXh&v258oBU(BYm`<siVtCr~kaL+1Tszss)gE}4K~^+00uT|Hb~Z!z*GhEA zzss~M();Tb0&UH49Ta5}_UqBFu#F$G;&QN-@#BGK({7COGWOf?_`VTUW)r5K7<8Q7 zI?TU5w%Fu#uhw-|>&sUtW{o35S33*@D@^0k`Omw^Wo{<2Q+RTgxpgGmXScM3X&zq2 zx<HZL9-e0}x5GDiWw;8@jcO?ia7n{sY?-@efV?T>hOvhqtNLVr5>Rq;fMeJ|%}YBX zTVSE<TLXze8yDu%{>-FP)?cjh{=<8Lvo@|i%t^Xmr3XZ!5~`PJcrPrpg+oNuEMa!y zs5+&ab0Nk3yY89!r_RokPNokI=c#C*GlGi^pI^xn_#S{S(}^)lz<*c-bOtj=(Cd}B zZY-=5W*gVIwH8_4tePuCP)Ji9-$)Bo=ZZnt;v98=x6-Vr4%9h1|J7hWRodeL24cqr z43E9?6#c$<Z2~O*oH&#RGFF$L^C_P3@#`mc$dU?{z@2~!08N-Cdy+A2stmId63pl6 zg%)*g+#yYqEa%iJx9pfxK<#~gUM}wSTr{O2%<?3}&HoLO&KL#Ih{G}hkc7T(yJBq2 z%BXGWNt263G$?#5w{YAitPl%ZyJw90_^)ddqWJEV$CQD@+cnCJovi^bG26s)0@kYm zevwT^(PI&B6G?YCkCmnnKd_0r^z~2jJ?Iq-xQ(`+484ohN}H4%nk8`EH%$M&cAVPQ z<_k`BbjJYmY*OwVx@HW)pj*oDf_~KP0$j%XRb3ye5YEdi1a#5G9)399$FKrX3A^$o ztp<(C$PHrS&e~fHmB}gIq2O2;w(V#lPUy8QeL&D2C~vim<wcqy9NK($Fv$G$RKcv> zgbp(rO8!OBawEAK8(&$0bsTyc4dGwnB2;8$<Mg3`aX;LPq>m+mo=xi>5<Cralf6() zUE&+8dbGbA37TDrEitK0%sQG)a)rAwg!0rs#*gpsdHsi^K%8&20$?j8UG9c)z|tUz zOlkDo?93((M_tTZI6OH$8-|PB-^)~a!bf?UGBmBzVINF>oGmD(J6z2dOajWu1Lm3P z#(UyrCj)rq9)Q-|z<oH<1aMoix){)I05_gVK!UX1uYcIGQ>%u)WtqhJFX*Lm1B3ov zxkpw~hf{_tjVHKSUA%XsUK7~hjRbTe8Dj&m^TSqX6Q$5TPglI}d+{DqjZc6(DYaYr zmnAmirFBS5{?0#fF<P*53;v@-A8UI-laso|xg*XN{{V7`GHdOjc5p>|s;K^aR^Wk) zQsXS|Ju?bK!VsKbuN0)aY$U496&w5U6CH%0wK`@b8`d){#P{^r10VhBr-St2%|!-M zBUZ4%oxOJ;-2SPc19OKIXBIv{51fkc5<Qe$^Dh8LOxdyZbC;38#fQCyeZ-0P5N4z( zbO7N+{7ruR0jgVv>H)?_AZE_=@9<GfB<53!I_g-jhQ?aEUcLLgJ}enR6J!fNLK^2` z4|tTYlv{k3#ut;4S9hwCTY&d@rf>A^VAcEPgfwGOHu1m|?lC`>(#*VJ)zL{rC<?dp z50t(&Ctt`<y?QRQHqB)_42_P|bN4aorbHcQx3ee9%umMIH|W@mZ299k{1f`pZgM+s zV>j7lri*Q4RjfpA8qAQ=GKYl<Ds0sgh)p+k8LJ)0z@6u1ZqKUVGp#}9y>Ktlky`#! zR=;Z(f1g8~_)6m}HHGlkLFFMbEcVFupP}0+u5Rx0GucDflGD$r1Noo(!Nrx@sr6<V z5ecn$%_g$y-(ckztPz$h>j4(Q%q~Vj@$aTmpDd`*DX6;26x(HDD!tDoqq=zAxd^{* z0m#Ox8Sa95(6O>o)zg{}kG6v7r7}GvG~kY_JEvyjsS``sK)_|jgF$ZaZVTYbsnmZ< z>zGb}ZK+`h1A@)bz1Z$(u^E?&INy8lV<QQA2y{8Jw~jy=lGtnlWaa9wd)KuddE{oD zcW*MBmAIs0AwVkqt=F5%o31H_1Fq-a);9`*;%DGfsClbseneNKcKjFt&|gU?$W*{k z1G}TkaxC8(;%{dQkTlB*5Sg4A1U-d!saWtShe5M#rA2?JGM|c<<YJi*dU%)Dj4rfz z3_;uNvG)}*dOo)3d)WqV{MTGL;fsvj1e57^H4a;3rC)Z%oO2W3nR**nvz{Wh>$QE+ zB=-&gt(%rRs6KFgY#Q&<ov>HM1JiyJ{h0`U$itI~3#L^ixcxL!G4tFpd*sw+6+R?Z z1T$&(qZK8pe6^3_?4NiabT0gfw2xtG>g?I}TpfS(e9=ofBkaE&!{{3D@FEHY>l$~+ zD%W=!ld`1t?-ZRww2XZ<mADDZ_EFvBNiS1dDN=F3GXCx|Xk%6zX&bUg=EA3;tFe(s zd44Pn)Pg+q>7!wkf6v4WM*R)Bb@j63)*?d&m7+<T3h73#?_xcR_QaQXnn)~*G%EQ8 zko|qoSg9kk9cu?gCt266o)7b%TJv`kmv$fl97!}0>JHKukeS2@s1(<^Zr)~+#m!=+ z01{H6U0R^f`s<Nv!bR??f}@Pz>Q`z`cD<&;UBAu!Ft-thBGC8Lo8V*6*KjAW;lQF# z^FA@7=lY_39q*Z;n}A64@#hVw!a%Y9scQtkJ9!iJaFV11>d|;8giM0<E}*ceM4<H| zzqsJ+uYDV_xhFA8Ac7>lt0l*+bpJPYOt8@`_?(9-97(7+uHB7g_n+!0^_B=FwziQF zc$8;j?q;7&y^bhE;nOp3zIJCQQf)k{HHaF@`Jw21ogzgYmR7{w8oVDYjlx^>ZW%t~ z3*&LQka(S=i#3M*-qyqjKfL_3GtaL^9r$GV!UpM7*P+=}sD7)uf`TuqT=%2mHhjDc z_hdXspUtGOkMIesE$j~N?`1H0uz?qj#kIjO47ngj+v4}9eh~Fh^Tno%Pvirp_GeHP z_C6W7XMgY4G~#5cy&6nLk#ukbmXEt-71Fk)_P$y^y(-(oZq9_lKN4^?Irzk>P8k>9 zllQ+L+O%RvcwbqPHqOh)Jyvr2*=j;#Vc32XZ)(VMGh(()zns^iZDu{|LRZ`;^-^b2 z)}R;9eGt<4H@}F42iu#WW|4dI#rul&1Sg-S%r@UBk_oY@7=|G=g*z4nk3nWRUtZfQ zRT>!|#MGGq2528sW-WYt?+FVi-g;E1IC;M>vS$A%O=3-hbbOVyET{^OSOw**mh&2_ zO&P5|#Sd$IWV*KDWBpfJ`o|k4!mzEJd~fL34_FL$6;nD;xYgPd%K-z+Dk<ptdXTlc zxnZQ#@>D+nA2E7|r&<jS44_Ph-WaHdwA}9<PH;j4l^S<k$ddb04UJiHf6ssql8a<# zF}o<AM+2sqO?DAZH(Ce|z%Lt8Ff0UpuZ_C%AcT*O*qBCFe-er`xA45vY{LSJuUHWb zCrj+?92GIHGF2oktkhYA8y0z2M^nYk-$5t9BlE&CB34s-EP!A}OCZy@Fea&R+A9vr zc&T_gX<Zo6&CGS1Qa~#kt`<?He%D?)3O<9i`>=edRp@}v<Wmwv_7WTWXAQ`~TFbI) zD7z1x9Q3kiS1qF4{mNzsphwJlu5+-BR>?V4$sJMdqSWuxCp}eb<4dLS$z%vdgjBr2 zbJKUoeNVTi_JYGDViCl$F()u<Gx$BL<wotj;=J@^<VkZmV*7v<VxNQ|XTVk!ZWxD2 z>%ErAQpi<X2>Y;WdAt9qM<eG!U>{FfHXM5JL8@5w$zwXfAg|$<uPNDaACtQVZC8R3 zkJh##DVUVQHl!uq&x(TBwu-ZTL|P1#V<7W9sGt>w#ezQ^!i2p!gs*q%%c`$IvrcX0 zfgTQbYKaFlkuWzJb9~6cExw!2i)rzUed$p82aZU`VLIu-@rFkL{#}j=5T@`Z4lG0O zF%1N`K9lJgfIsyQHT5SnZi{gb*!G_FpR4trQp{NcwfL%))qF4ZymN@UYHzs0Bs+Co zSJDp!`}3oMwQE;mNORjt`p<YZ0IllOuM|v50}X2$Qm0U?R`g3_w|(LU52L+M$Dl8? z1CFmUkz^2|cww{)BBwW0`Jp{=0y+wkBom2o!e0gaw$-uC>}Bzm!d7hl++1kTS<j)K z(GVjc?s~T$gnzF@lNhT=BAW*iM(usP{1;K$Hl<MWo~)wtg}}3$gkONEjBcvrlybIa z9iNcm%lN+|Oqx4GAq^4Nu!M5~_X;FFq3qIW`+FlQF7~y&5~#oU$F9>JWENKx_`^nE ztJyPV#{#sng3k4lN=3ZsUl_G7u@4cz9SWOf&qYcv+z5~i{y{0^iLMMNZqQ}d?-kRc zvNkL2)lM%V=+d+vd@xD#Y>I<VnZu%<XN2Z}Cpi%>x+l7<NSTSUs{#af_4UXN|EdGi zaK`827ylVzx{>IxBY0(G)c?urLOI<V0l$#;7?GcHls+skODAH>Ug?hk_75~AM(v1r z$hZ8<?}C&mazA7FZ7$4W_$SH8TYba_N1<X?a$c}REGq%6TPmUE#EPwQ=E2rA;>4<X zuhdU0#&VaNZ*mg5DZf-KAIKi47O|kGAu_)4Mgx`W$svKhqgW>-xN|E<sjCkwwTLSP zFv;J_cULdmWV9#TBE;80suZK1+E4BuYXA+~&Ozq{B9qKE)f)k>8N0;=KM1aKHSSNh zi>RFFecJ-p*d%8iQsy0y6mm!gI$T*+zsBml&lI(hc;eF1*TdgfR#_6?5`V%Y_(mdc zXIgZxdsHV$Xdy|yWWoyme&nG-3f82pan&7k@;?-(PSD$~q5{+fd!Hnhi<FrHhZET7 zpTY`AL}+$w4V+&0I;=W&$B%nE#ux;F^6CR|h;DGAkQga56!oyGiW8^bv(reo`jPy! z9Z%TO(6^kOrg;qmGIwbAHhO-HDV!*dj?@fsTzK+=^gd>G@coPvVNi_?3n=P>ULUIh zr3-27&;d)iOb0f1g8|YE&}pmPqGL3*ukZI?DbH`D5Sl!;kHx7*+{ie#=Qwv`Gj#nl zY4M7vuyrJqqJ@7=-EI~4rc~f(Vwy4=g8&gaJBR(;(ZHYATAp~=ZhTs8N>Z!31*2yl zX%BGKkkSSiFg{IKWc@__3+Czn6$gStUA6t0I0j;kdytj7^rq$^{t=4gy`d#AI{3@U zbxyLa5^~5Ll6#2Pf8d=g+pvPktRId+mL!i6|ITHoO9WzTs+nDtUA9&o_%8VTjYfWa zaDnwuDw+)7jihNKLVyUs-5Cu+ejM8Q%zrnf=++Aw_lAP`k6^2qII&zKY?b-GKm&mm zVGz0-gOjbNCfgl?lC~Z!yF4uoq?TX^me|o-`W)Kxp3Rwrmdz|!2>_x$S`S`{fVehK zn%^^ltZ<vk{m2cW;Sl~^c@+Ej>2m8F<t8}1ctB~yvOJe0`2~2^lr=Kn^j2g-Aa_g> z^Rw>~7k^Pc5C^~Jp_UMfr;ZOm2w2IfOZ#p7#F_$IDA~^HC@k0x1!*-y3xrDQuWQ~` zs|tB%qjj0GTX>FkySa8+kvd_4s`Z=VYjo>1D#D&y1U^YzMOtp9aOSZB?mP|N92#7S z_NHo+caU*KfA%?vLi1$pA`PGxuQA}CEU*%w<qUmWit+evP1mf}zI}Rm3b=adb3em{ z(Id8VoFPxrBq3NV1uJwV(%N*C#{s_KLlb_vLJ^K`yvAatf|=~T#Tv5S^l3p@PMC1< z$2AgxyuP<lMVHh-@9$n<e2|Ht+*#W^gB-q&6uEZj*Lau-D{s6g-pV>uaI-l1FVJZ@ z`mal4XDfHES8Gzw6Q0J0PjCvML%uMGNn|~Pe_oV>lOtyermC<r{W)Gu`LKHB?v%p! zh-pssg;f{|fx$~}bYJPx+K%QuQ85#oa>z~J_GeaBdymN3)$Tr#FX~t;B*_>u_v^VB zRv)IkVxc(q5%5tI^SDN$xfY7Bx0C+NkO`2s;YNZLWBdy!mL}`!uW?RGiU4ji;Y<8+ zVsmLiPJTV3UORAVVk_uOfW`SIK5h?5Q;->9D3%4z#@Y)SxbUADiK*>we&I$Y(rF!S zjgoW>$Cz16(Ks;|sLd5)Gyqp|50-N5SgL2s$xEFx)+_*nFj^S+fyRS_(V2Tr;ka*x zVD{6qEV?*!aQ!hs`GisP7fZa+zYb2A#XWZpcNwkqYg2<;J{a?_5b%1&wbvH)RmWH` z?k3YCY>@R?8u$Yu*4L|r`f5q(f|^`1t*og-M)-eEylsrOYFLaC6K-U~cD@AfR`l!o zxw5T4ZWg1jLXJUHH7p$2i1)^y2ZA>dd<_V((mSAp#~t)nbc>h0Gr8j1a@u5LwI*=! zTY_>>jCIK=)^9D=8DbN=iM4NUvN`tv_9E-`9hkVfKp$><hAPmLV2^a-D^nbqax16& zgZ`u37MofRawtl5#D>eazUl~VT!h=Tp{b(Ui$K1~Rd=yqi$jRi<4c{*{HG;j^cp?| zb)oNP^OIC0w>`~aqDMYuwgr7|=)$loUvB+?G=rfW-)=a=Y(XO54J%{-(}=)L@Pm|& zbEO0CTJ&v2TGjFt6+V72mHRwWqG9g}jl(rQ8l!I5Sq&r5>38{AudOb+U+L<4c@Afr zOB(8^+s}VJiP2Y=1EY>IB0s;qK($Ys+ki4$I(_=l#<tegHjN;RK_%ltFhKCq%I3w4 zaAi{X5Ziv!=uVQqPo>-%oJX>`c$=;#Bl|X8RPE24JjAqI`MFHNU*dbR)<QB0(RfGG z*H^`XyP@n^69OZ+k`W>ob=47cN?Oxi%SQUXO09!WjM=vEia5hg^7O;kZIP$k7MuI? zjws683>OeI@Jb*bKLl)|^iMdeLRZCKy(z0U0(MGR;ytDwZ`y-W_J|HW7(WDh@c^X9 zj<I|Tn9oNI;oOUb)KPAQw=HqKSlPQTLIS9VW2ljG<{{nr`^?U<4`NkZZxIauICZx- z)`QJPFf|&upsEJDDn#CSL=KECwB|N7wfRu)`QGfk^n%g$34xi)WqHEYNhx-{u|}gG zJ;O&d*sh#6DiySx-@ih1kR97{BDd}X4og-S?OOn^!vexDLlFO(fkaCUXO*n0T{f-P zhv|ZA{edxP+Q+v6P%k-i$$d`_zLMSC?aoWgm`jwRy@pU2rg<^3FNoI(N>;V)QYZ?( z@cVr8%aa3Fm*f~39mAguC=>oweo~aZxX>#-YCa{FPu+%3K35n6Aaf;aG=T7Ls3LNK z+a~bZv&O-FC+Qc8knEa^88Xpa<rqQOxSSU1K#PtyjLk)*MVyIf>OP4<-P|P#hhJ;4 zN--B<<m;&0XaJA4K=1SBKu{>6o)IIduR$^7Cww-%lr8_A-f!WR15_`3O;%c1n+?|W zFLg`@)|b!npm+V=NBNU;SDSR-i6^-8T>j_{7RKzJ;~TQDh#A7*M$oO9$4B4lXHast z!RcZ*2zl5OL@1~jE2QWHK4~G-xFwult03i=aAxJgZV2*VHXsPUd=t!0hx}m6xz_9M zi)BW&Bym~BG_IjEI5G!Yn@5LL9uh^aC2W{t(A1U3ryhlY%$jQ#pF6Bs&Srgk)j3I{ zW>@LVYIU9mSJPxf9Q(LK^tkr57awZOUv|J<wll0kT7(WxKS8{QUyjv@#i7Qanrz8O zS>A_Y==GSD?CuuhN$rp^SrEXQLG9n9o;AJ3y9i*!2k@`GI48O-+8cCvbdBaSvWMI| zR)s_83Aqp-st|1A;&9niMi~}smw&z?%FIU_^7En?1lG_MW!X{8hPPzxq1!@85eu}y zC9yyeI-Qv_g&IH^Z&y*>-9Y>}q`{AM9F^AUP8k89T$~Rmoo>;b^6&-m>h&u{!Ev#3 zcl~zTR)kL?fUvoMPoZk8bPaBr4q}jSCHFpg;X$N}SC&zvl_k0-@=wW))Dfi5+~de| zoD||hyrdN7W(Aio5WN|t2ikG`IW?Y%qccffXBFs8MJf7X&1Sfe%Vj<(oYPpUcl%4` z6AZ)faKajd?=NFNxH!Fz<vrBpso)Jz9y*q;cw1GiIbw~Pe>%B_j!UbsEWmqOe<&Fz zi**!Oc#2*mEKklm^ORb$%dz$-mr1z`mKW0|yxneCR|7KvK@I>u4p;OY>KP--gpq`X zmUW7C*G^GYCx#dfL?$1r&3vWu!wT9`ghH9ZG)7F!jg(gd1e{STNpuLgQ+z5J6zps9 zIKNG?-2TwCRsS9O)RrEQ(d%;YC*(M5?oo`wkJmj#-@>@LX)0(scSK=Hfo%Dh;&eZr zOBrosh8g?vPX?ag_WZ3^osAs+0m8ztWG%<VWn^RiDcM&B&HFhys~{tMG*rt)@!aj` zpt>*HYipFNXg89fq{<JnOPf-NmEZCgDMmzA?`B2NY~8V-@mK9KBsq472cRMBKuEnR z#oOFYTsh5SxU+!XoZ50Z0<>`-I{aIWZ$uW>gmpnti=21saouO_o_#OFoMyAvISBpj zXhQGR`^Ig54oB~lte%#Ev8Nhr#~)--uq0>Tryxo@e!>ahj`Ey2bY8dZN8Hbi-uqf~ z)CFwd#v^#=NUE40q1KY9-OP|cl{tgc#)OXNu?rvVY2jp6I3<cSd~>9NInG6@_eDb# zP2=Aw-JLiH+n>}15#JnRy<Ey=_LWMVYtgh&E?miT)9zlMMicV%YlG8VVH~zu^gL%x z-{Q*x<dL3ZNZ}$U%A>GX09WP&vpoC=D#|f=?IDS+?Uvr$QChH8)-LD>g$-c}A5NaL z?Z<pMOLDR_{}YyF`n&FDWw)zqFRY)dU}#?0s8s3jYo1j!`uk{%j^%=b31nB)S%M1T z73U&p&s}0u`}a!hmM^f*LcFD`JGS96rB+U<dha0vvpkZDi{ieu5@TR11PiM>$K%0f zx@q{_w8-{A!YrM|2%|bO$DX~tGEJN<lR*|P%2B*+|5jo(8qd=%IM*pNYanXZ7VRp3 zkU9nMLL#$5%h<YAL_R}pqBRI?w2aT>1zrig(o^|BBWjUXQ7MoHY1%li`iNBPY%*hg zfM(EO?^b_~8PlbtCSDS?sk&2=8R6rv7-#8aRM9;DtfE8OI=?JO_66;i7Lj5X0vS~Q z`kRdm0Hup52G;r|%I83*VA`YbAYmiA`yVJu!n#fDt5*2Z)p7!~*+eOwWn6Akn#cV0 z3y3X-mFGaO9W@AbsJFearx`iKOsr6IZpiP@3HeRqbJiDR&ePRnRX%aC65orstPvCn z?o`yS<B<qw&h0DCiYw){#m?=CNd!8$$tzQaMnvx*!muQr@p&fa!cx$XMwI@~F!tEa z6Zm+Ol@)yS47!I5Ce(*n1SqPq6F+`{(F|**EJE^cO6mnb{hzn61{&{}sOa-`$yiV3 zD5XrqC{w3*5e-PiB1>s(J7Rmdn18_6i`Bi?fJ%2^mFEShB|bj0DY4pa3se-Uh&?J~ zndRkU{25tH-y?gtc@KnL2E-Nj0KZ>>{SX5h7tSVpF1V5qhPTnp0e*p@RLMU|EB)x* z8KDJ6MHL{!fFQcAtyPx?Q7&OT*C9-v<7vkn>*&mek172_qzNE?-D1PM)6|?LzBc;a zwU#(A+zc`bE5}!60eO(jI|Nn}!~_&k;?H!G3(HYmd>F)7=U7d2mK$SP=jFabAk597 zsTP@)V;Hvx{JC=QYa#>W6Mvg=Mf_ho%bou^dZW8Fe@8D4w#tGh&#=F`HVU~#3<}H4 zDPLQrycd|6vj6o?Le&O+u;Ea&$0+-_N}_jc^I}?NnF+!0hPzjIms_+Id`@Y3*0#L= zoCHC;s${7Bat|VaLl55<De0TpZGRh_a%nthEP?<jB!tzw@8f2RpF$Ub+ybBWi(a++ z{SgFZVr%?=S{Qzp{zJ-OW%^(Ix&IbrGO+#+GlPYl^M5fj*qJ!~hnc~|$ngKh%wT2v zZ&4;QC&T}UGUW_xOy~t2Eexz_gzT)1C7lhdEsXv*9E1J;X2GOoWcu|48yH*In*DN| ze=&FN>K4Yo(qKkTR)+spVzU2#gUa}CRk0Q;^M61gN;<Ir-3b4+{@<Kx11FRJKtBGT zWfhhbQTA|hHnEYkHMJvPW&ST5JpJ!h6+3ZB5m^I!dP!pwTW1Sr4|)-G0!D`4`uyia z|HJV3J?1}JPNn}#O8k55fA;tf?t|%nYC^A0!1Bu$`7d%cAK(8J@_#8!<sFSp9Df^z zf~BwIfLriKg+t0oTf2#WnM_jw9YT5T;!s!Y$S9J>7oGA~ploLGd(%BAxKG@cIZDt* zpL_-|3>hl|bZD93xW+_=X0Ygq#I$Xhn<#$^W^Zq8V)I)If?r|B|6KZi*+l<;+DU#x z?M;~etM>olnkfBO`~CmD<1qinME!sEj{ncO0L;H$*#E`%d$<T9Pwit?Ne$ocCxv+A zzRvN?_O=&hF`1y=KRQoOPY~gPP>TW#RvEucD^yL7?FW;CR@vR<y+2%tP2^7t7uErv zLfHS(3Vy0+A_E&Lqm4Xt+dS!l3hP|<Rw*}>copOX6nb$-z=1*$4&28khTEDle(bnU z{{$LUAV(0@MqXlFfV}C%uYLTfy&?SfJi<hNsWA1HA%L0Q&(-RSIn#jBP<rpEVqqjy ziq+MF)|08^Q`CxzEe=OELM*V1WLi=j3%tzw{M2FFln$gk)yo@6nD96DKuN;*J$i{L z!u`W+LV~>2g1J8iUm=M1n+_$U`8oiZr1tZY6MxC-6HrkmhC!8a8|7Z_-6&jr`bB-| zvWt25QRv-A^c=7hn8;vHKh~O2f?6b521tb2{%(xzur9@9iD)39ntiH3tSi-!FbbPe ztMxF|`MPM&*cUCgYPEt+xGfzmPzn)_<{ylslnm3#SmD#)%|h7|ikd5Q)fnB{81AwG z5g$}t9#2=38B}EqpG^t%cyR2<a1Coxg@9RPm$s4o)nUZL?Cr)pL(PI7*$;}R)hd=- zN5i2_og;-B=Ozi=U0tkaCg~)plRmvY&lXr8mEW|egRcaqD>%Czq56hzn$U-h3P4Q4 zcyB><J8QkNe7vu7&tJ;r$1Joz6SZG%pHO&%gUUYW_pp&)o}h2w=yl%{)3AIyhCzI! z@7}h8tWdjodqxB_JlwAR{*t!c+SOhoFyu(XMT@Q~UmLDwe3!`UBnBshj`9?%wt=6h zY0Odqv8h_HDC;sHjoIMWHJW*G4*(blQlu+rP{&(WO%3?<CyQk)J#fa$MoVAVMu)~$ z`&)x-EjX#{5$ECIhaw@R{~9vsUFLafis()F$*kfq&74L%n0DS6Lt1YBb!<D=xc_6m z<xoUtH20(jOO#qnBE~a%s8Tv0PTEF_dlemLsLeUw{CLj2N%MxU3hod#Se<<0wKI=G z<rw8zbPqfrZf|v@VsdO{6{epW)Sa)}Ag70eqy-~fL8hbfgE>-6#oSuS$fVTj(=wS0 zkh_HCEtI7+XWTJjGKKCAq&086L!tN=c2+T8w&AWKz%M67u|wxY6kW-INd$Wr2fK(z z_U}`GiQ%%~pHA2CZHI{I7~QjJ7}V&Q(WKj)O)6xXQ@qfG9xPHs7fwJ{pE=7(aq~p_ zagb~?)$KsAj9xmOxk9?}_@<rVxfx9f1qa7T7M9cnsef7oxF4)#P95iMcFsXXH~V?_ zN*<bmbLG2PZ3l{nl~wjk>?UitvX^f!i|649#?eE>I%t{`cjyoKrr?3<3W?<t3&k@G zHJWa0iRq&JgAth`wxnp3#2~W8XLz<u!bTR__;%zt;LM?1MFVufLc(dke4u?;))dsP zcO?n*2sPiN!nO0@-XwaBLelQM&(-bCy_$b)d{!gi;u}PLhJog$)*?>CU?(cLFBa0x zlkRsovZMs){*^7WOHDq%8=pXLr=wH;+Rtw=z#dB@X;7T%u}(rsTNXeT0KCPPSi!@U z_HqbpAI8DxEb!|cvR?cLdP~_8Ry}h6BU(*W8E|7LGRN3Refe7?6X(R%4kQJ-oYP-2 z$)u+eb_J<K`60mq0$Tstm-60izw0rd7np_2l3ipV1|tUTVQEgzP{#fSTmKp(DQ1nC zj2tR_;&ridH+(}U2OcXhDpuT<m>6gkIXZ+Rau{sLMe(GW)NKrJ%M<Ndlbdh5I7}KL z?cez;DESEJ?jdN-!9Zjl(uIfI*(X|%7wR)*^H+g17@@`CvsX;&G3}iTNgCD>aHS?} z-Gn={y|Nt${d4`VtwyMTZJHeuh-NP+z{9Jn@et-g$k3ADFe)EG)#l>^Skoy*<$|?J z_rH%`g^i5_F`dAO@!+FzSpuRV%<l3HtUDdWFsU}*ZL_dAXKD5}PwWEY#lylQXUY19 z;_jUwTAsG<h4Lkq{A7lAK-OiW<d0RbhNOBv1n3F^y}EAI%BI1Lms*K!vto#Ufu9&k z-IiM4C*d#kfvUuw@vapREGRKtMq=&j9pfwV<rE$LV3M+xwj2S}OA+s0kmW0F_?Vr! zI5O4%Bqp&I>}a|x-`$OLYt6vcsTv~_Pn^Fb`h8MnFp9sTyRwmIsoCAYnA}%veI&t9 z&D?omM>pIM76Rde*_191&q#v|ubX4nmArLo3~G8fVAY`h*mb=2ayJ@WRt0r~UL-N9 zi8i%lCJ`UweSJJ&TIuhsFfJLvGArDuSw2}cV=v3|-_@sh7a!Ms5fns}A$(weDIV@o z9j{~2%8G97JX`JA#$bT(ijr^Nb7%TL&mdFzyjIlV6q7}pn*5=*jI;7hG<(>zyNVT! zF8<WWUksu_lbMJBre>Uv)_pvxyZggAwPYCSRy2~1_4qb6Z4+%f!rDnFc#xBxMjW&? zxk;e-ir<>Vkh~b=<ioBZO;F~FPZoSoN?slNk;y6!2R@{c&QIP(gl@*&@Lbj%jNE<I zEJse#TZ-<t<755lhy=1bb;7+gB{+DyqN+T*^7<i>cI&mYn=J(!kqA`^`)ldieu}Lu zZ+xID8Ez;+={c1VZ4!N1doSALdPS}qp`r<4N$inG;`}p<boKiVr)Yc?HwXc)<%&a< z)>~Ld{f=&cL`4kq;e7>H)8%DB;>>?X|320{8VS<gJ{HX)q|bbFzVA{6N#Y*+G2jJ> z9nZ!!+`!4HIhATvdXMKM!+fZGTNz;EGhB1H-zELSxar<=PY<0kNE15@P*0k5hr$Am zv}L0#kOUFC4qmQvKvU#JN%K&jZt#S<DMFko?X+wt-FNTt)sv+nD)pqxaa@~ZpPBEx zQVc0o3GRI!+yChepP{l#U+gfiZ+NWvMsHQ3k!W|*<9uEnP3NmiDCbG$;#lQj3?QST ztd0EuLmx?8*~QJ}a3c!nQJarxK$cn+pxW@z<IqS5Yg=t)mcq^jTzS+D>F_*6wwJ6t z3yoYWw*!K=eILSI4ywMH;UQxh)RHOCdp<+|S+3pttz8ceqk!fVf35J)p0@$;qmd=R z{MBBE9nYNIkBz@WAoi(j+7SXP$YU~HBqcN(-ko!fb7O@AMe^`hcnf17_(Dk+D_Xdp zhiuwYu_rd|*NFLOxj*GT{BrLx-tcU*64>bcm8mWgX58RP<=jiVRiO>qsG{SibJE0i z(NJX0gT4ao;;Glh1Xo!_mhUJ3<z}Kq?bxnR(XRUUM+Ff%^6huxnjN|h7uX0tX5sP+ zdvWrOkwrqw_`t>HC_czW4<cN79S)+ELlch8JCh@&Z^KqYlm}B#JsH9?Q#olEJ3;uC zo0Y;+f%~NNbZ!!ORE0y36h0~M#5&iu$P(=ENQcBieMWL3*7BAv@oiox94j969dWZO z@5&caa%CS8)D#l@ZlC(@RhX{(!3SDF;p{=qUu>U`kG5%&>+2ULzfkw%4U&5d-WltM zBjxr41UbY{+Xxx1qbsD@8~kKt)ny%cW4(j|Lv{HF`VR^lvaD(l*S1RWlb={U!Q8*C zBs~jl)iI994+P?#O%@*+7tu<h`KY~TFH8+CVa<&S+wRhHPqkX9hKgZ0%iJfL{#V}F zN``{>dPLdFwk)f_Jh5?u=i3z&O|Yy*C5{fLZlV_K_ESP>R!lQwog8{rNZ!&#f+a_= zmvx<(RuA9-%mYDjqjL(FA6|gv66|7ak2o!iYO3ikyC^JijDl_Y?*vxT0Wd7{tU5wE z8g4sCPS6+K!*{W;wN87#WK;<f;k5l71|mLkZ94<M&4_dG=0BWnx16DUH+{<W_7Gvs z(yW@S)V68lN>miVe4~g-U8+&d9Q~ghNe!`@@rRzrDp8k=&UtT(V_c}KX13NioZ(!r zkc-|22A3Jhw@Mb^h(L=+sq5S{eOKMpwfV~tEKN2fjp`gz#sdiU&ed{pa0XUBdR|db zsAm0M{okb(i3N_1h+6FaE0DX=nGFhR7nD9kTL$)!t~pWcEj^-Q=F}?qLN1wfc<njo zv^WJwW9=w-F>hd~_1B-$+}`h6V-C6(kw15HOsE)V0C^0lrAm?0`W6-2>i7bf4X>KJ zyYvW;lQ!^ncm{p#n99nrN<j|NKq^>`m!bf+AvBUfZx&mQ1ay{LS0<<qQGkVhG5scJ z-0zsc{8T1A;5e_qaY$ri?ycL$&|Wr7o^!o!<EOeyGQA=77vPTk=rcZqH;-oyJES{> z;6|OX;ExMe?H=3{^fnX7D@&mRg7K4+WSx00XBuVo=n^iE%{>?Zs$c&At{@+j_#2{o zu2d%fJ^<bxhe+khJo3Is-5Xk(1G0<rUbj`=TzOeb-}~a~Cx3Bn62qn5&$(QJ0+AUm zXrh9i@y01zQUBX}f-_rPnclSfQz7OV?+9NSIqvW;2Pc{*c{hWUuxC{KH1s~nTElQv z{V1{8nJMNLbS3ogEkn1Ako#rQ`yDe7zpyfL8nSYm?Dfb4iQ?sI#uAk*ES5KfkaF9_ z10vWCPe<naj%V)Bm4y%~n^&|EpBV)?jVXL$COiy|V%YYNKDex*=^D&~)T#BwYs0vo zcAkn!l&U%MCS@YJGGO>cxMQXP9Q4$BT+EZ@Um=C^)m&TJGB+1$8o;I@>poT(JvN4w zoO7yqt8}}{pvWQ$PjpjdE!W@tLT|;Z6;GPp1ku7Nq+E4)M_Hs`j`$x4h))FAnkEpq zOhJ3FM!s5K&37|N8i&c%`*fZDs__No5p|t|@wb(jOY4CEsnb>3+h8+D(Fr&enLB8| z0#MszULq^r{Op>%_{(rfqIHeL1k~V=Cf%3|{Wm*cR*80&#pMzWC;c%$sI(_JbFbSs z(wlIDxA)b-FqjG*0053T9MHi?P)5#~@pgCY5C%Tu;PM^dQ&a%E0^GQzPV8l`ISO=W zVY=!y)??u0%C_N@A^iugZ<9m}{k<=CK!m(rCT7mPM{DY=$L6!wekx(NDGWIp`sEqh zbo9=eAHhN~DFYlu*VJ4AfGY|tZU*3-o&u1tbB+toBR4UPpAgJpOo@wUP<$gJ?xlmo zXH2atqQtkapuz9mrM8x@-9T!f;HBeQttqh0X%VSvFVf|60dbM`3(<cMI(!&6=FxW? ztom1WBE;-_cKQn+Jui0$_Bp=F&<U%^y)K=N)5j#SWV9Ecr^TTv58o!l4Mv)IJp7IW zQ-7*lJjF1VTO32a|42DhJE)gBzVUc7KC4Kw;wQTksJrldHM3}}j}0OK@o=?j(6D?) zoZLrh!rG4iBQ9$rPpzM%T693-kN~Fjn~UHdAY<S;80oU0@akOOQ!D_Se>|*BZvDIf zBvhwYTFSsC_W(y_`3HDm%UqMc28}bD_(-yd9mSoqSnhFV!uPkLHJ3e0T^B>uYUrzL zSn_sA7DSejxpY^Mmq^@(JbCPbiWu)iYJjH;U8A0-tCGjHV%9Y^6kJ$?@0$b9<-=l3 z?vH!~<w8q|Iq1Zwo(T~X_c!zPj%75spuU}<)TvxMAHNLzC|?-I0Fl8nd}w{>`WEU- zmE)>fcbio4)yN#`qg)+mp6NVR3vj((z`#wkUE=(2ltRkTBeEdFVO6JzGiRvDqupDM z-VOKo8``xfO!c_no)I^+z)n9bVe*Ny*s0`HMpz%VuTRrZJT?mi!#_O}RqPW^IR_es z-eLtT6!udCf#eaUv^ryx(7C3d2UM0jB-zs!!bAzooJ$Fpgtp_t-RxR3jn0OYLF|W` zy;+;Y;yL*>q4jvU$qEt&rzkOYBJh1tivo2#i@xCHzW7PdD0m&5`nB+iY^=HZV5Zq6 zG;jwhlO5U@KSErg`Hlsf-&gB2y&%rOExhJ{qK}PQrDbS#yEcCEQ0cIK7Xck&E+Be% za22-sB|&oMPJkLeTG4>z({U5qWz{cg!XSgvDZk|Kgk)?7!#E+seEmf1J>j9qr&xZY zZ51{5Fd#OOS2WwMw#B_X(A?IkM)F6na|}UN<teHqEI#;9hyzsQH@E6ot9=%6IVyiN zQ3%A?QMSb&H5?{aCvqs%$4QLTXZhu($69-Zj+;PUbWQo8-HO~C^I}h7iRPX-KWb}C z<E#__4)pnJ@`wOQUI7*T9-9A12K7OEPT<7lpW91}puy3#Y{0@HJMrE9BYrb5`ltuK zEzCgO$(to3C0+2tQIsvuB5zgLHtGI*$q6{ivAeeAY=|S<CI1n@2`ihXU%V`>A4*(N z{b`9eN(leZ=ingK`hqYLLqvic><=D^?4pLt#$Pa!TX{Ff9hE{Nt=ZB{m7Xlh{Lc!$ z9zNZ0B6c?Ek4f6)Q%dhdb|#GR%w5<UhY=Q?K+c98CZ1R=BClGvWOXuqXloi(^XEGm z#m`6fjA>ORbEQ+6v(ED6U~{WeA9&7n4{eGydJnU5nkq{f`z$G-14ohbNjqe+71o$` zXT)0o;hOnhOZf~Er0X(0b@Rsy*~73!bkQ8FblNQRaLCQuF(jA+brf2kdj3b!)<0;J zqS)r113l$I=`*%$vUr8WXX#CV%c1b_Z>9{q2XS|7Dg<44tYQa07Or<lmKJ;47C>jT zIEhbh?{Sg*QMi~=sfij+2|?WSLIiU+COL6e*;rPyU~0|Bc2QMNQS##65tYacBAhCt zbSEB4WWWJyA~bAqORh@;*78`r8HmKqlj%+V!JsUZnihMQ==qtxX1?y7-Hk4u&Yx&( z_--VIS#?j6a1?2ESKrabxo*uMr)>}T3x@@Mod9vOth<u%3Gp9|bIzgQxYRL3-WQh$ zy2#1UWfk~*^2jWt$=G26DQj~Y4Tx;~^1+lE0(etwSUC$6x?;N%|5P%7odAWOo?7>R zrdRQ_No8pUIp0xbp;Q?)<IFlw7kqiA4Nwr`{uMTUH(5}lbVJu?<lZ~}XT1A|oD_Gd z{yA9IwtOyZnau{dL-E29s{GXNsb#eyc{4{998Ugz13xaaz0W`-Kj}wA>jl*ckz8@t z&w>6kAFOkqCwaW{5*mBrK7RWvuu#XWa)|j#NugOjVyuqr5Zve`4vG62qQr(UJ95}f zFA9zomoqD$q#tbXytz&7*ynB3b`a%SQcetjyqdm{|EAe<{I-}>w{+se&T!Sg$Z?jv zA0@||w_Mo!?hPNJ>a>KtidrXr0}gsP6W#f584nCv)EE!tys<FW#GrnBmiaXcC-~BO zXn@Fp)b%W_1;?JLBGxwYvZKksaxOh29pYW4|A>qE@dZl_E7#}`ZJfTA^H`^<y)^xa z)nKy0CBCJ1l9D)3XXO=|lkUqyK<G_ZO;5(l($a`Tl$v-x3{}2MR*7Oo_bOt?bRysv z%d39zyoYURRRWJ%IjS=aW2^hh%J2NuW9_%{+4;oFVR78t^aYPo@lZ`Sd0Y=wf>G=A zx?z)OKxl2rIR3;NUl!Pghn9DOy1yo;@^krz=~b>iw<jZ>6*(^Bh_WdCI7iCBdoE6> zUhqbjfM&F6gj&O`Tx7#D9&Z?@h}Dm0%yT*OSWoQJ;R^`KaR5hG)|sWGz*$`LtpF~? z$tw2O>zGAzK2&FI^&1zf0~$e|ByU_N7kuO5*D52^3TP1Ia7NhSwG}++(|_JPhKX+Y zzLhrX@uouB>~}SG(2b{L9+=D<V;wcW8M^DshrNOLAV3r~{y;ZlVNsR4Q2wnQ@cU!{ zc+P!~>PpVsP(UEmxTm_kQ~Bslmq$+w8rsLPTOWj?D8~mNX{pYfkEnk{pB`tSaPjP$ zR@5r8xmT_Va#rMMLOoEF5;4utl025W69}wn@7w8STpX}{r|V&C8#v-#K3Us6WqUrk z?MQo~*yj^Mu#(zlGVx1LG&>d-c63pKa2JX$6anenM3J6`KH;j8k#QC<*v1yBGe6AM z+0dH#+G>$TN$$xYc%Lb>K<M58KTFsMcVh2Q%2B?r`G_q@`}%4h_MfsKj`~n!C+t~o zxna$4dzoWWC-l0#Z&Dsg;Ey!<h!w*N!*P%F4KIFg`N|vc6RscZO>`>GWUs}eqwCH+ zV-G<R_*=wwRRC8+W}`6jx9<*t$v+GO=vi{BPpo%Av)Uc23gWG7M`Vjx-Z*x;Q+h0A z`n_m-A@xW)=tpkiV(cSi9cbq9z8}KN&xPKt2Tg*j@lUq!Y@%5dM#Xi8LCW(F*-9~f z)4VKAn3gIw?AVhEpj<>pK^3x%VHRmRcurLQz>dNBlkvnK4B+g7KN3l!fp#+N&H!-q zZxlXM!)WVJ@UZf6UPNe~kIc#&rNAb*#s~%_v3ffq0Nem;PTYEv#oC6C(4NM4DqHR3 z91+-UDFM+>-+$jBn*&mV)CMS3tofbJG@5!eYa6xtVN2&r{q2*zdCejCvooM}t8m<% z$Xl&YI`Cd_4ZPj3T<2WwbPsOcX)J}ksXq;0GX}D^PNcz5iYzJaEPK|^z??4RYTL<B z=uoIu)-<?)?dt*$K)Ra44yDIngx7*n?X2=ueg0YY+2G|PuijGqQ*Or3>{9k@Us5wv zih>LV{fiV8brW+ckElct00fA0%4SPOnSSO_{Yu0S3d{-NI%>#Le6l-XuF2c`r_x+~ z8bzm)oGM(jds(gDPyiHad#|NqdVri?Tr_yfJo_xPeiOqETh7mD1UKd7$eAwI-Pv6@ zte$<c!3gg9RjVc`2jmti%tU{IgHTuUfTJ`MJdt;8u%3049;A)+I`%8b*C2n7$mL1> z6$+up==%qS{?s}$>re7zh?!{|&ns5Vjk#uNOEq>Xtq)9gsp9zty3d4bPd~j&AL!v` zZ1f}S`Ri!dgVVwU$9OT$3V0EYPA<~-$dMhQhvG)<OE1)%n4*y@_&>6NT5WFC<kg&v z=Wk~h+dGuK2!PGG`Y>;-qqEnRB%PWxXIG|x>R6_BStl?<o(o){^mLH<KgN~Us!9@8 zpqtr#dgT?inF1uuXIn0W0mZL1z(?6yUy|m$Nh?nw^Bp;C{`Cxw&M<W=-wEE{fxDT! zyE}Ia-EW2L6U-GVw3(-W7~oWd!8`0Up*I#gUNM}_a}Jd|<SSFi7O@4cU+!EGmLEGg zWfEkvrx)!v;BX-~^(|Dp#F6x~X@Ds`XYw|DZMEYQB)DnfMoULYjvOcR6oizSU+sLw z2#TpZT%c!n;lq^F;?+<7JzyA#xX=FNRPrBg;{Ejb{F(oSI5wElR!SwlW3}B}<k6D( z5m?<@6=e*i?SO<7|Km`zNZXvib$CvTV)U?CdZxScz1UZ)@}D=uQjp8^NZCa~153C- zYO9Ai+mr9L8?_S*X$S`U#BKSf!2;`(x*kuR2;sP?d-k?=N{35UNZza!U`9u$6uehQ z3NE!-jFeY-K*-xr1*brL8=zA0U`-MO1h|2@Ez`^nZk_M~?ak=Z4^9Xl)Ak13lpMd6 z1FSQ!dG2)@SW^3GU32{hN`|k7wA(pgN2P)mO9<MD<c1D{HVR;b$?Lh9u(U>sqUesv zx7n~$H#gYEo;rY@SeTti-g!!hr=f$nbP+n9_JfLMxP7*|9y=~WaZ2W7Kqkz>e}{hx z0=8A7U1R{R=&(KY(DmrlG8G+Hf=QNLGF2mV8~Eig{|fbQ>}4T_o}sQUXL%YNKsKWD zvHHutm%TcD=%Q4baIs|HdF-W+o;$phROMRcu623{JP5R6FkD>iv~CBGbx@4>0oD{y zI>V(FZtI|x=W2JMM+cyJd-&f<?N2;~B}#Jw!A_D!)yKe~g1J=<7G7qZ;Tm{UKit~o zWXHCd0FNhlR0tqt+?6RH+hgBP^%$dFPBl>R6QYKQP7A6CjqW0RY?8;D-J$2$chJ8H z$wpW<2+@mLKNM1=mE~%@svrSWeOXLEAqEi$F*{y}I}9Tin}aa(Y6E-YU9#|W-kFmP z;UL5)H07xE=eHyrvYAV2(3r9!^JJ~>P&bsLDLt}+hSfYjwDw9+QDTq2vY1NS{Iv8b zBb&-+gnlX=?s|EL0>^2`sI{F02}IF25H=pG!$p;VjFZv>Kq7n!E5o?lQN^_V;%uk` z7aokg-VEZSiB3_JbO(CKH$O_$I1@2GJ<fZ7^;Y%Up{UN?A>!E37SMgFqmG&iuXB#W zb*C9vo(8UJgi!3>F`<xgr~$b2#zlQXwVhVs)T4msLiLUj+&36a6Z-MnC5(_^WMzQn z@S>dAWr-krk*NuusmZrtY@|P}+w!7XLWB4E@T!x}p8viM_fOf4W)<mwi_@t?<u8)Y z&mJl5sS#1p1XY|cc6Q*1(?lIGp7S-yDqOeeXK3ir-?1U@yM0&IAC~(t_cw0o2bu~x z$-cDu5n85W)Eo6%j+pf^*O%kWV%&wT<c(Gr&R?x9t9>MmGD7*m$tJNJ4n$F^l2y=x z=X!C2tYSZ7vj$LuD97EQ1F~Ny&2Q@puY$H(U$3oql}}sTh+ZvFDc)IoiwUC7=1bz5 z?7KPyOBJSS=+Om&_7iaLm`K5Z+4vs=fR!zS!PKF`{tjR@z4b6(2ik<oEli1q!7r7p zKZR+ICkODc>%!fb5CUZ`)Q={6Mf{ld0v*^K=pi%fp{7o(Z7Gr6d6Bi1bFs6(HVBTZ zNMwrDSg4uNE7kE$hq!Dq0E9T1y&mUCRN?-G;Axh{>&-=_$ODzX!{B(yO)6Stg~=*} zevi6&e1B;X`f7<^lJRHn6-m(-DXf2jU#3QMjiGp2q`1PDS1-ReV`sYq5C&r=PUdx6 zsEnOjz{t1-S5`B}h+!jN491<4vustD3scS&*$W4Ljm<WTrqfx|HB2GgA=g$3<4?PZ zJ7PTNz%;9+WV(*1FbX{QG;U&_4-?*BTn%44-U8Cgzpaq+j(3e9p|jk3xGhHxyw|g9 z2U5d21YKC${^^nM35-QNA!(x2OAND%{mSjUP186ffFVY_*96oFh+!>MoKU2zDNY|r z`D+`bW<+d*G9bU<?iMSq0Wy*#EmoEuRpy6P_JN;m)4o5CR$C<_Xs8wsfZc<1EyTds z=_tysb+Uy4^S79oK*^R=Ts(+Oe<}}uu!uh0T|v#W0^Oj&hQg-7pqVV#<Dc6F|I9** z7v$1E+;7BNeI$x2)qGCAe{|(<ji^Ngywd^^tu#5OsBlOJCZGi);3pC`{Pav5^?Aw& zp&Ou4HxkfhS+z0MfrVX<TPg?z11Xel`|GejlHt}b!(Z)VyPcGKn;BigdmE&9zcCR> zU?E24C3h!EHs$pSx@3FsyOXc~Mk0lb4<4_7#&1XV?11OUQItTqpRq~;kL9)A_a#N$ zJv$%PHnvETvi`a)Ne5RbUecX9(l@n(o`@x{TqgKfxnV${C1!^hPFf7}Lu0h6EqRhe z^?OFMeD`Uh*6}1)*6nY7ERGqgsp+*!mjMgOzY46-xe?i%X0^KRiC_8}!!u^siQZoy zzL=N_XRj|G;15y7o&rSCnt?`p>k&MbFz{}U=R(+@#TkfKLt%I!Ah=3l`IZAX_RUh# z63Iplv6cTl3_Me4T5SMKgY3~NTbUgK39^g9Tz+p1BH?ROmNO#Pqzi!Ad{Ks)9fC_v z9=dYiGI^0)xeCD&o(Ci*>hYg|aanw^Kh06z@5s%^au@1KVto)4ya+IFqs6$p`9A<T zK*qm*2r-?4N;f$2Awx5)m6#U!lN-v#64M;0ZkbA5NcK_(He3`~E*Q!M3WIhc0q6CW zBgd&Y5+6P1I2v#+>D+8T9U?R=m~siX*c;qRAaK6-@i0VN@ck1W)KV(Mj(vYcaI<k% zQ?Sx3K(7kDkA<<v4JyAeM-(FvMA&J<10JPo(9SignZE}q%`O!2f;S<bNMI()-$s;t zoJ%l|?}EAy?9Vs;&ycFz1o5QN9x9_NI<ILs4K>=!79L&pKvuLK8zn*C&0h4CqLQqU z{)yycPodLO?>Ygl+mOB0>@+(uCG9vL=!5(f^1wW+B7^@0Kqb#jAD=?$NYjQ{;a~R7 zZ13BEL6+9ohqn2M`#+Qc!R251BY+sHh3k7bkCzQ($dk)?%2im9A0_vvj)&&A)OPp2 zS*S)j)19(*dYk2s=8tE8!gf-Lr$a^)YrTk;<9eMb^!*d%g%)kK(f@mN;#T!&w;tcs ztRz)El6KyOvc<#f75ssG{%i&YXfwXjAB|?SZx~+EqBzWBu|$Y!M3@xPuhhluy!-&w zI0)2Vc>i%y1;D8kSdcASI3My89Tye6-;RTMA#Ibxi^nWWrU!+s<g8w_P4)6<g<jmv z6C{yK1-WUdY*4KJV&`fp7qSvBV>nf?w)mEV1UBWPkbtQ9Mb^G-n8w*`R<ivQ`JZ=8 z<;eb6#K`h~XBiFj3>!PbnzfFWciJLHGEBpVOpUD9>@i1JdFzMDO9}NtJc>hTCo~KD zM%0;>#7BIF6|+bt<MB>!y(aDLIU6b^A>y9<$-!z@4g*LCoveFSydhhGg;w?wy&fix zg3r1{B_6zV_pKCoFOLPCi~4W1sQe(kWnr>wsn}aVE@(@j7DF!y%hj=!p^!tU68?G} zeTv|7;aA7Oe+6TWe&wv#)UW#)3)e3eYgT+9?%e3p8f3qRwX!GNOw6`TVrckayp)MG z59)id2{OC8Wt*sj%%?fOv-Ro{BFFtp>@RPvP_z9hmb9zQ6)#vnThv^juZGVFs3sg) zD$p4d9GCJ@<E2QwhVAhB=FvB^1sZj!y@Q*@BWR}M`EQy9ny^kXk^jc5(lLs$s5Rl6 zof+NdZl}fPSAf-?!2ZHar&7ySqKcdRz=xd%_7^8+rQcT|_2Et>H!@1sE*2VVBUg?l zg!7?}vqGTkw6R}c=az=bln)!Bxx|2yl;uvvDEGda3;}aBgYJ^r8Knp158$qDJ7%_~ zH!;+>u+zJJSXaOYUOnz5)nLRR*b_*BwFBSE!zJsjL*Cc5288f!rTd*e_uQRqkb2iK zrLS5O|0LXldc`6BeLx@DMz@W+r~NiOyr;Q55E0`aBOtL{;n%a(5IyMEMHxAVe`0>e z+N-k%{Xy_Oh<zo34use9J`GHnzj){Re`ng05cQ|%cIb^gPZFV^aDm929u+6T7kd%; z+A2*m|9avtxfX^^4rAW3!^G<-l0h>#J^(zoRb7j_Oo?RCi?y_Dl9yDyvWgi70y$X` z41%~AuOYl#4zXNdoGs2ZbO{S$Eh&kew8QwFV*xju9^#Se`v56{PhXR%!fh<c(-lKJ z;0`!y$p<3K)_iJ;aq9xuLe6%b<ZWuk!cB$Kh)(G<fApx79PQhFth;RzS(UFe!QIZ- z16{gouLo-S6B(`>_?%ajcw_~5(MJUKhK;}<&Mi4i68yfB5}e~T?w~#az@$F)r30WL zU3M6}8k-w5eX}G};m&(XRef{Vi0w_|hT6%4rd@c%J7!@zgu9e`6v_oNEJ%dOY3e%% z4PC{%qa)fEalWHL?4@L}cQDOn*cH;MK6#YZ)&I9@9*f%hv8%d-UVND0#pnOl%d7tu z6}U#w+n3iH<;VkkrJNrfDlQ51sq^SigDo8(E;%xZ2LXex{~gWx;w6fS_|6_dB%7i& zF0Ld9+6H@RKP*>~L8!QQD<#Cjr)<)&B~*wKXhH1cCbM2+-CmGe{BEQn))B=mN5DPv z7-*`Y+m~wK5b4I)>r2eIi7JDYeWLjp&d&b!aq~LBZaqozv~~z%TA(GAk2}vQZu!K? zxBt0rP*7b`yNPXy7URMJ0B9`cG!Rz+3ii2*Rh$cd)^Vjfh@R6}^$8<1D!G5nOvY^E zi84*{8Xz*XMw#cR9D@MiPW;e~vp5#9j-lbLxMuZ|>s-s_o0*d{0&L*c^tAwRSgmAX z{cQyu<5S-|<MX^(UkICoVi{&j3+_c&oBb!=$ZP#Y$-;U2^2h>qB9X3w6dqV^WnZco zxyA||KZk21Y|Hd(dGhMMx9PY9hhkR}&N~B=&3e3`ycd~iAnn=MTjE4_g+|4XrsNdF zsb_^^xCB@oVdBFKZFT(zQb@UiqFZcofU0PmsmhNtA0K8k(JSj951=UmJRaMJ>5TVL zU)Yj)RN8mwS!hu<)@#7K;%ZO;3Vy?w-H|`faV@hn$w~pK6e+enK>^pC>0lGL+Yd$J z4y0leK^08Ui=`s77N@qf`Ul`PULNr{-4MhQ^7Uw;6l4k8m$Y3b0$dh+9THSG)8?MZ zP8yc$;HAZ)A6|1;cud|-n6hf*A1lc^|BH0Hw$V#VanN=i)*XKJQFEu0>p0Lki5YT= zN16p=pv)=n%RG4#2~b%jPhR0@M&g2g^?kT~J_tW=U*wR+H14|FK_8EY)*QOEEKG@r z5cmj7KaQ~^&bbztX#yyda~fiEkq5YOsNQ``bNCcVbX>OOH8%80gi}$ScGT>i*{zgt zA@}JHtUaO8B3vVz;RVyCmB0}M=G%ZBi>93ERG^9(hP@1r4mxt`;sKV$=#h5UaqYQW zP;l$++OKSG*e^gcr1DD3(1|XBI*m37XD;r?dq0A(=(b|lP0h(njUA#-2-P$zgBfj$ zRV|y&!oQM_?&m9ncB-k)J1L-R>Kzb|ZQf~wt9#PR#JgFi>x<S_j$N^`1fv5bYVmg; zDQUSmjH<Wc?9DQAuc@m^%8ktrvnNV9on}iA>-HR-PQz>v@U_58UyLI~xooo@PC0PW z7p<nuoo5s6k-F&KUzouW8wQZZOZj-4$gqS2ai+TR+Kmb&A^RAq@5{%;iJ~62ghq4? zRuWAsr%N+NFPXwTh{wQ1I0T+Nrj&@bfOxHUFVM8S;-f6>jAW|`x^(<0dz9ws4-_B$ zssG^K(rk-w!8SyZsYEBw=0w!U$Mj!3QmSO&!JkFwr}AhEzzFiu&qi!!aqRDm<)Rj< zS)DUct22V@ZxP(*O;QQe;u$DMo|uDvgmh{%@EJE~2{I?z27ep|B0w1N6R=}hzva90 zMFu<UZ#h9A-t@^{QxQMikrQ)|ORB%+xEQ4rF3ahzO+nqUs1i@xy@yYP7u2PJjIPkO zl3m9J1fO=+HR6&nib-n`H$Fh;Czn5W+itIAvbX-eML6_nw>Up5q_%sE8^R=zkR#Nk zQVBN<H&BT4=h1LN1Y}EU_E=)-$HkQQ<rbLw#plp+8~ViaAA)>lUwxuJNmUuNPiSJK zPh3xe?rhoHA+q$OcXpWMX7m&Pb9xoiG@@%EnDdg!6phUSkRHCzae%)#{sAUWGy%dB zvrw*PjRUCSHk*|(Nj;|a;NjK!7&AE-YX-1N{1cRk6SmlC1cw%{ekYS*Tvd4%lOeXc zTJHG5s1DkUR-fU2%}6p$w&WX5s(hfhSOQ%If~#=D3!h2G<K6e@hp=Nxy&#(^tXM#w z28NZ><q=q|UVAW@d5~6ImHjz4e;Nz~l4HpUSusDp2Dc*ku351XT;L~L#~Q5aCKFsB zQPoe_;Oeh3lhzdb4*d#ulKEM=X}z>Cdj0&MbrJUHvo3HNuCQUCB*OyyTa=>5hANqz z)x=<0kc-KjCMT?b0-$$}%qL4#SPJP5#Y05=>0VSY&t(M@@cjMm4)`;dBy-XHg3{H) zKushJS~Wb_MOnRqW(>=X9(vB-#hJ(~Lr}5K2)TVOsN&#j3g_SlL?7v0#ncAyC?$^O zBX%2Q2kvb8!iL7j_TFy-qCCqf`>5Wrsb}q9+Yu-%SQ~R)>c38W#9iehoJP7KNKAY< zPGBgTH$IozeGZEM=g8YW@8~#PnjnG|_GRn&<CGJY+~|+)A{E;htBiY(!jW2+3Ncu9 zM7n6m|E$5^=w#VxJ512SpZJX2=0WJMdGn_e3`@#+P9ZIS-w$k||9vSOpH`LNCm^2% z$IYUjFP@OdJr1^teiH9<lJp=9oM)`S2$heqR{vVYw$P1M-NyAgMVcxSiEBOMq)#0n zv;`nR0+%2vr<CfC@wq~mhiF^{8dh&@sKjzH0$`Xv$Kh57fWO)Q2WXKaR=Q$YF^jzT z4pu$?4JMHT9&B9+JBmdg!csZ|ovXQ%%v5<F@G&eK1g<kpH4<PMzXut*A`cKS-oz|e zk_AJy`Tz|ZKCxm*&45o@^X4Z%gGdF49_@D!OHDX3<|4kfF<7Ng?r9JTE+!XfyiLhM z%tcOSR@Y0yfVN+>K({H7TL(8Y9Mz=q<$BHJxe3B{8NGCswOAHg>$mBESfY*%Qr@Yo zA&pXd3h$kY2BGJQ7)S~bx&R@W$}4hX{*ZDFcKYfUzl{ZCxH`J|IerX;%(9?-FJEGC zMkOuEMh}n}i(3c~ww^tf>XWtE<H>V!A$V`4cQM747f}|mQW{07yH2`y)l50<U|o|t zN2*kj*Q3v{B7jZ^USpcV2^3c_e!1+)I1I4Dexx}NI5LuonimV9PUWD%zCnR!z^hl9 zVFG!_pm_+~VrV2<n<d6(fZ#O&>4s?=i7>Hvvds7`x%x5JKOcWJbeOZT?U@>iL69d6 z)J+Pq{2d&pYnJTw_U+zHFXNX48ro2v_|x1wLzmcn!8lJTlhDQ+sNxH1sSh%{XLK$A zWnp1Sn3*4xgm`yY2Az6NnDI`PIAiO;Rw-t8hdWP};0fiK_TC8Z)8=?CkbYJTlwDa# zaA`ZjMIwJSEa2OUT4W9ReXxQqmc#8oB)-LM+66ss%x3>eHnVb5N4nb)3dy_uT-EHA z+=nE+DXxtEqcMUnmMpAGCGftIUDsZ`qTHNQ5O?xr_DOZ1d$TW)77ra1t+nKT<%_D$ zOg)!d(b0VphrE|CmRWc>r>(wok<qFKl}g)I%XGF&$k3t!F;b4R)CZ;baHQeJ@+UEg z*ab|O@Cf<NGoxG8watvjp254k1JvT#9bU8DWc>Y&CG3@~puE=}QfxYNFkp-NYc9#b zR%Qkq7JEDeOx!sq(R6XUUs$fvf7=2ay#<CWf&^&3p3btA%@!9O_ctg+R!RAhpZJ^~ z8k7)cHeiWCktkzc+<Z)o%45hZ>U$*ewr`|w@TVQOI1p`xHQ0qijmh<YDl6b^4FCCr z05~=UY?hvNs~<*sF_ZZ>5(7sOig7$Jdap>3JL8na02QT+<8=u&iP?;+NGOLeg{K&i znXPL6cztmN;je46_Oz_KVv0x%$d^I#cIVO7RQE<71Y}P*F>3+=)*4)J6=yI{J9{)> zcz{^CB*`<SACGZ!u=?Ep@=mEB7n`8|kGMPx<PgdD>&?$X*r2YSrD~pZV;cqls&%ZF zpi=@TnD2eK=zj25;=7vL4<@O2y}b*oB`la3C&FzLOqO2tVDLk4d5;QQ*b>BH55Vcp zN%`yE&m_v&y;f4OXN+X8-*iLhM!e{n&g4p}?tz~UNNqscPTa4Q!5qzA*bTb;WCn>d zY#LfgQJ{kkuW;Hr=2}@LhpSaKiZBdrBkImgkUd_C1D<)4p@}F3+t&4uly)OK+RJuE zJ;Wnl$$vvJ*`uBXKj#xt6rRsue+qxS*8^7$zM|zVN%QYX>iyn6+Vx*S0s^0rlN^(P z6hswlruQ~6U`4j(aVlIgq6|72mT<>o*zQ}aO=M;Tfyo-Oz0}uM5C@q1PT9?T4~%<f zpDu<?Cnl<$fm-ak(`M^GEs4WaH-|>X5hF=Z(xw{5jU8E7qGZpOiauMED~RIaM@`T@ zSL1)c0A!igKiuavp;wn7XA%{uBu^>HKU;G0?Muiv_|3{tc%rp*!jPY$pH(3%Q#B{2 z=y`JoMWB%HKwLzFOd>L`n#9|#=&33{(e}ADgLp#4j-|s5m27f=_F^VUcht|wZP9)8 zsKXyp3E^-FysfDUieN`&Ahv50J@M@iQ(iCWkA<0Ki{UeX3I__k{}V*Rqw+3g0MRMy z`(O9?;|K773YHh+k%YEjjBMTcXB*d<@FbD?C4Kcs>1U~)yJG1Ey`2rPJ5{8hK#2Xy z<TAu*TzcRAA=2J}hvWYkH-*_dOEGxP6B}Fo6~MPnpfE^OXcyMRiBW_kG(1l>v-NsJ zee%@*_SAk1d=`S9Whr*<kSq9@j@j+V;^-bY=(=urAQL(|fZlzfo(Cz|J)1FDQk)GD z!%3BhR8*C|qjFAPXH1d-8ZMukC%U@H>G+hGM8!4O84gD->S$33H~xc>=I|>#0y%lq z^0zp_@~OvmMRLx9Mr%{H(P7Cx->WOwpz)j%A~k8pbIK*#Tamd_;gV>!K63zo6og_v zL-K#>&VLQCZ$T14_0wOBW#6?2FQ^`}dX%8BcOh7Mwo5rxjFz2J4OESg)Ct90F>Z@r z$dD~WupToqc?w`d`zLKhCra_Cx?m@ZZRa`d-tOXE0?h-bs#Z-u){SVUh)t`=DN9P$ z@ze_bo0LQTJf-3uSZ`!K&)EmDz$2Z5?+wkhHQLL(JiVWfOT$7)7pGt54fEe3Uk4uE z1;hMU2q;e*ehyb7ASPQ1VqAM*Zf^ZdhP}CYJ(yCZ-kjbR0B<2d3s&i|eRUHM_hOjD zgK<G`nuac0H;scsEcj8m;vQtTV~3@LHFpmvyn}P$uCHz+7$z-Ai~jhm{8epX23K## z@tW%o{I01V3pdT(F;*Qev`vV%X~`#v7p=T>m*L4VVjP!<nM61tDFCd8Z!hs#xgOsy zLU45!MUq6=G&0-OnkH}&tH3uqed<3ln5RF1g2GZxNc>KUxqEh{z{NjlllSD*^wY)I zRkHP+<LGfKXW$lXhTrA6@s_ud7?o2*x=vvmljK;$36J|;I|W+aUDyZ5Sn$??F+F$! z0GZDu+zyOD2b=3?>b><A4{;o1S=9<ge27VyjSqF0@Y|NDAoUKnWJHU5C6z8r(fC6f z)fGX3F`#>z=*`hqDigN0XH&;VPNdTde1vj_@Ks{ZY#cu`hAjD)m-IdOy-RQl{HM?Q z9MIT&4HM&gD4s^}J>mlblx9~;zr_36$R%TjE~%>x-5@F@h529M$ZqJn(X&*dJFbql z4GKfUGlG}?RVwo(Z7W8-)c$<7@x#}#2@uiYQhVIvmGHH&&qSz+EH#F%mXhY8`rx`k z4z?VI60>EB;C$SiiXc4Oe`c|@i*X9K$wnGPkCaos9eBb~v@!uH5HWhPHSVORR1PHR z*>ZFPEDCX9_;fEycb<wa;D7n0roX0N$E8;)?<^l$Gdh!3RMAjhL^q%rlcwUb-qp1y zq!E^Pn<uoV49~ut*-prcz%>MXeifkGOGYG{EzgliHSeM0O0?8cuwPP{nIfN*nVcDt zBi854O0Q7EY#+oz+5AFMK}^8`c&vAQ(R(|z`gu$j!Fhz6fFQ@1Y9)=5XpXH-1Mf4v z=7?$$LO-)fJsw7T^X?=rM}gx(`%*bd@8#`%jmSa|5V<zxT_C(5y&y?!=@uPbNhWiW z-rE}%v%=`i>E6;nKCLb3v1?9<5YI~k0dB$HNnyMU(QL@_gG*J4>kvGKM#qKGkAb5~ z*n;Ja7e7+ph!WAOy;KqZMP^)jOkYrOg%0u|mlxY2ozv2q@e^8Aae<Pv?x<ub<E47X zG`eeOhV47iS5IU6xMSf-PB5j_YR37-+-z>qLa$^p3}EJrZb~Oj6RU&T!uIMzjR^S4 zT}fl=Glyt+NN+dUUO{0_uSr9eO*AGuG{72~lNt0(_s+D<e=!kD1fsJU#5@hd^~&VG zz2<gwE`{81PJdivb{vwBq;p#0_yY)CUW<EGJ0we+Q!=JnU6J-(XSmX0sqelya~9@J zzEH7}-?gBx(7(I1#j@5YqHBE~;RX}<kYdHl`tiQKg~kFx)Os$zbd&BpiT6h7MkE%= zzFV&bB}%nONTB7h<uthojg^YUtnnfF*>1%w>rEjfGu4+D^Il3-26BS4neupg^*jyX zwLVOIn@5Q&fVWG$&sP4HU`BwPj42h%wJXSGN-5`B*>b$$d-tof(WeVM>E_eKnv}nr zdK*IJ^mmKFQ!aU0(&n=BfbViW5yK`#(6;cjeOm9Fa!YBo)s92T0~0K4yxzeA+$l?6 z+T5UX%w_xNX`Cof*&6&=FgRsxhG!1z0b1LAl-TXvknd^uf_<R4N5hKrWVT#F%+3h{ zb5Y_k=!P>cvcExEQlk}I<Bc&&aDB!QZwAAUEyzqUBV!xeK%#hm6b{9S4~xp}E(@z3 z*l7I-A9!m2H~dmoGM5xu>I60h<aRacyDH$2#v{iTFfT7x&r*Y!+^$6-3|xIOr>!z5 z;upY`vd%|_D{f|3huO1~I-#oCJ5h4k4!Z3c{))Tb&y7IS7V#+%ZYhXh=Ej{C1#y1` zjy)?7TDO<ixK1~>*Yp*#h}*MWOpRP&FFPd3X!=RY!5Ig7VwKl&eKh?7_H`nRQ@{8G zqKh@IXb`V4ysLC!CaPTd@CQ@0!}r7px)_z!EI@^;7U!D;GaM6=SV{XO2q@%k)J)!^ z=gG~qxZ=*(o@NKqyZVVR??GyGFO&g%I>cUW|LlIoY!#clW7n<Z+YdiO_tk~P5K;7Q zriD^N9;#phH<=#73o&;Hs%VBqFga_9hd?Ja8lh7-)S51dxUdeX(glzMNnMBY&taEw z7csIEYP_-O3EfgaQrDdxkQ+Mr?N2P-edR1A$eNH(?V^nilh-GqYeo4bGwhAX@dV}2 z3ai)HWzt3O>crQbuw5v=FeH$mTFj8zfoQ1XY4;odpo%lsVG<ZCg;&iBW4^P$+@T#8 zwpR`>YY)0#VX-&Ty?CXztMpz(9e9Bb6AqB8cG+FlMbrTAl&>V|)Cfr<afDzlT3N|= z%*@J}a%<vSe42uCOBzLI=5C~PN7%#rPP{(R6P|>FGJ-E`R1oqG@cWewFoGJ2m-!nt zUhAJV`o;R`Wi>|<8k_cpepR11Q9F>JiC1p+y^_5|)sJiH^90RVhMfrFumM<A-w~|p zY09CD2^F;A`02=3-glC0+-qz)h)8m+y#FfbNYU5@RpupF4acTb$|7rRGco#7<TxTE z*>Jdc)NN{zPScvw?d3tO+5=Pvbz5tppni-ziVknkTdD|?tiB*g+#-RcpIg&F=$MzT z3a{i@+Vy<^#+@JvPIppY()-9e279>6)|kKhSoQTU4V}Iy-_b>rR^y?0?75z^(pD7s z1YYZ&zE`3tnrz(*>q!;xL%t!O&j*@*)Xub88aN-otDGa_k68Oh+*+~f;&UVeXvw-o zhioy%H{ijL@q}%Lm0@L_e!l_l%C~PCXDM>eo-hKw(`t!Nzpc7&?+U(Po7Dgj2EPpp z)nhB-{*6AA;68|omJN_Mxj6g^N@%?T!ucw&?O=6FEc5GB-Un_oBfCROkd>iByf03u zHYNfnIX){oxYm|pIO*6A={W<w4mT6Zt}#V@86IP3D#GNoitNs~$L#eVurM7OH5$^l zbU|T=78#T)FrL%YuHh~OT@<RDVJC98VlPt=5<>!B96G${#A|z-TDEb|4>dts(wqO6 zD@>1$qmYbVs5@e1?mm#TGHB5@kwWh%YlhIZw>_QvUjBo0#3R#Jd9PxAUHF4w3p<bL zm`MFIz1+MhWj4?lE^8z&XrN@2;y+3;h}c4W8a}u0UfaPnFrflSEySTXKmqNthxq;! zbd`dW2=wBUx?c#UL9HuKZlDsE|98gyO?1g~599l9S3M0^b>2wzR@I{B_}}um^HKxm zrg+GH3)!{ZJ~$j}zS|W(%dFS(m{c+m4&#}915rnhCVkR!Ii;5_{4L1Q(SKYoir^Y! z{AdZHWe~Gj1jt#zc|*^?;90~G;kal{Q?xP{8$pkdOe@t-YJG>Gw5b3~uEUjT`~T^) z3CoD;B3h}*ujYsOQfMrX`D?cqQhmfE6?@#O#@J1AGGt`@f!VoSOML*7)E2X0Xd=!W zJqGOaKB>$QaVeSSCdJG@Y*i!6i^)X`2eU>T9We+OL;q!U6#?D+1lv`evoj$JDrCIG zlS@(%!CmlW5a`mqyNlN+SY+Q9lKK(1oTN(+*A*>2Ei8%EPPP?5-oIjJJ6r;7cI$XZ zzN{R*vVI|9WC}3emu{A;7fM5PXYN$cZhzBY{a)@cy>hX;rAx9w*t;yItIU33=-?@u z-Kr}JZtI&d52{|Lk4GeU;K(Iy0-CyKk+}BVgOhFD9l6+cTNGIo&JOu(Y-YKc?kuC_ zBgk3ovMPHKT!*Z7xhcSX)CT3TT}-G)Z8mhu90nG;vO{n)SNT4A6|caV!39i<zG8nC zfOd9%zG&!`NF**JHUSFo?WaI`mk^wvJ;V<0>b~u6@r#5D`#UqFAy#fR-!h|;ZPPrs zFMpzLKVZade-@LVD+Qo24u}L1-kaLc&Lv=ge#qc>(MB1m%2|WDM|n3AD(W*PoTPVg zJJrHv=-p@SN+g*)3`B8=B!oFJXE%NworXqyPqtc-jxKn#uZHH5|L#lZ6!sJ5{_<~& z4LC2=g&Fwl$N#}IMLVK;7p-EI&iaw^B#A}gUKZ0-ABRZAGocxff{>G9C2fKsQnaqG zzN9l;p&CzM8SQLM6eYK#OBa_Hg1zB2*>Z!y)z-)jWeQ<aTSb#}b%*D);;C<Le$57C zSQ#<_TY|iH#>eGDs}LAR<>Qm?0NjIzaVj=d!6*7A@ZJo{MS0PL$3wFi4&Z+0bcq6X z+l+x<J2)reStPblM^;o7s+LAUNt?sL_kyFK8=NlHoyHCMVi_S#sofErxxJc%%VfIk z7#ad0Wh`Ry5f6Sb7A7NDDkSxB(JW-k0{Y<+T!B}W)~-pAA-#gVqfX0QKY~(XgcO8p zcgC+1TG};T2D^&VKh;wt+fw%A*h&F0fg@NtGtYQ7ypp^u4!P`h({0NR@G6arjh@no zc-*VES~Z$)zhblGp3b?Lg~#*j#$4#75O(56>%#p;T1IEc(+b&c>7e0p>Oqxm?Xq-< zUK13n2KK|Y&cUFI@lmpHb<Z7+D<8{S)nK1}lH%)@ry=EYTA~kd!7H8(xjTkEl7@s~ z_O)$#gIuAi>x@@^7sbtU2c{da^t?x`$|I{XtBGBJw7lLpc$>~U0-5$KN;}qpHpH3{ z^tyGGJ2<)3;OnX?oDq6z@_JOLcv+4{Hq3?v_{=_N;Bt*qAxld@W2$g=psaSC^Ea%N zoiAn>$H&3{%G!!z%;0>xo0X57&gIz5441l>Qt)2$5a0c8OUm`kL+kSjwEO@p1NRC` za(#&JaTK#!;83}dvb`4<#>pC%w)E)MHxIi87*jRLF6du`LzmR=anywB%aaLNsTZgh z(Uk+*B@UE_M=eSqxu~`<acf0?%#r5f!1Di6IlE!o#aeT<fu#UM&CQBI(!Ecdk6Ul) z19x*sO0*Y7677!Ht}}!Uyg&>G`g)i2Qn$%MAEQ^4e;n`xASiOm<BKF;aeVJ@TC}2f z%C`!t)LCXroOH|?bupQ=IH!dw9NBH@h)eqt3=7fPEX8-hZ_H?)?ION%B%VfzdOd9X zJhzqyf?i^xX<I@IJ7Wq~s0SK#+$N~VMA?j8JheDmZH&=CoiRw<)rUrHElf0tO%h8* z(g8ln3sCq&U+9YrSGip~0qG*Wq|1Bf2gbAg8N-ahJQ6~Qkju(6DB^*JKUhLzjHB3s zRt+jyu&oY{Q<b=plQTFb%TLp6ctu^MWEM<qS#i>Hsuf&8rC9Dv&5`&+`<0uYbcv6A z;<qvxexluT6pLoa;G^=M0M8?^1$pYf&q|T#5J3|vZt0S8GjG-?$41-o^i;;VB!GeX zC()?UCuk!lf~D2{>egT#dSA2z6`DmjvZCf$WFGhmMlasQ07f26&+HnLF8OPUVy#~h zq`J@kbjiz&np4DwM9^&$v6}h=X(83?uAw`wFB$tYk)R4Z(9c;vUO}hU?jVU_`i{UM zk+6Fy8=C)@f(Sd`ibZ(N=VPf~fNpHfJ(mAro<U-+9DaP)YPefVnT+xe&=uGjg&rU; zR1s9!N4hRza^b@MFE_#CC#J19MOAWM6@H)KY4nGW54bM@{1IuoDXK?d@(K;=8+PSN zK<V4-N&rB}qDU!zmBUt_*J+@}qH#93H%+jA7tTqXYb@?no`!~--fgIv(mC#(X=00; zM*<LCk3{Ejp`drvfe8NMOLx86Zrl5c!U$o)SM)f#i!ZV5>?*|r1wQn!RM$i#<od6Z z7RfZp88zPo1>vHT0Ap5GZ}VaUMPI3P{*jLUA8tYWfWeSV!}c_0C_>v$KT6N4(Sx6k z&tyb>X<#Dbs^byHh5yrM8&-+taPI=}R-CpLZGCa7t44J>VT}TSW(z}h__>sBv~$S3 zMaOj0LO#OdHR&U1%gnke&7qROGQwbVF(VigRwpRU?DJ|HYL8xUICFZ9Jbd|{e5aJ% zh$MaO-^81bC~AhLoO2G<G$ndaWJFX@a%}_-zw@S23H%5T8&vGX$>sqL@;wL~)|xN? ziD{z`ZbdqTn?FSq!bonUhRwF>Yt;6dk#+iGCGdZjq9Bk91Q5FsgB?XKB?Wna>{~h% z8%`+2Z2D;`($Cx15A4~Ga^0>5M|4j9LVXF^U?_~B#H->H(p8#43MI>UNppx)2arQp z7~0(V|Bc&V&L^O`R*z?-abW0X1gb~cwB|ciMs~95{8pd8bb-sUP|iYBx=Y&g)#H2K zpAtwYyG8zuX9H$`zj@1Oet1>&U1qoj{kurBPoHR-^j_`z8NoPqn6yf~(P22hS7R`6 zvO^H)lv`Ir4p#AnFd;B<ZLUl9u{V{9jywOTafrOld$*TW_4`ZKteT*g_wxcf0?)>s zMB(j~j)vI}Xh+Nv5*0!+YuI$7X|DKWLZE>a*$lz)C5OIc=lFleh5a(O-ecHG24%Q^ zE+VQF`oF(+uOumqfm^IaJDCKX37<N|+@`GEMtNob(o!ayM115>z&i~rM)wUp<|eB5 zR(Z!Uw~bfks!ycCyq;Smd96G=wVX;~Te&8>NR3UDGf-z1taCh^C_PU9g5-Kjh0d25 zXFxIKVn@zf*tlJNb%w8oL8I3FKq47y1Wrl}#q;VUzS3S-Jxi|&4wT{M-RFFPC?fz! zUG_UwH&-#;EjXLTn2DN#y%ew38Q4<0Svp}%Ivg_Y5_oEyN@`CCV?K#6CCoNrr<G!x zrplUiN4<+@@Ib`p!;xx(E@-;2k-OcnS1pom%|7DiHvVy-53dm7VF~x7?Nz+oZzOXh zdZyXU(qR#9k+daMpk3@u8xCL00w=Wn?SP`IZ|<6&7FY2I;I|m8GqyU+GXC{TM#~0H z8P`d|Gwh6v;AtO#!9j(=hq=v`l+Bko|McH+s2y339ZMB8#vAhAC#oN4oE>zZ-|KVL zwVSE_?=>Ygp~-KV*)s-TQcs|w$v_wVR(E->|HwjKQZDTzp?wHAzTut(o9DJ2MVbI! zk7V;td>}n33%+?Eaj<pCZzG;We_H<@J|1KcBt(J{kaFmmy0A_lj^NUUa*S|Yixb~j zSV(}BeN=sUywHRvr@+|P5)y3mb$psDpTrCrX$zr74qk*RbY057=U1xn$3n1RsmX@^ zr&@5YR-wHU9|9bf^>s|ev;#$DbK|hb=<~8MtMD|pG$SuqkrH?@1cIOBVnt6nS~+d+ zG4R!?;0eJoIN>2wjPmQke7f;UT@G}*KWXi*hN5IsFP5*hZzaI3;BQOX4+|+%bU%HH z$6?4<O<9hovtDiTd&v4483KWc`bbI}`shdbJSj`BF|&AxJgpUXKGh~Ic@Fu=sx$y& z!Dq5RA=R418<XO8H^+kp@GDMXnLM96z}oZabt>$PD^BTW9y52(gzGc33(Kp?Uv(mY zjgLpnNu(>!G+=woJPdVL>|ZDh%cw7l`;j|zf5>iSehrU<0>YBGj7Lv!23c37r{3ZJ z>BXJi-XGQG;rY4G*e!Pf_q<mqPJg^jy1X^$kclUADBc;ka~PpRwllt8jy4Y5$FTXW zghplIs9fkj&_^T-bBtDw;A{**E-Q73gE}*FDkA2w3eV5mr?vGe7}-SV#b7_#X_-J5 z^v{>dupgFKZ3}~ZVlDhxL~UUA5Myga;Fj?+AuU48=B{kA1e?fjr_wp~f2F?A08@SI zd51m$=R#0@g2;8tjC|2nx+~}cz7Cp-6$&~Y*Qc2_UIGitWMHFJr(5}~Cm-e8Z@poA zQq$r7>-ppD)t3&oK!`X+LlPyzC~h4z^{qb{r?3KgKC0?y<3_CTLp^(NYHt1UAb4yi zWv1%+N1la9a`51KAOSQBVHq&hx5qZvt@jAsh8%kNk7eL#r?gqA5h!<5dV=?)@g2u7 z$J1O^oSH%8iG#55SzQ7vo&EfIS<<hWempkFl{|^66tJOI0KAwGGjfQ%j)VU~f>eC@ z*|!d_FR5J}QYRUcgV9?iP0>|v`XqrZDubZAi9>wVAY!`d4Q6lUs_m`n=qJ~D0Ur4& zrt+l2ddJp#Nm%+Jls$BFAS3HWagIAuf#L=VIIB*WhgI#bHIhg@jCEN%7TIs1R2<<T zH-Mm+L<7a9eJCnV%v0icQH#tkXCkc@7h?%eeLmrwP}#dQ6*4UibOUBkILxfy8A_ho zvCiA*Wto<V(_$H<SV({RfpYE8bpF2}OxiF*smUf$tyinq>dUr3(vRwl8|WGnZD?14 zqaGI=A(mehbj}J)m?zN%05NxCIU1r`F$%l#Y(RnFF--u-Ai$$>Q7e^(di;qB@>v=z zM=7CQE#m}!1b57vY<JvqV<N00eDg*M6N;j98P!Jm(3&UG)t+f$wEg~jAFM@0GBy6h zv_~lRGV;QOlYym;9dI>vfl0Bx45-`O7uh;0oS7;^%lR!N;@Jyf;U@cn@-i9K3%*}^ z@jQ}_9>zdq_PO@ms??ST1*k^OQYVM1AEz}NDBbo2?5pxxz)26e574|gDnYQV=kB4k zKy<-`$f%vCCCQdE2+~Y~Ohx5lGYVf5XC+`OXwO)~p0U%Cz$s}%?vKt^bTkCivdQWx zE5W7;x@brFS3+*1&3GYFCP65kst!U+#72-E^^~=ywl<bnqB2AXg{1G-PR@4^=oLnH zjODuyEcOG~?OWyG<FsfjS#)6SAHdHAH(Yb8I<@;>24pRQ(HhBgZ%Dz(gS>Ulbdvvz za=TI%gfL;vtJ81du{LDLd-4L-pt^E-`CmcOe1Tc4-;3}ZJ^1AnnQhTk#}@`dR9@=n z_0%)F-CjS5CbG4(l}m8+s}=AQgAHM<rE#P=a+0<~P;WnHkLI)C;+FJ3ELaE<iOGfp zJNp`n(*=`oj*ab#fTJyVA7#r$8a{NDoch@N!M|D8#>|iF8M|JWg&0now;9NQ7j0yW zo*7C5rvVPrJL>hk>7^+v$u#pD{Xll-_~eswg+%;^3r+{Y$Ft-&qva9<au12`O<p1b z#5e-Di5Fy(Ly1gHW;=lo$WSW+C-KTY9Nv24d~I^!Pf&Zi_Ih`)cN;zg86=^P#(^_T z4e->Po^L<xQ5Xpw-3)gXc-f{)t}})^MZ!@YxxdQxOkY<+106TG>3=hov+<A@lpxJu zhZ^d-B?d@`g3AZ&+2q#}Bq8~u(&Jfr_erB`TP0X2x=2tfrnjK=E7aXu16w09qiF^% z*)KwJDX!&lO|R=^wP_IG=~f6uy$+&Bg7?R3?}i47J4>(Op+ezFF`WvjFE(_&Xh3J} z1-P{RjveOAft61)?iIf2qA#XI|5BM8?z;cx2;c8@jC#>LF2=wgr#_Au2uheXQbzb% zKir3OUy5eFf}<Zx_mY(3{6Mob2aJ~zuJG_wsz0c*&$jTj<<WgX0JGW}r~$8PS4nv8 zERqe}YoS@in?(miC%VF13rH_4S$UW(Em?JfOYn&J?LQ;YH)+<=)j@5p8XCzt)od0m zY^9-TY8V0ABbRr`^4}6KNPp;5)F4PDucOP#Bl7<w5hCpr%F3KuOt*f6bBv|#fF1@1 zbue_LJssHlBzy$^79*lM8USYLtnr8Tlb#^Sc`$3BOQdg6ZKfY`8b0MM|4V#D=U`Cb z9vBXf>ai-rX1I&l%vQNzm~)|dzsyFVQgK)^AA7s&$TvYXX48VZ#Z~bI4%{I4U9gh; z80HZ|V86XFM6vRoIJElz_Hm&dW{8ikn4qIA?eN3;srKxE6=5R;)e%?8-uyT?ym;?p zZsi$mG1}5;KUa{cIgyET$PF=_4alB<>hxi!i(CT^F<XD#)DpkLiF7K2GSnCJauK&t zbz`$Okb+Bvewi$wY|??owJ*>_Tc^Aa6h*^Iv$&=YFkA$WpT$17<(Ew`=G*^JAOy9) zw5E(B{I>#(xOV*0-{wIMgMlg%IgkbA^Rt!3*A4;quDQkX8b1LbBNcd==H7Td{K3f5 zF?-u)GXZQ8be^jysgSf$<tjLA5VRE|m;na|D4Ik&a$`ER7zPspDbx<xO6M*<DIN{I zCq~c{(e(jylAAJ<%=Jj4<I*taQIs0r5|cVT!|KpSlhNwp(o;{9C(Y`P9qkkGkgcB> zfxTZ`iuGS+ZVT`ZLR-O8LClDNbl<3&E=*qtN(m^%yY*!HEB|b&u~Zjn;?biuT~0Q0 zLj`785r1cHf@0@86b#_-s;vd!r<Amx$FaB08@qx807uPs@UZB{5wQK5X0OlB9LWru z@&6BPjvFGgd_fgVFFF<<I=z0$cIA|ruI#@VFQhnh3MPx)>QXeoYG^A|d~oK!;Ly`u z!=l)roo|NG3l|>$tEjM9*Atz5Sa$$*zk(OAAq_+x4v#monQG5omOlkJnl8}JVi03{ zdu*NO90T4y$(6nmNVV=@?um-^glsO#L9rvG1UMPb!n-oD5EMfUZN??F3`q-(-opL; z;vr3Y6jAV_?S;|JbiD252m3sZtjnTB)s~o7o$cgLto5o{-%<%#(-#SkqI#15ymQ}b zm$f})XZaxh8bV5x6$&UjTtM;?iHzw|Q&D8c-l?ZDdeWl3@Nywd#kS@SdplK`=uW)J zwwx~hT#U)X@jJZ@8^NSsr@2_h$r}(1){+RXkcT=67_x^;+d_fx8qh3Aczu82m`>{8 z-94wd2q`BvV@331Dc)aoShvT&jXzy0?WN#Cvre_ubX|QaO;%pe|Es^}>AEc#eJ>u5 z2hTmP?$16+NE>^MZ(>cXdhTp}a9gHmsmlq{cv4GsQiS5j$_Au<!lrf&l(_1BJktO* zHz>-RQ}u6CN%?`$sXjZO$r`)l%D>$Gd*NX;L3QDq`VjDIY@-dJJzke{_&<iiFk3+l zAddJbLG+3}3atG;O+W(vP~L<jyo(<ZCEYLP|HiCrUZ_$69Rz3Qer2I6^^l6Ph;903 z0C5ui9Gv@)NnG(KafK~^XY)gXw2e3$1SEr)??DWsrnX<xc!vUx<Q!!;3i6d%3OUk7 z5QF8GCgQ6x+u^s9EU;-Sts^_HW#{;8h!+qF4W~AwYjh5JXA{_+$9PtRoQwf;pyRxB z5mLi<r3PP2MIIR6L<>PsPOPQ}Oc2EPxQek{21A&7X>F2Q(jAzh>WubBYAAUK@rYI6 zTU*VV6+r(AOOK`TJ;b&><9_fiR`ok<X{__-#66KlN;MWWGM&Xh@5jo%yKcJi4G0a3 z-9021#Kl`67IwdI6|pL0@P87G;l@FI<?vbzwa!A~Gl{1s>!cXF**!7^R>YwG?F@_- z8y=|UtDEmdBIRzkt6Ku*B+=?UbLw;HIy@e+CFZBB$H|w{1L>D*c)I6u>6g{@`}w)m zhm>@PjJP`!@h{)MDG!frG*W#?$Kmz+BpLQEK|s)A1@gv~p93)nsx%<*{chHM`IzPI z_5J45cgXvbW2m&#;}LAf2V{Whj#}w*#85^1EH@JLTbKTVx2{MH<=c@osSih7iHRA} z|5h(s8rm^c0OoC7#!myjR&10*?tn-ad~zoLeRXZSy2iZ9hE<zED}JDiq#s3Rnn^7Z z{`#D!qYu!!SEAwtcrp7eBx(tKUv)IA?w4i3dM$~EI1tRIxLh5S3VPYEki;$m7xqem zb86Hmn1P)dNR;?Pn$|N}78;jCciMqorIo)Ff#U5H$sWhWh&Gn-n?UL}`$jWiy!%%x z?+Q=3_+8D3KOxh!1p}&d9Z5DhEfqRO{n|?793hjU2m!82_NceXuVfE=vx-F{I^Dqx zpE#a-kPhKArcY>OJ{mxwF<q+Mvd^}%Ey$vDqPN8Nu*mAb-y1<+&U793C`mtk=<o(r zy#wuOoKJbWeo&svSt}~ahtx>hRs5*uv5`-yt1!#m4ux&?ht?S)haJn!Ab_RVtP_;h zJ~;I{r;fbZyOWfLSF3F9f#n3A{{_}I%~Ec7J?nk>RV7hqg}D1egPN76*?U@HYN|p@ zaZ_`+|JO5kugXSod6bfzQL!mGRbmn!PBK$pp{2G5i#l-eFaxhmFj<c8<iVsvR|_bz z`iYO~>07sM#q#<2`XNb?T=?{=EmFEf=BV{{On4(^g_hAo$y#eyp?>&L6*L{*KhGzU z{xpHpxS1|&`yNvZADS&B;sP%}FrWAp{QiGYTH=Dy6_r+jDFo?)F7YqhgYaMVN(8FL z<-Z8S79cT{)3y~<iAO1SQCf%i#%Xzd@Eeq=at<6%d#yN=Ngaioutw&Q{w~nQ+s1#N zH&=mc(>30^{JsplO-$M4J|=GyDTma#<G0+6Ce9ru&-+A798|;IU)$HzL0$JpHjT<v zTYJk&#Qb~4zf!>sffGbc${)6S*WZ=*yT+M-^O<d10RACKWgmkVM0Z12pzI$9+%M15 z2(cm(c?U?LfjP_@9h_jr{-0zmBX)s0kjN^jZ@5sUOED>&7qw4^WqJ_16(lHuj5&N! zbP}?c9f~yrYI}Gl(?En$>&ZStGf;9YbaX7^+*io1rS!Fp5<WMsb=3d<sT(hasOXs_ zjlh98@{`23M`Yo^-TT`=;MFzJ?M1iwB+l@95qFvSpU#?ca9JinRNtV~6_9{-;(2O1 zZa6$88j0X1&Q!q!Z=R?0{Uciwz%~spU|xb7OGEn{J{d;Xwi?1n;fT&Vqx!-9QLxQV zpB0zH8$OLEJu$JuQRwoLo^!u0J9QNbIb#6vl7C^zDr!ta=_PI#2`heENwJ5RwEH=D zbCD-ut8qzb$bpOQz6bd#rg^qhf8%PPDu62EZ|)Taa{2cC2r>oE6^qxId<qIsg9VOR zK)>MC_z63s*8Q=G&$9@(y4C8Z?E>8y<on62kVfGa!hOqAc;&GRd%$4@AIYw+Q)!s= z@9jn4Xk!rf=AuHtkO5S5{g^{@?Rn^%*t%pi>01}cJu8C6(y?81E^C2=0dgksK&g<J zKFtf$dB|YNUnn$Ui+|0pv__0GTrO>aGwG|}rb1G7_$%7y$0Ao-)^`I|QqPjt#VtW% zVi`yYC`Y0FlAK@*?8OT^RR8aK&D0B7#$t6Tv4+hAWp+Bl`nIuCb|gRgcO{JJBmu6( z8j2Mp>+)$6xO=vQAH%y~qZZV7J-;;4fJM^ZWo<jVqmJ+aXYjI(6_JXgxPbkf1|`_y zh+B>3geDJ}ml(Tw<(A5&6yNFP^vPG{lZ;_HX1&mYM=n9u4|cyJcylMm&Oui6;-Y_W zAkm6wcDbI^w`?6Ilb81gz%ZSbJ_}B(&CuUvRMY10y6RR=SE{4xEy9u#I~i99Pz5;M z=i@?InBDX=EL`RzIj4RS-uK0O7GqKPLn$$<Hkausf9-1XQ(bpEwMq8KInDR*$ylh< z&Dq$cpcNpFAbCQdhW8V^0cirRto-4kdpnRkA^cAG>K!rrlpi^JS&a_yI06rEobbFe zo=#1ZTyub@d?==IgXR2X^u_Z#^!NZL5h2uR?^|FO1&%pg_JUjyB?xqGG+ia2GJp*3 zEO7#32Fok^kzm>r;68(5LH-hE9mWwxGXBTzfgGoy3U<{XC3??~Pq=EAPQ<l*$cEQ_ znV!w#>d=n(aFTv<IGf#YWlZR5o}<^iIP=Wsd-_fQ<R~?=9)k$*j`f6G{O&fD(P{nW z-aPnc(I@?%aeqjJRx>@^ajHwEIfP-Lv(XilwtH9%S|r`hD3`2Ul?Q|qaa{agsafdn z0(15)x91##zSEUE$k%D{{fb6l-02uCI_xX8Oy_TsJ#I@-g8k%zrC-};>+>Q4H%qhX zEe&VFht$myK}U;8`y`gvii{MV^U-_ahl{Z&>JEWs6N!kO&-;XODF0WNE0IU9rtH;X zouFM5l5hRAN^41b8*aJ>0tlppW5poJ!Mbi*$9>tKmf~%(jpg!`m#vzP`Z34npEnWk z5dyHc@8MtoQhc!61(4Ss{;jT@r0`601tj={;;I-GVD7hB1bK`A)nDt>?ZstZYT(<x zxPI?c4aMi2$MYOV<lR3U5fEgyzR&yr2zbRc2S*TxA}JCq{w?N^yzX~K#hlsSy`jwI zvxc{o$=6BM;NSEA<{768B<mdjiCT{3xe`RFVU*51MYI}46X)f{S>bW;v_srn_t)N- zWFp2=qUBBnTI8L&6DJ+PqA!p7#$5nHJtHP-;4hQE!NbG5ntv!N#sB?AQl?55to8)g zy?mkXYa>I-PHf;g1q$<9YyRSeK{s9y<zJqEowTejM$1RMWMv1-0>*7sQUD{~*$=k= zgvo9TN>*UUUu?(5&sAl8Fn753^MnM?hQs*RTYl`qn{HEQxX9|xaZ23#-uG0HmCWyV z0C4rF53qpTNF0{PSlaX;Iy_yI6Aur}&QU^FAfrN_%EBmGjsgx@-1mo_0*?Nv)mMp7 z$6P_7wn)DH8n*OaUv@BeGx|0M<bDVZ-_zjow0^=?PbF`p*;baNerS-5?Vq>+%dQ94 zPfsnmNlIetoxQ3Uz(n8|BGXm<520GKhA5;v=scko5-FCwg-X9dt`N4$6w>3*g>?=@ z!aadJhU(mtnGb<o%bSm~{4vojifO1fIWHMULMl0n!p`vB<PhQ7UJ?lWB`r@wN<$IU zmz)MdJt$dvJ1L%3y!TJ3qtO7~{O`3%gRQ#SKJ?ZxNL_%ap3@3)TZz3C4txxF6QTY* z=q}#C05yK;3!k;XElS+n^51J=PCQxemuDZKK%4|m$#R-fu=|K@>&W<8mT3ff?A_F= zW~kMk06Tg6Z<CE2l&8xar~Dbx#gYov-vk@PF;yV=l9Bc~b=xc@6KzIyJ`{W6*)czy zo&LMD$dK1Kxqz)FNEs`TK2!mQK>n43s|tUGJ3;<?V=ztxzef`sPCgLfd@gq&FJ0$t z%qN^)5GG|%HBV<L$K-m-3>~4EsWcwcH;rPHAr)+zP}sYrZLC^@6OzVa#}pKA{|`$6 zQ7(31ytSse=`s0xCH!RpsF&Fmnyr3gE#!sloc)u#@8!MXjtX9f*DI7>)GXDXub|D7 z^*bBjHR6JdwmZO{VBa3I*e{#)JOC78JpJl@X+b=<Kcv&N>ga43Bt%0f+~r5w$K*AO z@S)hg_N8QFU)ydggx%AUXkC<U(X?&bJ8j#xZQHhO+qP}nwrywqC*oXIL_NlsYkj@# zh%-34d;#m*0ks_sp3uSNeb2kmY5KS?s7Vb`JvICF&SxocoKyQE`=EN+ro^b3VIg4` zO{-$6qfYHoiP|;yKhl9(xS}(i?9&O~_nipKeJE#&X}o`R7IN)K9f|}JWeb{wnF?3` zZbd(GRDVI6wzK{=Tq*pq_jz(0YnFBBuGgK=Sh$bkKK~X!^kK$;qeuA2z#3FFWBO#% zMfH{?TJ^BNXl4(Lt=qPENSRLCgDYOfWA98n++cZ8ES-l&+QZvow^5Oz0dOyefRpBr z-7#)*<H6rS<saB!Mzes%*RNXn%wHt~g#8m;MyGOBj$4)&>rI@7fy{(7zEgYkE5MWU z68*EItL^w(0)lI6O;7&rYS6*bbyhO1JIL`iFzK}VFQfe@3k_J188u>tZ}U$UpdQ2X z&%bc?RM>N=@yLXnr0O_+ya)qnZ2gvv!qEll;z08VY;LSRs{15rO(}mA_Xk6dqp=e! zCfgOo*j0V!DIy51O84QL++=4SgYU|N-vZnRM)B^dI9^mGK}PZg5^2%VIP%47G2F{W za_Vk{THRNt{fkF+AIa!Vg(E=khBHG{3jr)B14D4v^ut}CO)ze0YmVMqu*Da6Hx@du z(8?qNeOu8JNv?gbNe@X+)fZigi+E`*T53p~S}8D6>lJ{2YIjH#^6N<o9xSwnK@^Ax z95G*(WKFKZxd-LIae(lYs@F>6_^5<R-wMg34?a%>B<Q8h8d_<;)YTLvTbG&cFPxU3 zCK+-%3$@xp8et=+3tf29J}&{p@C}ik(16)qYfGR%mnY@k&9xIt2}d)Ef_~6E9r<?~ z3Jepl-q#@rsk3Ay-|sdK+q;lwD;1s7L@;N>Yfu!y+O0cRQpV?ulOv`mHFFv1uyY2O z8t`_FM!mwhjmJwMZnz%-2)cju2}ll`3fQJU{-$|Kh#PyGv{*@v#$RA?j&kw8+OJbI zSQ3+oczZw7p%Qj=1j%-O(QE7WB+cmM+$8Nzuk58mXMk6s$Q%)fC?jI|<(~fX4a)si zR6DzTK0)VwB4__c_;z|g$yB*+t!-32t0OOgFG-lD-9aAT+!^Bq4d(T(HXvzfBOQeL zAMY>`OG$syjl+^JqDT$pp(C01Ck~;%7^05V=mE04#$(0N5h2)%^`F~$A52~94YT;N z@jPvdi)6(v{bUCL^wz^g^fINGycl@ey>4;T?=vz!!D>f+NgbBC&T<20(PFE2<Osyx z(d~*+)gb67TBA75pFv}AC<7_;WyXKxmWkE6fkMQ@*3`=MQi*a38pTR)(?>$#0Hv#C z7>rB0l4&iQ!3ETn$DH9n`^K;Z2Mzg0CP_Pt4ZI~Mq}1q9naicu(w(dCfG&>kA`kFL zIv+atf|6|ME6qNk16Y_2x6M(PzT!Wz-ScOytwk(C+#Zp2)z5Sg-<J8u^M({kI3&1Z zjik{Hv)xn8S63O+eHVUiGO!v(m<<cPTBRXe$<y$Od!6Rw67NBlo)&;L{aXffbxa$l z>Q+IJi?TtpNbjww>z)2!*NDkaoY=k&r81_ulgk1ZbCAXR;<NK_t?_N*S8GU()XS?i zVmCT9yz$zkQbo2C4g^ov2Zwe`fz_GJp^t`Q2R-mxbEP1H4va~oGyIeaXjTP_vyeM_ zm}xuxw6Aj`C6ojA2SGRTY!{^1U^SS-Y^|4ECbFvW_AhnFnM_M(<i;=N`S`l#u}Sb{ zp;B`o6r*eZ-4HN|hK309lS3<ck{YIV@dd}c7*3p)U!W!xpDv|(uo6f4<TWt)Le(uJ zTjCnhdcHa2mpxlj!!fo?05Hfm<x>O=;%N1zn20)THm|gCal07%(Qa0NGrj}7E@ADB zS-KGo;1rOATdX`~{u9@klm@?KVk|-CLR<b(e&{uVYwHMnC2r<S8Sgq?9e45S>K7PG z=jA=Q_Wgjku86jO!llXQTqo`^bAOV3qr=32f6E)G{Z=f!l7mnOm%yTYacrQxA0M-( zl**8caq)&08G!VNv_6tAsiVs4%xJfnJXq8&H~0CXAjBM}nnOlVoVUm3!;HjL^D3h1 z+5>P5)?6I{jOUf=?0gLrX$dPK6jX^!J&I791<!GT<Oa9GqSZ55EY5$x^y04gNPXIw z)K8yQdwff33Rk>w-HiJm8(E=YosgG2S8KkADN8)u``-}v4MsBDAc{`<ClHDrMB-vd z;PdOC?E|wAvwx9`L>+28KHT6Q$K=@p9xr+F<b4@#JM7bv-$s2~(};GGt;zwa)4v9( z{vpIG!B>pZCmr8)e$maT;<GbIuUYV8>^9Od8AnoHRoNx|d%>LWR{Z8Yr2w8O2XSfA zX;BV<${W6UEdUc+Qg+C=FeY8!D)ZeF?{T{0ZE`bqS&XvQkRp8$>Kv2~Kv>W}N_M2C zDU6(GjHCjTt(4Hae6$8i;U#2Ofq&OAdf|bg%#+@jo{c7lD$*z=Ee(WR{7mD>NWd=O z@?9p0_c*PSA6@t%vGW2V*)ba!N@>UdA<r2Y)rro%ShPk665C@52UuZ5mxAJGd{0ZE zR{e=f4_SQfrd5*JqM5f$$LrP1-b2b8b^sTSM6vL#AZ{DSEXZP-cMnl-OG_z5fR<gf zKpnidsX=O97Vk%7z-M|Asa{1OPW|7J&S_*=pvevgDm<jl3M3^&`XScKNn5S)5lqfJ zzQs80p&u+RN<^590An86*6*JTGRw#@BFRA}jiIB^on>BQ`5@q;>|&is_e-?uFgmv4 ze!bgRLapWXa{N+xgkAJh=2%t6lTw))=77YjZ}gqnB7+H8b`A)qzm8=^0*g>+WOZOV zI?Od$_*lW#XOUtC<Hh^2+c?G*tt{PsZq1fd8YjA6OBKxs{FU+$741%j>)(H`Yaq`+ zh(iY}@zAJMkc5Z~Hc>Ls>(lI#v9cs7--BvmL|EsLjoPwDz*M(>Zedy*n*>$Om4$_7 zjku}pJpO2rbyn<?1By#sJDM`GBkAR+su@IaU&}n7PT;?SMV<M*H-v;mEl@==e#LE~ zT|A0oN9jfO6YZIj7vgKMFa!D-GghLLNGq^nFmscn{&dCYV1P3V{JeZ2btw0K>Bh+# zX2^sCbXcBn??8498-FVh=LR*VI7WKwhhyPwTx2XlEpK++0Qw#%CKB2d5b!v(re`ef zs)vtkmOCZrg_VPa`UIerQ<bx*xmijD&^!Mb-badZOxb8GUn#MG)6Xvt;>ag<oM}Cs zS=fpA%hF(N1m%MX3*BMoRxs{itjlQhW1j(`x=N}mntgm*t=&PT2L{W@tQ)FYrCf}X z)<Fi5BFOmz*C9Qr4V?F#{j73OnOf(Y+oD~7i~LTyWUXu)8gUS>2$fC!sbaTZCN@=Y zI{+lwTdKGD*fQY(>X96|_-%Z(;b8cYN)BxnVzBe}uP-tZ5Eu~&ZyVNyw%2Ibadxs} zfxRJ-$IiZ1peu)s(TT)urCJFq$65UKKe};|CXdFus?~%Qa4{dDpFc+aP{G8>V(Air zB%h>F)L&O6ZUK^v&w%qkae^>=buLNcHS9&DpNq_dG0gyNg7J5uXU+tC^_Z@8m^x|0 zYS$!tcg=Hl1`Nm3Z}Z%j&`yhsead!`8#h2_ClxN1aFon~V|2v%;aPt4CPq?9!ZXc% z2Q*JxV{YSCBHmlKFZCxx#AXTr#(r#xEbrKH42`F2zdt7yN=J?OthPS;3=k^zk|B`D z`pa0WYbN5c=}8f)D*enqtbCnAySTg}>mohgRp3)G46KOr&@o$y+{jt5m=3P~XrO7f zzwcTbUU#`<@<;D&rj;Ux&g82Nyu>Pvv4|A#57gC1Q)#S_UT9Pk`(Ry93xMvma!P3; zuqW?A7~!Ea7>E-m#N{EHBoA$pzq05U<W;F?{@k58?RU8$2zzHg{Ebt1=DV?{vHn7^ z8t#MN%DBy{ds*>qF`{FA%oMi}9!Ue=Ok{sy?`tm&{6|bf5Ae(zqngf8+60eCyH0X` zmpaoM)c_?WybV<p<QhnYo6w_k@CrC+DJmb;UlC{*?mx5J%O}6fjG>e>EC%t#@$r9F z?Gm$`R%BtTnvS`Uo{U35yHRW-8ZaeR7ZI~hjlBsS+@Z!m9dwKJjgfwPuF@RSMG`{p z2t)z7X$0(!@&RuJ6Rd~(c*rVrHZ!@xX#Zd)b;+8|VW?$cXXZ?HnGZ6Ttu&KdueS^? zO-(@d?W?;OZYp10jpUP<SdR0>4drS%V^Cz6?`AFc%Q?ug=8%_1->c1!C*tH#()BG2 zD6}tMOlI5mdHmV|_4Cso#&_Nk2uE7vvoXg4K_Hi>8#9)h##l8#x$dbS@K8zz#F~z4 z2JFCal1yIFd@T}Zc>WN|7C^!YDz%SpxbG1dqJ6$@ubB%`idk&?sh?2GX=AhO{1YlI zx&e6ucbejcK;|_tuwMhc2XOzi23qo`<ka<(;C<wU;%+8Lm?8Ygs_{T3EGd;KNUu3A zPe%Jcw4>)bqq|*@9jzZxz8D**vb-f>jr-T9$BC#<k9_jr5Msux3cJ9>y2s1!yF$?N zM4(i%c)5k5y(y?hKZ#i|{<K2#VgAb@IsZll%s6D?=$$lVjI}|)FN){7ZHTtyrZ{04 zl*6DGS=N7WqET21FLWTX*Ue7IxKRDkOfW*zzsw9^&?G7%VqsNQ3TyO;y8A?9Z0#;1 z6eX~lc#8*%yu<p{*G0m2E~SobB9ZTkg`T#Pdhl+wGbH1VmQEDQ31u`q^jvfll_u*u zk+V+8Xi>=_LMv=y_o~9q+wCvN-k*5S$z+^X1y&e1W2c=TftG1@r}v;AJnhu9?e%X| zAm2Q6-&@c<tp}}zhD-V~48?v=C*!LbqfnTULC3qvFF!lO+*C|y>v7<EcrK7|4b{Uq z0I>Z><@Wgn&TYCeSUfTqe~=gS3U%)JaU9=TWwR(!`|HZ<(Eu3!@Eo-ZtsD9(pvrpC zp-l8|1ssp3U>)Z>(Lt1aAP4=k;H?kb00A0P;S{;ME53RujCrmSd;YFspJ#e6GVpDR z;a^M(G(oYh#lKTDnM~*&wzDP;is1?o;wO|2ZqfeRQQx@)PNaxaAj}d3^&VJ2cu3MG z^#W5Yuo>chF-2I0-TgZYH<ob!M?S-CirP=0bg@>EX;SpgSC*1@X;AGuq?}V2l+xPz zBj#DGnjmUUU!jpM)BeVcg6l{_GK~h3KeSr)qM=Bxi0v9Io3t65%mSn%)Cx`pk6$<c zINm*-xKTb~XJ1}~ucAPx;ruMvD(0qws48&Napk+{h*W>k2Se=vvGX(yw#W1PUVf9K z6<Alx$8fHi3N?Ep0_7^mvcO*G%@7s(NicYUM#GJWnhcT<vIU<H^mZNi)UP4^4Kcnq zh&zA!vRh^$X=3PR`mtP=SU5Cd^m%cG>ddRJ;4J^~_dRQx&z~H--NVmNAoJChq@x|} zhEFVgmGEDc`n%yZ%iy{X{NRX&NlJ(eFU;3x(V5-}>cP)#UV`=BDoEG9A)lIxE9G@C znijEOFzf>r+Ye3cgsqM;{YDWm3#$QJYGZ1Zb*ZW6AzM<Ldrxty^}PzOu8<?0=3Gcq zXcfWw3Fga8S$dS6D>R~f+y-e^W*ngc(vZlDH-m`QkIOmr4gmW=fvl%8{b|-VPC&;d zra$>$QtfACAdM4Y<Q1#@AtMZt^bUuu+oL<VFNT>3g4lN(OmV;W@A2sMR6J8ISzqf) zNkPje-(ByUB@s9$*I`ybavTYYZRKm(uZ+OW1++Wn6&D!!mXod`iT(|J7&Egojt~<G z>IkiD=C*2SBD_r{3v9I5?^ibdCYz##q_C$!Gr0%5)m`^DHgF^LSO>?UW9XkGVC?`_ zO_2?H8$fT+(gX@)O`L+mjh%<;LdE8-@N2J{h6g!wi(BpPcGCqq#BO&lhJ^g4NO1pz zQzk=l3#xshR<Zw}2tJI~uO=dAPd+HOpN{a{Xnu;2&^(S*X;BA6chdz~tW@`hCKI|= z*|x!1oBj(XqtR)(pFp3*TGe*<@hVDKroEOho7twcaY5FFXIWnnHkdI^km(J+?n+#n zje5B^ZybyNI;vJ`HSKxM@&Ra#!c_{-KFJu-Pve~_5%88>Ny1S{1dpddKQ0zv7a`bP zw4dau5A#U>p3Z(YI;}&i&woe7BRUTy<(^ZfJ5cfK4(BL6@RydhX(!{u2K}c<|Erex zQVg9;CQorQh%|Sge>Q~9BZqLjOxT{Ih!tX~?zNNesh^Pw?Q+%+r0GEa*%l@PFKEzt z3=#kVA8001ZMd}YA^`O(?Ha|U-jUb_{Y%(hWnGsyGv`z^QG*duABv{!A?Luz+C@=! zHfSom(?eB-hgPC8Lv-=K^IjW{1|-`WjH|$W&Qv@Ke$r-HW?hA!c?%+ojWTAdJ6jR+ z0x0VpJkQ}=J=M1Dfj^pV0O~-Dh5V!U<c&0=yxRLg-XwsEc7<-#=VG*6E0_J3@KH`6 z8kUJc;T*gM{AW3LqDj#+OP4<H36gL?nwwNhSnY&6#v((~2XER6#^UrLk>oLZq`E6W zW#es5R}zUWz&Bd#n}~!(XG7-52#I<7mTvNu*eLaE=^(%VvZw}cQ!+F=&%^7?#hj!` zXE~m^FRAaINmz>55h&A!d67JsH|437$Va};LY*zNz++UsXEX}Yaq|E(K9j36z=fSQ zU?_crhEi`if9=oQKjg>?hBZm-K>Ps=tF(khd$USk=+5u~p9sEmD{4>qU0xb?WX1)j z2)OW~=VZpl3z7_Z@e5Oy+n1}+Sw_&)EtAFHH%reM&Hyb_j9H=B;QoapF<t^PYi{&8 zeB^O<T(EmtfR!lE3xsXG9Qn=`2Fi>Qo5NAAX2o;!`}>M=izV0ZNQQXQCN8Q+_+3?D zzMBHu+Gr_MBmA+1c>h7sKDNw7kvLP4fJ8caLp+}vQzfcn;Jo3BSu1Q$Ha;xe>@1$% zWW^W6#@!Q&3!<}~@)<Rrw~ZjcpPzDyGVzi}s!qiuh<ccq4%ew}@6;3F12)9Ws{P@H z`t^~U&Ng)k&mn&O&IiZBNO^yL$Ax^wAWT-sXqA2DCzBt(Vtv^h-tS%8Z*vA6#R6K% zqh27>x@LD)0d{>IJI^TEMT8o-(dqf-H5U>fl8#J$VqTM1BdBt$ERi4(0xkhg=|vAP zRUFmmze@(PHV03Ff1Ilr)ct1CzT~GbV}jyKP?)fq-vwo1PLOf&(R2wfp5)r~_?J=J zoTw<P*K@B>(QFMyZc?uM8eXCr19UM{^T<LL{wxH+ZfgAiJ<D8wPbEf!3UB`Ntq2T~ zf&NOh1=hX;5)os#?uamZQJ5al4IxPRk2IAjWaDcsp2~|q8&&nKZ|tZxtP=4=ec-$! z#i-m`2uR?Y58&i48*Q28&Lu=CZ9;!~_6ZSbOrT~Gbl*uB+yr_QDi-K<N`uEodBY%* z(VuJmBHZ*k)r6O*z^sjZcQwP(Df?>{4y7GTqaa`wYDR@|kE#f60EVASM$0$fy2hNG z(AYjTz$M4AJ?aNr#Ncyy+8%U23=>iNveMVgJDKnXwEt4hEf{eQ>KrNwm!-chMUK7c zcwfy{xC%zMPp+B7`ywt|efF_^KUn+h<w5!dytrcrHQVTps0$?{2iV@$G)t6#7yfwR z9xxtQDftw^F-V&xpNDM6zUXch9lfUOuRF!Wmm#Va_&zpH;y3G*aY}T5-K(rtIQ1e+ z9*8Z_Hprd~{W6>E?*dwdxNFYKX^OSMFFqON4GE5DzMol;1TsT8XI_^}f^6^W%+<Ar z15exKek63zU)_-6wZbco7;WA6Il+N_3oDIblT~*MKp(i_oeMVtuxhIPF`RlkSbTU9 zj5;#;bX~J&$HICg!t9~h*XIq9nL+XeoT^+Uef37lh$B?l5_jsHTi-HU_4gg~{`>Bg zPVaH5yXtgE*Y}w*T4nZldI9#cTh4NmilX4pK;c3nTpGX2al`qePzp^P-nZ^ys3L9} zWtGpl^GiPPd@1*@GI(U;tkHW!vUT(9%u26+j-EGl5moAo4?5HyMX<!Wv|(OXeM%*o z=R%@}L!07oI@g|S2|s+F^SHq@*;V0`|7N@<P_)~`sp#dhZZ*YG7BXik;z^O~Yd?Gq zD+i$%z)n)C;t|cS*?ry-^2D73l;HPyQJw&@ahx=LFMwT<tv7~FM+b>n_^lXYVZw=W z-D<}^pP;hT?@LrZUR}AIvP@efAvPyJRL9M=KH>Vamp@c>{0{*#ykbbs^R3$>!D{=h z5-LjX!4jCN6yD=umMYfrIJ??xCVbRrfWqn9RNemjHw;bgq!vp#<GPH$nmGg4EavW} z4YF)VuI7ZPQ&c<%7tWof7U_Sp=9&H<>ivI0+KlXMER4Lo|KF*H(w~c%m+jFh>vb`X zQ$`N>)Y3dH*7gc(*yY)Jx?`N^UZB~*A&xQbxyl)ogyJNZfG=}sqbvrYf*$OE-1>5* z5R9^>eym#rcFn8VCewTSZ)PY!^oBrXkEI!^XaGG;E`Z#gi+{pD;O-z<EeXGU(s~RM z<H}8qHb#5flb=L7!(q*0m~7eFs4%Y5l1fFO@*!!O=NJ4y2iIKA#Lht-f#7z`^RNfY z5B*NCdR4&Qc@zy;ST@HcE;69a2Qib&p=BF)-F@-(n*d!Kx|nLXwa5V364zE^jD~Fp z@>V#`b%|tO4>+@_p1G8*a7TX;4>cMEefh{*E2gtF#=2#f|5x+75N2@mJ8hTK?>-e6 z;YCSUgaaeop0uQq1^NX`46#zBC=m~z$5p%Bb4~ct=b!-A{+a=(kxRf3?)@F{%AX@n zJMO<3p*RiX(d~eVb&s_+I}HBri%Z&@TyPXCqmnbk9l*@u?YtSHZgFgVIQs?XD|cQZ z-7bBoxITAQfO7O*d8>-cV(fz=P|E_4I0Bg<9tQcRZzqsd+)l+WEO-U!@y#{SO!|Dl zZqq<aIt-xsLzQCTf(abl*%hc#yNx>-G_rK*>d$~}$Y4uQkb;)4cmV@OmV6Yh9lyk| z5cO@ZjnhQn&2(NksP;Dl)Ac=h*>@4+!&g-6Q934q>QI5sbcHyHACC$#A+BHFkSuXs z4)wP~I>Glx45-DA+a;e*E*2E>NcaX|Ywd~OKruzX|LCOfdM1Z7^Djc}{p^r<M42^L ziR~~lZsfb+zq_a@VXgD^ZBv`kT~_)|mytP6{Yu*?>$L-s!DLty%0V2-_&G-)ib>6# ziglB%PngVcsd@B}wR^mfwZ7V6%;+3n-@OpCD_d;|L6C98pej;;+4Omnm6149s+N(3 zsP&vglNFAyN)4pJMa9*w(E)$6>1FS7H=S)su>-mSw0Xg5a6D`!gWyJEg-i@m$8V9@ zRH|NQ{;YuyHDZhWitrgJ*tY^j|5Y4(#jp5Z%fZcmbLJva?+#l%E`|336@Y6I#%WY% zkS&W%NX~>5nAUo+xZuP>1{jXAT#MDUa=Z6B@dgZB*h)cE<?I#JV<?s(-L2G5=!JNy zPiUnu5Ip<_*pT~V{4W?OgxNi)!62zV*e$hNpYf@$jm02@97&jy`{dSm@!D_QZovpj zW3FTSh0^C1o4uXbjdM!(!MG*$+`=19TsgH!pnS3zefG@W4e(yUdP&=l*s4b`%NkhR z>^9C(YZkN3kfIX5Cd1{59>4DGZ<6=GkVsQX_j<HR?g*QN6WsI;*53(R{66pAYh)5X zbSs)cMaE)#wykCK_%Ra|^U`gYKd?ljUM%v!w)(KIgHg$V#85};D8D{E&*T5z3~z0= zue#7jkfKnMaU81}o15M<a^I1q_+p~$mAPJz1Zp?ZqCbh%vv$*XynEsd1x|ZYhv~q7 z@+AWPm0{xn;VGf}THQWhlpRk;8I8wOLjgp)-$F-A|FUwg=H%~bY#YZjIh_P*k;QmZ z8eWf$hN^L~bjHq3Y1TCl67pm`dmU`BsvGmS&%Y3$ZLG__lArDU5e$Q4PX6uu)DJ#s zQ)@~rnGj1(qoY`EBmu$m2<usz;)={pOBG_;GP3jpVqh}%{t4%%AZU1TqiQNz5W>n7 z{DT4Z+i$%9a#b|2CW+%inHqhTimA|kVXF%p|1l_o?LbK^?v0bzLPV5!%JtPrvuNA5 zUl7u51eI4zkuuog*vHNT1Udet4=z~5uqIc4Etn;D|7!pRAbnvOPVit3DyF45iw$y3 zHDJh_KZO*0XH&F3{AfK*doea0DwE3Sj80-{uz(%GHv1>Z%6%ey@K+KZe^1_s1ZPg1 zSE>2I>k(&h#^`5>xt0qRrUXw86jio<+iM;=Xmq2-UjFffYlDq&Gza8BUWMgHq<+KX z0^zTurQ-5tBOun1B-`Db_dDV|Og1VIE4-d%EF(5aU7KH4>$Bs7C@S_;Ap&M6<x{CJ zV-PIahAEnJJSjAl=Z8m4s?YC+qwh0$#m}4IpWF3NdU4wdz8g#>?D#vBb)1#?#sp4z ztJ4g}a2>P@h@4rE>A(58eL);qcrT25a9hB2jd`T`MmnuTfnTRJCaK!EAsMVsSwkz& zNXyt-iPtU9sslWpLAvyaqsaIQ#3KcrADTZts^buIT#LZfEtUMq?eB%Rg>#?=Rwk<X zoRE<O%@U&&zI{UBJ;0lB1eT_xU;I1Q3?mo4iog5?tfwjv>TI@)q%hG-R=D7t<!8P@ zl^e$|eAoNrjIx8+V_8<L%Vn8Pkg)05qwP*OHdn_~n|%6y?6Rqy^W%!P;@<o7<NNyI z-#`B)G>pZok8RQ{A>a0s0_<6wz=3!#3zgJzY!>*m1#H3Bf*eDGXULJ5a);jg{ftn? z-g1iWh7v1WAl!czUpRhH&GobaCmG>vP!i&aG*A4b)5bm1aY@`3tT)P3Ak%#lIW%H6 zBp(okas|t!4!rFLy<G#pG(!u*A>WPZR}NXC#N)o~sOIY7G?B>rK?{g|Qg?tFr}0@N zO0a8Ml=W~jNieeZkgiLzGtOE5g6M8@{Y~Hn>%!PcuWOr~#~(kjAiW-|hTWw%H>-^Q zP1cR?_6Gvet$YC>mqFq}m3k9L+qm|!hA4PsS*?rA4k(26VJK#CZwOv)0o+jw{#ib} zt(@(GW%OZ;Oe>R<b?Q>NPqe*&fG$#Z#tj<ZS1b4yZ>dApH_Ro%aex56@ybE6F;P?7 z`P3rC&c`ajT<w@$X;Wjqx+A%%JrVVItQ{M3F<ErKLKw5Ba;FR`Fh;Afa;#0ngJZ<U zocFDi7U?Q{{1$3E$>s$FPvMs&vgmVrd0w0s=2(bUw~2orq@YQVkPo?>iUerdsMJ6C zTK&%>0b!oUwNecsvNsTUr#sG}8dx1yia;4s6x)C!5WvH<OPNKS>r^ywye#F*O_iYg zGqv}<r2vN}n52_&xmyLhFb}omNt3_%<p$Z2rPJB5iE-E=m&9^Tbw<h=mmU`<x^ZUu z*{ULV{ZgFIiM!;_<)$MnW#TZt@;(!j5}Z8mm>GeT)WT0h=aT$vq|q0iHGk7m(z{w> zbwNf>ZQ(DT8YT;A3UouzV`L%cpM_x}JHK9kCRQft=T7!*luIu2rxvh$Amid8x9+C{ zNg>QS0@0%ILhVJDrGQwlFcIPUebrQJ^_?jm=8{brm!<fTYRQ06zM+Fci>YVoiF(2g zL^I@HFFC^A#<k4GnE`7C<o)R2cB27qKr^IJGOM(rD~__~LW}wCB>-1tQE=!9QAl$Z z51+pmh3vjqXX9+YdKSo&pP-qx9C44d2tE`%!O`Bwk?|F+^`_Z><cbw2<F=JU-Qwf9 z^NcWlH)v#k@T&NJtU8%GSy-Pf<ZhNHqppG(zeRso^LWk-e%|zAy2=xRhYpEyzpA~% zM$E*qSfBsIUZ`m00Sc|f7Q5jc6ePTvUap)BR?3KmKOD2MX5L%C+Q+K3B65IuNBChZ zzR*8l?M@$tBh-i!R!`n?ORKH|zpUVio5_6)hg8iOr0WPq{nL>Mp*LCIiHh4yr5G6V z7_erft*&?aq2wyb=A_15djGw+?~n?!J6f0Se2eoiugJSh__4;+dJ|W4c(MVfqU?o` z|FW9eypK(>=Ib@Sf>2$X#2BOUZZwJKq@%1|hs9+q%9M1w1~+Z28PnIO!GA^o#-b2A zmbOO$`=?)%4iNEvFQK7sl7r_%b+MWezrF7lhV9u+-R541>BI?y6OW_dqH>CPjb>t9 z9B^-iHSy;4(gOr8^k^}!Qj}dTE42U6iMM|RClr%?X6_i{T_IQB{{6G9F7^L3R2qhL zJ7tBEgx7aeu-8RzqG)mml_pnpMs^PPZ&Xm`PxksyOqvkSHxz2%NIf9*ONirj0*SYQ z_%Tk6V<z*T@t*ub(11~6%7P}zeC~=Q2YPjEakIjg%^*J1U(&93s1|{)k1y@?{GZ9K z`YN<rXU*Sh?D<x|?1Bd^%OERXXUk*fBs5@ZW%8yJggCk3L-J#Oo7S-0!yKmI!Vq-@ zKDH^892fF&Y03W2Z&J{V)L@3$;$hE!?8F-NI%~aTx6;%f+BH4|A#OGNa8ebo3{0Qb zEL#)?x(yt#9yJA=xBw60*L9`<ppotQ&jWeZd1^e`FZb-6_~`!5K>=avs8Q7x?m`{C zXIjdC`to^?rTEdh%n5!(xQkt2HDZ<pUS}cMMkJSpj^3m(F?G=|JeCNQDiRT}fj4-P zgD9Dhw1FLV$WGyoA<CV$*4w7tLtCo*4-;aC4^jBMq}FEZ!AFd|o~`fr)%HbY;KL!# z)$*y65LBdh3CqsJJmNv$fTt1(*Xz8_!i+1Uq-?me9<kSlv1;e-BBb<lokhWTvFUk# z$Bq0ln{tOlIJBcGNw$VKn!Kd6NKPDzt?PK&DQp)kKIvDxICnKd6aNM180DOYW<qv) zZh!8s>nS*gYvMEqVM@5&25sBrq{}W^<Kv<?mj3n7msk@apOD=^&2@;a&2O&-DcWa( z4UUI5d#h-}CK=c0$&WCGJ262A#Y+b>ck*N^_0>EET_Q7+m}SsJd53E#S1HPS+TG%7 z2RoT36tv1=@h$IQzpj(sf`(_5AwG*2o2;0zwZn~fGbDgRI)zU?+3Bq~Slri$rx_&< zN59z0n@}i9=Sp*s&SY21TyP4wHUqfo-#2{Ynw<9DuLz#;AekQUlI_lXN8>y=63orj zILwyypADvT^LIKOdFhUKzALruor?7vWzi`U4iEGG@9>sshS#3S>hE{AYR%wO@4tQW z3c_6YRNMqNwvKSIW5?!tDOUe3yMF3*orq^nzKkhcypINyR$(N|c-w@fc(N_!_wI(f zo^JW&>}Hn_VGOOC_7Ln?-6T8D74fRJ$L&~-6$~(8q1}UduOpi?N%3#57Ii7GrU%c- zuFQ6U<<;da4$eTJ)p?zcU_Y|rsNe-MA&j8+ksO2f=rgau31ms)#Kzqb8pguc85VhX z$0!P0F)HE<L8!imkQmNbv<NHJ&=W4ZoY@YS<|QkyW&U5c9NsMXIGo~|Y|&`ThPzYH zVPXY>nL`K--{+g4Z$P-B;Vccg0w*V*J$1vR)=1Fr$1jYHtYZ#Hb<?b4y7xxzX@AfL z;ZG>!v{MUUyJEw~_S3y5<0lMWce#7jJxN#PZPzG)Z<Xm_jffGb*QGIJl-eB(fGnz{ z+|mcsB55bM9yz^d|1uIe)Shr!+SaX?GeWHC;ReyTu16(jKNGSCi6Xyj>Fga`M3>dy zd?VnIVJ;Y~a1jg553#S>aXeTsL-UuQr3L(9L}aH?vr(AogYB?6YaS6g-mQl8M<+$$ zFq}X7hk?Avg2LK&9%ad4472WzO8|db<AydCWKw<`i0>CR689q8ePpm`Y&2>Y6;;u; z1ceX~z%qoFq)3(2f9k5;5g4UzACiMD>485k_IvmWN95GrWnx~0$DPGwZXyGFA3^pe zE31AjC!%|W(O3{rQP}6Rsue17a%ix38-Y`xEGP5)sO3I`2ok%m3|`j3Xaa9f-~?2A zOwIDB-vu4c4;)wCEFlYig2mYLpJosl<D+mgW|!=kN3p)8ubZ#K|LUQakTz7XgNixe zi)WGaDXgWhUF9Bj-H8Srmk?rpN6CSC^e5=v{r8QF2=XVp9P+;IbB64DNXb<R8a&^- z9%Bhz?aL9DQq8-hK@!?-H@lv(%$3vSl^_9fj)($CJf~M70iGV@V*Zu777jCsG?@}; z(f%=2FNyBJr2r<uxreL&7dLt;t=PU}_aKsqNY$VqG<_Y+m~>f4jVN!xuvH2|KWKB8 zLiPgsdaO=P8f1+38N*vE+CV!_LxOC#tZI@FS(#s?tX&zWaumuerys+^H&U_rd7Uo$ z@-aV<)o^XbvM*qFX@h(ADA>xXM}XfKg7y5m+<|Q;EdNy{v*;y6D0pyvIm7(Z37LQo zdKa7S=A*l9T%J%lEbBC^*8UUtQTT9|)nnw&3bIB^vGePqDtV)|d}CoeDVo_(_+jSV zbAEM&%u}ftj4^u>57zCqq}Z)R32IsrOOjbSS3+VpP9B%{Yd`y*Z2m8(iqR7w7JF1? zjZ*sL_y$#o_)m~|?D3S6_TsL}1sl#_5%t-$P3Dl|F#wIFeXdaF1&%_nu>a8?j};1b zqjjj0z+xf+OznOLMy!FjFYxiov`DB*yZ^5AC?Q!lgI(`E-z~zPt_Ls1d><|j>XVQN z^L`B+Yt7pFzlJ3dc_v#hVAm-HtuZ_1>s08}=EM&6@-4UJIJVGyni%RyW?x)xtc6J6 zf*!n5ZTzKUXz>LF+b2d*m;{4n<t^2IztuTz)7F1E*e4}2tE4Dl<RJL>p5OXtJve(n zI+5Q*episZlzxp@qN4-Zs)~oPVg9s5gSt+DCUjU_4lwhyv{`nmrzEZ&4R$48v98VV z{aGo4mi#d5un)n;*L^ab&`9vv-}+l5Kb=XH`)UUCex&57sYG2c6Bl!3Kx`+-r86n` za3TXYhQO7XBWcB;;j^4etu;bM%G2*zH)_=Gmd5~L<-7jgG2fjD;oB>QKiwUNF6qkh zW!}}bNLPk#VMKAAy38@EJ^SDP>Lzk}oMUp{KDz6@u!717Dn@g34DPJOa<Hb-CIL<M zXVVh^1_nZ8I8;#LRLyxZWL^v5cfz%bDrbb?#4L6yDOA1Murm%&>UwMM32oxd3m@1L z_qgB<P9AvZ$Cfmu(Oo0|twl%#uStNp{0>#92|5Qr7AGj~+UdDbE4ze1hb73kk4u~3 z5G7?aOQ?wQ{8;|TcV%i&v}j*c@-B{YnACVpCa>et?XH<<t6(qNuw}K2K)hw2h1FIE z+X$XY@V`ne@~LQVBM*f!OpW06b+SE^4{+4__dVh)@hmM!urQ<Qg4ueqDzl^OlDYh8 zfHv>-uS>qL^chUj9<EmciN2AyFE~EXqjKnMKPFeu`T5J)@nTEjmi6`&{lEHuexf!U z6%$*Tvv-z-l9b*MQRR)7<$PH1o8T6&_>dx9-!ZI<{cU&RsF1eAuyBqzj+!0)(AS-c z@r{O+$o|ChE|W|kG<f*Y>3UpPDP`DX{X2|4MhU@%xI@OFnuP;lMOQmwJ~Fwn{Jv(p zmtJW(R=jTUBkU|Z)rR4tQ6h7D8r<*DkIqz`r*kTI+EE8@PZ}G|pdm3<pxnOGB(lKk zF~=KMMp{4MS~EJ;89Q)M%=0e?E~NqkskI%uk(VeFW9ZY3NvIR!+waWh9Yq%=LS{~B z5K`t+aPmLl{HAQpm$alUXmNyN6~9#Bo(F~+@>w?a9zVHN=)6ND_{T}T5{??&hAxCy z`vTYjK$mWF-gkh;Ts8NBQI6z-1+21z+$~1diZOcDvKEo*(w5$7=n0(X)?n?AS2x=R ziUJKu4T?;&q8E-AT79oF9ivqI=R%XCVH&bE$OxACQ#l|e0NffYNg~AC97gVDqYmb& zdcWZVv4|%~%8o~BcN$8FHPTggr~0RLak?@ihClL8r)$aFvJ8!_<u%|&5v}_rs<mb) z@ZwbQm!?WMS2H(LFm3hd)u+A^v;pv3%(h=ibDRyVX5JraR%VRQE-4VUHr-~pnq9+R z54$32Q-Yu)_o)LY)ezeXhLLC87b@Bo<7XiZ=Dx7|X$o5n^}`jC*kS?Sw1$1FCSeLf zbl{8ZTlv`@?{6D9g}RI5?}|3YZ>!o=bHoP1UN%XztIPJLk2cqUas}u_6Fix5`2fz9 zNnY6Os`ju*LLCz1**sR=2gh2TU@`>l*Hk_wVUrt>hpSUch-YWs?ph0W6R}wom$%E^ za8q9g{n&2fpdr*%Q*0!i<3pbk_b9(97*I$!C>=?;7Hu8q_B>IG1Q;34@Q@rJLQsiY z-NXGM=8(c~9+y``Unut<P2!Hos1{!_+h$<t(CO~NS0-El>xIz@PwZTqxNKQ+LKjCg zS2tuOXY6*bq=fi8@~N4{h$u5$DUwtr2EFbJxDk>WK}Ytla=WR7P>ZP@y4}cNFF_b} zj8-#&ZEb?rJQtuc6zU7i(i9t=m=OWgVcJMkI!Yj~G%uhToqd&G**Fg6T8Bx$NeMH? z4dFzh6Il}gFa7X{Dp-`~Ls!)Z>i;E!RYkC(<=>%Ji`!x>OHaK@E0vRuJFwe9B(+rl zMKKW7I5u%8#gt<~qz6=8fg@eK<x*kL9lqE2N%{WV4B5t=l>+?6fKjt)Qa!kD*rDdL zDI9<M1X7~Pnl3e<>-t?VUY)$nmS+tDkwUpg=$vxa$yf0HOF+JL%$IFH?qYC)ZqqKK z@~p>JCqbFx0Ankr5-(Q};j`xK<@A}6LuBY0Kw9KP(9Q*Gjy4}^9__~jz3|DQ1F3>i z3<TjGUWar=FUuld%DsF23#g@y!~PK6N)#B?UZo`U`1NI6r=1Z6hnwxRo?Y{Aedyji zY}V&ya@~8Ngj+b7+pX5-wZi5i+y5Jc_|d-lpld*BaQHReg4c7l6aZ6$0?zsGK{<gf zHb%=$7DK;?x)UhC$wR~utmgtNXB)8G^iIA*M<1JURJR0|7tH@N(Co==(>KDX@0fOb zy2w*gILk#@1GT)_rt&OFDloO}DVzOAb2@9FM~e@!Kf<AUT&Q-gGC1c*%)73SUBGeo zB1Z%bg{{b1>RrSsNjkfXG*#2^<Wcnzmh;*`X=B2D<r3QH%wwinwoPH^YF~fOS4f`k zLd8fR+5r%NF7B)7TshWEs)!C!oYcc>7+sw&(55rr&H^CDLEFXl_1bU1e+{>!EjBcV z#`{8kXGfA0&7_-_bc_HYTNwJ|j<wM-&p-x}PofNBnkiK?ajsY}fb|Z!ke;r;gaSG! z!Og=2<>S_RA$2}-DgTiJiKY4<aaW8O3F>qJ4kXHg-x{k&s4lS_5O`>*!pNT&p)C)E zFGMJcR`f7%pD%8c;2E!#BhVBQx72LIv0nhni-N8jp_n$;V1)_^-_v|RHyYGrLm9BO ztJ+0VS|bRULP)E$P;{ar)M4lWjt?S_!_VPd+K($M0ujyi(G{Y4>P$o<B(x*oKaRfK z88_!<a;);oY{Wfl^fL+kVY0&>o_w>D79{@A<d0rz1FoUzySp)qkP*MCPmUEeHs*i+ zq=N%)EnA_vdaN)VgkMGBZl)6IrEMiD+rIH>7aZ?zN^W%4)x+!H$dRH!PIKFlX$1@q znnjH1Kg|R0JEcF_!I+wuhcg^{y6-~6Um^4D<xFU?@D_jv`x;4)*Oe7^H(<Vw-KF4f zf$WNq=L9uX&bR>7<R>eq(u0XvY7lV2A2QB;pMatZQjAEp00Bo!prdJjPfO;9?+1HU zj7=iGGIPV8RCJn*g`EjBT6g@VvdN8OP@8{$*s?@aODUEH%nX!)#A#vY;(n~!(R&PV zGjr7(tMCFJPB!8z9-1xTf}2i9(k1gsz^yffS2|}g|HUeD@85X$+;+Nav}s)uDYM9Y zKfkx}zprkm?{t{gjtn6NAh3|*f&Y0qL9Z#R%<E&i2e+_$TfSs2d3=ACy6U{w&P1ZU zlYLxf6%ZSWjohK~N~IC>wrT>#+S^m)?~*ZP7@6@G=9O%Ec+VR5Y~co~u?Gm(bKL=t z-|bM>jB71F1)9l?b6i3&v3Q&L4P7~2U%{n6uSt0QRak~@$EjnjK*`o;B8F~3vM60p z6sDI@2w=TS$7Tj+kK?eV{+4FDtbnDGk}t<?--UdMiALZA8zFJZ)^001ZXq)pa04(_ z4fo&x8@lE8%$bqKS(&~EV+%kZp7$Vt)%+`qo@uf|4{vEnw*j9Lf_?taRPH9ZHbHts zg_ov77_F@eW6RTab>M9z%wqIJ3sELrHiMQaSZW*;eU$U|jh<E4a+%csAb^h$!s;Tz zH8mv!>C`-^3WP#-dqQo}P$&-RSHBVSc_;aqCDc**Q5J(;9cE+;rnRxk>{$8>opB~b zwiVSEkYdvZus;=(p!uh=t_n|*`Zngn(@W^{u$N3>v%HI!q}-{EQj|z&`z`mcNYBKb z;U)rqSu7gAs}kumATu~o&p2I;g`1L3_gEtjBVUp&;=jM#*!iid=Wq_p#wl$Y2bZb@ zyjK(lLJyhxTpH7RyEM(>l37eyB_q|mna2!y`&&eHpzVh#S)DcW!OW_^Hse75e7+o^ z$)JXsF(HVF>4*Lio;(yVdo`O77-h+s13+~#RvwWvmm*cQlW-q8H$ihh3G%KZd>!CV zEwg-KXTiJ5j{Vn(f`2Y$urCC1IBQ;1e4z|V60flQdsJBDw#O$f?op7Q-$7z~^Fv0c zDGTT#YyE2j*4d$WVZg%<R6U4Me~JdkyMCC`CH~qoseX;x@3w;s7k?jSYd5;X2Vm{i zeNni$P+i<rBE2J6QFX=wMV^7FhlUmMkqyjgmqe!*0)z74{jwk!|G^Q!gVW1n3}#<1 z`PP5<96CAtB%8kt1gLcT?>ND=xy5X7(#4TZUG#N-5Q!m#6n9Ol5P1}$AsCrs#96E) z$X_b(>UcZbx7Pdo2>>aNxbS-l%!%OEYMsYUhM_+NTUMofisRj&QNxD6on#jXwYJn; z8^T>wEjpnj0{sq=-2`%u<fQlZL~VS1*a#L?qg2zorW!qv4?7$)RT2o`h|`_q4BMNs zmSC)G{??wI`Y$7hcC2;H#9g(bXqy?jmo6vg1#z*P<HIvJXgl2+gfkZi3UH3e?00($ z|KnwJ1kCtz222wcaXb`ard_(j8~qyFoD{M!f=9h6r0rE6Yf{p!T>y-b(aW~#9u-Hi zgDo-i$<v#{`Jv5}!o>yeAeeoaGv(f_mIu{}lqR~p5?~z!Lc8oq-5~y-U>Z#G0ubo* zxAs(4-?9s%_inm%_n;OVVI6j{vxW=QK!{XZ6eJ>m`I7^tWWmXr2UBazLu>Gzaq#c$ zh~9h$hUa3O?JT)>rh4#*@p!0lA{!i`7T}*8$rE6~^`eWS^(wi~qG#`6B+#+Qw*>T^ ztdBZT@_IYQukRUw9?&BL-)<;;M#x6KUW-6*4r=c0`3X-k+mBMTk+3l>c6Qf*6mr0U zak!H$c(1Joxs@oq$nHO-gPWJs;Ca3vrr+M{mhFL%eofX8C2vDJkw!@Zf~66I?EAi) z?nsb8n119&x~)E~e_q-gVFFd|s*4SKnz{Lo6#f802UoDiI!HuW6vd=lgwdLae3Tgh z`+W75XVRbC;=w9U_l&CGSk-NEeMqYrfgSCWMupbxMktki8O<Xg>uO_p=X6I4Ouk8Z zWB0J7->Zd?IUQcaiNrFLb)JXs>ir%B#u?4m)w#<na+o7tCS2>OWjq=u_gCQ&d};lB zk?sexZ@a{ie))eHywC>>6n!mWyO0Awn<f6<rC}b;X&ZHFCc;YTtw(-geG{dA@ry4< zYU&2O>okZ}=n?d~?c-J>?04TcqR`a)*g#vfYWKt{vJ9WCU)C4z)7tl`$?PDQ6e$-Y z1h#pB#4%y@R@nd|SgLwB|2dT}OWhzT`g5=39X6>;+OLc{-j`ug7RG${>*OBa39Ik* zT1O>dPS0!cgPdB(K@d@|;5gp{d&G9xzS-_#mZ+6e2&PAC(|<|?8)tooPoO-sMQY@_ zU=`a6v+fzXY%ga-3e5P)&)vvWY@VkE{Vm<i2LJL7U{#a+*V1j{A{#(eV;HUYIIj?s zrdm;Jo7M4_g2sq@f6tE2up$1ujoWk5N0lcV>2R(veVS<}KK0-vBPk|it4v>d#Xi9} zG)h45@hb~AP(qev87c@uodHnRe&prDsWoP>fCDfGqpwu<V6VB||K*73`%vI_fZ)v> zV&f%tB(#U#oz7C7R0}Er)DUh$N%`-cabexSW~WGXRO^<Yy73Le3j_Su-L|^V3wjbk ztOz@t`V<K@{6iu|q+&s)zIO9;p-6SNALI)3=0OybJ+j%%_BQWyd0qd6d=lAAy_)VH z!47*BUlgP>4$8Gl78i^pO~=uPPPeXd9?}WqUxcy^8lW>R(jP#%32wmuLQ}*~EUfi? z)O@3sSu4r>N*`|nF{#%$w`-p1Yu0SZEioRhbGvu^+oD8krW5PN0ojxGF?pg<By^b0 zk2lW_8<R93*srtoaPkR7=6iDi+FuzvTMnjSOqDil$L5@jCY!dmedTZu=A_JC#@U>9 zJz#~TM1<q=#n<R{pQfcXDUGbP<l+^<p_xR>ISh@}+i3$f^wyMPD3zy9E{3?eVq#3s zx9%|PnRV<NZAqpW($Cy-=Jj-*KhVh8tNbL*bj9AUvsdt7R_n!t?etaXDJT=2L*v+K z?^*p_dIuyD60gOLNnBP@UDu=HvKx|Zh)aS!kGHL+*3RIroG9U~X-spir*G5ISB6Cb z3mfH^*xpedA5%I%x|WYvNUX!JG5XF6jA3&6&|m~piK8jbKwd$JDg(4)^v25Gu+_d! z+9%<y1q$$KR{W6tX8kY<0!%b4#Tde1pFvOPyx%oWZeVZ%TW^z>XO<{|V1BKInRNVp zE2-4>&yGFc`B+{PW(c7#Bn6G!)=j_<BD|Vk_B{98*)Rg6y8q7^rt(1boGmPZjH@W1 zP1wFHU}vd_gvOg?o$MGwkMKncI(t+}@s<urjDL1;xJAol%>$7q{BQlwC`fOJKfx=f zV;?y|QZ9Ib#UTC@9S>di8VG3y(Tua*lt!ixFW`7jjBpo2hSD+V+}4dwnsx32oqvi% zc6b@dzwG&blO#)6psL_jm@UXJAP>l~<_3jrA}`)gnHQzDWW*5eDgk9SfHLocnhPCX zem8cM(7&4VKwuy4`J@>8I+YN(_-WE}p(ssg)g<I-Dryf*Q&pomwW_wY3$N!9PVL9& z`(}BC#eXGfO3t@E;J9K-JPwVw@WsIt@Px{KVun(>`DpmY6f8VALgm#%ViVKhGG%s6 z8s;FZf<57+h{_``)E$3+qUlbDo!neqy_m0;!o|xxHueq>tTG_iTyN;+7`Lg0Qwixr zQ><uhOM5)&(a}FUt-2OG3<<%5+5{6iUD@cOkRoC-8u)HG13?nwx#B$4<k+V@9zr|H zZsAHigCl*c*?hkA;>MZgW0heE1256J9{Dx7i#xYcPKBblN*REb>#L$m%nE(q_hz>3 z*VKVDsU2c#@nS#FayKOCwebYmst;@)u?8<qA~?eqp*&wwkvCvabADW9g%2yyF^KyO zBO_~^Aiu$w$u~m})pY04WZbE>ux9x!5vCV1fgi)l%p(6BTan6!3XS5M%Mp}>XZ=^Y z*y%(k!R}WlN0mF$BJ8)2bxkgmQ@q%G<TuQ}Vm=3={_zANDt#DNPff>X_qwkdLCm1q zXKPArBJD&@H)MuI3ht@$-ibJ1nGqr}3d7ypahbm{A4E}bNK-vW;_wV!J@P*QKS030 zEP(~^UwAmz$*)&_gTSG+UlCkICD<+Na}-j)!3oqPGR`&W^FuqFSe;K*_aZm`iVWD{ zq8<RLDMsJ%wc$co*qOFCALZk<eA<lm&qxk@$=m63@~0E_860O&=u1CdriGT%Me`9D z?XNg87{N`SWF7On+3%aJ_-(*yel;1J)xBW0q(#N?=uNRW<dM;D)tgt`$m*mEFrzo+ zePnpG#P^1(6C7S1T)AiInIBItlS}MO&hBUV4!G5Ez=oN>9`MzIFgPxdNpIN9;`@Ni z@-a?ZF<Q}BVMAzRK{kuTBiXqF{rYE_3Q{KMrXcq7vtO0E)vng}dGYV?CVJaRXusP3 zQ#QQ=%{D=oiHUFGp}YBg+SIaCcRwuSAlxFvop`45vbfIb;B{-^oVlR9o8Aw+=`u7E zIRceH`L@FL1g3x*o}-Pg*L%fq<dSxx*_5bd#`o+Ee)VG9hsMEWud1i}p7&Z2uB%VZ zCwZMZqhj=(j6hL?0UAwQg;qzg#d3=ulhHT}<5S*_)LQak#;pHmFeYTjv*mFUHNY`H z`F>tX1l4!7+WfT8xT?J)Jx|I30l;77wpAlPPyjIwXi1v_a8@PWt-J^Cm&t~L+E9Pr zLFIwz69To^K)BspmEAbfyalkZBMZhb!I#-gbZFD~Ry>NR_rgJ<M8E}av#5_p&a&fk z(sSi`UmVO;;lj<2Cw3j}CD#BJr{N~Ee0>?pe;-PBfu_^dO5IB$!VvsyMI0g$c2c!h z`Di4?%3s6TNf<HluI>3;5N@zTHqPhg2Ky9Gx+i^4G@`z5WSm8Gv>ggH#%Qq`NIX8~ z{(QepA_<4URJ$X<n}zJTg(;R|vvDb^3;(hy?`49ug=+_fMk?SD7Qw@5O^8gH2vCTX zhuL&L=mroAEX!?`8QW?xIdDlv%>uI!qAR5mA>`kFW5<rTcPim|g~u@M*>^|e>KV#J z>c(;Qcm|ji)^ZhEYw>Ik(xYwlZ0MBTgyU@4p{2WRhfT(-h8#w2u^7U(B99QxDUIfx z-Aw6%O(R|j8}A(iEaPd2(Ml9yxIb(t9r@whcin3XkiK}7k>Yx3ts055-UA=IivShg zPJPak61i#0J!^u_kz;kmm;YL;6tjfnPs`o&Dd8R=Z_G9|*462M@3qxW5X;)BNBSCK zpQ$3)nC$Y9UYZspN+ArdZNrHqkD%#&3FYvP0r-R6e;P7EtX+glFps7MC=DqVSEFZJ zvS|W#procTuDZ+@X;5Zbc>ZAnCZt`$5ve&o?>W8Vu_ZnfSeuCQWOvpz(!y4;MZ!Ci zeSj#g=+hiWQ_igDY!lLnVRqD~i}qYG+zE(bYPl`{oKY6hcM5!()}}&xF#ea;mLPPn zL}a1S|7OEP2~3BncJ?<p-_E2+tYwR4*pr`2=|ZJBi&|qwo8D~Ez}Q?j9T_tHoh7hq z6-i=7$65@<E4X6qhxv%-j8iA=^1R1STJUVl4qm;3qIEA_Q7}QHiW3f3kd1I~5|kE< zpS8B-+#~Fdl*D)c6}pmzUOSP2%9g<XXQJs&^br#@upquLxaJuI5On88g2}kcQCoU$ zr-ie~(1@7<9Nney6+I%DfG`nF>;07(x`PW($H6Du{zfNp9#0hg1e+q-fP}gk#Z0%~ zMeS+T&7~MQHK5b(8jc={`5DG?3UHN2Opu;Zd(bwBv-*HFO{af~X~gj}dk?kSz~#6k z)jP}E8!;x`6Cy)|gs=?_=bPu@N@fY%K(>;cN1vvEP(9R+;J=$W%DB${?}CSl%m|s3 zO_#{2B>0^I30Y<fLCG5VS5L4Uw1TCX>+IaWRK1^%w~deyphs<BzjA#0#wn;4NvVsW z-rLcE4(heAM|Im(KzrrG#u$u5#$3{`4mpa^+GSf4Wm>XR)C>XtGtCan{yawgb;<zt zonnD{$Xv;NKNvW-pk$-gVdijTB{{YKk}qVb%XI3g!vO%rkuU%bzTBW{z$*zOuujGc z7IoU#p#?8P=HuTvL~Nn(yc%E-s2f$0p_~{z^8s`2aG8&-YPi9?uP5dH!X5y~)?0U< zoS$E&9giI|3*GsOl*xz(*gpD6dfA^<7=&gke{J#>Krf1vA6!e4n}h^`vk!gl@mK`5 zVu)r({a#sVTxq0^%zDN`ZT56_k&WYd#%i(nKML=_*EFzhIx_(jyd&N~QKN>DhDEHG zqM_tNpb<kNner6twu{v>4J5*i$f>Bx!>qrZoS^w%32?(ubmb-1RY`8`DuXGSgr8@i zrPksS2qw>`BoB1#rOdB|1CAO6xLpvI+!-~jIjdy7RlIe#Gjl9~l(cywOcZX^+bN;M zqhr*{D3;*s@{QD{_FW!n7%iOa&yIcAw=rvw+YqeRu$fU{tq~^d0K=Er#X<Puw5=NO zSW_>HXGGhF^$kUdeHN*YR+)(V5(u@Co9*0Y0pCbsL$1z^G~d3~XjfL1oJ!s1eAt0~ z$4?VRCOjyXYLLq*BuWqUB=Hm~_{ucjqSdvoB8Kc26@`^xeVJqEwchw7T)Vv_>(A2| z$EJxhE6mm05;%IYnVB?5((wPMfIXY)k&hc!NR-E_o@ehL2M99>xo`7$w~UsLqEfHR zaWwyr5#<GMgN+<mBw)&*bHC-!eN%IVUB(vu9Cz%rWZjXjtb5ynfAXw}0}@XCRZQGG zX21h6F;z7t5>A^1zoE&z1*0?mb9s-mooda}-yW$B?v>u7s}}ttI)D(?$=v{k9`Vao z&7h237lBAV51d&Eq`u3GF+KQ@cZSBXzOFf6x&dc6Y2Mxq>aO>LZfn)jRw}d9w7+#x zv%iHp=nNZ5ALVN?fgW>O@tTs42byEG53N8j0XbfdG3g>(SrBAh^3O7uDbqTdDLfkJ zL@?+~eOT_6gCx5+85>pGjV}lyDW>7JIn1MC1$*L`p<%&1=(4i|&NGQAJ|#zEzRwX& zk<2XK-kA@6WYB7naA~ua3~cTtg}~Q(D!-3f-N%y8s{$=KcXs4d=yMRQMTcjV@<cMF z>^y3`Z~G+EWtP)RV?9xbm!(~pQFy!Lbj?!*aI@J7ae3;@L)R=H+E8fue*t?sfMI;# z-GNcj0;VF04e$%ax3|MAlm>MCCq1rkr^v7;5Vccs7x1B^ij^a~{46}imj~LuAKU7X zwOO_jZq{ZkVX1`^y=F$nSVZ{{d^A}F1;%D0{a`1Yy8fA)3+!E+)c-(!8qbD!5x;vl zbO$V8o@+hG>S6Qfyb|@cdEj*tPI@~JY~`SmFfw)SDp6~wA->>l{$3^5jNdtU(0JyQ z2q24bDOQ`R9Or@uqig&ild#~KO+}~(H!+2e{IAUr@OZVCVBO209n=vUKrZ`9DvFpf zHa3yv0qb76uIh<lJpEYl-foCKiAez+Mao-LIJ&9m?-C!MZI5}x;;fSd7Q1E%P!=D% zgo#-0bS7?Blkc4+;cK`i2izTffQVd$G446&uX$N#KM!BT{7D(ZsnfuxhR}*&n}8<a z+}QXi0ulHj0$}`Y0^uzEJ0ZWDvs?*tL+Us4b^IyEWlda|cWNmfC4bKrT}ExjUq`z- zWYlc9eZt4^Sef!FQw3*vNXmq0pih-!P+EYBUw@r+M4gj0WRdeiJ;dUl(v3_>!m&xU zr+d7>92nH@oE%>`Hd~Z{x+>iEh)XvHu3Q=i$8;-6>bZ{+W;Z=G+?VWa$gyxB;dJr& zww#b433Q4G%7ARoWN`vgU7L!mOqta7$jIT<07`C+mXroOrMMD4@P${HDW@?~?`~%5 z(o$zNEi_tXF{r5k)Y<g%C*JT_(=k5C9eYNpMnKB)<lj23C$?r@sS!&lyC((l%9Qb8 z1nexxmnbF8MR_7mrKlC^eWC@dnHtj@2Wm|t#5Y8%htPK_?|b~rN_{_o-NtyfEB9W} znmpB#AOUCs4hZ_EMPR)AFWR7s^%URcpJmjTfLwkLaH?~CPDr(JQ)mkc&|KiNq;0l$ zZkA-sq32$2j{Ga<Zdi{Gd0^`Mx81j5-n^<0pesTIU`XL|Dbd7JON9Fx9_)*r6hLlh zn8MHucL72)GpN!#Dp$M$-8!XJcZe~tN#}9LBvMhZYwtm>OR?|1qjx6G0EHzOLRu_d zMA>*SKz&F$33?U5i9oSRCFOf{9uQ0XX)xeROwV}@Tct_NcXrBhY2&gvOq-1|ZyPC_ zvVA_5E05%DzTp0mn254t4e(l3%@729>&wV|3t8P==>4&OfGhdeD<pCtimOI#j%Xz! z-;qk&RQ;d-?sQxY$!@zDFN2S$Yxy{_-#%K$+hO5BUMaRt|J>qFH=Xcp64=6PB=>is zOdj)%-)jx<Aakv@BA0W;#{Oq1U&q_%750;+&Zc}WUM-IY%D#?wdjfMUj>h$L6}@Jc z?OYw#0-1{8;Yy&LrCQ~OFYZM~+YWUGR$emVNE`|xB?7Ap%>D5`Ktt=fKTVCg`{^T| zrZLzG^jI<bNpggz!;%#W8`L8)$33A`ec|S*<Lb1qkTeU3!FZ`J;pZ?z&2M!ShQsVb zPDRk-Iz*c8A3;FXVY$KAN%6IgCYtO)dqb~vvoPD>*h+7wFv{P#R$l~R5PtC|4h(Ts z(vRsg&l|)glayK}8^F$!+Am|zL34dy;kkM4J4D#%n79yIFs_ZiEeeVhT+p4Gpj(G+ zGVUBZo5aIIrk~jijMLdr3d{0Y(p5&Gk@&*w>Lrom@~8z?PRVQxhYSsHlgmy<CPEcF z?#l!{VX)xf2+8Eb2lBHIBV}z8Zzb?Mqc3gjZDa7oR^4s}9!7?vrP@5Ftdz4i0F@e0 zgfI&+Mr3DfdCjd^s@+FKjRn%L=cW}kyDbJcbyx$%c-gMK-L@T%N{1CY3bSK0Tdr|U zyujS|xx<C@p(Hdc<aWD?JM`T%iM7{58b#7sNqYeEBIVz7h@dO=nz|jdr8Yz}R%QW@ z`gGTu=ewPXwEzzTcLdc%ThSsjr=Rri@@o|Wp?Wm%`LY3o0OFgg&`_8lzX&Bso|fP3 zj&fES;}j>p_7n(>YKI~r4@rQBhT)nv(KvEAoi`3c$WB`yh1mN`d>=EwS5<tIsypuy z)%Gfv&RQp#H03!4`ffSCDVj6IVQ)tB@)6vGzAB8%nUY3%E@$}jvHJszqTPn`=Vg<0 z;o#@|<{<Pahrd(M(_P+NT7~sy+X>R(Z4M@-7iX3J;lr>@l>bJ!w@Du8s<42CV8UzI zf)+aG5eFso5GRYVIgt)IiOu#i1I3LxD61Kzv|l>0g&c8b5cPX3^xi}Okj&Zb@I5}o zTVXEt>YT{Ol(JOBpdtJ*asos;a4i$4y@<09)m%7GTq__%4`QunUaVSucfNkM)@_6u z3D=5F$6T#42yOrCGpBfMRLya3WvZ#y|H(xoGU^TA?(w0sD5&rwZMawaSS9Cte^A?g zsY96fV<V-xy7h$N48V3P;(*v8gvB>!Dqmkyok)kDB&e8<RAZg~OIdbEJneku&`Urq zHeHv4a07Y8S;edopPpz$lX3>>w(Djk#jt+T6xLMRo$*KmY#U8yIBLlg1%1Xe0~bX} zIVFXEDuL|altZN&^-!>28T~6vpr3Wm0d)a^%>*hWvb?;m*Yn`fZ%#0YZGp1%rR!Nj zS74aPPNs%BhN=5T*TmJKZ3&lf!ztu;6Jy+BGQO(|*9|KR#EaL+p=mvCp~DQg%hAY3 z#D_4bdOp!DSxJ1Py9I-HbYu+GgbI<Q)~b&56%3B(kqL_88}Snh9?#LdZ%+ce4!1`o ztnRhUT$?qmhX=TNE~`ls$J7ZILuUJ1kAiQOOp5X@Xr)z!oX4r_&p&Ai!6Fnv(|MiB z0x*zMEf>mAA4)L-7Z*vos9VNAiscdTfw$oG7wQc~EER3B<cAj4UmM}h@)VC5tu*RK z=%xHKTcsC);$ue16A0yRo0grOfV<f-qYFkxC4&@Enf(IiZhPhExqc62r2auQY~lJ& z9J_BK%J)O@`M1CXX28z}Xn4H@8RQu_FRb*)$L_<+QPUk$CddnVsI*^)P0sHe+CTLL z64$3pZaA_FN*5hY?rS}MYn!!Tw)t+3pZZr3BaFCw3ay*&cw{o9qW1m2X}bwKg7<=K z3kq8+#e#7b#54;-B8NDu0HC+8IlZBsm1Y9{N&k%cy!S9@>D6{(&bKtT!r*S2&Q;*6 zE|5Q*;CV2X^`sH`--SGfhdQH>ea;=Uz2CS7I8}r9p&S}XCNdaO_y&ANrs0{b$m#^y zZH;}nt}X{{h-wK?Dm8*y0vEEJXUkubY`<YT)2^>BVg&l$C}_kklDE}7c8ND7MTzt5 zC0p9fGA@wAGM)tv9s5ORKkc2^YI3ZE(x^s)1Qi&<-X%HEUt0u`!Co-s079+DmOk~? zI~wkH$tUGjV_J0D1)_TJ4I)l^IxnFpI-*Lq{Z`3ifK3fvi$#w8P_t`w$J+k516SPr z4|=z2BTN<xoAU$rNmcDL)_WF6GZo77h$juCYMF;#3;U?~RZeDh9<V0iET00O2sb3( zvVb#o#Tt01GK2kkC~`0Ar!ecd|G$$TVkwJX#TOGjKa~qfBw6~=W6(Ns-KE4ZU1oc= zl6aCITBUP}vYz1FB=4QXK{)=raDssZJR5fGvPv_=K{%rzTi-Mv+X<Zv%?bi`f5f>s zvBYNf{i>Fx!U|#fNxz==4vXs+q%>o;fYamo8ijGb1V0Tvtg0R&J`czFLJP8JVNNT{ z>CPDK==s);s0R0;e%YepH_{FkU%Pish8sA>*w3w`Y(klK05yrSp=0sONA_J{yvTZY z-BSiY^C$d`2?cdiv$9VLGQ&$PJXoin^S2lNv-gmd>xe|jz*|sT-IOc@a6^P(J?HQq z!_Mu{HXKM1+Wt8OyvsCHrOJ$(%LS@8u@87_<a6COD%FJVl}w74>K`q9P>hq*g});( zBSwENdCA^#xrf0hmQ`%wAwp+;UM6Vbw)>l(-(B$$F?32*G?yYBVeUAeVJH8)OiY$v zA9@*stlb76aQJUMXX}37?)WrANh}n!lGg+u5t>Rz0q^bFFw`!5VK9({w?a0k4QP!N z{KF_s++$B?xh~f+)uIW`j2CT|j+Ug9$Z4>A(wKJoDaZ})XjewTBNJKV<T1E<dNwLh zTF^MfmocaJ%GdwAm6SAXkIO`v<$aWXNJM1O63)*AKj=IxY?TmC?5i51t2(V5*;cAT zTjc%Fi3t`PUSVy3v#oU`va&guC$8}Y|8B>>Q|Xy$O#3E^LhG!n(VdN<v$fS10Fl~? z-psk%*rAoyYk!eT4G%NLPj^xcDGs5Mq;GkRH`AI0{1Jx1QM1SzkD2KdTu+;|q7ps) zzvx(^s~$FQgkXrVU+V^19%K+Bg-(fuQZ-QF-gV_>S7~@`^={>*f)-`_8!V~so@p$D zv$`{9@BU5b*h`VpFiFd{>({vcLJJAI+$Mk41uV;$%&VlAupj551`#H1-jn!*br7DZ zDj6q@o9kTO+?q}J^_12Ve*&~%R$B6YnbzLXsJjQ8bcWjo<#~+!h5;B#hkl&Pwvu*( zvX@{aMIpMNq~G^ECUf`@*$bprn?3XhJ^`kdz|uyLW+Z2MY>~CU21YjB*TBW@_BKIn zCk4U-Pf)zrU8fLi*k~=v6<4`D$oPrvl42K9mOcL|WB~0<t*8=phRXp`u$m+FFuUxo z$m~<n(06W!0c7y;b)$pF$a53gF^ij3G9hcXRFxcs_xbQ}C&Tf`4#S?6WTYL-F1V~J z0n8$Z227Q?$xApCfIfA7>3GR~R6MC*VQO<iQwX)q{V6)Zk*o;8c^Rd0$0Weh^2!w9 z#jcaAt@?a}G%DpPo(s|EDbz$SYf+_I<A<n-5L5+#&C_W(XhEerB;z`Os-5mIedFw! ziidb4N?sp+_x(`MXCbmY=Re_BO%{}iFb<b=8hPn0{vq>Ror>YkO_spu624Eh)BNpt zmTxsjf};}^w7a*$oek?f90;co?G2>}g7d{bb=${#=-&vz3}x5h<vk^819Y`niYo^8 zm;rHx`~*!QXC4(w?t;PNd&Xb|o3zF6C-ksi_%2wjbs4JRurm1n>>&=)&$IP~|Kq$N z>G(oIb;RW2|JC-(=JXE3A?Ns)2YH8x$W*pV&N8!RQ|#^JH2}xD4n?^p!*1y#bTPoo z{uT=*PNWe61)zq1J!PQ=U^UtGH4YgUA@h*e&P!pFnhZq&#(^s<#&Yi1+^U5sEX#6* zHaQO>CBmqom{H8B&|a<=7(Pbt1)B(3DkQ#$_f1G~gcxN19Z&{;*Wko0(BR^d`k?0O z{rDq);FFbtowJpi-=tJUGPv&5mVOoy+38qQKTEhW0}iLN{781zXkyFmUu8)knIa?o z6QS`04>OSHVDJ|Kpw59?2yq$j&zY=jt$44!ol=pls=eUPQ+mznS(pJloulsPHbfA} z&eCZA8ShSG*S~Yg+(fVMT2A^@wwqfsp7G&hi>H+qWPERg@7CSZ##|gaG<9a`Md(!? zV3&3j^_fYL!CZuknQYqBFuB5O^SO9nkO{u=aWuU3o`3_2^;!1PzuDLh=*{N!9|`v| z=-`ZWzV%B=dC34*zW~H0kGxL`(`?gJ>B~E8R%<~#eWe>^RcneVohe|5Bpg=z?fRQ( z%>=oHaM6L`U*+koT-i>J9(9k96<JxGP{K8T^wGImvY;BiJM?stuvPD54FPnI%C+pr zKX+<0D{Hh@*Srx>W0JT-eLR>Rb$rYM+^uVMe&1fs^Vt8=rvzS6rXH%%enz6I&I9Yo z?$jNEFOq$;NY$#OH`nPoy3FA6hMzI<H_Wvr@y1K_w@%o$wBj)ouE~J?hUTspzaL}{ z-^gmMD*KQ#42Nz%w_B1W9z7>;>y`zuE<zU617N5{TdIlY{9N+zeS<9fi03Y?-z<iL z5{M(Jpuo=4MMJ-5DVUPug^p(G{TP8A`uu$_--E)UW&}31C&NzTPZKPe{@R(&5ZyIl z_mQAFJKa@Ib%tb6L8*cWj)y%T{$Bk^*Oj=<yL5&=)&o@<Z=-Q+l>dgR$VHLB%g}^Q z{$`?C_0at4fHR;tEl@Qwe-0yzXhTIWN;%+SuG5Y-=lj#-jj;{#PDr!Q@-jfM4aPss zSrd*EPu>n6SCkzDBS}l%o%U2Prnz=kVo(FCw}W|Ph{<En^(ZYJHdqb*MiTk;jq}w> zk3EMy$x#_|mMuGv&_M~PUoyFr##vI4(jY9G#|l9gC*lMj@;ckTKMb<ky@M(i*46m^ z0f5$)MD(m4C|~z~P#20fWp3SU>sd!x9d=z_^S>&qu%fRPJxQxY_|pd`X{L>4`1F{! zCY%D=u(A<i2{4z;`r!9f#Xijc|E-HCC7&pQn*qCP;1Y*nQ`;pPjDiXNGBNDlLntm8 z<@IhC=A&$o*cF@2yeJ2DhNoO;6_cRr0UpBqAhdb1g+lw~#JVV5i(eo&NOz8foYRnw zeL*3w+FAi0U*Hu_$Fmm&_i$0w501r1Un}rNMmWLEu08BmjeJuq)J+*2laR=i@qzzy zuEYs5%Q7+31{YuWiId(!)^vSSEa+abmLC5@8TwzFtAkB$Uitl`Eq0J*PXe1e<fwYZ zO_X89xwgt=5X@(cVH%aOJSiT(d&^i?HmmOnmS+dm^#`F@dgf~u^gbxDOHTnS%du6% zn%j0yKyU1?&!Su(j4&!UwaAdRDyP7nLB(z{8Wc>{BOn}3T;dq6?ZGeN)I?Q11dUsM zV$Y|RgM+J?Q+oTby~LFd3E<P^gblmtXQYSA|6UPOfw#%iq^G*ltg&G<8~2HGH_Y-T z4$mx=WxI4A1kjvTlAx+m->5OPQop_{$v{uw94GE$0%C^lgSJUBTam!C!CzHc6@^7- znsra?nK{&m<1iO!08GPk2KNX-ST3B(6Yz6)yl9Eg1ACwquNyf}U)BT0S#(vN)Zkle z?|4J;@f_jBsh3pOIYz|#rB+2{W@DdQP}=^PkUwsrbyap(_LeqU*Mhm8ZD%K9OU8ik z))JfhQ?LHQMQfW?Pvb{U>kEXUBra$zN;E@mva;sNAV2M6sF`D)Dqs1~BkPUBWg%vm z{1Klt9j-TImtxbmvcTe8;%kwD=F7tY-Nuk&SC&pJyG9P;$Tm-S((_&n8yaU-Ssk`0 zBN<y{*X3l>38Pw*RB$X;hiL=8`t{Yzd&4Kg2*od4$R={@4hBP=;qu)&vyVLxMmgo; z^Zn8RpW<+nI{Ffl?Ko?+dIpq!z)zO7bHrM-ZLGfVxs9se`Ozs_uvGy!JwyE+z4cvo zPwC0SX$XmAgC#6~<JSt#99r4m*8`PNzim)yQ{e`-4pti~z1EvB?ApH$SPoZX_Y!bo zOR{)txaz;BgaUFBND}4;OheNWck3EG`n1lj+(2*>wvE~eESO0sZc9q_+evtZGDQHd zQq#Gxz2A7Q?0mU<mgX!+h5rw-)kV}@0_35sY!(5`*-n>FEAZ)&C!-Er)aLg_q$Z9j zU}$HVZZwTN+0D-5u?ySSbv0AO325wL*Tg-{=Gm=k)MS)gy;YFSA?pJB;`x5O#rl#A zcyjpMeGnhlj0~ABf5p9r+z*&Wb&1#5<f&?3P*@{fxI&)ERH_88N#+pJIEpay<2rWX z&06aEE-ZTL6udBp{|=dT6LSfCs-j8XEF?uNISZxBK~X9D-1#L|JL<{4RNbM4l~VAh z5VHZ`ns2h?k=V6LAcUw$APEL@`L6xjE4UkBaw?CrJ^#${XXhxKh&ks*>$7xzSZ|)$ zmVR6Eb_so$z^G%3l#Vx0e7NnUJudD_tW+RID)1Gb;LIQcUJU*r`(A~$tA$2Gu5vjx zxlDfkbc8QzF%36WGHToM5U;@9zwWunly--*;;R)Ifs{F|5C)eo4dN@h^Do2~mV|oD zL;)WzRImj04LDh-_(SqW@1zj}2lr<7?pOr%#{iENJ2Dqk)y~u1<Qoz*iMGpF=U9Zx z62n2stli_vzy;@+&NU&Bqt<p2i1sz}<)<%|vjCA~`L-Eyn-E$$Z9`q#S-->krGMH% zOaYyn2B?^4B*OvXqtl$VZE8^B_er#pBSt8@Q^s&k!fZh=Vb+@$pnLN%c?1;cvmV(D zD32z-11a-aW#nAcvbw9?zR7vkl`rfgz8#<z6BHK#ELaiI8&l85hA8zFqP`lV4FIHT zIeDSOTngEtpcK94*clFQ`>|VdDtsRwPt18IKqjP-s?v7&B#!1-uH*HxW_TVRfn7u= z6ZC&y4rXp&4)!r5OxzS^c9N1su`Ji!LXH^-mbDMg;T3!YFd!unDIJzh)H68~88~pF zNria%L5U$4hkYao7$*QOuC(zI?AnsAyzR<~CrUA-MmM>7gE<wj)14nUN`*!h$k{s6 z)%!#Y{OT^gY4#s+#+Fr;DzPppm$YLWSW$&fy%1sHjdua$+j|X%T$?ln3r1C+Yn_#n zcA+LBnYNcCwnJX87%!ym066dOZIJW3bO0V+h=UU1a_v>vPt{V2AOc<Gg-myW=E#RG zLmQ0A!F0EzZedFGUCYryZxPV+^9k#afc*Zr8eDLwuYrMz30f-I7`pvMKZg5?#uhvk zcABi1)nnK#!4=U~fl^%@b`Q&1Jm%w1g*B*O<urYrEW9X&Glrovg45U#J#Upb2?Q#D zF1bN?qJJ^V>~h+wC&A!P%$@Mx@s5k7^$Jfxm_SV#55Yx7oND%`PuE*I4`;q!U|ecM z6c{<h5QBwUVm=;mN2>A7L~a6M&QN1bp6_)x#DRfEVPh63RuGsrk4yLpkMQ;+i!)Bi zWtFN@vENne4CI2>J$We&qtngMqL!KF=bKW5mV!?CdE`QuD_8YZ{7pU*dq!y%r+m__ z>-a5JtH4&S4*cn0)J^?BqSG3Erj-+r<;v&Ar?WbpAR(|<wqNQw=hI<^nyqZ%cSw*Q zgNo#l2XwTQ@!$5K4>62u8O5u)RaCZQrQN@&PvWyOZR+c0-Aizl_JK4>=5E$5DO1g1 z7`?eCv=!^k#Io_|c!a9T?@xF2l|d`r@-VvhVh7{F(&ko;ti-ALI?U5{vRFD`^ak6g zLl#Z*!72TO{Fc`41(?B~ZH)!Q%Z7R4iq#%Nvj=p*9P@Ed>zXimN;JDA9c1hq^#-Q` zm`0}|eXS5@`=wjt?%o7=bK9X}QXv*G_^TG=x#kD7_!r=oZ>g!bhSFp3@C<#pSS!%c zezY?7nbN|aOx}zje4cDFAf?Z(@Wfc6jRm=(%XCT7Fn9h|;Y4Lj?2K1p@jR=Qvn@QM zi2W8%%hdQ-E)~VnR@VrM0wqU@fLtRjHfgfhN>?&%#oIn;3bu!$w!?RXD7Wl<9n7=h z_6j78-?O0^#)dF!w^t`n^E55%B=UKT4m0=BFHW@NXmy;cBTwPt%K)a|?zjUdF!=%O z@m}3ATQB)8V1<DdN$TmcwDfn5gF-f-5rFs1xkA&u45x9@3o<hGZX>NtZ)7_qd0<mF zYx?TF2<iF|3dZ4ch?#;l1=H0{MlsXKMTqca;IjrSTU<8<A>5inDnVU@#+y~_FG0sL z8$31oFVj*k_`258I0Y=rf)YbeIpqKB1tFo7FmI{|W5v#j_49I)Gp7IEP=Ph(n)i(i z$(grti*~p`O7_l&QXVJKNa~!o{~EN<xR0!09r<>6rBygeMkgdP?Xi|7>Ni?)e^Tl< z=_4QvVqHmA2r)8SbB3CyPlYS|FHj)N*GL9e9L|*ev2jqDmL6qC+c|TN7CW>)BJO0! zBR$;`3<N8&OX}WUy@)|c<%NV67can588x{YDcatRTra6KH%J8AS)bd2sYF@$$4-#6 zA-?f8oWLN^23w@@M-wCdhOH23uU-D5H!D(V2QlMg!l1}_uP0hiOS5{*#Vf7b^2{FK zCZ8@CS-g)g^N<@8gDY!+MY(My!rmH+Tcd1~_dM`f=s@8fmnxy!>Yu&*-KD+@sgmJB zvz;dh(!6E^6{K2^_FS@x6P&mA6DY*ojDW=n)}DH(vE%ip(KY^0p@%LRmyVS^yH7CN z(YUY$YK!*9<|xp}d9xK?S^pu7%kBwe);c)1MHIgwrs*2C5s=KNm0w3f&e@bcW>3&> z6_x~^dgokW$5drzgKO^t_~-6ONIzA4xO9@p*2A^CHSYNmBL6540t<{M>;Pi`qoioZ z_K62sS&ss(mU0@BM>H`ulLoqN5&}-Z<h$EkyrvwrJ2@Xs;k@Go^>9^heerXLH6~3$ z$LS<-D++yjdA;^eY3c?`G{GJv`9AtxW)%+m<XhP86EGP|H&G^gi<HF$G^t)nkvPcB zRK^Y_YBa*@fc6%$q+b_Z_)V4}WRNvX1@$;Qu7?sY8|U2e!NDDLS|?E7_bXR5!+2KW zm1~-h7{}WKivS(2ME{xP&9=Bf?Y0257DBwGQAba|ajLE}pU_)j{+(?T73S&bvctM^ zO$nT9YW2IbzC~V)77YldtSOGjH&Zw&(52j$&%Rq-5Ane8Ad@ypT)nI_X;W?i+Rb#u zSE0oK^5I2CpoUzA{-m5{?AgdIBPYYh%?!Dp=_h3f30Yc4PZ^`~onpEmV*}j=!WcEI zGn`oPdkVQ;{Csh`Bm!keU+K#dmS~OK#unhzQZ5^Tvi1I~Z+i;$>mGN)v6Srpf&ZhG zdZ`2HoUm0So7tt+2`f4&D(befmpbf-mcPZDTcwRjOy|V`(qzh+QGI~6%&)LjgP{oO z6YCN*g`fP!^|I$}22F1_?c8p3Oy-sDHCVFusX93M-$50<P&?hZg^6LK9qcik4a&A} zj2(NVn&LWokkn|FSZH?cCE_s9Z26jV7{{HV+8#CO!9}gZv#oWVeX8zd|285VV;bX~ zaP6;&hFi{j4-VQ@;^8U&j*HN&_dU_CiI8%}eKC}<(r?D15KT@NP$k<CTrhXt*(`Ru z7vl@shLc!;A2b+yh2(7ftyn3nmuEz$MHlUmLPPC(Zyc2iurRF_x9JWK!_Qztmli1J zb>6FcRY;TMCoS|dfGY;Ccm4#Q&XL+j8Cv$I0W5)tt5)T>+b@Nx<&LW;bzvoVg5=c% zL{<UgK|#&3&tA}vIl|S)8@vt2T&GBh-K+hMlfSgYSM-{r<<%$>V2kR}Zfy=a5Cy?R z3y!v1q6!Mh+xZz_Rhf(+Et?dR89g@W>^N?V|8(hb06PI`i-Lqss8AYZDWJ3iBSHTK z(KqY&ZA6GtClaW0^l?CRA1Br^0q}5ujJzUu4)GyG&ztB&<C5-+%+dRF5+>3k-j)Y^ zp{eP|au``*+c@Oll74*%u%dv{hQ1{E%<2E6!MmC?S2-$3u?9dmQ-|!+bl(X!{QL8J z1q&{DQ<&9~4-3*9C&9(_`&p2G8PxN16x04EhS6(-qC3L9Z^?P>mCse}pv47+ixcM` zoZnT`4mnJ0BK^xOD;WzCAtFkIb<AjiNLR>9<f}Atc7TDJzi_KNy>g5~qetp*=I%M( zmJ|t|$;JTN-uhX&DtAb%8Zdz!4jXo&prK3z0{P!MUEY$A1}(xjh`@{UrcBI@F(#o! zxEEM6Wq=>Ve}AjL*t3KDDJk`swbdY7t$kv%I4XI5utqn<u~@CWi)K17aB+FFb(nNn zwpdOYGL-MntlsTW7m{ul!Ug0PT9aFuJvdF!K)_GF8zAk}76s-Ve<^|Hx-M8`?K?Hu zQQUK{OXHbxu_%h^=y02-zu-2NnNEt6AzHxxI3X+5w(xJo;bWpaW5Ess)i#<eEB2HJ z6o@cq)b+2LNKLM7h8!IrLn!hm430_c;~q#jm)vg*M%#_toS8IzlvO;aK<gvGpGhnk z2W73Kf*MsR&^1Ay1S6;FaTDg5KQAiin^FVJX^3L&D#-hpX;CHRVGfw;6AvH1x25Kp zv^yV+=M5?L{@kyVwu*Ei?k7cx7nYKXw6dv)l{FSu`ioj!)(kna2ZV!wuFKbk_ImBH zYeuU9B2~l-A=EF;;dLElsFF$$vD|`8eL#7!TB<m<(){5Q6VRxK9w^jjW%#4N;`U0$ ziIq%R0tq8FXO}a^yg7#=40b_ra=jsG(NzG=nD3o$jc8bq8fP==A-xBAKnOQ7cwf6B ziz*BwP{O{>=OPsd1t6dy1)IVbW1&!;**_M{t;OG;f2ZsRezP>3oyCJK)9v2TEE*2& zRT<`YhfkqzOJylxly2CA-KGrNhmaqVzgy65g^9NHE(4fxG_?Jjd0PDwkBv~IN2zSR zcUEKtD1ZYiMDzIlkKKGGz>Zden#5Hlfx%fgJkJ%Disy$AM0oB0A=r7>O?K(*9oePQ ztL7Om*7ik~CCI>H;~!((?-l3gjLKKKMajS2p#n;JGaLrX5Ia5All{Ke@=8XVs${-$ z&`b-#*6h`KiJmoig2+7{g_h)ZTC~PAhE(!3XQN}(_%|n8&eA9}>$PQ#mzz)1T3=Rs z^g)cj{pYE@4-}B!_!VwxtC%G>i(t55O=UO6ogWYPg4QpzSjzPV^w3VxHOZ;0=sCfX zD>`zVr^o2`;&L04s{EhE)|?Gj=f$WRP>$gzw@QIr+&5n>!AiCKK?(sP1gzwx4bb4Q z5F63hP*;~C2!M0t^QYV#5TRR)!<9w|ouSr>34xk9QPcQNzjAUFN4Du!03$9LlX&1G zsx3`CLg*BQVHl<oE2a&gn-z;Uw1=#SN}2|VdoPig^Y~Z7$q{BNz!7LPSZ-Pk<GQR` z6+1E^=$G=EU#cpJY9SBrWBoAFfNymCmSH`qzn}NxT1-nw-)jk5Z1iqgm)#D(j)`(B zImqGX0wkf)2umU76kioOH{~f0mYg<;?e`vM$0m;{eX*_WuiXVtJtcZ}#B0%stBM3! z9i`!8^4ODYcoc~tVaL6$zHD%fz{A~~V6?D#nS$n{%$89_YGN&lT~J$}pA5(Q@tsC) z->)4tIxrs~%Hel@+51v5Uxn+r*6vPi!11Ioxu0Kf#dmqJxQQaU(a%Tv0XQs3Q5?y1 zhF%o~mR1qP4b5OBPkMO=Jhk}^b*sEY;Yb6TE9TB4F8k3f=sU1?S?1%VF+(ZyiNw(r zixC!YiB}4NrTU+{J@)!P@a_{0GHE#w1XtcaI?Yz_mKAH?1eqi8UW3;`7+62wW)9a- zpV!(yYlt|!3j4acd1)t9jDq!b*Zq9n7sX}}d6|2tv`zF_-SR}Wkk|syXKaudNUf%` z6oy|PPzHQ@&a`|ZeeXy04`X&JJ+T_hFY@Fox6t|Tz_0pItu%4o<VSAGE*0Y}7YoTj z>;tB=hZ(D*%52QydJ8i!#~@2tde{<TAPbO~a!RTG1r^eLm&$c&qQtKBk%D8)cpQC~ zC|tfkJzot8f`o>I+7+UyVvlDo!{~?iaLuOJ^86O5<MRv!mC8Kv2H_=_w&qN<a0i#R zfUumR*_Pxh0^Kemq$Nk)WD?O*VIY~po#bZH&Scx782o^G$cisX#WOwqg4(f<0_N`J zs6qhLlzpxNa>6}V?fD*`A6@xvgVoY%rZMAH%~r0?tOcv@D3JoZ-9$NIYB=#!l_(R+ z?g^hy1tNEWK)cjMe)#o*s!nSkSeVk*EGD=-iOQw&6g1s$<3EZeW(yUsrdTr|-s4(@ zBGdG58NkTf11=P`5N&=3QHM)0q}l8B{-=tTw(DI<OO8udXt$qzTQ=EvI0}P=*0O4J z5$Da<8Dd7(%dd7g^>A)4YUlu`_v(kHAUtI=UYYCM-Nyz9_SX}DY4_NE2?@JYKzDfV zBu6_N4bxj9NI}4^8&Vn>2e_f~>BK1}x3Hd<KhSJ2v>$^Q<mLWkh-%i6Ocj&6?MFI4 z!TIp~o5wn;1c(1!eeGP<LX7UaK0+bx1viE>itBr=pb-P@vcQUENQ9E+h`7}X(*%RQ zCp<aZf$7qHZ>8-?G?}!jRsFV$uAvF*2vW^E`25ekz*I@Cd7Nepd%Dg(-i&3(U*rkT zZ<f%u{g-9k=}U|fM{vxLu0D~aXhsaq#x+f^q5VkTwYZ)q0<MK5^P|h(*obDocM$3V zt#Go+QBM=(;wn-a2hpfXrS=_z!{FHh*ddtX!8CDY$;$sB98tVYp>7sSKiXbZ>2O*l zcz;+3wl|3n`t(3<9WG^JZWG_R0T}}Y(M|9N3l&?LoyWS!*9|J>$+)HzIm(6-QrSsm zXpWU-!~qg@YK4c2OfBMJf;0-b3lbSM=5lk05!mzo;@2d7>Pa%BcYHui%UH3GlZ&Ar zsj(T&-X)!j1H!bSdVsq?u^|KClKKB72byw8ABiYhg=fX+KdqeeF4hege4zQ=%{Jv} zH)OJP=GIiHtV||}8VmLzK%I6so!H%@Eyj8Xvz27gP8X=j!LrYD$qOWkB16KtI@xPk zy&lN?BV#(rPu#L9T-qkp)UOKr)BeyzupPROn#Fs^aVLCVqH0Lk0-ut34*v<1e16R= zlklMu_HAduS+rfETL^Ms+f@nV;D%|bgX*Sw3!3x#|Gsl*_}*MdXGu?E2jpWqe#-7u zBL0zZvrrfYMfx52pJzBD(q&8LY4~#qO!UaG>zRa^K0{HPT~9U}fkFg#&^Rt`FN)|2 zn0Dzi)M`(jPPL25D56EYA^w#oS1Xc@H&f%?P)TsA7XKp+b;Ay?DfcRrR2laRsY?B{ zM^>y^>Is^_++K?VA@HegBR~P%%z4cd_<+nHtFz%a-BRk+gBBX{ZzCOYQ(tn3Or;*i zaupfF@TZ52aM9#ePi{mu2~9tW>Xz(GUcs@-Ihq-6sS74yiA7~A1)X^aul&0_XpD^8 zS4sDGL&{?qfEtNW#X=ivH@SF)$Ao6nVk}PoAIMQ(VlX*Ub9SYIPyN9Z;Tl0lfLVEL zrd*b2TtcxjZEt~WkbK+{j@9>o(DfunmI^0-P(S4`sIaYGh33tCBKlhY&w2_Cx3XWr zFfl$C=ZB(tc?^jf)E3{f2EUG8F)|$6+~+Xl*=r?7fs0!$sg;IXq@`q%_KX?(jT`fd zkJrBis8M54g$SeY{I@r`|G4aT)Er?)qzIztPqA^{PkROOriab1f)icJ8{zxCY8RhX zoD&+}T$Z!M;+4oM8-Q+iNt%Nue3_cu&FiAxEM8^~!e%T!Xfi(>v)PROu~n4CA|)!v z&SQ550mv9-9k$r|7BUo(b-O)|RPo@LY{SSiU*}yArmH)UB~!`R!syw`w&C4)rlwAQ zl|ZMSFPaFpMn#%@b`8`|-z*knU2ol4ttk6serxF{Y7R4P+ZP6Ja1jCGP+1XY3i^Rz z#pvsCYE6p~I2-Wv{=uo}on<S*t<KBIMa@dge{Mhw{V9?`fj{u@pUAbh-yS#c6=eY& z2$%zsCU1{V7v|F;%FWwL8ODmFjqd#Qx}QSR-CbLC>m4t~QwydX4mRsUmU#4Jjms|r z^VvjO0>?_|KYrP-(1<O+#k+(O^T(5Xm4=jso-9eVGfxQ4JiZj<X3y0}RScFNx3UyS zar|1~0>j-v*14##V0U{d_-W*nU~CtxGmxA8fC<`*Tw<2UV%GLfW!7xDqeO^7G|QOh zZRYxZQ6dP*Ehp_We>@KmnysKfB|jt3Usg@&DRxmWh&di+yOiloy3OvQZVTtq%qd&J z&V(-$D$l3zU?E3Xs9fAt!67rT?nh}w(pIbmX-ay|zyLRxTiL*}Wr$4#KPG0HOoY^s zlgv{@-~eLP^~62>?&TN_gCSXAm(g;<g50P9a2+h)`T+1tO?{818Pm(FI-<UtWOI?j zXC?T-RZXD(B*?q17*!KuJW`5CfHuE~o#G-S-F^R&eMYR>O&pvMuC=D$fIGmn)2>UT zCZmjLPGM>Z<G&azTHFkvT6$|v)XxLnh9oP>BYD*xEvE8J3@U+`1aHE9zkj9hc2sE< z7<&9|yd!*z1*A9M9`5Dqb;(?KqEb9%f?UUD|D%Jg(-8pTT(iTvkb2IW?X6leW5Gn2 z(-{9{rabY2Y)Irp`s4PzRW=7>Epqn{Qq9HN*0W*aZBMY!v5mc!6f1FSw~Pi912GU~ zCJl&FO5t`hb;tVvepc<1k?vhUzP};kVa*6BTtt-KQR8S?{Ik+$#)<Kv$u&18fC!}< zEro}vj!9H9|7Gb2xoi?kWS3Q{9iuD+f57#4S}>mLt+`;-3H}2qwMDizi1$*=7=FVS zrzV}@Q#rXzQh(d4Xm0~<pU@ex1`i~1TO%=#Or(e+4d9>q`gKmii0F1v?pI^`q$%JM zv!L*qrgg{46GeaBg8KQWZpQlbQ}azQF2!!H^P<vSJ)I*vhuqcF7hjbK9G3Fjs9t(~ zs8#p|H_?lWn5S}{OD7K2)t{NQ_3@m2hY!SJj|%f9@6zm1oIxp3w1KLuso>{f{UIDy zWwcoQ(fvgS`Lq(GH;@VTrXH;-N%%;$_KIpCPib{FJZw96dFbU<DzHYmL%+_PUHRUr z7A<Y7$l1$>rZvtGL`vcD;@FNu&`nz<QkUZzBWHW&Z)X4pnDYi*aE2dnK{YHy9<6Q` zi$7k@hrBzUyt|TP`#^;0TO)l7TvA?C-$+@X0h*FQMxFYbh@SR=M}$jmg*D->q5JGE zB{5*8IuBJ-DJ!AO0(PzXXfwG#rlqs>E)F_cT9xj5sb`;%z`MVi5)^Wy{#gJuE51}E z4gkHhK$mZ){nzaU{`7_;Kb7gB-k*e|>!ab|Fz|U@g~i!|=hjFVxBZ?D{D0U!NHsnO z*4V|Ip4`cC8-0%2yLCF)6lfx*Z|Loxc9dr*d{nv{U$RCLzn4?KmUgn{J4JxDL(+O` zhfFZOKm<bF`>;A)Buf;3t3xIFRrgQvRx#PIsyeA`eG4i2g-dnOaBluvD54=T#v4lg z%BTcs+W!(5K%8u<AOV!!6h^1itD|f2Jn<E9acmwhV~~}?j7OsA5E3$K`)p@)2*OV- zE!yq^P9JB)WpIJm;1{7aP8G20lPx8IaoHS%s(MyU5lDtx!-<^VgQi5o5-soE!i!`f z$~P=M@;y2y(PD&NvOSZm%7472K)x(Kl9Ch7rWyjHnf;ggZY<`O41ZIX@g%*fC^KQz z((tbe5$EYlSxIm>ND~YKqi~z1l%+8wFgj28)61TC9c<4Jg97}Kb{c7{_aJ&6GT|<} z;Bdr7BVCN<6+5?$!K-|-)`jT7L@2fN5ai11!i6KU{*Ga<fVb4#(hH)y(z_ZRJ!Frp z4(fF*PoSq+rcgwC-u;5-Bl#GIdO)WyFwXxqafRw-)j)}NfZ4#)%^~*p>tQ5Hu#&O7 ziPfx=%;Va@g7QG4F{{L_1Jgaa$g;Y<zBL;_2sn?{#KQep&n9mh-xnD~5eov@7Hygh z1F-eDcb=68em>ZlgaVKCaU*AxNT6B#cIb0q7~<N{vAS=94eLR>oq9pV?$X(8F4muk z!}fcnh8j{RkK#t88Nz#r=F&0C-z~OgPdSJvkz|g9E=-qxBGz>0I2FcGm_ez*q&ig) zC7M>wCqi$g7b48wWT?Y&_ms7AGI`lWIsWM5VKMF)d>6q1xMww*3ilDPNn2HaVjQ0q zw0e`@<lr2cV1&npo5BSGJbNR$Jl?U+PD_LY0Z3}b2%}`C^*(f%Z?YU7kFn75p9EgV zct+!_yJQFG!TvSg5&=)Ekm0RkoTK+r)H6L^fC!-R_ksTj7eL^UnVRZi+_Ec>hw@2j z86v<Kd{|*?;u1wc)}Sa$JqPCEC%tePgT7_0^uG+wHDK^1C;Eeh&G7$)=P<_CfFRw6 z<gB#vjQ3PfQnv%H0e8p)vXgG56@Z3b!sSs{-k|4=Abo!>UCS_*8izg{LMVZbov-)~ zg=#Ej)hbHQQXkNxB%5L<@RO$LX(T4J;P@<=vBtHhLW^rcZ1Q$dYDxU26{^r2cDVlM z0qwWII9%zPnzHV5jb38lb!O71Xf&>{VAjM~hhE8`=RKk{MJKQvIIHK$`_}v~3!1;8 z{24wdg4u_+TW`9)wL;{C$22f>g8rb&Q6&ra!VTW840I0Zb(5`V$WH}sD=PFV@uYF8 z1!2TEz23adkKNFOgz-;*B_{MTPf{b2t~f|)E#HIx1J)6Hd9MhDiKOF^rBltn46E(b z=EK)Ctu%(O;$x<dS-pAII75twfhCm{srK!HAZfFawsj*6^{f^gsb%(Dw6IhMFJtZ# z64peYuiwx;1xDn_&n)m6p{ox%B^XlYUk`dpBI1&7=zdY%i=EdiaEQin)*@TZ0(ZnA z(cl|XDs87K>IEt3ufhE}$8F2zp$2uY|EQthOON4ZbZ`OMCFY38dl6gg6MdaR$hgMk z)>~_YM6_l>`B1wc0X(F8$Y+e(0Z3wB*JKy-*dtZgo9x4t9#3K0rgO}RHHXX%df8Dx z22i0eK-zJD&WKZtX*z+$5K;EH*Vj&k1Xki7>f71zYfo??Movgs>h(X3?i63Hw4&%& zhtK@?Dl{p_*anIAQgfar7DgtoylrD7N@U+k7mE6C`E1*+yyYK_I_KeET0(K}`Pz+g z(>=6g{HE-7%FJWlH>EN6O)&lw+)ZxR!LmpJ#tLBYiPSAFz;am$V6VcO-rQtvs#7Wk zQFzQQlo}7SQ`Av&g0~gE0lA+5o>R91?0~Bm3QIOCu)E5Y470*nP^&Xpk@Iwy;5v|9 zlv7nN)RdBeL1sVhnp7EDnC$9)p*_zx(EvJf*-0`}k*tA}y<o71HJXEI4(X+$3%LDW zV(t>)I~j<d&|4E#>oc;9-9vXSOq2!S*w&40+jwK!wr$(CZQHhO=f<{kqyA<+=|TU6 z8q}(F>g;FJBvrszk3kWBthz3XhNg8=>##u4>cz4F6PC#$BlKOmvrC0GVNeRG`uh1Z z_-@K|2TBd=lbEbaOEk+tIW`@As*R^F(<Jj}N*2ge3$wC=u9OzeeJvACwMiSzIa015 zGmS{^&%&Ucw)RSuuvvZYjp|{@zvmbH#!9kvO+xDZnXMr@p>({ncy4z_Qsk?a31S#m zYpQiM7Q}yt)<`WG2KPmQyQMdpEB7=)ngKc@Ywk9E1!p?djydhJXc&&|sCOV#-@R_H zSDdB)+I^>`<4=AH?c^oBmo0_SCrgfQ#I4(}NgHn*S&IDcR-ltV((B)<68qqh288E_ zJht7eJU{|wz7#ml10=XB6T=64UF^!~@B`M{g!2((!?t)kiko^^QP*@GF=wmt!Ot?I z2`l5)8@!`t?D~PPc`Y)a6sRVRnv@C>f4LVT`MumID#y-V^Yh^5sDq|t(3GxW_nH1H z{!}toV)RZ|FzUm}u*yb9>chvD1Av;Bx@Nh*v1P!|-wty91jTsFbkO)>zi!+@{{`U< zccQypg^jVThOKf}p$rc}22HI|5n5z#yLcygSK7m8M%L4OKg)ZyJ}N!b^E0DYQj{E} zS~{mkpDgF;FtMCMZD+Up4xB?LCdwH(-c*ovu!(b_jG*%tZ4P~#C*Q(NuunC*n%PA? z5tkBqZwOrO;hdIq{Zr$X_eUrtG#em8lZctoYS5pX5^g~7(x-MspUUf-X!SFG+oqwG zbq8J;m0QzXh_LD3HT`6S_NU%>XaMM+%3~c_rectzzJ(%4cP}M@xm7jv$30r}RPqU< zuJob^oF%vxH*f_(Pdrdwx94z{TG?(OuIOJDi^JVivrt|km-4X`S#@;ZL_$N$kK4lG z09Y>0mxEsQ(d1rRjvY_*M1!=wyErw^rl9aF<Vm2ryq}%yB;DCJTzAE!)F)hc<I0=0 z)aHPHZ<EZF?XZPBLlRunzWDh)fENY@VSp7;29XFlFN9VNa*kY>`y0@Xq7YRYFQqOi zC8Y$UiVz{uZ%dY{z8Gi!Poq8Au^`?|it(ci$ZH_AY^1!J<jGNBr}2a3$L|#C+AlFd zcdxx#;Rn@Tc}&mGi2B@X*4jAqVI|GJ-{~OXL8aUosdY8|*h$KmoqcW3ApVK1<ss|e zO^?-YbW-Dy&C8Xmkn_OjmWPu<8UjZ2^ikio^DNwU)BWKvTLn%n5(<_qlX!?JtL4T- z<c9Ore!HIQMa+~liMb@lZY?HJu6%0P;>I3$Vs!Ax&r)k47~;vk(m^}SX1^+)gsv?4 zi$+<a4~Of^CaE!e?_0O5z&iDOhKw5P3Rl};O_!AG2H)4~i(4=bAMb3Bwy}DTy-f6R zE7sEW(SKva>lR~pfJ^`h#%d)A8j4wJ%%I6RBTMWprxPuxx3cvT&_$+cW~vt+2j3AZ zNDG$GN7WDix~@}PmUXQ}trqayA=6kVbd<dIi;J}=Bo<ybnU&?_l!MC-U~zYp%1ODw zA&2-V!1KMWeBDd2h5fj5SYDXF0UHTLvSvAiM5-p>6tZ!MMCl+is{f+J$J*5c!s?G8 z<G`)iOGas}9(OBoJ;7DJ>O6q30Oh~$fna7EEI#TYn*udcSmQ5?Sc_1ktH9RBFgoJN zByX7OknlsclbSj7FFmZSdTW%7<ns{-r;}+P>{S|5fnw6Iu^kuT4C8>zZuXpf2A7&S z)qJV|M;i9RWG-K5#8>LoM&dW48Z&LnK{@_{uL#um2j(8IXMdt99;w;zs8`Fd76wHK ziTrgoHNBTck}YXNj7UdT`k%1_2_ky^2_6;9@=K&8KONn;_p<d;RfO-mk5zF^PM3do zvk0AeF%k7M>WucGW4=-r9f29$^c4jQ5KSKMoLA$}7EXM)y;0Cq!Pxltq8Hj|7bqe# zjn6n1wkd8w45e0?MDex^yA{(-vC8z9-Id|82^37f!LsrN$P97#M<o8b9FKS<CB7D+ z2bq^dR8frsVt%ECTLZb3UP8!c)4~ge+;9~0t<C_IXjUvLtBVYtw}&R^%c<iYNK;CZ zz7ipNf&K5_NTZEqkiv_rr7)2VhN5OBaV>4eF=#v87WYPwjIXR*17W8yT`J%_YbM-T z&gogO0n_ZTUyPqvN%nUB#FVXHo)Ds>{r2O#pz&n8!De~{(cHv21u$0Utdk+c*VN>D zotQ+LK>z+)1pZGn3$i=WXG=mHf-QnDd!EY|Tx`$pO%7OP){$U?pe)3So|v|50z$S# zz0<6=oj7aW;4MoIZW=QWhA2`EFRhto7MkZh>SK{wR-G-=_xuY3f-ke#{n|rST@p;% zPiP_)lH)V+zusTbem~Qjy?FG+F(x<sl|WN|nDFyTBZ46?7Z%17Ay1PG_wz%Q`V|VV zTfc7C$}b=DXSGNAkg7l|0r{}wG!Jx=qpv2(8g~RM)R$c$5yh1q?zNuFBtvBi<w+bG zD*+K@f)KYeg(8tgsayftA3kes&C7}`V<y7X;Elj*S$r_%E_$h*+n35B@ci{oLm_fR zswZ_niRx+}yU5OyC)0t?7z-fxT>;jb))aFZ{uSkCXoL#t$Y;k|h6v*rF3IJsOXNFU z_{7{7{vWIk*kEt*#_cbc)!yVbV1KQE_M&9E=1EiZ{oEKoT?s#aBTl23CT-{9vkiHz zxVvVJ?+PN(Wu0*9xU^WuboMtTv}6|pd$}@xgi!|*c&W&8wtc&eG?-@x5GOR5c?3I{ zGWtdp1|bb4#}C5gq=T|0AM0aVhkqA<aJYai1BkQg7&-ahzd_>}9(jAv=h<qvjX6@w zLw6omh0edKTP8!*3^Jr#-tr@KT{mT3<0r0JdPVXO)r3z45E7M<mY4nh&tgKh|5q^~ zD=QcK{}vM#gPDz{?mm*6;a^csV;Wf2k~>G@m|Sr<soO=-hdMyxR;Xz7*b6Y$&GRGI zX+gOAe&|W~Ur~<LyH6pr(tEY&i?&3N>96%_q8FQG)|#Fy^TC}36m&8Dkic0Il5R;3 zyuYjdFb2`Z!eu5!&v*>*3vG$S)|DPe4u^$2PFUp5+v&be23*8ZtvkL|9EFsP@XTIc zUnfyt(~1IrM=Rt&f&ZKD3|u`PaVGugo?_hgDijm=h8INXJvKwVL(qu;wPsy9L6ejD zjY^hbHs=VdAGs0&sS;Np?PdZw`d5aXO9&*-0n2+iqG_;j>a(?LJ}XS2p$GKb_b3rr zx4Zg6EdXztdGS2Qs_2;!bj9i-on;u4P7r?0ZONfI8Ddm9>g)qi|A0{+eCGtwlUQWl z_pJea8%dzOR`@!-yWAlNsblfhbw2lJlX&HukLXEjva4B-aIW+B+7eg9o-bfD`UU31 zU+B#txXA1eh8Max?Txf7;HTac1OmwO4keXh{1j+cixH4iksqvPa>=y0Q2$(0@|0*1 zAfj7#-PaV87lhQ291WPk<I9_=tY4DVr=?&iZw(WtOhEHMVuXHYN6WmC8jhS?0m#;f z--QjC2K};@oXdU^>r*uXJr!3g<82B4%fUH!4kH!yY3QnVYtx+#Qz<y?45&R<Vd;4p zC2C#!=3I+{+X>IeqitnjF1r}WD1J2}647LboIBg75v*xDz}X`uADs`%a1P=`>OFo3 z>&GvEu(*KEMZ8MG@xT1QK<DypLVdW~y;u)LQ78u+S=E7L$nEj%%_nBVz6;nhscd=~ z<HDiw=|0}MWhgDRvJEBhOrO72_vv;fhX>+?QGZo0VT(EO$pU3=H}VgGvf%%F^>CAM zbIvXKi&MG*TUI=}19#gcf8Mq+Db=$cc|k`3^TBukG^t3eb1~WgV&v1L2_x7qqdGi| z;(fuYE_Q-|@;AqDdP;Jo2oE_UkZRP{j{gq&H?n$ZbXAUwHQM~Gi=s^$?5fA;eH9V= z&tPEPocI0UY%~(*6}TnEwxhgE0@&th5%y)=3B}9H^xWKkbSI8BsORT_Ae(BB&(7`( zrveSURww{_RqR>v02A7KX65N~QqOOR?PhU|^x)so#_4bOk7sz63}Fx>RTecr_^vzW zbH(?S@-VYdtt!ZESMcd@3{sCZADC5JBNg4Q*?hc^cNNvMdQz4-yn^rAo${BRSVq_U zWR|yrnYlL24;rD9esgZ=j@!Y+(%)$c2tbYV%c*4@9P!uCFFmg}9NE9*3u$XGb(Ad% zAG2PLD_b$UjlSRbI;NlUT9%LF7CO5fAUB}4ekj)*;te1pI|Fsjb8vW*ZkKvY!3m>h zqv}trb{mr~7czH-Bju>0cDIH+iVGS&*+OIhGitzrZCLvPOpD^8=QSpV;_4-np)Orj z9F2T9Z}XLK|3p5n9W4<j<NIy)Kf(%To;G4Vo%~h!yC1hgTOm@j<#~k*InS7oO|~X} z#m&LIBz^r>i?n>rS9%3H1+(;LNQmE<@?Rk!T{tCeHMlO3uG%f-hj<TSL!*B0&5&vg zq4|gL#@FW11cXz*Ddz+<x}f7mfKBWNEH&OjP0hQ?&Y+a<4;cfujgDpo|F(QGhzidY zrYll#t_XB=Ibq+YeTh$0;L2InD)=u;7=&I7E*q-o71t6^Z}QD6@2hNb?GV5hW|_2O zO?bjOBf=6iT>z1J`-!{(8YDeHLfK5F!t!K|UD7%6WllzJP^vKT;Pkp~wtRM|AE8Zn zi-qr5F+_SuHCo@u(_+2j1GO}7VYMT~YIbH~RTvjDZG%3_(?lByBK#^-7&fU0p*0YT zm~>jD@}kw-)489wC<K88a|SN$#`hqogz@V|1eBv%>3zw18mDP@U^b|X7+4wdx2ii` z`p8|zBIDTxbZ~bM?<7^r*ROfZ7#*ea$6mldcl5sr<ob3DWIxa{VWB{6>0Q=~9dtOq z9@R_>ze3+-eS1;8ZGKky@_Z4cSeW2JSjOmcMP3s)8Zx_x7_BqVw3Y3L9k#0~#$6^x znk^o4O%)M#nx5YfwcoHI>t;`HWnQ!Ce{4UfTo8_Qy6+q@GGi94yIaR|R$K~mLS@a{ zBRhX{GX~6dqvSOE9;o|+XCN>6>_7J+5W3Eii3Ctf74nA;iJ`Iyw+bdr1ch``hu`@t zHC;ANT!=FHQ{p#t5lS!kBi@yI$iIv3-yz+tz$sEDIv@1VaS*{dpVT4vb!tBx5ee<M zX8s^xJ8M%kml@=@WyTn9cUU7j$OK69IOiiQ8^R!qtP$aV(|32??mtk=;t|<d2+2|O zbni2P94SxJA)XcCJIxp{)cw{$9j+n*a?RM6(gDd+<}Q1KBs6DP4+D)!+=ijXcy~!A zgG(!IRYh$8mo(bZaf6HR#!^F74RN%kwbs9Kxl-1wP@PHa%(DN5!9y3wc*4H7gnkaD zc&#5=-TsT~;&`jaTNV)*q)a%QsCl=XOu~+;UB3bk!<;hi+Fknla^im|kZz4oxc*&o z3Sp42@B@`q3W$kimT-i`B>l^_Yy^cj?|C^q#?T3fOr*{6Ph+0WcB(3uZX83pFMt!r zML1W=l|<tB+T(dNH~*n+HHTr~nB&h8Jbt;zToD!>K;g-D28OVLFo)VZIm2RK;b{B0 z%cn&rq0ZEpg8hPJ^cw*mbQ=zceXA}(3S{T=frL5bl3C|35%O06w~jBx(;EltaM28y zG68-oJ*&%3pL$j%*w~`;G!X}4D6t5|>+!2_9n9(kcYo<7bnWFsSEszX^FKE=g4cRs zp&o@s_iznZh;1VX3pFz)k;c8g>Stv7WD~{D3!xfUVLRD;fLsoLjz5G%(Axe9JxOJ@ z@5@8lje6*+#6Y~V@VMxmV`(;jy>VK)9*jQD5Z_ZJRM#)GO6vosHZcgw^&Fh+TzB4- zrm|no^w|XNiymHG6)LAzJ;oWK+~qU*I(d%}Y#F(rL({Ger7^B@*|Avn7fjAG6Z+aH zP1+%x2sL(3pRmGHjxdB*hWnOG>$FaBpHC>|(%Y-&c|TvXTFqPKPN8LXbHeYC-Tfu0 zEMTHiKtZd2;yn}O^@^0ajV~zDiuNfi;JKO^V%agcf=&oDyP48YEKr7zIMY%+lA10j zIYR`VsCyjWi4V8gS)AmbMO7&LPq@4Y%Fb=ElR`rhiI4w<RWN8%DdaCzyB(u+2c=sS zs9{J}Uw>f+aLLKg20Wp%Ht`OKP|<yJyB%}U_&HObLW+Q>^JR1o)Y@NKSrmu~BnX1A ze?r2S1BCQZF;<Xai_!!s9sd>%Ch?G6U_WCspMBW^BG?IGA-rQmTlkLQOxHHv##jy* zK5^2@VlX)Qa(L`*)F9&~34SrM%)Kq;^G~rv3d-)j!DgQ8MF-(fpF5*ww4#<@V2cN8 zkLb`e<I?x#gp-Re5K~8NPS9Hs4I1G#P|&G=cM(pO-1Fh{djBPb)qvuv{ZUnIo3d7t z2)avGF4(%Ru#UGV_?1#zWqIWV>oM|dA^tvHX$3)La#!V1n__A?9K#=Fac!82ITK=L zQN9cb?MO4iXJ9{Nm4nL=G8zn-VPZFydCy-hYa`Z7zq!s#|I*FNc4e9e3Cx>H_qMw# zmzKu`L1hb^)9Cz%SOL4O*b(G?PQYX1Qgd(d<g)2^WQ@Ef>@FR1$H_>B`GM4Jx;s;@ z&niqU;~_-X4A>ceD!a|t8f`kL^$ANoeOJcnF{GMPiVbbU$mgG%xttfnnIKxR4AFgo zTRu`$U@s1vf}iMNVBGqfiC{2H7J~$)L%gK@lzKUId3lo{W9oG+7uS8)H_c>MO<zyI zONejMV~`0vc#!o;C#$w9sijtVgpBCI<OK$7>z70Yb$V_l=mZ>H@xH_=Sp<Q_|6KZq zgojU1ojne!Zy+1gw8(J&`6Vt|?x!v7euiYrI2*U*hiyohFbh$22}8dg=dGyH6U8bx z&BPlC@t}Z10?rw&wMwv^Uvg7C3&(}odw6S9bjFv&O4zwKeq35T_CaGM!NosO+o{(= z_6h2{ev%t*ImSACaF&{~T3d~<#MCg7|6yzE(|@nvXd2a6I#5T?p$;0kDlFMoRt{8b z{#UOef_KG55~sbz$lVBCq17`YG-t=%>{nt!z5znB!|nx}il*3Eh}(sY#@U;X=?N%m z)mUJ2b@wqwfFqzfM8A?-Lv3Z;Q+Xhag_ISXsqbvk9l6cSMd}MlaQyp>wDDkoR*!SM z4w;<;3x$&*@ch1f^GM~kkm0nU`upg|i&y_7HX#hfqYP*f*Q6-8e2*VA;~Z}Op*C&J zi`Nnt?%soy%{=i6-^OZudPufN%jlgvev(V?Ia;_KTKT6lmO?y}W4G6M@JVm)L8$XS z#}J2bkCc@J>Ls!TUF+Lmb>TIom)-Va%e0C723z;|@3$06>il2?;^g{R6HHcMGsBMs z_h*83@WSb{K%eyid1a_fUt~$xLkJStusH6Sdg0JrW1XI93f!F@rUDq;R(3K(bhzP5 z35T<4G<vOpO&_{_=p*0FQ2Q<GO64oTh*@L>G+S1LHV+H04tQu{gZ~We^3I|5WK#H| zPl^j)iG=HtmSPob-qmeOeo;Y2UB<|4QS;vjbt$&it5oG8>sz_`?M}t?IqSk!g?{%< z5mZa6-1A!{w(^9n4cPL-ZGz4|6gU&+7#0`wpMLw-ka!|ad~&@1UIur4<C$4;;?es= z)YsGmnLZoX#K)Gt*Hqt1+7|HyV^Y_wPP?5XFo4(i3Z^srQfY|nyUt=#nJDYc5}l|r z@HqOq23aiK@(L<*8(}I`PQsc?zz|5ukQx#yV7`mNvppT!dD6``-}I~+%mnc?(c-sS z7yz6~xVNVeX%S$0FYiFN2i8&erI_#~vK~Gcf~cs^N}B@C*N2<Z+9TH9)qZWcn!zFx z7JS;nYEL3WN2_C)kH|VMC@53U!Wf@7JCcZG8oKo*Fvb!yD(zQbziKo={NJo}%f^Kb zPdk$J!B%YDl>F<Bm(QTD;I-n0I03tX$gQlwFJ$O_f_}}`sP3j5XW=5~dT5}MzYh}- zzFh`F%1reAr)+FIWnW|+62(d3l1oCr;V7jmMT}cjU6c;;%&|gl5fLPrv8ycKR!rd^ zvQ+rMg>DiTit4(}p42-mq9nn6x>=16lJsmnByp%7r)lx6W}r?Qvho|A{Mu~8G^F3G zb@0A3{Xbvd^(a5J{0qf~AAnb^DrYGsO{y<(M}wZ3&kZL@4Lpd5hJ1W`E{i4SEK(IC zvDje;)_eIOIfds`r~oB-==DMEpfxS^FmnKSeRp>*N|0em?4m}T+uEc&I|hm5ZuEKZ z^Q(Co;zd8=UoI*1B@CH`Xrt1na+%_M<6lN;S$8tI40HrdaS_c%FCf+G58f=aP_EIX zZY);M`hWqPMwTr#E<xNk53GmeGNm)`%w3w9N24xcOSsZrPY3SgWsYxB+>OZ{XNpiQ zlr~s_nu`J6*|OV0y7tOacCM<#B9qnTkk&=i$IwmGgp?>Z<i|BrN#zAoQg(f=jC}PY zl#F{u1EU{eUovi{ntX;js*NJ)nJN_MO=pp<Y}<76ujOhYqskoZ?{UR@rTu)lKX72k zMrR?Wzt;_I;-Gs&EQ4+TO7xyOXbr=ox}AC7s(}raG-@NplOs`uq~$Ftsh;cpik?IH z&jE*d4t-^lT`arL^u)G&!|fRrha41tpv!EyOGgy_wb?}Oshh*P=2nr<Oen3j2J$9l zKdA5pe#laYBH#QflSsZep?doZqNpZ9+inBCSswnRO1i{I+*0aAlWXWIiU%+4V5r^I zoV(1ae|~0@?1F2#!GQ37D<;YLUK~W^adzT#KR)&?2H55GjuU8Z*TBjbut0}XbwiF~ zAw+v$ujzU?w~?+ajcqag*2|k+lDt&>ApMo@1}?4-7Y0BMu|l#kbNiX9{)SSg`()o+ ziSO>iINysL`h>Gi^670Sa9O?bc<~$ey)2=iBw7tq_k79caFfxj<BEmx<PIRq1lI3I zma>NbiuktYPHQ6)l5)S6V4H%-sWo({N7V^{1_Vm%%H$&BBOSB37hrx)A-h51Uxx9z zKUeghkH;iqkw?#KBS7i+|5uIZ4&2(ck3AR=3)Qi)Das=Notn7lr6^>!R#b)dd4Ic5 zt;9v+O!67Kvt@hv&XvvFJWIq<A|*sl_n`^7epl<Z-N|ctahzwP;T)B@fN%p|J#>Yk zPiFF;0Wn4t#nN;JCRjfjD+$ZQszIFLn=m;oz%{ok?-jfDmZQU35>p)9>zP5d$&owr zW~=IzuUgQ3!)tf)QmZLQ-{`$TEm?T(E2rxwI|rP`O5oF4w&u01ip$DtFk84(2H><{ zTptea>|@=yvvB`x1K(0+=bp8sqVET~r9=w=`g!|%ZOM*oQUxAzIebaUm~INAOCeIf zJI~4cm^$yP+WGOiKg@n_ZbAn@6llC;Yt$5y+}notp`AG85Y7XFa`s6@f<(2`s(jXp z!UDh}>WxA0nO)#w`BB8<OiX-j+9eK_8oIre1#lK!lD5?wUU5(0M(2E=s(q@(S6{AY zU)~6g*~t@F3?PXntrF?sn(omkrb&wU`q~Zzazu>%do)ybmt^v+j_ja4qQU()wHy4c z=lj}+o+Y}msN5R2F$hHnwGgMiF2@)I?W_m23K-}8OR_zg!v}kmqyEV&f26s*YVT(# ze&tIQc|hb%M$<nKJRo^t*!}2@)H;&i=-zg5coT>B=a9e9Uzn(Y4AA6!prdY-HEb^0 zUB*tu*VV;m$maffvDs|%F~paoT~N~KG#!f3drh@|H{6^<c17Oof|}f@H3!3b);?2N z*{6#FTDHLnkT?z>V@7Cf2mjnrfEdW)y{$=-aeI8hE%%{F`(czVMpt}*&E57(MG*EI zY{+UVQHl!K6U>H*$@*HZf+dTlgSK&tT>PV<x)kZ0<1Z?WlHA*8F=Q3F?y`JAj88K1 zfmKU~{DkE@aWox9>+A}{^QK<oqM3h^NWG;M+gt1&@)2mQU|W7HXgsx&f5&H{{~&aF z6E0)wwAZIIHRqbap%m}&JrWvpe=1wTvWxr_o#fESt*e6FB}csx&I#}h*DAR3c1~{6 zaD~Kz@=;?htpT5REKvCC{zu)?yPLu4t<^h?Jq7v%6}5l0G&|OVk`MLWY&F@mxdKz4 z4nu86_Dca>in-T+IAQ4f5+#eX7kOSMp~m$`{@UWtAD!6$ke((;SLnuRc~_1~;gTh0 zxLD(m=c$Ll@-M5F_V8f&JRDAzifv!dzC1B9&))Py>ijFVlaHPn;9)@dYCmUO?{Ku2 zg!E=(ZKwWjDRLP94qRzdxD?f5HVTd?eiy7G9%9rVZ#$82luzb=%cN$EsHX4mPw_|o z8Bg0cZiR`2I^t;ja}XuE;+ZfMN|WS<6^Vl%iZiI@Bc$Z3{iS0hY_1XnzdIA=QO8uK zUvWQMqi0OAlU;+f`-=G`+mrP^?B*sPXNdi&G;e4L|2Vhbxz`(=d|zT;X~0AH?Y&n9 znLaxQXDxf)(spD&z<;!58<mEC@v*+!d6Q%LV;CmfMf1K!GQ&<M#DP3}fyP$OALR*8 zE`G4qYtoxI74~i{n?S2bl5PGI)Qzm{!t@VXaII||!Qlx@v<?~I$paT={j2bC#7X5F zr_b$tQ92UkPqV=Hr~8;Z&ZmYq9sbpkm`NOP`tr6dFFjE%Vxu7#YhwU#R>O;BrDf;0 zKwK?oT6p{ATxMnmflSVrigc7k_)jIdhe=ETc7s9eVOJ#=fTE2VW|(BGF(r$*(hSBI zUsG$s(SZbfhq@*3J=TXi?qho!3qLpd^|KcE#yH`h%dcNRRr<Y)78z#AYd9RUS2MPB z?6J$9tv{^)akL_OWed0!)+SBdX}_pSOIZUgV9z?YKTROy#|}izr|6}3Y>Vlz_{#?C zPO}zIzw1Qj?8n8D7FNe4(EWWjuME&TtPC-X=}3J3tX%$YvWfpuRTv-s5>J;*2~%F0 zzlFlm^Fept>_ochKf=3kk6wpQj~%7cB;bL0Tqo)m)bpSPzEz#`kqAw{b&zW-;%(wn zJCy<I>6Qv&!`5z_(lHX8;P1&<L2M6y|G!Tn+TCZ4Ca0oe8+|ABCJ41$7l`Lj0^0-D zK+Ob4w!erZ^BY`I>5Nt=@$ArqZg^pIaI;!4yyRZ<FBorzkXtNY7@WqQ&1MD7^8E;m zl&0jaiW?qW)%MAgpF=#n-EKGe#%YC1YGzlHYEWvj*?EJ%NUz1j0&bSTyYv1rZUG&Y zk9(?M+Z(nVLJxP0AuhRiu}`iplShiGsCbfd%B_G4m8A!bdOkWB<ClIY&LBB`7#*DC zp?z)pa~Y*{1)IP$;<=}P^tc!0&rMY_Fi?GA=Xb%<+5+p)_%>M8^HvOzWoXzCF>@Av z|HTL-Wl(D}Mo-2}I>2ET!3s#R%S~qHktWD9G|$IuI#Rf0N5KB0W-Dg`ajL8t=Y-gO zH01tqV)<RZ0}*@t2UZ8qzcc3Do{8<hY4HJ85=bR7z=rDW!0!yA{y=iN`e8%NkBtnN zAfet4)}Wxxrx83D$zfYL$1V@0d9g5^F=C1ifB62V)7e=@l_slQng$2pj{rtMcm*tV zk3OnR+b^O*cbSJ*a-kr)pzE%z@<}8}#d;DdH-H>P%1-G46tj?WW&Io`#dT}|H_h#Q zj}-U5&)7iGCs_Sq0<rb<gKYB5@=5Qv!^5)}$UkD8KF^I-Z^ecZ8KVm^4$ER1;INX; zh1~hiiGrshp~@)nv)D22Sh0$sxB~VF!(X8NqVB7t>0`$pJ~t03;s*T9U!FbwV|wq& z{l>QO9s0`!%AEyVj@_vI4eF2#^d~9W8o4N9A=}U|TLI3V@Zy-)kdnU5LxLJ8w3x=} zh)ypJU*NaE$Bus#80{%6Txvd7CPbSAtGX1Usq+k8COQ#<5n8T8f?5zo|Ab;jzP|i? zye~}Nb<Y@*L1;H=;yW(z6(ND=Pbqmn0Y5Uvo~mkWmHT4-$2NW{nMe{0ja01?W^GO+ z(3wG;E#5OMC%cF!@Q|^&wa{Y2zEgxrp!PDP?8{;bfH$1Q(B^J6jK1*YOFMwnEiRf9 zCW2=gseF{p&cWE4E@*s={3Dj*p0hw>831*V9j1C%w1rBsk!VXL>WddVck@+`C;h5P zGyyF4UDp7TNnkgVk({yM*vU16g+l5?*X3zsFw>5@T6v3_DoSZjpI+7R&?)xf3-#Ot zM4AIU)y20H9cN*(s;%u6b3%a+9S{@ub!woun=A5MoUr|wJN@hEFO|Ny5Fs^jyGeYI ztvYqRKQz?gK4c77rZ)>p|BNH?Q-TejNXer23)nVf_4*Qkw{yrD(^kAO*vE4@(mNPM zTx4Y%(zTGgB`;Ye>+;=>h$zH1E46Z5Y|zUgcnTMUaC1<M1a$-)YPcrd`tk&f5|A)Q zwS#k(E7G&3zrbp(&Q<~0`H_X>a4US<&535nW=o?Oz=M`#&NQfD9bsU<XlCQj<nTGC zg?e+2aAN$IF|v!lT1z>pr&J0pcEbv8jK~FN_hX&6aD8LUwR(HJO8Mn&nELCzwKcL5 zv*}hAuuSN|5!Kp(ESqD&UhgNPClBKz^}(Ebk13m-%;S3Pqvc^hEYSl7YQL1@?cd*i z{q!e72SH}uz$N(dXOpf~`xBD>@1TK+=djvd)+rO`)LnCAO{>;d)+)8*fYHH9)hdQT z)iiTyY4sO7@l&IqO=+cPZd;MSRr1nm7D!i|4g9lwX&pyv_{*Cnm)L2)3*JQ=H&6ZB z4cs<^52Uq;qNl~RiYJC~_h#>43$b9)B+ZysC8M&=5lhm+mVDD5^i>c%R17m4PVv@E z>bMNsde6JHNbKm74`iR@2f)Y*Si?z*TZEFN{mjN}8XBMT(Yi$Rdqo(bfwb>8=}Qv+ z<tF6pqzLitYYemzg@tch&123`-z}nvDK@|MMMs$2D0ik_DVnng5+zBNTOrq3W1*L7 zb90=WWtmj0QjtTYQ*5E8vuSGS3a!ZpUlq#;>EtAD{h4FfwIqg`SHgmZ$`aBQ1-C}R z(d}d-0sb0!p!M$s%ChcCW9j0ei@m&vc6vC(jP5URmDnmcFluKyr^Ns`72HM<of&t_ zA35(Ct~>N!P)>)n1z&*5ZNb9`QlZV`6EK7#VoC;WBXDM_Q`pc$iTa&-DRy^tosl62 zeCRO`e__Xg*l1leCDS`Z?=LcSrsDg*&Ro5doxUof(uM``zkb?e5Z27cT{JW<y#;l& z9O;mHa($<Hmp#m0^B4chtS!^rgNLXOJs+Xwpa^wW2s~anctf$RI+pYZ@!7w|D1aNy z7I=!+nMFaWBPblS3ct;K8VzjVf#f1SE_=8Xph^O56!UnE-IaXIwLmXqhxJI1QhO98 zc@_~y6pd<ahvB4~ULktv_x!L|lze}P5eH*$$#^U;ZWD6KUe;>yY~GG);uB#OUW6rz zW0MA*!k^2z9Yveqqb94_iyZF;R~7-g<Sf0+qw+G@mDOfti8GqZ9o=Dsn;MyCV!$L@ zW*cWy=x-F0tiu^fZkP9A(e2N9L9bg!%A5G&>~QMsns7QP6I~W(LQVoHY7|6lF?=HY zRn6auGf=k`3nEz@f0_BvUB=YVQXlzWC_>SyIAFU@nvjv<O1D+-FTFZc8lmve{p2cR z$g8R`Ay}OaICpCy=B@9rLQlwmtK5`<2RBYcY6sZ<>s{g4dug#W8l$DQ+G6C*wuncm z!&8dxjbFIjF3}T%d8GK|s$`~IcWvWq1Re<V&Qe>tpKd(1;kx_Q@Ixmgfpm{;%Pwg* zwKwbWZDZ#?shd~AQ=K11aU6o#h(6^j&S;Y2h?_OtXo_yOsisQKFcP4~nW{unrolDf zfxo{2PHcsbGNK9PhpG;N(;6yWm1KRFu|FQz1+jD1%-swa?K!(!58(K(usU7mP>Xvf zBVB9sga}yA`L_26nAYvCd$)QFOk~EtB^3-#^Fpt|N5jag91CF~j)d~|DxgNCfPRR& zB!9VC6nJ!A_*!CVR%eA`DLe^zA*T2*S2!abBa=Fr)Q0QlpI@L*<x#_QnG*->L5nH* z0O|rN;Ava@zkyQmy`83^Ui+vyCt8JJacq8EM~cAXWBq`9a_Tbm5HP+|m*zZ{$`U4s zi*hLtQz-{X`z_;3Lq<H+%PYH0`|PE%BSORKB8+BkQ%n|YKTOl`#G0-_>WXe}N%u`9 zyEOsaQ#3^XJ3@tXMKNSgqb5Q~{xp`tV{7(lj)ON?FbT_mHhv)3UUJe=UcsyDe{D{e z{S$H8n%9GWchkbZRonqcpVYo?=~K;CDvV2Sm&#Bgx~KZ982j!E5tLq#e3{(at<Bqg zBd7*HH28r_Xkdy{;TTJO8qo(bA*-$Lv-z(BkD@Nsh8|#c=GWb)Kj;BC$Wzwz-lUrp zwQuYTq)XF|(Ob(hJhJKxCRk?d$nH)fCz;cA(su>{K^*RPB`k|}?x$5;IphTYZS0P; zR$9k*Y+T{HIn1W*g|!%FXBrs=;1%Lt{GG9+Qf-NHI}t*6V8|9$Ndex!XPR6RT{QF> z>o!zut;AoxIxJ>%J?RKuXFdfrLHknh#MG_=(e-njBm|?-{ul=r{>oK;bVOX#e=R|P zy^*VGmPQE*{hY`0U6wqj`?FJ2we8L<8EtA{{dEnN9lyOyegjKI%lWdf{jiD{+E5=4 ztdZ-f(_->CWcO%*9=Ka4mm}MnqABTY#jJ<9^lD4E-C)1bVc>J}QcAEK^EnX%iZ--W zSPtAzUrMF;YgR1a3gva}<382_usD`w^`F)I#n~zDjG)*-H?QtPEaN8W5kH-Nba==- zh4V4eZT(t}LSAu@mS+oxw*hw-l8_6}!sKgWqQ>>r_wUESj6`2fWA2Naq4tsEL<mKz zz2)qFZYDvxg#hOOw27}1nIQMjaYfQ{{HaSgQ}LSuDMpBHs<kaqU2!|b@t)r}+kj7~ z?F*IS%$S|itu&tY8Mg|}nQCu>I{fXhgzsw6{-HFOkCNTii3R;OG3!j%(o~m>kxGtQ zPCd5S-^?`Mbv21la-{IBxy35v4m7)VE-X*=)wv9txAXcuE^C#Kt==R^JcVmcuA5K) zY?{YaJrb@w5ZhOva1Mo>A~Rq)TMjz35@Xj!4$i;RDL~?nSFPJXSf05H`j2OrMt>$~ z=*gx@KWUnq^T8{A`@vD=@x(yabU!x9uwg~v!*Pci&*O^iJa!UtVqHSgUU4Ws$YP$# zKEscCXdUohvcSX~gZm0$z5om$4DR@OIO*g4h-i+pu-&=;{4@V$AWGp*%_w>1?n~jG z0dk}uZqX?G;|yvc?dDVwVOUF@Ic|T=J8a{BYzSx}cr!nJVC*fmFxSe2W@ksWIh)2F zt(R8D=U*@1sE>XvAvyl+`rGmHVJBJ$17Eojx;St~sSHS7;w`(vB4zr88GK7o<@nb5 z&3iy1O_Q(K`ga~YkiX{7qS!&g;f<m<_Ah21tA0AMFCanSqXBWFq>dpektvAMI_bgv z%GVo_Nxq$T8Ny>^?4m^tzLA`Y90ObXOe|llGQ!Gj9~&Fku=+}RjKV%?fk2C^zWe|L zRA{tTs@P6eSq5<B4x=c+oJI;fSB%OoshXheyqnSIPUT}|h>X^3g-7Cn5U<B!V4m7j z+?2pNhDi#UQZro`SZR{(ye{R>$)XY)nsbH>nDv5~HV@_#*S3cf47(#)MIFHBpBfC@ zwtA>(?#Yo0B?K1@N%{o?>0N`jCFHGUK|Hc%x|kzyqECIC__W)?AbBpyx|5JAew4<O zF(Sw6HG1dYdDy$b41F&JHs&B=NJ=ed&9`ttfC;F&R$Y1t9j&NNVK<^v)>ZK>!@i9Y zX(QOooSFy>YWl5=Bk!jV24lI*1952piiyWZ3_TpX0u)Z@mU)q3Tkl6eV8SKi<QAIf z#$b=Mw?fvDI*{oe>WDbxa<{HzEtYi2&A1<<#ljE9%T6DRSalUNpHtnk-3;+8fwR)< zFW9+*w;_DP-IUe9tl;foUF&|Y9QrxLJ6;~72aQ^g<b=PRTpl@x;`<Advc<XGc)O!0 zGshlNzoqax$U99?BZm)B_e=>0_`clHI*tVds4>A)l;QT5rKF2&A3w3frV8Z-%)b?D zCAz-3bRB5uB5u8zz$-m*smhE~W=o@C4nT8p@`KexwVdCvzDfNDpo_2d-@+T0pd@*2 zX(ICe@tL1o7wp5fZr>0&{x9s+YRm!u%jC?PFOL$h)MlIT(``(<Bt<(m-F7Ovod?PA zVojdjZ&q&@otp!aYBkhoRjp40#uX<b)&Mt1CNJ2y{bZ0e^p5-9He+YSPz@(mmiwr$ zr~T^kICH$FI#?QTKr0lzp?fPY3)%K97hY4gaO+;AGYCOy<*EvbI|?aru0=j?se$__ zm>mDdtzxGEQ!Z<2KG<?phU$iiYmquX?ERP3ztL65acdmgP+*d;x=b*;j%2>7x_M1J z9)~W7xx}0`U>*K-AGZW_?W0gNs_CZ>CYyk_De)z~fd32w>?3VD2kVbZ7B{_px1TWH zM+WRbTTmDTHq_l~G87usMOkylQ>EVVJRBS1Si(Y)FbJ)|Tj(X<c!6k5{S?wt4(1KC z@enTqWwygbQ7B>^mpeL=OjjCzQa^&7X_~|XFg~)XbNztBy+6%6j$gBC;02%}=|Vqs zJ3t<4V3!@?`qFzS9GA)r#vbUyD_H>RXE0~WIqp1RA6+kn96&Pyv4h}T4jT1s#h&J5 zg_Dm1){O!~FJQ2l(Xt1jS5>mFh=9av&i_|{j;64}L{KSPn0_vsH_%c3I$B1}5|jl{ zbP$YQGvvnO8g4cIHyMLoa4b9@P>W_==E3`g{1b&{S@fXBScBUJJb%x{+m_Iw_i&{h z=~Gc@pFe)9wS%(HkGAFBQZqrTGQVM$^rqwI;UV58Nir;z_HGS~!*;XcKK?r08)YTD ziR)hki)#@<;uCSL8<O$_a`pNh!RkSxUm%YoQ?Wt}kL=799uT0Kbu8^Ny!YQ0W0Zpn zu45@%T>i8zZv3BliQj@`xIGJCd@~xx_8jf#m8_f_DwSm-Hh%u|{EF8iCa>dEYKiN| zV&o{&3!G8ml~1I`$TziaH)1fm<*@L`-~ieI-e-*)b_7^6Bk)|82(9@<m~WPO2(|pm zqt3bghBjN7P$MT3t3vA*a+{iN{6pSS^L4_grU-cprs=q{S=(z;-OAhW2fKrzf1{Vu zXCSFJH))z7Ab(7*qlKXtZ%90Oz83E!)c4p#*TNNZMolDEUwf^<C8B1Pg%XH#+J0_o zUQmAXpSe6jfunv6vHB1%txx5Q>+Z#>NU-Y;R)P|AEB={fy337TqgU>+DyRU2AYR=} zTx>rB*RXe`Vrw*6zZhX4gB}z^vbQshMJ`nnD}px({)9cY8GG2*oOLT@CCrVIAh&n* zgcHu@rJ!pSQUUg94b6Ibyx^z)0v*I<kc~I6o=+h2MBX`3ekyUNGFd?64I{t@7F}-5 zJ(!NgOiY4ptJoG00+;)>KJ+@4Co(}x59=0<Q$5hCrZkbYaLTf?mrbdN&vNE`SM>$N z_EDF`pOphW*2BhUuG1K8I8rM4{i{J#j=cZi#JNuePIwDcw-w%6?+JC8O!#PV&c?8= zu$6~qmsgoyjo5d7W=HI{_4&IaUtH}Kw1}Zba{iXe#B!>DkyavwKQHrmT?g(?M36b( zWr5%_<>&id`M`&0!^LGp-nMhHPIXp7u1>dtI12E`OdU<-Q$!x4`ZFOQIbEk6W*QN) z2j1Sc7|m$gltRRK+i%k&qh^2a^mq0UtH_Y<vi*aW<^^Qbol|kUQLE#3=ozxfyty!~ zcmEgd7GF>!hcw!XalNN)-YWNUi&jRq4?9C?pxw9Y_ONX<0lP7V9yda_%4(q7#!pL+ zDWJ$frLA?+iP?9+1jt%7czScm!_U0AjTj<+6SjkS`DIVt2{*Xk@MTmY^iia{H1M_t zX>gtqbAXu?ck+=RsYh4lmhja<BG-Bs@Gh@To0qqYw|4cADA94xE(dA4vRsKDasb&G z=+DRuT56}eQ^kqTXmM&&j_#R*rVvn&!2mN`N26lvJ;Sun(MF?euI?$lupciv#}8DZ zwmhlzLh{>e)1M8b`r2PzgI*xF+l$BtxejrtDS9~l0GmvDy)2=(Ge|Qi%y_0XgV@sa zLZ@YPjz)uV(_wg6-nCKpuQ)MIoxu(;zu&nx%f9U}L-YsLl2v#(`kN9_b@ypZ%l()7 zr}7`!`n7O{V`46<{`LBHv&VBH<5#d9lksmaWULbMaJhw6m9Z63>5J=%^vEJ)dJ5sV z$B>Wb>N69122|egPgWYPkC^F|(c>E$;sYJGsPIVbHlF(N+4k_f$l>a@?38S^2kVx2 zh$NN9GwnZhSZS&x?GAR33`cwof0coUANr}!E)s+e(?^to2v@0$X{~HsEmQHS%sM%F zj!C5bxV^Bt8C3^&g6z6!TXfi+EB(iLB5wNX{b#Pxk<&~|zJa5+L&tQ~YqO|jUJp?n z;nTdH<1N1PukSxyB`I-K5P0i?no^&YBcIr_Ig0rgC9Ki(0oA9+n-Hn#;;LG6bB2MH zNuNwT!iFOuTit5UyMN3p5=cGYC!JJHc^^%tMvr&VQ4daZ{)CAa;?MNP2G|*vY|N0- z-hi)Ad2pXbrAl(0iT6ZQym2xKRsd4Uz%<-pg5^ag`S_6y)f6AENco2`plOnVGZg`+ zwtm(sRpbagUe$Pt2-Bq<7$mW6HZj-*i0Dz)E?AVh!pxk{=Knt0o8gVOkqOa@IjbJj zbWiS6&D#As_A;I5ObnotraW}hGh;3n)CGrVC1fPN0nnSdy<gmQG#Z@`A~f;P%#rm- zyP>u;t}1{B4BMEG#-qK}M0jMw(CX%wZHYVfJPkOaH&mr_qe#S}fD`G>I<P!J)qkjz z1c?V14GKt9pM&mGVBuQR4Q2Un&QLWq#Ra-wh6KNHct{Zp5H2uGWHH&wdb&IlejOzd z#;kNCeC2E2yTQHcC@xurYnmz-UMYgM`%}`c@<D;2O6_FHI09WyWmC;CW34`v+dNg} z6#?n&uK*jkasEZ#WFt!yW2d!J;rsmdk4=2`z7reQ^rx&~$xf#Y-HH<G@>(_-)DKXG zHX^mP4|<R*rn$2KeU{|%OQRU~o~8QCE%F>gfTLJ$^0z15Tsd6>Hrg^VO_S)+e3yxA z%9;sz)0{BQUk?jeJVRHaU-5mvEiB4r9i;MY>AjJmiapgWAU8~OU#)B>hY3RJUFm%t z!GTldC9P5qEILY84kZbwu&b^U8ZUp~kgVD#QdZqKg!xG90C$MKPCQ$R-~;<BYlYtS z+xi5$|IQm@+)tU|4Ulo^q3a1LFW}rS@oU+}AQjwzoIuH!bbsi`Ikrw;fu3a2XT~ni zmqVP{!2!wnv?k-QG)ICWXAP`dbrs&_XZsF?;rZd)15Q_ek320$Q{AAbxLDA6aNk0h z-*9?M9a`WG9i+D6k?F7i!Ayd#&)HuVPqk+(EH|Pq56A;Iy2WJlPYVQQ-o6GKR4Aym zc>g6D`5~j5aPORH)$=LGFwkjOj=}$K7-z>bb`I#)lct@WBgr@>`1f5n&G}->0{3xI zxGygq|0H8N-<{pl?A8eW28{uU2#l&pcim^B)9bW4cO90JGK&WdFjA65+mJzzR&-Z= z!4iscC+N84ZVEwug%dx|x<+EX$)&y+Q~Gp~=B(9_Ui3ZBYakn68@Uo>xGe`Mv&hDF zaC??9udJA-V*C|;b@XYi+c3XwcRJjez(B5aHxqd4;*DJpgJt=+GxX(+fN)KTYid{D zB<-R#k}N_v3bFBI^6AAqUBt<js^jGAn1al59$F$O6M57H$GqC~a6oq|9;LC&`WRDZ zZN?L0+Es$+B_uT(^!&7>)IXTN%K+)hhoMeHb>MS|(Ke+<<S)x^b8C1RD#8L&`x5}k zVtHI=D#(|H%U~~Fm^fzvtlw|(UG#f_OYbFMc$pe6Q$By@%C9lGU>+*V6}%Ss9o%mZ zw6%viP~sVq%l8seWFZLlT({}#7flYs^#mfU+4AoT&K{?r31I`2H2pzl^I$XQu+NF@ zbEi<9IP>y5ka=x3Y|C~Wu&P^cB1u{$r6(wa(J}ie0gIykoOYqwiEqR!7rHul<cHy- zL`#{L|JGj!{?<E>@}*FQUDcs-ZsksPeQzVY{+_$E#jw(VPtWenZPxfrC5$6Qksr`$ z4-JxQ<OVP1P#2xXBncXUPH7u{f<v6tH-+yqpM%LW)@!vphxMeKcL6#VgeTm4-0CFH zWE}IeC^p`i`FB@XI!Kxj_lCX4O(_U5Mud|IXBA++6LK71^%!e=-lv!RO?-TmCVNPo zaB1kHZX{N4&P#<p0~X2voMMGo0@$8{>h%LlA8!1QS(Ptx6<O~qsu{U%U7|w?T#jbz zHk;>WXz=QqDp*W+A0cg|k%f_^3Q=dwr^1$f)lY6=+Yrjx9oRSogKNF)+#gnHtJI;2 z<B3fzS&66#C(@gLnx_VIy9Jz}(|0SeCKF-G2+7e-$GgTQAr@XD2p23Yb)Pm^0h^ya zRq&t-n>t0-Z)U?SzN9)+`EyfJA+;P<x~A&G+7XG3B<D<_#GPKTel@>W-BZGBKs~kg z=YLmamHYVrVZy6L2y4N)-T7?&!6yjGxEFLzU4O3Mm&g>A(gY-}WNn${EELu@#CQe& z6OT~lc-3*sMt*E|j(u=YNviOS9QRl-N|}B_Z+>I>v)M?4{i&JzFV$TyEb#bQL1ZeT zS)#UW@66Kv;_W;`SOC4EG{6JlsFtHWaKeHJ*Mf-QwLZb-w_kX%*!n1tU>g1C%uvJQ zOJ{zU?6X1&{rZTFVWtyH%J|sI%*oh`1J`XaTWX15j8T+pq<a)x&()cjg=`;`6g9-8 z*lc0vT(}<vTLkL)#qHzv)>2u{l7|y%U7HU=-Ch(X9vv&(6<i<as`7@%iBq}Z>+B~- zA@h<$Ojyfr_0{EDKZmN+{zEkmZzD@JPqHAzaADTWzx=kOcuQS=wIZ4a`2;EC3hN&W z#X@7k`8Ji4<e*$?YyB<fjZH01;rpVy;>-aWEc3swade^Qf3IDLRNUHW6>#!bzx!p^ zLAQWLWD_c9j9>~yzRFe*&B2hYq-~+5q%T)(^G{JNJ-x)M?@84K5yBe&SIkj5YT(y| zI7zAC`}febs_f;;Lu0cJL~4f361X`~=#RRZ=u!vN(Cc{S-pHnoUkCwG0qJ1Fz?QTE z9TJ8TUg)PVJyM0oVyD9ai3dtYIxJ4QCi3u`6&3(kEbXbBjDK-w&dG$h6wP*mvj18C z?>eHeWrK+|NL(~x7fgthAEKkUc{P0|u?Ke&qf5)8HQSv|R6@(JV2&pcn*s#&Z?y0P z3|inSV%X||;0h9&WzrOUda_TtZMXRTwBf+fpC&MubR6i9voxIU3s?nuOXm2o#1*VU z$KS$n4YI|iVy4kaDqf51du!^z+2Scd+{j!zv%Im~379`+T^9#m?PvI>Ks$l7wDRre zq=T&cVH<>J;?dsrX!lVwi#FScy>$gc1Fq8sM@e<h$-Ymj-cMMB#OANp$dEfp0wG?K zPKYx$HGXxS)gQy-leJ$F&X{4q9tot==`DQtwJ~7@`#7e%(HpdI;QJ6MrSUh8)#7lv z-hIJNMW#iPy!#B)gk)J};5Fx@dtC^x<wUPUVzZ@JbP4Hd*z_aek3vLD(0D7Jl2p?0 z1$TQn>Q_)H+UQ6TaQY9W^}-1O^QLcTft0f+AZM?IGul?o|HIfhY>A=-S+s21wr$&W z%eHOXwr$(CZQHipZ`P9@^gm>*TzT@u-ipJ-4U>7J2-(oTW+xfXagE0Kl8CqU;ZwwK znv^K^5LipX%93lstX%T++`)W9an6VSJ&SG<q%x5jr9jN2@<7PyD4ctGW`{5`E&`Ct z*0N?}jI{^3B|B4@rNnpzY8m4yau`jL^HMMf!uJt#^TpnGO{_%eTbE?PI^cIkq;4@V zqr1Q&O%z6QRi4ZLIUC^=dCJHu>uHb0un)r%m|;R`NiQh~+*L@54tDgooEEP0*cRL4 zN1?>9z~z(rFYW%iF)+~VE8?7kM)mFD&ZYCH=7sw=)Os%GFO<8I*TrcL$M2NrvZIah zWJ5o^>v%HrTJ9jR@r-0XfgIE2s~kZ$0r5~o{}qt_5lgXSwMl3m@`z5Hm{1Zkf0L92 zsrA;A4vFpmkVkEEUcGmlYppNQi*>rKGsiAaJ}4scbb3r6EZ&XZ!PDI+hoKa6yN0|3 z03}EWYBMBNhp?(3@uJN-z6LAfuUHOqF_~k#9AF#v^=?^z9W?-^=;YRW0`h+_bAIbh zzi`z8+{AXZAnWuZ`VbM$`8t5qVr%w~@6ZE`cqd;KeJzr0YMdy%wQZX_3jf(cRKFgB zTOLep3YQ*`<2=qpqd1-yo!i<IhW%0wEHFThT({?bqb{771)?U4o94+ymuD%p)G5un zn$t^{AlQdhj@GDHbVB^Gf6B%72s#p?P;f#{w_Aj!knd=S@TiZVwUOjw9Y1H7rpg8U zqzxE$n|TA<NZ#V^Afl@pM&sp>9X;%gA!Ocy@B|Ld<Zuye=r-vyQex9Q?xL`jZgA<g z_1s6<AJu;W@Hr;vUrDmDhTQVgL?<oi@=e3hCr2e&Zs;$Vc`M5uIYEiqy5-x;(5F!Z z%J_Rcx;(y8+~~TApLoHEMyn|xQEjGzCK(3zs&w=<Rg+_#H{eb6MT+u{NYnFMz@K>? zp(1ZVMgW}I`rXxagYirRhwfLa{|4Y%fk}H2jN?|f2Q#5bmKO4i!4-<Yw|{ujj^n-X z5t=7u79wubx>d0dwI3Co-{lUxPa5J5tp#X}(n2^i09QOfzx&v@jJe-qPmW+vDz9#6 zZn$v&wi^S@S)O%RI@<Zp%kR<}JVS=L$hM8Bx-KTqhTBnxWp+@SDRZ4jeX8u6xg~Ca z_^xM;OEgIK>a;&<XfT*33n3?Ci;U1BuL91W9VjL!6Q4OQt<-VED6;=EDSb5q-tm|7 zF`1#bRO6hc_^}zjQD}VZQRh%H9Jn}oz*<<|<(-$X5nRmHvt>ub%xV|ncg%vHUx_lu zX%Q9jT%WtEOs1_}t!`1|NWTtqTqukI4(eqN6*ydeZxdrOmUX1k#2d1`Ul|M??53xS z*R!i9l{~8E4HU4ZaH5(Q1ufFQp+$edTqV7+>lHMwYc7TbZB1L=A3U>r5WX(n$#EQj zX!CpITF3tPgE9T+X~Qp3ezO~lk>sQuqGre_%Fk%FW*Q@wtbGzjqKU78K$kXk1M}Xe z7@|JP7S0<_dlbRrKnx*sPLAIS7t~ZmuB*MoSN%ByqF#x8T+Tw>N)-HLI>z5Y;O&v( zQ(fNfzNe&zZZn!ndxf-FM%T<rcoD?VTtX4<NJ9WlNqubz&&#b9)oY8D%#(xrxK1?% zs|efa+>(p@615#@s;fCFdY(^#SgQ)e+?l?9HlzV5&qS7?9vLumk<A2qUNzIt`2cXS zNqT=qjsut$>F2CsE)5PuDkzISU_7R~2XK`HjhiV2#T9@!6Vhtyk`mkizwV<5N&}ru zzoLGbex^Hg4n*YxCJ0o9A%D3_J2mp*I(`^jYfY@%<LG6mt2n}07@9?%<BBs3fy{Q( zwX-6OtF+g-05^rxDu1X%R1G2LidB>VgQd8}5POHquSa%h$YaFoA4G4zQk*u|pKNCw z+gI)cg|sy72oxy&eTy6EB|H;elSd198B6}a2|B1w42?EQji+Wz+RTZG;~&><3#=pR z>A<xa*1e)Amf>?@l#2fKIHQQ7^c4yvxSGj7!TioF)?r|@!D3FoIXA+jzQ)d0P9VKw z(ZX{vFyU}8iW?RmaFm~$WQd^R0|8O_NQ>TeX{OXc@iAzfUogFpygMJaJp`_dmb|dr z8~9%{Vy*W(Vn&+zb;H61TEd^lJ*!CC9fQRd+YuLS%QE$NV%(Wo2a8`C=yjD1Uiv}! z9RqNY2TNdPl}IpF+>o0|kUsqf6xPTh$$goFqRy^h`hr^1DueT0)49fimK?Fqy)NGU zoX(Y0au8XiY1bsAsdF&QzaX|}H;bR#FB9p>8lnqLeJXV85gx#2U?~+9-xY*=ibi3{ zAZYseC+D>0nN#*gx`9DmdJrErJ<0GYxHrfxX+X<fAaybs<u1}E!2i+TwW5@f7)eOf z)}RDLu-l~&Jm<iNjWmU7GR(<(bDg(=PwjCI9s|!{u~hq1{tD;n=nD@9a#hFMMJer8 zBeA(ro+BZ$FoE&j$PW$U7iEy?+O!r?t^kJ8$UQ&4scw63V(95JmP&YHJ8;{BqO7fu zA)Q#XDo<6!QAOU<^XwA8)g1r(17o9%li^w)qBj27hg21XBfhsEXX9dd&D~rmK7~6? zbz7@8M8N`?ff8P>ZLSE$F4$2p$P#&jB!m^JK6<DnS3yDsi_)oR6+EyD?!JOCuZD~X zG=M60rP+bJbtp#EbJex2Vx}Kky$(ZWN|EebM~vJXkW-X{+7_~B=08+f8Jq|uM3lwX zLKVdKUE3HIu&3Ll?~sQYD?RTStdQALf8Ek4+eD1hH5DLvg-UIby{wgiKwoTKgG8HE z|5EBDzO5t7b_LeGpN8M63rK*MHBLckF2}wvpZziGaD9gFK+GU7D@mvJ`Qnir9t(RM z{i5?9efoni6F8&2G+wsY1p2SYw*N|wV#wk15n~DGLQxRz+KOF?0&R+y#p8Pt9ffCZ z(p_qj7H|el=T5|lfoe%P+;jha9JUNEsO%;N%skXHh+<-EQ41lt=yVV$e5QGsoaLA- z#GVnYN7D^2=U>IYk8B7jIKy=Hj0Q0*X5mPJJI*ab237<GOc9TBWCzdRjajU{njMyZ zcH(xIfzI1~h_@;Ee1}CBEybC#N_DR+;{lpkdaX%ExL3zCJDf!7u|H17pa(&c3f4@( zc`TmY%4{1o8#4|BO52y%Kus^n<^uCZZVFE81rkKD0YcD8C&6IhnNg4nl8%a=w(S%s zl24WW$Sy6@wB+{i$AB%>i_)rFx!#n>^J_$u|6bkabPlPpvW1%N@sj~_VsX5pNf!v7 zQ_s*vU+7jL(XuL?qYvBB_y34VLkb;PX{HJ!tV^2m!`f=wnH;15Ge-_g3D?W6=^AA& zev)2evw|Xv00Ud7#$7s>KJ~TsUtzmwf|fE=nWQhzq=qGuf-hzo2pN9daR=IyLf?)% z-?E+@X`erHf%=jXBV9_rYoF&5hvCUMu8#pw6OdWv&?O%p|LMU$nYX@1e-VDw_|zMz znD+LNHg-hEQkrh|%A8De0EXCTca{H6ocZbH8;~xpfna{M9F@_^#;d>BlQX9D22E*- z(gwWPmgm}qe7I-PmEYZ8VrN6y=`IL7MF8+8ug_=X;^{4ypkvkGnI0K}&47N0>;x4G z1P+No9lqj>?Gshjou6WAU&3LD|6XzLQATg36Aw#z7B=)fF+&j~f4OY;E4ypC_-+2{ z?h;3o2Es*><JM==OqOWh2zM3umC%>l=Trevr#urx??A4Yxhdd51g9lbW?FqRQ<-9_ z$o_zy0M&$Hfy<6p@XN;fQ@k4pWH}aVl;$96pVRW+u71nY=ZSy*iMZ~cd7SPWyWa$+ zvxJvs$>fkSksNVvYpbS}Kadhq9`}RsxEOL&yKCci&G$V-{r9#bCX8-)uyyX~ZaOI< zX%}r#$uZhB8HN&UFlXUyq2AQ$?WVkD=SAeHZk`ayGc;>`M;6g+-}KZlBG}pb6%?0( z0?{eO%cl3~W7YoXj4C*KU7~p0*QD)ipOcpr!9#JOtwm>L*JE180eDIg<~jaXo~eK0 zM7?mGcp-r=P^14&g=y7&1vb5v@BS@FDTh;zT^VjaP#l=rX^41h3p7LrEjx`lA3}v^ zQXttb{H*r;2Ibw7{225V1VwSWSW~n-4*V+?&BpCRmh5O+2^}%`^>b_B0zSfak{HEV zfj`of=QnT0kNAB&Vi{@s*K=S6iPLctp%P6WkPa`eZLCp-H!16dw$68jTY4De2j(<# z&@V8ugSw$$>Be8OPPIfL&0S7w4e2=~_FJk^LXIuN=fBcnFR2FWhTGS)H8$7B5C_9K z95!ULF3LjIBOT>)e<!+dm;q8ox6t%TbmrYaFgfY|J#T#42&dmWFJiin7&wx#kkp6J zVg~7VM=7Pb5^uHxBj6Nw@dWBSS~c*+4hjIk%Ndj#D1j;xWu*{-P0}5u%f*ffq3c(q zjSa@74(Y2Bhs24gW2nhJq8YV{r3|-7!m^F`kMxwBCqS*NIg=A9xo;FUAVb76PIGDN z*PtqZ3_+$)&baUIK@a;g<t{qM`9~RNSEWHQ1~si-oV0M^fW^{xo|d;QbGTXr>|lt? zx?!_hZ+ZeE#zkFU{GYmlYX%q3Dv}WnZ#urdAi6&G2!Du9DhXscwLSyepAF4%?A4$P z-GcGYp$+0{o-Bz^LrSV^r>5DfaF6kKGnQm++8zfWq3!F`b3%u|^%(oaQwBAVOjS!C zJ21`j-C%IXsM-=;+8ATSg)Va2e|B>vu3LW1w@~L8OE9sJv$=53r%c`-yQviCP(ven z%KNXXMv(eVyTlai)3A5$I;noWbPs~3Z-3xp@32<WL1l%Y_!G@VS(4+@J!EMlvt5`V zMSl5*CKP0SJMFITp*Y3Yui|^Fum^Wu>Z7EyChJ#Wo$H|}<lg2W`z`pB%Us<m2Mr41 z)Y!B>OA*1n$fZG5--J$7P){a#b2%cZ&|CyE+ZFz&A^fR|HZq{Tll&qVbeKNq!&`Eg z86x@VSH$+|5kCMa1MuKn0sYQa1+;Aj0`7YbgPyEPii_cTp$Z`nMalm5EZS<hpfC<~ z-o7<g>@Y%L9PcDH1}|lYkprOwganE+<p)L}CQT~7^cxVdH@40*HL<u~Id;1ZcoUm8 z-fgDI{VW~_Hx?#^tgDx%mB6uk3A%`H!IyvgZG>3HKMl1&vbD1uzYTum6+bg3vut(e zz9Cz*g&ibW^IJ($OEO0n(uOJ5uU;^qucL5L3YJdSK*Gv$_imC6ac1>~<n?3cRpe7P z+K>Qb%5mqbgK!ykCL}${B_wz@uy2XO&}#ml(-+EU6p2tYLa4-`|9#o*c>oy-6xg!0 z%85K)iE$rRG{n_6b~?<gsz7hSl~%urv|{FC$~HUH`jqjeU}~)pZzhC1;-drn47W^c zW8L_xG=w{(bO9Y17#^zVmbsH`*s>*QOEOQOnSIm^Mg#j*x!9Qdn1U@t2FN01I1OnP zxNE!cP+H?F<HH}Hrt(IIV{=*)xsf0!TRxcB<gD~+l`<NA=~&vUzQq?iL-S)|Px!EL zaJ4f6USKAA#CxzKBIY;Pu|1P#8Od92X3OM*0JRa$5<kCWG<rIQ6765wy;$H)o=3}z zFfQQHanr-BAEXzQN#NBUaVCr#>681rS301K8HmmV!>-K+N#ZCxdKk4xZW|+mxmKd^ z)=^eT(18M-K1_*hA8M4`idRZ;Co@hu$iGmhYxV=uWC`#L>N&_Ny^3P|R|B*bVXfXZ zpp_?aa}b8t<4x%%%4GR2UcGzVR?6n|a7;{~&*c|VwQo|M9ZI+)6BFE^H*9(G!!dKn zS5c9soXa)fs&7yD9zqpRbue{{yWW6B1Uo}y%&7nGKoJ4~%jK{~Lo@3#grkT1g{-C% z+4<XYX6-~M@7k7=3P+EjTu%__{{4Ja>sAhcad3F37hwnzHczFZFyNwo!-c2^P3_+} zi9&=|39QzTNvU>I+drI#7`AmJ_h%&lMieT)!Fj28&$2JfvjYJGwlU+WO^WT9`|7^6 ze8ow??lmfSIDAY!C}NfyWPu-9a<HU981XR8UEfA|^@|1|Fxte#$ima~k<*t$Km%@+ z5dFoe6*pOOQ0B|(j6JN8R}Wr-A)OB|2m?1@)WY&-N{bHqwtvx!6^OZ;Km+BMj`&wh zZ<v2RaQ^o~tX%ttRJ*9lvN2>?OO6&6K#2?vN)>?Jm~3h53pM@_bd$7>3NlXr`UzK( z#t`DHt`u$7YxRh1!Vv0fI^09D%QB0*+X+n-{!Q<efy_>p*M7&K5~h<|T1>b95-L?H z)K4M&`k)vhUJn?8LmiRzr*cQ6TLi(5EY(!^-)tJmC_7t(=&Q_JCgxI0&d$P$X%Hsd z+?$F>Iqs+Ehi0b(*PgkWvJagND~8-d6|6JFSjSfGr*~8ky<WJ1b0Bx*OAN;p2pK1Y zEEc3Xee*zC-?-7^`9{I<dGAkkq|2>kU^rgHe%h3|H$%O=MS9ni3L=bEFaC2m`bJ%( z+dK}i6_kQAipxp>1!ripOb&A|vsdc{1_TZ{xgh2?&J=(b$fjmPBT_o^uD_W#rv+Sl ztDpoT;>rER!g+u$A@@Nx(zfcLw9z5!E3RISzYOssXq0LiuGE!G+OzgH16sbhJf)aw z1VzPwhX}+J*COCfYi)~cB4BWuG~rf3zPiNvpmyzv{XBG`+U~ZJW^k4<r+|!7c;RXB zMd77`xRSheYOx{`K{;m*Iy4EJ6{G-g$}6JVnbx5TSAY=3PBXgohk^o;;1V$MaPn#c zt#LCTs|<eAT1qfhGRWzvvm5gnPk7GF7PAI0(Z@fT*yHOvo2R~n?spFf3MZbt!G|E* zWZYD)`znB9PcvU2EOZ}P%ALP*Py43n9r!Su2NY_gAa-4Y16{?<c1nz5^2yg0%QguL ziZ0~?9zbml<X&;$4x4qvh^z?cw|$td_y7`dR(94}K)b0K;Bu(<y-0j1M;I;O4dYV< zF5^naD=uQ-Rmp4<wr}>rO-|B1nzpUygZZofJ!t4@JQUwLruL?%L{j-XA2Qc=4D>3Q zr+kLmxgZAB;NS>$p`d#gx7?K4r-$T3a@<IDYcru8Km-Z9HZN93d2sVd=wU+{0XpQm zY}J0I`Sy8;cvGae30HpUr!=;L_M8!tTs-K%@wu?MO)Cwg4(P#h1ZZqt9FHsw7mTWn zp~JaEG?Fs8tfd;7&$&5DGI_m4;BUWEk22FE?_PktA#sx`bI=4WL%$z2BYFxA7c=CB zg6cd9zfS`yD&_o}%q0V^)~2YwWMK}Eyj)GJ^C}%a)*^e$9(OJgcs)oW)N8TlUMUhJ z-ff~C`s@fQk^){Yf$VSlGg_|0`^hg4HDs5T;9g^fj7pij+5kX#9%~itz02gg-!PE* zXLF$mT%lFw-oDku5jw$qpiu~EtG}EESRbAJ94)izOLoLmsig$jOhS@t()#8e9=zdc zxbirpcei!}J7v~cbC>!fcI26Zx7naSxP(GZQl>q(&eGxK8eegJHcW{h1!?_}HhO2N z?N<iq#8*L<r@KQ{_BZfqpF(C+``@|@GLbLne)}5pbpQJ=VZ7(`c_)1x89F5^XRj@{ z&<6tM&rD^2M*o$Dk)fw;;+&09)TXa_EHHoaQqTlm7ug!pAfKV7nJjL0xoXLsx@E0J z=sfBKtdGz=07uUl#^}u?ak|>c#Vq=LWdXkYTXp$}9(M?l`!yWIFkJC#+_fmtPE<u{ zfRgO&rTE#ua3yke!eYGlDclG=#Vjp5F?)DPD|}|)l|3Y0hCzvZqE91nsgbMd@H3H+ zan=yvS<&IbDAsPMdoAIwi5KIpoPAHkVq$=5ea^<DB?&h9*X(v`B(XUSY2jh~{gF0u z0sr1-bQG87$pou|>^P$pOXZ5~`?^s&ta=#T+-H;wC)IY}XAWMEg1O`3DoZ0DdngL5 zXvg`#yze~-`!Z+6R@0Op13;BD*w{2p7;hhExq-tjHL&vzklG6;sefz~uMj(8a`Qd| zAPdomXb!hcb4@mLNMQ&vCs#C|xi6_BUg26W7Dce)He&hLC|UK50?4tkwqYbs$Mb*I z_zquHV3f&TtOW`AeUHtZVm-J#!k)S$lIl|0rxQ~<mOBv4@1*Sa%SZ@4n5Lz)%k$L8 z1U>gP6Ie~^K9q+wn*OlI`+>hDc&MZ>%t;y@;8OSZGX>*gsUP!*xK;Ht3xNg`(~Sy6 z?21Q8bbuq%0b?CxpdO%zoV1vrvQQ+Ek%QGSit6G~qI^MqNv&1A%Z@Rjk2S}j8y9|u zp2Fs@qrhr=wPu^Vc_I2<ZR7INv6r6#XP0V{H~EW5=@=;rGA{l<dat)j5>1|>f^Rz7 z22)pOpYvRU_)mA9JYz#k)Nn3Pp0QWx3PDfqZZ^r9z;sfm3pvhXCtdW`omb@UgBv)N z^irmTZKYJLIYl7>+=g1Y8sV;qEDq`NQCyLmPC|dL(^OYH>$nV_^anTpGI6_iFD_R} zIfWOCx)KP+r2H00N-_eRSbYkFA3ZiD+2Kw6G07pKQh4g6=DMS`fp9%^bVew|?Y|D0 zU@PWeP1{Hx=VGSSGDMq89(zYiOG2=bJ;RsLcN2+BWnc-)cBNt^Oi`E=a{2ohE{@8t zKt)LV^dgc&AS1$vyF|GkWTL&lHU{8^c>@s(2!Ih!bUjd!K55t|7E+<$IUbW4q_ywj z^>fYBkb5i~r?LcrJcKXhKo!WHUCaZWw+>&waPLQ;tDa05{Fa8Ts72J43-Pw+U$6Fv zLqygvNz!)OBEOH>tqb#Sb<n`QMF2nRXQbO{{DZO4xIOSw3z*?|twQ@g^fS~yKn%|V zd5k}bb)Z@e#;<CcjRy|KF&?8`7XE7+DKnf99FLYg2BNGqDuYEU{#)|k3399-gyHIl zm==qU71XFw6`go5K1;ZSlWhxNaFs$IhDan{lMi+ML^qBL!;z7K=ja7@_Q>ejn*808 z8PoN_GQIvcBe>Sc1?qQf1&t!;&1@DK5m~#cDzMo6_UFenDzeVMtGCN;3SPqFpO1Ew zcZ7~GC<RJ}HWP1wG102o(}=fyATds`4BwJ@NHfA+U^9(M&jZB<&#XFysBz~l%!D&9 zh7xsTqAi@pLDQoYDnnfrw{n-u%SE8ndf=aJuvyX)Q)_w(mF$toV5|VW2FIgpwjZ&# zXe0X*Q@oRmDA6j76JSfVu#&}2J&H_Ml#J6Q4eFSi#rF`eY<RUl%WPpNtIA>Mcv{LP zuZkR1&cz?#QiM?BTCmjd)DwU$M%QHrngENecPXKAm7%=WWR=5{Nj?7~?G0zcKWO57 zxjx3FD(6>|%=P@3WMm?&+CFSpD1VKF$KfAd{991O!$$zB_^KNyIC}=^e(c9*_7-zo z+2|bthE0ZK*0b6P?tTL7^{U)nw({ODYIju#NgYqO|GT==UPbklsNQlI(W~GA4m?%@ z-1lwQ9bPn4zlW?%Z`Emc{!b9T;lC~jq{%@)=!5xFr}wyR$Zie=q6-V%6FyNZQgFY< zN^0=DWNTAxZ6aiB!So*&otMJ-eYr(Y%>#j#JnH?-&$Kxr0MQi~$F;l;d86!q*QSj& zzo%>VjFsH}ilxkgOL=qeLsKjs<D#6esX?7C(V%G@^f$<nKdD&(tc0XPLAcp{ry|QX zaB?ue{)CH<Ve-spyO%Otud4;<loUfSTu9I82Vs8Dh0Ghif3XbkU+cyzP=`eFQ%>lt zAri*&iLr<Ow4yzj1UFP$;j0RR#d1}uTrB)!wR(hBdPqFtD}eXV?q6)1%xmlh`G5Xr zoMSaA8lDgMM<ZY5m@F!phg%X70uffQwZh2r`eZy_Hc8<>PejNeSCMob*v;1DC}p?k zLh>1q!hpUuq~Wj7TFtO6;s?f&;1QD(lD54dRCUJUSQdrtH$Gl9s+aet4$-M8_^Dr* zv=Tce86iu23lUZIu}4Km&dUw*Ess?o;mvKWr*hmEh`hLvJqLI*ml_d4uxv$JM~o-y zwangw?FPEJ-@>!LYDu?$?{J#k1#0G^mNxa43qw(6|1xmrp;OE6B^UM@&vc_EFq^=( zKTOLrQ{yM3VJEAw@Jggi3WTRsjn1y0EUiqxA*&^$nT4PJ@Pts!c|=LyTmELPK2IBb zjG8kPWT#*Elp7h&o`~-(O&#!tW`tDHLh+XZ%5J#(n0@0H%38r9bMcfJk=2o1luWjO zwWM;cQ&u(if4n46Ha61SpJuBi6%n`2BDCaE$+N6_A9<t=|2$0QC4}t(xBxTk$*cwr zjTrE*pz`=%S>&K{`gT8=E!>wfS~K`qX`1r**$EnDqUJRy`-8`%GE8J&juMkT^^PTE zq*%tI;{>Dosg2kq9zqe&crAXk(c(P#a-g)SFwrwSmU9i@Q>gI}`1jJXFg;5i2H1Z| zHr>7?Ffy&F=CFU>j>bx1W{a1Xqx=gkONkLcl_`SIpxPtIg^{RxS_ScRrQ;Q;`RG$; z1r0JC8|NX*-CBs=Y?Q^igWE%oH0t0NcqztQovvWbh9Q(M?s0f7F~;`bDxUoZ${_i) z4vkn^iH%%=0x!Pbwx*|%F^rTDqc6$up@eg(?Y7pSW27?BjYql1kR57YfpU2X{d9|E zI>6%cYJ#+ibRxh~SK6!RlDmf#a#rKb@it@fB=_9a&As8!;>$hOY(7a#bcQ-?RBZ{g zuDtu=*)M}9a%m8@KCbD>A)~wyOgDxd@@yP2)5Tz;8Cot~f->aGPkDmFjxcotvu3D% zzNenf?3dyOKMyh?>{h3p|Dd;aW4x@R5|h{$eRlawGe9}r`DnH`R|NL3Ca7E$Mn(oM zyNV$u$y|Vzh>WtdUcr=3mGZW9>IGI+m*zX7;jM+ZLM5Mb#9j>9;8FK!q*pl~Z4YY3 zsNzUaX6ih!hQ-g-pfVf&-8RqCx{7QYtygKWCKRU8vjZcc#6LUH&x+#aByMi!g(AJF zoGMCfwmzCzAMrK!tS(R;RPJ4C_onhyXpq*-86s_Rp}-F#IH<K%6K5`3&;igx9A-@) z3b^8S9DvbjFWBY6^#+t_muAa3D-Mcojt5Nzs?A2DGU6w5KxTqiY5O$IMqt0##0=EK zKqsppi2{r_N6?YNUv2Sk{3p2If^EwX`{=&$Y_++tS3kO<uRRgGLS12+)<f@^99ABJ z`?S~BR77xY<)Zfg0r`v4xp9<gtx9OE^r$?9+B{xCNO*tX;d?mA(B|A}icrVoo9WPC zfdUqv`lF>e9oe3lV^tlZrPXu{JovG|*&o)@LLDyvYeE1~)=|>VNU6{Ak&P&{qc08A zVKo$ViwCDO-PwQCs|gzgLYU*(dr`6GlN<<$kDXzm8i9p2GANfKCjeW|jZSBY3TLY8 z4m1wjd2!w^{kM&m=i}XRt|Gu%MOTai+PzLh6<Gr@)KI7YN=3{TfS2eOdd%^(8=K*m zlkq6pl@7L%Yto!GjcHG3H-hztCn{P8%xoK+VL|;GYv5Nu2x4jj54?gQ-)@iOCXqdh zT-`Tr*7N@P_ls)-^YLHm382>c43Wp$v=u@`bA8}reI#AE5727nEd8u#A<W?9yX~?9 z>7rlXC(T?`YiA_0P0F##_sar|8vAdQ{)<|-xIDay7W*Hz^!Z>}e##m_mKx=Z-dL|t zkl%mtDK2|5>5SU6#y7y+2y5E@`U~b!FhL^ScR3kCFYt8i<Fm$I4qXh(mnH%|<}4I5 z@kjxmmS*5_j^0X<9DGj<q5Hb#&yi|6uj9Bk-L^m2h<@k9Ooi|vh>Y2Ohct0pY$Eg7 zAL7G8$uWR&UagM~w_P@4pzh{v`{SryrR@dhMB9etD_p`=h0_}08AovXywalQIGk~| z173@&AknIzSaKWXvPXV0@iX<9?MGyoHF_`MpRE$n<<8jUfs>iZ%NU5qi1U)AEH*P{ zZVQ=0dYgwP`Td*oEQ8=7nNWQbLF8~xLdwGWGF(V){Bjm*2VG2)yxlKBwjHSk;;iO< zME^Rk+I(E0Dj4Us$P(LO6GQ_S+$s`qK9h+X0I;E#H9)9{%{SuN&*#BDNf`wv({}h= zw(WqOopJP-Zs=<fQ*!WSR8LV^`LPqg-#;S%_AS8sXo6cLRipQ`z&`D_ocVU?ddz{k zI<n|}XzYn{VH(Y6y}MjG(Do?aT9B{xMjGRL_z$RX*=-Q2k*tVG##*h)!jUhg<E<RW zz7!0u0I--QCe#67U&ETenG>QbsuhEA+!Q$U7%vqvJk(6ufPG4Qt_4)<6760O#V+0q zj&UDKI{X6bNXlpekG34)sXQ&G?v<j?)7_q)H)P~5+SiSO;B$myP0aFuYm#vC%IUwN zVSi0P;v2{X*@Z+=)fnW;5T_s&<ZzTt1ttK&Y1{pGr7s+<xHN*I!d*ylIz-jwwT0@O zpLteHTYn>l9s8ppTu)7r09b=b#d@vX2n^@r_mzaAmXA&?HQW7delGx?ZC3-FUJJ$U z)61?96+|7ZPahTHiD?g~f49n|a`1A-^`#o!=}7m?f#(GeBoY3^biRzK-|-}c;Ql@3 z?1cp77F<G<Jcm~;5RiaUo>U~BrZ#|(3X<@r7sBNjn}x|3HNV3nrhhmE@-k%}EFs6* z4|$5YsA?cPZD9Px{~=z7CW-<di#5;l@ujoeI`<yE>DmdD$LF^zT)X(wu!)o5FIPp% zXzCF$CBaUpqebQZbQQ&60W0DR<-;cs$&4)*A1#Mh=c6P=MKuzKPLQ<$q5Q{v;|1~V z$`wO@-r-5rx0~IE{0QeOzwz6)B}i#NQ23ge^wU2uf>fNYGs}(XskKivhg*;oPR6ya z8_q|9gaBkgopVvex}EfW1D&o@Iy&Wq8mVohU{wh1;(}xh+4MqiN3_UmlO1kXMb>}x zDF1VR%v}rIKM+AAO$2vM*w2<AUi~)7nj1VfnZK}hV0i?Bxi>%mRwt3!UtU8JACiyi zW>`b;G`KPj3EY_Yh5wfh0!B?Xv*^V4W4^ZxqJQK>x?TZUbFBGy@<C-9<vuMPL%NrM zIvmNNM40(K5)%pyZS{Gl!@#YJVYQU>o=L(Y=`-Aa{mt@57h#YWEW8sHc0E_43*&LH zNBvA~4Cr401w>czJK2^8=zj{CQtf<@;`B5q<B-%hxF2LEw%|(4=EQ>mC?$7;3u7d9 zfO#slrevD=e2X}_oyyj2>Z|V(M2*_6{JsStd+OiYA*yVQ-vQ9scnxA|lZ3pH&&i0; zLTzeYA=`cCg>PgqZ8Qa8xYpp|a2A6%aH8B@Pd1E59|s4wgJ9p(YlK>yk)$@4>NG?` zZ6_}yQQS4ubGaDM$DY0GninD~*F!nziaS{w)Hw-yufxU2Lp)1;<Z^YEvR-DjqU;}b zqL~8^klzf%ghVPVa=Ws)USPBUPQo%~nJr)ZG<BOqVeFCEm?u@wEi;X34`TN~qH*p= z`!0#p9aO3C=pdfg4O88*ukjTq|0v8@qW)@xBBfD_8(XB^S6~oL(>qiDmbr|1lE_+e zUY3%+kqi{fa|gi}{GZ@|w*L?KpOKN7lj(oK|DKkd;roZ8K_G79IR5BsBaifDeD3)o z+&uX5+H3%3wfHqqUh!lR{(T2KX2j&I^-rb4x=eZ6yske6)t@4W)r2z#^pc3w32S7d zdFu1bp8UP5x>>Py_=EZZB>ZDR4~k|Fs}R*qk~vObEc4pP4t(iV?R^LYd7GfM)E^;w zXaNw}D7OkMd?O63ApwBWp$kGMXmh=R@;Wy##pf!Lji06p5KlWl_$=E2)`3d?{U>KI z`99<P)TYM1q4wQ%nyl$~HyUPusT&O|Yy1Z!ULpZHS<d`t${UIk(Oy~mxK@`H5GVN~ zq4KJ~X`K-rWJhgdGNMj10Y?J+5(VDc&R4%`_1y!;D9vX27N|>9PW?lip-2sl15Cu4 zf}5DppvV>;BrMPGzVkncu<PWV&Md`2mXMW1``)#*r_?28%}g+kS82Qf6MV@Ce|>#^ z9-R!I{XzCXYVD>S{g-mdBB|Lh1hnZWE(Z3enB*zN3GH|8B<&QRiuN0V*1pdcRgiI( zPMM?)0YY<|uj1H7@D4Y1-ZXyO0LE=dS2Sh(OKsp0;%v;z2Cd+5Nynx5MPMYSFYjhQ zVRm;Mn&h=y%ZBPxWa!Vr%2I@)%Vimr#nM_Q$YFIf7;_Ur4Fr`u=xMHGZwCIp?yTV= zCs+pTP=`N?7wlw_|4F`1dxt<UInOFa<jNL=5EyoVExziqsqs@RI(r=7Z9gUaH*4DO zIdjY>8ZyZkjTs+(4pt21(fm}GE_{%Zt9_<jZf9n!HKr_0iX%DBBnBSF)b&EqSw3<v z0{mroVdx_VquK!CX=Cpzac9`6W2P7zUq;$0YAza1;NFI?%#0&DvM<BCMBhfXaR@@l zZSQcWJ(;??EUdZ*Gf?*hUyo}(+vXpHtea;KQW$mUUOK}p&V1cw#|{uf8IuR!P7Hrk zQoq60SQ<z5vpoQNBWdl4VY${&S(#ZF1pIG?S_oGNOuh*53Up01==6z-`2NGB=OiET zy7f7l=|L4~ONXpKZgy|;mm<}nSQP)PL)Dq%dmkznTk1}Tsh?OeB8CDsdQydJzD4+y z9tsb8gNZJ2gD=V^!!C}xa?}giC@XB6#i>wK>2PrJdq@bTLJwn7^f9B=KnK_|VXV%x z-GaeN>k(6LAqreqRJJPYpSlD|Qr*RaWOXy7&+m~I{bL~>Tks~XE7s)a(PjuOT2YZd zuz7hRkmP{Ji)9v-pnBmhP;7M;|Bo8RYD1Ksj|+**DW5K}+b?f#jTJ31CB@}q-2XRu z-l)a*`f_~=PtANYP5QfbZ9<wLvt$d6r%fb*5QnwT!?;`en8c_ncoB~*KP2bxV-PNI zI;wfYLC2m;9wLAg=8d}w?*!i(9bU-ZmuRJGe)SE(rw(=2qJ2|k3lL1qxS0(MS<_60 zZ1&yA$-LZ6BHZL<POqBEN%j-dx&q%Rm)CJxK1O0jnUZ{|$g2PmW7OJ2gGr0?jIfBX z^#?tOY0L}YCfY7O2PJ#hZ;?>O&i;FP9%+y`X3UPC#=SJE&P436tDfg`Rz`ncF$uUC zr&Qa^S^7(w#n<5fFYqN=iv`r$5?QKH`T@yH)W^s{jvcsTscc{s9RaqW!95b)@6tqG z=|=rT>(;(TKn|BOUX&gULulWly0le>6~BmkySgaiU6=lo{B{lucsF*}@d&$zMq|Rq zl`M4s_}QqEWp?j@#www{UhcM}JPV9^6sB2L?@cvm%fK#)+#8IB_FWpFJdjj7vVaqE zD=N}w7jEHoqUOnUd+b>VY+8{FZ@91>^rS-GDf)pVS3W{V^eQ16QUS88{$096zFOL& z2|WG&mwu}KSM=%}H>e50Z{r%03!x|KD96b(qCOd=o_9kT3VMi=%(3%#?CB64C^rPd zd1!8Fi6xMnbpd=>#BU9GLRB8oY<fe{G_!DQ<*??J-1lyiCTnv0HXcVXsS@EGue{0z z2$jWpC4l5j+jSwYOUh!iP+b<x<G%_svT@4EUpQ;4q^rNgjt*8(_`LMAig(hcgQW-W zlL;q;0dfQy$bF!-QiSZ@?wEnm%AhA;dQFb*W|eT~e|R}epE|}CgZ@WWB4p>5r5~Ql z{W^3C-nQFrYU2(0k~~x%^dIF0GTW00m#&OU5O!K)GB^&ay}=D+46>HCN$UM>hfvao z{^D@4h>Gu<G-{rQIZc;FSjjTq4UqF~G!iFP;Hvl6uW)DaO`z?s(23E)XWDlkhm|4} z%x+%(UuS<gc2h3a&k4G2b$Q%-(dF?2H*!G;_p1)%yB9Cq<5m%uTc*Q8;G;SvjS?pr zue-PFar4t>Hp;pr6Y`FQLTucpygv3x*=yW*3jTG8pV}<qu9*^9M8PU+yGuL}pt?4+ ziU&~T$&r9tC0Xz2(M;OrXE9a*q#I~f3Tv|GG`|r5FMflHf714h-pSdv)e9L4B<a}f zTB*hI4CSoiwTM2bWPJw`aP^Oi1w=BoQLUo)$w~wU-5lqHYtANCjqC*h=ln|;JQLxL zxCqM1IG0F?33tNh<w-)CM!dO(^Go8qPx{h=NXGd|inRa${*Tqb2nyDcp69u}nyvvI z7K(j_+g|`~<%X3gN?<6KGG(|i=3|9l)@RMcAdl2iSPpT3C6Qw%7f0S!42mryQMq*c zZ57|SI0A@wj(^}3rp+Sz4TUAax`Z82_j}348be!Pq90>*w>>s%Ql?4k{zcMYZaO8p zZ0mb;#z<=Y!&G)Xho9X7sF-f=Nk#yNp?qy<5-`~y5tTeSWL|te??+!u4R&=Q`6h8o zt9xF|cEn~+Ehle+BcN$(e6S1f6zu;Ak2+JL_(qGP7}AySZkG$6`+ta;RuaA=d^vW; z(yq?cHg1|Ed=iDxCtx8u-3ni+xgE7f#!PWzt&Ye%%-$^J4L3nOMqi#Q5g!}@{-Vj2 zciXH^1~J09*E~$>{Ji$=S;uI>CFz_kjAH8gBlJ-%q6T?ZWsk~Ct&Ff)2DUVcyd%Y- zNli#lp;@eHjwR17rz9wX3q2JDhbFGN=^Z$s&~$(yRe2D2P_|_Ctb^2=q15=-qHoAM z>FpNN;9gG*!;35j^el!JVi<_-57>1OB9aP8xA<QXRME4@B8mUGwaqyW3@>J*;3Gx0 zYBT}9Z)6g@p=wF`>O9615G<@#9xcO0DY{^vvmtL_W<k>+J-IoabSFkW2=A7?PFw6+ zNu_4#nPwWpE1R~=3lVq3>rTYb2!}qBz4NHmS9&PA!Pm2jKA90GomK#lI}qbqkN*&J zZ21@`=D~tA5jn|xHjy`5wZ_SS|BV~}kpPbJiDGwT&W{;Y|ALc~9Ox{G$e%FRNlnwn zZkL5P7mDoRJVTKBW=vA=()nvdn!&Abw)MBehG7qUeiOR^!cVar_}mKdIS@7r1TV@; zH5s3!d0QP|Ra;m8vbP6JK3<<DAU!0X-pUou=IB^Dl;c68XZs%g`(npVE$-P92dd7S zypD5F`b^|D&|`>x5w3U3Svh;gEpPWH@<f&<u?aYb7h776*z@zsx<~Ijx@(NF%<#+J z;Iaf<p*eN!7vIcJ1|7bG6vfgK_dW^_U`0~$bvYIV&qM)eg_DtH*?=fnxt!VTr}o-& zEa#j;f~j|UK)0G0m80wc5%ZrzoeGt#DPBN}bnyZS4So|aB){52u_)QZo4EV0S~Z6F zTzBsmv9OQ2V3PjZo|q#N9h87d<%K`_D1cYHW%lrGol-dk`rE-lusTGPF!4&?uxtvw zJTnQ8J6N3GPHWFgEHOGDc<8l%P!D=HUx`}KET$}4fk~$8^4%QUr&b-ob~gE00Z|K{ zsCs7npR?w|$5~b5MBe3B;=x}$`lJ@OqHPs@u6zYE3RHkk5ZPH&{J|qs6<ERR<KYzT z4JCW}>Co}S+ew!@`}KwSB${dzoNQv8dL6ya!s^+CiHR|BeX5_IUL~mXYC#qrT1Cy6 z24A$AmtCjEoM0Q~T%(C;NeXLqZ~GvGLd$->oX7<3M+u|6YZcgKy|)Ecd`$?+a1MuZ zt(F=zF}|OQ6>NsX029q=B)|Qo-Nr`81dp-Dm2)47S=(|p_8t6o$u*P?lsD+>Y&qYx z^^)#CBcyIGN~<n(W|{v_<4&sj37JHOBWid8i&Uw4%K6vXOPi@xe7FOrmQD_=_~9>g zO!aVhMf?ZR)L6a+9S#Xhv??O~4z0aEK^@J4sV%nJFH=yGC;olEU^}y(--h&sqQ~Ya z?$Uxwzpo_x=bmq_ODL7<3!3}z%i4uTV-=coaXWW?i;2e{?-K}qv0n(W-F3ipwVA1^ zgp;AhKFA$ee9UCIEQs$t&QQD3_bnw&pTMAf2pDKpntX8B(;qV|aX<I&3xZ)2dlXg> zx!e>k<Ic0uSc$wmC^NS0j<SgEXcWbAxYVJ<WU@ujAip^$#OoekMFrhMJ4Ut<f&dq3 z*g8|xEJYUGYj}PE6Qx=qLq>JX_70Krn6S}i$THKX&}OUM(rFHf9jf_zty}YyjZ`Jx zg&*pj1Op3$5rd!Mieu}w5}ay|Oojj2<P|0_@$X??Z)T${Q*~(7#qxq!l=W@uo|gRb zB7x3cS`xi<mlNfGD=v=N|1_hRn+d{fTS~u8)_pBMaVB7jXPfJgNw{BUL9SYZ09xK} zo|qA*Jiucjc8F_>iLw4I1IsNhNrNFy3Oz0S2ILD*Zx9Ziw>%u)O-ToYAF^Nx=S{e4 zV`MhrdHeYr=r-se_mpE#Vdf0IVyWwH*!<y_Brh;!iz_-4)pEDy6l!>a*G*)2Pu(7P z+iWpzi#^#N*+tvU>n3tpm<~pP9m6ms8gIr(KkY1`#7NAoXKFHj_Mv`!)U^UZ`2Uxc zkh}x&eL~r#xG;$P44c1(9PdSJzMU{Ifw0!zFR^F-&3dkCo8shO3FOXl*giXm3yFs( zN&C)0aA9+t3Q71pGn^nvrsYA6Yv8MH#7C!_mTR`U;Lb+=LFU$pM2JrBypK(Oe;SR3 zl7iHgg{HNrM-)p&%n_Kx(GV_93-GPeh4yjcAHNer+v|ZQG{0*a3yko<<L%@9cv)p~ z)*}%O;O9#(JUU?6Wb}cuR#a>`D<2*gA!<NoKIK?T6$3gIcJa7xG-wwOPr8`{iDk5E zAU?^>{=2Y8?yG$TJ=aEd3HstU$8E&l>nc9Nk<_NBB(!Fro_R<!FYMdBDhG%S)3YLC z2x^D1lFVWY%$T?tNIqmOVmx$(vHGlKwA?Xw;ooGNaA{(8Agd!q?ob7zxj-y=)?@4; z^=1L{aPCzH`pIMP!pEG{y?n(@g>eNCh3$%0uK*H-gqRvV%0-ZHK%pywb19C>9-9Y# zwf&vk9GMI?O>k6r`BjE&#5pt=D#`lwy+XH)#z0ze;(5L|zP>&aj*<g(lZL$0v#p+^ zueq{MTjAaJ0C+cXYAqRN*_?>R7X8!6s8_Frq((6^UxrEzEfmz~qxxtHP%1|#5ZnZ^ zn#$)#a3c*KD|zZs6u+ZkNuCz7HzOp(@IdxHkw?EJd~a^UVox7Pr$1g+_?JCHSkZ&l zlMa4t(J%_*ho}?pOa;ufW|7*?rcS6uJBc*q(1H6ST9Wee5<{VH>6P*<&>CHoBJkh5 z&Ly?%h+;COvPne<xDtRqjpYhs{or``N@8s^e|aB)Z#oe$sBqpppUi*76d?nB9G&rp z9(|gusAPT0<Q#PN$7FVSY1!;Oj%>jqOC<x-RMP5mi*;QN5jmHrc?GFr!j(hUJ<W&U ze>qw2Y0lu>@$9GRuw=`ud@ry;ZSRlSigB;^VCG#EvIprSA?M5l_iq)bW=FA55(|SJ zd}zbKzhcsL{MmA73PwK_{TFB|p77_I*nUYi#Z*!8PVu|1z+4ye*;!0@N~~)<51uAh zuoFDOEsx}sfc=a>M}qWwMBBG<r?ei#0<^Wg!l>)~<SBZCGRZ4BYivSKLum!LQ25Yx z+2#b^<R^2*q~xw=IGF}lBo<c+=8>#Y>SsmZx7{RF4xh7|D{-94yo#9gmWWmEt?xxv z6u(Mk=vNUfIF5o!Ze+(bgWc7DJEWpuCSg>exEq~=bXeAzT_t~e`2c*4ni1b7+xEf# z6RBt|Mm8;7iCkPXsc*<>D8u-=A0e%dLHERuy{RFaq(hEkz>Kb=5!m^ltLC}E?!uK% z^2F{+`0o?UoV$!oSrYNow91XZ?-KM<E6Z#fvLKXi1u_>zo>j%%vx1x{Q;DO8A;mk! z^t_})t8g3=Sl1;MwTexlF@rrbqzueo2%+D|qIjc)(|Tn-BFjoSLxt$>7NanhuvgEG zTwUbZh`bekGe6oe*WBY{?zMTgy?MMJV4xR?kO_wzOtAA)Xf3z}n2;Kn7YzlH7!8BF z>0ykMJ^3bOVwPpOj7$~C_$YwxlLpnORtp}S<<{t`l{HwRhrE8<>gXw{PI35i48#GZ zs4<+d4Jo~29aQz6;gU>O0<_CCprYg(0Pl%`SGjrEX2~iczlA7nB4Df3NO-!b5x>tn z6R~Mn7c-Wk4)f_6HniGBk*qQIedoFs;IHmkBKHn80X{mUX=aVXW;6{DjpOjO>Vnh8 zU;$?Y(t7rr{@qQ?7*&aMCN5v?hIvDVX_t}GU`FbAx*04N7kE()pphO%FJiL}qQ)4e z-y!4&3nX@KWN)B{-#X<XXA|_9aUyr25bFhdcP6#=yt6iVD^KdU`ehEapj-`QK+AA6 zBOnqxRgn{Y4nOKp&NbvS5{S7HOFCTCBoVgEZF18+3`gN;MZ3}Z&#m@F6R4ph^t2kB z7-NDNZ-ql&M)<HLWnuyW-t?uS&BWm-M$@{<629$c8h|Q2t4YB$r-s`{Z=mf9qg_fw zPufJ>o$-oSthpV5-xnRMaM=d~M^bC*1lvZUXcE)$R-&}dg55|+8CU>Dn5W!^0|#*& za{A_$(ag>(8iNd?|M;uV55+{>4ns^zZkhv&<QOqlYDe`AMvn#BQ^=_g*=T)<u?P6; zb9J;GL##_l?YKd)g7!0ImpHhkzJDYX%g;#2={#v<a<gk_f>nz{t1j1|9gzBlgSw9A z?q!&jkaFs#vT;9Z_&-lgIORs_t*yn3PO=nwjPj1ojg8;SWK$2f2rvbey02X4z?!;w zD38Zk;kV+iEg3|NMB-DB5-9izl#;xsR(0s2;kki#iuCmx5d!)om18<bG)SG~5A+?y zlX(vVbr``d0P@GO<6Js`lutVuo+?9tj+)4aIW=!TW1|vQaDcf_DT~ZkF0#C{59j7K zgfMq2viwFM@5|6j*MBk@1^6^5tk}lTlRCa_nhAZA{g$jxRK*T2e$*nQ?wzrvy^?O& zyi5hx({m>3M=%v9iC5gCH6-*^kuAo+q?0Z6+WHO@?D;`#1B{gBS3^zXT&~yv%vT42 z#LVY~=muTg(sAj^S57@oZwg#17A57lVAYx`WlL@S6jlkLwF8lWja#PUGfCfb16Sm8 z#6?1z|6ntU?t-swC+^8`^nKI7w~TLuMraH(Ra-&Ipv$sGcr$G@L><ID6jF+=37@ET z?%?^GTsuTdwoPaRz;HxG3bs2RNPZ)6As%me@tjEhQkO$z4$sljOp!kN(83iTGQMzM zU2WEzKC1y-@a|9G!S0N&Vua=X3k1ZagZuhC!m0G@bptUpT~+QLZKx!sh+eEY%R~4F zS$Tt+)SL!K-_qlJVq6>SfLow?wAw;aGAQ&#sl*508vVp{_qZM2KN3{BVJQuly-59; zx1Nw>-^AdjZM-9Orj)A)=-}|RDWiS)kTR0?3nzGX1uOOY;l=FK4wP&zgVl;JSg=?c zt&Mvy-TXwXLK;#tygk&Vw7^ll9#ySPctsi-9W<;&y}b4aYh#SLqSE?LGK7(Mq!!nP z2211~%SdUtkA%OlV_W^~fGSTVr+mg+uU)v@crZhu02jq^LdDTjmK;mRZcFv4IjZ!r z!pVmlHAL!8!Z<vY=rlDmWdL?gPO3jG)km^-(59RUjao}kdgP$k!NP372uF@If!s9+ z+q3i?7P<-jU}fc`kpdkyOOJz|R=25)I*D~IB=lj>f%Lg6-yQ#ImEqcyjQJsg+iXv) znBXJ2GGclSfxR-yML1qRj7>@uK2wZd7=-|Ds%F0jFOp`eJ{wR{E{Xl8r{3}^Nrmh0 z4E3aV{1R*U`otXkKjwF#;gsTC;qJ!(sX6hWS7ZyyZ74j6-iM;Z$sQdgCf%0dZ66Bs z#dG-gU0)27I2s2%A7=iCv2*AS1<KZ7Y}>YN+qUi8*tTukc5-9ewrxA<J9}@?gZ>F; ztux#8RXGwOd}z;5oSYIenXoFM2dm~@t>yr`2nOuLYkAh&gWOneVWSWy<r*;_=$y)n zY~Hk#7PnvYeX-iiU*x9@F3uQVe1<Oclzy^Ia}Hd|r%(y5oB7U|oNea##bpM^<;zsX zmbafcPtiXMjyBcI%SI{NXmROY#AM7UiAA``prsCrbcnezY15)DVMRsti>sF9TNf+W zoqJGegS})q|8?Igr=96(HSeW=!M!+Mo#{Q(HjhlFT}914;1t<594cccA?l(}a)dEC zkJ$6x{Z3ovV`-^e&Y8g5=SM2mHg4~!mlZ(=-aoZ{0LBgEy>jK$!Ncp64IOly{(?mr zab%z&eE7I1i^H3Vm2Q4m?NgCn0N+a}v-+YK?kZW)N7i59KRO;ULILW5bOuhs`*Kwn zi=XYIzGR52Q{K7tz@#Uetb+&SctW^W&1NWIlm}3!Z-EPNPz8VEQbwz0eY)kt!Mqja z5b4FWaLw-31ZcIu&;+;E7>-~n*ne?0aUchhG1c0#8%+Js1a05vp!<n=ega{xfj#xK zW^S-DNzxt7x)ZTxXDS_bfdH9J{tb1$dFgoP%TWNnZfjafvifL%cgqIM>YiA0q@_?0 zy+nUl55iXf#;VK4YIEJL!|@OlaTCH6>H)(0=R;0Hxr<1*qXjWkhTDggealFd(K6T2 zE&RrEy$i&rdzc#j_vJk5o2}SZd!7b0nCq)(`6!a4SkZ)McqtF;Y&vMbqd_~PH|w4e zUsEMtVc@Qs|1nBBc;8#|Sdo3{n=AA-Vv$mdD7ge^kxDD&GM5!}tWn!m#=uyNQjoJ- z>^c|(ZytliJ;dKofafcEx~G&2zGOXXIQbVt38Ls2Msa(AQkhLxXiQ?n19cr$y~laZ zJz$;@N~RW_Lf11HMZP8a%7%FczcCc&z2#oZMZyE5>vUGZAn6HiL5jn<*hf$pv|d?X zQ2FP8w-d;1v%Y9zzjB>nIzbxY(>G8b<xBZZ-LO`j;s_$e&~C;c|7@)ay}>vl)#g1l zSi@z#4o`Aze7KGUYZ&dQZb;UQF(3d_j%u7!o+LyMPBH6(YS-kU@Y<pI6m9lDFs270 zW7AZwF@YeoR%<)<iGS=^eZ7pRsg1ESc)h$S6@5g-6Uh(3=5<nJsz`QY|6%4p!i<a0 z>iKO3hU!DxCroxAPlWh10QT?VQ$)}q?jN<Ms^`{B>lEDU{s*0dNoN8=1=TG8h(VD? zdwS3N<Y;K$xiVc5{2Ms-1%>sd6`vO5bXWB-8+hNk+WA0ato)d@OHq`vl;DWuJ}O3n zg;zN^0~e7K3$Uwd^*RM)dopjOfd10jErX@7Qe-`5sX=jxthere{an$U=r})!(}IWi z^+`K(9cME)5pg&EQ6y>a*b}SVeo6vBv;m3X?alWJRZJs~=G>paS7R4>0ajr`hyy`* zL=>O*+-bu2X*ID<Me;0clfohGp=I<}*F&m3U2&yLfu!@Ss}9!_qDW^r8Bg&@g%lYF z4p-wl&!t1?QWoLrKccr0UbjcKnb?<mE9BY$e3OB~V~EJA$Iw_x2a54z#+q++jhIa% z;LPbON?J|_MvF-S=7U5Vm1Yl?>Ri8FdNg1V{Z@)}LvO5sIAt+Ge~@ZBakD;k3$dwn zH}ERZ;VT*-{#E=y|6K>1j@tHN-xm$su9X)yrv0AWCKojoK7`U*Bhfa8t;oD@*a6>7 zahahd{l?lLeM~rOPhvhdE{Sn@U_H>IWiwrYz9op49f*GYz4Bm<l(<<15pp8LE`r%u zopji~3G(G>cw?p~js=$=JuCS1x;05mRePA+XfbU=BGl&3@dTVQ*&v`+u{_dc#R)A4 z6erPFc?;q4yaBt`gw)4UkX@}{$PPe_(=3d!@egW*MwD+r<kIxj%PeBDdx$eydZ$Ss zGzFDB8RI(OB8<uhl|f*dU>hBigRAB0T)MZ+7)>|GdkOj0))#dVzb=xuKDSL?K?XNV zV~chQst-O%fP2bnDJlPDksoqBo`yqK5#VaN@xKFhZ9|LT4GHz*jamI^j-@8nH@vJU zN@LGRbs`Xis#md0^)TBpE>38-9<GE637iNxAQj;nl4U7?EU63(>~pIU@&`H(tI50d zR6wzeYw5>XT6o*I56X3d8+=FI#<F`k0|T^)8)O&Hs&3D47u~ccK}}yCLk#PqMo%SR z6A2=J^4@TYnOaL}I?m}NB~Wi)bgO4)u`2PWbPcozqzzv3NN1<d?o9AOaRKm^dNy3- zP$qP5Nc!o*_3pc;-EoH!Z-ysI=Pkke_z?m><!_L63fjfOO_yYRTU!4*F(_<|SyO+7 z<OP<egWtk(8uC^+Az(J8wEa%Z&^p^{kk5Q;6NjT|PS1O2dmb}Vi8o!-)5t<DGlXKM zcdBxHGq4<!dwIFVk_k{GlJhsap#<xUO2<yvtvUgaYLYvdhwp@~@oA8R)~)cyP<_bQ zh&Xi0vh9+c&=7#Goiypc-VHkR-SRv=tWwQn^q#$UjnYm0`4^ka)oKV{Y)E<#o+qgP zbW_&sY!7yUK~aBCuI^^&(A?#Z!K%5o7u<6dd#e1LnZySXZEBa$Yi?!<F12|G$!y?d zre7vZF3h)k96>_fHsapEgYs&SH%zq)ZIe$BA3jvnIckQ1G(^y^`mr^LdJae_S}!D? z12xi)vnVr^YV;%(a7Pee`7{O$qI7)qR<@l*r$>tO2Pc*^ePE-Z^^#rvR5q1y3TmE) zEDOwGz{{4n=tmpAu{RQ7TrxQ3v>0IHwix&D?42?{6I|>%Cv8PT1Um5H5jU-ad@}R& zBtH2h&zhGvJuYAjIJbGi;xg_dZZKt3?~}+SL_}=hD8NW}yft~X`-AJw&p`-&{uR}| zg)+?%FhN|3oovT(6pU^6I@C*A<O1pDcuRNd+E%0Mg}7u5DNScdi>)E2pk@5|9#xfV zoIE1b=r6B2RDMaVCvUvD)%mL?YqW59rLymD##tlUf+rl`y;Ps`C$Vam`zc5tQ}y#5 zbh4n%#8C{U+^&`oDci5gm_6w))O(CnTe_kUM<wyDx)-L3Q>jlpd*+uu?pABh96$Vw z(oDjEHdKB98a57ceuXg>xTx)fp|x^|x`_2Zb>EQgABCLzT(^?TU&w^C^FPi8dzdTQ zff5N5@!KC(p`u73?~Y?^4H17T=@G8Qi3JFqsbhvt*>MluyLp*~C%#;)<8<Blx$fk; zU0$1WOL>?K<$<uo8Hhf2J@=MIRck|Ek!X}Bj)GpaOO@235wUXYJw-tC!aok<^VP1d zHhW~=a>r6QKu_?v0M}=;MaIj4x}?=&`>hdf6VE|D0g4Zq!D=QmSb^?<YqRzb>)TOp z?OyT`0nVB1{UVe8+P=`^VQy@6PrE62{uNNr!a9wFQMaR}vk+*xP?(mXu?pmh{^E<f z!Ua&AOfE(8JnMpeqLyEZz-1RcKoY_JCAU2M)}*!4MxLEjN$?l67s=xj5jW0v2))8$ ztP`p8i8eVG#R3Y`$3U1#-%evs_l{8y>tfF=uS>3kDz{6v?I$;>KHy!fM}$|jK%C)( z$*xT&E(`mv^)#_F1zdK|qE-f|l3*ikG&UAo^aQpMgI$IuE(Vl5I!z|6UtmPud~*rG zCz*pgR60?_A|H1zN+i?f0<o@Ym@9L_`eDGw=gGxw?6{gwj)~Ga;Y*%G;{*byM6^@9 z_bs*LEkC>QwkqPqGQkAAs<p{7LQmn}!hb%yn=iJcwa=j75bJv}!~NLHGOHmQYI)cA z{>AYeWghI9Wy=a@Y_7=jijn53^U&NUL)e%WcA4G!sBPr&tMH=chve$;EoYEuOOnYE z$o*|c`?%uqFa#}1C7;H=l@uO`BuD+hDc?{_jZ&7eCs+T=bK})PlFM>XZbLl@ekcTh zvYujW#PhfgCuD+cRHP*jT&g5$*M@EIiy`jOV*pD4TyU5!RuhBru(A0fTEP=UeTac) zt;~w&rAhg1bgzN+_sw3asNC&Xib^tu=`6v}DLnE?BsA;DN_a;FPXM<g{OUbC&g*#= z9BcD_G5I=wgAi<XAMlohBD)<9e=iXvsXk>&jney784W6^r{=552fyZ?9SDC{Q*4oe zR6ym@(H<azG{-tx)GwFyq{&5mjUljxRD+oo%(sWTBn}ACLZ{QLNoqqW7s5v6xC@eV z>+x%pUa?J{v`b~6LA+i3t03NMYz)WjhlXoTD_8U|e&U&*OYCZnlTR-fW)qe)<iy^B zUHZ^;G^}9$m5ig`WilFX3u0Z!KzD>F*PXMH%*&n2SU)0BT)!-gfr}Z>q4`@$D2<Bd zi(&yom47d39h{8bpNAqt{!_IMZB@KA!+WgNh(~O`?{5y~>EBLeZFm0G(DUX2sY{%> zxjxwEX37MZ3cKY(Wc&)E3p|aIMs%2r+MfI+IopA{cC(_FHlYf-qvP^fVBNeL@<=KI zTHg1RPCA3EOdJs{dQ6RSdGb4sdU;|}*f)(<<ha>?`{xUZ9%c_ZmX1)GckHu_$lSiv zDY9T32dMZZn^~SAz~$*5R`U=wG8>L>gWQnK1x#%8Wo(JkEmV2iU2K#EQG-1)RGVvP z1+5bHtw3y44nDK?hxvL`K^X*<K2qX7U{1<CoUIq&nE(`D&sHCRP?dvws08OJ^ZSEf zw#?t_awVPJOxzj1W2M&>PBY_=NY`A>Eg}GXtbnu=Nj7ZREedaC<q+m-th1F8wI~k2 zVW<S&nyk(8Q+m=p*%<DAt8o<n(P)~s1bAs>T{GlYRd75--R)#mNx<Z;1q15@HU2g8 z93QmIs=B<YG^<$`Q0$^9=(!`pkJBt2N5q^brQ2b4rl)CKfP3ExoF_~edQkK>DFrK+ zzwB-t6A~iL4IbiDI2s0eRJ&XCG7{jL34U0cknvi;I&BE4B>}>`dpfn6)tK4O?85Nt ze55Z2{t#wPdiVp8mIL+oeH&ux$^Zq>HdeQq6GXy_9W6^h<Sp?btS=3{1WrRGj9m^J z9`Q;PsDL`tYB*BTkMQeLKdNj$^gg@mFaf(gqGQ_*E#VR`2S5SAh=ha`=k``;Rx~T> zxHi)85n{I#fxeAIx{=Ck<uy=+(;L)(`^|}`_PY9q=Vhi4U2RjCF4%6^1PX7kp7}ko z9$YK(NJAFacvSeX*PvF<VrAD%*=r7>qsMdnTIS#vGJrR^>i3!IZ7J{1PfcwlKMm?@ zslPpA*c-b`+>=x;nCI5T-+yNc$m=QA^LTPu&ucLT+j_DBh*dI(`TABXeYF@^<TqM< z3n7mSq{$Om=P;WZCR3U=?m@Fa<7;hE=HM2h$gDvn@yy>mH8x0z0+Z;Dg4Ce`BR~sE zPbeUu*kTzi&{Ene)p=OT*8|K~N+XT;mvce-RA__8yU!clf%C2i6)6{)7+5M4btk1+ zua5<X&CEZ3G7`<j%!2yRbd<*Lv)1+x4El4wjw_j_+4>^XA8IJg(98>qFZnpp$6xtz zw#W_aSAy3!@dLD<uodfAFtX~-o`&4ZKrHC}Jc=(YJ`lbf2BYvlhlpF}I$xV8JaYa~ z(l0^8Q+;}-uB^u#q+w25{8(l&Qn+17amAf8u%10i$@uiBj{0~sXLGW1jSOI6N%KnP zJl)4A++P%{bbvn2Icw|9x!P(6Gm=Sa+kCgj&H&3*I>~ym%}mlM9YOd{Fl5drz+~8r ztb*#OX3)fL2tInVJ}cys$ivci4SB7$-oNIUSae%xV){6KEKKB{+Xr6z-*Rww5k_A7 zs(|bOPdI#8!XD#Y{lLw|gq8+zayZ*oo^;Ai4;7Y676LmO(Xl8==ewnKq)|JJwF-_B zw_&&%<^HY@a-osNrfhrg2r@|{#^+>Y{1M{s;?vvoU$ove;mfy=-_)Bqh(p{sJilg= z#{~7jxp9F}y5Q4#Uwkz;&p0v-b+SyAh;me+bF$1tCmn8Bg2bPGr<R9{?0=9-_=GT= zQ+m;{tLyIY+{8u?RG|4WEJp0iBQGWm@66zR2XnYC%V*_M{Zy5n1$DQd#--nB$nv_( zk>$rfawztZ7MRg+aEy*A#kUX)dC@b5Bd#<^bBg)JA>Sy#eOsju8p`C%HiU1)1=;Hp zSz$G7^#yPi<cl^5BG$}*vZdD9k{)@^K<-~Q)RDl4h@E;fkqp<8!+I5L&K~aKgqlnD zxq!BuijdeZBEik!R6=S+FmpLv3CsXP&XFA&OII^Sv{V^eL^`Lk%Y)3a88>0WE9#&& z^uAWaK&D<WKAElEbyT@tYrH2WNOb0t@XXYW)N$(dB4xztH`uh<cE6eJ=mP59ZiE>E z#9z5Rcsa@d$I_b8Izs@g!OVLuiLQ{W`&NI;and8(C(sfDd(@1w77dGyrROAOcNKC( z>LOnbr!7Ya)O{*}5eFFSaC-*gtXWdkF&8}|=>qNf5x@;v{86M?{|)Ld**l2Q_^9Ou z2e2r&Go~vP;s?{X=aahN*{-9X^6&ZY8`Hg<b>{~1YA-Z3v^q<Bz!|_%3A6wJSdqEl zMl-%<R1eEtUT^IP8F<7=%9jTN7Yog9xhjsM7(FEBf6$))xXYYYqPPo`z~z3?_Sq-} z*CHr_{UyL!Zi?uDaSXBmLDx!OvNeQ7j=`Joh_1$;#OKPn1E218y7dgohD;AO6JL>l z7%da5nUacy%r9CsChjQH-)4bH(eTea0US~HICTOO<?F8~LUWwIGoOy?p<vrlzgBzr zAX@i+#@4K1`~h0fsgcuw6BznydysEB;;f88USHfS7=`XWnL9`An7!l)YqdLydoB{P zU!K1%<~V(L0Dr3s;(6Krq;y!Oy%>>^*ykDvW%*x0W{&>_Wai{#{eK*@<aXtO9Ccgs z(dKLY{i3zLo%3dUddPKP#Ut25!ZM>F((ShAuIL956JJwSa$65L`UQk@(<ObXrLU`_ zX{BkI?^{W;0+uf+PBIoC$46S?M-tc7!{z3V43E1<gvL1^6PbnPOg&EC#Q8+<v#%Y) zxDAf>n-=9`VVm@3PA~<BLM^i)K3IV}v21#HwnX2EDhIqdy!*3DM=l=%PCxQc$X~bA z@Li-kma@g}__3aOFXbJG&H~C-OzhCn#i7Z;a9ESzG6r593IAaP5H31K04r_9l5Lj$ z<x<FFPH$r)|6^0zw~7@+vpD|5?XRUPv*fpxm~g7c(}1VWGUm<$s-mwIxXLGv`Ii{V zpI~mDWDuXqzT>K^D-SkaKyxQ<hMFvjD%&f*9q3}?#dgln)`q0Gx+ZgXe=uU&l;PU7 zI-j&6E7si)c$uy0Tf1{<#Ld=J-r-w<D}XNw9oN$0@}FY#0$t$rLa4~&xX>GIcbl-` zCv&E$gP#}jmIU`I4fvv&9k{<Zg!Xa3J=Zi4LIkrMF~AVSaBb`6C6NNnGQ?bxlgrt& zQV|`luWO!2tnRirA)ct%23H1tF8$Pg=6e;jJz@B?(wQ<VU5=-q2>=?1xiO)~<h*rO zqTIY4!eXat)3CBHQ8RPIyQ|~o7x{sy<#<qWZSLZWUpsh=hL$h6n%Mcf6!XE{7mao{ z`4JedCDIccIbzagCK`=pj^i=vZ$pLpTJl=t>oeiwN;%m&jMb3eyueS%!;d}`l~MG` z8<hG<l21qn$D<x$1aVu=QXyTlU8!^zcb!c3Gv;{5G?wL1r$TZfjI@-z#*4<EM_)8F z_E3XrL+^Ho3f)~CIO@wg1M_Fh8rQGY<^Tw*<-G2$sy8-E#ucS~CzU6q%!;^Z<Ghw} z$m^oA^$QT&NLNc2#(!sN)eT{T!)~1)U1^QhYwMI_;E(_5A*qw}5Ye0x%x`>)su{~7 zq1%tBr&5>P|3$Q($*_rS_ZB1*e<7-}cTgH*R4DcnPp#&oM5v!$zWW4!K->_#gErIm zOl0FU-N#QCB6O9Z=Ua9xY3OL@9hm;z!cYHHi{>efo7C35M)QvyiR@VDlc-;wn=Z3b z`*H;#Vl;ottc}qctN@j{)|eOo&5H-{M>v<Cj6qpM1^NI)oMu(=?&;0j<gDy(3FX?S z6MMpBs_yQ5q)OgI;nQ6E5kcfs7SSGI-Gh~z@FIX@zvqO|2pW@Czt3%E9CHs{`_f8~ z(%BNBl_9W=%YjR8*c)~)5q6@cFZ5|plwqt_V=b7gF&{b;PJ-DE1=HX>#+gA~Iy_%5 ze${hMxEpSe3qO!%zv_5&)5FPF#-$5}Pcgvoz;#e=Tb>{9BtgFsg_NO;FtvZNZxy3? zba0?SeaZEH7S*M@As^()4bGCXG|f>|;XSYv>bt3)2CH*K&cP(*=}`^xM8)cUy-aWa zh&+1y&etI?+@+6@9LUo$KlgyJAn{qSTAFuX*-Rm5Jp{|#0#uZCsQ>i9(bPo^wyMc= ztq|RJz#pL{+xeajqJyDiL{XN0zOt@eREtf(S+|R`*V)9)u_1TL91I!-0?mBP+4rXg zwH3)v?;<KL$M2Qb-}AXYK~LUf;n^SJV*>@Ezq?<se)lpqSX|@jhGAt0Ov>_EGoqp) zHaTXcXyjJyH%d~CRT$doqETXdF66}rv>L62{1OQHP%QC%fsKowYm?N^r-O)zsl$pA z?Gdsyf>?W%b`<M@+DRI_(Lpv#gB?5!0I+zY5>g^KpTR$<F3@N&>1f5pf|L-mDZZpg zVr=Si`t!JX&+-<aIRLE^B}jfR<h2m^Tu{@aXk2Nv>YN0w$!r(Y#&Vm3ey@l3c!>Cv z`+wXRx}O^GqmC1gQtoImRK5z0DKhB#;pEL6O$=<d7vq3W=qSl*tW`^o3kUAS2_+vH z`g+!wHr{+vo$Uhfe6g&??+hmNBegY^=9FsGd9w8zJ|gTIHkl%h3Bz;gf9(eE@AqpD zd;nwGE>5G^Nt)VOFVO*<oT4Jtnp%CV0BND1>#?3Zhv&SBrE4Z4^EydNL9~|jL?wVV zn?})0{W2T$8ng`B(!|m&l`9tUwl_#fYvlcgY4Jq`mP)jrkwS%OYR0TQjZ_C8y0$jN zr>5BiIzJomcZr0xDl38b(KEabCs{CFSq^DsBhB@Jl+~M48rL{Y)774%Du%vpAALIk zTb6D&R1Qn#Vw6ZuySXh0raZfWg9j!3b3br_2Ly>zr2Qq#6Vd}tYq??nDb&s7M>n<h zhT-Lkb$zS}#z5+M*tb^RmyXd@0!^~Xl<c2yv)Y5yxN|}Q`{BTn-cKC~seN&mc<#tx z@hZ}cw?<iKpJ*2{%P&ugMaKH77G}0w4u)183ynST!hnS5(o42HRAv{3+7Os;MfAn? zmwq$S^$iOtA~&c5PByT~B=CRC{tLqqCERtE@f`KyOc7<6eplDo01%Oh!lMPYmo~uy zopFxzOqs=T?T=M(XQ*FB9zif=ABN^NqLlEsnD!YlLk-6}?KaTg(SjQJM5G7DlyTte z9A;?s$l5j51GqV0F8KDo$UG&pzlNUtk@V=I#9%LCtVMUQ_T-yLQJNCHUPt9}{BVhc zEo8l<OdHJ8ljrsbg01fM$Bmdh%WYlO5<6U{UP?iAb}lIk0}2)R9I%kk&D{Zdz;q^) z#nJ`h5m_BzcI9nt21$JVtw_FJ*ze=ei+y~f$^IOKj!wT*m~=w1KM@KMEi`W5+aGck zu!j#}_(PVL&PZ^E=vD2G^q!%#ibTY(=9l7@5b0%#<Kx`nG2wN3nn`?5@P4FB03o1= z=rJYEYpVOzDe+w)hG|&Z@2Ar{4GB}>J;+^5H3iVt(Jr-vZX}1_k#tqLpJ!VM*U}Ry zdqB!RZ=aowZyV0tfAi<05aNR&em598hT|-meH{p=D<Wj)G&6;#!KgZKcuO5QD6K}u zsycAQ@bA2!_3QQ&yt90~%tPJ-hX>*8sNMWNcosV!(dQ!i<Zj_921Ie`a9m9g$G_Z0 zG}j)8xfFu5_CK{y@Wu)cBzUTv6-?~0TdhV8P`UeY0QcJNQg~4lb`!KYn=l@$Xd2T& zY>J(0OiR$t<qr*(gtN^_T4s*YKq-}>=#FEu_-tAXZlVc9)b6~$TNuyZoQX0-0R2os z6I=e7-%9$^Q(}+FQKBC)!hsoGQ%a>G>VG3ibRk6@gbYa$m143ts&jK9B=M6nNjZGE z99Wz)N<rl@qso4`rXurp0bQlSfMw4&MV9nY5tTg;G3xH=Fj(i(ZQH!8{FUV3?vP&1 zC0|qc1JBHeW(bXGzo^}5h;DKp%<VVl{LTxUU`cYecmGtM!DM$+kge0hNAgEsb#dDX zJ38D4{b7|L8qmB7bXfIjay)+vL3%2<Jd|a2yn$&!#owRtuGo-bKNj$$47+_uOl^i3 zf3f+M7PUG)@q?g;%!d<;#yL<YG3wzwNQOuU;EzU6(_INM+%*|}?kzD9d$2;4$c@zi zja41^eXjd3SO#2of~y;iHaDW@W#wTm+!hY`7;4z4c!-5jpHewDWn8miQ_k>Sa?T(T zNq<t-jfGsp&NLMSb4KOJ;>#+4`X38h1j2JCFl4)^u;Ul)A0NPp@Wc%=AV1T!f;)Rd z(XmL7eWWZ8QF<}Pn+`d#yt``j%_z?sCbn?W!={2n>D+w-Vaw##5+&I`^TSS2`Fz;U zezx9hx62davsomt4wv0Pdfz688_LB7i$NCiOKCiM8rsYr($sLx6`6f^O_wMi(jmZP z&VqJRt8bu@Jjf(K%PN!hi83}=<TT@;r3oaZ8BGRH>-Ql|smOWM-w1ynw#>}~B8q#` z-R)2KJg`i}Fg|>^tic!dx9NDd_ybwm2E^@mLGci!Q(joDsV$bc9|0xbG+3%`g_-|V zAS*@KhHT-deIPDn)1G=+GHFOgrr?OQV4=1cLZHgu>?T`Dx{;N*2=JT&K_D|QBJsn| zzc7v*C69cKaK=egM7>1|cvFoUF<E4R%m+WabqSmCpQ}H47mB?Sj4#Q|Sx!#&*L_Ha zd(R;jf{**ya3ll3v-L+w+uS{3l4C7D&Ug+)$otX)t?09b4d;zLnee`XI~rWx<-V5F z_GBbvMNc?w&lM)(#HD#<#8?UuRRpU}8QTjKMtOQBZKT(b6Zdol!#<~rDP~rHKC)1; z$t0QcQDDO`75sE#sBOpvm_$&tbixT*d1;524$L_0($fyKt|zL{!ALKP2pm-}H&Ayz zVBn_X{ANSi87@$jf1izfv1sSQZ~r>rV8tcF<}96sR$xH`2yD||v#$~j7ak*^+lzX@ zm2|sw8w$70-R;$Se!=O=9k~l-ox6=_&h*%wPNM1)F@B2^p3{-#7l|&#tubpGF1K5v z&<N!+w4_y;E8ocX!9B=S4RftkomA;km0^Sq<W*6ITW4>z*PG~7iR6h-c!zt?wnJ4$ zL4{Duc?v9J#(h&50dwdV6iSx5oqyJ86+&kz5Za&O_gPPqCRT3bh0!u>rz9W!{PX}q zr_`!9hy`8%$Sq>N`AbCNjsqDzw~9vKV91!aFUNKX>tP-ZW#5J8#%qu|*NoiCA&z{` zjjRa~!mToaJAq)Gr<Q<l79ddG?}gQ2H|-UwIZgn<B0c|5plij7h8l%d{iQ*+0~gBE zf`%QvTfhnQYyS?aR0W*)cpd3{5g|7udmuR!sX`@juDlr-g+@(lL44kfG{fK`XGH;t zy-03^oV$Yn0k`{u=56ALz<*#XttN|>7y1;^b+xR3-Zrboo2tBh&Wby(d%qIj8PDir za1+TW0Qir1EVCHbZmy#`OqUU!UN`g$KNa+zY?kTrR%X6qq$(%MX#-HvFa8eI9|6E$ zAjopSM6r$~nLp-|j4oLTe??+RF0b3Lo?`#*dSj8|M8E!hR`+HZsQ)6g43Ydq{&7w7 zn0SB(z3#)Zqek9bQ{)W9zP?Wl|5?Dk+<!Q%3^}UZv6}dLlZ0vN@l_bMvpk^WLy*Fd zXs++`?qGsM@LR411cL?Gg2LuBgN_i7=eg=KFNETvo8y{H@xP9$F_zr=fM?JZ$%SX0 zSiRC~Jd|J)T0fv=9RuI_@_(YfzhB?^(=++Vx!n2{0^a4n8)|_M0f)&vfhDqcSD>;? zi$1>q>E)nJR={OPwa{Gq(?dJJ+F<Hi6W1#~a21oAC+PyNjwb?jMszBK<Q46%2J&wA z;=7=3h}w8b5&Ye(oduY_bKffQ!(}L|y^E@PHU8ae)G=Nmbu}UAu}#WKP7MNU81>SS zqK!lvIE^?&Hk{2o@y`$A2glp}w;;~4-tjkXsiwm<?E1OTV$(xPY$dl(Q{8IPZ>a`i z*Z27=c<*knqXj%<Ar7lEY2a6a;Q?qca=e<PMd=&y{M!7Nz>Q=6bG2(8pf6?z1DKF| zT!=m-Bz7p}{By9@_GD0Cp1%Kra)lwduHOZ_JB4k1BnG5G0h*<Q6$+D%ag&|2E_p7j zC>ePGCVe5<Tz9-QHJPZJrPHLaR10!t&L-OZDKFOKZD;}LdC&>|H$Ql<FKw#Lt}cD9 zSs<<YDZ}@VXV6#IO8_D5tZne7tF<@_Ji3v}!>+lIY|?(LZ2#uEhxuqYAdoehlLR>D zRp)o$7GnK+G1Gh=hmAc;j?>Y;EHrCPhlp((S{=K<MT8E%mKj8{=8A#CG=ow1lJn#! z-Ooj2zkK@YA9km@%}@jsu)Nx|1(gr=>xfOqO9us6Qw;CvK){NQ`#V6+&V&XC_L-|q zL}N@uL-3b(1PoPqhiMii{M>9iixos<aCV<LAxTpkvhvd3tM!cI^TJthfxwff*J#Sg zg8AHE($*4wX=GvO2I7ix2%51_WqrKT@v-U9I;8#f(5!%67`O%G<NHr4VYCsWNJN8$ zMLtMrobZ{w+<33KBapb1kw@J;;Y&Vj?!h_r2~VuXSrZKisA)ZG+L}sS;|}%PfeofS zS<SWB9*N$^>Si2!R7?c+V{Du%r<qK>pIdCG6~k`Gm-A2l5}-*TMVE=h8@-%yK$IJC zbrPx%k&3qjCp9~D9Z|=~y9{)GhFOJ!O7SU{rUWu;5=Tvn9P`HTrdJj%l32Sscct7K z_M*dJ&_vg>j1+~8kEJ$)Oghbt?JJ`?5*hc1raxLBwk&sMh*{~rCyvdF=cZOje5!9@ z79qQ0EJsCLH%e#?G=EAyEGq*nNv`z%j*igSBrfuNx>0K~Yy(;t0&1gkwoZvB4ae|^ zk=u`<aXM9O-7{+gLhw%Yl1)vNQff+7UhJK(MYbAQ4fH%iAsA8Z;x|2RT;mw=AXUR> z-&+o)-q!vS0~droX$DJPFNF_icug%7qo~-a;u>vy2lKKH^nRbNdw!u7f@Vm^37m^- zlAvHVvPyFWS;jXa=R%%klSqAkVQEwP3+P_a%>B_iZHbfk`_U~Zg6J3NO2ncLg|C=c zMdUHtzQ!r&yBwb(0J70IdJI0r5r#k0CX35GH~}*X`J*RX&_~*Y&vt3^vI^m}k-?vl zwUsnTzL$K!;-El_vy1*knKHNVx6j?gpPN>@^?GVJ9$^k$MD}t^ee>xe2{O-3q>}H2 zZxfB1gq$&Eyb=W8vsq?|B$5Rk4Va8N0mn_i<N}TZnWF!L%atU5J1U&0pV-TRio<;4 z^us$Ci*6$f4cNB+bIJY;yeG`kk<D3NDl9w3u&HvB2WuGuEPeOpT%$&+T*ywq;?A_n zlnoE+TfZcKxpB{RTxlc#DBm6$#y!s5?gQMJBK~+W52I&q1c(Vq7O0C0j|v43mhXVm zKI;Or>adt=4=Do+FCFa+8c0f>x#wuvfH#gLYqvALGV?4s5l|%W84zw`q$YjYyz-F; ziLX4+;z6Hxg?bElt-y=jtmmzuxv%|+TBw)-Z~00T3!OTs%*Bfkg6Fz6tV6>771rb# zZi>eAnqOP?m;U~4-~sA%Bba)9uIn`?k=TA*Mw<>GHercD3)R+|Rsr!Z6b7m{)97Og zeG4~_^!cE0UD@+LVQ_s|Io`U?q++i)5F$r*T_vNcK4k&_q5ds&@Att79?puv0Vhq7 z#Hi552Rg+!&F3-SGgK=mDm5z{aED6mH*6Fu>sSK6Is5*TcWrt-tZTD)#(=X2s=|jh zb&oF1K9O|Z0NPpi1^b^QbD)iW%9@Gw%dhmZDpNu@_!0An0RO_65VovF9f%n7JEO@p z{GTag;tz)kH~QU%b}G6n15V{^^Mr__7<q$U5xo`NU)WvkZ1i9hnDoBvbD!;+SVW3u z1?e3>ZI-hr6trce7?8g$a_>zMv}h_hx;{xvnm?{4e;kI$V0YSp>&9LNGqH5!f7*Wm zGDL7f0G@Aj)7I;z+NL|l*|5UB6;`htc@X1L-<gd^sUln-K@zA+y(N8qntUiL52{x? zWUrwZF!IcDOFG?<5d^q1Lp>s8JjKSKX^5pzR(rw>dq+c|j|bkyOARi^rrQhqWD4Hq zRv8(O1Q$Y491|ne6qgkJ>XxrJ`3Pb@Z-Xs+M<A&*!yQ)LolZ&VWkY3pwh?Wr?fj{b z-65~;@1E`<z+5{Wk{Lbp)bPUcMz0h2`v=k=mbqtc{7@7?6o!jv62;?8#y&w%2224f z$_g|qZ`|1twf?OvBg#StSg#~D$hV%p4&=u-BkTFGUFki4C|Q{p_;p6t@vl}MwCeEA z&X`~C!&+2!*3{>QJ+Rn?N7KogNeqVDQw^Pm*MVw7s-+{t4+fR&wsJ*(d~Es-T(leJ z?sEQq`$-hKTrm#NOjRs2_oKEa5zBN~=e%(%uXZe7Qjpv=K_9I6Ax$z=xiDLP_C}T^ z8|!K<!x$e-zy%LDh%lRovz%D8V15^EOLrOmdx}OWn!W?djyl=oET4q9D8}~kT5;E* zIp?r@^<U!mKyL0t&J5>Ou7>cV=p!b3abT92TZz~$RqM#+SLq|5pA+;i7mew|j_E}C zM{>VyYnp^%<gC7Bu+vLC)KZzuWe|-}Rt`o)cjueLJ`*g%CkDj|r$a6PVZ_GY@@eW6 zm+vU4NX{WqDE~AstnzKWf$rR^%782M%Pvq2eta7AoBQ8|%T*(SI9E`FI-2aD`}DL( z$pNYjTN^5yKH71{M(3It*_u2e#txqZh8_IIW~g`qu9l3)W<R$}3`NJ93-Wm><|e_? zWSYHd*{xMIzlOLQM}9*5&~D#vYjj9<AvfOmUKry!<}nA4jCG>UPp>+cyE<AeGUE4% zwyOE8tJ#qh0anl?0!b$eP1%P)=NHxHF2@64<r6welswZkM9r>{kuuqMLon7I#Gs2H z!(P~oPX5C~krur5Ln;JE!W}RBTLWOs3YRZ|I848y8`!)u&d^gl(e@~NndP)Xp{lAq z0jGRNGH!A=E|)M;;vPhL79J;9ph#bQ?6#hX^k^~U;B<o4JuYN)KnDENbfZLT3^W^Y zhq0pw{jh-PBR+CLZFzN0e6(860P~7K>M~Sww%DKV*i@tRFG|Y~Ga(VjbnK@A9V*=z zhl77u@Sok^Y)K>jN*&OSE9{Uq1=G;y;pkKwqKrsL<aMK_J^w|a;E_i=LO))ZfST*% zQrU!s1n_-K*ShuIG<I3eg$;tFLBNG^_-g1kUh~0K5kE9J>bX1^?e<++KuD#R1&aw? z75WoU&1HwZpk<4sECymX%j9v?g4r4}2(fGXBOUFuX)nAQ!)+t;!Xd*Enjlva*?yhx z_5=17Wq|S`g+JFR^0jhjWs<j|)aV&%Hzy`2?}=2Zsq#+E^?Pc~IWcWDw_pBF2S9pM ztVu1l-5^|cictg-_=KP_8ha$pHYR27z2kzs`v@>_(Pp)-LmcQ&HlSj0*@IGdVgxvY z&FOPQcF?AdD$q|BV=+1Ty;t4c>zd{tBQ7xX?&3@m=IsB(8@Ge>tO&Y{!V8QOxpbn6 zs6$aUo%w`yv=CumN=J`wswl&grSnRdHf1`^70>e^xwAiIrOOpNYhfVIJrfmfJF6$& z)#-Hb>a>rij^kdx6zO4YMk^mt`ty?SH)R`)7zMv3iqTf!&m~}i!Pnx(G@ZQ>%z8%x z`wPadkHXW!a1$UWVVt)}<vCbHc+x9|PR<U@$kVar3)~c<YdH_4<G5O>*P6W1SjGi- zUUdK(M|gYW1hJpa!vOyl2mQv(P$OH83O}6{wk-EBt!!$MX{wH*VgNupzEqSr&Ok5g zH~naG!p=J9C37I@%#Gh>1#;90dTV>lsb=z9(Ie0I#WeEa6Rs$P8?y(|)EeLWZ8fAv zstXr&c4k6OQ@HQylIVzW_9{sL$?f?qUP{f>m~I|B!CS+^doH&@nGTW;3buQ;XYz~T zbf=W8dfK(4iJz(n%u-?E0)#OO(ti?IeIYS<Ypl3aIO7V3Db{?9wimR8IOuE^;v?mX z6cibB3e>oAtEj*Z!&@Q3AaSQU7NhsUG<8RlMRK8^-G>3QpMX>0v}%I7@!;>Km9v!^ z?J2T0&8pTdCQ<QLQNFJDpe)2CLACxe>NW84x#U^YsqOs09lkOlTs5|uc)^(X?MR9f zEr~T82Y72RyZ}hOlevF;vnFT-dOddj)_@>8He|EJaExZTByv6wA`$V~YIY3xl><dD z)3~bj?at6ZKH>>y;+FOv>~0n3U)tI%@M4yFUT{En!u0wbl|oC-p?za*xO%EPjIa4_ z^r=2dYYw(UyN5J{w2?JuA2a|4q0SEahJYTw_Z}h6rH9~i#+PD=Led5ObCN0kT6->_ zov1K7Jl&OI!eP4_1(}~Y)(I-aYb(JCd@1Qpj+2^sNdzUy+l-(~SiN40j>3D-^Y!gQ zwMUUYs$GRFKBHo6+4uS`7fuBr^mcQxARZ@UJ=m}TFPZ(708g|cv1`O{NFV7yD!z3I z^?43H|J*&_=nx;Xqhv9c4wzIVHHr(g$y2ry{z<-D6`W+W+t3Vwlr}20X%BL~O0h@v zwKsO1K|TQ;0c;@Ej!Hi_T6EbK@387$xbhA*)uU?G12Cm4Jaj!=I=DhVv$=l~_!|ia zhD0H29a24wk7SQ%Y3Z7X!cpVv1lD^3VubE|fbbyyEl>YdSMFqa4hkcn%R~rWhFEp- zJmTf(yVJ!50}X_+)HDP1<o9{Jqa6Ol3dy7r($tRMtJ7AEdQJYzKKKYNRI2o6Sg~^^ z9vc+<_t;O5R+RR`E&i0B&jxUYu-<8t)`_<59?@16XLA&HEC;TPahQ`BWBn<S0C3Oo z%O?x}@d)N`e>a3t6gr5MdV=sKGGT?Anx8hEc$Zij7aQPK=-zrAE{f1RO7_zMU27Ns zWMtnIydn<NuoDn$xDyZQKPD<==RW*uuUqxjWjwj+sOT|FBL>=JUvn2iOnm$91Q~`@ zQlThLJaUVi?vmXe<s_KG!w`a5%_$}My5I<jQ?;xFFsN3&P8Jz%Nq7eFas^d+#EN=2 zUs{tc&`=nCNVtdNg-2<^$Mm$KB-&s=+B$zT3EYjtSEIh&zXIE@Um8?B!=<f_5@cu@ zzMb5)0oCyE=8_#A`D=_-%qpUj(=jExK4F6|1}JK$6vlm>oMPCh!^*iB9l0ZyvWvh- zBGkR?abWZVd@+;UA*Mqr!W9ezhTJOvp^WX2tMXlZx0385hWM1T#w9w=e99PBUE6?C zyi7CX>YzNMemNJ(odApj30n75&!hQuKl|p-t>MTzZ&*&Dg%AG)cfDJbmy>Fw1w|92 z=T7!-4|6|m#6$tzj#^!Ck+(xx+Zxeus%BIfGd!bUn$HeC{svivZk{5x6-ESA{>(%x z`uOwLZM^u$E-EWJ(>KD`1FG+><wcT@yDtRBQD4L!ou;qh^awHB@mDR;OX(;$F0~4; zyZm4cl$6^OTwgN587d##NaJ0Z$Yjg~Bws`Ew`Mr^c4CpZNM3J+Y;c<uF~$+^+l1{l zC|2M3p=o5DzxO74*l%RnAYfC~57~^WAKRI2*rmu!Sf|b9)oFaLpNDSQn4Lb^Z_eYh z#k8K)YV^;_>Eq4}l9i;=r8=wm2|j;EiXe@@aG;1AqaE)6H)A;c;a&iCsjL&h?ar*f z>}ynAon#oi=+yF~j$n4s>xRb@ZjU0m6XY=4;b(5PL(G-@ldz{LFTt~i&}mPLAJYVX zmwon6nq>`zxX8(d9f%TT)p*W~+1vAPn(Q#;Q~f-<8|BIbc@mpoVB#g}u>L-Px;UR+ zlQ1?wk!+d{m*>2ut=~6wh+lr>W)H9C#a#zPU}f{q(gLvt4f4w~1QBLJq=6|fsHAh) zgv)(Zak#tP%dI3sFBvR(jJr0Zs=7+atCzV;Q6m@GVq+R_rd21YkMdz>!oyX*?c@7n znjqe8zh=R1j$r(?s)je-T4HjB;JBKLO_AO^b(>&=k)Db*J<8+}`>8Pv*};k{qcUxN z8{wOKIwfHry=~zRVH3pY2vmOjI<$GYwe5m5-R(b%<A#@~rA&|mdeKuGhYF+o9QWb2 zinYWG59g30M;j=U#9c4ztKTp%mn^g1mJLR)ItGA*&@s4wM7!{xhtYQpeCy=KN{Xps z<HxlW+9OnDKIRgLL-oi)gY2~Ohuhi6qTRHC2r@d*jg0~wNgv|SZ!y{51LXoE`o@hB zG)k>S*9r;{@(YAECzyP)qQ5VMJQB@$^0see609w*i3_KNo(i!baJ_`qp@+?IfcJ|r zm1JpN3zfouL!}J%<PNxaPzU}{i0}C)f9n0|Do!G~meLj&-<{fp-n!avkvQWI8HAcg zcFee(S^lCht@;rrbleqE;u{OajF?&WC(|hiG#!$x#fnYrP7@XcKaUAfVJ+iiWczN^ zDA2<1ps6U#UbM%k?;W0?2dO!>$xiY@29eAkQ0`z)$=ysPHiDyV>t`Gg`9#cz&CTiD zR4=@}Shy_s_H#L^;+xmp-7Ai&+24n^56fH-y#&t2eigq4g<iQF$p*OcOjTxjUvj5K zV8#39$<Nk(_J<;saNHA;)1Dce&JoE@vp7-`$W<9cZ&djjdOY*;m+sLCo+$($LjKj? z>-_tL=Vf1;^W+TB6XJ3tg^oApZ`FY-cZ{<jHr>}z?&t5WS)oR=M~L=R^2Z<{b0i^F zPHY%l=Sk#5Ooo-Vw!z40E#K(yZX6gsfEQZjReMKX)CNj7<0(ZtPP+~St+&`>lwi0Z z7Ffana@@+Nor(1jVH_!P2J~`z?BK@5giM!{x9~Rd2<0Vgk;hG!Z;x_+<cTA#hYFY+ zV`cPgLao)QvACoYmIHpcVq+#rp2SNa7-I#o3-snCIp5w$NRK~B40!AnTcOs0y>#)a z`6fX8N){ssR|&2DdEIvqa!mKW47%PT4ds`w9r;o}VHv0a=54`Je7PU2?S8Zj?2P+w zw#TzT_Pewm+qE5YteT+#sgB|UpKe>U8VMb7?hBP*gd68Hc$GFoSmx)8<13+{<wsky z(2UJm%*s-HxJTjWDe^2SIGB;z^qa%PRzN2i-K%zodi45hhFg{=&-yR09>7x*Ty)K3 zCfbnhmt~Q2nNoSB?lWU5G}w||Wg&04H3#xvh3P)}{VVD){>fxv3dw-t5>}{GFQX29 z+s*j8v~%L`kEMI3wo7TbJW-*ialV*9VH+yX7`8!6J&P@S4)KY=?_7Q-@1URrNkWPF z!!Jr26M~7glUS#7z7o^qtAF9mjqv_>Mw^u_jw0!L54dieqrFQ5?fBoLsc?p0C@>s; zmOpQcJ`JNqemJ=jP7N$O5`8;Si+$sO-*CyVCa0*_?aI9bQ7OgzNixs{Z`|Y!QdvWt zCYm{2bho@+0EyAaKKp%Je{4{5`>hfH1#Fzk0dmL=fckmKVx!5aG0P*{$i|=cBQENS z(;S6_nl@;e4P0*%U{7WmojBjDIErXWyX_G%@$CzrU>jltrN;gs8JRX;JE{<g*pzT4 zFjJqjr6|G?WUO&fBO~8{^~ci)YE_0*6`x+j#B{@M2^G5Cvqs$DSvcSSiOjI!LS97K zK{m=tmbO%E--SrRT9|a)RZJj84B@ZZ!p~_;o@elRSbj&4niQjz5;6m6XYgB2hN$;; z28Yub`y!p?&MHbMS2VpK>xvIQ;pRO9Q43A4&wNc^_X9HRRZLd)&z%$?YlAwkCJ(Qd zeo0c9$gqWR&y;S<eXklGy83UN91G+B!pU(ka4`Iz@6+}oNATroEspjxi-4TFo^Bhn zCAx@|*rPd=_*vQ$nL<e%h)gBw+>%Q*!mX~We>Nq{0v{7*P=2Z#S%DaCe(RFK^-lD} zAUdQ`o(}klu77)RsHFsAdsPDM0r+Cf?s3vDc0oo%R7P$Yg!t=d{*n}jE|Op<>$YAW z7B^bf+#^VVk;arD^y4jhn(JbAct_$x!#BqfI3%{T9xNhahCXp(qqWi0au#*BKZoT3 zD%4BP``k#r5*?isUy6@ni`Sb8O|^0073jQ()miro&eTI*Jt|dd4^_!Zlgsc!Vcc{+ zs`x4x5_P&A`gAb~0dwSe;5zp~*f?S>G2IapwtGG6k{?iH3G@NN;xx1F+$BAME0=|g zFLNSZo5blV&>Xb?QWf82(-k4Dg&bV#d~CLq1_+3F^)wyn86QiXH($o#gt~R&j2t+> zg2)v8Vk8oqvk(WIF8#voCMs9D!%Py=-PWeblB2-q`A5gX$9n3J6m%_Wly=e5*MST7 zV5XGfDZoX}RONcGqlb#g=}{$Bwa--{3(1}|i8y%03>hH|q4J9xm0?5~F7TwH`lGPF zT;A_=v=>rf>#C+dg{if9FW*(IB2M?I$BZ*(ez~LSHPqxnnj0Da94Itoz5+-uDUz_{ zh*u0S&vwtS+qfapyXUMVcNa`B^!Hb3`U7<0Fo30X%|e6%pw4i6Up>|uu*nrS0LUH# zkKFaCp_Zpq&ZAD_^x4w*b%`w9YIa8HhgDyOVC&_C&jH~WFna|TI+8kso=w%NUwgL0 zpPjyl9i|Cv?>Hh8=k@0ExZ4<sGc=z0pwjRm$bIn43dJe>R|?zFDZMOd!Z(=QH)tv1 zJugUROUWq%^bBsCrV%#yheu~+_I5jC$`@ph#)5F(>)N{$>@$l#=o7MCRc|tZrJ|tj zYPmmUpP-_FL>pPB^x?6-r`sOkUw`|O(l1Xd*mk6#Q^TV|hdw0WINMtqHPU7IXX^1n zgGF0h)^IE^w0U{JyfL7hIG~i;m7zb`&g`UIytcCQ*w4EsGS0y!dP`qs?vJ$oFtU*B zV_9M&Z3fZR3DE;|JBD`J;j-dwv$aPJ2~ImnurI)Ec)7NoCVRKJ8joC<gpiCs64e<w z?Y>%=0p4~^%@Y$tSnEn@Z{DD3dP^-G_w<fgFGbL`Y|GrA_(yDzJj9fdEL^W-`(vc@ zD`Tg}kCxee4xmc<$HafB$F{C3u}9;qR=2*5V58p?G``MU6uEflVu_q|j^&3{3h`*} z{e~WJ(p>G&>=55Q+mb3H+SkJP?S8;Nv|Mm$N2v`<C-H?9_yj8hVf4LwZ<Qlu2DQ@H z`Kx1Wag<>r15Bc+r2Oxvso<~=9el)7pBjSvSGUd4h)XsZ<v>~pDuqT+$gX|Ak4&bp zO!Z7V`m8)_Sxll@%Q2NojJrFCiYMd3Bh5R0!+2-Hy)RExYD-PT_6frz#dD0_aS-FP z;#S+@`s<snc5EwK1+r>-CESW+$CPs5o#vFG)_EmG2$!3gxd#ybg=BUZ9P^xU>-BTE z^-~oQ^NW`4eEIa=c)gS_-jxW~dI2}u=G@#JABP^%$-H!2IZ+JMknuY?Rp@Qkh>YKm z=^jaB{g>bca3=eb!zTgV_nJ0d5=A_N^`e-~*ZcRY{Fv9wsK*N^mOa%Z(d*vJ)i}JJ z<(f4Sly*nE=Tx@Iki-JBOiRQ3nXkl~*gRN&rgWJlyhp;|ivr_!vr%LYuArOL;L~IO z!`L}AX~Kosw$iq3Ta~tL+qP}n#+$Zn+eW2rTm8-M9rU1o#EE#~?7i2LIYGdPYPm{V zxOt4R1zGqt9_rkk7${h--<^35vMCSZ7D_|7Ps(gA#grQv#-I|w!bPa<3-sB_<V^n4 zb@x)L`CpxCXKLci_s9XzOo?#q?vRPF-R|114dl`Bh9m5g(kR+W!^vm`Q4R<bnOe=X zJCV<_1r1ISuK0(=C_R;WXkTaaMvXeoMz#Jr5c@rzY8H91TrE~9L`faz6S9#SyNkdZ zUvAvO!RZu0{7BZHgz0mc&G@D3+^b6pY=X@RMN;XN6gO=YIht(3e8RWE0A%Xzh4gf< z2E#|zH=US@VK6B;_O8sL=!kWDX6otci8Vb&TejePG6`|qvy{1J?Y7%m<>MdSiS@)- z@O;S3jchJ#GRCY22QI2UcD;+LC~AgXG)2N7l$=M0X#pTzq`OpWd5@c7_X*-$1LZY$ zLDVk-w`t6eUk@Tk_3CCcv_|k!Wh0{7NXsH2((fYSp+h^5XfQ6*JVQu2NUyVmb}Kk} zi)8;`FQC0EF5s{zQWrZ*Ilqg`P(>8&(kqd~k&MA@kRPP>2@b~?qpoAYTPvxR7K1=N zwEat-ULBPxmdK$JT`SWXPUS$re@N1~WD6>*o9&v`?*RFguoe~nA8V!_472K5&dq48 z{q*tlF{un!gG%i$2puFZ<q0WqX%n284%eiXj2U4toi>=$j#oB>lC)seT0%uC3ndFY zV+fKc0hD?IJxSDkKXONv+C}U?ko;>r@NlVbS&#mvK49y7rSUNH53FaCs7H9hl(Wys z9gy6HO}!D*QcN=?vI3EvFmtsRb=3QfHRAZdT%HAvREMBfmVtDd#lE=_Bp-w&9hV~^ zux^&v4US2iWg3+?d_?Y)^KZ3W?`_!Yc2uYwCsT>W)hWEp3w4T&{M$6%sSjyE?yos@ zs)XLrk!_nA@;EpA*k`6sKkHfHO`QK6uEUqNrcvHu;%{C^bul0gz7LWkj!}3d@oFa% zN3sB#{l9s)hP8PaA`<2>A2s+E`r7d@4nQ28sv$MXI3D4RHo<B>x=gqsu_3bfhmT#^ zUr7kTJf>afDo<yl+4T&VLG>66hmh2uIT_Mov2$(NCu0L^(G(M=$Qp6~EqMhs%wLt~ z*2j{bf~OHkMstQaKol_$vIG`TfVpJV%5`Z6NT-6h^#hi*IJVLbKW8V1mZ}}IDq+eR zci6g2i*LP?^g#Yn<NXO_l1+CBN-y&mMXF%kkAli@!Clg6uDw6fzs^e`5e}UX?`%{7 z5^$b9#@rZd{stz+MiD`4#v50VPOO@^?w$%3i2ZvtX4mfQvtB)*PpS2K^wuHb$ow5Y zLhh=@1{u@P4QZkSYAi84x;R{RCvTyynF*=HaLNslY=h;$Ka4>}`!JDVbDPeh6v;L` zn?1K^Pdra#!pARVc<9l!0uFwDMLKnd8`a6TIWN&WFk^mb)vNhK-l%w0NJD%M{KZng z&am3I`cxSQ;@s@Q)}Wb-`iX4!uTh==SxO+<p3Rv6xNuBld;Bju>%B4m#aO^8q>&~c z-zXF~<xsfg90-v_Z7!&%2_P;`e`Y?i=#E=JX_=}y!wDuT$;yP^k^OAw7NiLOE)riD zh%Eijw{}i{2z?=fk_x8;FI@>992g!PdaR3J!pROL%y8w#=(8+-u<%9EsgG{iL~nhI zE*2eQt+N6HnnoVfTp`b29*jq4YxeA+^gQ>~rz6$ZDL@dQWiP9;JZK6VtLMJ!a5w=| zFC|Br)=ERR@^d~oyq6I6Y~qc47TpoGU-634lFMpsV7Quq%6%>Uj?!3kpb?aOzbe{+ z&BZI^PHlQJ^&G5_&{mDTrPu22eoV1RtxJrA(mKro<R7o+c|cuP-k%vltEEXqrXw=9 z3DOT0RX3KK(fIJ2K~=|3o<!gC^2lr9Mu3r@W=g(W8JZO|RrE!BU*cy<blVX!g`2-^ zZf^MOoWByp#I*=Fkdr}3RifLA5zSlg?)x_?uzi2NSFX`BcI+qjCqw9sU&1O}Xv^aC zSR-G>!bAc2-|p@7h^-7?l(NLmAJFYyNnTvOV#_Nq*WcYA&Eoipy-da$I)K@n-mNpq zGxuX}bc>P4#xT$2yt`t@U^IDz@FMfS8GiiZ$tb;(VC4Tkpb}XKuaXq@5bb%2*@v*e z%SSRYzxJwQFu!HnOz=;#|47kKR*eEp^rACa%9olE3^ESGLQ+RPqyP>n`t@5|TF*x4 zCQc@l=tRC7P@THeq9w2WRTlEE@Y6oKT!Sc|wS|_+-jI9#SuB%sowbx&hIk!mGbS=r z@2|pkxyjw#Zw>0Da*gdEtXsMYW`#Aq{(ZESV_7~nt|S(H{oCVBsPA{nSDQP(OueWg zvO#Z~l=sjjA4EeKHE?V8YjtO`SBxB8%l^AcV}<iV@6Hhsb-DWk>KuCi&kP))(Pz%r z8W-<Xq|_t&K`Xs*s_F|ZF$nEAs(XevUII#q9%@!)JUnMxLwS;~^@WsR!r?`G5T+@r zl2GHkA;VeDI}h921dwpDq7>tJ;7{D?9S$7xDp#BYFQFq@9wS2zp!Y{(aT8ed=6@{z zrtiTm5PR6_0mCG`Jy@AI1eH6Po!kQF^m)1Nn>={5Z<xNFT31xlz`G~4`qJ3U30c70 ziq0?}LTJ;I{AFD*iz3n{IM%qB%;z5h%fJ>Nm!ygsnakgv!o7!Id<4W<++vG1mA!|2 z1vI;#Qr=GrFldLfMC5B>w^C3(zYePx_eV)#q8nt8ADh!m7Y$3LbZ*RMn}~x83@Io6 z7Cn`o)ri~$=t1EPnoy#)tnR}=xI1$Q*8Y)iF3eqyKB7hxSh7nzxGz3^ua}I62@OO@ zIKIe+zv`9s3`bQQD1|UZniTes%~MUvJzg{QPz+8?aPCN!!n$uKlYQFt`W01L`wBqm zT#~w}lS|aNC%{~X0$2Yfa2@^_mh|KdqVn{{;qn$6)|N$ojh;)&UcJ;jcq=jzxgC_Y z|8^p2(!_FS5D*ce`GP;7G$ke;5mMrbOKkIi57?|FZe{(eJWOXt$FJ1vVlzMv=cXBN z)j*yzh{{jhmul27n5gO-JcuS~gq_Azcwn_?bLEo$YvNu-7)pvG!(mA<@}FX>a3)s{ zm;z3v!r+a_8@!Ix>#l=R&H=i4)XEF}vimzKt*X@3^6-c(D%|R|Dps{=`>5oCM7Bou zs&I&>vTs$!tpvhU<U}ouA9OinZRcpH^ssY_2o+=?mq!HU;2ex_$GlNWK_EZ4Ce&4g z79m)<ft`b&9{ws*ALLes_lEFkPG?#+jw#{*3(W#VQrKyLy+1TSLB}E+ZZ4xj+>8v$ z`etkr7+kd7-?1&JijJdGg4Aye)C=06(nuG|3L0_w5vTJxYp74=pBsvLRa1V8y{3)9 zf6wA!$6$Dy?b$VRcM6T4&1y9;(6@~eZ%@rh-$?V(^0dBh3@-{^t-uTKP3mVsQ#TK> zcg9S~Ds2{wjK$!=8#lh6l#2MlF;lgcE}!wx?tp+@iaDd%W&?)8*;<{p(>t&*d!30} z;yPA4m2PjDcwad2z`HI{e(M<<w9$Bxd-CJEw$kDDyzEalpvtMOD272MPOw)i+N0Gu zzhHc0g<*OXQysJ=mYc)`4v`jNtL)nk>^COM=9?c7g~P}{nlh)MNB07)w;LoO)-DHc zr&Z`%HRL*h6zGe=O=r$yB0NbaShdT+|CD!@lVqnjoZLm#bB4i^X^k?LD;)mGA|jwf z|FJli@6iAm4Xf6^HuOa+mUhskb*he~)VLb9ulNM2<!dhc`a|S+&E4!-pW&QM%#{bN z`zUsU^R<-yvF4qwZ4|KNF0iCrD`FC9<$#LPi|~H>J0fJX$Q9g(Jj$+~L^e*DAa<WJ z+i@KaDNMParSTodD*mgIC8fTBH1b2Dz-o`O)U95{C)^rfLDRn?Q@x3_hSei9!UMO6 zmdb%Sa}n#bs5a75u;2^W$=#j5`4RljY5R0u%p^_QSTM&2|LJ_IFh@$jbDyg{2$a!; z6Eq4>F`oCL=dxBeA@7w>_NTXA%?BWH5PtcS6Y8BC9JWyqK2aL|86Ua!WX$rcLIM}o zGuH86pwHmp&*@Sp6(~^i#YfR?_t<~eIC&NYO#J~swpE5;!n@*(ESUDq$P;^3=u+mR z<0N0d4pMwe7q8&1byF)!zR_@>d>9?FyB|5ex()zi<st>gqe6O@=lLjEK4Afq#2vCh z7>jkG?FEnTPkKuJz<YB^+)u2g_}$5idVNu5QsnPO?Wzg`Y*M=KA(rGnXIgME;fHWs zXMuf!N8l@j#Ze*iL3WyLN_QiR5dAT(42zyg=CH4(p4!-CL&8x~Jjhsug%Q^nz3xJ| zW__>~)k!uF*oVL`2ph17;AIY(RP-jRyFnJY@#Q(t@A1piz!P(paH79)o}|MiOAJE^ zMl4@-5~w*ead80Cc?eq$Gowz;n$KKKRk9WzEm~DMt#I72qY-f^iX#pjUp@Jf4WGIl znnP-ZHhT#rr@rXD*vgnfj!of%-7H))fqyQuDRniAQVy*`f6YxM%`6Z#MGeZpIZ%JV zQksc@{QCI$pgX*VP!W!Vn2R`7;y@+L&RiWcT%uy)r=ol<w8_q^`?4I)X6d+BP2;vr zb*!G{hOY{7RUbX?j6TthItUyW-&N+(0oU*ckb;u+e&gsW$wM@788Zr&A}`$7TKadN zO7te4oa@BYU$eHgD!?(1tXL+G=25mWFzLBvmsEzJRtCagYn*@D+%<kQ-Nyddm!szU zHyCk|l7?YZRS<F@q9qeZw(}h`#}hp+e@<hhyPMR(;w6sMoITb;Ayh9#ms|wm{;f?E z1x~9>QGn#1g}6{F>@$K5tE;yv9us%Wwt-)mHPs9D_*^*xg`kXNf?+l;>~MXW{(91O zcI0`a<kl_gB6*LU{s5?0IR(g!gZSYwt_c)%`Uqk=(;kBAZgxqbm;kx3<}v#2EVRH} z7&QFIzgFEQt=vGz3>)go{6z4oF<|F#S&u965nN@{o%eVU4c(<VeH!87ol;X1OoD8x z)1W!^tb9`bm^j~~mR7EL3H8SnI(l>j&P}Y+{p>`tFEhZh7q7g<afThST5s2Cr~tGP zGB#wkU|~e$sWtYIT>Ulc9T;*s(P3A{u$l&&53hkcW+E;93(s0puz#c^X^CL*ITkp^ zXrKsqP3eTnn951kgB&Uda^XiaDD<1k3?}>#U~4{UB%LdGdZl6^6Vtr-ZCQJA-Gh0m ze|YNDsP{fUafH>>MR4c1m}cM9v+;3XuLI8{f>x^z1NfK;6@JAsd1!ph6pc8sV~_hm zh<`_Fe?#YX!U&%Rn*2{{v#Z0y<;q2nM|By`?n2miz_ZE8q!^XT<*;Erpev?oke<Lb z_`~!4DTEP<SRHq@0fC@kVBxzwB{FX8+)mwvWb?mI<V@UT=|C)z>1|gc$?}YG501P& zq1S-HdpPeR`#MBanIXYf2)Tf(#Xx$b4|5WT1k@KV91Q&uJ4yTCW9g<VhT1UIe`A7Q z4h{=tw{%~W!340&ZX2bH%AKDqM@$K|2Cp7{ebE0cM49QEk{nnOrNP1_(*V`(7LN(G zG==S+VSURl93U;|YUKfCmC1>(SbFP4)%jo(2pu;S{lmk&t^5vtBv|4j2myEKF9hV2 zqPHE9?O~#j(v6z70nuJnxdPVY%l;yJr@G0Vz9{l3^hRrVnH#^64R|U@oMxq$2B@EZ zX@uKS&BSeMhJEEaWbg1YOMlyN$UK&KDKUB2sGobW<o;k;#ciXGYogS#MuKwUtYPs* z`J?H?6l%2aK8hp3Ds{BW$CGooh~-*tP#C)DS**T#)Lh#yo#DjM7U7WMFcxuDcGN8u z^rufO+Eolh@*|bwhjj;}&uDMJ&NvcbeU~FW;juLExYiv)q^^?48Z@WJiN@7(tiOj% zNyutrFinU4Cl^C&IFm_^+~zK4PvkDBbZ+m^BX~A8t?z&Yl@Q4Mq)SGA$hA4zPt#H( z!{Uq`OZQ3I$6#UW2=uwgnx9N0I}(5SyRrN(2UXrtN$;|18WVS#6DNQ_FbqNu`ub5| zV2;XcAGQ4=%@~1YDR%1<%7`l(5-UGEx0#BhTo{~!#IMQ%8lGQCLWmNh%r1*i1kGUQ zLp!)zu!PpsSY^1V9X@T};E(M8DILtg?=}&F=rZpPR{4J0WoCYKA4U_n&ERWqgF*4W z+orx_tvDkFwJ&HccyI&G5KvZdi;tsX^@I7JC(PZhZl{NqR++NZahm-mOZeo-)KM`r zq1?^Ud{u9i+N|Tr;OtU^&%uwImg-Xk!5T0{03EST2&98Fv&j5$qxvq=`}TMx08$+q zOc%mY>}`shK&JiGNmO~n?YLym%an_KD)#<C@(|1VXm4*2-GAm{v!=}Ck~ykpBEh2N zJ=3wdwn1FjDdZc^2E?;pS22K#&A_{?C#HGo;SCq8qN}*bBy;F2luSSsW)o}WTO8uk z<(ndtLLGpQ)MMzPBu6{9s1)ni@IAR@JExu#sVd7iQ^EgG-f}Rn4<kIAlgc`~E$=}L zjaKpJg4BSPLXwW32DLE$KalmS_2|zyEuqY&KHyF?olslaEEA<(V6Jl*(adJbDc@lx z3dkNLqSxkziBc?t5`rN-jg4Qo1*@CIq8P<4Kl%e*t6kuD1++xx@yV@-jH?=`?n|W} z?VR8m&TJ<83GBlxc0W4WI_^y?OU2e^I{*atR24La{%2~~udfwauteeb_D8AiVIB)o zS>=EQfVMU1MkpJRHv9Y7bbx57dAlu3`Zx(AJ&5r^VuVJxt<VFu5xmyTBV96GGPy|Y zsq~0~-nzf)JUG^tlRGISrSRC+OH`l}O<A=i`Md{d799wmLsE+JPT5n1{uhQJY@15Y z1e0cymus{hZ#^D?VUgYj3j9>vYTipZezD+h?LD;jgG%ul<P79z2I?lWukt4)A_j#J zPK8Yls>{0>wsYJ};1XuBRW5;D;;=T3Yn*vpy)m$-x-g;S00~mV%q*$LQ8Ud1{K!R@ zpjXw{4qD7(aO#EP%C!-Bp}CWGa9KmdLX)}<tmxdnL9sWu>|U2c9My-->$P*Fb3Vvf z*_c>?{!o0t*G+wWh0Xpyj`<P7kJLV092O4l@^QrFcYi9PNcN#FKkkJGcquynR8kMC zowbd6BQP315WA4OFT-ivri${cn8}l`&5nN%&u%ml8H{2>o*Ld05o;YF%_A+&iiamt zQK&in568H=ER+z#Ljzfs46YjZiL2v1I%{TNx+71+_t}@fBT-DHfoJC5HpvhL&uxG9 zfWVG*0BE^juAiLAMzVZ?PpUa0m`6#7*Y`pq9l6WPe#mrtogu7Vp5-yA-v~Pwc~aRS z8tN%lb6Po5Bpgs10r4qb4k-)bl-_6{vPx=m8yUAoTEOPeQwFsiRrL2w?3!C3l(SxP zz09KPTc7+AfBTXLmqt86xaAJa#S?<}nn&0KwU%0&Jp4;f!vp@V&5>HNjMC}^lmkkL zK_4{Xzzx|s-P&xs+OeWg7oj!JdQ1<2%<BUy_5xhTUy3%9C>O-Js&>maH^~dBhZ|h8 zK5c>sp>bj&sMCpQ&0so0{f2s?bJh`9Q+h97(*sVcO5^}p%t6`Q!;}3h>51l<s|wT! ziTI1if+#Sc+04*g7H|}s+6Q%)iS;<jU1;WLf1#riLQDvlP7G-Mpyx7Mxc9myr?sH6 zOAM6sEWhJZbA`&RPlq)j(lSJl8&zQ0<ab%SNWuWgkA(o}Q_(4OX_iba>}>(8nKB9- z7hZ4~J*F11O-f{aYFqisjj~5|ZP2c=!J+GYf26{h@sx^7H;4%kA7?j(6wkyLFJ-dR zGbvzaq4Xt|s()w;&2KNkT?2<D7>hxdDBd>Jh&KJLYRQ|$m4%O{C?n}$jni#rZI64x zDm8O#O%3LW!YrDey?Ba4a5zc8+60SalG?ZZ*&(p-1d_?4d+UK+9DTHGd|s82z#MT5 z4Fg1UIi;BOC13d3BzlAK4x}WkAUJnkBfPWOaM*&%;U|M6<oae`UFqk~KA*rBf_cCa zFba$<)DBu3W@|J)9f52VgD;_C`?bP-`rxux3igg=deqxB=Gxx|q2#l!z@?@BUHWUZ z4rJN(M=HE&R(RWHt#{~il>%>7{h_1|7*{X_qF#h^*>T4=x=N5wZ+w$L^v@X#V)0l9 zanz*f1o7)v^|X>hetIg!;C1>dTAxGQDf0;>`&(_+um7q0RFa-8P^;uEJHx|_zjt<7 zW?_NxSy!*P1b>`h8iL8A4<C+r3FgY-zJ$3%f|{aBIhk-ab__@z#?p??>^n-i&ny|M zN(@>=8hT^L+ld67FwGQ!9!bL#xbh;}I<Py2dTB@;Ufi~@QI{PwT+3A9CF>1`6#f~E ze2j4jQCi7P;Ts9|q|kH+5dqbqsK&$lCjailodYz59QkuR$4yH*pa%ueTNUk(3?Zmm zLK7UYpvj1*2W{qZCb>LK7lG~h<PtX~&o$f)JVOJfFOF>L76rqJ1Z?Ouk{4%iP|9a| zr|PCn2}Y~0v6ddn&S4Ixs-Anhb#+yB^1^eyz4&LPDFBoV(%LH+I!vf4oB%S_{!k~P zXhRKit6Aw-eyG0Bu&TvzkjHweO7OK}e|ljalorv?QzMI0^QvA1S=cV<!ebwUEvz^E zFv`3a&L5_;r)hU{d=U$bnz~Q0BTc44hth3av+G59fsx}t{@;e8Lv~*{%y`I9Ac#31 z3b*?OAHoF-{%<bQw9j0|n3vvKaK{SMKRP6uDMwvKK{JmCq?*RZNz&D&!Tj=A*<HFg zR1nh9?1dMQxQph%@%?G|-qz3$CVa{3eq2{rqX?m$**6EtsplyzF?#rh#_6s^pI2ZJ z-zekLu?t>M$&F+!O|)?Pq!0%M?eoKEvlayXWp-%9rO`Z?3p_U0?~Q&)JeWb>CI4%# z&-{PM^*LENIR0O*@29mEC55qVAaCoxchk&zK1xhd!*9ai)T5@$=_dQ`q#U&GCCt26 zZjOVKkUX0&Ps-SFcn<ofo}{2QO5?};6AeN_cZaVZ7SfO;f#&hyaGxO)lgV{Z^01Il z&Pb&TfJnM|LZBR{ty?Tmp^L2*>v}H38@Njx3!RgqY1A3}9dAY=<xnLO_e`>}g5oMp zcYkSPe=|C1gLv&=BFJB_Gx=6PywBkES7x{55qgq;O{^wZfq^3T(QgX1LK;OdZF6vb z2Lf%$LPQ2tmA^U0P0`fZf(l*|@sAX2Ztdh_zaL+j;vgb;A!Cz0gJ+dY1@ksnC<}=% zH>OItWh4tpS*p~3fUtPz+#hD-W1R`mAfUnCKG%(rP6A>elkqikg|_?KH3&c+fz=g{ zE~jy3ZJU-C4xjSSsFa8myF)HQqk9DW-2l)2JoVgJ;nlP)*P|ddx3zbm&z`4v?ckFa zb(Cs{#S=j9yqu=|zUrulK^tXgryt~`M(O&4*(yp!MPNn+cQ9ADSZ2K$R;(Uc6EW`8 zbm2F<k=}pB2OG1t2AjE*f=5<NRVDayKXo|d5{&?LdQ|in)La_=CV<7eM78gjOR<rd zvp>ewM@1*RVGj*F{}`(596^(Qa<CT-_`v^C<kcaUtLL}S6o7#kR@2X<<lft}p#!aZ zGw&7f%H=DN5u`LPYG9{&u!}D)vc^MR^5I|K@!D16*@A1t(WiG}@&3%->0$DP`V<|~ z`(H<{{WTC*uMudF59YObpqobS_XFs@;GfL%X=IJUEwQL^ty0yN8;Cp#9(<zR1uH|} z6C;afi7n_?BFG!NX~YCeWTY@~ADClDr{fjViEMzlDGD)(J(zpLhd0-6VP`4Rfvf$G z7HFQo?#{&z0@%Ey!>^BVMLrNqMR7aQ?$X>ObGZ(URy}aPyM2Ed9;ybQ(j`vxiKr2< z7Yj3^TizUZXbLNAq-e6*3e{c`bBQ6`6!9PP4jbAHUKE6?_6#+>ZP=pK#<jgRA4-x0 z$9ji6+y#x86)h{kKR~(q2!epH_&80}zbqOdHK^VG!lA)FO3<j!VWUZzc}}aIHDy7u zXV|G`8WV0p*KQtIv4_&7M%D*JU^H*%m2{ehFubDxFxrxz3*Fi^GxD2IR_Ywb0%Ci{ zt5xrz^+(bc!VmHMXQ7A3*9T(5Iu!yuqPE62fr734d2!;~VbeT0yYoo;Xj6=aPs+CI zu_%37lyow5>TvR$BUQ)QP>PMZ^|9TMDnV)Tmsqh(V4<#_z=FseCD#V$n|hhUfi{gz z(US21Q`odv9qFLUlCDRmx_6gq0g3tV*z?7LF>Y`v#feg_yZ+!RTsvlg5yiH3#1OK% zYY5MyK1Fl6Q!hcvbQVM4*%}%KO63O|0yVZA=;EheXT0XGkaG`s<6MZViFV|ms8>V} zGf|E8()Z)10K|})MRCTth^_WG8Z!sc*f~l4HfvzgTIs_q^ScemD|LUWIVm3TKMj?P zXe9;@h_y27YtbQ?$pu2xGAYhn$zL-N7v&DPQl7ePwZVMz$uTg%Dmv4f_KKPkL6}c; zcg*Las4abIxZuX?{@~|?1N9+Lkfx9Xl0~WLI=CHLy+X2&ZM*fq42DMZN`dss)Q%fi zco0E_UUF_TpH|AK%O`(6Y2Loft2l8|YT3q#J8K_4<maOl7!}OXyP9&bM|hyvRAn?> zXH$EJ3g<Lwo@1ULS*2!h?@TkNS7Pig#D;xfte)!)QMfIKAf&Czf>0;bXXGh!F4UO| zf52E|s*aalC~pT#eir~c3ZmLj-1KA6eJpZx^cMGl8~x&<n`h~q+Y_C84mWF))~*F{ zpNIL4leVKo7Q*LCQ=+a}iKvjVQ1NgPNsg=0n^WeSrm*ZrZpH6*kY9<i-)cty#VqOl z5B71mp15njBnAoqC+alQZ9!^j4K3Vw#1g(Ms5HIEgg=14z_S<f_1f#4N%NGYG>uf{ zx(7i-^BgA`GNFv-i09dqso9t54?4~&C!(v3?VU~$t<Ci+S`+&Wq#n*?t)m!Q7(`K0 z*|LN0>b{w-0H?O+x8G+IeeUHHeohxs?_C%J(4l%g-StUvquE?5<%ihGd*tH9<;($f z%wl@brkA1={)ih9LABVSPkx#i)#=G)y;>3doz$&K$Cko&WVRzZ(#B$$X_GAzOsKid zP_1<A6oNT#uOW_70PTQ1=D{{Z7&+zS`M<3;nRab7vBA3%gYN8@p$5V7?b({ta%1_j zBGNss{SNtLwDjp^he1)5c}2&kE4)%<%7JDki<VP6hp*~(CBG-&9?)8b?9Tv~TyMNv z+DT@{)4*G8cusBSstqq=w~5c3CQzf|rdg-YYh|jbcFD-)KHV_G96Jh8r40X*tk1xv zUX&+f^}aka<#N^@xdY&xaA#4T&3NgM@Bn4#I2m&mh0oOCvPwfMy04%%_l1<Ba4uF# zbJ-?2{n2Z7k^X%LWg3VcIrA;I>j)ZMmc~;X^B98<zw7r{SW=*T9B^SY(4Yxg7ruia zQ|uLMQRBw3t5@^F)PwmumcM-C0SF?6jq#u4v05&UHw$HM4G+FMRe=S&Wwd0BB3brT z32E54bbM-{oCo1lpgmPi<k*WvA{mBW9um6-y)Z?~qTeY788sw4!?=u!QLGZt&8%>D zX?!sVkIKG3@;I3BU$iogkf|X&ft4ylT0ipSfUktsM3(odmf?e&^I66+=THOzc2_Qn z`R%^(?F3<iiIT^usQpf_WLGj>FdM~tangXdHfO+0B-QUKVZ6@dM~b{_KtP;j7){&4 z6iZjqsss~`5TQg_<}4A_i-u>d<rvzZt?57Hq4JgHXcQE5v;BM+iRO%=3t$y29VFZh ztRyA=C6$pHTZ*@z8WY1|?gu>NvQwo3GdS9&NK;JLW!ioK7;61~dCY3+J8=87X=oGU z$H6D3Zy0Am0WG29*>+aU-6KD`Er2DEDm&sS(CumH!7QiKgnspXukB(9%S}q@U1425 z#T+dr8O?7W5>|n|JgHQcefrrm4InTc_(aD}KdL?1q`HhLNzv9$W6MqT<vj)Oi>G(7 z@Yx0>Y8sNNjv~yq)|BJ70I#(Q%2WT?jm0gT8bO+FYy(pUnGE(QJIaCC+HYPK=c4IN zljCQ0{2@yK)KbMydy}Epopy*W>xp@f2(~hKI7_K>$mm;eXMJ^j8&PxPaY4_pC&wg) zVTa1-hmHiQ&AjC=!e@?vR2m9xewPu`9V=Sgx{C(F#!sl61p;A;cQCKP&6ry?Hi~dG zwOMM7%uq|WKm<HRC$sm{4D7bEkpy}c5UE-)Ie{f{H(toWsWU<)Q&*X@ox~)n5A_H< z3$^zYVIl%P{ekhv)EkUlgHHje?)(jlOXiR1$h-CVR(8zrf(=h(sDxbEUg$7H?wZAg zk|d38gjScKqinGe`4sv~o#<L5@ViVEnfk}ZXlTZ{Vd$+5jaSLn+=u5V;RUd(Tx%3U z;$N6CQX;7!hmrQ5&NTx8;a%(v+%0Hq@SNF(4E`8h-#iZQSyBo6D$ceCDD(`4=yFE> zhN7OsQ2Zj6MV7kp!dOHI)(O9760uda+9!XC_YwxdiEX8JY-asfotw5RE;|4|NS`yv z{LRz}#UUrvEutK(@5TumLl9+%Mc(-m7tL`CXkT{S+Y>7NO`(L#ADzj)^925*=aqsV zp(01*k#(Y4s6mV|ChGSHEs|;&lfJsf_Bfc-Sv-2gJ*Jo#_6kx5b3al<QI)OAr2??o zImRYZ{w&OV=A&RFRghnsy-P;%KU4Z4L4f!{xzN}1sdKu)k)V0dU>RD2$^iNkN*5`0 z-a$1p(DAwx%3(KrPcM%3-pm=Ql6*FiBFukVuEGr9*h_7J=%{%VItYVQI+a0if)AC? zljwzv7Xa!Tw(vL#eB3E!p9;4&L#P7ym$ahOOrZ6R5d6A#j=6EBrlN9K_lhLEA^Lfz z0jIGCz|2XcmSg&&<putQp3={|>we)SDZj*(&KDRgE_kh!Lr$&)8|_G__4cEZundD5 z+=UFEyupyG{{_E+>fIoym6@W6oi?@>A{JiY_a)bOQ?O<8P8(s#o*4Van}Th>nZ=dp zd|t9wN?55`xw+cU^w=-kO<2g{r+X4}@#Q6D#xu6;;D0leR`<i^+pw<ZIJX1{)pB{2 z**4}AdbEp-`5<tOnjylII=6K>#1PPy9asZKK4A@;gsY~c-1DZ^?Ty&`g0%Wol6WMV zl}ND2<Pn7>A#{#6%({Et9WSsnU7Xr+sYc^yL=};DmldmdI7#YeB@UlCTidLl+?}Ta zHn&(n&CBl|uFzvVhcLw_NNVLbt9(kPW|eWz)lq?n7Zn`>n*5F*!GTmicx3&nq9|O` zjblr<8)9hP+OUIpy+0+mzC8rCG>7G`D<c>G_i}&by{&EVNx1g~ed5POozsTJL+OY4 ze8YW;#}6nEo;KCpH<PRo5dBJf>UQ2Hey@++Z<>D+U^P}Fkz&m?d4E@Tj1Hb_Red9= zVGgiku5D*lsiSuMK-xa+v7`AbZ>19@AVg`i9ZC;Quv~N&i=ATW(X9Y!KbhI&IUY3Q z>n&5c(WSw*In>SFy^Qe16^~}FJP6mf4(lFBYFOfsU*F@7g>Mki!dbG|CWUj?^kp?w z&BOIrb%KOY3Xn+Z78!7d_wjB~uAQu{tELSh&WGXSpCEpT=#@BBldxtkRA+0yD}f+v zdUmxAMc2$qfR6S~X&Xca@xfc9C?SJZi5>i|nwv5rK^ZzDOYo5R7%kS(@pp|peh4RY z4x{MZZyj&67h$^*!-m_Y{$5J3oMwQ8XJIf5!HC{rB*Mg;J$s4iTg53c4hltnbM9D2 zUD4tH8#&Vz&V~A#dg!Z|B_;G+hxO7jSQ=!*I7)DQ+qOCUq_z<c*#+vn^ALwc45MgU z2X@`D?$=mG_l@O7f@sfWL?J@oFejWRYQrp~a1fxj&tEhE9Z2`n)Ql$(9$NuN<EDLG z7}+mlnHC1y2ih#Z5?DL%-%vy^#!yD$<pt7f?#2Ag_iBbjPOP2!EDALq+cw&sTIQq3 zB=_N5Fe8&)aI;QA#<LpOBtJG9B!n<bt{Wd$HIry598&a`LA)_W#@i$^e4)<02f+i} z9y*?8S~#D>7qqaKYs78kS5RN+A%*n)7r97BUXH=1?ANc=j2jKF6eY%(=I#Whi4EpX zI@aPKkeu?!4<$_d@Hn`5REz@Q@VEG<`Lh;8s#1{afJ4`A)aBChRI>4IQtkj~?>{~Z zJyx5)c_Rn;A@e0i+Igz;jSN)+dp2>mqx1wAdzISX)!Y4sc^uMjxre-(;eUXZ)W6<Z zGNjlEuW+D~?}_D`^hi(KtLX(!(f>HG$|4z|p$BulD65Zgi?I<qGHI1B)iMs&-0%XR zit^Fw6>AycUK{W9dHNN7IdmVGdlf*ca0A~ogA&W$ihp$TXcioefnUN{YC>=6t9qS* zJsWZ!pSOQdy7m7CSTg+aD#Eixl9tbHwiWO3KXJdgjhb(6Ym*Oa(M*XnHXrN%H$R(O z0vq-aN+z%JkGbhs)aY-mnx*dZb&X2x!oRuDo-0FnlkM|_+SSqI!aYcecs@3RygTcs zpaaordA{=-C1a6LflI3nV{Gh4TL)frw+_OKHG%6<5LitN*+%n9c&KxKDw38=8#2BY z*%m~aY}J$3w~W;$$%*F!serhgw)_6;1ua(wq|H*GNSz@95vi!TqrmH@C05*%9QwlH zt;drW=<#)v*X@mcz9Ibd<T?{<(*oj$cft9#HB0#!<7anwdw-%FX_WI&7RvNb-CDk> zq$eXAXlV4_;);D{pUDvnWm;(_pN;&#ArlU!)F5fL%^GY<>cR<I1&a-bQ!G_Gq55Wg z9Fc1Xb_Cp5x@F)Dm?B<*gjzD^s|rxVo>f}q-#VOq<r3b(R}vqeVZ7^4mb?pMs}B2Q zeKlW=)$b4TKgAD<MA^&bwRkjib1m5U(iCDmKnj2IPt`e5To-3!HG~izF1wGJ{_eQ7 zy^c(a)&~URcF*Dt1%-O9u&%4<z<H|wliYeO<*8;rVCKDy`R<x2ozN>>=eM5P%JI5I zSQz4wgzL1Wl4wadZ)$r#zBeOLJ%q^ZYLk-Oa=EMd+#3e#3Gh38CO!1s-)0xh+e2uU z*mCFs6c(Eg(z59@85of=lNzjSnk!{|6-M_aq`lJ(f#|iJC7pe65PuKPhV64~@0-aE zkNtQ|O*D}vIfId1<#te!t~&)#itZ>2t`&|8h?FJcLFI1*B}o@!qsz!>zA(PY&uf*< zzMP1%3}I`|(qX&^YJvI`_(Y8ay5)9~HfLA_ib?S0(@wfPp^T4PO207(<*e`tB7`cs zG>u|*4fw?Z^+%hX8DX+d5QA12%a3?HHiNnK0}O^9U(N3=gIXkOQ$HD3DmZ0VA%=P> z(IPq#h`1RK*&=loo7we9Tr!g|M&vVu7f9pV4+5devV_WZFrApZRM13ed49wg7BN&u zDr4HSTRkc53gZL*h6xu!rOO#yf+GzKSW(*%Q@pOIWXKPb{G^D(l!HrfZlC%Y8t+HG zN^x<l5+B=V8?r5NGtNUTvK=h2oBX30#(T=xh&`JamiTd!KW8`AKE%ryodefrS3n<p z8J2t;{r$sGa3DqKs^ZtyP<jS&Zn0Fvd!M4~;$7RP!mI2;VAOs9X|LUYif#-L627?< z;8ZhX@_-=;CsCjk!kO#XUQQy)6_6C#fVD{l`SP|(8bNEs-^S5>21NVshNNSh^rSol znkEysk=k3f(I<;A)UcobH%FA&<p?-}Oao@kX@-cU%zXDSRxyx8hCl=Rp*&Y2fuD!a zD`C^lhXlVQ-kL3G!sqj>X^J2iWcBr-^IvvR-bY|T8vWprf=<xHJq6=jfx{C3*)f4_ z!jI3mh>@og9sbM7L`C{Rf;>X}+nrXzY|>r`fYcquu`gs|78Qg13_xKN(cA;GU*W8e z^o)oYx28gpQJh|vk5oI_kVO;Dy{GC&w$F@_RSGs)nLBi66PP+I(jr*<%>`gOhfRAQ z^7PR;Dob>&X5yYST(4)bxk5*xPPEim)LB_c=@WVOS4JkPBlTLqX&-Ow@5qmH(I3?| zW=GeCwafZ;22ctJR&tjT&L>dSB{Z)b@z#y7^noxJ<g8<i-aj$NzxUGCp37Q}UeD2T z#Ch8gg5<L#0i7p{g6xmrQ*GEa=}j46;;0_vA(yIqT0LLU2G<#a8W7{92OJNPfT5H> zc66iWHsykd35kRJ88@Eyw|G-I1sG3n4uA3Au;qT){@qCx>IibYg}_X5usW0KD>T|s zm%;=zFI#FO2!Xd}GFgk%0)pEIu#mBg!Ue#Vp>_bYrR41NN#?~L;^Mw?AAKiYzuzXr z4TlR#zkMErR+CF?S7yNZaX6FsRcF5wgbv26BY!9B&T(rs0|YLidT}t-PhBk8<`{P? z+@7{q@S5v85J%joj$asRIse<`Jk^rknNO`(wW1gw_|LLh;X=!=z`cjou`Oul26n^) z6^3hkT=CXf2YHy3pQt8(tEQzY2u>yYMqL#Q91$MId3N(pB3?uD)?qQm9=!;0MY4Vu z^c?46k-_z(aL*WmnSE8;>01qF1L=ddW4soh2K;#XFJ}rzvf>N-g(|xf^J%nP6zj*0 z=2|+VeTFSTz!GC`W(D342OP~PG&oerNx|){=&De$6lna@(u*1nQvarz<2V3+;!<y| z4GJOtdl~4`LWEAb@xAb;q;R7MO@+t+jVLsWDBNNQn3t&gu~)L&LTQ=CYh*B<ZHXlc zA{}N9;?Hi6VOOZ>F4Ru{nS$qH3~IYu&F$Qw0%GmNMb<;unOz((%UYgIH%P~fjuU`q zFtha0l)d;)#LZ9NZ~=7@d@O37fj?kEx))pMu<_3OsoMZL0~6syGX>c^xhR+PEPLX< z6YB53jqfcRsaeH5UBR$x(&pNt1fQf$|3UC#9tdDQaL=AlQQv=CQ+i>Y#rn;**7Ho& zb%j|=j|XH^5;H%LTHfYBD}gHw(^PHjnsC`>>jcz-W|)VRTlWLV@Ad+{ysJ5|@S`Fn z#TP;nH&z_ycAa_;P)*$;EiMTycDMTz1frbXeXiP(0&#`TWmLcE{sEp=1G6VrDcsj? zSLJFKxI8u5#MFTSdaju#eLbV-ho0(2#OQdNq<xshI`(hP0sS~t`Vj5Xn>o@Z6hGVK z4F3__Zq<OUYy|)D8e^ar?(G<#C0k!+(G+XLRZIT)KF+PfjSmL~JBU&O+2|u-3PZwI z6LGhu2c(qLgkQNO9nXkDFG02dG%WlySJcZ*oG3nLCd`AEL2c{%sp|n@h$*L6|HhBB zQG~t_V}jM`OVeW(!`@?8<rq^kK*<5Mg4?SXHh5nHONDJ8F&McI=DGW_Oy1T`VV{Ho zZAf|B0W{h_Ln3-2NA)~DaEF4kIhaVG??;*Vl#>P8$|gXv1#@57I-YR33O|nQ+f~>5 zO~<B3e$`2jI!wRh1q~i4@o0}~B_$c5JPFtH^lcz(GfTy5xa*;A!ljbA)sVLsAjZW6 z4o*iYaMlfE#pb)=rm=I|N(fOK*%EM%&}Wg);9<J89CjDq5>lRKn@xodGjVb^#6o2b zq)m^7x8_Yqqo|{~FK3T<k1kKGOOw>0c^zc$Gt|8=f3~cMYj(sn-|cLM{s|~CTJNF% z!z(EdNhe0|-)HK&Sv3jh-8pM4M2S=ztED?w^`(W36c4WF3f}sU5OlKGUddcu(m|j$ zGZ)8JC3sWABYnvy$zLg1U$Ig#<)-oGlB`LuF<zjVSRT`{ZgUM7(7sr@2SI%@nR1C$ z9)T>P$RDpJ2+ff0;cO*}4b7@HRw6R$LkW`qnG)xHx+ya5?37raB+YRT_+~OZdH>37 zOsi<*W72J5CuQ7p<s6)pP&G~xu_wqkk1c`Rnp=y|R9Of+a68pHPzQmxjuaD^%A8jk zc-4T)DsMzsU{+qcea9^|-bBdfCtDXM)6h?U-OcuPjvK|>N@uR#G1I2^Iz3Ptb>h5p z2dCd8JPNX}_=rOzXh_}Pqs9vN2aBni{nh$Dq!(~1+2i@*!8<d~c1WS#*EDp{nnMWs z?<TTt?B90jL;J&GaqmG2AGUJaaR9^#_n+|Mz2yT<lVua7_cPRCFg&rPh|J+M9sqs} zI)`*3&b8-c@a!0U!uZD*s<IRx%cCCeeMS0aCo4wr$gzqz!&}=_Vceii%>B96tMYA; z&hjdNCjk;DfD3jB1=dUB`a<db>gQt|4b+PKA~Q6UDGUSGWGW@YYtU8*u@Ir9CumAc zC<S5*IRMT0cz&3bB%b&N3y-H!N?a}F`j%?Lf;G%-Vm{6>?|8o24CYGLQfawq0Dp8U zEY|FCvP$oV*n4RN(gybopv-{>G1&esE4yB>D1o}{mIU?Z;^6A|;YB%YDA1OxbO(_- z`tl#Y&r);+5UU01pmn__Ne5h_5Qy%)wj^vCUX`~$YNhA<<xpE0IV$P)Wo6(bNbY)O zufidb&?Z!SPo7ij+os7+?%&2<3LG!;s3LOi*m=37_8(q=h&s%+nHXCZWJp2OEQsQ} z_HkvRbM-#Jve)5Is6*W}D2`Z0C+!<|>;Rgg8#g$5><JX_w7szgF!Ze>tdck)!kiHp z<VP2|mba}?4eT{?x18pO^wmKe#r&K<$32Uql|-t#9(#9<GQtz02rR^F)q~cAcIon~ zUb?c4uX%}^Cp3!+7MkZ`GfQ)5Ix_y0uqWp#x!Dew#co-Qt9^CnMf3Mo$hX^+bTu<a z2AdFFu42(i(99wSA3;jRp8fC-EByBgPj*@tF*`F=oah`WS8r?7bbP<Etuy;$((#Pv zxREP7z-i5$r4hdKWAg*<zZPE4y4%pJqj`~+MJU@l3C~a#y-=2@iyGm)vE=(ZG9!Lz zgyah&oH7C#M8S$+e2+_=lOFZP^<*pk2Y|k`(pNI(QA41>3<dK~3N^LK5ujSMm0s0n z{We*&>ShNFi4s{494GM@8CuI~xisrJREfHg`0tUIcwH0&eR`?u{SjxQ13_bX+CKTO zioqgg!mUyF3AY?$RBSPobN+=NE!eL6C9r_=HTHq(8X_vwaR7+>!oj}#aOwWbyr5&r zduiL;(A=tos*P;&lnO;)o}jyCX=uDhnM@Hol=12pRloa&L6=+}dd`7YZ|s7sPRBbb zi@1_Z&IeKSsHr>qb!!)&$E-eqv)m3Pr8O2!^s}uCbF?}*vC#x96--WGgG?Un&o2v^ z*N|T<-@M(DW${JgFQ#RP=_lyT8Clppo|=Th#FrbsJeqZXT?Kj?U!Nn>Zs8|b&075F z`GFD<cLihT@(vQ$ALdoWyHuc%&5a#yXWlG+*_h6)r%alGz~dU`-EjhY=ZSkUIC90o zcYQ;94P3)XtWq%Z#1@laXJYJuD$9o>oO|9YyIcp&Bh$RZpMZhkjK`@hOeQye)$dJ{ z;{*1eI-q>G!!ymDL-%FK%wD2bPgVO2u-jQ9Y1$<TXBvoh6Q&NnvV?!^QbIf`3=iSx zKJ1~UCbq29DQ^j+{Z>%BE%TpzAfY0v{(={y!B+F~r_^p?y4NhF;%GI~N>IvHiVQ!W zQaJIIEp<0VH?ae(2R%9pjQ=j0Y#@3Ma1%D^sOQHwP*NaI%Cz|yw*Z%D<ZQo>f5#BT zNK>)Q9-$xc%55g(@s<6BESw*jNaDS33|2k|pTo_gmE|GsVALxZtf_n$Km&27qtko^ zFDr5pyU}SYLgQ(LyRb*~>l?cuk-P5CtA1&BQ@@QT6X8$m{-u-A4{I)M`QVSV-|SMO zd_?&PFSc@o+qK2I$V|_b8`|>Z1?P$qchjNV8hs3Nzet96U9XD0SsUJUtB)k-UbHE^ zZvTOF()K4uS#3K(BS9_xAy<}?B4S9-YBu5FnS<x2;wfJakN=^^U#LedQe4s-@r4V8 z5IApZH?Mlrf5-8~f5G%7BdozUZt7yZu?NNTcT>-Rt2JAK8uC!6=jZVa_d&S!J~%;& zd=d9p%W-Pi@A{KpTWecZO*C9lq*zH<(7A6;BOkEpapEVJ;qyfYxu&T_NUxu;Vt>DG zgEI`9izIX&A5~rgF-&mqcS;fiunR@P%y9xIiQ#)E>$t3?8w~|Yz>kK^1Bv-WCqIhJ zEX<v<t7-7(90G6B&VBF#GPMJ#Id(x`jcDrTT2<x>8G}5qTW6o}R9Sj<ECRo8;4XV= zdB{SjLZvp7O!hA-*0Ve*DiVZjsuDT+hzX$^QmLNG?`_z=vhRYLEGI&38=p}Qh_ai< zpPFF^kcjPZXFVe;at-A~lvM1B-~ZU8r~FNeB+%P?>1_~U)se}RZ-SLs_Z%oj7>8P^ zW+vR>vHs#5KmOS-8r8#G*$7KtB<OzN-0quR;Vq=_2{z9Rps2Y~Hk&y+l6LQu-ZuT+ zKOppV`v1B4o;9rMOcPhkQskoujE^Zs%z81#anE_9_HW?l`Vs~hE@uaYM;W@L;3~&R zvC(_xY)8p1xrs-=J5!Uf65%>?mlW&KePVtx4>NxK++h4FM?c+?N6#OCw^ZDyI^r~< z^c8FYayP8z)+jk3il#Hgq3JIS$);H6nB!OGvqS6EV$HO|Swn*ZAdHZ%`JF=ff)-$_ zTgL(+u=bb8D4c4#MU_r3;8sTvY9Tx8E=n$}Yd?fTVtRm%X)3g}Vr+&is2X95c<=QC zIkrVg58eX~L-U+ZhO2lM=&p{2?y)#uY#$7$bjWQVgH!&jDr>JzCREGL{$h2kL!8a5 z-sS6RF+-DO%u;3-^a?Mm_GblIUCEzqvB3fzb%g+$D$}>(>67yF^?mOB7UpGjM8v_V zaf!9^io1=|!n!!OR64xbncTa5`Rj7`fpbU}W?Jzxx?qnr@l6_<wql^EUSL!`!wE#j z2&qwZkno3r|M=Sa;M0*K2-GarpRF*JEAY!6|8bEY>k8{?s*IP!&-$iEmZHgS@KkJB zG%F3rYE5`Ci2pe|()IK_OJR?Txg7Ux_sb{R;aMtgOU*1<M<I@=Mqmr`HBIfJi>82` zH^8va2hR&&-7$QEH+1*X8iZRFM%3bivEoHoGl8LzXPL6L^>V*CU%#Vsb?@Ua6Q0*E zzgd$Mwjj3^%Wm+1r+1RTZg~e!-~hEh|A&76<iZ&)-5yn_^^lp3!Ny0u)dR<D71A;~ z7-xD+=^&LdMcx)ej>eHDM3j(HCrT7N5=UwJb0BaMiFh0F-W4y7_qWD!B3@llHs39O z@59wQ<J8kOnC(WDA~Wn8!IZ|YHqXmL<6AEEP)z7zZY|U{U9fffeXT0?rrZF6sV<9H zxG0DCANSYdP+|W1BzUM;Qg9;_VfN}Xoqm%^(QZ81sk?4=uS4bH9gSPGHi(9#Ch1B0 z*S~s%9o9r`8FxO_SQ<XD*>8KphjucbZ%QD9*DZA}k(}Kvb5JDFe!_8spgt+|(`~<5 zdWRSsrgrK--ERj<!W^E2(4I2=s;3l$z;VeC3G4zLLYIR7UU2!^`py2=UKPv#rB}tl z`S<_hrSJ@y{u48!p<F1Q$9VXa;H#lkTQE~$d|SHZt=1wK%8H$0FzSX3dg<_Xa2m90 zj*Fv+W>7T15B$LoAM`V@;?xd<SxAQXww3|u*d0nUI005Zf6KI=z#jERe)v@+0&vFp zhl?~wvG@@?qJm_<YsKqO2M~8Kvv;Np`~K!syxyPPg9RN5dICqi$*kslw|R+ha^s6s zO$iKyc}wiiiNn!_2*W+6t&pTG_73SCXHfnk{10R2&>dVGWYO5RZQFQb=ZkIIwr$(C zZQHhOJDpiideHyjuDhz9Q+uCt_DXM9o5Jb<*jx~amLj&7)tXQa@GpW3hGs0d`b4Ls z1x{^6wef2gWV*FB>J#Og{^37&uqVaM1Jy{QP!))!w2`fFV=<D~E^4n`gTeD#o3vDc z+lFJV`-w-1QMkU0@maOl3ZYK+FBq#qiY;|0ywQ1C2)?WLPLC~i@GvBAI|mPEGrtO& zvtn#;0b#$^W8==T36$g9Eez;>@xYy{5thKpVC49`GW0LSsO(3QLlN_kzp78063d5D zPeRuHNP=%SG0MNy-$?}rC<^g?Rf_<u@9#`Y{BW(mJ@{3>RhE)93vsZP8|oro=V&88 zrt|P!MOhy_ZBQj6h<7P{g!<&_?P-hz?QBoWxvHyD=1kF#>36w}Jwz02WTa8TFvxo- zJa-Fv^|#92gJ7~w-!a@uLq&}_gdcyM{pQl>-}-Tc^z?9k4gL#XcA1BUDo*6MB%?$8 z!!HiSJk%Kj+jZ!$V3mx8BCAxnGNdKlnH`5Lu=t!KRca$IAL<Tr-$<R2SA+C%*}otL zK_g0}fr!ghxb+&`a+r8J0jq6Q(}<QfN%YaZd7s1Im!I3?B0@x-m1GiY!2vsgR>ML% zZdtPG2H$OR4$E3#5R0?C*~+ij!b03(wH*tr(pcD**bp#ia$|V4G?LF!FEOOfSYLPJ zi6REQmiZ9|oOYqRum0qd=`jpSHAEIsThdhSAiSBLJEX(k+Phv%h#UPmTsRjR-QZ$} zoY==&${6GNOWV6F6>dZ#7ARgj0nWenYV3frcBRu4Ib?AthR6S;VND5mJE@o6IA|R9 zil#A&ym7t=giQjxJn-B&aX6ZIBc=8>JOUARm*MT_AU&LCpLf_%Na;mdU^gqXo$2Ll zofWhj_iA;HjA+T-sjiLIQ9X8_Pmf54tD@m|O@rR?)BrLq<`+{W?+<QI6y11$)=sY_ zhkbB{_YE!!-1%~(^`E*b3o;&v<P9P(<V$$F-gG_;+yKfxX|ySDE>RXVlvUPxJpS6v zz0C4$Fu3TVx)&|24xarq_U}c;Ft53^mNk?4ZhU1A(4buwF`ltARIZwNXF|&3^T>eT z6wy5Y7Cq?{;RrBI#PpegBp(wzMNEoVGK3q^E%o5bvjX1=I-a@#DUm;B{`U&KvT1u) zFHR3b1yB{?0SHnwJA3bh60lPQcna3Yrlr552omCO=R~Dj5Q~^X;Mhk%=ii1P^T<KC z<dP4wl>qe5nl}we=IB3}5z33)RwL6!ef~jB!&_Bwf?mnXnUpqD=6Ht*!xgMw*NWbj zRUo4ld^CzDCYEHs?C@v}6GIXhF5uS9@2eei4%U`%f^yRj9vB*ZY#T1D87Ml3Y66R= zw4zN}bE^`~?Xn<qiwxB>ro`;jj%}Bpg26oPU>FJkpB_oOn6)PY*nL*pSBOhT<v8Fx z<1ybH4owq4LOh}M$ZE_y_5U23<DDLn=3i-;%lR#jGn3+W0?Hw$Ec)iY8hyrG-1#9- zM=z*Bwl~+11`BZl4vv3Z6veWwH6C%b=xAzwHmnoyo!J^LS=^{Z39|Sc9_%qZ;wa@y z%zMD}FX<PunPR)*ylF8L>8NC<vLLO{*r^ectE~EuN5DAhjoA^Umkq({JwK}vRo|N3 zF_+^qbD`Waj6zY~!4g9FpqgqI3$KQx7S<|6yhBTU4+vF;rh2$lTYpgy+=vi17ijUJ z`@+t30@j2a%Bcjb%Iczi&f+M}@P1(n6BL%9!I@WJilg}vUp1@9SNswS3R4fy6p>av z3%y9GO+0$Y`owG|7Kvy&rr`DaBoWA=`zqZ_oAW$#iq^=6T{VvKkj=LIQN^d&<Haod z_SjY;BRFCNkYA>VVc3`wOLHGn9EX!<`5A5rd9}O|Wsmju<i7UwHvrHfDB+PQn9dNt z5`pYzkv9(N+KFq_-YNs+bTw`=e_+*E=X4kDJs>JwepPLnfZW>1z`GEt5O;o<?#D8X z+Z_hxh4$iBS(fJ#wmd_z8|2cImM(*FfZQkV<dIFx6?PLVvzm|qyd$mD!e;)HFLPos ztHE6&APFU6=+?EVV2$n_cUs_L(~|iQu|1D279*(R(|ZPVuM0C@O#6dgc~+HsNwgiZ zLRx{jNe_<AW9HZ?`6P?fkGebX-mSa{e$Y>@A=a}7RfpFNYX2oVjr^4zR$Z27MgwDJ ze>Ebc(><rVSd`m`M7_Z9Xcl?J4t#U0&RmQZbpGFhFQ9mVl=LB7TA$>=3;#na{6Xdy z8pMY0F+TXvs(H=oC!Hqp1CLQhC8tAVsW3V!k}|3hlZfj+{NUHsPzp3WwT}w8<q)nm zrUX`~;TN@1$}MY(K;j#_{TIYSg~`~}w9B_X$Km9N7-;#<jB~I4IA#+Z=bYH)LvUp4 zT&I|dchLq2p#R51@6S~a6y_M^pWJ5ch|}%UBOv`4WNSg5>Stil#k%T|T->wI02-pC z)2HZJA#X)iC|dD@A~)%LR}|~4?u#R(O_MI)y?O-+*#+ShhJPYb45<=%RHAO4w^7sX zpD16e{nn#(^||2JETZ6~RG`c}5Mmsc(k{Zi=~k7$Yz2K5gzJg&(D-iC=>c}5?-I4Q z)c4fOLyWLX(m*pAdHBSSsm_~n+U)XwUc;b${g69vIw|e6ZJ}tfIL%|Yd>rXFR5x84 z1x-ZCd*$M$f$Lqd6+$`cHg`O5+9^VvA-Mj7q8BCVQN;PkU|(aJHUYE*VEfRI0tjl= zz?(SEL0I{UXe}HnZ!x^gE=EtsuabfS2fq=RTp(yAli8@rI{QkIfZ2dcwydtI9it#~ zeaZdwL=R~)*_`C{80X8{9?gw^PWzdFU<V`QlDa5^opc4L$wJX<`2(vH{Zut10~_NV z@>CpG(<-lLV(cj(vqEuulr90;%u1g|D))rDM}=UmM9$%DfIC|7EpI5gmH*bdrK=t5 zq8r^zJNe)>veqDTus$rjU3BI{xwnG6OODw_6#O&m4(vJqN_PJ-BS%DBTac)ndzCv# zo3BYk*9nxlNsgU{r_;%D3$zTOp(gV6OP5nNAz1t}PMqlPM`uMc!V1No@B4~d!hz$f zLp6A2m%iA%TrnBP-%%Xj7zTe1Vx<k1rDV#5T*7S3JetHJc3kZNVT$kbu9m(zz9%ed zCBr`q&7Wt>R0_uXhCqq(FJ>SX$y|W!0RiarbZqCkVmN3&0JmGIB0&N!ins1>IrfS6 z8yz7MV4ECC0<j|0KT}3c8gEO2_xAN5xy@R5^ksO1E==Tt?0<WsVu!GuMl#T1A@fd9 zb>KqPorS~i45VE`rEy&#X_ute9Y$V=&2AH+KLAeo0)Ihh#|CNrRD~2naD2w1q11G; zYjo1b=2Xf6r^~++4aO=mrhXM3OH+Se>PiN8t9Iu_vfR?mU_-8ICP9YBr;GmQOUsl7 z>?1oUUl8mG`dlEr%N0TJ3KsZ!^-5j_rN3hGpS8TR(Z8Q2v|+)&uJj=MCc^HlWvQ68 z9D*uAoc*1P@Rzk34dxy-(&=qv18tGNLbY7h4|(4OOF8?Gc;9uDO#~gPy3R(3jdP@= zD7X;x%_d-C%fF9%&r@{FAYn}Up&n<TU+kY_fZt@zSmdi_|J@1>|EZ^gmKc5P1ec=r zA@VaMUJjs`c$+z1E+7k5e`}A?ln`H#ea0z`pHsnxSCc%<Jqq*%?A6x^4+@mK_G4Tb zq-33_8#u<P%nv>cHYZJ@>-&X5q$xZjzir7;OItXakP_5ve|^7Ma&6Za8UBB$|AiEx zw$0g_oXPl70;a7I;u8bxU<ziP5^OIC2er=oMddKB?A~1YD0L4M{X=Z9B-m3{-I4`S z?8u7X`%iO^(y9w;hmz$CWXE3dg<BhWqM1nB@V>mjNEgDd{u~lxG0xy?=b-mLRYho^ zAWP$JfA8m>`{S9F!4wQvyzdSK%IQX+0J7cJ&KJLDM!H5vn4~x4VOxj&264$@O&oOh zdu-m!d;59ZxSe@^@%9Ci_f5ZXUFN$5IJ7HjeX!d9Dgk}uIr_RT5dl5EG5TE%bq_Nm zC9G)2p;YK!2;^e@y2Rk16e6EbjaGXbLiXXY)+6^Jb{cI0yz5F&kk6qn8R$OwWJ~AS z7qWlPA%uJmJ27~^-T)lGKny{tu)TA9hf^#$?6aQrU5bd=to1%wyK&=`;g_6HOe~S7 zd6DNph|(LJh_ly=CNoMhPa`}4)w#U6dIF?>Cy!7d=<{2#c7}5H2x?<&a{m+NEaVqa zN%~EB3y&_cEC?vNxHv-#tBJ5}s%KNz;uP042{xoKqK*&IHZ)|Ynrxr~r=xDm_0Xoe zW1XP1(lfitJZC)yu(Obr&a7aWo1in=VkNJ-MX+@mjMT}KLHYekGC-+e44iP0EA{?K z)zsWCL$(Q~rJd62Eh85Fp*=|wiAd7-ujh&lS7oYZ#MoF#i;rR>y{uIP>8Y$D^v<t8 zSD&`w8o;t4;7A9Box&@zhceWR9Fa~)t@eHQ0r~aKVWo)zKeUX|@MlYNceRF7At`ld ztot|*sL^d5i-WRk6u9vm5(mC_EViC$Dbdc#Px*b{{ZEzlAe12r@1Hr0TsW(P%lGbI z7tqf&e`Nm0H3aqy0+5tz9{Ta%b<(|XVZ@!aP35T{W=Hl`W02=%=*I5pHrKFdRV1s& z9U6*r7w9#$@&h6RL>dc~wsn)DeZ&sSE<W<lp8J$X6i77=BGVV0f$C%qH4oTxRAbj1 zGaq$h>h3g*!5>Eo)~%)aIZz8?NEG~E6Vio}dl{JlNDTydhzD$<&^6(KGn3|%*`%J) zHVsnICVMIbnLZNdP%a239Yyd&Y@MzwRHiZZkl#!L$1pHK*$fs$#Xm_6Ht|H;wHh61 z|DA+Uj(XTk-Q1%J6@7%ofU<BLt`%71uV+4%UM^N<!eGFRS2-YZ=8*T)LnsZl6+RY~ ziF@JydK9!%v2t$om43e4upbIrS}a6W*V^}(y0jsofGP+=IYr@mi-?;!$?}rK|KypG z38)|`m$F)=C78epIQMA*zaHj@$@E`?CW*mKv7Kwz+a&p1>o?aeJ--aKXWVo<*^2E# znr-CuA>ztreQ4twt{aZlg7$qT!HF{~822p7b6-XC7hmXiG*OJeGqB8nZ2mfNG7t%1 zg*1W?N+jq{ub`gD5UKsxLg-5i>sbf-XPNS*)b%}+L@feTZrFcYUJE%>s#6s0p#=+| z&@6=<@Br}20jU0oUNSPdYx-0pnTUb{bg2cnf&HzJ8Uj^G{4&`F=v>3F0eHv=!UVS$ z5hB@RL!av1VLw6tv7eC0K|D~HF1)-!0Co25z~>;>6kb9~%(hDR@^z+_pJ^B5$&rJ` z9CSDYWtq5QREUZ_ksoqw^3!sCi-UW{FPm>MN4^+__K|C*xt!cK1xz#t(8jf<no&<y zfk8t(JLo8liC5jyqCm8NE#$&JpVl=BK5GlNR7-gK6dm{L#ma5%udYZ{RJrXml<>M0 zwOUtZ-n-Oiw3QI~fY3(bS=@Y($l9B|>hql6mh!OCQF3g8!KjQT+_e6^Sy1A^c<Ggi z9J+!2#3WTtj`(2E6?Q$G+nm{ZQ5BFb{J<n|FlQ%UoQ%b-XF6Xws<X1&R%kfsr<7Z6 zuT@dEoid6+BVNnt#AE-BJ?6MSEdtGbh!?0w%xXdv?I^K>4K|f<Kcep`{b(q@tf83g zC*u-aX0-uf%e>Z{f;ga5KcswcJOaz9`>G=P8Zts4c#$B|mmf)fRN2!W<`Il)4(q8= zh;JRdJKUDV%!dGOX&?r_L&)7vqD`Ix%q$2hK$p}Ei5A1cLntie6Oq#}l3%El^}{+# z$!Q9}6Z(Jup?xn4lVKxH0jwp!ea5thD?aF<5WWQwzh0_c@has~DpsX})zFSdFg$Ko zxR3V2_dm#mj2tYPAP@N?A0SgOF1>=+pxU;VXV&UD{SMLbc3x)2*mw_4&`-ocA-%>1 zGnIK_G@LJQNeijd;*vukPpCl_oq1yWS;*cEwf2J>VYjpIOX(h<7mVlg(4q@QSlQch z{{@*Pdeuto`?f7{2cSbyn(cBEGzlYJbkuGacdpG^b4q>`i92;#lz^Z(ALC>)##Vm( z*jdM~1&|*=LNA{#t?rB8pqtA|^ApaNk!4XoA&&Ky@&%F_e_Eo~4T{1eoS2P_=Vhhg z4TAJo1pXgHj+-0@Gd-iE?%0p#=hGR2hIZo&OrktR^g&WSTmrP*GlkeoS{1=J4vbn8 z`TQQ#O$O?ujOERLiSW82?Py2-*5<fe-L@Rq^C@IuV6eAllVg#QlC`7g8JUiA`2PT8 z<~|;Sa(6M}=NB5yEfz2XSkg~>1R9;L!pqAPL!OJ(S0t^%>DJ#|-2#by-M0n8woKvq z@M095n-PCnjKjHZCA3P0YW0kB;i4cz4iNmgL`Mj=Tt3dw>(9Ir@A+!2Y%5?b{pODQ z!JkHw(A0fr2j)C{=(EL7{G8JL4WS0?#l`*&6Kw)x3}@LtoOW#E<Y3hFtaJI`HBX2? z<l?)gPk3M6zrwa$*N<aJoFC+gXq=0Y1X+Syuj4;mSY~Je6M02X&G#P%5k!L@GN)?Y zvNMW4x{NJ}urwho3qKHlW`_z}P`Z-k5UOf=&`~x3z-bMWbb)@Kouo(%jGIrY)y!+! zdH$#RS(!B1Ts0)#``*ckN}TzigfYuBYSriTRx17EZuU1LPr^@oWztu3(J#s8v){mO zX<hZ6AFZH4mP-V0Os>yVoAVh~Un&cH<27nZd)a!HE5PfO-w@EF@Pjuhq(oy;0LXM) zue{P|ST3F3>!O6r2s{o%%TdUv$I>dx2AV*O0Z|!5&TusysC`eR43mD;_h2#HQkD+} z&OIg%BCudC!;tlT3$pP+qTcHd*g^)_o)|}roa!4ed5Kr5ZQzhs{kwm5|JDS5UmCky zej1F<O1=WRE(Z;7T$kXPsVei;ME5QKN6Pq(xFwpY9A)9<9`^1F1Ow!76J55Y19&rG zbs9|cDk=^LVT+%qz2E3HZRf@kasC8@S<U+v7$u}|vX?th`rE`G;HHB!$6p00J-XV+ zwDcOI>s_$9GB<3quAkAU%7<9Dh=K2rj0o)T`fnVa{#{`rIT-~gA@C!tI$H{Rs0d-z zC=1b##}|xN6izMrwzsLbgd4fS>T_p6HVkN}9mKP6vAZOC*_H7s7ny9q->g(tXlteU zc>mXXFH-%K<GGq3NiL7QE6io)0G9E|3Q@(8DlTPjRT&f83>2%xj7eh5-MWxGc<;B_ z3dARx@hjk&-QO9)45`5uryo~q@FjnlJ2E@HW!OSx6+1dQtFijjPGA(;Xh-EyuX+iV z$!o6mj-Y$-$i2%TtyltUl<sE08ZGsfDee@p>P8p{=U)gFj<Oqj9^dN{1jW_XqTecJ zQ@$x5ODrKESFuwsQ)`fc$QK6S8n`1#au-~zBttA{E0GO6`mfJ`Np&uGfz?p0e$E@c z_39lxKh+c}8K}Fy*aF{en#oRivQaYHHw(Zvc1$a}<3{Svtf~g6j#d5wW~W#vU*0HL zjQ~*(sH5-Rsl3*KKWL`ode=!Z_AZ`7iaW3`zgd`8UX{X{2ycstku%k3;=RA~sK_d( zN<eehJDLGmjj{^*D5?1_yXsdmKT2Q!8TC17JWG)WmZ(07_lmx>$2Z|D@}Peuy0ivS z!4Ia833VDIdFd(Oip3b?Byq(Ss-z6ByV;jwE|A-EDI0D!bV~O`kr#sVl!grnby8Gx z+mG&avRTw%NgAVi37g@04UVFVoj&&mv?(Z>fr%+Uo}B?ZWnX?z@qei-N@<nZ2PU7I z7BjPYaC^%EXU3vy^~iN<65`O^W`uc6cs#_)o2hO&0;M9<1*E^<Z-I^x%$ub_j1jfX zAZfT@@lNptCYY&B3_Fnn_Y2)JW+;cvsdz(L{|(s9!7c0VBzmf+_hnCHHf)zgKGKzU z9&VUd)t|$t^d94uT>CQA)vnBVIA(TgDT1JDQjmPT1wn9k7GWV4i;#oF$y-^zM-<0% zsCzr4e^IlL2`Ps7zy?}@(@v?%r^^(Hgy?s>8PKVdxt0z>VO}`az8RVx2)3BzI3X0( zBbPX?IA|=S1&#KEnaDZCU09p9{XwfKuI<lCIaGXoi)F*0E|_LpqY8GgiWN@iL`@qM zM(W2W7qFhcYyY*qu?)k<MLVI>m^HU&|6ci-76vbYy~=#Dks`2bt1Tn4Tp)aaalW^& z(lcBEC8ZJkI|IU<3(Mb<Z)W!sOL?0|6jOvxWa(~G8455|5m%uT;OxA-nO>4n!fS3| zkBDFWN#9coj=MK+Ydr_x0-@Po?@`t5-P!Y{F|w3mtT_9VuGiJC&jf(3I|;5gM`Zc_ zt^#U=KAduoj_Ac@fw|#xll4@wMAx+x?(8|JDd!&9HUS8K`>ry3mvUMdi*F(?$$}qN z{A>QW!7OuZJWh56b3|Yvrp8H-ZaC4+_qg@>(fh$pnzZFc1TsZ!dP(OMc6LrEaOY`{ z_%J$KJehKWDn+DW0g0>4*TY92+8I*&PooASJ#KrJ<{zwPAUMB;eS2%tlKT3-&V=l& zB}!m*jpIMB8Up3432&-JD@__@sHl)Z*Q5Fq>J(W~y!AxS1L5yJ+le6(b3<-%Y>lai zGl%fad-U{?VTXqq&15qqL&U6miiw!6i{x}$18-X6BDd!ayR3_5SXz6S<(OkodDw8o z7&0?CZ&A5)g|P7(;V6<C43K^9|I+fhYoykOCigtq3!%hcGmE;%tSQe=!-2?dF$%Pv z>H+g0+uc>G=;_yYL`z|O1CcX*9Ai8$W7ZSAjU(Qx4j@~Lh@{^nSecmZP$6}km5%cb z6{5ayt$4t7j^Sza2O|Zb6At{fyeF&!p2<E)4IV#m2)$x%`WBQP9`gQ7%7Tl0h<gzn z=;@no9Np}|P_r3^X#!Jn128ZIePo?mohjK~0ssVH&t+#Ab4_`6rqWdQk$PH+xi^^9 z<N4ILAjd^i|0z9__+c;%$7vmwj(X7_yR0pd*}IQLUWutrYV%6VsRq+pDxB*Gx3B8L zWHIXS4GKD)5ME^(O{OO2&GA>SV#hMQ=tf3k;rsX%({3Kd-A6QHOeny;9}Jz1`zcR< zGi53bNIsz+zEM`{6VXO4?Pg|k8#7H`EjRoNFhSvPD4a~r7E)oidI#I@+DTpN;KMf` z*hqcc#BY{7MOUU_NMoFCg;6bf9k5`dbi5VcJwZq45fRL1H5-Qwj1d@D3QdL(>~6-8 zPDjA_7doqC8&eJ_H)QLwNt(2bC+@~HiM%KrWn^Qn7SERtaIxhukP-R#AY8*76a4MD z-&cW-DMJvhkHgSm%kaX)HJO%6e+hu*qjnafnXQq!NkGu5^foM>_D*>i^NKq*mT>D{ zBKwBWqgeKejF*?853K60`2>$#_11m}3G)>q$}2`swK8!1t;U8zU|HiMLzD1=Hw=gu ztdhq{ctj`>?9tWZagy3%a-t*DjoklxicM;I>s9J!>NeIv)RXWIq%+@d3Ma1OTx8w{ zPSkMeAq0g<dz9T^m=0?cOv;lZ-{1VMBPiV6w49CN{CtC^1~?5eAG1LbgURi)31ttk zGmvoJf3@w_ex&6+RBXn|GtOUi7bC*0M0mdyOx)k5!F&0W!i+6wRGubK=sTnvH&pYD zcqjHviB}o$=dZe@t%|WKur%wmSHoo(;R?f8Q|v8wx{rpUJ2Kx;KEJ(n{fu=Svrh<T zg$&4`z1gZ@<Gquzku`&;L}e2ve!^5=pxa@TiiZ&@h@p;2F13ob$6^nV9lexu6ALyg zkIq^avNW{DO4!?l4>zS^O+Ou0a=;m6%T+#;zbpgsN@@bGiFAuYnyX@$z#%PBs!(u| zi+Rc{)dsVyu=;XjaKz{oMoca%#)W{<)xcGkJ!h`$x^@rPY=GS3|K2U_Siua*AbC@N zry0rtgwsj0;nT>_(<nxNGS3>Fgy%RIA{sLvmV`z3(7vKVo*^_;>!&mQQ&UZA3rY*l zAz}9A$g@(#JI}~#drUQ~9`WzIVv;-iZn`n5i4#Zy==dKOZCpnApH?Y3??418f4qi{ z^pD;hwaEp($j8Ortmol-86Yuq6Jn7Ba2~SF7YMQtr&c^z+(3A`Zls%6NiyJ&8G&8? zsrO^2ELq)j7&_W$C2syjzd%=Sy-rRTC7(f;?1-=&{fKXo65H{8vLVe!@W!u7BnHWq zX;UXfTNcg_vic26(J&toHq>LG>M$F{OD*>`eAU8*I9%2$JP2zx=gu)*n<kCQa2V0e zJ9z+z`e!>$GzWD2bS<-v*z)~RQ$Q4SVd;*OBWbHThj^$M)bT)$8L@+4wMN{iJvEot zf%X}*wVK5Tt?R;d?+L9Yee<$#d4OQ3mI}n>gA>vIZS1Dvnc23bHxVx4D`S5R!2e2u z`O@S~O>2ZSYv-(YoPmZ%9auHLBTw3Jq)S;7!u$%Dl&Equ+AAapf1BK}YAT)Zuv62$ za*9chh>rEygD9M&Pu-)q{CLM(ERg`=oU;%uF&Q6Oxif8(9Kk$W`EZ?=Vqe|!1(3Q! z^6{UP0H{7pbi=8%GS~}+PJCl8%?;5sU8R>TAPSar>^T#OUF)2-E#!K+H+w%7XDlwK zibJeu$wwEN*C%%LeJNwBda#{j;CJGPRoGR!94JO|%lE^uEL9WXkmOhX!>g>&;tcYk z$)PO4vOc|&9)*{pncK78VsWfEz(*YRpxA^PFy<=fThtAyM#jAi*D?!h@+N~}dH2B} z9>_F%&;D%t6=t2<i(<_mg=L*hg?7!u7LE5Kf(V&<cpBI$_@~FA98O!|g$5yg5>^U1 ztE8VA(RkNmct26*<3OSa$yPg(iuYvBp`*rL5}>v8U*aV+KrrsoK2m9TBA_7U4H{E@ zcM$+m=y05F5tELQXC;~znaP~&q0f~9=-vVQ*;+WHtk8FIhEHJB#P@0P0@P*&m_FVF z%qMc`jL!`yg(1S`ic31AS&nRYDtK;`-dYRYTZxvh@FALFS&M)pJe|W+N~ot1t30ki z1UMaf#_;9n_(dyax_7o|jPBJ@xH}nrreg+jb_zr-NUcn;Ls*)kZ?H~rkbr3CU|?Lz zK~xDNNO`pGOEVA?<>H3U7#b;0t|A6!&^A#jr+4ISa4OKBHDJA+LRYx1@N^Vh^l(kz zggQ!<mnNn<E8d;7iVc8G5$I`#P!#Kl5TK+B`=Ud$e6NIM@m#eIW9{V*nU=^d?5zn- z%Zh?NWkXZ;XH4ebCD9+Ae3^E}=bp1tK%kU2fi|o`c{Yd8<c7P(xG2XUhvj1WAdB50 zClnpq5gX7K+_(+C2ps`4o|5MpU@xN!gO48HkFf(KI9M-+c+QXZT1fT-Dxw!A>O!Ty z>#xa6ZcveG)Q|6~7fV8DEtVBGE^qY@L{HU+Ekw?b5Tp&um2@J#GVHIgGo;ygyrtan z<pr5^eu&CiQZrQ<)pJS=*DI%w93<ldBKfp_%4=x!E1XNR!%XT?*vJfiKz=$P<XVH^ z#R3P0IGEEmeH1f6<`$1tL4hp2q!Y3naSXj!fW1u#FNxf&3ccN$`y0#J?y0)0!0D6+ z=2L{Pplz`{hwwoLssYc|{z>ouyrW_Hf8EirFf;wHpJ=JHguJVx{&zoL)#SFly@;*Y z!>}DPlg~T+fK!5ni_Of)6c1g)oW;f%9&Se=e;Z2TzK0b>qH&v$yeyjAaa*jnC-x4F zCPl96UcV<aFn!crnGK*uqZXQRG|C%hi^C?7bEUN~kZOwX<uxrbWW<@NZX4DKaQZB< z%}bdOlguBjJA%xosOfSP??8-!>_%)v+5%&DrDQ@LUZEp5R*CL_mP;c3LebXZ(27?$ z$Wr)JI<@9SVbx)k!wQ<@TR<auYuWql7g7_$eq-SlkT;d6zv@&;<etO@-Wm^1_Q=an z&0UB4c`~gDyGq=qC{&i2&Hy&0l+Tt-JJQwv)QijhAMexd7~*|>_!FKlRAnk+cxMHG zzxF>1g?AvWX#-$LzTah4GW@7n^qFFIV`184ofp*XBh9;vFdk9r)7m9|j0Le;M-(Z~ z1<ICmQjNutMH-X*jRV$JF$uKWC(0^PjHhEU_oop*6z-2H?+A$!#L=J83d!d1cr%Ig z-DN0A$*|^d!8cQ16r<>O!$z4af-D`-H!Vgqd&+iXGokJU!1a^a-mnO*q`-=(?7rel z>}9t_RB#PH8%FbEq}>4$ySI6GAl1o4Xo+^4z*%Bl@$C?uqpz&rRfX8*BBIRAa)p9{ z#;=7iaWdt>Enhe_;UF4yfn70RlBEHz_hUH}%lV)R@M5$wsc?8iyzW&B%{6TkacnD{ zX*x$~pL9r)rAj8~S26wEM-gq&fVnSuom_7UTF`_lO&qvhrr;^^8MG?6pnF6uG#Ln8 z!f=LZN}fH}YMV|`y2@3?68W=UuE|q+eT}jKIn}6GXCzfmN$?A}S<LV1>=2ajWrY8* zSVGsRS_m+ljJwIU(9%cz#oPW;pljlin(#*2jY{YZ%-AY|Asb05ab=oCe}@^DrfF~G z;M>AOH~F}s*Cph<I=n|pE3EFtk9+u3;cVAeiR0|H)e*OpV?T_u2v9BQ^=)pjgW$a9 z^?P_?<%jC$T_R>cP-61VB_dC<uK-OufhlTCLJTKB{@DAWn^9*nL+$<*Q6+}(JIG&4 zW_+!(QhlgsX;w}cxa{xhZtL5R0DLE06McLw2M-yDUYpb_F=A}riKEdNs6^{wk=8`+ zSf3O^C;z9Ow2)Mp&_2$IQ5sQP^}qhJ)d0P*Gs4>uSmT6QDSlHPO+ZOix-Z(S@s{=6 zw1&dirVT(hF!NxYZ(-3a-98!PC+8B@J{`$g4t(cq$mUyylPaaPH;xJ3zQ&6;^>Vc@ z5)9rgZW%6pEUpv`dj6^f_{TR#h5?gl8qh;B;Nd#$keuBM4PUid>>eDYt~GPafSWum zH0!d1jO(6Jv-fWF%cFB{Vp4AVHNsg<N<h<j0f_di%J&kb$OHKtqY_Gt6G(R4YJKF@ zUp#+kI@;ykMyI8{+;O$k{$Uv_nN@D%|3bGn0TQ@jZVn3S=$DS?Um1f@KS5p-F{Y>_ zDWH?F{k<rqwCrJs%WCN!bKs^MZ<XqYs8lEzzed17glvg$Y-=G|o1ES2@m8o@O%PD( zhUDoxOFO1kvUjn*2lSVkJYRd~835`PC4h2SYd-{b4<oHAaZ!Lm+nMX&<33L&ZI@ab zXE;(ccnmwfPT;1|9iD(2oO7qvt}9Ay-7Om62H@WMjM6M4N{Y+oxH(nHHPG^J>)}zI zVBM_hY=WJCm}~N~W}XQ1*cW~3l6_OUhdL;5U=;9;UI^pBdytt&6j05atH#6@<fYVd z1wtIM3mWcujibL7v_{6=Fy}0AK+Fu?{Dhf`yPWRng{O8TX}!ZITvU6SXBOm_evB6a z)Q7lS3Ec%j4ciB{*Hb#zZxRnVcGl70z8{nLw}1e)287n7IVQ#A0-nt*vu*xj5`HlG zz5NCb;`f5y@%>P>gL(md2SJnSEBkB^VA5i0^+UnzoiZfkwDE;;2poj<%SeVK6|oFy z@&(@hDc^uwH@s(YBj*TC{^k&k$5wD@u9=U>-90`G{zZP>dh^oI>19*vwK4QP*6>K5 zzyFE}Or>A8CzXa6I?Q5=cf~6u>C4FA;^|aS`pj|e_+7pOAef;+8SOE|1dglvICiT{ z)w$f!>*2ThISi;sqgTS1#xQ;AuzbJhKD6$59V4x^q>~HTFBLw;4VMi{e4r;S-)Pnc z)%lxVd^-~LcD$O+7;6^c>o6s8=&1m<7YA?(RO4KU9gnV(0`bZntc#TjRFQl#2ZP&M zPo*_G%ezV|mShbZw;ZBhx*eb~IEaLu1nCKazA(6DN!4^dI?QD|YPl(ce==AE9Bnl6 zFq$48Fmj;>Qsg)jZ2VU0qdt+bWfVb~ow1i6%gxNcV{2KrDsMW}$#1n{hgs_Kpi?x} z@SZ#6+U~8b9(M|K1@G{5L>t#JwPHzr;|vNHU#iOQ1jQYJW0R`ZgC2ANh`o5@qSlwk z<OtY)zzH-fKZ`Qp_u(MBBis?^4I8l@57nEQC-r#Ws@PTp>vL&nXj)VpblA2VweoZ^ zISna;-&oTTL2Uzq?-9P92oKz`Ig6$8ht6JnBiOdFjOXI^_a)K+|EG$GQzo28c>j5w zd!oq=HVz~+lwu*yD_$1}Y^$oY$<`Tzof7vR$+OV{fz2Y9b(R|fXk0$<f_~+42X_4; zHBKv+iu>^qGrI<g0i149TOJ{}8);O=N0{QYGma7zJDgh*2U{1G7p!tKM_`Spq<;E8 z{nxvK7R<c5U;N<{AT)Nxel^EWD_B*km*RMPFmo9p6Sc@(WADv$cT5`Y>04ts89SGf z=!&}~G`}kr^(DWih)rZq(?cO7A|?t6F2Z;T=G<fRAm-bxF`LK-MTG}||4WNF+22JU zwmN3)U>WI~FV@^g9;WH-w^;;)b#;x=QC`dk)%}^-!gs7qWwqVOaeeuYvhT7sO86<N zs-R(Ny>pugooMzMw&%hiI?VY)7Eu8SyA+IaRNe#6luQ!_5N2G5MI{lyFyB{qT-cQ9 zRxp$Wyt`ThJ#ggC6Q1VLWtDlUJvpe~)6!%kgk37X_1V&JEF<d^r0FDa$A}2=JtYpL z#}bGrvll<nouh191#|8De1Ssx;a%){rYd>(!%rXuFogrGKB}g>NV3Az#7d#z69(Rk zbuOQjsUq(*I)*z$LZ^BaH0OJg4ZPxv2}|%2rJUaCVDHYZIDCq^P(E7D6>W>614tF1 zo*$n{LL#F0!bJk#abZl9!lGLGJ+cGy0B>?8424uQK=8JkZmW|?pz?h;(~b(K*LJ&A zAKO-qyy7!D9_=cGgY>lLYl`&z9evZZNb3{Uw9xg2h!yu;7R^NLRKWYtJbHlT2(x_& zAtHIp@M3v#*P_VRNo#so$LVY_c#>6j)jFHyE$@s11}f!LFx>I?racVO?gO98N+54M zRIMbZ`m_DUP?10koBZwvJOyze*Z3Tb_<q(mf%isnRT;`S?l7qw_dTvyWwx^Rpvv@y zC6S9EAV(i<C>H`?q>2^h%5g2oSDR-dr)*p@N&LHz2fNaJak#F^#zQxvJJuY@EH384 z=8NF&=a)Q6rwves{Wb`Dra~|LUAC?=`)kCn`9`Md&~f{}UotRWl(~sgImlWtE<^*G z3$2xTu@+2kB=uSb<7{>&dH;H>@@!y$2xlYRKybf5rNWB;JB-F0kO_~)-$P$7PlMrR z>KatKDQKF6oUH~51LeV*g_t3|A7WHt9LKomXL*+|_=utTSTIdbzpn*I8Gakwa<s$D zWMW~W8Hq43{V}3#eaj3vZL?=0;j=`HW>rN3b-O#iuUe;x6Yu)JI<4B67Qq-t?yC)s z_X$DwbRucl9q@+8lB~SYq}(=h_o<qDlh_eHmG$~%dMO`2SlB>9;PdmNM7TKin{d$5 zI16$~?>m|uC>J%~Zsow~6m2~|Z*bx#6}neBzMD4WlpdX<*1at~sjQLI)iot$|1!J3 zmU<c{*0p^(FskPHvwq7y(j<!e4GMW+&GA9%32FnCEf_TlWX|iYpQni<RsV)*+cT_h z89<&f{yYVv&FVQ{6&B#s*o%=}dXsMLdId3}X!#2mny-X>hc(h}$wa<eBl~bM1)=_e zReEpo8`4+ls$UNfQ^~Z*tB-yh7xpK{dU*|s<s5Mi@*}m!LD--}9(~>#8GiPn`OB;7 zx>eWo3Ux(nB6dq!Nne}tPp)kXKO%D2ShB^XPop<G^bp7nh#hnzY0wvO96@-}?1o~+ z=$X6*Vo8Q9fCa9rM`DaUYul@|{hqNSa<*D^W3d;>Yc*1P<Gb0RAUr;rmY%pCV2Q(> zY{aOs5k_2yR&33X%7@VtkxecyJ!2xM&mqOCTF<ffC6A$7Iq;x~?5*Xf`1OMfHOU}o z1(_At#LJ*wc0Mn{Tu?8CJD_Gr;pV3JEcGH&jcR}C^jIts&i{POFWN3iQwP3Fe_yrB zzX^k*Jnoa%@R_Cf>S+?V)HNwKH)2(*<b3l<E$%$*%l03yEoTjVWX?0UAHcmXi!fe+ z1`$Z)gPa@RWsR}BIo+a{#MdA%qy8HUTyGpmi6+2zf@rFbSZHs?>=Tfa^y?<%|IW<T z6}&p5IwiiWf^P#t*s?o-gA&1J*|XA-j7?KsvhFW9;NI$&gl%1SI4H#-0FS0;?sj0< zpnm965J2kT`79n>U_7PMhiohABf+Fu!QrhIfQESsV*YS#z}i>~M%P-};%N**mQR}| zKtIdaN53S)GE+IxH0QLY&S)LR>za$TuKjB|M2mb8i2TZ-Wa($@>Y7hrEk3V^pf+}q z4gn&^+7xv0ohP`V2?x?+V<DU~uwlYdSwwcpdnE7hq2EIfVDny}u?O=<TgtxMeP~8k zk|em3*GKb_a$+o%Zu2>yCuf<vD8C)^soUB=?l}EsJML-P?iswA?L-f=yNO$OmTwl( z4vepWuuLrs&2HP=arv+K;$n06=<QfOfUtXCjRIRUf3Iw4x?7{mF@zca0v;FnVjYTp zgdOEHN}A2a6VC8jryCX8x#X^;K2R2n7kfR|0zU4^IWkI?)Ptnn91W^M$gM4K!R&F? zusmUOzAW&Qedw+#m3M&yM+dFceUadBBJ4Xl{dE{S?(qJ)W>FrN^3uF+u;NgBju5{; z!wNPVkg!92`vz%FcpGS;F#vb#Gpsk!Tj7fZ%_d4z-xXlLUlLaob4+I^Ol+VQ8;gj# zx*%cHi~Qd!tF~V`%qT*oWA~l5e-ZL(BsBav7l6d)MNnM!zQpZnaE_&#*-H&a0d-^d zOts!;DSrtrvs^P)Ut3IA03(q(yPX*RSC?xZ|41Z)c*uH>;|&f;PlB@@Eblo1m}t;= zwo)YIZhbi<WyOj;Yl=<FLky2c>wpEVt7W>_Jsp<(yO7qoh`mZNvW7{2L{&+-yH*Ly zJibX2U~W-}sW*j!BBuiEC+U|6@0_{XZpvtgc&DnV<{68@i$0~Up~cxEAtD-ESH^2_ z#}D}92HGn+0Qq~i4M6h^_;%7$^?FK_G@@fbj%3KuhVFkxOx11GB|U|GGBhYljS-I1 z>KB4QX}~7!`IIc^xpl<j5V-Y&E6X7gio+Md_vYpUf@qJ(Mo~M6bwlCHNdUumhYV6K zM(M?&y3ygWq%f#=n3!yB81{nBs<6wsk;9-L$rztc3ZG%nKz3DWf(X&pk&IcFAJPM- zG$xC>DVH0KpWEBhSn7xgNPp_1DY;)9c}3&Wy_cWqb5$spt}qL*7rt^=kpGs`e+M!d zZ(ca-P&XbxTMl3WVrn^govlAmdUJMR;r#ztpgmZ>Gj;nv{B^!cj3NS2zOn|L2kbLO z?c83aGTrh8TFx6kd1$K-jw5Yr3Fy0$O6<h8<7Xw9QT8{4T4X2yCkitQT<X`-WIHBK z6GA9N((TRb@IWm~O~mM4Skoi2(O_#lF^n(#{YP0xh@Z?6<)v8!IB8vyn$06LK_wPy zXl8?vCAm@=4LKi1B<#r;3mvFWBfKQr)C1VjYsO=44-<o7blsya{kD@3*LY?=PA5)+ z?8k(AUGpFI7#!cb`R{UF{Pu=q0ucK47Ny?d_j?PdLle?LGS-JBS}BW=Q7`Axhl^!9 zuFAL8E#0cSL**AZI5V@Ytgycr+^=Z4Oz$>W6cj4<%wo2nljh&FOjc|b<GY&&Uxk18 z9?_{Yy5zZ#)u?Uyg%q6Uj|Nspn?X_CAuh{0Z=l@>@2ei34?P6BvuOL>VAh9vRZ}+G z0LI%OFd0)j5<I$voyvd)@3cw9MB8e9c*2wGNj<7hbgJ3H#veh19~s_|SIGldDKhq} zvQ?cg96nm+EjiB)ps%U90qI)GN?jeH%}$azeKRF?V;gk5-CO%DS2X@A{vcv?Lgizw z%D3E1#;v1RmyT2eB_p|MsNv_B08}$BM`PN|KdgQF@Vsjwq{q127bcIXk(FxhEP=8h z<mmwy*R?dSXbna>ui}|zY7?C6Y@~!~*eSK6Y}3ho*=PKhFcmIumr?h`)Id#rj;%A7 z38WlL@8njh$u99jDwfb#DPG^8zc|0o9RD-|f^xp0i#vE*zhH?Y39gQEON@kPjZF!S z1e_CVPU?Tmyfa9F^i4sc%kVIXQ_o}J8*zE;o~*Ic_;1J=AGWGQ`2Mz>M-Z`Ur#|CC zm+V1To18A`phdF6D3$UQuhf^aL6t$DC4as9hV%18?OV!OnSg$jisR@)=hH+r?T1w< zlu$m3MLMGx0;VZQ)Esy2R2SL7r}A;isFLl`Cqk<lmv(1+Pe{b~27BxS9sNjK>PD_g zuM3SC>g^%MQPE0w40e*g`R=3~SyINFM$cT+Mqdq6%r6;DDS0zF(;?AH@q)vakAxm8 z9V8k{-DxF{J;(#CzANj<j!<lz7KJdEeQM!!UT%^QFq=cx4ofT{&0D%h^M-f;4WV{~ z>3FKN*I6l2?B~H1<6eHx8!kDDB5->U37^$DDa~oCVW_*U>3G!rr$KW~tgb`lB_v`s zQF~`*flSzZcXIV}zLNmMEhZCsV$IMVyHTx%QZC<$IJ*fRkRg)oZrHly1vlQ+ZO^nE zz0!^Ut2g#xsX?*n*!Eg8v|-8aL}UZ~5_<mNz92}vzXZRk^=CU0wJsx*(!nkK60p@q zC3~G{Lc&@74(*po0ZNpCDAzXQ2)@{TZ$<jg_psi;$@=DPLC9}MtePV8B-sBxd^|-* z;v*$H+mvCyI%&9IdIKU<HC#xF;Q9Qwe@4}3IW+y16B(i=JS)2b%>)Klx?P?htb-*` zp;#_C+NmCw1#eGND2#535@Am~U0eT~5CU^oeB)O+tCoKsAVhy`=j-~ZLg3ZB4Dy{` zsuNm4(Ln~32@S@|>ZE2`8>MMmqD79z7*M}6E<fVa&FV6i^JveU-22|AOcm7SrB}UV z^+_bFxCz&6+v6A)$}De6s|fdT#^V;Cpt&@GZIlpT!JcyCNR&V4ZA@AT@M*Aekh*{y zw*#!M0#5f>++*_`wW=zrWSc}d*(Z9S9grb~&hKoj*ldy-i=$59&aH0Aihq-(l89a= zh+1)TY7^#_pXv|ojRYZY>Oa3ipsKTyUenVvhePWJkRmkiE<O4;^7CJ%RO!5NxI0SZ z2Y#ayniBt;&ce91+V63`trE_Sj~?~7g(IwG*!{oVKxvqDHfrO6tkDSI4?L{M(5JT& z;Xm-^dmUu!*!G$DwYGlA$!;!FXZ@1PsoekKb;a@+Tb&V0bU(h8i@OZZd@uiF44I^x zNj}Cf4H)LmO!ZY8>6HIrvlTKfWouX(=L)6!3sQq_mb4v_u0CY$-dv51!^c3<D1TsA z<8LsU-)_sR_N};eFuaZgr2UWz_!zVlrz>^5@*upVyfkA*$XKxjaU#{Mcm?Ce9&B6c z)l{;Cmov`IlUd`dbsg`4@uk@Q(&K)S1k|kZ44GjWQyod<cOsBtYp%qFp*UM$?32E^ z2(i|!xscQi80oJO49dAWH{uC}-aGW_OW{VcS%)aCW~*{^U6Ea8{a^|rmurq0%#1sL z&7)?@@-&j!mL`D=PhT<U>oDGy>2?5jVOV-f@$J;BLnaczSisYh8|diKWK21_yccTX zw>UNWF4Yg1Pj0&bb#gy>J5suKIA7K|5#-wEC9uodhx(ikK!e*8okaM~JuVxnaM(UC zlcdLr0$^i-AWNA^<l|yN{Ql9m^}ZM9{|`=2VTlj7?htz*)c$&zgwXW}>t;!2pt*+g zpxj_cK61482I1jL6W=rb{NBfc-s>QE?x_I?-IbST4Cipub2TAC;bA9!VC@ripKXVi zRTX059O164+g=Vtl85^3Wk{v?xAFaIq9V2l-x;+Ujxoj>|7K~93H7?CH@I%GO=DwS z67&}LRvM`4gAg*AvE$&WNrHkk0?cEKTq_q9#(sS=DJO)%Sn5YpoG1R+nn@OlV#Iy3 zd@mm}E8l?^5^@>}%k`7JBz^kVwut_RZ`da6JF*X@#L<|A9lEb1BPhrBC5{$(SB`b} zesM+tocB<~;Dur0R`HIXzk%lN_DX$ARlA99jS6LR3Zq2{A&vN?UYcOL!l$sNagl5t zgM#JS*mY7nOZ;MyPkmM`gu<NZbH{k{wf*GKaLxiA+I-eaXCn}Np&h1Vv`~d6B4T<V z<xtsg5g@Y6fLBg>o<c4QCWTU>w{_P(&PF)>Etu2FtK1RlpQAh2(*~`Bcl3=v1t<Kd zZ8#Y+n0T2IZt!~-vi3{T3poJcG$%86VM}_fLKf?&kkcuJf1XNX?w{1O?sm0}#hATQ zfgK&$7m&aH&5uE{K?p?^oRGYqA>t#bU`lZ&l*U-1j;6w$tyY_hFvvGyr7^5uD?=)o zQdYvUqQuO=g9Po)k`ckGiE6rguhIDre!31e4L~QO#Ez<xM$4@g8L6XclI+mjV&&6f zd)@SJby}Pcgz~9hBLm*gT9~oKx~MR9x#Vm_s4oI3j<e;XQ3tVtz@r)KLCG;?z#y=l zF8YAeIZ*3Gh9+(zB}47OcDcc{1R_)Cz^&j`*N&EJOe52-NN*xEY(+kYswsD>oo=pL zt95s2QphwqA9#1W`m9(N3ou+aLihyFElI(EaYTR6FOQW`%13J;9LeY<`B*NNp1EhA zC)MwSI)A9mowE8%RnF|GvU8rr5#z5DiXmR8^p4R`f7ImWGf@rG<)CjakGBp%&P1s9 z^=479GzfXjl{dE2D^!n_Dp1+{C0BO=Z>UqBgBQDS0DXdYN%FUn_quL-w<l7%``Tgs zpys)N$p8s2n~1&bUHh$9rKJY3Al@FOa@}>d6c?IivdHw(@xU-@(@hdR4&Z38&iDZM zj};l^WW303^(0>PfW6vv@tXW_2~Vq$T6eQUH_KC}=-M$iHrtz`HNby3EX{yeIjDjV zji!5%^J<Unf!x^Ajc#OnU#)@`RCvUih_xT|8c%B-86>f38QvJJfgcI|M5ht#=TCOC z+3e-YYIHC#nvQi$k5NNtunwN>GJL454cgKHxZ(teMv|3v_?_0fLF@_J5Gtvm&hMZ` z4=nJg-#yCO;uRbm8Jys++heh%JljEyBVR`;H~{M-X^Hu!WV8Z_cbf=uttmVu2DzI? zo<#pu2Cd}f?00ywI+kc%EH`j$6)-st=3^XvlXo=Uqs5l$%@n9F@FM|&`>Oq-x)^U; z!wf)U1t~<mcTXHX%V(#E^4=g4&;#lsd?wYX1WUZv`hH9HsR(KjArnZDV5P)ZVn4+* zR#y~bB$hjU{}Ce3K~=JF(MWyBm)RMq#jd^&xScY<V@++WVT^@D>1}*&xEj>E@<_vD z-~-#JXo%MD^sIt%aj4a`Rf@oDeGiBW?oJuiYy09vI|FYD*6iN?_W;vXBeYsFhlX-| zm&tRtoN$Ob>148%r(rbxHOovK*_VR=pZWg!EaMe})%mtP4jB8XEVi?75eg_`^T%V~ zuaP7ZIZLpS8p@WG)^fvX#qj#P9+8&QSk7i1mTx5QR8xYwdEXaK#HC6m<UJ1VJfe(N z#r!1lnUUQ$z3`t87yirPEEy!buux=E<^=1Jl-vGGl%GeOjG#N$WzU$D_R-J3G8u?h zzBP=taIJB+m)d^(oj4sULgcnKq<S64X?z;9wr*DB*-Z7wk#etZ%ir3cX=~S3;drp` z{;8VHvONTIF@|}zuwmtj3nzjfekG${EO<)lE2mGprEkUkFc%;H!`L}2i^78m@YuF( z+qlQJZQHhO+qP}nwry+v<t%0~uaHzKRY`x{n3CRMn(krX?EQn%;Q}4=2U4S>V!FFb z9$isVIdYjmBh<s0fGC|9r~PqU$KN1VUL5R%b=4P!z&D<@);dyxM$*Ah>Xp_u=!ip( zVo({&F2Z2c1ltE8WN|`=1U2e$PLYJbd3QShm2j+;4T^73)S6YmhG&*k{TLiB(LHk7 ztD9x<oYWJU8jfw!6R<u({PL|m3OkF1ecIz*ybpc&#g#uwBWy){#}RUXnV{8lf$_=_ zb0Mf1!juUXy(maeGz|&XW;GP9dNA0<Jt|wijHjGvcu_rdb1?UyAopN6Rj6IXZvF;R z=QHn_iSAgECgyUXAgrM`Rpq5<Sc+2SuZmMwH{dvCM1$t5h6s-)Ge~V?Bxe81dVJ|5 zann|&1D;e!n3GJ6=94*QIr7)?TxBlRu(@#;+R2`_l#~ok@Mm-;d|d$77h=W97Vz9h zAmqY}kT&LJ>?~OihA)-))@pD0ug;zL{v?~e2t2F4lt%1aO&?D|znG6e%6FjlMahle zKx1KWez#>w5%mqOm1Dqo9*nRfY`%Yc3NX6^ciXZtNu|!RNqhS9A!yu=$U}9<nCZ8Y zrKP9HJrb)_|AlRtx>N1WYQ&QW$WnYvP!Jv+4=i4EvS6G}ez1N`k<{y)Me3CcB<n6R z;`+g8K-{%859EQ-+pi8F5f3t2PKWiP5#<cXNzs$dc64I`4$~ljh;VwEl;@g+<lB>r zN%kWh3dp%lpWlHK|ECD1InLyKP*-a=iKK=D{N*sb2?7!B%*CNB*+WbTwqSJp>5CSG zY5%u4&9J-Y9H}t27PDyVHTpZ1d91(`ZS0U}J~MQU@-&vyR78M3@GT)igu}eF!x;Q@ zZ}u~!R5tj+)`Tz@1`{CtPLI({V?1`vx8{{?5?&cGlP7;Pv-RBy-7$OwB3vMObWh1I zcVA)xH+vyUqRAKsooca5N&4X;2n<yER3$NO<0%>Oe{vJ7{~vCGlY{+#aTCfT3SPlb z?F)o7IJ7d8jhqVks?`E<UQeO+jUO+6z(r-9VHMn2lYSAW2E&EzPQZ#1{xO0YxsU`h z+}c&q{4SCjqX3I#NF3Z%o)70?g|VR4v#8dn3MR}g@(PU<@8i)Bd;%_Qzr%W@W{;J_ zUpB-5tH{A8#aSH-sjN!vqc%zi&%XMNEUCybwuQ-s)`2h0%9vp;8(0=n;!u*4q-|fq zu->k{@X?sVI?oMkzey-?=g1{M%~Af-hN^t9nQmVxO9U{sNyx0vgZ%2C{tqewN8U4D z>TAngb-#%AWfnvUkSI_D#^(gRrseEm(#imo);k0S!LRsCCa$QC^c6@mg$m67t>)NN zOPjWX!w>8&6E#InbjGbCa>EwRX^}uno4O=xWuS>36d52E3?7x-WS-+$RN^&3Iwfj` zwT#7bb4yXBL4XO}$GmmAn3juV<7CRIJISvaMPsI!bfJ!z2LN!%8mNfEnI>RDR){fI zqsFD$js78l=z9=JLwLS@F`ZUq_80hfzFu0yzR|GJ(WyZpK#>{c>w*cZePo6NB9={^ zlSQR)U)#kBd0b-Ig`5%djLHGH65&f~&rih+C4yYU?oXx1DP)B{vdP_^`TZZFH?&P@ zsPkTP)x%^+r43~IXpw=mBji-A#)kls$Qt}8mt-K6&^XMG!E~=@sU5<%52&&P-F0)I z824i+&MBTe@0C;c_yFVwR&y5G!MYtR=D4=8zO1QATloHP#|NatXic~{MTVL6NqQ)? zCe;gXD{_U7(^!L+O+^cTzxmt_&sQFka&0YZ?$_Cvnyrfrr@0#3EeVYVX*uZA5gTuS zso*eZaQ8S5gZ5*D;07)CZ$@BU%*N=k6l0Fvvwx8eZrwEzLdS+=F!f`gNm7hHzs7c< zkANzKt${Z2ck-~|AA*V;p7iD&-V6&2CyN<hD0?m~Wc`z-;a!vau8XWq)X48+Y;X{Z z`<GT@@?<@sQ-#2;5{p^WVY*og+YUv=gx`o1@!oA)IU_izz90d`DCkYPYP1T}Hu>rB z+DlPEp99)*Mbf5vm1)EX*fY!?q=C5B^;PL~e^5fflPt?~yzDVjGZDX8ZiMrwAzscU zr&NG#p7?fK6Cr;kVghS9S9j!}0C+n5as}A=i0#ur+%KwIi{}}?Iz+ozpq(!C)By6r zGlT#9+WHoAhd9e4GlO6@(E%K*gbMP|elZEKE<gASu!%Xd7Oe34^@ie5^ME$0CpC%A zY|FCUj6J*|p>UIPPY<2?8-!NCe0=M_<Ot-B191v@UBYMhbNv{{2<lu(Cyx0vZaDX- zttI?v$$akA6dG~w{OYX`qkf5s>{&>=5a;LZ5UT(w7}Omf&uu&V$JsQ<Ms_yafZ3Dq zt^dA?oz4|G8Bmki*UgB~WqORnrWx&JdKLuBZDBQ2ZPO#}xy%z*0Ns*K`WoC<Qr~CB zo5)69-QXaJtp=|m=O5T%@V!u13oTXuISvMqhdJcb2?zpIHZ5bxYYcM4-CYkdI4O~a zY3!i(73zh<92H>H0(xpYyj}>5G%{aaVIt?L%wnMo-kcXyrneuijs#IAbQ0|L=4VSX z{9P;y+E}Q%7}W)I{FaTe9(p%a0~y&_A;85iG~xtPhd(YVup=;2Zp#`*90MY+0qw{? z1N+I6I@)zIaa5=qd2uZwq0^C>P!kkrP#;<{+QEzFdV=>Z*=xJ47F`MydUTEmgoe2K zD%<c18fEEU!Y5dX8(I4c7j_Wi3(e&>!QIccxR+`y#K49?Rc|=ujH2pQ)^vuCD1ri{ zTUFmBN|K`<kt9=>BC$1f(k|@263*Z5k|ZHP?7)VcO6}>aqtHByz9%r8>^A{_w^tA0 zKg6!<nhEji%vNlj9A6319$gzo>@)sE!0j|FHT@02H1Q#WFoWs6vkn6I6$t8Hgwyg^ zr#b^htArYe$E3+SJh!9krU!Nmh?`5$15)JPvuptL*}0ZvJ7ph($&i4BJ_m_*0JnlI z3>O@g{Hct+^t;w|&Q^*coX_*0jy=|7I##vK*(0qDDe$SkgAO4@<?_0=<8boNaAme% zY@(Xz$9txjegs7cDKH+Vn$@(SpF91zZ_E9X!*ubYP=19>x(uQ4YsA%gv<v=&G)?o5 zsHqjzjD!GTXVl#fcuH6qyy=z1@mjQJusnu*$*98Nuu}7317DE?5R&}EwftdY4<s?m z!^CB_U8y_UHS4a3YzYb99G+Nd_6sXe^Bse~U~%wf7!v5c@E$2N%=gSoXU(%ZT1phR zj8>{)X9ZkC{EFw8jsC0#TGw;6kn*Xg6kCc7g2Cc`>Frzjw71>5#n<8DN!uacjMpp7 z?9$rr&(dKosH9h01uBuWfdF29*TtyOwrGePZAOIk9J-*oBPzgb*fU$~c}T{7ba%|6 z&Ek8sdLAW+9x!^Q#TRs|Ekd>Ub-h8!Rx>k(&kV!&5g;|npBd=NEx48YO6LfQXcW;2 zuqy1j?vUhIyTCE~NVRZz(@X|YmGEB2sfG{4*x}J{X-K54XEt<tT-I6u&rsdvXnXhi z{<~R}1wz<CBqTf(06Qivcp4+1|Cb!yCFdbXE^VW~viCNp&_$XE7K_Rq`FU+L?(Qs6 zjgleW5G|}tR;5USz!G)t%R!6k$TMZ{9hX}7UpmFP{<759IYa!`E^<tPKdM<_!IbNg z>w=MOZ@q9bd5r^Zcks*myjv7?aS2Pz3o!t{Jh*uEa`T>s>+V5C+n2Re|MmVm);-9d zU3aA?Fz*=Jg8agm#y<-Y4QePQ?vn~4__H$w0O$^jd)}OtNw%`BRre&gRj%#>?rF-b zpKorVHEAH}eJlCg{w?mPsc{_d-kI1|zWej~U|w<DmPUOk<BKg91oVj!+<4;%5@-sr zqiW};xK8Hank<ClZ)I>yi4xib8HWTxSAx!a)zipX)Bzim!yb<QrAa%1;R-dNdmj_> zZ0Bleo-{yEe`Z(&yzoY%*$qQ>s3&7^yn4}0RGpC~0Dm{?xu4+E`{773FlhFb6oMBM zYKxs@UMtE>VJkkO%bN`1&-&P3aHFU@30`y#>&`y0vqprzb$Q!p&<Od(&d!P?Cc9mA z9+26)bes)1N)(AU4QH3us!iPQ!SdQ?nmFPy?VAE^O<N73yBFcsmBA<-EKkT+aDI|^ zvq@<<nlz=!{R_3iuC-en``c9*l3TQnV3IR)HoE?dG|5vKheX1{`|DXi|2R0OrzQu{ zwewrmO<)H`lZ975wibdvt@NrWjZk7;3v5AI8`~50J+acE#x!-Xnk3m4gWk(8nU}zv zWjOa9vac9k>1^1T#zh$W<I+C#OcYPmiDZXww=MOH^t4d5Zio7>AAFo_Q~8rEcNN-k z{@DUq{orv>ga#kp4e51*97kL>$EN8$wyf?BxSe%#(G^w7>X@RN%6obfVx+w+dwq=p zMJFPP^k9>)9!H_tE$C-*!XenV^-2!c*}(geFH&<V*?k+0^8N26Zr0(Gk5vB|dZPw` z;(JV6Q^6PsRMDw@q^T7%4VS@xQa-P`Hl;*Er9<jXuk(K7+ZbP0@XF|1r`||=!eBa? z0<cka)|SAzfb_p7xQK+Qm^U#~@(ildCqzp~QolHEpVlMr<kUC<=FmY2%MeT|!N*_D zIp(dI84f-2LR@VRpXh=Mc@mz*qKM~GWikK7LhI^g`Z3oQIx3Wx>s7&EKenqHFQn+O z%93Qc7Q4kAmyzmb;ZPLNyYMR>c<WX2yL?Y1v9&Yu+?Ad4oksZhs@3<iOt4a^-~%QZ z1#DvLzrMQvs9vcIsy$1kbwomH*J<Z&a%8D(K}`k}5F1RhRF7)W(xkT&AULVvr)RiU zx09liPA&ZS--zxAuA3cv27qqsCjzksq;CUXuUy;7xXUqL(aF{iKWanVCK*#@X|e|X z89-&f*~|q^_TAJ*d>JcVdjJ_CUE@}%xg8q_q5Z!<4cy0aXh&Sn^qx@RmO$roQH1kw zQfXJ=!s--wz-}4Boni*1l<4rTaEoM?4wEq?KKbO9T4TZIj_uW2-o@8l=O?zszuNIZ z@|wR(<46{RX4oDvAyws@{J(;;=><__SOrs?PWwwgrB|U<dz)PXJM{G}TwUs5V;D$> z$w9kKJ!8qt>S{jEyPk+hW~?v{P%j7`o>71mH+`n7uYuADQ{4q3A~izB>q9-y3=Pag zeL`j~%JfF)DPBrGebN&~LXPoE;RkW2AcHG@HA4Bo;(HM=dUX3@8c;^UsCOs2tBMdD zQlvzo$@1f#wy~q-C*Y8(fZLP7;!e~<Mz7w|hnyP66ZLX_Gt2Dino#ho{Y*N!+a)9D z9H-BdX#y{hul`Rdc$p*Z4azwWi~<1<^Zx7?V-+kLKEb^PJe>$Rg?Ai)6i~?`;+z)& z3d7enrl0yzIq9<Z7?K3ezrbUmBDQH(+>5{3F{JTlxD4=T(f{V3?K`qen@OT$|K+M? zDktcUk?{0DR>+|O|3QXa0k*fo_zk6vr||bd(v?KVe%#OHT20QrsuH6vYAwtoRb_rm zyTAAb<6YpPV5{1>lIw#b0<sP5FwkJxBsZ*4Uixh1&@6*}?Cl_^wtoS}GjPKH++xNY ze%OlRTUMdY+I@QoY`*5e86AL*<$~x)dL+Qb(wt)6IVNJ3$djZ!xaSd(!fVgG9<E*> zQfcolT~dL`k2hxzj5d?~cQAz@bJAm|0t0V=qx>lsa&IR&iv-iog%%)$mJH$XcW@y8 zVH=zWsyQcl5sdO<e(A`c-}<vH!&KOB>(m-^u#T#dpFLrU+-71Xmr=h0NmVudR{+<8 zb+>?{S0r#}N3{QpUDY2R5-cP!fBm5W|JSq$z4Ts2?{G3f)4)3z4@r00Y3|vtb0Y7! z5Z%{v;DP00i>>E+$N=tnau9bI1v*=r0HxXW1rTsIGPj0F>b7>|FV-<08>nsM-4}$n z7uci9yddLtWnLh!jPP6Ho|JhC6?GV+Pq_rI?5_#r38eaxByH$9kIZx@-tSI(|MFiB zB>e3QA**^x%fJio1fWc7-;4uLAm3S0u@inrFQIZ572!%k2Do8vSx<!t*qG`f>>-v1 zl{;G<<^#za1zDF$PR(Mr_U*KI7pg&eU+HO9a3^HxJhnuOD_4gI$aS{bLQbP0TZ}b< zr0Ea0>is?$){Rs@BQ=f}(<HcZi(lxN`XVv$S9~UDArkTG=VgJQtm4v<mq7dcsmO^S zo#zxVb123@wLZrgB84$vdq2)7YzEmY1}^!d)+b$8H*xaw!v%!g&=b`>6ni9+i|GUm zKkuXdu%}AR=WQ3`%ss$>zZPVGY;uo4ob!brF7K`iL4h9s$~eu@%!A+Ld{Pf;-Mu{J z#8a<FZ7HH`ps&u@0$uE>6WAvR3@*c1x>sfy`kkF$N?G@wmw}M%Ap{Az5`}>TFG0L! zM{w)vj~WbFf?ZMa5U+!rEs+M`s1T}2Vdz7gqpXKDFTOlITGD#JiB{CU-5I!(CC1#Z zplk69kr{otyJDD>=SMN`UoQ(-%^q!<CDk$s2O8P&10|81JC8`v3yelhlda%#LKZ40 z@k4=%n68G@t;ISJrjYs9zgnZS(HU1CLiks+NC4S5eJjmNv{pZ2;j|R+(|a&uS+N$G z9T(L}4BlUvbh@C;aJ}=sHCZ8}G$j8IO6Pytxl6<@_q1D|-K?}nu;@7{J!px)W?>4z z|M6ou6ke6Y#ABcGOVuHQNJb86=ApMXfAGNke%7f1nN8kOtg<_g)Bz@qLnUvs8cDFb zVO3RT#X^}lfcA127c~enkSK7f<(%|ATr_>%L)*ucAFO=TgFS*%q)E7x6FS9pM@M1V zU^@VpGSrk&AKdpZcUMj4K0#*_$O_C&+~n;58{QQ>s}aciy|;4v%%N}8&ZQuUx2BB2 zEbt5ejkY2Z%2AgI;&dpuY`kUAqwy4q+&x@*S@`wCOGFDnV2lHK)d#UAqIyNIDxfQ3 zM*A?=bZ_b+zin1qM%7&-=6QxLS|X_TXBko0gKiZJITQBLtn?H1aH2xyuaSulnHD(f zM$c3p_JMgiIk;*{13>0@)ppw<KC@S))4Gr$!r}O1ll>SVq$~CKC}0wz-nT&_+$?(> zby_wIuxuv}&dUPF(<1cXL)NA3xnGypmm|+D-R3cd2i@n@y&;{bbA8-5F5YZ_HJB1( zE5%b%GSXgKKIL1Xc(d+JP+55mD&vPZ56#PX9%eI~o#QpY1cX$|RKz)6chT#8K`*`5 z0!N+aytH)!9m8PxPz1oZoA&)m4v=mTzaev&q|NZh7PXFgQaG`ppil%LW1ob?cDN<p zh3u#aDU7^g<ICFs_nqiUSKZ6AIQ%E0E#nsJon;>YN@Q{_jWpdW@428i@Re!4J=46{ z(ABrOnBr>R4u{IQsVr=Wa0-(HlE_vAer-G9*-+i-A(7#O8(bq?1|ohC<Afj_K@REO zUW1cI+=jHInFQln?J2B+WaEqBZ@TMJL&X6!>u!S9Qkbd629!A9kl&UDP#Jd6_b{J^ zj4w#d)m0RH14cq&XNyE7R~$`+=2LyQxmjl|t%11qBjAh3DsC>v#Fs9l>_k>#uqaN% zA;jEmS0U*G!Av(kdn4?AfcK+;T3GB&2|Nbg@#EUcFYvli?(>2$d1!hCz6g*aozSi> zvrV6^eA~^uwy3axTf?;6xNahE(1fm=Sa^Ch8I%Ei3$ghZmO2_*o6tFAKH(r}8O)_S z-$Y1OneBn;i-_bR)5S_~*OQ9ASGJ~()K}b(!A<es4m4s_<Lss^C)Gjkz|idOSUAuV zu3qXiHLE<R8$`?rQ(uGGY<Iv(8%6XQU3fVRSQUq{&~X^LOMjLr)#F08NCB3lF=oLD z=LPK^I~KThQ}*Np7=g>G?+9~7H<a}wOzm<hD+{ka1GhmGPk(2i)ZcuAJJr7@`RmN| zob(ulo~*55w>8KQ7~7pQ)eR2_B7+R<XDWK}Kqd~q>w?7eg-xEcbwnm>jLMsPGB>xH zmev3%T#*(0>#*lP36^H);sCz@0TI^gWqjIuZSzk9BM=1p@{A3Yl8le%aw15hBRa=y z7p!#$wRF>lEH6PFpEjCOHO_T${Vf<^WONHg7$46nR*a-&=+rN4;baHNdgxOQ=}6cV zx7>Bgwfzss)^(r-K(L4&#gv<`I$*g{Cmnpe{c@=p<m|_lzr-6fQ1${HOb<o2Aasa% z7|$^TqOcX7ia*xnXshClt5TB~R4pSIG!d>^_30==6}?G!6A|M2r7xrRnn@tRAKMGL zGv8DSgk9I1@AMRJ%XV&I1q8VB{Cp(Nka<AVNp9QfsQ^#2GFS557n?jll!%UJE1f-! zy>*W@^MgxH921>pA%X0mlSu^J*w(pyV|sgvDdS~p2o@w{0}!LRzsGE(_5(<c7k}oL z<dIlMFw15AB*|6K<wmomQuJutR7P9HNLtlUPIZ}m(iuj*O~?Z@K~eK$!EUl61_FX@ zcp_@N!?c>5Zj(Vp(|{av1@Z}7WJ-am7-^^L-<t$c%HJ<{Az)?x<ka?{-yx`qfshNd zT83+a-$cCb1^CrVRon4M8sfBBhbQVoV_I0ue}6`zsEOZjY|sMSnqFZL#fGG+j-Ycq z$2#4gd)MKHR#LdvADlq2bOCNF+VBH{{?vCxaO8ZNP!LfEF*Sq8EbNdKMK>*_S4m*^ zb>DJ^)9Gc`TSk>rR>55-hqPWPffhHFZm06v34~0^HnDj7`9!$ekPP#`iQy+gjQQ_n zw(h+#p=(<Dk$8*(`b1V+LN{x$YVsqHOraOmz*K2%4*TckJJ>1eGB5p**?h!pI(E++ z=%!hmfor<~3CjRUatECthA<`j$Uey^>L;Miu$m0ZP<35`yf+oq840lrTkeb>Zw^TI zgkzhJVdzj9DF!&!w|03}j82-n@)<*tOIT$6C&cr}<baltDlgkO2{MAc&9v}FGjy{G zEp=IcD5cjsRIi6p`p>FGTYa)WJZbk}p3-&$^Z<Q2K;QTZQKhbdchx75WA`FHnSa49 zUlc&=&~SIjaYEXxu)7xqZ>ot+FQFLHRLU{S#Uvaz_quNlTMaB2?g_9wYi>{9@gKhR z_X~$><s21ysNLjYqSEgKE@=dV7!1&vT&IBh@5N-Jxeb<-_<WE(4JH{)^&#~Xwi3>} zP?guhe>oe0{b@pqAmRP+1l<LS*1N5O>$|B08zh~F&#EJzHRK*~AY8IG!=~{|J9!|@ zp-q@@!ZiEH!t^u>%F`mU5@0}IU*B2Nh)A>xK$ptIArj~V*{dt8i&iwVIla#8lK<qy zH-oGvLh9G?Dxzbxe5<|hfCXm$EO)UlH4C46QsgOTES^o+3Hq}&WEc^e)?W)oJ(tw4 zXQj}aUEHmd;3i_?V&Gn0Am0Ix0>^`p%}uXtCX1<>eG|5+%l8!gGA`c&*$>a(InQdo z;T>h!gVJ7~vdrTPs=wnY&=17daUiaXGaD$RcnShu*e_!DSz+|DQpmKD)pTor_9$-E z&%vP(DSNe3J5jRjX269Jj=?FGB3&&|L+B#HMsnRAHhZ70_^8^(1G&ZNn2KehD<Iw< zotOZC;gvkv{t@D!?}oAV!|G2Ko$Cb`LA8nw_2U~R|3ZVAi$zYFE|}<#Eb^=46Ncd= zrw6G2yn7q&%T>YJBfB^Se+YOfAU##h9TK?nL>^vAH{8<;m!Nyqo^1h&kFIb9*%Z@L zjO(f$-iO&ka^>yMc&+?JY;97-1P_%K&L-0<?yG5>u3IqGd8HPUdHBMvU(5%K4Akre zHJmELa}PhCNV@z-6lLCOUD)3E7-c>YiB~GVz%O$EkFl(UDR)9lk>e8Zl~OyTTYlr9 zvZ-PV8PnTSl_tu#F31cQhLp4&1c>!mTiut_aA^?tnzM7RFpIucJuyj2-}s10rPYDz zm*bMkw+wZW=DGe&;<Y&-;H>vhGWifQhw>JNNm&navKyq2cO9Ztc{H`|f29v;M<wN; zOrhwOJ1i+PKy0L>>$hxG6H5uc*0mjXG{!v%s3Nq9Pt|ES4z@nwSy?Mn-P0*wvZ#K^ zRUmNG9YU$K<4xpGIY!H;m<fz-PPL;S^Gwf9+@2lkqSp3?bSa~&au@wFpznt$eJ1;! z9-O_hJtfJ`^GkkQ0QROr_#JS!8v=;G`3gj}&`uoC&}OY_KCgisj{`^1fnGYzC5SFb zgK<DKhK(*24({kWvky#mA+*XNdmih+L=*zubr6ZKYZ>4)T9@6mqKfCM1yg`{FB$yx zQ?{^5<z%NLy%X^Y)_~sW;ds5+Bugq6WbDnZr^OjJ&I<sNX$-F-Ov>P}2Q^rKw&A0Y zb4`iN6=uBv&vKTQLU)L=PUMrybBbm3_n%D$K$ju#sl;N;k<~>J+kY3P`~zg@Jb(2Z zvO9##6@t!(!j<zwLN>-^Tj^ThnS$-7i6VQ1w1d%C!{sZR6Gf|I+daorNjLrXNk5-Y zmBm3S!+sF5qRI+>{Ouj5wORF&P*mm0N7^jh-dV+{=nJkPfqu<(0A_f3_eC09@5tvu z!h*;@yDXHdtRzz?e9)|z(SCGGdLCG~@`X0Wh^p-;@g9H~ovu%L3Guj?R2LOn<yd#Z z(!N1@wDP=FL~kU9U+Z;E=vOvGx`Y+WSSnr`<Zxgf2&0k3dtk666>o2&$Wxl+APOZ} z;fYQ~``|r0(eMgL!$$5Ni>;J#I!rKuytETFnuXBGm4E4yh|e8R_{Rv1gW=2;SC5g( zNjN01_yw-%OJfLdCqsW0@>KBR(CK<ytRN#nm1Z%I>G3obKcqsGF3oB##!a7Rzs^nk zPwC-GaJAkD=s%LFYU&IvM>K%9Z7A*)Zb+W2osq+xRV&?APZCoJ3GYzOQYr?&20@?i zsC|ymRE6(3dC~WunRT+i5Dd;{?f4e;Rcx$&U4bw(0K?(}9BD7r=n1Ei0BMgtog7~* z!kc@1P~;0Sp9b$sUd7#jap8k@T-xjPngri5vo3-oQi6YLe<jjK*^f)pH$cifOFAe7 z^{zi>1QITtl7hRQ;us_d0?N%o&!Q*RxsK0_*L|&`F4_E)ae~mJx{>9rYkQ6*LU>iu zNLf)ztt6phTa>1-2;Opi=E%ZFxvH+nAAc@rTpMpbgJH$t;EI)qseL;0(r1F2|4+@8 zw)NRSRsU}Id4VJ3{sR`@u9X6`D7ooz^LyBvi?QL9GKXfiFg3dg6}gI0BNq=i-St7! zgY4soX#~C)sR_V>$UwN&Yj2nJO$aj<pqO{RCG`3po8p~9fFXk#JRRmyhN6SguZ0bP zeGNXMJV5S(u)~rPhR`p;0aiCY$?Te<^jSpdTU1}Sk4FF7(~VsAPqN@SXzRG3Ru@pW z+25B(eU1IauB(_F(Q72eT|)00&Y@GemePd|SEVqTq#051&Cr|*#N({S(1wtZVYKO8 z7;roII+UWkq3Tpo`FDG|%^xk*<v)HXwig+j-8waYH#enGIIiY*0RjIuGJx|cyL_3Y zcW1lXv_5IlpU3r!=tq@%K%pVISk=gXC(?E#2$U;~<<XjNv}s(9JgX*9X>ZKF8{;*$ zlu>ZqE+1S^w<-oQgPOdrLdggzReJKy29e*M8F3UdM@BP;$8UGgnq)cWoh(rk+X_p+ zOLx{K!+5V12<y1o%5Q9KMc_qA4-QlWeL4N$Ju%Oxc1-W==vBFm^*8jiF2|oM`YRah z3oAV;=NNaG1KmK2InClUe_lmOB=jSyoaEV$ojj`;V*YQ@4T^VefDS=Id=&CcCKCiC zfV(~J#cLg4Bf9e6l<<M65JyZoA*&Qllp&cosDGa6IquHJgcC9OlYO2d!tel{R_N?H zt^@)!Ng7jJe!$G&xT8JC2nm8#EiQ+7I_Q2!_*C(>0DU*BsuyO#x(`7s6r}C}(VfL~ zW<XB}S!;_oOnfln^;%AFD1W|jL|?k=QLe#pXH4(vlL;S1VS@Hrum7yhW=@Iv-8gc< zdxNOUPyAYrS*Uj4T$gHVwwFq}mOtWsbIC6ZTIs+}BDR_jeZ?sGBeDJam<~5w{v$TA z<oD1#PnLnK*p~2RWlwY;xd0NK{usEME{X<^k8F|RBQ4vyJhcWFuV(khrWA6R(TdHo zLD_AG$H2&5fpj>fgO<~dpVZQq+p*F@!8V|$1%n#0cAU-G_T%uauty#YTKzq!vvM9M zJ#@qb=5PZS>yy>iU!nD(oKey^k7|wzc4yBBA#c#LLGq%3B-z?5UQ5JUO|HG7_&3%a z2&Jfv&NRf3<e)8+TAX|2dST-XF2kAATsz&Rst-{d6BQ`NDP7i_vApR+kB*8&DX)68 z)<qtW^hqa`6uo*wN$4J5$M?-AXT(_e!-z5>UH*{?)6?x?IhH4O$|8o29<;OVt31N? z!%10HQCA#gSYoxanc?B+D9pgmnbpi?ZQ<t#S}B34xV0Ptw>B3z_|!Ub!HJu|>W|hv z(ceR5VUm@T+Zbk@7<nrZ2=q13<A+KO0&L^?vw-n*f2vsR?A{K?^dW36xzt)8y#iO! zxX?`3HECj%mU{Iub&g+NrVGL{(vO$JS2Th$?%@ybT{M&k9<-Cg2^WdD;gXTHONo`Z zlBOqvB+IOiWj^mIDXEFaTDgeJ&1TD)#`}w7)_;;_3b(i{z#wbKFoi~3emyjCzKz() z3?s!Y?8111;pUbo6bfKY$D3}-f6r$Zt!2YEJsjNufA=ixFEj!5k^WE^&X|ZuAS@)E zd*rMv%~kKlnlCrcN<FG%n2p;A6fRYvE(b;)Y!uc1ULaL^kwZTrSX^St6xe8)hXBPm z6ZYDP^_h~6MG-u*<FNJ}uZAO|r+f!!)--bzenc9*7Tp*KrZ-9)$oyAlkP~=c6kMOC zBh{&=syv-P2pzF{u^s$o3_lZ2@ahWj?u*b(;KEH0#tJly-wR{LVr;D<fIz=-PbgLc ziS~#66z0N)PtYj6K4rydnjLn)q$9^zb;l!@=gipLllU&|)%)yv1Vh1@O^F3Y1+R<4 z?FNI6G-c(tt49(7rLT{+heIPVOvE%OS+WNYiRV7smKm%AhHSIg)N!S0L%zXUd2?wJ z29_>E=az!vbK<N2p()*Z{|LRa7`Cqo&9%MT){QS0fZsq~Ry3VjmYM|2t$nx1jIMC0 zN4a9ip_mpp4eu_Sa*i0;B<6ARK4a`;yP#|~8D4q=gD~`hrg{H5KmhFRn{6Gpj0o<) zy6qTB!gZgBu@B;So2H-_kHSVvNm#<OkhfOw)#phLH_{Y6HHe5-s3iQowbB+}X!!Nm zg{T!c#wkqxVi}f57Q}q^DMstjNa8VAUl7T^nu167aO3a$;{LCxwNX`(bfQi%dO#`O zAkFsDgJt_A>ITFmuv6xIWj76sim>tA8+o&yZtTvd45vmlZW?{mUtB=P<%`Pi+{W3& z!S`Cb8B;Hd1;UZ*z#uS{6;mOBv9n?u!Sc}PYWC9*VjHhU&!chog<_)c8Nu=L)=xvd zH=7G|cmh*XPj{Yeq`7W~zS`xn(2U#kpvjaz=eFHEU~lXDva{iWtu|J(NK%!A4zg-A z3oIO=^su$?Aw-*48;Dfqvj0QtCqVM(r$cve!go7H_Mtzc+o1yU4~+od)#&K1l5k64 zC?2`kgl?$T`EU(VzrySzDBZK+BALjZ#Lf<{EWZx)y5}7@NwHD36DkZM-<k<P7OzE3 z^|mCc0vsa4X?M9zIWiVo{~Q0x6YC;aBp(qtD}B{`ANDAxc8l2&+{faeeUX9m0{G&C zM_fGm%jGwv_OIeDe8-&V+N<bde(Kt_23)-iQSE55@=`K+fNc$A*VUqkIlH0*YFC-A zqPgoPT*p_=?8hQTkx8ul9kN9i#02~Lg$^-CR(d1N1FdIYU97SOUU{<W<W2*Kk~*eE z60F;@kuqKYSj}ZS62+1S=GgCGWsa@;B-ybo^<W_@?DX+jKGL~Ht9NlH0fK2@+I)x> z-^iF*!Rs6pz;C*^a!-H_7@Z{yhMw9U7?jBci3}SmGq`eege&Y(1EcT%<l5N&KU^Cd zJL~`A+9VD$VymCK@{e5XBH}qw6ri2E@h}Cgh^lsr;rE@zb(pF&^wWpTI6N*pCDNiZ z*f3wYLD;Px9g+$G!L5HQ)R^m`CJdIRm5s;WrzUEgE$UW(thKVZ8cZlLhfHvjTK7us z1kj;_i>Zl=HI#NsQ3)j899^xw!3ABrGM(r~g*i3dwL2pjZ%qy);WiHy1jD~mGITpP zPek{?zTvjApKPIH|BwsD30vLDVKm40&rB;g^C5F-0X0Qe8$AA^*Rf`V%W?KkwS9}I zfxF#h@ALwv+b)<=g*ODwpAsmVy!l`cYdBk5@_&=M-IM>C6_Y%ku9eV&z|RW~NB!=3 zZwmwY3Ty|29#7E868CCPg~6Pi1iuQP8lM`FM-bgon8NU##OUEIfy-2GJuw2aI<hRE z)Yycla(0q0>9)pQCThJ`CiOy=vwR1^=zKoruuNjq{1_B|Ftk+zI&6ODJLUt+dODLp zi*}f)OGoksq|PwhoxOo&dMw9QoTm7H<oE<V6b-yX&H3-%t{L_vu_tt-8*{LKA<T2; z!3f>MmAnJ{)Bzf(p~E2dx$W=VPrBYEC4;S#Hi^rMpOhsW`q;U%D&CJ!#Tc3Gu2K9_ zoVPhF4+XA3trFpZQSjNE7H$Rs8gt>V=ycS1LAa^Dwlz+s{-A43=|I|-rMTUuIVqak ztFw-rgD8@}FE-IpWZiNV`p-`^T63b?jV~aN*uO{%&_r}BF$NrxWRFO2FunDTUfNxS zScfcq-BvWC`H2ChV_Ga-Wm4q7`==fD`*7IZtY@zsV3H9y@j0!lnE2>_L62&NRbu5( z`3WHqbx5D`9ay#E8m%?1v-*vUWRw9`DBM^CAvbQXQ1Y;7(b>>8oTEHkJa$q4ZZ~o7 zAjKRwOd=Uzuf%`YtjZV|GH!3<PLeh0wPheXqhP0kq*%wyVdU{Q3-Q4#0eHS-V2I<c ztDC@EQTS)(D2pu0Z7P*5WlzvE3%`ZIsVJ_<AoZt_T6O3cDvgttzY1FbXA7y+nLqZf zY?-A5%6IcsZY4KtBMFcy2<2=0+`e0)Hj-iz!J<;abU^Z|y-KmHj}F|zq7mWj#Y@E2 zgGW5To#iOO672-|mV*Sn{GQDMoZ=ueSk^<0ZA=Obe!GeMD23%$Q{X+v(1>6ppi!Y| z#7;fYizmRvnHu5_Pru!snDgKm!*8J}3$h7ZYXqnmMm{_T^(P_QAnb9F@ydI1g6^0x z()0y<_iJ99>X3Sfb7q=&y%-)tb;mS1^Xfis%H7wk)3qAzkpW`5ys4a&>!wS)BSG%S z%#r4JJwyJwSWSB76XGtNtCVgnKR~We$Uq4{+Rsi^)<N>n2_z-f%5QiP?7j4&Lz6Uj zf8otTYl9ut@TIjYrS%#liHLGIita?=HCmWx398b78TlIMbRQK=lGhRP4GD@g`8bqS zNY*@QjgxBIk7%}-nuR}2-(btH;LFWIQRFFS52C%l{NHmTh9g9c%lSly+6&L8ViTW= z9NOAhSCwl1`1BI%L{&?z%V-78m^M75?*&0ia<<T2O-6y-Lmd{cLy~?W+hMSA!ER~d zK0CcIl||HgnU?odDWu7-K5uD^@}pYB>cX%x+{r*>JVakXV7sC=zh&pMSte6mLZlGO zOC@KndNp#Po7NPKf;LvW=Y4=;$%a*pA|v!8@W&UGWPm;?ta(U{NbIJGEyz1?g(IQ_ zY}T}QK|s4Fq!Si3q1M}$0CmULx=wfNdrRGiu=gnG!D$}VP1AW4NhG=xx9JeKcRtUp zF*3oJH5_<o<30X$u1U_W;-|cB5?xD9uPvU2?yNqKFt9<`XYs#S^)B5F>L4f`xf`*9 zpO#g&n&($JAes3&1UUabJ9aTc$JBq0x-%j3{*iB?+cQoSdGnxXMjqhCBNo!sbVQI8 z{QUi)oJIYxN@T#lSCUK$YHIDaqKzP_x#?;*aDAZ2B}j$qwG(9I-$E$aaXZtkXKM#| z!kb?yp_IZTOR^nDabmyM$EZ(Qt>e~M=O{zi4>+(^)=ycs)dM9K<PHkiJVX?d_q2t0 zIfh)v5IT3{_=kzM5lYXL?2<koCs795f9h~7M4ra~rzPW*tLqa1B>c(X-%yxYU?e&p zMUv06L}DmCSR750g?Rl(Fr21%PdCM05=-JW8{->(7tM+qSYt_Fu?l_FNn^A70Zrdj z&_x)6|K4DckmgCJJVJlShhohzySUw3f4&PIclNeD52wpZyZ$aPOYW$SiaMXAZf6)^ z!J8nV<^N+10P5XzgmU+xpci!5QU)0#H9n!Nm`g`~!hnO6t9px9@{Y!mor2YON&pt$ zjj`|MBK3_`LfkWSx{I$g*qvZ^cBZr9OveDuYTRaVgGuv`2j|ehd^L+m1!v8D1*k9& zFCd5yRpwB($AP(6lV$7hm45KW^_~p`BVHCuj8EWH#kuLmy75>RSjYYZf*q0F*gkf3 zA1zU(rPUbjdp4%{oy*F$^=CBOl;dxMz5bT+$j!C0+$S8wagoxtXBnjc{dvk1=mMSO za(*mO8CNPR`7m6Tp+OZqqn2BWQ{L#8?%#g%+@Bb&4*o56;GjZv7H$sx76j+paMZ41 zKFL(bLe{0>ZYo4N8Y&0KvNV)tF!x>CU&U)}$0<1r9Lt*=u;duV?2g<4Ct1QTUw%X4 zh3dPr)~rMZOs&DIRPS6|38}Y-0g)<|@aq&g<#)X`AC4L$E{6XxRcjjemK8~R18J(k zz=M|sPF`NFr`a+U56!5fd45l)d2dz+d}S7eIRPO_`&#yG5|?%5<xagC#zZ}Re77l@ zPG%5^G@bISypVmwq2lHtRf{_t_H?20`R?iSjnvt88>@d9QGkv9l8i$7eXdS3C58s^ z)k0l5^n$@X9?!FQI(tChpl#fkI}gWJN(#wJ!-q+_U}0@{iO6k5);~k{CJlDkx<k+* z)mw$kote{wH7%g|S)aG8D{u^KMm$XR?YvbPr_OAuYWjqPqGR8lmHZRI(r6k-y^*2S zg@0`o00~pLE&W#l$e0&e-_f)ZA?-ZNQAz))@_dQm5?eQ00{$}oCD-Vma1r(SAnJ$H zu-NHW>qtwViM#!r(2)o~FbDoM5)WONfQY25)p$h_za!8oUfLjuL1c>@dF}_0UEp3q zlA_~Cp>JF^al?Wa4cZSnQ7q>PEMH}lqV(3vNlg|C@boDnIub3b2?DhO1q)f3#TK;V zF#(0)*{=eEVkJ}6><cWdU-A)lfJ0aul(xT)*pbmctdD|5@GU14EU#Ay6N2hcK~wE; zI4V&Q0{HXmL!jbAZt%L6ur}Ps9WgS9Gts8RA<Qhsox!QU%w)hHqUsII@4#NqZW*<n zx#!O;G9Ad!<dG6k^vGmKNycZmEzAt+S-0{GvwgNSzY_>b;ec6T8Rea!5evvDPm3uV zS6jCB^(t|b$3}Aid_5+CE-7`)raS~k3}?E0pck?A!52iD6^&{+G!=%B%dToN0*W91 zBBT`UfB6ixlHRZChMQCQy4VINqW9|{bxwV3Yd8_Y3R*!SD8?&3-NCpFh%2RSy)z6e z`JBSe*AJk0-}6pxC{45n)GK1~kiyO`QlOS)VMyo|jIx+4m@^2=H+<R=WB_j^tg97d z`qu}3M4rcu0?8BeQa5TlskGqO+-7=pW}kx_QAn4qk1y13yYUJfDHep1A&cpIowJXB zLe_4$2Xh^hL}4(b%gb$7xA>z_FG<mT#!5d|A2XvIe<gECc$W3KvBwtt2faZlx!ueq z>7mZmP@Og+W;(>W<KB??m*MSP^AQ&sjtap!xh+ui78@=j1C{%`(7=kfzdFj51K;4Z zA`w*ztmvl>TjJ)&DQ(2UM3l2=;*==l08W%8T6nlAv^-IUcJJ8V`zfNRA!b*x&)r#g z;+k-tcCPgyPS3$&`=sp)JTn_bb|<SY?OghfcHPaTio2wz`)KJ6s-$}aimg4PBxw+} z4=1n}rSm|jSf{r$rBK@BWnAII^XD?gfKHyEyKgI?5hZ8Igq4^(sMjJ{!VOZv_UXK) z_RPZ#{19bP6#NnEr##`(H_=M`*L{W}1)D1zx$fAvi@tY5q+)x^1|IBm59bkHr-Qi- zZvM(RRELO-u=WP!198X{KNJy;`m-C%X8#lva6lWLK3f7N>7f5;w5t=;#l>-F3Ls<; zdvOcjiE4ZI3<$N7j#9ugsx733RZOHK{&1+?-vi!^7w!qGF)Y2_27$h*v|B2Kp)aPC z)J^DVDyonuicEWbg}dV(mGlR-F>0gI^W}$Mj?5&;cY^K-l>woMZWX0r_Xra%9bJSD z9<gb1B+}K0elQxCrb0G61<oVO^SEK8#6CW4=a#xLQ{L2Pkpe?K(|O@c9@4^F$1uL4 zHZ(Cg=OBD?BF^cLuO<01Js!m|-D5d5go^KhELq00ef%YmzxiR5XZ_s+R7zu3)=?{Q z*Amms#&~8r3PDVcYKN}W*@qbxR?!rs`;tmqS@OpNoSYPY5}0|~f?KZRUL$T+w>cWU z%^7NCLN4S-@~%R`Uf#)T4VCDl#m^ku6#MRrmsXC-E}>pgPrv(=JW@E~>v|X~fx;s- zmqwX*MCFCWh-0v0w)+ktE#prTBul5pgrmnP$fzQx)OVw>+!OQ5Gs7$jc&5HQ>14zz zF0RMy`#P;w@vrj(sO$GI#~nd<e*(Qnie|L-JfxL9hk=kyYH!4^a<061G)vRi-uErd znt{A?kHlZcWFTf{xe&F)hlL$z67y>`tNl{lH_--1kIInfSreqT5=k^-9pRN;!C+3n zcLgX+gYe7dcn!}{6Hm*s5_?nacl|Y}HHq?|drdJ`j|7#Mh=gC>m~=P|9o;G!KiQzD zRqu&HB@t>>+df!RmSBU#k=TP6R#^AEJG(-q<~bF%v2WD?e+JWQi5aiYPh3S&`v;Q} za<d(%(cSJZvdJ@s0NA4mDiE^HWvgyRc&dXx=jIpsh$=5VxS~3)rtmtUU_XO3d9C02 z6gID{W3kYV#60J%O}4fweYLzL>+M_}MTf5tl?CJ|^dzXNs|HLh=CH~@W4zl(1y5=g ziAGNYl*jWF_E>Y$<cDT%UmU5tgPQnz{sMyrbYQ!k_qySC+V?F9IRcmT<rk+0O7Chm zrzFB<PV0~$U(d>bznlx^p&8@rptLy5_QG5&nqIj)6Ubn8+9MLJ!q(j*uD7lZdCsQZ zkdH#a$$a1FFUTRu5I=G#A!ckw!ki@Z{Emam5V<Vcmoa<56IPYPU9W$BM@u_v8xPF@ zzl60fOv0Uq)vl%gY)8AUA=$I#h~=bh7s*8@Y?Av=@RfnsWM=1YR4b*1w7kiId~=g7 z@r_Ojp=g_@bwi7*g`8E(+wUZPu;op=(=%gjt*kmn#pw0apf|uT&*LBKifViA0~_Kd zz+mWq7cLi%O}AEjr!;I{5Ql6$v=Oa0z67(R5Wc{lMV};IAkXq^-P<IAy3&|%Dm<pG zpA)aJW-gq%B}ttZ`Clj5)5-VdwXcrl`-reIOKW1!T~U;9yN?4jEb9WX=0Bjamc)N7 z7z43H<4acy`$a+0Mi}e?U3}7@pD;fYf<Ivg&h%0VCA9|sY4s@h14@(G>ip&hI-BL_ zUQZvh4yWN<8Rv?6iN|!IOMMU_&mdzpND$sPfajW?2YKAOa7I68J@qo7rtY-9#17Cm zPyJY-V^~D%1Ks;BGQOhv`VS&DDnpuOJvO2iiG4)k6@}DB;&BYZM1gfvscVAhBx}e| zA>g!AVqrd~GNuI$<Ik-o9&Fwy$c!9Qb7Z-pCsl^49l7)wj2VCREYU2_>nH0xCqa%L z#&RHj_ubuuM1qW?>tV}?=;836c4_L8Fh^)G2lX3-E<9lWxv94c8fP{z)QgAOT%d8J z*iC6MOZJTB+oD4D+cYmd2l8o%jC57v#zJxlc7O7q(fB0TaXG9d1t<%;rB%ib(ip0u z0?>ts*Q3TfW~}YMfRkWT&AzwQxGODW%}3Ja2F0nwajTBWkz6j88c34|+5Ss>c&K4Y z`_+?F%fU4Lr~O;w&KC;3u{0mv*BE4`PDT!a*^A2EO$YQca5_zm!=A$vV$M(deBE?C z3^^|xh0BU~(W`q$xl!D0!?n&v27adkfUB{PPyYd1vt0L7?rof-(vh+JVXmt~zt0o0 z*m`<+&cEYyMFo**g5GXORD9p&i9q;Y&I*D?&Fmh<ncrKG4R^cA8Vw7KP{ZK`iB0C7 zgD%~qg8ar7gR0CD@c2a&_+O9L$O{O>LoZ1X?uU&>5OFB|A~2ZkMJFM8<*wcS25Y&9 zrM+T?-o0L>el-kcJqZT%G#ASqp(Whh-3K;APN-6uVGQM}rzF_yvR#}wLx}_;d#|B= zf*&_d+t9AB&k3;8R%7{vNpbaconVhrlygJpO4ps1?P!f374jr!APXcP+8v{=2n4J# z@4Be+r)tf&B_uEKR@01ZI6}!^#O@Z4)MJ|~uq6gX@Yy}=yUv-F?yre+FSjl2uZj+& zuH&WzC(BIr)B{aS_0<(ROE)5|teEiK&%=#UR*Ai<-D%|d$u_vOl+s{ai8sCz*r@h^ zltdKS$;eWGxV1JW!D?FQM$rbDm7$?~NF>+@$6<Tq!*no%E}7cZksM8l2F}s7;~c*| zpJXrXxYxc7hhrwm9R-^#Je2o-yrgg+^^9WUFPX5O$D%>B+9<~df<D$BA`*5y`oVtq z`*N!Hs-?0F-a6rzDucgE`X_7GoWSCq0B`t4!J*2iQIGXT;i3~GqNP|;=a?nBmL#r( zy+<2s_gD0hR_Zv1R)QG<c7C?Sm5i0c?M3IP-5f*#l;`DOq%AhiokcC5II(irKzL1r z_Bk}X@ju>9QL;V~K|nH7`s2>kDM<wsGufbw==y^RSGl&{0>+w7pe8Q#=yU=WCKAR| z5#SeZ{JUeU627C90c40~N)+uyw;><f!UK$V&}w7v@QFz{%U+nr!9*=nrI=<!^Gs@i zG@c*g_#X$_pAscButFQW3m7Al4yG&{GQLkUjP-L_Km!(AVtNH!uX=0IFD3kb8Zq#$ z&YH7FHikLTX{Vp}Z6<9g;y&~UwEchQC@T~Oa9+k$@`E29-OaEAu?)*a8~L&W8p&p1 zCS{nuQ);u5C^tEm4EQUPe2;2ADgUt&J~7=I?3FN>a490V_Vt?C-jQrKzP4=?Nc|k& zs5|=SSD4!8^^cd^X)9vOE4(K9ZOGM3h}T`GQRx2PL5YM|Bc*fsfknO29#tk4jkTYR ziwHM&aEe<a_3n#Y9!2(>h@OeRaphp!vO~lOlv`j<;QxZh_>}3I5<721qK-><%Tv`S zx`K`&+yY}}GdiFcs^TT2HII^IT%HsM5#6@4oz@I&qS`*=X^1_*Q^<>8&erq<vs4oQ zmFW!(J(rHOR#52R9(l(iwOtQSJ0#IVG+>owV4n)Sj5(xqcLyi#ge1JUJ?-OL(1|c$ zSE{|ol=^+l^}%7$uJT+GtDEMhOEi%cZo?QWGPjlcnBN2gg5Qf)xZXu-`VILG#}k^? z!MOX}<yY+3|B0)4pkCEcKQzKyJZDc+@n`x|!Q2LUO<(CL+(iMxB37=cw9UogOL1BQ zrY%6xA55Gcb0eWl4$=1HN*vnvG2O^{DaNq|sVYZNlxDjr&n=sbkW4PWTQ~owG=q8t z-e!yG*yGyr;cxhKE57*`_dm3~Q;;ZOvn)EcZQHhO+xE;F+qP}nwmoZX+qP%U`s3W# z`#$V@<Gh@Qj;OBg{vx_Ex*xu*$^;W^Bd5mV9P}=tESrl*XyKp@23$og{dqdcLUk&B zS>H@LCh9RA%l9{^*+#$*2KM6{GGQ8!WEHoBnN3>sUDrFWr&QyIsv^3_Y3f{^am?Dx zrJYC-Lf=1{thDR!`HOm-1H}-jPrCh=bUtZp&W3Qf_RxV7JX8(=@mM(hh1%(n>D9gy zmh7RJG;De&4kD7k_U=Z2QUyLV14?ETxlP1Ym3x*H$wzH~5`w=tBv_z6%MqMUv`X#K zs>9)M?YB~9!_*YYFbSB@q&Q$RBW?hZ@VhqGf#OYnyD<Z@)giY3)xgtTdDG?{@ChGq z&Pnggb9?-&wIP;a47|LerZ>RkrBuUVHv&=(_as0q1VvXyGHuR${PD5mbQazWyA$!T zF||;Id;Kbj+0ETQ<<cj+r@Cg>|1;kr8?gIRT;KmQb?>mXW=_N5&IDD5d&7KZ6O?)& z+lNjijd7|lS00Hi$TwVOQf*LU9tnW=Y}bJ-DL4lSywsEv{t4eNhZ(qrrP5f>WEMdU z@Sm)m@Z0;v+ij<Jq6%DexVSP{W7r)iYYUf9b2a@y#eD&a%IXV{<ty)9nBC!}h3hap z7&rj{ifC_Z+~)6tBg+Mn83Y`;kYc~ss7eP_LqTSFFxP5nS`9uilFo@nKjH(ZzxHxk zCiR?0Y;kq@5!PHNxgXZ5-Uo0|B3t_Q_RNg0ol-Ml#RX;-7PPJW7Vj_jSWLk&gb4|c z<{}t2y^Kq*aR3o^+&DuymRV!*mW**4s7ONzB61}<K*hFqnYz*LQ{@8hn-b?`yY(mE zCoicPt_Vj5e4WOztjKM87bMlS-A2MhLfy%tx5H@-K~2#)Qd%ec*m7u(`3~sYSsN@< zDqena_QNh=2A6=fzdHLyi-@|c^@JO)E5E&U*EZ_@0i%B`7y$h=DY7TP7p(CB_HeEr zRr@x|3Jjf0e1ZYdec5*&Dq$MR`Cp1`6eHx)&;wzPi=k~P4?NGTPJrJU01{gsP?HEB z;S>#Zkdv-(W$`@oN3hRNZ~b!dK}x+C1W3f(zlR27Ta6})I*9IN&h!d|S>&Sm8$s3v zB^Cc9qkiU9jpSjeg$-Wqm%_o1l1it~XfxMhzZa80i{rO`-8^TR(;9qS+~w+w4_myS z%*<l#aPKve0Ykl`C5;;VdA)>^_zsRHc!(=RT1{J`oq7YQ05*YFQ?r-IYKRqx^wMIJ ztw@Uy;i>;eo{Ihdgr{O>W?}hn-wHY<g>I>x2FC)i*~JliG(XANp+ho5I)!PszZfDg zE7rShWame<c8uvMzOq|@lBNUxDcSSqyo`mG$FDcAM(kyOwzs<03z`^^w`VC3)B`Wq z8mVl4T@kuBCH<*AqE8>5Qf+L>S$q96O!3H$gx9mrwxEB~;p-zfUZ1pmI6I|Bt?WqG zWk9XfmY0|OjQLG#aJVf$)BrwY!tYcaul?|%Hwz02Vn3HSFb1H6_9aIMlh7fIs=2)< z(1W3$oo>JK?l|F<ZAt>Np;={ih_wY{Sr&>fWiT5Rhv1n0bYOoHc*Rp!SubtAH$Swr z9I7=`O;gTJGOh**Rp<rt9A-KZgS5|yC$H{pa0^|%62+>|9rRc6MY)iQckq+tP?Z$$ zqq~?)cyTWGS<)=%$S`GwH&R26Sg}OGsk{%w8v+yMY9k*Cj}B6kA$;9zyJ<_Nt7qIc zI|-`W5)qXz--mWtR7%dSdFkJ?@6=j_aZejNFGVM)S89U%^MuI>XR1oCpHcC5kpEQk z(CSgV(kibfw4LCj1D;$Vg`w?=L_P`A!(AU6<n3Zxo_#jmD`2x)B>fX{n7Q`_ADQlM zI-nc%EI}jIp6%c|<)^mDeAECrW*SLg-TqNhMECgIGcvl0hI5>!dU(;;;zJ-UP~YV` z92r{k1UwoX=R}1~*Y}4b&-?FyYE$!P3L6nY`bOBf0(Qtc#o2Vkd!lc*?&!qIe#b+~ zaT;hOcLVqB*1*nqo!}7u%41txE4;jp_X@p&5`kGyY<1*|=aMhrSP|5^`VKwDzRv(Q zG$@(g0TKT42@VON{CmoFb)SaPYWoECfd4hidja==LC`j7e+ZEG&aRT8_?qv#R1rO4 z2*u<}Yn{ENiH1OJ&Z&+UgfBFc_VPn!{Ef5Cxk%`OFP<(w5}TK&%^$nJDa-reKd86) zZA9H`=|(<|djy0KD;^$xO0dVD=g(DM0k4z%QdX<8COAv|#@InQK@EsSz3gl5iAQN! z+X76}=|fkz%ju`oU4gFFpVXm{Or`iBSy&R9U{1=zK&Fqt-hGWV6IyQRVr6mtsdltV z&3($GKo$0!r@nQUlAzoU@`qi4YBHBy(SF-pN{2@44kZyu84blAjvT&)l|KQWEFSY2 z<oebN%3_=8sC^1vsPq4(W^#}qFdU{MrXm+iP@U9=<l>7W3Y`$_I}s;US8RrG#l^yo zQV9<k$BgESJw(P7RrA=}?kr4TZOKmjoeoiEbYiw97S!}yVuqjHMZw(EP$}p#S(Xka zra%0O_xCBwbF2)W?@v_HK_{9hBT*8CXw>gbCq}AQ%UR$XmQ35#`C!<WpJCUa)PJ~) zWQ(PibR-qwoDVsWR>j4VW;U0qW;=rF48)1`6HwQ`m$(MWK3v9owkeu>35dBNq$@1v zG%=j^yIig*X>a1Ji6)O$kPnHiMyfrw=}Hsmo^<6Z>owq~*L{xJMlvtOVkxSKv&!+d zYNhwVtuI<-eXJUv8EIG<5v*U&@S5&-To21-D561J3u+j1{r3wGg2nv_ob|w^U7%Zh z4LqT)h056XvPsb$ZH*CId5EF)d3&Da?vqg7d#pxJnCBT0|BU5jO7AHYW)ke~yfvG4 zu?ghwvIcb+-cX-EJ#UlxPP(Nv%Dmt^-P7ZkfpM}r^MQwJ&B)4{P`@Q;;00W1Uv3vM z>}BE+!8u5ZkEPv)xTe8|Q*sxT_|<BR&1x}jS~&pCJe)-Fvta3oFtvEpsRJaZBpGdp zx)1PCV_F4jlT^R{T5dW2YjNU^U3jmG3S={~V-#hr2Q*mpL1EgngXiu_^GdVOsp&`> z503Kjo8t&ng^6SM%2GtC1yiWj-(=?7{d|F|fOD9AeyO38+#RrD%lW${KHDV5Rylge z?V8$?mzyQ!eCekw3qx?o?3X>(AN;0c2P=XuYRc7;2Z!Jf+@8u_y&@9<9P?-L?*h3; zh;wEms+<XLY12!CVq6K-2tO*|3!`r}TwJiyLxR!Jd_FoJ;Y}WjV^XMn9c5Ws?p5~q zvR6!OtYF%3g6;Nia#RLzG%Wf_rgIG2dpHCaqI#y=3`A(Gjob3-U)`z;4HS1jU0!JZ zm12NxTGAlL>A{r1!2*V@92itWIh4J-EU?UbZSE(Mj49?TEmoA4k9IUz^U2DDjh_(l zLvad^M`&Ow%t>3|rpdUO7Z|X|;Sz$rUXX$&{@5Tj4JFr!1U7WU{$jiyYc-7mVwJXd zg*N%KHGa_P$h|VjZu)ky>yOY>YW-6C@x=ljPObj%s+wc3#Wxqd%&4jRXuqZ;Crko* zZU3If^92)i{`7+?$!BG1KvtO|LH7IEWGbl$`q9M&gW%4Iq<dC5l#%a5ccm_U67BQJ zflD!@tRoM8%^$Y`6ic?eR(*B8LBj@@-{L&?^HG~ar;&!oQ*6SkLL;%SA1`^=q;YVp ztC1rdxs<dyyMeWTT7&b7<IylMaXf(_UXXFEt{)RL%<RKzW7~N@yg4~^|NJY7E`D7H zz3L%!PtHQWc>EMoEI*uO3OD32fg#GKs~MF?M-<5U&6>OP=W_$2W0pdTZ1sG0*rfy> z@u7r<JLs08-@mp>G>VFlX<b~eA($7mNEaTE+isy7nQ`SA?!8K@3`EHR9`oit$aoSd zze??Dj(qP4t2t$D45$v}^^AyCX%F-^fyI25VDlXde7E4T+<a*YEd=+C)oFc6q*LB} zt&53igMkcw6TjZMEv)+Gbfkztykc!GEn~37q|U$+t$t?s+<b8Y(0!y~+P9MdSG(m5 zlr!v>sDmYX<LZtCoc;Y}E$~W%NxS3^Ltycf??1GO&R?(fh<}Q>^jp=$FV{`$n0wxo zb{p$eMFJz4)Gsx|iqL#TbJU_O!s(90B!GroMDXz?Ep5lzTNs!+0Plq?pM=e;<RZs$ zS-WufT=zB#Ih(A*EhPiZP~EzN!h-w~S|<6B9aQ5&qXo5fuD^(gvJKW{kG5oV1eSs7 zWXbMc(E~;VCKQ2K9%~|uLLV@0><b*5LEr(hV|;p0t4}R|+`8=L=P?!Ow4b=Y8M;^c zG(az?HEgdnDj`_k>uqwf8dp6M-gpVWKyV(ND$stOS$a(Mp)>YXw0|PVS84^vYbZze zV)nzj@IsCGS52^|`wD0;0yHuvB3!x?a9ui8TX?KDMi`tTE97CmH`RL`k%$9^OXV4v zSjvlZf=&sM!KXHR-k%46COtq8x5JCCUJtq^cD_3`ijyu>^-w@Xs(<hH2ysjFYRG8~ zFE}O-?Y`9<4-Sf$=ikMS$+J8br#}ksMQ1dW@U{IkcBSYXuCWB(p_YDx;uZOL2`tqs zc;Ut_;;0tp0$v_4^$Tuxwa5KajOB0n!*2*u&x%sC{MEj*)dkP9=i?%=9{9g0Z#1y; z*Tz|=2XIx$AU@{dx&I6d)_T7FoA@R%DIEZ+n^`SezFl|kBRyqR+moVKhIItBhlgtI zeS+=s!a3vDyv`Fz`cil?J}ow;sjS6Z$pIFKIV?m7lAa@Mq%o7g%fDQ)0;oK%D_S%2 zphTzDrMq>q49e<0X#9#vvA~4+Yj+-pvDS|lHdI=PCInR(11vQ)u88=Dz2JRe@*dtl zE`;=y!vZlfo~F%KUKcdFB6q+E8+eCv3S0?(G2o(on5Z4g<v2S+=C)*FB~WyXW)v7A z3{Wbt^4^+e-dsslDhd5Jx+MXhMi&G-*z9ae@601|PrR4D{qHRhC73E!O7a%gQlB-L z-ZhQr3onEcj`dSx{fga4T{x)3Ny&9DBw@|J@gC|zT#vnQ0%RaZrI%!QPhGJuN|#_s z82~adQp?A->?!l2D{?2`LGm%1;VNf?bU@$TK2VY<P^fiqAR)%2t-?b6{=KNn(z${a zi9uak!DF1p<LUE)`)%*vbiXxtEgmq4CpCBF^1@|>AUaw5e@>51$u9{M?0J|MTo*uG zM}=lAlQ5JQ(pCdyQ=lrKh}M2{b3wn6XVLdnWLkdE4KgvLJv;U7I7Zzk+0^RRx=D$+ zbml=Yq$Maw#FMt@m~rbA**g#utVsD!illpbOhrT0=I1N}#JuT^Bo1dWY>AN0Y62JD z_Z@m*ZV5Weo*WTk^P=bH#`VB8m22M$=&(thl_Q)HKY`Qi;I4Q?4+XBbTh9R;9!eg_ zUd}Kp<}_kD<2&lmp8&#LP5eVm{pL9yBNSW4IDREWHh9@LybcC<cfl2)ZJh7${vPkA z<W#!_`+El5yuwH1e!2m{SHBzMTxw@4)&a28qN`GlJmtj@SVLGq0Mfqi`q4)$+jqz9 z(>mMSymnD0bwKSPS3t8OVFv&e*hZwkVFFPA((9*Ecmq24N1AdB^q+tksJZ+#V^{T% zoyOB9J!Y;bf&*}1;|afTdynh9wBUx=C)C%I9GsbNM(xUs*v3x?Y~*@GNzB6WUhmZi zBbBp8UUiMD(X!*fq5+*s5Cb72e7-qwbv!K=QKv=`kw7j2Wrh|a141}->>cHVRxXMC z24=d$yn|i|6+2WG6IyiE^u_n;_FbPLvpNm<8*~xN;+?F%gSTOSuC6r0%2XyguzFZ8 z=P8UdN7BP5s@TE+tmQ(7AL5TZN)C*4&w_~YdJSxJ6Cn_^bhk`TFz=v*9r}AJ&o${r z4pOlZ&i>6_i68Z6QTQ{N^wn+uPWm2!LR_{G%b9Q*qIppa<GTb%tUv{D!d7~6KrxNt zSutw6DCWHe=OhWC&wk8idMIGaB|&OT&N2Ti;S=0NbI)RvXht2MKT_oFLeq9*Zpf~v zPG|pK^PrN({0THkZT^g-ty^H7k!<jqsT@{iRfn>LnA@X!AAd+uZZD1&>J?Miz!PjZ z=$LCjhM#ccS4%UgO#~e+dTZ2u;A&o@@S>z1DV-?f);F6q*(M*8#KaH+61`xwwr^3) zl?v-<Sqi}U!pudf>cz;x=x%&gX*2WGE;I^2ha<93e!UQdnl$E>UWA}x@0O`FY+qHj zqev9IIexv(Kwt@>py_yo!mD+Y8uK6##<r9dU07v!urDC#aA)J9OjJCYe3HSEm6AOL zO95ALsSw$hJ;t|>c1q!A)(|ZGCSD(v|4~q(IukZV^=hS)8N%gBMJh;}(?S|rb`6(V zxs=^5h+#>!VdHi-z01L~y2EfeLo+ZU5jmO!xo^IDiJHK&og(uCu;Db=uAl<eQbbpX zo+0ex2OgM82QguUz|@PY7%>Kyo+8-M@eb_e^<|f{lCqQ3R+DPWYH``SM0VTrQ3!V8 z#RVaV3oLqL#38?&^=lzKpWWj%x$2u>X4ld42(1%4D1B#0S#F2{e04VSzmo{4A%@`L zj77jOH{1gJ+5{AVv2+rEop;DmYYJbo;cLd}0n25tWf<}Ps)lN0Sob)3TB&!6+$PrT zstdo*nxm`PD77%hxem`FL|d_~m3um(j$3BxjAmF2{*IS=T#*<a1iIAJN>?sS!@VvC zr&76gYL$il0Lk+Gqmc;(4}cY>$c}358`^QlGj;<fi(X6#6w7K$T62Q+oURf4+)e3E z=hApj*jN^coJw8XwX#M=x{Tn*+bCu9rN1OmQq+5!RNMin<#>TaUM-ehpTUqoPt4TM zeyiHz{|$}>w$of1GL6aBxFw#28i-Jfy&N{jDARR26^W}wK8IEM`y_Qy`tz38Pib}7 zF~4$0o&+P^pcK=j6EQ1uGaA=x0_Bj>DK~HSWzj4eO>CX<fkA1KwTub(DeHe6uW1Y& z)ymp!3kO2wLFm<=VAkWr6Sfq_uES@GSx)s3jJO@aK%E-vdOKm(Gl<Sn&&!ZXokk_K z{9{_Cc*F*l+;qdkVq%Ygc|64bu28W2u%0l(_SVW5=Ey2<$8fQ?G`V11%2)5qZwWSg zW!ZLND_|_)j}hDVz=>;Q1O>1Ss7iz`eN(NN*Mzun1N>&!c4t1<9jo`K+WG}E0qLV= z99yVXI}6t(C-~XTPRfS;&tE!Z7#yUM-mxN#tcX<_pz7>3!zk82;BWkPXOJ6d?#V)w zu;;?^U~5%^jDDPU;Y;)L-f5~}&P|+A{6wKW=3+1fY<THvsPTC9?~dTky$nP?Pit{F z^bsO(V(R&oIjAb0u4c1Kx?$2W7fU_Y3_r|-k`16uc*J|25Wn}GxJllL!j2nmjdnLM zB%A;jXkA<lYYVU2^6;gf)2Q26Pkl=@b?o;5q}vezmdZBvQv1WmRmiIg#CM<jlx5>+ z$|sgpvVy@>_6bDTae>O=Mzt{~6=o)6HFqVf8Pgp3+~c+AFU|vb#EWC3f1^0!@*S${ z(c^7;n<7X!&_K^$`KF3L*28#um!0FEdPzjfylQx!VqW+l4U*m*q_2Gf0S#o~%iF#) zPTx<>#7TF1pQ~yMh)h<LHyA;z>ljUHAi0{2E;uA^l60cFBqW4q->SpRmb&)2v21g0 zq7VlQRWUXImkaS-QX0ef;5w{xR`}9yqm2DS%6hqO^ok~^KYBYk2KIUa)Nq8J=MU(V zx}k`tMpzs=yow)o{j|qdCKhEW$tT45uq22w!x!S2NSYLPN-jDICa^PO$K@ZYb8cJp zA6n16+naxrS#N|6$EoIV06b=KuDn+Fro&&MMb$r{KM^V<KbG2^Jo(@Nanz)P*Clol zPsvNA@weZ|A_Ty-dzQtbiMbrMp29al<&ZIJCmez(4Sr{1krAPC+!6U`b`)}8)w%2A znYm0(YIA<#n@V>doGCTWb1d_0B~pA&R3)mBy0=35`5rUUs>o#NqrX0e)%ALjL1+U` zR-v)KG3%0_C<&}|f@xpi3-*Dl^kS=McyA8CJhl<%f2M3s5b%U^JHut6T>t}BZ%F%? zJAmf>L5ZKQ`$~~r#0leH-qdN?elF}PdC%Ia^de-AxyZM%t`U6YU;uc5{$ZlBUZNj2 z>K8XQkRyMcZ3*epH%FpFw>?yJD<T1>C?{?8RuJVd&4#4GGtt(q+2A+izvZo=+GFhI zSNDT_&0L_vUVfLzb=bYzQ4|jUGP`|P=1x@BN0W&>F^TuXb-=G1$1R+Ln~-f0Q3BD& z)!>N}*G1$S`1_W6G5rTmL~l=azLW_?{I4%L8jby&=IuSC#_Yz6mR=cn3SKle&E3Qw zFxyQ6%kITX66TC_>e<vgu2J?rYNRVdbhRmrJr6D}kPZ2sEEAKyZFR_a_Je0U+%oUE zb@8B$g4r*~Em;|^FeBTt-=-_TaV&LO{iENvXwILm_*i&N9h`qoiA~Mk8vsOk!zP%0 zHnD?b_yhND+jW(fcwl`Fwu)2s?bFS!sMOy;!d{f0k7*A8f?Ql&geRC9ABaq9KHAh= z;=k|^#f7QxA^=kHY7zv(ohE+U3|~h0oI2ByGM1gqA0-$}0b~IAL5tXOoKJ(+N}BXl z&<bCckcoeFIYwpR$NgWk!<N*^Q(sr_PH`Gt=f@Bly+o@P)d<CV<wah|hri-)J%q7C z*aq`+F4DPC;;Sy>6ZrjJQKvH$Vz=G+x%F+qAqTdh_iN{=@n%+FP8pPwMsyvT7^YjN zRKV?`oE~(E-@gqfy5RaCvym2<dFB_!MnQ*~IJZV)jv9;O)3<4{BE@#4O&a`HCNSCe z<I0M9V1POBSKp0-Z|sI}KKiAW{U#N+(f(51TTz*p9j%YmT9%$gm;$wK-68mQ&@6M> znEeHBfoD{Jm@pXYd`V1K*ZH=S(xtI>k>X*UQnxrv^Ch@h*O22*?w9P?XD)RZv4t1i z!jIJ~2|HZnsRrn+q|kX~Y>5kAdRB>SYG5}U=BIuwISa?G{S^DS5*%btP6bWiVW3oc z>FQY$?vaTsQlC-*k*L1KMK3+dj6CZ2dd2qch{^yP=pQo~K8NTHaurwCyNJ}^unQcx z2j?VEW<2*J=;mLj8`D8r+xDmhN3gfll6s^QBSrf=lsbR9H4ABI?#0crd^m^(!<&I9 z@Bb_<Wn|O|Z2;nRKId$9mStTk3@Zyues^8q+eFf;?5ybNzg1o}OF0W(4@36Nt&c~w zo)8)S>P^Q;FF9e(8^VtWT(~?*Vdk&Y00m5?rI(70ELRAYhRNOtq4_G|V*Zp0zomxB z1~$JIAAI=D;uH&p8gi#OfdRBa$p^p~Jg7ogZ4ad4WQa2T1?o&R!CK(t{8hH{C8Gez z`rKmY&4jPvOL?Es!mx)px&C#}+E{|@jrkU23&fo4WPs6`nFxUun@jfGDFH-ON5KI+ z?_iU>cJ+KOuA$~Dh{8}t^0wWA)A`IZh};qNCzFql{_(I68ErNYjAhLu`Q>wN<k-Ul zbg$f+!F<3(!*gGEj=Dyf?w7x>LmaZuQN@_%@m=96P!hH{o~)L#%m-BckyO7QUXKt! zMx`pp0^cmwSRVcL(`ZXd>x=dWd4WY2Xe?DI&vp&w-uW1~vUC<n*BIJFDPZqRN^0Li zqDarDyQD0U!ByhZeF|01Py)L_np6b?hlwDLi$*>$bGII!z?}mBfUW~zZ6{I8qi}*r zVLcF+ueNA;7HRRZ8K4>N!ecCy&!=f52P{fGjv$#G$)z~(Q*diX0PYD_bhte#_2tz+ z2m;>qQdU+dpR?mKi`bi3FXmI#Y`0iJVwHEVw)Z@cLxDBfTLQjKx#ux2L|<g^Av2pq z@&UgD+FZ{%W#;<6>3ps6a3wdC3JslZfZ@itu+`-nkYI~)p+4foy|<3U_%qq4nblno zJabGv%#gSG$tqILAuGfSs_vsU{QaL+(;qBgi<IKHarlsT`0Oq1RZEL_GZ~Lc$$S(E z&Y`2^_`Li?T%Zqi`iV)~Jve+A(ZGi)*|zNM-PKM8LiP-7P$-_O#94<bkdkkExGZ>5 z+ZcAlD3<N0Vt!z;^10sPX({y-XLduZE=)Y3eX<w^n6326azpwYa6W|7%SQVBXM%D0 z@RE1e$PA6kSToGtBv5NRxloCCN&MI+G5hM$91&VT*b@mSi>Y{E<NE;AlSWRT;Svnl zy*+o0rdYb_SCknd!hwXq^0%i?L>zfaEQ>DZei?JGL5%ri6{~@@NRCbtf;Tvy0~I-? zX6bA=H1Xs|qj6aSX+Y((V?bGGhfx~68L+E|*1ic0-U&k)@B%wL*co5ShTziF7v}d< zhfczn3rXRk(<&<N>Kd`KXwer!;!C+PbW$AGc?mnE8GIb=Y=q*<z;O3f%|Bl>3jI)0 zo7RH-R*Sk3$m&feTSIS)e%|AuNH}z9;r(F;=bVMM?BmPdPrv4PiawyPg&arnqM{g> z$jBj&YkDafHhH<~Dn4dGKs2<s;-O7*hJz%!_1d6SHjqxaAW<>C5~iALK_071B<wbc zVsv<Mk$i6ntIC4&)K6ViFd-)8cjvj8m4tNSIv2mfe9eYF)94vY#~#&ui&4N&eSgum zc4LCigt;q1{I;mbiZ^J*l@X#<q=}8h+;a0=Br2~jX#r+P276EYzGvwt;cnrr+aCg# zqseWAp7xe7i0cyZ?n-qu0TV4#QG;`g<4!TX$fo>25;bafVk>3GW`8KgA&o7RkM<C4 zyz5&d2bR>zk5lS0EYUCe_G2%XAGDYIW&yr~O5xW!F%iif=)Gy5g`Hj2ungW!ghQUY z$iz}>lkicSK;g2-#)!7Nsn;^TL?A;s6r;Yh1%<)i;K`Mb*`>SVIv~j)Dce2e0UmSm z4SgxjH60>;XidAPbH-#%iZQ8FxTblMtceQ&L*A2Q$)OQ_F?}iiN8Xd;zj;p~p+D~0 z4FAqq8R<CLSqK=}bm_$`ZJbRV>BVdeolQkdjsKXK(#x3InLAq$FtW4J%Nja6TDog9 z(lK+eGXHy!fq;eXKSK5ly7Wq>PJdh+jZK|+c<4ployC=%|E=&Z7FT9wW+V8|!9bw& z@AoG5$Ikg*T8xc=h4Fu<{w0-NjGR5}P5)hVw53=1PoyDlWMyjX{NLp3WwVyV=$+fY z=8$j?Y(-Zw&5s$5AN_iKh_W)AHGa=hQ4?j2DGScs^IP5I7ld;^gaC28HDVk_@fB@T zv$bdKmeM@6AXV7?q@a;m8^Bhj`zFawM|;>YUgnYxs>&J_FlH*<{usFvEzV6$k^uWd zi|8|YrCt(zOx%53!z~5hBAW1`71Gz{At6x0J&D#sz9&mP+5AmXMH+m2_?{$}kary6 zvSS^u8L-)r(GPL&|FQU-|K9kIkrnK}0{mC;*;(i~*_a8K{(p<l#QI;wXZUwJ1IvHt zYX$-)I(9ZrrvHTh_W`K>3Z~ru(?F>^77bxqHAqxV)@!Hhp@@|<`!z=~an%O1_{LNo z2{yF01^I1ejtcSgxDhVcV&-?jSJ(yH)TljVXFb-uuQapQ2s$f1htye!c(Y1%#U*;# z@8TNj)Y4CkwT1#%S|6f!Mg@$*gFQ&T>b)1X%}I%(C{z{WhmL=P5BXOX<W<rzU;Raz z1H*QEgZS8>)s=(ys=VuI2H#7pjM}{;2g)72NmaIYLzYl;_iTjlvL=mu!79`;Cs~Sp za=954bo!}0NvAuJjds=dY4^-Z{fmxdh_M>l9T3k!0-Zw-2*R!({{pDrDXoX#ToLVs z?kOYKwXwIhbnW1O0+jVXApAdo{(pZt9IXHEE`r9+7oVadoz>A2e;zY+uA@sQMA~$E zb7c!yHFQVyF9`an?&r4TkXEj;0;I%{f*xK~5H?&hFLn9YO9u`d&mDWc6SZDh@^L~d zTe8;#a&LLJETAz;5i5q+;5*E%QR<6qII5I&7OF8A^kW;+Be3prwE5Xo$gXw;AW%_p zOdBnFd3wr!W}NMw49~-?2n!KE(&Y$-!NtU@I6J7uFBHZV3X}&`06Rc>K3_Y+A@Swl z6B+P#wauyAmfwH+Af!jJ+UcNk90Y8QjM>%E)6eXkxPuhNYFC|ctY_ND|0d!T>5lW^ zxHg6N6(VsFzx#PrUcWp1+ooMLmF8*%;wLEjswAUzI<x9J!HblmGz>T0@*SBeuDy-q z&PT9_q^FMuBX%0_q=d8*AZ#DocWF96tgw;C$GgZ)x&I1@LScnQ4PFi~KYmbN<bb&! z`??nOPe5@!NJO(I#=uc|6@ys2u^#?21OYqN1>V)LLbqGq)*xEdde7aWkB$dU?j%OE zYn>}Dq=51xOYZu_*(hLJikO8Zp4T2E9>yCrlJ8Xt)HkkwO6sC~`0mv1YuYhEsQ!@- zFmS#Y$f;6gAfygmr)k5H{MUY2WL7?=PJq;!VVcm3#=wq1BVX(4>_X&1tueAr=cFD8 zMfoS-=k^9LEifT>&!es5iE?MAr-$k@rO*{%Z-&F7vs$OS-5V8!uw1JG0FCi{VKaGt zThc?vWIab|CLp@TrmsG+!Gte-t<8OyA-aenw#1yeQBoT}Q7eWLIf^VNq2G-Tx`?p^ zfliatI?EB;WuphkhrD>KqRh_ZHvDcif)MWq>IVH46obr;siYo5UfI=$bpRHBJH42| z==7vK_>`DZZvN_@&3ABEODNkebv%yqI*3Nl#g_xGVo5Ryb?|g|9x5*oEO6VYeDIH< z{Xa`=fGAsKSiS*LD+;YzkK;=wnQ;;QE|F!huE?2x0^!W;?!d_C%CbN2NF~>oq;WHl zSDb(8L|Ki`UQivk(D|mns}9SxQW*^yhD(#aB3LH}6Lz8Ik25*p|3pGP8$yAk(Og$_ zi6>{f1VOq*7Z7N%2iiw)TxM-Tdr0HFa=H%y5J=fWzAA2_HH3Fod7P-ynJ$7Hz``^n zWJ>~R+7k9biVZy+HCT~QB>9?x>&D+~j2S2%orT!Pq-7@GqYNa^a0^!0Fk=`aIyp(! zP}4Id<C3>8I`gSDK$&jui22z332-~?O+CT%$li0e@zEW!)z=_`BBCJ?<}W>k;;ZNe zd#{LA;EBdHi|P4-5rYHvb_j;M-_?Dn#=!>V*$JJRyKqAk7l63dWuv2Tpj0gsG4vAS zuo6M>I}`803HXVUCTG`iq@T*e|G2x}oVrSg%T#3micpaIw?F(&dDY`ERPHM$3qTCE z{1}ZFOchbNQ)7P0>G8S0e+o^2@#mfKW$1w_4zl1G6YArHE3&EOM#PuW&f->z9B_)C zp0q!PAf>7eNwe3#xX+V?EBox3r;)=??OW}FH_~a|T;((-!C$UZFfbaReMz{HYs>~0 zBA9raZk9JsKsA0W9w|3WJZ`>3_epvNYyec;h<}Kld^6OB6?!_#-va-g%4IhBzJa40 z5PTxMg(FW26(KPE_mPc1rH^P+Gd^J}J7zW7A@9sPgsd@8vvT|*qfg~61+nT#UI~}K zK$4KWGmEx?FOs;>fpu~E+ZMuUDF8sfQ4=D&1hrzO^M={!=rB9oSP5{yQY!BhdW$Dd zj_fBCuvVdLjB+ujftWbhSLD>+o*y6D&@{riQrXrNkUekjTg7^;0nmD4FqoNrH+Tk{ zQwPmZy3V@wFr^$_3Be$`JIVuVl|+b!nWNRmFc~-Z^r}GvptGBZZZ}Ad^(Os=o;bkx z(F*sRkQFn#!nO@Usbe>xm*@i%A6#fnO?5x{Ej)Ay{nIIJFQK5J9*cCP@hGFLo&e5b zaE<oQusN~GU+6XPFRqaqqU_F+L%j7wg`;XZUn5g9sjWtf;mbjbE@6g@wYT=$kHpT_ z<z2iPU$qE&1aFXEW!)Q(FFD0QRrj*gDsFAjp5cOkJ@O^H4LY9|jNvJB@!J@)R?iWn z_o~&?K+8up^1!hcQCDK;jC!cCck*(5T~}b^ui9pVxQYw?i|hEsKgjO)(sTr70Uvhw zVndP$ojFyKg##b4q)dZ0*ewf}zLfOW>9FAXapD&l*5xQ<bco=zT~-{&$s$&MA~tYv ze;)`i{BSAu>hI8Ynvj1Cu<E|&($P{C%9Az%+Ba?MCkGBXYDFM2hOrtstK}Q;R>zmP z#uf}&rf=#or)DF&t`@A1&?j8&QyT!&gd$Ck^_V*;E!S+%zb+#;c-w1CS9N|VLhh~u zUJlVwbMpJHBg*mx9-ZmJ>jCOEEwqv78V|e7e4T8}aOSCiIsNoStJ|mp=qOK@`AfWw zsp4Z{YI1xGngl`q$%?GV^&;S|0F?9S>12(Hsk<|fb6dpKlTN($XU(Q%%f%MG;Go9f zbTdTl6NmClj94ktIfDsGQ!WDo6V<H=oJ!uvIAh0}P|aTz3(%IprGQ$e5@r51FG6^A zwc#&-1kaaCTY2OGhUa7MkVMe(@i$8p+~MH}`ejqOl+Wsk6#1)NxGP$yo;%CBfz<<S zb9@hhkf+23YfeQDZ8GrX?9EL>hXZufKI8AKl1bEv!_6aH6{P{mLCymF1wEO~zZvL= zYq)+Mky09WSpt5zy`l^P{NkHB9%rm%ht+=NK~{wfN#b*>O==I{&^dTw0xHzD0|{RO z<eER}b8vlzWNwYzr=^ct9;;jFSdhvj87*Q#OcNz}gcZ;SOq*%*-UXFb)U^SvDlFta zOZ{Z?kXQh$)u?i;=|ES2fA6c`tvjOP(kF5Wq>-V32y}6&n7j+(f}hv>c)==oOPGF( z9~?$_J%!U8=xGGi2y^HC(QmLR{emFjt8fZF9;IDlb}~o;C)yLfNit|Li8}t%;K#g7 zT{1S#fpvqD?|iDQbeA|FGZ%msT?FeFmQJ~q=0<cT;InuP{$}SA(zF^|1GP7kt~N@L zs}o_sjEC8+LGVhYxr})c+A&<advU^s-Lhf-c4CB)ie%PBXHYo(O{K`oK6BKZpGKHR zLwi$jX&mA82M;sZ=_P|6SWnX=?pbmcvclLs87CHsu>%K09--fhC(}x@4f>|00NfMy zHhi$8lVOhM)Y@vSNGneyh-hlnV!e6;4^_c_xl%szFdbZ59E!Nx$UJt&UEJkKy}0Y9 z+K9NIT0<R*;m}O>Fe7m}NwAY~Jg*<<^~n6vP!s8>)Xdu?5>nH-2yy3~EdUA-ZO`!3 z%lZo`>`WN;Th1IO4VOLq>DtpRj&*hbrF%+rIS0DP^GWG2OTe$DDqT`5m!#j*qO_lR z*z}K149oP8bN+1*`NQNNN03R>3u)`OO-Ae%U@aGcIX52%wI)r&e}0;d2(!HTrH`&R z-A|@JSH-#D-oS`J(_pyS^}~8Gptf!So%M5upQK302q(hoq6Nvt3Ohn_1dL)%=8Hr= z+&VlLDzwbIt?%-dx8oLcI7B*Qo7Ymit%x@HzG|Lm+{EEF+IP9f;<1_LfO-q)4r{xe zpjJpE1*T6lI~nGhfX{dc7;jE}Kl9l&PfPr@jUiuy(1W6AWvLqTY_~3$YXed6opkdk zXR6-$b}dkf2evtsA;Z~id8L!qgo==TiCh4cVBCHU!q?P*m0N0N%ctdEcl?vGB`%sf z*n=-U@@=plVjLAyYj(+U*MiX1dsudiY1%-iWQZ%SiQNQtW8c<w=G~bh(2`}|dsfT) z2YWHFz#T@b0P4a|sB2^pptQYFhg!q?@t{`)&xD-$J#R)E!M9(v5KyZXnmy$pbLR9U zvqgV1xM{nUh0_#PTRR~=L9>xC&%W&l0m^zbM0@Yn<C`l8#^mSAd(Q`5KV`{${vOHT z0Z;+svFD|Nd*OqVUwYMgJ!5KaafuxwnrHWHOS3$O^!u<|+dWzVO$X#p{PJ7wye;8B z%#%t-H7r7?aGA+cKNuqX=1LtM=`Q^#CGR6VmO{jZcJVojhtQP-3pumph9|;pMi@1A zO^ZLjBUebgriUZaZ#Tf5wb1vX&8lE#AyRh6sN8J%*ZJx)HMl@0>jijyMOCX=#xyEw zR}wdk21kcLWC8PxDRU{Le~N2@rFR47*|({0)AdAT+<2P|n1_*?b~BUsps2hxknFiE z^1Qff){!<o*i=eI@FEqfuP&)`Rnr$#%^{*2Y}RN$zeC5<L68&Nh@`HisU3{WY8XIO zGy~mGAysWrb^^N9kjFV4G2_!A*93J{&oA^2iPaI?nJ5;yWTf<R6emsy<f!s|EsZun zbtsm@pVMjIO~hdSNUavsEaqfjyceZ(L7T+biBxEgj?pqHbgC^4MB26m$oQ@I)rKoY z@6R&8p$@_HL?hpqzOz4AE@Z{Ee;}E)Y?Xg7ko}?<@T{H}Q?olOS$LmaFKwJN@g!in zi9Fike?@e`j6~z}K@*JAefgp=D{dXjMK1tqQq289u8qlajvzU6AY6$a36;LPr^O^! zy0=WiDAh(Pc~YpFEO%0p3Sx<*iTMOGx{j5IpgzHRAq&23kOh{`?-Tj7h%a`zYs6rE zeNfq`b;}elaFM*>BPa#21t=3D`Rf!Yxm+KkcS?jDk1S0)B2F&PMy!wgJn28!=4P@& zNjH<#!~^6s*T8*5V)qd?+eClUINXmx)EN)CQ@EtwCk~;|;xy~@4K~Z>Ft2K|$q6mU ztp%}bkOu6f0iM^zXoEcDlLmf9ryo<(7W!glUTbZ()00MhpG1tiarb#9ZRGA*uNcUe zN=GUert_+BRfFLl<8I{|{amt0DdFe4^#R7*(b}kel41b64+UkSHvNzSEF)8hFxF{T zUJh{<zI;!Rekn=c8CXo4WK!!hU?Nk|CZJtja{trLU&~n<kL2aqT20IbKtLXTZf*dO zd<nYY?Q#ZflBiRsGi8<(_~xsX6gU6wrKx`+&H%oxlY}(X=ln+$#Wh8VVX*ezdC9}$ zvzIcP16V8CO6b^)ea?*gpjgDdQ<qA$>T5zdbP-%|P>~6Oi%2D$End_sR-P51^~ugu z3Cy^7c`ZwI&)<2i5a}Djb%7R2!Nc41%k|*uIlbG8dt>rXC7r~}1EfsEmy6PRcThq| zHOvRS@C27_s@L5Uf^Qi9Zj+Si*y9&9kd3~q`BBAQulp2KXC(~>yM}=XreN^JGwOLZ zYG~zWAB#>@=Cx0cu8l8mm8SKRujBRHzS$9&yAWS(Eb;arA57Y^74|;#-0ySoJPOH6 z=Gx0rf?kMRx_Se)!iKCEtGW7Nh;`)3@G2}BH8Y5U^>}gXLMaz>5+|g@@pl{Lqtp+$ z374-jt!@SIqkLT^C!Xj<IcU-YW-gbPo!PbOHEQ%TG*N-lCqN0s5x$b;BU868E})g# zkQwiQ-9c!o#cN*&6oh?<Xu=K}bEt!#KCRu7)2}H8i)?B2A5WZ<{dXROn||^3&yx;4 zqRE-TQU#8bJ~aFqFpyhd8^RhB@W5xtuBBBOr}dD;C*RHan|tH7=xd>q*0biZE48SV zw1vX3oR3Gu8?OQH`ydfPjN|eQu#E;0dSMqU()#ZaiJO53@cJ5uf-P<otlc=*pSdN@ z6n>YGtyqc1y2LX3d!g<w$l+j^D<hnnf@WfOk-l=*2Lh&lBUwj2Xfvh<)IJp0!He;_ zrgph8?yB{MZpHIkAy#Z#XG|4V4C*G^)_%Z2z9|D6R=gC<0A7Uy!^ukK?&Bxvw*+p+ zHa9zQkAx3qN<s$(xzY%I1akJY$Q*u%rVa%f8ID+FuZ~xz^Jj-80Ij)7+#?c5{*l$1 zL)s-PVa1?v4(_pZAjAxfB2~3-ruE8zQcQaOaVZWzEOD9B4z7wL?CQ<H*&|Nt538Nh zUi?I`^EbL^aAS0xC^MJ?am$TuxgNS+m$u(3)YJ=7LjZSAN<L5i-eh#*Cs^H4+rnlG zzxM^DG1z{Oc&Ss4Ko0@g=}-C5N45j*)j1E8FKK^;(8^^Su~=g&(88s9TtIFWX_tTa z^94J4qXzFfe8%1ba}P;}$B_k@w{bhjDfg<3`@t__lH2klryY|!A>%?<>UBGka3H?~ zrG9`<$*L&!k$3>(hH)C;kpIqEH7coW&ZH$joqY?Uh8V0l6Drkhq_ny)HP`&~5K3|O z6h-2sD>+|(J04Ct`MNQTzHiVNht*jbd8%K;a#ULrA>I05bcx?n72QzYt01K4SBh>I ze;G4&WIGnw8K^b$4_kpHs_53BB3c0k_3kaHfQy1JRp2AaJkw$1Jb|wvZMWSHHtXIZ znYZnyN*v`C{4KZw5QFoz!1S;=pHkI40CtZAM4=yJ=9n|&`IJ{COk)x*Ra*kj;~cSA zs~mS{81^YH^l_#J#q%zgfJ0%AM}xi$`AmUkTTMbzaQ%sSEh09PbW6gZZXzN7#7`F$ z$R#YUzBlGqRLpN)8Icdi#M^OT0nzX{0K*Xo>Cd-zr;m9lSvQ0ITi9u_9%8waP@RCV z8|u@*>h6=43CZ46%)o?F!6psXQ*_}JE>`ZKDl-g;VdByuPaCx26mKd|%F$}Uf~x3u z4<ouCX6o|;I`yRy(z8n(fa8Wq%r59JUEs(H*^;hwmov@=Zkk#DG&pwk5G^)2T5guS zR?^gwq`N&}`Kb5QuB0_H%6a%1j)}1@q#P3zG??E9gFTlI71_Jrb1LS>@}rlu{>sHg zB202diF(@_+6IozQl!e8v=mqhT+Y%nqK$IZvE#i9EwF8gfP0gfY+^bDagkb7^cRJ* z=cN^9{4%rzZVX_jHqzx3{mFXc8?d~Z1csK0iwOa?VkQ8Ah#~6{A*TkQKf?buy)thf zEJ3{*j1|=6cm4Jb+BMY<teH)N6ERaU9*3M!?2t&xD8R3fKYPpEN$wopdPYnDvi+W> z$EIzBX_YTG*`x+|PfG9E>N~n%=i+)DW8C=UECEc+!lA@zLi$7im@jAIR7Ee+hNt#I z|BUyr63LiE$OcEY{O?!Vg~Q%L=IHtrqH~LCidz)sBux<ECN+raC<Z%fRzFDNNTXCc z7{5ZF+TI`Be%yR<4nuJEf*KZ>=goVsd5%XNRHzLpe!_XJ{;4|1m)*pGTCR1w!=<)= z-a?x%P4uHie<KH)wp<Hj6zUhB&CdU#K)Pc%u^r6Y=~>qRUW^S8n>+XsXCFj6(OSMW zw+eE{D`$1McCc812y?I9UM#-`R*#d3E7cMD5!q7#^>3>#;vD{YbAvgHs5qYiG4L7; zD!9ovDvB(@U=JO)mxWcR<mNFrQ1+Dx7f#QrZzRm*4GHgmp~5UV7)B`^z#dYq8=Ci+ ztk%wm<y2(2);p?@7Y9E@vNX3)cP$dy!L6qU)|cT5L|B>FxBL0ETK+ugvVY|}N4SKb z4xtD-dh+Us#-l16zJn9Op%1hv=0%p8%CP3pVReN3$~2x6?iim>KWiKcaGirr_n@j` zkWothB&C88liUc;;EMTyEz(Q=)E13I)FKehZq710zLEB*;ayn%YhrN*2V}udFJp$q z64`!@m0zni0!{>B)U*k(_`-Jw4$dW^yUSJsw-nH;MCxDdgYp2DXBSE3?$QNAH}OaG z@pCIeccwQBPb!Q=JXj3QP3S2ceY&DOV5vVx7jc7|72N%)r8ae6IsD3TRe2YirbkfO z$fUSR>Tw^#wcTe`JTOo}WgkW_XSW0cLJ19C0Lnup74`5~fTTSr1Jfr}iX&tQoD{0E zl@eX@1#U)}fF8Zqek4G}6GK)_MzG}UCx3h|5D+;ghL}&zYcp16_MF<=8&vpBZO}C6 zdxDsvkQZg)0qXbrGM`+6qIs3;y-#-d?`s~OLu?lVN4rRBV6gCHLArUg%+o~%3;jJX zxmXWEWYR~z_kR0CG46JQ)2>im(|ltf11xEpT5qEtGDtUDU;%8?;~+)Jm(&r#v+43w z>Sb%i##&E4ke8Ma@<KGweUo1N<_SsBkUu(11;AK1vjl6ua`UXFTlb7e-d-78bW_O= zQP5YhmXeqJQqU)FQ9uQ-$()VQaE<bXz{ozFW<_B;g!kl45iG1~Wjwa_Wcc7dd=sq= zbA0*)Z=Q{UgrKuh%*#}#+{7-D1sWlx7sl;bDBA8iNEx42fm6El9oSgxM+I7yZX!=; zD4ah<8|`Dq8-iTxKPIa!Nt&-5SClX1(a%8ru#wBhvVf>>`TjTh6I0_=J(=Pb<^l%< zhIEHJarJF+@3i(-oCF(cm^>oii3?c0gvJww|1|`Kr|csBmcs7)l7t^aL%6`FJWUC6 zR1fzMN)BU$4hnSHK}VaNB)T0NJ@Q$<ch>g9W#Z@LLD>NGOFd*aNfloq5W0AQ9fZm+ zBBqIeSx}tcOwi#=@^H)&PKX|offXg46PnzZ7fV$+(Wh03eWR{GC;}r-?)44ViP+-e zf`H<lJ%*tg@H=);qvPa{z;Czw{n<wUWc(L$Cv}dn+{vraP&F{zuN8FJ%UKD*q5L&S zl9gY9NPny-DIcb_jw&bf06?Ub>(nZ;6rW*xxrpk>+mG!o#z&wmV!|a&^~pM<1A;!^ z3@1zP8c@;WrluIjF)=iHV<lZ0=}KW@wA8kp1>|ySmVp0=l$34{yP7jy&ksqlVT{&B zpn=^o>6~c>lA&5S$8Noa$B;YwG@CKF>S_EGM5>7?^E~p)MSgNIi#74nf@6?43(i`! zdUPCc(L2nO7|#?)dV$PCTO2)Eyu->CY%|Io^PktkEiA>9Mc444n_YA{jsk$L2EQIQ zeLuB6@GDM66AH#v?c9>v%XSh|tE`mJ2w<%S=yc)pw<&D^M`2LrJC45E^1!jsKRtGZ z_@GQQd8T|b<ORX~9U($EJRZCxms)?q?#WHiCv!~(j7)Xb;1sNG$I#pa<^z)vs0JwO z*ek{f8FM&(3OrBnipif;q9kyzNS=g&=U);nii>VF!lx8=?Bc0M=ees#KAECW={ePm zD=}xwjY0~E_w*y%4IItwYqj7)!(>*63g$fmLNc^<o3NgJlwZ8Br7Gf>jWl!Lpr2@i ziIM?noG4>5$#W);di_RFI0+uo^40Tf7!rnnmUjjjg>b8*d<NHZR5vm0Jx}vq4yHmd zBh?_9Svczi52@X<&vNTbP1DBb)A(nOfbqyr>@}Ps_wjm;VFh_BM3JA0R_F8{c3*6o zpAm9G#-*OL7Z{w}Q=BQ_)FJLJ((_dw()?Ups#L@aZaZC@{R!rP<C$j04vv?6qtMX| zpJ$ZbSS!%hf}9>WdzFciKRc?GH{psyuUIE}Ph-<cyye&;L_xJ9_ng33e###I-ck7* zP6t3dMvxM98Kk!fu}$1%5<Ndj%soG`qY@5APRpSd?ij9zBsic1(tZ*JmFgyimxyUr zJC@&7+h=hFlVO;m=u$g^bmR0k`3O46^be(zyRe=IvZf$0A9z3{eEEM_cl9tF3yzt+ z!3>WrFS$To94TWv0j39DRd7O|eY8%<N{C$#eHMrQobn#keL=CV=1twVF1g2nv%5Co z@Wh+C2TST>jyF<W`5%<IS_3!$(=D6!mrx-n;vq}gk4sX1dBxkBg_5(N@0GPJ_rEqs zstJzgNRZELyjKTdL8DIARz<jLlIckLg15#1^}hUK7sVEc)?4!*z?kraQV278W=8y+ zI%PvF8i%4Lqza60DBq_T?Ai<qzr-^#6{#)X9XEtxB4VuY1Hh|I-hUK9JA_rhiz;s> z#yfXdV&cbdZusNk3tO2MP>Mml?n-HC30A379T7h?6@kIIKaC@xZy)AX2s5d0LUjpy z=|5%ag_FCeAV#+yN$!lByGk1#v#qDh1G$VuhwOxnAMU>_*#aI}cy3&N%isgT)F*<D z9kH6q5=0Oda9Y#0Vt+hc9luL!07Bm$n?`0xe1)wp9)Ed5I{ALKt0yD&*-1$YQ*Hk* z#?Glp7%u3pW81cE+qP}nwr%?v+qP}nwmo@sm0WyP$)D)z(`W6q$70u6K3*%N7V=>d ztvc$ajCZCDWK&s-L|^(#D@4{xM8$cr1#?9WrLcg3Y{g!36-{gr79v`}iONK3`cOYM zjKeA&SX%U;*P<Ot{&LZ65Mo#a!YRQbW4ZU&8t!$sq0_AoCOpqeJ)O+WW}M|bZFQ(Y zTxi<vLNSVcRJWT|SG2B6C;%`FBmlN3J*0|3IOxB)%R_ZH^qikObg&u#<80DX%$Wmn z1wqNSvo=TBu}46*CX-=UTUs(1q9kiiRi7|fG%74giQe%1Nst<6MEV00khPjitx*rZ z!Sxdg?%)zdchPXJw+@0W9OxH~uO6d5V);)fX%zsiwLN+K9f}A>!b8-NPyn_f!@Kxq z#|GmL7i81H;%j(*)ZCs~OtF4|VWU2`_KCh2<1~hEhb~w2ISQ~AJ66dLZAI{Vje|fs zZxGljJ^pQT0b~@?`51EW-A_3HraAukefpap(Uc6mzhA&l9>O(CIUgYqB<LU;BQ8Sb zc`LUCiW6MyE}gy=!&?;9vNhrkY~t{-pcBE|yGUMfKZPV3ttFf(**bv4x|p8sU%ICy z{Zpug{7x=1WRvZeJ%sxa$D$hqX}ky;jQ^lTSdNj<>8a^tL;)OJa%wj2^Egi>=vh?6 z7v7<iv3+fx+sDW%`KqHRxp}pTx1^bU=;&tg%Uz|d5m&*S_9or_gJ1=x<|rP%Ga}pM zI#~q?M5x46p)sD?<`d*QKh`-ViF&>L`aYMQ?ia>2+S+E|s9_XOAvuRcH$Pzi1I~H~ zh<tQs$T7O0*zSk0nRtGc8|nRVEsbhmldQ<l`V6U05fS51zaOD`H~{<-rp=j>&2cY+ ztOp2!|7W#ag;1&*>Q1ah$AbGo<`#8?&Fy6hHx8nG61ZiyyQHS*;1FHkcrcKo<_XEA zU;P%5fA<NYrD>Nu@cg@ILj#!?V2n4r0)PA8!wvnZY+al{u^{BY;K8=dGdfTxam|>T zT-0NB%96l5|7g?oy*i@HxmHfCL*Q?K0oE(q2Gv}5A!6;PCkw4OHSO%{!lv;RN@H;5 z-3k^V30Nq3jf7eJKPQ3qlq&r>#TPtNXXmB{2a_b%@ZMNz`o#$uU|zqq$Y+HZ7Z(!N z3-}=;pSgVRdhN)3*?Br!sdXHQUc{{KFUT1<U_e{|IV46o=&xm%ccTVrVi1;YC^w!% z1eF8e8%#109l{L&aduGrdM~0Mo6tc>zlBc+M-Je3e{F6kca4rWz3yRGSu8b%X)J(C zf=8dPoK-rU7ncclV(fKp3Sd9{WK#L{bHjdZ{!WBG8CchftBkHJdHeSN$Z7m<M&|#? zX|OUfv;8072yvu|PW@A`{Iv|Att_1vo3QIT0`)fsfFj+X6$^UOS0#cEAm0dzZF_p} zp9B>HiYZGT?M!t2kKun7uGcl(c$@!F%V+}|>w@udes7;P8ORS-{^Eo1QW@b}X{w?q zjw*Btg$Q>c5!jmNMo3<OjxDzDX$TU%t0vqgK2c_HE6|(t!7p?9vX)Xc)YVxy>?2iG zq0mb_UZ^2j@D&FUGYOBqk996(#^M?M)h1H<7)f{EDlO8V*n9?*!0P-1l%4+B!zbFM zoj;!{4AYVmE{$9NjzxwHAa^wjKor)5@FL4?{wj0r|5`W>o&qDxWb74<WEkmtHp2JI zgTzVbt|i&$(Di+Wb+%O&1c!OzX%9`h_Jl|%?Kq}a&m@l-XKFspgoD8~pE#jUsdS-? zh&@m2_utK*NE{ymJN)q{Mgb-w8C!6WYzPj~*PX)WNI&_yyOr!~&`zTP(8iq5cPkBW zlr9bXXvt)-Mr70kY!hrLPkPsb@+{8g8f6s(M3rwhj_gFkDZh^R=aP^4Lf2G<<ACjg zn(8Q7bz4GzKG5$NTdM7(y4p^Imzrr5aBKXtD|_q|nmV3*g4sR|oWF4P5&nx!UmHTP zkpH6FkZ<46C3nrQJ7iapMlWODirVT2=XQW}Cv}2(t|7E6wbm+D#u^I;wH}25(MvBE z7{_S7;JwuA?2V!S1);J|+#V4eJibz4xtkfQM0oj72wABFQ-!k@)KlW>{Y$u=vnFW3 zy2pH;F1^6)-H`;PsT&2`P{u}ff}{z<ZYY8k*Z%xMivY5_1r%kS`BR9$CyeP9TeMlc zlpEV?^Ym<HLe>bRW>4O~pEG>{8J&OEJBMBp9I%J=%+Yy1y$0m^f@=yNl*_>e(llQ< zBrpV9b7E&I{E(!<%zH6K0w;*Wsjh{lj=s(7s{s?mKEG^Ply0SLf<a*vOYC)yXJ*@) zU+XVRFq>;dw$*MB`wdv>pe?h2QnwMqb3Shkn=~xek;rji&U1GC$hWc7GZ7W`tv^qS z`#pn8)=D?=&25bPPYu@b8tU$VCQg`f-$Q8Nu$IBoUFcT6Opmf_jGME`@oP+fSeOxp zMLJ<xO2ytUh=u_b%u+b~>4I+gcTVEZ2Wj+XUwS}Wq*1ST;h(>X$eLG$V*FOOo4<Dt zOB1iV234?373nGvpBN9>GN1=(eEX~me^0o=>%4&ZXjv#%YO2V<fbGyQ`p={(I`tOn zvlCRfjMB#G?hxdt0r}{HRJqGg7jU(g5Z_QATn~tNNu$F08?Co}CColK8MhYG6E3;o zeBJOMUd2NOC(PYvY%~Q5PPPU77P*+<ZzRd`h+V|;Ki1Yaq$KC2J^SLApb<O8jxF>^ z2X$rdGHgA9IMg8Cr@^c%<913OJ!zC*-@_Wi+-(N#5fC`B!IYs=RGlRk_=J7?$0=p% zQvK~v3NM59te?Oo#}VO6_Y-%d0vd_a-jc*^cjWUh))t`w8;?P4g#U5$x!GA(+Er(k zs$NeG%|^Wi<L!??+xQW>=uSB2qRpIB>=zmQwc!F%{h|5P)zj=@yX0MNu3zBZB_xQy zs1JX%;V8wY;=S9*>Q2q>LS(xYMpkx7m0a6Ah9}D(+~%#Vb3-F&0aSqvzgVXIDENcZ zJSm3yX0yeQU@XsEvLZ4*+as#m7F80~ObKhgkQzxxv{5yFV(O5mB{LKk@(d=%53i9Y zKy%!MPW`S>1XZG38H{S?jew}H-SXZ3*}9_2R3t(TK+9>?Finc`dY_#3Wxl>qg<AdD z(Qd1%6a;$;u)xo*!Ert^Q|}W|T>x1s15K9?vmu&GsI*)lcK_N4s&}Hg)oZI;)R)Ta zFt;Nm^Kz<xO9nkSDOsQPdzCnie^>rTdGOaB&`!rHQZDgc?s&r>T=c!Y0_n5rez$2$ zyO8*5g7OF5_#B4{+aKL4l02U4HT_n!u~wRoO7Y=qpp*3U13q@jEwsnP$m&mzwG=IQ z-;B?1#KgU)Kq^U2GB{!%_&oN{6<kfJ=~w7#rS=yF`cW}qF&c5~zTn4zbZrSnSlG7^ zD@{dO*{^NOiJOHygd*&>RgQu|#-U6!vG`+=Z8|kL4PdLFMPUer=CyQRqe=?0forWh zE<H`$FS{o{{qMapJNc;kCJpOVDX2l!S8|7GDlR8IXD#z&oepk%xtE>5{fd*8Y&Yk- z!>r7@mI~}*CGC%5zL;&mXG>D^)CgUCIo%5ulq_#F`iiBrXMQM8_VfO91SdqCBsP47 z4oh2mHK)?mg<G?_kW6N)epBUjazElfyDcG~DFB>Rlp+niZ)((+6(h~v+FH5|<@Y_y zH_CfY!HQy&8N;0aoh-QM`giPHZ`^^2*c?Yfd`;<-o)l9_Cc(kPKH#ooE{9-Ke@az3 ziehnJvi@D}jK+2zp{QS*cu=yb(_V{u99dHMWnkwel3&J?3yHu+ehH1UNxWUGRjUFe zu*)66DwEw7HkHAn^}&a>=qqcHp@L0n$jAL|HwaMD$(HJOq}mk#T@J4N{_GUhhTFSR zP`2dTFjqO-@E&Ju(g<G)VebaJT0u3K->182nflnz_^EB{Lz$c1qAYw0Czg;nLf$|N za4Hh5`VB%4f{)p{Xfddw^)lKUcu7r9wz@8GoI#7uexn!l4JHxrA)5kA0~_%br~kZo zLUa>+6`MNGr{N~ZbRM#na)7vnCy{x;GeiD%_|U%r>EkjOsD#O#I~$|0&|{_$D|lqa zyuHSj(nkvvz-Lf$@F!@ngs3jPA3(eqk+9>!Ft{{iE~O-pv&qHBaJ$b^?6#JnMvsfL z1lH7aziQhmVzS|oMvX`o;#m@FrFo)Xgk-Q{i4k8YVc7OJAM5X1HIhCv$Ohdzy7##t zoFefIwThR{CN8n)*sOLge3OO^{u(j>^XT)QEp!NuNjGYLgVG4V1qDAnBU?dpCP|F3 zC1%qE%g*-)(0QNuKe{2m{Wtc5-Lq@?V6?8m>%85eII$pI32^^Qbv;haCrAE}=A=s= z8maM$2tFcv+$bYItbu0tRhueHO=RK&>SQ$==IE14e~xFxB^HooI3upZnu%9HH)RS@ z6Nh@&8LN_`^;dTqSBM^g#a`5PyR!${jMqs4$%9VBVw<X0kZ1>$C@&swdaf0Y%-iM% z>znoRtd&tLL~a6RNg1&a78`ZC5*<myrewjD%PLZ~@_mTAc_{Tkqey-^?p-h<m&vNN zsti~14~{CE!GV3s|9(e>%OGUkoM={`Ho7PS6FS2Hb~?l{N0%2H#B;e~?#+js@ZoQ7 z`#s=?y3Kv*v5hB<f4G@FjumD1j`ldvMa=ifq|NGh3cI)2$gjS29PyKX{)+xuXCz5| z+)J_-{eBa!vg~&i3)R8%f~IUl5^F1F<$z~d$ZY=+#Nt*ef?UJXg(P0@Oti%NVf66W zRRjL({xvW)`PX$M+wYIh741#pZgrEZFVEH*WQc9pTMy8X%xn=}#`H)+MfE#b_j{d5 z^k8L^W(Y0Az_&-tS&^G{8F*U;qNVXtg(LRB-lApIENcryqntl&%W1v-?4to3v>`R1 zbDzwYF}SBhOx%-_wnO#dG@nSEoyPegzDSkZopFi|c_*MMz8Y*zs47?5>to8Gkwb<1 zr3kvEeQ*0onHLQ8&}gl45`uwFg4nw>A#LISyq?NrVfB<D2I@k1Fto5%gE7Pc(EOMJ z<!7~7+#H@Mw@O|DRtW>pfZBWQb%~tN-tVTm0hNt)18nARPsKtRp5rB3>D?O1!YFM; zCguxxG)6h+Y5<d&K>5<8!M;JM`CflVBX7Il<-<RA%t?)pUd4PbJJU6}`UQ4s3|5Dy zUb5(yfglQ*gk3{LGeGu_J62U!Vq3JvJc4g;OtDa@kB6hxKVggQZ6nb1(n@$`g)eQc z?i1#gnAZeMCqD=OIUzAoRC)}@(Mg6TdY#+2t;Ezjm5gL^Fki7SL%nl8;jCMvleT`| zs2cP@=jM8tZlP_lK}&B85F<fP>n|7;4I;zN+OyzG<g1=V6v~f@-z=J%o_G09R#`p> zboz;EW-cl;Rh$DQ;B0n7Rq~WKdJbt`;QBA*hKH^oTw--WGiZ;jV}6?pC+KJ5@I`KF zacL-Y#?Xb7?94u3I*w9~ZC|fl@V;e$>J;67*yh_|i9hQl5g=JBjItR^VYZr&9egwz z#Xh9{V{l@yHI8Gd%_64WWLC=MXzdu;W#SG0@omPbOI*Y!b4B-z5EyABL($3~bV2)t zRF1ugSKc$pdb&0a@&tBdjLWVJ$;su#iI@(?5WrFtDMA5p;tZleSU(YXz4G!D#Rq`5 z*J2NzH-+SFurtBoum;$x_oJkyG1$f8fbL&BM@j3z&7;AV3PFX?#Gt__#JwaUm!^Kp zq<lb|DxCrs{|MuWt&PODV8AXZC^-?xSUPWe>VK=&v4BX^n`?{~e-BeAdQ=nMV?jWu z$Zo%YhoN%z_I!p@izEt`KuFKJqv?)aFb%;b*bN!T%JVvK$9KMvJ$8vX6|d-ddKAM< zxo-AUQ|9`PyJvgFqc(*esm?@zwFJ}{J-=>+g)X^!KWY;PZ+bzORO9Pj0LO6)7AV(B z(;1^8!VqS{^M`=!=#1AIgZYs%LNI_C&4~Z$x#VU*KxJ2g?SMR3S2_G8FP<xiTLxZ9 z9ojh_(=9J`PRu@kiNFwB8+IBU%5DkNtYOtpOYK3uj+%`O-3<=!O3-+^KTfEJ?ub1A zBh=!v@~yZMY}8sRUK>lHcIeb{E?VL8%Yi4jbf`Z??856h3*s0R9sstGdBKoRfMn#v zeH`ea5MJVq<difh4ea6ancDI+nscrlfEwKmWJE$|Bcb^4y;NSVrOsffF9YBtWV^;E z8O=njU)5F&g6Lc@+D=9ubK+pB9Sw;8&)RoX6TwP;*5-tFWx;nl5r9Z#(6L7{ctG;m zS>%>VB~Gl2v{~sr%-qqMGdEu3cTH2f^rSA&YAcObv%)^=H?u=*;|)mLQoJu;mu(B% z%jlYBLwisNa^7jz8#sTfKL)}et?hf(*jlm%gm;KoU0}X%QTkE%FXy%F=||>2B?idQ z+hcKgFq;wPvwz}=NzllvMm@MgtekR?AuEyUR^?DFJ`}I*v4vD()McwSpN%@iNK-26 zotPsbwr=JG*@#xrB3-M5`}Ynp(|GRRNq+_sQ8#7}K|qYL+~TPE_WQW)q4+cX|Ea($ ztZc=`&O=JA8f9lT`-j=U!1ibf%4?>2TV}rolTR$;S1CtgCl{1Rq8%=x?aoC(96Aul z%e92Xk{Jzoj(Lw-3BNBJj9^gnC5h`+54Z7rr2c(8uByXJybj2DQ)sx<$l;oIx<tC8 zJ{A0?5U-*V>|k9(G|~ka9lVY$kUQZ;SEUKLcnr{}#7mQah}Y`J2t4QJozzyDTzn9L zp#}4S0KqGSB5pp^iL~ee6;Ru|F~y8_76qGq0ZaRuqVf}%TU|dp^_U_7=xl|n)*2#b z@zNC&F1@U187<Vtdnci_Mp3b8(=P#OyJ{%2CD>{Q4T)vE3N{-kBiki`&e$hKh?Gr1 z^eL!T4ow6b1d}}YM-=jy&dzBl4-l+A6M$(ig*&#xx&*J|uoI_63~XloSIO2UZgFjo zZGoc{!RjZR%>bhNFmOXds3Pcsd5&IHM9lIwi)3m5o;<3#zx1L+QbM?E?8TksY2@u< z0+v!S9aZ-69J;d9ang;!!c1IE9^v2@DlJe76NWeWM0F9%ZS!0Ro^Eu5Ap?Bj!M!BF zUegAh5G8-PP7XF6iw*rq)EV7t9b)~J{HO}Np?@x@u-yCKFmjNxCHeh#(0a5YMn#6E z@~7?VfME}|rL!7ytvJwagD+^=u4HiMQy3{7zVg_to9;&AKsj+YlQ-FH7;c)R;g&}X zFz7*NI5Ne5WK7R0m7bm4E0sxip!SWP4;Wuc9dqs<egRr{Q5=vx!Z76={;?`>Ppgn) z_EZS!44BT}8c_^b-~hs7oQkVr-+e0x%ytl*3I|+$H*|Rtz*YOZdsWeCHZ!PcZ#Ipk zsvb2wlGli8yUrB~?ZZ?=w$%#1tTplRlnVLuwUzrPJF}pl+-&Do*+*}-$^P9OuAIU8 z%@S4nOw%kYfm0@c!RsXEq&*dK^W4AqNvwpOj>(uJZ#K@&>OP!E#-Muz&$WK!$=khG zxt16<*>8h6OC~!;Spvgr42v~L3AepL>|>4mjtXgNoJu1j+RV`%+Wq+9$&?Aaf0C)E zJd2ySs`IwzC}YjFLS+Gy6>>3;S!+>X;bqhY`i7{I)3f=K4$YP%M$k^*wkTA|xL49W zTEqwyWD%0LD^rj?I^d24UbaavF&6O;TpglJbO6)+mnKPm=fRmxT@ZX|ntR_#dTJ59 zLENtG&8S4c>PB9nLZb($8|Ft^@Y$EF$)?vexs8($FN9!O+$YL`5T=(grNh1HOL*AA z4=Sdh5i6;(Qw|42dg|}X7y9``1|qWnQfYAuK|zz=w+L@LVe;1{B*_&3t&XeGexspv zSWTxB9^3szq%-MvF1Hnv1&RsRC?g<CV!coXc_6!P#sEhVe&WOyA~$Uk<)w){?Sk2_ zlWFf)d3y5|uolne6=)G!DWd4VDYW#9LOiMn(3VRSZTik2crW#YyAn>iBF%Ty^?2LR z^CqI7-pLlO`N$=Q7hRf<T2hIm+ebkQXg_#57xY(&1vcO?eh1EqoIC-!&5M}~g+Kf@ zKa$BSmuQ>-Q0{W^fTdmY0Z^gvZ0$d8Sk5GR%AlDD$;*_3dGF=}X$yGq>9fM+ss``& zKi(DpcL?(Tc~|7%{J-;GC5!oXf5xy|fewNTN?DQ|+1X(D_+_{?{r3DoA!~UJmDISo zQ_MKIrsa)sHYB6zesM_*2R!_iXmj;2nn3L&ihaT$KWp4v)6Dry4-f7~Xlm;^5}zX| zY5%C#G~E=q2z<u5E~|d8w#XNJ_NTtS`;Z`=MeP!fA4pGD*gyZ)Y7u<68tqbMr0}lf zz{L)MW;|@Mu}!7>9=`a-yQpwph~INvCbGaNABF}XN7VbIV#e!!i@;dfT$Jx4M}n`I zcScT<+&4snhZ+j>97Sc63MFE>7>70W)1;emk-3(LMG1ADG%>}w_aver7E;$Pvw)dX z$Vr-E&Smn=(ta*3*c(H8#NOh{9+`$SeC>ZRO5}V`9b;6BnfQv{T+#yN<rR;4X711` z-?w@J6Gy2|<a)@mu#k|G9yus21ti@68E7<|qd2>o+2`ks$vr+3Q0E{SHo8k;+6lUq z!`}lxkC)-<31UIjfP=nHd>e6*NVmn8xk=5{sO0i>zp2W3P7o?0w$n;PNVCY=OU}}< z>daDB+|ZxCEitx#Eo;Vtk!}dv|N9mwgod!(ed1RFxz${vl_*;&Mw{kC%gx<Kue88m zYox}GEu;@5fKp<Kk=Fjpz=;{vr#wOuf!DRAte4&S^^i0jWyV3`D3Y>F?Xh?C831$v zmP@V&K_ULCV-JR})?TAb%;7+K{9xm44}O&)yDkjnBasZF0un5Kc${mqKia;bJba7R zgmd*Om~<-DfFnVrk|&rJ(G5j@0$0wm<EW-=a_d0@J0~`}`%dtVFz?RE6_iC<irSt0 zs#ZXloVso71%^f0j1Fb<k8s#K-VA)|cCQ%tLc+U~WtH$O$!`<=U92Q;mtO0gAt+}5 z-63>tMR=<NlH_8yPglrNAln1$Z;(;zlIhn`_r&PYfipY9IJkzWbyd8Bm3M{1tKvdZ z8B?)=JP^Dl?y0wqAxFxf@oIQdqPb$+Ji<h-y-T4+(YO)?yYqk-CQ#Us{0iKHxPKh> z!4q`(2hY0;+?=I`!JALPp9J_6QjOhXe4$Pe?t4NFpplD6yoBcxrE+$xAo=9ji~-j@ z${y4QB{bEvs3%FO+u=?}zt%u>w!(RL0lIsBFT=pbDT%p{b4}r6%_!Lq{Vq2smzikA zDeH%KxXDu?(z9C_J>@6|+aE%z_7)@FyafE6vNd<2HLF9pTiJXMieN)U*-Feid|~E` z>tiW&quVU1CWbR{T?PhYlzH7Fjr*<xdg-xv+>ewt{;$%(I<#0Hs~UO`NtCETyDlce zjMqo0TQTTVo7}}9^Tep;@g)=Uco79-Q{|r_2~3-k%K2Aqmrgwo8du4_T3`cgClJA> zx)PJeDU7`F4n)_fdPw{!l4bPP0l&HvAWgFrYj!FY2`9##dLT!ExL)-mf2lVv51Rw6 zC@U`X?2<w+sRu@FlAP!AmfJWaBqL^~@G&M_&2W~luurb4umV{~!47z|NT`p>F&tTG zH9Y{!NEi!Ntoq{>z5r@(CG(E*iFgQc0Wc>V=)P%1$44o}(~<nOgA9_tY`j_c@xsbW zy+tgCY2!R1Di;LXQv!%U6n!X_lSK80xAQ5noNse+gPX3_Jm?VKEjUn$;}$*sZcGh} z7GS}QbU+{^+qpq7@K6G1y(S$cH<24^sxE0KRF<jj!zg;52Q%D99uu?LCi->nXk9Lx zcTs8}`bgYoqa#n;xNwY@x^Q8ELM4GYAE@I9$!)L&B3ZkTMii`4OlxG2os~c1pQEmf z3wiu8Db|u5LC7uIp-tGAWlaXhM+vY`1Cto$?mQ~9%?vVH1y6Qjw|QW9VecOqto(eI z-eg1v-9S&<QHINk5CzBk$&pKp)Sw!w?<UpFu3U+v>6e-)nyGb_`>m5*-T@l<aYVo8 zaLB9pPwX%2{AUZ^k%QI|i&7^RB_$1rPhZrZ;(zvTO&pA-nk^NLX98Mhlw5kU*)9EU z@tG{oOyn`#TKDaE9kYmB95Yj?9-y3;b>o!9E~2EiQrzY{BL_}@*Si#1WcVP5kgv0# z5d}!~`xKo1`9CbI^9iDM^i$u&7B7xge7Sy6*oB7?nZ$5QS&3*2fY3#VMMU6FqY&Rr zH8u5@jgsm8Wpp={F_0&*&IJ;A)U!ObrsAgnE38!u&?dJ7Wl<&xr*U*n4K5GJsHvR9 zUGal6ohWBJXpuz8>~i7~MzP}1cjc{WXZo&a_S2Xx?B&qjso9Fry&41K(YVT#!g=R{ zVSXjKp>6sospZX_>lWWxugxLFmUVS#$tgK(7oI+<iagvh)r}OA&lOm2iBFC@q`B+Z z;;S=|*T4lpYY$(qX!?)K)Vci~RBIsk30Q`y(zpBcOUm~YQDa=M{o#btDZQai2C6M; zi)RZrbJ%R@n^Vi=dZ*B>F0E)i_Z?BO)n~i=`}iT<{*Ik4j;T2Ib11Ra;N5!7zh41p zix^MK&iVh$OgPd-lqupk<0cJZCR7`Hs@hAvQpMkXXXQH1406zMeWbX<LdD<qA1k>3 zE!GM>ah=7FoTFP}CSwi4vO?Yat4aENo?gYbJkwDe;YCS>xS_?#a_*?PuR<YTr2H_T z$ekIQz|!%3nnGbcw$q-^Wg-?mM7YZ@Y>C>W5-d5=@j-fYXjalcGA;%Hi(;hiG%|{R z8AQFvC&aWRTUA^P*&tFx3+G<=O~eIM1Y)5kxDcr2!Dtk<E&O$pA*b1?ge|U<L0w7` z_~)7+8o#1+WE`E-=D#IenSH<RxkPP<j{Dx1xn?5w)5gCX&hoiuzu+I)!CfPXHWj-C z%Cs)Ex?V*Hun;Vwh&58)Encq{QDcR@`B>{NBw&1c*}=+itrp~#ov6zMz7+L7?Eu1f zN^-TjA;4SJAo%FZR>?2t0>HD1e}QPxL3OJ0=@hQKiQP@$<7sbXq686%TaSGZg2R|- z&sG`m!f=lzF?>(qq!We{inKWY91Nsl@2udpQlfu?)|i}pA)ja1NYzqApN|x?G`Viv zkS0?9eWWZSR9~`dAu9b$qCX}LJ#eJzARxV<Jp;-Z>c}flww7x%Cv!L?z}?2h!)?VF z@66kh0nM&HsFrXO+x4?G>A7CvfaAL@qj%RqM(CeKy6-`OZdi{1v#>qNq8~fuSU$S9 z$kYp#pDhC*z?Ex<sqr%}Va!~^`Y6eV+8g-u9^1T&(9K$)dP{(reSqdolrWuJc?E&K zjj=3JXK4RzV{AFTh5^}8gVF{jo@2{X5il7ghBu76H#w5<S&NZUW|7WI{=9Ts>MDAM z3wpu~hC!Sa#uyQz9@OHpo0Oet%=h<RlYgM4QIN*!Pg4!@lh2I=g4MEm)5C1)N)c(X z|6&NS0etYy3Nr%z3|BQy4YMJ<+_J-p`3~<SFlC*ceYrdt;e6D)an6vL`9z-b)VaKH z$Yd*FF1!k!N<zu~D6~}5)#H+5%(lg$DK_0t|BYX92ts%f!x$~(TzO+nHTI_vifJ?h z`lj4c(7oNuT84rw5r`H(?lv2n(I!CjJ&+3dTKJ-jV*62*zii;lK@LH==bsyQMIU*t zribFK2E%`u6MD5eQwP_gHY&B}yn;u^*nyPcn$pKJf3$-M8FWNfZCD276g}O0BGm=Y zMJ9a13ABE1W$_GsXw7@eyjAx8r#sR)9gAqkXPQXinSe!{NQeV@lE#K+6i@T!hI#9| zYE{6=A$1E1f&S_P1Xhj5uSIOkp;bOZg`Y+>ZEHm?JZ$}ZTv&ahndpQ&V2G3xS`Wd- zT+GbSmr+`<Vr)Z(f&Dh3RQLz!ff<z58K{vgC<@2h7*506@B#x;RD36zSYZ|VS){zo z&(n80@t_7GB=6cR&J536t(RdhTp5NwyJrTG;|Sh2q$YieOKF93Y6frR-GtOADMkMI zpRhCVU^P90WUL^4sHVT1rY|IqRmivMWR-hMu0B6(*6t{_VU%D<qC0VCOAorFtJAed z3P}y<-I`T`Vl@dG2np*cHS3%Cgzh2rI{Dok`!w!RJO#J3GQ)dA8Flk5oOutet0Wi& zWTxj0v<uYTRr`D~fH?DpRu4Izn%88^ct;R=GyH@hrn`kh^Ik9VomRG|Wq4Z0M<E}r zGWIQ|2#&Mk(1O@;YNM+ZOxI{XXol;$i*Na+is}m!5wcyuH+!no|ELGe2Z8yF{-ACF z_`B~&{tkL`$uq@G`Ck*4%H6-k-=Sv4=k6ll-?KpXiv=W52BkZ$d?gL>^F@rFg(^FJ zunpO6lopf?ZdEjaXJ&;rD_!0b%H9aDtho!_B(Tm!vytz#k(R?^59p0;KL}YkK6&;U zKo4NMaQA=i4T~`o-}G^^@`f|jR<#8vFWW8aclR}1sk1wsyC%Oexi%{)$}8gaoPG`J z5ENkSXK(uWn_-x3_aMayR*wBOq6-XdCM9qLQrsl*Z<-IALVt#zuVq3`I8Req1xrU_ znK|}r_CI3f;DHT|G6Jh5)^8=YN3lw?_tcvZnE&=1{s4ElJK}i7$Ev}u4cqAzk)|*F zJoM!B_Gvdky;fCMJMf$(vvfvB3`g%v>lXS5H}b+a=-`n5YnjgA*OPSZ^itZFMbnlx z4en;1ojVGOy?d5nA?H5N3C#Tjyu=_Sf+?4>7yD}pMuR!6_?}Bi9Nn=nI+#(k8Yn-c z9w?i<Lt?)HbarR<7V?<v=#A&sl!7i=ArTensq~5XtqT!C2^MW=!|*_0s&7;BG9Qa% zfp4nA{Dbgo-uQGdM#gq1QLizDp9QgBEVO(LfA2M#iVjyKQji6luu~53cRbY)PJ2f4 zuajZ-HkuSe>v=BoS04`(EC9gU5qmd)k76zZ0r|%ZNLsF35HH>YxlUy9rS%ejm2$#) z2n~!KD|~l1BfP&`)|ottcfOoKNM?ble3k1yy(t1o1@ba8sUP-a-NFvF<SzAm@u(xS z9c)yZYRy22MPkLw7~7C%iD08umgE7hz~}76WT?_p+yb8I72nqrIGiEQ5cReC`#P(4 z_4Nd%Jl^nM*9tKsZS2m2s?&zyF?sA~J#OYUO<wN>?Hum(9--znLK_R7YdK^!G4fD| ze;UXApYt^M1Y}kc9+7ET$jsa+c~anF%;Rfzvb=|i?nAgSW{>V)tPV1~Lc(Er_;Wp2 z1DCJqGmk{$Ucj{FrrMVV&W#{5P@dwnb4*cnI_0j=s=6=;Jh3>~;<%aPb4Tk;sge~X zdiQ~V?D|4z69qA0%qHEs6_3aE0l{`g2NhUk`={rWAY`sG0#L$B5Z6A)_}ey*m{MBi z5monE_WqQ|NT{_Fj`<=0u|$e7F_q&t;&3~H_JNIS>wKZs_hXwyNdTiI-$?4~aEGqk zQf-W8tdD*eMyT#nHrZp_c?+f*jSUOTE*1yLU|y<zj*?h+?<KKhNk0o>=qm`jS>R<4 z`2`g^SKjvOn^_4XUsrGC8ua3%MM$Ro2i{D^2iTA^Oq^1hWzjfLIrj)O*J}JsamZ+) z!FuA23M4q>>wif?{#Z79U_lR`=gm6m)BxK;3ptC}aH&EmGhN*@9%XsGpgw4P&5&!~ zE5_)fm;lc6#sll}ANCxg$Px;PbH=%sB$)G~aWJ?YPfv@{gp+h$V@f{D2VlAC>SnDX zN7_7AtXU{!vX?FM7So%9oZ5&3wWp3_%nAJN()#UlkUW8k%<vG^x|GdLE5@n1jE$jQ zM<_54flb$60kJa@Nbq8uyIx$e$L2)13bW7&xb{u(5k}acNSKoc71n-M^~w`++uf7} zlWQ(tjff+kzT%`c1A|Jzp%sQLkX7MRLoSgFo<qMJIoqapU$FRlb-B_r$p%^~ABNp5 z^F^~^G(LI?QCeJ(|HfYjf1fhDfoR1?N+I0<FV=>lw%EgbqaE<tBM^2q`#79Ht?uMq zd`5F_-KRoWPcz5VQdy7ZrqQW@2ik<VW3;#?uF)StT7M_FX9htTUIh*)WDrI@4PL?m zX|8#$*U+_6QfU8*UOV&4qfT`aON7!`n>BB0V<1tK&8(eLvKtKd5{!)RS9{qMm)7OF z86Uu9gJ8^t3;S4yB!<hKUcbg$m^dVT%Y~R94b&xb4KqB%>IbWIs`_Gfq!Q_Ng=%YS z^T1Do6I!?qn<qD_Lv03u1<~0I1kg~`lk!LYH=+7R4#9eoOX?~}_nO61gJ>fm+wDbz z__tM2$*nY75o3Y<=kLhsK!re)|K?DI#1vPDQC9`r$h~4vOrZg9D-t#Em@S0uM32o~ zr+`y`QcaABB25Zb4v=c{6G~&C=whC{1kL6~kjBm$8BL#44>^ZI0<Kchvl@MVSYl_O zgCzL^+5O<&T8$DdJo(4t&hxgq3F@b1f#Sy-vAlOYh(mbAH_jziMoL;94g)&~KDQ?n zF770ArY9ai(WZEC6&Zm?4fm$6VLWD$E2(Q>3&tmYz^xZ__?v~?3s*4E0E_89d32!{ zqn%tnY_HTGrML&BN72ki@xEgslFpNfqYL)y-O`0w#B-o|Y-X|DovPw23kH*xMf^#$ z<-~xhG0mX8(%MBSHjh{fIVc(1$TB5D*Px<B4$NKHr1w~s<z3^}iB*n7<o*U5;p@!@ zYuDI32WTqd`dZ6B8{Is)q6HM?<m*MB!s(hhVT(&EaQxsBt%(SnCo1A>8{mQ&^}&6P zs*$~+Ln!Ek4vtqy<-i)#_h-xlKrn!o0zVe@u6VYca1;oAyFza_>Sjm~QC)M8eZefX zuj)@-I^`BiB&8YLbM6Ha)TNehMnmcoV@wv&k$(zmfe?|{t<_!BS{0Zeez<xNra^t1 z=;l*_?1n7R;$Sm8DdnaADL(X1LC;|UOdje8vebvzj{Rgv-iiC!r9?c$Sm&#pu!v*5 zA4C{JhpUlGegC3(15A9wi0C9wrJGU+F(70f*)=f6Yv&ez+(m*Sw<;5S6#vygIeui+ zKbol1_1;2|Oa+jXS|+wuEWwD2{oIqH+qu!rbDJC%FyNM8q>%a!c-e07@{aE~iEz&0 z-rtK~e*ob(MUb+o{@Y}>7+Nm*bu6wMI<Haj6_-n3svawt+b04p?NS|db_>8!iVkWZ zxj!joV({snP9@*5{qgS`APLu(X+E@mJSlxav!-OKpDZ;cNQ&neBt`cD-uNc9ULBKK zqqd3fgYUPFrlsk-Td!EsICWo&Uzw8P05q*PYSJvauxC`gT>z)lQngv(i4imw?&0?q zCj&Iz%m*-h`+UW6NV^nd(NM0#d)9Yk%d+i0m$>#*y?aT!048fiL)xsy=CEt|Nnn)3 z6)t|f*&^%o#GfqYu+l9aa=gC&yh20e%g>`(LkV5D=~xz{pzjkzj@6jbsh^)Y0I<yH z0K0i&zP9{FU|lKN&lv>lnRS-?L{qjC^<4Ullpl*hD%1&`Fq~_*D*;ZZ7%hdwF#2x% zoRSpE%jPS6DlDHuT07Qdz`=3kcS;QdWr2dly3UUBjhy%&xRdc}w+r)~7#I~pm7<8( zpya{8|1#K0pEp0MQ6&aGAH0pojR#+RH&@W8k!mg(PHPybaPau22q&btl7GsKwNZVA z`|0#UR7)4MhG{x7{6xu~Ji!GI&|8sFuKIS-7~icw$y;oD&D)`ICYNsl!N^t8X1xkp zd>_;-aIjzZU-d7`T8OZJ1g>PI>RZv2%J?$B$;_lYyCcv-n2ElO>>+A<&8Bl{O&@Y; z(WuA;BsKZ?`IpuZBZP}#lPUK}r05OhZsAApfpIa$O-2`2_tJaW!U>)ZTKi1$AGh}| zu8|GGay@-zns&I)BTA}vOrO^g7U<Q$*K9sS&h4xh>`p3M@c2LCb|bh6VR2F8uA)q% z`U0>%rP05bzUw5P?UAd43q7pk^(FxZ{1|>i1V6n1R<Ie7H@jWnu0!wVh#K25Fw9Ua z2;43p8%YR<2ocUFJzK4zyDl$WbqVh6-)NIA6BxB1hQ4c%%N0s_Q;*A|C(+%pz$ce1 z9*Oj>+9W@5<@JQZ`^Ug3=!i2skosVdrQMl5p93lkaV$OeN^9`H27qG%!z33`6KRxG zgNhL}uoPe+0U8s`7x(J9t-A(bcVdoP(stZ`s|9R#iVuu4p|yWQB<03&-{5vt)ff2D zfSQvSDh*P)e+ff?U1E)!qDKmBAv>x@LEe6|nqGuUCkdHe9MbVzS<raHjqSaCrN$s7 zIDKgzGez?fx^diO-?Klsd}L>&+=OZ`oa*N()>y}8E=bFK!;M#bxkp0YnlAL43#r3y zR|uuQSR*(0QFZ{fDESc25ctLIVb`_pk`TA|)u0CD=I}wNufWEU6b&w-9BEU(wh&By z`a}%!4Dn^&Sdtmf?F-71ZLUJyH}>&?Do(Hz{vQ0KB1qj=GAV1*7jA*swcews%m&RZ z4owtT!Xi*`1qYa>h77DW&p^UEk)Nt%qkOR=@khiN&g{|VH_6|`Ahm>uOl#HBAIv}* z)U*XBme5VM)cUR7g;ZNc<kDAmoL&-!AKh#sk5-=OoI+Jl<;q8m^@6oOvqMb#sWcy{ zIt{XZh<H>1)sPvh$P2-wXz8&PV4nVaTHuDh7NN2-?b~EQu9_T19Ya`qEs^7TBCA)A zHT5U6-H3)&myi~~63@7xh={r|{yws61ryF}2Y(s3i0262%$O*@(p!6qf34r)r*ElU zqQzNKFUWncWXK|BAk?5Bs-e&~n3bF`h(LhP-ce6ZJRCPmj8LMr7aC4&*D7yRZ!knH z=~_1qRG}MCYBc>z%Tc-o+&zJ+_wxm&#lk5Fs22$?i~0K_&UJhc0B@sU5HTvAgRMmx zyM^ZlheJy!HNt!kxTA<&qTG*EJniPQW2uZD@pZBw#oj|xl1N_7`a0CDZ)2~*jEjp( zg}A`e?q}~u9JEUA{Bkz6&1A_n{f_p%=39@H`xqP}Uekgv9+e>3T-<xg6-t~nPp#*1 z&&S7e+4-MqK&n_>!-8$+B9-qDK2nqtM*9Y-c5y!e{GgKoSyQwdjLiIPK(I>FE3a&N z1^GQV&dqAwhpS6M;i*K%iP`v>OfwBFcs%c{9!D2zKk(4y$d=*>MgGjS2oe@Bhn8eU z^NIcie-B)DRstC|?FqunDbg=<v1daTL0=O@etfb1-@nD+#@6i8pnLDy0j%-GgrQ1T zQOdy<cnF<ph=XYvmBiL<0v0l`jC@Rd4jFcX7WF<FAxo6ppCM1Ef9hMw_Lu*3!W(=3 zRA2Zj77ZeQF@YMn{t|Ik%6IEkFClkG5bhTo9WXF1Y1hDw$J=@vUwI>6;5v^BMQBz^ z-EkVocqUmnnXRB?8PwzOAaQPAF62Mh+A()!Bv11Gd5^P|*;`8RqUUUbpdJQ`!mjbk zpP+QG_XT>^7o7?+xWvi~FBk-}2{Ys<^tq#m26muKT+DUYfi#0Y;PJ<Gd|ZthaKX|| zZ17u>YCM8!9tuBjDsaO>C1Q#L73Xt}Tm9Ql8`M8Z0#605e*jzbEpU^_Ma0sL$GiUr z(W!8<L{V%(6U$qT<gSb0{Um_*2R4c^`zRiQC>Z?_aHwr`1iwwqFr~ogZ7}e*K3yZ{ zzYJ22uzz#pIO4%a90oQsz)n2XP>fBW|82DW?-1zp%&t<#8G!+{M*@Cw4<-VGhQjUa z99y5Fx$P)7v8l>}$~`W-bCF>kk$Cx|1AFt23td-y=d<;kr;yuv9zW0E<tT;g+xE?i z7qv|aN%=$iwZez|CTu(WdJ3sExZUbZ?UCBEV%pk}!)oxq9m4(95X+C^{wC;8XKZ|| zXi9`5jZt&isLUwKV&K*){G3F4M78s;wh?!WchCDfTLXC#t#Q-7J(+a9_K@;8ciS)A z`Dz?{ec6{lb;qRDAK4LFdQ;>IR|f!#W&zT<2Y?7a6%V}!c%5hF7tp&g*Xe6S3%!jw z3}u46@D+0@F4o(C(>_^WJa=C(m@oU)pDUdy%p3VYC9GtDa1(pYM=$U?xtw=5CwG6I zN8`?bhbaRz6~#b8!f<B=*(AMlwQ0#04lHUtIO4a|Rxr8H0Hfqcg__89$`4H1A<olQ zt$ESNc`&hsc_Fan2<_$h6GeM~D7;-%uNZxWgTe~4H)9mKH$^yK)RWMJuJ<H$XpV4v za18=Cckofdx$yLL`Y7mnUuG2zA=Cj><XO8gY^lAb+GKXP;tZbDEN;Rt0}*J%sa<}u z%i2W3vdA0u(?wyC?>6!MtRX+~@?<)kP;x%n*Whb=S>?nZNntIB5h|_4z18)YKOiEt z@?K_Ttvvi&HtkW=8rS+;f8cz8ZmbSnU1<&JQnE7(HPF#tMV)vJAQ$Kl98k@;d#(dj zF)D$5x}I3qsY1LPG^UzyU$3|o+MtzN%fJUiAhOp0MZ`><r1brt8Dj)Mq#k`R0nW&^ zDE32nJeeC<{F`@oTDO42^h{yDm-Ww1Xn%lYp)-F=3R<OB8zK99MfjLK7SAzJs)ASk zaMufqgbYuayyYB+RJj;->SLgSZB=jWBcq}j3i>*2r@UdXP^yhE#B+V1Iu%2GTNv~W zx48GR=o?V*A=ohEshQe7GeH`2ZK)TsbOL%+sFq2s)$INkEKxs@CXQmP*$X;bFH@{k zQB1p`(he+4cJWknmB{>Z0L+<5`a60rRl3KsaLs8!CR70?@>YvkEA@+hRR11M=kMYi zq(EY@WaCo9ZY2s9MGkL*)_tr}&bK8pHfe{0(KmQmX}p*vJwnfh=`;%UE+<hlg&gQa zU6Bm6m1!#xMdW`H=S8&gke`aFzd)^yZTKR$36~5LmXV-RB`v0<EQ17Tbnn(Y-Jo{D zCiYL<{8=yUg~DDwNK;bM%P-gg&)Um@$)NtCWKuqKZXMPe_;c>pE&Y7Q3jnoYc+o+c z;3p2Baxy(ae4{lUq;L$obLl&Oib%-C)RDx@h`~frrtmw}G*kdgX&sD=N6A`DL)<{X z6lP?BdrQ}F;Ws|Lu=u&Jk%}?C*VU3sGw7-Vk3x+^6<uI|S_>CHPNkVZL(}jscye7X za{oJ%|0EgzJp{<=Hk;ZFq2;wbu$1?jAi~m*{2K$ipOfKD@bxz!9OX>UyJ&=`$Wn#N z3KS7T498$%r6PBjfNWbbzev7ZGuD#loPLHBq3`Wgog`N_@x!73cqvPJGPR4Gy;G7E zOCt6Spac46u~uKE6lAlIwcK-R25MO(GXs<W;;l9AUkd;Vm7m1XHP6=$*f^`gBcBkn zGIAz7I=<g!QAz2mq_J<-J{-3DWiq!X6jzbW)UJAFw#sGuMBI$9D(evTtd!>0eTgKj zE5zF;Zyxp>gV2TGkwtn&J?Ay-NAfX@4dvZ;-%XSSG9WKsTOlB$E&E$90liJe|1`g= zJti#{q7P|MB{$rlpi@}~t}stP<g@}|#RX5^90B}mP>m9Gw5X;LLf@_A28O|eT1^?# z>0@=;s*cqw_}<20Kv;MO+bo`KnKo6ed+;rbnE$B4H=w|(Q>BL4Y2R-^d%U;1lz=G! zsTn9Jq@a>$>L5Z0w+(Zp(Ahwd!0GpwQra<LqWwAO=0af-q)PZcN`fV>1C9Cv48LG{ zu|)2osJil2NwhU3@J}45sIz)O@|QB>DUO$eWRwB!{BX7xTAUg(*vLzvcGw>1d7~{X z!kt69;swj3)HIOCZ>zG77L+Y%c4YH40Gh@<4npgYYr~FbOVNsBZh=U1+y~ecr$dg3 zPlkNhP-P|9*v(+cb>%-h1rMh$9XIF0h5AGs^e*QBdR<TFYf`A{)<n6rM+Mi?YUa4d zhi8G-_gl|7hsrP((!zqERQjTKG?+OW-(t|>e_@QppI!y?p?pFIThtYPrEJ{puED^l z#lRuruD<n}3cYGf=`dCZG%`Kgp#Mj1hUNc<n_*;NVqy3{fxOyO^>(A>Pk%L5ATC#I zv)*Q}6&gZ*lEq{qF)_<VMdkfGB+$$Csb#~_Pl+BjaP~=HnkfZJkhypYnOv=uZr;-l zch-KPg(KaD)SNwBzsJ4*E`hA0_@C}*vjyY6j%-nOCtDl=&?9Iv3=hIqGQLr3BI8mY zyyQM((Xi+o-h-#W&D3D@21bMoL5E3+ESwUZf5MFW=lXhmkQm-lfXFi6hfyir2p^tA zePGx#qxHeZkGDc0mM_cv2(Bww18SImaf0|;St;PyV!Gv&#-3-<?_i#ed~dPRuGlT- z0^pA!J49Wm0@H?KJByJ0=~c62<%3J8`c)@hy3lTYxvmo6F_y>_8Y^7lEAg77Feylk z1qEjLA1*u9OOs3Au`bkC82=_X))BDj;VDBH{O-<mHTv*Zb!x~mJRT6Sc{eiJXlIZ5 zAQz#(rh|;eJ@KOM&g$J3*K8Hs-wG-(N`x3BTC~9xetC*SF1D&k)+*160?y&e1AKEn z1WLH`v9!;+Ny{BewrE!{pqyw$Cqf%uLge(V{cGnYeluIW9Ubk{<Buk`Be4N9^Hl;^ z5iI^Q)zNOBq0}7S+ww>LJWzz<0j}x*QEF6pdeGCS5t)?t|1LjO-xtz1QUO$}qC7BL zE~*-d^MQKmZhI6Bj+Uj~r<-hMPG#Tu1rWG52zJ}L7nZEUbT!4CjI!8}z6&?ecni#m z&18BYU+dzoUAURbh22dpf*wP9o#k4{X2NE(jV07NUG64J{ngtzW?&dBm6+%w<dpQ} z1n02Ml?joHeQrNoyZoN7FdOcSQ9u~Lm+UJ#H@C+8PTf}4#~r-34awi^L-q~-D$c&i zz~i9H3fGkynbbts`0Sh)qW2T`I80or#)uj)aFzC*%EV0#$T<3CLav|>I^^M9zasj~ zME{*}`$}>bbfYBbMa5>Avme7VCyv_8)*?L={c-D*raHTTN}$?K9uguD&~5ej>x$H9 z@E{!;JF#c8gnZiR^n?HrL^$pgKuz|rPZ~&a3buMnf}UIo9y{Z$#;qr{xWd9xncT_} zJ%HZV+azO1M1hjFXC;*=wPx5G(^XPLzCGRY>v``&V<zMnk5z3(S1LoC2k>Fm!MY0< z(Ioz<RC+g&I@l{mgX9ESZiaAD&G;i~B34gT9Q47|iGDT9u_(F@GhRe|(_5D?=ncL7 zT7&J`b?L@7*9-psHgghHJcPN9%C9tKRO={vHGlfwoJuq8+3aYbFqxOB=8@R;>8~nq zSk=P34J8x4F&*-#!ybOslXK??26e+Ylw~l!HQH!CS|$Em-->pB4~Te;k;k?SYH<;_ z;ve#t-rxVLLfQ^yAr4ucW%c0n)f36?Nz;ZN&L3zXCSZ$B!tcn0Q%3ShrGs(vYlu<; zr6nZJe$O&eIL4?`_7ZO||2+cIBHlrrfTe#tb#w6^4f&X|YU}u%j0VOc2ATL!$t!Kf z*QzZOo=y;Ro!;~wr?0;!ZJ?D%Ly{(H5EXeS1)r!M>}Z5IZznZzjLv2#$ll4Ox<{)k zwm)bXV^RXQti}Mbf)6u|thbRp8gW?^?aW->Z<S$4!O=}}>mvRcewr|EX<ipX#>W`1 zzr4;qmHecx+)|%r*z^-~^~Myw`oPg*9jwJ=q`e)o<2V+L`-7=U@HN@eKYnTq-DqpG zP|)MLT2@^H%8yE>BtRLoYyRgASrXj~CzB`y-}px?)^nor)1fL;Asn%-Bmpp|S-pf- zzZ0*&)5>}PLzpaJ#k6|Suoe1+3>LdF)@&~#@OSxThCX!|r*4sN9uND!7(0gr!Gdf7 zmTlYavTfV8ZQC}xY}>YN+qOOZc5g9@`H8%F^Tdg8+Ud}&dCn0wFoL9fQ2}8)^4Y5& zz)-%4`yQA_;^I8BegytVH5NE_1n1~6QU&s=y&T+FK+t16Sb=p)X{!g1&gcN7aj}%O zO8sQ4MGnG$7K>yK)C@bI?-Rp@fH?}bLB)6Tw%ZA7S&AYdy`f|=puM?MG~PlIZt3q| zoNyM=!WpOtIIo%G0dZ>?e<H4|n$j;wIi@pku|LFj38FR*?bQ=rCit6HRzXznhPF~I zK0umD(QOE!BG2}abc%;49mfn|>cLoem@}H>FeR*7wiRb%Pj&si1{#5ln41zf`>wiC z<vH~;CvWwp(_5PRe7u&4I@l(@Q~put&p;0}Qd>y2(pmfjG@_-<r~&dbOhjh*plS#% zRt~z`2eaW65_n=1ylcY}OTw+AR@hX`$TE(?F*yGF>ZwDZ3#DJxztR;klmj7ZZA*{P z=FfAowl3fm5fVh`6o|K3wMWHe2iuw6*_kQL7rXXH1LtDmhPk^Psgl*rT0LOd$oAJV z`mn$S)Fc?e|3)$hj*Od>sw)75pwf(<xQ9*=EvH`ohvIADfl4_{gvz0ODWw!8t6|KH zQiD{b`43J2N5rX9hovs!cxGioaT@$#)z28}kwYtf$l4um^PFf;u%bUFNT9%!r+!l* zbdL@Ad2Q3%(c&Ic7;}9Jt;LZKc+sbS=4kRvji*!6_dl5+LZGT~RK95YLjDQG82f3j z9gx#c{3qpe<F|cT6!-+0YAOk?`K|M-`J>~L*gqEZ6yuiubkuZCXTve|XH!9J4&|0c zEnoVx&E@<MqzX8H)ux-99g9J7bv2>~a%mAtz)zq?2bMJDE)~X_2;CGwHD)6EQ)wlR zpd-)=w6Yvur@fTWEq`m>b_ZM<+boq$(L?yB>s6Kh<AB@5QC|y25H>$r>mFRGWiwq~ ztipEsS)%56ArrcPz{y|jyNg>gGZD1?jf;-n!RC^j9(5GEn>K-}^*O%j7$Dm2sFMX_ zOEoT(qn$%l)V8YvyOZ>jD=5zkznBOAQ4XXg&~w{{KR+tA-H$G_69?K(YD;nfaW!P% z@D}-g(bdCa(UjV9)>DgD5wnF1!#a^|9An82M=fQldFnIJMwO#VclwIt2Lh+6ky{Ur zh90;a%P|=^?zaZbdciecxr%v;82Ab>99QUFkUDh}gb)2Ud_?L}s5m~B54$6GT8;6Q z_3axr8BN4v!oteAS;<-(QqYj_j#K1ik_w|0e7dv1XB1_s(vp(K^qoZBIAE*V*eJzb zQDtxCR8{{E4OCUkwDxs5@!ZpeK^<6}qR-tEG*A<M?H44)X!%z+MTLG(UUk?4gf*-d zJlSaWM*nMwQhoj65aNZ>xq0zcIr4A_x3Ph@`Q>n8r2b2zD=LDnza)P^&=n#YO~VQt za8_rPoDzi@Jn~?Dg@s<MVT=#7gTvd0{0Kax@5MTcn`Z=pc-286mu@O!?#&TyLngKa z>hIajd33S`@~F2wAh1i}P%cHjg>&!Ic5`%__qiA;Vnb^ucR2h}+vgNMEx3RLWntcJ z>#04V`_1M!oZp_bF^>syIePCBnq_&97lMLc%GtUM`U}l)0#=dyJ_?CS{n$3o&~!u4 z>ZCNs#jzuR9dg(OMG=TTw^D3w@fQ$>^?X)<WZ7X3U=~lGB%$Unp0cx8WMclVuYocx z$j0L$oUyI$P=qelOd`qZYajZEA7AdUQh_)~{~&~)$RCYm{B<<x>$TJodcn|b#pY63 zghS|i2|wO#;<#=3g?oRO7W-=1GlM3QY!<3|X}&MkP#EFkO_7;{Gy731fn4vDOIX2k z^W_>+d`GCbxiHHf+ZAg;b~V_ZR440}%cuL81-rDgP)<H9rs8khRa+)Fd88LdvfrKb zJ49Nxvx+apBYDo3))@~DpGe{Tq$iGT{dibG8_kK)R;d>8<O~E^d;i}E_tjhJ8@?9G zKkxL`uEGqc&Sw84i=L_ErmiLG{nbYq+TQb<Loted7D`l!<+#tGe%Rq4oLrbQ-=D`Q zQkfc^*sbT#G<tuIfS+88IFAwAe)MkXi@Q--QTO}`1M!OalqYKaA%Xr`CUhzC)+|&U zq|vV+PUU)Y46+hQt@F(+S_NmcY|oA2A8B|2sLv~kEFwbJT=<KHPFYVC>1<h2%XV-O zV_1)$Gj=)m^GvaUFPKZwDJgEg@C>ebIV)MtGSY!%V4RfLIbQ5mQoC4IY%Y@ADRZ?c z$GO;#X^|YoT?4LDSLp=B8K5Wx|3xjujp!izqUC~atN$@f66O4oiLA=^va9P|@f?)# zR`i88Ymk?$zvny*gEmGhr7xOC**921;oF&Vom6cw*4P700R&S*qxIi3tGfd18`;;! z<Lij6noX@lO?=NI+f%P1E1CJULIhvXa{y&9-06#(9meCSYpHyKONr^Pb&v<L<cBqG z%>X8@_9QR^vC2vF%Iawxu^VYlO0DLd6<ybGi1Od!Of)osK8@|m*8kM(KMZ=@j0(87 zxtjimt>_D%&42SB?Y&q0k0_?&3(GaP#U~>s3r(u<qsio|$H(y=TI|vSfzJMX0_zCC z_jhWUgnToQ9u#38<cXI%Qwf1I6{%{xizOfA=anx6oo;80$SPWY6YYhYnVD%%1Zs<_ zQ+A&P;(s+Enf_)A5Q9o}$jXK4hcaqQ;_Qv7vhc6hrdWeF7+3pt{REToqo*lY<;|a$ zqBr#c+$yGgB};YLvCflR)6t)F*_!N-Zn7lqBk?7sdT>=}64Ve)x6rF6{1O2<VX|J0 z#^wA=2J<;{@TXJC>YJi7!gytAQ9^qHzVBocBx)Gu59Tn_zD^{~Z3jUJi96l@hF|ZI zv2*6x8&|bs;Si|ahfAE{#vkpQdi_hYu@#+4uKei*#CzESGV{@eil>|PInZ>$YNdWn zV2Q_T`dk_q6FGxLq&?%r=?k#(*0XhoCklOttdj=6-!s!CBk+QRU^2?!vdq{-LB-Xq z7~UWxZ`pM||A5H`z>0Yq5D(Zy6zv*R!dq$-v#?U3UB(z&wr-w3$b4l#gs@bC$GD9E zVqoiqI*PPJiyc!jZjGh2oNa)EuK!66^n^#^M5c6QRYa<|Bf>5D8VZ#r3Im+qkn;Jm zhuD7DsvBbXHR{lyW)!k3uf$z@C##DdHYM5A?2IazCO$Yk7|SafRFH)ZoA!DL?giSG zQJ@ypGL*PMe3{DlUY*Z=Tv}FShjlIwq{dVHd9D8tZYE!aieGNd|GiR0N~VrI9T~c* zY?F-*V%yC93o++iw8yyS($IY}<@y2$BwhT$x8Zz%qifc_3KWPcu_moK7IksdK@py- zdib}k#folW-mAtL3GgZRHQw+XUHLan*AK`<<Lmp&)@CLN8H@XE<j5LZr~1$G0oIv( z6j~fj!EYQHUk3U++4jHW@C|zaN`7~z67((Fvvzb<^n)jtRMfe$fEu~on(W^~slQMU z!MQ?G@9FYeG-S;1BcV)XlWVn#W?wDg-h1MImkQ#eSD$={IrVY`aUun-3D4;#S5dtQ z2`P`U84SE7GM=4CBUrCUT>tu^d<MT?Dr>Q+P0fPp`jc)XzsB6sbc;V+eW+auO&Va2 z7mAOG$kAf1S)7HJ9$?=(#sjTD{j)t-Ef%0`$}cS(S5MbbNL87|Oh!MZ%Pj&S8BYFs z@3VduU)!I*c}fyO3X1tjG%|@?&`3%Rr_e3@fr4$VyB<=XR^aB}3+SJ=9Q!wlUCM8A zE)YGWT^ox&=>{VmEr>;NdEvPZY&e^~zW<&(2oe8HP`V74c5&sBOA3revt3Y@ayG@8 zD7&dee-q1Oq=bWK{TFCccQv!+C3>QMY9~>Q^mpfyWX?h>G7|H;YbZEo^J9I{E!`;f zNSNL69|vS~Rh-;!<l>R&W6+^B2AtKF3utyosNH+=?UCI}(q;CAHONJvYk!1@o*>^^ zzX4z;m6mjH*0}Nwwc}#eYvLX%hd6P;m~Hf*As37rrHE(8zBVYEcw!0L{tae0+1lnK zOlqev_4D`i&4%{!=-3kEKNJ+ZIa?jkJwMaD?{*K3#dzbFK327W+8nTQ1Ym<s@<0JK zXYs%@XUO6e1-Xi2e(eB1e?7NW^1(a}!7xVRJk0JH<hgA%AA~Y?t|o#MIGet63|!u5 z*{Nog?S)Y0`?RirFddXI1GvcMH6<oxjft3Vy-@7tgXxRQiL*gJAn$OV+@KMjt*c!D z_Hv+rMuNdvvC+MJ-uun0T+|77M^?d$E1zLsT&=E5JKpb{$0j;A2lGP~0&cfU_Q1v0 zYO5i$i`uIOXrY_FA)DuH;+CY|^5BW=o?1^H1_)fZ=OR6fQ{ESXjb0#f`8L;*uUR^Y z<RuUPE_Ln6kXp%Xn|PTK`L>E`c~fC|$+fz~Pkwjud@M(XG=dShi)utu6Fy}o0Q;Qp zPY2;*n`xpk1^YwQ?0k*%o`6CbGWc3_MR*U!MBQF7hd5c=lVgUqE)wo_6pC;3(ZXe= z1#mD%vV`11muPT06zfxHRH37Js&Yg*{b(O8Y=QGP$$c-iOByJs3AL~IVk=%<<tj4{ zJtAJIGRANwI}d!deuRy%ASR|OapCpc5EHz8RI<$h*W4w7;6y$m795~V?%nwum*7Fb zyej68&N|&yO&5>@ore7wY5ts@ukOPU`(X|rG#HZ)DBd`?;pOhhE$W<3Pqtp2DEG{f zjEEk>K#3tsi4U}7s*GdC0$a@1$}byOJ=Dq0C{45@0Fvd!l_xg`K8bi71j4TN8X9|| z#{JiTc!M<?n5R%*NWK|h@$f#*c4!Nb<4_U6s9vY-DD(!C(x}$c7v8WTz7EnFhWnV= zu8$pn32^{b@vOS+eia!_e+p&K3s-shLr2$j;ByP!-9=`9S)76{lk`w_=seyvt%lkU zYN%2M8?m~AMMQ^XM6(#NQ6|a*8?-9L>7vRZc0(Yi?Ir8djf={VVab}zoSXf4+JYYg zIgF@^CB%#k1A<5sX95L@x2#wYT6AY|%j)@v0QpsHii4NXSESL1I~8`*Djg)w$>Ru5 zC7ofLFp465_UY9vYGvO#$mu7w2TS&p?%0%>uRMnatn)LH%eqgwg#AGrQlLp+a#0Ai zKPvyf;Z2D8QujpaTg6nHU!*tuDLgkX;bwpmtFS&vLCUw{mmW_90>u#V7-1viiaL+` z))po}5TQyG5B+4AT(=O55%B7hQ4X_!?uNJdcj+Mfr-4wU2BfM+3$|j%byrvBs(^~z zaqw;I#q{UWimop#>&yCEN1fAxDG&P1ZLLAVppgk8hFR5jTUo19S*pcnP#W^wH6e?p z?$1MmrYO=oSStEK``_1^V|mJpgi{{$wGxo3@SSE>H=82;&6_hLoNca;p)c3^uoZG1 zQ?OG$I2pJ;lHG-2i6oc!^kd~Qw3bjlJAB)EbjnLm2m2{~r)$u2K<PTxQa@-5+b%)G z%--J-e@4^}xB_*lG>>p#hcr!bENS?jZ%b<GZ*#dP3P5%&8TW4Pw-aH8JW1O?KdWQS z+VT?{(qQ*{X2T=Zz)(~yy~?n4;JiE9(Atq%1t=Pv;KqAqr0^q0+iPEET6oPSHZGca z;14f;B&5!mik!Sw-S~g}*U%>#Wev0p&sLC;gHx%&O*nNq!O0;VLEIf^gDUnth>|*B z*l{Z?SA5irVXa6=$l>fbC?2C1<v|^ceWIs{<ekSEuW8WsK2~L&=NU@3rTfva;B@1i zSPynYKg#34YFM6S!Qj|CHinnJFcS*h6?Drmte)|Zp+6ou_#dUxiNY(ZF}>=XrmZ9X znSq{bHvvoz2e^M*#8}YOqKrd>(5kh|X5ZIFbZ)OQ!a8y)d@eR@S(}M;L}gJYS4zox zc_i6<rm=Nt0Q##S75R_#dh$<Kiddz4ztsS9+RttcUKzaszHgVnPY*SHRTjSekV9jF zs6b7*1Y_pDe<j*mm2LKdU4@J^u#T4|R>4)ak0ccSeanF;xMmYlzfX2;qDN_gM;=U$ z)@PB?GmcvUJB+MO)=F-6k{^R}kQOjsH9~@ShR|GH_u=XkSo!T-3={6Pk7j5a9Gbl5 zGqN%^X`TR0ez2J<*8q<rPlu&7X8UFtB)QX)YM*iXr&dVMxWaBQZ3~h+w0c!6KYjOv zzmLVFahD>%?^e;%KB|g*BiU)D6)zvj<0~eg{s5`ozJ8#NuA2KetEM5DMTFKNGOA;) z44eRN$G06R!<|z=7W~L`Dm8*|06sJ4GJIOnQ&#m`UOtKlLea_t`@s(J<S5B<q)Qma z1b!b@QJ^#Br1g)_DX9hxCHK@i_D=~lat2M*Pi0rqYgmv{;Mq$7I0Z){cw!BLyA**c z7Ju`C;xEC|yt`mu@9Yn@%=0XYzIf_I<W2e>5?Rn?tML6Dx;w)?^nB0BPF@i^e6G?) zk)o#*5|8j>Wc%280uiuT;t1mG^n)Z)2YB%|W`QxFs=?T>S1stFkl4h|yoAyEUhvt8 zqNjX01vwO)Y~f#FWoRl@1WI<hUb|9(vGg+jHFGFNH^mP-!*EL(t*1JAxOS)SmW}Q& zu>ZncRVf3KG{x*bo!ePD%+&@%rg#{U#p}XJV1_O7!|>VG?ytYBr(d=K_qnWx8Bv_) zqWy3%+>R$~9zGen?Y96+_R?e=5Ym6K1UWdBZCSm}?B67O2muLwaNQp;zYnjZEQg;s zec|AinGF7Qnm2{1&w&m_gfXD?f#(l}Df`J1yCgqDMcoDqP`JS(yi^(&EJj98tu}$< zLVAURm5XQcbHa8qhK9xK)jTjU8`ktV#e9OQB6T6bod?x4yLy{Iq(YMz3%2Gh44TMW zr^U$8AuA1-l6syzqysNgI%rU;rO^;Q#DdT^+eEGS#d7#`RsI8^x6iikz`Mq&a0p5d zYS;X-emFSgP5wo1-KQk^><Ls{a&7#M+Kh;l_u~W=?6olF<l*mjs~(xk5ejfB1-og; zj1Fc>-k$HcmTJLwDetseSqk6xYcHS2vT1Z?ylmo;fDWXNS4&sCIbJiycbmJ`b{Vsf z8fTUQnd|&^dsrnu3TfZS5HCkV`##f|<!?%n;3P)P02UFoT>yoqfKo6L>($-ErOu+3 z7C_ppl+6S!q$&3$qB&4gA0ZZp-ie@PtU8~~%h@6LUh7nSQZaG@HO`rx=3SPSmt>~= z4?H?xOupW7-PdNuOqQ!f4?^?iEeih`A@rH`l%JvAsQ{E^mGv%jB2|$pmD9?L?wr#A z)>BvG$b+U0$3}BL2yH`Cj&tv!g1GWMjKYu`eL4phl74V6zAD(X0BAti6`~0Wi!X&B zElHrH`q%9wH~b>WWLw-lP}8}sy%aGnQg{t(t!V*$W+D1e3{i!wdz@{;T}+2czxpGV z7Z|*QKk*Mt!a)<wT^H=an_RVDm)j<idg!L%-XJfnz=-D_y4Ln>@I`OT3<wFGw0OKg z)T?@fSgzeKqo{$9CxG)1NRKTeGaaeMe>`Q!T=o`Z!TP?q8Fh^#69bMHyz9un6AC7U zs}^8-hYeq21Gu}6U*<!u$at~$fF5K?zhlp+o=AH+J7s36fyn?D%cavnaG-}q{JTN3 zchmbB{G1`4l^L`*DdVDzt`EnY((+I_Uh0T^<+J_b7<{w}Eo{UdXLstV?p6fS;H+DQ zVx=Yu%aJ|D^h{^Q*XEM*!su4HZJjfaa3YSgfuDOo#k-$3*K1ku#$<(~L*INCMq7=L zbYY=^H8|UJz9x4fclPO#jZ1L!Hi5_Q%BNrj&jM^kG3j^Q*jy{0D!?9J=snl#QKOll zz6G=DpP2=r+6kO7-Q51K-V%V)vtiVjqL3QzlJBY<3Qy^Ho68tNh|dkd^3QbdjwTJR zEGXHcDVH(>N9;7Hmi9t4?14iY6ol~Hn{{2{fF|`S=fO|M4t-`7Q&|>%U}DbnC9%|5 z>VNLhq0raDj7XPlRK?F`)n?1ozU087SO+<M2bi2x$cYw{3>bGmt;#OF%*OU+UJQ*& z_VQCY_wJVQ>O}+>$^YZ#qQ^6}vme7LJ~RQH5pL!i5N{}^<&JI^s=8zL?b}%)K65Ce z*Mx<RXMU==-Q8z20r@y!X6q;z&!+07lI%BNLMkr5ZX#Qb4_kZ65mOeLlLDZ?9ptV? z&~h`$US1!&y=vF8TH#ty8isH+gz+)lu?`rOW-mk)^iNm>X`gH4kv$7LuIOl!q<Tvc zM5sz+&$C$s<NAA9uXi6V=#hRQ%b7e9=%M?pU|apS$y?}`D?DnpY+l;{)*-5vAHiYk zi|7lVWvD(<x7wb_rd(4)m}~#t^-^>l&{m1R=fPsNjOzPBYVgae)yC9ahhj;`A4usz zoGoeh>bYQ`2;pIa>W?HPo%TOR5AP(aNNej1(`mLOl_5mb2?oHtRPA%zim(=5zB_|~ z$;Z)dxN)#o?{>`<jD?8Azk?o5@l#KuQnXvA6wM!k`WwFcXDCWSb%hh4Kf7cZ3=Glu zM4?rJi<j`vJon(fW%+HES}cO_!0N8=5dnY~uuyt`Ov~B{?{t!=BR3b&&0lj2Y-X)F znkNy!T7YVpQUl!W#!VXmk#?d%%9N4RvbTVLF$R5a01{X^FFL`H!r6fpZdh?MyawDE zBTcGmN8t&XjL)52C{GTGS6W>ZA$E`1p=#2A^Rz8CH|+fu0HUag)a%>}W~?RhIY&=~ zF*?~v+jGQ-T6Mrl242kGSBn?j%dzU!Cr3#t0o=#anI;NMC2MCqWeHZTSQgeFiWT4H zGbl3Au57zTNh!d<G`B6fyAX9vZZH3OGaO++OjelFk*M>HF6^+fPia6KhGgb35LZiF zxMBW3;eH@n*?gh)-s#>C<-&MQY9lQoW2^0*4iGI{!lTg1CugGr-doNie(o+d#k2AZ z?|)(cWI&&v5#X|j+8Mt=B0{{Y?Km(%!(!c0mfjvzA{Ge`%)2137jXfC&7RNT<g(;p ziRm)POuSSPnktBc%}gavKd~DMLIgM1ZP1avF6%-i7dm}ndKC8!J*J2Ht{{SF$>1p0 zvgw43oSA25N|+4=D=#qAr91&v9|WY9NB>H7|Ap`zIHehhc1{(o1tsD93^Z&@4`g%p z>1t?{s+<>1MX=0m#)AU(#_cek9ZlULrsup^mX1Rv-a@={!zw2n{wz;G{X1ZdOGGFH z8FP4pHz(FoSK_!?c7RgL8imkZMwea>BujDuv5fSWEE=yL`AFtt)4&r=tcBQ2U$)fK zw89h-4f7OE5n4T`NZ1MHhx7^=q;v1;bcHSjc5%{`f1x-R5RF(RO6rUYp65oSHt??E zTsHYgef7eES_`S8;u*@oNv@6FSSr(^o-zH?+c?vMu>L%tlqO+AH#1o%UiqpnF6|F) z8Ldl;>)RQEh^Yyt8!}2SEc`RaQe6hhbsG$ljcECenX^zfu=x@FHAd+3P&Ad*vza0@ z4u*l8gb$_Y{+Y-o2}&mj0JIEp95u?;q=_1!_f=)=s-8@i<(yLi<!*Jj?VxDPcEA2) zHK+gPWs<n7F-|iIvGkK;Nk4eymoN%7RX93KEn7~0&oO}D=S7*EPx8k1YcUS865Trj z+|$jNkRJwahMBgYLRpb~C+skbQL!@@+b4_(`{B57!8A8g`1(yWSVzEig0zQzS!|Uj zh+Bkhhfxwy7OQ>%YLfQkv2iKZ78#xS4T{TS-cH0fvdH+EK#&0%(`{P?gcW%!Ux{eK zPIx#VD6!xhP3)i1c`uiI@+2n)mty~@6)*R;R_o`uctBv0Y)J&tTMzHRiQg+Qv~97( zYuSW2!chQ~pFZW3TO2fpa=!*{y=n2zZgtZDrgd{LEUGD8_;XnMoya4vVJ(vA+*zi& z&MA3^IMym{izfZC?qxICzr0*AWz?I72dL$(?+QI?LiGn^l8nNcFP|ztXd;c;^v_;! zhKV<3)QU4YUOB~89KgYQd&#rgGFAzAP2;V^Y)JP3)oRjF%ch$7O%VhGUrys9XInPu zYJ_=o<LgEnKeE4RWe6E6!pcuF&+&|q=B?bTO`+gk8BYLM;CS$1b~0R`a-hVcnPq&7 zXL&BEbR`Om20OAnQZ%dHLj`52S!tNkjPdkjleDlMtd@AEvW%j7w_xaE@|0LrSL?`^ z`nEi9HByA+{x&F*jiV%@EDJQ^s~YTu-n3nK%s<Gd&9_eg30b4VW{Nnv*afoF?Qpza z87X56TO#N`$B{QfX~D$z($vv60GR2Xi<U7IA|37@VA&T+K>{U7z(e|$#s5fhFb)12 zsWkB~7lS}tZ*e&XJiP_R#8Hp&i@DMUsBp_Ua62|!pKIRv)Ij~sZzzPJIQgOT(LFI| zQDq@LGEHEf62?xBjxd1JexyC)33CyoGMyP%80;OCW%8#)V4dUzEC#06*;%flmQZ?< z*#VX<Ad3XPVxacuv`k~q=Sy5qUjAz7PQn|ey?ct8@(?wub3>|EoR|QAT2S;SLVh8h zGbAJXBUP{5V9Q0FY>!FlPoVprZ6q^>#;j@Xf<35$ki=~&3K@&)OS})sM5ZQbqVL)e zB&{|E6TNWrrimRUVfLSeouz*Z`imWc^Y!D4JLfnN>86#?R74Bm13)baP*iDTqc;K~ zBzd+TB`{kyNaANYXzS}@FxD%i5@CEZ$*`}>013|YmPV9?zhA==X~-Y;v@Ru?4Av#u zvL<*uuzKUT)94G0W*RB=7Gdu2Y|^MT+R}-{RZ>T$X3PF?w_(1cXbl5aiM+B#LSLdA zi)A&nk(tY?^-X)&mVDCR-{DJ<opp+caQ?g@bq@ERc@4QmE5HyQmCA<#^1wz!%qtd> zwP-#;WE~RgBDS{RWW3eCHdtQx`x!8uNsT~eiw}(@uoab%i_GbIkayRO3ZY|Cr2MgS z1}LaDR?QP>)}EyExpq?ZW&YzENG2iA!q;qB&7@mvy%D?y3$&aLf5WNtdcG`%)hVyU z3cz5NF3=Gx`|jmm-tbJq+geF!pp_o<G`p9XM%Nq0CnkF90vF5l5UUN1WlCoDeBZ{4 zJ08`9OxOZwiww1W29qMr<%cKVtoBtjYWzDhM0PrL2+Ay)wWb9Og@wW7OJfLY$S>-0 z>&cvk7jYROokq%XLw|t-56pyjEAvf3CGakf!u^U>ZE_x66TnBFB2NB*RK_F8Y_?c* zs`EgRr(M5}wVL^a5LjKkB0}+hrxN0JeJY_`NF=GW#-VaWmi4NKwd(PpJ{4&wPbbe7 zR2ZfSrMdlFKl3vc0=PA(fFQRpG#tY7nl26>IJRQTwFxcM&jJIFbb1UH7I_}2LW1wj zlFSG5)RfFlDZQ>bNtk7idb?t4jJlY`O);KJ>krOzkgDriy}xYnta6Dmc2~iIX>!%{ zQ}?=nGZfcCNJ6x_GDO_8^%raJFV&H6ExUtRKy!{8R#BP3c{(}cS9J*Kb88ATn`j&o zrB7rm!h>>65c~xKRTo}7+>X2#MXZOwOrSv+H|KJs*SV1Pg|`Ulfu@U}JQ!}yqE7$t zGnafYvm!fdg9IjLUqK@`YlnKQxM`rNFwLNc!1yja*p_01c499cym1Ot?0C_>GGFMj z==))`pbX=~#on3izX=kx&V{){`yx03Hnv9&qzuQ&73f)enqWNl13J<tb@TY>ezmre zTjp>gpYsdr+QL}=w7hu3`{bRHNlK#=gP9^TrH+gd$K)7D^{AiloB3%1oL<Ik!I47( zOnC{;*j%my^yo7q8z$}BRt*{Gn(uBZ4@6&J_^%)#>;D20a<Kn@ju4s#qe;0!mVNvw z@$Q~-S#kx>Lq9CMIfua4vCbM20N4i#tsHZS*PgI1DDC(3^kN_^zho-HjAOkFmUfW! z4Ot#uv;tchFp`iJJmQ?Lt8@~+AkdF3ctvMYeESr6;sVKU+GjpNEl`Q-`lAr@!9Od= zI2)Ls+x__^jtZ%*JOCz7Dk%|8ySB}Shx%_v>#>e<qh1N|PjgyDJ;RN2Z&odiTFDkI zU<2GAYV`&ag!Ko9m|aUvs<(~hF(kj`+_XIZE;#_xlqRup!X>Q(W|br_qG=*Fem7Px zEGEJcM(>r!Gg6WdV*~Yh85gV-8%ce~eDh;O;=p4k(})XtWCkiiY<OIGhsZI65hU6B zHa3IjX6X_T_w`Y3;xrB)^<^Y`n{N2yI=!A&YZs7|r|PJNsS{db3_+H8Y(DZj?JqW- zB<eGsXG3$k)9$3(NN4t!AF1;xLW*W7A2E^ST0fy_Y^+3p`(+3j%b~;dhl_^I5<28L zH{x|M#o{B9Qh?inT#%ECy+F0YMBkPcdS6`XP#BlpplLetAe2u^8qV&S)`vSr40(aK zHgbN5UC5maSA>NG2qFcKcPRy|QrP_T4BLrPx(XVVz)yn+Aw2zOXT)iY7tpW-k4T$> zQ%UQ-LYN$D8?Z$Ma%|HX0OW&-fMz73i*f?MZ;V%Pew?<aRofV$YU#U-wBjUJMQ!IL zD6*0h+;e@wtgi&MC$2lJ`~|23be8mWl65UxfigQDE)u?qnqErmOA32oyZyo{n36}5 zdh1_}i%Ekh*KC=Qm`T8_R+UY9A2FF6jEzU0I6Wx6a0Q#FRaSQ-il`FRV@fiTvWrp& zO{lsHNq>&#5yc3fqL|+>354{BZ|)d=K~cCsiln*u1`W$#e8<ep%@p1t4}PqMCLKOt z6LV}2QiPl1*{hqoYZQ?n3az&*a_vv|_wBa%GPtm**7~5@?f`f0{ZhQ?L7Sy4a9TTy zg3?+EtM@l(8t{;+wRWiu<Z6}%En$VykF_Dlt`5Dg)g->FCs;dlDZv^Qcgedn64wPQ z4H;R+N<h!c;NPi5h=d2vtlHE5O592eC^%0KIRB99CLv*LZ}2^N<VK$_-jiUukLwEJ zs9QkvO$|dbIo>SWvVIR^chez@;a1v-DjwQtMRja0^*C}e1HCoca44?h(1V<+yA=dG z1s3b1gE;@UY{$Q?zC38=RA&dv$^gFY$g^3OM2C9(e{dg#X!iVRJ0y_o+yHMtRWH(S zwl73TLTft$Ir85vQ5T-|-<fLJ8nWL;8r^|u2-=W!W1W`Jk4fY*Szryl{6Pkukvv%< z9S_;d<dk4XQaGmLr@2bisQ+cVCs8L`-&z-X;nx%4b}dnvMKf-=-1Qc`u~=t)cios< zH|mvlLDP*!3>fqGG`K_41QE9{W|%~4_U~wl2S$@DM+XGLm6mhZ-+3rjIeGEDGRHr& znvWNvvR5eev%NAtOZVSWV4FASX%c~b3PREoi=hi>AZ3#qf0cM$0ZFwDpuM<qAsu#; z`;*L2_P}Zt=sn59f9vrc)c54bW5jtAJO4RCum?FQWl+T3&FETNH=GyL6R!+B$lxv{ zgI}^@<4d*d*g5Y4v4Y%_5Y|QLgD4Y7Q=YxTbZnW{`{B=Cp^}ICs(hWfWvKaKoJ5u| zph~+SK)p|SZ_RlTItsG~vHO>HOJGmsB-kYKF{X>Pp;mH60755PpE+tHWuEy4@z#;K z{w}7>L|?xsAZ}4bD-pa%41A_rNIP_!4ac;6GeCq8n8w!92d`!rHmGCdl)iZU?s@1t z2xgFQ;=L&Bo2k>`BzE-RL=o9W-N94x6RNrRRY82YuWmVK0Jl-b67pV^cn+FULLJ*h zB0T%@pwn~=Bz-qVI8aj_4@)xME1G>@%~Dmq1r>fQ%RIta;u%)@L_m;~<_WkeV|B6g z{V2`%!%ejunp=gpZ%N#neP%-PCL!{)5X92-kyL?xL=7}}3J+{73ce{}U40A2QYJ;= z>s$fz!NF^Z$UoU`mRs%T)}&XA;H%JJ+C)Z&o!~>b)!~YI|8*eA)VH5e>BLXa-uj{d z(wXt&J9v0F0i-F6VT@&ntvnF8#lYIE9BKN~8xAj6AmC(xj9AY|M)8#>8tr&E$m!o~ zU0zG790&H14FR#ao}4<tQ^<R?Nbmo;x+Mg42v%P@O+BooWlCYEjY&+B$U&d89al#w z{nQYETu?R!w3h|N+-+YT+6*+SKSK914qhUPtR5{P!d^kV2oKx|qzXmJceYODh~!TS zlF~V)7&TX0_QJBM#*BbgZ6`NozHS%Q2vC&H8`Yr0wmeb^frtZUrk9|=QDf)e>ko?{ zlz=H`)(x;@Wjc3NlDeO2DXGO^56r9$1li>h;aBK-1_9TI*__s8R;E%LlurQB=4AvG zCy9Y>v|(Px?PNwcjWx`k`FDTF2y}F_(Asw4<*Vb*<~Z1v`CB#)fB9yMWpL!+1}cOV zt=6RzCNt6#tph4R&>NQ2yqL_z1Ir=LhB9)<bLG25N(S{dmza_F*wb1EmqVr%N)p2z zfSuJyRw99Cl8nF@speUZb;c%)Z(a;p0fm&CI(L(n*=tfZND5$|xXs0O9?v}0^bA)8 zijMtz8|+I!<9=|GFrr}!iEiT%OUxy6Xdkwysop^JyRug>aj?Z*+_2sVar`_Z)lMQe zjP!l9?zSF2BPN-xm}|{%jz*nuydZ5sv4W>TH<zBbl7BCW!a3+t{h$;#;nj&$B<Jy8 zE@~)L#AovUI9sa^t_bBDJDirNKYv0e>?ilLLgk~c>O1M!103#Kiv|={E_tTA6;DxK zrYVwH*Yf)w<zL`D!rJm3mAJ_S-&M*ahwXVJORX}x>)Ig;XgOu}5$LMSZ(2WHF>Fot z-OunuziWvZq{onP-nv$|^f0JcCl`2f)X8bOyjk_c{z^pJXa<yuopMD``<mLmnPBL> z{N2wpc$$ZW_`5FIa`38y2<E8_jJs|MCwzg6lh58mzGUH5D*8hf*>xvnh|PG&{_MOg z@WZh7VwZ3N@s(}G2`2>vl<;v~iWYaFGwyp{mID&bLDOJ)Q;Qk+vY7BI`Vwjaxsi2z z^+_UWrI!DaOmfd79g>-8;^7p*z){>t&>>jfwP-A8grB4JW1|RVL8w%M?+SU?wRb~% zwLAAN6t~dC;q7|v608T0K{b*0(JSLX&h1`pc}mO{&PAlkzFC->I4E`z?}tOCtt9RY zdrS);?iKm7*8#j_R8GL1)i?sw>(FWKx$P282MTHCZi%Trl4jF9ZsvpYBV`Y=*JNU% z1w7T8$-~a&sy%>-lLuU{zu~7G75{PI$zJ4hiQs7EHIx_9OU8D!?5i)owq<BT<PoLv z8`Ul2Msf$kYf)h{8`hlCT_i+IMxwYgv`v#}q1ytvkvFw{k5cdlTxI$hU)6!+Z-onx zaPhKdvD+sxuQS|_F3`mQN6k&;1_zX|gq6g*MxEgB>S~``87DYO2;68J&RD|p1hk`> z_5ImE4grW(cd6|THheUUx)huUJSrqj;|fX5gP(fbjEcRRGgmh{vyL8(H&9zHh}pzN z?J3c^Ig{j;qipn_9li(3Qdr^6ILNO~5Gzgt;KkEyx&w7ix?+dK)p>NzG0*cHo67Z| z2Km{;9rKb;q$LJaiKjZps%f{zW~VbS!#C$G!0-xZrPPzxWuL@ruU>h^F=VI38}HKY z)(qx8In9ACQptGYVDqeEdWDZ_a?tcPjl3CvY}ZnxL?xv|C>#@gk8c&<7Z1Qcb8r>` zLtHp@>{gq#-iZ0?5kgw14b4eXObg{-AQtJ$VNmTc+R06RP-c@^oNiM;Ly~_m(*##g zYUE!?p%)(%_2vydv$BOQ|M1$buLTX0u@H2PB%Ghm`_k)DsaC8=PyT>Vd;R`pU-JM) zOs$sz)C57#?p}bVs{<|NK*vo5*trSUA#c=l)~^(xVkRp3ZavX5x|=(tZdG>=`WK+V z>Ufz^R{=U{WBr!7Fv6>lxxB_6-#Wt5o}C;nnJs4=1=b-sz_*E|fHT>Z<?(ou8{STd zYlmy%MA-I14ocm-D0x#xZ=xim|Fa$nju6$hOkB}BI~UpSlj&BUUEao~s2Vll|5{j> zLKSM}a8;dMK5BRkr6iN_)FP`H$?uZMG3nF}D4<`Z9PJ6l;yG;TEn#dPC~h^?yRg>i z;B@x^%^lnB-_W0Mu6*pp6+)S2vbT&Idea8eXN6r{CAw)rAO2zh0l9zrVq^X!-;@Mt zW`!-5;f@mtmbykBiHiP~S2NeOy&o$55vFVQk!)dmn{?|P4VcUbA4{XiygpTuSP5)0 zMxX3&;2wK&I{6q$Q-&~&!Uz)qWR6IYtt_lVCtqltNvOE;ER2^qEN+SY-TIaZ#<7A< zc*&0npCUX{WO#z)84WN{8xBy;<{;1&ehcF{oH~@z3n~<`E&!UPOeM*7Mm&K|qk_)t z9X`t{bv^R6H0g@)5M{S36L2IPg7)(*ZHPkY!UjETYMu?yT$?Cwv%9odl)dY(e5nZc z>i;GhCY8nu*t;H;!C3JKUp*@+s<_Y!doI!IuT(QAx{<!@Q6A{61qARkoISB>8hwM{ zyp!>I?B27wx@#rDGH9T}3vGz2NGI$iG+;z98($=_k<S6~u(}@S-_&TeRi#41r!ZOk zLuFOpTOXt-$3DagzB#(Xr_Jq7)HYmIpxMQv()axt%+uQ}W+m$wSFpY6boPmI+&Db8 zh+qDPR_D02n0v4^qN2=FNATbJcVU;A-@!f%D(0$GpU!V9OJClu$*kG<DK<wtbpny^ zoX{JEf*}b}&O-WUpNX9dP&evfN#pn0q%j2k%sw=$kYPq$Ke8mSIo>5Qx>9?oc13i! zi}79|>*o4Kzn;&h9byA`iu;{z_wka~n$u<VkVXHu<-y(-@7)lc1+HD#tB<1T+FBZq zKa3e>5Q9B4#?0f?&>B{nt$|1No_p%yEfB$F(CE21Sb5hRm!eCJ!eJf=387(cq_`@> z<@06C10MlR0}IXUJ4;?$(@|uZfa9FW^PH*V@VTtuB;vzBXyunxjt2n2q00J%LHOgo z`Iyx#;($WYy|j|yC^+a5_0G9AQ-qg1S*bf_@A6+r%C8Il56n!B<!Qe^e(vO3x4%LX zq3zFCKt@MC99O|u7cbl$&L0H^L>V$PF-K?SZ-sH4Q5f_;i@EDX#IHDlg~LVN<%~FZ zaE+N$YMo|^hK2nu^h;|EQoRGyR($x-54yeI=%);Rycyy-SE7{wJ#UZu>Ton392COi z)&<=*)`XvUBYLxkM1OTsN42G+F0&;3Hx;<L=od*#3txIo<KV7G^`$N7MB5-?AKYa{ z0~nnairi;IlQ+21s!C{&p8Ls&#3_gwx8OPzx~~Sd4(*?GPCPx9<0|tN+FxVZF^8CF z(41`Z>x+ByX2n{J_O$9;4RwMG^&J!#wO9PHDpr*>YbML{a(_^a&C<8wn$PJe;HXZ` zssCMD6+VGcO9B-RMe)>YqY~BHw_{-S;xjg_i$<(DsY6rgS4OUrg3wW^NZtu);EEv) zevwZ~CIdkU?t_ltniavL!Jj6+6*~1gFGMZhbK6P#h8N!_-9kskxmugJ&t6NN0Jr2? zF(o>S$n$+G$%eLUv#}3N@)e|;*?yMj;OUZk>nhFG1|RR(n3O#l|ElS^3La-QgO)C! zmHe>0-_q=YRE&E6Sq0}kAnefC7Oc?pt-pN#D~U!6_`?<fXa1c6X8(bV+1~ivvWVo4 zxoSS82$<Hfe$)*X8b^_ul>kYgC^4Sn#HLQz;l-@e5Map<IXcAxO9G2O>o~!VjR>TD zZ&UclM680SXm@FH*9oopJO~)KCYHP^k8U8sL@=`Gwrgz!CSFb!MOqk)cH<^r>@rp2 zYDA8&+ku@~xfFv9B?_fbTk7>5D~QqeM>U%be4tREH?SX5MI6n33B!*2jA*eLwF)C> zq2FO9TgQLhjA&^Oqm}#VcAR!EE*T3O-hSR|E=!2gryu34U3;X;ur{?A2vhbqMzQ1( zWO5drS;mW!@`7#rA*BnRf1T~i^d~lnc){S?NYefQZ@FRrdP?_>EaaOytO&z$0NFr6 zWfu)piWnA;bX7VR5j96)$7&K;?seu3-z!#S?EXX9-p28t(W(!tt%r2k%_8p^!0pny zBZd?`rRa_zAh%$C`A-$0Y`pIFDY`-Q_B#N47AMO$wzvnw--yN9jFs7Z%mO^TKTD`9 zz7~MJ`=Hcd{LpMvMx=$U9hcZrAO`QFEyf*vM{=I#3O#WTTDa2s?(*INxek58y6t*= zBt1GDHQW70=-{&r6{s1gBuAUx{CBo9IEf#qF;@}W*1iYI`k#Icxx9<}D>e$wfrV?w z;kiUUQ1CD~3MFzq4NEldDlXV%WD73ZII<s#V+YOft|Q?@D`4;$C{rx6!XMj{n$AnG zXJI)ePYMo)A=7z}z_u69vw8sP61!BL3C8NJvl5j0*!*@qrJ8>o;-*r#X^<j`z0cV( z>BdUB6xEC;5jrk*oP0BBOZ4Fk?$q0W!Z^T!>?I<F0X@V-Xd(z3$bPkJxQyrzMpoh! zj>!|mV2WE7;N0?E->~30dYTqb((^{APlDg%oGK#5Lxg0(|Eid*^_Seu*VHUWC)iwy z)K!5|>50X^6-HtIE}|zfb8Yltb|dAp!Ovn7Pu?>K#%0EB(UGpxqgk$j+}fx>Flt0h z9I!}_7&{T{n)u(UT8N2FQnCm(eFobOkU^-Jf+(5D)m~Fzx#^|szYeuldaRSxP;=SX z(U*LKMMGq)?8)n3(aZ=wzfs7h^_Uv7joXOrv)!aZ*G@1rQo)M4LdQ&n21k@BOYe4X zl?Co&#Is98N0!)berQPa_jZWB2(d5fFXt4TQjh6{BLrMOwRdprleNWN6>2nbC;t52 zwVo1JU}lyPNz?~X8UxdltQu{%e5kc%hbt@@V3Qy6Z~#&A9WPiuIpX&@|E6JRZd)!c zFyR$QM@W|R^QDWMAAlq7IW6{$HZ6JkfYY9<0?&TGgD^q+<|i$&KQWtPiJiSc^JN8+ zQdc&|@)J0`280nII{AUX1a|YTI#9Dx6ot3gAxv2-^jynZn6R|X>u?NLw9~D4Ia(=b z(@N%V5>=Ze+3qlvjTb;+uFU(#Flr|J?Mgx;LL=gV9M!PAf-HzvcQBprLgk2_wHq`I z|JVWT$$yZ8I_uuSV8ACmL+<z#KU)dq1Sr7eDwn&WSZ0|s`U8mKU2a$K=4Q@n0D=K5 zd_`}ddH0<T!Gbz_nQOIQ<js}k*YQYBLvt*ycf?P*eBBo4EPgEJP^zfQFnrsO{<_KN zBYvZUCXQ}sI>gW1b)<~V<+2&!st)IqPn^{J`_c%gTY8;0(G5B!Ubw8j<+K~ht*B!- z0UoGt1F+rYO}SE+rC<J~vr(vzI<2ow>e!sadnkw4E^^(zJJ%^9rW0JJYFW4U*+<9@ ztA^CtpMAR(7f32?Okwtu{g+j<NdmGH{L#fO7MSdIxz(_}>qdrdh&Xa=MD)Zk0T4?{ zSo*J7v8mF5X4XV>OqiCW47vi6)fxKe_r7u?1!RYA#YpX^7V}7B=HZTj0o96*)S5|( z|4~xAh2c165*UJaYbk#p6WbZ<$ilknTufJCY<!c71ClC}3O`<nlVO-%S7<UvNB8<j zZEcJ8!`3Dk(+qMfGFl%Z`apoEm#=;`%9_B6OpO&2R6j`cv%APuGI(u73sI(5;3h5( zIMu(_gus2l^i!b#;)O1!K;lg4WLbIL`8wc6=)Hxsc0n%ZZBi6b$!aRrGWIzrxErH3 zb6r7zmN}?OF0@HXU`R{8V>J`4!vo%U_6+3l11;_kfr-Xvjdj8yi1tVjy&-j70(%+F zwgC_47tD0%1uqM^bMUjIR+hY)(Uz@(2B6EDohdG$n!!U?vugJLJy?Y|7D|Ude~gLp zegaqKK!?d=<|k)%am28|uM1|W>Hd3tYN)V74^IQkyh<ItihIA4Sm||=ix#M5Dcdr# zL!}F5pM?}C6Jh?-Z^vH<*pN||L4fu!%aG=gXnXwXYAUBT;tN0fds?ErGKQCN1@+-7 z1AZDLSGs?+YLFX@G6Rz76+)pxdzYF^63&3J$hD|HCS|7VW2rA;`;*6ziSk0}x4wSv zy5{k>k_TfhEuo{X+))20PA?yBp=>_`O|7xX)o~xx)}+eTduZ4XxCm08-4v-MlPh3i zEBOS2$&UR}>#fVX3-Z$}&M@l5`}@Oa&Jcs2`>QR+E#9Kf_H=;3c@eJo0}Q+^kf|wG z5l=Lbm%MQ2gSI1-Y+=!Y%-N`7Vj}u_>-pKQC>?5=2uX3Qgv4}UBG&mk&5_7>Its7t z5Jk-<%?!?9F$o3&*A2riraGZt=(<x(^-oGG%R%0cDIul0Q6g%WTxyVFe)IS2H<E03 z_0lV_pP^~v>^C(osJ~rdmZx!n*OMSjC0n`P$%_R+hgJ}g<E_t6<GmRyFiYv;7)``7 zQ|c?8v)>Z=?3D`9j^4ZJ&ekv1o`KdD3cMcXdJ~y2gQ4yGgu;-bpWjR$*Qu4h_WSg1 zgVtC2R6@7A?{(s`pP1}W9Lk+hL8y!KzD#+{TB-vJ-!CiZzfBpCf@Mx}`K^JShbU3_ zD|@Y?**?dUr_L2ERq5M2trl^d%s3rdyCq8`%h45u4*#Xd;tGgV*3N&wUPf*Z%3oBz z3mwhR)xX0&1v#4gQxlJ>pJc!CeW#2%p<MSEavO7BikBZp{5rH-5bz^6M<c#dJ1tuj zBAx`M%9DeZA6_<sz(NXr>q|&kQmWAdpF*Z+b013}%zAM9*0?)kn$IRuXo=#?nDo1< zF`@Dc3LA1=^}Alvr$vFuv^scunY)+D>Sc5vs`_5<^QpAeHhQ6W!nJMd*V>JHXwhEq zcq>+7hU!{MRh2^aM*1JpgzlizH@_v^DL!iH(PTQ3;?PfvX9$CgNi-_DW!r2=3}WsW z7hgfBQZt?AHPPuM?Et8EKhz^rWW2=QiOO{&f>X3%bsr@7)F_~hmul@xd;MAN4^%ov zp*z4kXg7j&0pV3h9=Sm*<~t3(!(qBcl8gopXEN!_o7Qx=_G<*YVyvm!1&;$l=36)G zR^X7vy?Hw7U}C56MvNItGCJhOIdXnz(uELvfRYv&LUaHy;c&?{P1_q>dl1*OCSgEb zaK}hIusxk}OfEWgS#C8y)3cNlD8<tPIKNHeP=fuJ*%>bQr5fKMa-iKh<H9u`ZiXXZ z2T5ii(^xY!6<MNiVN5LmFU%r9bumSR)o3%4o3G;EC{J2ZZiaYKz-e$D|B5KvuIgVW zp@IS!;5e9o>1!*jXr4z2vn0xIz$0>Nrgb8a+{~*14=4X3<g;XJZK|kmz#30-qQbpM zSSNSlIAh5n#TTrgV<%uO;nUET;aB2lpF(FB#sY#g*oTh8V^h$3X18K5FO=5s)=mFL zL+q*gVMNI7z(&^}fvb3z7<^D%5!qZ<{?ZszrxO~}CE0&}ZOFy-;xw%EzUv;`^=Ga3 zjV*+h$z%9i^D(=;>=D4=&fW7pb^RFD$T~QAhU98KX_Lh6U*GxTHlIB~KzIlg9XSoC z6k_njz#{KRdgHscIqZIy^pchC*ja!bDP1*aZ+MQhU{z%}OKeEgSzWSZx5LZ3fJcS~ zBEOLmQTkU<T=!om*h{s@1c$hS>wRRmX|?xaE-NgRu~s$GWO5ce^vj$#R4sX3jsM7w zwIh=76GDBeaq{VtD6>SyqSxuFOZD8`ULGUV`FJ?fWFW}79Aqqp>EgKY_DASv9T`wd zoUUyCLDI2};)dr}42xi?RQ{HXXmIsgs8)CKGjH3}n?l;8ihsacWm!4p^b(Y??Sf%k z*UGfb4By?VfQ54mkSNzo)Jy80gQa#NmL@UE=qj#wgeogP$rG9~ZEX|%D{QX042<Tf z?W_nCvlxkpPp~*&EG&|4Ry>PRw11SnNZDA(uiDj59q}K=&S60mEy|K<+qP}nwli<q zwr$(CZQHhO+pIV19@L=z;f(f)6;Ww$63?BJW95MBYei=<`M?7?sM;}a2?+i2xWKs+ z!UwOu%<Icr!3F89SFz%~vhC5DxI(^hami#E2x?=lU}5^o_(TBok1r4A{Ixmt6o<Vm z#cSeLW`GkuoJ%mp&aU(;BT5<>Pgor)iuOZy-<Pet`8<)}0d#?EIBgc(FRVKDU(^^$ zcy$-K{^rPyUWC;3_H7SBqdcF8#=H>!DaDk*40Yyscf?j#HfBgz2U+p%L6RDX0(CO$ zBvzd)Yx=a>=h2Q_r8ksT5PQQq1c)_xopvXpz=A8?Ctj0`Rm6%~D5~P-f0z1;P9BZY zw)g$@Uq@Ek+d&L%!m{2m=GknPV{ExNapn$}j>KvU@Q@0+Cct5m*FS(WCc$@L27pN; zhZMt(DGO3sl(Gv%diE9e6qxFbXB|HKi=fj(-b~Xe0;CL+2c+JXCn4~zOZPx(ChRtk zsYsP&3CU<Lc8y}&DZo^q&UXRrVuR<NyR$!zbou7YR?D}JPk9=;ZT%@jFJU%f<CjsG zNhEg4@;&~Lw{mPdTYoMc>Kc<h?R)>Hc+abSDy$LVuB^I18}h<3KRt7ChMjJdleD1> zZB(1a$;T04or?zPKU6`}Mkc%O_sj_yIXCcE3&uPyN5RbfeR=FGgU#%lDCym9<HnvS z<_FGnayzLYULm~_#s^{dxK0l}UY2(}m6*(0G!*rR75tPFDvv8i;vD(>J1f3%BKB%K z+SUg=i^ZXF0OjzSbI5uIWAjZ)ngpkVn+bwxtKKwYBf;M(MCSLVsBHA8yMJVFCV1`M zmTG_8CK2fLcJQTgLlauA(q!kiYCkF5oY1Dhcu_hK3A#h%8F9tjA%a~ErKb@S@5UYM zBXz^<`2+C;`x4YkRoW>MOaQWtd#sQ=NZEK;a(>ZScTAp$7p@i;nY4@2CiEhmHUtX) znIPD>(}mw=7DC<l{d`3XozJ_rJ|8ZRJ|{8uR^*^NHMGZ8jtl?*im2X{RA(AfKA2Xb z9LeI;Suk2xl64r>HMw$HfMb|wmef=x1DIl)s0&!RWg;6P&+W5PYs=ABB)FB}1H5hs zxQ&Y>0*g=%Cr`D4G7lSrU4sw@<?fyaqq6<NlPY?(ml?^w#rs_ZMBqNwMHU{85shl! z$4=7T8R=3_DPvgMxpzg^Z4!aguctC%PQsb)v2Q0=m2HK`+Ws2vS~$6=wgMVk(;O3i z=~RS>*E;a0a)RFm#J$oUZ)vhAi8YE0w=AG)vn-3Myax~B0^%Nh(!<OM&h<G0_?7%p z+L+SIBrX>Zpy!(vo9wavmfB3m{6r_CbDipt_=h>hJBwiWPZ}<N8dX2U>esmeXa9v7 z%k%=@$GHr=qW_%`@tHs0J=uLU<(c9&Iaqb5AZ_dw665X4t@M^pz!A08RRgz&bM-Ma zW&~N}IU93l+8eNn^#2N|fAAQZA&BFQg!D|L*+%r1W^~;nfw;r4*nNMpbAw`J$db`w zXy;bqfac{F4TXM#mA^?xVDu|iI**-h^bJYV-6zNHNlCxtFT$~u8@ym6z~cP%a)Ggn zZmb!Qjw;-n$tI>G{|k>i93o~dx)Gp?9;3Kq(aR(u>For*C^5PwxDyy?Nvf8+vlU_P zA}Lbst5|PY)gM?Z_c*PE<3>&NFO0$f$(B3hrAdY1#Oac9H!>#Jj{)%Lx1CI5NMKs2 zT$lYPL*fbJDV!q$>)TX1ZynaKfJ@JWNC543a%fa9Y53ezVu(a?ciYLq$AD-tfQjM* zlEhAG*7hi&U{&^1v?2}v<rNy9>j~|%V;G{x-S^0`F`&wG*YWhb{UI1Iz~(HD<2f?( zj#Q1|IIjIly_@eqvn|xrL0FBv6*m>L5EkU5$9lWp1TL+17JV>ckXBmMgR+QkM)B*J zrR<vJL$F5KQG68|WcekBO8%$?M!(<)PU&$^d?-3ts3~g1A_4v2jcVZtC`8LRR$BJo zU~5DhzWBLrrB+MC`s`mL-1r-xq&&74@R*=eJ4R}2!A@`t^nYad#bQ~in{0xLPDFqx zC$5G=^fJonS})!ge|>{K#U5F;sn~WYm=>d+N;@91Ga(uULjk$jW-86fFGK(p#%B$a zQu+ji_0@lUqm=!sACa4i<Pk*&UJ~!0UFj866X0R^zNl?0yG0(sq$(}?q#lJk2MCXm zFnR>iSy`t{=H){_X|xcA96suyh2U)wg)zdA%RXxlK*B|NQG>ZQbB|h}nSuzn(&IK% zb9)~TWsqJMkC_{yr64`}#3d$b#$5HVGg>_Jd++a<%w`|p=}0<o<p)$0E3!iSXxhjE z1IdSQ8V7kh<QD8m>%+OVV-dJSLR=Vn;?3qH3d#l3ymX7~V-ycwD7Affx^ANITI}+7 z&1pL$F=z<e7?XZ(p2Uq+k=^HeHNt1=-UUR!&9d5zWuvI5Al``(7B-H0QL}#z7o-bt z0>?lwEfN2H3xddfkJ9EcaG@6{i5!5_+@OO`66>PYA@+7N(}K?yvR&F3I#-=*l`#5E zsnP^rTIOKJA{VTW&+?e}-UAos?-<iWPAEsldat2sn>rC&%>7H8JC3e{TvZ%8F5p}1 z^@qZPq!mJ=ViVy+YhmDJGxppF@lw_$Z!SnyJ?$y)K!TmKtc^z{)>2Deg&BlDj7B~% zdD%Yn%U17u;>u(a@?h$pUdBVd(bdU@638G4A0s>De4$TKNbkwIny&YZ2Js*iRmgXZ z&HGGV^=Jw^>S7DA5Y{j{T?2Yjm4*C=#pjPI5yT6EpKrV}Y7(Zp!UU@S>@D^kx-))C zd4EP0OA2ErZxGgpB!n2nhOtHCN6ft9ZJBBlB}VZW8&iRbe}8QQ#SsnVciv6PlmtTF zVIhsSb@ivohScYYmZn)|YokMt5ToQ2syS^kU_@YU+z&)D1NV;JANC<Oj2`2>kdoQ# zGRMRVX4C()4(dY7XG=5aeqBk`!=#r49&I^25vV&eb9!JtM9G<0MR=OpJ<ye}Wbwap zYaIV4ZjG7k|MTCOsh=x@3{QtOy=m=iUm0KebA#)JrpIyH4f{e_xU*$#gDu^=bC2RM zguJ++dLiqy&E}eVwB5b-1UXL{ubrOeAoQ$^$si3*iFHA~^I#N>N%Dw4wsbk6HdFWf z@oM+mN^_KBJrGJW#>qkt^26}D@({j5vFN|KJ6hQ{AA?$P=-BG2^Q~W)41ggYfZx*d z`G?r!vWbokn*`R+(toio0|A+?i9Kt~t8T@ly7`HOe}^oXPCin?(}(0BZT0`cfGRZf z=(ZfqF06>~klPq$aHFeQZHTdGcQV^-a3GHn@|dcCbX}^)t_X(DT39C(VH(1Z26LEW z!(|`GJ+aYc=OzQMmoiN$Rs6HYUeIvg+NLwZ0V}T|a(Z<?+m?I4m{ZyFBje+KS#s(F z<>t21jAUPeA$=ma#K)!o2_Ghv{`Bj|O{PI%X`Icn1_0=u;h4*VvUZcP8q&L0!hzxq zu3>J2E=8qY)9(YK+~F1V9wERE%*$~t0KV(PXFP%PI-2PC7Ho{xbH|`TO$I;CB+6uE zPh9N{rmzZ!f&rR7(AQtTjt}atxx4?-ku34mwSPkQ#(;1GEIX#NsaOPF64JgK)mTFd zq7y^nB>U)aJDTTPq7JatX(=hyKKB&~*e<ngb^MDcrrvf+Eb6sMW=+o7u|GcUI6wDD zIj`*6H_fmkq$~_&@hGg@rl<|#d+k0*V4mM7AE0Sz)j`yoEwy}irREiA<F%;Dv0d@V zVTOco*})<>^?*2Oh9719S(8r@E81|G9f%V8_4M~H`mg4-O^;sEK;9Pxy^4_~@&{`9 z(;I}g+bmI^IFSjr?{?k>t&jpo-VGCKLQB*dbsO_;V4H>-qt#C1wa8X(8;Y-;ZTqj; zHpUlIKNDQ$-xiICk$JHv%GV#(x!tjB(AN}t^S4_2FG7=_hXHGkG{pv|aaC%K^DXk< zY;qQQdwXkeWm6nLLEy-j`f+p-y!P!=TLzVHMQ<Fjv2(CX(Mz!Gt`e-Tn&?|zHIBqW z`AI?9jSIHNf-QeU*EMyHbuL&)1m6?fsJC%0QKkn>)r+{IJr5MlV%M;Zqku|Y*TGMD zmj&sHF|aeAZR1u7BPVEfTh7Ggfb-nFsC+}kXxSWW(9=9eO~ZCZ>j-Nh=ehl^xn<~_ zk`CGelQaeD<&dV#nriRG$1}S>AFwQacXVHJ@us`eKwaQ8m~E6nc<~i<!wKXf&?|it z33nQc!NV}zWI+DZ48mE|%Z_abXLRBsyi`x+iY05@HY^;{zl|~dsyKqRI42q90D3#{ zShd_2+JI(2syOts+)m_bB=0#_kRw)1G0kM2!T~c=kiD&o{9kI(Yc8>v)Z~AbJr2^b zhB?B)98JZj>Z2y;s)%<F2L)i1d-)A#qxK>g>UdUTbVGnb5`Edo+X)cR4Y6pT`0;bY zy;NC>_*>Z!REpnY3M6aN1!=S#wg#qnu{NVhpV&Hm{q5tgE{i?3RR$h3jc!&cBF737 zFpm&ee|ya%LJ*fS^UQpF=t)gP!pMWP0JWaQ9G^g_(>DK5qUYG@YR~{dkTS3{KWbjk zR;X{|g3=>72)_moHGRpYjGq1iyO6d#lsNR@djQ06DZtX+%Lm!{-Ffv{J3f(E+|4$G z%2pC&02r>P6lju#D813sC1d)>bjP;26-gGF>ZH8XeYp7jWcyxJ*gVuE+QkZ7ef9mO z_E{@$z)TgdH-7i<4Fqk>{-Vor$&U&_74%$^)zH90q=DrpZIh>bh1_fOa33XCkJ$t+ zx-^5qjXC%sO5roTl0Q2?PbuH$GPEvYtW%hS;Jk9YQeXSz;_ZQls395C*W?%Wl+J3A znH6~V6Z=Vy-9uBqhY69>7ob{zjGY|^SXi<S!M3$VAn0Y{_^oT!Y#=Y5vp1HT7aaqQ zPX3!!xu%hgkn|48o*Y0M#j0-?-%wiPCTq#5v*d)HfrRlB!jW^#DpEY4(FT&aiz;B~ zP)ZK|=Z&MzWs~Mah=o+1*k>Z95#WhN8yh-hO=v@uujVkMXAXDo4X{16?H+o&3c1gU zD8(Og^)uO`Zt|Lqc}GQ-``7>iJJq=p3u2yHD&B5$u0Apcs<DT{vvtee;{B#>ETpK7 zY4^>_+usMXY3MS05if|Uk0yRNmnB`G^o0yRYY_B7>eqF`br=oky}HlejmhW!zQtY5 z*gdsq4e8%c$0Uy4kzN7`Z)@Ql1Qc-a+OH*}1ph@&g2_e&A%NewFi0d~hYvuq`ZYZZ zT+m{~0^cn|Ixa7b5E2Oe-7U>|V_`rxPqIgO;-5~0@g9z2qDZ2k*vRp|$u`v_jf$|c z_B{<l^pWpzRC}NVd2p2{AQ{3)HI^?L>zI|+tsr)oc4q{=o+bjHQdHvq&QK5ld*hwt zSE2kZe8(F9flV_){Fc{;MCF&RS~`8Y++XChP<LO&DPnb`Rp7xQBtb}*YJD$dua<jI z0dJS`(}Zb1r_VPcb}+S5uN&eiD~7Aj2zO&WMsJIh9{MjIHa95y9F^yb6F4L2E3WpZ z@0n8`d~m7Y7QsPGVAe`RgK4oq8GpKka~_5XzI6wK5GQo0$LjGTMU~OVM2pAF&$5j| zd=G^DtNMqM26oZg!{P3)O1FE)JTgxgJGVt+Svv|u7?NK-j6NtYGjLR+bX53uU`@&a zLG)rT?Bra`R6C3>4_=|xT`zDd-7hM(Xk8po567s^z5DBc1x;RXYPFMPS&9jtQvcF- z%#7-Ix9}~y6}ta8VzE3n1iB|9vq%2gQB>*=5~5_Tu33sz%Ks5Z9OpqDBsRHbakN1` zl?v^Or_EG`)Y67?n_|_z=pDLip4V=5%oY+v3P}BCWOe07j%TCg=AFcaRanbsPZw{I zl&h_~tuBL=O%iyv&r_d~{XADbn(~EhL~<v{z<`_c3HS4G(0KjDb0~qdyKjSEUZ>GX zB6&Ojr*<I5ktHfv7Du+ZX69%)_^j0wEvWYFEe^dOj`l`!tcdl{WcAZcqKQRrf_u~m z?bT0qeaeEo+Undl`yX)I_g@T>>n{}66oOjI*N>Ehn-dV|fO<@>F>d07)A9C(woKM+ zAKN*o_1A+UWT|8Fl<c&Dx&@Uw7F}@Ylbi~)#2i1h!r`mm<Ewq`xv<$ihD>f5Qw{%K zBJ<jgu9wa&-_U3_?3BwoTzg_U+_?*6%mpi2So7y#tLZ=7>a&2bw;!8?1H9Fo5EV)2 zMeoaJ+1B0`G}*g0I~b3Y<Pj06aAn>zH;^Lig~h9faO4=%)O7R8U&U>+8OW;C*bvDz zFE8EYO;m_2|8ewm0YEn0hv--0UUf25GVJOx>TbikYd6xMZs44H6tw@1<F;a_$6ACY zi`a5_kb&!121M~Q)U{L~ZW(WtG%(#Y{q9P3+m%|lP3j3rc4)7LWt5dgvgjW0@W~2* zgK#nY7PN?<ya7V?nb8$}`L9=8T=(ZTg=yqOZ;_SfA8dLQ9909P>41ocu_n!LdAGcf z)^($(+hA}|$u#vAu6Dzjg9y+_Qim)W(nDakLK9~%ra?jQ#~$VJ4zR-M)DfLIf>>n; zO-TYpuT3q6YUl4YFSF<8%N#F`$ot6hiA>JqWDoEmtEXNJf_h^Jq*;E4o+|Ki9EaN2 z_xL3?%f#*J)~g6*k7X98qs0aZzoI5<;Dp_L=-=Hu6MQP`>X<kQ1_!2~^{qmedAIyT zK6(K4plNeZm`j&P2aYhJH-<$9I-n>ox2hp&J-|Rit(ZtqJ3<-C2q*O|=fJ)W^*@I# zGA?|o302H0X4WVH5_(jRPx+u5hOR5Bzn{lB?ZkV8!~izhF^tALvZA6M$;EKx9%(RP zS&4=cS2UaxrQ@qF3a&#yR1(X7fAtOik;J)D1PWfDF@PYn-OLjtEOu=%uknu5g;dxD z+Kh6IVXbCr&Kjgot?23qD2CkDNa)HU&Tduzm>9$W5c%!fe5{KgmU(zk3l};Euan7) zmMY$8@$I!q0pS{Y*7w3<dB+>y;_uyk{~7Cts~3h?s1*U1+vAt>9gzUJPkY=cernMp z75tilx!W`X5I8|4nbg@|H7e@#JRuWA4ox<B4@A~v$j#T^$l<B)0ZJvv<~xK`QKISD zr<j!QhlY01psN*uMn`>+cOIe?Se!jf@L<wxR0lLbZ2DL?Vg}ZcBGUJ&vDw}y&C5qy z{S#W{<4_N!P0^p}Tjt04U@O}_68wt^uU{s2G#VDLqwu5i)gfzbHyu(oISA(S|3Nqs zsF(h*qd#!zBc}}7xkL_1BjxO)KN4+Ht5w>7a_X>9l^CCw0THQcBO9?6B?x9sdirf4 zt(C%X8AT&gO?J`7&^3j-V@WNu3k&mS2liZJvcZxTmKJo15nGd!3enkRoT2O;r;3CH ziJ;IzMC<F2coMqR6tV9v7daZgaX0lA<jn*Q#I=<O6z&nGeTid`iS=w?=Abs}-X<r; z=9=3+3kw%%`G@rbR(E<kW`;M*0MB#njPQJ?)4(gmLRR4ab%)DWwR>;Z19v2@uc&B9 z#evmKFRjfrXczg~dI;W`A{fc%uQHT?%>X^PM~UN^&vv_vYzZDPuI4@d2KE)l%LASc z-*tW**s_bU!iQXFO+lu3#wl1nr_4I#{o`vb4p<<@9$_EW!#>E|;?cTO#6*`<S1;<W zJL^jTvXgBca7byGkg0a{n*+*k@1YXjV|I+qUob;A8Is(l5NNn+!smaC7}b#Ex-<aL zG==&BL&^$CZn>WE_`E0*m=jL2{jPYB1uaz2Y8;I+6``jQx@>=cSBPf93Vh}&+$RcK zzMe~-3`6GhsmC;m=l4p%IWYJ!lK@3G_~<deWus+wE5hBK7%@E4g=_rVEy|^Z?|wqL zQkcVdB!$Eae1)A^9L8Z-mZh55UL{MIv+@yHw*UT#bZybQ#GN-AxV8UqtGWZwKYK*y zO)`PfIC<)X{6%c4UHDUgsxIF3^zBbVkJU~SW+nhq4ME9Ft%>bk=6EJ(U%lhkxx5Fo zce6oGW=t>^Ld>Yjv{V*Tc@O{Op{i~rOcdBu59^sNZOsyUS8Kt+A>2Jhul^k|HMY`f z?EPDb?b(~2J3SWS#+1Qtn2R;E(W6LV_s*mKuuj(&?vh)=Q;T3|LSzF7A5{m=h)AMo zUcMy6zhn5xNe|5#6{1m&WK=lPv_RbgZTJ|TDXB+7;IOY%VuK96g<Ysh1({R(b@ej~ zkB#$8tcLXpIm_cfR!V2r_1-s?ILqtF_|{iZQ{Y+ferJZJ<`>+gh+I>MZdHA#hI}<1 z+;#p>Qg(?@P7M1nn<Tf9MeRSdE(-Jq9S9F*UwJW35_%3%7z4TFVa*%XyzY`H{Wjp~ zzb#1!qmjJny0tC#419_eumBh-;<dJkNH_u$2>v&@#rDOf4M`9Qfa%^_ur!Pjz54|R z7x`P$o8i|g1cvBR`pulhs>RMH_iM0HNZUl|(N|X$^;Qo<Z8=&+6jls_s8xSqvIARH zR@**bQ}Hg=o_B?ddT+?Y@e!ef<+xOEvN7z>w+w+^#Q^T++nvbdS4}6%Q~d|$lN7Mn zysJYw>zgW-X`G@3?-->434%sjQIc5P;eV=kz-6Ko0321=woKa0RD-a+#?-O88Ft+N zT-oZ)PMj#dx}@<)XFt#J;_3{=PE$ofbxx&*^0P_H@svs?Y<!;*P3L^M^woYBEuHxb z0fQqlCt&pkC>(SVrGF>zB-4l*wDh>&@-WHXQW0w$;o``Bb)BvoOmq5H$!e{KUb<$q ztP34;ILU_Mpq*D(!DIjOz|&}lThX`f$fq4<6|PPGD9^3Czc|BQZI8yKjMkPiNn1zn zqvB-@2jb8FUdiy)P-$j!wIDHw;%3Fen$>deKXMil|GYnf?L1w%J$3gy-Q^sP(|b_K zM%szSBC6aAGP%1}l1=qsYgTezGPS(TY^osI;7=9$h?5`xN?;DGOeZ6?DpubFjra;L zd9=H?t;pS%z*I_m#O$fCyuXgB&^@zz2;b^<9XF*Q1_vA&Al2I&l38|Owm~ZD_)D-S zcw>KDr!Dxk{ZK_7+le@<9W#l}6c$LQb{(h#<2{0g^P!5zAv#DFGJTXN_A!9jkLFs} z!m79#@ZKP$#2A&A_7SKVi!(w}NH^qPGZ=~}gd$>ShtMk#O{|bbJ4VSJg#b0Pc<-37 zVEKa920PIeNWnku2MtQZ1jU<%07UKCRE)EnpLs|!T#Gq#-`;@4GVJ8%on^_hsWo%U z5dz4qZ~(G3-9)td^)ww>aUdpRf>#FzCR~_a^5Qrp$W6Z4@|SWXiJ5}O6y4``iSgvj zbJF9{lb;=%dH4X)6HG7d0V|wb+df1JR1zDVxpE%PA7{V{Gp6W?&2kUi_1Es#Ezgfv z_WWm3e!i)%5CRz1fIgXXt5imvGe_{RK<pE{Z)f>B3Rh$Z<RUWJ0<B;Wx;q$~ZpNq{ zv@gqi{#1Gd{mP>Gbnn7iV*pU7+6i))IV9Ua?DZ)A8~o=|4Jb+a+y>pdV9LO3#G-81 zo@MhWsjn_FChMpWc4jQ7Q?Yg=u;A!i(FB!%OUb#H!ATBMaq%bZeRboh!~r2J%cB3G zgz%J4Bjj;L+8<5o<q;qu?ccF#&sQjAQrLcD7ts0vW`qXQB#d%J4x{3C3N&mOT7I>k zzv-uwr?n0UBZSDmHXXy+d<WDpZKho8RIeEHx{JPQ=H1Fp(zb28qc70R`M9Ac2!lp- z&$N`g%upG!Er}PMwz$^0X=|umbmxw}#kzXv4U7*8Ef=ceR~h&Ib(~JGv65l}N4r)O zGcVbv7(uvl!3s>a`!EcCTR6{P!#+vDAs1Kn2`q-%k4pXQ5Xb!2z=Lq?tQ1J;L&(Xa zfW88m0_J~-BM8VA_{d|d@$#&rfAitXfwtTR?`~}xo9xOWMse{rfCO{Gm;)0Nnu$>u zSiL`k4+r=cI%~O8A!7DN_Q}oVH6s93UwVy@;_hnm<8b?k5cI&qX)_O6=-R%QhH6;P z`a3>mY#pKOy|itY{KwOjmqBU5<J$tLm!{ThUlRo(R!)@&wQnSh-m+%tas|#7q{rp? zvCF=ef3CSHXfGY*@t&alHjt1~q!Ls0UyE9I6koi|x-}u@J~x0Y&$Bqafd^kN95;n_ z(d12ueX}*fzoW(LimBa^YwmT}=f*xg+xO)7bbbszgH07aTL~BklCW&yoBWmeSQM>` zY4lNs7B=)Z>EXHycY3JjVZ}aMkQmGM0k|h`B!06=p@;K2F=(I*U6mphg++;uBBYD6 zw2&dOEtUtcMSL?-XKisOz@^5L6z&~cOz!Do(ivkQkZDq36R?RF)AA}J<KH@epf~8% zpn{k%%LYl1`LdVz7g$pyBV?&$(|X_WKcbi&OzdUOYCQoDBOTq_ut{~+aqb6OQ-7P~ z8l=@fB4`{R%Zob(@l2+}A&B;?kVLcjQ(k4tv^tP0RO{1mnxUnEm(=2Td!eo7EU=`6 z^)Esg3mKnfB^`?r`t7j4_j)lpUVh{`2AEf{iFgJ5`)<p^Ys~n}9P705d^)A6D_5Nx zSDfO^T@ZmlQURDR`3R9~`UAjS5GIP7*Q@t_0-m&nuZ<0k5W7Se!|bdr^I!Yt8OA5O z8ZPMCHN!a-h*4DAQ~UWaLLj+Mu`~0!8UYE38f5ssI8O+fTZcxzX8@{*rDgw$5sNSY zPrPyJ#KP_+$An-qV#CGx7<uv(;#^bLw>$kf&^63`KW^3ap^D$wFS>jzV#cLu280&n zHj$@+c4Dw^Azpxb9mchL6@m2TwR*^*D<Z$_tF7-76RE@t<2M7%?}Ncipy23UH;)A- zq5cj!WDqsujG}$FLqqzmI6W*)*VD4hD*WwtTfjECPH!*N;ZO6m`~eTCj@DI+?y7)G zGPF8(QjG*T@>^OLnT-Y~x}p7Z?9Fznu$LNH+udS|JS<oK`|{PT=jBu=+&fP-+J$RO zU36BWllw_)@S0Ao)hg@>ko-zM-k2U%hs(eX`%z6CL}rcp7aWYLpf)-7DWOZpQTFYD z%zd&xY4`1XfuHKJbA37}uaWPy#cjm_b}_KOoQPxPCX{lGKI`QaSTcs73Dp&26-l+6 z?{;dDLW9@EQnGIHPj3MN3}<s4-kr#zOOnxVwqMOBo_B*{?C&zR@yx}sMH4kZ)u;Lm zG+3$6>RGgIup}+qIj_dEv)?j^*TGywbGxu+=Mv(QvIE1NE3|GK)wD&M88!ZfWabz@ z^hu%5#mkUUJ9!`dnuQ|G^!C+i)5A>&rd@TdE_x$?ay?}F^UG<SWZDpQQ&oXD*TZ*8 zXk})z*Y;5D9gj|KN#-)QNK;G74&Sp6(0K<B>aJ7adD&*`4#U|O`qN6h1C2U=m=u#j z^7zan=b4Q-u7&Kg$177sWP}i6>0n$j>{(t~_^ylA<$Jt+Ldzz_U%~ND&s#LCaE<Kj ze}OaXVQqc++vIjtJyrG)%;-SsNr0W3D*>f~cO~l0JGE!Iu~Tyq@+x6?#VXD@*x{n# zhGVOB+x=Q8aZQO?1N`;*o1M|8w%BcCIHh~s>>jd<RC=OwNt~b*G>UcPV8_^IYfF_W zqTAY`bfvwQP3+k?@34~4D!;|-gLyU_$qiwebs37CrmmUXQ;kzdj4s95waW|qoE``3 z@2$L^b4X4l=C;Q~iwo~Zewn8g&K)P0_%YIBK9^io_M+yX&Y7%|d*t|(!hz_Hf#dp? z7BA`B&XUCw$AtYxI&)suH%G4bEj`l7MX;|yIf!E8T#Z`nx%xL$>M2o<B$DTaxa{}$ znl)BB;0)m2a$rj<#8f3+`-71Yrnpw*sc|d|r@zzMVnK%uhJs<n5Oz}6ojw!L10dZ+ zA#1*8h$HZRAz?>y=RH{(dovz5kchW4-jd5W0^0dClgiy#KT0lF&BeMr^8HT#Ho)}i zXB_C3rpkBRJ9*Ga9F^Rkk;&(B{RR>CTY&&NscLB>uvmd~Oe92=6nJYCOpr70hYNy0 zJ6~EAhfhm4Tdt}3SXS^%%H5i2sAYEt!KvqsirX>YLo>Tcj7u<DfBq|ZKNH>KQ=glt z=hqL5<Nj=FYGA~64c`%ZJd^2KBtDz|r`@u1#8-y)vuSUgG_z|pb4LHlc6krt=ns<5 z&hh||Y)aB9sLKG63&druCBa2Y;>Y{m3V8><^}*}gC#0Ds{HJre9OUi1Ad&yRQ|{D% z4tm3)^<#2d;%q&bPVE$i!Q2$VZ6lTTRkRCMit4N@g5qgZJ06*RM$es}s+rb27dw?9 zj6lqo>LwTfL>1uR+FMB&fs>J;y&&|uK9pubq<TdjvjDLGKn!>`bl!7WahRTNk)uzu z&U}We_;#J&B1-wx{g0D+axR0y!<XEac>io=PuJ!3>H$RcpQ@nLRN7fao5{%}ou!C` zc4Fb#Zz$tu`d|EORd%UIU$TUKzKoPLHBQ;)%O^JjYLX|8SieFnrY^sCVoGM7VOx2Y z_@p_VweZE=U_T2oAULwD-eo1wE`~nBniPi+idMGm$f=tKmL?Sd+g0S)wF5c(E~V-P zz&U4&7p7M(5BfP3@{Gz+&`Ww2=Zv!u!2CI*GAbt$fkv)B4COw5mPic<kB?1V)xawR zY@m4+2dmLd=S=P~H7kH#v2S~E^v}A#x^agmnxxHlpc8m>{e>(sBf2FKc@Bwxs$S60 zt1k?)q6h6cS@>Dn;B?E)X6sDx_}~*-8Zymw*0K5cdnLmvkLRnTPVkct7qhJwdX{Yu zB+}3>ye{aZdKB$Q6*Hrqjf`m?t#8lVLo;l|R?lq@o!c^!J{K2m(r{US?8s@=ER|%d z@r{nogO*PPSRyMiZEz;9u3UvG6tDs4G1n&57Dw11B@9aK;E{ETCis*NrY!&^noY=Y z!F~s2{*<h9R!H+!a<s)Zv=N$(GdE6nCNLD=07lOimm}u2n)J4h>EQ&6AI{Vv;lETv z$~^^G7+xrW1n|eu@d4P?Q7>c`eqs~lJ%!o0iC(vq)i3JDGqUu8xpay~X+hX9$4-dq zroF;f=_gMG*?Sqqp<$_aVD|83eNghG<(0(KvJT^oXK5n?oicC_4u@>lC5Ci;UHOsY zqZHlfF0MLMdkXP7MWZlfJ;s+kb;kvBL4a6Me&379t~v;fj5MRjOW6vux0AC={I(8B zqu(v&u`!ux<dSH58`gl9HKY83RM#qqJ=QGs0aBY+It`T-gB&}sn(e@X86gGSp359# z^QD~|>rMlW)tiE;jh&fY7-sN&M5^*?=!g9CsmZwa-wauK+}J0R<34a(C!#0%R1sUV zv4!keiux-jgDFGwsC|8gApDyyOmfaCRW<4A92mL7IHhnoz*-i-mPoFmab2wdXxPm# z4|n`PM$drCk+?oy^^hL-4>)lbyH2I3(CzASxO;Ue;YEpUQKJo6<enz~;6u~l=0n5w z#fOHp*F^l*@Lo&i`gZd1O2C4L0cP4}v{I7)9)@2zmF9(*0+m9F;*s#m#CY2Kaa299 zcOS)a@fFc*#UXd)lE2fF(4<k(vvH9EFPT!{(-{=5LaXZX(gfrjXRog`^uoe4ct}9g zZN{@N#|`o00fXc_J2#Pr{<`%?^8CyuNSveeK9Pu{ppzBrM-p3n>c(99=}%)iUER52 z$)R7=P`9C}Kt4mo0B7m+d;th+KJhWG$fw8{rTHm<Tg)oK9Xj3ClvA3L7rrUp$^IF7 znA3|F+v36Vb*<PXqC-RZQ%$HLb)mIx-p3KwN`!IWxL$!SLa-|aapL17)!gojV=3Jk zol6Ws9yw(dL0V3k1A;&v_qEM6%lUs*b;GE=AwGcgt*uq%q3q`_Xv_x+O@LAJKo{#> zboLrzDlcJ>1D^DsT`ZEo2RPfRHZRXC`|#Qi?Xf5P3iji-6j^hnFtoE(%NN=3ulW&U zhBMRcxE$jn=eNMIl=HmRTdxPtGfG7?SkOp{>s#WoON$WEn*5-BV%Pj{)iHY#r<|wq zs9T*__CcL3rWbj_z@=0^j0=T(U+&*vY1!ZEk_VxDbr6XovQK1mo&k~JygiJf!p8C6 z`WwoOpSwbCUn4540&MF@{@!ub4`kd-2?8~8dyZfp_eUDT2+0Jxl??rt58u5R)O{W{ zo#y!1Z^#Rqm-!SVAy+bsa`IYNFNP3@wVDVgE6a$9dL}V7JY=Bg7;zdN>DNAvIEI5x zb!cuF5@KPleFA&Y{VfPpFI{Qd-2BG6Ai1ilyY)``*+F^J8!~`wapx0OslJ(3aV=0$ z8B|&I04qu!u>5WqLtElk%eGT$)nmrYqTVQ#ZttncG^;jzy+vlZUX;g>E@<k&hZkLa zdV1D8u9?O=?tJTt>$w;~Jt<7cDkR|g&g3Adw+F}HLot!OJLk3)JT5U!xVq*j;6#h9 zcRvHb4x`~?mV(5`W3k+{f84F41Sxp%$u%HueJs;b5KRP*sDaD{!Kho}ueYvJX%St+ zz*Xp#R{<sAz}OOiWgi?=@bF;q9)&IQebbb|DP^yrH&@dB33e_&*YYo>VxP7#@9J-7 z3XhfpPPn8<bjYg7Tu18WNbIWMhpidd7=M?VSq|16ip95u(?}v7a;rHgdR4gUD<~3^ z>^?D^?rRtX6X()6R{>~`v0)sW32a(z1A8->$q<JdE2ub*7KD+-jZ1?1mB<h7$ECKH zH-*x4D5m0&*UyAy438ZGl)yWI2`6Bt0c*<e?Q8u}4)Z|fA3V0xX<tLt(#2I6c;C@> zr;n)Hm6wegBonoXnMj3XBlDtOkQ^m03S!I^BYM03TNYR;#m=X>4p?8KjbFO5(3=!- zM4{CHfP7o|<Z8}TDLKinfq}EdRpf|$4f9o(GB?oc!!c#Q)$mV{WQ{$QRsS_@Vg*75 zg_|R?GRkv5A;)0Pjf@ps0~morT12O{JE7LQ*R!)b<2Bn*hPQ{w_2J|jT%b%%UA+!} z=TELkbA5XY>CO=7x1W|>SKn8!J^2ie^jbj`46UU}>t$;GE&FgKAI6L0>u%hRa`jVk z)0QgnGDR9D-i2TA2skFT?}b@8xkYofpzZZ`eBH$o;`a3t=it&2pORGu?yR#684G+{ zV1XUu|12kir{LP*0DwJ(_c7y|3(T$(Y76STzILYlt)-@CN0;HPjpkf}Ab(Mh)Q`q3 zLj8tr54ytSPr&e6{5JO&d<<)s0|pB7CRnT0zd9b-li2!OO?-Zi;PDz`;5`JmZ!MwQ z|4~yDjO&xW+F@<qkIBnkK%edWI3OfwLS>#cVNaz=yNIBmaFU`)jez`&#j9XA^V;HI zkR~^dM*5Cgca%8oda61z<T1~LQIJcPBpHg7C3*%L@QF4vira^fyFE&iP9O-FaTfjx zzJ18&09b4M!s)YK#U03${%>3p8`J-VYvSPGWcz<zPq<`fK2A`nm1kj;yhG2BjK5U> zMOD!+L(D$!X!pSGDrU*Xk;RIQ+!BAK8*(zK(kXKxb4KTu&*Df~uH>_^2rL<PB56zb zyXNXFR{?EC;dseGZu>e4+sM=hT9Ssy6h5lJt>j&Pgb3GHCelQB;93X3qC`!h^_Myu zfv^C9%rRj^?9D7bzDf1FMr5G%vMWW*uze3NAuP-xhZ|IDYcs#xAlQ)z>4`1JyBbK| z^N=l9#VMTDD-0JKjpvF;b1fC1o5idI7KFSSE{lN-s?1hRpC}C<{+Mj^W~Z6!u)`i# z#BW}w$&_X;$ugUg-Ayh=Ml1(lX8gMSbX_>Z56bkI1ukZPK^kgIo3c$9h>JHZ!}K%< zz(SGx2<X`|>ET>v3k+n4Z*bOCF9JNCnu2S&{j$;ABzB$D<$)LV8-wgj=1hADEP<Oi zk>yZ|g-j9+Pq}a5wl8iSz%M@b6y20P6i=K(a~w^B)osh^;_;qT+D+&(BHiuu*@2V< zyBS|@|E}=Z&84upq_Jps?Al2TtuI?&=6X}EQmmHipMBdz7yvTZT`;5>;6P664Fh}O zkJO&Z)u>-Y4Wse(P4x>r^OdCM6Tq5PpS<5FP~nQDsT9OKon=?x-DnJ44Gr0q<Cub- z);V%yrL}`ytP<tr?#+iROflE#NuM8a4LNTOS#^VeEG8W{l-9`-hcnE(B%-{+=#?WP z5i?&#_LSGQ#%hagvX@sdIsgHO)(>79S4D_XAL^ZWbM-y2lNqUOlC$Hd?BKGmN*6R) z4}t|!ofnE;Ab~Caq++Y{IIXZ^5|zA&D8pEyWrt$R-!Y~4%u(-t+bj5R8joH)E<W9N z=c6BgkGO_Qji=cjDWa9^V<+L*B+T!1DHFaB7lE$8Gq7cj9=#W-#joYZZR~trJ6trF zkmo$J2s<{{AbqK)P(I3a%}VM$Gwf@Gua}Ml9qTgT4Bipg2nlK{#eKnPCi5{Ksy`Nt zh^s1d6#1u#foE4IN3j2N01P0;(H3<bjY<MkgfX0;-xyuJETEL~TsBl*xW)&b&r{nh zV2aWQkcOSNUv44t&OD>rb-nYpqVaaMMuxDk$vE~X$HDy6b}b|%&c`0B3jMG{x#L&A znEMAqX}q;5JT(fJtz>3t$}07aKScq&qb%<b=Obd&g~I#+P_&s90y#cI?SIyv@s7{- z#-8__Xc0^8ukU~$wa|En95Q-Fh3J=ZV3z)g_o3Z**JYJ(oOhfve2>7^tLEIQfeIs@ zWW-yB4w2DqxLj0S{A2-z{eW2SqSQ>K&P5~B%X3)td=Wcmw-5;5nIAkh!KI0gxCX18 z1>8x84=V#q-QoR`=)U$@TvxH(onBH+4@o9Yg}ml!(}_4yPfollWuGaEaJDRn1;I;H zw<YtBdGan(My}vq7vu&9ffD&!l_x<TK<AkKsYOYv`Y-EXzrN45-=Y!(>4FoG)pC-+ zoOXz~o3qYBPP?g|oVikE-{Ymd;>#tsIrD#;6TQjKwOjb+4?%g@DC^K0?dNsG1s>z9 zOXI`d!vL9gk2#dx_*m9=kdcFrm5-IPID6V`WVtNac1EruHIX)+ym*#bqZm}ei*?rE z7Y!-UqCypg-@DBUmu-4u|6n;{5AN7xmF-oV-}5c+4{yQ958Kq=pqfPW`E>c0D*w)* z@IvEK1{H3p=hB%XT3h4==AJp9HcJExY~%^F<E9|>z$=*Fz@%7;55YBX4upkpzA@xA z7HiLPZj`)os2s6#sU9Az97S6Lu5xoW;VMg+epRsSNV)x25@)&M&Yh0-e)P`$=2}$y zw?#nbFNJKo?UB_a?bXyd&p^sm9B8Y94e^tyC~{F}Sd6upe~(1keOyg;>zi&}GvnCe zthIJX*<9r%V(CwH$4u}a`?dS&P9Lc2T17A2VEkle&<uF2GcK#nubR6yS2b~;SW8g6 z)Z|C<AzcX5Ve7@;Z8SD}AUNCIgWZEsp407AvaztMg|L@hc?=>AxvrwGwzDhLt|2EW zaA55=9{w4@V*c?`RTzo_ij&8AHv0=)E#SyqBtr(L#{v<VJqp5k8>{(9r@;(vU1kdf zSQlvlKr-R`_<@|IhV-2|at+08&$<zwrA4GqK-u~@!9~=)M8gJQ;DBFW#()7ULF^XS z)j2MM31S3xj0M3WLE>5*gA&a5%RE`Z)aYVfn9$yeR|d+!5~-F`Cg2y@d>`CahMK$L z4PA0q%0BuoJTV8pA#<|W$~-4#>K><;!`n!D@hS|pY{DMBXIuw}?koHH(x%h?GZ?tZ z4}8i!NpKKHK-_G$0(7VcY>EL?fzt)7@0LkSn6JqxNQ-q&<gK<*cR=|Z_pw*@SuJlZ zuL!o#+iyc!JX$A_9&zI&<YUd1yTm~Sc^QKws2!!Y{a|tmU?{i&Ijbe)3SOPji<L2_ zqbvHux`R>mhMGUDG1fienMg^;16PF-FxhK+<0PcX`15s`4Zkz;^u#dlKm3Bgcgyzy zC@>+aG@pd(Cb<}cub^_AGE#1;wX|s+-%PTzT%6K(DZesePVS4!gndZH;l7f#%H3}b z6=bg{%Q;*Vl?&zDGH)u5Gkt84DA~ch|LuIj=#(5}t3Olo)E`FlTl}M>Ik?6wLA$pb zq&kFy9iNWHmRHUeocUl_zOP9`T$<FC)td2)r>Ou!E;>gNWt}`_;Tjcpd2Jwm&hxBL z3{codBFXRab#kkZ(?<1{Z;jHu(BzR#rn6et>X<ThtPB0KFHS*@fyKlxFcGID_c!3} z!h&K#_GssQ6K_vL395cT#1dGN5o;)Y?T}7SUHyk~uR%{fa60{jD+6}5AK@9NyN8y0 zE3O(>YA$Q@R8A7vtZPdk)VD@5?UJm033aTfm)ETT^SY()r>rp*>S4y=$@y^`R}&3x zL9+HCm!Erot*m``VpoFu$68{G(FzpsQ0u|Ob57z9EZLHwS*j@tSjno}&*&huF47o` zUGbg^)67lGU`;fpVr~2pFT>|`;8E?IfJb<dXL7p2pxLWNarI;|MjC!a?@X9<NqiiM zEZ-Px>uHKyTigs9v!j-p@bS#x*sNGmm;b7fSc1dfb|jM3WS9FnI+h&YSMBw198m~l ztQ~pgC7wXs2b^5&dF9{f*B5txtPUFd3o}sN@wYkG@O)JOf7)~XvC2eut=MRa+vnGW zTBz91g;$QxxK>Uo5QU*Rqumq_!6DvHP^xsXh~F8Z@DeFuqRoMIC&bJ&W>B21Y7BAM zGo^`h3<PHwdn>1z>{I7re3P_Cgj15HMJ!O*KAs_X($Wo&PC-hUG+Am7DXor;1QM~e zzNvSCQtvJ0q}l|r@^~DZE)$dK+vT>3OLI|Z2I5xm>t8+zIx4!hl1YRWd9XsCQ>#JS zW1CCF?l4>1x~Zc@9oE-tl@Nn5;Xo0H&mID>@{&j9?=XX9KIqThW3lVf-BHs<TTZwI zffcJ#HrS50{k_xzek#=>z|kFBx?3M(C7nIN4?^lnw!IcSM>B>SkXT0dlLGxzU#`E< z#U+CF(tQWP8W?7J-?d7ELkhC3?nV~K@19cfw#Nd=%ga%4;N@!F|9<DfR9DY-@40h; zjw-<jf=0L(pF8^C7Oh5bS%s}v>Q)DR08Vx~00Dz#v2fepMy3wV?gDj3VwcXilpLi< z8$Slrd5bwPg&aDR!RfUWh@W`b8RB4!ZEWb~UP<$HdDfBZu@XSJ9&!h{w2iN!3ldEJ zD_k}C#dEv!pGiqFgPfHunbLELU_I2B#$G-#(5S^3_p<oBVL<27@3r}bja6vVDQ81x z_G394ePF}+p1cj7ePX`l%T`}Ydv%B~vhgk(_J~gGLb@D>r+Pk9c|@9Jd;CTK*QH~b zcYCdMQ(CApgSkvwY!ktEsFDM7t7Q#akr#{8oWx&QY;N{hiMl#cbCtmwfBKXR`eUsk z+ok{PgbLlYbC+2_W~t<KfKIj$?yDacy9;LI!}fKM5w%f*R}vlvvAV%2rf$g?b0L}- z0PiJ~xOhrxd(zy&gt;!j$jI@Mjh6mglL|OePVHA^{BHx5kAs)+_y>0;tX*)KF%9ci zK`sI1wGed^&XPeie5v=DIpp6YuETFh(oxr9sEUb{3*KhduQWf#vzXxe^FiVFzFZp3 zl0FJhu6C5nlxWJ>+^juq|G`tEQ%eGUDGBPdOtV59UwOa=LD?#+i$p43Pu2~dtur!( zOy9R}5n;)h_f_!OVDd!h{8QdPv7Fm1f|uB}R?5Qn1t2m#Ny6l><$Ut-?&5)cMt=KR zPX9Rz8$}5?cq80N0O;?HCdLcPFtZ>APA%~?5zVWR!mY2g0f~tMVz3R@_)-zJK2T@# zthSnX^Y@cM_MZUs?g?ucY)C8Y)*Pzsi>n@;jy-*_molXDxMw{w$P0;xqvwdGxekx_ zW-Y`>xx2j0c%UH@I?z7V@{(9VEB0%aqlUZ357fps%fC*l9#r5mb>~XLlkURCr@q&~ zFizs~!lSmYG6Sba&2SlhmQz}ikwdWo$#E>WB_0}7li=Oc-^rxxJwgege-K^cw;+0^ z5Q9D=DU?4N%W`zw1N8~TGym?F#N-!xU4N|PiV3g+VxrlJdEjX(;}vSx%u|(+IxoqQ zh)i8=8G%HFa>GvEh@qlDr5cMH6FZdO-_;{zGAa3H_q?`VbMba-uhjYao<H*&?_=l6 zu5#xN@OC;j4dxNtN=OR276qhHolfVW$}xSNIokd}#1dmwJ!2xP<iupm<aNR(S%o99 zSD?n!AjVMlU0zHY`*3QPFssqE&?Y+D5B=sAh^n#bAuj+;i*kpwvl_EmSarTi{IgNZ z<CMAII9;ifbzTto^HE|I<r+=OYU<YRVmy2m&}l}}h3a+eo=N_5)1i+pj}XvjW@Fd4 zxt;OB09DY86R256-c!4xOyDlhMR5OUi@nlqW&E`x<{ou&M@gC{6$IT<V6(+NsdBi$ zITKrcGJe(ET|L;*sgQtz(h1W0$qc}u?xUFB?K2Z;!sPbw>@fn4wn0ozWLJBk<K$kU zECIs!*+KewX%}0PFf-ZDPWWZ3F8LN%bP!V45$d)$#t*D%I)p}`cjL4(#>j41o%gJ) z*T@)BQ?J`}h^R^KsxZxSXahr`t_<NC%elANVdUfvf8dWXr!L$I8xs?IPvv&!gp~u3 z<0CUXpQvgcBNYbOoXk7sK8FuD<5X0<6cu6f4U@P`Xys16g}Y?KQM=rfCAJA<gdm~V zYhX)4`&+rs^wWOA8pLP`l@@Xd_3bgCqj_*{1jFkLvn`d}^x6J2s_!N{b#fmF3AFD` zhwHBdYlpMTEFuz^Rw-YZ|3_XRC@`=40=x$VWTKZgf>Wn=swVE%GKJVu8fetpLL`l& z1_!ASNGI8H#Yv!~LTQs{s*I~YIsDGZl?}&hP*^)bZ!fOaZubIJ9pb3gt+27OKon<j zstHUF`MnEH?9OU8tAi*W>xFcki^yiXuX&}nQu)tzhu$f~oH)RDI4#E`zAzFn^sh;h z_pW@W>z!Mu|9aGG)*qS2W*7+)LNoKX07pWyrz`oaKI3G7OOw6ufr{G_Oa2<(UXo47 ztyI=PB)O(?etRpdYJGqa#Q-7A{n%JUc{eV`G>>bDChnGzRGZmVRjNSF@+-OHO(TGx zQTt2Kan`l^y<%T^nlOp}$@;XCY5CUBcNoz1z8KQ23@Fx85E2~jMr#qN`|91mUn0;w z_ZsWfg8SRg{&zfFs%%*gw)l}0&8TGjl@9tfuHBqSN^rt(iNWeyr9BB`J<01wtp}(i z+ed^7-U9JOM^B1$dUyPrg6YAH-HV)TTdOj=^}17z`YYOCiKPQ+U)=Dh3^3t~XIg}M zjA4&+b)t*6!*m^x7f~&Bm)J6+VI6ts)OTHtm)F;x??OLOgGR#NRCji1w3y!L;<cyb zHT6KoWX99~GOu5M_<F%Nt^K|LYhQtE5P-pBQ)eG+wb1vTOTS66)q)Vk>-CoZ>#+!Q z8V)$yG!t09F#uK`ef3Y8F`#YQ&HJ7W!o?11Vw39j##_(bF_7^D%BKE8ab)Y?Z)<t2 z9INnicXP<|vJ~-hJmM*f2J)9lhreQNxLx^$#p6JZw>yRe_nOjic@`~9W89M@cU5pb zs-2*&J5!^Rr>OwGsnr^iv)?6s6dAPP6t)x#GfcLRoB1P;7n;-uOQ5ewl3{npbXqD0 z+|dz5dO@(4&Ji;#Fy6_P(W2q1oh5^hzjtWp9M`fdAl9Qx)B4t;=0H)N5XA%&W9I3? z;b=2SMP9)$$AvSFth9e1fQhPKyy<OTgHB4tfU}jUy3j6`EAS$+#i7@8&g}A;7l`?& z*u(6d{vXE9VM`P($bx0twr$(CZQHi(TefZ6wr$(4ezTtRp#R{^a-GZ_JFv}>p>Oj} z&{Z7i9d}j*3^iw;1-S!ccq!2TbzG*@ru>-1F4Y2Oqotk7jmY&;T8GttO8qvitdBL$ zj5;`=b&d^o5bu&O?|6lsh%w5+(|DKxCv}bbD)PKY1eF=sM1jJ4_ZneI{|je3?sBQd z2{tl3kD|sLbm3cjiI20>ty@|O=(M*(!vqolPV+3uNYSheqQTf<l3>+0+${~P6o(FP zh`SYptFT!@g^d~bNTUt7kTyVY!F&6aDgVYwn<cP{&FwZezyP}obM%|Dwa%ECVl!#< zRPdT1n`spN&`=(K(MoH@+bATP)5-sLD_D1H${KY`BV9Ll9PZG!$ao13h6dDp%7uE8 zf$4q*ius9@az6Ey3y9Nt1pm$5YB@tEK;mQmjMW{o;fDrZSU<#Vvhb!xg75_?Hs>mu z+Abnlf}Q(Xhi;E*)#N48#bYv0bY3;I##eX@?Ex(0i=xnJtUO&+un*Bw!ZqkB6wLFA zS{HpT`*s}dPca#U@%Y1~uZFl;?a{g|le-tgEj1|BZ4Nh7^%+jzRE92&ZmEWVlRQRv z8D3G-K!kI<1U6L2S(q|z`}gY(MTXmrBLqZ@?J!xdqw$k7V;@KUax^>zp7NtC!&`)J zXC1Wkob@Th9YjbyHBUHJyi4_@G=(!H0Fm$IpJ8}Dkyx1+9~r%O3sUuf3Nc&pYHof_ zJ+^1k%EK1?w_9%4Erm8arC3D_t93Y~Yy21rzB+F}#|9I!Un*NNRV|U3V4SD4s*vc= z)fB51n`B>HE!NFRz`Owj1XasWojFB>1|7;->&TpMLYnictN_GvC;+Sv1e_uA^_6*& z>EVRd;Q(1@w+a5r82boj)8~sfP%ts^-25$uNtK3z)Y4Hh+29KTy@~&{10l6dyhJSj z^P!&*sJ}pQ=c(`7lR=?4<zOWHv2t)n<CLF0g)2~eR&#OZ@k|QShHgk*QZjDYf?~G+ zAv=kcn&Z`fRO^Z6c`7D*(;B1gx<2U>+<^gF8v{e;N+Gra3n?6x`2Fa=Z0Re4EJi5s zyyrT9^paw8<m7kk<sU(&hT$qAd{QGWm*|m8h<G;*Gc}Q_F!x|6df;V~Ov}(`kDY>i z%8kb)J%`)p$SZSTaaaztRNl=w7qciFO7CRnG%mE9{a0Hrbc;7s7YL&UzdIP~Iv!%X z-vqZC#;{{XMv?g&a{90_zrJXk4DMi3qbEP)z5v73FY}d@K@3WfTwDxRtW_o<n)lHi zEj<;$aGJ>^#h!p}LL$2Ty;nN?6XVV(6AR%lI^9;q8%e#bS?ES+d&Spy8M|uT;`dCg zNw7?mmL%To{pGexgCg*vml{*0*3Fws)K94?Mr)&qhI1KN@IKfvdAO9Di-)WyGGdM1 zzD^4?l%KTQj*~~YU~PXP^Pd{72BET@l>)2i*YVXGVce!iH!QKfuGm(Wd|nub@m*_} zX=ENsNwv@sJ$=a_fCu+v=S-W^maXB?zbwwNF5g=Outcxo3lD3B2YKm!pe?Y;Z1qZs zoEIGqO02{^+8qcS1weQKvvtzMS5#E0MpW3vL{ib!^u#q5*h#$JRrF+5IEqP!KknuM z2F*X8l&pEGy;}6>RzH1?aj`Fe7NF`(h>S#FPwDE$pE~&ApE?Slc03}1NQl(3cFOh# z&!4O}Iftg<Mc(bbJjXN+4pbtSmqdTo!FJ9|;m5&JS+FtcpVr~;GP6?E?GF{U9>>Vc zQC6F37wz)Dy@hYCH$oN#(LZM)zqiQ7I0R)XyRyNAVGh0a_Gy3oKU%gIi+v+D0HpWw zDWHk-_w~|<iUZX|@B1_Ax1h+VKsS;M1Vf)rN0CIJE|p`@K{7NsA2J?Exg}Vu5##j% zB~H&s(tAKw8n(I=w%<NdBH_tVNu!~Quy--}`f`8Y8bcmJ802r$x(?Gt7o9L!M;e>Z z^|Fth$rmL=LdUOPYpQ?O8F7~e8v#f*R-rSq-~Iny{Pp|z2n*Rw5D6A1!^$qH{0D{B z++&PcVdmIQT^}zvhHQW%^NV_Dl(}~32l~>HkGwCKihZ`X8zjaz#=Jv*L9eYRD?|;_ zLFaNqi}`sJ?rMQZ2|U?I!umLh9%<Td|H%#3-MeXUuo<k$`HVp@=;?-P)$pPlOW>^( z_I3U@4OA=vFqT&}pH&ARCOcl)<~&RmOKSudZ@m+I5C8R}{W+&Ce^r@fOrk|VL%p%D zg7t+GEe-!+K~~zACb4rQOZWZV)tBY#XP*%XjbjPn;`lc}IDC1s!)u^-(dnX7G6}#& zoad;zh8KbD74Rb1C5s-X0_ID?M52_BXGWTTc7}VCpP)8H#h7t{Lbp8Bp#9pY7TRFB zFTDEdCdqIaZB$S*?T|G|OmbPL@hCVF<;kjGYNao!!mBOwebUy>t5+o<g0^q40YDEb ziL+Bqpc}nAW6y|9nD#y0*e(;x5Nq~|t0~))E%XA-@6tZIs@q0m2gGeRXP8Bc_L*6| z@)`DwJ@l|MYe8&Wq)ki^*pDz>45G{RAMj`HAuLT@>WzHh&*tJ+vBjU1tL>Ll%}l5U zCT-cKE+RHnI=?(Nfz>7`C@hj@P$Q>90p+k&m@seYG;BLer0S9mj{T;{OUPw%C@Qyl z-c<4Lii3vELb;Wb71RgnbzEPQ$_TJB)()>YTGL-}k3&4))BnpY`D^`q=mn0kG}IKh z4|NJeeBvoJoDmVKrNT+!Ez{1{@uff;$F4tN5)@kk*&q`XHt*>JkJ+qVXjfiog280? zjf=0nZqL?P$E0Y_mAu*$=LRC`cUuKX0_p={!CdZLd``_y{$#&3qH)!M3kfn1y_>ef z_Y-$8&_0{RGGRH?3`V2OC=Q?TZ~eEBVi-ElDF*Lx<bOmCRh_ra)Neobts6DSw!Ws% z*ZkiD)id7SJa9YusxcKv3{KmigW0p`meDYp5RN3o2s>H$7l-U+Q$S2p$7{MZ+dLq@ z&P&ESVXCOk@Y8A;ax2Ffi(!&JbUl%gfqAjq=H$7jJwV3YmQ7#D1rNS+q(hv#QH9<C zK^bNAZ!#QpvrCjo+DF7hHHGSQ){n{uTf1h$F{Ioxx|VD2MaXu#L(Bd1;S$+IV+%ju zIKS@FttUKOn<LqnK(JzYLt#RVvFL^bN(I+n<&kN}D}86n{)yX+5@}r?%?tovDxB3& zkRHyL0{c~g7yWLyC|e!k=Kc{nZDjsO1OTR}h9C7_@1$$8U?DVUP82KUlb*z_)amb& zHoy6~RO3-DSnx>5pqUTMPUZj;!a*%Ce^~0eJHQRLQi4k{E?uaQ8_jUg1+es7cciGL zpn3a{&!(uqlB!E=#L(TZdu%#X?M5{^g)k_{SS6=fuY+DA=1l$gpG8JPnMzqG3<eR? z&Zl*X&60qSJSIwPpkn^M>?qABH*hOzAzIa<vWNVlF_S(*Q$#KoS(CxRQd8`tnfPdq zoGJB7o2T81Tj5v;)N#rT8r}hxIy$;L>x~>6R+HQ4uE304hmrP%J>AxqlB81-3wm@> zF#zWlGjiS+y~E_XK9@O(T`{6a+%})kk~i+!ly`$b+G_t9=2?afHT0rmlm}Bji%esp z3EUZehh;HL2oJ9oGMtPaE(?AclpJ)Nq+yMm=56O!EZ6XnFd3|QE&ZWMlR)E!(8iF6 z7vMd&+%x@gQmp*_x9nfJ9sU@1E@zdn0S7JhJpvs{qypQ>93r{3&mcU918SD#FSn+p zx>;C<<m;hv2irBc^_u+rkLnjjwh<KyILSy$4TT14qi1$n%}H)hIRs@yE-*m=K;Fa= z4&YHfR$Q#XqWZ3#;l-&w7s?*GnwE*8B8yM2FGLH&baHxoU3$?C?xHYrC=KsbXz|MX z7-K#+iak96L!2Dfed(=O*$@yb<o^D(g^MHS^G>oqVXFD1ALMad9)dFUHpS3gDmDla zI@6RLiYJ`3^h{{DqP{k<xr67lkuOcv7g|BfP8P=2hh48`{T`Dmp{tZV<B{Av^*`5s z@e<lAZCzfU^aBl#IA2;2#pghW%3_1P^S0gT#wcW%E{Iyp!VGbP<N!|Mqq&w0qsOrn zhX2TOO&is*H>g`bPHvH!SMWD^$5ARLEg#)JF1x3-WX-x_t88B#_ni@i5HxMi+$vde z75-Z%W@E-<b&A~mO1v*%tMQKy@Iy|!m@@*&r2<xl9?=mQKA}zkvNK&**Q>)A;P^C? zX7R7#p4;ncsS2OJHFai{4T43k<1@y6=FB|(u1Yq#|K#`E@YQdh7s#o22l$e6ko9p# z6kVDRk$~T?!&RnUSF^(iVfkcWW!Zc3-XtVeczWRAGjE-JW*-&S2;pCg_k4L>cLu~l z2l(XFJUR0D7*CPE_t9(`61z4D!`e8-5b+A+8wUVo1%@PQ=QN`0<v3-{G7*Y@WinMa zqK(gL$;{aOrP*MV^ytOvC)HHXnDbqRXyw>6a2qvxETF=0(q$U-YV@uB;a0S~#na38 z>RknmwP|2G`R!mM5twE)!DC@F*P&p^x#uWXM#8jQvRfLSn!9Iq`u#9)qW*2?yjvcw zN9zx9+x0h5w-D1=dT*fL?E9*#&HCJ#-)zajp8xGL8ai)^m2e1g8KUxWp>_Hq<zvvw zUfR5nc~jt>wX%{J`OZ*wjIOM9mm1Owu5YyRz4&5$tdx4{JkG&2z#&cuTaV`-u%e<+ zZi;H7Rn@#(uV@_ni@u{GTQW}w_;!yGc_5Nu!#w|M6E$qp`^~q3F1QNH6Dv)WgGNCm zV_NX|o8rStI;W45sGJE8Tp@YcLp0x}26V&o3M+^Ed68S(G=#UUfbd@KiCVgPC0;pn z(V&sl2-W}(#NQzKcYF_QJ!qE~*(hKP^D~Ioo-B}*>=MF_Rqm<RNMGg<n@Upo@sMbZ zw8fC1O!}GWXO;=MSxRF3%j2Q0&7HH9PB%8#`s9g7>@ik`b<Ail?@lp{^l<-qV%`)q z(9+*-htWLgj*|oyoXHV~aJfJ(i{pL{jkv(kiNe`4AODn}A3+6(`W>-APUqx3Yqles z5sp?E!70rv#^Y-fg*p`x+opA@!W^4)`$NQTZ=bP#$a}4yH?+2GD-5%p&_$oCFj53z zKIbdNHkk7)2QvM6<}touprU%-n%hdr@UiY2{R^B|k@#>c%M;(=IvZK}F5nyK8oYct z*+XH4JA6rom@ax=%}$wuCpdf~+*buXhR{UV_cmD`Mne{Bl$pA8Y(UnpB>TGbhD&*s zKwy$4e%<6ZR|9<hc{%J4N3aP@cW;3NF-1_3?{z78b5|}s?bqy6T-Xbpm<m^oecf|~ zM-zdH^$07qtO)s%i*qpoALOK0I$O{*_EHmwO~mM{A=FCYJLH<G5o1&_GvTWUZGz@D zk0L`Bh2hoBqX;|dQ`eNTBr+HF%(|ASrg8pU^?&AInEzin7&Zou|INXGeiF9st)1Dn z7m~bmu9p8245U_q1M7dOpC5)^drBaq6Ll;>;F&GdVHo$Opbc{t0OqY&K|B>(Pz90t zT%8l;3?>{kGaUivcd9>1I!FTO$7;75{^=Puu?i*Pn^2WMV|0BI1g;FwVxg)#suv)D zI##iErX&5+@{Npb>ey4P{k74{j5Q0;V@(<RU`p+13x^mYplon8IO|hyEIjE)_565$ zjJwf9e57Lyi}Y^frmG+8bBL)klRI_`Z?^_)RX9I4rU41T-GmfV%l4JS19y`sQ79aM zR~z&;L_9SrVLo!O>Efs{p~%+<JTa0l&?1l32z*G6z}~oSj$d>U%|M@eizd4<JblW5 zJX`SoYrOVtINdDl(<>QmqT`7bCKCF?hAj+$S4bvU2@RXOPTR6HNYUooV<*u%gQb6n z*!bObwQZwErouh_n00*HgWmxfhSFEUeZpE<ES(4PceOGXeP=sz@BqVoM5f$9dxU>< zp@u~AEM#m0x6rA3cC&Dr;^|N?ddj%Bk$iE&7AQf7+2r%IK7I)zs0YLVsk0m7n~YN0 zFr>d%NYer75S6IX6|1G1MmtqYl$2wEgCv=#6S<PkU0nr`PKE48Ik1lh)Wq&~1^ne& z&D6=obaA4T?I)uJ&OlT;^pfIGZ?@<5tlV1Qu@1)ep$_6zjIIT>>mlur{W!_A>AwFH zL6n!k(9_0VxK_>#$%(j%uD%!VEHwAM7HPUBhK5cJzEmiEh&`*Hy9{zj@$CvhZ!WWd z4hwrk%t?kjD3?USmAx?ClThxDaa6CqpG1#ajVzPbNQ%_!%kjUI=rMoAtrPFmL%+dP zZjF~zvVBa!jsi~{@{fR-F&3-_JFdWBZ&(mUh!1+;j`_T=>qX9X&p(u)_^47%ERX5N z>P|rutP9-FuYAEq!lYGI6AXATv1%QGz}iIvA({%{6osq5yWmBTomQyu4jJ(+;${+u z;isX-Rg^#He`zLt=E>&UfpQ6)SNv_ZQ8Zj-(aC?)Sv(pmQ2i3lvC{W<@8447GX6YL z><p&^*HZQRsO#xZvz_~Oi^LGBJO9V5gB?6XJCM$vnUlGV_uit^MkXiX4q>t=EX2P~ zhIBJUjRj$>l_rm}CGXQMxnjg$^Z?j5z4ebZWr*tHt#!H4EhPf61)?$9naBu{6Z9)r zd@gxbr6wSr3F(KqcZ*d;Wt4#d#~#}go|*J&XwSlg2}HVoIVhu6JN<BOG=px8s^(zp zLf?Dor5Q`owtDQ?v^1A^5c}u^rQo$v<G*=fBN!Z+WmIIW>h0W%=`NhSiL>>3Kt)+i z$!vNjihp^xlr=3th6^5tl)x!lK8B>FXt7?ya*i&LLZuY=r`7aM@lbrU#y@aH*wFgu z6GhNh^<wqfUtYuGy+ARqj}A_Nx2*r=E|aBvx|%pMO?;{1Ar5fZFZq<+z2Y!PU__}I zZn=uyv*;q?-`4FcwgQ!+8D=#ZJEf6gp*vA7<)EU5&7E(`!rt%X3i)trsi4c;;8im> z^dEE&a|@2W!?d#N7s3Y8=TIBtIe>@I6pGD~K4q?OcNk5rOvqI7r%N7*7j{sFq<*37 zXFWuoO$_Z~u2^l65D7E0=8Gm18oYV8hlg>ruIi15rhLP56;uu(Dg`@cD52JaJpvd2 z_d4{;pn=A3MSaq08_HmK@Z$*(>Oc=6iPc(^!US}t#urrk(O$gN@+7|i4=AJ-7Q5L= z+b%fERCbPbcek^gXDerW)R<;5ch#`ywBUH^zx59Xd2PpX(tULWjb0~l#50A2H{B5A zFn7j(mZJ-YrJw=S?%0~p8ANeG*jt-q=J2ro^iQswLwiv-+P?t%NpHt8R~~j>9S+)~ zmL@Mt^kTOSp;hRCW+U@)*YRdVB6~%0>@`S99|(^a+eIQibhQ*e&_s*HlLQp8ltYv@ z&zaTAKupm|Q*1u(N3zc&I5fMBDfg;qaF?RI8dK(TgfxK)Tve%ro?Z+ID?~%BaN0g> zN}~h1^P&YeNjXoX{kty)l|7hhkOeIar!LScrf?W=EfA~{>9Tj{$O9@$EMxBc+W&IS zfKnJI_`a6P3Ln#_+Jh#rcAGLbYAsEUrv`2u$e43L7^!usqO}G_LZC7+g5`j8n=hu) z8`OH?4-~?RenSRPX`an=Cm8*=SF)TJO);MBg2pQM7~SsUIL*Bn0q^=^9{`|?Jan{W z8T$=Bzr$X?1n=6oiCgKK%wGq@aNXQpJMu|2Lh}LJEGSB7FO4q0l%d35!zsA@aZl-@ z^o{M53fzbGM&o)eL(%Z=IkCtn?(n5BLs=a|h5=<^?FU^tk5HFgX$#au4%Y5#Osi3R z-Afk;0e(#g)>>py?z}EFrzqvH5D4gp(#!y?d|&==s1fAh+RKnFMC9J!vlqy2B75kN zEE&pN6IIJ3(*SwA?$6okAyB7`jNF#JZJn<XE*_T`a7gI#^*r-dBB=?mg;JI;sB-kQ z3rOPga)0L5PsHPN$uw^`k&>8pj(Zk{m6halAKj5R$I>b}H--r1V<?Ln%!Yei-^2wD z;t&^V@gZSJpJLB52+8BO(38GxY_>4Jf`_!gjav^xlQ@1uFQ*Lb`npx}b@Cw~YTCTM zTDMxt93h9Llk7>a7}5W1GBl?zU1ZE)uEXXon(8OR=P8{O&<M#6|G}WT0))5<%Q?y4 z<w4=zNBsu-2=n5<b{soWyL;qWK(Nw*2RWWe_laVQ_mFlPksAx?s=0`t_^OwGNigal zPj2&YI;(Wx(LyV~vlO}xfest(yH;rJt2(^@+GNU-v^|cmY*5?_r4g}7gENfo?k#+A z;OBbn=D_-lDw>HpJ3NN!qK^1cJauV~iy14P(Hl#h-@?R4lzI*&fmXL^95swM*YN+d z<lQeC4mhwBVkN9K_(dGu!K?=YmvwDvA6r>5L!hig0=k-+5g{uYBuT!o(GrS2w}VQ3 z-4CBQU0dqrxqmbNcgr~kHzk+uIvRCiqjp2qAvu<jMZ?0=bP+ZC^tflund91kdj5L# za~(Payv~VKHJS<F9o&$yX7lfXAsGn73-#nvtcwnvdFj!#Xi7a}vq0d>t5cCc&p2mt zD1}EF^%UIYevE5p-z<<auSE(SGo1_9{@fFWZd&>?wR8O>p!_@9=0ab|_2X8@K<ZiG z@yKwRjT*%r%<Y`X(Gf`<q6P;X^k6lPdnxrR9(9$H+#1{$L%+}LoJWe=*jtr0zz7bg zhU!E<c$a%)I3zB!pTLWTzZ3vY@m+tDt^CWby=PFb3#3tTs?d^UEJ}3UZ7FqAkvMdU zBcDKs2zQ}-8%-{Q+}{j44iBiE%cwNKvbJS#qD+$}p^NvmYP!#w#F5%Gm(X_Fizl3R zBa%R8hSx?N$&fMyE%8a9<ip>Tu%wm(Fyq0&^DtAByMBzOC4m1O3mjse$k_gOeo;;| z2~d;`_EUHh&}cxH_XScO`K(HHCnE|J6O4WS?Qr8^7im4elpg@~q2>ktN_qS6I-xxB zUW4zG^1fS9n{w}T00JaAWl>>ut(dL}+0V%Lh*EXgMV}CxZy^-*vL~4VE>Xu1#S5-P zLz$<Y+F}w<Djc8eBOm#nBZ=KZbrxz#i7Lw05^wjvpSx0^4))5)@+P2ZK)+dz1^1*~ z<K&W@A#?Pj@LC}yhv-ZMgcz^j_VxI`Kxg~Gla}_wIYHx5nA`D6a3zw(g*i~G7QFd| zNmKkvSd<^I7TjJbnvbj0LnXJ5bpUqe5I3DW$VKR^8?Mr*m89-(O&$fwP_-M2H0rK7 zg^#gwLAKPoy{s@P)~VS{q5i3G$Aq{5IE2tUoO$XJM%+Rmk_oLhfI>aDpgD8bSNiwc zf}|QQ0h)4M0-U#3D`|25KOk@7%6CA|MNB><l^hiEsQDa;^{}{#1FOLt^Pu9YGVVCt z4a3R$Fq~BSX=(zCk6^J#W3_NH0!Gu4s7_PoXPon)Dnu$ceJwO`ceqXRR~6mPhye<n z6G|68efx9Q&!Q7`&~2_9tNnA|j@vl(_n`r;cnUCOA0{|v&tzQf>_v#gUnuVD&h*Vj zpl+^G%NY`T|3H$f;BD1oAV2(eb;r4AN2|f;7Z9)@f%H)>0q3+tw{1pycaY8h<jzy# zX*d8vlP_z8m!y#bo#;X7O9Z8Achr@ypyQJa#dB%KWA5=PKKEO(NzGYELGfIEGn7On zCQilbFRLoqgg*4_+5h_0pWD#7)9;MJcwTaFWghGFKa%-^DLy;>5a+DZhQFSZe47N# zyi}9WXKyR$V+y-<iIpeufV?bu-r-cSlT?QYqLlyxhd(w&v~5{2{ihOwZ6o~>30Cfa zg;#;|&mXYI6_#NcVC-RDFP{|w&h?zUa3-tbd15h~+3LV~Jz#RwA@?)oI%TAcwy<$6 zfS}=bY+u#qS=^OTIl|2JP{s_77baPNvfo+kcRBTAePD$dqM6?<pJI7e#KFGtF{=QJ z{LE?);%f4-3mO?I2MdR(IzE6Umjy4>Ns8gQG_%YA1gQ<L`3v*@q<lT@K#IwWyj~b^ zdD}m<obRf`dNUF>{fBfRWzE@*GKK&?Gu-V)sr%SY0LC<qRp_sCm)D<;Iph~1z%nJ1 zl}w7hh=89aCF{nGq^QWge}6JF%Vn?!tPDpNmNT!cEEnJR#wIRnSomX-&Tsn9Y`{YX zflk6CZ<3a6*qc}>mjei($NhTe11CrA1>a53S$|f&5eLzjbA`U+z#U3qZ8Pd>QW}o{ z**2}-Og%4RilZ669-m`PfsDKn)6HqH0L*Y*ln@x8^M9C{J{Nh{(1Ns$w?XnoxWP&0 zQf&yYaLk*Yil5(Z5Uthi)VeC}H-VpIG<bIckRFe3+L_LS{+t_64Jw))F^U%qk4r#C zZ07c}61{y@Od7%lN@$nnrvHR%UxIH`h?<W{^g&%~X<u+djqNk$lN%e<2`GAO3GI-4 zinu&ObzQl6P{7&96`g|W6X~@hAw?OXy<Ez6(yjq68(%*~w^qOzY3Zmlsw`o%_On<n zs8ke{rn+z#{&hI4ucZ3;Pn_o`bE<W5uk#`gp*~TTRZ%KV6Zu;-y8Z+M3AmFIEPok< zVdQj)Kq_?uLOsg#PibLCZD#^wx(zNn@5(<20S_WTNq&Tv74wmZ7~~sxr6>uU-;uM9 z7y-~6=lW&lkGizd1v@yA2iUUOE_bn-9w(j7=iYc#Evn$SIPWmwjauu3!h?7(!TU{b z@=&#VK$`9>WVs}jPQ^`6`RziXV@p%B5nIFZDB72$ji6~FF<xV=!J^}ALfBv}ruLGD zw|fxA>oCjYel4Y?qjm%rO<sxj8+W?c+cAW9S6Y@1l{Y)8m2Z_yB_lM0H0;B?M2RSL z&;Wp%y<w~KL$o8#SO6oi_XR|w6|~FFu-li2gQuK*2QM@;0m`3Jn6BwHQc#a62*o>3 zSt5cDUqg&*XK?G1>q*E}HnlCh<Di5Ivu}Neru(9@%NJ)mv>xMchXgF`Ws@n6i(A6{ z>vaWgGBL1*Nwa&$W9YbqyOFCl_9_~VPf!9YwJ&%b2!&|zL{$p4H&%eCm+_oL8|Y<D zev{gZ*_GcxdJUrbDU(SN2(o`D_!*94tO_piKtA2@dE2q$q9|Mur%H;-mD?0{C@Vcg zVD1U1-XWlGA-~F+F?HM;sxvc8<&l`l>P9c|7J(Juyu>Rbn;=(_=1Va0EQLiGLSl69 zZxAJYm7JJ06^nVXN`BvyDw>s%6f%*M9gaf0_|1W}+O;9m%e(3-OB|9JwJ8rL#RR}2 z$&-NhF9T#1>?nifAW=|1aHkcVneIZ=waI^#6m2`7Wnx)f?X1|7q`R3}KUsijLE9ej z%WDA|$tsGw(Pa-Ac|9V{@s}I{@LwRk7r`1ir=TPARu&(&hk43DT<0HhuNCj5O;9Nq zDL64`{)|y}cC)h1(TKr8qa$-TGc`jU8A3ZSF1wgHNB{tkjv(9xFJk_%ljpL|Y0D3* z=FBz-)oVn%;n$so?n9e<Qg;1#?>{rA1TgerRjOJT{DwS*uglgx*ptq-TxXMzTDkSQ z#vQ<+ZKUvjw*KKRdvM_+-cYSsQ7-3*hcPr(a66ItqCk9PY;c+2P*9;ovHef1>v(f5 zq`R|oQ#i3RJ)NVO4>6ndmc^<nmxOrQllf1-vQO0)U03}L$kiifmEembP)YR!eP#=? zIZYyy4Ge-oA;1DWtP^Rp3%ZmHa>{hIhQ>E0`V)yR#K(|5|H=hQawmr^Pt(-tO!EdN zkBv$bz6m2dyF??@{qT<?I5S!AoMCxppZK$Op6u5Ac<cJJUJLI5z&$_5vLnF)WTd&8 zezN7YFw{b~eK&=ImqW2RkB@GcP0~LR-eu`-f#7=x9RT6FsIfiNz-xJn<eaJdNosgZ zL+?F%2**7^4FQ=!i*HDDJsmR{+u-+mbm&=0>K7eqcC5FIn_BoNn2~$z@1F@6;1Q8Z zX#2f=`)uP|#v4xdI5z;<dZjSMZ7aHFHa_HY=?7Ok)4mt<XD;<a?rHRXuhr4<1GCGo zjM~RIH=6pNADhalnbcf7K~7$0z{p+|;>i0JZsP3fx_a5)3$33NU4&A=@$EbS(PER* zON$O{GG-m~a@L7J&Iv+aTdlM<$6%$jK+e3w06JKSDoY<dJ=`0-L41_DALeYR9`l6$ ztn_eYcPXS+m<EBO=d8-td7P>=$9f%%<%?+&$QojebP4Vz)I$=``b{f{sN%no=baSZ zcHt(5G9jW%P5gE>9y(`3^iaqp9l>j-T36^}(C%o2F;m?xc-VDAKWmzNs+xxq+WwCR zAG5=`PQZ2o9>$J!y3s~7{#KEKZzJPPiXISr4M?IQ+4RhO=+gN_R80%A5nu`we0ej! z-eX8DLmr}YqkkVoh%vjXb;(i$vf3U2h&X9kDa&8jK2~NOg@&nW4I^1`){{#XwFY@W z^qbxKpz_#uO)BdH{Ix{VLhXSslkd`ruVVmW1=vWN6OV)BqcG<BTDWZ#q=C$}Q~NkQ zoKvSLNCmgWgZ>}wXm$JZ$~mVR=&PgDE6M`wDA!nr<?H&87M_Ew*G*2EXz2JR&O2o> zfz;@<Z-L12nYWABMaZ7OJ1k>8`W3>9vH)v5BIWg+z!R3*kKKUDay~UkX??Yslrd)s zZa#L?HwOgrD7O+yn{G$x%yOxJW_)&Xa)q~HGwR(^RMP(D((NK8f535Nr6#O7)NZM= zn6B?6Xd*3mX{}+9n!aSdqZDRoJZebeIv&v1qj?ttXLpvN3}yprw~tZaN7APXhMABN z1^>9Kjnd1oCSn-AHMDPn^L9kX8>J>QmLTiA+JE^zE6-yGFB!;Z519^hj+;f_lSOHT zr9P<Qkd%b-ez9A+aM6FS4=j944Yv_lYar4yla&b7t*wY!;%h<qnYxD0cD{A@4fJsJ z&cajlgHgsK(s~$hgX3*R2!~?9`4z1Fli}b@=O9ZZi~|<~Ynwm=-P%}pM>1OPEBM9p zT6acedA6iM^*>(8tczCJX9L*?3^a`OtxsfuU9Cq6&_@h}q7Qv7esW}Ib28FLFm=3# zP5O1U2^`6ZY(yVF_tWM|W~(ipKd+LEh|3TdGSWR*d?x5|fAfxY=VSB>ELP&({O&^; zWkqAn`MrFWtPx6TJE?@WM_HqUGV%$IgiRCd$We~W!kaPe2<)KK2qR@rP9OA^``+QK zL#@vtsxR9NPH38*xQbO>n*~etAol^l2+iJdkyWs*D&ojJHvO6~1jN>iE2NvxAY&#@ zo2&KJ4|cyEslNRi54bh;Dy^~aHK4&|CxH3y^?`b_SKUXVF-yQ7U2wi?8z{d)d+Q7I zYkmygt@d-5cIzpn`UdweD{&rB<A)7mLafz0^r5$yxFEy0>m2r`bfmWo<VGssDy0C` z^8)};6d^D{pw+v4Xyq4YWg3MPMjapUTj4UhX?m680)H*HAf1Qp$-L{1(y5W<!x>fB zjNjK^3w~bq>&X}@&R?lxk}6Qpk}L^YC(hF`M%TcGF)^l$11lsu5)ex=MrB(AT=%BB z)tF@Fsg7T3d^@K|mFU*(RfOJl1c1cZqy<4dZ^(3RxNvF9j(fj^&X`X$&DdZWu*lGq z(d?^ey-=|jjaQcmURi|3hNHq^a5Cac)dOkFq=tK|P25FwjNlfU&h!|zzXT=VcZG*t z9yxJ0nR|N}UsRdYm<_mabS@om0yv&|IZ^h35;E1x;5ks+gaZ5!gAk#|lG3^lA?54B zP&#@#?eI9pZVgT^tJichs)^y`TlS8#IM&Lh6zqz{^^@Ecw5xPFZ^sX0K{{QW49?d; z&`jV2v2Y4LN^iHmt`7(RKg=Q1O)Url7J9oUN<I%iCI~WuYK&O0CstsTiyieK!t7iy zn?eyDt;;1WYvRq1&p@G~-Enw|IvU0U>{SPGCE-1J9$N?*mu{@A9*QH7cWQNao}tTo zOkIYTVvG-zv2f_ry1XT8|M^MV8FDvAK~&x<p5bc&DF)PPlx-L-%ZPGQ->#MW-P-0p z|B)Xx!_Ye?)OZN<s;NVW-ejsce>!~<v&!SD!_<M=gJCjV!AJQZ<481HV7^8^)GHla z>dWqm?fDB_>(#GPyysr8%SuMMFE?nsH8%N2EHzJo_)qQKQ*nh`s@><TkPS8+KVDsJ zf74=s*WV1PqYlKE8W@nrwAK~EMKEGHV760SIr7S4Q;#-T3r$oM#<`Wb_#@20otisx zxKdc@S=NEil9nI@9Hxu4JOZU%M}bco?T0Lqw=zz%cUx!Ljssa=kO_uzLJu5L;0~!r z;BjCg`l#s0ot;{~F-8PA=>y+k!A&CEx@jj8LgTG<=XLlT|9BDIbG5CFn!;UMMl0NF zU!f&vM}xy?g7l5-;a}=<79T0~BDYHye(<#i|D%IXn$Pscq@rtPOz=L}bEq0d^&WwR zf94BXm|zq+j~_=oAcVoSSj_mCx%nr;H}VtsK<2^*a!7(<Ogbu~3hF*d<B%368~wxt z00Kkt^?Q`e*ICB4_l;d;2vEc%-S`~rpf{ywh0h!ew1pDF4!FZKyV^@4?<PgsvH}VY zWm>;VxlTu0q%>r{!<nGRl+ZXIG$jq4$rFxqz<=@!z#Ch`ECZoow@Ct|c1zi5OomG< zM1KR`qZ`#a7tKI#T~>Ot<wo1jsQhrX7cx$lxw95L<R3nQwH`4PNYf!KRS-_Oy1HHR zfRm$!_N>JtXW`bMD68-POkKZ(4~+RDD*c<6k63}%&0<MOhWSC@Xq_ad>rw~3g-?7p zm|Hhl-Vrt|J5GefWre1ac(CUECto%>zimYkYVfSp2UW#gaSSS{%NC@IGodq_G6<n* zJ_`*pt*7wyu#O*qce)YbD>@<c-(jdUxevO_O|;gG$V<d>5{NzWdTfGp6n&cgqg2Fr zCG|}wN2@JMTJDef8%AKA6SkU;xVklI6Gll%_EY=#-eksbbqGR9(T2=Aq2u7r%*yX@ zIVkD{X@6tS?Ba~+*C(vuLCcyQ*23pqN7M0@j2AvbM^x4uMBJP8Xf-`0D-8b&9KE3U zOjT0@f|6y1o}v%#S^&&o-qU02qv&aKHuI;$6M)xmFl#tzXK}`lkxf0xCA(B6ASoiH zKHjrywo+nM)9f_Hi7?6t<9d?#C{k4^7rE{H{9UBI9b+#w%>1~S_CrXrryj(kpYhi+ z|8FB&82~Jh=qz~OEw_R2YRzGvc{dz_Hhv^d-vr*!P|qGg$=d;JVPFuxpWr@>_yo4< zMO!MyFeo9S<g&2$xJx%{wtd=;>BcQq6)whR69Z1Z5<SsW@PO3#ekK|QtOyL=OG8JJ zAt0N;5-}77hGM<ERoZK`f@7-#a^2m5W*hhR(VH^ioDcrRC{BO#te49OL-gM+Tahi( z?9rz3`ES^#6$NxIz{(SAjcGVzfdTX^us8%e`gk8%lO_vxBBML?K(lgC55Mm43{9GQ z&3_)d%>QbbAP@IT_Tt9Un^TU;yS;yRIq3+SHr=Mid7`LZv9pFlR&!|N2Tz<6z=${x zgWhpcboc#}r7st|8uTC0#D6R>;2Z4pS^clp-{>G<pjss&45a#=XyXbGA0n1LrWiG_ z#kcR|T_Wu8oIS>cTZUs%=Y`wQ8Z(^SpI{`UN~Q^?;qVWu!!wccHm43GviR3gje9sR z(dh2co-(E7Psi693I$4?_}DipA{Ez|t^}5jGxZv(zNWCr^w58i`Jp_mMekfp<PGKI zt!%6?Z(TdJlDF08UHtKv6hgZ^=DTiYP~1zQ8H|tPhWMCx`5g=E+^C&Hp}0AYi4%wu zs77yq1!!OU8U5K=GXcC^m=>wPMn(OYhWx@6II<gC^RZ&_U1M2^M6?YLP8WghMC966 z)H<F74$$@rm4=tf-~{c(ol`B=sg(*lz8QFP7VzlERR5!b;!azyaEe7h<t3o1pS!%e zz1zhHPFUj0h5!(nBRehcty65sYS0Jq*Ay)GjLZ%X)VQQd^$e{eT0T5fh};c{Z<)&f z^DCfCKl%6QVTiLjhrug$DKp$ThVXR6oaljMFFzhrDy2mS%{E#}JBmNkYvMCi%g^p* zg!0|cOF7pzx?1!pO5y^aQjjO~`3XP!;1DTy8MJgI(D|dp*bWjKrq6*Nq6}ODSPde< z1&T+%$oWiGAQCXV{tz(4ebUx{hJ4q|m{IZ`pTj=5!&aaf<K?EV|3_v!B3P(dxY8+e zF=tUcXi*ufQ<v2-XJfP}+~rjYj(FRD{;8uB_RVtWa9D6EDo$p%%p!Qb6<}C6b3Y|~ zD%PLjNGtezM|?|p9XyD!2pZ`?V29ZWP0f$XU*^AwP5?K?{wE>z7X1%G{Xomiwsy-N z)xJRWquimef3&cp_rQe0($~xa-5yVc<sPO98RzoryFgGgQoS<*{0lKEVz~7d0E%=l z^4cMUom=Y!Z7J8(tlV}zdyBW+F?Ocdk92h^a#b!@yu_S-v=iZJcXz%7|0%~M)?<bV zu%ym*M$t7st7YmOtW0M66Yvtr7<0Qiv^5j`0dx#K-6%^3K%VqpmDur?&l%O;goQP| z0Mi^uiiD9YcH*~>>)__0&&-^n6ZO6ahm?{Xpwn8v`nSFkC{Y{gA=WsTqO_j)RW!bp z*n?1HDHri*mo_yRd1)HSOW)@OBmB?u52j_O&V?dQN>7@DJ*W)gn<Y-*m$D{GG8wM= zmn*i^l>({ZA8(|HSDBnU#Hf3{&Va@c7~BCXAOyg2BA8;M@R}N*PYhzR;pmrV&&zRD zYS($@RKhIz0@Y)_-=~m|YOr;;Oe5$@6oooE&>T%iRu$G{m(CcZG<9|4(U+2|Vmv}1 zC30x)YFkE_E(WI8w>jZo1<whzvaRs!|C#e(`TyiR*g095{x|1QJ>w?_F_^#^gzV-% zLdB14W84TD#4ZG2+6e6#)YCx5v@Ws!-_A6?J2@lgf!CkF)&~_9=i++MIgdOxf5(is zNztZnjzal$I}R9C2Q4F~?5k8z3lH_{w|<r;$-|&^vqdw*1;s>5I8&Z@X#Np{e1K4^ z6Rj;!*f#Y;lL0Ft2NRtBftVQf61?w}T|zwGDG4W4jj&ZuM%eIC;Ak36J8ry|Ck6G! z1-#x_zd1^bM1T29AUTlZexTV5>svnmnp2+N8U<zrGu1baq_n>^EXhBeCjCINa?R%3 z6V5b(XdNwI!n*vpnWp%xL`Hs61Ap-o7t{(}+l0^wVmkuF1boa2{hHcnjo}@Xo6*vt zWP5$O;FtfDFF4!*?9bq)-CZt$$ArOE&el|Ex24TtGc=F`wgp8CzUiMZH=5w?mIGsL zO~g2a0h?r)j8bhMghm^P71cA?HmVl|bJ4AT);an(V}9yX&E?i{E5kBRg^nWJ+27|h zy>ls|A_zF<-gJiSxD<WyBf8}InxTa<a&0VE4&x=5Zc2-nB`vS&UN%_o<K%-j6R=Vg zy`P~4U_tfkv~ojcMz+7;oBo$WP)0j;{hUrE?@5)q@)q#cAR5{4S4I-Jt9B8mQ+Ukq zNZaG7Ku+*uwVH?}x*c!YvOb$4Sp3R|^&ZZ)Tr8M6EID|bnLF4%iv&GON+#i<RK|bL z%8ag14^>Q(#iNd^G-3yBX9G%_$le$lyTa;Xi!Uueb95rt${ip+YL78piZ9Um^c01I zo50{={dmeN2}tvv?rsM^(E)m-HH-i3BXHnT#C%WMENS;CP>e7{V-WH5kM*>nPtJeW ze=>)f-WEuwNMEO5K1YrSYYYY76TA5PuO0x55`HjQCT0tvQk%PJjwTP=M;!!Sp6ePJ zd&=w8E*Xmb=_g)e!?J+~5w1+u=m8}(_dCp8^&nO#7l%9yE-eTYf+4m|qi3jnGU60y zS%LS3ePynuEUPUvsKvA`JN9(!rs0a5F<?((u1C~`=*6gCEOa<=oj{hUwolrB`#!)! z%OMbLuI^h|f#|^qQrQo0(8J!49v3@mtkHv`>+L%B73xED#dTuO__`?6-0sL{9ke~P zQzz3vKpfW<(a)6iQp(dpm%F^^pJGe>+2gDHT4q;bF^Mh6slsl6g=!HI>P<QpdMg90 z^`1cwt;gu(V1kT;e7ng6>b;{4EMIAP@S+<}GeHy*aOyMEhz-zSW9w*2&`65PoT<Ii zu(=zInKSjibw1_%1TCw3t);?X#uNN~{UE9IxX!mbp%r%&9#ANojWz(PzqQ4WCGr!O z1`ggdoIZ*|qQ8zEh$D?D{HfF&pl8(Lg>PcW1oVb2Iw|15KN(0@amPea(tCO3cyIW@ z#?UJKXF;_v2ggzQrE}d<k+7)YleUu4L>kd9y^NkHvIrKx7v1i)xVCws{BgZ+sNF-q z?}_xNYoDy}2a`-(Yg{)S{fp8@@dvHirKO+@OrV!ghi<bRIzm8_+6c-mtGwWZ-bUy( zm`wIN!Qb-&*{9~D@L`|nuP6*Z3sO+P`FDPKG->r=Q=Yig`nP=p0KyrM0nAxRe`x<` zk^u@5K}AZ`0$sSwp1plxg1ATyfpz7A`$g--mtx%k78Hn^T+42RZ-*rf%6xyALuRRo zg%0#66>4@w3kQJOkd$l7vUc2+jJpdYJO@2l8gHOC6saLQs=Sk+CwuV65Hzq+qCcGa z=hIM-fS9E2n{O4S$iZ>P^8bt(h!&K4RK}tI8Ce#hWBL9qBO%w=d%kJ=fMDcx0*0m1 zP4$eGz<|)a7=S7z^qKKiQGLD<E1rlxhXo6H+CT(N-Jp6)wT~!s0>hFcKq#_sD9(uH z@PAbV5L)Ln%hsBA{t+#`bWDA+zH6Ncy3NP^CM8vq1C?WGO|4#!MD!I<k>3!UVNK*0 z-c6=NS&lzd)NE<{d}czF%Gj^NTN5=md2X)1sI=Nu25#3Bn~<&HBI8>v5MMu4k>TuW zF_h~>X^fP*Sf?`E(iojJP$)7u9;}RcRA9BmU?#oWB>u+f{{E8f&$QGS4RB<l7H|lE zIe@D;D4^Uk1dB)}B0`OuBP6S(<b2kn3nhP$3{ygsnBzNRemJaXn+5MG&sZcFLi`BZ zLdW$GriYlmmJUJsBf{VzKtXlO!CA$iPS$6ngsY_`(08-YEle#V_SqhWn_q>~x^ghl zncF8Cwkqf1E{ZuYo-I*C8G`p>n)@(Y`s^N<>_2n(d;eNDLZgGKqr_*wfH)9+gC3*U z?iXF53p&>J+&l<7ih_s1`Ii7xgYwD31{$kuL>g*;6%C$xV~pJHx6)UqcdtS`O5}Z9 zA%Z}_aWl?tmMsvK3hLn}tHHTKOz5bNk2;!okYKmvX`eXV1;;>f)ON#>o(;d#*?b0) z(;pR|ZjR9M?Yt_Q`mLKwGRY^@E}JK%phnEIjP2PG8G9fb{sz`hU>J==|4?JZ&<g-A zVD-ZVDh0E_r4%r)-o_&X6l<y~r@O|92z1dAHohHKrrmBvJ;DZRgI0;k8A=8_ZxhKX z27$Ob4}&u+xOxjEZ{em6DB}rgmwI0YNhB2~O<xj2Ri_FxaC>w%yfEK^v(dVO#mg=b z4`Cc$Wnwe@O@ET#3~#)CyRhNv$Mz8t$I=0B4}LT$XKR!}YSAKS9f2RUtto#;UKz32 zx{GpTsW%K1Uqss1<^ZHz%r5<;R2!1dfOEK!PfT@6)4OvqKnf|;Gw<W23j3iK|7I*O zc_XZf9->nKbSmF|#CD-a7xh`H<Hk-0OfHIne+Wr0??=qPY&0H*`Qv=eT0eUpc9g^~ zm}$q%w)_)L&C_#DZMY~GzQx&(m0bt`3n5xEn)46`q7|;L+jI>V<ZHr1_#yfaZryRf z=Rv$M7-VX1kfp4$^@RPiF4O3(C#u+9fj_iVqGa^+l1#Ty9LF=YaTLZ(2x5qGXMNed zXl}-jWe5T0V>+7h74X4e#g5C0BRb)nGIN>7uj_Bq(O{3!sO0jw&r1Yt_V~_iU-SGC z-)TGQYe7`&Xbd|RfL%eH#a|g8=@48Ib*+jTOpHOSCzpdafo8v@%5aSo`rD#Q9tv`~ z>1V=;6cRy;f{H8J#?{R2O>!ZL10PVN;oFTD`v>qN2O;X2Xt(`-P2Kt-UDyefz^CG| zuUo4t*`GgdyQ2IEc&{fuvH>4@RKB8OHCELRW_I_Y%V&?lJ3#zu)62$1M$<ee(Q`@| zo;#CK^6Dt(G|hS3BI+((KE9xeG+9q60Ks8AaYL<S5DjCeI&z<!KBWSnjvaRTU)?F} z6)4f@zseE%u-#?Oq(As_E1pB~p3S~+!T8D0&A$?oz5#%vW)l#Dg()cHu5j9Ev@1sx zj9^7d;nzO0kYQkV`DY_iWAVjoE76iF(y^~FB9Dv<Ec-#{Tj>Z5!_~st2a*}ClK`D{ z63&=~ZbQl0WV@<UK^-+*V;#O+%%XVU@jx`~baEJhDaLF;G#|i;2a+r!&oA|ZUfXI- zGP*ZUWh+UI^4`?T9jl$q#iefCq{JKNh5E@a<h*~*tJ@+|0h9UD&pekSA=oVj5!xPu z;=kjN3*T@QD>Q44hSbG^5L~W@1Q&<~QpyW;zKNwg__MvvT0ya)dOgHS$$iQnggv#U z#BA;ar??5%&bh9*rzsjfaZ&PpsZrEM&WDq79z%zVj4&?2Emi8b)!#(ru#tMb6_>`e zX@mxf;`-+^TcI>+e!XXgpu@un2oi4qkn$KSwhf4cAm_UGYL9qWEGe>%_3i=`Snwqn z3YR@uekzGJ8Rq~6^`HsbwXbK)kf4wB146S)u(yQE>Zcj!SU{lTJ}D}e8tQ_3G0S*- z_}`{$hOnDK>Hus+Y5J;~+o|?^<k2ShxX#juYxTeb!3PF?iSr(IQeAA$0seGn-R!p| zwP20#x39}BvTY7_{2Ry>$W)ODT~x`)c#ci)F)HNhlnu<dH}`wxLm3?_eVb5Ib7CF+ z*^f1`>XlosEx}f;8J!0}_RFLu$;6<Mbi2VNaH%GUQl7t+bebrYTA9StlZ$|sthW^S z0(uj)gfE-^c>?4Hf8#BFX`65|7wU(xT?_1}P2pyr5kqd|%B^L5Eh6!`pk=;0_o)@U z)27^OJ(lqARv<2LzTvXju50n{-6fGuBr_5NW+NzhTcH&n2147#I?OQ?;w$mJHr_y& zZ(8BhioHfR{u=B069<1`>;vDSSz9GRn1q7Y@`|V=hUc06zTt<mNGq^=GuNh6FzTJ0 zIQ+f;Hk#u|FW>6g<((#PGGidc!UYqNhjbCMEl!0bxkr5#*M?@}LNe|OQS0s8nT55= z>G_RY5t_H^Nt!J*eS;ra9TUeJ!xpfdkW9~`9>Be$$ui=!860Y^>6}5dOM;=5>eA|R z94OxwllcW90fh_7#VsHh`Ue|Dsqtx`IEL^{kL2ttdNT|`hTq(qoH#0*pJ9K%*1Y~` zCuJ4v0-wlM``6AU`=z?#lJL|<<Qms{GO(kIS2|R!11<XFfEeexR~fG7uv|dg@bQhY z87V7ex%$=9$@)nP4RF61dAi4970?|QY2quI?*w%P#Oe^Fg8G4!x{ZDc38Zq^&SU22 zPc)^R_~Z4oyniZAxzs#bYII4F(b(V?xvpW(_A7)<5fsV@8gwQ;D2BMBs!fmKtQo5K zH>LlOf1j4CI>h0WM8Y3R2gpwgbpFlMROecIBG$#pQ4o}WlyaUb`msi!vkz~8?#~>} z@Z>8xV_3t!!3V8aJwFvPHMWEXbH{2UV200|IMvW`fnc`;rnj!#P%BWOX&4tz?V2@i zbm<-}!Zkvk6p2*+tC>#vfyZ{3b@o+!^je5t%rNSuNc=`K9J9+<_OA2x(N8%|0vlel z!=|Jic3Z&NWS)=ni$z~`A3OZ46k$`AlClo^AI8pEQ4|Hpvd6Y<+cxg8ZQHhO+qP}n zwryMevYDWR{)GxEsI_Zt0hJP+7(Y7_4lXtJ(w7hYc>`W8ct-o7_#4KslO6B3W$g~G zHUM(@a)Rk-zn?i%)|IbFZda|sD9LL0?RLk_=$!ab8!0wJNt#a;2wk7Wr<4E&p?{;- zZ;u?=j6_BfY7+8~hn{+Ij<eGcuOkAsFAO7)`8b_84-`*T^gHMrUg%_)oX~`c2VP!? z*FJ8i9+x^F>u)>Rw9ipx!U=lLd2fYg74?;n!INq1?FT(4s)B-w80NYIsA<sYkBG@n zAu<<0_VvUL_Kcv;;dC<>Yn=v$rN%?`IM?ziKa@-+P85E^kOWBhy~ikpE;p}@v{1tQ zPanyfzwKa{11L~h2Co}3vs9sD(Ta1-pkp#=J$yDAX*lt0@WHXI_jczx|2c>sCp%zJ zxY|OA463*SE$ivK<whCSGfH)@VPZzhH#$tPHB&ZCLfxz8D=eNofPL@`U(vIF|I?_X zv$}u`XtM3xYG?37?p#A4o}58`=+-G_RzefRwnkRFR|*GkTgZzkjEF#*b^itI1tvek z@hsK3qid7g*tU!JxvA3$5!<JBZ;uXcUnCU*{o7lG1SQ166wGrF7Q@)9Y$UTMFN6@u z%rLS*&&3Q4i|~xDFQ4@AB;sFg1_yW?%5osxcBvQtm*ex&;t$!&JG7%|TE=qUR&wj< zR1}oc!0jM4yNsVNwC2=h0ObG1ZE&vr53#AM)udDx%@6<?=O1^Ar&+V0AA@j=-L0r` z;%yWNzA1+fDPAGxT)={RgBqK@Fw^6)dLfXrcw#vYU3f-b1mlTd&fL|ZOn_e2CqG#4 zd&wg2y>xi#H8Vh$J(~0Fa2_Z1()aObNzen<p|<`NWINLK!M1otaSfC6(0vS)ZGRb` zBdqAbz|8~F&+*tP#DHfhVq$^b*aAAT7?9=SMjebQpD?azCK(ogfb`QQ-Ns~r41<a= z91Oeqdi=qIXzVJkANdPqyB4S~*kjMq!hlv!)QC&Jk_z!sOHi04TC_M0@XjwhDNo8; zO1<v%(fw+3pJm?T>7eLQ=*XQ%*e&3r!4Pra^XPTPN8Noq5~WO(GW91E0nd?R^axbG z-aoq|UY97!4Wr{az0ns-&yH)wSY9+hCWdeA?(%NB+0u0Li&}xWE;+KxQBuPCw?Fb; z3yk_E)L-8f@v)MX?x4(fR&j8%C*)nSu4S|x7%;CC0VSNjF`IqpuK6uw-shuhK9&|h z%Rn{X95^el&(5fN0;;Yt9&W?ORssj8&AEP-MO5u$i8LY<e}EFKV2r^hi`DEeH2NSs zv+g8yYJN>o(xZ0Fi=mdZ6rEb_WA{-BP62@)^|JuA-z7X6!ww-CeX}JhzO7R$uDL+c zegWCna{n(84^!)T%X=U~#NMD_hzgg$1x&i1eV+_X0MQK3Ev4o8+8!xarx(~k)8yT5 zlXMFZYB6C91>!)b9&Xdx8oyY?5_x5-o9rX7^GSwgn2;;ZiCK#T2Ev7(S1@h^53Nl$ zp0l+1$CMoSK<?+CMc;=v!YFfLn!iJeSumz{PHDV&yp<0LTC53qnt$jqc_9=eQcHm4 z_Pp&F4xVXZEjkB0e2t^V*I=)^-0)NRYPqle6sl%-qCD3Cfg<)dD5Ue1H(5n79enXm zBf}+Xx36eTt&ojjtX;c)r=ZHtBS8=o%$_gdL!C=??amM=5(Fx3W|`!<-Of@_-@kOr zEInmOs`Ne)kIWEe@}|fRqc;FXo_pv0OD_xyKGpdj0@jR%cXB=E(V3WjYpswYHI}R5 zrNZU`@yVbL|5(0B3>4>ga}e&R{1N&gkWVD23Q`XIFf8>Ix+7kOk}RbcPPKqsI+QY4 z(u~RAAk>Wx(Yh4c0rPwU|HxzA<?{xWAquxlWl>Y`>8*V;J?Ma)%ANyi`_x=vX07-B zf%V;-)q=vxIwaM~v=S8UuWL4R(|;hf=v}n}1g7>QOH!l<<4^H@9W1+t;dH*dL+iuc zYvuMshTXWVyEiYbl>co+?*3PYsE3$}A+4rHcQVX?8gYYr5?j%7mq$iL2J(w39ylkJ z9XUpL3SRt{CQ-ti6p9&t3<V)~Rfua2Fu2srf(YDSA~e#1l!V4qbaeD2%~xImG)j9! zKZ!r+CsHuCf{7J~AMxf(O8MH)3PD}+(4e$}usG>C7wNn%*HntQ#)#pP;bpF#pooOl zvA<kB{z`3>SXq;-qs*A#YUHP#vZsyPSyvBLi0ACYu3>7e)NrrlG9EpzGi>+t-*A%U z_3`zl_Vu?_<zS*+9_Gk@E2bdfhO$ke$u=hIjc3i?YoKqfnjh=?-wxnZ2+zsXXyuHI zIiW!kyJx#OtCBr;Cy=T79NHF(k6S?BIHDkiw{}1QBYo5Mgo;?i$P-KFnAnRQ$h5k= z&aohtX$xSpBWt95-@_S;vcf6Ei=f-AsqXO1$PN8nqJ$EOzribJ8dt#%0r?us>wJAj z357+I7F#vnr|PjK5J)TF-_D7s=QUj?0bV9ERSB3xZ>yH^y=~@V95yZCZY8YdOa?21 z2mvs(BQp|ThyT`OM!v`S@7$+AB%D;bzhoSysFhUeG(D~7Lo25QvjK0VLgW<}pb;eT zN>pgXH1Fc05M2E>f_Y!wdWG-GVT(<?;h(y%SWH6X7^h<y<eQ1so0``nXn+C~Ls37> zR5|P)URCg%A161``ps$#+M74JlGha>zA+NUo~i$`MyPQ%S3PhSjF_iX^v=QMDC=0{ z%xPGK!GiDCyLaZ~H}^Ge_}*dj5-Obh!x9gK19pI2@4LYzmF?;c4XJ(WN###1yF8yQ zxN`DMvLQnW0)ZCA_jk9nzb&{ri8d;miJhpNd_KZa$^}WmkrU15JKx8pp3#QSOcOtq z$LgB`Vnn7qD$say&4nruU4ix!D(3KksjAl-hz$<ySw<nJG_Q8XbR&_-^Oo@G_aCXa z*>g{K%NDD6jm+t^v~Z<GwcZebIt-e@Rc9uqfNDW&vT{@wHVew7W2OwzKndIF%mC>Z zG_fzUiUuLqdyeD}Fn`@P-}hh?4nDNh0<UmuZjJ2c5tp0SBBu*1nHu$okfE0oBX8EV z;TV{}+latgaUndfR`dAL9vIZGxiXr86qS?XT2XJ|D4chOiI;*aM`BCQHjb|HVC4Mr zZXzQdcBTeOB%_(BiNIg8b%ZXPSXze;@H1eFRaYMsGoV3uih*z)E=o`d=de0hKQwC( zS+=KyaX-@dN<Y4*&5y$6(dI9V+eBk@G)x4g6%$ADZ=~ljGz9NlK#U9VWKHPu%5^O9 zq6a<T|LkzIP{OCgJc(Y>2y<<8ERQtp7X~9T{hLzDjV6f8_mbiHykXi;{3dF!2vsBi z!X6BXTDr1@o$8Eqy~}z3I9!riX1>Hc4^SR7(Ox?D&Niu>t?U`18h$TQ@B8_R_K@vR z^M#GMbL&Gf`eTSp24)`tEnYO;kYeKcJ=T#O10Zp94%<8+OZI3&AnoIGa8%xcBuS>F z%<?x*fV#!>EyXm2@e3cVQOasq`_*#WHam|nP(2UPb9=aK$)u6RYJu?|4)X=reb<W= z6Vw=2F~fUbKK1eno4~49L34<E>9?>9R^%PG=@SjGSa+^BYHSVdzw+{kiBX-iZdxD! zMzDg&mEzuHdm(Z(o?)9v77)rmTH@{q9C8BG;1qJsZc7>XkKZgs+=_iVF-5Ir#)0~m z=3rW7I!RRsxf#Bfwn=!0P&he*2|<yaNV2e!@lob%s_>F!F+2&GP8r%>A*4x;$IN9a zgYHWk5}YhKEA6YIYWd%BHOK4CxjY=-S*PBI<J>_sxi<`DUHhRN0vK&j7!o(#Fgf9Y zQ+<Fm^TW?WPuKhl5(LQ(Az+K6a+PIwwbXQ2S41|lC_dN<!sHt57=Kb7>u603#br`T zWh$y?2tt`EW1#5;O;nXiM=C<hM|HGFW`oX>Y}vVbasWgvXBaNbdj!@#?n)K9SuKFw zZ|xr7$;Ps>Y7koQZku0&@+&_)HMOn#Uf!?Q;D=(>f|y^_@cQmdz1Xa0T<O&tf0Ar< z@CFC55P|t#!UqP!w;q6)l03N$P87~L9?#rwwb(f;W=@fnLcvITEpgl4C`Z>H3+i=> z?lkgdJ<)?|`Yl?7c9tqFfugriy}DD&j7bH<mX@=UXDZr03z9lQQ3?$%vXBfrlJ#By zOh*rzIwr(igMQUYN3@m4Ik}|8@jg$%oDSlZYSEy+hMouQ2Y1-3W-@`Eo?43R#Crw+ z=8cIGGkTSvn!-}^K3Z47lBS(>|3Vij;88LHCg}5GHBq(2z$R<6Q4iObL+N@>HW35s zC>9Kdid|=66*Gn~CdlxEl@1@1?tc2(W>tHR1N$*#t?%M2=}~%Cif)sF-CC*~aI5t~ zEuNhF?^?9qa!tz1)VBbwS%3PRR;h`L(Aj{m^{H5JbfReAh(W6PMta$@ac7Ocjz|s~ zB0%gIDNxU=@s-v;yaGduNN=xWZ943*|9UZxJk~iETA}hc1KBGBCk8jhLn`;!eD4`$ zM?z6X=T7o0wuZ`iC_Ei^<5q~h8wn(T%5Ve$QH*vvgJy}DxI+IDhQ!PYuoVF@ob8*| z`9gWUo6TJlNL#<^55c_dn`5Jn=3Nu5h39~A{2h=hRNC!EbmdWA2r0Wm!k*mfs{oU) z;m44rAF$}5Nkt&JPO81h13cI2DX`0x|E#K3DFBM0h)5402D9%g3rpF2<2CsPj3U)) zw54|Zy>A7Xeb5{jMtHR^Fb+h>^!4Joeqnryp`P0g8p|#_x1dW`pAU;};ywIWW1R<l z9-8R8wxnl2AwN(FF;o*-ty9%A9#&VinDlwN?uP=w%A+4GZ@1;*I8rFuZ=b-&yqWZ0 zub5{k$M1rt4w4MzyrbYHn87VEHTMV<UwFa}Ym6rS`3ty;R<fdu>jL>k(MA-PVC?u9 ze|aSTU@f$8hg7J#1XR5}D*&aA?#>bvu%cBjf1Y_P&)ECe$Rt)n4T-j8_tD;D)9Hz; z;RBYv_K^5l{LWwS!!@dTK)aMdJ%RdkfP6=$Y{MXE4Ak)<3QY1}L3Ebn9soNwvKE;} z;e{!xB>yl_4*xylbF&aygq><(*z`}sOmC!;HQ1Kx)3?!`yRnYT_DoImaCpp=;15Gq z^u79@+2|JH{VKu;SlhZAAwm-Zw&vx4lP82^OM_A>W*NLXsN#N!4G1WH9tD7L4=(=k zQ01=fXpSqGjiu_n?^I;p>3dqP)_ot0O%BchLYKU+VITbX_R*WP$ofn=FnD#_FZ429 zlj5&>HqT=S2OL9xKzL+>if!SSYpEC-y$$eSugx%0kxx2f`%#V&19K5=Ps(I~{+`PG z*bm)87rl)Q>m^_Fx!;RTzuwB1{0X}U@VmUNICUQ=OEZyyeO3;3L&H?_gv_%{BNoAV zDcWt|e*nZsySX;d{E(q;xlHRBGVDk^>6)hcfaXK|Qzcik>GK2KnkB(&`yjBMv(fl{ z1saR;SZH=nR+%B}`{s#g*e-}LSJsM|1KB&zF8qq&`*~Dw<{9|s7_=DR%e*tD@Z2Dc zkbLXjbc8|^q@5N4C`jhNAV<shDkZ5JKg9(5zjAf9{|i@V<K+DRxcUjK{*#cpx5Cey z_s#;DUn6Y>imW<D0<@&77pcP<p66|fH(hyGMa#WCg;4pc`Sek86M9>DL-T30xG}0R znKlIZeV#~Bz2fB?d66O%BR&b`=GGvLRhl{{6Yy@eP4XGxj^Al?b4<&8kMI(B8J%-z zUP<`cz)N;(6omg3yyjma$bZF0jki6VWcEB)-rPZ7UzT{#Xf6rLTNtUQXMq*^J#9X0 ztnXy8OuoH>`^zo~MuZh_zaIwi-+BxFfPlmxMVsTnT9{oJb|i5nncFR<7VBQ$)O<la z`4tchLivVA1ged>Eb&D{qi-hnY5`OZRJbqguqT6Rz@_(mnt(SJ6Yz&}dd#_{Uw}sI z?Z|gH{=L@%XKLuDaTum#MxI9aB8zx?b@~J~UXM!<(<{)Z9$BC5oVUw=A125rzA)Xd ztzs>&a_M~e+8hZZHF1ui^W_%g!qUv-zCghMOQoN0xz*C8fzSMHpzhDSyw)s)$jKFm zJ<+EkuYx2Bdt41v{!!3NK;Q!_T-Jvq+B-}A-d&ipP6ZpFV(~E<(CD@`?mXU9%dlj% zh4O*X@x-<|5XXGW*vOV{d8iGoIr27`M0%<}CnU3uHE4yyax1_I<7?9o9D|_VRXc%W zy*M*8zxs|7!Vi~<bt-54uVBWdJwG6=c_JjEs~pJaXmWJZ*PR+4-WpSjrqLJ>ElQ-1 z<-k-j@?Hi|)dn=Mvw6th>z4g5)gsePUd4V?DD;|Cpf#96L8>GAH|6QK{i@@PkN>{D ze}|BvT-}JF@Dk`jo>m6k_EcN3{~qjR>DoFm0^$8(8;%H!AQ4>TD>_i0o-XLMWGUe@ zL76qa@cifLcZf$Y5WEQ>mrkn6&yh!{%!LPq2&%5ah+jtFd1W_U+pD-)k3y35&==+7 z=uWJmx%%8%8f`d84C<UdQ`lyShZ2nD0QT2wRU>^yiHhbx@~imt)R(F@!%O;ppvNI~ zS4S@2j-jAyKXbG>$ia8uj<|6EtO!zAxiPu0%b<QPcTsD4eQ+<Y(UaoSKeoP<grj3E zs)t_#mqyCO2yS*W&rSZiWr8F~)|NNmoda8bC#rfIYoc+EX>v;bCR^|{c`rQq(qhJ` z9?MRXVYJf5SU?A4Isi7OtNiFv!-9?7>7el)UfIak90}!7rPvb2Q?5AdMde7IJUz55 z-dXVR9LEA8g!`_7xAFoy{#LR*Jx1Wwi#~xVkgWjsn-h^BlN(G$G7NlPxZ!EgT1Z8Z zumeMNA=74<M`Sdf?2S^7x-1074BhIuL5kVO4Ysf650Mo_`>-uILSC_Of+hwgl_8oh zaiBAuCtwRHsYr7xfaXWz<>8YsR{~pqi-0Eq#s&s3im_2|8=pUXW-Vc<8dE4Q7pVfZ zsW0T1j)YuT9vdGL_w(j*^aJmh@=*b0g)5EO$_kC3hLE!h8lwh3H>q!gTR6`2u34uc z*8qCja#-%J8(86~dnFg0sk8p>ujJ2u)cpYDKzwRLC6{+&Sj5Cv+?3)gokZ}jfY$x4 z$ko4oUX%;)*+mUPWN6Ub@|-yq#n4g4-xmKdTCwiI8_>WDx9^KF8<v%aUS$bcqWyRG zZWFQC!8%B|=YrIY7HK4=d`vuC=5)QRP^Ni=+((Ti*jpfXTs6n#WBL>GVHaQe@mz|; zKTkhpCA=t;RTM7|`|(fK4A%wp_|O02*GND8ZUFjlfJiH?l)0Q3jsJDLh$c@&FQrEy zkZK|zIkfGkUpfoa*CoFXH?my^w_0o${}G-1kvi~K(#4&85=I@Jtf9tGMXdGgxV)mX zf#E747vc7FH7<^?#r$vUfJOX#GKl)tg)2y=!pyiJ{cRddt59HwRyl}DU}C@v%tIX? zPO&rGA@_tgk8Rl;k*Ny-wrY}&e2)LQ%?xRD+;OU`dvbMOe+Im^PlV=QGRCB`(F=*6 zYshBJE@tgDN37ornN%m#dGZKm*&N!8%T*)8vn;01rHYn_-c_fdX4^3_0*)8S?H2)3 z@;pC-CyjLqHVEVs3{x4J#u&uXWJv;btBNy(0KuWwtu*C6mrOr|!Q1Xp?~MCh{42Mh zio`GSiz>z;f_w;_W+_thTcQdGWr2|^S`$b3T<`CFz`Jg?LLv(mb|NCRiWL7Ih&SCy z236odcoXbCwn6E8r-hM_55@D53;EoZ$-RE3B5p_tb{Q4PGdOlsWGBGQ`q0PY`+aCl zAhB-B00#@eknF-S57ES!%?}ODoMTR!7S%M0sx8b+Gq$L6ny~*Aix&J^hMHSYH0DR* zKOH_<>UszGd*`kByf8@BxEpoFWeb$otwIMm5$9CTw7(2$*F0RmVPs8c@pklO&q+hm zA;J(Z>kcS)uqbiTCHkv%1pwRiYorErB#Q!vu7ho$^KN&Sn4P+h{_UD+OV51{TBN`v z(+&R!w(+2tiGzK<Q(vCKt@n^)gPC!1R@ex>fxr9Bli_#1xDo~;yvU}wUMevPWJF%_ zKkZ4so^!cMXTsw<WPeDVW%FS&X3V3T?=C;;cLm~+NG4*jJbx1)9c^e@4=CU6BH!vs z?Fo=32oDriwPe<MjFJWw*56e5&%PzYJHh+w!XeNV(_~hbXOFU6Ndy>D8297IsfYC} z$5m!eRsruGA|L32yf1IlV9QIX0wLguP}V^7($igg52-`46zgq<2FG2WS^XnX#O7C< z%8(RbYwxa!ndJQs|BT42$)z>2^dSQx_sCcysXVH}69Oa_aQRv3fD&Xymn3(S9`A+b zGwqg?<{U?>oGg|<`?mCk^EvZ8A>@SDK=FT(RK(+ybW5{XC86S2V!iSLj%k^?#+2;9 zzD@SZs~xzzp?^n7j5~iqH8l5*bk|Q`wQK<96^OKEC4yZF0U;c_Z9M^Dg1Z*K=i9}8 zNG}E%%u0NAyxWwm#ju~Zn)-DXv};7culBtf$^Gzq53;7)wW@_EOBWICL^g07><(0+ zt7=SXZc06R0Cdu2ONAa%#sbEqJt%F1fvxk{GZ2zoSP8?V{vj_YrRJ|L(dfNb5NqCj z@o?GvzAgVuG8G!&EdcZK5Cd@S0X<{^*mX3=Jim`uO8LpeQd30U8utY=^3T!dg+FY2 zn&)P-xJ@pDg9$cQFrNRDIR9<z;OkR`UMDXGu1Q3jb}5Dt<zLs1XOVTj`^5v3*qSQ{ zAdPQN4PjX;#MiJ<@3-D`Akky9ph&7Ld#h%M&^EOcUb__m1eu3LnA01P1;*`*r3HW8 zU8(c#A4X?rHSRN8skKg7g`z?9vxSMwif!9Yyi5|r5l_`X69X#B54>|VbM<^j+;ZQT z8H%RjVjNhgCMnF~oLu)y<I)v>=Hm;lR+1@5fEzTj^ox&f8IkkInOsX%L=_Zf9<H`A zrG6kp0~;$=&#l_LoXHnI#}ni8fJPHvYU4f~JQxUj^)_yi*kud!f*?L}@!6Hd7cVpV z@c6l`vnL+Ij`iEOTjhYhH^rkS!FJ&`VSVRAAkQuBNGB?l6>NI9k?RA6Xl<Y$i_A@0 zpe6PsjAh%&Qjk4pd?x`^@0-LQT`N+A(o?52F&{5cB#zNT3myCycOGw?vMi7q)DoEi zRjwz=O>zsucC##`TdBcAW?)x|8gL?ItOJk|0A34AQQHQWWfT%@(SqcP<-HfRSkhIl z85A4DB6lwBSGHMZfZqCqv5HawwCa=<#tHlJ*n;e^4M8;uavr%e46&7W%sVB~fOPOK z)|pT?_7!FVay=5>B~k`1(hBL-)4b$Q3ko0LOnhOOzh2#Hr<~gl3yjD{zImd67qu1c zmDSJ)JMLR1i>1aY7mpaWm?c_YjKXY66ba$P6^zFQpO72}I<_u{LdCLr#P`2;Yg+oP zDcm!#99-m?=cYA=C|57%z%OfnGqDOA4A=L9-J$gO0eUB5>;W_P_PpTSx;r`6(Vx9F zTk<nU*&=BW`Bh#+#_9CHThYP;I(xV$Pe|f~!4GNM)eASy_0}%gZZy$0RS;!<!f|1D zvYm~)FvZ|$X>>F9d?Z;qNpc1StZgEob%)jO+B&$(=3boHY?XQ%==@|?v$<}3qain> zCH7%Em5iKk`!0TZk)5(3{V3INB%O^zpWRX1M6)C;X}cM&(qy0+Sq%e@EDKjshkVj% zc*A%$nQ18Y<O}PM$+in0=281F@ukFZA@cn8Cp|Ruqk_V8+f5(GYW}AIxCajG_BT#X z8+jJ0(u!763@DDcA{?h8I=$1ZDpR+{dXj^}D7(P0-!=sbuuxz(-J2N<O{PGLL|F8d zgh8ptt`oN5bGbR@JNSIgere4gE<SiW`$B57_5Qk$)kX18PK-=Cs)2HOxb=Cs7zZJs z955#&zAU{Hhe80>snTPf<CW7kWe9twB6b1%`hCm)fl&m;FXE8vZu{cVU;+1{4}Gba z!Ie9-rpr-9x;K?~+=7V(Icdp4TL}QR@6+>BV>N=QxP&k{=8pQ+tab(Qn2W;t{%<Sd zOeHkDA)6dxw&|khPSKh|3-cYxffB%7Wq{}`F8j?lU&2iIq^~V|N=MYQ*9@1?B(E@q z2{@L?hy%Y_HB?7|z)21DHG(@5tY135S9FvF3OeDcCVomrn+gxIoA?7k%L!LbYTgSJ zuMu?LPLDYX0yPr_M0NxaU11v<H^s-7H^qaXi;aHui{g&@5lvRs1!uDw;l=(^C;Ihr zluk)iwf6xhxVP}c-m5RB09Bes{5C>JD9x7Yl|fq>Tq0@Ac0mCRa9)vr9p!#Yg<OC< zN&v(vvo|R3(qzAqpmKZm16JW|7wV;%^ZOQ?y+s}xf=-_72*8IwzjlJ<D0y3BKlT(n z8VSig<n-4nM+~v^dk=M3=O~l7F(~brCxKq<(9!G0!Nq!lUo8C4gdXJW-ZKq92jcPR zm;A6EA#4D>Pj*zx{1hloTlOmjiD&4n9+b&rS@P|oHyjdKuzc|K4XsbBC4Otfa$C#h zW?B83Ov<mZs__gSqkON3e`yB<T0%8t^U1nS4A6+le^vw;aF)H~Nxta_dgv?C#Qeg@ zD`;``Cdo2P-{7q5KY3|%f8qu4wB;u7GInk^`s<4JZBE~93CH1q0S4NTKn_I*sjLI# zlD`GCMvu|&zxH9$h6?7Njn3|2*wqYCDfck_^n|`rZ%0?u2OA|kXab$qRCM+9UAZeF z#IG{B=t%&M4fb3Hu0d!MEES#LGtqOh3LinafsV6GSK12~iv8)yCG_x;=z7C)RmcY) z0dWkpd6#T&ew8=!;-qCylv@B|UH#q-Y<qaFK0jlwb3`fyA{(_)Xbs_i!Mj@7gRj|D zn>|$)%Br@S%Hz3>@uUUDLX%7VE}rmKF7EmpEw_Bu8^t&L=!}K+HSa*H6-HebFDa2Z z%f3qtnNO*Q2&ocN*Oj5v%=jN!KTN=Gt3z=8m3~vgPk;VIWE@bQBm2MoHeOaCgChYE zS501f0OO*ZRS*x2zLo_9ya}Jd9wJ0{;VTXMePCSZd}l=ST6ZRw3JV>>T%=M#Xy718 z0?IrHeR-Jj4C_&n!H6!Rr`G_lKZ+bm<(pvErIBW}MkS9ITsO)gSik7a&XYpJtE6() zz@2zsi>$1Ze_a{c`4wsaeWC5t>fmyCPudy(bkzebWQd_+7G&ynii(GKNX0bnZlcov zcn)tTEXNrPmiA}AK$9-nM6wz3<y^*wC0}DWO~Pa$d)hzhs?pFs?Zf7yPxnQNCl$u% z(}OYW+e?~P6#5I1yt}#J26h0(<F{oC0R@dqe}a!HzCD>yX;NnBIs2ht7~O3j_@lEx zK}L>;Tg(N9$rW#zfI|uSTg52-Xu}^6lfp;i*@P)%6~wEJNq+6KTG>^nYsK3EhVyjp zlakmH4c6C9TPNv?Rx1vq{V5F``su1!5V{L(&F_5VFV~)F@S+LP`PKr$1Kn#aMxLoD zRVj3}3^P1A#nUnmH<Ih?QNg9xqoQYc^ARcX5)j;j&58BTdkYu40G$h}S6;`u=dTdJ zL#vdsN=>c)kwa9ce0fO3&7lux7;Mgyd!Lj_%3l(tF`vq*wQQb0*}Ch%{JSgfn;RQd zZPnC1+O^{Jg+sV|{7GlWj^}@l@hMM6vHL6b&mguc`}TPOokTleBL!t%fEOj>wx1f^ zIW@(T8Zu!1JTO)Bk-QYuQM`3sb!Lb}vg?K|3=Jq(N)>z^<5+xh394u@C`bZ&l{-7o z2yEOpCV2t$mc@SU6s~71J_m|CSPXp`S2;UdL6f_k%(QCZ{JUr@6uyIKSh-XZ0Hp7m z*Vokbv)ZnRFaQo+A{IvY9#h;|KTi;7U{2+BaR;K#-vqpN?`8vH*z2386*k6H42>}@ zsj5_sUo&T*gJ#Y&Rhuwy?QF`tUvfvGuOIqoYPjAf)<yW|@>l-*2hI#1#@@+!i>n%5 zlem@7q($ZJBq(|I29Tro!8e?NAh8=j$~-a_0<wAlX-ZDWxwjx=&BJTf*)pv{6RvBg zZByZDq}qBS!}FV6$!1c(7h8CRt}e4glylohtJ>H8#*PekvSgmnJxY-m(F(udbe7rF zFZ!empL@OM_F%O65M|qt^*p!M3PM+f;k)gJ5ZS5Rgw7+KvB^5e!Rj?fca_6D<!r3D z15kaPDx9#4bPjQAx(CvppD^)sPt2V!BlAl1gu(hv3L1zI$uktf4)&m8!nJw^U9o-} z7cd5SOiS7HT_-n}|C4j|Niku)>#^Xl>gb-_1{H?Ysdf99*fKoN6MTXB7zsqWPrfR^ zm87}2EH($~pc6Qh)LHN1XoZ5AuBJ0veCwJ|tFFXl;(S&r&QERj@ZsqDY7<>bTP+~C z`l1vKYbl2G$*N&?hae*$^bqvZ@Z;pEaGbEpq$&mav5i;>Su>%A<mx^%^bZP(pOq7# zjd24uu&sNg9tHGfC{-0zneI%mEy;;6w`lx^qv3(vsK!}tPx+(p^!Y0Yz2=@gv5A9n znGgyjp@I2tgb=Bg3&%!_l85R_NuWL2_f+T#49eTPjbacGiI@Q2n~ueuLh?P2z*Pum zg=8y0hH5dC%Y+Q;nXqnvOxz~x9pQHYaS8a-4Lm8dT8@t<zw6|WdM8{0c5(`=jDx?& z{Oe+;hijkif|HL8wfRw16<l;b-pm>6&BUU(`TZuz1`Rq_M?DZ7q29EJqbEPdVV!r{ zz=sb9sH`KOp!6h0$&`HbzIwSNyjs0j)f%(noW5$;<5{x2fdr@ytnnKK_0~Estz;!T zCpTc$t@s9TJ+M&GnsOUc{YltQ22rHOYg*b*HC#**PF!i??&YNBcRi~jIpg=dv3Eb| zM7?rJcY;BA-W;GW-P0D5#Da@uXUtx>o6(tg^dXXtDqRG)rf8b8B0-hVQ}{dOdZKi? zs^dSCQrZZ(uLFic<~3LczHI|5XGx-9Bko!Ce!qjRaGE>G4E^+c;Fm}VF5c8E(LojV zt}})n5eX)P&z1IJV*wXEuUP@V(A}{TS)q{&T&?E`-b$*1%5Qti%8RvgMux8b41bru zM?BmZ89no=Dy}W1SDRNzR0z;~M=z|`9JZ}m*~wHA;6-cNb}#`2n(nROkA%BAbSw0Q ztuO{&awH69Gyzas<%HZ5XhJ_6oKT;*6$z;m{@$W-xm18;^^|nOO6^L<d7rMe0+|?7 zQfF5yOqvUQUOgP)AbCQJB%#Se-)m)gu7xR5%58RslbtBzy$9h)<`!pCq*{5Vj2IwW zEy?}(GZU_<JR>xyFada+COqFVW4A!5WVy1zPB>HH8;SwTfb6`oJOvFUdwEdeHUxO` z?l@~-9e2(8)HS6zM$8jovmLO+7v>o2Vki-lD0p^0t94j%@O~BYef*<l3xz@ct3Nv# zftP5h`V)jF7f76L(hnmAtIexH>mSXVZzMbgF&0iZZ3ZZ{4xy=vebCC3g7n-J=s*ZD z!j1)nh<yT{@KLpP3jSmJy&o#TN}Pi~o|L9I2gTQ;`t-qcvwMSiP7(P0A;b9qNO_5g z0CoTt3ix3L_tQ-neqQ7!Fw8&^$(eq>$s?jD@g5Nz5MJto7RJ6zP)ZH=^Wgdo{`w%e zLxR$@8r2FE9=R!x8^sF7HkhKCiRaY#NH<TUI)?VU)m$<NZ?IJ^)^o$AnbSttMG8c} zc}MIP3v)I;OfNvGNVp?aG<Qs9-P2_UUWt)zI(xRFd(}oe{y2#%FLx6=6n>E7Z8%5Q z+|;+!a~S+rH5d5Q*Ag?ofHptb7q?sX+)_7A5eBMbE&rlEeT#Yj9QG|wOMtb1b{(Br zgj<eT&eNKheDHx*?&h!I>T!xbT(mbT@V`hj=H?Gg6r9r#cE%1~lY-&(#Eq~}gtmo1 zi?|RVmvjew(?zEjqqYg0RD+vi>@S(o!Zf#xD%#+%3B#Tv6}srJNbps;!qV~?9nX$= zJ!1whiDyET2wmtrDS0`ELU`qb$8@!KF7{R-r@ioCzb{v~Dy+AuIB3Ztd=M;AYCLg7 z)_7#Chdni&=D*q1+yW9TTLepe{M>(3mu_3SA1B3^fF)|<b#JV-xT?ZLMn8>+uhPcn z2X1kzRR3tCqzJPd!~qCnY86w*YF**mm6g4$SsqLdKZF7Z!g8A6?lQ!^UMo&>E(v9O z+VIHq{re)Gns-*Vk#YLRI5Zrl^tlZOO!|O%wUr3SFZE+#u0Y!B9&)(R$${602aDOH z7ytQZd)UZs%uM*lqaDxQ?^y8*_9`tEj8PGlWC7HO6H8@iV1WhCuP1mnj&8Zw(G-}4 z)^_l*l&K(HHe8soHKRRS{{9W<*zaf(jvoumb8CYjS{Oa%cME&=E|r*TcRJ0Ls-!=L z;el>tbaowY^qv5dkM?&mCaV=0lDh4x7K}y8=T4?r!zt*buJ<(wm}CU|W1!ca0Tsv2 zmRdnRhk|xUnCK89Ov?ZLl(o|j^q57ZPmSVsOavx&USz2~qzhWg1Gc#~KOY=d(^b~M zq{SVcR1zu3`(1A}pJ7c=&$3l5cazHkN%5vkwP;y@t)xa3-M04X=ha;olYr<9xyuIh z_0c+Ce^wjmj3k;QJt_h3`rxB<vWZDmw?N}erw7R!04RIDhZe5_>?hl}(X?CZZr~{V zW<=OVwRr0-|0BvhPva5v|E#$yhcYM?Vo#Qh#c3h+13AhGUS)>wyYw@6r*#*4f^PcN z|7_+qT;dha=riR;fusVRFcy^o4@aZG#n3DbkhY}e)}t5UC6(|zS4T#!zjUD!E2~L= zL1jhm7eyy5@zohOq^u`A-~ZpZ9Q*&tYtG2X$i(pf9$vH9mle1nx!MCV>iC0IgCawn z1t~?hy(<$?Bb3yNKexd?jLHiQ8C|ZgJez~@(N}PCFEQRBNkj~jK3-r_6bKdcYK;Jd zOJak=TFD7an%p>WI;&4=3<lGX<TH1yJYO;yR}a3944Yu2el7idI-5XUT~13jb`Cku zsS=_l@;2#)F;Tl}2nn(8T}y(@gu4kD#^W|(s(_v(MeC8ZdxZRmE^o}UrzkWUIyj$n zYlnmVc8fFEy<4EAr>q#z2mkdH!^h>Qc0?vCtfq%fA%5bJzzS92lxpL)H|CN;=Gi5o zTxFRSlDE{yr2po)>~?8v5XSpe5sA(TG>H#s@lI5@^lPf}|Ao&AnJPJmmfy>zf(R9* z|Eprhe4_!i8}T71VV-==HaeU4c`8fIOo$d0C}G`m*kf2PfAZ#GbP6#S=pQ=#VXI27 z{w_<{7bH|Gs$H+Lt$=4fI_h2>mkQE7J~rk>p8>7GPCR?pKMl40i*`UDhh6>)jX6RD z;<o6{6pKECD!ZfFiW@zx8qe92jwJO&df^1lS0edY-~RAr`@9cCK++2eC}>bDXD&vK zu4BD>JxQu7>)*Pr<ArKhwE|uKu>3a(IL_I<LSF!>>UHRKMMtLEU?VWD{Q@lttwamp zPd9gH)1h>$M}VOc#sU1Grrpx{4%qR#NIeg$b_;b!KAIOJ>OLeTvBuXioP}oGj(wZw z_TGMq@N|HBL_I^JFVqvb>svkbTxFtP|6<hc4KI0CN>A2Yd|2Tt33G}P-4k4a`wYG5 z^DH(O65N?JWipANI&-=8Uv`fk0@TB3%$`iKn|V(M#QT;G+_l$z8}gLW1}4E?|5E%t z0CRn{QStjvD1zG7uvglk8UP0+JkG0B7LLCn0&$vygQ8*`fjW*;Ia9lbc{dIpM8{Ue z4zuj%2m<g22Rb*t5W<lVSGSOgLD~h9kv?J@r_i}dezZcyI{2G$HQ5LZTr?gpK$(_| z1PD8VN>N!lLq+e$Fp=uvdHL%P+K<?X(PtMZfJs55?t~@7t9#am5Al6kb8d(%5$Z*@ zfiY~9ra<pXP}7FA%VrH|v$MXYXqepD1J&A0r$VHLQ}MbWC&5&aCj{ns>poDDIJ{fL zuq`*)q6cVHF>}~Lo|}^IaC?45K4<K4@XK%FpEf{DlYAZ!%`Aul7#wHvS8Ou(J&=+! zp(X2uEQLIS2aEdT;6B)H7gtbUG!2Q8pso+j+uX!tOO;f_)z2lP==)w_Pq}G0if{p^ z3wC#DPv?>;im7-0$$I$v1+XI2(t9(cy$2rJN{#df;{F!e*DUNx{JJIDHo?cxAA?Ny zG<6ZqFh|7gY9>gbD-FoJ0VErL*d^(}O9H`F+P}sPM^!J%!lHm)TS-mpOQs46U;Ijg zuX?2_lryXZjz_qK=cFAJElO@xMpx$GllU4D+#cVxQMeDUfn&+aMi`xdAiW>NQgyx; zaSi`OEr}`9(1suhk(idL6#}+SP=U-Y*q8cs-_|GfMK1*A@DJ{U5Pp=y^JF9{`hnuu z4;Q<}@96f*`Ml9HF!j(IoGXAX+t=2(wA)R`rwOMe<EB~I+k+-cq&N0XHg;9wP_4R{ zN=~5I^O?GTrncZ)lBc`xf?c7m9NI~i5!L|EHZ)z6e0dW3QpKC>Rl~TjPV1T^eKoCQ z=V=uGoF^y}5aF~$HI=13g*G|OJzak49?8H?g$xAsXv3wv6<BEwDm;HlNqcFc+_nN+ zlv$S|w3j}>r}J#8qLz7kJ&jALwDdP#`KfZ#-vec0td&S4V+{s{@3%u+oE%(3i%eB* zq!?Bs57p{wFO$2J#=_;_q7?(ug3>tH9=D__8ovm;lZfKyN<%?xj>oeHoxYb6Enfa( zw9U7n%C9{v$r#YTERFZs;J2hg!u#<UbL3G-^e)^0^%DVZDRsFT(Cvg*S4xF#8*O4g zH4j43z-tt0!dZMkygcFBaKvy*D*p)R%l+3H`%}GwT^4Y(2PkOz=303r)l6d_cd9h@ zYHkrU{J!YSjtDA-h~Pp6$s%=ik*G1g@9kscTY<N(f%oqLh9T6<>X@2CNj08%@kBLQ zv;IAgW42}$?p7)s_GI429g^R)j-1z^D9ylDj0s^D6zGtvoovV>7g1fy=5_Y5UgcxS z{%7O>PulJ=7^7BSCmX?;9sHRZ_TT{DDI;bJ9whAFC$T$hF>$SAK*WHIGsAbZU&qg* zo)DilR8Pi^z4aRh7Zg2;Kr+qA(J0ot>;nuvZaG2O*>7C7ba$kI&v{k+biUu(xRGoX zn8i>Plq>OCXTnCkU`3~Amqror*`sFUWs0}(Fd7o;Bqu3+{%^w*Y@cT;r7L160f^NR z1t;H?FrFZ|#5l$;H)P_FG&rvf;n*OF{9(!s>}LS`NY`bd|Iv(R?2{Y^wpJo2<55Hv zD_i@6oVXH*M>!=k<$Zl)$Q#(Z5cMVCLfE=(zY-->_jD_hIc)aL_!*kDprB3{E|95$ zAXtSM(rKL+vnk}J%*}p4tSx2PzXM2Gek+rk{A9P#w*w|B%36)s5N$G0i=L{VNTce? zc_A>iF-&(A-Jv>_!4j3<9W@C8dkaua4-&0glzA`Ga@yZ_pVw;N^<<~_hv<+c??GZ+ z>*b&y_{tiJC8WECaAPrSuH-z>rt9ueR{E-m$tLf5ei`ea>Jlvh5c!G#YnC`Q+>03W z#LM1e2e{U8KxNhA6TZ7%=cGL;f#^ErBd{0~Ca=~L-uK5`(U%Y<W*4a_s~T6o`SE+i z^hZy<?%HjFFf@9z3#}nsPH+Z6A9SUaJC%yi><-$H_>j0*4Y7=Q=ICK3Lr00AQ6I|T z04>r5RSw8k<}rOB&CIFHiy~7Rmx$iI!~1mZnx~THwwiAm39xRT|6OD`Y}xugE2GP@ zrj_{2><$Qf?rjt}&JUZ5$HQfv%5RBlS5RS@4mR1;>?8{Oj&b%M$4byWqNwN)e5=a& z6(k*B)0r1zAoj23oW<9$yER?(vfi=HDYu7>ho+k|3oYg7EC>iR+O-O79mps+C6;Lf z`fw*wSobfPUI(h2hK4w1ue@+;=g<w=zv$uI-nwlA{0fm!KS4%`Eu&^ZfyLV@>DaE$ z?vwOP19ei~SiMFR+WJ{kP&Jh+ERK9lRY~u=q~9t<nI9SNkcm@8Ool!si25F+eX`tX z9)jjWYbF*AOe(+;gf_(r{{-k12!_n7{!t2l!A)1W{KE4f#US}Ke_xGtJMPUsB7I0e z3kQ*o;Hl23MeY<#?iElHu|TT}hGyHsgU3H7jpM;yQyq;Cmmbf^LO09RTSbt0i(_;X zt)+DT^wF$|?)<b~>V^3uhb{hRj5e#J6(`z7>=!zqIb*Sx=n<R+3{HB$<G(WLXc}$Q ziO8Jf7`a3vI0w79Q{(6FPPIxgEHEqw-9X$i284bbHoZa#G2aN6*og}+c3E|GzZ`{z zXW{xo*K13lbfy~jMh%8;uCecPT`u{+D7Y?dhT#+tCJ@e5BZHz_^fZe(MN7gNDU|=_ zi<DOs8Y4&xoqAm6YVRY5pXy52xVdjpnN_E4B}`k`N<+>}p#hHm7A@J5Dk2^!Tt{^y z?TA&Nb+B4kA#33-Y2?uiSVt$tQl)i#j(6{jywzI2R@axy{AeSKHz2`7AmD|A#hWeg zcm~{CZM=h4YT==25mrp2D{`*6<b7JrQ_f2?$gLS3k^D*vIuv*FVnl3aw$||**;?(W zQwHrntTr=C^ARg8j5ReiNbKfZz&V3?l1vTBa9WT0uw&IAq)l-dB{ApPi+PVvqI7#b zjdc_Tatq*f55hJ6Sj2G=sOrj8`9hr-$jIc|6+H-`^d%ZrMTakkqfbYm6}v<=bss!7 zL|8oSRub|k8LO`dG=Flu6nlXD5^>}1-5o`@#-e__U3ZkjsI4!O0g|0o{v@z}!uVC= zJ!7&h7&b}Kyv&7ityTN#+6ove1Lp_q&;iZ<rr9c=IC2yz1_O#sd3Em=&f3c`Xco~{ zvqEBpzR0s0U~V=}>v&9*rd`ejB79G#o4mME^~Xq0dTuOckK9S5^bTOZ>z`4z=&qw! zv5mKHqb;`uyayJHI#TvBsPTTAD2AanK0}h9j}B2H$}qu2w}yv`E*K6@s0Ps<Kv4>Z zL@lt$;ZQ}MR^VPAhX`w1u&o~-&b&Pfs6R_aMp{Q5Qw;G@eXzFo{CkG_Zw)d;`b@x= z)GG`%-^u>{iQ!Nw<mSOec~2Q%+)Q=?QRII#AiSTRRvl(u;jdx~?7VkAF;?wauG9PW zoG=HXp_dort$RFsMrF7qY6NBECL6#3t)ggmBQLz6?v#JEfECUUKlep^FOGGm+qn`# zqAJeE&mHlBD(}1C2Z~<_A+MiEC`}D2FZhu6Vc!%>ID(Ywn*{Y#9LCltHO`YgCk2-y z2A=nzs_G%cyWTa7;GL{g=ty^;@|Ht{F6bFK#e*`N>KZ3(VsBlX5^fpaeu{$EKCNkc zP}5EZ$Q{Et1L|52i-EV)2lQ^bJh-Hfn3Z2QqRqZwKM_n1ljjicj`JRYFLUv{$>u21 zST031uS!z3Uej}n)Tso7|AUu-Qa3EXdrDC^pHbBW8Xe2_n(JtmzD1=ybs)Ge-Pjzf zU1j031prO<ktNnORT@1l+E&jikBvQcHbo19nvr)FLzmWHl)GoWq|+9K@A^3NsQZ#I zNHM7PqmH!o1gQ8W2Wblt*S~4d$SD%vVY`<T1n33P<<y3Zz)y5{`~kIVPoG#{>q1tu zuR;+*T|VP*)wuc{8_zym^mJcJ66su8`md?GG|#WD#~NDE2tb+ozXBJ@p8C$|0Wc;u zxLpem3B?L07N7IbLv3-{9pjCYr-`YJX`GhCb8PzBsFlJOf47}sYF#z1B9k}!L%XL| z+tk6Oa)aisd1-MQM2+S&V!CLKzAfTO!p1|sWn_4eVD-i2u5pUGo9|-bVn_B1L^KOH z6_GU!;9Fl{O0%J7$S-Wrep1q%8<PBK*&%xwVmekFL0HeWWFV?n^Cqc`7Qoc=;-BML zZVqHf4*9n!_CoIeL|`9EY;?kl0Iq%no0+XG*Obw?68v;-;UtI~jRw38ICXzfRLx!I z#>=n(2`eLQ>WqA5{WhsTbkfGcCGAji<TvyCA@?{@m956Qaq{EW!LsI0LLd7#Mt~Pe zkh^r|FO_JyYT0I}U_b(%N08Cm<Ln=2KA`874bPTr1>=!-ZRjF!`KW3uUJBNg)@0CI z#07w+RhQA#$Z()bzvHvmhF5px{a?=?sbS}YA!5A8f4f9N6ycck5hv)2uRNmZh|;k? z%N#**2%#dNISuMMekhpj3Pk-RP5#Win=(*Ga@IAq@USpUr_<q^%=aCEa49KejN-(o zc|r5TmC<BxV<ARE@b249BZS80U0eIkYURtH?jCEQmaD;$&Ho8%dM5cjQxqa-*>2H+ zk3*7?Rpp9}^1}~g8<B5P6VMCLzF(VevZ`Ah#aRu$B;NzJ#U1nUO4OjwJJ4d~?XtLs zHY1@=wN8jghT!%MvC(-1E}IcQ7R&VO_m=n6<S}V8Omjk<b<Yu2kmtH!SF-KIyE>Lq zX}O+GPAPvO=$m<Y2*d7}wM*HAN6o1XGW4r_sF%PP$&sWu_-H&vXx2h4E_O$pU7=9H zM{nm@?O~N{m|8-Wa_5~z<;Xy*p8JoLgF5Cr<TA*>c2~+qlNErJZCQiLhjNe*$V9yg z47q))wzfA>YWRN|JOyO^n`j_!H?d38_HA^V$7?0PEGQo&Sb4CX$YWxMB~^Nw;F|mU zPn-|mF^n1-Xw^k?VMgKKtq;N7pS8!CUQUK?qZsx00C&;{D}EHmou1hj)Sc85e`Av* zi#>HY>7holyV(w!onko&-yh5r>Sb0Abg@Bm``}6PYz+gwN*^gDmjlIHvcJRvkQ>f> z$228cg|8jv{ROaB<#2|fvPvRb{I+7}Kts!;Pc8-h8+l#gJACvUTAGW%VqwUfsANS1 zze;JaEpVthg>|jF>}-)`y3xNjk5@$KGyM3oW;JVZK)N%X95IcQ-X%}?5|IUoV<T17 zrA+!O8ak#&;1?xn7fi6hZh_lp-&SWn#RCFDu5??XuKE5u@j^b=MuT{|jhJcE93yY^ z2%r3HT|)g1syQV~k5^ks^>2ZDH(zA552UsXsr)=Hi5c8;I3}Bn%BSJO101>>nHI=| zN`<dN3CksA^D1~|cDi`g4Rf3q`a21lepF1-=_wI;{ru(lA7ADnp7%JIl>v>rbZ9L{ ze%#)VfmlT|RddmexDU=Kj=W>eD{6)S+8nzPzb^QQ2q1bK>_=s&?o=uD@Ocb=qVL(C znCe2u=z{E*OK=ZHUbprWutemu-B}Q#vXHk&k^b`3qVne+O7&%F{!@a#Mm+|tqV`zi zCjO)^2T2CDhJK%FUSeYBwL04b`mvLq{PA88?lV_UJ(ovB-2#PXl%F#FDTlZwd%~0+ zr3-Y)4yFF6?(;)-QJQmLKp>1I<N*S20IzMe(}T+Wk86_iSj6XY7Qo2~Yv!Dsb`2CT zRqd9MB^dB<2rG++TVPY;Z&DNgF_RJDe)ezQ*Gx#R<M@WRk>GiGK1w2oko8vNaQH4D zdiw&^!-f<L5A7FoV7ZHz<B4qbU+loC@%tpSRos)$)*d{=C$!cGx(52o{HRSuZc(IO za;n#vj-6>1hLJ}U5Pt_tKtXIZ;eEB6=xiQ}&VWRubM&vC`;X_bYDOFp_3a>-(944G z{)c|+TI_iI){yC2pD64vx>(*b)irDwC3+J%NzWK!i$>oI`0!*29qu*0)2(UG+&>{& z5(^#xH&;qAz#k*mOI)QBO_dQ7E~8#$^_(qyVv{U>v=<Z&UjB!%d*~6S3(zp!wr$(C zZQHhO+cw{}ZQHhO+uif+W;2WV3zbwVIdz@qE>le=MH$gCboKLb-4aCZ5M(pIS~`oz z5Xc<WiEDtFXOE!2G-Q*Nk4Ct~+Z^!w#eI$%j|5-stYi4gMj#sMS3jXo!$+)?8<;b0 z_ELrus*mD$)HP<urjPSar*9PsdAaV2V~ZY>Uoa!vQ#$34E2c<^?<HvuT4crl?^m<H z7!EyGlHZOR!7+T|?W)m&NUg#P5&s-VMDdHDE}zwO@z6cI?#`5ZTb!!}xa@pt%KWP? zEe&Awsmt3B9hw+VDaC-)#jOCbIlc6qXS$pPz&6bB^EwpGU+Mj>IH5$T_R5ET!=f1U zm<@`bw>)kL7_}EBvLB}=2^=9su)@<zt3~_0oSHu6uL>b5*MOoD3&@8*b|kNkKwe8a z#T3CRj%;Prggo_!T0gJH-xvcVKQaKhe;3MseMRrP7Q&-bwDbcCn+y~u|E>GZZTjn+ zXx$^9!07bNjP?S{#57Ejn8TJxa$bz>CEUkUTg$TC3=cPItR1XBA09=6T{c1JWfcDI zsuIdv2BmtL^GdP?h1T<&1ih{zUoz?Mzj1Y|qi^}d-pk6tXgtg1MV?S`Ia2wV2GR(g zeLO`{E?sa3QvG-e#%w_5Ut=*?NA9pzl)e^(`E|ozB~)ywGgCr%{&$#yF{2lgg5gFi z_ym^Sa^|;NX5pgUNA5i?y}8Qp%td*$ltjcf74(1wJ*(vk8sc_M&o@~}W@8NSZMS5b z7*~%Otp{j{7baP19rxPx&9b2<u2P*&|87ZIKDn@VrJ1oj-oCF;7-f45DH`Mv1)X0o zZ#PqC_}=9v=K2;D0_~NyI856E)_#aI01u<^RsVvw$wlxQBhgidnafiR=WEC(6&H`5 z@G}#JxwNNp`R%M2o0EoL&Da8>`!@0Qe|NM9QHE7}UB@D_BAnaQMDjF5%C@OtgLl$! zCYu4n+~i+^YHqG?OlNKMd(0vLOjd%F7k86#yDFgte}bK~gT@6YL*`CNuS&4KM*JsB z2W?b)6?_6IZJl3+9=Pl48R=~Pn^g;~6*dyUTt*jxN6zt}v7~J$_IeQguoj+Y$j~wn zhlnt9<D-bwM_U>KeFyG?KFBFP0&nZ`rQY_K$C+eog&9eDe3Ny27;|RhbA#Zzu&ktY z7{!x2*9>DAwM-i5Nk%ze=R+7|OpEu?LqeQR`n?c_NO&QB83>Ny)gpmIuLy`TDxw>J zwHWr%W$OXc6j3+3tYkjPYC-!1`J9<U=VJ<{`)7(X{=^g|bbbCs%(Xr#p9E<*j+qsQ z2^>r}Iv}XEbQD^24wp@McMWLivPfK*RY`hG{#^;IQ~Coez7+dO_+x;JfEnA`4wpNh zRuk~yPMN_fe@B?|vjQ8&h(Cjg;6-)F`=E%nG?1m8OVef3641C8b#p9z27cJ~MRbNK zu;waV%}K!xRum?zEn-f?7Tg5mGyvgh!ctM0ZnY3U!H33{O+oSCDR<JqZ<qiNsWpL2 zrG4(NvsasS0|uF!s&bx^4OIhafqk*v>VPY0mEcmJ`f{S1sNK{G5%xwB23p|2xT@2S z;aGGecI!AmZe^qkxifld_Xg}?s9qzyo%m~2R!R$eiJtFKKEjDomN%@3@i&D4wdIJk z>XgF#SPJ&{vj}@_z}UNA8X~^c^OelS7$@-XwtMd{z`C#u8!NL%I0vyjM0gnZVq$je zf$hp7UDSJ=@$GyB*A{VFSkH+d*ma%{7i`EVQ1hDK?gU<eir)KdyUwooE-GXfX7Y^Q zW6Urli65L$T%PNTG*@U5k&%h6#QbqVml6(a@N7YwNG;%^j7NDaQQ7I&$6EhX9Ma)+ zkz2*mO){#+ii#gpLiCSbDPRv%m8HUUX+;jrwjS3`EgitguQ!1~Y?_Gq(KZVed00_O z`Akiv`z&_?xCbl!9%P=TVb=&G*(3ixz%7?yD3obcP?TX6@k<p8n%C-P)!wy`2)gR~ zcdcM<SFg+Gg=zCifr^*evzlXf-2Ofm=hd|}*5AdIQ<*KSp`&Z7c6zK(wkd$<cmw)o zYgP)`!O~g)I6;&degY%_j0@h+a6KDvKMa)2Za1D~qVLLz>`B{1WLA7}+G)li$LRM} zb}L$=Iw|PwSKVq?IRg7%vUP<loPnKa$qL9EF0}-F9B43=+-a*9hGw&3ZJb;3o*v}R z-EW}=7HUSXQa!Ejl067uH-FWKJi3<Usy9u822$xZ>qN2UrVTpxWE$_y?E|4fb6~cW zTNze17V|86uSPuHrYPjL$857;9=S9BMrUWp&@lpExBIUay5p*h7!Hkw5Ej9&&zczz zG^&q=H5+xa>-x{H3Zh@H<-fZ|rCSOF#O&8%m^<y+o7pwv(%FJior(myQt8;A#s{)Q z`CPeQ@%^T286`}3d&1I~l{48rBwB|Ju+in|H^Y^fsxq;Eb=cbH<clDz+Qq?oqsTtL z?U;D*I7!{pg9{GW90BB*OJcJq`Or<Fz;~OPh=9Kg4;citG>^R)Zv@oYbN<QN7Xx1F zPzC%Dovn4yJZ$)P<omXo7_D;qXHu5m=nx8iYYd=S{Fm1Zr#2Sw$sQm=;$&d_PBVVN zV<H8VR098_Nk%QfkFzL6R%i%#dT3uZi5h3#C3P7s^%bBx)xG?%44ztmTPBulAl9Ep z#w__H+#GJHefZ)JuTTHwUd>N$dtj~4oE+mvwV*srnCOunuFrY?s!%I7*fMD0touO1 zbOq_rcekqpSm?2f&r>&5oom+_+)p5&Wr|*PPcYL*Gapu{$*?xck7UgX_spO(D4+Do zf>k=j0eW3Gc%?6J;Nbm=rgpmvHO>=~XcF$uZ$+ZN|6VG5vFpHO({00<TIT+1oyP(8 zdOgD<1jKi#e}=7c!hv)V48|lCb1Tlbh!O(s?TUX3+tXA2l?CvC2%vUe^j-Rq_?{4g zvAF32O_3k`fWU~l-2Rl<KRWCtycKTHUv%^`t%Y7J7@+ePpKTOYe_Fm{Qm_U8m}sR+ zt)I&Hk0J$CvBm#sJ2)lng`)tPXvop_3mecCrBG?pYJ8zQr$n6>r?6@^Y>x=oDgcDc zA)(z#z$K@IeE7AoEz#ENSpY{oM0!ZzR0dUKenFh+Px5p52bNROT{v_jStx`B`djGn zEGk6+r7H}I?{4;t8k7Z5i!r6If-%}9cujWr&rF}=2Genk!C|lGE~~a?CBC(Kg8o7r zz^eISEf&u7{)>YxhZ)3YK7wH4&CsjC;TGp~7GK?|c4UM?UFQk|4p6tQ2o@8cwjo_! zN$oj%XWgIQ3`-WWy$bt&1*mHCrO)`~@}PnhDQU9l?NVW*zDkX|?sX37hin-Pga3l# zDaZ@yh1TK%ZxU~WmJPX#lN9965}^?ejcGrbd|vD{r5e$Iq3X}efH#%=Jk=Hj(5!-u zyPV4TryuA3-Tq9E=qs-4pvcPrXX){!B*%t#{9Yx=VEf?BdEvbdok>AH5isfqr3yW7 z&J&t2_r%z&6}0+*%nzyQYKY#O+9b*_gHuR|NqRm$T{13TLXhWt@_l48r3n&8-gFgN z?lT%#U!)xU8H?E?Tgx5mTg~sZ<M1dzgQ=rd4JrT?>ifi@N^d0x2LX4zaZx+NGfA7} z^i+7dEo`}vgW`f`JsbjjxEi1OTATyxboiVGbSnlU?vATW0}bB1P5Xrdf*d#+sJpYb zTrRKr&n$mZU5oU!KD+K07x8N0()){XImJX1-~}9%PM#8CnRszIsR<KO1G&^C9*5+p zC7jvru#KsgP?e7KltTa*1BxvG?!ODF+x#g4ZDESe`6`#fyjg&+Ja#Acq*B%qS5bU1 zL!R7$xF@p;GnNMsC5#M5QDL;RlpC%W5FL4u3GT1h%S3^iS<%_~v7Ki4SR+T9f)R_x zJndjCqK4&lq)6o)drcWkS-gG=DOF-ST?PWDsDu%L?i1EI!@&`Q|EOxa-9lldS^kT4 zMO_%5dZ)hXrUB_k<ma}_vYX1|CFiB1o=C!&h=-?B*f(RxQ08Df7Dd**#%F{Pj>;mF za6A~6NENdt{IjJ{<`Vz5->@PWepYkI7j{-Ibu=`5y(nVg-}tb7w95Vs{}$>PG1zG% zwMGj`z5oamP-fwNo(p$BX~sbqHE3i4V%r5!i5o0X(1Wc(AA72k)@I2z!#x>xuKD8- z@^z>32nS53b;-=5KS*DT!5R4R9ru<Bd>kxVORj*5kjS@tFV=t|Jx|j<f`+|7%Rh8A znMgXKSFQQD**@L!%Tj08e<SwOFsSCz{D_Jq-QpS@M(~7^ly2Gl0B8?GtvF%0QhAUE zO$zi$b{Vy`knEw#RFuZi81ZkTV}sO}mK%Y;^DQNVrpXLqBhdJ>eYaUo>`XD$aeCXe zT}H2Q)F2tV{Tw=6`|nK>u2YO#Ume1hx46eKszJt3mAYJvQ)g~o;j0SmLTN(orJ(Fa zTV_P=9Iy?b#Ks{4|BkzxrOrlpv7h&S&_z?`I6_$u`J_ft@72ln;I@)HnG1s7r-9nj z{Sc8g92F0yxHE#Z93@GN4nq67*YB@`jlKCfdxs2B@V01Qxy!TWPvJ@$u-BMZN1&V+ z&0~~rmp-TDqL{}^3w}a)S8h$&$L|57p!QY`{8u%NWK@IA;&9@$o`y4f<aOB3pl0sY zS(pX+U-?gMJNlX~_8g9TgvEj>Yth<Zmz|*h7zfvpi~>xkcZ;o#pU}W!ty9y&o8j7` zr5t*N{R7}!RcNN_Lfs4WKILW%skHoFgZS<pI@BL6ja?nMc&yGxXAO8g{!^gO&u<3u z=Q07EFuH@bf1x;GoQwG)+}5_ttKFYCeKNhiHrp1c)r0)45ESg>qQPA}ruuep`-*3S zNs|8c)E=16cOwbWG;$PB@UUHSvFX1B_JX&n`jsNk3usI229$P@PShvJa)k}lC%g9Q zx{=gpe)1VWcbPa`(At-3lS_Z2#{t9%sblS;=QC7oA};1ua;<fsIvRHC)Y@wqz&h~m zmsbn$(=JhiZXG6C)^+7^C0t3p-s$))3g`OP8j+TRe%k^`Qv#t6LC@aOC!eI}vUsX) zOsBS2dQ;?Fnt;Przqdi`{wfgMv}|P0td@LQTh5OOPq$(dM(+4M?(36lEAh%(os}<M zw7+vbY`BYZxOdoTtErJ`<Xjj6Y5yF-#V?Fcq1tnyC!Pa`#mpF?G|7)BtZ>TDj{Q7& z6xOLyalKuoN$&uJbF>u5EP!}fSx0P}=vG5Fs*uE^S_=x(&5MXOK3j(SOPAPn8pa89 znv)C(3OV!cgIlwdvB6FsiUpWaLohqCslXCMuIAI=8m3I<-V>~eUY|SvOkG7VJCNx> z>f!COrf{SL4h1_Y`+BdwZCoqj)Ympleq@J#LcRY9VIYlqs&D07UW|Eo<;p!vZl|}v z`4F5X)kHY{mQl9ZtW+GRWB0iYPZJ<K$IcAEdOa4LQ(l82zCbwiZbdVncR3Jps{@pC z`Tx2u+_pmjS19d^^JwVEpepTzte4y96)z{WXhG8P=zjd!oQiFGs9Uk(D>?4Sa90QQ zJ^|`}wQGN#O5%_McYf3B%nI|RfDfINp){>^N_%d2M{2mP%j8Bxs6euMyBEtwk8pd5 z<%>iwRIV(geuD`tEF1^>JO@QksKp}Kn;a*TSkrg4=LAiQONlwEsp8kQnO)+cKSq2W z_*l1~6lQgV|4}kicFq<$`2~BMsOGn$vQG;3pN$gNKB-#mRhPVaHC*Cadh*-Gg-Kh- zX@6DitC=fWu8tD4nh`;{g-G4vR3(TzUR3Qq{>6_n<o*T_2^zC-Q)mm+E-O<k{1zlS zZ6Jj!ivUDTJfEf%A@v*ma<@N@2`EiofdR**=q5g~eyqG6^uK#0EI?=LT}PZ2kc>*_ zP69SZ^-7|PT>dPvpsRd`t5ArYce@%K{vyFYf=n?2kf&JvL(!)!{;aXU2aIM<6Feu9 z?<%v2cD|x<9jF{Tpi8+~WU?dx>Ckwze?nV~>!Lu^Eu>XkxH=zPi>2%Ii3>3<h`m!q zfA=E#%ptcSIMP6uN%kPAHF<$0wq6oNTnSP<o4?M4Q+?vRkvQ4v6R-(RmLx?6VRL2p z*iu*)<PbU{HCi_iH=FZpo88icG`4G+K#-%W48Qe)kBQoPv;Jy}79@=%cvR^EqF9^& zRO-`pL&DI<@~JI_{%Z0hGtn&*0bpTqa~_(yf&<7Fwkjj<LO53}dlgQ3Y9)~K7+3?> zu<@#{hxKlK+V#E6@p$==wkH&;cLX^j1A$+wNI()XJa=<j=UITnxLM+2Lq?Wn7v?X~ zi$#S(KPv+L10-gwK8R@Ou<0u`c~-Q#z(>Yumk|XQ%kDrV)4O5!^UdjQ^%s2dOo_nV z9cv_zAjeg_3u%%)UxAwhR5Qp?ct&PUWe~{4Ry!vOuGK6B^uSGhkv-wHXchh^UKD1q zk=(vP5>OUVmGY$3HMMnftvNcemaa8S#z&*X8iDGdyV`0$?R;g3A(9EspG8ivzpiYM z3W;*u8ZSU6R&Rv(TSTsvHYa?)moglBEausUgJ?R}Vy;^&Fx)|Zm*%x~jhb(Yr2@HK z!3fkur$lyD%mYEvj**@g>hrt0e7o@ehQTEc0MwbI$+Lvx;K=b&+nc93oi-Kc%IH+p z?M2By_+}&eY!!cikb4*0+E~YBJ~~Kt@(!N4cqfCZXC1}Gd=X>uw;!B@@Cyff7Lz#) zZ|C%zmd8>aP`0y~yqn&aMSz*W7=l_b5(x<xeb?lO(S}9_az&$GML-p4gT{Mdlbd+D z2})0ygcWOy)u2SKR!hzluYsFq+lpdfS~5u*5nf5cWIj=_S6svrFSD;8nq3!*pBrkx zBh;=~nZPeAcc^yu`Ie#>cq^F@3uNe4G9(&x2;E(|OZ;icaZ5K6&!#Le;anXy65yFN z4KI%PPS++}V(b$cF5l65OG^JeiB(_cXLF}$7nX@O$Ql=f-9~JzZt=&>ev`(^MbQT< zCV_rkN(b0-6E>J-b{ZhxiyT%b%F)$CNW7Ao@!S5J2gaBabzhcFB$0`NZVPInR0OhK zxpA!44`WD4ittVb)NtiZZpOm##<!96q^{f#mo+r?cLVG}jnB~4R`a>oXy<?-%gj>y zk*1Cs+A`02xM}z^9ZG&@gy%Vu%GcAKqRV*$RfbOhwEUGBGIIME&gtd66Eb18B0?VH zaR6qwtn+mkT5l=cGg`=HzLnDZ<`o<@2!+FWlx8-TJrrQ*4h5p&wqGr4fB#U<3L)8o z0UKJK(@$-dfGhw^ZX2&do|;@wP<ni8!{jg-)4!=?+V#epvAh%M<hzV_bcwLL%J6`V z>l0IhdrecMTke{43myI}SVQ!*;=g4x!{^6^p2*pk<PAsc$ksLMQ)CJN>V;ZUX2Qey z;~;XJ11+`Rb#sRrtiJw^l)q^D^aqQ)zbHY2*qEB5ejUNcc#M%?Z3`q8;_d3q?yFB| zw^&8eP9KqCrZ_8Xk*@Omq_JX$7UU>=knkL0kubyb#%l~8TIAW(iSxff8TatJCGU`= z7-b7Ng)$&2ll=<P@cGpz>mP&8gu|<GurFoIxC;L6qR^0wOsEx$C%BV*D%K9IVr&oc z?q6eyhM6e5A@NfHjIzr?2bg#j^8V8#kn$l#6^I8I$fXRf`L_4jY4whOt8Dl&^5SY5 zU<mZj8g32<2$tQ*>+&6E#%IivvCFA0$-eAb%rs~nL+AKMyMU#yka~(xKi<%W?P|u` zQp#*scG3N-fCOE&IvQb+BvtH-!Y_Jl;XLx!>UIn4cAK>lLz)drym>*X>Js?{Qi>-o zknhIDZWlYAE+aQ;jVof#V}9!qXygAU+~xTH4C-*ObFloc+fA9_QmhXyRbAlnt7k_5 z55{1dG1~d6+<+~Nfv4=4VE;)U%l2`TcM4vjv_-g=U!fYpI*Nx)3Jf~PH#^jUcN~hA zwO?Y%!;4_I^O|eVl^E*9EiFNr0R5~I=J{t;=xWH`tubboa0-AwxbA}KRg`o<@iAMJ z)^j$UgosXEc4m>;KKvCFoeM%ZHO$u#BDGo0;ekux;+luo_TQyFn(Uk105ih!DnMm9 z!)QJ3SI#lxFUq0eg~%kqtALaDFBEL2$7|c136ZARP=o2X1CW3jY!W3oS>UYUJAlPR zIOXCn{?5}bnGO2W{btYB3L*Bu=eNnmH33{CODM9ZevlS+H-0S42nr}V)R{(UB%1BV z)bu~9HY9paOS^U^+G6;vkvcTF0h?-MOQa@1mTYBjzAk3}pm>>-*$M%mq12<&72H9z z#TMk`X7!IQ%>lRA#ib{ig%`wO<p(12a`w5make?em`0BRaasfFzkiF)RXUsm$mfv; z&NcV7M5zsr*tY#@Ps+PIp--#un!Gr<^6C#EKSXZtA>U$$lr({Ra(4=Na%uEB=)vt3 znx6BHxvVbOu;qq2-{yr{0C8_`R`R*(Wb78BSlj6jE@P=0RTK@w_wZ+14<az0b0^Fa zeAvxdMMaRAD!^pRUL2sfEEn4{J;QJb+@+`a(GbU=RFbeA-AwM`Q2*4Bv>xNO^Zhh8 zDKqe7ghD3{r;M;e$Eqmj$BC9#t-Jmp3wcviQ*VPC22|GlAD|e%l~(k-2ipS?eR=~* zHN!KGX%J_wwBg72m0b6DZ>alsKy6}3-kbvlhGf8YLkdIvq*kVqRk5~{VuZy|hA5g# zr;H^R{CO`IK1`%-H2HcJx0w4Z*=R&M=Eaqi=%{rYht<uE?Wp!nRbi{PVCm_9`sgxa z!lW2|+ELlFTh1?v{jPJL>1r&$7X4_sj)TTlMyN{Lusb7`Z6K&Pq-ED;eS{`KTU1^n z^Cd?x#uMA>etO#*y?5VQ3Mk&F*Hh>a{Som;y~W(Y7xP%7LmoWxg&YrTD|e%oB_{Y- zRutu!&wN5<EiIw=7ZuGw`P3V8*-Jy)e(JQym!;tT017i`F#U~YM%~CJ^7w|4k%2#? zyrQ7C*z3*6O*2pajes8x_2sh4E^Q8lV3*MPLn>kY`&Q#-md7Pv(<qI<k6WjF21295 z4e=0`1I=NYC=5^}zjgZuf3B;J{ZyO#@!dWKFB<!h)?_QYm!BU>xC#cih1-OwEx<_D zmdr1uv!l;Fky;Af$c8z89=5B9vqUvO@*C;$ye^Ny6<8)yVXzE$|C%BDEN;R6WD9<K zzmaS&$b5!<RihQGuUnt8(wOS>6Q4d99{Dg}c*kuwvV3IY{Rr9O5rPzuuO5@Q$R)44 z)@ao3o42qG3h7-T{pV4-i0$H}#Fhv9sI<Ka$x|SyOHFm6$RBi=DB~Zy2P=fo&5ZxZ zTKIM*(Eea9oTqZ?SF3Yd%kz!1Ezf9V$#aBxvAj#$D|kT}^XF;G;x67SChH8_$ETC# zq_5b%RwA#i%4I5k3}K0-<Tk*%!<8vzPzFZ<Tlg&Rk`?oax>VyBRWX$&ayS&6S8bbs z+u8<wh{;D8lN(OUSdR~g;OPdOfYY{7bb;q}pO6HK+QMC21Uvvl{?_0Tix|1nWic=` zsF*?XFpH^wDqC}0!<u}+<9||^0XOC*q^D0gS61p82IY+t2CXf#*>3A0^Q+2&8O~o# z4)0g73z6c6Ts?!BHG7qR;1s*z5~*aR*>iPTQ|V*#M=zgbeJigCW#b7@w)jKMmH&QJ z-Edn|-SD+75cJUTuVpkQ^oS_yO)$OAaW!WW?p%t|QX3@BQ|sN1H&Z_6IlKaE1FWeQ zDd!;Ac130LUov?tio@^lrS71Fe)3dYY5^icTL?A}YdzHFlBY;i_W;`a3A;Esx*tHG zLn|IP_W{HPtSFO6<IXfrFmx90*?Q9P#cKPa`wQ}G%Iz3v?3#d^>)k+23yui+b;V++ z#;aYQ63kz@G#@L0P{EjDJO}3{|E1T5ryOgLU3+-RxRB`hXE!B&4d6DsSU_)e9t2pl z#si|Dd7!=E6z?uhsVfdH%MCTP{G(S0Dc%j^l!|-8qpHK&nm?T3PBUEUveLFhuiX}5 zRNWuxmJh0qZ9M#*bt(|M;i0Jn<ya}93BqIJWQ5=0DE+j<BLssRZcIQTjo)69I9tAz zXv`Il58zD79yDAHKOaMyTK8GNkBkBXmNTeq{eM&HaIAyIkWUk;>Osp`;M`DmlNS@9 z;_-gg**f~md?)yK9Mvk(6vm!2mzP09BUbyp%OHzl43%9G6{AVV5{(iIfE*H(<iD~U zSxy?^)7=6-L?PR67vVtxZ@lty+6r5t<1&L*dT`7^23(TRjqGDi0H$E6C(tYJ;P_on zhyT$+%Q&v;V72`Q6U#0d<MsYSZw~s$`P=r0MVGbihS1%|x6EBQ={?jtg`LfIT-iv4 z9~{nkiST`F<$t&|-S1e4m*zspgC;@deLF#}3z{Gcc<abrmg_u63R2yl^TXAe#uNNc zh-!@jeJ7Vxfy<28;oLhmwt+no=L`Mi*xm51vV%dmMR_i>(S`mu?}x4}d1V^YW85r_ zFO{N?@sX0@{>`1k$Ii$e^aOD}RX%(7aVhm*Cf>Ue5j<uo@;(O-QPo8uf0$q+Re+RA zz66*%3Q1z31xk-_MaFT}4~$UT!6GNRFFU9jzcIR-N1^3yEXR>*a+Q5jqIeqwI-t6c zJGT7E*gP+QJ-+aRf3NBdAUu3-@=Pe>B&dTjgET}e`as;W6ALewIhoylvB%ICQN+tc zC_RB^wj1f0Vqr_VIHA=D1@EL=zWXoG-6&rB#Zr~1{J4;oQa`j(Iw3%Br6ehUNB`}d z1v<E68nJzz8Vp=z&C`R#c4HzwEO7|7c_2&0oy>*yfN?R?Z2z(KILdYL)eDRt^3AMY z#HD6YI9HHp5?M42o}T(%qY=(^wF=}&%W-r7Y&)$6-Ayaf)37v1+YB*1I4W>ymPf2g zQL7Q&Ut+MqmI|K61>=*)Kc^}sK}<nJoCXoN@Q|po4h&q3qGq=;-BFA`+}wfe;7X}p zTXNuRD>;N8X!VANex^rLQ!8CZ%Rq2dqp~)9t;@Qby5=F1qFpUY+^`)6=`D!g(`@PD zCh%g}od`8}qAqJ@6}CQnV{;@}Av*d%fI&QHm+O@hZhVxFk9gK4xzLLW_aW8>siWY1 z8x~&eyqdC~&KtjMpd^2LvDi~G{#T=FS&b@(W@TfuoKX_&jWU-Jt31f^z=)8Tn{z2T zrR0G*{k0w7H+HhI`=p4G48EKQ7KhSM#?O{*Di&cpF*H}=I||J^lXK{bUO8SZ=MDhz zMB432`p~^ChsrVj;KI=&2+k~C0kV0}#u74mHB?}<HZ+L=HeeTIh%%Lvc7nfugmjU& zPrDtg+2K!0H%lg?EpsOFb=qmz&!RbX1{VnOfuH-l-Y4ZGkT7%EPgrqA0HVLQYfG3~ z-)Gv?@-!bCc4v<<d@-a5dx=lL?9(&u%5Ovg^N7T>?F!-LfRx;jm>#T)Vaw#>7GVCu zITCdx-2If+ushZzV`qEeu&ey~H)we+`M5Fq35;4?oFNX(+N_O-N^iMvu}$#b7dU=M zK6eQR_M919_r_GXWAa(W7cTH84?|+{_vUu|?h2`9JRAQ?VC^b5)U{mfYm8{=lvq~% z+zPXq)uFL@dMMUnv<1(P-m?Z{cMm$WE*BHV?oHrZM3>o<ZFWE?HDAqKoWWe-#t4s~ zGuU}eMK-piWB|=5QScnHL!x*Jw0KuXaL9AH71KZ?-yaCN8OtLu&YL8xDuY}YN4Pdz z`)7`Fku!}tdTiC3&LpOa;klUQM|;`p_jl|HNDVLW>011ElE>_@hr_>Q;g%8*X&=sc z^o|f0ozn12v4RtNqOFqa2GdoA-weRngy^6gDRE%$8-|T$<`W>2$b{mb-;1Pm$2pk_ zbwOTFxNmAQlr2v&WwTmUGy@uU&ZD}aClhi|2>B13m3y!KH|PML1tEFb=jRUYH|oWB zi(>Fvh#N9s$_=t4*eBEyhQ{hzeUZObqI0RXkUP@sUD<h(ozzSA27@>FHC=*yXP}AS z5>C&_?)ZB;`vm)0AES8l7UtY_jcW7DP3}Kqt*!j3d5#qQj?FMkx#n0zsIV+S4Kfus zm?Om>i)?sCjabrE$jzpiRmyv_fQhA$<F?UX7{<arkNb_$Z|;ObEhj%RbzVYS!g3hu zbn)d%`GvHX4McbHSx*MqeIj(-2;SpzDf1pPGcl|dv)64u_=ZhHUCI@eAgSIY#N-<i z^1WZ<U&5*|omXUWMy`}&{mm)Kpo7$G>k~5i6wks4`NZQ-*EeJ!A)0v}Wl@4uwUj;z zKJye^_$o7CFzkO%q6LN<H3vBG>yMT6Gqr0yA5&pE^WG1xv24hJ@{oFnwW`0bMDdZ` zfPWHOK7?6XwS*hPDQ^cuG3k=R$13L*wY4Y8CX2LJS>itgu42!WQyx(ULoi$}q_Kpt zGVZUv66w&X!)`A>ll*H3>Myi$Ws!0eP9?!-A|BAa{!hg?Z|+_es3Jw=vCe%<6Ry7d z_bvDdFV;SjAm0VV+d~PYA8lZF4!7k?yLqfF$Vw-eC`gXbCfRdXVQOynu7)q!gjzZ6 zLFyefe*eWsMs`vt>G1MRr3-~6O8YV&3St84xq)w?WKWGSjaNPwT9GemrR#2lW@BjQ z+w<bD6b6hu`jT$Orzs2be%JZQo+_l!2+<=F#>}B1L=eC?%B`CgT5ks&X2&d)rq3^U zK8if+y<@!OeG4HPkUE(+G4M|-*;S{)U78@>8!@^YPBGty@c)!))|QLwR+c{Ve3Y({ zF`X2|js@}kNyWY0zB_^sqtL$lsYIS>{Mu%>PDKunHsIS@VAU_vE1iXyYNb^axiT?c z``I?z0zVfp-Q=?|DlE{(J@kU}8Y}Y8GbHkMVxvH;!w>JnRSBr_7o|2MRCY!bhp9KZ zGuBvSQF;iCmEv?Y`Fw$^#1ZsO5e<g=a0Oo1gbq6t*I&k7ee9nJ5~8VB;|i&W%S36X zSa`}QK_-DlzG5o4uT2)_D*783qn}oZRQn$ma4}|BfJh)#9IZmwAQ+an4+?0NPI;=Q zBKJ^TjqgUYf_Iq=V^MdeLQ(UU@}8J@KsFFpS^j2;-zEZ=FyAh<lxFEzo9@M!4NSq| zg(G4?3AqjXSWVme>-9b?)Hf0@J+ApLdPDS>M%b~FS7u2aj-6On8rg;?H!7vU9MJxD zLu;sWp#v#SR&JbtYmez2J5<Gf^0x*Tqwk+OC%=14mpA^xobnBA>8<8U#d=C-sx9yt zB+y`mJiQ}@a3*|N8ixGxxff|taKreuw<7+-I$M{SA%C{6m9TznYov%d4nXzli~b-i ze4im6GG3kssYpKijp8MUH}??^#}MKrYKkDR`!tr;8#jiXBc8#Gw5BvQX6S4u7`{bU zJn$w#lq!NIuNzk`*^&#s#F#C@BjM%hy&x;TV^Ywl4`ERilhtZ!jXBPcpUq)}^2`|k zvfs8^`-fT5>=yIpu0rP2QEse-lyKL3<cg-cUz`OYsY(-t$iJCl?qScFi)oT-a@o$Q zVxtI*toGm?0VldD+;$vps8=uI_>hs;W!km%xt1BcUgaUul6pSq*`3QlvL1D-@Ta>$ zMvqSC30m2Ea2p9A>F0kG+#7R08w^_=*jdvXx;8(DZR7(}kq+(-Wu<k}=v_KOj@-$X zAm-4Ho1p%t`)M+0q<!&hz#}D5!@^+TMCVkgvJfvZXEz*c|Mqr70c&@^l{6AS`?H_j zg#~ZV%#}GJ3;0f<TQ$TbFW<T(6)W1)&lOCkRE+%x;dq)U?T$YPESFJ>{)Ekz;GeBb z(J?Hjj^RZrjojT|I>O1WS209iS6aZSOh%kBty_U`;tghc2TVkmUX?w(bNU#wmF#$z zN0|XZlcpG666#3(^%U3?{LGk@;7Rikj06xZop)f-Kf#a72=JP}J-{KRx}L^z#5Vym zQetOsrM?zd3AmLlT<Xl1qxa&&u~vA682^FPgt<+jKD7$RNJ*ewD3Q6le^7wHbTNyV zWoOl-gyTK2-SVk@io1bL|Ft%6dNW?2Mf2%4v#Iw0=$hqEV?+h-*_Go5MBgGXbdgBR z#=`^;|4Y;*X0z=VigUl1Hi(=3<5RCKPyUv;TP=RQF(`y2(b!pWd%*V0?uwbcI?=ea z8Djt?gD+CsI%lhqBJ^{2Hm7@u%wR~#FUf3(I@!RRtBX4{*VCavz)0vZ`nRc7)UjVJ z|Bk0+%D-jjE-br3t|kMiV^;HQJ-x0!vV$;{O_)E}?gPu65M06T2<xP}x}I~1U5k#3 z>}1}Ccsf_-HFu07CZ=}z{LjtB1a8&8_Iz<I38N{jMAZ~rI*KAY?4F0ziUwhX#PG~U zU!&g)e2D(~mW?kn&JXCq#2lSA3mV3ZAL_=42gdpLhH?fR_mib@<@Ka3{N?bLAh_@Z z##ViacVMf}1Lw}0Aw7|Rrf6`2WOo!7F&tnNehXE)y52b!IzxuC#x4xoLO+hmQ;TGG z<@J)TniCWzTQFlQ@QWh##MHLq?R7aL@83Vn@z{*o5^CFujo*My8`IXuTasZ^qiJ&_ z+HUR_`@cNF3AY3i#Ki_SojwKWf1*K42(a^*X6^4DTVu})_^fCA$+)%rh3cG*<Xal5 znOo#xJL#dvb&)00-?g*#r0T7psNW1ed@$kfFWZRgT)z5~MYpK^n~L6gI8!Erll}gU zvifVZv%$55Kq*!cvFFvqdg?^ukT^sZa`$9qMCXp{u%Rw#6%@Sj7foU%F;-X&@7kGX zeExKQT410s4Q933n;Ji3mP)uJ5jf6h!Vw)x&@i-z`~IssPGTrLKT-whs3s$5-i5;! zTFWAd7N63M_4L+3%l=v|_+5D_b67k6hg4@iwRiu`n@VP!v<PjI`iS?{vSu8S*}3{_ z1OG?80a_^O<4F@u+=)-6_;)2^Q9`(^P_A?l&Ib!-DYk~p`H>M^ix<wbKU?pM%1y-t zAFD54`sX9B`4Ypn%}Z}Chd(k-B^OyYEP;guvHil(7oiDKn~(m!>@%f*c#diN9kSrN z)$`+N_dd7b!(lkgN4OUA11_i1mP3RKHobHEw7j$S&Q8>ZbHwx>*3wKk6<soyW2eL3 zuQI*=Ne}e_`ZfQPl9y27aW}<l4YUn(KyG9f2|;)$XSMX4zU?oc>(Ju^$=xBdkbX@q z#977WY-PMoYGnT@F>rVJ6*Klg8wjD6T+}>dK1-F2$PYo1K5(#Xv3sOe!au7bwKZ>D zVcOA3bDaFVWON%+v+Ju0)Co<g7I@V@wCC6|_IbdMNe9X`Z4)fu*d~uQbA~lh#cEk_ zHOJESsXZ-c%yhKnBhJz*`Q(v5!|lVZhrXn6!+OiY4<;61-4XD1A1KOBC>}F(NB!)l zc8A{@+&;(m<9N>h?ou0pK{FC=8?AOs7R5syg5k~`ryd3x2j3b*Cy~E@H)Lk7^u4d* zQpOq{r5!mSk4+@@{d@gVAJE5N`&?n1Sn+u>0P=Q=4^*K5Mw$#%a0a<dwGaVh|C!F{ z_5rxV^jVH@0=#0ykzc>0Tio~mUb4)X?Lc{orkm2`nii=7K6H=zS`*plZ5&!J+8(aV zA~m2;O23%=7!a9txRa=yq7m2Q;B1R*22RU1sMBcZae-F>Z|3Z^_eQj$xy?>}sYk0= zwUvtOeGRZU-Yf%eXC>a3Q7-EsQU~m(xiE-HyxLujdZz~A^jW`hVYUEB*M$z=mhWNG zuGa8yoixhB?clPmQBz<K4G!>4hkXlvZJ<7S1IT~}-3U=(?xmBb*EbvqkTN#HGua!> zxxIobFqsm?ZlRg2^<w3QLeMyGVjGPdpX$?f1QQ?s-2Ch8hg+D71$k4K=N$MAR*L#c z>1~Q+(+zjld)M1fTSe)Z){2jonob_RAS)QT{rrrD%+!3r*~zy`y|RPqOd~9G#o>a+ z!Ns4`0-|wRJarO1!4r9dbhcgbx68E7W~Ue(tru@D%A(`de`dnFHh@~RWNC9FCLYR5 zv|hrn;t?3O?NzsZ)|a0;$ED)wKVWi`;_*i-P_i>Myc?!6DXq90Fp~qksN!-|{RR&% z8VKU;b(C}IO#(7`gof}p$!UzWB)Y(QWUk6osc~rNzn{@zc9Cw}XTwS)5YgBEk;IHC zf^!<gifdVmDiA9aJu>75%pc0flSH!KhYdPeLq?x@#U3}-B;)ic!Lf?<Nt|>1wFo7R zQ*H#C7SkLau!M9b==Ze`?-J(^W5z3G2O-XEB@Z-va}6#Q+VGAK%(AP@-t}#*R>0wm z5r|0xbr`5^=K7au5`6=|Z5f4+kYZm4i2EfQ!o3NwBm+@~9Snp&tR%}(`^W_uOeW#F zgBD}%$hQy=8j$V=<pRpRuc_Mp4ae^|swP;c`-+XaJHgx4I5QdZMcI#MZT4D>6ubhr zK~IBvCa(hDNLFM7u?{(`Sv09Z9#5V-{4Nk&N5G$`P=~FV>B{&i7!{0=vp!Bu)EMss znYXzpGsV#su<ogeqa846*>JZ$jZ+Fo2CJXI+Beb)mkjsA--Tlj4ZtWB|6ysm42oNW zG?Ipn;CX-wY?je{g=SVy$JDV^q(lMEhhpwHb0V#D(9?0ii<&j!ZZoaS9t)}q*Alz9 zjLL7TsV%^7TcI!qlQyeik5Z6W9nJ~#MvI(s;(0533>cdmDIF1K&mA#)GE5qbJKqR` zBN^5jK$uLYUs-6Ar}tFZH??_1<KLc4HptG*LC`JTl)g5^Y3%#Xk|2&gTvzLq{9<n! zbzjz%ygb^SG=coF-mPzFljs(E3||)*uCQYD5yBloZ%JAa0t%33PLh%0j)%~_F0Sm* zngM%K89h)mVcXx$E7}2dRaTOAoni4PRC&AjZbh&AAW_W{q+!6?i>X~UzJ!Y(|9FC> zV-<J_{gSf|T`#fcg-q_J{LMRepl|E+m{ROww5{W57rUjX@HimJ2126}%rarVH(%`@ zjP&#*v4{HK$;V5rL5b%C>^WH%%M3+d&YJi%f|LUnLd3XWU?6WWonv?dv^5Yg-k+<u zQC%i>9o-8MZm=>*A5i%7C3!IJ%fx|wq~;;sk7}YWRwbqOkLfF;<B(pGE-risALT?T z2<7F^ZO9Z(UIc;#**tR*lOrEg(!+o>grG2)2Z}gGG<{n`9IqP{%EQ25O*Ay`T&L~1 zVffZE0YUBsnkd39MJv=df9&bzZZIeudnJA^UYp;!B{uv^3WYhYrN}h7jD8959S6u} z1+E<dRg4`#FGpRuIk|!g)x5I(+Y7*QfOYF`xBI}_Po<N4aL;xaW^N`UHo6_@v8<&E z=8cP1mP8abv}L1rof0D!+!by`O2hzaRsZ%l(aZ>LhiwDzI!aS1W#$wwXuBYB2s<4N zMmrj$V!tZH84mw_m^&3I+*A%+<@3dgr3OqhCb-L3tW#$oS5NUbTpt#K)0`@ZsHulh zbJ~~N+Rk`)NU6%#*H?<ZTg)bPZHsH4<yK0zg%bel-#Vdwu|Pfp6t^bKk!b`{QnPdN zVHTGTvWzFS5hEIk679t_?YVK72WvWPkY|4?_P6W$tSy-uDwK-JJLQ0qv(D_JGWmIG ziD>P{Y+sjyj-id2`!@UcJu#LZD;htr=zzIVfZPeCmS3o&@$t|;Z_H@72Lyxv)Bzqr zVM=s`>~!0kJ|fbEJR+6>y6*`-H!Ff`&<{2>X?k3T%UN3An3`%e7B97iW9~Rkt#)q) zM_$0iByAWI7uSYi@}k;bQFfrtTF}TNohip*3T@f~6f_ZL5@iG$L(p<QTY#o0ugNED znt2cl?lie@jVx<NW;rP=(Yp&!F1|Fq2ozx{mt5XLp`<dYdOyv5(Bc7D<%lhtgyZXZ zB8s{90n`iNF)Btk91hq~yi4KG!M1qm3+blN!Om47YbkBVwCpXf!pEI&fYOqE(FSlH zjBEGI(7m$6JIIN2&7dE%({UlD*-T(95^-Q&>gYL<e>_|;7B9o14#l=2+(Dfic;Q-( zpI?fSGi;3Btf8U@<gh%KYBujJJ*S1PZNnfAn*sjNc9W!?zaf0dz)0brTl)b~uyD!) z!Cn?M+=woxYl8>2i)!y_z6SQbQP|KZA`tZKWE(wI6E5X?(3QOP4G}?)Q~}C_;u&y8 zSe5oGh@SewP*`te;hwRKnSb<3=DY5XtMKP;C^pz(P1vx<(-b=1)hNO@Pr~giSe4ga zu3S#9281(-(4J#;#W3oX?|XNUO{})68szWktgAKH(=c7>!8DV>A&I!wgLKK-B?Cx> z*XSDARy&dm-oqk$N(4vt8cBp$N(DZLQ7q3pw-2g98`?Y|MC|UPsl>Q@ls8!KTF@t> zAkg9IBb*w^pFyODD27$8)N(G;Sd0{l%U+<Yx`*?&mhVgZ0I8LauhB%<X+eMfmMQt5 zwS4%mE#o)us4!v~OIGBw2g31NM%hw#{^D<|)&M4Y2aq|GJ}d?<>l=TFrQATY5Ge5T z=Wfbl7a#aPZjfs7m8Z*)`vm{4v@}`STl^#0#_4V6hD4NzsOP)F)q}I_t@l!PijF1; zARzz%%LI;V@D0S5$tnnQH&U^9qF*z<NH{Q?a(KgB4|X;uXF6siH!@C(v>()a2!WJk zTLfkPFW{JF^=Ob)t}wSjD<0KDqkHzoMB)Tz+MDLu(xVoyEXzgd+h^BkBp*<1LGR_P z=Zj`$m;eYBQ_{(G{|dIPag+%pkh~BhZyun=<}|;n`=RM7hR5;Z?-EdGA0GUBc5=i> z*=9w93rm7jq4Bf&@(YoW%1W^0jfAmp!E9}%<PZoR&Pj*72$v1DBr`>0LH7_<83Ru+ zYH9i>>AJ(LJD}j`e10NRusbb6wGS)|0{a$RsekwyAu#2kW`-7iIkDYXreqc4*KHAq z&vA@#ccu?GJ%85;(^g&Wk=w9)a7sHLt1II|B#zeL+T+j*bR-2nBZnLDBye`!jBFI@ zUCpNfMM%g<s@><?srCBgaq{DOW7DjD8-UfMFY})yRm#V=C;>eHeK5(HxP@dH9yVl- ztXDMl!TS?ulHE|ts{u-kvlYT>d_hB9C^%J<868}seWe7MU8@-aGvUk4gt(G>1K3;7 z$uZw-Lq=Y5;T*wntMRAWp5pJkWoFe81&zw4RCZu9!a1GjMLDfoxJsMhl}9><kbsvK ze98{!IzLrT$~Quc?m8n&9nHNE08^<D%e7@%2NJldjRk?QV`^y=d^&KSXRItMl3ebw z%_Wf<`^S<bykUn&^7xx6F{yb6HEepE?K}vP@?89_2&2vR7wb@Oza`-UAD6RigHY8w zrEB#*&LCRF)PvxAvp6<PK<k;<3p}h&n?5y5t6ga&am-fk?hzMs<GoRM!Z76yn@;lH zyT`SC&~AT!qX9x9y9=V(GO*alt~H#Aded17*QX!Lg7Q@@%jT}rnxY-22=8^3U)$r> z0&gK@?|Ks2xEzqD;-lpy7omEMt1!)`Gei7|%7wVa$zL%va~}VfOW|Pr|F{%J1_nm9 z|Ai?W_bb*CqxL**OB7QXIlrKk;|E<kdBhHl<ZpLWMfbzcxT`H6vUOb<on92lJ?VSg zx}ypQui#*#b1OQ+t#V<(hs!HC&27sxqcqSy1o&H&d95X_lrvIzBOHyj1&|3$L_D4$ zuV!`LdDS2`ZWgIfk16~>RTPfua8F+C%u3&Z7R*3fUgVsg`tPquZ*mg$bf<eo(Yoz8 zn+K2sKoYF$@lf;mEpM#%uW!~eCf?S^Vhfu$!gla3H?x8d6pQ^WKJL2^3vB678!5x} zMpupsN#$)%f94x*HTK5I!%Q0<M21^}8<h5eVlubPR_o=3_XkKKY!w~uZek9_NbuXr zM@BX7uF}wu*(D0s3kNg3l-(v(%sR@8M5TR8cu)0h9V@!|?_<sBjA=^tW`tsj6?`b3 zEf0#k7tWo=0Ci1RO8OXL_Os5C89Vovo!|}3E9>C&C~Kr_wXC)UJY`ECJdUAiZpkaI z`jSPZq>$!Mp9YHUB|%|gq(|rlI6+J~r6<&tnJ~!-1cO1kAd70vKrxpY=d4leS80Fi zS8X@(2Gj{fAqp0%x3&WA>X||Y7$b4M3!HKqN9c7bgh6n((Pq&g_ZH|j8d*sn)<Iwm zF$xiBcEaN${h8{I;`1Q#I!=$gW|0tE4IY%zQbCLbMbjC?uv#20($8eCLPaivNV+yA zJthk+fZv-b#t!PzkKEb8?#0_I>~S$y+<u$Nqhc)#zL`wo%$TK2L?Okq?c%kf<&_y1 zE18!0P-;<eu@xs%;Q|c8^N-Tok}B*(qq-9^c@`E<5K=>@XXwKkr%L?^`WC;fphjOn zL7u$>WIXBJNHEsT*>(vl>-GI&e5U@<xd7|LqJG+N#drQs;E9=|<JRb}wZE_+MqIft zv!y_!IvG&*)nn=VfQWiuY1QA!&&h#E<t3^PGfRgbG8vBUA4NC#`Vg57rz%Ip{$yQ@ ziZKw#v&D_WW)vE%*jy~Ui|=kjL2^C<3f-Q_(fsuMEQ|3Sxag?8JWX`BXdzJ4qTX(N zbyVFZuWWnrBPKxH8Uz~f0#8~=na<f`rm=J|k(6-O#;tVl8A1>2B;*X;Lv01(*b694 zY=vpQ%CHzuQ_GyBw@+adQzV3~+y7-9evx+~i%2tz*QK7cV;l33V9yVY1-(?~n0F>k z3j`7dIUgGTvpBAVV`>HXZqO6`17+fh(#PH8{vnOFuZb^fWpeBN0g~Y&z&;6Xh?`eB zc1@Lgt>WDGr$0JRkeAI>PQy945dF3zx+6?#<gSV(Mzml{X>JDOI3?CVe#eIc6BRDo zsuUkCl)>(4<P1!)@RDlvBIq_sT&?!e3oo$|hNKl4U5g5)0#CPld){H9;8-QAgQB00 z8FBagnlD5}1)}QMwagt?*V{IgY!1Z7TyF1`@5<#|r(pRh)pFO2*oqe>9=H-d8!}zz zB>0^jkF&$HgP%Dfvhk%H&e8OJXNnD1j?~L$U}<)|b@JT~{?iSYRM(8K{Og@s2tKIG zGY;sUIxVk`qD5_u-Z#E@A9Qc~v%BKdd!uUzxLiCaRg~+a->SnThvSdZ;OO6Ek^q9j z=U=!%y<nLy9XFh)lkB0d&LyWqK(3C496%QySMNoH8y-(8Y-0Sx6HN6v9C@DI>X0{# zS5WI@fMSqHbC1hp+n#-)xD0A%s4HGXCtGd?+8@gKZ~)d%v|@}UDO0ujB%jrV(}UMb zO7!d4K2X25)h2RgpAmzV+*JWR&#(sAO@ImX2sID}`}K>^QvNvLRTX#HkQmp5COQ_m zkLb4%_yiFv&ox9@Pr7)NXj?!mmz5JPl}p>*MqkWrJI?eiEw(=JRI0!lE_2?Mq$k^D zIJ8hee2Z7M07i72(H7JzQRwz_m4eRvQq#k&$h%p3&bg363jdIlap74+t>)m?Bq3ml zE|63{$|b-(&s9(#opiDYjt~t2D$Z733+}rHfs!Gq#rlE*P6edJc~xrs#&mDABHlIm zF`c+~CK3>Btx{Ov3_yDK!YH}A0~XFX!h-(;i3FwPhRoN?)Ro$Sx5zK0WS!|bP!%YA zIVaoK<?fs_LFO>(Zaj#`;cKgQm@M#C6FW)Gr|gQfAh_8;09&6J8>9H}u&o*4fs#4L z8|J)v+<OkPBfhK_ur6e}kmWAujFit%Z#$)MI{69;;YC|#EuqQk6U3M#6{?AfCnS27 zs%-zfdN5Wn(JWNavC9Y(e3S*(K}{Y3NB&im(g<gxcjX--f=$RIqB8-Zk@eE`y^Z>} z$?0YN4`b)loe8uoz}Pk?wr$(C?M!Ujwr%T+olI=owlPW0+_(F19?p;0YxV9`T{T`H z<Vjuc1P7INQ|<3)J=0}M7vn27?-aHM4Jj4u!bCbpn*LnDz0d-wKT~Q5yOBWm_5uUR z)6$QU=b(1|+$bf3_u7=fOdjX(g8{?E;~G`Q6-K<&v^e-XR=NJx!=saTNJ|VX0!`9Z zaPHb9#x_#tsC=om{D5rN<NVkrEAWPw?dsVik*fcr)#0JLupS?6egL1Rg<mJb^Em+Y z^Rj|NQiYh)rnZN{anEB!r~hvEA~s4fXQ1tQO@Id}DThxK;QEnHa%-8V!XJu;36dw8 zB3)6R2}yhT0*^6Fwlo+mW}aKL)U(FEC=eV>DMEUO4>}%_g761%vc7NodmsSuz8=*O zkX)Td4vSNB^x_D;tdj_D7=-XLGh~IYF&Fmq@-*-+;{@GV8#JEgD){}{PDor@+NjVs zhCo>B+@aDT)!iekwO<A`Ed0Y|)t-uMWgpRc48rp9j-oJ3Yc%YdUTMNUgXI2Io`@Yz zcTsb_z?hS+F3GtxH_Hn{?wUwASI;l;(){TQ$>uAd&&U6jxVemx52pJV=_RL7>}U@; zPf_vhn5;@hg90+J*s8@AOdA2{fnbHEg}vRC?Op)OV>V~AR5po`#e0D7ur#jC+{??9 z|5x|!fxJmQSh4KrE;=B>N@yW^@?G8!-s-G=6mt5U*d}XtPd|L1Wo&-x^|`tF3!~F4 zjV?Qy)~>pwKyTknX6$sGCEz>{ZgYz<wr{YX5*3rqklyDtqlNQ_X?z|rlByB`%D9-h z1gz7uOSt2>GW6nam?jkTcqL1P=^(oP4c`p+$#Px_Jdy)L%i4$jF#_1|tZHfEo%b`& z?uJQ0lRyRA39-DcZ^bI%hMkz@BWT?`M+O-uNG8z6H(cf2rDHIqeSK6ylKuXIPc$?U zea}p)#wClyI+Y2LS0Z>hzqbHL(Uo(B6s)hp#fUkF_G02_#X<j3BqeGkFs$#r;)TD! zT2R5uvg5(kqz^VTbL*x<U>%7LTH|~`453j7s&X9sOBm@9(mrR$qaEDX4Ph@f7?e<1 z@m$OmIKmmb%F}lf`rAlZn?DH$?MrNAB({o*Qsxhla?kYp{KaidYBO0IVMn<b)4Wi} z<<v(wP;ey+Zcd5K(Y<5ZvlK15I06Z$vv};{PCnzK*`W`?hp3AJO(%z~WWw~k*KWJ5 zr}1U>OZb`1Cfp>(PWcqNA$U!?-}4Ooisi109{#jxGK!zvFU9#J-m@oAiRZ`|AquI~ zyiyXb*q}5arL*qtU#&h94Nxi8^7=wQ(BnPj@_d_6EJ!!wA*D}UJUA25p1IVSJq|?V zHtPXyWIqKlj%r=ap#6N?GiKe<5+wutyMvSVPmG2#{V1O=3b*kze~7lxs}sx$Q-tcG zbenDeOg4=-x0>2oy~3nGnZgfS-;ZkTcv573{gkpL4<P9XS{v-`*qq-QFZ2@xxjlT9 z7>mDS8kw4bU4Zc8=mx+|-=Qt#Fc_}dOA#ov0A~;#XwES7%UaftYESN{EmrmWXXUma zc*#%+S|o5;&x2NTL*^_R9*xj$a&=?T*)qPIsVy;K^;Ca6XQLSx5lJ3DOsLtg+Chsf zTM5gM20x=#SFi;ik-P-1Vb}22MmFL&Bj06-HQN>*jTT?#%}%;L;0gEJ>+6zzquXQq zvn^!V>H%!q%$#(<GvwoSx=HSOw#s$_%hf$kjYd(+it3Go_$m{BN)0t+=M?S&I&%yr zN%Vr+3*(1-VWLiDKvQv0C;gU433Ehv;0qTd8vW#mlgS7xJO%|wU4{R=6AZupREL?2 z7-%<qF9R#9yYWxOxe=im{0Wz2TP$|<nZMt9gJ0M9i;NYw?4Cr$Ts`8K3o}h3lWkMb zQ1?t^XU_%NDA>5nv{$L=;4D0_2{G-|c$H!{gu0gXj~4W9?~t@CmAjt{j3sdKRfW!e zv=9o(J?g~%wxj%)to~Y~*i)W>oRC`&=MUW9lsO~?rr`(Vcw7QmoK;VIv@U(tdAjLG zUdJG8gtZrSEu*+zb@5oNXF|F1dj9<fw(BA)+QgCz#DrO<=^31&$&pJ+K4(mdVHlMz zQKn-w34gc58J4hXiDy=Gi`J7JtFWRU!#IK(Ci^sAR?0<%KnY8lKjuI=03EX)8T}oJ z19@_~Ur9Afu|Nb-Ldia(`Mo^C`SO~LFLPwl#o~F@koI!z3`Rx1l<#*3%9d`THk0)6 z3c<wyBsp%5FBahOO1=*;(L*9I5tragZ|(|HY(=jsDixRZ&N|RG?~+o*Ss^|>IF4ky zk;34ZkutdQZefQxyDq@8enI!#?Du!8KZl)lIn_l;K|&uYM4h<QzUo4^A`6E!bEQ0? zBYdnD`2}*q8V7hb&SI1Qodpl?DcR*ypa0eZiuKC5Fi;G`_`Y0f!U^n_5pM87!3XUM zQ3{sjvh1&Aw5#K_<4?~(G+$blxw@^KCHVZ5=F>VPN!_YOe2^D<*vH{vGN=%CVS*WN z=x$c(U~;0V+^4Dt%+(`Q_zII911}5**2Vd*{Uesx7s~Lc(Qk0%Y&Bh5dB$39G~9wh z+-zyUB2DFnVOI2nadXT8XW{74MIKz)i^sM2ouf%X<H8gVF54Bfv&sYW1DHh>?SLBX zWnD>Se61QMA>I4JEe+21ELHOr`6XBQjRW$pNz*7)<`RYa4kSuo;<YZNC;<S?-GIgH z;3cay?-RRdj)_YRnP}pE(B_2=<l221%CPU$kuVx$FIr#)-Oa|p%Ph;7DctO{4UH7~ zOJgrOplb`?)BcU!5tQM+dk*KQv|YP}ZGQfv#C+vAB+36z3zFK0P|_+MC`qE(C8~2> z5Hq6;mpsg}h1)rU&_e{ejWuh69i>}#Hm;o4b*e4Z-<0=IMSx@n)B$B?l}AwEGa!(o z(jvqWDw9;b<070bRR3x5<XU6{iBqVL7rK3K%<7=x>djRu%$^>4GfNED;0?B3$O^~} z;452p<o4?dh_oblxC<}HzkQ-A3kVoS`+EsZxiHY5=?7isk#=*&%DTR~zT(R<-sEF< zUk|MZmqK*(mi&pG;6#Sa2-JKuIwwr%xe(DAxES>sPvM=LYu_hZ$6`x~|4ld+HsvC$ z1ow3rZ<Sv#+*~_aVPzZS82;)A_;|qBUF@1y3O292)7H4{rV07ofO_9H^Lu;9*KWR+ z8kJF_DbcS_&Hm{lBFN2TbsqnVJYY%yb!JI}vKHQyBbRFH+B-{EjzOnuu1wrk{}UMS zDD}qflxBd$Kq2ycXPDFl<Bd--^dopeWKL^|gqDAUlBz3s#aB8Xjv`g79|EzW$f;BH z@57w$5WH(s@ylog_gkrY=^?ArORdYc{_Y~3EcFim;Ni15Kkg^iBRTatmc={e2;)z) zRNyoxGMpxX(Zegdpymn&?fKj+5rSunyNf94P8&@PlQ|@_DIcn$A-lq+?;u&0A&vfP z(zj|V*!Nl7Ud(X|F6#Q`L`=Te(xKpq#U>)$HbN$?Zda;6Gm=~Vl#j!-nNcE{z&Ho> znHbRUDRA%gPZX+7HnW!$ii?E@5=axld_UT0Z(Vy{R}iJ8H==cY$!J_8Z6C#27ZjkK zm1}*(sj7ETfXv=8+w~`r=^K%H{jQ}ktD&Yvuk1Go_@S7JBMK|v$5oRl947b}D@B;} z)i0s10Z7{tVC^j2a7KRzeU~fMbB+C!bt%{-__-tj98AfWfmBC|;%0AOtW&_A%&4rq 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%0DT{l6onCftNEM)Oy8Z&B)wc1j#8^S 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%0DqhpK?ss}n^OexdhTAmH)F8|Tgcst-Bt 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%0Ad!h+CnLWc9-!|0Yn}Dr%J3S5hP<~e1Hb8@x&kS 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 IDfE~B4@9><+5i9m literal 0 HcmV?d00001 From 16d078369cbaa213f741f605495493c364f4bbfa Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 18 Sep 2023 19:05:49 +0200 Subject: [PATCH 0497/1034] renaming files --- ..._Series_Datasheet_AT91SAM_6175M-ATARM-26-Oct-12.pdf} | Bin ...X40CL_H 20220301.pdf => W25X40CL_H_20220301.pdf} | Bin ...Family.pdf => XILINX_Spartan-II_FPGA_Family.pdf} | Bin 3 files changed, 0 insertions(+), 0 deletions(-) rename doc/datasheets/{Atmel SAM7S Series Datasheet AT91SAM 6175M–ATARM–26-Oct-12.pdf => Atmel_SAM7S_Series_Datasheet_AT91SAM_6175M-ATARM-26-Oct-12.pdf} (100%) rename doc/datasheets/{W25X40CL_H 20220301.pdf => W25X40CL_H_20220301.pdf} (100%) rename doc/datasheets/{XILINX Spartan-II FPGA Family.pdf => XILINX_Spartan-II_FPGA_Family.pdf} (100%) diff --git a/doc/datasheets/Atmel SAM7S Series Datasheet AT91SAM 6175M–ATARM–26-Oct-12.pdf b/doc/datasheets/Atmel_SAM7S_Series_Datasheet_AT91SAM_6175M-ATARM-26-Oct-12.pdf similarity index 100% rename from doc/datasheets/Atmel SAM7S Series Datasheet AT91SAM 6175M–ATARM–26-Oct-12.pdf rename to doc/datasheets/Atmel_SAM7S_Series_Datasheet_AT91SAM_6175M-ATARM-26-Oct-12.pdf diff --git a/doc/datasheets/W25X40CL_H 20220301.pdf b/doc/datasheets/W25X40CL_H_20220301.pdf similarity index 100% rename from doc/datasheets/W25X40CL_H 20220301.pdf rename to doc/datasheets/W25X40CL_H_20220301.pdf diff --git a/doc/datasheets/XILINX Spartan-II FPGA Family.pdf b/doc/datasheets/XILINX_Spartan-II_FPGA_Family.pdf similarity index 100% rename from doc/datasheets/XILINX Spartan-II FPGA Family.pdf rename to doc/datasheets/XILINX_Spartan-II_FPGA_Family.pdf From b0ec0ee60bc4ed5582ffceb7a6d6885ed53ee537 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 19 Sep 2023 16:36:39 +0200 Subject: [PATCH 0498/1034] maur --- client/dictionaries/mfc_default_keys.dic | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 241581b69..0578bfee4 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -1029,6 +1029,10 @@ F8493407799D 6B8BD9860763 D3A297DC2698 # +# Data from reddit +34635A313344 +593367486137 +# # Keys from Mifare Classic Tool project 044CE1872BC3 045CECA15535 From 6ddf283272519b778fa2b65ad892cec2cf5853a6 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 22 Sep 2023 23:32:50 +0200 Subject: [PATCH 0499/1034] adapt wait after ATR down to 1200 ms, and retries ten times now --- armsrc/i2c.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/armsrc/i2c.c b/armsrc/i2c.c index fbe625e14..42ed50910 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------------- +// //----------------------------------------------------------------------------- // Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. // // This program is free software: you can redistribute it and/or modify @@ -42,7 +42,7 @@ // 8051 speaks with smart card. // 1000*50*3.07 = 153.5ms // 1 byte transfer == 1ms with max frame being 256 bytes -#define SIM_WAIT_DELAY 109773 // about 337.7ms delay +#define SIM_WAIT_DELAY 88000 // about 270ms delay // 109773 -- about 337.7ms delay // Direct use the loop to delay. 6 instructions loop, Masterclock 48MHz, // delay=1 is about 200kbps @@ -199,7 +199,7 @@ static bool WaitSCL_L(void) { // It timeout reading response from card // Which ever comes first static bool WaitSCL_L_timeout(void) { - volatile uint32_t delay = 1800; + volatile uint32_t delay = 1200; while (delay--) { // exit on SCL LOW if (SCL_read == false) @@ -596,8 +596,9 @@ int16_t I2C_ReadFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t // sending do { - if (!I2C_Start()) + if (I2C_Start() == false) { return 0; + } // 0xB0 / 0xC0 i2c write I2C_SendByte(device_address & 0xFE); @@ -605,18 +606,21 @@ int16_t I2C_ReadFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t break; I2C_SendByte(msb); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; + } I2C_SendByte(lsb); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; + } // 0xB1 / 0xC1 i2c read I2C_Start(); I2C_SendByte(device_address | 1); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) { break; + } _break = false; } while (false); @@ -727,7 +731,7 @@ int I2C_get_version(uint8_t *major, uint8_t *minor) { return PM3_EDEVNOTSUPP; } -// Will read response from smart card module, retries 3 times to get the data. +// Will read response from smart card module, retries 10 times to get the data. bool sc_rx_bytes(uint8_t *dest, uint16_t *destlen, uint32_t wait) { uint8_t i = 10; From 3d92b44047c67c338fa78b0755124aa00733c285 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 Sep 2023 21:30:30 +0200 Subject: [PATCH 0500/1034] reduced time out for SCL --- armsrc/i2c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/i2c.c b/armsrc/i2c.c index 42ed50910..be72657df 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -199,7 +199,7 @@ static bool WaitSCL_L(void) { // It timeout reading response from card // Which ever comes first static bool WaitSCL_L_timeout(void) { - volatile uint32_t delay = 1200; + volatile uint32_t delay = 800; while (delay--) { // exit on SCL LOW if (SCL_read == false) From d8817f2cb21f9afb99f5c56c7725b56ab6f5cc0e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 Sep 2023 21:31:48 +0200 Subject: [PATCH 0501/1034] style, length checks for getversion, bit comparision --- armsrc/i2c.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/armsrc/i2c.c b/armsrc/i2c.c index be72657df..0318d783b 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -262,7 +262,11 @@ static void I2C_Stop(void) { I2C_DELAY_2CLK; SCL_H; I2C_DELAY_2CLK; - if (!WaitSCL_H()) return; + + if (WaitSCL_H() == false) { + return; + } + SDA_H; I2C_DELAY_2CLK; I2C_DELAY_2CLK; @@ -278,7 +282,11 @@ static void I2C_Ack(void) { I2C_DELAY_2CLK; SCL_H; I2C_DELAY_2CLK; - if (!WaitSCL_H()) return; + + if (WaitSCL_H() == false) { + return; + } + SCL_L; I2C_DELAY_2CLK; } @@ -291,7 +299,11 @@ static void I2C_NoAck(void) { I2C_DELAY_2CLK; SCL_H; I2C_DELAY_2CLK; - if (!WaitSCL_H()) return; + + if (WaitSCL_H() == false) { + return; + } + SCL_L; I2C_DELAY_2CLK; } @@ -302,6 +314,7 @@ static bool I2C_WaitAck(void) { SDA_H; I2C_DELAY_1CLK; SCL_H; + if (WaitSCL_H() == false) { return false; } @@ -459,7 +472,7 @@ bool I2C_BufferWrite(const uint8_t *data, uint16_t len, uint8_t device_cmd, uint while (len) { I2C_SendByte(*data); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) break; len--; @@ -602,7 +615,7 @@ int16_t I2C_ReadFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t // 0xB0 / 0xC0 i2c write I2C_SendByte(device_address & 0xFE); - if (!I2C_WaitAck()) + if (I2C_WaitAck() == false) break; I2C_SendByte(msb); @@ -723,7 +736,7 @@ int I2C_get_version(uint8_t *major, uint8_t *minor) { uint8_t resp[] = {0, 0, 0, 0}; I2C_Reset_EnterMainProgram(); uint8_t len = I2C_BufferRead(resp, sizeof(resp), I2C_DEVICE_CMD_GETVERSION, I2C_DEVICE_ADDRESS_MAIN); - if (len > 0) { + if (len > 1) { *major = resp[0]; *minor = resp[1]; return PM3_SUCCESS; @@ -775,7 +788,7 @@ bool GetATR(smart_card_atr_t *card_ptr, bool verbose) { // start [C0 01] stop start C1 len aa bb cc stop] I2C_WriteCmd(I2C_DEVICE_CMD_GENERATE_ATR, I2C_DEVICE_ADDRESS_MAIN); - //wait for sim card to answer. + // wait for sim card to answer. // 1byte = 1ms , max frame 256bytes. Should wait 256ms atleast just in case. if (I2C_WaitForSim(SIM_WAIT_DELAY) == false) { return false; @@ -869,7 +882,7 @@ void SmartCardRaw(const smart_card_raw_t *p) { } } - if ((flags & SC_RAW) || (flags & SC_RAW_T0)) { + if (((flags & SC_RAW) == SC_RAW) || ((flags & SC_RAW_T0) == SC_RAW_T0)) { uint32_t wait = SIM_WAIT_DELAY; if ((flags & SC_WAIT) == SC_WAIT) { @@ -881,9 +894,10 @@ void SmartCardRaw(const smart_card_raw_t *p) { bool res = I2C_BufferWrite( p->data, p->len, - ((flags & SC_RAW_T0) ? I2C_DEVICE_CMD_SEND_T0 : I2C_DEVICE_CMD_SEND), + (((flags & SC_RAW_T0) == SC_RAW_T0) ? I2C_DEVICE_CMD_SEND_T0 : I2C_DEVICE_CMD_SEND), I2C_DEVICE_ADDRESS_MAIN ); + if (res == false && g_dbglevel > 3) { DbpString(I2C_ERROR); reply_ng(CMD_SMART_RAW, PM3_ESOFT, NULL, 0); From bf7ac0b8ce35de8787d497d79aa0313b6b25bc22 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 Sep 2023 21:34:51 +0200 Subject: [PATCH 0502/1034] in prep for new firmware, no old v3xxx supported anymore --- armsrc/i2c.c | 68 ++++++++++++++++++++++++++-------------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/armsrc/i2c.c b/armsrc/i2c.c index 0318d783b..7dd2a525d 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -502,13 +502,13 @@ int16_t I2C_BufferRead(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t return 0; } +// uint8_t *pd = data; + // extra wait 500us (514us measured) // 200us (xx measured) WaitUS(600); bool _break = true; - uint16_t readcount = 0; - uint16_t recv_len = 0; do { if (I2C_Start() == false) { @@ -529,7 +529,6 @@ int16_t I2C_BufferRead(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t // 0xB1 / 0xC1 == i2c read I2C_Start(); I2C_SendByte(device_address | 1); - if (I2C_WaitAck() == false) { break; } @@ -543,6 +542,9 @@ int16_t I2C_BufferRead(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t return 0; } + uint16_t readcount = 0; + uint16_t recv_len = 0; + while (len) { int16_t tmp = I2C_ReadByte(); @@ -555,51 +557,49 @@ int16_t I2C_BufferRead(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t len--; // Starting firmware v4 the length is encoded on the first two bytes. - // This only applies if command is I2C_DEVICE_CMD_READ. - if (device_cmd == I2C_DEVICE_CMD_READ) { - switch (readcount) { - case 0: - // Length (MSB) - recv_len = (*data) << 8; - break; - case 1: - // Length (LSB) - recv_len += *data; - // Adjust len if needed - if (len > recv_len) { - len = recv_len; - } - break; - default: - // Data byte received - data++; - break; + switch (readcount) { + case 0: { + // Length (MSB) + recv_len = (*data) << 8; + break; } - } else { - // Length is encoded on 1 byte - if ((readcount == 0) && (len > *data)) { - len = *data; - } else { + case 1: { + // Length (LSB) + recv_len += *data; + // Adjust len if needed + if (len > recv_len) { + len = recv_len; + } + break; + } + default: { + // Data byte received data++; + break; } } + readcount++; // acknowledgements. After last byte send NACK. - if (len == 0) + if (len == 0) { I2C_NoAck(); - else + } else { I2C_Ack(); + } } I2C_Stop(); - // return bytecount - bytes encoding length - if (device_cmd == I2C_DEVICE_CMD_READ) { - return readcount - 2; - } +// Dbprintf("rec len... %u readcount... %u", recv_len, readcount); +// Dbhexdump(readcount, pd, false); - return readcount - 1; + if (readcount < 2 ) { + return 0; + } + + // return bytecount - bytes encoding length + return readcount - 2; } int16_t I2C_ReadFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address) { From 44fe3ec38f4d763f867ad27c2f6022deebe895b4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 Sep 2023 22:09:01 +0200 Subject: [PATCH 0503/1034] smart raw --timeout parameter --- client/src/cmdsmartcard.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index 55a3b62e4..cf6cbe67d 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -355,6 +355,7 @@ static int smart_responseEx(uint8_t *out, int maxoutlen, bool verbose) { smart_card_raw_t *payload = calloc(1, sizeof(smart_card_raw_t) + sizeof(cmd_getresp)); payload->flags = SC_RAW | SC_LOG; payload->len = sizeof(cmd_getresp); + payload->wait_delay = 0; memcpy(payload->data, cmd_getresp, sizeof(cmd_getresp)); clearCommandBuffer(); @@ -504,9 +505,9 @@ static int CmdSmartRaw(const char *Cmd) { data[4] = 0; } - if (decode_tlv && len > 4) + if (decode_tlv && len > 4) { TLVPrintFromBuffer(buf, len - 2); - else { + } else { if (len > 2) { PrintAndLogEx(INFO, "Response data:"); PrintAndLogEx(INFO, " # | bytes | ascii"); @@ -907,6 +908,7 @@ static void smart_brute_prim(void) { smart_card_raw_t *payload = calloc(1, sizeof(smart_card_raw_t) + 5); payload->flags = SC_RAW_T0; payload->len = 5; + payload->wait_delay = 0; memcpy(payload->data, get_card_data + i, 5); clearCommandBuffer(); @@ -950,6 +952,7 @@ static int smart_brute_sfi(bool decodeTLV) { smart_card_raw_t *payload = calloc(1, sizeof(smart_card_raw_t) + sizeof(READ_RECORD)); payload->flags = SC_RAW_T0; payload->len = sizeof(READ_RECORD); + payload->wait_delay = 0; memcpy(payload->data, READ_RECORD, sizeof(READ_RECORD)); clearCommandBuffer(); @@ -1103,7 +1106,7 @@ static int CmdSmartBruteforceSFI(const char *Cmd) { smart_card_raw_t *payload = calloc(1, sizeof(smart_card_raw_t) + hexlen); payload->flags = SC_RAW_T0; payload->len = hexlen; - + payload->wait_delay = 0; memcpy(payload->data, cmddata, hexlen); clearCommandBuffer(); SendCommandNG(CMD_SMART_RAW, (uint8_t *)payload, sizeof(smart_card_raw_t) + hexlen); @@ -1187,6 +1190,7 @@ int ExchangeAPDUSC(bool verbose, uint8_t *datain, int datainlen, bool activateCa payload->flags |= (SC_SELECT | SC_CONNECT); } payload->len = datainlen; + payload->wait_delay = 0; memcpy(payload->data, datain, datainlen); clearCommandBuffer(); From bb47bdd9795524668a43ddf7f990bb3d7585cd72 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 28 Sep 2023 08:34:29 +0200 Subject: [PATCH 0504/1034] revert back to old timings --- armsrc/i2c.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/armsrc/i2c.c b/armsrc/i2c.c index 7dd2a525d..50ba3e38b 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -199,7 +199,7 @@ static bool WaitSCL_L(void) { // It timeout reading response from card // Which ever comes first static bool WaitSCL_L_timeout(void) { - volatile uint32_t delay = 800; + volatile uint32_t delay = 1200; while (delay--) { // exit on SCL LOW if (SCL_read == false) @@ -596,7 +596,7 @@ int16_t I2C_BufferRead(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t if (readcount < 2 ) { return 0; - } + } // return bytecount - bytes encoding length return readcount - 2; @@ -744,7 +744,7 @@ int I2C_get_version(uint8_t *major, uint8_t *minor) { return PM3_EDEVNOTSUPP; } -// Will read response from smart card module, retries 10 times to get the data. +// Will read response from smart card module, retries 3 times to get the data. bool sc_rx_bytes(uint8_t *dest, uint16_t *destlen, uint32_t wait) { uint8_t i = 10; From f9f42337c3b6c4e50a1c4c644b0a427e4ecd5c7d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 28 Sep 2023 08:35:48 +0200 Subject: [PATCH 0505/1034] Sim Module FW4.42 build from GentilKiwis C impl. --- client/resources/sim014.bin | Bin 0 -> 3658 bytes client/resources/sim014.sha512.txt | 1 + 2 files changed, 1 insertion(+) create mode 100644 client/resources/sim014.bin create mode 100644 client/resources/sim014.sha512.txt diff --git a/client/resources/sim014.bin b/client/resources/sim014.bin new file mode 100644 index 0000000000000000000000000000000000000000..f1d4172722adfe11c9151fd4c77b13a988c4b266 GIT binary patch literal 3658 zcmeHIO>7fa5Z?FV*lS{&XfcVZR%)^}As`{5mIH?t99&vet*BL}NO0OB4pdad5?%=> zEnRG+66!=t>`IPENtHbmwNz<|k&vKhyG}~VrK{!AKaqFXh@YbPwZ$X^Y<J#5XpZI9 zgDtIR-pqV6pJr#?;-;6lC;Val2?6!+dI#zqsCS^=fqDn(9r%BBKqorY(|SrbWs}o6 z9qCwa&|SJ)_l$p65`0hbZ*lxiiI?{AJL9}`h~J~|BggnXDnF9vzxbS=J?-^=<6U{) zyF>TxnC3Wd)S7IMs%Vu>RgP1_?OxDH+%tQTS_U{cj#M=g!sS$g+fq)08BBtIH**w_ zS0jah%YeW~!8X+#oMo^yK}iTot)ctU)2?`^uhtt#29y?%{$#rn0O?C^SKJ`I$@f*% zEcluo9?E_di!2ccr+5&GBPdSF7r_L@Ekk+LFsv!1Tg4$3QY)(XIWo!sr=l&kOp(y^ z=YvFW4Q0?5m!RaF8yKJS0As}sNw8%Y#kR?c=`r1=%WN>QiA>Hk&6JrosY#x<RlJrF z;TnjF*U_TNA(Cqp{70j>dp|fkfMW+#&oxGQVa0ob{}W}d5B1_?r{Mdl6vy3fsJN39 zB%Xx@Y4<L{Uxh^EPL0{md4kN&nrm<3fMiVwJk!04xh8v7*7mw3SE=9yY$vH<|L+Xw z;10y!bjnt)GCrRHo$yli>keaJO%8LRmV0xX&|)8ATqJ=Ri@88T$sLI{5*Jl|VV2rq z4*REoxRcRIILZ>@_AxPmH!f!;+O=x2lnc!5Whvfuyv|VAG|>Q&OS)^B-ndK;GM&9g zh+n--Z&{|dF4J8bYxb6^lCjI*md}<a%7yZo^4GD6YNUWHRsIx52C?8jBLvn7zU$8T zcy7J+x>Po@4-bNGYaiFkCAo*AWo4CL4}E0c{kb9^X~RuN@rn=ZthNA8xZ$pX{^Dou zDC?M|#}o2R7hixk@N(O9I_$c$Q$erXow1cBgk5}dTUb&3L-t{ml`d+vo~>Q8-kxWx z0F+SRryhL`kxqxt!*P-2f@gXvHGO3&eT6>OW^P`)u3Wl+-2JKJX(~qXym+CC{uZa` zf<`(ih}qQYR2;8Plg(7r7RVG`L+NAN^k#ZPB=<G4sF8c(A5^<VwVPCgiA_PhxR5~E zxL?z<3!s!!$I|w}1kUc0N}8rAGsn~YDf^%^xooVR<%XH+AP+QBDURMg6>Ux64eVXA zrD5|3PS`l*>Jo+>-*F}?2urt?<N^$yLs3|Z-3qKphqI6{R4QH%D-E~}RA~Cq$Xg>q zU{hPZp=)4K2yE}luW|xBv%`)T!V-uYBOpmlj7`kP3iGjvQmjz2a#nV1e29}Te<@#n zTRwpzXTuM5yL@7d8yb(CMAo?cy>9(r8R8?JhAQ~yEY)HE-{`Vi12_HV+&C@wU{GOm zAR7u&ErF>f!c_y8Qo=<=*0&r7h7MRGaU1(UY{Mb;CvsdjTE#_BGc(HhXr#X_^05*b zY>rLN$OAX5L2J|)5zn}9v%DpZhA_-HWTsk)!p(M|MB(~C$yR8v;O`aX<Fj(+l9lNi zs2BrA2F};yOzqz@Ab^mTSWj7WY0MltSspfqyM`-bY;Zo(j~=0}$e9nVjM$a0j1L=m H(XsvmCAsaG literal 0 HcmV?d00001 diff --git a/client/resources/sim014.sha512.txt b/client/resources/sim014.sha512.txt new file mode 100644 index 000000000..322da8e8b --- /dev/null +++ b/client/resources/sim014.sha512.txt @@ -0,0 +1 @@ +cc10a02576c95b7b37fa1ae48ea029c17a123afcc65c2fe934d3dd4d244a8a47ec12ca9a53179fbf23349fa791d83289ad6175ce9cbba10bfe6adaaf303806d3 *client/resources/sim014.bin From 22e4bbe4f15c118c8c624f503996131b2fcefb81 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 28 Sep 2023 08:37:27 +0200 Subject: [PATCH 0506/1034] text --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4e7a51d3..1bde51946 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `sim014.bin` - new sim module firmware v4.42 with improved ISO7816 Protocol T0 support (@gentilkiwi) - Added datasheet for sim module (@iceman1001) - Changed `smart raw --timeout` - allows for a custom timeout (@iceman1001) - Changed `lf t55 detectp1` - now also accepts 0xE039 Silicon Craft Tech as valid card (@iceman1001) From 1234b081329096cb6f9ade265beae429fc2c2c24 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 28 Sep 2023 08:46:04 +0200 Subject: [PATCH 0507/1034] adapt to new sim module firmware version --- Makefile | 2 +- client/src/cmdsmartcard.c | 6 +-- doc/cheatsheet.md | 2 +- .../Troubleshooting.md | 6 +-- .../2_Configuration-and-Verification.md | 54 ++++++++++++++----- doc/path_notes.md | 2 +- tools/pm3_online_check.py | 2 +- tools/pm3_tests.sh | 2 +- 8 files changed, 52 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index 64b0aa6ab..c86e765a6 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ all clean install uninstall check: %: client/% bootrom/% armsrc/% recovery/% mfk #all clean install uninstall check: %: hitag2crack/% INSTALLTOOLS=pm3_eml2lower.sh pm3_eml2upper.sh pm3_mfdread.py pm3_mfd2eml.py pm3_eml2mfd.py pm3_amii_bin2eml.pl pm3_reblay-emulating.py pm3_reblay-reading.py -INSTALLSIMFW=sim011.bin sim011.sha512.txt sim013.bin sim013.sha512.txt +INSTALLSIMFW=sim011.bin sim011.sha512.txt sim013.bin sim013.sha512.txt sim014.bin sim014.sha512.txt INSTALLSCRIPTS=pm3 pm3-flash pm3-flash-all pm3-flash-bootrom pm3-flash-fullimage INSTALLSHARES=tools/jtag_openocd traces INSTALLDOCS=doc/*.md doc/md diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index cf6cbe67d..da11873e9 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -523,16 +523,16 @@ out: } static int CmdSmartUpgrade(const char *Cmd) { - PrintAndLogEx(INFO, "-------------------------------------------------------------------"); + PrintAndLogEx(INFO, "--------------------------------------------------------------------"); PrintAndLogEx(WARNING, _RED_("WARNING") " - sim module firmware upgrade"); PrintAndLogEx(WARNING, _RED_("A dangerous command, do wrong and you could brick the sim module")); - PrintAndLogEx(INFO, "-------------------------------------------------------------------"); + PrintAndLogEx(INFO, "--------------------------------------------------------------------"); PrintAndLogEx(NORMAL, ""); CLIParserContext *ctx; CLIParserInit(&ctx, "smart upgrade", "Upgrade RDV4 sim module firmware", - "smart upgrade -f sim013.bin" + "smart upgrade -f sim014.bin" ); void *argtable[] = { diff --git a/doc/cheatsheet.md b/doc/cheatsheet.md index a859f4392..c25b7f486 100644 --- a/doc/cheatsheet.md +++ b/doc/cheatsheet.md @@ -712,7 +712,7 @@ pm3 --> mem load -f iclass_default_keys --iclass Upgrade Sim Module firmware ``` -pm3 --> smart upgrade -f sim013.bin +pm3 --> smart upgrade -f sim014.bin ``` ## Smart Card diff --git a/doc/md/Installation_Instructions/Troubleshooting.md b/doc/md/Installation_Instructions/Troubleshooting.md index d63e49b75..a0982a3c0 100644 --- a/doc/md/Installation_Instructions/Troubleshooting.md +++ b/doc/md/Installation_Instructions/Troubleshooting.md @@ -163,9 +163,9 @@ proxmark3 <YOUR_PORT_HERE> --flash --image /usr/local/share/proxmark3/firmware/f proxmark3 <YOUR_PORT_HERE> --flash --image /usr/share/proxmark3/firmware/fullimage.elf using the script: -pm3 --> smart upgrade -f /usr/local/share/proxmark3/firmware/sim013.bin +pm3 --> smart upgrade -f /usr/local/share/proxmark3/firmware/sim014.bin <> -pm3 --> smart upgrade -f /usr/share/proxmark3/firmware/sim013.bin +pm3 --> smart upgrade -f /usr/share/proxmark3/firmware/sim014.bin ``` If you didn't install the Proxmark but you're working from the sources directory and depending how you launch the client, your working directory might be the root of the repository: @@ -188,7 +188,7 @@ client/proxmark3 <YOUR_PORT_HERE> --flash --image armsrc/obj/fullimage.elf <> ./proxmark3 <YOUR_PORT_HERE> --flash --image ../armsrc/obj/fullimage.elf -pm3 --> smart upgrade -f sim013.bin +pm3 --> smart upgrade -f sim014.bin ``` etc. diff --git a/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md b/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md index 791605f17..d40dc50ff 100644 --- a/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md +++ b/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md @@ -40,7 +40,7 @@ Set all t55xx settings to defaults (will set all 4 at once) To make sure you got the latest sim module firmware. -_Latest version is v4.12_ +_Latest version is v4.42_ ``` [usb] pm3 --> hw status @@ -57,44 +57,50 @@ or #db# Smart card module (ISO 7816) #db# version.................v3.11 +or + +#db# Smart card module (ISO 7816) +#db# version.................v4.13 + + ``` These versions is obsolete. -If you didn't download sim013.bin from the RRG Repo be aware that it might be corrupted or faulty. +If you didn't download sim014.bin from the RRG Repo be aware that it might be corrupted or faulty. You find a hash text file in this folder. It was generated with the following linux command. ``` -sha512sum -b sim013.bin > sim013.sha512.txt +sha512sum -b sim014.bin > sim014.sha512.txt ``` -You should validate the sim013.bin file against this hash file in order to be sure the file is not corrupted or faulty. +You should validate the sim014.bin file against this hash file in order to be sure the file is not corrupted or faulty. The following command upgrades your device sim module firmware. Don't not turn off your device during the execution of this command!! Even its a quite fast command you should be warned. You may brick it if you interrupt it. ``` -[usb] pm3 --> smart upgrade -f /usr/local/share/proxmark3/firmware/sim013.bin +[usb] pm3 --> smart upgrade -f /usr/local/share/proxmark3/firmware/sim014.bin # or if from local repo -[usb] pm3 --> smart upgrade -f sim013.bin +[usb] pm3 --> smart upgrade -f sim014.bin ``` You get the following output if the execution was successful: ``` -[=] ------------------------------------------------------------------- +[=] -------------------------------------------------------------------- [!] ⚠️ WARNING - sim module firmware upgrade [!] ⚠️ A dangerous command, do wrong and you could brick the sim module -[=] ------------------------------------------------------------------- +[=] -------------------------------------------------------------------- -[=] firmware file sim013.bin -[=] Checking integrity sim013.sha512.txt -[+] loaded 866 bytes from binary file sim013.bin -[+] loaded 141 bytes from binary file sim013.sha512.txt +[=] firmware file sim014.bin +[=] Checking integrity sim014.sha512.txt +[+] loaded 3658 bytes from binary file sim014.bin +[+] loaded 158 bytes from binary file sim014.sha512.txt [=] Don't turn off your PM3! [+] Sim module firmware uploading to PM3... - 🕑 864 bytes sent + 🕑 3658 bytes sent [+] Sim module firmware updating... [#] FW 0000 [#] FW 0080 @@ -103,6 +109,28 @@ You get the following output if the execution was successful: [#] FW 0200 [#] FW 0280 [#] FW 0300 +[#] FW 0380 +[#] FW 0400 +[#] FW 0480 +[#] FW 0500 +[#] FW 0580 +[#] FW 0600 +[#] FW 0680 +[#] FW 0700 +[#] FW 0780 +[#] FW 0800 +[#] FW 0880 +[#] FW 0900 +[#] FW 0980 +[#] FW 0A00 +[#] FW 0A80 +[#] FW 0B00 +[#] FW 0B80 +[#] FW 0C00 +[#] FW 0C80 +[#] FW 0D00 +[#] FW 0D80 +[#] FW 0E00 [+] Sim module firmware upgrade successful ``` diff --git a/doc/path_notes.md b/doc/path_notes.md index a111e8cd1..1225f7a33 100644 --- a/doc/path_notes.md +++ b/doc/path_notes.md @@ -64,7 +64,7 @@ The recovery / firmware files will be copied to ``` * Proxmark3 firmware: `bootrom.elf`, `fullimage.elf`, `proxmark3_recovery.bin` (used for JTAG) -* SIM firmware: `sim013.bin`, `sim013.sha512.txt` +* SIM firmware: `sim014.bin`, `sim014.sha512.txt` ## Traces diff --git a/tools/pm3_online_check.py b/tools/pm3_online_check.py index a7961d319..4db9a2c9f 100755 --- a/tools/pm3_online_check.py +++ b/tools/pm3_online_check.py @@ -122,7 +122,7 @@ def pm3_lf_t55xx(child): def pm3_flash_sm(child): try: print("[+] Updating smart card fw") - child.sendline('smart upgrade -f sim013.bin') + child.sendline('smart upgrade -f sim014.bin') i = child.expect('pm3 --> ') msg = escape_ansi(str(child.before)) print("================") diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 479861b6d..0615a1447 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -249,7 +249,7 @@ while true; do if $TESTALL || $TESTCOMMON; then echo -e "\n${C_BLUE}Testing common:${C_NC}" if ! CheckFileExist "hardnested tables exists" "$RESOURCEPATH/hardnested_tables/bitflip_0_001_states.bin.lz4"; then break; fi - if ! CheckFileExist "simmodule fw file exists" "$RESOURCEPATH/sim013.bin"; then break; fi + if ! CheckFileExist "simmodule fw file exists" "$RESOURCEPATH/sim014.bin"; then break; fi if ! CheckFileExist "iCLASS dictionary exists" "$DICPATH/iclass_default_keys.dic"; then break; fi if ! CheckFileExist "MFC dictionary exists" "$DICPATH/mfc_default_keys.dic"; then break; fi if ! CheckFileExist "MFDES dictionary exists" "$DICPATH/mfdes_default_keys.dic"; then break; fi From 59d67b3606794aed51fe0a456550c84fc63558cb Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 28 Sep 2023 08:54:32 +0200 Subject: [PATCH 0508/1034] fix newline in output --- client/src/emv/emv_tags.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/emv/emv_tags.c b/client/src/emv/emv_tags.c index 0ae242905..9536ce66a 100644 --- a/client/src/emv/emv_tags.c +++ b/client/src/emv/emv_tags.c @@ -822,9 +822,11 @@ bool emv_tag_dump(const struct tlv *tlv, int level) { emv_tag_dump_string(tlv, tag, level); break; case EMV_TAG_NUMERIC: + PrintAndLogEx(NORMAL, ""); emv_tag_dump_numeric(tlv, tag, level); break; case EMV_TAG_YYMMDD: + PrintAndLogEx(NORMAL, ""); emv_tag_dump_yymmdd(tlv, tag, level); break; case EMV_TAG_CVR: From 278a179308a5f1501c7b0d5ae5ec24b538b4ba3d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 Sep 2023 20:50:39 +0200 Subject: [PATCH 0509/1034] fixed sim fw --- client/resources/sim014.bin | Bin 3658 -> 3658 bytes client/resources/sim014.sha512.txt | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/client/resources/sim014.bin b/client/resources/sim014.bin index f1d4172722adfe11c9151fd4c77b13a988c4b266..d4f91b0c36e29b078f4250bdd58ee1423ae8028e 100644 GIT binary patch delta 14 VcmX>lb4q5zBTmM!&5t?LSpYCk1<3#a delta 14 VcmX>lb4q5zBTmN1&5t?LSpYC$1<U{d diff --git a/client/resources/sim014.sha512.txt b/client/resources/sim014.sha512.txt index 322da8e8b..0313d3608 100644 --- a/client/resources/sim014.sha512.txt +++ b/client/resources/sim014.sha512.txt @@ -1 +1 @@ -cc10a02576c95b7b37fa1ae48ea029c17a123afcc65c2fe934d3dd4d244a8a47ec12ca9a53179fbf23349fa791d83289ad6175ce9cbba10bfe6adaaf303806d3 *client/resources/sim014.bin +8b754191cec19a8172ff77443eee67490f61c53161af2e831ff4e8c7909b788802f5c0b68cecdc5decabe7852479740a0122832803af26b68beab814ced543b8 *client/resources/sim_c.bin From 7320f0dd16d976268c5142d8c03a050f6dc277fd Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 Sep 2023 21:41:27 +0200 Subject: [PATCH 0510/1034] thanks @gentilkiwi for pointing it out --- client/resources/sim014.sha512.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/resources/sim014.sha512.txt b/client/resources/sim014.sha512.txt index 0313d3608..2daf74b65 100644 --- a/client/resources/sim014.sha512.txt +++ b/client/resources/sim014.sha512.txt @@ -1 +1 @@ -8b754191cec19a8172ff77443eee67490f61c53161af2e831ff4e8c7909b788802f5c0b68cecdc5decabe7852479740a0122832803af26b68beab814ced543b8 *client/resources/sim_c.bin +8b754191cec19a8172ff77443eee67490f61c53161af2e831ff4e8c7909b788802f5c0b68cecdc5decabe7852479740a0122832803af26b68beab814ced543b8 *client/resources/sim014.bin From 164073497bc38529a7fb8d7b94eebc7935411097 Mon Sep 17 00:00:00 2001 From: Iceman <iceman@iuse.se> Date: Sun, 1 Oct 2023 10:13:12 +0200 Subject: [PATCH 0511/1034] Update README.md Signed-off-by: Iceman <iceman@iuse.se> --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index d65262674..10b80f84d 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,9 @@ The Proxmark3 is the swiss-army tool of RFID, allowing for interactions with the |:--------------:|:------------------:|:------------------:| | ![MacOS Build and Test](https://github.com/RfidResearchGroup/proxmark3/workflows/MacOS%20Build%20and%20Test/badge.svg?branch=master) | ![Ubuntu Build and Test](https://github.com/RfidResearchGroup/proxmark3/workflows/Ubuntu%20Build%20and%20Test/badge.svg?branch=master) | [![Windows Build and Test](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/windows.yml/badge.svg?branch=master)](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/windows.yml) | +| Trivia | +|:--------------:| +| ![visitors](https://visitor-badge.laobi.icu/badge?page_id=RfidResearchGroup.proxmark3) | # Table of Contents 1. [PROXMARK3 INSTALLATION AND OVERVIEW](#proxmark3-installation-and-overview) From 3f5a9221a5dcb55d27ecf719aa928e16d64b59d8 Mon Sep 17 00:00:00 2001 From: Iceman <iceman@iuse.se> Date: Sun, 1 Oct 2023 10:14:18 +0200 Subject: [PATCH 0512/1034] Update README.md Signed-off-by: Iceman <iceman@iuse.se> --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 10b80f84d..229a7f5f3 100644 --- a/README.md +++ b/README.md @@ -12,10 +12,6 @@ The Proxmark3 is the swiss-army tool of RFID, allowing for interactions with the |:--------------:|:------------------:|:------------------:| | ![MacOS Build and Test](https://github.com/RfidResearchGroup/proxmark3/workflows/MacOS%20Build%20and%20Test/badge.svg?branch=master) | ![Ubuntu Build and Test](https://github.com/RfidResearchGroup/proxmark3/workflows/Ubuntu%20Build%20and%20Test/badge.svg?branch=master) | [![Windows Build and Test](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/windows.yml/badge.svg?branch=master)](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/windows.yml) | -| Trivia | -|:--------------:| -| ![visitors](https://visitor-badge.laobi.icu/badge?page_id=RfidResearchGroup.proxmark3) | - # Table of Contents 1. [PROXMARK3 INSTALLATION AND OVERVIEW](#proxmark3-installation-and-overview) 2. [Notes / helpful documents](#notes--helpful-documents) From bb5d61dca7cbfe9fcc1c3812d687e2d0555416e8 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 1 Oct 2023 13:05:08 +0200 Subject: [PATCH 0513/1034] added some helper functions --- armsrc/dbprint.c | 34 +++++++++++++++++++------------ armsrc/dbprint.h | 1 + armsrc/i2c.c | 8 -------- armsrc/i2c.h | 9 +++++++++ client/src/cmdsmartcard.c | 8 +++++--- client/src/util.c | 24 +++++++++++++++++++--- client/src/util.h | 2 ++ common/cardhelper.c | 3 ++- common/commonutil.c | 42 +++++++++++++++++++++++++++++++++++++++ common/commonutil.h | 1 + include/pm3_cmd.h | 7 +++++++ 11 files changed, 111 insertions(+), 28 deletions(-) diff --git a/armsrc/dbprint.c b/armsrc/dbprint.c index 218223231..dc4ec9b46 100644 --- a/armsrc/dbprint.c +++ b/armsrc/dbprint.c @@ -76,11 +76,11 @@ void Dbprintf(const char *fmt, ...) { // prints HEX & ASCII void Dbhexdump(int len, const uint8_t *d, bool bAsci) { #if DEBUG - char ascii[9]; + char ascii[17]; while (len > 0) { - int l = (len > 8) ? 8 : len; + int l = (len > 16) ? 16 : len; memcpy(ascii, d, l); ascii[l] = 0; @@ -97,36 +97,44 @@ void Dbhexdump(int len, const uint8_t *d, bool bAsci) { else Dbprintf("%*D", l, d, " "); - len -= 8; - d += 8; + len -= 16; + d += 16; } #endif } -void print_result(const char *name, const uint8_t *buf, size_t len) { +void print_result(const char *name, const uint8_t *d, size_t n) { - const uint8_t *p = buf; - uint16_t tmp = len & 0xFFF0; + const uint8_t *p = d; + uint16_t tmp = n & 0xFFF0; - for (; p - buf < tmp; p += 16) { + for (; p - d < tmp; p += 16) { Dbprintf("[%s: %02d/%02d] %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x", name, - p - buf, - len, + p - d, + n, p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10], p[11], p[12], p[13], p[14], p[15] ); } - if (len % 16 != 0) { + + if (n % 16 != 0) { char s[46] = {0}; char *sp = s; - for (; p - buf < len; p++) { + for (; p - d < n; p++) { sprintf(sp, "%02x ", p[0]); sp += 3; } - Dbprintf("[%s: %02d/%02d] %s", name, p - buf, len, s); + Dbprintf("[%s: %02d/%02d] %s", name, p - d, n, s); } } +// Prints message and hexdump +void print_dbg(char *msg, uint8_t *d, uint16_t n) { + if (g_dbglevel == DBG_DEBUG) { + print_result(msg, d, n); + } +} + /* useful when debugging new protocol implementations like FeliCa void PrintToSendBuffer(void) { DbpString("Printing ToSendBuffer:"); diff --git a/armsrc/dbprint.h b/armsrc/dbprint.h index 0795db274..4bfa6c89f 100644 --- a/armsrc/dbprint.h +++ b/armsrc/dbprint.h @@ -28,6 +28,7 @@ void Dbprintf(const char *fmt, ...); void DbprintfEx(uint32_t flags, const char *fmt, ...); void Dbhexdump(int len, const uint8_t *d, bool bAsci); void print_result(const char *name, const uint8_t *buf, size_t len); +void print_dbg(char *msg, uint8_t *d, uint16_t n); //void PrintToSendBuffer(void); #endif diff --git a/armsrc/i2c.c b/armsrc/i2c.c index 50ba3e38b..9fa2bdd35 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -39,11 +39,6 @@ #define I2C_ERROR "I2C_WaitAck Error" -// 8051 speaks with smart card. -// 1000*50*3.07 = 153.5ms -// 1 byte transfer == 1ms with max frame being 256 bytes -#define SIM_WAIT_DELAY 88000 // about 270ms delay // 109773 -- about 337.7ms delay - // Direct use the loop to delay. 6 instructions loop, Masterclock 48MHz, // delay=1 is about 200kbps // timer. @@ -58,9 +53,6 @@ static void __attribute__((optimize("O0"))) I2CSpinDelayClk(uint16_t delay) { #define I2C_DELAY_2CLK I2CSpinDelayClk(2) #define I2C_DELAY_XCLK(x) I2CSpinDelayClk((x)) -// The SIM module v4 supports up to 384 bytes for the length. -#define ISO7816_MAX_FRAME 270 - // try i2c bus recovery at 100kHz = 5us high, 5us low void I2C_recovery(void) { diff --git a/armsrc/i2c.h b/armsrc/i2c.h index da5da0532..52c96862e 100644 --- a/armsrc/i2c.h +++ b/armsrc/i2c.h @@ -30,6 +30,15 @@ #define I2C_DEVICE_CMD_GETVERSION 0x06 #define I2C_DEVICE_CMD_SEND_T0 0x07 +// The SIM module v4 supports up to 384 bytes for the length. +#define ISO7816_MAX_FRAME 270 + +// 8051 speaks with smart card. +// 1000*50*3.07 = 153.5ms +// 1 byte transfer == 1ms with max frame being 256 bytes +#define SIM_WAIT_DELAY 88000 // about 270ms delay // 109773 -- about 337.7ms delay + + void I2C_recovery(void); void I2C_init(bool has_ticks); void I2C_Reset(void); diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index da11873e9..9cf3e3301 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -328,7 +328,7 @@ static int smart_responseEx(uint8_t *out, int maxoutlen, bool verbose) { needGetData = true; } - if (needGetData == true) { + if (needGetData) { // Don't discard data we already received except the SW code. // If we only received 1 byte, this is the echo of INS, we discard it. totallen -= 2; @@ -1222,8 +1222,9 @@ int ExchangeAPDUSC(bool verbose, uint8_t *datain, int datainlen, bool activateCa } bool smart_select(bool verbose, smart_card_atr_t *atr) { - if (atr) + if (atr) { memset(atr, 0, sizeof(smart_card_atr_t)); + } clearCommandBuffer(); SendCommandNG(CMD_SMART_ATR, NULL, 0); @@ -1241,8 +1242,9 @@ bool smart_select(bool verbose, smart_card_atr_t *atr) { smart_card_atr_t card; memcpy(&card, (smart_card_atr_t *)resp.data.asBytes, sizeof(smart_card_atr_t)); - if (atr) + if (atr) { memcpy(atr, &card, sizeof(smart_card_atr_t)); + } if (verbose) PrintAndLogEx(INFO, "ISO7816-3 ATR : %s", sprint_hex(card.atr, card.atr_len)); diff --git a/client/src/util.c b/client/src/util.c index e531b51ea..65e3295f9 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -944,11 +944,11 @@ int hextobinarray_n(char *target, char *source, int sourcelen) { return count; } -// convert hex to human readable binary string +// convert hexstring to human readable binary string int hextobinstring(char *target, char *source) { return hextobinstring_n(target, source, strlen(source)); } - +// convert hexstring to human readable binary string int hextobinstring_n(char *target, char *source, int sourcelen) { int length = hextobinarray_n(target, source, sourcelen); if (length == 0) { @@ -958,6 +958,23 @@ int hextobinstring_n(char *target, char *source, int sourcelen) { return length; } +// convert bytes to binary string +int byte_2_binstr(char *target, const uint8_t *source, size_t sourcelen) { + //uint8_t *p = *source; + for (int i = 0 ; i < sourcelen; ++i) { + uint8_t b = *(source++); + *(target++) = ((b >> 7) & 0x1) + '0'; + *(target++) = ((b >> 6) & 0x1) + '0'; + *(target++) = ((b >> 5) & 0x1) + '0'; + *(target++) = ((b >> 4) & 0x1) + '0'; + *(target++) = ((b >> 3) & 0x1) + '0'; + *(target++) = ((b >> 2) & 0x1) + '0'; + *(target++) = ((b >> 1) & 0x1) + '0'; + *(target++) = (b & 0x1) + '0'; + } + *target = '\0'; +} + // convert binary array of 0x00/0x01 values to hex // return number of bits converted int binarraytohex(char *target, const size_t targetlen, const char *source, size_t srclen) { @@ -1007,8 +1024,9 @@ int binarraytohex(char *target, const size_t targetlen, const char *source, size // convert binary array to human readable binary void binarraytobinstring(char *target, char *source, int length) { - for (int i = 0 ; i < length; ++i) + for (int i = 0 ; i < length; ++i) { *(target++) = *(source++) + '0'; + } *target = '\0'; } diff --git a/client/src/util.h b/client/src/util.h index cfaf97167..bbae06fcf 100644 --- a/client/src/util.h +++ b/client/src/util.h @@ -122,6 +122,8 @@ int binarraytohex(char *target, const size_t targetlen, const char *source, size void binarraytobinstring(char *target, char *source, int length); int binstring2binarray(uint8_t *target, char *source, int length); +int byte_2_binstr(char *target, const uint8_t *source, size_t sourcelen); + uint8_t GetParity(const uint8_t *bits, uint8_t type, int length); void wiegand_add_parity(uint8_t *target, uint8_t *source, uint8_t length); void wiegand_add_parity_swapped(uint8_t *target, uint8_t *source, uint8_t length); diff --git a/common/cardhelper.c b/common/cardhelper.c index 7523c9a72..7103769c9 100644 --- a/common/cardhelper.c +++ b/common/cardhelper.c @@ -60,13 +60,14 @@ bool IsCardHelperPresent(bool verbose) { bool IsHIDSamPresent(bool verbose) { if (IfPm3Smartcard() == false) { + PrintAndLogEx(WARNING, "Proxmark3 does not have SMARTCARD support enabled, exiting"); return false; } // detect SAM smart_card_atr_t card; smart_select(verbose, &card); - if (!card.atr_len) { + if (card.atr_len == 0) { PrintAndLogEx(ERR, "Can't get ATR from a smart card"); return false; } diff --git a/common/commonutil.c b/common/commonutil.c index 58e694d76..c9ae5981c 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -485,3 +485,45 @@ void reverse_array_copy(const uint8_t *src, int src_len, uint8_t *dest) { dest[i] = src[(src_len - 1) - i]; } } + +static int hexchar_to_dec(char ch) { + if (ch >= '0' && ch <= '9') { + return ch - '0'; + } + if (ch >= 'a' && ch <= 'f') { + return ch - 'a' + 10; + } + if (ch >= 'A' && ch <= 'F') { + return ch - 'A' + 10; + } + return -1; +} + +// no spaces allowed for input hex string +bool hexstr_to_byte_array(const char *hexstr, uint8_t *d, size_t *n) { + + size_t hexstr_len = strlen(hexstr); + if (hexstr_len & 1) { + return false; + } + + *n = (hexstr_len >> 1); + + for (int i = 0; i < *n; i++) { + + char c1 = *hexstr++; + char c2 = *hexstr++; + + if (c1 == '\0' || c2 == '\0') { + return false; + } + + int b = (hexchar_to_dec(c1) << 4) | hexchar_to_dec(c2); + if (b < 0) { + // Error: invalid hex character + return false; + } + d[i] = (uint8_t) b; + } + return true; +} diff --git a/common/commonutil.h b/common/commonutil.h index aef8240a6..f057486a2 100644 --- a/common/commonutil.h +++ b/common/commonutil.h @@ -109,4 +109,5 @@ uint16_t get_sw(const uint8_t *d, uint16_t n); void reverse_array(uint8_t *d, size_t n); void reverse_array_copy(const uint8_t *src, int src_len, uint8_t *dest); +bool hexstr_to_byte_array(const char *hexstr, uint8_t *d, size_t *n); #endif diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index 05b313482..db9851613 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -585,6 +585,7 @@ typedef struct { #define CMD_HF_ICLASS_RESTORE 0x039B #define CMD_HF_ICLASS_CREDIT_EPURSE 0x039C + // For ISO1092 / FeliCa #define CMD_HF_FELICA_SIMULATE 0x03A0 #define CMD_HF_FELICA_SNIFF 0x03A1 @@ -669,6 +670,7 @@ typedef struct { #define CMD_HF_MFU_COUNTER_TEAROFF 0x0741 + #define CMD_HF_SNIFF 0x0800 #define CMD_HF_PLOT 0x0801 @@ -698,6 +700,11 @@ typedef struct { #define CMD_HF_MIFARE_G4_GDM_CONFIG 0x0872 #define CMD_HF_MIFARE_G4_GDM_WRCFG 0x0873 +// HID SAM +#define CMD_HF_SAM_PICOPASS 0x0900 +#define CMD_HF_SAM_SEOS 0x0901 +#define CMD_HF_SAM_MFC 0x0902 + #define CMD_UNKNOWN 0xFFFF //Mifare simulation flags From bc701c8ddc203d640927d43781fcb852b39cf4f0 Mon Sep 17 00:00:00 2001 From: David Driscoll <ivegottone@gmail.com> Date: Mon, 2 Oct 2023 10:31:17 -0400 Subject: [PATCH 0514/1034] Fixing macOS errors. --- tools/cryptorf/sma_multi.cpp | 179 +---------------------------------- 1 file changed, 4 insertions(+), 175 deletions(-) diff --git a/tools/cryptorf/sma_multi.cpp b/tools/cryptorf/sma_multi.cpp index c8f6ec0ec..dcb412eba 100644 --- a/tools/cryptorf/sma_multi.cpp +++ b/tools/cryptorf/sma_multi.cpp @@ -332,21 +332,6 @@ static inline uint8_t next_left_fast(uint8_t in, uint64_t *left) { return lookup->out; } -static inline uint8_t next_left_ksbyte(uint64_t *left) { - lookup_entry *lookup; - uint8_t bt; - - *left = (((*left) >> 5) | ((uint64_t)left_addition[((*left) & 0xf801f)] << 30)); - lookup = &(lookup_left[((*left) & 0xf801f)]); - *left = (((*left) >> 5) | ((uint64_t)lookup->addition << 30)); - bt = lookup->out << 4; - *left = (((*left) >> 5) | ((uint64_t)left_addition[((*left) & 0xf801f)] << 30)); - lookup = &(lookup_left[((*left) & 0xf801f)]); - *left = (((*left) >> 5) | ((uint64_t)lookup->addition << 30)); - bt |= lookup->out; - return bt; -} - static inline uint8_t next_right_fast(uint8_t in, uint64_t *right) { if (in) *right ^= ((in & 0xf8) << 12); lookup_entry *lookup = &(lookup_right[((*right) & 0x7c1f)]); @@ -451,7 +436,7 @@ static void ice_sm_right_thread( static uint32_t ice_sm_right(const uint8_t *ks, uint8_t *mask, vector<uint64_t> *pcrstates) { map<uint64_t, uint64_t> bincstates; - g_topbits = ATOMIC_VAR_INIT(0); + g_topbits = 0; std::vector<std::thread> threads(g_num_cpus); for (uint8_t m = 0; m < g_num_cpus; m++) { @@ -589,72 +574,6 @@ static void ice_sm_left(const uint8_t *ks, uint8_t *mask, vector<cs_t> *pcstates reverse(pcstates->begin(), pcstates->end()); } -static inline uint32_t sm_right(const uint8_t *ks, uint8_t *mask, vector<uint64_t> *pcrstates) { - uint8_t tmp_mask[16]; - size_t topbits = 0; - map<uint64_t, uint64_t> bincstates; - map<uint64_t, uint64_t>::iterator it; - - - for (uint64_t counter = 0; counter < 0x2000000; counter++) { - // Reset the current bitcount of correct bits - size_t bits = 0; - - // Copy the state we are going to test - uint64_t rstate = counter; - - for (size_t pos = 0; pos < 16; pos++) { - next_right_fast(0, &rstate); - uint8_t bt = next_right_fast(0, &rstate) << 4; - next_right_fast(0, &rstate); - bt |= next_right_fast(0, &rstate); - - // xor the bits with the keystream and count the "correct" bits - bt ^= ks[pos]; - - // Save the mask for the left produced bits - tmp_mask[pos] = bt; - - for (size_t bit = 0; bit < 8; bit++) { - // When the bit is xored away (=zero), it was the same, so correct ;) - if ((bt & 0x01) == 0) bits++; - bt >>= 1; - } - } - - if (bits > topbits) { - topbits = bits; - // Copy the winning mask - memcpy(mask, tmp_mask, 16); - } - - // Ignore states under 90 - if (bits >= 90) { - // Make sure the bits are used for ordering - bincstates[(((uint64_t)bits) << 56) | counter] = counter; - } - - if ((counter & 0xfffff) == 0) { - printf("."); - fflush(stdout); - } - } - printf("\n"); - - // Clear the candidate state vector - pcrstates->clear(); - - // Copy the order the states from lowest-bin to highest-bin - for (it = bincstates.begin(); it != bincstates.end(); ++it) { - pcrstates->push_back(it->second); - } - - // Reverse the vector order (so the highest bin comes first) - reverse(pcrstates->begin(), pcrstates->end()); - - return topbits; -} - static inline void previous_all_input(vector<cs_t> *pcstates, uint32_t gc_byte_index, cipher_state_side css) { uint8_t btGc, in; vector<cs_t> ncstates; @@ -741,94 +660,6 @@ static inline void search_gc_candidates_right(const uint64_t rstate_before_gc, c } } -static inline void sm_left(const uint8_t *ks, const uint8_t *mask, vector<cs_t> *pcstates) { - map<uint64_t, cs_t> bincstates; - map<uint64_t, cs_t>::iterator it; - uint64_t counter; - size_t pos, bits; - uint8_t correct_bits[16]; - uint8_t bt; - cs_t state; - lookup_entry *lookup; - - // Reset and initialize the cryptostate and vecctor - memset(&state, 0x00, sizeof(cs_t)); - state.invalid = false; - - for (counter = 0; counter < 0x800000000ull; counter++) { - uint64_t lstate = counter; - - for (pos = 0; pos < 16; pos++) { - - lstate = (((lstate) >> 5) | ((uint64_t)left_addition[((lstate) & 0xf801f)] << 30)); - lookup = &(lookup_left[((lstate) & 0xf801f)]); - lstate = (((lstate) >> 5) | ((uint64_t)lookup->addition << 30)); - bt = lookup->out << 4; - lstate = (((lstate) >> 5) | ((uint64_t)left_addition[((lstate) & 0xf801f)] << 30)); - lookup = &(lookup_left[((lstate) & 0xf801f)]); - lstate = (((lstate) >> 5) | ((uint64_t)lookup->addition << 30)); - bt |= lookup->out; - - // xor the bits with the keystream and count the "correct" bits - bt ^= ks[pos]; - - // When the REQUIRED bits are NOT xored away (=zero), ignore this wrong state - if ((bt & mask[pos]) != 0) break; - - // Save the correct bits for statistical information - correct_bits[pos] = bt; - } - - // If we have parsed all 16 bytes of keystream, we have a valid CANDIDATE! - if (pos == 16) { - // Count the total correct bits - bits = 0; - for (pos = 0; pos < 16; pos++) { - // Get the next byte-value with correct bits - bt = correct_bits[pos]; - - // Count all the (correct) bits - // When the bit is xored away (=zero), it was the same, so correct ;) - if ((bt & 0x01) == 0) bits++; - if (((bt >> 1) & 0x01) == 0) bits++; - if (((bt >> 2) & 0x01) == 0) bits++; - if (((bt >> 3) & 0x01) == 0) bits++; - if (((bt >> 4) & 0x01) == 0) bits++; - if (((bt >> 5) & 0x01) == 0) bits++; - if (((bt >> 6) & 0x01) == 0) bits++; - if (((bt >> 7) & 0x01) == 0) bits++; - - } - - // Print the left candidate - // printf("%09llx (%d)\n",counter,bits); - printf("."); - fflush(stdout); - - state.l = counter; - // Make sure the bits are used for ordering - bincstates[(((uint64_t)bits) << 56) | counter] = state; - } - - if ((counter & 0xffffffffull) == 0) { - printf("%02.1f%%.", ((float)100 / 8) * (counter >> 32)); - fflush(stdout); - } - } - - printf("100%%\n"); - - // Clear the candidate state vector - pcstates->clear(); - - // Copy the order the states from lowest-bin to highest-bin - for (it = bincstates.begin(); it != bincstates.end(); ++it) { - pcstates->push_back(it->second); - } - // Reverse the vector order (so the highest bin comes first) - reverse(pcstates->begin(), pcstates->end()); -} - static inline void search_gc_candidates_left(const uint64_t lstate_before_gc, const uint8_t *Q, vector<cs_t> *pcstates) { vector<cs_t> csl_cand, csl_search; vector<cs_t>::iterator itsearch, itcand; @@ -885,7 +716,7 @@ static inline void search_gc_candidates_left(const uint64_t lstate_before_gc, co void combine_valid_left_right_states(vector<cs_t> *plcstates, vector<cs_t> *prcstates, vector<uint64_t> *pgc_candidates) { vector<cs_t>::iterator itl, itr; - size_t pos, count; + size_t pos; uint64_t gc; bool valid; @@ -902,7 +733,6 @@ void combine_valid_left_right_states(vector<cs_t> *plcstates, vector<cs_t> *prcs // Clean up the candidate list pgc_candidates->clear(); - count = 0; for (itl = outer.begin(); itl != outer.end(); ++itl) { for (itr = inner.begin(); itr != inner.end(); ++itr) { valid = true; @@ -923,7 +753,6 @@ void combine_valid_left_right_states(vector<cs_t> *plcstates, vector<cs_t> *prcs pgc_candidates->push_back(gc); } - count++; } } printf("Found a total of " _YELLOW_("%llu")" combinations, ", ((unsigned long long)plcstates->size()) * prcstates->size()); @@ -1120,8 +949,8 @@ int main(int argc, const char *argv[]) { printf("Filtering the correct one using the middle part\n"); - key_found = ATOMIC_VAR_INIT(false); - key = ATOMIC_VAR_INIT(0); + key_found = false; + key = 0; std::vector<std::thread> threads(g_num_cpus); for (uint8_t m = 0; m < g_num_cpus; m++) { threads[m] = std::thread(ice_compare, m, g_num_cpus, &pgc_candidates, &ostate, ref(Ci), ref(Q), ref(Ch), ref(Ci_1)); From fb23d2047f304283a2a61d82932bd1aa9f0b170d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 2 Oct 2023 20:11:23 +0200 Subject: [PATCH 0515/1034] reworked the JSON format for 14a, 14b, 15, cryptorf, lto, NDEF.\nDeprecated EML format. Pm3 client do not save EML files any more.nPm3 client will continue to load EML files. --- CHANGELOG.md | 2 + client/src/cmdflashmem.c | 3 +- client/src/cmdflashmemspiffs.c | 13 +- client/src/cmdhf14a.c | 20 +- client/src/cmdhf14b.c | 12 +- client/src/cmdhf15.c | 54 ++-- client/src/cmdhfcryptorf.c | 15 +- client/src/cmdhffudan.c | 9 +- client/src/cmdhficlass.c | 20 +- client/src/cmdhflegic.c | 8 +- client/src/cmdhflto.c | 3 +- client/src/cmdhfmf.c | 86 ++---- client/src/cmdhfmfdes.c | 6 +- client/src/cmdhfmfp.c | 20 +- client/src/cmdhfmfu.c | 24 +- client/src/cmdhfst25ta.c | 11 +- client/src/cmdhftopaz.c | 6 +- client/src/cmdhfxerox.c | 15 +- client/src/cmdlfem4x05.c | 4 +- client/src/cmdlfem4x50.c | 12 +- client/src/cmdlfhitag.c | 2 +- client/src/cmdlft55xx.c | 10 +- client/src/fileutils.c | 502 +++++++++++++++++++++++++-------- client/src/fileutils.h | 45 ++- client/src/nfc/ndef.c | 30 ++ client/src/nfc/ndef.h | 2 +- include/iclass_cmd.h | 2 +- 27 files changed, 617 insertions(+), 319 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bde51946..873bc53ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed the json file formats for mfc, 14b, 15, legic, cryptorf, ndef (@iceman1001) + - Depricated the EML file format when saving dump files. (@iceman1001) - Added `sim014.bin` - new sim module firmware v4.42 with improved ISO7816 Protocol T0 support (@gentilkiwi) - Added datasheet for sim module (@iceman1001) - Changed `smart raw --timeout` - allows for a custom timeout (@iceman1001) diff --git a/client/src/cmdflashmem.c b/client/src/cmdflashmem.c index 2cfe3849c..9d1f5605f 100644 --- a/client/src/cmdflashmem.c +++ b/client/src/cmdflashmem.c @@ -379,8 +379,7 @@ static int CmdFlashMemDump(const char *Cmd) { } if (filename[0] != '\0') { - saveFile(filename, ".bin", dump, len); - saveFileEML(filename, dump, len, 16); + pm3_save_dump(filename, dump, len, jsfRaw); } free(dump); diff --git a/client/src/cmdflashmemspiffs.c b/client/src/cmdflashmemspiffs.c index e84b3e597..218109755 100644 --- a/client/src/cmdflashmemspiffs.c +++ b/client/src/cmdflashmemspiffs.c @@ -370,14 +370,13 @@ static int CmdFlashMemSpiFFSDump(const char *Cmd) { "Dumps device SPIFFS file to a local file\n" "Size is handled by first sending a STAT command against file to verify existence", "mem spiffs dump -s tag.bin --> download binary file from device\n" - "mem spiffs dump -s tag.bin -d aaa -e --> download tag.bin, save as aaa.eml format" + "mem spiffs dump -s tag.bin -d a001 -e --> download tag.bin, save as `a001.bin`" ); void *argtable[] = { arg_param_begin, arg_str1("s", "src", "<fn>", "SPIFFS file to save"), arg_str0("d", "dest", "<fn>", "file name to save to <w/o .bin>"), - arg_lit0("e", "eml", "also save in EML format"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -390,7 +389,6 @@ static int CmdFlashMemSpiFFSDump(const char *Cmd) { char dest[FILE_PATH_SIZE] = {0}; CLIParamStrToBuf(arg_get_str(ctx, 2), (uint8_t *)dest, FILE_PATH_SIZE, &dlen); - bool eml = arg_get_lit(ctx, 3); CLIParserFree(ctx); // get size from spiffs itself ! @@ -433,15 +431,6 @@ static int CmdFlashMemSpiFFSDump(const char *Cmd) { else saveFile(fn, ".bin", dump, len); // default - if (eml) { - uint8_t eml_len = 16; - if (strstr(fn, "class") != NULL) - eml_len = 8; - else if (strstr(fn, "mfu") != NULL) - eml_len = 4; - - saveFileEML(fn, dump, len, eml_len); - } free(dump); return PM3_SUCCESS; } diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index ecd57e181..439641f09 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -2748,6 +2748,7 @@ int CmdHF14ANdefRead(const char *Cmd) { CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); bool verbose = arg_get_lit(ctx, 2); + bool verbose2 = arg_get_lit(ctx, 2) > 1; CLIParserFree(ctx); bool activate_field = true; @@ -2934,11 +2935,24 @@ int CmdHF14ANdefRead(const char *Cmd) { memcpy(ndef_file + (i - offset), response, segment_size); } - if (fnlen != 0) { - saveFile(filename, ".bin", ndef_file, ndef_size); - } + if (verbose2) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "--- " _CYAN_("NDEF raw") " ----------------"); + print_buffer(ndef_file, ndef_size, 1); + } NDEFRecordsDecodeAndPrint(ndef_file, ndef_size, verbose); + + pm3_save_dump(filename, ndef_file, ndef_size, jsfNDEF); + + if (verbose == false) { + PrintAndLogEx(HINT, "Try " _YELLOW_("`hf 14a ndefread -v`") " for more details"); + } else { + if (verbose2 == false) { + PrintAndLogEx(HINT, "Try " _YELLOW_("`hf 14a ndefread -vv`") " for more details"); + } + } + free(ndef_file); return PM3_SUCCESS; } diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 1ba73e797..59a452fb6 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -1546,7 +1546,7 @@ static int CmdHF14BDump(const char *Cmd) { } size_t datalen = (lastblock + 2) * ST25TB_SR_BLOCK_SIZE; - pm3_save_dump(filename, data, datalen, jsf14b, ST25TB_SR_BLOCK_SIZE); + pm3_save_dump(filename, data, datalen, jsf14b_v2); } } @@ -2121,9 +2121,13 @@ int CmdHF14BNdefRead(const char *Cmd) { goto out; } - if (fnlen != 0) { - saveFile(filename, ".bin", response + 2, resplen - 4); - } + // get total NDEF length before save. If fails, we save it all + size_t n = 0; + if (NDEFGetTotalLength(response + 2, resplen - 4, &n) != PM3_SUCCESS) + n = resplen - 4; + + pm3_save_dump(filename, response + 2, n, jsfNDEF); + res = NDEFRecordsDecodeAndPrint(response + 2, resplen - 4, verbose); out: diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 75b972871..eea85272a 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -62,7 +62,7 @@ typedef struct { uint8_t lock; - uint8_t block[4]; + uint8_t block[8]; } t15memory_t; // structure and database for uid -> tagtype lookups @@ -1143,14 +1143,14 @@ static int CmdHF15ELoad(const char *Cmd) { static int CmdHF15ESave(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf 15 esave", - "Save emulator memory into three files (BIN/EML/JSON) ", + "Save emulator memory into two files (BIN/JSON) ", "hf 15 esave -f hf-15-01020304" "hf 15 esave -b 8 -c 42 -f hf-15-01020304" ); void *argtable[] = { arg_param_begin, arg_str1("f", "file", "<fn>", "filename of dump"), - arg_int0("b", "blocksize", "<dec>", "block size, defaults to 4"), + arg_int0(NULL, "bsize", "<dec>", "block size, defaults to 4"), arg_int0("c", "count", "<dec>", "number of blocks to export, defaults to all"), arg_param_end }; @@ -1176,13 +1176,18 @@ static int CmdHF15ESave(const char *Cmd) { } PrintAndLogEx(INFO, "Downloading %u bytes from emulator memory", bytes); - if (!GetFromDevice(BIG_BUF_EML, dump, bytes, 0, NULL, 0, NULL, 2500, false)) { + if (GetFromDevice(BIG_BUF_EML, dump, bytes, 0, NULL, 0, NULL, 2500, false) == false) { PrintAndLogEx(WARNING, "Fail, transfer from device time-out"); free(dump); return PM3_ETIMEOUT; } - pm3_save_dump(filename, dump, bytes, jsf15, blocksize); + if (blocksize == 8) { + pm3_save_dump(filename, dump, bytes, jsf15_v3); + } else { + pm3_save_dump(filename, dump, bytes, jsf15_v2); + } + free(dump); return PM3_SUCCESS; } @@ -1604,9 +1609,12 @@ static int CmdHF15Dump(const char *Cmd) { // memory. t15memory_t mem[256]; - uint8_t data[256 * 4] = {0}; + uint8_t data[256 * 8] = {0}; memset(data, 0, sizeof(data)); + // keep track of which block length tag returned? + uint8_t blklen = 4; + for (int retry = 0; (retry < 5 && blocknum < 0x100); retry++) { req[10] = blocknum; @@ -1646,9 +1654,15 @@ static int CmdHF15Dump(const char *Cmd) { break; } + // lock byte value mem[blocknum].lock = resp.data.asBytes[0]; - memcpy(mem[blocknum].block, resp.data.asBytes + 1, 4); - memcpy(data + (blocknum * 4), resp.data.asBytes + 1, 4); + + // is tag responding with 4 or 8 bytes? + if (resp.length == 11) { + blklen = 8; + } + memcpy(mem[blocknum].block, resp.data.asBytes + 1, blklen); + memcpy(data + (blocknum * 4), resp.data.asBytes + 1, blklen); retry = 0; blocknum++; @@ -1659,6 +1673,10 @@ static int CmdHF15Dump(const char *Cmd) { DropField(); + if (blklen == 8) { + PrintAndLogEx(INFO, "8 byte block length detected"); + } + PrintAndLogEx(NORMAL, "\n"); PrintAndLogEx(INFO, "block# | data |lck| ascii"); PrintAndLogEx(INFO, "---------+--------------+---+----------"); @@ -1672,9 +1690,9 @@ static int CmdHF15Dump(const char *Cmd) { PrintAndLogEx(INFO, "%3d/0x%02X | %s | %s | %s" , i , i - , sprint_hex(mem[i].block, 4) + , sprint_hex(mem[i].block, blklen) , lck - , sprint_ascii(mem[i].block, 4) + , sprint_ascii(mem[i].block, blklen) ); } PrintAndLogEx(NORMAL, ""); @@ -1687,8 +1705,11 @@ static int CmdHF15Dump(const char *Cmd) { FillFileNameByUID(fptr, SwapEndian64(uid, sizeof(uid), 8), "-dump", sizeof(uid)); } - size_t datalen = blocknum * 4; - pm3_save_dump(filename, data, datalen, jsf15, 4); + if (blklen == 8) { + pm3_save_dump(filename, data, (blocknum * blklen), jsf15_v3); + } else { + pm3_save_dump(filename, data, (blocknum * blklen), jsf15_v2); + } return PM3_SUCCESS; } @@ -2000,15 +2021,16 @@ static int CmdHF15Readblock(const char *Cmd) { return PM3_EWRONGANSWER; } + // print response char lck[16] = {0}; if (data[1]) { - snprintf(lck, sizeof(lck), _RED_("%d"), data[1]); + snprintf(lck, sizeof(lck), _RED_("%02X"), data[1]); } else { - snprintf(lck, sizeof(lck), "%d", data[1]); + snprintf(lck, sizeof(lck), "%02X", data[1]); } PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, " #%3d |lck| ascii", block); + PrintAndLogEx(INFO, "#%3d |lck| ascii", block); PrintAndLogEx(INFO, "------------+---+------"); PrintAndLogEx(INFO, "%s| %s | %s", sprint_hex(data + 2, resp.length - 4), lck, sprint_ascii(data + 2, resp.length - 4)); PrintAndLogEx(NORMAL, ""); @@ -2834,7 +2856,7 @@ static int CmdHF15View(const char *Cmd) { ); void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "filename of dump (bin/eml/json)"), + arg_str1("f", "file", "<fn>", "filename of dump"), // arg_lit0("z", "dense", "dense dump output style"), arg_param_end }; diff --git a/client/src/cmdhfcryptorf.c b/client/src/cmdhfcryptorf.c index 552c25590..12e522f2a 100644 --- a/client/src/cmdhfcryptorf.c +++ b/client/src/cmdhfcryptorf.c @@ -414,9 +414,8 @@ static int CmdHFCryptoRFDump(const char *Cmd) { FillFileNameByUID(fptr, card.uid, "-dump", card.uidlen); } - saveFileEML(filename, data, datalen, 4); - saveFile(filename, ".bin", data, datalen); - // json? + pm3_save_dump(filename, data, datalen, jsfCryptorf); + return switch_off_field_cryptorf(); } @@ -486,14 +485,14 @@ static int CmdHFCryptoRFESave(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf cryptorf esave", - "Save emulator memory to bin/eml/json file\n" + "Save emulator memory to to two files (bin/json)\n" "if filename is not supplied, UID will be used.", "hf cryptorf esave\n" "hf cryptorf esave -f filename" ); void *argtable[] = { arg_param_begin, - arg_str0("f", "file", "<fn>", "filename of dumpfile"), + arg_str0("f", "file", "<fn>", "filename of dump"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -527,11 +526,7 @@ static int CmdHFCryptoRFESave(const char *Cmd) { FillFileNameByUID(fptr, data, "-dump", 4); } - saveFile(filename, ".bin", data, numofbytes); - //needs to change - saveFileEML(filename, data, numofbytes, 8); - //needs to change - saveFileJSON(filename, jsfRaw, data, numofbytes, NULL); + pm3_save_dump(filename, data, numofbytes, jsfCryptorf); free(data); return PM3_SUCCESS; } diff --git a/client/src/cmdhffudan.c b/client/src/cmdhffudan.c index 53e580e1b..7403afeb6 100644 --- a/client/src/cmdhffudan.c +++ b/client/src/cmdhffudan.c @@ -339,14 +339,7 @@ static int CmdHFFudanDump(const char *Cmd) { free(fptr); } - saveFile(dataFilename, ".bin", (uint8_t *)carddata, sizeof(carddata)); - saveFileEML(dataFilename, (uint8_t *)carddata, sizeof(carddata), MAX_FUDAN_BLOCK_SIZE); - - iso14a_mf_extdump_t xdump; - xdump.card_info = card; - xdump.dump = (uint8_t *)carddata; - xdump.dumplen = sizeof(carddata); - saveFileJSON(dataFilename, jsfFudan, (uint8_t *)&xdump, sizeof(xdump), NULL); + pm3_save_dump(dataFilename, (uint8_t *)carddata, sizeof(carddata), jsfFudan); return PM3_SUCCESS; } diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 86dda89cd..08ed01068 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -19,8 +19,8 @@ #include "cmdhficlass.h" #include <ctype.h> #include "cliparser.h" -#include "cmdparser.h" // command_t -#include "commonutil.h" // ARRAYLEN +#include "cmdparser.h" // command_t +#include "commonutil.h" // ARRAYLEN #include "cmdtrace.h" #include "util_posix.h" #include "comms.h" @@ -34,13 +34,13 @@ #include "cardhelper.h" #include "wiegand_formats.h" #include "wiegand_formatutils.h" -#include "cmdsmartcard.h" // smart select fct +#include "cmdsmartcard.h" // smart select fct #include "proxendian.h" #include "iclass_cmd.h" -#include "crypto/asn1utils.h" // ASN1 decoder +#include "crypto/asn1utils.h" // ASN1 decoder #include "preferences.h" -#define PICOPASS_BLOCK_SIZE 8 + #define NUM_CSNS 9 #define MAC_ITEM_SIZE 24 // csn(8) + epurse(8) + nr(4) + mac(4) = 24 bytes #define ICLASS_KEYS_MAX 8 @@ -1016,7 +1016,7 @@ static int CmdHFiClassELoad(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "filename of dump (bin/eml/json)"), + arg_str1("f", "file", "<fn>", "filename of dump"), arg_lit0("m", "mem", "use RDV4 spiffs"), arg_lit0("v", "verbose", "verbose output"), arg_param_end @@ -1149,7 +1149,7 @@ static int CmdHFiClassESave(const char *Cmd) { FillFileNameByUID(fptr, dump, "-dump", 8); } - pm3_save_dump(filename, dump, bytes, jsfIclass, PICOPASS_BLOCK_SIZE); + pm3_save_dump(filename, dump, bytes, jsfIclass); free(dump); PrintAndLogEx(HINT, "Try `" _YELLOW_("hf iclass view -f") "` to view dump file"); @@ -1497,7 +1497,7 @@ static int CmdHFiClassDecrypt(const char *Cmd) { strcat(fptr, "hf-iclass-"); FillFileNameByUID(fptr, hdr->csn, "-dump-decrypted", sizeof(hdr->csn)); - pm3_save_dump(fptr, decrypted, decryptedlen, jsfIclass, PICOPASS_BLOCK_SIZE); + pm3_save_dump(fptr, decrypted, decryptedlen, jsfIclass); printIclassDumpContents(decrypted, 1, (decryptedlen / 8), decryptedlen, dense_output); @@ -2045,7 +2045,7 @@ write_dump: // save the dump to .bin file PrintAndLogEx(SUCCESS, "saving dump file - %u blocks read", bytes_got / 8); - pm3_save_dump(filename, tag_data, bytes_got, jsfIclass, PICOPASS_BLOCK_SIZE); + pm3_save_dump(filename, tag_data, bytes_got, jsfIclass); PrintAndLogEx(HINT, "Try `" _YELLOW_("hf iclass decrypt -f") "` to decrypt dump file"); PrintAndLogEx(HINT, "Try `" _YELLOW_("hf iclass view -f") "` to view dump file"); @@ -3026,7 +3026,7 @@ static int CmdHFiClassView(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "filename of dump (bin/eml/json)"), + arg_str1("f", "file", "<fn>", "filename of dump"), arg_int0(NULL, "first", "<dec>", "Begin printing from this block (default first user block)"), arg_int0(NULL, "last", "<dec>", "End printing at this block (default 0, ALL)"), arg_lit0("v", "verbose", "verbose output"), diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 488f8dcb2..676ed3911 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -858,7 +858,7 @@ static int CmdLegicReader(const char *Cmd) { static int CmdLegicDump(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf legic dump", - "Read all memory from LEGIC Prime tags and saves to (bin/eml/json) dump file\n" + "Read all memory from LEGIC Prime tags and saves to (bin/json) dump file\n" "It autodetects card type (MIM22, MIM256, MIM1024)", "hf legic dump --> use UID as filename\n" "hf legic dump -f myfile \n" @@ -951,7 +951,7 @@ static int CmdLegicDump(const char *Cmd) { FillFileNameByUID(filename, data, "-dump", 4); } - pm3_save_dump(filename, data, readlen, jsfLegic, LEGIC_BLOCK_SIZE); + pm3_save_dump(filename, data, readlen, jsfLegic_v2); free(data); return PM3_SUCCESS; } @@ -1119,7 +1119,7 @@ static int CmdLegicELoad(const char *Cmd) { static int CmdLegicESave(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf legic esave", - "Saves a (bin/eml/json) dump file of emulator memory", + "Saves a (bin/json) dump file of emulator memory", "hf legic esave --> uses UID as filename\n" "hf legic esave -f myfile --22\n" "hf legic esave -f myfile --22 --de\n" @@ -1188,7 +1188,7 @@ static int CmdLegicESave(const char *Cmd) { legic_xor(data, numofbytes); } - pm3_save_dump(filename, data, numofbytes, jsfLegic, LEGIC_BLOCK_SIZE); + pm3_save_dump(filename, data, numofbytes, jsfLegic_v2); return PM3_SUCCESS; } diff --git a/client/src/cmdhflto.c b/client/src/cmdhflto.c index d11f0c6d1..e263c850e 100644 --- a/client/src/cmdhflto.c +++ b/client/src/cmdhflto.c @@ -771,8 +771,7 @@ static int CmdHfLTODump(const char *Cmd) { char *fptr = filename + snprintf(filename, sizeof(filename), "hf-lto-"); FillFileNameByUID(fptr, dump, "-dump", 5); } - saveFile(filename, ".bin", dump, dump_len); - saveFileEML(filename, dump, dump_len, 32); + pm3_save_dump(filename, dump, dump_len, jsfLto); free(dump); return PM3_SUCCESS; } diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 7f8be4fbf..1267235de 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -472,7 +472,7 @@ void mf_print_sector_hdr(uint8_t sector) { static bool mf_write_block(const uint8_t *key, uint8_t keytype, uint8_t blockno, uint8_t *block) { uint8_t data[26]; - memcpy(data, key, MFKEY_SIZE); + memcpy(data, key, MIFARE_KEY_SIZE); memcpy(data + 10, block, MFBLOCK_SIZE); clearCommandBuffer(); @@ -1230,14 +1230,7 @@ static int CmdHF14AMfDump(const char *Cmd) { free(fptr); } - saveFile(dataFilename, ".bin", mem, bytes); - saveFileEML(dataFilename, mem, bytes, MFBLOCK_SIZE); - - iso14a_mf_extdump_t xdump; - xdump.card_info = card; - xdump.dump = mem; - xdump.dumplen = bytes; - saveFileJSON(dataFilename, jsfCardMemory, (uint8_t *)&xdump, sizeof(xdump), NULL); + pm3_save_mf_dump(dataFilename, mem, bytes, jsfCardMemory); free(mem); return PM3_SUCCESS; } @@ -3164,13 +3157,7 @@ all_found: strncpy(filename, fptr, sizeof(filename) - 1); free(fptr); - saveFile(filename, ".bin", dump, bytes); - saveFileEML(filename, dump, bytes, MFBLOCK_SIZE); - iso14a_mf_extdump_t xdump; - xdump.card_info = card; - xdump.dump = dump; - xdump.dumplen = bytes; - saveFileJSON(filename, jsfCardMemory, (uint8_t *)&xdump, sizeof(xdump), NULL); + pm3_save_mf_dump(filename, dump, bytes, jsfCardMemory); // Generate and show statistics t1 = msclock() - t1; @@ -4452,7 +4439,7 @@ static int CmdHF14AMfESave(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf esave", - "Save emulator memory into three files (BIN/EML/JSON) ", + "Save emulator memory into two files (bin//json) ", "hf mf esave\n" "hf mf esave --4k\n" "hf mf esave --4k -f hf-mf-01020304.eml" @@ -4522,30 +4509,7 @@ static int CmdHF14AMfESave(const char *Cmd) { FillFileNameByUID(fptr, dump, "-dump", 4); } - saveFile(filename, ".bin", dump, bytes); - saveFileEML(filename, dump, bytes, MFBLOCK_SIZE); - - iso14a_mf_extdump_t xdump = {0}; - xdump.card_info.ats_len = 0; - // Check for 4 bytes uid: bcc corrected and single size uid bits in ATQA - if ((dump[0] ^ dump[1] ^ dump[2] ^ dump[3]) == dump[4] && (dump[6] & 0xc0) == 0) { - xdump.card_info.uidlen = 4; - memcpy(xdump.card_info.uid, dump, xdump.card_info.uidlen); - xdump.card_info.sak = dump[5]; - memcpy(xdump.card_info.atqa, &dump[6], sizeof(xdump.card_info.atqa)); - } - // Check for 7 bytes UID: double size uid bits in ATQA - else if ((dump[8] & 0xc0) == 0x40) { - xdump.card_info.uidlen = 7; - memcpy(xdump.card_info.uid, dump, xdump.card_info.uidlen); - xdump.card_info.sak = dump[7]; - memcpy(xdump.card_info.atqa, &dump[8], sizeof(xdump.card_info.atqa)); - } else { - PrintAndLogEx(WARNING, "Invalid dump. UID/SAK/ATQA not found"); - } - xdump.dump = dump; - xdump.dumplen = bytes; - saveFileJSON(filename, jsfCardMemory, (uint8_t *)&xdump, sizeof(xdump), NULL); + pm3_save_mf_dump(filename, dump, bytes, jsfCardMemory); free(dump); return PM3_SUCCESS; } @@ -5217,7 +5181,7 @@ static int CmdHF14AMfCGetSc(const char *Cmd) { static int CmdHF14AMfCSave(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf csave", - "Save magic gen1a card memory into three files (BIN/EML/JSON)" + "Save magic gen1a card memory into two files (bin/json)" "or into emulator memory", "hf mf csave\n" "hf mf csave --4k" @@ -5364,13 +5328,7 @@ static int CmdHF14AMfCSave(const char *Cmd) { FillFileNameByUID(fptr, card.uid, "-dump", card.uidlen); } - saveFile(filename, ".bin", dump, bytes); - saveFileEML(filename, dump, bytes, MFBLOCK_SIZE); - iso14a_mf_extdump_t xdump; - xdump.card_info = card; - xdump.dump = dump; - xdump.dumplen = bytes; - saveFileJSON(filename, jsfCardMemory, (uint8_t *)&xdump, sizeof(xdump), NULL); + pm3_save_mf_dump(filename, dump, bytes, jsfCardMemory); free(dump); return PM3_SUCCESS; } @@ -6176,16 +6134,19 @@ int CmdHFMFNDEFRead(const char *Cmd) { print_buffer(data, datalen, 1); } - if (fnlen != 0) { - saveFile(filename, ".bin", data, datalen); - } - res = NDEFDecodeAndPrint(data, datalen, verbose); if (res != PM3_SUCCESS) { PrintAndLogEx(INFO, "Trying to parse NDEF records w/o NDEF header"); res = NDEFRecordsDecodeAndPrint(data, datalen, verbose); } + // get total NDEF length before save. If fails, we save it all + size_t n = 0; + if (NDEFGetTotalLength(data, datalen, &n) != PM3_SUCCESS) + n = datalen; + + pm3_save_dump(filename, data, n, jsfNDEF); + if (verbose == false) { PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mf ndefread -v`") " for more details"); } else { @@ -6282,8 +6243,8 @@ int CmdHFMFNDEFFormat(const char *Cmd) { // init keys to default key - uint8_t keyA[MIFARE_4K_MAXSECTOR][MFKEY_SIZE]; - uint8_t keyB[MIFARE_4K_MAXSECTOR][MFKEY_SIZE]; + uint8_t keyA[MIFARE_4K_MAXSECTOR][MIFARE_KEY_SIZE]; + uint8_t keyB[MIFARE_4K_MAXSECTOR][MIFARE_KEY_SIZE]; for (uint8_t i = 0; i < MIFARE_4K_MAXSECTOR; i++) { memcpy(keyA[i], g_mifare_default_key, sizeof(g_mifare_default_key)); @@ -6314,7 +6275,6 @@ int CmdHFMFNDEFFormat(const char *Cmd) { DropField(); } - // load key file if exist if (strlen(keyFilename)) { // @@ -7402,7 +7362,6 @@ static int CmdHF14AMfView(const char *Cmd) { block_cnt = MIFARE_4K_MAXBLOCK; if (verbose) { - PrintAndLogEx(INFO, "File: " _YELLOW_("%s"), filename); PrintAndLogEx(INFO, "File size %zu bytes, file blocks %d (0x%x)", bytes_read, block_cnt, block_cnt); } @@ -7896,7 +7855,7 @@ static int CmdHF14AGen4Save(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf gsave", - "Save `magic gen4 gtu` card memory into three files (BIN/EML/JSON)" + "Save `magic gen4 gtu` card memory into two files (bin/json)" "or into emulator memory", "hf mf gsave\n" "hf mf gsave --4k\n" @@ -7908,7 +7867,7 @@ static int CmdHF14AGen4Save(const char *Cmd) { arg_lit0(NULL, "1k", "MIFARE Classic 1k / S50 (def)"), arg_lit0(NULL, "2k", "MIFARE Classic/Plus 2k"), arg_lit0(NULL, "4k", "MIFARE Classic 4k / S70"), - arg_str0("p", "pwd", "<hex>", "password 4bytes"), + arg_str0("p", "pwd", "<hex>", "password 4 bytes"), arg_str0("f", "file", "<fn>", "filename of dump"), arg_lit0(NULL, "emu", "to emulator memory"), arg_param_end @@ -8079,14 +8038,7 @@ static int CmdHF14AGen4Save(const char *Cmd) { FillFileNameByUID(fptr, card.uid, "-dump", card.uidlen); } - saveFile(filename, ".bin", dump, bytes); - saveFileEML(filename, dump, bytes, MFBLOCK_SIZE); - iso14a_mf_extdump_t xdump; - xdump.card_info = card; - xdump.dump = dump; - xdump.dumplen = bytes; - saveFileJSON(filename, jsfCardMemory, (uint8_t *)&xdump, sizeof(xdump), NULL); - + pm3_save_mf_dump(filename, dump, bytes, jsfCardMemory); free(dump); return PM3_SUCCESS; } diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 03dcea842..59abee163 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -1126,9 +1126,9 @@ static int CmdHF14aDesChk(const char *Cmd) { CLIParserInit(&ctx, "hf mfdes chk", "Checks keys with MIFARE DESFire card.", "hf mfdes chk --aid 123456 -k 000102030405060708090a0b0c0d0e0f -> check key on aid 0x123456\n" - "hf mfdes chk -d mfdes_default_keys -> check keys from dictionary against all existing aid on card\n" - "hf mfdes chk -d mfdes_default_keys --aid 123456 -> check keys from dictionary against aid 0x123456\n" - "hf mfdes chk --aid 123456 --pattern1b -j keys -> check all 1-byte keys pattern on aid 0x123456 and save found keys to json\n" + "hf mfdes chk -d mfdes_default_keys -> check keys against all existing aid on card\n" + "hf mfdes chk -d mfdes_default_keys --aid 123456 -> check keys against aid 0x123456\n" + "hf mfdes chk --aid 123456 --pattern1b -j keys -> check all 1-byte keys pattern on aid 0x123456 and save found keys to `keys.json`\n" "hf mfdes chk --aid 123456 --pattern2b --startp2b FA00 -> check all 2-byte keys pattern on aid 0x123456. Start from key FA00FA00...FA00"); void *argtable[] = { diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index c0078819b..9d854290e 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1448,14 +1448,7 @@ static int CmdHFMFPDump(const char *Cmd) { free(fptr); } - saveFile(data_fn, ".bin", mem, MIFARE_4K_MAX_BYTES); - saveFileEML(data_fn, mem, MIFARE_4K_MAX_BYTES, MFBLOCK_SIZE); - - iso14a_mf_extdump_t xdump; - xdump.card_info = card; - xdump.dump = mem; - xdump.dumplen = MIFARE_4K_MAX_BYTES; - saveFileJSON(data_fn, jsfCardMemory, (uint8_t *)&xdump, sizeof(xdump), NULL); + pm3_save_mf_dump(filename, dump, MIFARE_4K_MAX_BYTES, jsfCardMemory); */ free(mem); return PM3_SUCCESS; @@ -1746,16 +1739,19 @@ int CmdHFMFPNDEFRead(const char *Cmd) { print_buffer(data, datalen, 1); } - if (fnlen != 0) { - saveFile(filename, ".bin", data, datalen); - } - res = NDEFDecodeAndPrint(data, datalen, verbose); if (res != PM3_SUCCESS) { PrintAndLogEx(INFO, "Trying to parse NDEF records w/o NDEF header"); res = NDEFRecordsDecodeAndPrint(data, datalen, verbose); } + // get total NDEF length before save. If fails, we save it all + size_t n = 0; + if (NDEFGetTotalLength(data, datalen, &n) != PM3_SUCCESS) + n = datalen; + + pm3_save_dump(filename, data, n, jsfNDEF); + if (verbose == false) { PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mfp ndefread -v`") " for more details"); } else { diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 13b8c9cb4..8c46ad992 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -2677,7 +2677,7 @@ static int CmdHF14AMfUDump(const char *Cmd) { } uint16_t datalen = pages * MFU_BLOCK_SIZE + MFU_DUMP_PREFIX_LENGTH; - pm3_save_dump(filename, (uint8_t *)&dump_file_data, datalen, jsfMfuMemory, MFU_BLOCK_SIZE); + pm3_save_dump(filename, (uint8_t *)&dump_file_data, datalen, jsfMfuMemory); if (is_partial) { PrintAndLogEx(WARNING, "Partial dump created. (%d of %d blocks)", pages, card_mem_size); @@ -2840,7 +2840,7 @@ int CmdHF14MfUTamper(const char *Cmd) { static int CmdHF14AMfURestore(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mfu restore", - "Restore MIFARE Ultralight/NTAG dump file to tag.\n", + "Restore MIFARE Ultralight/NTAG dump file (bin/eml/json) to tag.\n", "hf mfu restore -f myfile -s -> special write\n" "hf mfu restore -f myfile -k AABBCCDD -s -> special write, use key\n" "hf mfu restore -f myfile -k AABBCCDD -ser -> special write, use key, write dump pwd, ..." @@ -2848,7 +2848,7 @@ static int CmdHF14AMfURestore(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "specify dump filename (bin/eml/json)"), + arg_str1("f", "file", "<fn>", "specify dump filename"), arg_str0("k", "key", "<hex>", "key for authentication (UL-C 16 bytes, EV1/NTAG 4 bytes)"), arg_lit0("l", NULL, "swap entered key's endianness"), arg_lit0("s", NULL, "enable special write UID -MAGIC TAG ONLY-"), @@ -4443,14 +4443,20 @@ int CmdHF14MfuNDEFRead(const char *Cmd) { } DropField(); - if (fnlen != 0) { - saveFile(filename, ".bin", records, (size_t)maxsize); - } + status = NDEFRecordsDecodeAndPrint(records, (size_t)maxsize, verbose); if (status != PM3_SUCCESS) { status = NDEFDecodeAndPrint(records, (size_t)maxsize, verbose); } + // get total NDEF length before save. If fails, we save it all + size_t n = 0; + if (NDEFGetTotalLength(records, maxsize, &n) != PM3_SUCCESS) + n = maxsize; + + pm3_save_dump(filename, records, n, jsfNDEF); + + char *jooki = strstr((char *)records, "s.jooki.rocks/s/?s="); if (jooki) { jooki += 17; @@ -4557,12 +4563,12 @@ static int CmdHF14AMfuEView(const char *Cmd) { static int CmdHF14AMfuESave(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mfu esave", - "Saves emulator memory to a MIFARE Ultralight/NTAG dump file (bin/eml/json)\n" + "Saves emulator memory to a MIFARE Ultralight/NTAG dump file (bin/json)\n" "By default number of pages saved depends on defined tag type.\n" "You can override this with option --end.", "hf mfu esave\n" "hf mfu esave --end 255 -> saves whole memory\n" - "hf mfu esave -f hf-mfu-04010203040506-dump.json" + "hf mfu esave -f hf-mfu-04010203040506-dump" ); void *argtable[] = { @@ -4613,7 +4619,7 @@ static int CmdHF14AMfuESave(const char *Cmd) { // save dump. Last block contains PACK + RFU uint16_t datalen = (end + 1) * MFU_BLOCK_SIZE + MFU_DUMP_PREFIX_LENGTH; - res = pm3_save_dump(filename, (uint8_t *)dump, datalen, jsfMfuMemory, MFU_BLOCK_SIZE); + res = pm3_save_dump(filename, (uint8_t *)dump, datalen, jsfMfuMemory); free(dump); return res; diff --git a/client/src/cmdhfst25ta.c b/client/src/cmdhfst25ta.c index 86dfe0584..fe6e2e94c 100644 --- a/client/src/cmdhfst25ta.c +++ b/client/src/cmdhfst25ta.c @@ -404,10 +404,15 @@ int CmdHFST25TANdefRead(const char *Cmd) { return PM3_ESOFT; } - if (fnlen != 0) { - saveFile(filename, ".bin", response + 2, resplen - 4); - } NDEFRecordsDecodeAndPrint(response + 2, resplen - 4, verbose); + + // get total NDEF length before save. If fails, we save it all + size_t n = 0; + if (NDEFGetTotalLength(response, resplen, &n) != PM3_SUCCESS) + n = resplen; + + pm3_save_dump(filename, response + 2, n, jsfNDEF); + return PM3_SUCCESS; } diff --git a/client/src/cmdhftopaz.c b/client/src/cmdhftopaz.c index 649882416..97ba7e5f0 100644 --- a/client/src/cmdhftopaz.c +++ b/client/src/cmdhftopaz.c @@ -897,9 +897,9 @@ static int CmdHFTopazDump(const char *Cmd) { } if (topaz_tag.size) - pm3_save_dump(filename, (uint8_t *)&topaz_tag, sizeof(topaz_tag_t) + topaz_tag.size, jsfTopaz, TOPAZ_BLOCK_SIZE); + pm3_save_dump(filename, (uint8_t *)&topaz_tag, sizeof(topaz_tag_t) + topaz_tag.size, jsfTopaz); else - pm3_save_dump(filename, (uint8_t *)&topaz_tag, sizeof(topaz_tag_t), jsfTopaz, TOPAZ_BLOCK_SIZE); + pm3_save_dump(filename, (uint8_t *)&topaz_tag, sizeof(topaz_tag_t), jsfTopaz); if (set_dynamic) { free(topaz_tag.dynamic_memory); @@ -916,7 +916,7 @@ static int CmdHFTopazView(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "filename of dump (bin/eml/json)"), + arg_str1("f", "file", "<fn>", "filename of dump"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); diff --git a/client/src/cmdhfxerox.c b/client/src/cmdhfxerox.c index fec69855e..5f6f1e11c 100644 --- a/client/src/cmdhfxerox.c +++ b/client/src/cmdhfxerox.c @@ -611,9 +611,7 @@ static int CmdHFXeroxDump(const char *Cmd) { int fnlen = 0; char filename[FILE_PATH_SIZE] = {0}; CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); - bool decrypt = arg_get_lit(ctx, 2); - CLIParserFree(ctx); iso14b_raw_cmd_t *packet = (iso14b_raw_cmd_t *)calloc(1, sizeof(iso14b_raw_cmd_t) + 11); @@ -682,7 +680,6 @@ static int CmdHFXeroxDump(const char *Cmd) { PrintAndLogEx(NORMAL, "." NOLF); fflush(stdout); -// PrintAndLogEx(INPLACE, "blk %3d", blocknum); } } @@ -773,23 +770,13 @@ static int CmdHFXeroxDump(const char *Cmd) { PrintAndLogEx(NORMAL, ""); if (0 == filename[0]) { // generate filename from uid - /* - PrintAndLogEx(INFO, "Using UID as filename"); - - sprintf(filename, "hf-xerox-%02X%02X%02X%02X%02X%02X%02X%02X-dump%s", - card.uid[7],card.uid[6],card.uid[5],card.uid[4],card.uid[3],card.uid[2],card.uid[1],card.uid[0], - decrypt ? "-dec" : ""); - */ char *fptr = filename; PrintAndLogEx(INFO, "Using UID as filename"); fptr += snprintf(fptr, sizeof(filename), "hf-xerox-"); FillFileNameByUID(fptr, SwapEndian64(card.uid, card.uidlen, 8), decrypt ? "-dump-dec" : "-dump", card.uidlen); } - size_t datalen = blocknum * 4; - saveFile(filename, ".bin", data, datalen); - saveFileEML(filename, data, datalen, 4); -// saveFileJSON(filename, jsf15, data, datalen, NULL); + pm3_save_dump(filename, data, blocknum * 4, jsf14b_v2); return PM3_SUCCESS; } diff --git a/client/src/cmdlfem4x05.c b/client/src/cmdlfem4x05.c index 665518a40..862be6f9c 100644 --- a/client/src/cmdlfem4x05.c +++ b/client/src/cmdlfem4x05.c @@ -709,9 +709,9 @@ int CmdEM4x05Dump(const char *Cmd) { } PrintAndLogEx(NORMAL, ""); if (card_type == EM_4369 || card_type == EM_4469) - pm3_save_dump(filename, (uint8_t *)data, sizeof(data), jsfEM4x69, 4); + pm3_save_dump(filename, (uint8_t *)data, sizeof(data), jsfEM4x69); else - pm3_save_dump(filename, (uint8_t *)data, sizeof(data), jsfEM4x05, 4); + pm3_save_dump(filename, (uint8_t *)data, sizeof(data), jsfEM4x05); } PrintAndLogEx(NORMAL, ""); return success; diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index a304a84fe..d44d71dcf 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -194,7 +194,7 @@ int CmdEM4x50ELoad(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "dump filename (bin/eml/json)"), + arg_str1("f", "file", "<fn>", "dump filename"), arg_param_end }; @@ -223,7 +223,7 @@ int CmdEM4x50ELoad(const char *Cmd) { int CmdEM4x50ESave(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf em 4x50 esave", - "Saves bin/eml/json dump file of emulator memory.", + "Saves bin/json dump file of emulator memory.", "lf em 4x50 esave -> use UID as filename\n" "lf em 4x50 esave -f mydump\n" ); @@ -264,7 +264,7 @@ int CmdEM4x50ESave(const char *Cmd) { FillFileNameByUID(fptr, (uint8_t *)&data[4 * EM4X50_DEVICE_ID], "-dump", 4); } - pm3_save_dump(filename, data, DUMP_FILESIZE, jsfEM4x50, 4); + pm3_save_dump(filename, data, DUMP_FILESIZE, jsfEM4x50); return PM3_SUCCESS; } @@ -796,7 +796,7 @@ int CmdEM4x50Reader(const char *Cmd) { int CmdEM4x50Dump(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf em 4x50 dump", - "Reads all blocks/words from EM4x50 tag and saves dump in bin/eml/json format", + "Reads all blocks/words from EM4x50 tag and saves dump in (bin/json) format", "lf em 4x50 dump\n" "lf em 4x50 dump -f mydump\n" "lf em 4x50 dump -p 12345678\n" @@ -805,7 +805,7 @@ int CmdEM4x50Dump(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str0("f", "file", "<fn>", "specify dump filename (bin/eml/json)"), + arg_str0("f", "file", "<fn>", "specify dump filename"), arg_str0("p", "pwd", "<hex>", "password, 4 hex bytes, lsb"), arg_param_end }; @@ -867,7 +867,7 @@ int CmdEM4x50Dump(const char *Cmd) { memcpy(data + (i * 4), words[i].byte, 4); } - pm3_save_dump(filename, data, sizeof(data), jsfEM4x50, 4); + pm3_save_dump(filename, data, sizeof(data), jsfEM4x50); return PM3_SUCCESS; } diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 1cbae7bd3..45206750f 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -1127,7 +1127,7 @@ static int CmdLFHitag2Dump(const char *Cmd) { PrintAndLogEx(SUCCESS, "Dumping tag memory..."); - pm3_save_dump(filename, data, 48, jsfHitag, 4); + pm3_save_dump(filename, data, 48, jsfHitag); return PM3_SUCCESS; } diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index 9ce8219c2..e9da9de64 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -2217,7 +2217,7 @@ static int CmdT55xxDump(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf t55xx dump", "This command dumps a T55xx card Page 0 block 0-7.\n" - "It will create three files (bin/eml/json)", + "It will create two files (bin/json)", "lf t55xx dump\n" "lf t55xx dump -p aabbccdd --override\n" "lf t55xx dump -f my_lf_dump" @@ -2315,17 +2315,13 @@ static int CmdT55xxDump(const char *Cmd) { } // Swap endian so the files match the txt display - uint32_t data[T55x7_BLOCK_COUNT]; + uint32_t data[T55x7_BLOCK_COUNT] = {0}; for (int i = 0; i < T55x7_BLOCK_COUNT; i++) { data[i] = BSWAP_32(cardmem[i].blockdata); } - // saveFileEML will add .eml extension to filename - // saveFile (binary) passes in the .bin extension. - saveFileJSON(filename, jsfT55x7, (uint8_t *)data, T55x7_BLOCK_COUNT * sizeof(uint32_t), NULL); - saveFileEML(filename, (uint8_t *)data, T55x7_BLOCK_COUNT * sizeof(uint32_t), sizeof(uint32_t)); - saveFile(filename, ".bin", data, sizeof(data)); + pm3_save_dump(filename, (uint8_t*)data, (T55x7_BLOCK_COUNT * sizeof(uint32_t)), jsfT55x7); } return PM3_SUCCESS; diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 7383c396f..8ed6e01ee 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -27,9 +27,7 @@ #include "proxmark3.h" #include "util.h" #include "cmdhficlass.h" // pagemap -#include "protocols.h" // iclass defines -#include "cmdhftopaz.h" // TOPAZ defines -#include "mifare/mifaredefault.h" // MFP / AES defines +#include "iclass_cmd.h" #ifdef _WIN32 #include "scandir.h" @@ -329,12 +327,8 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, } } - char *fileName = newfilenamemcopyEx(preferredName, ".json", e_save_path); - if (fileName == NULL) { - return PM3_EMALLOC; - } - int retval = PM3_SUCCESS; + char path[PATH_MAX_LENGTH] = {0}; json_t *root = json_object(); JsonSaveStr(root, "Created", "proxmark3"); @@ -344,26 +338,26 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, JsonSaveBufAsHexCompact(root, "raw", data, datalen); break; } - case jsfCardMemory: { + case jsfMfc_v2: { iso14a_mf_extdump_t *xdump = (iso14a_mf_extdump_t *)(void *) data; - JsonSaveStr(root, "FileType", "mfcard"); + JsonSaveStr(root, "FileType", "mfc v2"); JsonSaveBufAsHexCompact(root, "$.Card.UID", xdump->card_info.uid, xdump->card_info.uidlen); JsonSaveBufAsHexCompact(root, "$.Card.ATQA", xdump->card_info.atqa, 2); JsonSaveBufAsHexCompact(root, "$.Card.SAK", &(xdump->card_info.sak), 1); - for (size_t i = 0; i < (xdump->dumplen / 16); i++) { - char path[PATH_MAX_LENGTH] = {0}; + for (size_t i = 0; i < (xdump->dumplen / MFBLOCK_SIZE); i++) { + snprintf(path, sizeof(path), "$.blocks.%zu", i); - JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * 16], 16); + JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE], MFBLOCK_SIZE); if (mfIsSectorTrailer(i)) { snprintf(path, sizeof(path), "$.SectorKeys.%d.KeyA", mfSectorNum(i)); - JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * 16], 6); + JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE], 6); snprintf(path, sizeof(path), "$.SectorKeys.%d.KeyB", mfSectorNum(i)); - JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * 16 + 10], 6); + JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE + 10], 6); - uint8_t *adata = &xdump->dump[i * 16 + 6]; + uint8_t *adata = &xdump->dump[i * MFBLOCK_SIZE + 6]; snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditions", mfSectorNum(i)); - JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * 16 + 6], 4); + JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE + 6], 4); snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditionsText.block%zu", mfSectorNum(i), i - 3); JsonSaveStr(root, path, mfGetAccessConditionsDesc(0, adata)); @@ -390,7 +384,7 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, JsonSaveBufAsHexCompact(root, "$.Card.ATQA", xdump->card_info.atqa, 2); JsonSaveBufAsHexCompact(root, "$.Card.SAK", &(xdump->card_info.sak), 1); for (size_t i = 0; i < (xdump->dumplen / 4); i++) { - char path[PATH_MAX_LENGTH] = {0}; + snprintf(path, sizeof(path), "$.blocks.%zu", i); JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * 4], 4); } @@ -405,8 +399,6 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, memcpy(uid, tmp->data, 3); memcpy(uid + 3, tmp->data + 4, 4); - char path[PATH_MAX_LENGTH] = {0}; - JsonSaveBufAsHexCompact(root, "$.Card.UID", uid, sizeof(uid)); JsonSaveBufAsHexCompact(root, "$.Card.Version", tmp->version, sizeof(tmp->version)); JsonSaveBufAsHexCompact(root, "$.Card.TBO_0", tmp->tbo, sizeof(tmp->tbo)); @@ -420,11 +412,12 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, } // size of header 56b - size_t len = (datalen - MFU_DUMP_PREFIX_LENGTH) / 4; + + size_t len = (datalen - MFU_DUMP_PREFIX_LENGTH) / MFU_BLOCK_SIZE; for (size_t i = 0; i < len; i++) { snprintf(path, sizeof(path), "$.blocks.%zu", i); - JsonSaveBufAsHexCompact(root, path, tmp->data + (i * 4), 4); + JsonSaveBufAsHexCompact(root, path, tmp->data + (i * MFU_BLOCK_SIZE), MFU_BLOCK_SIZE); } break; } @@ -436,7 +429,6 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, JsonSaveBufAsHexCompact(root, "$.Card.UID", uid, sizeof(uid)); for (size_t i = 0; i < (datalen / 4); i++) { - char path[PATH_MAX_LENGTH] = {0}; snprintf(path, sizeof(path), "$.blocks.%zu", i); JsonSaveBufAsHexCompact(root, path, data + (i * 4), 4); } @@ -460,10 +452,10 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, JsonSaveBufAsHexCompact(root, "$.Card.AIA", hdr->app_issuer_area, sizeof(hdr->app_issuer_area)); } - for (size_t i = 0; i < (datalen / 8); i++) { - char path[PATH_MAX_LENGTH] = {0}; + for (size_t i = 0; i < (datalen / PICOPASS_BLOCK_SIZE); i++) { + snprintf(path, sizeof(path), "$.blocks.%zu", i); - JsonSaveBufAsHexCompact(root, path, data + (i * 8), 8); + JsonSaveBufAsHexCompact(root, path, data + (i * PICOPASS_BLOCK_SIZE), PICOPASS_BLOCK_SIZE); } break; @@ -475,25 +467,49 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, JsonSaveBufAsHexCompact(root, "$.Card.ConfigBlock", conf, sizeof(conf)); for (size_t i = 0; i < (datalen / 4); i++) { - char path[PATH_MAX_LENGTH] = {0}; snprintf(path, sizeof(path), "$.blocks.%zu", i); JsonSaveBufAsHexCompact(root, path, data + (i * 4), 4); } break; } - case jsf14b: { - JsonSaveStr(root, "FileType", "14b"); - JsonSaveBufAsHexCompact(root, "raw", data, datalen); + case jsf14b_v2: { + JsonSaveStr(root, "FileType", "14b v2"); + for (size_t i = 0; i < datalen / 4; i++) { + snprintf(path, sizeof(path), "$.blocks.%zu", i); + JsonSaveBufAsHexCompact(root, path, &data[i * 4], 4); + } break; } - case jsf15: { - JsonSaveStr(root, "FileType", "15693"); - JsonSaveBufAsHexCompact(root, "raw", data, datalen); + // handles ISO15693 w blocksize of 4 bytes + case jsf15_v2: { + JsonSaveStr(root, "FileType", "15693 v2"); + for (size_t i = 0; i < datalen / 4; i++) { + snprintf(path, sizeof(path), "$.blocks.%zu", i); + JsonSaveBufAsHexCompact(root, path, &data[i * 4], 4); + } break; } - case jsfLegic: { - JsonSaveStr(root, "FileType", "legic"); - JsonSaveBufAsHexCompact(root, "raw", data, datalen); + // handles ISO15693 w blocksize of 8 bytes + case jsf15_v3: { + JsonSaveStr(root, "FileType", "15693 v3"); + for (size_t i = 0; i < datalen / 8; i++) { + snprintf(path, sizeof(path), "$.blocks.%zu", i); + JsonSaveBufAsHexCompact(root, path, &data[i * 8], 8); + } + break; + } + case jsfLegic_v2: { + JsonSaveStr(root, "FileType", "legic v2"); + JsonSaveBufAsHexCompact(root, "$.Card.UID", data, 4); + size_t i = 0; + for (; i < datalen / 16; i++) { + snprintf(path, sizeof(path), "$.blocks.%zu", i); + JsonSaveBufAsHexCompact(root, path, &data[i * 16], 16); + } + if (datalen % 16) { + snprintf(path, sizeof(path), "$.blocks.%zu", i); + JsonSaveBufAsHexCompact(root, path, &data[i * 16], (datalen % 16)); + } break; } case jsfT5555: { @@ -503,7 +519,6 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, JsonSaveBufAsHexCompact(root, "$.Card.ConfigBlock", conf, sizeof(conf)); for (size_t i = 0; i < (datalen / 4); i++) { - char path[PATH_MAX_LENGTH] = {0}; snprintf(path, sizeof(path), "$.blocks.%zu", i); JsonSaveBufAsHexCompact(root, path, data + (i * 4), 4); } @@ -517,7 +532,6 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, JsonSaveBufAsHexCompact(root, "$.Card.Protection2", data + (15 * 4), 4); for (size_t i = 0; i < (datalen / 4); i++) { - char path[PATH_MAX_LENGTH] = {0}; snprintf(path, sizeof(path), "$.blocks.%zu", i); JsonSaveBufAsHexCompact(root, path, data + (i * 4), 4); } @@ -530,7 +544,6 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, JsonSaveBufAsHexCompact(root, "$.Card.Config", data + (4 * 4), 4); for (size_t i = 0; i < (datalen / 4); i++) { - char path[PATH_MAX_LENGTH] = {0}; snprintf(path, sizeof(path), "$.blocks.%zu", i); JsonSaveBufAsHexCompact(root, path, data + (i * 4), 4); } @@ -544,7 +557,6 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, JsonSaveBufAsHexCompact(root, "$.Card.UID", data + (33 * 4), 4); for (size_t i = 0; i < (datalen / 4); i++) { - char path[PATH_MAX_LENGTH] = {0}; snprintf(path, sizeof(path), "$.blocks.%zu", i); JsonSaveBufAsHexCompact(root, path, data + (i * 4), 4); } @@ -564,8 +576,6 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, memcpy(vdata, data + (14 + atslen), 2 * 64 * 17); for (size_t i = 0; i < datalen; i++) { - char path[PATH_MAX_LENGTH] = {0}; - if (vdata[0][i][0]) { snprintf(path, sizeof(path), "$.SectorKeys.%zu.KeyA", i); JsonSaveBufAsHexCompact(root, path, &vdata[0][i][1], AES_KEY_LEN); @@ -591,31 +601,27 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, memcpy(dvdata, &data[14 + datslen], 4 * 0xE * (24 + 1)); for (int i = 0; i < (int)datalen; i++) { - char path[PATH_MAX_LENGTH] = {0}; if (dvdata[0][i][0]) { snprintf(path, sizeof(path), "$.DES.%d.Key", i); - JsonSaveBufAsHexCompact(root, path, &dvdata[0][i][1], 8); + JsonSaveBufAsHexCompact(root, path, &dvdata[0][i][1], DES_KEY_LEN); } if (dvdata[1][i][0]) { snprintf(path, sizeof(path), "$.3DES.%d.Key", i); - JsonSaveBufAsHexCompact(root, path, &dvdata[1][i][1], 16); + JsonSaveBufAsHexCompact(root, path, &dvdata[1][i][1], T2DES_KEY_LEN); } if (dvdata[2][i][0]) { snprintf(path, sizeof(path), "$.AES.%d.Key", i); - JsonSaveBufAsHexCompact(root, path, &dvdata[2][i][1], 16); + JsonSaveBufAsHexCompact(root, path, &dvdata[2][i][1], AES_KEY_LEN); } if (dvdata[3][i][0]) { snprintf(path, sizeof(path), "$.K3KDES.%d.Key", i); - JsonSaveBufAsHexCompact(root, path, &dvdata[3][i][1], 24); + JsonSaveBufAsHexCompact(root, path, &dvdata[3][i][1], T3DES_KEY_LEN); } } break; } - case jsfFido: { - break; - } case jsfCustom: { (*callback)(root); break; @@ -626,8 +632,8 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, JsonSaveBufAsHexCompact(root, "$.Card.UID", tag->uid, sizeof(tag->uid)); JsonSaveBufAsHexCompact(root, "$.Card.H0R1", tag->HR01, sizeof(tag->HR01)); JsonSaveBufAsHexCompact(root, "$.Card.Size", (uint8_t *) & (tag->size), 2); + for (size_t i = 0; i < TOPAZ_STATIC_MEMORY / 8; i++) { - char path[PATH_MAX_LENGTH] = {0}; snprintf(path, sizeof(path), "$.blocks.%zu", i); JsonSaveBufAsHexCompact(root, path, &tag->data_blocks[i][0], TOPAZ_BLOCK_SIZE); } @@ -638,24 +644,67 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, break; } + case jsfLto: { + JsonSaveStr(root, "FileType", "lto"); + for (size_t i = 0; i < datalen / 32; i++) { + snprintf(path, sizeof(path), "$.blocks.%zu", i); + JsonSaveBufAsHexCompact(root, path, &data[i * 32], 32); + } + break; + } + case jsfCryptorf: { + JsonSaveStr(root, "FileType", "cryptorf"); + for (size_t i = 0; i < datalen / 8; i++) { + snprintf(path, sizeof(path), "$.blocks.%zu", i); + JsonSaveBufAsHexCompact(root, path, &data[i * 8], 8); + } + break; + } + case jsfNDEF: { + JsonSaveStr(root, "FileType", "ndef"); + JsonSaveInt(root, "Ndef.Size", datalen); + size_t i = 0; + for (; i < datalen / 16; i++) { + snprintf(path, sizeof(path), "$.blocks.%zu", i); + JsonSaveBufAsHexCompact(root, path, &data[i * 16], 16); + } + if (datalen % 16) { + snprintf(path, sizeof(path), "$.blocks.%zu", i); + JsonSaveBufAsHexCompact(root, path, &data[i * 16], (datalen % 16)); + } + break; + } + // no action + case jsfFido: + break; + // depricated + case jsfCardMemory: + case jsf14b: + case jsf15: + case jsfLegic: default: break; } - int res = json_dump_file(root, fileName, JSON_INDENT(2)); - if (res) { - PrintAndLogEx(FAILED, "error: can't save the file: " _YELLOW_("%s"), fileName); + char *fn = newfilenamemcopyEx(preferredName, ".json", e_save_path); + if (fn == NULL) { + return PM3_EMALLOC; + } + + if (json_dump_file(root, fn, JSON_INDENT(2))) { + PrintAndLogEx(FAILED, "error: can't save the file: " _YELLOW_("%s"), fn); retval = 200; + free(fn); goto out; } if (verbose) { - PrintAndLogEx(SUCCESS, "saved to json file " _YELLOW_("%s"), fileName); + PrintAndLogEx(SUCCESS, "saved to json file " _YELLOW_("%s"), fn); } + free(fn); out: json_decref(root); - free(fileName); return retval; } int saveFileJSONroot(const char *preferredName, void *root, size_t flags, bool verbose) { @@ -1083,56 +1132,56 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - typedef union UDATA { - void *v; - uint8_t *bytes; - mfu_dump_t *mfu; - topaz_tag_t *topaz; - } UDATA; - UDATA udata = (UDATA)data; char ctype[100] = {0}; JsonLoadStr(root, "$.FileType", ctype); - if (!strcmp(ctype, "raw")) { - JsonLoadBufAsHex(root, "$.raw", udata.bytes, maxdatalen, datalen); + // Proxmark3 settings file. No + if (!strcmp(ctype, "settings")) { + goto out; } - if (!strcmp(ctype, "mfcard")) { + udata_t udata = (udata_t)data; + size_t len = 0; + char blocks[PATH_MAX_LENGTH] = {0}; + + if (!strcmp(ctype, "raw")) { + JsonLoadBufAsHex(root, "$.raw", udata.bytes, maxdatalen, datalen); + goto out; + } + + // depricated mfcard + if (!strcmp(ctype, "mfcard") || !strcmp(ctype, "mfc v2")) { size_t sptr = 0; - for (int i = 0; i < 256; i++) { - char blocks[30] = {0}; - snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); + for (int i = 0; i < maxdatalen; i++) { - size_t len = 0; - uint8_t block[16]; - JsonLoadBufAsHex(root, blocks, block, 16, &len); - if (!len) - break; - - if (sptr + 16 > maxdatalen) { + if (sptr + MFBLOCK_SIZE > maxdatalen) { retval = PM3_EMALLOC; goto out; } - memcpy(&udata.bytes[sptr], block, 16); + snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); + uint8_t block[MFBLOCK_SIZE]; + JsonLoadBufAsHex(root, blocks, block, MFBLOCK_SIZE, &len); + if (!len) + break; + + memcpy(&udata.bytes[sptr], block, MFBLOCK_SIZE); sptr += len; } *datalen = sptr; + goto out; } if (!strcmp(ctype, "fudan")) { size_t sptr = 0; - for (int i = 0; i < 256; i++) { + for (int i = 0; i < maxdatalen; i++) { if (sptr + 4 > maxdatalen) { retval = PM3_EMALLOC; goto out; } - char blocks[30] = {0}; snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); - - size_t len = 0; JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 4, &len); if (!len) break; @@ -1141,6 +1190,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz } *datalen = sptr; + goto out; } if (!strcmp(ctype, "mfu")) { @@ -1164,10 +1214,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - char blocks[30] = {0}; snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); - - size_t len = 0; JsonLoadBufAsHex(root, blocks, &udata.mfu->data[sptr], MFU_BLOCK_SIZE, &len); if (!len) break; @@ -1179,6 +1226,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz --udata.mfu->pages; *datalen += sptr; + goto out; } if (!strcmp(ctype, "hitag")) { @@ -1189,10 +1237,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - char blocks[30] = {0}; snprintf(blocks, sizeof(blocks), "$.blocks.%zu", i); - - size_t len = 0; JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 4, &len); if (!len) break; @@ -1201,27 +1246,26 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz } *datalen = sptr; + goto out; } if (!strcmp(ctype, "iclass")) { size_t sptr = 0; - for (size_t i = 0; i < (maxdatalen / 8); i++) { - if (sptr + 8 > maxdatalen) { + for (size_t i = 0; i < (maxdatalen / PICOPASS_BLOCK_SIZE); i++) { + if (sptr + PICOPASS_BLOCK_SIZE > maxdatalen) { retval = PM3_EMALLOC; goto out; } - char blocks[30] = {0}; snprintf(blocks, sizeof(blocks), "$.blocks.%zu", i); - - size_t len = 0; - JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 8, &len); + JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], PICOPASS_BLOCK_SIZE, &len); if (!len) break; sptr += len; } *datalen = sptr; + goto out; } if (!strcmp(ctype, "t55x7")) { @@ -1232,10 +1276,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - char blocks[30] = {0}; snprintf(blocks, sizeof(blocks), "$.blocks.%zu", i); - - size_t len = 0; JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 4, &len); if (!len) break; @@ -1243,6 +1284,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz sptr += len; } *datalen = sptr; + goto out; } if (!strcmp(ctype, "EM4X50")) { @@ -1253,10 +1295,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - char blocks[30] = {0}; snprintf(blocks, sizeof(blocks), "$.blocks.%zu", i); - - size_t len = 0; JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 4, &len); if (!len) break; @@ -1264,14 +1303,80 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz sptr += len; } *datalen = sptr; + goto out; } + // depricated if (!strcmp(ctype, "15693")) { JsonLoadBufAsHex(root, "$.raw", udata.bytes, maxdatalen, datalen); + goto out; } + // handles ISO15693 w blocksize of 4 bytes. + if (!strcmp(ctype, "15693 v2")) { + size_t sptr = 0; + for (int i = 0; i < (maxdatalen / 4); i++) { + if (sptr + 4 > maxdatalen) { + retval = PM3_EMALLOC; + goto out; + } + + snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); + JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 4, &len); + if (!len) + break; + + sptr += len; + } + + *datalen = sptr; + goto out; + } + // handles ISO15693 w blocksize of 8 bytes. + if (!strcmp(ctype, "15693 v3")) { + size_t sptr = 0; + for (int i = 0; i < (maxdatalen / 8); i++) { + if (sptr + 8 > maxdatalen) { + retval = PM3_EMALLOC; + goto out; + } + + snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); + JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 8, &len); + if (!len) + break; + + sptr += len; + } + + *datalen = sptr; + goto out; + } + + if (!strcmp(ctype, "legic v2")) { + size_t sptr = 0; + for (int i = 0; i < 64; i++) { + if (sptr + 16 > maxdatalen) { + retval = PM3_EMALLOC; + goto out; + } + + snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); + JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 16, &len); + if (!len) + break; + + sptr += len; + } + + *datalen = sptr; + goto out; + } + + // depricated if (!strcmp(ctype, "legic")) { JsonLoadBufAsHex(root, "$.raw", udata.bytes, maxdatalen, datalen); + goto out; } if (!strcmp(ctype, "topaz")) { @@ -1288,22 +1393,19 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - char blocks[30] = {0}; snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); - - size_t len = 0; JsonLoadBufAsHex(root, blocks, &udata.topaz->data_blocks[sptr][0], TOPAZ_BLOCK_SIZE, &len); if (!len) break; sptr += len; - // ICEMAN todo: add dynamic memory. // uint16_z Size // uint8_t *dynamic_memory; } *datalen += sptr; + goto out; } if (!strcmp(ctype, "mfpkeys")) { @@ -1327,7 +1429,6 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t offset = (14 + atslen) + (i * 2 * AES_KEY_LEN); - char blocks[40] = {0}; snprintf(blocks, sizeof(blocks), "$.SectorKeys.%zu.KeyA", i); JsonLoadBufAsHex(root, blocks, udata.bytes + offset, AES_KEY_LEN, datalen); @@ -1337,8 +1438,143 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz sptr += (2 * AES_KEY_LEN); } *datalen += sptr; + goto out; } + if (!strcmp(ctype, "mfdes")) { + JsonLoadBufAsHex(root, "$.Card.UID", udata.bytes, 7, datalen); + JsonLoadBufAsHex(root, "$.Card.SAK", udata.bytes + 10, 1, datalen); + JsonLoadBufAsHex(root, "$.Card.ATQA", udata.bytes + 11, 2, datalen); + uint8_t atslen = udata.bytes[13]; + if (atslen > 0) { + JsonLoadBufAsHex(root, "$.Card.ATS", udata.bytes + 14, atslen, datalen); + } + +// size_t sptr = (14 + atslen); +// uint8_t dvdata[4][0xE][24 + 1] = {{{0}}}; + + /* + for (int i = 0; i < (int)datalen; i++) { + char path[PATH_MAX_LENGTH] = {0}; + + if (dvdata[0][i][0]) { + snprintf(path, sizeof(path), "$.DES.%d.Key", i); + JsonSaveBufAsHexCompact(root, path, &dvdata[0][i][1], DES_KEY_LEN); + } + + if (dvdata[1][i][0]) { + snprintf(path, sizeof(path), "$.3DES.%d.Key", i); + JsonSaveBufAsHexCompact(root, path, &dvdata[1][i][1], T2DES_KEY_LEN); + } + if (dvdata[2][i][0]) { + snprintf(path, sizeof(path), "$.AES.%d.Key", i); + JsonSaveBufAsHexCompact(root, path, &dvdata[2][i][1], AES_KEY_LEN); + } + if (dvdata[3][i][0]) { + snprintf(path, sizeof(path), "$.K3KDES.%d.Key", i); + JsonSaveBufAsHexCompact(root, path, &dvdata[3][i][1], T3DES_KEY_LEN); + } + } + */ +// memcpy(&data[14 + atslen], dvdata, 4 * 0xE * (24 + 1)); + + goto out; + } + + if (!strcmp(ctype, "14b v2")) { + size_t sptr = 0; + for (int i = 0; i < (maxdatalen / 4); i++) { + if (sptr + 4 > maxdatalen) { + retval = PM3_EMALLOC; + goto out; + } + + snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); + JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 4, &len); + if (!len) + break; + + sptr += len; + } + + *datalen = sptr; + goto out; + } + + if (!strcmp(ctype, "lto")) { + size_t sptr = 0; + for (int i = 0; i < (maxdatalen / 32); i++) { + if (sptr + 32 > maxdatalen) { + retval = PM3_EMALLOC; + goto out; + } + + snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); + JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 32, &len); + if (!len) + break; + + sptr += len; + } + + *datalen = sptr; + goto out; + } + + if (!strcmp(ctype, "cryptorf")) { + size_t sptr = 0; + for (int i = 0; i < (maxdatalen / 8); i++) { + if (sptr + 8 > maxdatalen) { + retval = PM3_EMALLOC; + goto out; + } + + snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); + JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 8, &len); + if (!len) + break; + + sptr += len; + } + + *datalen = sptr; + goto out; + } + + if (!strcmp(ctype, "ndef")) { + + json_error_t up_error = {0}; + int i1 = 0; + size_t ndefsize = 0; + if (json_unpack_ex(root, &up_error, 0, "{s:i}", "Ndef.Size", &i1) == 0) { + ndefsize = i1; + } + + size_t sptr = 0; + for (int i = 0; i < (maxdatalen / 16); i++) { + if (sptr + 16 > maxdatalen) { + retval = PM3_EMALLOC; + goto out; + } + + snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); + JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 16, &len); + if (!len) + break; + + sptr += len; + } + + *datalen = sptr; + goto out; + } + + // unidentified file format + if (verbose) { + PrintAndLogEx(FAILED, "Unidentified file format `" _YELLOW_("%s") "`", path); + } + retval = PM3_EFILE; + out: if (callback != NULL) { @@ -2082,17 +2318,20 @@ int searchFile(char **foundpath, const char *pm3dir, const char *searchname, con int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumplen) { - int res = 0; + int res = PM3_SUCCESS; DumpFileType_t dftype = getfiletype(fn); switch (dftype) { case BIN: { - res = loadFile_safe(fn, ".bin", pdump, dumplen); + loadFile_safe(fn, ".bin", pdump, dumplen); + if (res != PM3_SUCCESS) { + PrintAndLogEx(WARNING, "File IO failed"); + } break; } case EML: { res = loadFileEML_safe(fn, pdump, dumplen); - if (res == PM3_ESOFT) { - PrintAndLogEx(WARNING, "file IO failed"); + if (res != PM3_SUCCESS) { + PrintAndLogEx(WARNING, "File IO failed"); } break; } @@ -2103,8 +2342,9 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl return PM3_EMALLOC; } res = loadFileJSON(fn, *pdump, maxdumplen, dumplen, NULL); - if (res == PM3_SUCCESS) + if (res == PM3_SUCCESS) { return res; + } free(*pdump); @@ -2116,7 +2356,7 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl break; } case DICTIONARY: { - PrintAndLogEx(ERR, "Error: Only BIN/EML/JSON formats allowed"); + PrintAndLogEx(ERR, "Only BIN/EML/JSON formats allowed"); return PM3_EINVARG; } case MCT: { @@ -2128,15 +2368,49 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl return res; } -int pm3_save_dump(const char *fn, uint8_t *d, size_t n, JSONFileType jsft, size_t blocksize) { - +int pm3_save_dump(const char *fn, uint8_t *d, size_t n, JSONFileType jsft) { + if (fn == NULL || strlen(fn) == 0) { + return PM3_EINVARG; + } if (d == NULL || n == 0) { PrintAndLogEx(INFO, "No data to save, skipping..."); return PM3_EINVARG; } - saveFile(fn, ".bin", d, n); - saveFileEML(fn, d, n, blocksize); saveFileJSON(fn, jsft, d, n, NULL); return PM3_SUCCESS; } + +int pm3_save_mf_dump(const char *fn, uint8_t *d, size_t n, JSONFileType jsft) { + + if (fn == NULL || d == NULL || n == 0) { + PrintAndLogEx(INFO, "No data to save, skipping..."); + return PM3_EINVARG; + } + saveFile(fn, ".bin", d, n); + + iso14a_mf_extdump_t jd = {0}; + jd.card_info.ats_len = 0; + + // Check for 4 bytes uid: bcc corrected and single size uid bits in ATQA + if ((d[0] ^ d[1] ^ d[2] ^ d[3]) == d[4] && (d[6] & 0xC0) == 0) { + jd.card_info.uidlen = 4; + memcpy(jd.card_info.uid, d, jd.card_info.uidlen); + jd.card_info.sak = d[5]; + memcpy(jd.card_info.atqa, &d[6], sizeof(jd.card_info.atqa)); + } + // Check for 7 bytes UID: double size uid bits in ATQA + else if ((d[8] & 0xC0) == 0x40) { + jd.card_info.uidlen = 7; + memcpy(jd.card_info.uid, d, jd.card_info.uidlen); + jd.card_info.sak = d[7]; + memcpy(jd.card_info.atqa, &d[8], sizeof(jd.card_info.atqa)); + } else { + PrintAndLogEx(WARNING, "Invalid dump. UID/SAK/ATQA not found"); + } + jd.dump = d; + jd.dumplen = n; + saveFileJSON(fn, jsfMfc_v2, (uint8_t *)&jd, sizeof(jd), NULL); + return PM3_SUCCESS; +} + diff --git a/client/src/fileutils.h b/client/src/fileutils.h index 81cb13e05..98ecc466d 100644 --- a/client/src/fileutils.h +++ b/client/src/fileutils.h @@ -29,15 +29,32 @@ #include "mifare/mifarehost.h" #include "cmdhfmfu.h" +#include "protocols.h" // iclass defines +#include "cmdhftopaz.h" // TOPAZ defines +#include "mifare/mifaredefault.h" // MFP / AES defines + +typedef union { + void *v; + uint8_t *bytes; + mfu_dump_t *mfu; + topaz_tag_t *topaz; + iso14a_mf_extdump_t *mfc; +} udata_t; + typedef enum { jsfRaw, jsfCardMemory, + jsfMfc_v2, jsfMfuMemory, jsfHitag, jsfIclass, jsf14b, + jsf14b_v2, jsf15, + jsf15_v2, + jsf15_v3, jsfLegic, + jsfLegic_v2, jsfT55x7, jsfT5555, jsfMfPlusKeys, @@ -49,6 +66,9 @@ typedef enum { jsfFido, jsfFudan, jsfTopaz, + jsfLto, + jsfCryptorf, + jsfNDEF, } JSONFileType; typedef enum { @@ -276,18 +296,33 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl /** STUB - * @brief Utility function to save data to three file files (BIN/EML/JSON). + * @brief Utility function to save data to three file files (BIN/JSON). * It also tries to save according to user preferences set dump folder paths. * E.g. dumpdata.bin - * E.g. dumpdata.eml * E.g. dumpdata.json - + * * @param fn * @param d The binary data to write to the file * @param n the length of the data * @param jsft json format type for the different memory cards (MFC, MFUL, LEGIC, 14B, 15, ICLASS etc) - * @param blocksize * @return PM3_SUCCESS if OK */ -int pm3_save_dump(const char *fn, uint8_t *d, size_t n, JSONFileType jsft, size_t blocksize); +int pm3_save_dump(const char *fn, uint8_t *d, size_t n, JSONFileType jsft); + +/** STUB + * @brief Utility function to save data to three file files (BIN/JSON). + * It also tries to save according to user preferences set dump folder paths. + * E.g. dumpdata.bin + * E.g. dumpdata.json + * + * This function is dedicated for MIFARE CLASSIC dumps. Checking for 4 or 7 byte UID in indata. + * Saves the corrected data in the json file + * + * @param fn + * @param d The binary data to write to the file + * @param n the length of the data + * @param jsft json format type for the different memory cards (MFC, MFUL, LEGIC, 14B, 15, ICLASS etc) + * @return PM3_SUCCESS if OK + */ +int pm3_save_mf_dump(const char *fn, uint8_t *d, size_t n, JSONFileType jsft); #endif // FILEUTILS_H diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index e0bc83c14..50dec1b35 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -1278,3 +1278,33 @@ int NDEFDecodeAndPrint(uint8_t *ndef, size_t ndefLen, bool verbose) { } return PM3_SUCCESS; } + + +int NDEFGetTotalLength(uint8_t *ndef, size_t ndeflen, size_t *outlen) { + + size_t idx = 0; + while (idx < ndeflen) { + + if (ndef[idx] == 0x00 || + ndef[idx] == 0x01 || + ndef[idx] == 0x02 || + ndef[idx] == 0x03 || + ndef[idx] == 0xFD) { + idx++; + idx += ndefTLVGetLength(&ndef[idx], &idx); + continue; + } + + if (ndef[idx] == 0xFE) { + idx++; + break; + } + + // invalid NDEF + *outlen = 0; + return PM3_ESOFT; + } + + *outlen = idx; + return PM3_SUCCESS; +} \ No newline at end of file diff --git a/client/src/nfc/ndef.h b/client/src/nfc/ndef.h index 643bb70a7..31967c61a 100644 --- a/client/src/nfc/ndef.h +++ b/client/src/nfc/ndef.h @@ -76,5 +76,5 @@ typedef struct { int NDEFDecodeAndPrint(uint8_t *ndef, size_t ndefLen, bool verbose); int NDEFRecordsDecodeAndPrint(uint8_t *ndefRecord, size_t ndefRecordLen, bool verbose); - +int NDEFGetTotalLength(uint8_t *ndef, size_t ndeflen, size_t *outlen); #endif // _NDEF_H_ diff --git a/include/iclass_cmd.h b/include/iclass_cmd.h index dca08b6aa..e7e1d0cd3 100644 --- a/include/iclass_cmd.h +++ b/include/iclass_cmd.h @@ -24,7 +24,7 @@ //----------------------------------------------------------------------------- // iCLASS / PICOPASS //----------------------------------------------------------------------------- - +#define PICOPASS_BLOCK_SIZE 8 // iCLASS reader flags #define FLAG_ICLASS_READER_INIT 0x01 From 89db5d38752459fd360ea10873cb7244fa1e8389 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 2 Oct 2023 20:59:01 +0200 Subject: [PATCH 0516/1034] text --- client/src/cmdhf14b.c | 2 +- client/src/cmdhf15.c | 20 +++++++------- client/src/cmdhfcryptorf.c | 8 +++--- client/src/cmdhffudan.c | 6 ++--- client/src/cmdhficlass.c | 20 +++++++------- client/src/cmdhflegic.c | 4 +-- client/src/cmdhfmf.c | 26 +++++++++--------- client/src/cmdhfmfp.c | 6 ++--- client/src/cmdhfmfu.c | 10 +++---- client/src/cmdhfntag424.c | 2 +- client/src/cmdhftopaz.c | 6 ++--- client/src/cmdlfem4x50.c | 4 +-- client/src/cmdlft55xx.c | 2 +- client/src/fileutils.c | 54 +++----------------------------------- client/src/fileutils.h | 13 --------- doc/cheatsheet.md | 10 +++---- 16 files changed, 66 insertions(+), 127 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 59a452fb6..9ceb7f3ee 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -2168,7 +2168,7 @@ static int CmdHF14BView(const char *Cmd) { ); void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "filename of dump"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), arg_lit0("v", "verbose", "verbose output"), arg_param_end }; diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index eea85272a..a4f6e5922 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -1143,13 +1143,13 @@ static int CmdHF15ELoad(const char *Cmd) { static int CmdHF15ESave(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf 15 esave", - "Save emulator memory into two files (BIN/JSON) ", + "Save emulator memory into two files (bin/json) ", "hf 15 esave -f hf-15-01020304" "hf 15 esave -b 8 -c 42 -f hf-15-01020304" ); void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "filename of dump"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), arg_int0(NULL, "bsize", "<dec>", "block size, defaults to 4"), arg_int0("c", "count", "<dec>", "number of blocks to export, defaults to all"), arg_param_end @@ -1542,7 +1542,7 @@ static int CmdHF15WriteDsfid(const char *Cmd) { static int CmdHF15Dump(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf 15 dump", - "This command dumps the contents of a ISO-15693 tag and save it to file", + "This command dumps the contents of a ISO-15693 tag and save to file (bin/json)", "hf 15 dump\n" "hf 15 dump -*\n" "hf 15 dump -u E011223344556677 -f hf-15-my-dump.bin" @@ -1550,7 +1550,7 @@ static int CmdHF15Dump(const char *Cmd) { void *argtable[6 + 2] = {}; uint8_t arglen = arg_add_default(argtable); - argtable[arglen++] = arg_str0("f", "file", "<fn>", "filename of dump"), + argtable[arglen++] = arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), argtable[arglen++] = arg_param_end; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -2175,7 +2175,7 @@ static int CmdHF15Write(const char *Cmd) { static int CmdHF15Restore(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf 15 restore", - "This command restore the contents of a dump file onto a ISO-15693 tag", + "This command restore the contents of a dump file (bin/eml/json) onto a ISO-15693 tag", "hf 15 restore\n" "hf 15 restore -*\n" "hf 15 restore -u E011223344556677 -f hf-15-my-dump.bin" @@ -2183,10 +2183,10 @@ static int CmdHF15Restore(const char *Cmd) { void *argtable[6 + 5] = {}; uint8_t arglen = arg_add_default(argtable); - argtable[arglen++] = arg_str0("f", "file", "<fn>", "filename of dump"), - argtable[arglen++] = arg_int0("r", "retry", "<dec>", "number of retries (def 3)"), - argtable[arglen++] = arg_int0(NULL, "bs", "<dec>", "block size (def 4)"), - argtable[arglen++] = arg_lit0("v", "verbose", "verbose output"); + argtable[arglen++] = arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), + argtable[arglen++] = arg_int0("r", "retry", "<dec>", "number of retries (def 3)"), + argtable[arglen++] = arg_int0(NULL, "bs", "<dec>", "block size (def 4)"), + argtable[arglen++] = arg_lit0("v", "verbose", "verbose output"); argtable[arglen++] = arg_param_end; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -2856,7 +2856,7 @@ static int CmdHF15View(const char *Cmd) { ); void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "filename of dump"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), // arg_lit0("z", "dense", "dense dump output style"), arg_param_end }; diff --git a/client/src/cmdhfcryptorf.c b/client/src/cmdhfcryptorf.c index 12e522f2a..ef0979182 100644 --- a/client/src/cmdhfcryptorf.c +++ b/client/src/cmdhfcryptorf.c @@ -423,13 +423,13 @@ static int CmdHFCryptoRFELoad(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf cryptorf eload", - "Loads CryptoRF tag dump into emulator memory on device", + "Loads CryptoRF tag dump (bin/eml/json) into emulator memory on device", "hf cryptorf eload -f hf-cryptorf-0102030405-dump.bin\n" ); void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "filename of dump"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -485,14 +485,14 @@ static int CmdHFCryptoRFESave(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf cryptorf esave", - "Save emulator memory to to two files (bin/json)\n" + "Save emulator memory to file (bin/json)\n" "if filename is not supplied, UID will be used.", "hf cryptorf esave\n" "hf cryptorf esave -f filename" ); void *argtable[] = { arg_param_begin, - arg_str0("f", "file", "<fn>", "filename of dump"), + arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); diff --git a/client/src/cmdhffudan.c b/client/src/cmdhffudan.c index 7403afeb6..85e857e6e 100644 --- a/client/src/cmdhffudan.c +++ b/client/src/cmdhffudan.c @@ -235,14 +235,14 @@ static int CmdHFFudanReader(const char *Cmd) { static int CmdHFFudanDump(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf fudan dump", - "Dump FUDAN tag to binary file\n" + "Dump FUDAN tag to file (bin/json)\n" "If no <name> given, UID will be used as filename", "hf fudan dump -f mydump --> dump using filename\n" ); void *argtable[] = { arg_param_begin, - arg_str0("f", "file", "<fn>", "filename of dump"), + arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -453,7 +453,7 @@ static int CmdHFFudanView(const char *Cmd) { ); void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "filename of dump"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 08ed01068..8fa9910f7 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1009,14 +1009,14 @@ static int CmdHFiClassReader(const char *Cmd) { static int CmdHFiClassELoad(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf iclass eload", - "Load emulator memory with data from (bin/eml/json) iCLASS dump file", - "hf iclass eload -f hf-iclass-AA162D30F8FF12F1-dump.eml\n" + "Load emulator memory with data from (bin/json) iCLASS dump file", + "hf iclass eload -f hf-iclass-AA162D30F8FF12F1-dump.json\n" "hf iclass eload -f hf-iclass-AA162D30F8FF12F1-dump.bin -m\n" ); void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "filename of dump"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), arg_lit0("m", "mem", "use RDV4 spiffs"), arg_lit0("v", "verbose", "verbose output"), arg_param_end @@ -1103,7 +1103,7 @@ static int CmdHFiClassELoad(const char *Cmd) { static int CmdHFiClassESave(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf iclass esave", - "Save emulator memory to file.\n" + "Save emulator memory to file (bin/json)\n" "if filename is not supplied, CSN will be used.", "hf iclass esave\n" "hf iclass esave -f hf-iclass-dump\n" @@ -1111,7 +1111,7 @@ static int CmdHFiClassESave(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str0("f", "file", "<fn>", "filename of dump file"), + arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), arg_int0("s", "size", "<256|2048>", "number of bytes to save (default 256)"), arg_param_end }; @@ -1308,7 +1308,7 @@ static int CmdHFiClassDecrypt(const char *Cmd) { "which is defined by the configuration block.\n" "\nOBS!\n" "In order to use this function, the file `iclass_decryptionkey.bin` must reside\n" - "in the resources directory. The file should be 16 bytes binary data\n" + "in the resources directory. The file must be 16 bytes binary data\n" "or...\n" "make sure your cardhelper is placed in the sim module", "hf iclass decrypt -f hf-iclass-AA162D30F8FF12F1-dump.bin\n" @@ -1317,7 +1317,7 @@ static int CmdHFiClassDecrypt(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str0("f", "file", "<fn>", "filename of dump file (bin/eml/json)"), + arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), arg_str0("d", "data", "<hex>", "3DES encrypted data"), arg_str0("k", "key", "<hex>", "3DES transport key"), arg_lit0("v", "verbose", "verbose output"), @@ -2328,7 +2328,7 @@ static int CmdHFiClassCreditEpurse(const char *Cmd) { static int CmdHFiClassRestore(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf iclass restore", - "Restore data from dumpfile onto a iCLASS tag", + "Restore data from dumpfile (bin/eml/json) onto a iCLASS tag", "hf iclass restore -f hf-iclass-AA162D30F8FF12F1-dump.bin --first 6 --last 18 --ki 0\n" "hf iclass restore -f hf-iclass-AA162D30F8FF12F1-dump.bin --first 6 --last 18 --ki 0 --elite\n" "hf iclass restore -f hf-iclass-AA162D30F8FF12F1-dump.bin --first 6 --last 18 -k 1122334455667788 --elite\n" @@ -2336,7 +2336,7 @@ static int CmdHFiClassRestore(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "specify a filename to restore (bin/eml/json)"), + arg_str1("f", "file", "<fn>", "specify a filename to restore"), arg_str0("k", "key", "<hex>", "Access key as 8 hex bytes"), arg_int0(NULL, "ki", "<dec>", "Key index to select key from memory 'hf iclass managekeys'"), arg_int1(NULL, "first", "<dec>", "The first block number to restore"), @@ -3026,7 +3026,7 @@ static int CmdHFiClassView(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "filename of dump"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), arg_int0(NULL, "first", "<dec>", "Begin printing from this block (default first user block)"), arg_int0(NULL, "last", "<dec>", "End printing at this block (default 0, ALL)"), arg_lit0("v", "verbose", "verbose output"), diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 676ed3911..33aad2518 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -966,7 +966,7 @@ static int CmdLegicRestore(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "Filename to restore"), + arg_str1("f", "file", "<fn>", "Specify a filename to restore"), arg_lit0(NULL, "ob", "obfuscate dump data (xor with MCC)"), arg_param_end }; @@ -1406,7 +1406,7 @@ static int CmdLegicView(const char *Cmd) { ); void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "Filename of dump"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), arg_lit0("v", "verbose", "verbose output"), arg_param_end }; diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 1267235de..fb620edbf 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -1130,7 +1130,7 @@ static int FastDumpWithEcFill(uint8_t numsectors) { static int CmdHF14AMfDump(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf dump", - "Dump MIFARE Classic tag to binary file\n" + "Dump MIFARE Classic tag to file (bin/json)\n" "If no <name> given, UID will be used as filename", "hf mf dump --mini --> MIFARE Mini\n" "hf mf dump --1k --> MIFARE Classic 1k\n" @@ -1140,7 +1140,7 @@ static int CmdHF14AMfDump(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str0("f", "file", "<fn>", "filename of dump"), + arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), arg_str0("k", "keys", "<fn>", "filename of keys"), arg_lit0(NULL, "mini", "MIFARE Classic Mini / S20"), arg_lit0(NULL, "1k", "MIFARE Classic 1k / S50 (def)"), @@ -1264,7 +1264,7 @@ static int CmdHF14AMfRestore(const char *Cmd) { arg_lit0(NULL, "2k", "MIFARE Classic/Plus 2k"), arg_lit0(NULL, "4k", "MIFARE Classic 4k / S70"), arg_str0("u", "uid", "<hex>", "uid, (4|7|10 hex bytes)"), - arg_str0("f", "file", "<fn>", "specify dump filename (bin/eml/json)"), + arg_str0("f", "file", "<fn>", "specify a filename for dump file"), arg_str0("k", "kfn", "<fn>", "key filename"), arg_lit0(NULL, "ka", "use specified keyfile to authenticate"), arg_lit0(NULL, "force", "override warnings"), @@ -4250,7 +4250,7 @@ int CmdHF14AMfELoad(const char *Cmd) { ); void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "filename of dump"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), arg_lit0(NULL, "mini", "MIFARE Classic Mini / S20"), arg_lit0(NULL, "1k", "MIFARE Classic 1k / S50 (def)"), arg_lit0(NULL, "2k", "MIFARE Classic/Plus 2k"), @@ -4439,14 +4439,14 @@ static int CmdHF14AMfESave(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf esave", - "Save emulator memory into two files (bin//json) ", + "Save emulator memory to file (bin/json) ", "hf mf esave\n" "hf mf esave --4k\n" "hf mf esave --4k -f hf-mf-01020304.eml" ); void *argtable[] = { arg_param_begin, - arg_str0("f", "file", "<fn>", "filename of dump"), + arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), arg_lit0(NULL, "mini", "MIFARE Classic Mini / S20"), arg_lit0(NULL, "1k", "MIFARE Classic 1k / S50 (def)"), arg_lit0(NULL, "2k", "MIFARE Classic/Plus 2k"), @@ -4952,7 +4952,7 @@ static int CmdHF14AMfCLoad(const char *Cmd) { ); void *argtable[] = { arg_param_begin, - arg_str0("f", "file", "<fn>", "filename of dump"), + arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), arg_lit0(NULL, "emu", "from emulator memory"), arg_param_end }; @@ -5181,14 +5181,14 @@ static int CmdHF14AMfCGetSc(const char *Cmd) { static int CmdHF14AMfCSave(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf csave", - "Save magic gen1a card memory into two files (bin/json)" + "Save magic gen1a card memory to file (bin/json)" "or into emulator memory", "hf mf csave\n" "hf mf csave --4k" ); void *argtable[] = { arg_param_begin, - arg_str0("f", "file", "<fn>", "filename of dump"), + arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), arg_lit0(NULL, "mini", "MIFARE Classic Mini / S20"), arg_lit0(NULL, "1k", "MIFARE Classic 1k / S50 (def)"), arg_lit0(NULL, "2k", "MIFARE Classic/Plus 2k"), @@ -7332,7 +7332,7 @@ static int CmdHF14AMfView(const char *Cmd) { ); void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "filename of dump"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), arg_lit0("v", "verbose", "verbose output"), arg_lit0(NULL, "sk", "Save extracted keys to file"), arg_param_end @@ -7509,7 +7509,7 @@ static int CmdHF14AGen4Load(const char *cmd) { arg_lit0(NULL, "4k", "MIFARE Classic 4k / S70"), arg_str0("p", "pwd", "<hex>", "password 4bytes"), arg_lit0("v", "verbose", "verbose output"), - arg_str0("f", "file", "<fn>", "filename of dump"), + arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), arg_lit0(NULL, "emu", "from emulator memory"), arg_int0(NULL, "start", "<dec>", "index of block to start writing (default 0)"), arg_int0(NULL, "end", "<dec>", "index of block to end writing (default last block)"), @@ -7855,7 +7855,7 @@ static int CmdHF14AGen4Save(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf gsave", - "Save `magic gen4 gtu` card memory into two files (bin/json)" + "Save `magic gen4 gtu` card memory to file (bin/json)" "or into emulator memory", "hf mf gsave\n" "hf mf gsave --4k\n" @@ -7868,7 +7868,7 @@ static int CmdHF14AGen4Save(const char *Cmd) { arg_lit0(NULL, "2k", "MIFARE Classic/Plus 2k"), arg_lit0(NULL, "4k", "MIFARE Classic 4k / S70"), arg_str0("p", "pwd", "<hex>", "password 4 bytes"), - arg_str0("f", "file", "<fn>", "filename of dump"), + arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), arg_lit0(NULL, "emu", "to emulator memory"), arg_param_end }; diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 9d854290e..9c02e8aea 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1384,15 +1384,15 @@ static int CmdHFMFPChk(const char *Cmd) { static int CmdHFMFPDump(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mfp dump", - "Dump MIFARE Plus tag to binary file\n" + "Dump MIFARE Plus tag to file (bin/json)\n" "If no <name> given, UID will be used as filename", "hf mfp dump\n" "hf mfp dump --keys hf-mf-066C8B78-key.bin --> MIFARE Plus with keys from specified file\n"); void *argtable[] = { arg_param_begin, - arg_str0("f", "file", "<fn>", "filename of dump"), - arg_str0("k", "keys", "<fn>", "filename of keys"), + arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), + arg_str0("k", "keys", "<fn>", "Specify a filename for keys file"), arg_lit0(NULL, "ns", "no save to file"), arg_lit0("v", "verbose", "Verbose mode"), arg_param_end diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 8c46ad992..c15ad1b74 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -2434,7 +2434,7 @@ static int CmdHF14AMfUDump(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mfu dump", - "Dump MIFARE Ultralight/NTAG tag to binary/eml/json files.\n" + "Dump MIFARE Ultralight/NTAG tag to files (bin/json)\n" "It autodetects card type." "Supports:\n" "Ultralight, Ultralight-C, Ultralight EV1\n" @@ -2848,7 +2848,7 @@ static int CmdHF14AMfURestore(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "specify dump filename"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), arg_str0("k", "key", "<hex>", "key for authentication (UL-C 16 bytes, EV1/NTAG 4 bytes)"), arg_lit0("l", NULL, "swap entered key's endianness"), arg_lit0("s", NULL, "enable special write UID -MAGIC TAG ONLY-"), @@ -3065,7 +3065,7 @@ static int CmdHF14AMfUeLoad(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "Filename of dump"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), arg_int0("q", "qty", "<dec>", "Number of blocks to load from eml file"), arg_lit0("v", "verbose", "verbose output"), arg_param_end @@ -4574,7 +4574,7 @@ static int CmdHF14AMfuESave(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_int0("e", "end", "<dec>", "index of last block"), - arg_str0("f", "file", "<fn>", "filename of dump"), + arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), arg_param_end }; @@ -4634,7 +4634,7 @@ static int CmdHF14AMfuView(const char *Cmd) { ); void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "Filename of dump"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), arg_lit0("v", "verbose", "Verbose output"), arg_param_end }; diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index fa6170c94..b3b6c47c7 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -41,7 +41,7 @@ static int CmdHF_ntag424_view(const char *Cmd) { ); void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "Filename of dump"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), arg_lit0("v", "verbose", "Verbose output"), arg_param_end }; diff --git a/client/src/cmdhftopaz.c b/client/src/cmdhftopaz.c index 97ba7e5f0..5b8ab2677 100644 --- a/client/src/cmdhftopaz.c +++ b/client/src/cmdhftopaz.c @@ -838,13 +838,13 @@ static int CmdHFTopazDump(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf topaz dump", - "Dump TOPAZ tag to binary file\n" + "Dump TOPAZ tag to file (bin/json)\n" "If no <name> given, UID will be used as filename", "hf topaz dump\n"); void *argtable[] = { arg_param_begin, - arg_str0("f", "file", "<fn>", "filename of dump"), + arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), arg_lit0(NULL, "ns", "no save to file"), arg_param_end }; @@ -916,7 +916,7 @@ static int CmdHFTopazView(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "filename of dump"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index d44d71dcf..b94acfcc5 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -194,7 +194,7 @@ int CmdEM4x50ELoad(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "<fn>", "dump filename"), + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), arg_param_end }; @@ -1113,7 +1113,7 @@ int CmdEM4x50Restore(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_str0("u", "uid", "<hex>", "uid, 4 hex bytes, msb"), - arg_str0("f", "file", "<fn>", "specify dump filename (bin/eml/json)"), + arg_str0("f", "file", "<fn>", "specify a filename for dump file"), arg_str0("p", "pwd", "<hex>", "password, 4 hex bytes, lsb"), arg_param_end }; diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index e9da9de64..639fa2ce0 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -2336,7 +2336,7 @@ static int CmdT55xxRestore(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str0("f", "file", "<fn>", "filename of dump file"), + arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), arg_str0("p", "pwd", "<hex>", "password if target card has password set (4 hex bytes)"), arg_param_end }; diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 8ed6e01ee..845b49fcd 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -264,57 +264,6 @@ int saveFile(const char *preferredName, const char *suffix, const void *data, si return PM3_SUCCESS; } -// dump file -int saveFileEML(const char *preferredName, uint8_t *data, size_t datalen, size_t blocksize) { - - if (data == NULL || datalen == 0) { - return PM3_EINVARG; - } - - char *fileName = newfilenamemcopyEx(preferredName, ".eml", spDump); - if (fileName == NULL) { - return PM3_EMALLOC; - } - - int retval = PM3_SUCCESS; - int blocks = datalen / blocksize; - uint16_t currblock = 1; - - // We should have a valid filename now, e.g. dumpdata-3.bin - - // Opening file for writing in text mode - FILE *f = fopen(fileName, "w+"); - if (!f) { - PrintAndLogEx(WARNING, "file not found or locked `" _YELLOW_("%s") "`", fileName); - retval = PM3_EFILE; - goto out; - } - - for (size_t i = 0; i < datalen; i++) { - fprintf(f, "%02X", data[i]); - - // no extra line in the end - if ((i + 1) % blocksize == 0 && currblock != blocks) { - fprintf(f, "\n"); - currblock++; - } - } - // left overs - if (datalen % blocksize != 0) { - int index = blocks * blocksize; - for (size_t j = 0; j < datalen % blocksize; j++) { - fprintf(f, "%02X", data[index + j]); - } - } - fflush(f); - fclose(f); - PrintAndLogEx(SUCCESS, "saved " _YELLOW_("%" PRId32) " blocks to text file " _YELLOW_("%s"), blocks, fileName); - -out: - free(fileName); - return retval; -} - // dump file (normally, we also got preference file, etc) int saveFileJSON(const char *preferredName, JSONFileType ftype, uint8_t *data, size_t datalen, void (*callback)(json_t *)) { return saveFileJSONex(preferredName, ftype, data, datalen, true, callback, spDump); @@ -1543,12 +1492,15 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz if (!strcmp(ctype, "ndef")) { + /* + // when we will read and return extra values from NDEF json json_error_t up_error = {0}; int i1 = 0; size_t ndefsize = 0; if (json_unpack_ex(root, &up_error, 0, "{s:i}", "Ndef.Size", &i1) == 0) { ndefsize = i1; } + */ size_t sptr = 0; for (int i = 0; i < (maxdatalen / 16); i++) { diff --git a/client/src/fileutils.h b/client/src/fileutils.h index 98ecc466d..885692569 100644 --- a/client/src/fileutils.h +++ b/client/src/fileutils.h @@ -100,19 +100,6 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath */ int saveFile(const char *preferredName, const char *suffix, const void *data, size_t datalen); -/** - * @brief Utility function to save data to a textfile (EML). This method takes a preferred name, but if that - * file already exists, it tries with another name until it finds something suitable. - * E.g. dumpdata-15.txt - * - * @param preferredName - * @param data The binary data to write to the file - * @param datalen the length of the data - * @param blocksize the length of one row - * @return 0 for ok, 1 for failz -*/ -int saveFileEML(const char *preferredName, uint8_t *data, size_t datalen, size_t blocksize); - /** STUB * @brief Utility function to save JSON data to a file. This method takes a preferred name, but if that * file already exists, it tries with another name until it finds something suitable. diff --git a/doc/cheatsheet.md b/doc/cheatsheet.md index c25b7f486..f012a0f17 100644 --- a/doc/cheatsheet.md +++ b/doc/cheatsheet.md @@ -140,7 +140,7 @@ Decrypt iCLASS Block / file ``` Options --- --f, --file <filename> filename of dumpfile +-f, --file <filename> Specify a filename for dump file -d, --data <hex> 3DES encrypted data -k, --key <hex> 3DES transport key -v, --verbose verbose output @@ -153,7 +153,7 @@ Load iCLASS dump into memory for simulation ``` Options --- --f, --file <filename> filename of dump +-f, --file <filename> Specify a filename for dump file --json load JSON type dump --eml load EML type dump @@ -261,8 +261,8 @@ Dump MIFARE Classic card contents ``` Options: --- --f, --file <filename> filename of dump --k, --keys <filename> filename of keys +-f, --file <filename> Specify a filename for dump file +-k, --keys <filename> Specify a filename for keys file --mini MIFARE Classic Mini / S20 --1k MIFARE Classic 1k / S50 (default) --2k MIFARE Classic/Plus 2k @@ -335,7 +335,7 @@ Accepts (BIN/EML/JSON) ``` Options --- --f, --file <fn> filename of dump +-f, --file <fn> Specify a filename for dump file --mini MIFARE Classic Mini / S20 --1k MIFARE Classic 1k / S50 (def) --2k MIFARE Classic/Plus 2k From 115e85e5d4a6bcc551b9329597f34c4a562be00d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 2 Oct 2023 21:01:08 +0200 Subject: [PATCH 0517/1034] missing defines --- client/src/mifare/mifaredefault.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/src/mifare/mifaredefault.h b/client/src/mifare/mifaredefault.h index 7bb7e144a..f399bb7b0 100644 --- a/client/src/mifare/mifaredefault.h +++ b/client/src/mifare/mifaredefault.h @@ -21,10 +21,13 @@ #include "common.h" +#define DES_KEY_LEN 8 #define AES_KEY_LEN 16 +#define T2DES_KEY_LEN 16 +#define T3DES_KEY_LEN 24 + #define MAX_AES_KEYS_LIST_LEN 1024 -#define MFKEY_SIZE 6 #define MFBLOCK_SIZE 16 #define MIFARE_4K_MAXBLOCK 256 From e94a65303826f0ff7c2eca3fd24418d037cadfed Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 2 Oct 2023 21:04:21 +0200 Subject: [PATCH 0518/1034] missing return --- client/src/util.c | 2 +- client/src/util.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/util.c b/client/src/util.c index 65e3295f9..6e6da4359 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -959,7 +959,7 @@ int hextobinstring_n(char *target, char *source, int sourcelen) { } // convert bytes to binary string -int byte_2_binstr(char *target, const uint8_t *source, size_t sourcelen) { +void byte_2_binstr(char *target, const uint8_t *source, size_t sourcelen) { //uint8_t *p = *source; for (int i = 0 ; i < sourcelen; ++i) { uint8_t b = *(source++); diff --git a/client/src/util.h b/client/src/util.h index bbae06fcf..c606113fe 100644 --- a/client/src/util.h +++ b/client/src/util.h @@ -122,7 +122,7 @@ int binarraytohex(char *target, const size_t targetlen, const char *source, size void binarraytobinstring(char *target, char *source, int length); int binstring2binarray(uint8_t *target, char *source, int length); -int byte_2_binstr(char *target, const uint8_t *source, size_t sourcelen); +void byte_2_binstr(char *target, const uint8_t *source, size_t sourcelen); uint8_t GetParity(const uint8_t *bits, uint8_t type, int length); void wiegand_add_parity(uint8_t *target, uint8_t *source, uint8_t length); From 010668ebb110b47c3e19e1b1948f79c7da96c9dc Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 2 Oct 2023 21:39:15 +0200 Subject: [PATCH 0519/1034] clean up --- armsrc/Standalone/hf_iceclass.c | 1 - armsrc/iso15693.c | 4 ++-- client/gen_pm3mfsim_script.sh | 4 ++-- client/luascripts/hf_mf_tnp3_sim.lua | 6 ------ client/src/cmdhf15.c | 2 +- client/src/cmdlf.c | 4 ++-- 6 files changed, 7 insertions(+), 14 deletions(-) diff --git a/armsrc/Standalone/hf_iceclass.c b/armsrc/Standalone/hf_iceclass.c index 481475bbc..ea38574db 100644 --- a/armsrc/Standalone/hf_iceclass.c +++ b/armsrc/Standalone/hf_iceclass.c @@ -69,7 +69,6 @@ #define HF_ICALSSS_READSIM_TEMP_MOD_BIN "iceclass-temp-mod.bin" #define HF_ICLASS_FULLSIM_MOD "iceclass-modified" #define HF_ICLASS_FULLSIM_MOD_BIN HF_ICLASS_FULLSIM_MOD".bin" -#define HF_ICLASS_FULLSIM_MOD_EML HF_ICLASS_FULLSIM_MOD".eml" #define HF_ICLASS_ATTACK_BIN "iclass_mac_attack" #define HF_ICLASS_CC_A "iceclass_cc_a.bin" diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index 54aaa16bd..da2f9255e 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -1060,7 +1060,7 @@ int GetIso15693AnswerFromTag(uint8_t *response, uint16_t max_len, uint16_t timeo if (dtf->len > dtf->max_len) { ret = PM3_EOVFLOW; - Dbprintf("overflow (%d > %d", dtf->len, dtf->max_len); + Dbprintf("overflow (%d > %d)", dtf->len, dtf->max_len); } break; } @@ -1083,7 +1083,7 @@ int GetIso15693AnswerFromTag(uint8_t *response, uint16_t max_len, uint16_t timeo if (dt->len > dt->max_len) { ret = PM3_EOVFLOW; - Dbprintf("overflow (%d > %d", dt->len, dt->max_len); + Dbprintf("overflow (%d > %d)", dt->len, dt->max_len); } break; } diff --git a/client/gen_pm3mfsim_script.sh b/client/gen_pm3mfsim_script.sh index 6947c9bda..fa1ae728e 100644 --- a/client/gen_pm3mfsim_script.sh +++ b/client/gen_pm3mfsim_script.sh @@ -30,6 +30,6 @@ fi rm $2 echo "hf mf eclr" >> $2 -echo "hf mf eload" $1 >> $2 +echo "hf mf eload -f " $1 >> $2 echo "hf mf ekeyprn" >> $2 -echo "hf mf sim -u" `cat $1.eml | (read -n 8 uid; echo $uid)` >> $2 +echo "hf mf sim --1k -u" `cat $1.eml | (read -n 8 uid; echo $uid)` >> $2 diff --git a/client/luascripts/hf_mf_tnp3_sim.lua b/client/luascripts/hf_mf_tnp3_sim.lua index d44a883fd..f04c8d7fa 100644 --- a/client/luascripts/hf_mf_tnp3_sim.lua +++ b/client/luascripts/hf_mf_tnp3_sim.lua @@ -87,12 +87,6 @@ local function ExitMsg(msg) print() end -local function writedumpfile(infile) - t = infile:read('*all') - len = string.len(t) - local len,hex = bin.unpack(('H%d'):format(len),t) - return hex -end -- blocks with data -- there are two dataareas, in block 8 or block 36, ( 1==8 , -- checksum type = 0, 1, 2, 3 diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index a4f6e5922..861a18201 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -1249,7 +1249,7 @@ static int CmdHF15EView(const char *Cmd) { } PrintAndLogEx(INFO, "Downloading %u bytes from emulator memory", bytes); - if (!GetFromDevice(BIG_BUF_EML, dump, bytes, 0, NULL, 0, NULL, 2500, false)) { + if (GetFromDevice(BIG_BUF_EML, dump, bytes, 0, NULL, 0, NULL, 2500, false) == false) { PrintAndLogEx(WARNING, "Fail, transfer from device time-out"); free(dump); return PM3_ETIMEOUT; diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 87095631b..1d57378c7 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------------- +// //----------------------------------------------------------------------------- // Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. // // This program is free software: you can redistribute it and/or modify @@ -469,7 +469,7 @@ int CmdFlexdemod(const char *Cmd) { sum += data[i++]; } bits[bit] = (sum > 0) ? 1 : 0; - PrintAndLogEx(NORMAL, "bit %d sum %d", bit, sum); + // PrintAndLogEx(NORMAL, "bit %d sum %d", bit, sum); } for (bit = 0; bit < 64; bit++) { From dee03b414c9a25b9523033ccd6ed391c3c9a7d34 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 2 Oct 2023 21:47:35 +0200 Subject: [PATCH 0520/1034] fix some coverity --- client/src/cmdhf15.c | 4 ++-- client/src/fileutils.c | 12 ++++-------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 861a18201..18533cb47 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -1706,9 +1706,9 @@ static int CmdHF15Dump(const char *Cmd) { } if (blklen == 8) { - pm3_save_dump(filename, data, (blocknum * blklen), jsf15_v3); + pm3_save_dump(filename, data, (size_t)(blocknum * blklen), jsf15_v3); } else { - pm3_save_dump(filename, data, (blocknum * blklen), jsf15_v2); + pm3_save_dump(filename, data, (size_t)(blocknum * blklen), jsf15_v2); } return PM3_SUCCESS; } diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 845b49fcd..baf3033d1 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1064,8 +1064,9 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz json_error_t error; json_t *root = json_load_file(path, 0, &error); - if (verbose) + if (verbose) { PrintAndLogEx(SUCCESS, "loaded from JSON file `" _YELLOW_("%s") "`", path); + } free(path); @@ -1521,14 +1522,9 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - // unidentified file format - if (verbose) { - PrintAndLogEx(FAILED, "Unidentified file format `" _YELLOW_("%s") "`", path); - } - retval = PM3_EFILE; - out: + if (callback != NULL) { (*callback)(root); } @@ -2274,7 +2270,7 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl DumpFileType_t dftype = getfiletype(fn); switch (dftype) { case BIN: { - loadFile_safe(fn, ".bin", pdump, dumplen); + res = loadFile_safe(fn, ".bin", pdump, dumplen); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, "File IO failed"); } From 4f96d3eb46dc7f1c709ceef5a0200286e6ee5584 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 3 Oct 2023 17:10:39 +0200 Subject: [PATCH 0521/1034] style --- armsrc/dbprint.c | 4 +- armsrc/i2c.c | 10 +-- client/src/cmdhf14a.c | 2 +- client/src/cmdhf15.c | 6 +- client/src/cmdhfst25ta.c | 2 +- client/src/cmdlft55xx.c | 70 +++++++++--------- client/src/cmdsmartcard.c | 2 +- client/src/fileutils.c | 76 ++++++++++---------- client/src/fileutils.h | 4 +- client/src/nfc/ndef.c | 16 ++--- client/src/util.c | 4 +- doc/commands.json | 146 +++++++++++++++++++------------------- include/pm3_cmd.h | 2 +- 13 files changed, 172 insertions(+), 172 deletions(-) diff --git a/armsrc/dbprint.c b/armsrc/dbprint.c index dc4ec9b46..5caaafb0f 100644 --- a/armsrc/dbprint.c +++ b/armsrc/dbprint.c @@ -129,10 +129,10 @@ void print_result(const char *name, const uint8_t *d, size_t n) { } // Prints message and hexdump -void print_dbg(char *msg, uint8_t *d, uint16_t n) { +void print_dbg(char *msg, uint8_t *d, uint16_t n) { if (g_dbglevel == DBG_DEBUG) { print_result(msg, d, n); - } + } } /* useful when debugging new protocol implementations like FeliCa diff --git a/armsrc/i2c.c b/armsrc/i2c.c index 9fa2bdd35..a5868d31a 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -240,7 +240,7 @@ static bool I2C_WaitForSim(uint32_t wait) { // 1000*110*3.07 = 337.7ms (337700) // 4 560 000 * 3.07 = 13999,2ms (13999200) // 1byte transfer == 1ms with max frame being 256bytes - + // fct WaitSCL_H_delay uses a I2C_DELAY_1CLK in the loop with "wait" as number of iterations. // I2C_DELAY_1CLK == I2CSpinDelayClk(1) = 3.07us return WaitSCL_H_delay(wait); @@ -474,7 +474,7 @@ bool I2C_BufferWrite(const uint8_t *data, uint16_t len, uint8_t device_cmd, uint if (len == 0) { _break = false; } - + } while (false); I2C_Stop(); @@ -586,7 +586,7 @@ int16_t I2C_BufferRead(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t // Dbprintf("rec len... %u readcount... %u", recv_len, readcount); // Dbhexdump(readcount, pd, false); - if (readcount < 2 ) { + if (readcount < 2) { return 0; } @@ -771,7 +771,7 @@ bool GetATR(smart_card_atr_t *card_ptr, bool verbose) { if (card_ptr == NULL) { return false; } - + card_ptr->atr_len = 0; memset(card_ptr->atr, 0, sizeof(card_ptr->atr)); @@ -781,7 +781,7 @@ bool GetATR(smart_card_atr_t *card_ptr, bool verbose) { I2C_WriteCmd(I2C_DEVICE_CMD_GENERATE_ATR, I2C_DEVICE_ADDRESS_MAIN); // wait for sim card to answer. - // 1byte = 1ms , max frame 256bytes. Should wait 256ms atleast just in case. + // 1byte = 1ms , max frame 256bytes. Should wait 256ms atleast just in case. if (I2C_WaitForSim(SIM_WAIT_DELAY) == false) { return false; } diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 439641f09..31c3e24bc 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -2939,7 +2939,7 @@ int CmdHF14ANdefRead(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("NDEF raw") " ----------------"); print_buffer(ndef_file, ndef_size, 1); - } + } NDEFRecordsDecodeAndPrint(ndef_file, ndef_size, verbose); diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 18533cb47..7059bdd2c 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -2184,9 +2184,9 @@ static int CmdHF15Restore(const char *Cmd) { void *argtable[6 + 5] = {}; uint8_t arglen = arg_add_default(argtable); argtable[arglen++] = arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), - argtable[arglen++] = arg_int0("r", "retry", "<dec>", "number of retries (def 3)"), - argtable[arglen++] = arg_int0(NULL, "bs", "<dec>", "block size (def 4)"), - argtable[arglen++] = arg_lit0("v", "verbose", "verbose output"); + argtable[arglen++] = arg_int0("r", "retry", "<dec>", "number of retries (def 3)"), + argtable[arglen++] = arg_int0(NULL, "bs", "<dec>", "block size (def 4)"), + argtable[arglen++] = arg_lit0("v", "verbose", "verbose output"); argtable[arglen++] = arg_param_end; CLIExecWithReturn(ctx, Cmd, argtable, true); diff --git a/client/src/cmdhfst25ta.c b/client/src/cmdhfst25ta.c index fe6e2e94c..9a2f84e7c 100644 --- a/client/src/cmdhfst25ta.c +++ b/client/src/cmdhfst25ta.c @@ -412,7 +412,7 @@ int CmdHFST25TANdefRead(const char *Cmd) { n = resplen; pm3_save_dump(filename, response + 2, n, jsfNDEF); - + return PM3_SUCCESS; } diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index 639fa2ce0..89a060a8e 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -2321,7 +2321,7 @@ static int CmdT55xxDump(const char *Cmd) { data[i] = BSWAP_32(cardmem[i].blockdata); } - pm3_save_dump(filename, (uint8_t*)data, (T55x7_BLOCK_COUNT * sizeof(uint32_t)), jsfT55x7); + pm3_save_dump(filename, (uint8_t *)data, (T55x7_BLOCK_COUNT * sizeof(uint32_t)), jsfT55x7); } return PM3_SUCCESS; @@ -3512,24 +3512,24 @@ bool tryDetectP1(bool getData) { if (FSKrawDemod(0, 0, 0, 0, false) == PM3_SUCCESS) { if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } - + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } if (FSKrawDemod(0, 1, 0, 0, false) == PM3_SUCCESS) { if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } - + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } @@ -3541,13 +3541,13 @@ bool tryDetectP1(bool getData) { if (clk > 0) { if (ASKDemod_ext(0, 0, 1, 0, false, false, false, 1, &st) == PM3_SUCCESS) { - if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } - + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } @@ -3555,36 +3555,36 @@ bool tryDetectP1(bool getData) { st = true; if (ASKDemod_ext(0, 1, 1, 0, false, false, false, 1, &st) == PM3_SUCCESS) { if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } - + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } if (ASKbiphaseDemod(0, 0, 0, 2, false) == PM3_SUCCESS) { if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } - + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } if (ASKbiphaseDemod(0, 0, 1, 2, false) == PM3_SUCCESS) { if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } - + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } @@ -3595,24 +3595,24 @@ bool tryDetectP1(bool getData) { if (clk > 0) { if (NRZrawDemod(0, 0, 1, false) == PM3_SUCCESS) { if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } - + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } if (NRZrawDemod(0, 1, 1, false) == PM3_SUCCESS) { if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } - + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } @@ -3629,12 +3629,12 @@ bool tryDetectP1(bool getData) { if (PSKDemod(0, 0, 6, false) == PM3_SUCCESS) { //save_restoreGB(GRAPH_RESTORE); if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } - + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } @@ -3642,12 +3642,12 @@ bool tryDetectP1(bool getData) { if (PSKDemod(0, 1, 6, false) == PM3_SUCCESS) { //save_restoreGB(GRAPH_RESTORE); if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } - + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } @@ -3658,12 +3658,12 @@ bool tryDetectP1(bool getData) { //save_restoreGB(GRAPH_RESTORE); if (preambleSearchEx(g_DemodBuffer, preamble_atmel, sizeof(preamble_atmel), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } - + if (preambleSearchEx(g_DemodBuffer, preamble_silicon, sizeof(preamble_silicon), &g_DemodBufferLen, &startIdx, false) && - (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { + (g_DemodBufferLen == 32 || g_DemodBufferLen == 64)) { return true; } } // inverse waves does not affect PSK2 demod diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index 9cf3e3301..f0a4e3bf9 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -455,7 +455,7 @@ static int CmdSmartRaw(const char *Cmd) { if (active_select) payload->flags |= SC_SELECT; } - + payload->wait_delay = 0; if (timeout > -1) { payload->flags |= SC_WAIT; diff --git a/client/src/fileutils.c b/client/src/fileutils.c index baf3033d1..14b596c6d 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -361,7 +361,7 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, } // size of header 56b - + size_t len = (datalen - MFU_DUMP_PREFIX_LENGTH) / MFU_BLOCK_SIZE; for (size_t i = 0; i < len; i++) { @@ -426,7 +426,7 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, for (size_t i = 0; i < datalen / 4; i++) { snprintf(path, sizeof(path), "$.blocks.%zu", i); JsonSaveBufAsHexCompact(root, path, &data[i * 4], 4); - } + } break; } // handles ISO15693 w blocksize of 4 bytes @@ -438,7 +438,7 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, } break; } - // handles ISO15693 w blocksize of 8 bytes + // handles ISO15693 w blocksize of 8 bytes case jsf15_v3: { JsonSaveStr(root, "FileType", "15693 v3"); for (size_t i = 0; i < datalen / 8; i++) { @@ -457,8 +457,8 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, } if (datalen % 16) { snprintf(path, sizeof(path), "$.blocks.%zu", i); - JsonSaveBufAsHexCompact(root, path, &data[i * 16], (datalen % 16)); - } + JsonSaveBufAsHexCompact(root, path, &data[i * 16], (datalen % 16)); + } break; } case jsfT5555: { @@ -610,7 +610,7 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, break; } case jsfNDEF: { - JsonSaveStr(root, "FileType", "ndef"); + JsonSaveStr(root, "FileType", "ndef"); JsonSaveInt(root, "Ndef.Size", datalen); size_t i = 0; for (; i < datalen / 16; i++) { @@ -619,17 +619,17 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, } if (datalen % 16) { snprintf(path, sizeof(path), "$.blocks.%zu", i); - JsonSaveBufAsHexCompact(root, path, &data[i * 16], (datalen % 16)); - } + JsonSaveBufAsHexCompact(root, path, &data[i * 16], (datalen % 16)); + } break; } // no action - case jsfFido: + case jsfFido: break; // depricated - case jsfCardMemory: + case jsfCardMemory: case jsf14b: - case jsf15: + case jsf15: case jsfLegic: default: break; @@ -1264,7 +1264,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz // handles ISO15693 w blocksize of 4 bytes. if (!strcmp(ctype, "15693 v2")) { - size_t sptr = 0; + size_t sptr = 0; for (int i = 0; i < (maxdatalen / 4); i++) { if (sptr + 4 > maxdatalen) { retval = PM3_EMALLOC; @@ -1284,7 +1284,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz } // handles ISO15693 w blocksize of 8 bytes. if (!strcmp(ctype, "15693 v3")) { - size_t sptr = 0; + size_t sptr = 0; for (int i = 0; i < (maxdatalen / 8); i++) { if (sptr + 8 > maxdatalen) { retval = PM3_EMALLOC; @@ -1403,36 +1403,36 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz // size_t sptr = (14 + atslen); // uint8_t dvdata[4][0xE][24 + 1] = {{{0}}}; - /* - for (int i = 0; i < (int)datalen; i++) { - char path[PATH_MAX_LENGTH] = {0}; + /* + for (int i = 0; i < (int)datalen; i++) { + char path[PATH_MAX_LENGTH] = {0}; - if (dvdata[0][i][0]) { - snprintf(path, sizeof(path), "$.DES.%d.Key", i); - JsonSaveBufAsHexCompact(root, path, &dvdata[0][i][1], DES_KEY_LEN); - } - - if (dvdata[1][i][0]) { - snprintf(path, sizeof(path), "$.3DES.%d.Key", i); - JsonSaveBufAsHexCompact(root, path, &dvdata[1][i][1], T2DES_KEY_LEN); - } - if (dvdata[2][i][0]) { - snprintf(path, sizeof(path), "$.AES.%d.Key", i); - JsonSaveBufAsHexCompact(root, path, &dvdata[2][i][1], AES_KEY_LEN); - } - if (dvdata[3][i][0]) { - snprintf(path, sizeof(path), "$.K3KDES.%d.Key", i); - JsonSaveBufAsHexCompact(root, path, &dvdata[3][i][1], T3DES_KEY_LEN); - } + if (dvdata[0][i][0]) { + snprintf(path, sizeof(path), "$.DES.%d.Key", i); + JsonSaveBufAsHexCompact(root, path, &dvdata[0][i][1], DES_KEY_LEN); } - */ + + if (dvdata[1][i][0]) { + snprintf(path, sizeof(path), "$.3DES.%d.Key", i); + JsonSaveBufAsHexCompact(root, path, &dvdata[1][i][1], T2DES_KEY_LEN); + } + if (dvdata[2][i][0]) { + snprintf(path, sizeof(path), "$.AES.%d.Key", i); + JsonSaveBufAsHexCompact(root, path, &dvdata[2][i][1], AES_KEY_LEN); + } + if (dvdata[3][i][0]) { + snprintf(path, sizeof(path), "$.K3KDES.%d.Key", i); + JsonSaveBufAsHexCompact(root, path, &dvdata[3][i][1], T3DES_KEY_LEN); + } + } + */ // memcpy(&data[14 + atslen], dvdata, 4 * 0xE * (24 + 1)); goto out; } if (!strcmp(ctype, "14b v2")) { - size_t sptr = 0; + size_t sptr = 0; for (int i = 0; i < (maxdatalen / 4); i++) { if (sptr + 4 > maxdatalen) { retval = PM3_EMALLOC; @@ -1452,7 +1452,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz } if (!strcmp(ctype, "lto")) { - size_t sptr = 0; + size_t sptr = 0; for (int i = 0; i < (maxdatalen / 32); i++) { if (sptr + 32 > maxdatalen) { retval = PM3_EMALLOC; @@ -1472,7 +1472,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz } if (!strcmp(ctype, "cryptorf")) { - size_t sptr = 0; + size_t sptr = 0; for (int i = 0; i < (maxdatalen / 8); i++) { if (sptr + 8 > maxdatalen) { retval = PM3_EMALLOC; @@ -2318,7 +2318,7 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl int pm3_save_dump(const char *fn, uint8_t *d, size_t n, JSONFileType jsft) { if (fn == NULL || strlen(fn) == 0) { - return PM3_EINVARG; + return PM3_EINVARG; } if (d == NULL || n == 0) { PrintAndLogEx(INFO, "No data to save, skipping..."); diff --git a/client/src/fileutils.h b/client/src/fileutils.h index 885692569..88d624788 100644 --- a/client/src/fileutils.h +++ b/client/src/fileutils.h @@ -301,10 +301,10 @@ int pm3_save_dump(const char *fn, uint8_t *d, size_t n, JSONFileType jsft); * It also tries to save according to user preferences set dump folder paths. * E.g. dumpdata.bin * E.g. dumpdata.json - * + * * This function is dedicated for MIFARE CLASSIC dumps. Checking for 4 or 7 byte UID in indata. * Saves the corrected data in the json file - * + * * @param fn * @param d The binary data to write to the file * @param n the length of the data diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index 50dec1b35..17e5dd9d8 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -1285,26 +1285,26 @@ int NDEFGetTotalLength(uint8_t *ndef, size_t ndeflen, size_t *outlen) { size_t idx = 0; while (idx < ndeflen) { - if (ndef[idx] == 0x00 || - ndef[idx] == 0x01 || - ndef[idx] == 0x02 || - ndef[idx] == 0x03 || - ndef[idx] == 0xFD) { + if (ndef[idx] == 0x00 || + ndef[idx] == 0x01 || + ndef[idx] == 0x02 || + ndef[idx] == 0x03 || + ndef[idx] == 0xFD) { idx++; idx += ndefTLVGetLength(&ndef[idx], &idx); continue; } - + if (ndef[idx] == 0xFE) { idx++; break; } - // invalid NDEF + // invalid NDEF *outlen = 0; return PM3_ESOFT; } *outlen = idx; return PM3_SUCCESS; -} \ No newline at end of file +} diff --git a/client/src/util.c b/client/src/util.c index 6e6da4359..0893ab3d6 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -966,11 +966,11 @@ void byte_2_binstr(char *target, const uint8_t *source, size_t sourcelen) { *(target++) = ((b >> 7) & 0x1) + '0'; *(target++) = ((b >> 6) & 0x1) + '0'; *(target++) = ((b >> 5) & 0x1) + '0'; - *(target++) = ((b >> 4) & 0x1) + '0'; + *(target++) = ((b >> 4) & 0x1) + '0'; *(target++) = ((b >> 3) & 0x1) + '0'; *(target++) = ((b >> 2) & 0x1) + '0'; *(target++) = ((b >> 1) & 0x1) + '0'; - *(target++) = (b & 0x1) + '0'; + *(target++) = (b & 0x1) + '0'; } *target = '\0'; } diff --git a/doc/commands.json b/doc/commands.json index 55da69cd3..e38b0ae40 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -1538,7 +1538,7 @@ "offline": true, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump", + "-f, --file <fn> Specify a filename for dump file", "-v, --verbose verbose output" ], "usage": "hf 14b view [-hv] -f <fn>" @@ -1570,7 +1570,7 @@ }, "hf 15 dump": { "command": "hf 15 dump", - "description": "This command dumps the contents of a ISO-15693 tag and save it to file", + "description": "This command dumps the contents of a ISO-15693 tag and save to file (bin/json)", "notes": [ "hf 15 dump", "hf 15 dump -*", @@ -1584,7 +1584,7 @@ "-* scan for tag", "-2 use slower '1 out of 256' mode", "-o, --opt set OPTION Flag (needed for TI)", - "-f, --file <fn> filename of dump" + "-f, --file <fn> Specify a filename for dump file" ], "usage": "hf 15 dump [-h*2o] [-u <hex>] [--ua] [-f <fn>]" }, @@ -1603,18 +1603,18 @@ }, "hf 15 esave": { "command": "hf 15 esave", - "description": "Save emulator memory into three files (BIN/EML/JSON)", + "description": "Save emulator memory into two files (bin/json)", "notes": [ "hf 15 esave -f hf-15-01020304hf 15 esave -b 8 -c 42 -f hf-15-01020304" ], "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump", - "-b, --blocksize <dec> block size, defaults to 4", + "-f, --file <fn> Specify a filename for dump file", + "--bsize <dec> block size, defaults to 4", "-c, --count <dec> number of blocks to export, defaults to all" ], - "usage": "hf 15 esave [-h] -f <fn> [-b <dec>] [-c <dec>]" + "usage": "hf 15 esave [-h] -f <fn> [--bsize <dec>] [-c <dec>]" }, "hf 15 eview": { "command": "hf 15 eview", @@ -1784,7 +1784,7 @@ }, "hf 15 restore": { "command": "hf 15 restore", - "description": "This command restore the contents of a dump file onto a ISO-15693 tag", + "description": "This command restore the contents of a dump file (bin/eml/json) onto a ISO-15693 tag", "notes": [ "hf 15 restore", "hf 15 restore -*", @@ -1798,7 +1798,7 @@ "-* scan for tag", "-2 use slower '1 out of 256' mode", "-o, --opt set OPTION Flag (needed for TI)", - "-f, --file <fn> filename of dump", + "-f, --file <fn> Specify a filename for dump file", "-r, --retry <dec> number of retries (def 3)", "--bs <dec> block size (def 4)", "-v, --verbose verbose output" @@ -1919,7 +1919,7 @@ "offline": true, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump (bin/eml/json)" + "-f, --file <fn> Specify a filename for dump file" ], "usage": "hf 15 view [-h] -f <fn>" }, @@ -2807,14 +2807,14 @@ }, "hf fudan dump": { "command": "hf fudan dump", - "description": "Dump FUDAN tag to binary file If no <name> given, UID will be used as filename", + "description": "Dump FUDAN tag to file (bin/json) If no <name> given, UID will be used as filename", "notes": [ "hf fudan dump -f mydump -> dump using filename" ], "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump" + "-f, --file <fn> Specify a filename for dump file" ], "usage": "hf fudan dump [-h] [-f <fn>]" }, @@ -2858,7 +2858,7 @@ "offline": true, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump" + "-f, --file <fn> Specify a filename for dump file" ], "usage": "hf fudan view [-h] -f <fn>" }, @@ -3051,7 +3051,7 @@ }, "hf iclass decrypt": { "command": "hf iclass decrypt", - "description": "3DES decrypt data This is a naive implementation, it tries to decrypt every block after block 6. Correct behaviour would be to decrypt only the application areas where the key is valid, which is defined by the configuration block. OBS! In order to use this function, the file `iclass_decryptionkey.bin` must reside in the resources directory. The file should be 16 bytes binary data or... make sure your cardhelper is placed in the sim module", + "description": "3DES decrypt data This is a naive implementation, it tries to decrypt every block after block 6. Correct behaviour would be to decrypt only the application areas where the key is valid, which is defined by the configuration block. OBS! In order to use this function, the file `iclass_decryptionkey.bin` must reside in the resources directory. The file must be 16 bytes binary data or... make sure your cardhelper is placed in the sim module", "notes": [ "hf iclass decrypt -f hf-iclass-AA162D30F8FF12F1-dump.bin", "hf iclass decrypt -f hf-iclass-AA162D30F8FF12F1-dump.bin -k 000102030405060708090a0b0c0d0e0f", @@ -3060,7 +3060,7 @@ "offline": true, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump file (bin/eml/json)", + "-f, --file <fn> Specify a filename for dump file", "-d, --data <hex> 3DES encrypted data", "-k, --key <hex> 3DES transport key", "-v, --verbose verbose output", @@ -3098,15 +3098,15 @@ }, "hf iclass eload": { "command": "hf iclass eload", - "description": "Load emulator memory with data from (bin/eml/json) iCLASS dump file", + "description": "Load emulator memory with data from (bin/json) iCLASS dump file", "notes": [ - "hf iclass eload -f hf-iclass-AA162D30F8FF12F1-dump.eml", + "hf iclass eload -f hf-iclass-AA162D30F8FF12F1-dump.json", "hf iclass eload -f hf-iclass-AA162D30F8FF12F1-dump.bin -m" ], "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump (bin/eml/json)", + "-f, --file <fn> Specify a filename for dump file", "-m, --mem use RDV4 spiffs", "-v, --verbose verbose output" ], @@ -3155,7 +3155,7 @@ }, "hf iclass esave": { "command": "hf iclass esave", - "description": "Save emulator memory to file. if filename is not supplied, CSN will be used.", + "description": "Save emulator memory to file (bin/json) if filename is not supplied, CSN will be used.", "notes": [ "hf iclass esave", "hf iclass esave -f hf-iclass-dump", @@ -3164,7 +3164,7 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump file", + "-f, --file <fn> Specify a filename for dump file", "-s, --size <256|2048> number of bytes to save (default 256)" ], "usage": "hf iclass esave [-h] [-f <fn>] [-s <256|2048>]" @@ -3344,7 +3344,7 @@ }, "hf iclass restore": { "command": "hf iclass restore", - "description": "Restore data from dumpfile onto a iCLASS tag", + "description": "Restore data from dumpfile (bin/eml/json) onto a iCLASS tag", "notes": [ "hf iclass restore -f hf-iclass-AA162D30F8FF12F1-dump.bin --first 6 --last 18 --ki 0", "hf iclass restore -f hf-iclass-AA162D30F8FF12F1-dump.bin --first 6 --last 18 --ki 0 --elite", @@ -3353,7 +3353,7 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> specify a filename to restore (bin/eml/json)", + "-f, --file <fn> specify a filename to restore", "-k, --key <hex> Access key as 8 hex bytes", "--ki <dec> Key index to select key from memory 'hf iclass managekeys'", "--first <dec> The first block number to restore", @@ -3425,7 +3425,7 @@ "offline": true, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump (bin/eml/json)", + "-f, --file <fn> Specify a filename for dump file", "--first <dec> Begin printing from this block (default first user block)", "--last <dec> End printing at this block (default 0, ALL)", "-v, --verbose verbose output", @@ -3623,7 +3623,7 @@ }, "hf legic dump": { "command": "hf legic dump", - "description": "Read all memory from LEGIC Prime tags and saves to (bin/eml/json) dump file It autodetects card type (MIM22, MIM256, MIM1024)", + "description": "Read all memory from LEGIC Prime tags and saves to (bin/json) dump file It autodetects card type (MIM22, MIM256, MIM1024)", "notes": [ "hf legic dump -> use UID as filename", "hf legic dump -f myfile", @@ -3670,7 +3670,7 @@ }, "hf legic esave": { "command": "hf legic esave", - "description": "Saves a (bin/eml/json) dump file of emulator memory", + "description": "Saves a (bin/json) dump file of emulator memory", "notes": [ "hf legic esave -> uses UID as filename", "hf legic esave -f myfile --22", @@ -3778,7 +3778,7 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> Filename to restore", + "-f, --file <fn> Specify a filename to restore", "--ob obfuscate dump data (xor with MCC)" ], "usage": "hf legic restore [-h] -f <fn> [--ob]" @@ -3807,7 +3807,7 @@ "offline": true, "options": [ "-h, --help This help", - "-f, --file <fn> Filename of dump", + "-f, --file <fn> Specify a filename for dump file", "-v, --verbose verbose output" ], "usage": "hf legic view [-hv] -f <fn>" @@ -4092,14 +4092,14 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump", + "-f, --file <fn> Specify a filename for dump file", "--emu from emulator memory" ], "usage": "hf mf cload [-h] [-f <fn>] [--emu]" }, "hf mf csave": { "command": "hf mf csave", - "description": "Save magic gen1a card memory into three files (BIN/EML/JSON)or into emulator memory", + "description": "Save magic gen1a card memory to file (bin/json)or into emulator memory", "notes": [ "hf mf csave", "hf mf csave --4k" @@ -4107,7 +4107,7 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump", + "-f, --file <fn> Specify a filename for dump file", "--mini MIFARE Classic Mini / S20", "--1k MIFARE Classic 1k / S50 (def)", "--2k MIFARE Classic/Plus 2k", @@ -4218,7 +4218,7 @@ }, "hf mf dump": { "command": "hf mf dump", - "description": "Dump MIFARE Classic tag to binary file If no <name> given, UID will be used as filename", + "description": "Dump MIFARE Classic tag to file (bin/json) If no <name> given, UID will be used as filename", "notes": [ "hf mf dump --mini -> MIFARE Mini", "hf mf dump --1k -> MIFARE Classic 1k", @@ -4229,7 +4229,7 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump", + "-f, --file <fn> Specify a filename for dump file", "-k, --keys <fn> filename of keys", "--mini MIFARE Classic Mini / S20", "--1k MIFARE Classic 1k / S50 (def)", @@ -4327,7 +4327,7 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump", + "-f, --file <fn> Specify a filename for dump file", "--mini MIFARE Classic Mini / S20", "--1k MIFARE Classic 1k / S50 (def)", "--2k MIFARE Classic/Plus 2k", @@ -4341,7 +4341,7 @@ }, "hf mf esave": { "command": "hf mf esave", - "description": "Save emulator memory into three files (BIN/EML/JSON)", + "description": "Save emulator memory to file (bin/json)", "notes": [ "hf mf esave", "hf mf esave --4k", @@ -4350,7 +4350,7 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump", + "-f, --file <fn> Specify a filename for dump file", "--mini MIFARE Classic Mini / S20", "--1k MIFARE Classic 1k / S50 (def)", "--2k MIFARE Classic/Plus 2k", @@ -4540,7 +4540,7 @@ "--4k MIFARE Classic 4k / S70", "-p, --pwd <hex> password 4bytes", "-v, --verbose verbose output", - "-f, --file <fn> filename of dump", + "-f, --file <fn> Specify a filename for dump file", "--emu from emulator memory", "--start <dec> index of block to start writing (default 0)", "--end <dec> index of block to end writing (default last block)" @@ -4549,7 +4549,7 @@ }, "hf mf gsave": { "command": "hf mf gsave", - "description": "Save `magic gen4 gtu` card memory into three files (BIN/EML/JSON)or into emulator memory", + "description": "Save `magic gen4 gtu` card memory to file (bin/json)or into emulator memory", "notes": [ "hf mf gsave", "hf mf gsave --4k", @@ -4562,8 +4562,8 @@ "--1k MIFARE Classic 1k / S50 (def)", "--2k MIFARE Classic/Plus 2k", "--4k MIFARE Classic 4k / S70", - "-p, --pwd <hex> password 4bytes", - "-f, --file <fn> filename of dump", + "-p, --pwd <hex> password 4 bytes", + "-f, --file <fn> Specify a filename for dump file", "--emu to emulator memory" ], "usage": "hf mf gsave [-h] [--mini] [--1k] [--2k] [--4k] [-p <hex>] [-f <fn>] [--emu]" @@ -4864,7 +4864,7 @@ "--2k MIFARE Classic/Plus 2k", "--4k MIFARE Classic 4k / S70", "-u, --uid <hex> uid, (4|7|10 hex bytes)", - "-f, --file <fn> specify dump filename (bin/eml/json)", + "-f, --file <fn> specify a filename for dump file", "-k, --kfn <fn> key filename", "--ka use specified keyfile to authenticate", "--force override warnings" @@ -4999,7 +4999,7 @@ "offline": true, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump", + "-f, --file <fn> Specify a filename for dump file", "-v, --verbose verbose output", "--sk Save extracted keys to file" ], @@ -5163,9 +5163,9 @@ "description": "Checks keys with MIFARE DESFire card.", "notes": [ "hf mfdes chk --aid 123456 -k 000102030405060708090a0b0c0d0e0f -> check key on aid 0x123456", - "hf mfdes chk -d mfdes_default_keys -> check keys from dictionary against all existing aid on card", - "hf mfdes chk -d mfdes_default_keys --aid 123456 -> check keys from dictionary against aid 0x123456", - "hf mfdes chk --aid 123456 --pattern1b -j keys -> check all 1-byte keys pattern on aid 0x123456 and save found keys to json", + "hf mfdes chk -d mfdes_default_keys -> check keys against all existing aid on card", + "hf mfdes chk -d mfdes_default_keys --aid 123456 -> check keys against aid 0x123456", + "hf mfdes chk --aid 123456 --pattern1b -j keys -> check all 1-byte keys pattern on aid 0x123456 and save found keys to `keys.json`", "hf mfdes chk --aid 123456 --pattern2b --startp2b FA00 -> check all 2-byte keys pattern on aid 0x123456. Start from key FA00FA00...FA00" ], "offline": false, @@ -6224,7 +6224,7 @@ }, "hf mfp dump": { "command": "hf mfp dump", - "description": "Dump MIFARE Plus tag to binary file If no <name> given, UID will be used as filename", + "description": "Dump MIFARE Plus tag to file (bin/json) If no <name> given, UID will be used as filename", "notes": [ "hf mfp dump", "hf mfp dump --keys hf-mf-066C8B78-key.bin -> MIFARE Plus with keys from specified file" @@ -6232,8 +6232,8 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump", - "-k, --keys <fn> filename of keys", + "-f, --file <fn> Specify a filename for dump file", + "-k, --keys <fn> Specify a filename for keys file", "--ns no save to file", "-v, --verbose Verbose mode" ], @@ -6447,7 +6447,7 @@ }, "hf mfu dump": { "command": "hf mfu dump", - "description": "Dump MIFARE Ultralight/NTAG tag to binary/eml/json files. It autodetects card type.Supports: Ultralight, Ultralight-C, Ultralight EV1 NTAG 203, NTAG 210, NTAG 212, NTAG 213, NTAG 215, NTAG 216", + "description": "Dump MIFARE Ultralight/NTAG tag to files (bin/json) It autodetects card type.Supports: Ultralight, Ultralight-C, Ultralight EV1 NTAG 203, NTAG 210, NTAG 212, NTAG 213, NTAG 215, NTAG 216", "notes": [ "hf mfu dump -f myfile", "hf mfu dump -k AABBCCDD -> dump whole tag using pwd AABBCCDD", @@ -6477,7 +6477,7 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> Filename of dump", + "-f, --file <fn> Specify a filename for dump file", "-q, --qty <dec> Number of blocks to load from eml file", "-v, --verbose verbose output" ], @@ -6485,17 +6485,17 @@ }, "hf mfu esave": { "command": "hf mfu esave", - "description": "Saves emulator memory to a MIFARE Ultralight/NTAG dump file (bin/eml/json) By default number of pages saved depends on defined tag type. You can override this with option --end.", + "description": "Saves emulator memory to a MIFARE Ultralight/NTAG dump file (bin/json) By default number of pages saved depends on defined tag type. You can override this with option --end.", "notes": [ "hf mfu esave", "hf mfu esave --end 255 -> saves whole memory", - "hf mfu esave -f hf-mfu-04010203040506-dump.json" + "hf mfu esave -f hf-mfu-04010203040506-dump" ], "offline": false, "options": [ "-h, --help This help", "-e, --end <dec> index of last block", - "-f, --file <fn> filename of dump" + "-f, --file <fn> Specify a filename for dump file" ], "usage": "hf mfu esave [-h] [-e <dec>] [-f <fn>]" }, @@ -6642,7 +6642,7 @@ }, "hf mfu restore": { "command": "hf mfu restore", - "description": "Restore MIFARE Ultralight/NTAG dump file to tag.", + "description": "Restore MIFARE Ultralight/NTAG dump file (bin/eml/json) to tag.", "notes": [ "hf mfu restore -f myfile -s -> special write", "hf mfu restore -f myfile -k AABBCCDD -s -> special write, use key", @@ -6651,7 +6651,7 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> specify dump filename (bin/eml/json)", + "-f, --file <fn> Specify a filename for dump file", "-k, --key <hex> key for authentication (UL-C 16 bytes, EV1/NTAG 4 bytes)", "-l swap entered key's endianness", "-s enable special write UID -MAGIC TAG ONLY-", @@ -6733,7 +6733,7 @@ "offline": true, "options": [ "-h, --help This help", - "-f, --file <fn> Filename of dump", + "-f, --file <fn> Specify a filename for dump file", "-v, --verbose Verbose output" ], "usage": "hf mfu view [-hv] -f <fn>" @@ -6790,7 +6790,7 @@ "offline": true, "options": [ "-h, --help This help", - "-f, --file <fn> Filename of dump", + "-f, --file <fn> Specify a filename for dump file", "-v, --verbose Verbose output" ], "usage": "hf ntag424 view [-hv] -f <fn>" @@ -7087,14 +7087,14 @@ }, "hf topaz dump": { "command": "hf topaz dump", - "description": "Dump TOPAZ tag to binary file If no <name> given, UID will be used as filename", + "description": "Dump TOPAZ tag to file (bin/json) If no <name> given, UID will be used as filename", "notes": [ "hf topaz dump" ], "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump", + "-f, --file <fn> Specify a filename for dump file", "--ns no save to file" ], "usage": "hf topaz dump [-h] [-f <fn>] [--ns]" @@ -7208,7 +7208,7 @@ "offline": true, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump (bin/eml/json)" + "-f, --file <fn> Specify a filename for dump file" ], "usage": "hf topaz view [-h] -f <fn>" }, @@ -8159,7 +8159,7 @@ }, "lf em 4x50 dump": { "command": "lf em 4x50 dump", - "description": "Reads all blocks/words from EM4x50 tag and saves dump in bin/eml/json format", + "description": "Reads all blocks/words from EM4x50 tag and saves dump in (bin/json) format", "notes": [ "lf em 4x50 dump", "lf em 4x50 dump -f mydump", @@ -8169,7 +8169,7 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> specify dump filename (bin/eml/json)", + "-f, --file <fn> specify dump filename", "-p, --pwd <hex> password, 4 hex bytes, lsb" ], "usage": "lf em 4x50 dump [-h] [-f <fn>] [-p <hex>]" @@ -8183,13 +8183,13 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> dump filename (bin/eml/json)" + "-f, --file <fn> Specify a filename for dump file" ], "usage": "lf em 4x50 eload [-h] -f <fn>" }, "lf em 4x50 esave": { "command": "lf em 4x50 esave", - "description": "Saves bin/eml/json dump file of emulator memory.", + "description": "Saves bin/json dump file of emulator memory.", "notes": [ "lf em 4x50 esave -> use UID as filename", "lf em 4x50 esave -f mydump" @@ -8284,7 +8284,7 @@ "options": [ "-h, --help This help", "-u, --uid <hex> uid, 4 hex bytes, msb", - "-f, --file <fn> specify dump filename (bin/eml/json)", + "-f, --file <fn> specify a filename for dump file", "-p, --pwd <hex> password, 4 hex bytes, lsb" ], "usage": "lf em 4x50 restore [-h] [-u <hex>] [-f <fn>] [-p <hex>]" @@ -8806,7 +8806,7 @@ "-1, --ht1 Card type Hitag 1", "-2, --ht2 Card type Hitag 2", "-s, --hts Card type Hitag S", - "-m, --htm Card type Hitag \u00ce\u00bc" + "-m, --htm Card type Hitag \u03bc" ], "usage": "lf hitag eload [-h12sm] -f <fn>" }, @@ -10176,7 +10176,7 @@ }, "lf t55xx dump": { "command": "lf t55xx dump", - "description": "This command dumps a T55xx card Page 0 block 0-7. It will create three files (bin/eml/json)", + "description": "This command dumps a T55xx card Page 0 block 0-7. It will create two files (bin/json)", "notes": [ "lf t55xx dump", "lf t55xx dump -p aabbccdd --override", @@ -10328,7 +10328,7 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file <fn> filename of dump file", + "-f, --file <fn> Specify a filename for dump file", "-p, --pwd <hex> password if target card has password set (4 hex bytes)" ], "usage": "lf t55xx restore [-h] [-f <fn>] [-p <hex>]" @@ -10713,16 +10713,15 @@ "description": "Dumps device SPIFFS file to a local file Size is handled by first sending a STAT command against file to verify existence", "notes": [ "mem spiffs dump -s tag.bin -> download binary file from device", - "mem spiffs dump -s tag.bin -d aaa -e -> download tag.bin, save as aaa.eml format" + "mem spiffs dump -s tag.bin -d a001 -e -> download tag.bin, save as `a001.bin`" ], "offline": false, "options": [ "-h, --help This help", "-s, --src <fn> SPIFFS file to save", - "-d, --dest <fn> file name to save to <w/o .bin>", - "-e, --eml also save in EML format" + "-d, --dest <fn> file name to save to <w/o .bin>" ], - "usage": "mem spiffs dump [-he] -s <fn> [-d <fn>]" + "usage": "mem spiffs dump [-h] -s <fn> [-d <fn>]" }, "mem spiffs info": { "command": "mem spiffs info", @@ -11579,9 +11578,10 @@ "-s active smartcard with select (get ATR)", "-t, --tlv executes TLV decoder if it possible", "-0 use protocol T=0", + "--timeout <ms> Timeout in MS waiting for SIM to respond. (def 337ms)", "-d, --data <hex> bytes to send" ], - "usage": "smart raw [-hrast0] -d <hex>" + "usage": "smart raw [-hrast0] [--timeout <ms>] -d <hex>" }, "smart reader": { "command": "smart reader", @@ -11857,6 +11857,6 @@ "metadata": { "commands_extracted": 687, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-09-10T12:59:25" + "extracted_on": "2023-10-03T15:10:12" } } \ No newline at end of file diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index db9851613..afd8c9ff6 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -700,7 +700,7 @@ typedef struct { #define CMD_HF_MIFARE_G4_GDM_CONFIG 0x0872 #define CMD_HF_MIFARE_G4_GDM_WRCFG 0x0873 -// HID SAM +// HID SAM #define CMD_HF_SAM_PICOPASS 0x0900 #define CMD_HF_SAM_SEOS 0x0901 #define CMD_HF_SAM_MFC 0x0902 From c1c512f325db53b12473c02b918e69e3ac16b25c Mon Sep 17 00:00:00 2001 From: nvx <neovortex@gmail.com> Date: Wed, 4 Oct 2023 18:40:58 +1000 Subject: [PATCH 0522/1034] Changed `hf iclass view/decrypt` to detect SIO lengths better and show if legacy credentials are encrypted --- CHANGELOG.md | 1 + client/src/cmdhficlass.c | 168 +++++++++++++++++++++++---------------- 2 files changed, 102 insertions(+), 67 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 873bc53ba..6aee59c87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf iclass view/decrypt` to detect SIO lengths better and show if legacy credentials are encrypted (@nvx) - Changed the json file formats for mfc, 14b, 15, legic, cryptorf, ndef (@iceman1001) - Depricated the EML file format when saving dump files. (@iceman1001) - Added `sim014.bin` - new sim module firmware v4.42 with improved ISO7816 Protocol T0 support (@gentilkiwi) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 8fa9910f7..88534d45f 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -60,7 +60,7 @@ static uint8_t empty[PICOPASS_BLOCK_SIZE] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, static uint8_t zeros[PICOPASS_BLOCK_SIZE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; static int CmdHelp(const char *Cmd); -static void printIclassSIO(uint8_t *iclass_dump); +static void print_iclass_sio(uint8_t *iclass_dump, size_t dump_len); static uint8_t iClass_Key_Table[ICLASS_KEYS_MAX][PICOPASS_BLOCK_SIZE] = { { 0xAE, 0xA6, 0x84, 0xA6, 0xDA, 0xB2, 0x32, 0x78 }, @@ -1215,7 +1215,7 @@ static int CmdHFiClassEView(const char *Cmd) { printIclassDumpContents(dump, 1, blocks, bytes, dense_output); if (verbose) { - printIclassSIO(dump); + print_iclass_sio(dump, bytes); } free(dump); @@ -1266,7 +1266,8 @@ static int CmdHFiClassESetBlk(const char *Cmd) { } static void iclass_decode_credentials(uint8_t *data) { - if (memcmp(data + (5 * PICOPASS_BLOCK_SIZE), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { + picopass_hdr_t *hdr = (picopass_hdr_t *)data; + if (memcmp(hdr->app_issuer_area, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { // Not a Legacy or SR card, nothing to do here. return; } @@ -1502,7 +1503,7 @@ static int CmdHFiClassDecrypt(const char *Cmd) { printIclassDumpContents(decrypted, 1, (decryptedlen / 8), decryptedlen, dense_output); if (verbose) { - printIclassSIO(decrypted); + print_iclass_sio(decrypted, decryptedlen); } PrintAndLogEx(NORMAL, ""); @@ -2750,67 +2751,99 @@ static int CmdHFiClass_loclass(const char *Cmd) { return bruteforceFileNoKeys(filename); } -static void detect_credential(uint8_t *data, bool *legacy, bool *se, bool *sr) { - *legacy = false; - *sr = false; - *se = false; +static void detect_credential(uint8_t *iclass_dump, size_t dump_len, bool *is_legacy, bool *is_se, bool *is_sr, uint8_t **sio_start_ptr, size_t *sio_length) { + *is_legacy = false; + *is_sr = false; + *is_se = false; + if (sio_start_ptr != NULL) { + *sio_start_ptr = NULL; + } + if (sio_length != NULL) { + *sio_length = 0; + } + if (dump_len < sizeof(picopass_hdr_t)) { + // Can't really do anything with a dump that doesn't include the header + return; + } + + picopass_hdr_t *hdr = (picopass_hdr_t *)iclass_dump; + + if (!memcmp(hdr->app_issuer_area, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { // Legacy AIA - if (!memcmp(data + (5 * PICOPASS_BLOCK_SIZE), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { - *legacy = true; + *is_legacy = true; - // SR bit set in legacy config block - if ((data[6 * PICOPASS_BLOCK_SIZE] & ICLASS_CFG_BLK_SR_BIT) == ICLASS_CFG_BLK_SR_BIT) { - // If the card is blank (all FF's) then we'll reach here too, so check for an empty block 10 - // to avoid false positivies - if (memcmp(data + (10 * PICOPASS_BLOCK_SIZE), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { - *sr = true; - } + if (dump_len < 11 * PICOPASS_BLOCK_SIZE) { + // Can't reliably detect if the card is SR without checking + // blocks 6 and 10 + return; } + // SR bit set in legacy config block + if ((iclass_dump[6 * PICOPASS_BLOCK_SIZE] & ICLASS_CFG_BLK_SR_BIT) == ICLASS_CFG_BLK_SR_BIT) { + // If the card is blank (all FF's) then we'll reach here too, so check for an empty block 10 + // to avoid false positivies + if (memcmp(iclass_dump + (10 * PICOPASS_BLOCK_SIZE), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { + *is_sr = true; + if (sio_start_ptr != NULL) { + // SR SIO starts at block 10 + *sio_start_ptr = iclass_dump + (10 * PICOPASS_BLOCK_SIZE); + } + } + } + } else if (!memcmp(hdr->app_issuer_area, "\xFF\xFF\xFF\x00\x06\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { + // SE AIA + *is_se = true; + + if (sio_start_ptr != NULL) { + // SE SIO starts at block 6 + *sio_start_ptr = iclass_dump + (6 * PICOPASS_BLOCK_SIZE); + } + } + + if (sio_length == NULL || sio_start_ptr == NULL || *sio_start_ptr == NULL) { + // No need to calculate length return; } - // SE AIA - if (!memcmp(data + (5 * PICOPASS_BLOCK_SIZE), "\xFF\xFF\xFF\x00\x06\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { - *se = true; + uint8_t *sio_start = *sio_start_ptr; + + if (sio_start[0] != 0x30) { + // SIOs always start with a SEQUENCE(P), if this is missing then bail return; } + + if (sio_start[1] >= 0x80 || sio_start[1] == 0x00) { + // We only support definite short form lengths + return; + } + + // Length of bytes within the SEQUENCE, plus tag and length bytes for the SEQUENCE tag + *sio_length = sio_start[1] + 2; } // print ASN1 decoded array in TLV view -static void printIclassSIO(uint8_t *iclass_dump) { - bool isLegacy, isSE, isSR; - detect_credential(iclass_dump, &isLegacy, &isSE, &isSR); - +static void print_iclass_sio(uint8_t *iclass_dump, size_t dump_len) { + bool is_legacy, is_se, is_sr; uint8_t *sio_start; - if (isSE) { - // SE SIO starts at block 6 - sio_start = iclass_dump + (6 * PICOPASS_BLOCK_SIZE); - } else if (isSR) { - // SR SIO starts at block 10 - sio_start = iclass_dump + (10 * PICOPASS_BLOCK_SIZE); - } else { - // No SIO on Legacy credentials + size_t sio_length; + detect_credential(iclass_dump, dump_len, &is_legacy, &is_se, &is_sr, &sio_start, &sio_length); + + if (sio_start == NULL) { return; } - // Readers assume the SIO always fits within 7 blocks (they don't read any further blocks) - // Search backwards to find the last 0x05 0x00 seen at the end of the SIO - const uint8_t pattern_sio_end[] = {0x05, 0x00}; - int dlen = byte_strrstr(sio_start, 7 * PICOPASS_BLOCK_SIZE, pattern_sio_end, 2); - if (dlen == -1) { + if (dump_len < sio_length + (sio_start - iclass_dump)) { + // SIO length exceeds the size of the dump we have, bail return; } - dlen += sizeof(pattern_sio_end); - PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "---------------------------- " _CYAN_("SIO - RAW") " ----------------------------"); - print_hex_noascii_break(sio_start, dlen, 32); + print_hex_noascii_break(sio_start, sio_length, 32); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "------------------------- " _CYAN_("SIO - ASN1 TLV") " --------------------------"); - asn1_print(sio_start, dlen, " "); + asn1_print(sio_start, sio_length, " "); PrintAndLogEx(NORMAL, ""); } @@ -2862,9 +2895,17 @@ void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t e ); */ - bool isLegacy = false, isSE = false, isSR = false; - if (filemaxblock >= 17) { - detect_credential(iclass_dump, &isLegacy, &isSE, &isSR); + bool is_legacy, is_se, is_sr; + uint8_t *sio_start; + size_t sio_length; + detect_credential(iclass_dump, endblock * 8, &is_legacy, &is_se, &is_sr, &sio_start, &sio_length); + + bool is_legacy_decrypted = is_legacy && (iclass_dump[(6 * PICOPASS_BLOCK_SIZE) + 7] & 0x03) == 0x00; + + int sio_start_block = 0, sio_end_block = 0; + if (sio_start && sio_length > 0) { + sio_start_block = (sio_start - iclass_dump) / PICOPASS_BLOCK_SIZE; + sio_end_block = sio_start_block + (sio_length + PICOPASS_BLOCK_SIZE - 1) / PICOPASS_BLOCK_SIZE - 1; } int i = startblock; @@ -2937,32 +2978,25 @@ void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t e } else { const char *info_ks[] = {"CSN", "Config", "E-purse", "Debit", "Credit", "AIA", "User"}; - if (i >= 6 && i <= 9 && isLegacy && isSE == false) { + if (i >= 6 && i <= 9 && is_legacy) { // legacy credential - PrintAndLogEx(INFO, "%3d/0x%02X | " _YELLOW_("%s") "| " _YELLOW_("%s") " | %s | User / Cred " + PrintAndLogEx(INFO, "%3d/0x%02X | " _YELLOW_("%s") "| " _YELLOW_("%s") " | %s | User / %s " , i , i , sprint_hex(blk, 8) , sprint_ascii(blk, 8) , lockstr + , i == 6 ? "HID CFG" : (is_legacy_decrypted ? "Cred" : "Enc Cred") ); - } else if (i >= 6 && i <= 12 && isSE) { + } else if (sio_start_block != 0 && i >= sio_start_block && i <= sio_end_block) { // SIO credential - PrintAndLogEx(INFO, "%3d/0x%02X | " _CYAN_("%s") "| " _CYAN_("%s") " | %s | User / SIO / SE" - , i - , i - , sprint_hex(blk, 8) - , sprint_ascii(blk, 8) - , lockstr - ); - } else if (i >= 10 && i <= 16 && isSR) { - // SIO credential - PrintAndLogEx(INFO, "%3d/0x%02X | " _CYAN_("%s") "| " _CYAN_("%s") " | %s | User / SIO / SR" + PrintAndLogEx(INFO, "%3d/0x%02X | " _CYAN_("%s") "| " _CYAN_("%s") " | %s | User / SIO / %s" , i , i , sprint_hex(blk, 8) , sprint_ascii(blk, 8) , lockstr + , is_se ? "SE" : "SR" ); } else { if (i < 6) { @@ -2977,7 +3011,7 @@ void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t e if (regular_print_block) { // suppress repeating blocks, truncate as such that the first and last block with the same data is shown - // but the blocks in between are replaced with a single line of "*" if dense_output is enabled + // but the blocks in between are replaced with a single line of "......" if dense_output is enabled if (dense_output && i > 6 && i < (endblock - 1) && !in_repeated_block && !memcmp(blk, blk - 8, 8) && !memcmp(blk, blk + 8, 8) && !memcmp(blk, blk + 16, 8)) { // we're in a user block that isn't the first user block nor last two user blocks, @@ -3003,13 +3037,13 @@ void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t e i++; } PrintAndLogEx(INFO, "---------+-------------------------+----------+---+----------------"); - if (isLegacy) + if (is_legacy) PrintAndLogEx(HINT, _YELLOW_("yellow") " = legacy credential"); - if (isSE) + if (is_se) PrintAndLogEx(HINT, _CYAN_("cyan") " = SIO / SE credential"); - if (isSR) + if (is_sr) PrintAndLogEx(HINT, _CYAN_("cyan") " = SIO / SR credential"); PrintAndLogEx(NORMAL, ""); @@ -3067,7 +3101,7 @@ static int CmdHFiClassView(const char *Cmd) { iclass_decode_credentials(dump); if (verbose) { - printIclassSIO(dump); + print_iclass_sio(dump, bytes_read); } free(dump); @@ -4535,13 +4569,13 @@ int info_iclass(bool shallow_mod) { memcpy(aia, hdr->app_issuer_area, sizeof(aia)); } - // if CSN ends with FF12E0, it's inside HID CSN range. - bool isHidRange = (memcmp(hdr->csn + 5, "\xFF\x12\xE0", 3) == 0); + // if CSN starts with E012FFF (big endian), it's inside HID CSN range. + bool is_hid_range = (hdr->csn[4] & 0xF0) == 0xF0 && (memcmp(hdr->csn + 5, "\xFF\x12\xE0", 3) == 0); - bool legacy = (memcmp(aia, "\xff\xff\xff\xff\xff\xff\xff\xff", 8) == 0); - bool se_enabled = (memcmp(aia, "\xff\xff\xff\x00\x06\xff\xff\xff", 8) == 0); + if (is_hid_range) { + bool legacy = (memcmp(aia, "\xff\xff\xff\xff\xff\xff\xff\xff", 8) == 0); + bool se_enabled = (memcmp(aia, "\xff\xff\xff\x00\x06\xff\xff\xff", 8) == 0); - if (isHidRange) { PrintAndLogEx(SUCCESS, " CSN.......... " _YELLOW_("HID range")); if (legacy) PrintAndLogEx(SUCCESS, " Credential... " _GREEN_("iCLASS legacy")); From 3243414c20b8fec611c08e7daedcba73a73f7522 Mon Sep 17 00:00:00 2001 From: Adam Jon Foster <me@evildaemond.com> Date: Thu, 5 Oct 2023 17:37:29 +0800 Subject: [PATCH 0523/1034] Update mfc_default_keys.dic Added Keys found on old cards plus notes on another key sighting Signed-off-by: Adam Jon Foster <me@evildaemond.com> --- client/dictionaries/mfc_default_keys.dic | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 0578bfee4..12b0fd0a1 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -966,7 +966,7 @@ D58660D1ACDE C01FC822C6E5 0854BF31111E # -# More keys +# More keys - Found 8A at Sebel Hotel in Canberra, Australia 8A19D40CF2B5 AE8587108640 # @@ -2229,3 +2229,13 @@ EDC317193709 A1670589B2AF # SF Hotel (SoMa area) 2E0F00700000 + +# Unknown PACS from Western Australia +CA80E51FA52B +A71E80EA35E1 +05597810D63D + +# Hotel Key from Las Vegas +EA0CA627FD06 +80BB8436024C +5044068C5183 From 3d9d8253a6ba4b19e5430ef8a5442f1472f402e0 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 7 Oct 2023 12:20:51 +0200 Subject: [PATCH 0524/1034] maur --- client/dictionaries/mfc_default_keys.dic | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 12b0fd0a1..019781664 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -141,6 +141,10 @@ F1D83F964314 FFF011223358 FF9F11223358 # +# Elevator system Kherson, Ukraine +AC37E76385F5 +576DCFFF2F25 +# # more Keys from mfc_default_keys.lua 000000000001 000000000002 @@ -2229,13 +2233,13 @@ EDC317193709 A1670589B2AF # SF Hotel (SoMa area) 2E0F00700000 - +# # Unknown PACS from Western Australia CA80E51FA52B A71E80EA35E1 05597810D63D - +# # Hotel Key from Las Vegas EA0CA627FD06 80BB8436024C -5044068C5183 +5044068C5183 \ No newline at end of file From 385c1c5702b032f4516537bc8e6922aae15cea66 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 9 Oct 2023 11:03:56 +0200 Subject: [PATCH 0525/1034] text --- .../Linux-Installation-Instructions.md | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md index 3172fdecc..1766dda9d 100644 --- a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md @@ -8,6 +8,8 @@ - [External resources](#external-resources) - [Install the required dependencies](#install-the-required-dependencies) - [On Debian / Ubuntu / Kali / ParrotOS / Raspbian](#on-debian--ubuntu--kali--parrotos--raspbian) + - [If you don't need...](#if-you-dont-need) + - [failed to load module...](#failed-to-load-module) - [On ArchLinux](#on-archlinux) - [On Fedora](#on-fedora) - [On openSUSE](#on-opensuse) @@ -50,16 +52,24 @@ Install the requirements ```sh sudo apt-get install --no-install-recommends git ca-certificates build-essential pkg-config \ -libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev +libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev \ +libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev ``` -If you don't need the native Bluetooth support in the client, you can skip the installation of `libbluetooth-dev`. +### If you don't need... +👉 If you don't need the native Bluetooth support in the client, +you can skip the installation of `libbluetooth-dev`. -If you don't need the graphical components of the Proxmark3 client (such as in `hw tune`), you can skip the installation of `qtbase5-dev`. +👉 If you don't need the graphical components of the Proxmark3 client (such as in `hw tune`), +you can skip the installation of `qtbase5-dev`. -If you don't need support for Python3 scripts in the Proxmark3 client, you can skip the installation of `libpython3-dev`. +👉 If you don't need support for Python3 scripts in the Proxmark3 client, +you can skip the installation of `libpython3-dev`. + +### failed to load module... +⚠ If you get some (non blocking) error at runtime such as _Gtk-Message: Failed to load module "canberra-gtk-module"_ +you may have to install `libcanberra-gtk-module`. -If you get some (non blocking) error at runtime such as _Gtk-Message: Failed to load module "canberra-gtk-module"_ you may have to install `libcanberra-gtk-module`. ## On ArchLinux ^[Top](#top) From ac43176dbf10a9e659f5aed41571ec0ded56a0ca Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 9 Oct 2023 11:10:39 +0200 Subject: [PATCH 0526/1034] text --- .../Linux-Installation-Instructions.md | 47 +++++++++++++------ 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md index 1766dda9d..20a93b52b 100644 --- a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md @@ -9,9 +9,11 @@ - [Install the required dependencies](#install-the-required-dependencies) - [On Debian / Ubuntu / Kali / ParrotOS / Raspbian](#on-debian--ubuntu--kali--parrotos--raspbian) - [If you don't need...](#if-you-dont-need) - - [failed to load module...](#failed-to-load-module) + - [Failed to load module...](#failed-to-load-module) - [On ArchLinux](#on-archlinux) + - [If you don't need...](#if-you-dont-need-1) - [On Fedora](#on-fedora) + - [If you don't need...](#if-you-dont-need-2) - [On openSUSE](#on-opensuse) - [Clone the Iceman repository](#clone-the-iceman-repository) - [Check ModemManager](#check-modemmanager) @@ -42,7 +44,9 @@ You might want to follow one of these external resources to get an overview, but ## On Debian / Ubuntu / Kali / ParrotOS / Raspbian ^[Top](#top) -First what we want to do is get an update for the system. If you need to upgrade do this **before** the install. An upgrade was carried out prior to following these instructions. +First what we want to do is get an update for the system. If you need to apply updates do this **before** the install. + +We assume your system was patched with latest updates prior to following these instructions. Update the packages list ```sh @@ -66,8 +70,8 @@ you can skip the installation of `qtbase5-dev`. 👉 If you don't need support for Python3 scripts in the Proxmark3 client, you can skip the installation of `libpython3-dev`. -### failed to load module... -⚠ If you get some (non blocking) error at runtime such as _Gtk-Message: Failed to load module "canberra-gtk-module"_ +### Failed to load module... +⚠️ If you get some (non blocking) error at runtime such as _Gtk-Message: Failed to load module "canberra-gtk-module"_ you may have to install `libcanberra-gtk-module`. @@ -75,33 +79,48 @@ you may have to install `libcanberra-gtk-module`. ^[Top](#top) ```sh -sudo pacman -Syu git base-devel readline bzip2 lz4 arm-none-eabi-gcc arm-none-eabi-newlib qt5-base bluez python --needed +sudo pacman -Syu git base-devel readline bzip2 lz4 arm-none-eabi-gcc \ +arm-none-eabi-newlib qt5-base bluez python --needed ``` -If you don't need the native Bluetooth support in the client, you can skip the installation of `bluez`. +### If you don't need... +👉 If you don't need the native Bluetooth support in the client, +you can skip the installation of `bluez`. -If you don't need the graphical components of the Proxmark3 client (such as in `hw tune`), you can skip the installation of `qt5-base`. +👉 If you don't need the graphical components of the Proxmark3 client (such as in `hw tune`), +you can skip the installation of `qt5-base`. + +👉 If you don't need support for Python3 scripts in the Proxmark3 client, +you can skip the installation of `python`. -If you don't need support for Python3 scripts in the Proxmark3 client, you can skip the installation of `python`. ## On Fedora ^[Top](#top) ```sh -sudo dnf install git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel bzip2-devel lz4-devel qt5-qtbase-devel bluez-libs-devel python3-devel libatomic openssl-devel +sudo dnf install git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib \ +readline-devel bzip2-devel lz4-devel qt5-qtbase-devel bluez-libs-devel \ +python3-devel libatomic openssl-devel ``` -If you don't need the native Bluetooth support in the client, you can skip the installation of `bluez-libs-devel`. +### If you don't need... +👉 If you don't need the native Bluetooth support in the client, +you can skip the installation of `bluez-libs-devel`. -If you don't need the graphical components of the Proxmark3 client (such as in `hw tune`), you can skip the installation of `qt5-qtbase-devel`. +👉 If you don't need the graphical components of the Proxmark3 client (such as in `hw tune`), +you can skip the installation of `qt5-qtbase-devel`. + +👉 If you don't need support for Python3 scripts in the Proxmark3 client, +you can skip the installation of `python3-devel`. -If you don't need support for Python3 scripts in the Proxmark3 client, you can skip the installation of `python3-devel`. ## On openSUSE ^[Top](#top) ```sh -sudo zypper install git patterns-devel-base-devel_basis gcc-c++ readline-devel libbz2-devel liblz4-devel cross-arm-none-gcc9 cross-arm-none-newlib-devel python3-devel libqt5-qtbase-devel libopenssl-devel +sudo zypper install git patterns-devel-base-devel_basis gcc-c++ \ +readline-devel libbz2-devel liblz4-devel cross-arm-none-gcc9 \ +cross-arm-none-newlib-devel python3-devel libqt5-qtbase-devel libopenssl-devel ``` Note that Bluez is not available on openSUSE so the native Bluetooth support won't be available in the client. @@ -145,7 +164,7 @@ And a new `/dev/ttyACM0` should have appeared. # Get permissions to use /dev/ttyACM0 ^[Top](#top) -Add current user to the proper group to get permission to use `/dev/ttyACM0`. +Add current user to the proper groups to get permission to use `/dev/ttyACM0`. This step can be done from the Iceman Proxmark3 repo with: From 5ad85d55d71023db157a721107ab6cb23f209432 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 9 Oct 2023 11:12:26 +0200 Subject: [PATCH 0527/1034] text --- .../Linux-Installation-Instructions.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md index 20a93b52b..9f97c3af2 100644 --- a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md @@ -44,9 +44,8 @@ You might want to follow one of these external resources to get an overview, but ## On Debian / Ubuntu / Kali / ParrotOS / Raspbian ^[Top](#top) -First what we want to do is get an update for the system. If you need to apply updates do this **before** the install. - -We assume your system was patched with latest updates prior to following these instructions. +First what we want to do is get an update for the system. If you need to apply updates do this **before** installing the Proxmark3 software. +An system upgrade was carried out prior to following these instructions. Update the packages list ```sh From f52b3faa3cc668209855ee4af557e2ef54028bcb Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 9 Oct 2023 11:14:21 +0200 Subject: [PATCH 0528/1034] text --- .../Linux-Installation-Instructions.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md index 9f97c3af2..7e3478b15 100644 --- a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md @@ -15,6 +15,7 @@ - [On Fedora](#on-fedora) - [If you don't need...](#if-you-dont-need-2) - [On openSUSE](#on-opensuse) + - [If you don't need...](#if-you-dont-need-3) - [Clone the Iceman repository](#clone-the-iceman-repository) - [Check ModemManager](#check-modemmanager) - [⚠️ Very important ⚠️](#️-very-important-️) @@ -124,9 +125,13 @@ cross-arm-none-newlib-devel python3-devel libqt5-qtbase-devel libopenssl-devel Note that Bluez is not available on openSUSE so the native Bluetooth support won't be available in the client. -If you don't need the graphical components of the Proxmark3 client (such as in `hw tune`), you can skip the installation of `libqt5-qtbase-devel`. +### If you don't need... +👉 If you don't need the graphical components of the Proxmark3 client (such as in `hw tune`), +you can skip the installation of `libqt5-qtbase-devel`. + +👉 If you don't need support for Python3 scripts in the Proxmark3 client, +you can skip the installation of `python3-devel`. -If you don't need support for Python3 scripts in the Proxmark3 client, you can skip the installation of `python3-devel`. # Clone the Iceman repository ^[Top](#top) From ea01fa5656cd97435f9f2490a987f32257599ae6 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 9 Oct 2023 11:18:54 +0200 Subject: [PATCH 0529/1034] text --- .../Linux-Installation-Instructions.md | 6 ++++-- .../Windows-Installation-Instructions.md | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md index 7e3478b15..496e14be2 100644 --- a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md @@ -16,7 +16,7 @@ - [If you don't need...](#if-you-dont-need-2) - [On openSUSE](#on-opensuse) - [If you don't need...](#if-you-dont-need-3) -- [Clone the Iceman repository](#clone-the-iceman-repository) +- [Clone the repository](#clone-the-repository) - [Check ModemManager](#check-modemmanager) - [⚠️ Very important ⚠️](#️-very-important-️) - [Check connection](#check-connection) @@ -51,6 +51,8 @@ An system upgrade was carried out prior to following these instructions. Update the packages list ```sh sudo apt-get update +sudo apt-get upgrade -y +sudo apt-get auto-remove -y ``` Install the requirements @@ -133,7 +135,7 @@ you can skip the installation of `libqt5-qtbase-devel`. you can skip the installation of `python3-devel`. -# Clone the Iceman repository +# Clone the repository ^[Top](#top) ```sh diff --git a/doc/md/Installation_Instructions/Windows-Installation-Instructions.md b/doc/md/Installation_Instructions/Windows-Installation-Instructions.md index bc29aba6a..f14f772aa 100644 --- a/doc/md/Installation_Instructions/Windows-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Windows-Installation-Instructions.md @@ -168,7 +168,8 @@ Install dependencies: ```sh sudo apt-get install --no-install-recommends git ca-certificates build-essential pkg-config \ -libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libpython3-dev qtbase5-dev libssl-dev +libreadline-dev gcc-arm-none-eabi libnewlib-dev \ +libbz2-dev liblz4-dev libpython3-dev qtbase5-dev libssl-dev ``` _note_ If you don't need the graphical components of the Proxmark3 client, you can skip the installation of `qtbase5-dev`. From 60ff2351ba48d6ce0fb4f3a9aa4e926e9e560c03 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 9 Oct 2023 12:47:00 +0200 Subject: [PATCH 0530/1034] text --- armsrc/Standalone/hf_msdsal.c | 121 +++++++++++++++++----------------- armsrc/iso14443a.c | 49 +++++++++----- 2 files changed, 92 insertions(+), 78 deletions(-) diff --git a/armsrc/Standalone/hf_msdsal.c b/armsrc/Standalone/hf_msdsal.c index f97a2e57f..4ce074cf9 100644 --- a/armsrc/Standalone/hf_msdsal.c +++ b/armsrc/Standalone/hf_msdsal.c @@ -30,7 +30,7 @@ #include "cmd.h" void ModInfo(void) { - DbpString(" HF - Reading Visa cards & Emulating a Visa MSD Transaction(ISO14443) - (Salvador Mendoza)"); + DbpString(" HF - Reading VISA cards & Emulating a VISA MSD Transaction(ISO14443) - (Salvador Mendoza)"); } /* This standalone implements two different modes: reading and emulating. @@ -132,9 +132,15 @@ static uint8_t treatPDOL(const uint8_t *apdu) { void RunMod(void) { StandAloneMode(); - DbpString(_YELLOW_(">>") "Reading Visa cards & Emulating a Visa MSD Transaction a.k.a. MSDSal Started " _YELLOW_("<<")); + DbpString(""); + DbpString(_YELLOW_(">>>") " Reading VISA cards & Emulating a VISA MSD Transaction a.k.a. MSDSal Started " _YELLOW_("<<<")); + DbpString(""); FpgaDownloadAndGo(FPGA_BITSTREAM_HF); + // free eventually allocated BigBuf memory but keep Emulator Memory + // also sets HIGH pointer of BigBuf enabling us to malloc w/o fiddling w the reserved emulator memory + BigBuf_free_keep_EM(); + //For reading process iso14a_card_select_t card_a_info; @@ -161,7 +167,6 @@ void RunMod(void) { bool existpdol; - // - MSD token card format - // //Card number: 4412 3456 0578 1234 @@ -175,34 +180,31 @@ void RunMod(void) { char token[19] = {0x00}; bool chktoken = false; - // Allocate 512 bytes for the dynamic modulation, created when the reader queries for it - // Such a response is less time critical, so we can prepare them on the fly -#define DYNAMIC_RESPONSE_BUFFER_SIZE 64 -#define DYNAMIC_MODULATION_BUFFER_SIZE 512 - // UID 4 bytes(could be 7 bytes if needed it) uint8_t flags = FLAG_4B_UID_IN_DATA; // in case there is a read command received we shouldn't break uint8_t data[PM3_CMD_DATA_SIZE] = {0x00}; - uint8_t visauid[7] = {0x01, 0x02, 0x03, 0x04}; + uint8_t visauid[7] = {0x04, 0x02, 0x03, 0x04}; memcpy(data, visauid, 4); // to initialize the emulation - uint8_t tagType = 11; // 11 = ISO/IEC 14443-4 - javacard (JCOP) tag_response_info_t *responses; + uint32_t cuid = 0; - uint32_t counters[3] = { 0x00, 0x00, 0x00 }; - uint8_t tearings[3] = { 0xbd, 0xbd, 0xbd }; - uint8_t pages = 0; // command buffers uint8_t receivedCmd[MAX_FRAME_SIZE] = { 0x00 }; uint8_t receivedCmdPar[MAX_PARITY_SIZE] = { 0x00 }; - uint8_t dynamic_response_buffer[DYNAMIC_RESPONSE_BUFFER_SIZE] = {0}; - uint8_t dynamic_modulation_buffer[DYNAMIC_MODULATION_BUFFER_SIZE] = {0}; + // Allocate 512 bytes for the dynamic modulation, created when the reader queries for it + // Such a response is less time critical, so we can prepare them on the fly +#define DYNAMIC_RESPONSE_BUFFER_SIZE 64 +#define DYNAMIC_MODULATION_BUFFER_SIZE 512 + + uint8_t *dynamic_response_buffer = BigBuf_calloc(DYNAMIC_RESPONSE_BUFFER_SIZE); + uint8_t *dynamic_modulation_buffer = BigBuf_calloc(DYNAMIC_MODULATION_BUFFER_SIZE); // to know the transaction status uint8_t prevCmd = 0; @@ -223,11 +225,11 @@ void RunMod(void) { // Checking if the user wants to go directly to emulation mode using a hardcoded track 2 if (chktoken == true && token[0] != 0x00) { state = STATE_EMU; - DbpString(_YELLOW_("[ ") "Initialized emulation mode" _YELLOW_(" ]")); - DbpString("\n"_YELLOW_("!!") "Waiting for a card reader..."); + DbpString("Initialized [ " _BLUE_("emulation mode") " ]"); + DbpString("Waiting for a card reader..."); } else { - DbpString(_YELLOW_("[ ") "Initialized reading mode" _YELLOW_(" ]")); - DbpString("\n"_YELLOW_("!!") "Waiting for a Visa card..."); + DbpString("Initialized [ " _YELLOW_("reading mode") " ]"); + DbpString("Waiting for a VISA card..."); } for (;;) { @@ -240,20 +242,20 @@ void RunMod(void) { int button_pressed = BUTTON_HELD(1000); - if (button_pressed == BUTTON_HOLD) + if (button_pressed == BUTTON_HOLD) { break; - else if (button_pressed == BUTTON_SINGLE_CLICK) { + } else if (button_pressed == BUTTON_SINGLE_CLICK) { // pressing one time change between reading & emulation if (state == STATE_READ) { if (chktoken == true && token[0] != 0x00) { // only change to emulation if it saved a track 2 in memory state = STATE_EMU; - DbpString(_YELLOW_("[ ") "In emulation mode" _YELLOW_(" ]")); + DbpString("[ " _BLUE_("Emulation mode") " ]"); } else - DbpString(_YELLOW_("!!") "Nothing in memory to emulate"); + DbpString(_YELLOW_("Nothing in memory to emulate")); } else { state = STATE_READ; - DbpString(_YELLOW_("[ ") "In reading mode" _YELLOW_(" ]")); + DbpString("[ " _YELLOW_("Reading mode") " ]"); } } @@ -261,15 +263,14 @@ void RunMod(void) { if (state == STATE_READ) { LED_A_ON(); - if (chktoken) + if (chktoken) { LED_C_ON(); + } iso14443a_setup(FPGA_HF_ISO14443A_READER_MOD); if (iso14443a_select_card(NULL, &card_a_info, NULL, true, 0, false)) { - DbpString(_YELLOW_("+") "Found ISO 14443 Type A!"); - for (uint8_t i = 0; i < 4; i++) { chktoken = false; LED_C_OFF(); @@ -277,11 +278,11 @@ void RunMod(void) { uint8_t apdulen = iso14_apdu(apdus[i], (uint16_t) apduslen[i], false, apdubuffer, NULL); if (apdulen > 0) { - DbpString(_YELLOW_("[ ") "Proxmark command" _YELLOW_(" ]")); + DbpString("[ " _YELLOW_("Proxmark command") " ]"); Dbhexdump(apduslen[i], apdus[i], false); - DbpString(_GREEN_("[ ") "Card answer" _GREEN_(" ]")); + DbpString("[ " _GREEN_( "Card answer") " ]"); Dbhexdump(apdulen - 2, apdubuffer, false); - DbpString("----"); + DbpString("-------------------------------"); for (uint8_t u = 0; u < apdulen; u++) { if (i == 1) { @@ -309,25 +310,27 @@ void RunMod(void) { } if (i == 1) { - DbpString(_GREEN_("[ ") "Challenge generated" _GREEN_(" ]")); + DbpString("[ "_GREEN_("Challenge generated") " ]"); Dbhexdump(plen, existpdol ? ppdol : processing, false); } } else { - DbpString(_YELLOW_("!!") "Error reading the card"); + DbpString(_RED_("Error reading the card")); } LED_B_OFF(); } if (chktoken) { - DbpString(_RED_("[ ") "Track 2" _RED_(" ]")); + DbpString("[ " _GREEN_("Track 2") " ]"); Dbhexdump(19, (uint8_t *)token, false); - DbpString(_YELLOW_("!!") "Card number"); + DbpString("[ " _GREEN_("Card Number") " ]"); Dbhexdump(8, (uint8_t *)token, false); - DbpString("---"); + DbpString("-------------------------------"); + DbpString(""); + DbpString(""); LED_C_ON(); state = STATE_EMU; - DbpString(_YELLOW_("[ ") "Initialized emulation mode" _YELLOW_(" ]")); - DbpString("\n"_YELLOW_("!!") "Waiting for a card reader..."); + DbpString("Initialized [ " _BLUE_("emulation mode") " ]"); + DbpString("Waiting for a card reader..."); } } FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); @@ -340,14 +343,15 @@ void RunMod(void) { // free eventually allocated BigBuf memory but keep Emulator Memory BigBuf_free_keep_EM(); - if (SimulateIso14443aInit(tagType, flags, data, &responses, &cuid, counters, tearings, &pages) == false) { + // tag type: 11 = ISO/IEC 14443-4 - javacard (JCOP) + if (SimulateIso14443aInit(11, flags, data, &responses, &cuid, NULL, NULL, NULL) == false) { BigBuf_free_keep_EM(); reply_ng(CMD_HF_MIFARE_SIMULATE, PM3_EINIT, NULL, 0); - DbpString(_YELLOW_("!!") "Error initializing the emulation process!"); + DbpString(_RED_("Error initializing the emulation process!")); SpinDelay(500); state = STATE_READ; - DbpString(_YELLOW_("[ ") "Initialized reading mode" _YELLOW_(" ]")); - DbpString("\n" _YELLOW_("!!") "Waiting for a Visa card..."); + DbpString("Initialized [ "_YELLOW_("reading mode") " ]"); + DbpString("Waiting for a VISA card..."); continue; } @@ -366,11 +370,12 @@ void RunMod(void) { for (;;) { LED_B_OFF(); // clean receive command buffer - if (!GetIso14443aCommandFromReader(receivedCmd, receivedCmdPar, &len)) { - DbpString(_YELLOW_("!!") "Emulator stopped"); + if (GetIso14443aCommandFromReader(receivedCmd, receivedCmdPar, &len) == false) { + DbpString("Emulator stopped"); retval = PM3_EOPABORTED; break; } + tag_response_info_t *p_response = NULL; LED_B_ON(); @@ -387,41 +392,33 @@ void RunMod(void) { // received a HALT } else if (receivedCmd[0] == ISO14443A_CMD_HALT && len == 4) { - //DbpString(_YELLOW_("+") "Received a HALT"); p_response = NULL; // received a WAKEUP } else if (receivedCmd[0] == ISO14443A_CMD_WUPA && len == 1) { - //DbpString(_YELLOW_("+") "WAKEUP Received"); prevCmd = 0; p_response = &responses[RESP_INDEX_ATQA]; // received request for UID (cascade 1) } else if (receivedCmd[1] == 0x20 && receivedCmd[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT && len == 2) { - //DbpString(_YELLOW_("+") "Request for UID C1"); p_response = &responses[RESP_INDEX_UIDC1]; // received a SELECT (cascade 1) } else if (receivedCmd[1] == 0x70 && receivedCmd[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT && len == 9) { - //DbpString(_YELLOW_("+") "Request for SELECT S1"); p_response = &responses[RESP_INDEX_SAKC1]; // received a RATS request } else if (receivedCmd[0] == ISO14443A_CMD_RATS && len == 4) { - DbpString(_YELLOW_("+") "Request for RATS"); prevCmd = 0; - //p_response = &responses[RESP_INDEX_RATS]; - - static uint8_t rRATS[] = { 0x13, 0x78, 0x80, 0x72, 0x02, 0x80, 0x31, 0x80, 0x66, 0xb1, 0x84, 0x0c, 0x01, 0x6e, 0x01, 0x83, 0x00, 0x90, 0x00 }; - - memcpy(&dynamic_response_info.response[0], rRATS, sizeof(rRATS)); - dynamic_response_info.response_n = sizeof(rRATS); + p_response = &responses[RESP_INDEX_RATS]; } else { - DbpString(_YELLOW_("[ ") "Card reader command" _YELLOW_(" ]")); - Dbhexdump(len, receivedCmd, false); + if (g_dbglevel == DBG_DEBUG ) { + DbpString("[ "_YELLOW_("Card reader command") " ]"); + Dbhexdump(len, receivedCmd, false); + } - // emulate a Visa MSD(Magnetic stripe data) card + // emulate a Visa MSD (Magnetic stripe data) card if (receivedCmd[0] == 0x02 || receivedCmd[0] == 0x03) { dynamic_response_info.response[0] = receivedCmd[0]; @@ -480,7 +477,7 @@ void RunMod(void) { } } } else { - DbpString(_YELLOW_("!!") "Received unknown command!"); + DbpString(_RED_("Received unknown command!")); if (prevCmd < 4) { memcpy(dynamic_response_info.response, receivedCmd, len); dynamic_response_info.response_n = len; @@ -491,7 +488,7 @@ void RunMod(void) { } if (dynamic_response_info.response_n > 0) { - DbpString(_GREEN_("[ ") "Proxmark3 answer" _GREEN_(" ]")); + DbpString("[ " _GREEN_("Proxmark3 answer") " ]"); Dbhexdump(dynamic_response_info.response_n, dynamic_response_info.response, false); DbpString("----"); @@ -501,7 +498,7 @@ void RunMod(void) { if (prepare_tag_modulation(&dynamic_response_info, DYNAMIC_MODULATION_BUFFER_SIZE) == false) { SpinDelay(500); - DbpString(_YELLOW_("!!") "Error preparing Proxmark to answer!"); + DbpString(_RED_("Error preparing Proxmark to answer!")); continue; } p_response = &dynamic_response_info; @@ -518,6 +515,8 @@ void RunMod(void) { reply_ng(CMD_HF_MIFARE_SIMULATE, retval, NULL, 0); } } - DbpString(_YELLOW_("[=]") "exiting"); + DbpString("Exit standalone mode!"); + DbpString(""); + SpinErr(15, 200, 3); LEDsoff(); } diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 346669398..d1b63264e 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1021,7 +1021,8 @@ bool prepare_allocated_tag_modulation(tag_response_info_t *response_info, uint8_ } } -bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_response_info_t **responses, uint32_t *cuid, uint32_t counters[3], uint8_t tearings[3], uint8_t *pages) { +bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_response_info_t **responses, + uint32_t *cuid, uint32_t counters[3], uint8_t tearings[3], uint8_t *pages) { uint8_t sak = 0; // The first response contains the ATQA (note: bytes are transmitted in reverse order). static uint8_t rATQA[2] = { 0x00 }; @@ -1038,8 +1039,13 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r // Prepare the optional third SAK (for 10 byte UID), drop the cascade bit static uint8_t rSAKc3[3] = { 0x00 }; // dummy ATS (pseudo-ATR), answer to RATS + // Format byte = 0x58: FSCI=0x08 (FSC=256), TA(1) and TC(1) present, + // TA(1) = 0x80: different divisors not supported, DR = 1, DS = 1 + // TB(1) = not present. Defaults: FWI = 4 (FWT = 256 * 16 * 2^4 * 1/fc = 4833us), SFGI = 0 (SFG = 256 * 16 * 2^0 * 1/fc = 302us) + // TC(1) = 0x02: CID supported, NAD not supported // static uint8_t rRATS[] = { 0x04, 0x58, 0x80, 0x02, 0x00, 0x00 }; - static uint8_t rRATS[] = { 0x05, 0x75, 0x80, 0x60, 0x02, 0x00, 0x00, 0x00 }; + static uint8_t rRATS[40] = { 0x05, 0x75, 0x80, 0x60, 0x02, 0x00, 0x00, 0x00 }; + uint8_t rRATS_len = 8; // GET_VERSION response for EV1/NTAG static uint8_t rVERSION[10] = { 0x00 }; @@ -1092,6 +1098,7 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r rATQA[1] = 0x03; sak = 0x20; memcpy(rRATS, "\x06\x75\x77\x81\x02\x80\x00\x00", 8); + rRATS_len = 8; break; } case 4: { // ISO/IEC 14443-4 - javacard (JCOP) @@ -1158,7 +1165,10 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r sak = 0x20; break; } - case 11: { // ISO/IEC 14443-4 - javacard (JCOP) + case 11: { // ISO/IEC 14443-4 - javacard (JCOP) / EMV + + memcpy(rRATS, "\x13\x78\x80\x72\x02\x80\x31\x80\x66\xb1\x84\x0c\x01\x6e\x01\x83\x00\x90\x00", 19); + rRATS_len = 19; rATQA[0] = 0x04; sak = 0x20; break; @@ -1266,11 +1276,7 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r return false; } - // Format byte = 0x58: FSCI=0x08 (FSC=256), TA(1) and TC(1) present, - // TA(1) = 0x80: different divisors not supported, DR = 1, DS = 1 - // TB(1) = not present. Defaults: FWI = 4 (FWT = 256 * 16 * 2^4 * 1/fc = 4833us), SFGI = 0 (SFG = 256 * 16 * 2^0 * 1/fc = 302us) - // TC(1) = 0x02: CID supported, NAD not supported - AddCrc14A(rRATS, sizeof(rRATS) - 2); + AddCrc14A(rRATS, rRATS_len - 2); AddCrc14A(rPPS, sizeof(rPPS) - 2); @@ -1305,14 +1311,23 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r { .response = rPACK, .response_n = sizeof(rPACK) } // PACK response }; - // "precompile" responses. There are 12 predefined responses with a total of 84 bytes data to transmit. + // since rats len is variable now. + responses_init[RESP_INDEX_RATS].response_n = rRATS_len; + // "precompiled" responses. + // These exist for speed reasons. There are no time in the anti collision phase to calculate responses. + // There are 12 predefined responses with a total of 84 bytes data to transmit. + // // Coded responses need one byte per bit to transfer (data, parity, start, stop, correction) // 85 * 8 data bits, 85 * 1 parity bits, 12 start bits, 12 stop bits, 12 correction bits // 85 * 8 + 85 + 12 + 12 + 12 == 801 -#define ALLOCATED_TAG_MODULATION_BUFFER_SIZE 801 + // CHG: + // 85 bytes normally (rats = 8 bytes) + // 77 bytes + ratslen, - uint8_t *free_buffer = BigBuf_malloc(ALLOCATED_TAG_MODULATION_BUFFER_SIZE); +#define ALLOCATED_TAG_MODULATION_BUFFER_SIZE ( ((77 + rRATS_len) * 8) + 77 + rRATS_len + 12 + 12 + 12) + + uint8_t *free_buffer = BigBuf_calloc(ALLOCATED_TAG_MODULATION_BUFFER_SIZE); // modulation buffer pointer and current buffer free space size uint8_t *free_buffer_pointer = free_buffer; size_t free_buffer_size = ALLOCATED_TAG_MODULATION_BUFFER_SIZE; @@ -1328,7 +1343,6 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r } *responses = responses_init; - return true; } @@ -1362,12 +1376,16 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ uint8_t receivedCmd[MAX_FRAME_SIZE] = { 0x00 }; uint8_t receivedCmdPar[MAX_PARITY_SIZE] = { 0x00 }; + // free eventually allocated BigBuf memory but keep Emulator Memory + BigBuf_free_keep_EM(); + // Allocate 512 bytes for the dynamic modulation, created when the reader queries for it // Such a response is less time critical, so we can prepare them on the fly #define DYNAMIC_RESPONSE_BUFFER_SIZE 64 #define DYNAMIC_MODULATION_BUFFER_SIZE 512 - uint8_t dynamic_response_buffer[DYNAMIC_RESPONSE_BUFFER_SIZE] = {0}; - uint8_t dynamic_modulation_buffer[DYNAMIC_MODULATION_BUFFER_SIZE] = {0}; + + uint8_t *dynamic_response_buffer = BigBuf_calloc(DYNAMIC_RESPONSE_BUFFER_SIZE); + uint8_t *dynamic_modulation_buffer = BigBuf_calloc(DYNAMIC_MODULATION_BUFFER_SIZE); tag_response_info_t dynamic_response_info = { .response = dynamic_response_buffer, .response_n = 0, @@ -1375,9 +1393,6 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ .modulation_n = 0 }; - // free eventually allocated BigBuf memory but keep Emulator Memory - BigBuf_free_keep_EM(); - if (SimulateIso14443aInit(tagType, flags, data, &responses, &cuid, counters, tearings, &pages) == false) { BigBuf_free_keep_EM(); reply_ng(CMD_HF_MIFARE_SIMULATE, PM3_EINIT, NULL, 0); From d41f0c394e2fa3cad9857f51f24d5d99022350cf Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 9 Oct 2023 15:04:49 +0200 Subject: [PATCH 0531/1034] hf iclass wrbl - the pagemap bit maps isnt the best to handle all four cases. This atleast fixes one issue with them --- CHANGELOG.md | 1 + armsrc/iclass.c | 27 ++++++++++++++++----------- client/src/cmdhficlass.c | 3 ++- include/protocols.h | 2 +- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6aee59c87..3fc7417ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `hf iclass wrbl` - pagemap bit map for secured is now handled better (@iceman1001) - Changed `hf iclass view/decrypt` to detect SIO lengths better and show if legacy credentials are encrypted (@nvx) - Changed the json file formats for mfc, 14b, 15, legic, cryptorf, ndef (@iceman1001) - Depricated the EML file format when saving dump files. (@iceman1001) diff --git a/armsrc/iclass.c b/armsrc/iclass.c index 953cfaa6f..e44b54fd9 100644 --- a/armsrc/iclass.c +++ b/armsrc/iclass.c @@ -1784,7 +1784,6 @@ static bool iclass_writeblock_ext(uint8_t blockno, uint8_t *data, uint8_t *mac, return false; } - uint8_t all_ff[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; if (blockno == 2) { // check response. e-purse update swaps first and second half if (memcmp(data + 4, resp, 4) || memcmp(data, resp + 4, 4)) { @@ -1792,6 +1791,7 @@ static bool iclass_writeblock_ext(uint8_t blockno, uint8_t *data, uint8_t *mac, } } else if (blockno == 3 || blockno == 4) { // check response. Key updates always return 0xffffffffffffffff + uint8_t all_ff[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; if (memcmp(all_ff, resp, 8)) { return false; } @@ -1821,7 +1821,7 @@ void iClass_WriteBlock(uint8_t *msg) { // select tag. uint32_t eof_time = 0; picopass_hdr_t hdr = {0}; - uint8_t res = select_iclass_tag(&hdr, payload->req.use_credit_key, &eof_time, shallow_mod); + bool res = select_iclass_tag(&hdr, payload->req.use_credit_key, &eof_time, shallow_mod); if (res == false) { goto out; } @@ -1881,8 +1881,9 @@ void iClass_WriteBlock(uint8_t *msg) { if (tearoff_hook() == PM3_ETEAROFF) { // tearoff occurred res = false; switch_off(); - if (payload->req.send_reply) - reply_ng(CMD_HF_ICLASS_WRITEBL, PM3_ETEAROFF, (uint8_t *)&res, sizeof(uint8_t)); + if (payload->req.send_reply) { + reply_ng(CMD_HF_ICLASS_WRITEBL, PM3_ETEAROFF, (uint8_t *)&res, sizeof(bool)); + } return; } else { @@ -1901,16 +1902,18 @@ void iClass_WriteBlock(uint8_t *msg) { } // verify write - uint8_t all_ff[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; if (pagemap == PICOPASS_SECURE_PAGEMODE && payload->req.blockno == 2) { // check response. e-purse update swaps first and second half if (memcmp(payload->data + 4, resp, 4) || memcmp(payload->data, resp + 4, 4)) { res = false; goto out; } - } else if (pagemap == PICOPASS_SECURE_PAGEMODE && (payload->req.blockno == 3 || payload->req.blockno == 4)) { + } + + if (pagemap == PICOPASS_SECURE_PAGEMODE && (payload->req.blockno == 3 || payload->req.blockno == 4)) { // check response. Key updates always return 0xffffffffffffffff - if (memcmp(all_ff, resp, 8)) { + uint8_t all_ff[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + if (memcmp(all_ff, resp, sizeof(all_ff))) { res = false; goto out; } @@ -1925,8 +1928,9 @@ void iClass_WriteBlock(uint8_t *msg) { out: switch_off(); - if (payload->req.send_reply) - reply_ng(CMD_HF_ICLASS_WRITEBL, PM3_SUCCESS, (uint8_t *)&res, sizeof(uint8_t)); + if (payload->req.send_reply) { + reply_ng(CMD_HF_ICLASS_WRITEBL, PM3_SUCCESS, (uint8_t *)&res, sizeof(bool)); + } } void iclass_credit_epurse(iclass_credit_epurse_t *payload) { @@ -1967,8 +1971,9 @@ void iclass_credit_epurse(iclass_credit_epurse_t *payload) { res = iclass_send_cmd_with_retries(cmd_read, sizeof(cmd_read), epurse, sizeof(epurse), 10, 3, &start_time, ICLASS_READER_TIMEOUT_OTHERS, &eof_time, shallow_mod); if (!res) { switch_off(); - if (payload->req.send_reply) + if (payload->req.send_reply) { reply_ng(CMD_HF_ICLASS_CREDIT_EPURSE, PM3_ETIMEOUT, (uint8_t *)&res, sizeof(uint8_t)); + } return; } @@ -1977,7 +1982,7 @@ void iclass_credit_epurse(iclass_credit_epurse_t *payload) { uint8_t epurse_offset = 0; const uint8_t empty_epurse[] = {0xff, 0xff, 0xff, 0xff}; - if (!memcmp(epurse, empty_epurse, 4)) { + if (memcmp(epurse, empty_epurse, 4) == 0) { // epurse data in stage 2 epurse_offset = 4; } diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 88534d45f..96b6dae81 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -2086,6 +2086,7 @@ static int iclass_write_block(uint8_t blockno, uint8_t *bldata, uint8_t *macdata if (verbose) PrintAndLogEx(ERR, "failed to communicate with card"); return resp.status; } + return (resp.data.asBytes[0] == 1) ? PM3_SUCCESS : PM3_ESOFT; } @@ -2190,7 +2191,7 @@ static int CmdHFiClass_WriteBlock(const char *Cmd) { int isok = iclass_write_block(blockno, data, mac, key, use_credit_key, elite, rawkey, use_replay, verbose, auth, shallow_mod); switch (isok) { case PM3_SUCCESS: - PrintAndLogEx(SUCCESS, "Wrote block %3d/0x%02X successful", blockno, blockno); + PrintAndLogEx(SUCCESS, "Wrote block " _YELLOW_("%d") "/" _YELLOW_("0x%02X") " ( " _GREEN_("ok") " )", blockno, blockno); break; case PM3_ETEAROFF: if (verbose) diff --git a/include/protocols.h b/include/protocols.h index b4de7da1a..0b9604676 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -443,7 +443,7 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. // Picopass Pagemode fuses #define PICOPASS_NON_SECURE_PAGEMODE 0x01 -#define PICOPASS_SECURE_PAGEMODE 0x11 +#define PICOPASS_SECURE_PAGEMODE 0x03 // ISO 7816-4 Basic interindustry commands. For command APDU's. From 7b3e84c0d6c588256191d7614d510fe52c3620f0 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 9 Oct 2023 15:14:53 +0200 Subject: [PATCH 0532/1034] better fix for the PAGEMAP issue --- armsrc/iclass.c | 28 ++++++---------------------- armsrc/iclass.h | 20 ++++++++++++++++++++ client/src/cmdhficlass.c | 3 ++- include/protocols.h | 7 ++++--- 4 files changed, 32 insertions(+), 26 deletions(-) diff --git a/armsrc/iclass.c b/armsrc/iclass.c index e44b54fd9..a1631d95d 100644 --- a/armsrc/iclass.c +++ b/armsrc/iclass.c @@ -36,9 +36,10 @@ #include "protocols.h" #include "ticks.h" #include "iso15693.h" -#include "iclass_cmd.h" /* iclass_card_select_t struct */ +#include "iclass_cmd.h" // iclass_card_select_t struct +#include "i2c.h" // i2c defines (SIM module access) -static uint8_t get_pagemap(const picopass_hdr_t *hdr) { +uint8_t get_pagemap(const picopass_hdr_t *hdr) { return (hdr->conf.fuses & (FUSE_CRYPT0 | FUSE_CRYPT1)) >> 3; } @@ -52,23 +53,6 @@ static uint8_t get_pagemap(const picopass_hdr_t *hdr) { #define ICLASS_16KS_SIZE 0x100 * 8 #endif -// iCLASS has a slightly different timing compared to ISO15693. According to the picopass data sheet the tag response is expected 330us after -// the reader command. This is measured from end of reader EOF to first modulation of the tag's SOF which starts with a 56,64us unmodulated period. -// 330us = 140 ssp_clk cycles @ 423,75kHz when simulating. -// 56,64us = 24 ssp_clk_cycles -#define DELAY_ICLASS_VCD_TO_VICC_SIM (140 - 26) // (140 - 24) - -// times in ssp_clk_cycles @ 3,3625MHz when acting as reader -#define DELAY_ICLASS_VICC_TO_VCD_READER DELAY_ISO15693_VICC_TO_VCD_READER - -// times in samples @ 212kHz when acting as reader -#define ICLASS_READER_TIMEOUT_ACTALL 330 // 1558us, nominal 330us + 7slots*160us = 1450us -#define ICLASS_READER_TIMEOUT_UPDATE 3390 // 16000us, nominal 4-15ms -#define ICLASS_READER_TIMEOUT_OTHERS 80 // 380us, nominal 330us - -#define AddCrc(data, len) compute_crc(CRC_ICLASS, (data), (len), (data)+(len), (data)+(len)+1) - - /* * CARD TO READER * in ISO15693-2 mode - Manchester @@ -1245,7 +1229,7 @@ send: } // THE READER CODE -static void iclass_send_as_reader(uint8_t *frame, int len, uint32_t *start_time, uint32_t *end_time, bool shallow_mod) { +void iclass_send_as_reader(uint8_t *frame, int len, uint32_t *start_time, uint32_t *end_time, bool shallow_mod) { CodeIso15693AsReader(frame, len); tosend_t *ts = get_tosend(); TransmitTo15693Tag(ts->buf, ts->max, start_time, shallow_mod); @@ -1902,7 +1886,7 @@ void iClass_WriteBlock(uint8_t *msg) { } // verify write - if (pagemap == PICOPASS_SECURE_PAGEMODE && payload->req.blockno == 2) { + if ((pagemap != PICOPASS_NON_SECURE_PAGEMODE) && (payload->req.blockno == 2)) { // check response. e-purse update swaps first and second half if (memcmp(payload->data + 4, resp, 4) || memcmp(payload->data, resp + 4, 4)) { res = false; @@ -1910,7 +1894,7 @@ void iClass_WriteBlock(uint8_t *msg) { } } - if (pagemap == PICOPASS_SECURE_PAGEMODE && (payload->req.blockno == 3 || payload->req.blockno == 4)) { + if ((pagemap != PICOPASS_NON_SECURE_PAGEMODE) && (payload->req.blockno == 3 || payload->req.blockno == 4)) { // check response. Key updates always return 0xffffffffffffffff uint8_t all_ff[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; if (memcmp(all_ff, resp, sizeof(all_ff))) { diff --git a/armsrc/iclass.h b/armsrc/iclass.h index 363c042ab..30846ff36 100644 --- a/armsrc/iclass.h +++ b/armsrc/iclass.h @@ -21,6 +21,23 @@ #include "common.h" #include "iclass_cmd.h" +// iCLASS has a slightly different timing compared to ISO15693. According to the picopass data sheet the tag response is expected 330us after +// the reader command. This is measured from end of reader EOF to first modulation of the tag's SOF which starts with a 56,64us unmodulated period. +// 330us = 140 ssp_clk cycles @ 423,75kHz when simulating. +// 56,64us = 24 ssp_clk_cycles +#define DELAY_ICLASS_VCD_TO_VICC_SIM (140 - 26) // (140 - 24) + +// times in ssp_clk_cycles @ 3,3625MHz when acting as reader +#define DELAY_ICLASS_VICC_TO_VCD_READER DELAY_ISO15693_VICC_TO_VCD_READER + + +// times in samples @ 212kHz when acting as reader +#define ICLASS_READER_TIMEOUT_ACTALL 330 // 1558us, nominal 330us + 7slots*160us = 1450us +#define ICLASS_READER_TIMEOUT_UPDATE 3390 // 16000us, nominal 4-15ms +#define ICLASS_READER_TIMEOUT_OTHERS 80 // 380us, nominal 330us + +#define AddCrc(data, len) compute_crc(CRC_ICLASS, (data), (len), (data)+(len), (data)+(len)+1) + void SniffIClass(uint8_t jam_search_len, uint8_t *jam_search_string); void ReaderIClass(uint8_t flags); @@ -43,4 +60,7 @@ bool iclass_read_block(uint16_t blockno, uint8_t *data, uint32_t *start_time, ui bool select_iclass_tag(picopass_hdr_t *hdr, bool use_credit_key, uint32_t *eof_time, bool shallow_mod); bool authenticate_iclass_tag(iclass_auth_req_t *payload, picopass_hdr_t *hdr, uint32_t *start_time, uint32_t *eof_time, uint8_t *mac_out); + +uint8_t get_pagemap(const picopass_hdr_t *hdr); +void iclass_send_as_reader(uint8_t *frame, int len, uint32_t *start_time, uint32_t *end_time, bool shallow_mod); #endif diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 96b6dae81..0583c714f 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -2191,7 +2191,7 @@ static int CmdHFiClass_WriteBlock(const char *Cmd) { int isok = iclass_write_block(blockno, data, mac, key, use_credit_key, elite, rawkey, use_replay, verbose, auth, shallow_mod); switch (isok) { case PM3_SUCCESS: - PrintAndLogEx(SUCCESS, "Wrote block " _YELLOW_("%d") "/" _YELLOW_("0x%02X") " ( " _GREEN_("ok") " )", blockno, blockno); + PrintAndLogEx(SUCCESS, "Wrote block " _YELLOW_("%d") " / " _YELLOW_("0x%02X") " ( " _GREEN_("ok") " )", blockno, blockno); break; case PM3_ETEAROFF: if (verbose) @@ -2201,6 +2201,7 @@ static int CmdHFiClass_WriteBlock(const char *Cmd) { PrintAndLogEx(FAILED, "Writing failed"); break; } + PrintAndLogEx(NORMAL, ""); return isok; } diff --git a/include/protocols.h b/include/protocols.h index 0b9604676..db088fd22 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -442,9 +442,10 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define FUSE_RA 0x01 // Picopass Pagemode fuses -#define PICOPASS_NON_SECURE_PAGEMODE 0x01 -#define PICOPASS_SECURE_PAGEMODE 0x03 - +#define PICOPASS_SECURE_PAGEMODE_AUTH_DISABLED 0x00 +#define PICOPASS_NON_SECURE_PAGEMODE 0x01 +#define PICOPASS_SECURE_PAGEMODE_KEYS_LOCKED 0x02 +#define PICOPASS_SECURE_PAGEMODE_KEYS_MODIFIABLE 0x03 // ISO 7816-4 Basic interindustry commands. For command APDU's. #define ISO7816_READ_BINARY 0xB0 From 6229021f0793de68938e9a7426e56dbd99f632e2 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 9 Oct 2023 15:24:57 +0200 Subject: [PATCH 0533/1034] use the ISO7816 defines we already have --- client/src/cmdhfemrtd.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/client/src/cmdhfemrtd.c b/client/src/cmdhfemrtd.c index c8edd2054..98bb3e44d 100644 --- a/client/src/cmdhfemrtd.c +++ b/client/src/cmdhfemrtd.c @@ -42,13 +42,9 @@ #define EMRTD_MAX_FILE_SIZE 35000 // ISO7816 commands -#define EMRTD_SELECT 0xA4 -#define EMRTD_EXTERNAL_AUTHENTICATE 0x82 -#define EMRTD_GET_CHALLENGE 0x84 -#define EMRTD_READ_BINARY 0xB0 -#define EMRTD_P1_SELECT_BY_EF 0x02 -#define EMRTD_P1_SELECT_BY_NAME 0x04 -#define EMRTD_P2_PROPRIETARY 0x0C +#define EMRTD_P1_SELECT_BY_EF 0x02 +#define EMRTD_P1_SELECT_BY_NAME 0x04 +#define EMRTD_P2_PROPRIETARY 0x0C // App IDs #define EMRTD_AID_MRTD {0xA0, 0x00, 0x00, 0x02, 0x47, 0x10, 0x01} @@ -383,25 +379,25 @@ static void _emrtd_convert_fileid(uint16_t file, uint8_t *dataout) { } static int emrtd_select_file_by_name(uint8_t namelen, uint8_t *name) { - return emrtd_exchange_commands_noout((sAPDU_t) {0, EMRTD_SELECT, EMRTD_P1_SELECT_BY_NAME, 0x0C, namelen, name}, false, true); + return emrtd_exchange_commands_noout((sAPDU_t) {0, ISO7816_SELECT_FILE, EMRTD_P1_SELECT_BY_NAME, 0x0C, namelen, name}, false, true); } static int emrtd_select_file_by_ef(uint16_t file_id) { uint8_t data[2]; _emrtd_convert_fileid(file_id, data); - return emrtd_exchange_commands_noout((sAPDU_t) {0, EMRTD_SELECT, EMRTD_P1_SELECT_BY_EF, 0x0C, sizeof(data), data}, false, true); + return emrtd_exchange_commands_noout((sAPDU_t) {0, ISO7816_SELECT_FILE, EMRTD_P1_SELECT_BY_EF, 0x0C, sizeof(data), data}, false, true); } static int emrtd_get_challenge(int length, uint8_t *dataout, size_t maxdataoutlen, size_t *dataoutlen) { - return emrtd_exchange_commands((sAPDU_t) {0, EMRTD_GET_CHALLENGE, 0, 0, 0, NULL}, true, length, dataout, maxdataoutlen, dataoutlen, false, true); + return emrtd_exchange_commands((sAPDU_t) {0, ISO7816_GET_CHALLENGE, 0, 0, 0, NULL}, true, length, dataout, maxdataoutlen, dataoutlen, false, true); } static int emrtd_external_authenticate(uint8_t *data, int length, uint8_t *dataout, size_t maxdataoutlen, size_t *dataoutlen) { - return emrtd_exchange_commands((sAPDU_t) {0, EMRTD_EXTERNAL_AUTHENTICATE, 0, 0, length, data}, true, length, dataout, maxdataoutlen, dataoutlen, false, true); + return emrtd_exchange_commands((sAPDU_t) {0, ISO7816_EXTERNAL_AUTHENTICATION, 0, 0, length, data}, true, length, dataout, maxdataoutlen, dataoutlen, false, true); } static int _emrtd_read_binary(int offset, int bytes_to_read, uint8_t *dataout, size_t maxdataoutlen, size_t *dataoutlen) { - return emrtd_exchange_commands((sAPDU_t) {0, EMRTD_READ_BINARY, offset >> 8, offset & 0xFF, 0, NULL}, true, bytes_to_read, dataout, maxdataoutlen, dataoutlen, false, true); + return emrtd_exchange_commands((sAPDU_t) {0, ISO7816_READ_BINARY, offset >> 8, offset & 0xFF, 0, NULL}, true, bytes_to_read, dataout, maxdataoutlen, dataoutlen, false, true); } static void emrtd_bump_ssc(uint8_t *ssc) { @@ -503,7 +499,7 @@ static bool emrtd_secure_select_file_by_ef(uint8_t *kenc, uint8_t *kmac, uint8_t memcpy(data + (datalen + 3), do8e, 10); PrintAndLogEx(DEBUG, "data: %s", sprint_hex_inrow(data, lc)); - if (emrtd_exchange_commands((sAPDU_t) {0x0C, EMRTD_SELECT, EMRTD_P1_SELECT_BY_EF, 0x0C, lc, data}, true, 0, response, sizeof(response), &resplen, false, true) == false) { + if (emrtd_exchange_commands((sAPDU_t) {0x0C, ISO7816_SELECT_FILE, EMRTD_P1_SELECT_BY_EF, 0x0C, lc, data}, true, 0, response, sizeof(response), &resplen, false, true) == false) { return false; } @@ -552,7 +548,7 @@ static bool _emrtd_secure_read_binary(uint8_t *kmac, uint8_t *ssc, int offset, i memcpy(data + 3, do8e, 10); PrintAndLogEx(DEBUG, "data: %s", sprint_hex_inrow(data, lc)); - if (emrtd_exchange_commands((sAPDU_t) {0x0C, EMRTD_READ_BINARY, offset >> 8, offset & 0xFF, lc, data}, true, 0, dataout, maxdataoutlen, dataoutlen, false, true) == false) { + if (emrtd_exchange_commands((sAPDU_t) {0x0C, ISO7816_READ_BINARY, offset >> 8, offset & 0xFF, lc, data}, true, 0, dataout, maxdataoutlen, dataoutlen, false, true) == false) { return false; } From 4986959706e4681c7d6468ba8ce7d566e846ff6e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 9 Oct 2023 15:48:01 +0200 Subject: [PATCH 0534/1034] fix logic for epurse updates --- armsrc/iclass.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/armsrc/iclass.c b/armsrc/iclass.c index a1631d95d..405ad610f 100644 --- a/armsrc/iclass.c +++ b/armsrc/iclass.c @@ -1892,9 +1892,7 @@ void iClass_WriteBlock(uint8_t *msg) { res = false; goto out; } - } - - if ((pagemap != PICOPASS_NON_SECURE_PAGEMODE) && (payload->req.blockno == 3 || payload->req.blockno == 4)) { + } else if ((pagemap != PICOPASS_NON_SECURE_PAGEMODE) && (payload->req.blockno == 3 || payload->req.blockno == 4)) { // check response. Key updates always return 0xffffffffffffffff uint8_t all_ff[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; if (memcmp(all_ff, resp, sizeof(all_ff))) { From 7cec258349e475d58b8c4094da74120a8c402078 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 9 Oct 2023 20:09:22 +0200 Subject: [PATCH 0535/1034] minor adjustments to texts --- armsrc/Standalone/hf_msdsal.c | 15 +++++---- client/src/cmdhf14a.c | 2 +- client/src/cmdhf14b.c | 2 +- client/src/cmdhfvas.c | 2 +- client/src/emv/cmdemv.c | 58 ++++++++++++++++++++++++-------- client/src/iso7816/iso7816core.c | 5 +++ 6 files changed, 60 insertions(+), 24 deletions(-) diff --git a/armsrc/Standalone/hf_msdsal.c b/armsrc/Standalone/hf_msdsal.c index 4ce074cf9..18729cdc0 100644 --- a/armsrc/Standalone/hf_msdsal.c +++ b/armsrc/Standalone/hf_msdsal.c @@ -203,8 +203,8 @@ void RunMod(void) { #define DYNAMIC_RESPONSE_BUFFER_SIZE 64 #define DYNAMIC_MODULATION_BUFFER_SIZE 512 - uint8_t *dynamic_response_buffer = BigBuf_calloc(DYNAMIC_RESPONSE_BUFFER_SIZE); - uint8_t *dynamic_modulation_buffer = BigBuf_calloc(DYNAMIC_MODULATION_BUFFER_SIZE); + uint8_t dynamic_response_buffer[DYNAMIC_RESPONSE_BUFFER_SIZE] = {0}; + uint8_t dynamic_modulation_buffer[DYNAMIC_MODULATION_BUFFER_SIZE] = {0}; // to know the transaction status uint8_t prevCmd = 0; @@ -458,12 +458,13 @@ void RunMod(void) { // SFI } else if (receivedCmd[1] == 0x00 && receivedCmd[2] == 0xB2 && prevCmd == 3) { - uint8_t last[4] = {0x70, 0x15, 0x57, 0x13}; - uint8_t statusapdu[2] = {0x90, 0x00}; - uint8_t card[25]; - memcpy(&card[0], last, sizeof(last)); + uint8_t card[25] = { + 0x70, 0x15, 0x57, 0x13, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, + 0x00 + }; memcpy(&card[4], token, sizeof(token)); - memcpy(&card[23], statusapdu, sizeof(statusapdu)); memcpy(&dynamic_response_info.response[1], card, sizeof(card)); dynamic_response_info.response_n = sizeof(card) + 1; prevCmd++; diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 31c3e24bc..7bfecea55 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -994,7 +994,7 @@ int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card // check result if (resp.oldarg[0] == 0) { if (verbose) { - PrintAndLogEx(FAILED, "No card in field"); + PrintAndLogEx(WARNING, "No ISO1443-A Card in field"); } return PM3_ECARDEXCHANGE; } diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 9ceb7f3ee..d6b4cbfe5 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -1697,7 +1697,7 @@ int select_card_14443b_4(bool disconnect, iso14b_card_select_t *card) { // check result int status = resp.oldarg[0]; if (status < 0) { - PrintAndLogEx(ERR, "No card in field."); + PrintAndLogEx(FAILED, "No ISO14443-B Card in field"); switch_off_field_14b(); return PM3_ESOFT; } diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index 4e4a305e5..fa621e853 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -356,7 +356,7 @@ static int VASReader(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t * }; if (SelectCard14443A_4_WithParameters(false, false, NULL, &polling_parameters) != PM3_SUCCESS) { - PrintAndLogEx(FAILED, "No card in field"); + PrintAndLogEx(WARNING, "No ISO14443-A Card in field"); return PM3_ECARDEXCHANGE; } diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 5462f6eed..ea101f43d 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -44,28 +44,30 @@ static int CmdHelp(const char *Cmd); #define TLV_ADD(tag, value)( tlvdb_change_or_add_node(tlvRoot, tag, sizeof(value) - 1, (const unsigned char *)value) ) static void ParamLoadDefaults(struct tlvdb *tlvRoot) { - //9F02:(Amount, authorized (Numeric)) len:6 + // 9F02:(Amount, authorized (Numeric)) len:6 TLV_ADD(0x9F02, "\x00\x00\x00\x00\x01\x00"); - //9F1A:(Terminal Country Code) len:2 + // 9F1A:(Terminal Country Code) len:2 TLV_ADD(0x9F1A, "ru"); - //5F2A:(Transaction Currency Code) len:2 + // 5F2A:(Transaction Currency Code) len:2 // USD 840, EUR 978, RUR 810, RUB 643, RUR 810(old), UAH 980, AZN 031, n/a 999 - TLV_ADD(0x5F2A, "\x09\x80"); - //9A:(Transaction Date) len:3 + TLV_ADD(0x5F2A, "\x090\x78"); + // 9A:(Transaction Date) len:3 TLV_ADD(0x9A, "\x00\x00\x00"); - //9C:(Transaction Type) len:1 | 00 => Goods and service #01 => Cash + // 9C:(Transaction Type) len:1 + // | 00 => Goods and Service + // | 01 => Cash TLV_ADD(0x9C, "\x00"); - // 9F37 Unpredictable Number len:4 + // 9F37 Unpredictable Number (UN) len:4 TLV_ADD(0x9F37, "\x01\x02\x03\x04"); // 9F6A Unpredictable Number (MSD for UDOL) len:4 TLV_ADD(0x9F6A, "\x01\x02\x03\x04"); - //9F66:(Terminal Transaction Qualifiers (TTQ)) len:4 + // 9F66:(Terminal Transaction Qualifiers (TTQ)) len:4 TLV_ADD(0x9F66, "\x26\x00\x00\x00"); // qVSDC - //95:(Terminal Verification Results) len:5 + // 95:(Terminal Verification Results) len:5 // all OK TVR TLV_ADD(0x95, "\x00\x00\x00\x00\x00"); // 9F4E Merchant Name and Location len:x - TLV_ADD(0x9F4E, "proxmrk3rdv\x00"); + TLV_ADD(0x9F4E, "proxmark3rdv4\x00"); } static void PrintChannel(Iso7816CommandChannel channel) { @@ -298,14 +300,14 @@ static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose) { case 0: { size_t a = strlen(token); if (a == 16) { - PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", + PrintAndLogEx(INFO, "PAN...................... " _GREEN_("%c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c"), token[1], token[2], token[3], token[4], token[5], token[6], token[7], token[8], token[9], token[10], token[11], token[12], token[13], token[14], token[15], token[16] ); } else if (a == 19) { - PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c", + PrintAndLogEx(INFO, "PAN...................... " _GREEN_("%c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c"), token[1], token[2], token[3], token[4], token[5], token[6], token[7], token[8], token[9], token[10], token[11], token[12], @@ -362,7 +364,7 @@ static int emv_parse_track2(const uint8_t *d, size_t n, bool verbose) { if (tmp[0] == ';') tmp++; - PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", + PrintAndLogEx(INFO, "PAN...................... "_GREEN_("%c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c"), tmp[0], tmp[1], tmp[2], tmp[3], tmp[4], tmp[5], tmp[6], tmp[7], tmp[8], tmp[9], tmp[10], tmp[11], @@ -479,7 +481,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen, bool verbose if (apan_full != NULL) { const struct tlv *apan_tlv = tlvdb_get_tlv(apan_full); if (apan_tlv->len == 8) { - PrintAndLogEx(INFO, "PAN.................. " _YELLOW_("%02x%02x %02x%02x %02x%02x %02x%02x"), + PrintAndLogEx(INFO, "PAN.................. " _GREEN_("%02x%02x %02x%02x %02x%02x %02x%02x"), apan_tlv->value[0], apan_tlv->value[1], apan_tlv->value[2], @@ -543,6 +545,34 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen, bool verbose // Track 3 Data // to be impl. + + // Unpredicable Number (UN) + struct tlvdb *un1_full = tlvdb_find_full(root, 0x9f37); + if (un1_full != NULL) { + const struct tlv *un1_tlv = tlvdb_get_tlv(un1_full); + if (un1_tlv->len) { + PrintAndLogEx(INFO, "9F37 Unpredicable Number... " _YELLOW_("%s"), sprint_hex_inrow(un1_tlv->value, un1_tlv->len)); + } + } + + // Unpredicable Number (UN) + struct tlvdb *un_full = tlvdb_find_full(root, 0x9f6a); + if (un_full != NULL) { + const struct tlv *un_tlv = tlvdb_get_tlv(un_full); + if (un_tlv->len) { + PrintAndLogEx(INFO, "9F6A Unpredicable Number... " _YELLOW_("%s"), sprint_hex_inrow(un_tlv->value, un_tlv->len)); + emv_parse_track2(un_tlv->value, un_tlv->len, verbose); + } + } + + struct tlvdb *merch_full = tlvdb_find_full(root, 0x9f4e); + if (merch_full != NULL) { + const struct tlv *merch_tlv = tlvdb_get_tlv(merch_full); + if (merch_tlv->len) { + PrintAndLogEx(INFO, "Merchant Name and Location... " _YELLOW_("%s"), sprint_hex_inrow(merch_tlv->value, merch_tlv->len)); + } + } + tlvdb_free(root); return PM3_SUCCESS; } diff --git a/client/src/iso7816/iso7816core.c b/client/src/iso7816/iso7816core.c index 7e0dd2c7f..025d55d16 100644 --- a/client/src/iso7816/iso7816core.c +++ b/client/src/iso7816/iso7816core.c @@ -133,6 +133,11 @@ int Iso7816ExchangeEx(Iso7816CommandChannel channel, bool activate_field, bool l res = ExchangeAPDU14a(data, datalen, activate_field, leave_field_on, result, (int)max_result_len, (int *)result_len); if (res != PM3_SUCCESS) { res = exchange_14b_apdu(data, datalen, activate_field, leave_field_on, result, (int)max_result_len, (int *)result_len, 4000); + if (res == PM3_SUCCESS) { + PrintAndLogEx(INFO, "Testing ISO14443-B... ( " _GREEN_("ok") " )"); + } else { + PrintAndLogEx(INFO, "Testing ISO14443-B... ( " _RED_("fail") " )"); + } } break; } From c6c8edd95ee59fcd442ba95306029fb5ee874b6d Mon Sep 17 00:00:00 2001 From: Sam <48739810+The-SamminAter@users.noreply.github.com> Date: Tue, 10 Oct 2023 09:31:05 -0700 Subject: [PATCH 0536/1034] Create iOS-Installation-Instructions.md Signed-off-by: Sam <48739810+The-SamminAter@users.noreply.github.com> --- .../iOS-Installation-Instructions.md | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 doc/md/Installation_Instructions/iOS-Installation-Instructions.md diff --git a/doc/md/Installation_Instructions/iOS-Installation-Instructions.md b/doc/md/Installation_Instructions/iOS-Installation-Instructions.md new file mode 100644 index 000000000..27f7e7b14 --- /dev/null +++ b/doc/md/Installation_Instructions/iOS-Installation-Instructions.md @@ -0,0 +1,109 @@ +<a id="Top"></a> + +# iOS Installation Instructions + +# Table of Contents +- [iOS Installation Instructions](#ios-installation-instructions) +- [Table of Contents](#table-of-contents) +- [Install the required dependencies](#install-the-required-dependencies) + - [On Bingner bootstrap](#on-bingner-bootstrap) + - [On Procursus bootstrap](#on-procursus-bootstrap) + - [Patched SDK and additional patches](#patched-sdk-and-additional-patches) +- [Clone the Iceman repository](#clone-the-iceman-repository) +- [Compile and use the project](#compile-and-use-the-project) + - [bootrom, fullimage, and recovery](#bootrom-fullimage-and-recovery) + - [make install](#make-install) + - [usbselfserial](#usbselfserial) + +# Install the required dependencies +^[Top](#top) + +If you are using unc0ver or checkra1n, see [On Bingner bootstrap](#on-bingner-bootstrap) +Otherwise, see [On Procursus bootstrap](#on-procursus-bootstrap) +Note: compilation has not yet been attempted on Procursus' bootstrap or on rootless. Attempt at your own peril. + +## On Bingner bootstrap +^[Top](#top) + +Run this as `root`, as sudo isn't installed by default. The default password is `alpine`. +```sh +apt install git make clang odcctools gawk sudo pkg-config python3.7 libpython3.7-dev +``` +Furthermore, if you're trying to build from git instead of a release, you'll need SWIG from [The-SamminAter's repo](https://the-samminater.github.io/repo). + +## On Procursus bootstrap +^[Top](#top) + +Currently, you're on your own. Most of the packages should be named similarly, but sometimes Procursus packages up components differently than bingner. Furthermore, if you're using a rootless jailbreak and want to build from git, you'll likely have to port over SWIG yourself. + +## Patched SDK and additional patches +^[Top](#top) + +1. Git clone [theos/sdks](https://github.com/theos/sdks) and symlink or move the target version (tested with 13.7, others should work) to `/usr/share/SDKs/iPhoneOS.sdk`. +2. Delete `__IOS_PROHIBITED` from line 188 of `iPhoneOS.sdk/usr/include/stdlib.h` +3. Git clone [theos/headers](https://github.com/theos/headers) and move `headers/openssl` to `iPhoneOS.sdk/usr/include/` +4. Download the latest macOS SDK from [phracker/MacOSX-SDKs](https://github.com/phracker/MacOSX-SDKs/releases/latest) (tested with 11.3) and move `MacOSX.sdk/System/Library/Frameworks/OpenCL.framework` and `OpenGL.framework` to `iPhoneOS.sdk/System/Library/Frameworks/` + +Note: when compiling hitag2crack/crack5opencl, the following warning is to be expected: +``` +ld: warning: building for iOS, but linking in .tbd file (/usr/share/SDKs/iPhoneOS.sdk/System/Library/Frameworks//OpenCL.framework/OpenCL.tbd) built for macOS +``` + +# Clone the Iceman repository +^[Top](#top) + +```sh +git clone https://github.com/RfidResearchGroup/proxmark3.git +``` + +# Compile and use the project +^[Top](#top) + +Now you're ready to (mostly) follow the [compilation instructions](/doc/md/Use_of_Proxmark/0_Compilation-Instructions.md). + +## bootrom, fullimage, and recovery +^[Top](#top) + +Because there's no arm-none-eabi-gcc (or objcopy) for iOS, you'll have to build these components on a different operating system. The files and directories you'll need to copy over from a desktop build to iOS are `armsrc/fpga_version_info.c`, `armsrc/obj/`, `bootrom/version_pm3.c`, `bootrom/obj/`, and lastly `recovery/`. Everything else will build successfully, but `make all` and `make install` will fail without them. + +## make install +^[Top](#top) + +Because of the lack of arm-none-eabi-gcc (and objcopy), to successfully run `make all` and/or `make install` you'll have to create the following scripts as a workaround. + +`/usr/local/bin/arm-none-eabi-gcc` and `arm-none-eabi-objcopy` + +```bash +#!/bin/bash +#This exists just to trick proxmark3 into making the fullimage, bootrom, and recovery +#Don't worry about it +cc --version +echo "Arguments: $@" +``` + +With those in place, `make all` and `make install` will run flawlessly. + +## usbselfserial +^[Top](#top) + +As iOS doesn't support USB-CDC ACM, you'll need to use [usbselfserial](https://github.com/lotuspar/usbselfserial). A compiled binary can be found at [The-SamminAter's repo](https://the-samminater.github.io/repo). + +Once the proxmark is connected to your iOS device via a USB adapter, run `usbselfserial -v 0x9ac4 -p 0x4b8f --driver cdcacm -o /tmp/tty.usbmodemiceman1` (for devices other than the PM3 Easy, adjust the identifiers accordingly). If proxmark3 can't communicate with the device, try providing the port as an argument, or run `sudo killall usbmuxd`. + +Lastly, it may also be helpful to modify `pm3` as follows, to automatically select the right port: + +```bash +function get_pm3_list_macOS { + N=$1 + #PM3LIST=() + PM3LIST=(/tmp/tty.usbmodemiceman1) #<-- our addition + for DEV in $(ioreg -r -c "IOUSBHostDevice" -l | awk -F '"' ' + $2=="USB Vendor Name"{b=($4=="proxmark.org")} + b==1 && $2=="IODialinDevice"{print $4}'); do + PM3LIST+=("$DEV") + if [ ${#PM3LIST[*]} -ge "$N" ]; then + return + fi + done +} +``` From 2b2e0fc94e36e52169a2435dac03460f5981011a Mon Sep 17 00:00:00 2001 From: Sam <48739810+The-SamminAter@users.noreply.github.com> Date: Tue, 10 Oct 2023 09:35:38 -0700 Subject: [PATCH 0537/1034] Add iOS setup instructions to README.md Signed-off-by: Sam <48739810+The-SamminAter@users.noreply.github.com> --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 229a7f5f3..5fe1fc0ae 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ The Proxmark3 is the swiss-army tool of RFID, allowing for interactions with the | [macOS - Setup and Build](/doc/md/Installation_Instructions/macOS-Compile-From-Source-Instructions.md) || | [Windows - Setup and Build](/doc/md/Installation_Instructions/Windows-Installation-Instructions.md) || | [Termux / Android - Setup and Build](/doc/termux_notes.md) || +| [iOS - Setup and Build](/doc/md/Installation_Instructions/iOS-Installation-Instructions.md) | [Blue Shark Manual](/doc/bt_manual_v10.md) | [Command Cheat Sheet](/doc/cheatsheet.md)| | [Advanced Compilation Parameters](/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md) | [More Cheat Sheets](https://github.com/RfidResearchGroup/proxmark3/wiki/More-cheat-sheets)| | [Troubleshooting](/doc/md/Installation_Instructions/Troubleshooting.md) | [Complete Client Command Set](/doc/commands.md) | @@ -184,6 +185,7 @@ This repo compiles nicely on - Ubuntu, ParrotOS, Gentoo, Pentoo, Kali, NetHunter, Arch Linux, Fedora, Debian, Raspbian - Android / Termux - macOS / Homebrew (or MacPorts, experimental) / Apple Silicon M1 + - iOS (Jailbroken, rootful) - Docker container - [ Iceman repo based ubuntu 18.04 container ](https://hub.docker.com/r/secopsconsult/proxmark3) - [ Iceman fork based container v1.7 ](https://hub.docker.com/r/iceman1001/proxmark3/) From e02698059ce3cbf77f017ad3da95e6537f2551fb Mon Sep 17 00:00:00 2001 From: Sam <48739810+The-SamminAter@users.noreply.github.com> Date: Tue, 10 Oct 2023 09:38:07 -0700 Subject: [PATCH 0538/1034] Update CHANGELOG.md Signed-off-by: Sam <48739810+The-SamminAter@users.noreply.github.com> --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fc7417ff..17951e0ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added documentation for compiling on iOS (@The-SamminAter) - Fixed `hf iclass wrbl` - pagemap bit map for secured is now handled better (@iceman1001) - Changed `hf iclass view/decrypt` to detect SIO lengths better and show if legacy credentials are encrypted (@nvx) - Changed the json file formats for mfc, 14b, 15, legic, cryptorf, ndef (@iceman1001) From 8625fc3283fa611b571c32eab5b9564e70d510c8 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 10 Oct 2023 19:47:35 +0200 Subject: [PATCH 0539/1034] maur --- client/dictionaries/mfc_default_keys.dic | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 019781664..424b74647 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -2101,6 +2101,9 @@ D144BD193063 # Unknown hotel system Sec 0 / A 353038383134 # +# Brazil transport Sec 8 / A +50d4c54fcdf5 +# # Data from "the more the marriott" mifare project (colonelborkmundus) # aka The Horde # From 29712bfde6f38ab86e4df0c9c3f1b6701e3db949 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 10 Oct 2023 19:49:27 +0200 Subject: [PATCH 0540/1034] text --- client/src/cmdhf14b.c | 2 +- client/src/iso7816/iso7816core.c | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index d6b4cbfe5..a762f3525 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -1697,7 +1697,7 @@ int select_card_14443b_4(bool disconnect, iso14b_card_select_t *card) { // check result int status = resp.oldarg[0]; if (status < 0) { - PrintAndLogEx(FAILED, "No ISO14443-B Card in field"); + PrintAndLogEx(WARNING, "No ISO14443-B Card in field"); switch_off_field_14b(); return PM3_ESOFT; } diff --git a/client/src/iso7816/iso7816core.c b/client/src/iso7816/iso7816core.c index 025d55d16..c03a11956 100644 --- a/client/src/iso7816/iso7816core.c +++ b/client/src/iso7816/iso7816core.c @@ -205,14 +205,14 @@ int Iso7816Select(Iso7816CommandChannel channel, bool activate_field, bool leave uint8_t *result, size_t max_result_len, size_t *result_len, uint16_t *sw) { return Iso7816ExchangeEx(channel - , activate_field - , leave_field_on - , (sAPDU_t) {0x00, 0xa4, 0x04, 0x00, aid_len, aid} - , (channel == CC_CONTACTLESS) - , 0 - , result - , max_result_len - , result_len - , sw - ); + , activate_field + , leave_field_on + , (sAPDU_t) {0x00, 0xa4, 0x04, 0x00, aid_len, aid} + , (channel == CC_CONTACTLESS) + , 0 + , result + , max_result_len + , result_len + , sw + ); } From 82294d71f60012ca29d23e9bb1775b3f1312795e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 11 Oct 2023 12:43:58 +0200 Subject: [PATCH 0541/1034] making sure apdu logging is turned off after command execution. Still some commands when failing, hasnt been adapted to it. --- client/src/emv/cmdemv.c | 196 ++++++++++++++++++++++++++-------------- 1 file changed, 129 insertions(+), 67 deletions(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index ea101f43d..d149a381a 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -544,8 +544,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen, bool verbose // Track 3 Data // to be impl. - - + // Unpredicable Number (UN) struct tlvdb *un1_full = tlvdb_find_full(root, 0x9f37); if (un1_full != NULL) { @@ -601,7 +600,7 @@ static int CmdEMVSelect(const char *Cmd) { bool activateField = arg_get_lit(ctx, 1); bool leaveSignalON = arg_get_lit(ctx, 2); - bool APDULogging = arg_get_lit(ctx, 3); + bool show_apdu = arg_get_lit(ctx, 3); bool decodeTLV = arg_get_lit(ctx, 4); Iso7816CommandChannel channel = CC_CONTACTLESS; if (arg_get_lit(ctx, 5)) @@ -610,7 +609,7 @@ static int CmdEMVSelect(const char *Cmd) { CLIGetHexWithReturn(ctx, 6, data, &datalen); CLIParserFree(ctx); - SetAPDULogging(APDULogging); + SetAPDULogging(show_apdu); // exec uint8_t buf[APDU_RES_LEN] = {0}; @@ -627,6 +626,7 @@ static int CmdEMVSelect(const char *Cmd) { if (decodeTLV) TLVPrintFromBuffer(buf, len); + SetAPDULogging(false); return PM3_SUCCESS; } @@ -651,7 +651,7 @@ static int CmdEMVSearch(const char *Cmd) { bool activateField = arg_get_lit(ctx, 1); bool leaveSignalON = arg_get_lit(ctx, 2); - bool APDULogging = arg_get_lit(ctx, 3); + bool show_apdu = arg_get_lit(ctx, 3); bool decodeTLV = arg_get_lit(ctx, 4); Iso7816CommandChannel channel = CC_CONTACTLESS; @@ -662,13 +662,14 @@ static int CmdEMVSearch(const char *Cmd) { PrintChannel(channel); CLIParserFree(ctx); - SetAPDULogging(APDULogging); + SetAPDULogging(show_apdu); const char *al = "Applets list"; struct tlvdb *t = tlvdb_fixed(1, strlen(al), (const unsigned char *)al); if (EMVSearch(channel, activateField, leaveSignalON, decodeTLV, t, false)) { tlvdb_free(t); + SetAPDULogging(false); return PM3_ERFTRANS; } @@ -681,6 +682,7 @@ static int CmdEMVSearch(const char *Cmd) { tlvdb_free(t); + SetAPDULogging(false); return PM3_SUCCESS; } @@ -708,19 +710,23 @@ static int CmdEMVPPSE(const char *Cmd) { bool activateField = arg_get_lit(ctx, 1); bool leaveSignalON = arg_get_lit(ctx, 2); uint8_t PSENum = 2; - if (arg_get_lit(ctx, 3)) + if (arg_get_lit(ctx, 3)) { PSENum = 1; - if (arg_get_lit(ctx, 4)) + } + if (arg_get_lit(ctx, 4)) { PSENum = 2; - bool APDULogging = arg_get_lit(ctx, 5); + } + bool show_apdu = arg_get_lit(ctx, 5); bool decodeTLV = arg_get_lit(ctx, 6); + Iso7816CommandChannel channel = CC_CONTACTLESS; - if (arg_get_lit(ctx, 7)) + if (arg_get_lit(ctx, 7)) { channel = CC_CONTACT; + } PrintChannel(channel); CLIParserFree(ctx); - SetAPDULogging(APDULogging); + SetAPDULogging(show_apdu); // exec uint8_t buf[APDU_RES_LEN] = {0}; @@ -737,6 +743,7 @@ static int CmdEMVPPSE(const char *Cmd) { if (decodeTLV) TLVPrintFromBuffer(buf, len); + SetAPDULogging(false); return PM3_SUCCESS; } @@ -768,16 +775,17 @@ static int CmdEMVGPO(const char *Cmd) { bool leaveSignalON = arg_get_lit(ctx, 1); bool paramsLoadFromFile = arg_get_lit(ctx, 2); bool dataMakeFromPDOL = arg_get_lit(ctx, 3); - bool APDULogging = arg_get_lit(ctx, 4); + bool show_apdu = arg_get_lit(ctx, 4); bool decodeTLV = arg_get_lit(ctx, 5); Iso7816CommandChannel channel = CC_CONTACTLESS; - if (arg_get_lit(ctx, 6)) + if (arg_get_lit(ctx, 6)) { channel = CC_CONTACT; + } PrintChannel(channel); CLIGetHexWithReturn(ctx, 7, data, &datalen); CLIParserFree(ctx); - SetAPDULogging(APDULogging); + SetAPDULogging(show_apdu); // Init TLV tree const char *alr = "Root terminal TLV tree"; @@ -805,6 +813,7 @@ static int CmdEMVGPO(const char *Cmd) { PrintAndLogEx(ERR, "Can't create PDOL TLV."); tlvdb_free(tmp_ext); tlvdb_free(tlvRoot); + SetAPDULogging(false); return PM3_ESOFT; } } else { @@ -820,8 +829,10 @@ static int CmdEMVGPO(const char *Cmd) { PrintAndLogEx(ERR, "Can't create PDOL data."); tlvdb_free(tmp_ext); tlvdb_free(tlvRoot); - if (pdol_data_tlv != &data_tlv) + if (pdol_data_tlv != &data_tlv) { free(pdol_data_tlv); + } + SetAPDULogging(false); return PM3_ESOFT; } PrintAndLogEx(INFO, "PDOL data[%zu]: %s", pdol_data_tlv_data_len, sprint_hex(pdol_data_tlv_data, pdol_data_tlv_data_len)); @@ -847,6 +858,7 @@ static int CmdEMVGPO(const char *Cmd) { if (decodeTLV) TLVPrintFromBuffer(buf, len); + SetAPDULogging(false); return PM3_SUCCESS; } @@ -873,11 +885,12 @@ static int CmdEMVReadRecord(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, true); bool leaveSignalON = arg_get_lit(ctx, 1); - bool APDULogging = arg_get_lit(ctx, 2); + bool show_apdu = arg_get_lit(ctx, 2); bool decodeTLV = arg_get_lit(ctx, 3); Iso7816CommandChannel channel = CC_CONTACTLESS; - if (arg_get_lit(ctx, 4)) + if (arg_get_lit(ctx, 4)) { channel = CC_CONTACT; + } PrintChannel(channel); CLIGetHexWithReturn(ctx, 5, data, &datalen); CLIParserFree(ctx); @@ -887,13 +900,14 @@ static int CmdEMVReadRecord(const char *Cmd) { return PM3_EINVARG; } - SetAPDULogging(APDULogging); + SetAPDULogging(show_apdu); // exec uint8_t buf[APDU_RES_LEN] = {0}; size_t len = 0; uint16_t sw = 0; int res = EMVReadRecord(channel, leaveSignalON, data[0], data[1], buf, sizeof(buf), &len, &sw, NULL); + SetAPDULogging(false); if (sw) PrintAndLogEx(INFO, "APDU response status: %04x - %s", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); @@ -940,14 +954,17 @@ static int CmdEMVAC(const char *Cmd) { bool trTypeCDA = arg_get_lit(ctx, 2); uint8_t termDecision = 0xff; if (arg_get_str_len(ctx, 3)) { - if (!strncmp(arg_get_str(ctx, 3)->sval[0], "aac", 4)) + if (!strncmp(arg_get_str(ctx, 3)->sval[0], "aac", 4)) { termDecision = EMVAC_AAC; - if (!strncmp(arg_get_str(ctx, 3)->sval[0], "tc", 4)) + } + if (!strncmp(arg_get_str(ctx, 3)->sval[0], "tc", 4)) { termDecision = EMVAC_TC; - if (!strncmp(arg_get_str(ctx, 3)->sval[0], "arqc", 4)) + } + if (!strncmp(arg_get_str(ctx, 3)->sval[0], "arqc", 4)) { termDecision = EMVAC_ARQC; + } - if (termDecision == 0xff) { + if (termDecision == 0xFF) { PrintAndLogEx(ERR, "ERROR: can't find terminal decision '%s'", arg_get_str(ctx, 3)->sval[0]); CLIParserFree(ctx); return PM3_EINVARG; @@ -955,22 +972,25 @@ static int CmdEMVAC(const char *Cmd) { } else { termDecision = EMVAC_TC; } - if (trTypeCDA) + + if (trTypeCDA) { termDecision = termDecision | EMVAC_CDAREQ; + } bool paramsLoadFromFile = arg_get_lit(ctx, 4); bool dataMakeFromCDOL = arg_get_lit(ctx, 5); - bool APDULogging = arg_get_lit(ctx, 6); + bool show_apdu = arg_get_lit(ctx, 6); bool decodeTLV = arg_get_lit(ctx, 7); Iso7816CommandChannel channel = CC_CONTACTLESS; - if (arg_get_lit(ctx, 8)) + if (arg_get_lit(ctx, 8)) { channel = CC_CONTACT; + } PrintChannel(channel); CLIGetHexWithReturn(ctx, 9, data, &datalen); CLIParserFree(ctx); - SetAPDULogging(APDULogging); + SetAPDULogging(show_apdu); // Init TLV tree const char *alr = "Root terminal TLV tree"; @@ -999,6 +1019,7 @@ static int CmdEMVAC(const char *Cmd) { PrintAndLogEx(ERR, "Can't create CDOL TLV."); tlvdb_free(tmp_ext); tlvdb_free(tlvRoot); + SetAPDULogging(false); return PM3_ESOFT; } } else { @@ -1015,6 +1036,7 @@ static int CmdEMVAC(const char *Cmd) { size_t len = 0; uint16_t sw = 0; int res = EMVAC(channel, leaveSignalON, termDecision, (uint8_t *)cdol_data_tlv->value, cdol_data_tlv->len, buf, sizeof(buf), &len, &sw, tlvRoot); + SetAPDULogging(false); if (cdol_data_tlv != &data_tlv) free(cdol_data_tlv); @@ -1053,20 +1075,22 @@ static int CmdEMVGenerateChallenge(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, true); bool leaveSignalON = arg_get_lit(ctx, 1); - bool APDULogging = arg_get_lit(ctx, 2); + bool show_apdu = arg_get_lit(ctx, 2); Iso7816CommandChannel channel = CC_CONTACTLESS; - if (arg_get_lit(ctx, 3)) + if (arg_get_lit(ctx, 3)) { channel = CC_CONTACT; + } PrintChannel(channel); CLIParserFree(ctx); - SetAPDULogging(APDULogging); + SetAPDULogging(show_apdu); // exec uint8_t buf[APDU_RES_LEN] = {0}; size_t len = 0; uint16_t sw = 0; int res = EMVGenerateChallenge(channel, leaveSignalON, buf, sizeof(buf), &len, &sw, NULL); + SetAPDULogging(false); if (sw) PrintAndLogEx(INFO, "APDU response status: %04x - %s", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); @@ -1076,8 +1100,9 @@ static int CmdEMVGenerateChallenge(const char *Cmd) { PrintAndLogEx(SUCCESS, "Challenge: %s", sprint_hex(buf, len)); - if (len != 4 && len != 8) - PrintAndLogEx(WARNING, "Length of challenge must be 4 or 8, but it %zu", len); + if (len != 4 && len != 8) { + PrintAndLogEx(WARNING, "Length of challenge must be 4 or 8, got " _YELLOW_("%zu"), len); + } return PM3_SUCCESS; } @@ -1111,16 +1136,17 @@ static int CmdEMVInternalAuthenticate(const char *Cmd) { bool leaveSignalON = arg_get_lit(ctx, 1); bool paramsLoadFromFile = arg_get_lit(ctx, 2); bool dataMakeFromDDOL = arg_get_lit(ctx, 3); - bool APDULogging = arg_get_lit(ctx, 4); + bool show_apdu = arg_get_lit(ctx, 4); bool decodeTLV = arg_get_lit(ctx, 5); Iso7816CommandChannel channel = CC_CONTACTLESS; - if (arg_get_lit(ctx, 6)) + if (arg_get_lit(ctx, 6)) { channel = CC_CONTACT; + } PrintChannel(channel); CLIGetHexWithReturn(ctx, 7, data, &datalen); CLIParserFree(ctx); - SetAPDULogging(APDULogging); + SetAPDULogging(show_apdu); // Init TLV tree const char *alr = "Root terminal TLV tree"; @@ -1149,6 +1175,7 @@ static int CmdEMVInternalAuthenticate(const char *Cmd) { PrintAndLogEx(ERR, "Can't create DDOL TLV."); tlvdb_free(tmp_ext); tlvdb_free(tlvRoot); + SetAPDULogging(false); return PM3_ESOFT; } } else { @@ -1165,6 +1192,7 @@ static int CmdEMVInternalAuthenticate(const char *Cmd) { size_t len = 0; uint16_t sw = 0; int res = EMVInternalAuthenticate(channel, leaveSignalON, data, datalen, buf, sizeof(buf), &len, &sw, NULL); + SetAPDULogging(false); if (ddol_data_tlv != &data_tlv) free(ddol_data_tlv); @@ -1184,7 +1212,14 @@ static int CmdEMVInternalAuthenticate(const char *Cmd) { return PM3_SUCCESS; } -#define dreturn(n) {free(pdol_data_tlv); tlvdb_free(tlvSelect); tlvdb_free(tlvRoot); DropFieldEx( channel ); return n;} +#define dreturn(n) { \ + free(pdol_data_tlv); \ + tlvdb_free(tlvSelect); \ + tlvdb_free(tlvRoot); \ + DropFieldEx( channel ); \ + SetAPDULogging(false); \ + return n; \ + } static void InitTransactionParameters(struct tlvdb *tlvRoot, bool paramLoadJSON, enum TransactionType TrType, bool GenACGPO) { @@ -1327,21 +1362,24 @@ static int CmdEMVExec(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, true); bool activateField = arg_get_lit(ctx, 1); - bool showAPDU = arg_get_lit(ctx, 2); + bool show_apdu = arg_get_lit(ctx, 2); bool decodeTLV = arg_get_lit(ctx, 3); bool paramLoadJSON = arg_get_lit(ctx, 4); bool forceSearch = arg_get_lit(ctx, 5); enum TransactionType TrType = TT_MSD; - if (arg_get_lit(ctx, 7)) + if (arg_get_lit(ctx, 7)) { TrType = TT_QVSDCMCHIP; + } - if (arg_get_lit(ctx, 8)) + if (arg_get_lit(ctx, 8)) { TrType = TT_CDA; + } - if (arg_get_lit(ctx, 9)) + if (arg_get_lit(ctx, 9)) { TrType = TT_VSDC; + } bool GenACGPO = arg_get_lit(ctx, 10); @@ -1354,14 +1392,14 @@ static int CmdEMVExec(const char *Cmd) { uint8_t psenum = (channel == CC_CONTACT) ? 1 : 2; CLIParserFree(ctx); - if (!IfPm3Smartcard()) { + if (IfPm3Smartcard() == false) { if (channel == CC_CONTACT) { PrintAndLogEx(WARNING, "PM3 does not have SMARTCARD support. Exiting."); return PM3_EDEVNOTSUPP; } } - SetAPDULogging(showAPDU); + SetAPDULogging(show_apdu); uint8_t buf[APDU_RES_LEN] = {0}; size_t len = 0; @@ -1387,7 +1425,7 @@ static int CmdEMVExec(const char *Cmd) { // PPSE PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "* PPSE."); - SetAPDULogging(showAPDU); + SetAPDULogging(show_apdu); res = EMVSearchPSE(channel, activateField, true, psenum, decodeTLV, tlvSelect); // check PPSE instead of PSE and vice versa @@ -1428,7 +1466,7 @@ static int CmdEMVExec(const char *Cmd) { // Select PrintAndLogEx(INFO, "\n* Selecting AID:%s", sprint_hex_inrow(AID, AIDlen)); - SetAPDULogging(showAPDU); + SetAPDULogging(show_apdu); res = EMVSelect(channel, false, true, AID, AIDlen, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { @@ -1436,8 +1474,9 @@ static int CmdEMVExec(const char *Cmd) { dreturn(PM3_ERFTRANS); } - if (decodeTLV) + if (decodeTLV) { TLVPrintFromBuffer(buf, len); + } PrintAndLogEx(INFO, "* Selected."); PrintAndLogEx(INFO, "\n* Init transaction parameters."); @@ -1492,8 +1531,9 @@ static int CmdEMVExec(const char *Cmd) { PrintAndLogEx(INFO, "\n* Read records from AFL."); const struct tlv *AFL = tlvdb_get(tlvRoot, 0x94, NULL); - if (!AFL || !AFL->len) + if (!AFL || !AFL->len) { PrintAndLogEx(WARNING, "WARNING: AFL not found."); + } while (AFL && AFL->len) { if (AFL->len % 4) { @@ -1614,19 +1654,24 @@ static int CmdEMVExec(const char *Cmd) { TLVPrintFromTLVLev(cvr, 1); PrintAndLogEx(INFO, " IDD option id: 0x%02x", IAD->value[8]); PrintAndLogEx(INFO, " IDD: %s", sprint_hex(&IAD->value[9], 23)); + } else if (IAD->len >= IAD->value[0] + 1) { PrintAndLogEx(INFO, " Key index: 0x%02x", IAD->value[1]); PrintAndLogEx(INFO, " Crypto ver: 0x%02x(%03d)", IAD->value[2], IAD->value[2]); PrintAndLogEx(INFO, " CVR: %s", sprint_hex(&IAD->value[3], IAD->value[0] - 2)); struct tlvdb *cvr = tlvdb_fixed(0x20, IAD->value[0] - 2, &IAD->value[3]); TLVPrintFromTLVLev(cvr, 1); + if (IAD->len >= 8) { int iddLen = IAD->value[7]; PrintAndLogEx(NORMAL, " IDD length: %d", iddLen); - if (iddLen >= 1) + if (iddLen >= 1) { PrintAndLogEx(NORMAL, " IDD option id: 0x%02x", IAD->value[8]); - if (iddLen >= 2) + } + + if (iddLen >= 2) { PrintAndLogEx(NORMAL, " IDD: %s", sprint_hex(&IAD->value[9], iddLen - 1)); + } } } } else { @@ -1641,6 +1686,7 @@ static int CmdEMVExec(const char *Cmd) { // Mastercard M/CHIP if (GetCardPSVendor(AID, AIDlen) == CV_MASTERCARD && (TrType == TT_QVSDCMCHIP || TrType == TT_CDA)) { + const struct tlv *CDOL1 = tlvdb_get(tlvRoot, 0x8c, NULL); if (CDOL1 && GetCardPSVendor(AID, AIDlen) == CV_MASTERCARD) { // and m/chip transaction flag PrintAndLogEx(INFO, "\n--> Mastercard M/Chip transaction."); @@ -1651,6 +1697,7 @@ static int CmdEMVExec(const char *Cmd) { PrintAndLogEx(ERR, "Error GetChallenge. APDU error %4x", sw); dreturn(PM3_ERFTRANS); } + if (len < 4) { PrintAndLogEx(ERR, "Error GetChallenge. Wrong challenge length %zu", len); dreturn(PM3_ESOFT); @@ -1681,8 +1728,9 @@ static int CmdEMVExec(const char *Cmd) { dreturn(PM3_ERFTRANS); } - if (decodeTLV) + if (decodeTLV) { TLVPrintFromBuffer(buf, len); + } // CDA PrintAndLogEx(INFO, "\n* CDA:"); @@ -1705,7 +1753,8 @@ static int CmdEMVExec(const char *Cmd) { if (CID) { emv_tag_dump(CID, 1); PrintAndLogEx(INFO, "------------------------------"); - if (CID->len > 0) { + + if (CID->len) { switch (CID->value[0] & EMVAC_AC_MASK) { case EMVAC_AAC: PrintAndLogEx(INFO, "Transaction DECLINED."); @@ -1755,8 +1804,9 @@ static int CmdEMVExec(const char *Cmd) { .len = 3, .value = (uint8_t *)"\x9f\x6a\x04", }; - if (!UDOL) + if (!UDOL) { PrintAndLogEx(INFO, "Use default UDOL."); + } struct tlv *udol_data_tlv = dol_process(UDOL ? UDOL : &defUDOL, tlvRoot, 0x01); // 0x01 - dummy tag if (!udol_data_tlv) { @@ -1831,6 +1881,7 @@ static int CmdEMVExec(const char *Cmd) { uint8_t IDDlen = 0; // Issuer discretionary data length PrintAndLogEx(INFO, "IAD length: %zu", IAD->len); PrintAndLogEx(INFO, "VDDlen: %d", VDDlen); + if (VDDlen < IAD->len - 1) { IDDlen = IAD->value[VDDlen + 1]; } @@ -1852,9 +1903,11 @@ static int CmdEMVExec(const char *Cmd) { PrintAndLogEx(WARNING, "Wrong CVR length! CVR: %s", sprint_hex(&IAD->value[3], VDDlen - 2)); } } + if (IDDlen) { PrintAndLogEx(INFO, "IDD: %s", sprint_hex(&IAD->value[VDDlen + 1], IDDlen)); } + } else { PrintAndLogEx(WARNING, "Issuer Application Data (IAD) not found."); } @@ -1928,6 +1981,7 @@ static int CmdEMVExec(const char *Cmd) { tlvdb_free(tlvRoot); PrintAndLogEx(SUCCESS, "\n* Transaction completed."); + SetAPDULogging(false); return PM3_SUCCESS; } @@ -1958,25 +2012,29 @@ static int CmdEMVScan(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool showAPDU = arg_get_lit(ctx, 1); + bool show_apdu = arg_get_lit(ctx, 1); bool decodeTLV = arg_get_lit(ctx, 2); bool extractTLVElements = arg_get_lit(ctx, 3); bool paramLoadJSON = arg_get_lit(ctx, 4); enum TransactionType TrType = TT_MSD; - if (arg_get_lit(ctx, 6)) + if (arg_get_lit(ctx, 6)){ TrType = TT_QVSDCMCHIP; - if (arg_get_lit(ctx, 7)) + } + if (arg_get_lit(ctx, 7)) { TrType = TT_CDA; - if (arg_get_lit(ctx, 8)) + } + if (arg_get_lit(ctx, 8)) { TrType = TT_VSDC; + } bool GenACGPO = arg_get_lit(ctx, 9); bool MergeJSON = arg_get_lit(ctx, 10); Iso7816CommandChannel channel = CC_CONTACTLESS; - if (arg_get_lit(ctx, 11)) + if (arg_get_lit(ctx, 11)) { channel = CC_CONTACT; + } PrintChannel(channel); @@ -1988,15 +2046,13 @@ static int CmdEMVScan(const char *Cmd) { CLIParserFree(ctx); - if (!IfPm3Smartcard()) { + if (IfPm3Smartcard() == false) { if (channel == CC_CONTACT) { PrintAndLogEx(WARNING, "PM3 does not have SMARTCARD support, exiting"); return PM3_EDEVNOTSUPP; } } - SetAPDULogging(showAPDU); - uint8_t AID[APDU_AID_LEN] = {0}; size_t AIDlen = 0; uint8_t buf[APDU_RES_LEN] = {0}; @@ -2026,6 +2082,8 @@ static int CmdEMVScan(const char *Cmd) { root = json_object(); } + SetAPDULogging(show_apdu); + // drop field at start DropFieldEx(channel); @@ -2103,7 +2161,7 @@ static int CmdEMVScan(const char *Cmd) { } // EMV SELECT application - SetAPDULogging(showAPDU); + SetAPDULogging(show_apdu); EMVSelectApplication(tlvSelect, AID, &AIDlen); tlvdb_free(tlvSelect); @@ -2123,7 +2181,7 @@ static int CmdEMVScan(const char *Cmd) { // EMV SELECT applet PrintAndLogEx(INFO, "Selecting AID: " _GREEN_("%s"), sprint_hex_inrow(AID, AIDlen)); - SetAPDULogging(showAPDU); + SetAPDULogging(show_apdu); res = EMVSelect(channel, false, true, AID, AIDlen, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { @@ -2214,10 +2272,12 @@ static int CmdEMVScan(const char *Cmd) { sfijson = json_path_get(root, "$.Application.Records"); } + if (!json_is_array(sfijson)) { PrintAndLogEx(ERR, "Internal logic error. `$.Application.Records` is not an array."); break; } + for (int i = 0; i < AFL->len / 4; i++) { uint8_t SFI = AFL->value[i * 4 + 0] >> 3; uint8_t SFIstart = AFL->value[i * 4 + 1]; @@ -2273,11 +2333,11 @@ static int CmdEMVScan(const char *Cmd) { JsonSaveHex(jsonelm, "Offline", SFIoffline, 1); struct tlvdb *rsfi = tlvdb_parse_multi(buf, len); - if (extractTLVElements) + if (extractTLVElements) { JsonSaveTLVTree(root, jsonelm, "$.Data", rsfi); - else + } else { JsonSaveTLVTreeElm(jsonelm, "$.Data", rsfi, true, true, false); - + } tlvdb_free(rsfi); } } @@ -2303,7 +2363,7 @@ static int CmdEMVScan(const char *Cmd) { tlvdb_free(tlvRoot); DropFieldEx(channel); - + SetAPDULogging(false); if (MergeJSON == false) { // create unique new name @@ -2386,7 +2446,7 @@ static int CmdEMVRoca(const char *Cmd) { CLIParserFree(ctx); PrintChannel(channel); - if (!IfPm3Smartcard()) { + if (IfPm3Smartcard() == false) { if (channel == CC_CONTACT) { PrintAndLogEx(WARNING, "PM3 does not have SMARTCARD support, exiting"); return PM3_EDEVNOTSUPP; @@ -2425,6 +2485,7 @@ static int CmdEMVRoca(const char *Cmd) { PrintAndLogEx(ERR, "Can't found any of EMV AID, exiting"); tlvdb_free(tlvSelect); DropFieldEx(channel); + SetAPDULogging(false); return PM3_ERFTRANS; } @@ -2620,6 +2681,7 @@ static int CmdEMVRoca(const char *Cmd) { } out: + SetAPDULogging(false); tlvdb_free(tlvRoot); DropFieldEx(channel); return ret; @@ -2715,7 +2777,6 @@ static int CmdEMVReader(const char *Cmd) { uint8_t log_file_records = 31; struct tlvdb *tlogDB = NULL; - // try getting the LOG TEMPLATE. bool log_found = false; bool log_template_found = false; @@ -2807,8 +2868,9 @@ static int CmdEMVReader(const char *Cmd) { continue; } - if (sw == 0x6A83) + if (sw == 0x6A83) { break; + } PrintAndLogEx(INFO, ""); PrintAndLogEx(INFO, "Transaction log # " _YELLOW_("%u"), i); From 161638a76bb4fb42d08d785213dfd0bb0a7ccb96 Mon Sep 17 00:00:00 2001 From: Antiklesys <syselkitna@gmail.com> Date: Thu, 12 Oct 2023 13:58:09 +0800 Subject: [PATCH 0542/1034] Fixed command to be online only As all the commands require cardhelper it is not possible to run this command without being in online mode. --- doc/commands.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/commands.json b/doc/commands.json index e38b0ae40..08d0007e2 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3018,7 +3018,7 @@ "hf iclass configcard --ci 1 -> view config card setting in slot 1", "hf iclass configcard -g --ci 0 -> generate config file from slot 0" ], - "offline": true, + "offline": false, "options": [ "-h, --help This help", "--ci <dec> use config slot at index", From 3a1a09ef634d86d5c98ec0d684353db35aaa23e7 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 12 Oct 2023 09:37:44 +0200 Subject: [PATCH 0543/1034] adapt to be online mode only --- client/src/cmdhficlass.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 0583c714f..635b1bfaa 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -4450,7 +4450,7 @@ static command_t CommandTable[] = { {"esetblk", CmdHFiClassESetBlk, IfPm3Iclass, "Set emulator memory block data"}, {"eview", CmdHFiClassEView, IfPm3Iclass, "View emulator memory"}, {"-----------", CmdHelp, AlwaysAvailable, "---------------------- " _CYAN_("utils") " ----------------------"}, - {"configcard", CmdHFiClassConfigCard, AlwaysAvailable, "Reader configuration card"}, + {"configcard", CmdHFiClassConfigCard, IfPm3Smartcard, "Reader configuration card"}, {"calcnewkey", CmdHFiClassCalcNewKey, AlwaysAvailable, "Calc diversified keys (blocks 3 & 4) to write new keys"}, {"encode", CmdHFiClassEncode, AlwaysAvailable, "Encode binary wiegand to block 7"}, {"encrypt", CmdHFiClassEncryptBlk, AlwaysAvailable, "Encrypt given block data"}, From ef348a2aa01d2845a664fa14a7d985bb8a56ef1b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 12 Oct 2023 14:51:18 +0200 Subject: [PATCH 0544/1034] adapt a bit --- armsrc/Standalone/hf_msdsal.c | 84 +++++++++++++++++++++------- armsrc/Standalone/hf_reblay.c | 100 +++++++++++++++++++--------------- 2 files changed, 119 insertions(+), 65 deletions(-) diff --git a/armsrc/Standalone/hf_msdsal.c b/armsrc/Standalone/hf_msdsal.c index 18729cdc0..b382a9fc3 100644 --- a/armsrc/Standalone/hf_msdsal.c +++ b/armsrc/Standalone/hf_msdsal.c @@ -28,6 +28,7 @@ #include "iso14443a.h" #include "protocols.h" #include "cmd.h" +#include "commonutil.h" void ModInfo(void) { DbpString(" HF - Reading VISA cards & Emulating a VISA MSD Transaction(ISO14443) - (Salvador Mendoza)"); @@ -152,10 +153,32 @@ void RunMod(void) { 0x59, 0x2e, 0x53, 0x59, 0x53, 0x2e, 0x44, 0x44, 0x46, 0x30, 0x31, 0x00 }; - uint8_t visa[13] = { - 0x00, 0xA4, 0x04, 0x00, 0x07, 0xa0, 0x00, 0x00, - 0x00, 0x03, 0x10, 0x10, 0x00 + + uint8_t visa[] = { 0x00, 0xA4, 0x04, 0x00, 0x07, 0xa0, 0x00, 0x00, 0x00, 0x03, 0x10, 0x10, 0x00 }; + + + /* + uint8_t select_aid_hdr[5] = { 0x00, 0xA4, 0x04, 0x00, 0x00 }; + static const char* aid_list [] = { + "A00000000305076010", // VISA ELO Credit + "A0000000031010", // VISA Debit/Credit (Classic) + "A000000003101001", // VISA Credit + "A000000003101002", // VISA Debit + "A0000000032010", // VISA Electron + "A0000000032020", // VISA + "A0000000033010", // VISA Interlink + "A0000000034010", // VISA Specific + "A0000000035010", // VISA Specific + "A0000000036010", // Domestic Visa Cash Stored Value + "A0000000036020", // International Visa Cash Stored Value + "A0000000038002", // VISA Auth, VisaRemAuthen EMV-CAP (DPA) + "A0000000038010", // VISA Plus + "A0000000039010", // VISA Loyalty + "A000000003999910", // VISA Proprietary ATM + "A000000098", // Visa USA Debit Card + "A0000000980848", // Visa USA Debit Cardv }; + */ uint8_t processing [8] = {0x80, 0xA8, 0x00, 0x00, 0x02, 0x83, 0x00, 0x00}; uint8_t sfi[5] = {0x00, 0xb2, 0x01, 0x0c, 0x00}; @@ -169,11 +192,16 @@ void RunMod(void) { // - MSD token card format - // - //Card number: 4412 3456 0578 1234 - //Expiration date: 17/11 - //Service code: 201 - //Discretionary data: 0000030000991 - //char token[19] = {0x44,0x12,0x34,0x56,0x05,0x78,0x12,0x34,0xd1,0x71,0x12,0x01,0x00,0x00,0x03,0x00,0x00,0x99,0x1f}; + // Card number.............. 4412 3456 0578 1234 + // Expiration date.......... 17/11 + // Service code............. 201 + // Discretionary data....... 0000030000991 + // Pin verification value... 0000 + // CVV / iCvv............... 030 + // Trailing................. 000991 + + // 44 12 34 56 05 78 12 34 D 1711 2 01 00 00 03 00 00 99 1 + // char token[19] = {0x44,0x12,0x34,0x56,0x05,0x78,0x12,0x34,0xd1,0x71,0x12,0x01,0x00,0x00,0x03,0x00,0x00,0x99,0x1f}; // // It is possible to initialize directly the emulation mode, having "token" with data and set "chktoken" = true ;) // @@ -185,7 +213,7 @@ void RunMod(void) { // in case there is a read command received we shouldn't break uint8_t data[PM3_CMD_DATA_SIZE] = {0x00}; - uint8_t visauid[7] = {0x04, 0x02, 0x03, 0x04}; + uint8_t visauid[7] = {0xE9, 0x66, 0x5D, 0x20}; memcpy(data, visauid, 4); // to initialize the emulation @@ -275,6 +303,10 @@ void RunMod(void) { chktoken = false; LED_C_OFF(); LED_B_ON(); + + // add loop visa + // for (int i = 0; i < ARRAYLEN(AIDlist); i ++) { +// hexstr_to_byte_array("a0da02631a440a44000000a012ad10a00e800200048108", sam_apdu, &sam_len); uint8_t apdulen = iso14_apdu(apdus[i], (uint16_t) apduslen[i], false, apdubuffer, NULL); if (apdulen > 0) { @@ -289,8 +321,10 @@ void RunMod(void) { // check for PDOL if (apdubuffer[u] == 0x9F && apdubuffer[u + 1] == 0x38) { - for (uint8_t e = 0; e <= apdubuffer[u + 2]; e++) + + for (uint8_t e = 0; e <= apdubuffer[u + 2]; e++) { pdol[e] = apdubuffer[u + e + 2]; + } // generate a challenge plen = treatPDOL(pdol); @@ -425,12 +459,16 @@ void RunMod(void) { // depending on card reader commands, the Proxmark will answer to fool the reader // respond with PPSE if (receivedCmd[2] == 0xA4 && receivedCmd[6] == 0x32 && prevCmd == 0) { + // need to adapt lengths.. uint8_t ppsea[39] = { + // 0x23 = 35, skip two first bytes then the message - SW 2 is 35 = 0x23 0x6F, 0x23, 0x84, 0x0E, 0x32, 0x50, 0x41, 0x59, 0x2E, 0x53, 0x59, 0x53, 0x2E, 0x44, 0x44, 0x46, 0x30, 0x31, 0xA5, 0x11, 0xBF, 0x0C, 0x0E, 0x61, - 0x0C, 0x4F, 0x07, 0xA0, 0x00, 0x00, 0x00, 0x03, - 0x10, 0x10, 0x87, 0x01, 0x01, 0x90, 0x00 + 0x0C, 0x4F, + // len aid0 aid1 aid2... + 0x07, 0xA0, 0x00, 0x00, 0x00, 0x03, 0x10, 0x10, + 0x87, 0x01, 0x01, 0x90, 0x00 }; memcpy(&dynamic_response_info.response[1], ppsea, sizeof(ppsea)); dynamic_response_info.response_n = sizeof(ppsea) + 1; @@ -439,10 +477,14 @@ void RunMod(void) { // respond Visa AID } else if (receivedCmd[2] == 0xA4 && receivedCmd[10] == 0x03 && receivedCmd[11] == 0x10 && prevCmd == 1) { uint8_t visauid_long[34] = { - 0x6F, 0x1E, 0x84, 0x07, 0xA0, 0x00, 0x00, 0x00, - 0x03, 0x10, 0x10, 0xA5, 0x13, 0x50, 0x0B, 0x56, - 0x49, 0x53, 0x41, 0x20, 0x43, 0x52, 0x45, 0x44, - 0x49, 0x54, 0x9F, 0x38, 0x03, 0x9F, 0x66, 0x02, + // 0x1E = 30, skip two first bytes then the message - SW 2 is 30 = 0x1E + 0x6F, 0x1E, 0x84, + // len aid0 aid1 aid2.... + 0x07, 0xA0, 0x00, 0x00, 0x00, 0x03, 0x10, 0x10, + 0xA5, 0x13, 0x50, + // len V I S A C R E D I T + 0x0B, 0x56, 0x49, 0x53, 0x41, 0x20, 0x43, 0x52, 0x45, 0x44, 0x49, 0x54, + 0x9F, 0x38, 0x03, 0x9F, 0x66, 0x02, 0x90, 0x00 }; memcpy(&dynamic_response_info.response[1], visauid_long, sizeof(visauid_long)); @@ -461,16 +503,18 @@ void RunMod(void) { uint8_t card[25] = { 0x70, 0x15, 0x57, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, - 0x00 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x90, 0x00 }; + // add token array == Track 2 found before memcpy(&card[4], token, sizeof(token)); + memcpy(&dynamic_response_info.response[1], card, sizeof(card)); dynamic_response_info.response_n = sizeof(card) + 1; prevCmd++; } else { - uint8_t finished[2] = {0x6f, 0x00}; + uint8_t finished[2] = {0x6F, 0x00}; memcpy(&dynamic_response_info.response[1], finished, sizeof(finished)); dynamic_response_info.response_n = sizeof(finished) + 1; if (prevCmd == 5) { @@ -509,8 +553,8 @@ void RunMod(void) { EmSendPrecompiledCmd(p_response); } } - switch_off(); + switch_off(); set_tracing(false); BigBuf_free_keep_EM(); reply_ng(CMD_HF_MIFARE_SIMULATE, retval, NULL, 0); diff --git a/armsrc/Standalone/hf_reblay.c b/armsrc/Standalone/hf_reblay.c index cf290fa31..497d215a3 100644 --- a/armsrc/Standalone/hf_reblay.c +++ b/armsrc/Standalone/hf_reblay.c @@ -73,29 +73,25 @@ void ModInfo(void) { void RunMod() { StandAloneMode(); - Dbprintf(_YELLOW_(">>") "Relaying ISO/14443A data over Bluetooth a.k.a. reblay Started<<"); + DbpString(""); + Dbprintf(_YELLOW_(">>> ") " Relaying ISO/14443A data over Bluetooth a.k.a. reblay Started " _YELLOW_("<<<")); + DbpString(""); FpgaDownloadAndGo(FPGA_BITSTREAM_HF); -// Allocate 512 bytes for the dynamic modulation, created when the reader queries for it -// Such a response is less time critical, so we can prepare them on the fly -#define DYNAMIC_RESPONSE_BUFFER_SIZE 512 -#define DYNAMIC_MODULATION_BUFFER_SIZE 1024 - uint8_t flags = FLAG_4B_UID_IN_DATA; //UID 4 bytes(could be 7 bytes if needed it) - uint8_t data[PM3_CMD_DATA_SIZE] = {0x00}; // in case there is a read command received we shouldn't break - uint8_t visauid[7] = {0x01, 0x02, 0x03, 0x04}; + // UID 4 bytes(could be 7 bytes if needed it) + uint8_t flags = FLAG_4B_UID_IN_DATA; + // in case there is a read command received we shouldn't break + uint8_t data[PM3_CMD_DATA_SIZE] = {0x00}; + + uint8_t visauid[7] = {0xE9, 0x66, 0x5D, 0x20}; memcpy(data, visauid, 4); // to initialize the emulation - uint8_t tagType = 4; // 4 = ISO/IEC 14443-4 - javacard (JCOP) tag_response_info_t *responses; uint32_t cuid = 0; - uint32_t counters[3] = { 0x00, 0x00, 0x00 }; - uint8_t tearings[3] = { 0xbd, 0xbd, 0xbd }; - uint8_t pages = 0; - // For received Bluetooth package uint8_t rpacket[MAX_FRAME_SIZE] = { 0x00 }; @@ -126,6 +122,12 @@ void RunMod() { uint8_t receivedCmd[MAX_FRAME_SIZE] = { 0x00 }; uint8_t receivedCmdPar[MAX_PARITY_SIZE] = { 0x00 }; + +// Allocate 512 bytes for the dynamic modulation, created when the reader queries for it +// Such a response is less time critical, so we can prepare them on the fly +#define DYNAMIC_RESPONSE_BUFFER_SIZE 512 +#define DYNAMIC_MODULATION_BUFFER_SIZE 1024 + uint8_t dynamic_response_buffer[DYNAMIC_RESPONSE_BUFFER_SIZE] = {0}; uint8_t dynamic_modulation_buffer[DYNAMIC_MODULATION_BUFFER_SIZE] = {0}; @@ -143,9 +145,9 @@ void RunMod() { uint8_t state = STATE_READ; if (state == STATE_READ) { - DbpString(_YELLOW_("[ ") "In reading mode" _YELLOW_(" ]")); + DbpString("Initialized [ " _YELLOW_("reading mode") " ]"); } else { - DbpString(_YELLOW_("[ ") "In emulation mode" _YELLOW_(" ]")); + DbpString("Initialized [ " _BLUE_("emulation mode") " ]"); } for (;;) { @@ -162,10 +164,10 @@ void RunMod() { else if (button_pressed == BUTTON_SINGLE_CLICK) { // Pressing one time change between reading & emulation if (state == STATE_READ) { state = STATE_EMU; - DbpString(_YELLOW_("[ ") "In emulation mode" _YELLOW_(" ]")); + DbpString("[ " _BLUE_("Emulation mode") " ]"); } else { state = STATE_READ; - DbpString(_YELLOW_("[ ") "In reading mode" _YELLOW_(" ]")); + DbpString("[ " _YELLOW_("Reading mode") " ]"); } } @@ -178,6 +180,7 @@ void RunMod() { iso14443a_setup(FPGA_HF_ISO14443A_READER_MOD); if (iso14443a_select_card(NULL, &card_a_info, NULL, true, 0, false)) { + LED_B_ON(); // Get data to send a ping with UID + ATQA + SAK @@ -208,7 +211,9 @@ void RunMod() { Dbhexdump(uidlen + 4, rdata, false); DbpString(_YELLOW_("[ ") "Sending ping" _YELLOW_(" ]")); + if (usart_writebuffer_sync(rdata, uidlen + 4) == PM3_SUCCESS) { + DbpString(_YELLOW_("[ ") "Sent!" _YELLOW_(" ]")); for (;;) { @@ -261,26 +266,31 @@ void RunMod() { // free eventually allocated BigBuf memory but keep Emulator Memory BigBuf_free_keep_EM(); - if (SimulateIso14443aInit(tagType, flags, data, &responses, &cuid, counters, tearings, &pages) == false) { + // 4 = ISO/IEC 14443-4 - javacard (JCOP) + if (SimulateIso14443aInit(4, flags, data, &responses, &cuid, NULL, NULL, NULL) == false) { BigBuf_free_keep_EM(); reply_ng(CMD_HF_MIFARE_SIMULATE, PM3_EINIT, NULL, 0); - DbpString(_YELLOW_("!!") "Error initializing the emulation process!"); + DbpString(_RED_("Error initializing the emulation process!")); SpinDelay(500); state = STATE_READ; - DbpString(_YELLOW_("[ ") "Initialized reading mode" _YELLOW_(" ]")); + DbpString("Initialized [ "_YELLOW_("reading mode") " ]"); continue; } // We need to listen to the high-frequency, peak-detected path. iso14443a_setup(FPGA_HF_ISO14443A_TAGSIM_LISTEN); - int len = 0; // Command length - int retval = PM3_SUCCESS; // Check emulation status + // Command length + int len = 0; + // Check emulation status + int retval = PM3_SUCCESS; - uint8_t resp = 0; // Bluetooth response + // Bluetooth response + uint8_t resp = 0; lenpacket = 0; - uint8_t prevcmd = 0x00; // Keep track of last terminal type command + // Keep track of last terminal type command + uint8_t prevcmd = 0x00; clear_trace(); set_tracing(true); @@ -288,11 +298,12 @@ void RunMod() { for (;;) { LED_B_OFF(); // Clean receive command buffer - if (!GetIso14443aCommandFromReader(receivedCmd, receivedCmdPar, &len)) { - DbpString(_YELLOW_("!!") "Emulator stopped"); + if (GetIso14443aCommandFromReader(receivedCmd, receivedCmdPar, &len) == false) { + DbpString("Emulator stopped"); retval = PM3_EOPABORTED; break; } + tag_response_info_t *p_response = NULL; LED_B_ON(); @@ -314,46 +325,42 @@ void RunMod() { } } if (receivedCmd[0] == ISO14443A_CMD_REQA && len == 1) { // Received a REQUEST -// DbpString(_YELLOW_("+") "REQUEST Received"); p_response = &responses[RESP_INDEX_ATQA]; } else if (receivedCmd[0] == ISO14443A_CMD_HALT && len == 4) { // Received a HALT -// DbpString(_YELLOW_("+") "Received a HALT"); p_response = NULL; resp = 0; } else if (receivedCmd[0] == ISO14443A_CMD_WUPA && len == 1) { // Received a WAKEUP -// DbpString(_YELLOW_("+") "WAKEUP Received"); p_response = &responses[RESP_INDEX_ATQA]; resp = 0; } else if (receivedCmd[1] == 0x20 && receivedCmd[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT && len == 2) { // Received request for UID (cascade 1) -// DbpString(_YELLOW_("+") "Request for UID C1"); p_response = &responses[RESP_INDEX_UIDC1]; } else if (receivedCmd[1] == 0x70 && receivedCmd[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT && len == 9) { // Received a SELECT (cascade 1) -// DbpString(_YELLOW_("+") "Request for SELECT S1"); p_response = &responses[RESP_INDEX_SAKC1]; } else if (receivedCmd[0] == ISO14443A_CMD_RATS && len == 4) { // Received a RATS request -// DbpString(_YELLOW_("+") "Request for RATS"); p_response = &responses[RESP_INDEX_RATS]; resp = 1; } else if (receivedCmd[0] == 0xf2 && len == 4) { // ACKed - Time extension - DbpString(_YELLOW_("!!") "Reader accepted time extension!"); + DbpString(_YELLOW_("!!") " Reader accepted time extension!"); p_response = NULL; } else if ((receivedCmd[0] == 0xb2 || receivedCmd[0] == 0xb3) && len == 3) { //NACK - Request more time WTX - DbpString(_YELLOW_("!!") "NACK - time extension request?"); + DbpString(_YELLOW_("!!") " NACK - time extension request?"); if (resp == 2 && lenpacket == 0) { - DbpString(_YELLOW_("!!") "Requesting more time - WTX"); + DbpString(_YELLOW_("!!") " Requesting more time - WTX"); dynamic_response_info.response_n = 2; dynamic_response_info.response[0] = 0xf2; dynamic_response_info.response[1] = 0x0b; // Requesting the maximum amount of time } else if (lenpacket == 0) { - DbpString(_YELLOW_("!!") "NACK - ACK - Resend last command!"); // To burn some time as well + DbpString(_YELLOW_("!!") " NACK - ACK - Resend last command!"); // To burn some time as well dynamic_response_info.response[0] = 0xa3; dynamic_response_info.response_n = 1; } else { - DbpString(_YELLOW_("!!") "Avoiding request - Bluetooth data already in memory!!"); + DbpString(_YELLOW_("!!") " Avoiding request - Bluetooth data already in memory!!"); } } else { - DbpString(_GREEN_("[ ") "Card reader command" _GREEN_(" ]")); - Dbhexdump(len - 2, &receivedCmd[1], false); + if (g_dbglevel == DBG_DEBUG ) { + DbpString("[ "_YELLOW_("Card reader command") " ]"); + Dbhexdump(len - 2, &receivedCmd[1], false); + } if ((receivedCmd[0] == 0x02 || receivedCmd[0] == 0x03) && len > 3) { // Process reader commands @@ -379,16 +386,17 @@ void RunMod() { } else { if (lenpacket == 0) { - DbpString(_YELLOW_("!!") "Received unknown command!"); + DbpString(_RED_("Received unknown command!")); memcpy(dynamic_response_info.response, receivedCmd, len); dynamic_response_info.response_n = len; } else { - DbpString(_YELLOW_("!!") "Avoiding unknown command - Bluetooth data already in memory!!"); + DbpString(_YELLOW_("!!") " Avoiding unknown command - Bluetooth data already in memory !!"); } } } + if (dynamic_response_info.response_n > 0) { - DbpString(_GREEN_("[ ") "Proxmark3 answer" _GREEN_(" ]")); + DbpString("[ " _GREEN_("Proxmark3 answer") " ]"); Dbhexdump(dynamic_response_info.response_n, dynamic_response_info.response, false); DbpString("----"); if (lenpacket > 0) { @@ -402,7 +410,7 @@ void RunMod() { if (prepare_tag_modulation(&dynamic_response_info, DYNAMIC_MODULATION_BUFFER_SIZE) == false) { Dbprintf(_YELLOW_("[ ") "Buffer size: %d "_YELLOW_(" ]"), dynamic_response_info.response_n); SpinDelay(500); - DbpString(_YELLOW_("!!") "Error preparing Proxmark to answer!"); + DbpString(_RED_("Error preparing Proxmark to answer!")); continue; } p_response = &dynamic_response_info; @@ -412,13 +420,15 @@ void RunMod() { EmSendPrecompiledCmd(p_response); } } - switch_off(); + switch_off(); set_tracing(false); BigBuf_free_keep_EM(); reply_ng(CMD_HF_MIFARE_SIMULATE, retval, NULL, 0); } } - DbpString(_YELLOW_("[=]") "exiting"); + DbpString("Exit standalone mode!"); + DbpString(""); + SpinErr(15, 200, 3); LEDsoff(); } From 0ff41fa652438a4911503a3c5518c614705d7fbc Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 12 Oct 2023 14:53:26 +0200 Subject: [PATCH 0545/1034] style --- armsrc/Standalone/hf_msdsal.c | 32 ++++++++++++++++---------------- armsrc/Standalone/hf_reblay.c | 6 +++--- armsrc/iso14443a.c | 8 ++++---- client/src/cmdhficlass.c | 2 +- client/src/emv/cmdemv.c | 6 +++--- client/src/iso7816/iso7816core.c | 20 ++++++++++---------- client/src/pm3line_vocabulary.h | 2 +- doc/commands.json | 2 +- doc/commands.md | 2 +- include/protocols.h | 2 +- 10 files changed, 41 insertions(+), 41 deletions(-) diff --git a/armsrc/Standalone/hf_msdsal.c b/armsrc/Standalone/hf_msdsal.c index b382a9fc3..b58c36856 100644 --- a/armsrc/Standalone/hf_msdsal.c +++ b/armsrc/Standalone/hf_msdsal.c @@ -304,15 +304,15 @@ void RunMod(void) { LED_C_OFF(); LED_B_ON(); - // add loop visa - // for (int i = 0; i < ARRAYLEN(AIDlist); i ++) { + // add loop visa + // for (int i = 0; i < ARRAYLEN(AIDlist); i ++) { // hexstr_to_byte_array("a0da02631a440a44000000a012ad10a00e800200048108", sam_apdu, &sam_len); uint8_t apdulen = iso14_apdu(apdus[i], (uint16_t) apduslen[i], false, apdubuffer, NULL); if (apdulen > 0) { DbpString("[ " _YELLOW_("Proxmark command") " ]"); Dbhexdump(apduslen[i], apdus[i], false); - DbpString("[ " _GREEN_( "Card answer") " ]"); + DbpString("[ " _GREEN_("Card answer") " ]"); Dbhexdump(apdulen - 2, apdubuffer, false); DbpString("-------------------------------"); @@ -447,7 +447,7 @@ void RunMod(void) { p_response = &responses[RESP_INDEX_RATS]; } else { - if (g_dbglevel == DBG_DEBUG ) { + if (g_dbglevel == DBG_DEBUG) { DbpString("[ "_YELLOW_("Card reader command") " ]"); Dbhexdump(len, receivedCmd, false); } @@ -459,14 +459,14 @@ void RunMod(void) { // depending on card reader commands, the Proxmark will answer to fool the reader // respond with PPSE if (receivedCmd[2] == 0xA4 && receivedCmd[6] == 0x32 && prevCmd == 0) { - // need to adapt lengths.. + // need to adapt lengths.. uint8_t ppsea[39] = { - // 0x23 = 35, skip two first bytes then the message - SW 2 is 35 = 0x23 + // 0x23 = 35, skip two first bytes then the message - SW 2 is 35 = 0x23 0x6F, 0x23, 0x84, 0x0E, 0x32, 0x50, 0x41, 0x59, 0x2E, 0x53, 0x59, 0x53, 0x2E, 0x44, 0x44, 0x46, 0x30, 0x31, 0xA5, 0x11, 0xBF, 0x0C, 0x0E, 0x61, - 0x0C, 0x4F, - // len aid0 aid1 aid2... + 0x0C, 0x4F, + // len aid0 aid1 aid2... 0x07, 0xA0, 0x00, 0x00, 0x00, 0x03, 0x10, 0x10, 0x87, 0x01, 0x01, 0x90, 0x00 }; @@ -477,13 +477,13 @@ void RunMod(void) { // respond Visa AID } else if (receivedCmd[2] == 0xA4 && receivedCmd[10] == 0x03 && receivedCmd[11] == 0x10 && prevCmd == 1) { uint8_t visauid_long[34] = { - // 0x1E = 30, skip two first bytes then the message - SW 2 is 30 = 0x1E - 0x6F, 0x1E, 0x84, - // len aid0 aid1 aid2.... - 0x07, 0xA0, 0x00, 0x00, 0x00, 0x03, 0x10, 0x10, - 0xA5, 0x13, 0x50, - // len V I S A C R E D I T - 0x0B, 0x56, 0x49, 0x53, 0x41, 0x20, 0x43, 0x52, 0x45, 0x44, 0x49, 0x54, + // 0x1E = 30, skip two first bytes then the message - SW 2 is 30 = 0x1E + 0x6F, 0x1E, 0x84, + // len aid0 aid1 aid2.... + 0x07, 0xA0, 0x00, 0x00, 0x00, 0x03, 0x10, 0x10, + 0xA5, 0x13, 0x50, + // len V I S A C R E D I T + 0x0B, 0x56, 0x49, 0x53, 0x41, 0x20, 0x43, 0x52, 0x45, 0x44, 0x49, 0x54, 0x9F, 0x38, 0x03, 0x9F, 0x66, 0x02, 0x90, 0x00 }; @@ -503,7 +503,7 @@ void RunMod(void) { uint8_t card[25] = { 0x70, 0x15, 0x57, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00 }; // add token array == Track 2 found before diff --git a/armsrc/Standalone/hf_reblay.c b/armsrc/Standalone/hf_reblay.c index 497d215a3..62fea749e 100644 --- a/armsrc/Standalone/hf_reblay.c +++ b/armsrc/Standalone/hf_reblay.c @@ -73,7 +73,7 @@ void ModInfo(void) { void RunMod() { StandAloneMode(); - DbpString(""); + DbpString(""); Dbprintf(_YELLOW_(">>> ") " Relaying ISO/14443A data over Bluetooth a.k.a. reblay Started " _YELLOW_("<<<")); DbpString(""); FpgaDownloadAndGo(FPGA_BITSTREAM_HF); @@ -286,7 +286,7 @@ void RunMod() { int retval = PM3_SUCCESS; // Bluetooth response - uint8_t resp = 0; + uint8_t resp = 0; lenpacket = 0; // Keep track of last terminal type command @@ -357,7 +357,7 @@ void RunMod() { DbpString(_YELLOW_("!!") " Avoiding request - Bluetooth data already in memory!!"); } } else { - if (g_dbglevel == DBG_DEBUG ) { + if (g_dbglevel == DBG_DEBUG) { DbpString("[ "_YELLOW_("Card reader command") " ]"); Dbhexdump(len - 2, &receivedCmd[1], false); } diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index d1b63264e..9de1e9a31 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1021,7 +1021,7 @@ bool prepare_allocated_tag_modulation(tag_response_info_t *response_info, uint8_ } } -bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_response_info_t **responses, +bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_response_info_t **responses, uint32_t *cuid, uint32_t counters[3], uint8_t tearings[3], uint8_t *pages) { uint8_t sak = 0; // The first response contains the ATQA (note: bytes are transmitted in reverse order). @@ -1042,7 +1042,7 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r // Format byte = 0x58: FSCI=0x08 (FSC=256), TA(1) and TC(1) present, // TA(1) = 0x80: different divisors not supported, DR = 1, DS = 1 // TB(1) = not present. Defaults: FWI = 4 (FWT = 256 * 16 * 2^4 * 1/fc = 4833us), SFGI = 0 (SFG = 256 * 16 * 2^0 * 1/fc = 302us) - // TC(1) = 0x02: CID supported, NAD not supported + // TC(1) = 0x02: CID supported, NAD not supported // static uint8_t rRATS[] = { 0x04, 0x58, 0x80, 0x02, 0x00, 0x00 }; static uint8_t rRATS[40] = { 0x05, 0x75, 0x80, 0x60, 0x02, 0x00, 0x00, 0x00 }; uint8_t rRATS_len = 8; @@ -1314,10 +1314,10 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r // since rats len is variable now. responses_init[RESP_INDEX_RATS].response_n = rRATS_len; - // "precompiled" responses. + // "precompiled" responses. // These exist for speed reasons. There are no time in the anti collision phase to calculate responses. // There are 12 predefined responses with a total of 84 bytes data to transmit. - // + // // Coded responses need one byte per bit to transfer (data, parity, start, stop, correction) // 85 * 8 data bits, 85 * 1 parity bits, 12 start bits, 12 stop bits, 12 correction bits // 85 * 8 + 85 + 12 + 12 + 12 == 801 diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 635b1bfaa..96ecefdd1 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -2772,7 +2772,7 @@ static void detect_credential(uint8_t *iclass_dump, size_t dump_len, bool *is_le picopass_hdr_t *hdr = (picopass_hdr_t *)iclass_dump; if (!memcmp(hdr->app_issuer_area, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { - // Legacy AIA + // Legacy AIA *is_legacy = true; if (dump_len < 11 * PICOPASS_BLOCK_SIZE) { diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index d149a381a..47cd6de55 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -53,7 +53,7 @@ static void ParamLoadDefaults(struct tlvdb *tlvRoot) { TLV_ADD(0x5F2A, "\x090\x78"); // 9A:(Transaction Date) len:3 TLV_ADD(0x9A, "\x00\x00\x00"); - // 9C:(Transaction Type) len:1 + // 9C:(Transaction Type) len:1 // | 00 => Goods and Service // | 01 => Cash TLV_ADD(0x9C, "\x00"); @@ -544,7 +544,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen, bool verbose // Track 3 Data // to be impl. - + // Unpredicable Number (UN) struct tlvdb *un1_full = tlvdb_find_full(root, 0x9f37); if (un1_full != NULL) { @@ -2018,7 +2018,7 @@ static int CmdEMVScan(const char *Cmd) { bool paramLoadJSON = arg_get_lit(ctx, 4); enum TransactionType TrType = TT_MSD; - if (arg_get_lit(ctx, 6)){ + if (arg_get_lit(ctx, 6)) { TrType = TT_QVSDCMCHIP; } if (arg_get_lit(ctx, 7)) { diff --git a/client/src/iso7816/iso7816core.c b/client/src/iso7816/iso7816core.c index c03a11956..025d55d16 100644 --- a/client/src/iso7816/iso7816core.c +++ b/client/src/iso7816/iso7816core.c @@ -205,14 +205,14 @@ int Iso7816Select(Iso7816CommandChannel channel, bool activate_field, bool leave uint8_t *result, size_t max_result_len, size_t *result_len, uint16_t *sw) { return Iso7816ExchangeEx(channel - , activate_field - , leave_field_on - , (sAPDU_t) {0x00, 0xa4, 0x04, 0x00, aid_len, aid} - , (channel == CC_CONTACTLESS) - , 0 - , result - , max_result_len - , result_len - , sw - ); + , activate_field + , leave_field_on + , (sAPDU_t) {0x00, 0xa4, 0x04, 0x00, aid_len, aid} + , (channel == CC_CONTACTLESS) + , 0 + , result + , max_result_len + , result_len + , sw + ); } diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index 5cbe8b495..e4a05dd2c 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -285,7 +285,7 @@ const static vocabulary_t vocabulary[] = { { 0, "hf iclass esave" }, { 0, "hf iclass esetblk" }, { 0, "hf iclass eview" }, - { 1, "hf iclass configcard" }, + { 0, "hf iclass configcard" }, { 1, "hf iclass calcnewkey" }, { 1, "hf iclass encode" }, { 1, "hf iclass encrypt" }, diff --git a/doc/commands.json b/doc/commands.json index 08d0007e2..02fec71df 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -11857,6 +11857,6 @@ "metadata": { "commands_extracted": 687, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-10-03T15:10:12" + "extracted_on": "2023-10-12T12:53:10" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 0c94700e6..cf385dc1a 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -424,7 +424,7 @@ Check column "offline" for their availability. |`hf iclass esave `|N |`Save emulator memory to file` |`hf iclass esetblk `|N |`Set emulator memory block data` |`hf iclass eview `|N |`View emulator memory` -|`hf iclass configcard `|Y |`Reader configuration card` +|`hf iclass configcard `|N |`Reader configuration card` |`hf iclass calcnewkey `|Y |`Calc diversified keys (blocks 3 & 4) to write new keys` |`hf iclass encode `|Y |`Encode binary wiegand to block 7` |`hf iclass encrypt `|Y |`Encrypt given block data` diff --git a/include/protocols.h b/include/protocols.h index db088fd22..1c8dac3de 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -444,7 +444,7 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. // Picopass Pagemode fuses #define PICOPASS_SECURE_PAGEMODE_AUTH_DISABLED 0x00 #define PICOPASS_NON_SECURE_PAGEMODE 0x01 -#define PICOPASS_SECURE_PAGEMODE_KEYS_LOCKED 0x02 +#define PICOPASS_SECURE_PAGEMODE_KEYS_LOCKED 0x02 #define PICOPASS_SECURE_PAGEMODE_KEYS_MODIFIABLE 0x03 // ISO 7816-4 Basic interindustry commands. For command APDU's. From ef9b57748a92cbf777cd51d10a83f0014986b993 Mon Sep 17 00:00:00 2001 From: Antiklesys <syselkitna@gmail.com> Date: Fri, 13 Oct 2023 00:29:40 +0800 Subject: [PATCH 0546/1034] Ported configcard from nfc-iclass Enabled creation of configcards without cardhelper using nfc-iclass data --- CHANGELOG.md | 10 ++++++---- client/src/cmdhficlass.c | 28 ++++++++++++++-------------- doc/commands.md | 2 +- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17951e0ae..16037543b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,8 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `lf t55 detectp1` - now also accepts 0xE039 Silicon Craft Tech as valid card (@iceman1001) - Fixed `utils.lua` library function "convertdectohex" wasn't working (@iceman1001) - Added `hf iclass creditepurse` command to allow crediting the epurse debit value (@nvx) + - Modified `hf iclass configcard` to only support online mode @ATK + - Modified `hf iclass configcard` command to generate config cards without a cardhelper module by porting the contents of blocks 7 & 7 from nfc-iclass @ATK ## [Raccoon.4.17140][2023-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) @@ -89,7 +91,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `hf mfu pwdgen -r` - now generates pwd/pack for Philips Sonicare, thanks @ckuenzi, @atc1441 (@iceman1001) - Changed `hf mfu info` - now detects Philips Sonicare devices (@iceman1001) - Fixed truncated FPGA upload due to incorrect integer size variable (@d18c7db) - - Changed `usart btfactory` - handles the new BT board with version "BT SPP V3.0" (@iceman1001) + - Changed `usart btfactory` - handles the new BT board with version "BT SPP V3.0" (@iceman1001) - Changed `hf mf eview --sk` - now can extract keys and save to file (@iceman1001) - Changed `hf mf view --sk` - now can extract keys and save to file (@iceman1001) - Changed `hf mf sim` - reduce 6ms threshold to 4ms for reset to idle #1974 (@net147) @@ -116,7 +118,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Added `hf mf gdmcfg` - Support Gen4 GDM read configuration block (@iceman1001) - Changed magic note to include a section about GDM tags (@iceman1001) - Added `hf mf gdmsetblk` - Support Gen4 GDM write block (@iceman1001) - - Changed `hf 14a info` - detect Gen GDM magic tags (@iceman1001) + - Changed `hf 14a info` - detect Gen GDM magic tags (@iceman1001) - Changed CLI max string argument length limit from 512 to 4096 (@iceman1001) - Fixed `data asn1` - now handles bad input better (@iceman1001) - Added new public key for signature MIFARE Plus Troika (@iceman100) @@ -186,14 +188,14 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Fixed length check in sim module communications (@jmichelp) - Changed timings in i2c.c when communicating with sim module (@iceman1001) - Moved to non-deprecated API to initialize Python interpreter (@jmichelp) - - Changed `sc upgrade` updated firmware v4.13 (RDV40) - frame buffer is now 384 bytes (@sentiprox) + - Changed `sc upgrade` updated firmware v4.13 (RDV40) - frame buffer is now 384 bytes (@sentiprox) - Fixed contact interface / smartcard APDU chaining logic and allow 256 bytes ADPU payload. Need SIM firmware 4.13 to work (@jmichelp) - Fixed `lf hitag dump` - Should now work as described in the command help (@natmchugh) - Fixed SPI flash overflow when loading dictionnaries into flash. Breaking change: added 1 more sector for Mifare - dictionnaries should be loaded again (@jmichelp) - Added `hf mf gload, gsave, ggetblk, gsetblk` for Gen4 GTU in mifare classic mode (@DidierA) - Fixed `trace list -r` (relative times) not working unless `-u` (microseconds) was specified, and made `--frame` respect `-u` and `-r` options (@nvx) - Added detection of magic Gen4 GTU (@DidierA) - - Added luascript `hf_i2c_plus_2k_utils` - Script for dumping/modifying user memory of sectors 0 and 1 (@flamebarke) + - Added luascript `hf_i2c_plus_2k_utils` - Script for dumping/modifying user memory of sectors 0 and 1 (@flamebarke) - Added `hf mfu esave` - saves emulator memory to mfu dump file (@DidierA) - Added luascript `hf_mfu_ntag` - Script for configuring NTAG216 configuration pages (@flamebarke) - Changed `hf mf hardnested` - a detection for static encrypted nonces (@iceman1001) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 96ecefdd1..1030c8ee9 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -197,19 +197,19 @@ static uint8_t card_app2_limit[] = { }; static iclass_config_card_item_t iclass_config_types[14] = { - {"", ""}, - {"", ""}, - {"", ""}, - {"", ""}, - {"", ""}, - {"", ""}, - {"", ""}, - {"", ""}, - {"", ""}, - {"", ""}, - {"", ""}, - {"", ""}, - {"", ""}, + {"Audio/Visual #1 - Beep ON, LED Off, Flash GREEN on read", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x18, 0xAC, 0x00, 0xA8, 0x8F, 0xA7, 0x80, 0xA9, 0x01}}, + {"Audio/Visual #2 - Beep ON, LED RED, Host must flash GREEN", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x18, 0xAC, 0x00, 0xA8, 0x1F, 0xA7, 0x80, 0xA9, 0x01}}, + {"Audio/Visual #3 - Beep ON, LED Off, Host must flash RED and/or GREEN", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x18, 0xAC, 0x00, 0xA8, 0x0F, 0xA9, 0x03, 0xA7, 0x80}}, + {"Keypad Output #1 - Buffer ONE key (8 bit Dorado)", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x18, 0xAE, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {"Keypad Output #2 - Buffer ONE to FIVE keys (standard 26 bit)", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x18, 0xAE, 0x0B, 0xAF, 0xFF, 0xAD, 0x15, 0xB3, 0x03}}, + {"Keypad Output #3 - Local PIN verify", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x18, 0xAD, 0x6D, 0xB3, 0x03, 0x00, 0x00, 0x00, 0x00}}, + {"Mifare CSN #1 - 32 bit reverse output", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x18, 0xAC, 0x01, 0xA7, 0x80, 0xA8, 0x9F, 0xA9, 0x01}}, + {"Mifare CSN #2 - 16 bit output", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x18, 0xAC, 0x02, 0xA7, 0x80, 0xA8, 0x9F, 0xA9, 0x01}}, + {"Mifare CSN #3 - 34 bit output", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x18, 0xAC, 0x03, 0xA7, 0x80, 0xA8, 0x9F, 0xA9, 0x01}}, + {"Keyroll DISABLE - Set ELITE Key and DISABLE Keyrolling", {0x0C, 0x00, 0x00, 0x01, 0x00, 0x00, 0xBF, 0x18, 0xBF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}}, + {"Keyroll ENABLE - Set ELITE Key and ENABLE Keyrolling", {0x0C, 0x00, 0x00, 0x01, 0x00, 0x00, 0xBF, 0x18, 0xBF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}}, + {"Reset READER - Reset READER to defaults", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {"Reset ENROLLER - Reset ENROLLER to defaults", {0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF}}, // must be the last entry {"no config card info available", ""} }; @@ -4450,7 +4450,7 @@ static command_t CommandTable[] = { {"esetblk", CmdHFiClassESetBlk, IfPm3Iclass, "Set emulator memory block data"}, {"eview", CmdHFiClassEView, IfPm3Iclass, "View emulator memory"}, {"-----------", CmdHelp, AlwaysAvailable, "---------------------- " _CYAN_("utils") " ----------------------"}, - {"configcard", CmdHFiClassConfigCard, IfPm3Smartcard, "Reader configuration card"}, + {"configcard", CmdHFiClassConfigCard, IfPm3Iclass, "Reader configuration card"}, {"calcnewkey", CmdHFiClassCalcNewKey, AlwaysAvailable, "Calc diversified keys (blocks 3 & 4) to write new keys"}, {"encode", CmdHFiClassEncode, AlwaysAvailable, "Encode binary wiegand to block 7"}, {"encrypt", CmdHFiClassEncryptBlk, AlwaysAvailable, "Encrypt given block data"}, diff --git a/doc/commands.md b/doc/commands.md index cf385dc1a..f6d1aacd6 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -2,7 +2,7 @@ # Proxmark3 command dump -Some commands are available only if a Proxmark3 is actually connected. +Some commands are available only if a Proxmark3 is actually connected. Check column "offline" for their availability. From 168b9eea7a5b159ef840b779050a238f48b37dc3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 13 Oct 2023 08:23:20 +0200 Subject: [PATCH 0547/1034] Bandai Namco Passport [fka Banapassport] / Sega Aime Card. BNPs / Aimes endorsed with the Amusement IC Logo use FeliCa and will not work with the below keys. Dumped on the Flipper Devices Discord Server --- client/dictionaries/mfc_default_keys.dic | 40 ++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 424b74647..d708e526e 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -2104,6 +2104,46 @@ D144BD193063 # Brazil transport Sec 8 / A 50d4c54fcdf5 # +# Bandai Namco Passport [fka Banapassport] / Sega Aime Card +# Dumped on the Flipper Devices Discord Server +6090D00632F5 +019761AA8082 +574343467632 +A99164400748 +62742819AD7C +CC5075E42BA1 +B9DF35A0814C +8AF9C718F23D +58CD5C3673CB +FC80E88EB88C +7A3CDAD7C023 +30424C029001 +024E4E44001F +ECBBFA57C6AD +4757698143BD +1D30972E6485 +F8526D1A8D6D +1300EC8C7E80 +F80A65A87FFA +DEB06ED4AF8E +4AD96BF28190 +000390014D41 +0800F9917CB0 +730050555253 +4146D4A956C4 +131157FBB126 +E69DD9015A43 +337237F254D5 +9A8389F32FBF +7B8FB4A7100B +C8382A233993 +7B304F2A12A6 +FC9418BF788B +5C8FF9990DA2 +D01AFEEB890A +75CCB59C9BED +4B791BEA7BCC +# # Data from "the more the marriott" mifare project (colonelborkmundus) # aka The Horde # From 8a8288ec252973b802d8b22cd4371d0357dc134e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 13 Oct 2023 08:40:54 +0200 Subject: [PATCH 0548/1034] fix the doubletts.. --- client/dictionaries/mfc_default_keys.dic | 4 ---- 1 file changed, 4 deletions(-) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index d708e526e..3b4ef120b 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -2139,10 +2139,6 @@ E69DD9015A43 C8382A233993 7B304F2A12A6 FC9418BF788B -5C8FF9990DA2 -D01AFEEB890A -75CCB59C9BED -4B791BEA7BCC # # Data from "the more the marriott" mifare project (colonelborkmundus) # aka The Horde From e4f373dd65b8d908d15eef5389d779b8a272e65e Mon Sep 17 00:00:00 2001 From: Antiklesys <syselkitna@gmail.com> Date: Fri, 13 Oct 2023 21:54:07 +0800 Subject: [PATCH 0549/1034] Finished configcard implementation for keyroll cards Finalized implementation of configcard generation for keyroll when cardhelper is not present. Results need to be compared with cardhelper output. --- CHANGELOG.md | 7 +-- client/src/cmdhficlass.c | 106 ++++++++++++++++++++++++++++----------- 2 files changed, 82 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 16037543b..652445723 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,15 +7,16 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Fixed `hf iclass wrbl` - pagemap bit map for secured is now handled better (@iceman1001) - Changed `hf iclass view/decrypt` to detect SIO lengths better and show if legacy credentials are encrypted (@nvx) - Changed the json file formats for mfc, 14b, 15, legic, cryptorf, ndef (@iceman1001) - - Depricated the EML file format when saving dump files. (@iceman1001) + - Deprecated the EML file format when saving dump files. (@iceman1001) - Added `sim014.bin` - new sim module firmware v4.42 with improved ISO7816 Protocol T0 support (@gentilkiwi) - Added datasheet for sim module (@iceman1001) - Changed `smart raw --timeout` - allows for a custom timeout (@iceman1001) - Changed `lf t55 detectp1` - now also accepts 0xE039 Silicon Craft Tech as valid card (@iceman1001) - Fixed `utils.lua` library function "convertdectohex" wasn't working (@iceman1001) - Added `hf iclass creditepurse` command to allow crediting the epurse debit value (@nvx) - - Modified `hf iclass configcard` to only support online mode @ATK - - Modified `hf iclass configcard` command to generate config cards without a cardhelper module by porting the contents of blocks 7 & 7 from nfc-iclass @ATK + - Modified `hf iclass configcard` to only support online mode (@Antiklesys) + - Modified `hf iclass configcard` command to generate config cards without a cardhelper module by porting the contents of blocks 6 & 7 from nfc-iclass (@Antiklesys) + - Finalized implementation of configcard generation for keyroll when cardhelper is not present (@Antiklesys) ## [Raccoon.4.17140][2023-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 1030c8ee9..8ff742847 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -274,6 +274,16 @@ static void print_config_card(const iclass_config_card_item_t *o) { } } +static void iclass_encrypt_block_data(uint8_t *blk_data, uint8_t *key) { + uint8_t encrypted_data[16]; + uint8_t *encrypted = encrypted_data; + mbedtls_des3_context ctx; + mbedtls_des3_set2key_enc(&ctx, key); + mbedtls_des3_crypt_ecb(&ctx, blk_data, encrypted); + memcpy(blk_data, encrypted, 8); + mbedtls_des3_free(&ctx); +} + static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *key, bool got_kr) { if (check_config_card(o) == false) { return PM3_EINVARG; @@ -353,11 +363,35 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke SetFlushAfterWrite(true); // KEYROLL need to encrypt + uint8_t key_en[16] = {0}; + uint8_t *keyptr_en = NULL; + if (IsCardHelperPresent(false) == false){ + size_t keylen = 0; + int res_key = loadFile_safe(ICLASS_DECRYPTION_BIN, "", (void **)&keyptr_en, &keylen); + if (res_key != PM3_SUCCESS) { + PrintAndLogEx(ERR, "Failed to find iclass_decryptionkey.bin"); + return PM3_EINVARG; + } + + if (keylen != 16) { + PrintAndLogEx(ERR, "Failed to load transport key from file"); + free(keyptr_en); + return PM3_EINVARG; + } + memcpy(key_en, keyptr_en, sizeof(key_en)); + free(keyptr_en); + } + PrintAndLogEx(INFO, "Setting up encryption... " NOLF); uint8_t ffs[8] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; - if (Encrypt(ffs, ffs) == false) { - PrintAndLogEx(WARNING, "failed to encrypt FF"); - } else { + if (IsCardHelperPresent(false) != false){ + if (Encrypt(ffs, ffs) == false) { + PrintAndLogEx(WARNING, "failed to encrypt FF"); + } else { + PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); + } + }else{ + iclass_encrypt_block_data(ffs, key_en); PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); } @@ -366,9 +400,14 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke uint8_t lkey[8]; memcpy(lkey, key, sizeof(lkey)); uint8_t enckey1[8]; - if (Encrypt(lkey, enckey1) == false) { - PrintAndLogEx(WARNING, "failed to encrypt key1"); - } else { + if (IsCardHelperPresent(false) != false){ + if (Encrypt(lkey, enckey1) == false) { + PrintAndLogEx(WARNING, "failed to encrypt key1"); + } else { + PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); + } + }else{ + iclass_encrypt_block_data(lkey, key_en); PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); } @@ -377,9 +416,13 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke memcpy(data + (6 * 8), o->data, sizeof(o->data)); // encrypted keyroll key 0D - memcpy(data + (0xD * 8), enckey1, sizeof(enckey1)); + if (IsCardHelperPresent(false) != false){ + memcpy(data + (0x0D * 8), enckey1, sizeof(enckey1)); + } else { + memcpy(data + (0x0D * 8), lkey, sizeof(enckey1)); + } // encrypted 0xFF - for (uint8_t i = 0xD; i < 0x14; i++) { + for (uint8_t i = 0x0D; i < 0x14; i++) { memcpy(data + (i * 8), ffs, sizeof(ffs)); } PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); @@ -387,24 +430,37 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke // encrypted partial keyroll key 14 PrintAndLogEx(INFO, "Setting encrypted partial key14... " NOLF); uint8_t foo[8] = {0x15}; - memcpy(foo + 1, lkey, 7); + memcpy(foo + 1, key, 7); uint8_t enckey2[8]; - if (Encrypt(foo, enckey2) == false) { - PrintAndLogEx(WARNING, "failed to encrypt partial 1"); + if (IsCardHelperPresent(false) != false){ + if (Encrypt(foo, enckey2) == false) { + PrintAndLogEx(WARNING, "failed to encrypt partial 1"); + } else { + PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); + memcpy(data + (0x14 * 8), enckey2, sizeof(enckey2)); + } + }else{ + iclass_encrypt_block_data(foo, key_en); + PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); + memcpy(data + (0x14 * 8), foo, sizeof(enckey2)); } - memcpy(data + (0x14 * 8), enckey2, sizeof(enckey2)); - PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); - // encrypted partial keyroll key 15 PrintAndLogEx(INFO, "Setting encrypted partial key15... " NOLF); memset(foo, 0xFF, sizeof(foo)); foo[0] = lkey[7]; - if (Encrypt(foo, enckey2) == false) { - PrintAndLogEx(WARNING, "failed to encrypt partial 2"); + if (IsCardHelperPresent(false) != false){ + if (Encrypt(foo, enckey2) == false) { + PrintAndLogEx(WARNING, "failed to encrypt partial 2"); + } else { + PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); + memcpy(data + (0x15 * 8), enckey2, sizeof(enckey2)); + } + }else{ + iclass_encrypt_block_data(foo, key_en); + PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); + memcpy(data + (0x15 * 8), foo, sizeof(enckey2)); } - memcpy(data + (0x15 * 8), enckey2, sizeof(enckey2)); - PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); // encrypted 0xFF PrintAndLogEx(INFO, "Setting 0xFF's... " NOLF); @@ -1547,16 +1603,6 @@ static int CmdHFiClassDecrypt(const char *Cmd) { return PM3_SUCCESS; } -static void iclass_encrypt_block_data(uint8_t *blk_data, uint8_t *key) { - uint8_t encrypted_data[16]; - uint8_t *encrypted = encrypted_data; - mbedtls_des3_context ctx; - mbedtls_des3_set2key_enc(&ctx, key); - mbedtls_des3_crypt_ecb(&ctx, blk_data, encrypted); - memcpy(blk_data, encrypted, 8); - mbedtls_des3_free(&ctx); -} - static int CmdHFiClassEncryptBlk(const char *Cmd) { CLIParserContext *clictx; CLIParserInit(&clictx, "hf iclass encrypt", @@ -4376,6 +4422,10 @@ static int CmdHFiClassConfigCard(const char *Cmd) { return PM3_EINVARG; } } + if(ccidx < -1 && ccidx > 12 && IsCardHelperPresent(false) == false){ + PrintAndLogEx(ERR, "Please specify a configuration between 0 and 12!"); + return PM3_EINVARG; + } generate_config_card(item, key, got_kr); } From 7b4af95a404a3775f587a8e1d84a04e7cbc9725c Mon Sep 17 00:00:00 2001 From: Antiklesys <syselkitna@gmail.com> Date: Fri, 13 Oct 2023 22:16:10 +0800 Subject: [PATCH 0550/1034] Update cmdhficlass.c --- client/src/cmdhficlass.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 8ff742847..3bb4db080 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -225,7 +225,7 @@ static bool check_config_card(const iclass_config_card_item_t *o) { static int load_config_cards(void) { PrintAndLogEx(INFO, "detecting cardhelper..."); - if (IsCardHelperPresent(false) == false) { + if (IsCardHelperPresent(false)) { PrintAndLogEx(FAILED, "failed to detect cardhelper"); return PM3_ENODATA; } @@ -365,7 +365,7 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke // KEYROLL need to encrypt uint8_t key_en[16] = {0}; uint8_t *keyptr_en = NULL; - if (IsCardHelperPresent(false) == false){ + if (IsCardHelperPresent(false)){ size_t keylen = 0; int res_key = loadFile_safe(ICLASS_DECRYPTION_BIN, "", (void **)&keyptr_en, &keylen); if (res_key != PM3_SUCCESS) { @@ -4422,7 +4422,7 @@ static int CmdHFiClassConfigCard(const char *Cmd) { return PM3_EINVARG; } } - if(ccidx < -1 && ccidx > 12 && IsCardHelperPresent(false) == false){ + if(ccidx < -1 && ccidx > 12 && IsCardHelperPresent(false)){ PrintAndLogEx(ERR, "Please specify a configuration between 0 and 12!"); return PM3_EINVARG; } From 0692af842505321820bad81f68f17ceaeab59969 Mon Sep 17 00:00:00 2001 From: Antiklesys <syselkitna@gmail.com> Date: Fri, 13 Oct 2023 22:22:10 +0800 Subject: [PATCH 0551/1034] Update cmdhficlass.c Reverted changes as otherwise the check is ignored. --- client/src/cmdhficlass.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 3bb4db080..8ff742847 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -225,7 +225,7 @@ static bool check_config_card(const iclass_config_card_item_t *o) { static int load_config_cards(void) { PrintAndLogEx(INFO, "detecting cardhelper..."); - if (IsCardHelperPresent(false)) { + if (IsCardHelperPresent(false) == false) { PrintAndLogEx(FAILED, "failed to detect cardhelper"); return PM3_ENODATA; } @@ -365,7 +365,7 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke // KEYROLL need to encrypt uint8_t key_en[16] = {0}; uint8_t *keyptr_en = NULL; - if (IsCardHelperPresent(false)){ + if (IsCardHelperPresent(false) == false){ size_t keylen = 0; int res_key = loadFile_safe(ICLASS_DECRYPTION_BIN, "", (void **)&keyptr_en, &keylen); if (res_key != PM3_SUCCESS) { @@ -4422,7 +4422,7 @@ static int CmdHFiClassConfigCard(const char *Cmd) { return PM3_EINVARG; } } - if(ccidx < -1 && ccidx > 12 && IsCardHelperPresent(false)){ + if(ccidx < -1 && ccidx > 12 && IsCardHelperPresent(false) == false){ PrintAndLogEx(ERR, "Please specify a configuration between 0 and 12!"); return PM3_EINVARG; } From 28c4f66c0b21c23dc8c0f2d7c95067de2c4caa87 Mon Sep 17 00:00:00 2001 From: Antiklesys <syselkitna@gmail.com> Date: Fri, 13 Oct 2023 22:53:29 +0800 Subject: [PATCH 0552/1034] Update cmdhficlass.c --- client/src/cmdhficlass.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 8ff742847..f93d73b20 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -4422,10 +4422,6 @@ static int CmdHFiClassConfigCard(const char *Cmd) { return PM3_EINVARG; } } - if(ccidx < -1 && ccidx > 12 && IsCardHelperPresent(false) == false){ - PrintAndLogEx(ERR, "Please specify a configuration between 0 and 12!"); - return PM3_EINVARG; - } generate_config_card(item, key, got_kr); } From 6e1cf6c0de4be1c8ce5e5c728bf208af30793779 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 13 Oct 2023 22:51:12 +0200 Subject: [PATCH 0553/1034] added a C sample of grabbing output --- .../experimental_lib/example_c/01make_test.sh | 1 + .../example_c/02run_test_grab.sh | 3 + client/experimental_lib/example_c/test_grab.c | 67 +++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100755 client/experimental_lib/example_c/02run_test_grab.sh create mode 100644 client/experimental_lib/example_c/test_grab.c diff --git a/client/experimental_lib/example_c/01make_test.sh b/client/experimental_lib/example_c/01make_test.sh index 1ce6357ff..7bda5aa37 100755 --- a/client/experimental_lib/example_c/01make_test.sh +++ b/client/experimental_lib/example_c/01make_test.sh @@ -1,3 +1,4 @@ #!/bin/bash gcc -o test test.c -I../../include -lpm3rrg_rdv4 -L../build -lpthread +gcc -o test_grab test_grab.c -I../../include -lpm3rrg_rdv4 -L../build -lpthread diff --git a/client/experimental_lib/example_c/02run_test_grab.sh b/client/experimental_lib/example_c/02run_test_grab.sh new file mode 100755 index 000000000..2dd6f892b --- /dev/null +++ b/client/experimental_lib/example_c/02run_test_grab.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +LD_LIBRARY_PATH=../build ./test_grab diff --git a/client/experimental_lib/example_c/test_grab.c b/client/experimental_lib/example_c/test_grab.c new file mode 100644 index 000000000..6b093b3ce --- /dev/null +++ b/client/experimental_lib/example_c/test_grab.c @@ -0,0 +1,67 @@ +#include "pm3.h" +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +int main(int argc, char *argv[]) { + + int pipefd[2]; + char buf[8196 + 1]; + size_t n; + + if (pipe(pipefd) == -1) { + exit(-1); + } + + int pid = fork(); + if (pid == -1) { + perror("fork"); + exit(-1); + } + + // child + if (pid == 0) { + printf("[INFO] inside child\n"); + + // Redirect stdout to the write end of the pipe + dup2(pipefd[1], STDOUT_FILENO); + + close(pipefd[0]); // Child: close read end of the pipe + close(pipefd[1]); // Close original write end + + pm3 *p; + p = pm3_open("/dev/ttyS9"); + //printf("Device: %s\n", pm3_name_get(p)); + + // Execute the command + pm3_console(p, "hw status"); + pm3_close(p); + _exit(-1); + } else { + + printf("[INFO] inside parent\n"); + // Parent: close write end of the pipe + close(pipefd[1]); + + // Read from the pipe + while (1) { + n = read(pipefd[0], buf, sizeof(buf)); + if (n == -1) { + continue; + } + if (n == 0) { + break; + } else { + // null termination + buf[n] = 0; + if (strstr(buf, "Unique ID") != NULL) { + printf("%s", buf); + } + } + } + + // Close read end + close(pipefd[0]); + } +} From f90434521e210ca093fa2aa18bb268e08cd231a2 Mon Sep 17 00:00:00 2001 From: Self Not Found <wh201906@yandex.com> Date: Sat, 14 Oct 2023 14:04:46 +0800 Subject: [PATCH 0554/1034] Reduce latency in local TCP connection --- CHANGELOG.md | 1 + client/src/comms.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 16037543b..6869596e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Added `hf iclass creditepurse` command to allow crediting the epurse debit value (@nvx) - Modified `hf iclass configcard` to only support online mode @ATK - Modified `hf iclass configcard` command to generate config cards without a cardhelper module by porting the contents of blocks 7 & 7 from nfc-iclass @ATK + - Changed the timeout of local TCP connections (@wh201906) ## [Raccoon.4.17140][2023-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) diff --git a/client/src/comms.c b/client/src/comms.c index a7ed0fd06..d0ec182ab 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -678,7 +678,16 @@ int TestProxmark(pm3_device_t *dev) { if (g_conn.send_via_fpc_usart) { PrintAndLogEx(INFO, "PM3 UART serial baudrate: " _YELLOW_("%u") "\n", g_conn.uart_speed); } else { - int res = uart_reconfigure_timeouts(is_tcp_conn ? UART_TCP_CLIENT_RX_TIMEOUT_MS : UART_USB_CLIENT_RX_TIMEOUT_MS); + int res; + if (is_tcp_conn) { + if (memcmp(g_conn.serial_port_name + 4, "localhost", 9) == 0 || memcmp(g_conn.serial_port_name + 4, "127.0.0.1", 9) == 0) { + res = uart_reconfigure_timeouts(UART_USB_CLIENT_RX_TIMEOUT_MS * 2); + } else { + res = uart_reconfigure_timeouts(UART_TCP_CLIENT_RX_TIMEOUT_MS); + } + } else { + res = uart_reconfigure_timeouts(UART_USB_CLIENT_RX_TIMEOUT_MS); + } if (res != PM3_SUCCESS) { return res; } From 0490dc9d078a8b701a0df8ea250d63cf05d3ead7 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 14 Oct 2023 11:00:15 +0200 Subject: [PATCH 0555/1034] use strstr instead of memcmp --- client/src/comms.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/comms.c b/client/src/comms.c index d0ec182ab..c0dc9dc17 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -680,7 +680,8 @@ int TestProxmark(pm3_device_t *dev) { } else { int res; if (is_tcp_conn) { - if (memcmp(g_conn.serial_port_name + 4, "localhost", 9) == 0 || memcmp(g_conn.serial_port_name + 4, "127.0.0.1", 9) == 0) { + if ((strstr(g_conn.serial_port_name, "localhost") != NULL) || + (strstr(g_conn.serial_port_name, "127.0.0.1") != NULL)) { res = uart_reconfigure_timeouts(UART_USB_CLIENT_RX_TIMEOUT_MS * 2); } else { res = uart_reconfigure_timeouts(UART_TCP_CLIENT_RX_TIMEOUT_MS); From 531ab9b2197436d871acd47b80e44e2292ac462c Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Sat, 14 Oct 2023 17:46:23 +0800 Subject: [PATCH 0556/1034] Faster CI --- .github/workflows/macos.yml | 10 +++------- .github/workflows/ubuntu.yml | 10 +++------- .github/workflows/windows.yml | 12 ++++++------ CHANGELOG.md | 1 + 4 files changed, 13 insertions(+), 20 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index a632a5e37..37d628655 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -50,14 +50,12 @@ jobs: - name: Build env: V: 1 - run: make + run: make -j$((`sysctl -n hw.ncpu` + 1)) - name: Test run: make check macos-make-btaddon: - if: always() - needs: [macos-make] runs-on: macos-latest steps: @@ -93,14 +91,12 @@ jobs: env: V: 1 PLATFORM_EXTRAS: BTADDON - run: make + run: make -j$((`sysctl -n hw.ncpu` + 1)) - name: Test run: make check macos-cmake: - if: always() - needs: [macos-make, macos-make-btaddon] runs-on: macos-latest steps: @@ -144,7 +140,7 @@ jobs: - name: Build env: VERBOSE: 1 - run: make + run: make -j$((`sysctl -n hw.ncpu` + 1)) working-directory: client/build/ - name: Test diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 9887be49f..d81ea5db2 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -41,14 +41,12 @@ jobs: - name: Build env: V: 1 - run: make + run: make -j$((`nproc` + 1)) - name: Test run: make check ubuntu-make-btaddon: - if: always() - needs: [ubuntu-make] runs-on: ubuntu-latest steps: @@ -74,14 +72,12 @@ jobs: env: V: 1 PLATFORM_EXTRAS: BTADDON - run: make + run: make -j$((`nproc` + 1)) - name: Test run: make check ubuntu-cmake: - if: always() - needs: [ubuntu-make, ubuntu-make-btaddon] runs-on: ubuntu-latest steps: @@ -115,7 +111,7 @@ jobs: - name: Build env: VERBOSE: 1 - run: make + run: make -j$((`nproc` + 1)) working-directory: client/build/ - name: Test diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 3c093f96b..d913a35fc 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -54,7 +54,7 @@ jobs: run: make clean - name: Build - run: make V=1 + run: make -j $([System.Environment]::ProcessorCount + 1) V=1 - name: Test run: make check @@ -63,7 +63,7 @@ jobs: run: make clean - name: Build btaddon - run: make V=1 PLATFORM_EXTRAS=BTADDON + run: make -j $([System.Environment]::ProcessorCount + 1) V=1 PLATFORM_EXTRAS=BTADDON - name: Test btaddon run: make check @@ -84,7 +84,7 @@ jobs: working-directory: client/build/ - name: Build cmake - run: make VERBOSE=1 + run: make -j $([System.Environment]::ProcessorCount + 1) VERBOSE=1 working-directory: client/build/ - name: Test cmake @@ -141,7 +141,7 @@ jobs: run: make clean - name: Build - run: make V=1 + run: make -j$((`nproc` + 1)) V=1 - name: Test run: make check @@ -150,7 +150,7 @@ jobs: run: make clean - name: Build btaddon - run: make V=1 PLATFORM_EXTRAS=BTADDON + run: make -j$((`nproc` + 1)) V=1 PLATFORM_EXTRAS=BTADDON - name: Test btaddon run: make check @@ -171,7 +171,7 @@ jobs: working-directory: client/build/ - name: Build cmake - run: make VERBOSE=1 + run: make -j$((`nproc` + 1)) VERBOSE=1 working-directory: client/build/ - name: Test cmake diff --git a/CHANGELOG.md b/CHANGELOG.md index 5eaa9316a..0cb26317e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed CI scripts to speed up the builds (@wh201906) - Changed the timeout of local TCP connections (@wh201906) - Finalized implementation of configcard generation for keyroll when cardhelper is not present (@Antiklesys) - Added documentation for compiling on iOS (@The-SamminAter) From fc6feea0d4a2db30163480b160df166b2933172f Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 14 Oct 2023 20:30:13 +0200 Subject: [PATCH 0557/1034] experimental UDP support. Doesnt quite work yet --- CHANGELOG.md | 1 + client/src/comms.c | 11 +++--- client/src/uart/uart_posix.c | 76 ++++++++++++++++++++++++++++++++++++ include/pm3_cmd.h | 7 ++-- 4 files changed, 87 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cb26317e..69da9696f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Experimental UDP support in linux (@iceman1001) - Changed CI scripts to speed up the builds (@wh201906) - Changed the timeout of local TCP connections (@wh201906) - Finalized implementation of configcard generation for keyroll when cardhelper is not present (@Antiklesys) diff --git a/client/src/comms.c b/client/src/comms.c index c0dc9dc17..4aaa37689 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -668,21 +668,22 @@ int TestProxmark(pm3_device_t *dev) { bool is_tcp_conn = (memcmp(g_conn.serial_port_name, "tcp:", 4) == 0); bool is_bt_conn = (memcmp(g_conn.serial_port_name, "bt:", 3) == 0); + bool is_udp_conn = (memcmp(g_conn.serial_port_name, "udp:", 4) == 0); - PrintAndLogEx(INFO, "Communicating with PM3 over %s%s%s", + PrintAndLogEx(INFO, "Communicating with PM3 over %s%s%s%s", (g_conn.send_via_fpc_usart) ? _YELLOW_("FPC UART") : _YELLOW_("USB-CDC"), (is_tcp_conn) ? " over " _YELLOW_("TCP") : "", - (is_bt_conn) ? " over " _YELLOW_("BT") : "" + (is_bt_conn) ? " over " _YELLOW_("BT") : "", + (is_udp_conn) ? " over " _YELLOW_("UDP") : "" ); - if (g_conn.send_via_fpc_usart) { PrintAndLogEx(INFO, "PM3 UART serial baudrate: " _YELLOW_("%u") "\n", g_conn.uart_speed); } else { int res; - if (is_tcp_conn) { + if (is_tcp_conn || is_udp_conn) { if ((strstr(g_conn.serial_port_name, "localhost") != NULL) || (strstr(g_conn.serial_port_name, "127.0.0.1") != NULL)) { - res = uart_reconfigure_timeouts(UART_USB_CLIENT_RX_TIMEOUT_MS * 2); + res = uart_reconfigure_timeouts(UART_TCP_CLIENT_LOCAL_RX_TIMEOUT_MS); } else { res = uart_reconfigure_timeouts(UART_TCP_CLIENT_RX_TIMEOUT_MS); } diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index 106c8d209..c7cdc27a6 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -46,6 +46,9 @@ #ifndef SOL_TCP # define SOL_TCP IPPROTO_TCP #endif +#ifndef SOL_UDP +# define SOL_UDP IPPROTO_UDP +#endif typedef struct termios term_info; typedef struct { @@ -168,6 +171,79 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { return sp; } + if (memcmp(prefix, "udp:", 4) == 0) { + free(prefix); + + if (strlen(pcPortName) <= 4) { + free(sp); + return INVALID_SERIAL_PORT; + } + + struct addrinfo *addr = NULL, *rp; + + char *addrstr = strdup(pcPortName + 4); + if (addrstr == NULL) { + PrintAndLogEx(ERR, "error: string duplication"); + free(sp); + return INVALID_SERIAL_PORT; + } + + timeout.tv_usec = UART_TCP_CLIENT_RX_TIMEOUT_MS * 1000; + + char *colon = strrchr(addrstr, ':'); + const char *portstr; + if (colon) { + portstr = colon + 1; + *colon = '\0'; + } else { + portstr = "18888"; + } + + struct addrinfo info; + + memset(&info, 0, sizeof(info)); + + info.ai_family = AF_INET; + info.ai_socktype = SOCK_DGRAM; +// info.ai_protocol = SOL_UDP; + + int s = getaddrinfo(addrstr, portstr, &info, &addr); + if (s != 0) { + PrintAndLogEx(ERR, "error: getaddrinfo: %s", gai_strerror(s)); + freeaddrinfo(addr); + free(addrstr); + free(sp); + return INVALID_SERIAL_PORT; + } + + int sfd; + for (rp = addr; rp != NULL; rp = rp->ai_next) { + sfd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); + + if (sfd == -1) + continue; + + if (connect(sfd, rp->ai_addr, rp->ai_addrlen) != -1) + break; + + close(sfd); + } + + freeaddrinfo(addr); + free(addrstr); + + if (rp == NULL) { /* No address succeeded */ + PrintAndLogEx(ERR, "error: Could not connect"); + free(sp); + return INVALID_SERIAL_PORT; + } + + sp->fd = sfd; + + return sp; + } + + if (memcmp(prefix, "bt:", 3) == 0) { free(prefix); diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index afd8c9ff6..f7317ba11 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -826,9 +826,10 @@ typedef struct { // took settings from libnfc/buses/uart.c // uart_windows.c & uart_posix.c -# define UART_FPC_CLIENT_RX_TIMEOUT_MS 200 -# define UART_USB_CLIENT_RX_TIMEOUT_MS 20 -# define UART_TCP_CLIENT_RX_TIMEOUT_MS 500 +# define UART_FPC_CLIENT_RX_TIMEOUT_MS 200 +# define UART_USB_CLIENT_RX_TIMEOUT_MS 20 +# define UART_TCP_CLIENT_RX_TIMEOUT_MS 500 +# define UART_TCP_CLIENT_LOCAL_RX_TIMEOUT_MS 40 // CMD_DEVICE_INFO response packet has flags in arg[0], flag definitions: From 90ac7fb67b106d0949906163a519b02478217ed8 Mon Sep 17 00:00:00 2001 From: Antiklesys <syselkitna@gmail.com> Date: Sun, 15 Oct 2023 13:59:38 +0800 Subject: [PATCH 0558/1034] Fixed iclass offline mode commands Fixed iclass offline mode commands --- CHANGELOG.md | 1 + client/src/cmdhficlass.c | 8 ++++---- client/src/pm3line_vocabulary.h | 6 +++--- doc/commands.json | 6 +++--- doc/commands.md | 6 +++--- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 69da9696f..5664e5551 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Added `hf iclass creditepurse` command to allow crediting the epurse debit value (@nvx) - Modified `hf iclass configcard` to only support online mode (@Antiklesys) - Modified `hf iclass configcard` command to generate config cards without a cardhelper module by porting the contents of blocks 6 & 7 from nfc-iclass (@Antiklesys) + - Fixed multiple online iclass commands showing incorrectly in offline mode (@Antiklesys) ## [Raccoon.4.17140][2023-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index f93d73b20..d79cad63e 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -4472,18 +4472,18 @@ static int CmdHFiClassSAM(const char *Cmd) { static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, - {"list", CmdHFiClassList, AlwaysAvailable, "List iclass history"}, + {"list", CmdHFiClassList, IfPm3Iclass, "List iclass history"}, {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("general") " ---------------------"}, // {"clone", CmdHFiClassClone, IfPm3Iclass, "Create a HID credential to Picopass / iCLASS tag"}, {"dump", CmdHFiClassDump, IfPm3Iclass, "Dump Picopass / iCLASS tag to file"}, - {"info", CmdHFiClassInfo, AlwaysAvailable, "Tag information"}, + {"info", CmdHFiClassInfo, IfPm3Iclass, "Tag information"}, {"rdbl", CmdHFiClass_ReadBlock, IfPm3Iclass, "Read Picopass / iCLASS block"}, {"reader", CmdHFiClassReader, IfPm3Iclass, "Act like a Picopass / iCLASS reader"}, {"restore", CmdHFiClassRestore, IfPm3Iclass, "Restore a dump file onto a Picopass / iCLASS tag"}, {"sniff", CmdHFiClassSniff, IfPm3Iclass, "Eavesdrop Picopass / iCLASS communication"}, {"view", CmdHFiClassView, AlwaysAvailable, "Display content from tag dump file"}, {"wrbl", CmdHFiClass_WriteBlock, IfPm3Iclass, "Write Picopass / iCLASS block"}, - {"creditepurse", CmdHFiClassCreditEpurse, IfPm3Iclass, "Credit epurse value"}, + {"creditepurse", CmdHFiClassCreditEpurse, IfPm3Iclass, "Credit epurse value"}, {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("recovery") " --------------------"}, // {"autopwn", CmdHFiClassAutopwn, IfPm3Iclass, "Automatic key recovery tool for iCLASS"}, {"chk", CmdHFiClassCheckKeys, IfPm3Iclass, "Check keys"}, @@ -4498,7 +4498,7 @@ static command_t CommandTable[] = { {"-----------", CmdHelp, AlwaysAvailable, "---------------------- " _CYAN_("utils") " ----------------------"}, {"configcard", CmdHFiClassConfigCard, IfPm3Iclass, "Reader configuration card"}, {"calcnewkey", CmdHFiClassCalcNewKey, AlwaysAvailable, "Calc diversified keys (blocks 3 & 4) to write new keys"}, - {"encode", CmdHFiClassEncode, AlwaysAvailable, "Encode binary wiegand to block 7"}, + {"encode", CmdHFiClassEncode, IfPm3Iclass, "Encode binary wiegand to block 7"}, {"encrypt", CmdHFiClassEncryptBlk, AlwaysAvailable, "Encrypt given block data"}, {"decrypt", CmdHFiClassDecrypt, AlwaysAvailable, "Decrypt given block data or tag dump file" }, {"managekeys", CmdHFiClassManageKeys, AlwaysAvailable, "Manage keys to use with iclass commands"}, diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index e4a05dd2c..af192e24c 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -267,9 +267,9 @@ const static vocabulary_t vocabulary[] = { { 1, "hf jooki encode" }, { 0, "hf jooki sim" }, { 1, "hf iclass help" }, - { 1, "hf iclass list" }, + { 0, "hf iclass list" }, { 0, "hf iclass dump" }, - { 1, "hf iclass info" }, + { 0, "hf iclass info" }, { 0, "hf iclass rdbl" }, { 0, "hf iclass reader" }, { 0, "hf iclass restore" }, @@ -287,7 +287,7 @@ const static vocabulary_t vocabulary[] = { { 0, "hf iclass eview" }, { 0, "hf iclass configcard" }, { 1, "hf iclass calcnewkey" }, - { 1, "hf iclass encode" }, + { 0, "hf iclass encode" }, { 1, "hf iclass encrypt" }, { 1, "hf iclass decrypt" }, { 1, "hf iclass managekeys" }, diff --git a/doc/commands.json b/doc/commands.json index 02fec71df..7d6f4f01b 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3120,7 +3120,7 @@ "hf iclass encode -w H10301 --fc 31 --cn 337 --ki 0 -> FC 31 CN 337 (H10301)", "hf iclass encode --bin 10001111100000001010100011 --ki 0 --elite -> FC 31 CN 337 (H10301), writing w elite key" ], - "offline": true, + "offline": false, "options": [ "-h, --help This help", "--bin <bin> Binary string i.e 0001001001", @@ -3206,7 +3206,7 @@ "notes": [ "hf iclass info" ], - "offline": true, + "offline": false, "options": [ "-h, --help This help", "--shallow use shallow (ASK) reader modulation instead of OOK" @@ -3220,7 +3220,7 @@ "hf iclass list --frame -> show frame delay times", "hf iclass list -1 -> use trace buffer" ], - "offline": true, + "offline": false, "options": [ "-h, --help This help", "-1, --buffer use data from trace buffer", diff --git a/doc/commands.md b/doc/commands.md index f6d1aacd6..4e1be75a2 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -406,9 +406,9 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`hf iclass help `|Y |`This help` -|`hf iclass list `|Y |`List iclass history` +|`hf iclass list `|N |`List iclass history` |`hf iclass dump `|N |`Dump Picopass / iCLASS tag to file` -|`hf iclass info `|Y |`Tag information` +|`hf iclass info `|N |`Tag information` |`hf iclass rdbl `|N |`Read Picopass / iCLASS block` |`hf iclass reader `|N |`Act like a Picopass / iCLASS reader` |`hf iclass restore `|N |`Restore a dump file onto a Picopass / iCLASS tag` @@ -426,7 +426,7 @@ Check column "offline" for their availability. |`hf iclass eview `|N |`View emulator memory` |`hf iclass configcard `|N |`Reader configuration card` |`hf iclass calcnewkey `|Y |`Calc diversified keys (blocks 3 & 4) to write new keys` -|`hf iclass encode `|Y |`Encode binary wiegand to block 7` +|`hf iclass encode `|N |`Encode binary wiegand to block 7` |`hf iclass encrypt `|Y |`Encrypt given block data` |`hf iclass decrypt `|Y |`Decrypt given block data or tag dump file` |`hf iclass managekeys `|Y |`Manage keys to use with iclass commands` From 0f9f5f116cd50c45b7ed6c9447790441286e25f4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 15 Oct 2023 10:11:27 +0200 Subject: [PATCH 0559/1034] text --- armsrc/i2c.c | 12 +++++++----- tools/pm3_online_check.py | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/armsrc/i2c.c b/armsrc/i2c.c index a5868d31a..39f623197 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -715,12 +715,14 @@ void I2C_print_status(void) { uint8_t major, minor; if (I2C_get_version(&major, &minor) == PM3_SUCCESS) { - Dbprintf(" version................. " _YELLOW_("v%x.%02d"), major, minor); - if (major < 4) { - DbpString(" " _RED_("Outdated firmware.") " Please upgrade to v4.x or above."); - } + + Dbprintf(" version................. v%x.%02d ( %s )" + , major + , minor + , ( (major == 4) && (minor == 42) ) ? _GREEN_("ok") : _RED_("Outdated") + ); } else { - DbpString(" version................. " _RED_("FAILED")); + DbpString(" version................. ( " _RED_("fail") " )"); } } diff --git a/tools/pm3_online_check.py b/tools/pm3_online_check.py index 4db9a2c9f..925e63de8 100755 --- a/tools/pm3_online_check.py +++ b/tools/pm3_online_check.py @@ -204,7 +204,7 @@ def main(): flash_mem = "baudrate................24 mhz".lower() # check smartcard fw version - sm_version = "version.................v4.12".lower() + sm_version = "version................. v4.42".lower() # check LF lf_search = "valid hid prox id found!".lower() From a348d58c6d09d431053af7d79249e39c0a6fe4f0 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 15 Oct 2023 11:24:48 +0200 Subject: [PATCH 0560/1034] support fct --- client/src/util.c | 30 ++++++++++++++++++++++++++++++ client/src/util.h | 1 + 2 files changed, 31 insertions(+) diff --git a/client/src/util.c b/client/src/util.c index 0893ab3d6..b44f52711 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -1048,6 +1048,36 @@ int binstring2binarray(uint8_t *target, char *source, int length) { return count; } +void binstr_2_bytes(uint8_t *target, size_t *targetlen, const char *src) { + size_t binlen = strlen(src); + if (binlen == 0) { + *targetlen = 0; + return; + } + + // Calculate padding needed + size_t padding = (8 - (binlen % 8)) % 8; + + // Determine the size of the hexadecimal array + *targetlen = (binlen + padding) / 8; + + uint8_t b = 0; + size_t bit_cnt = padding; + size_t idx = 0; + + // Process binary string + for (size_t i = 0; i < binlen; ++i) { + b = (b << 1) | (src[i] == '1'); + ++bit_cnt; + + if (bit_cnt == 8) { + target[idx++] = b; + b = 0; + bit_cnt = 0; + } + } +} + // return parity bit required to match type uint8_t GetParity(const uint8_t *bits, uint8_t type, int length) { int x; diff --git a/client/src/util.h b/client/src/util.h index c606113fe..a50bdd370 100644 --- a/client/src/util.h +++ b/client/src/util.h @@ -123,6 +123,7 @@ void binarraytobinstring(char *target, char *source, int length); int binstring2binarray(uint8_t *target, char *source, int length); void byte_2_binstr(char *target, const uint8_t *source, size_t sourcelen); +void binstr_2_bytes(uint8_t *target, size_t *targetlen, const char *src); uint8_t GetParity(const uint8_t *bits, uint8_t type, int length); void wiegand_add_parity(uint8_t *target, uint8_t *source, uint8_t length); From 22b85c74d86b24aaddf2d197643788879ee37b1b Mon Sep 17 00:00:00 2001 From: Antiklesys <syselkitna@gmail.com> Date: Sun, 15 Oct 2023 18:27:25 +0800 Subject: [PATCH 0561/1034] Fixed iclass info available in offline mode Fixed iclass info available in offline mode --- CHANGELOG.md | 2 +- client/src/cmdhficlass.c | 4 ++-- client/src/pm3line_vocabulary.h | 4 ++-- doc/commands.json | 4 ++-- doc/commands.md | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5664e5551..994e02362 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Added `hf iclass creditepurse` command to allow crediting the epurse debit value (@nvx) - Modified `hf iclass configcard` to only support online mode (@Antiklesys) - Modified `hf iclass configcard` command to generate config cards without a cardhelper module by porting the contents of blocks 6 & 7 from nfc-iclass (@Antiklesys) - - Fixed multiple online iclass commands showing incorrectly in offline mode (@Antiklesys) + - Fixed `hf iclass info` command showing incorrectly in offline mode (@Antiklesys) ## [Raccoon.4.17140][2023-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index d79cad63e..3305e4a3d 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -4472,7 +4472,7 @@ static int CmdHFiClassSAM(const char *Cmd) { static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, - {"list", CmdHFiClassList, IfPm3Iclass, "List iclass history"}, + {"list", CmdHFiClassList, AlwaysAvailable, "List iclass history"}, {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("general") " ---------------------"}, // {"clone", CmdHFiClassClone, IfPm3Iclass, "Create a HID credential to Picopass / iCLASS tag"}, {"dump", CmdHFiClassDump, IfPm3Iclass, "Dump Picopass / iCLASS tag to file"}, @@ -4498,7 +4498,7 @@ static command_t CommandTable[] = { {"-----------", CmdHelp, AlwaysAvailable, "---------------------- " _CYAN_("utils") " ----------------------"}, {"configcard", CmdHFiClassConfigCard, IfPm3Iclass, "Reader configuration card"}, {"calcnewkey", CmdHFiClassCalcNewKey, AlwaysAvailable, "Calc diversified keys (blocks 3 & 4) to write new keys"}, - {"encode", CmdHFiClassEncode, IfPm3Iclass, "Encode binary wiegand to block 7"}, + {"encode", CmdHFiClassEncode, AlwaysAvailable, "Encode binary wiegand to block 7"}, {"encrypt", CmdHFiClassEncryptBlk, AlwaysAvailable, "Encrypt given block data"}, {"decrypt", CmdHFiClassDecrypt, AlwaysAvailable, "Decrypt given block data or tag dump file" }, {"managekeys", CmdHFiClassManageKeys, AlwaysAvailable, "Manage keys to use with iclass commands"}, diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index af192e24c..adcd31846 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -267,7 +267,7 @@ const static vocabulary_t vocabulary[] = { { 1, "hf jooki encode" }, { 0, "hf jooki sim" }, { 1, "hf iclass help" }, - { 0, "hf iclass list" }, + { 1, "hf iclass list" }, { 0, "hf iclass dump" }, { 0, "hf iclass info" }, { 0, "hf iclass rdbl" }, @@ -287,7 +287,7 @@ const static vocabulary_t vocabulary[] = { { 0, "hf iclass eview" }, { 0, "hf iclass configcard" }, { 1, "hf iclass calcnewkey" }, - { 0, "hf iclass encode" }, + { 1, "hf iclass encode" }, { 1, "hf iclass encrypt" }, { 1, "hf iclass decrypt" }, { 1, "hf iclass managekeys" }, diff --git a/doc/commands.json b/doc/commands.json index 7d6f4f01b..35ff5d2d9 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3120,7 +3120,7 @@ "hf iclass encode -w H10301 --fc 31 --cn 337 --ki 0 -> FC 31 CN 337 (H10301)", "hf iclass encode --bin 10001111100000001010100011 --ki 0 --elite -> FC 31 CN 337 (H10301), writing w elite key" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help", "--bin <bin> Binary string i.e 0001001001", @@ -3220,7 +3220,7 @@ "hf iclass list --frame -> show frame delay times", "hf iclass list -1 -> use trace buffer" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help", "-1, --buffer use data from trace buffer", diff --git a/doc/commands.md b/doc/commands.md index 4e1be75a2..40216f74b 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -406,7 +406,7 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`hf iclass help `|Y |`This help` -|`hf iclass list `|N |`List iclass history` +|`hf iclass list `|Y |`List iclass history` |`hf iclass dump `|N |`Dump Picopass / iCLASS tag to file` |`hf iclass info `|N |`Tag information` |`hf iclass rdbl `|N |`Read Picopass / iCLASS block` @@ -426,7 +426,7 @@ Check column "offline" for their availability. |`hf iclass eview `|N |`View emulator memory` |`hf iclass configcard `|N |`Reader configuration card` |`hf iclass calcnewkey `|Y |`Calc diversified keys (blocks 3 & 4) to write new keys` -|`hf iclass encode `|N |`Encode binary wiegand to block 7` +|`hf iclass encode `|Y |`Encode binary wiegand to block 7` |`hf iclass encrypt `|Y |`Encrypt given block data` |`hf iclass decrypt `|Y |`Decrypt given block data or tag dump file` |`hf iclass managekeys `|Y |`Manage keys to use with iclass commands` From a35960c6d5e1e54b33a9d0e86e1f92ae2fc111b1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 15 Oct 2023 12:47:45 +0200 Subject: [PATCH 0562/1034] silence codegl --- tools/cryptorf/sma_multi.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/cryptorf/sma_multi.cpp b/tools/cryptorf/sma_multi.cpp index dcb412eba..25c4aabed 100644 --- a/tools/cryptorf/sma_multi.cpp +++ b/tools/cryptorf/sma_multi.cpp @@ -439,7 +439,7 @@ static uint32_t ice_sm_right(const uint8_t *ks, uint8_t *mask, vector<uint64_t> g_topbits = 0; std::vector<std::thread> threads(g_num_cpus); - for (uint8_t m = 0; m < g_num_cpus; m++) { + for (uint32_t m = 0; m < g_num_cpus; m++) { threads[m] = std::thread(ice_sm_right_thread, m, g_num_cpus, ks, &bincstates, mask); } for (auto &t : threads) { @@ -552,7 +552,7 @@ static void ice_sm_left(const uint8_t *ks, uint8_t *mask, vector<cs_t> *pcstates map<uint64_t, cs_t> bincstates; std::vector<std::thread> threads(g_num_cpus); - for (uint8_t m = 0; m < g_num_cpus; m++) { + for (uint32_t m = 0; m < g_num_cpus; m++) { threads[m] = std::thread(ice_sm_left_thread, m, g_num_cpus, ks, &bincstates, mask); } @@ -952,7 +952,7 @@ int main(int argc, const char *argv[]) { key_found = false; key = 0; std::vector<std::thread> threads(g_num_cpus); - for (uint8_t m = 0; m < g_num_cpus; m++) { + for (uint32_t m = 0; m < g_num_cpus; m++) { threads[m] = std::thread(ice_compare, m, g_num_cpus, &pgc_candidates, &ostate, ref(Ci), ref(Q), ref(Ch), ref(Ci_1)); } From 0442e04e055bfbc90e062a0412ce0347fad5b8f6 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 15 Oct 2023 13:19:33 +0200 Subject: [PATCH 0563/1034] text --- client/src/cmddata.c | 10 +++++----- client/src/cmdhficlass.c | 27 +++++++++++---------------- client/src/cmdhflto.c | 4 ++-- doc/cheatsheet.md | 4 ++-- include/pm3_cmd.h | 3 +++ 5 files changed, 23 insertions(+), 25 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 6eb3fcb85..d628a9285 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3279,9 +3279,9 @@ static int CmdNumCon(const char *Cmd) { } radix_t; radix_t radix[] = { - {"dec..... ", 10}, - {"hex..... 0x", 16}, - {"bin..... 0b", 2} + {"dec... ", 10}, + {"hex... ", 16}, + {"bin... ", 2} }; char s[600] = {0}; @@ -3289,8 +3289,8 @@ static int CmdNumCon(const char *Cmd) { for (uint8_t i = 0; i < ARRAYLEN(radix); i++) { MBEDTLS_MPI_CHK(mbedtls_mpi_write_string(&N, radix[i].radix, s, sizeof(s), &slen)); - if (slen > 0) { - PrintAndLogEx(INFO, "%s%s", radix[i].desc, s); + if (slen > 0) { + PrintAndLogEx(SUCCESS, "%s%s", radix[i].desc, s); } } diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 3305e4a3d..b72eba40c 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1286,7 +1286,7 @@ static int CmdHFiClassESetBlk(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_int1("b", "blk", "<dec>", "block number"), + arg_int1(NULL, "blk", "<dec>", "block number"), arg_str0("d", "data", "<hex>", "bytes to write, 8 hex bytes"), arg_param_end }; @@ -2140,15 +2140,15 @@ static int CmdHFiClass_WriteBlock(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf iclass wrbl", "Write data to an iCLASS tag", - "hf iclass wrbl -b 10 -d AAAAAAAAAAAAAAAA -k 001122334455667B\n" - "hf iclass wrbl -b 10 -d AAAAAAAAAAAAAAAA -k 001122334455667B --credit\n" - "hf iclass wrbl -b 10 -d AAAAAAAAAAAAAAAA --ki 0"); + "hf iclass wrbl --blk 10 -d AAAAAAAAAAAAAAAA -k 001122334455667B\n" + "hf iclass wrbl --blk 10 -d AAAAAAAAAAAAAAAA -k 001122334455667B --credit\n" + "hf iclass wrbl --blk 10 -d AAAAAAAAAAAAAAAA --ki 0"); void *argtable[] = { arg_param_begin, arg_str0("k", "key", "<hex>", "Access key as 8 hex bytes"), arg_int0(NULL, "ki", "<dec>", "Key index to select key from memory 'hf iclass managekeys'"), - arg_int1("b", "block", "<dec>", "The block number to read"), + arg_int1(NULL, "blk", "<dec>", "block number"), arg_str1("d", "data", "<hex>", "data to write as 8 hex bytes"), arg_str0("m", "mac", "<hex>", "replay mac data (4 hex bytes)"), arg_lit0(NULL, "credit", "key is assumed to be the credit key"), @@ -2599,15 +2599,15 @@ static int CmdHFiClass_ReadBlock(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf iclass rdbl", "Read a iCLASS block from tag", - "hf iclass rdbl -b 6 -k 0011223344556677\n" - "hf iclass rdbl -b 27 -k 0011223344556677 --credit\n" - "hf iclass rdbl -b 10 --ki 0"); + "hf iclass rdbl --blk 6 -k 0011223344556677\n" + "hf iclass rdbl --blk 27 -k 0011223344556677 --credit\n" + "hf iclass rdbl --blk 10 --ki 0"); void *argtable[] = { arg_param_begin, arg_str0("k", "key", "<hex>", "Access key as 8 hex bytes"), arg_int0(NULL, "ki", "<dec>", "Key index to select key from memory 'hf iclass managekeys'"), - arg_int1("b", "block", "<dec>", "The block number to read"), + arg_int1(NULL, "blk", "<dec>", "Block number"), arg_lit0(NULL, "credit", "key is assumed to be the credit key"), arg_lit0(NULL, "elite", "elite computations applied to key"), arg_lit0(NULL, "raw", "no computations applied to key"), @@ -4431,22 +4431,17 @@ static int CmdHFiClassConfigCard(const char *Cmd) { static int CmdHFiClassSAM(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf iclass sam", - "Manage via SAM\n", + "Extract PACS via a HID SAM\n", "hf iclass sam\n" ); void *argtable[] = { arg_param_begin, - arg_str0("d", "data", "<hex>", "data"), arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); - int dlen = 0; - uint8_t data[128] = {0}; - CLIGetHexWithReturn(ctx, 1, data, &dlen); - - bool verbose = arg_get_lit(ctx, 2); + bool verbose = arg_get_lit(ctx, 1); CLIParserFree(ctx); Iso7816CommandChannel channel = CC_CONTACT; diff --git a/client/src/cmdhflto.c b/client/src/cmdhflto.c index e263c850e..6ffe115c0 100644 --- a/client/src/cmdhflto.c +++ b/client/src/cmdhflto.c @@ -655,12 +655,12 @@ static int CmdHfLTOWriteBlock(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf lto wrbl", "Write data to block on LTO tag", - "hf lto wrbl --block 128 -d 0001020304050607080910111213141516171819202122232425262728293031"); + "hf lto wrbl --blk 128 -d 0001020304050607080910111213141516171819202122232425262728293031"); void *argtable[] = { arg_param_begin, arg_str1("d", "data", "<hex>", "32 bytes of data to write (64 hex symbols, no spaces)"), - arg_int1(NULL, "block", "<dec>", "The block number to write to as an integer"), + arg_int1(NULL, "blk", "<dec>", "The block number to write to as an integer"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); diff --git a/doc/cheatsheet.md b/doc/cheatsheet.md index f012a0f17..0dd86c2a0 100644 --- a/doc/cheatsheet.md +++ b/doc/cheatsheet.md @@ -79,7 +79,7 @@ Read iCLASS Block Options --- -k, --key <hex> Access key as 16 hex symbols --b, --block <dec> The block number to read as an integer + --blk <dec> The block number to read as an integer --ki <dec> Key index to select key from memory 'hf iclass managekeys' --credit key is assumed to be the credit key --elite elite computations applied to key @@ -94,7 +94,7 @@ Write to iCLASS Block Options --- -k, --key <hex> Access key as 16 hex symbols --b, --block <dec> The block number to read as an integer + --blk <dec> The block number to read as an integer -d, --data <hex> data to write as 16 hex symbols --ki <dec> Key index to select key from memory 'hf iclass managekeys' --credit key is assumed to be the credit key diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index f7317ba11..8f488013e 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -803,6 +803,9 @@ typedef struct { // STATIC Nonce detect pm3: when collecting nonces for hardnested #define PM3_ESTATIC_NONCE -25 +// No PACS data pm3: when using HID SAM to retried PACS data +#define PM3_ENOPACS -26 + // No data pm3: no data available, no host frame available (not really an error) #define PM3_ENODATA -98 // Quit program client: reserved, order to quit the program From 026cd7d53d017b10dcaab858f377e7e784682ea3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 15 Oct 2023 13:21:16 +0200 Subject: [PATCH 0564/1034] style --- armsrc/i2c.c | 8 ++-- client/experimental_lib/example_c/test_grab.c | 10 ++--- client/src/cmddata.c | 2 +- client/src/cmdhficlass.c | 20 +++++----- client/src/comms.c | 2 +- doc/commands.json | 37 +++++++++---------- doc/commands.md | 2 +- 7 files changed, 40 insertions(+), 41 deletions(-) diff --git a/armsrc/i2c.c b/armsrc/i2c.c index 39f623197..da9d5b9c7 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -717,10 +717,10 @@ void I2C_print_status(void) { if (I2C_get_version(&major, &minor) == PM3_SUCCESS) { Dbprintf(" version................. v%x.%02d ( %s )" - , major - , minor - , ( (major == 4) && (minor == 42) ) ? _GREEN_("ok") : _RED_("Outdated") - ); + , major + , minor + , ((major == 4) && (minor == 42)) ? _GREEN_("ok") : _RED_("Outdated") + ); } else { DbpString(" version................. ( " _RED_("fail") " )"); } diff --git a/client/experimental_lib/example_c/test_grab.c b/client/experimental_lib/example_c/test_grab.c index 6b093b3ce..f4a6c64bf 100644 --- a/client/experimental_lib/example_c/test_grab.c +++ b/client/experimental_lib/example_c/test_grab.c @@ -23,7 +23,7 @@ int main(int argc, char *argv[]) { // child if (pid == 0) { printf("[INFO] inside child\n"); - + // Redirect stdout to the write end of the pipe dup2(pipefd[1], STDOUT_FILENO); @@ -39,13 +39,13 @@ int main(int argc, char *argv[]) { pm3_close(p); _exit(-1); } else { - + printf("[INFO] inside parent\n"); // Parent: close write end of the pipe close(pipefd[1]); - + // Read from the pipe - while (1) { + while (1) { n = read(pipefd[0], buf, sizeof(buf)); if (n == -1) { continue; @@ -63,5 +63,5 @@ int main(int argc, char *argv[]) { // Close read end close(pipefd[0]); - } + } } diff --git a/client/src/cmddata.c b/client/src/cmddata.c index d628a9285..a1ed8dc65 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3289,7 +3289,7 @@ static int CmdNumCon(const char *Cmd) { for (uint8_t i = 0; i < ARRAYLEN(radix); i++) { MBEDTLS_MPI_CHK(mbedtls_mpi_write_string(&N, radix[i].radix, s, sizeof(s), &slen)); - if (slen > 0) { + if (slen > 0) { PrintAndLogEx(SUCCESS, "%s%s", radix[i].desc, s); } } diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index b72eba40c..df520cb78 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -365,7 +365,7 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke // KEYROLL need to encrypt uint8_t key_en[16] = {0}; uint8_t *keyptr_en = NULL; - if (IsCardHelperPresent(false) == false){ + if (IsCardHelperPresent(false) == false) { size_t keylen = 0; int res_key = loadFile_safe(ICLASS_DECRYPTION_BIN, "", (void **)&keyptr_en, &keylen); if (res_key != PM3_SUCCESS) { @@ -384,13 +384,13 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke PrintAndLogEx(INFO, "Setting up encryption... " NOLF); uint8_t ffs[8] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; - if (IsCardHelperPresent(false) != false){ + if (IsCardHelperPresent(false) != false) { if (Encrypt(ffs, ffs) == false) { PrintAndLogEx(WARNING, "failed to encrypt FF"); } else { PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); } - }else{ + } else { iclass_encrypt_block_data(ffs, key_en); PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); } @@ -400,13 +400,13 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke uint8_t lkey[8]; memcpy(lkey, key, sizeof(lkey)); uint8_t enckey1[8]; - if (IsCardHelperPresent(false) != false){ + if (IsCardHelperPresent(false) != false) { if (Encrypt(lkey, enckey1) == false) { PrintAndLogEx(WARNING, "failed to encrypt key1"); } else { PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); } - }else{ + } else { iclass_encrypt_block_data(lkey, key_en); PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); } @@ -416,7 +416,7 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke memcpy(data + (6 * 8), o->data, sizeof(o->data)); // encrypted keyroll key 0D - if (IsCardHelperPresent(false) != false){ + if (IsCardHelperPresent(false) != false) { memcpy(data + (0x0D * 8), enckey1, sizeof(enckey1)); } else { memcpy(data + (0x0D * 8), lkey, sizeof(enckey1)); @@ -432,14 +432,14 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke uint8_t foo[8] = {0x15}; memcpy(foo + 1, key, 7); uint8_t enckey2[8]; - if (IsCardHelperPresent(false) != false){ + if (IsCardHelperPresent(false) != false) { if (Encrypt(foo, enckey2) == false) { PrintAndLogEx(WARNING, "failed to encrypt partial 1"); } else { PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); memcpy(data + (0x14 * 8), enckey2, sizeof(enckey2)); } - }else{ + } else { iclass_encrypt_block_data(foo, key_en); PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); memcpy(data + (0x14 * 8), foo, sizeof(enckey2)); @@ -449,14 +449,14 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke PrintAndLogEx(INFO, "Setting encrypted partial key15... " NOLF); memset(foo, 0xFF, sizeof(foo)); foo[0] = lkey[7]; - if (IsCardHelperPresent(false) != false){ + if (IsCardHelperPresent(false) != false) { if (Encrypt(foo, enckey2) == false) { PrintAndLogEx(WARNING, "failed to encrypt partial 2"); } else { PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); memcpy(data + (0x15 * 8), enckey2, sizeof(enckey2)); } - }else{ + } else { iclass_encrypt_block_data(foo, key_en); PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); memcpy(data + (0x15 * 8), foo, sizeof(enckey2)); diff --git a/client/src/comms.c b/client/src/comms.c index 4aaa37689..6fd2ff9b0 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -682,7 +682,7 @@ int TestProxmark(pm3_device_t *dev) { int res; if (is_tcp_conn || is_udp_conn) { if ((strstr(g_conn.serial_port_name, "localhost") != NULL) || - (strstr(g_conn.serial_port_name, "127.0.0.1") != NULL)) { + (strstr(g_conn.serial_port_name, "127.0.0.1") != NULL)) { res = uart_reconfigure_timeouts(UART_TCP_CLIENT_LOCAL_RX_TIMEOUT_MS); } else { res = uart_reconfigure_timeouts(UART_TCP_CLIENT_RX_TIMEOUT_MS); diff --git a/doc/commands.json b/doc/commands.json index 35ff5d2d9..20b4b941f 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3178,10 +3178,10 @@ "offline": false, "options": [ "-h, --help This help", - "-b, --blk <dec> block number", + "--blk <dec> block number", "-d, --data <hex> bytes to write, 8 hex bytes" ], - "usage": "hf iclass esetblk [-h] -b <dec> [-d <hex>]" + "usage": "hf iclass esetblk [-h] --blk <dec> [-d <hex>]" }, "hf iclass eview": { "command": "hf iclass eview", @@ -3309,16 +3309,16 @@ "command": "hf iclass rdbl", "description": "Read a iCLASS block from tag", "notes": [ - "hf iclass rdbl -b 6 -k 0011223344556677", - "hf iclass rdbl -b 27 -k 0011223344556677 --credit", - "hf iclass rdbl -b 10 --ki 0" + "hf iclass rdbl --blk 6 -k 0011223344556677", + "hf iclass rdbl --blk 27 -k 0011223344556677 --credit", + "hf iclass rdbl --blk 10 --ki 0" ], "offline": false, "options": [ "-h, --help This help", "-k, --key <hex> Access key as 8 hex bytes", "--ki <dec> Key index to select key from memory 'hf iclass managekeys'", - "-b, --block <dec> The block number to read", + "--blk <dec> Block number", "--credit key is assumed to be the credit key", "--elite elite computations applied to key", "--raw no computations applied to key", @@ -3326,7 +3326,7 @@ "-v, --verbose verbose output", "--shallow use shallow (ASK) reader modulation instead of OOK" ], - "usage": "hf iclass rdbl [-hv] [-k <hex>] [--ki <dec>] -b <dec> [--credit] [--elite] [--raw] [--nr] [--shallow]" + "usage": "hf iclass rdbl [-hv] [-k <hex>] [--ki <dec>] --blk <dec> [--credit] [--elite] [--raw] [--nr] [--shallow]" }, "hf iclass reader": { "command": "hf iclass reader", @@ -3368,17 +3368,16 @@ }, "hf iclass sam": { "command": "hf iclass sam", - "description": "Manage via SAM", + "description": "Extract PACS via a HID SAM", "notes": [ "hf iclass sam" ], "offline": false, "options": [ "-h, --help This help", - "-d, --data <hex> data", "-v, --verbose verbose output" ], - "usage": "hf iclass sam [-hv] [-d <hex>]" + "usage": "hf iclass sam [-hv]" }, "hf iclass sim": { "command": "hf iclass sim", @@ -3437,16 +3436,16 @@ "command": "hf iclass wrbl", "description": "Write data to an iCLASS tag", "notes": [ - "hf iclass wrbl -b 10 -d AAAAAAAAAAAAAAAA -k 001122334455667B", - "hf iclass wrbl -b 10 -d AAAAAAAAAAAAAAAA -k 001122334455667B --credit", - "hf iclass wrbl -b 10 -d AAAAAAAAAAAAAAAA --ki 0" + "hf iclass wrbl --blk 10 -d AAAAAAAAAAAAAAAA -k 001122334455667B", + "hf iclass wrbl --blk 10 -d AAAAAAAAAAAAAAAA -k 001122334455667B --credit", + "hf iclass wrbl --blk 10 -d AAAAAAAAAAAAAAAA --ki 0" ], "offline": false, "options": [ "-h, --help This help", "-k, --key <hex> Access key as 8 hex bytes", "--ki <dec> Key index to select key from memory 'hf iclass managekeys'", - "-b, --block <dec> The block number to read", + "--blk <dec> block number", "-d, --data <hex> data to write as 8 hex bytes", "-m, --mac <hex> replay mac data (4 hex bytes)", "--credit key is assumed to be the credit key", @@ -3456,7 +3455,7 @@ "-v, --verbose verbose output", "--shallow use shallow (ASK) reader modulation instead of OOK" ], - "usage": "hf iclass wrbl [-hv] [-k <hex>] [--ki <dec>] -b <dec> -d <hex> [-m <hex>] [--credit] [--elite] [--raw] [--nr] [--shallow]" + "usage": "hf iclass wrbl [-hv] [-k <hex>] [--ki <dec>] --blk <dec> -d <hex> [-m <hex>] [--credit] [--elite] [--raw] [--nr] [--shallow]" }, "hf jooki clone": { "command": "hf jooki clone", @@ -3951,15 +3950,15 @@ "command": "hf lto wrbl", "description": "Write data to block on LTO tag", "notes": [ - "hf lto wrbl --block 128 -d 0001020304050607080910111213141516171819202122232425262728293031" + "hf lto wrbl --blk 128 -d 0001020304050607080910111213141516171819202122232425262728293031" ], "offline": false, "options": [ "-h, --help This help", "-d, --data <hex> 32 bytes of data to write (64 hex symbols, no spaces)", - "--block <dec> The block number to write to as an integer" + "--blk <dec> The block number to write to as an integer" ], - "usage": "hf lto wrbl [-h] -d <hex> --block <dec>" + "usage": "hf lto wrbl [-h] -d <hex> --blk <dec>" }, "hf mf acl": { "command": "hf mf acl", @@ -11857,6 +11856,6 @@ "metadata": { "commands_extracted": 687, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-10-12T12:53:10" + "extracted_on": "2023-10-15T11:21:02" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 40216f74b..07d744045 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -2,7 +2,7 @@ # Proxmark3 command dump -Some commands are available only if a Proxmark3 is actually connected. +Some commands are available only if a Proxmark3 is actually connected. Check column "offline" for their availability. From 8a9c043aa6df0401d0e1fd43be30df87b3d80016 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 15 Oct 2023 15:23:14 +0200 Subject: [PATCH 0565/1034] fixing "lf hid clone --bin" param to correctly handle sentinel bit --- CHANGELOG.md | 1 + client/src/cmdlfhid.c | 33 ++++++++++++++++++++++++++------- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 994e02362..22335394d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `lf hid clone --bin` - now correctly handles sentinel bits (@iceman1001) - Experimental UDP support in linux (@iceman1001) - Changed CI scripts to speed up the builds (@wh201906) - Changed the timeout of local TCP connections (@wh201906) diff --git a/client/src/cmdlfhid.c b/client/src/cmdlfhid.c index d197a6dcb..7e3763ec5 100644 --- a/client/src/cmdlfhid.c +++ b/client/src/cmdlfhid.c @@ -44,6 +44,7 @@ #include "wiegand_formats.h" #include "wiegand_formatutils.h" #include "cmdlfem4x05.h" // EM defines +#include "loclass/cipherutils.h" // bitstreamout #ifndef BITS # define BITS 96 @@ -399,14 +400,32 @@ static int CmdHIDClone(const char *Cmd) { packed.Mid = mid; packed.Bot = bot; } else if (bin_len) { - int res = binstring_to_u96(&top, &mid, &bot, (const char *)bin); - if (res != bin_len) { - PrintAndLogEx(ERR, "Binary string contains none <0|1> chars"); - return PM3_EINVARG; + + uint8_t hex[12]; + memset(hex, 0, sizeof(hex)); + BitstreamOut_t bout = {hex, 0, 0 }; + + for (int i = 0; i < 96 - bin_len - 1; i++) { + pushBit(&bout, 0); } - packed.Top = top; - packed.Mid = mid; - packed.Bot = bot; + // add binary sentinel bit. + pushBit(&bout, 1); + + // convert binary string to hex bytes + for (int i = 0; i < bin_len; i++) { + char c = bin[i]; + if (c == '1') + pushBit(&bout, 1); + else if (c == '0') + pushBit(&bout, 0); + } + + packed.Length = bin_len; + packed.Top = bytes_to_num(hex, 4); + packed.Mid = bytes_to_num(hex + 4, 4); + packed.Bot = bytes_to_num(hex + 8, 4); + add_HID_header(&packed); + } else { if (HIDPack(format_idx, &card, &packed, true) == false) { PrintAndLogEx(WARNING, "The card data could not be encoded in the selected format."); From 12fc6648700072d8dc26ba52564fb24a338b1c97 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 15 Oct 2023 17:11:36 +0200 Subject: [PATCH 0566/1034] updated commands and text --- client/luascripts/hf_mf_sim_hid.lua | 34 +++++++++++++++-------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/client/luascripts/hf_mf_sim_hid.lua b/client/luascripts/hf_mf_sim_hid.lua index 4091a10b5..610c1984c 100644 --- a/client/luascripts/hf_mf_sim_hid.lua +++ b/client/luascripts/hf_mf_sim_hid.lua @@ -7,7 +7,7 @@ local ansicolors = require('ansicolors') copyright = '' author = "Michael Micsen" -version = 'v0.0.1' +version = 'v0.0.2' desc = [[ Perform simulation of Mifare credentials with HID encoding This script only supports: H10301 @@ -17,12 +17,12 @@ example = [[ script run hf_mf_sim_hid.lua -f 1 -c 10000 ]] usage = [[ -script run hf_mf_sim_hid.lua -f facility -c card_number +script run hf_mf_sim_hid.lua -f <dec> -c <dec> ]] arguments = [[ -h : this help - -f : facility id - -c : starting card id + -f : facility code + -c : card number ]] local DEBUG = true --local bxor = bit32.bxor @@ -126,7 +126,6 @@ local function cardHex(i, f) sentinel = lshift(1, 26) bits = bor(bits, sentinel) - return ('%08x'):format(bits) end --- @@ -146,15 +145,14 @@ local function main(args) if o == 'h' then return help() end if o == 'f' then if isempty(a) then - print('You did not supply a facility code, using 0') + print('Defaulting to facility code 0') facility = 0 else facility = a end end if o == 'c' then - print(a) - if isempty(a) then return oops('You must supply the flag -c (card number)1') end + if isempty(a) then return oops('You must supply a card number') end cardnum = a end end @@ -162,23 +160,27 @@ local function main(args) --Due to my earlier complaints about how this specific getopt library --works, specifying ':' does not enforce supplying a value, thus we --need to do these checks all over again. - if isempty(cardnum) then return oops('You must supply the flag -c (card number)2') end + if isempty(cardnum) then return oops('You must supply a card number') end + --If the facility ID is non specified, ensure we code it as zero if isempty(facility) then - print('Using 0 for the facility code as -f was not supplied') + print('Defaulting to facility code 0') facility = 0 end -- Write the MAD to read for a Mifare HID credential - core.console('hf mf esetblk -b 1 -d 1B014D48000000000000000000000000') - core.console('hf mf esetblk -b 3 -d A0A1A2A3A4A5787788C189ECA97F8C2A') + core.console('hf mf esetblk --blk 1 -d 1B014D48000000000000000000000000') + core.console('hf mf esetblk --blk 3 -d A0A1A2A3A4A5787788C189ECA97F8C2A') --Write the sector trailer for the credential sector - core.console('hf mf esetblk -b 7 -d 484944204953787788AA204752454154') + core.console('hf mf esetblk --blk 7 -d 484944204953787788AA204752454154') local cardh = cardHex(cardnum, facility) - print('Hex') - print(cardh) - core.console( ('hf mf esetblk -b 5 -d 020000000000000000000000%s'):format(cardh) ) + + print('Facility Code... ' .. facility) + print('Card number..... ' .. cardnum) + print('Hex............. ' .. cardh) + print('') + core.console( ('hf mf esetblk --blk 5 -d 020000000000000000000000%s'):format(cardh) ) core.console('hf mf sim --1k -i') end From ade322a4105a6fc9360817e222a2f18d75d9e875 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 15 Oct 2023 17:14:56 +0200 Subject: [PATCH 0567/1034] style --- client/luascripts/hf_mf_sim_hid.lua | 2 +- doc/commands.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/luascripts/hf_mf_sim_hid.lua b/client/luascripts/hf_mf_sim_hid.lua index 610c1984c..3f3933872 100644 --- a/client/luascripts/hf_mf_sim_hid.lua +++ b/client/luascripts/hf_mf_sim_hid.lua @@ -174,7 +174,7 @@ local function main(args) --Write the sector trailer for the credential sector core.console('hf mf esetblk --blk 7 -d 484944204953787788AA204752454154') local cardh = cardHex(cardnum, facility) - + print('Facility Code... ' .. facility) print('Card number..... ' .. cardnum) print('Hex............. ' .. cardh) diff --git a/doc/commands.json b/doc/commands.json index 20b4b941f..e410a0a98 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -11856,6 +11856,6 @@ "metadata": { "commands_extracted": 687, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-10-15T11:21:02" + "extracted_on": "2023-10-15T15:14:39" } } \ No newline at end of file From 13f9972f3999c04bc3c800eba522b1f4dba75fb6 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 15 Oct 2023 17:49:48 +0200 Subject: [PATCH 0568/1034] fix coverity resource leak --- client/src/cmdhficlass.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index df520cb78..fb5b5cdb4 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -370,12 +370,14 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke int res_key = loadFile_safe(ICLASS_DECRYPTION_BIN, "", (void **)&keyptr_en, &keylen); if (res_key != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to find iclass_decryptionkey.bin"); + free(data); return PM3_EINVARG; } if (keylen != 16) { PrintAndLogEx(ERR, "Failed to load transport key from file"); free(keyptr_en); + free(data); return PM3_EINVARG; } memcpy(key_en, keyptr_en, sizeof(key_en)); From 7aef669e594126123811d4356f3ec4573fc59e11 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Mon, 16 Oct 2023 01:52:27 +0800 Subject: [PATCH 0569/1034] Add ringbuffer This is used in the UDP connection --- client/CMakeLists.txt | 1 + client/Makefile | 1 + client/experimental_lib/CMakeLists.txt | 1 + client/src/uart/ringbuffer.c | 102 +++++++++++++++++++++++++ client/src/uart/ringbuffer.h | 26 +++++++ 5 files changed, 131 insertions(+) create mode 100644 client/src/uart/ringbuffer.c create mode 100644 client/src/uart/ringbuffer.h diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index eaee2f0f0..acf079f70 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -286,6 +286,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/mifare/desfirecore.c ${PM3_ROOT}/client/src/mifare/desfiretest.c ${PM3_ROOT}/client/src/mifare/gallaghercore.c + ${PM3_ROOT}/client/src/uart/ringbuffer.c ${PM3_ROOT}/client/src/uart/uart_posix.c ${PM3_ROOT}/client/src/uart/uart_win32.c ${PM3_ROOT}/client/src/ui/overlays.ui diff --git a/client/Makefile b/client/Makefile index b63fdf329..d45e958f7 100644 --- a/client/Makefile +++ b/client/Makefile @@ -707,6 +707,7 @@ SRCS = mifare/aiddesfire.c \ pm3line.c \ proxmark3.c \ scandir.c \ + uart/ringbuffer.c \ uart/uart_posix.c \ uart/uart_win32.c \ scripting.c \ diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index a5caeb014..04198cf88 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -286,6 +286,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/mifare/desfirecore.c ${PM3_ROOT}/client/src/mifare/desfiretest.c ${PM3_ROOT}/client/src/mifare/gallaghercore.c + ${PM3_ROOT}/client/src/uart/ringbuffer.c ${PM3_ROOT}/client/src/uart/uart_posix.c ${PM3_ROOT}/client/src/uart/uart_win32.c ${PM3_ROOT}/client/src/ui/overlays.ui diff --git a/client/src/uart/ringbuffer.c b/client/src/uart/ringbuffer.c new file mode 100644 index 000000000..4a3b01f74 --- /dev/null +++ b/client/src/uart/ringbuffer.c @@ -0,0 +1,102 @@ +#include "ringbuffer.h" +#include <stdlib.h> + +RingBuffer* RingBuf_create(int capacity) { + RingBuffer* buffer = (RingBuffer*)malloc(sizeof(RingBuffer)); + if (!buffer) { + return NULL; + } + + buffer->data = (uint8_t*)calloc(capacity, sizeof(uint8_t)); + if (!buffer->data) { + free(buffer); + return NULL; + } + + buffer->capacity = capacity; + buffer->size = 0; + buffer->front = 0; + buffer->rear = 0; + + return buffer; +} + +inline bool RingBuf_isFull(RingBuffer* buffer) { + return buffer->size == buffer->capacity; +} + +inline bool RingBuf_isEmpty(RingBuffer* buffer) { + return buffer->size == 0; +} + +bool RingBuf_enqueue(RingBuffer* buffer, uint8_t value) { + if (RingBuf_isFull(buffer)) { + return false; + } + + buffer->data[buffer->rear] = value; + buffer->rear = (buffer->rear + 1) % buffer->capacity; + buffer->size++; + return true; +} + +bool RingBuf_dequeue(RingBuffer* buffer, uint8_t* value) { + if (RingBuf_isEmpty(buffer)) { + return false; + } + + *value = buffer->data[buffer->front]; + buffer->front = (buffer->front + 1) % buffer->capacity; + buffer->size--; + return true; +} + +int RingBuf_enqueueBatch(RingBuffer* buffer, const uint8_t* values, int count) { + int processed = 0; + + if (RingBuf_getAvailableSize(buffer) < count) { + count = RingBuf_getAvailableSize(buffer); + } + + for (int i = 0; i < count; i++) { + buffer->data[buffer->rear] = values[i]; + buffer->rear = (buffer->rear + 1) % buffer->capacity; + processed++; + } + + buffer->size += processed; + + return processed; +} + +int RingBuf_dequeueBatch(RingBuffer* buffer, uint8_t* values, int count) { + int processed = 0; + + if (buffer->size < count) { + count = buffer->size; + } + + for (int i = 0; i < count; i++) { + values[i] = buffer->data[buffer->front]; + buffer->front = (buffer->front + 1) % buffer->capacity; + processed++; + } + + buffer->size -= processed; + + return processed; +} + +inline int RingBuf_getUsedSize(RingBuffer* buffer) { + return buffer->size; +} + +inline int RingBuf_getAvailableSize(RingBuffer* buffer) { + return (buffer->capacity) - (buffer->size); +} + +void RingBuf_destroy(RingBuffer* buffer) { + if (buffer != NULL) + free(buffer->data); + free(buffer); +} diff --git a/client/src/uart/ringbuffer.h b/client/src/uart/ringbuffer.h new file mode 100644 index 000000000..e78e284b4 --- /dev/null +++ b/client/src/uart/ringbuffer.h @@ -0,0 +1,26 @@ +#ifndef _RINGBUFFER_H_ +#define _RINGBUFFER_H_ + +#include <stdbool.h> +#include <stdint.h> + +typedef struct { + uint8_t* data; + int capacity; + int size; + int front; + int rear; +} RingBuffer; + +RingBuffer* RingBuf_create(int capacity); +bool RingBuf_isFull(RingBuffer* buffer); +bool RingBuf_isEmpty(RingBuffer* buffer); +bool RingBuf_enqueue(RingBuffer* buffer, uint8_t value); +bool RingBuf_dequeue(RingBuffer* buffer, uint8_t* value); +int RingBuf_enqueueBatch(RingBuffer* buffer, const uint8_t* values, int count); +int RingBuf_dequeueBatch(RingBuffer* buffer, uint8_t* values, int count); +int RingBuf_getUsedSize(RingBuffer* buffer); +int RingBuf_getAvailableSize(RingBuffer* buffer); +void RingBuf_destroy(RingBuffer* buffer); + +#endif From 5775b53078f0429e83622918c57bce03d2b6748b Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Mon, 16 Oct 2023 01:56:03 +0800 Subject: [PATCH 0570/1034] UDP support on Linux --- CHANGELOG.md | 2 +- client/src/uart/uart_posix.c | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22335394d..9d1f80ba5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac ## [unreleased][unreleased] - Fixed `lf hid clone --bin` - now correctly handles sentinel bits (@iceman1001) - - Experimental UDP support in linux (@iceman1001) + - Experimental UDP support in linux (@iceman1001, @wh201906) - Changed CI scripts to speed up the builds (@wh201906) - Changed the timeout of local TCP connections (@wh201906) - Finalized implementation of configcard generation for keyroll when cardhelper is not present (@Antiklesys) diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index c7cdc27a6..cff3b7453 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -21,6 +21,7 @@ #define _DEFAULT_SOURCE #include "uart.h" +#include "ringbuffer.h" #include <stdio.h> #include <string.h> @@ -55,6 +56,7 @@ typedef struct { int fd; // Serial port file descriptor term_info tiOld; // Terminal info before using the port term_info tiNew; // Terminal info during the transaction + RingBuffer* udpBuffer; } serial_port_unix_t_t; // see pm3_cmd.h @@ -84,6 +86,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { return INVALID_SERIAL_PORT; } + sp->udpBuffer = NULL; // init timeouts timeout.tv_usec = UART_FPC_CLIENT_RX_TIMEOUT_MS * 1000; @@ -239,6 +242,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } sp->fd = sfd; + sp->udpBuffer = RingBuf_create(MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 20); return sp; } @@ -427,6 +431,7 @@ void uart_close(const serial_port sp) { //silent error message as it can be called from uart_open failing modes, e.g. when waiting for port to appear //PrintAndLogEx(ERR, "UART error while closing port"); } + RingBuf_destroy(spu->udpBuffer); close(spu->fd); free(sp); } @@ -435,6 +440,7 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin uint32_t byteCount; // FIONREAD returns size on 32b fd_set rfds; struct timeval tv; + const serial_port_unix_t_t *spu = (serial_port_unix_t_t *)sp; if (newtimeout_pending) { timeout.tv_usec = newtimeout_value * 1000; @@ -443,11 +449,30 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin // Reset the output count *pszRxLen = 0; do { + int res; + if(spu->udpBuffer != NULL) { + // for UDP connection, try to use the data from the buffer + + byteCount = RingBuf_getAvailableSize(spu->udpBuffer); + // Cap the number of bytes, so we don't overrun the buffer + if (pszMaxRxLen - (*pszRxLen) < byteCount) { +// PrintAndLogEx(ERR, "UART:: RX prevent overrun (have %u, need %u)", pszMaxRxLen - (*pszRxLen), byteCount); + byteCount = pszMaxRxLen - (*pszRxLen); + } + res = RingBuf_dequeueBatch(spu->udpBuffer, pbtRx + (*pszRxLen), byteCount); + *pszRxLen += res; + + if (*pszRxLen == pszMaxRxLen) { + // We have all the data we wanted. + return PM3_SUCCESS; + } + } + // Reset file descriptor FD_ZERO(&rfds); FD_SET(((serial_port_unix_t_t *)sp)->fd, &rfds); tv = timeout; - int res = select(((serial_port_unix_t_t *)sp)->fd + 1, &rfds, NULL, NULL, &tv); + res = select(((serial_port_unix_t_t *)sp)->fd + 1, &rfds, NULL, NULL, &tv); // Read error if (res < 0) { @@ -470,6 +495,14 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin // PrintAndLogEx(ERR, "UART:: RX ioctl res %d byteCount %u", res, byteCount); if (res < 0) return PM3_ENOTTY; + // For UDP connection, put the incoming data into the buffer and handle them in the next round + if (spu->udpBuffer != NULL) { + uint8_t recvBuf[MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 20]; + res = read(spu->fd, recvBuf, RingBuf_getAvailableSize(spu->udpBuffer)); + RingBuf_enqueueBatch(spu->udpBuffer, recvBuf, res); + continue; + } + // Cap the number of bytes, so we don't overrun the buffer if (pszMaxRxLen - (*pszRxLen) < byteCount) { // PrintAndLogEx(ERR, "UART:: RX prevent overrun (have %u, need %u)", pszMaxRxLen - (*pszRxLen), byteCount); From 3df58f3a9eb853df944c8b045f4bac7c8e15412a Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Mon, 16 Oct 2023 02:07:32 +0800 Subject: [PATCH 0571/1034] Clean up --- client/src/uart/uart_posix.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index cff3b7453..05a728ada 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -470,9 +470,9 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin // Reset file descriptor FD_ZERO(&rfds); - FD_SET(((serial_port_unix_t_t *)sp)->fd, &rfds); + FD_SET(spu->fd, &rfds); tv = timeout; - res = select(((serial_port_unix_t_t *)sp)->fd + 1, &rfds, NULL, NULL, &tv); + res = select(spu->fd + 1, &rfds, NULL, NULL, &tv); // Read error if (res < 0) { @@ -491,7 +491,7 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin } // Retrieve the count of the incoming bytes - res = ioctl(((serial_port_unix_t_t *)sp)->fd, FIONREAD, &byteCount); + res = ioctl(spu->fd, FIONREAD, &byteCount); // PrintAndLogEx(ERR, "UART:: RX ioctl res %d byteCount %u", res, byteCount); if (res < 0) return PM3_ENOTTY; @@ -510,7 +510,7 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin } // There is something available, read the data - res = read(((serial_port_unix_t_t *)sp)->fd, pbtRx + (*pszRxLen), byteCount); + res = read(spu->fd, pbtRx + (*pszRxLen), byteCount); // Stop if the OS has some troubles reading the data if (res <= 0) { @@ -532,13 +532,14 @@ int uart_send(const serial_port sp, const uint8_t *pbtTx, const uint32_t len) { uint32_t pos = 0; fd_set rfds; struct timeval tv; + const serial_port_unix_t_t *spu = (serial_port_unix_t_t *)sp; while (pos < len) { // Reset file descriptor FD_ZERO(&rfds); - FD_SET(((serial_port_unix_t_t *)sp)->fd, &rfds); + FD_SET(spu->fd, &rfds); tv = timeout; - int res = select(((serial_port_unix_t_t *)sp)->fd + 1, NULL, &rfds, NULL, &tv); + int res = select(spu->fd + 1, NULL, &rfds, NULL, &tv); // Write error if (res < 0) { @@ -553,7 +554,7 @@ int uart_send(const serial_port sp, const uint8_t *pbtTx, const uint32_t len) { } // Send away the bytes - res = write(((serial_port_unix_t_t *)sp)->fd, pbtTx + pos, len - pos); + res = write(spu->fd, pbtTx + pos, len - pos); // Stop if the OS has some troubles sending the data if (res <= 0) From 732473bdf2ebc5470478183b4cde81b985471a13 Mon Sep 17 00:00:00 2001 From: Eugenue Cherevatskii <34691028+rozetkinrobot@users.noreply.github.com> Date: Sun, 15 Oct 2023 21:49:46 +0300 Subject: [PATCH 0572/1034] Fix typo in magic_card_notes.md Signed-off-by: Eugenue Cherevatskii <34691028+rozetkinrobot@users.noreply.github.com> --- doc/magic_cards_notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/magic_cards_notes.md b/doc/magic_cards_notes.md index c588d3b54..0477a46ae 100644 --- a/doc/magic_cards_notes.md +++ b/doc/magic_cards_notes.md @@ -1217,7 +1217,7 @@ There are two ways to program this card. ***OR*** - 2. Use the hf_mf_ultimatecard.lua script commands designated but the `script run hf_mf_ulimatecard` examples. + 2. Use the hf_mf_ultimatecard.lua script commands designated but the `script run hf_mf_ultimatecard` examples. script run hf_mf_ultimatecard.lua -h From d738f3171cfb1552c47e0e196907c6bc402f82d6 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 16 Oct 2023 10:14:38 +0200 Subject: [PATCH 0573/1034] maur, thanks to Randy! --- client/dictionaries/mfc_default_keys.dic | 8 +++++++- client/gen_pm3mfsim_script.sh => tools/pm3_gen_mfsim.sh | 0 2 files changed, 7 insertions(+), 1 deletion(-) rename client/gen_pm3mfsim_script.sh => tools/pm3_gen_mfsim.sh (100%) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 3b4ef120b..100cfb4f0 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -1837,11 +1837,17 @@ E19504C39461 FA1FBB3F0F1F FF16014FEFC7 # -# # Food GEM 6686FADE5566 # +# Samsung Data Systems (SDS) — Electronic Locks +# Gen 1 S10 KA/KB is FFFFFFFFFFFF, incompatible with Gen 2 locks +# +# SDS Gen 2 S10 KB +C22E04247D9A +# # Data from Discord, French pool +# SDS Gen 2 S10 KA 9B7C25052FC3 494446555455 # diff --git a/client/gen_pm3mfsim_script.sh b/tools/pm3_gen_mfsim.sh similarity index 100% rename from client/gen_pm3mfsim_script.sh rename to tools/pm3_gen_mfsim.sh From 703a2c968a665aa2d859d15f23307951666c9d5d Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Mon, 16 Oct 2023 20:05:42 +0800 Subject: [PATCH 0574/1034] Faster uart_receive() in UDP mode Added some functions for writing data to the ring buffer directly Increased the size of ring buffer --- client/src/uart/ringbuffer.c | 16 ++++++++++++++++ client/src/uart/ringbuffer.h | 5 +++++ client/src/uart/uart_posix.c | 17 +++++++++++++---- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/client/src/uart/ringbuffer.c b/client/src/uart/ringbuffer.c index 4a3b01f74..13ff133e8 100644 --- a/client/src/uart/ringbuffer.c +++ b/client/src/uart/ringbuffer.c @@ -100,3 +100,19 @@ void RingBuf_destroy(RingBuffer* buffer) { free(buffer->data); free(buffer); } + +inline int RingBuf_getContinousAvailableSize(RingBuffer* buffer) { + const int availableSize = RingBuf_getAvailableSize(buffer); + const int continousSize = (buffer->capacity) - (buffer->rear); + return (availableSize < continousSize) ? availableSize : continousSize; +} + +inline void RingBuf_postEnqueueBatch(RingBuffer* buffer, int count) { + // no check there + buffer->rear = (buffer->rear + count) % buffer->capacity; + buffer->size += count; +} + +inline uint8_t* RingBuf_getRearPtr(RingBuffer* buffer) { + return buffer->data + buffer->rear; +} diff --git a/client/src/uart/ringbuffer.h b/client/src/uart/ringbuffer.h index e78e284b4..35321c8d6 100644 --- a/client/src/uart/ringbuffer.h +++ b/client/src/uart/ringbuffer.h @@ -23,4 +23,9 @@ int RingBuf_getUsedSize(RingBuffer* buffer); int RingBuf_getAvailableSize(RingBuffer* buffer); void RingBuf_destroy(RingBuffer* buffer); +// for direct write +int RingBuf_getContinousAvailableSize(RingBuffer* buffer); +void RingBuf_postEnqueueBatch(RingBuffer* buffer, int count); +uint8_t* RingBuf_getRearPtr(RingBuffer* buffer); + #endif diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index 05a728ada..b864da4b1 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -242,7 +242,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } sp->fd = sfd; - sp->udpBuffer = RingBuf_create(MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 20); + sp->udpBuffer = RingBuf_create(MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 30); return sp; } @@ -497,9 +497,18 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin // For UDP connection, put the incoming data into the buffer and handle them in the next round if (spu->udpBuffer != NULL) { - uint8_t recvBuf[MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 20]; - res = read(spu->fd, recvBuf, RingBuf_getAvailableSize(spu->udpBuffer)); - RingBuf_enqueueBatch(spu->udpBuffer, recvBuf, res); + if (RingBuf_getContinousAvailableSize(spu->udpBuffer) >= byteCount) { + // write to the buffer directly + res = read(spu->fd, RingBuf_getRearPtr(spu->udpBuffer), RingBuf_getAvailableSize(spu->udpBuffer)); + if (res >= 0) { + RingBuf_postEnqueueBatch(spu->udpBuffer, res); + } + } else { + // use transit buffer + uint8_t transitBuf[MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 30]; + res = read(spu->fd, transitBuf, RingBuf_getAvailableSize(spu->udpBuffer)); + RingBuf_enqueueBatch(spu->udpBuffer, transitBuf, res); + } continue; } From a333438fa4f71c3804c6a700164d3d42a6a8ac66 Mon Sep 17 00:00:00 2001 From: Self Not Found <wh201906@yandex.com> Date: Mon, 16 Oct 2023 21:04:15 +0800 Subject: [PATCH 0575/1034] Speed up CodeQL --- .github/workflows/codeql-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index e035578b4..07d1832ce 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -70,7 +70,7 @@ jobs: env: V: 1 PLATFORM_EXTRAS: BTADDON - run: make + run: make -j$((`nproc` + 1)) - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2 From bd34794d263302e2c82290e53a3860093528ae32 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Mon, 16 Oct 2023 21:12:14 +0800 Subject: [PATCH 0576/1034] Add error handling --- client/src/uart/uart_posix.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index b864da4b1..ff2a6cde3 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -509,6 +509,10 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin res = read(spu->fd, transitBuf, RingBuf_getAvailableSize(spu->udpBuffer)); RingBuf_enqueueBatch(spu->udpBuffer, transitBuf, res); } + // Stop if the OS has some troubles reading the data + if (res < 0) { + return PM3_EIO; + } continue; } From 2e0c24c8f21389120ac4331e1f1239df8ab61a15 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 17 Oct 2023 18:32:13 +0800 Subject: [PATCH 0577/1034] Add IPv6 support for TCP (Linux) --- client/src/uart/uart_posix.c | 55 +++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 10 deletions(-) diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index ff2a6cde3..c67199164 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -108,8 +108,10 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { struct addrinfo *addr = NULL, *rp; - char *addrstr = strdup(pcPortName + 4); - if (addrstr == NULL) { + char *addrPortStr = strdup(pcPortName + 4); + char *addrstr = addrPortStr; + const char *portstr; + if (addrPortStr == NULL) { PrintAndLogEx(ERR, "error: string duplication"); free(sp); return INVALID_SERIAL_PORT; @@ -117,26 +119,59 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { timeout.tv_usec = UART_TCP_CLIENT_RX_TIMEOUT_MS * 1000; - char *colon = strrchr(addrstr, ':'); - const char *portstr; - if (colon) { - portstr = colon + 1; - *colon = '\0'; - } else { + // find the start of the address + char *endBracket = strrchr(addrPortStr, ']'); + if (addrPortStr[0] == '[') { + addrstr += 1; + if (endBracket == NULL) { + PrintAndLogEx(ERR, "error: wrong address: [] unmatched"); + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; + } + } + + // find the port + char *lColon = strchr(addrPortStr, ':'); + char *rColon = strrchr(addrPortStr, ':'); + if (rColon == NULL) { + // no colon + // "tcp:<ipv4 address>", "tcp:[<ipv4 address>]" portstr = "18888"; + } else if (lColon == rColon) { + // only one colon + // "tcp:<ipv4 address>:<port>", "tcp:[<ipv4 address>]:<port>" + portstr = rColon + 1; + } else { + // two or more colon, IPv6 address + // tcp:[<ipv6 address>]:<port> + // "tcp:<ipv6 address>", "tcp:[<ipv6 address>]" + if (endBracket != NULL && rColon == endBracket + 1) { + portstr = rColon + 1; + } else { + portstr = "18888"; + } + } + + // handle the end of the address + if (endBracket != NULL) { + *endBracket = '\0'; + } else if (rColon != NULL && lColon == rColon) { + *rColon = '\0'; } struct addrinfo info; memset(&info, 0, sizeof(info)); + info.ai_family = PF_UNSPEC; info.ai_socktype = SOCK_STREAM; int s = getaddrinfo(addrstr, portstr, &info, &addr); if (s != 0) { PrintAndLogEx(ERR, "error: getaddrinfo: %s", gai_strerror(s)); freeaddrinfo(addr); - free(addrstr); + free(addrPortStr); free(sp); return INVALID_SERIAL_PORT; } @@ -155,7 +190,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } freeaddrinfo(addr); - free(addrstr); + free(addrPortStr); if (rp == NULL) { /* No address succeeded */ PrintAndLogEx(ERR, "error: Could not connect"); From 67d36152cc3a86a54250ca1f27f4810a6d35d57e Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 17 Oct 2023 18:40:17 +0800 Subject: [PATCH 0578/1034] Add IPv6 support for UDP (Linux) --- client/src/uart/uart_posix.c | 56 +++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index c67199164..5480e98b7 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -219,8 +219,10 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { struct addrinfo *addr = NULL, *rp; - char *addrstr = strdup(pcPortName + 4); - if (addrstr == NULL) { + char *addrPortStr = strdup(pcPortName + 4); + char *addrstr = addrPortStr; + const char *portstr; + if (addrPortStr == NULL) { PrintAndLogEx(ERR, "error: string duplication"); free(sp); return INVALID_SERIAL_PORT; @@ -228,20 +230,52 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { timeout.tv_usec = UART_TCP_CLIENT_RX_TIMEOUT_MS * 1000; - char *colon = strrchr(addrstr, ':'); - const char *portstr; - if (colon) { - portstr = colon + 1; - *colon = '\0'; - } else { + // find the start of the address + char *endBracket = strrchr(addrPortStr, ']'); + if (addrPortStr[0] == '[') { + addrstr += 1; + if (endBracket == NULL) { + PrintAndLogEx(ERR, "error: wrong address: [] unmatched"); + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; + } + } + + // find the port + char *lColon = strchr(addrPortStr, ':'); + char *rColon = strrchr(addrPortStr, ':'); + if (rColon == NULL) { + // no colon + // "tcp:<ipv4 address>", "tcp:[<ipv4 address>]" portstr = "18888"; + } else if (lColon == rColon) { + // only one colon + // "tcp:<ipv4 address>:<port>", "tcp:[<ipv4 address>]:<port>" + portstr = rColon + 1; + } else { + // two or more colon, IPv6 address + // tcp:[<ipv6 address>]:<port> + // "tcp:<ipv6 address>", "tcp:[<ipv6 address>]" + if (endBracket != NULL && rColon == endBracket + 1) { + portstr = rColon + 1; + } else { + portstr = "18888"; + } + } + + // handle the end of the address + if (endBracket != NULL) { + *endBracket = '\0'; + } else if (rColon != NULL && lColon == rColon) { + *rColon = '\0'; } struct addrinfo info; memset(&info, 0, sizeof(info)); - info.ai_family = AF_INET; + info.ai_family = PF_UNSPEC; info.ai_socktype = SOCK_DGRAM; // info.ai_protocol = SOL_UDP; @@ -249,7 +283,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { if (s != 0) { PrintAndLogEx(ERR, "error: getaddrinfo: %s", gai_strerror(s)); freeaddrinfo(addr); - free(addrstr); + free(addrPortStr); free(sp); return INVALID_SERIAL_PORT; } @@ -268,7 +302,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } freeaddrinfo(addr); - free(addrstr); + free(addrPortStr); if (rp == NULL) { /* No address succeeded */ PrintAndLogEx(ERR, "error: Could not connect"); From d9b5afbb9284f66a309bb545d32edf52093e5505 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 17 Oct 2023 19:40:41 +0800 Subject: [PATCH 0579/1034] Add IPv6 support for TCP (Windows) --- client/src/uart/uart_win32.c | 58 +++++++++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index 541804a24..983127015 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -109,8 +109,10 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { struct addrinfo *addr = NULL, *rp; - char *addrstr = strdup(pcPortName + 4); - if (addrstr == NULL) { + char *addrPortStr = strdup(pcPortName + 4); + char *addrstr = addrPortStr; + const char *portstr; + if (addrPortStr == NULL) { PrintAndLogEx(ERR, "error: string duplication"); free(sp); return INVALID_SERIAL_PORT; @@ -118,13 +120,45 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { timeout.tv_usec = UART_TCP_CLIENT_RX_TIMEOUT_MS * 1000; - char *colon = strrchr(addrstr, ':'); - const char *portstr; - if (colon) { - portstr = colon + 1; - *colon = '\0'; - } else { + // find the start of the address + char *endBracket = strrchr(addrPortStr, ']'); + if (addrPortStr[0] == '[') { + addrstr += 1; + if (endBracket == NULL) { + PrintAndLogEx(ERR, "error: wrong address: [] unmatched"); + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; + } + } + + // find the port + char *lColon = strchr(addrPortStr, ':'); + char *rColon = strrchr(addrPortStr, ':'); + if (rColon == NULL) { + // no colon + // "tcp:<ipv4 address>", "tcp:[<ipv4 address>]" portstr = "18888"; + } else if (lColon == rColon) { + // only one colon + // "tcp:<ipv4 address>:<port>", "tcp:[<ipv4 address>]:<port>" + portstr = rColon + 1; + } else { + // two or more colon, IPv6 address + // tcp:[<ipv6 address>]:<port> + // "tcp:<ipv6 address>", "tcp:[<ipv6 address>]" + if (endBracket != NULL && rColon == endBracket + 1) { + portstr = rColon + 1; + } else { + portstr = "18888"; + } + } + + // handle the end of the address + if (endBracket != NULL) { + *endBracket = '\0'; + } else if (rColon != NULL && lColon == rColon) { + *rColon = '\0'; } WSADATA wsaData; @@ -134,19 +168,21 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != 0) { PrintAndLogEx(ERR, "error: WSAStartup failed with error: %d", iResult); + free(addrPortStr); free(sp); return INVALID_SERIAL_PORT; } memset(&info, 0, sizeof(info)); + info.ai_family = AF_UNSPEC; info.ai_socktype = SOCK_STREAM; info.ai_protocol = IPPROTO_TCP; int s = getaddrinfo(addrstr, portstr, &info, &addr); if (s != 0) { - PrintAndLogEx(ERR, "error: getaddrinfo: %s", gai_strerror(s)); + PrintAndLogEx(ERR, "error: getaddrinfo: %d: %s", s, gai_strerror(s)); freeaddrinfo(addr); - free(addrstr); + free(addrPortStr); free(sp); WSACleanup(); return INVALID_SERIAL_PORT; @@ -167,7 +203,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } freeaddrinfo(addr); - free(addrstr); + free(addrPortStr); if (rp == NULL) { /* No address succeeded */ PrintAndLogEx(ERR, "error: Could not connect"); From 08d55f331cb6e5822aaa9d64e8286d713bd3fb64 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 17 Oct 2023 19:52:39 +0800 Subject: [PATCH 0580/1034] Add an entry in CHANGELOG --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d1f80ba5..6043e3440 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,9 +3,10 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added IPv6 support (@wh201906) - Fixed `lf hid clone --bin` - now correctly handles sentinel bits (@iceman1001) - Experimental UDP support in linux (@iceman1001, @wh201906) - - Changed CI scripts to speed up the builds (@wh201906) + - Changed CI scripts to speed up the builds (@wh201906) - Changed the timeout of local TCP connections (@wh201906) - Finalized implementation of configcard generation for keyroll when cardhelper is not present (@Antiklesys) - Added documentation for compiling on iOS (@The-SamminAter) From d1f916ba25582a1051319a4accb0719fe7282063 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 17 Oct 2023 20:20:21 +0800 Subject: [PATCH 0581/1034] Reduce the default communication timeout for local IPv6 address --- client/src/comms.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/src/comms.c b/client/src/comms.c index 6fd2ff9b0..4d65fd5f9 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -682,7 +682,9 @@ int TestProxmark(pm3_device_t *dev) { int res; if (is_tcp_conn || is_udp_conn) { if ((strstr(g_conn.serial_port_name, "localhost") != NULL) || - (strstr(g_conn.serial_port_name, "127.0.0.1") != NULL)) { + (strstr(g_conn.serial_port_name, "127.0.0.1") != NULL) || + (strstr(g_conn.serial_port_name, "[::1]") != NULL) || + (strstr(g_conn.serial_port_name, "p:::1") != NULL)) { res = uart_reconfigure_timeouts(UART_TCP_CLIENT_LOCAL_RX_TIMEOUT_MS); } else { res = uart_reconfigure_timeouts(UART_TCP_CLIENT_RX_TIMEOUT_MS); From 78e1a845154a58e36f1606d161d0375d0eeadb16 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 17 Oct 2023 14:54:44 +0200 Subject: [PATCH 0582/1034] added the timeout to preferences, so its stored in the pref file but... there need to be adaptations to the uart_p*/uart_w* files to use the the session value.. --- CHANGELOG.md | 1 + client/src/cmdhw.c | 15 ++-- client/src/preferences.c | 151 ++++++++++++++++++++++++++++----------- client/src/ui.h | 1 + 4 files changed, 118 insertions(+), 50 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6043e3440..0ebf42904 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added client communication timeout to preferences (@iceman1001) - Added IPv6 support (@wh201906) - Fixed `lf hid clone --bin` - now correctly handles sentinel bits (@iceman1001) - Experimental UDP support in linux (@iceman1001, @wh201906) diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index 4b26bc00e..d47cec050 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -932,13 +932,12 @@ static int CmdTimeout(const char *Cmd) { CLIParserInit(&ctx, "hw timeout", "Set the communication timeout on the client side", "hw timeout --> Show current timeout\n" - "hw timeout -t 20 --> Set the timeout to 20ms\n" - "hw timeout -t 500 --> Set the timeout to 500ms\n" + "hw timeout --ms 500\n" ); void *argtable[] = { arg_param_begin, - arg_int0("t", "timeout", "<dec>", "timeout in ms"), + arg_int0(NULL, "ms", "<ms>", "timeout in micro seconds"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -949,20 +948,20 @@ static int CmdTimeout(const char *Cmd) { // timeout is not given/invalid, just show the current timeout then return if (arg < 0) { - PrintAndLogEx(INFO, "Current communication timeout: %ums", oldTimeout); + PrintAndLogEx(INFO, "Current communication timeout... " _GREEN_("%u") " ms", oldTimeout); return PM3_SUCCESS; } uint32_t newTimeout = arg; // UART_USB_CLIENT_RX_TIMEOUT_MS is considered as the minimum required timeout. if (newTimeout < UART_USB_CLIENT_RX_TIMEOUT_MS) { - PrintAndLogEx(WARNING, "Timeout less than %ums might cause errors.", UART_USB_CLIENT_RX_TIMEOUT_MS); + PrintAndLogEx(WARNING, "Timeout less than %u ms might cause errors.", UART_USB_CLIENT_RX_TIMEOUT_MS); } else if (newTimeout > 5000) { - PrintAndLogEx(WARNING, "Timeout greater than 5000ms makes the client unresponsive."); + PrintAndLogEx(WARNING, "Timeout greater than 5000 ms makes the client unresponsive."); } uart_reconfigure_timeouts(newTimeout); - PrintAndLogEx(INFO, "Old communication timeout: %ums", oldTimeout); - PrintAndLogEx(INFO, "New communication timeout: %ums", newTimeout); + PrintAndLogEx(INFO, "Old communication timeout... %u ms", oldTimeout); + PrintAndLogEx(INFO, "New communication timeout... " _GREEN_("%u") " ms", newTimeout); return PM3_SUCCESS; } diff --git a/client/src/preferences.c b/client/src/preferences.c index e3aef4ccb..cbdeb69f1 100644 --- a/client/src/preferences.c +++ b/client/src/preferences.c @@ -34,6 +34,7 @@ #include <dirent.h> #include <proxmark3.h> #include "cliparser.h" +#include "uart/uart.h" // uart_reconfigure_timeouts static int CmdHelp(const char *Cmd); static int setCmdHelp(const char *Cmd); @@ -52,6 +53,8 @@ int preferences_load(void) { // Set all defaults g_session.client_debug_level = cdbOFF; // g_session.device_debug_level = ddbOFF; + g_session.timeout = uart_get_timeouts(); + g_session.window_changed = false; g_session.plot.x = 10; g_session.plot.y = 30; @@ -260,7 +263,7 @@ void preferences_save_callback(json_t *root) { } */ JsonSaveInt(root, "client.exe.delay", g_session.client_exe_delay); - + JsonSaveInt(root, "client.timeout", g_session.timeout); } void preferences_load_callback(json_t *root) { json_error_t up_error = {0}; @@ -355,6 +358,10 @@ void preferences_load_callback(json_t *root) { // client command execution delay if (json_unpack_ex(root, &up_error, 0, "{s:i}", "client.exe.delay", &i1) == 0) g_session.client_exe_delay = i1; + + // client command timeout + if (json_unpack_ex(root, &up_error, 0, "{s:i}", "client.timeout", &i1) == 0) + g_session.timeout = i1; } // Help Functions @@ -379,44 +386,44 @@ static void showEmojiState(prefShowOpt_t opt) { switch (g_session.emoji_mode) { case EMO_ALIAS: - PrintAndLogEx(INFO, " %s emoji.................. "_GREEN_("alias"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s emoji................... "_GREEN_("alias"), prefShowMsg(opt)); break; case EMO_EMOJI: - PrintAndLogEx(INFO, " %s emoji.................. "_GREEN_("emoji"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s emoji................... "_GREEN_("emoji"), prefShowMsg(opt)); break; case EMO_ALTTEXT: - PrintAndLogEx(INFO, " %s emoji.................. "_GREEN_("alttext"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s emoji................... "_GREEN_("alttext"), prefShowMsg(opt)); break; case EMO_NONE: - PrintAndLogEx(INFO, " %s emoji.................. "_GREEN_("none"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s emoji................... "_GREEN_("none"), prefShowMsg(opt)); break; default: - PrintAndLogEx(INFO, " %s emoji.................. "_RED_("unknown"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s emoji................... "_RED_("unknown"), prefShowMsg(opt)); } } static void showColorState(prefShowOpt_t opt) { if (g_session.supports_colors) - PrintAndLogEx(INFO, " %s color.................. "_GREEN_("ansi"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s color................... "_GREEN_("ansi"), prefShowMsg(opt)); else - PrintAndLogEx(INFO, " %s color.................. "_WHITE_("off"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s color................... "_WHITE_("off"), prefShowMsg(opt)); } static void showClientDebugState(prefShowOpt_t opt) { switch (g_session.client_debug_level) { case cdbOFF: - PrintAndLogEx(INFO, " %s client debug........... "_WHITE_("off"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s client debug............ "_WHITE_("off"), prefShowMsg(opt)); break; case cdbSIMPLE: - PrintAndLogEx(INFO, " %s client debug........... "_GREEN_("simple"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s client debug............ "_GREEN_("simple"), prefShowMsg(opt)); break; case cdbFULL: - PrintAndLogEx(INFO, " %s client debug........... "_GREEN_("full"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s client debug............ "_GREEN_("full"), prefShowMsg(opt)); break; default: - PrintAndLogEx(INFO, " %s client debug........... "_RED_("unknown"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s client debug............ "_RED_("unknown"), prefShowMsg(opt)); } } /* @@ -448,17 +455,17 @@ static void showSavePathState(savePaths_t path_index, prefShowOpt_t opt) { char s[50]; switch (path_index) { case spDefault: - strcpy(s, "default save path......"); + strcpy(s, "default save path......."); break; case spDump: - strcpy(s, "dump save path........."); + strcpy(s, "dump save path.........."); break; case spTrace: - strcpy(s, "trace save path........"); + strcpy(s, "trace save path........."); break; case spItemCount: default: - strcpy(s, _RED_("unknown")" save path......"); + strcpy(s, _RED_("unknown")" save path......."); } if (path_index < spItemCount) { @@ -478,7 +485,7 @@ static void showSavePathState(savePaths_t path_index, prefShowOpt_t opt) { } static void showPlotPosState(void) { - PrintAndLogEx(INFO, " Plot window............ X "_GREEN_("%4d")" Y "_GREEN_("%4d")" H "_GREEN_("%4d")" W "_GREEN_("%4d"), + PrintAndLogEx(INFO, " plot window............. X "_GREEN_("%4d")" Y "_GREEN_("%4d")" H "_GREEN_("%4d")" W "_GREEN_("%4d"), g_session.plot.x, g_session.plot.y, g_session.plot.h, @@ -487,7 +494,7 @@ static void showPlotPosState(void) { } static void showOverlayPosState(void) { - PrintAndLogEx(INFO, " Slider/Overlay window.. X "_GREEN_("%4d")" Y "_GREEN_("%4d")" H "_GREEN_("%4d")" W "_GREEN_("%4d"), + PrintAndLogEx(INFO, " slider/overlay window... X "_GREEN_("%4d")" Y "_GREEN_("%4d")" H "_GREEN_("%4d")" W "_GREEN_("%4d"), g_session.overlay.x, g_session.overlay.y, g_session.overlay.h, @@ -497,44 +504,47 @@ static void showOverlayPosState(void) { static void showHintsState(prefShowOpt_t opt) { if (g_session.show_hints) - PrintAndLogEx(INFO, " %s hints.................. "_GREEN_("on"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s hints................... "_GREEN_("on"), prefShowMsg(opt)); else - PrintAndLogEx(INFO, " %s hints.................. "_WHITE_("off"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s hints................... "_WHITE_("off"), prefShowMsg(opt)); } static void showPlotSliderState(prefShowOpt_t opt) { if (g_session.overlay_sliders) - PrintAndLogEx(INFO, " %s show plot sliders...... "_GREEN_("on"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s show plot sliders....... "_GREEN_("on"), prefShowMsg(opt)); else - PrintAndLogEx(INFO, " %s show plot sliders...... "_WHITE_("off"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s show plot sliders....... "_WHITE_("off"), prefShowMsg(opt)); } static void showBarModeState(prefShowOpt_t opt) { switch (g_session.bar_mode) { case STYLE_BAR: - PrintAndLogEx(INFO, " %s barmode................ "_GREEN_("bar"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s barmode................. "_GREEN_("bar"), prefShowMsg(opt)); break; case STYLE_MIXED: - PrintAndLogEx(INFO, " %s barmode................ "_GREEN_("mixed"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s barmode................. "_GREEN_("mixed"), prefShowMsg(opt)); break; case STYLE_VALUE: - PrintAndLogEx(INFO, " %s barmode................ "_GREEN_("value"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s barmode................. "_GREEN_("value"), prefShowMsg(opt)); break; default: - PrintAndLogEx(INFO, " %s barmode............... "_RED_("unknown"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s barmode................ "_RED_("unknown"), prefShowMsg(opt)); } } static void showOutputState(prefShowOpt_t opt) { - PrintAndLogEx(INFO, " %s output................. %s", prefShowMsg(opt), + PrintAndLogEx(INFO, " %s output.................. %s", prefShowMsg(opt), g_session.dense_output ? _GREEN_("dense") : _WHITE_("normal")); } static void showClientExeDelayState(void) { - PrintAndLogEx(INFO, " Cmd execution delay.... "_GREEN_("%u"), g_session.client_exe_delay); + PrintAndLogEx(INFO, " cmd execution delay..... "_GREEN_("%u"), g_session.client_exe_delay); } +static void showClientTimeoutState(void) { + PrintAndLogEx(INFO, " communication timeout... " _GREEN_("%u") " ms", g_session.timeout); +} static int setCmdEmoji(const char *Cmd) { CLIParserContext *ctx; @@ -636,9 +646,9 @@ static int setCmdColor(const char *Cmd) { static int setCmdDebug(const char *Cmd) { CLIParserContext *ctx; - CLIParserInit(&ctx, "prefs set clientdebug ", + CLIParserInit(&ctx, "prefs set client.debug ", "Set persistent preference of using clientside debug level", - "prefs set clientdebug --simple" + "prefs set client.debug --simple" ); void *argtable[] = { @@ -798,10 +808,10 @@ static int setCmdOutput(const char *Cmd) { static int setCmdExeDelay(const char *Cmd) { CLIParserContext *ctx; - CLIParserInit(&ctx, "prefs set clientdelay", + CLIParserInit(&ctx, "prefs set client.delay", "Set persistent preference of delay before executing a command in the client", - "prefs set clientdelay --ms 0 --> unsets any delay\n" - "prefs set clientdelay --ms 1000 --> sets 1000ms delay" + "prefs set client.delay --ms 0 --> unsets any delay\n" + "prefs set client.delay --ms 1000 --> sets 1000ms delay" ); void *argtable[] = { @@ -824,9 +834,46 @@ static int setCmdExeDelay(const char *Cmd) { return PM3_SUCCESS; } +static int setClientTimeout(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "prefs set client.timeout", + "Set persistent preference of client communication timeout", + "prefs set client.timeout --ms 0 --> unsets any timeout\n" + "prefs set client.timeout --ms 500\n" + ); + + void *argtable[] = { + arg_param_begin, + arg_int0(NULL, "ms", "<ms>", "timeout in micro seconds"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + uint32_t new_value = (uint32_t)arg_get_int_def(ctx, 1, 0); + CLIParserFree(ctx); + + // UART_USB_CLIENT_RX_TIMEOUT_MS is considered as the minimum required timeout. + if (new_value < UART_USB_CLIENT_RX_TIMEOUT_MS) { + PrintAndLogEx(WARNING, "Timeout less than %u ms might cause errors.", UART_USB_CLIENT_RX_TIMEOUT_MS); + } else if (new_value > 5000) { + PrintAndLogEx(WARNING, "Timeout greater than 5000 ms makes the client unresponsive."); + } + + if (g_session.timeout != new_value) { + showClientTimeoutState(); + g_session.timeout = new_value; + uart_reconfigure_timeouts(new_value); + showClientTimeoutState(); + preferences_save(); + } else { + showClientTimeoutState(); + } + return PM3_SUCCESS; +} + + static int setCmdHint(const char *Cmd) { CLIParserContext *ctx; - CLIParserInit(&ctx, "prefs set hints ", + CLIParserInit(&ctx, "prefs set hints", "Set persistent preference of showing hint messages in the client", "prefs set hints --on" ); @@ -1087,9 +1134,9 @@ static int getCmdColor(const char *Cmd) { static int getCmdDebug(const char *Cmd) { CLIParserContext *ctx; - CLIParserInit(&ctx, "prefs get clientdebug", + CLIParserInit(&ctx, "prefs get client.debug", "Get preference of using clientside debug level", - "prefs get clientdebug" + "prefs get client.debug" ); void *argtable[] = { arg_param_begin, @@ -1169,9 +1216,9 @@ static int getCmdSavePaths(const char *Cmd) { static int getCmdExeDelay(const char *Cmd) { CLIParserContext *ctx; - CLIParserInit(&ctx, "prefs get clientdelay", + CLIParserInit(&ctx, "prefs get client.delay", "Get preference of delay time before execution of a command in the client", - "prefs get clientdelay" + "prefs get client.delay" ); void *argtable[] = { arg_param_begin, @@ -1183,10 +1230,27 @@ static int getCmdExeDelay(const char *Cmd) { return PM3_SUCCESS; } +static int getClientTimeout(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "prefs get client.timeout", + "Get preference of delay time before execution of a command in the client", + "prefs get client.timeout" + ); + void *argtable[] = { + arg_param_begin, + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + CLIParserFree(ctx); + showClientTimeoutState(); + return PM3_SUCCESS; +} + static command_t CommandTableGet[] = { {"barmode", getCmdBarMode, AlwaysAvailable, "Get bar mode preference"}, - {"clientdebug", getCmdDebug, AlwaysAvailable, "Get client debug level preference"}, - {"clientdelay", getCmdExeDelay, AlwaysAvailable, "Get client execution delay preference"}, + {"client.debug", getCmdDebug, AlwaysAvailable, "Get client debug level preference"}, + {"client.delay", getCmdExeDelay, AlwaysAvailable, "Get client execution delay preference"}, + {"client.timeout", getClientTimeout, AlwaysAvailable, "Get client execution delay preference"}, {"color", getCmdColor, AlwaysAvailable, "Get color support preference"}, {"savepaths", getCmdSavePaths, AlwaysAvailable, "Get file folder "}, // {"devicedebug", getCmdDeviceDebug, AlwaysAvailable, "Get device debug level"}, @@ -1200,8 +1264,10 @@ static command_t CommandTableGet[] = { static command_t CommandTableSet[] = { {"help", setCmdHelp, AlwaysAvailable, "This help"}, {"barmode", setCmdBarMode, AlwaysAvailable, "Set bar mode"}, - {"clientdebug", setCmdDebug, AlwaysAvailable, "Set client debug level"}, - {"clientdelay", setCmdExeDelay, AlwaysAvailable, "Set client execution delay"}, + {"client.debug", setCmdDebug, AlwaysAvailable, "Set client debug level"}, + {"client.delay", setCmdExeDelay, AlwaysAvailable, "Set client execution delay"}, + {"client.timeout", setClientTimeout, AlwaysAvailable, "Set client communication timeout"}, + {"color", setCmdColor, AlwaysAvailable, "Set color support"}, {"emoji", setCmdEmoji, AlwaysAvailable, "Set emoji display"}, {"hints", setCmdHint, AlwaysAvailable, "Set hint display"}, @@ -1265,6 +1331,7 @@ static int CmdPrefShow(const char *Cmd) { showBarModeState(prefShowNone); showClientExeDelayState(); showOutputState(prefShowNone); + showClientTimeoutState(); PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; diff --git a/client/src/ui.h b/client/src/ui.h index 4042550b3..4cfd75660 100644 --- a/client/src/ui.h +++ b/client/src/ui.h @@ -62,6 +62,7 @@ typedef struct { uint16_t client_exe_delay; char *history_path; pm3_device_t *current_device; + uint32_t timeout; } session_arg_t; extern session_arg_t g_session; From 5e22ed25bcae08c683b5a62a127cc51acae574e3 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 17 Oct 2023 22:48:12 +0800 Subject: [PATCH 0583/1034] Add UDP support on Windows --- CHANGELOG.md | 1 + client/src/uart/uart_win32.c | 197 ++++++++++++++++++++++++++++++++--- 2 files changed, 182 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ebf42904..7bc571b5a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added UDP support on Windows (@wh201906) - Added client communication timeout to preferences (@iceman1001) - Added IPv6 support (@wh201906) - Fixed `lf hid clone --bin` - now correctly handles sentinel bits (@iceman1001) diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index 983127015..7e7021c71 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -17,6 +17,7 @@ //----------------------------------------------------------------------------- #include "uart.h" +#include "ringbuffer.h" #include <stdio.h> #include <string.h> @@ -33,10 +34,11 @@ #include <ws2tcpip.h> typedef struct { - HANDLE hPort; // Serial port handle - DCB dcb; // Device control settings - COMMTIMEOUTS ct; // Serial port time-out configuration - SOCKET hSocket; // Socket handle + HANDLE hPort; // Serial port handle + DCB dcb; // Device control settings + COMMTIMEOUTS ct; // Serial port time-out configuration + SOCKET hSocket; // Socket handle + RingBuffer* udpBuffer; // Buffer for UDP } serial_port_windows_t; // this is for TCP connection @@ -63,8 +65,7 @@ static int uart_reconfigure_timeouts_polling(serial_port sp) { return PM3_SUCCESS; newtimeout_pending = false; - serial_port_windows_t *spw; - spw = (serial_port_windows_t *)sp; + serial_port_windows_t *spw = (serial_port_windows_t *)sp; spw->ct.ReadIntervalTimeout = newtimeout_value; spw->ct.ReadTotalTimeoutMultiplier = 0; spw->ct.ReadTotalTimeoutConstant = newtimeout_value; @@ -90,6 +91,8 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { return INVALID_SERIAL_PORT; } + sp->udpBuffer = NULL; + char *prefix = strdup(pcPortName); if (prefix == NULL) { PrintAndLogEx(ERR, "error: string duplication"); @@ -225,6 +228,126 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { return sp; } + if (memcmp(prefix, "udp:", 4) == 0) { + free(prefix); + + if (strlen(pcPortName) <= 4) { + PrintAndLogEx(ERR, "error: tcp port name length too short"); + free(sp); + return INVALID_SERIAL_PORT; + } + + struct addrinfo *addr = NULL, *rp; + + char *addrPortStr = strdup(pcPortName + 4); + char *addrstr = addrPortStr; + const char *portstr; + if (addrPortStr == NULL) { + PrintAndLogEx(ERR, "error: string duplication"); + free(sp); + return INVALID_SERIAL_PORT; + } + + timeout.tv_usec = UART_TCP_CLIENT_RX_TIMEOUT_MS * 1000; + + // find the start of the address + char *endBracket = strrchr(addrPortStr, ']'); + if (addrPortStr[0] == '[') { + addrstr += 1; + if (endBracket == NULL) { + PrintAndLogEx(ERR, "error: wrong address: [] unmatched"); + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; + } + } + + // find the port + char *lColon = strchr(addrPortStr, ':'); + char *rColon = strrchr(addrPortStr, ':'); + if (rColon == NULL) { + // no colon + // "tcp:<ipv4 address>", "tcp:[<ipv4 address>]" + portstr = "18888"; + } else if (lColon == rColon) { + // only one colon + // "tcp:<ipv4 address>:<port>", "tcp:[<ipv4 address>]:<port>" + portstr = rColon + 1; + } else { + // two or more colon, IPv6 address + // tcp:[<ipv6 address>]:<port> + // "tcp:<ipv6 address>", "tcp:[<ipv6 address>]" + if (endBracket != NULL && rColon == endBracket + 1) { + portstr = rColon + 1; + } else { + portstr = "18888"; + } + } + + // handle the end of the address + if (endBracket != NULL) { + *endBracket = '\0'; + } else if (rColon != NULL && lColon == rColon) { + *rColon = '\0'; + } + + WSADATA wsaData; + struct addrinfo info; + int iResult; + + iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); + if (iResult != 0) { + PrintAndLogEx(ERR, "error: WSAStartup failed with error: %d", iResult); + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; + } + + memset(&info, 0, sizeof(info)); + info.ai_family = AF_UNSPEC; + info.ai_socktype = SOCK_DGRAM; + info.ai_protocol = IPPROTO_UDP; + + int s = getaddrinfo(addrstr, portstr, &info, &addr); + if (s != 0) { + PrintAndLogEx(ERR, "error: getaddrinfo: %d: %s", s, gai_strerror(s)); + freeaddrinfo(addr); + free(addrPortStr); + free(sp); + WSACleanup(); + return INVALID_SERIAL_PORT; + } + + SOCKET hSocket = INVALID_SOCKET; + for (rp = addr; rp != NULL; rp = rp->ai_next) { + hSocket = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); + + if (hSocket == INVALID_SOCKET) + continue; + + if (connect(hSocket, rp->ai_addr, (int)rp->ai_addrlen) != INVALID_SOCKET) + break; + + closesocket(hSocket); + hSocket = INVALID_SOCKET; + } + + freeaddrinfo(addr); + free(addrPortStr); + + if (rp == NULL) { /* No address succeeded */ + PrintAndLogEx(ERR, "error: Could not connect"); + WSACleanup(); + free(sp); + return INVALID_SERIAL_PORT; + } + + sp->hSocket = hSocket; + sp->udpBuffer = RingBuf_create(MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 30); + + return sp; + } + // Copy the input "com?" to "\\.\COM?" format snprintf(acPortName, sizeof(acPortName), "\\\\.\\%s", pcPortName); _strupr(acPortName); @@ -277,13 +400,14 @@ void uart_close(const serial_port sp) { closesocket(spw->hSocket); WSACleanup(); } + RingBuf_destroy(spw->udpBuffer); if (spw->hPort != INVALID_HANDLE_VALUE) CloseHandle(spw->hPort); free(sp); } bool uart_set_speed(serial_port sp, const uint32_t uiPortSpeed) { - serial_port_windows_t *spw; + serial_port_windows_t *spw = (serial_port_windows_t *)sp; // Set port speed (Input and Output) switch (uiPortSpeed) { @@ -301,7 +425,6 @@ bool uart_set_speed(serial_port sp, const uint32_t uiPortSpeed) { return false; }; - spw = (serial_port_windows_t *)sp; spw->dcb.BaudRate = uiPortSpeed; bool result = SetCommState(spw->hPort, &spw->dcb); PurgeComm(spw->hPort, PURGE_RXABORT | PURGE_RXCLEAR); @@ -320,11 +443,12 @@ uint32_t uart_get_speed(const serial_port sp) { } int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uint32_t *pszRxLen) { - serial_port_windows_t *spw = (serial_port_windows_t *)sp; - if (spw->hSocket == INVALID_SOCKET) { // serial port + const serial_port_windows_t *spw = (serial_port_windows_t *)sp; + if (spw->hSocket == INVALID_SOCKET) { + // serial port uart_reconfigure_timeouts_polling(sp); - int res = ReadFile(((serial_port_windows_t *)sp)->hPort, pbtRx, pszMaxRxLen, (LPDWORD)pszRxLen, NULL); + int res = ReadFile(spw->hPort, pbtRx, pszMaxRxLen, (LPDWORD)pszRxLen, NULL); if (res) return PM3_SUCCESS; @@ -335,7 +459,8 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin } return PM3_ENOTTY; - } else { // TCP + } else { + // TCP or UDP uint32_t byteCount; // FIONREAD returns size on 32b fd_set rfds; struct timeval tv; @@ -347,12 +472,31 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin // Reset the output count *pszRxLen = 0; do { + int res; + if(spw->udpBuffer != NULL) { + // for UDP connection, try to use the data from the buffer + + byteCount = RingBuf_getAvailableSize(spw->udpBuffer); + // Cap the number of bytes, so we don't overrun the buffer + if (pszMaxRxLen - (*pszRxLen) < byteCount) { + // PrintAndLogEx(ERR, "UART:: RX prevent overrun (have %u, need %u)", pszMaxRxLen - (*pszRxLen), byteCount); + byteCount = pszMaxRxLen - (*pszRxLen); + } + res = RingBuf_dequeueBatch(spw->udpBuffer, pbtRx + (*pszRxLen), byteCount); + *pszRxLen += res; + + if (*pszRxLen == pszMaxRxLen) { + // We have all the data we wanted. + return PM3_SUCCESS; + } + } + // Reset file descriptor FD_ZERO(&rfds); FD_SET(spw->hSocket, &rfds); tv = timeout; // the first argument nfds is ignored in Windows - int res = select(0, &rfds, NULL, NULL, &tv); + res = select(0, &rfds, NULL, NULL, &tv); // Read error if (res == SOCKET_ERROR) { @@ -372,9 +516,30 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin // Retrieve the count of the incoming bytes res = ioctlsocket(spw->hSocket, FIONREAD, (u_long *)&byteCount); - // PrintAndLogEx(ERR, "UART:: RX ioctl res %d byteCount %u", res, byteCount); + // PrintAndLogEx(ERR, "UART:: RX ioctl res %d byteCount %u", res, byteCount); if (res == SOCKET_ERROR) return PM3_ENOTTY; + // For UDP connection, put the incoming data into the buffer and handle them in the next round + if (spw->udpBuffer != NULL) { + if (RingBuf_getContinousAvailableSize(spw->udpBuffer) >= byteCount) { + // write to the buffer directly + res = recv(spw->hSocket, (char *)RingBuf_getRearPtr(spw->udpBuffer), RingBuf_getAvailableSize(spw->udpBuffer), 0); + if (res >= 0) { + RingBuf_postEnqueueBatch(spw->udpBuffer, res); + } + } else { + // use transit buffer + uint8_t transitBuf[MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 30]; + res = recv(spw->hSocket, (char *)transitBuf, RingBuf_getAvailableSize(spw->udpBuffer), 0); + RingBuf_enqueueBatch(spw->udpBuffer, transitBuf, res); + } + // Stop if the OS has some troubles reading the data + if (res < 0) { + return PM3_EIO; + } + continue; + } + // Cap the number of bytes, so we don't overrun the buffer if (pszMaxRxLen - (*pszRxLen) < byteCount) { // PrintAndLogEx(ERR, "UART:: RX prevent overrun (have %u, need %u)", pszMaxRxLen - (*pszRxLen), byteCount); @@ -402,10 +567,10 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin } int uart_send(const serial_port sp, const uint8_t *p_tx, const uint32_t len) { - serial_port_windows_t *spw = (serial_port_windows_t *)sp; + const serial_port_windows_t *spw = (serial_port_windows_t *)sp; if (spw->hSocket == INVALID_SOCKET) { // serial port DWORD txlen = 0; - int res = WriteFile(((serial_port_windows_t *)sp)->hPort, p_tx, len, &txlen, NULL); + int res = WriteFile(spw->hPort, p_tx, len, &txlen, NULL); if (res) return PM3_SUCCESS; From ce45b3b2424e52fe5167e530c6631aeef2ad1cf6 Mon Sep 17 00:00:00 2001 From: Jean-Michel Picod <jmichel@google.com> Date: Tue, 17 Oct 2023 17:47:54 +0200 Subject: [PATCH 0584/1034] Fix potential stack overflow while making it easier to support more ATRs --- common/cardhelper.c | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/common/cardhelper.c b/common/cardhelper.c index 7103769c9..8c5fd8c22 100644 --- a/common/cardhelper.c +++ b/common/cardhelper.c @@ -73,27 +73,35 @@ bool IsHIDSamPresent(bool verbose) { } // SAM identification - uint8_t sam_atr[] = {0x3B, 0x95, 0x96, 0x80, 0xB1, 0xFE, 0x55, 0x1F, 0xC7, 0x47, 0x72, 0x61, 0x63, 0x65, 0x13}; - if (memcmp(card.atr, sam_atr, card.atr_len) < 0) { - - uint8_t sam_atr2[] = {0x3b, 0x90, 0x96, 0x91, 0x81, 0xb1, 0xfe, 0x55, 0x1f, 0xc7, 0xd4}; - if (memcmp(card.atr, sam_atr2, card.atr_len) < 0) { - if (verbose) { - PrintAndLogEx(SUCCESS, "Not detecting a SAM"); - } - return false; + smart_card_atr_t supported[] = { + {15, {0x3B, 0x95, 0x96, 0x80, 0xB1, 0xFE, 0x55, 0x1F, 0xC7, 0x47, 0x72, 0x61, 0x63, 0x65, 0x13}}, + {11, {0x3b, 0x90, 0x96, 0x91, 0x81, 0xb1, 0xfe, 0x55, 0x1f, 0xc7, 0xd4}}, + }; + bool found = false; + for (int i = 0; i < sizeof(supported) / sizeof(supported[0]); i++) { + if ((card.atr_len == supported[i].atr_len) && + (memcmp(card.atr, supported[i].atr, supported[i].atr_len) == 0)) { + found = true; + break; } } - - // Suspect some SAMs has version name in their ATR - uint8_t T0 = card.atr[1]; - uint8_t K = T0 & 0x0F; - if (K > 4 && verbose) { - if (byte_strstr(card.atr, card.atr_len, (const uint8_t *)"Grace", 5) > -1) { - PrintAndLogEx(SUCCESS, "SAM (Grace) detected"); - } else if (byte_strstr(card.atr, card.atr_len, (const uint8_t *)"Hopper", 6) > -1) { - PrintAndLogEx(SUCCESS, "SAM (Hopper) detected"); + if (found == false) { + if (verbose) { + PrintAndLogEx(SUCCESS, "Not detecting a SAM"); } + return false; + } + + // Suspect some SAMs has version name in the historical bytes + uint8_t T0 = card.atr[1]; + uint8_t K = T0 & 0x0F; // Number of historical bytes + if (K > 0 && (K < (card.atr_len - 3)) && verbose) { + // Last byte of ATR is CRC and before that we have K bytes of + // "historical bytes". + // By construction K can't go above 15 + char sam_name[16] = {0}; + memcpy(sam_name, &card.atr[card.atr_len - 1 - K], K); + PrintAndLogEx(SUCCESS, "SAM (%s) detected", sam_name); } return true; } From 8cc7022604f7fb7167a8c8575b07c53e467c38a8 Mon Sep 17 00:00:00 2001 From: Jean-Michel Picod <jmichel@google.com> Date: Tue, 17 Oct 2023 19:33:59 +0200 Subject: [PATCH 0585/1034] Remove compilation error. Function is already declared (non-static) in armsrc. Compiler was complaining about re-defining a non-static func by a static one. --- armsrc/Standalone/hf_iceclass.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/armsrc/Standalone/hf_iceclass.c b/armsrc/Standalone/hf_iceclass.c index ea38574db..a47cf6517 100644 --- a/armsrc/Standalone/hf_iceclass.c +++ b/armsrc/Standalone/hf_iceclass.c @@ -116,10 +116,6 @@ static bool have_aa2(void) { return memcmp(aa2_key, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", 8); } -static uint8_t get_pagemap(const picopass_hdr_t *hdr) { - return (hdr->conf.fuses & (FUSE_CRYPT0 | FUSE_CRYPT1)) >> 3; -} - static uint8_t csns[8 * NUM_CSNS] = { 0x01, 0x0A, 0x0F, 0xFF, 0xF7, 0xFF, 0x12, 0xE0, 0x0C, 0x06, 0x0C, 0xFE, 0xF7, 0xFF, 0x12, 0xE0, From a842c8ca0e74ab26f81e96b9bbf1939c7fb327df Mon Sep 17 00:00:00 2001 From: Self Not Found <wh201906@yandex.com> Date: Wed, 18 Oct 2023 10:14:12 +0800 Subject: [PATCH 0586/1034] Change URLs of badge in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5fe1fc0ae..90444f2de 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ The Proxmark3 is the swiss-army tool of RFID, allowing for interactions with the | Actions OSX CI | Actions Ubuntu CI | Actions Windows CI | |:--------------:|:------------------:|:------------------:| -| ![MacOS Build and Test](https://github.com/RfidResearchGroup/proxmark3/workflows/MacOS%20Build%20and%20Test/badge.svg?branch=master) | ![Ubuntu Build and Test](https://github.com/RfidResearchGroup/proxmark3/workflows/Ubuntu%20Build%20and%20Test/badge.svg?branch=master) | [![Windows Build and Test](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/windows.yml/badge.svg?branch=master)](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/windows.yml) | +| [![MacOS Build and Test](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/macos.yml/badge.svg?branch=master)](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/macos.yml) | [![Ubuntu Build and Test](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/ubuntu.yml/badge.svg?branch=master)](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/ubuntu.yml) | [![Windows Build and Test](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/windows.yml/badge.svg?branch=master)](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/windows.yml) | # Table of Contents 1. [PROXMARK3 INSTALLATION AND OVERVIEW](#proxmark3-installation-and-overview) From a5124c310923d20d87be2c08f0f90b3b1f844fad Mon Sep 17 00:00:00 2001 From: Iceman <iceman@iuse.se> Date: Wed, 18 Oct 2023 09:18:01 +0200 Subject: [PATCH 0587/1034] Update README.md Signed-off-by: Iceman <iceman@iuse.se> --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 90444f2de..89bacebf1 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,7 @@ We define generic Proxmark3 platforms as following devices. - Ryscorp green PCB version - Radiowar black PCB version - numerous Chinese adapted versions of the RDV3 easy (kkmoon, PiSwords etc) + - Proxmark3 SE (Second edition) (BLE enabled) **Not supported** - ⚠ Proxmark Evolution (EVO) @@ -96,8 +97,6 @@ We define generic Proxmark3 platforms as following devices. - **Note**: unknown device hw - ⚠ Proxmark3 Ultimate - **Note**: unknown device hw -- ⚠ Proxmark3 SE - - **Note**: unknown device hw When it comes to these new unknown models we are depending on the community to report in if this repo works and what they did to make it work. From 3b7cec365af342697017796eac63bff7fb56e1c6 Mon Sep 17 00:00:00 2001 From: Jean-Michel Picod <jmichel@google.com> Date: Wed, 18 Oct 2023 10:27:12 +0200 Subject: [PATCH 0588/1034] Support double-quoted arguments in CLI When a quoted command argument is seen, it will take all characters until the next double-quote (no supported escape sequence here for simplicity). All white spaces (space, tab, etc.) are then removed from the argument. This means that the following command should behave the same: ``` pm3> wiegand encode --fc 101 --cn 1337 pm3> wiegand encode --fc "1 0 1" --cn "1 3 3 7" ``` Or a more useful example, when copy/pasting hex formatted values: ``` pm3> hf iclass calcnewkey --old 1122334455667788 --new 2233445566778899 pm3> hf iclass calcnewkey --old "11 22 33 44 55 66 77 88" --new "22 33 44 55 66 77 88 99" ``` --- client/deps/cliparser/cliparser.c | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/client/deps/cliparser/cliparser.c b/client/deps/cliparser/cliparser.c index e5e8f946c..c11863ab6 100644 --- a/client/deps/cliparser/cliparser.c +++ b/client/deps/cliparser/cliparser.c @@ -147,6 +147,7 @@ enum ParserState { PS_FIRST, PS_ARGUMENT, PS_OPTION, + PS_QUOTE, }; #define isSpace(c)(c == ' ' || c == '\t') @@ -195,6 +196,10 @@ int CLIParserParseStringEx(CLIParserContext *ctx, const char *str, void *vargtab case PS_ARGUMENT: if (state == PS_FIRST) state = PS_ARGUMENT; + if (str[i] == '"') { + state = PS_QUOTE; + break; + } if (isSpace(str[i])) { spaceptr = bufptr; state = PS_FIRST; @@ -215,6 +220,35 @@ int CLIParserParseStringEx(CLIParserContext *ctx, const char *str, void *vargtab *bufptr = str[i]; bufptr++; break; + case PS_QUOTE: + if (str[i] == '"') { + // Now let's compact the argument by removing spaces + if (spaceptr != NULL) { + // We've seen at least 1 space + char *cur_ptr = spaceptr; + while (spaceptr < bufptr) { + if (isSpace(*spaceptr) == false) { + *cur_ptr = *spaceptr; + cur_ptr++; + } + spaceptr++; + } + *cur_ptr = 0; + // Rollback bufptr + bufptr = cur_ptr; + spaceptr = NULL; + } + *bufptr = 0x00; + state = PS_FIRST; + } else { + if (isSpace(str[i]) && spaceptr == NULL) { + // Store first encountered space for later + spaceptr = bufptr; + } + *bufptr = str[i]; + } + bufptr++; + break; } if (bufptr > bufptrend) { PrintAndLogEx(ERR, "ERROR: Line too long\n"); From 238faaf226432a2f4499ebbfc7ee8bd13181211c Mon Sep 17 00:00:00 2001 From: Jean-Michel Picod <jmichel@google.com> Date: Wed, 18 Oct 2023 10:32:18 +0200 Subject: [PATCH 0589/1034] Add entry to CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bc571b5a..6a711b51c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Add support for quoted arguments in the CLI, allowing spaces in them which + are removed automatically (@jmichelp) - Added UDP support on Windows (@wh201906) - Added client communication timeout to preferences (@iceman1001) - Added IPv6 support (@wh201906) From dbe041231185e3aca57a8bd77636a73c7dff39fd Mon Sep 17 00:00:00 2001 From: Jean-Michel Picod <jmichel@google.com> Date: Wed, 18 Oct 2023 10:38:33 +0200 Subject: [PATCH 0590/1034] Simplify quote handling --- client/deps/cliparser/cliparser.c | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/client/deps/cliparser/cliparser.c b/client/deps/cliparser/cliparser.c index c11863ab6..0ea0bd33b 100644 --- a/client/deps/cliparser/cliparser.c +++ b/client/deps/cliparser/cliparser.c @@ -222,32 +222,13 @@ int CLIParserParseStringEx(CLIParserContext *ctx, const char *str, void *vargtab break; case PS_QUOTE: if (str[i] == '"') { - // Now let's compact the argument by removing spaces - if (spaceptr != NULL) { - // We've seen at least 1 space - char *cur_ptr = spaceptr; - while (spaceptr < bufptr) { - if (isSpace(*spaceptr) == false) { - *cur_ptr = *spaceptr; - cur_ptr++; - } - spaceptr++; - } - *cur_ptr = 0; - // Rollback bufptr - bufptr = cur_ptr; - spaceptr = NULL; - } - *bufptr = 0x00; + *bufptr++ = 0x00; state = PS_FIRST; } else { - if (isSpace(str[i]) && spaceptr == NULL) { - // Store first encountered space for later - spaceptr = bufptr; + if (isSpace(str[i]) == false) { + *bufptr++ = str[i]; } - *bufptr = str[i]; } - bufptr++; break; } if (bufptr > bufptrend) { From 7dbdc7cf101ff3ec186881663ff1801a28acf160 Mon Sep 17 00:00:00 2001 From: Self Not Found <wh201906@yandex.com> Date: Wed, 18 Oct 2023 18:47:32 +0800 Subject: [PATCH 0591/1034] Add short flag -m for timeout related commands --- client/src/cmdhw.c | 7 ++++--- client/src/preferences.c | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index d47cec050..7483a07a9 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -931,13 +931,14 @@ static int CmdTimeout(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hw timeout", "Set the communication timeout on the client side", - "hw timeout --> Show current timeout\n" - "hw timeout --ms 500\n" + "hw timeout --> Show current timeout\n" + "hw timeout -m 20 --> Set the timeout to 20ms\n" + "hw timeout --ms 500 --> Set the timeout to 500ms\n" ); void *argtable[] = { arg_param_begin, - arg_int0(NULL, "ms", "<ms>", "timeout in micro seconds"), + arg_int0("m", "ms", "<ms>", "timeout in micro seconds"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); diff --git a/client/src/preferences.c b/client/src/preferences.c index cbdeb69f1..83deb945d 100644 --- a/client/src/preferences.c +++ b/client/src/preferences.c @@ -839,12 +839,13 @@ static int setClientTimeout(const char *Cmd) { CLIParserInit(&ctx, "prefs set client.timeout", "Set persistent preference of client communication timeout", "prefs set client.timeout --ms 0 --> unsets any timeout\n" - "prefs set client.timeout --ms 500\n" + "prefs set client.timeout -m 20 --> Set the timeout to 20ms\n" + "prefs set client.timeout --ms 500 --> Set the timeout to 500ms\n" ); void *argtable[] = { arg_param_begin, - arg_int0(NULL, "ms", "<ms>", "timeout in micro seconds"), + arg_int0("m", "ms", "<ms>", "timeout in micro seconds"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); From 14a0e0bc723af4617987b59491b38081b46dd9b4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 18 Oct 2023 15:18:58 +0200 Subject: [PATCH 0592/1034] fix old length for sim module --- armsrc/i2c.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/armsrc/i2c.c b/armsrc/i2c.c index da9d5b9c7..8c9110150 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -558,6 +558,15 @@ int16_t I2C_BufferRead(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t case 1: { // Length (LSB) recv_len += *data; + + // old packages.. + if (recv_len > 0x0200) { + // [0] = len + // [1] = data + recv_len >>= 8; + data++; + } + // Adjust len if needed if (len > recv_len) { len = recv_len; From efac735bad893e3e859a5e35937b3a7305837049 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 18 Oct 2023 19:59:34 +0200 Subject: [PATCH 0593/1034] added support for HID SAM picopass communications. Nasty array copying but does the trick. Will need refactoring. --- CHANGELOG.md | 1 + armsrc/Makefile | 4 +- armsrc/appmain.c | 19 +- armsrc/sam_mfc.c | 22 ++ armsrc/sam_mfc.h | 21 ++ armsrc/sam_picopass.c | 446 +++++++++++++++++++++++++++++++++++++++ armsrc/sam_picopass.h | 23 ++ armsrc/sam_seos.c | 22 ++ armsrc/sam_seos.h | 21 ++ client/src/cmdhficlass.c | 102 +++++++-- 10 files changed, 665 insertions(+), 16 deletions(-) create mode 100644 armsrc/sam_mfc.c create mode 100644 armsrc/sam_mfc.h create mode 100644 armsrc/sam_picopass.c create mode 100644 armsrc/sam_picopass.h create mode 100644 armsrc/sam_seos.c create mode 100644 armsrc/sam_seos.h diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a711b51c..822f33018 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `hf iclass sam` - Added support for HID SAM Picopass communications (@iceman1001) - Add support for quoted arguments in the CLI, allowing spaces in them which are removed automatically (@jmichelp) - Added UDP support on Windows (@wh201906) diff --git a/armsrc/Makefile b/armsrc/Makefile index d6ab2bfc4..5f641884a 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -37,13 +37,13 @@ APP_CFLAGS = $(PLATFORM_DEFS) \ SRC_LF = lfops.c lfsampling.c pcf7931.c lfdemod.c lfadc.c SRC_HF = hfops.c SRC_ISO15693 = iso15693.c iso15693tools.c -SRC_ISO14443a = iso14443a.c mifareutil.c mifarecmd.c epa.c mifaresim.c +SRC_ISO14443a = iso14443a.c mifareutil.c mifarecmd.c epa.c mifaresim.c sam_mfc.c sam_seos.c #UNUSED: mifaresniff.c SRC_ISO14443b = iso14443b.c SRC_FELICA = felica.c SRC_CRAPTO1 = crypto1.c des.c desfire_crypto.c mifaredesfire.c aes.c platform_util.c SRC_CRC = crc.c crc16.c crc32.c -SRC_ICLASS = iclass.c optimized_cipherutils.c optimized_ikeys.c optimized_elite.c optimized_cipher.c +SRC_ICLASS = iclass.c optimized_cipherutils.c optimized_ikeys.c optimized_elite.c optimized_cipher.c sam_picopass.c SRC_LEGIC = legicrf.c legicrfsim.c legic_prng.c SRC_NFCBARCODE = thinfilm.c diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 42d551d9b..68490325c 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -62,7 +62,9 @@ #include "crc16.h" #include "protocols.h" #include "mifareutil.h" - +#include "sam_picopass.h" +#include "sam_seos.h" +#include "sam_mfc.h" #ifdef WITH_LCD #include "LCD_disabled.h" @@ -2038,6 +2040,21 @@ static void PacketReceived(PacketCommandNG *packet) { fwdata = NULL; break; } + + case CMD_HF_SAM_PICOPASS: { + sam_picopass_get_pacs(); + break; + } + case CMD_HF_SAM_SEOS: { +// sam_seos_get_pacs(); + break; + } + + case CMD_HF_SAM_MFC: { +// sam_mfc_get_pacs(); + break; + } + #endif #ifdef WITH_FPC_USART diff --git a/armsrc/sam_mfc.c b/armsrc/sam_mfc.c new file mode 100644 index 000000000..773dd199c --- /dev/null +++ b/armsrc/sam_mfc.c @@ -0,0 +1,22 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// Routines to support MFC <-> SAM communication +//----------------------------------------------------------------------------- +#include "sam_seos.h" +#include "iclass.h" + +#include "proxmark3_arm.h" +#include "cmd.h" \ No newline at end of file diff --git a/armsrc/sam_mfc.h b/armsrc/sam_mfc.h new file mode 100644 index 000000000..4a995a6ed --- /dev/null +++ b/armsrc/sam_mfc.h @@ -0,0 +1,21 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +#ifndef __SAM_MFC_H +#define __SAM_MFC_H + +#include "common.h" + +#endif \ No newline at end of file diff --git a/armsrc/sam_picopass.c b/armsrc/sam_picopass.c new file mode 100644 index 000000000..48702680b --- /dev/null +++ b/armsrc/sam_picopass.c @@ -0,0 +1,446 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// Routines to support Picopass <-> SAM communication +//----------------------------------------------------------------------------- +#include "sam_picopass.h" +#include "iclass.h" +#include "crc16.h" +#include "proxmark3_arm.h" +#include "BigBuf.h" +#include "cmd.h" +#include "commonutil.h" +#include "ticks.h" +#include "dbprint.h" +#include "i2c.h" +#include "iso15693.h" +#include "protocols.h" +#include "optimized_cipher.h" +#include "fpgaloader.h" + +static int sam_rxtx(const uint8_t *data, uint16_t n, uint8_t *resp, uint16_t *resplen) { + + StartTicks(); + + bool res = I2C_BufferWrite(data, n, I2C_DEVICE_CMD_SEND_T0, I2C_DEVICE_ADDRESS_MAIN); + if (res == false) { + DbpString("failed to send to SIM CARD"); + goto out; + } + + *resplen = ISO7816_MAX_FRAME; + + res = sc_rx_bytes(resp, resplen, SIM_WAIT_DELAY); + if (res == false) { + DbpString("failed to receive from SIM CARD"); + goto out; + } + + if (*resplen < 2) { + DbpString("received too few bytes from SIM CARD"); + res = false; + goto out; + } + + uint16_t more_len = 0; + + if (resp[*resplen - 2] == 0x61 || resp[*resplen - 2] == 0x9F) { + more_len = resp[*resplen - 1]; + } else { + // we done, return + goto out; + } + + // Don't discard data we already received except the SW code. + // If we only received 1 byte, this is the echo of INS, we discard it. + *resplen -= 2; + if (*resplen == 1) { + *resplen = 0; + } + + uint8_t cmd_getresp[] = {0x00, ISO7816_GET_RESPONSE, 0x00, 0x00, more_len}; + + res = I2C_BufferWrite(cmd_getresp, sizeof(cmd_getresp), I2C_DEVICE_CMD_SEND_T0, I2C_DEVICE_ADDRESS_MAIN); + if (res == false) { + DbpString("failed to send to SIM CARD 2"); + goto out; + } + + more_len = 255 - *resplen; + + res = sc_rx_bytes(resp + *resplen, &more_len, SIM_WAIT_DELAY); + if (res == false) { + DbpString("failed to receive from SIM CARD 2"); + goto out; + } + + *resplen += more_len; + +out: + StopTicks(); + return res; +} + +// using HID SAM to authenticate w PICOPASS +int sam_picopass_get_pacs(void) { + + static uint8_t act_all[] = { ICLASS_CMD_ACTALL }; + static uint8_t identify[] = { ICLASS_CMD_READ_OR_IDENTIFY, 0x00, 0x73, 0x33 }; + static uint8_t read_conf[] = { ICLASS_CMD_READ_OR_IDENTIFY, 0x01, 0xfa, 0x22 }; + uint8_t select[] = { 0x80 | ICLASS_CMD_SELECT, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + uint8_t read_aia[] = { ICLASS_CMD_READ_OR_IDENTIFY, 0x05, 0xde, 0x64}; + uint8_t read_check_cc[] = { 0x80 | ICLASS_CMD_READCHECK, 0x02 }; + + picopass_hdr_t hdr = {0}; + // Bit 4: K.If this bit equals to one, the READCHECK will use the Credit Key (Kc); if equals to zero, Debit Key (Kd) will be used + // bit 7: parity. + // if (use_credit_key) + // read_check_cc[0] = 0x10 | ICLASS_CMD_READCHECK; + + BigBuf_free_keep_EM(); + + clear_trace(); + + I2C_Reset_EnterMainProgram(); StopTicks(); + + uint8_t *resp = BigBuf_calloc(ISO7816_MAX_FRAME); + + bool shallow_mod = false; + uint16_t resp_len = 0; + int res; + uint32_t eof_time = 0; + + // wakeup + Iso15693InitReader(); + + uint32_t start_time = GetCountSspClk(); + iclass_send_as_reader(act_all, 1, &start_time, &eof_time, shallow_mod); + + res = GetIso15693AnswerFromTag(resp, ISO7816_MAX_FRAME, ICLASS_READER_TIMEOUT_ACTALL, &eof_time, false, true, &resp_len); + if (res != PM3_SUCCESS) { + res = PM3_ECARDEXCHANGE; + goto out; + } + + // send Identify + start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER; + iclass_send_as_reader(identify, 1, &start_time, &eof_time, shallow_mod); + + // expect a 10-byte response here, 8 byte anticollision-CSN and 2 byte CRC + res = GetIso15693AnswerFromTag(resp, ISO7816_MAX_FRAME, ICLASS_READER_TIMEOUT_OTHERS, &eof_time, false, true, &resp_len); + if (res != PM3_SUCCESS || resp_len != 10) { + res = PM3_ECARDEXCHANGE; + goto out; + } + + // copy the Anti-collision CSN to our select-packet + memcpy(&select[1], resp, 8); + + // select the card + start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER; + iclass_send_as_reader(select, sizeof(select), &start_time, &eof_time, shallow_mod); + + // expect a 10-byte response here, 8 byte CSN and 2 byte CRC + res = GetIso15693AnswerFromTag(resp, ISO7816_MAX_FRAME, ICLASS_READER_TIMEOUT_OTHERS, &eof_time, false, true, &resp_len); + if (res != PM3_SUCCESS || resp_len != 10) { + res = PM3_ECARDEXCHANGE; + goto out; + } + + // store CSN + memcpy(hdr.csn, resp, sizeof(hdr.csn)); + + // card selected, now read config (block1) (only 8 bytes no CRC) + start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER; + iclass_send_as_reader(read_conf, sizeof(read_conf), &start_time, &eof_time, shallow_mod); + + // expect a 8-byte response here + res = GetIso15693AnswerFromTag(resp, ISO7816_MAX_FRAME, ICLASS_READER_TIMEOUT_OTHERS, &eof_time, false, true, &resp_len); + if (res != PM3_SUCCESS || resp_len != 10) { + res = PM3_ECARDEXCHANGE; + goto out; + } + + // store CONFIG + memcpy((uint8_t *)&hdr.conf, resp, sizeof(hdr.conf)); + + uint8_t pagemap = get_pagemap(&hdr); + if (pagemap == PICOPASS_NON_SECURE_PAGEMODE) { + res = PM3_EWRONGANSWER; + goto out; + } + + // read App Issuer Area block 5 + start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER; + iclass_send_as_reader(read_aia, sizeof(read_aia), &start_time, &eof_time, shallow_mod); + + // expect a 10-byte response here + res = GetIso15693AnswerFromTag(resp, ISO7816_MAX_FRAME, ICLASS_READER_TIMEOUT_OTHERS, &eof_time, false, true, &resp_len); + if (res != PM3_SUCCESS || resp_len != 10) { + res = PM3_ECARDEXCHANGE; + goto out; + } + + // store AIA + memcpy(hdr.app_issuer_area, resp, sizeof(hdr.app_issuer_area)); + + // card selected, now read e-purse (cc) (block2) (only 8 bytes no CRC) + start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER; + iclass_send_as_reader(read_check_cc, sizeof(read_check_cc), &start_time, &eof_time, shallow_mod); + + // expect a 8-byte response here + res = GetIso15693AnswerFromTag(resp, ISO7816_MAX_FRAME, ICLASS_READER_TIMEOUT_OTHERS, &eof_time, false, true, &resp_len); + if (res != PM3_SUCCESS || resp_len != 8) { + res = PM3_ECARDEXCHANGE; + goto out; + } + + // store EPURSE + memcpy(hdr.epurse, resp, sizeof(hdr.epurse)); + + // ----------------------------------------------------------------------------- + // SAM comms + // ----------------------------------------------------------------------------- + size_t sam_len = 0; + uint8_t *sam_apdu = BigBuf_calloc(ISO7816_MAX_FRAME); + + // ----------------------------------------------------------------------------- + // first + // a0 da 02 63 1a 44 0a 44 00 00 00 a0 12 ad 10 a0 0e 80 02 00 04 81 08 9b fc a4 00 fb ff 12 e0 + hexstr_to_byte_array("a0da02631a440a44000000a012ad10a00e800200048108", sam_apdu, &sam_len); + memcpy(sam_apdu + sam_len, hdr.csn, sizeof(hdr.csn)); + sam_len += sizeof(hdr.csn); + + if (sam_rxtx(sam_apdu, sam_len, resp, &resp_len) == false) { + res = PM3_ECARDEXCHANGE; + goto out; + } + print_dbg("-- 1",resp, resp_len); + + // ----------------------------------------------------------------------------- + // second + // a0 da 02 63 0d 44 0a 44 00 00 00 a0 05 a1 03 80 01 04 + hexstr_to_byte_array("a0da02630d440a44000000a005a103800104", sam_apdu, &sam_len); + if (sam_rxtx(sam_apdu, sam_len, resp, &resp_len) == false) { + res = PM3_ECARDEXCHANGE; + goto out; + } + print_dbg("-- 2",resp, resp_len); + + // TAG response + // -- 0c 05 de64 // read block 5 + // Tag|c00a140a000000a110a10e8004 0c05de64 8102 0004 820201f4 + + // ----------------------------------------------------------------------------- + // third AIA block 5 + // a0da02631c140a00000000bd14a012a010800a ffffff0006fffffff88e 81020000 + // picopass legacy is fixed. wants AIA and crc. ff ff ff ff ff ff ff ff ea f5 + // picpoasss SE ff ff ff 00 06 ff ff ff f8 8e + hexstr_to_byte_array("a0da02631c140a00000000bd14a012a010800affffff0006fffffff88e81020000", sam_apdu, &sam_len); + memcpy(sam_apdu + 19, hdr.app_issuer_area, sizeof(hdr.app_issuer_area)); + AddCrc(sam_apdu + 19, 8); + + if (sam_rxtx(sam_apdu, sam_len, resp, &resp_len) == false) { + res = PM3_ECARDEXCHANGE; + goto out; + } + print_dbg("-- 3",resp, resp_len); + + // 88 02 -- readcheck (block2 epurse, start of auth) + // Tag|c00a140a000000a10ea10c8002 8802 8102 0004 820201f4 9000 + // 61 16 f5 0a140a000000a10ea10c 8002 8802 8102 0004 820201f4 9000 + + // ----------------------------------------------------------------------------- + // forth EPURSE + // a0da02631a140a00000000bd12a010a00e8008 ffffffffedffffff 81020000 + hexstr_to_byte_array("a0da02631a140a00000000bd12a010a00e8008ffffffffedffffff81020000", sam_apdu, &sam_len); + memcpy(sam_apdu + 19, hdr.epurse, sizeof(hdr.epurse)); + + if (sam_rxtx(sam_apdu, sam_len, resp, &resp_len) == false) { + res = PM3_ECARDEXCHANGE; + goto out; + } + print_dbg("-- 4",resp, resp_len); + + uint8_t nr_mac[9] = {0}; + memcpy(nr_mac, resp + 11, sizeof(nr_mac)); + // resp here hold the whole NR/MAC + // 05 9bcd475e965ee20e // CHECK (w key) + print_dbg("NR/MAC",nr_mac, sizeof(nr_mac)); + + // c00a140a000000a115a1138009 059bcd475e965ee20e 8102 0004 820201f4 9000 + + // pre calc ourself? + // uint8_t cc_nr[] = {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0, 0, 0}; + uint8_t div_key[8] = {0}; + static uint8_t legacy_aa1_key[] = {0xAE, 0xA6, 0x84, 0xA6, 0xDA, 0xB2, 0x32, 0x78}; + iclass_calc_div_key(hdr.csn, legacy_aa1_key, div_key, false); + + uint8_t mac[4] = {0}; + if (g_dbglevel == DBG_DEBUG) { + uint8_t wb[16] = {0}; + memcpy(wb, hdr.epurse, sizeof(hdr.epurse)); + memcpy(wb + sizeof(hdr.epurse), nr_mac+1, 4); + print_dbg("cc_nr...", wb, sizeof(wb)); + doMAC_N(wb, sizeof(wb), div_key, mac); + print_dbg("Calc MAC...", mac, sizeof(mac)); + } + + // start ssp clock again... + StartCountSspClk(); + + // NOW we auth against tag + uint8_t cmd_check[9] = { ICLASS_CMD_CHECK }; + memcpy(cmd_check + 1, nr_mac + 1, 8); + + start_time = GetCountSspClk(); + iclass_send_as_reader(cmd_check, sizeof(cmd_check), &start_time, &eof_time, shallow_mod); + + // expect a 10-byte response here + res = GetIso15693AnswerFromTag(resp, ISO7816_MAX_FRAME, ICLASS_READER_TIMEOUT_OTHERS, &eof_time, false, true, &resp_len); + if (res != PM3_SUCCESS || resp_len != 4) { + res = PM3_ECARDEXCHANGE; + goto out; + } + // store MAC + memcpy(mac, resp, sizeof(mac)); + print_dbg("Got MAC",mac,sizeof(mac)); + + // ----------------------------------------------------------------------------- + // fifth send received MAC + // A0DA026316140A00000000BD0EA00CA00A8004 311E32E9 81020000 + hexstr_to_byte_array("A0DA026316140A00000000BD0EA00CA00A8004311E32E981020000", sam_apdu, &sam_len); + memcpy(sam_apdu + 19, mac, sizeof(mac)); + + if (sam_rxtx(sam_apdu, sam_len, resp, &resp_len) == false) { + res = PM3_ECARDEXCHANGE; + goto out; + } + print_dbg("-- 5",resp, resp_len); + + uint8_t tmp_p1[4] = {0}; + uint8_t tmp_p2[4] = {0}; + + // c161c10000a11aa118800e8702 ffffffff88ffffff 0a914eb981020004820236b09000 + + memcpy(tmp_p1, resp + 13, sizeof(tmp_p1)); + memcpy(tmp_p2, resp + 13 + 4, sizeof(tmp_p2)); + // ----------------------------------------------------------------------------- + // sixth send fake epurse update + // A0DA02631C140A00000000BD14A012A010800A 88FFFFFFFFFFFFFF9DE1 81020000 + hexstr_to_byte_array("A0DA02631C140A00000000BD14A012A010800A88FFFFFFFFFFFFFF9DE181020000", sam_apdu, &sam_len); + + memcpy(sam_apdu + 19, tmp_p2, sizeof(tmp_p1)); + memcpy(sam_apdu + 19 + 4, tmp_p1, sizeof(tmp_p1)); + AddCrc(sam_apdu + 19, 8); + + if (sam_rxtx(sam_apdu, sam_len, resp, &resp_len) == false) { + res = PM3_ECARDEXCHANGE; + goto out; + } + print_dbg("-- 6",resp, resp_len); + // c1 61 c1 00 00 a1 10 a1 0e 80 04 0c 06 45 56 81 02 00 04 82 02 01 f4 90 00 + + // read block 6 + StartCountSspClk(); + start_time = GetCountSspClk(); + iclass_send_as_reader(resp + 11, 4, &start_time, &eof_time, shallow_mod); + + // expect a 10-byte response here + res = GetIso15693AnswerFromTag(resp, ISO7816_MAX_FRAME, ICLASS_READER_TIMEOUT_OTHERS, &eof_time, false, true, &resp_len); + if (res != PM3_SUCCESS || resp_len != 10) { + res = PM3_ECARDEXCHANGE; + goto out; + } + print_dbg("Block 6 from Picopass",resp, resp_len); + + // ----------------------------------------------------------------------------- + // eight send block 6 config to SAM + // A0DA02631C140A00000000BD14A012A010800A 030303030003E0174323 81020000 + hexstr_to_byte_array("A0DA02631C140A00000000BD14A012A010800A030303030003E017432381020000", sam_apdu, &sam_len); + memcpy(sam_apdu + 19, resp, resp_len); + + if (sam_rxtx(sam_apdu, sam_len, resp, &resp_len) == false) { + res = PM3_ECARDEXCHANGE; + goto out; + } + print_dbg("-- 7", resp, resp_len); + + // c161c10000a110a10e8004 0606455681020004820201f49000 + + // read the credential blocks + StartCountSspClk(); + start_time = GetCountSspClk(); + iclass_send_as_reader(resp + 11, 4, &start_time, &eof_time, shallow_mod); + + // expect a 10-byte response here + res = GetIso15693AnswerFromTag(resp, ISO7816_MAX_FRAME, ICLASS_READER_TIMEOUT_OTHERS, &eof_time, false, true, &resp_len); + if (res != PM3_SUCCESS) { + res = PM3_ECARDEXCHANGE; + goto out; + } + print_dbg("Block 6-9 from Picopass",resp, resp_len); + + // ----------------------------------------------------------------------------- + // nine send credential blocks to SAM + // A0DA026334140A00000000BD2CA02AA0288022 030303030003E017769CB4A198E0DEC82AD4C8211F9968712BE7393CF8E71D7E804C 81020000 + hexstr_to_byte_array("A0DA026334140A00000000BD2CA02AA0288022030303030003E017769CB4A198E0DEC82AD4C8211F9968712BE7393CF8E71D7E804C81020000", sam_apdu, &sam_len); + memcpy(sam_apdu + 19, resp, resp_len); + + if (sam_rxtx(sam_apdu, sam_len, resp, &resp_len) == false) { + res = PM3_ECARDEXCHANGE; + goto out; + } + print_dbg("-- 8",resp, resp_len); + + + // ----------------------------------------------------------------------------- + // TEN ask for PACS data + // A0DA02630C440A00000000BD04A0028200 + hexstr_to_byte_array("A0DA02630C440A00000000BD04A0028200", sam_apdu, &sam_len); + memcpy(sam_apdu + 19, resp, resp_len); + + if (sam_rxtx(sam_apdu, sam_len, resp, &resp_len) == false) { + res = PM3_ECARDEXCHANGE; + goto out; + } + + print_dbg("-- 9 response", resp, resp_len); + if (memcmp(resp, "\xc1\x64\x00\x00\x00\xbd\x17\x8a\x15", 9) == 0) { + res = PM3_ENOPACS; + goto out; + } + + // c164000000bd098a07 030506951f9a00 9000 + uint8_t *pacs = BigBuf_calloc(resp[8]); + memcpy(pacs, resp + 9, resp[8]); + + print_dbg("-- 10 PACS data", pacs, resp[8]); + + reply_ng(CMD_HF_SAM_PICOPASS, PM3_SUCCESS, pacs, resp[8]); + res = PM3_SUCCESS; + goto off; + +out: + reply_ng(CMD_HF_SAM_PICOPASS, res, NULL, 0); + +off: + switch_off(); + BigBuf_free(); + return res; +} + +// HID SAM <-> MFC +// HID SAM <-> SEOS diff --git a/armsrc/sam_picopass.h b/armsrc/sam_picopass.h new file mode 100644 index 000000000..a4f553c5b --- /dev/null +++ b/armsrc/sam_picopass.h @@ -0,0 +1,23 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +#ifndef __SAM_PICOPASS_H +#define __SAM_PICOPASS_H + +#include "common.h" + +int sam_picopass_get_pacs(void); + +#endif \ No newline at end of file diff --git a/armsrc/sam_seos.c b/armsrc/sam_seos.c new file mode 100644 index 000000000..2f0f01817 --- /dev/null +++ b/armsrc/sam_seos.c @@ -0,0 +1,22 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// Routines to support SEOS <-> SAM communication +//----------------------------------------------------------------------------- +#include "sam_seos.h" +#include "iclass.h" + +#include "proxmark3_arm.h" +#include "cmd.h" \ No newline at end of file diff --git a/armsrc/sam_seos.h b/armsrc/sam_seos.h new file mode 100644 index 000000000..7cc08517b --- /dev/null +++ b/armsrc/sam_seos.h @@ -0,0 +1,21 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +#ifndef __SAM_SEOS_H +#define __SAM_SEOS_H + +#include "common.h" + +#endif \ No newline at end of file diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index fb5b5cdb4..0d9af88ec 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -4446,24 +4446,100 @@ static int CmdHFiClassSAM(const char *Cmd) { bool verbose = arg_get_lit(ctx, 1); CLIParserFree(ctx); - Iso7816CommandChannel channel = CC_CONTACT; - if (IfPm3Smartcard() == false) { - if (channel == CC_CONTACT) { - PrintAndLogEx(WARNING, "PM3 does not have SMARTCARD support, exiting"); - return PM3_EDEVNOTSUPP; - } + if (IsHIDSamPresent(verbose) == false) { + return PM3_ESOFT; } - int res = IsHIDSamPresent(verbose); - if (res != PM3_SUCCESS) { - return res; + clearCommandBuffer(); + SendCommandNG(CMD_HF_SAM_PICOPASS, NULL, 0); + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_HF_SAM_PICOPASS, &resp, 4000) == false) { + PrintAndLogEx(WARNING, "SAM timeout"); + return PM3_ETIMEOUT; } - SetAPDULogging(verbose); + switch (resp.status) { + case PM3_SUCCESS: + break; + case PM3_ENOPACS: + PrintAndLogEx(SUCCESS, "No PACS data found. Card empty?"); + return resp.status; + default: + PrintAndLogEx(WARNING, "SAM select failed"); + return resp.status; + } -// do things with sending apdus.. + // CSN, config, epurse, NR/MAC, AIA + // PACS + // first byte skip + // second byte length + // third padded + // fourth .. + uint8_t *d = resp.data.asBytes; + uint8_t n = d[1] - 1; // skip length byte + uint8_t pad = d[2]; + char *binstr = (char*)calloc((n * 8) + 1 , sizeof(uint8_t)); + if (binstr == NULL) { + return PM3_EMALLOC; + } + + byte_2_binstr(binstr, d + 3, n); + + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(SUCCESS, "PACS......... " _GREEN_("%s"), sprint_hex_inrow(d + 2, resp.length - 2)); + PrintAndLogEx(SUCCESS, "padded bin... " _GREEN_("%s") " ( %zu )", binstr, strlen(binstr)); + + binstr[strlen(binstr) - pad] = '\0'; + PrintAndLogEx(SUCCESS, "bin.......... " _GREEN_("%s") " ( %zu )", binstr, strlen(binstr)); + + size_t hexlen = 0; + uint8_t hex[16] = {0}; + binstr_2_bytes(hex, &hexlen,binstr); + PrintAndLogEx(SUCCESS, "hex.......... " _GREEN_("%s"), sprint_hex_inrow(hex, hexlen)); + + uint32_t top = 0, mid = 0, bot = 0; + if (binstring_to_u96(&top, &mid, &bot, binstr) != strlen(binstr)) { + PrintAndLogEx(ERR, "Binary string contains none <0|1> chars"); + free(binstr); + return PM3_EINVARG; + } + + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "Wiegand decode"); + wiegand_message_t packed = initialize_message_object(top, mid, bot, 0); + HIDTryUnpack(&packed); + + PrintAndLogEx(NORMAL, ""); + + if (strlen(binstr) >= 26 && verbose) { + + // HID Prox II + PrintAndLogEx(INFO, "Downgrade to " _YELLOW_("HID Prox II")); + PrintAndLogEx(SUCCESS, " lf hid clone -w H10301 --bin %s", binstr); + PrintAndLogEx(NORMAL, ""); + // MIFARE Classic + char mfcbin[28] = {0}; + mfcbin[0] = '1'; + memcpy(mfcbin + 1, binstr, strlen(binstr)); + binstr_2_bytes(hex, &hexlen, mfcbin); + + PrintAndLogEx(INFO, "Downgrade to " _YELLOW_("MIFARE Classic") " (Pm3 simulation)"); + PrintAndLogEx(SUCCESS, " hf mf eclr;"); + PrintAndLogEx(SUCCESS, " hf mf esetblk --blk 0 -d 049DBA42A23E80884400C82000000000;"); + PrintAndLogEx(SUCCESS, " hf mf esetblk --blk 1 -d 1B014D48000000000000000000000000;"); + PrintAndLogEx(SUCCESS, " hf mf esetblk --blk 3 -d A0A1A2A3A4A5787788C189ECA97F8C2A;"); + PrintAndLogEx(SUCCESS, " hf mf esetblk --blk 5 -d 020000000000000000000000%s;", sprint_hex_inrow(hex, hexlen)); + PrintAndLogEx(SUCCESS, " hf mf esetblk --blk 7 -d 484944204953787788AA204752454154;"); + PrintAndLogEx(SUCCESS, " hf mf sim --1k -i;"); + PrintAndLogEx(NORMAL, ""); + + // iCLASS Legacy + PrintAndLogEx(INFO, "Clone to " _YELLOW_("iCLASS Legacy")); + PrintAndLogEx(SUCCESS, " hf iclass encode --ki 0 --bin %s", binstr); + PrintAndLogEx(NORMAL, ""); + } + free(binstr); - SetAPDULogging(false); return PM3_SUCCESS; } @@ -4516,7 +4592,7 @@ int CmdHFiClass(const char *Cmd) { return CmdsParse(CommandTable, Cmd); } -//static void test_credential_type(void) { +// static void test_credential_type(void) { // need AA1 key // Block 5 -> tells if its a legacy or SIO, also tells which key to use. From 185da09e6276f33b859ce6ae27cc51206ebd8453 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 18 Oct 2023 20:20:55 +0200 Subject: [PATCH 0594/1034] we use calloc --- armsrc/hitag2crack.c | 2 +- client/src/cmdlfem4x05.c | 2 +- client/src/crypto/libpcrypto.c | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/armsrc/hitag2crack.c b/armsrc/hitag2crack.c index ed7daecd5..bd5fc2a94 100644 --- a/armsrc/hitag2crack.c +++ b/armsrc/hitag2crack.c @@ -569,7 +569,7 @@ bool hitag2_keystream(uint8_t *response, uint8_t *nrarhex) { uint8_t *spaceptr = NULL; /* - keybits = malloc(2080); + keybits = calloc(2080, sizeof(uint8_t)); if (!keybits) { UserMessage("cannot malloc keybits\r\n"); return false; diff --git a/client/src/cmdlfem4x05.c b/client/src/cmdlfem4x05.c index 862be6f9c..f548d98e3 100644 --- a/client/src/cmdlfem4x05.c +++ b/client/src/cmdlfem4x05.c @@ -2020,7 +2020,7 @@ int CmdEM4x05Sniff(const char *Cmd) { PrintAndLogEx(SUCCESS, "-------+-------------+----------+-----+------------------------------------------------------------"); smartbuf bits = { 0 }; - bits.ptr = malloc(EM4X05_BITS_BUFSIZE); + bits.ptr = calloc(EM4X05_BITS_BUFSIZE, sizeof(uint8_t)); bits.size = EM4X05_BITS_BUFSIZE; bits.idx = 0; size_t idx = 0; diff --git a/client/src/crypto/libpcrypto.c b/client/src/crypto/libpcrypto.c index 4e119f245..3634e9e4d 100644 --- a/client/src/crypto/libpcrypto.c +++ b/client/src/crypto/libpcrypto.c @@ -629,8 +629,10 @@ int blowfish_decrypt(uint8_t *iv, uint8_t *key, uint8_t *input, uint8_t *output, mbedtls_blowfish_init(&blow); if (mbedtls_blowfish_setkey(&blow, key, 64)) return 1; + if (mbedtls_blowfish_crypt_cbc(&blow, MBEDTLS_BLOWFISH_DECRYPT, length, iiv, input, output)) return 2; + mbedtls_blowfish_free(&blow); return 0; @@ -647,7 +649,7 @@ int ansi_x963_sha256(uint8_t *sharedSecret, size_t sharedSecretLen, uint8_t *sha uint32_t counter = 0x00000001; for (int i = 0; i < (keyDataLen / 32); ++i) { - uint8_t *hashMaterial = malloc(4 + sharedSecretLen + sharedInfoLen); + uint8_t *hashMaterial = calloc(4 + sharedSecretLen + sharedInfoLen, sizeof(uint8_t)); memcpy(hashMaterial, sharedSecret, sharedSecretLen); hashMaterial[sharedSecretLen] = (counter >> 24); hashMaterial[sharedSecretLen + 1] = (counter >> 16) & 0xFF; From 1f3cf808981bac1f4f8c3be2b69df34a18f3ad3a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 18 Oct 2023 20:34:35 +0200 Subject: [PATCH 0595/1034] style --- armsrc/sam_mfc.c | 2 +- armsrc/sam_mfc.h | 2 +- armsrc/sam_picopass.c | 45 ++++++++++---------- armsrc/sam_picopass.h | 2 +- armsrc/sam_seos.c | 2 +- armsrc/sam_seos.h | 2 +- client/src/cmdhficlass.c | 10 ++--- client/src/pm3line_vocabulary.h | 10 +++-- client/src/preferences.c | 4 +- client/src/uart/ringbuffer.c | 30 +++++++------- client/src/uart/ringbuffer.h | 28 ++++++------- client/src/uart/uart_posix.c | 12 +++--- client/src/uart/uart_win32.c | 4 +- common/cardhelper.c | 10 ++--- doc/commands.json | 73 ++++++++++++++++++++++----------- doc/commands.md | 10 +++-- 16 files changed, 139 insertions(+), 107 deletions(-) diff --git a/armsrc/sam_mfc.c b/armsrc/sam_mfc.c index 773dd199c..f2dee067c 100644 --- a/armsrc/sam_mfc.c +++ b/armsrc/sam_mfc.c @@ -19,4 +19,4 @@ #include "iclass.h" #include "proxmark3_arm.h" -#include "cmd.h" \ No newline at end of file +#include "cmd.h" diff --git a/armsrc/sam_mfc.h b/armsrc/sam_mfc.h index 4a995a6ed..5cf55d711 100644 --- a/armsrc/sam_mfc.h +++ b/armsrc/sam_mfc.h @@ -18,4 +18,4 @@ #include "common.h" -#endif \ No newline at end of file +#endif diff --git a/armsrc/sam_picopass.c b/armsrc/sam_picopass.c index 48702680b..fd465c992 100644 --- a/armsrc/sam_picopass.c +++ b/armsrc/sam_picopass.c @@ -57,9 +57,9 @@ static int sam_rxtx(const uint8_t *data, uint16_t n, uint8_t *resp, uint16_t *re uint16_t more_len = 0; if (resp[*resplen - 2] == 0x61 || resp[*resplen - 2] == 0x9F) { - more_len = resp[*resplen - 1]; + more_len = resp[*resplen - 1]; } else { - // we done, return + // we done, return goto out; } @@ -113,7 +113,8 @@ int sam_picopass_get_pacs(void) { clear_trace(); - I2C_Reset_EnterMainProgram(); StopTicks(); + I2C_Reset_EnterMainProgram(); + StopTicks(); uint8_t *resp = BigBuf_calloc(ISO7816_MAX_FRAME); @@ -212,7 +213,7 @@ int sam_picopass_get_pacs(void) { // ----------------------------------------------------------------------------- // SAM comms - // ----------------------------------------------------------------------------- + // ----------------------------------------------------------------------------- size_t sam_len = 0; uint8_t *sam_apdu = BigBuf_calloc(ISO7816_MAX_FRAME); @@ -227,7 +228,7 @@ int sam_picopass_get_pacs(void) { res = PM3_ECARDEXCHANGE; goto out; } - print_dbg("-- 1",resp, resp_len); + print_dbg("-- 1", resp, resp_len); // ----------------------------------------------------------------------------- // second @@ -237,9 +238,9 @@ int sam_picopass_get_pacs(void) { res = PM3_ECARDEXCHANGE; goto out; } - print_dbg("-- 2",resp, resp_len); + print_dbg("-- 2", resp, resp_len); - // TAG response + // TAG response // -- 0c 05 de64 // read block 5 // Tag|c00a140a000000a110a10e8004 0c05de64 8102 0004 820201f4 @@ -256,7 +257,7 @@ int sam_picopass_get_pacs(void) { res = PM3_ECARDEXCHANGE; goto out; } - print_dbg("-- 3",resp, resp_len); + print_dbg("-- 3", resp, resp_len); // 88 02 -- readcheck (block2 epurse, start of auth) // Tag|c00a140a000000a10ea10c8002 8802 8102 0004 820201f4 9000 @@ -272,29 +273,29 @@ int sam_picopass_get_pacs(void) { res = PM3_ECARDEXCHANGE; goto out; } - print_dbg("-- 4",resp, resp_len); + print_dbg("-- 4", resp, resp_len); uint8_t nr_mac[9] = {0}; memcpy(nr_mac, resp + 11, sizeof(nr_mac)); // resp here hold the whole NR/MAC // 05 9bcd475e965ee20e // CHECK (w key) - print_dbg("NR/MAC",nr_mac, sizeof(nr_mac)); + print_dbg("NR/MAC", nr_mac, sizeof(nr_mac)); // c00a140a000000a115a1138009 059bcd475e965ee20e 8102 0004 820201f4 9000 // pre calc ourself? // uint8_t cc_nr[] = {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0, 0, 0}; uint8_t div_key[8] = {0}; - static uint8_t legacy_aa1_key[] = {0xAE, 0xA6, 0x84, 0xA6, 0xDA, 0xB2, 0x32, 0x78}; + static uint8_t legacy_aa1_key[] = {0xAE, 0xA6, 0x84, 0xA6, 0xDA, 0xB2, 0x32, 0x78}; iclass_calc_div_key(hdr.csn, legacy_aa1_key, div_key, false); uint8_t mac[4] = {0}; - if (g_dbglevel == DBG_DEBUG) { + if (g_dbglevel == DBG_DEBUG) { uint8_t wb[16] = {0}; memcpy(wb, hdr.epurse, sizeof(hdr.epurse)); - memcpy(wb + sizeof(hdr.epurse), nr_mac+1, 4); + memcpy(wb + sizeof(hdr.epurse), nr_mac + 1, 4); print_dbg("cc_nr...", wb, sizeof(wb)); - doMAC_N(wb, sizeof(wb), div_key, mac); + doMAC_N(wb, sizeof(wb), div_key, mac); print_dbg("Calc MAC...", mac, sizeof(mac)); } @@ -315,8 +316,8 @@ int sam_picopass_get_pacs(void) { goto out; } // store MAC - memcpy(mac, resp, sizeof(mac)); - print_dbg("Got MAC",mac,sizeof(mac)); + memcpy(mac, resp, sizeof(mac)); + print_dbg("Got MAC", mac, sizeof(mac)); // ----------------------------------------------------------------------------- // fifth send received MAC @@ -328,7 +329,7 @@ int sam_picopass_get_pacs(void) { res = PM3_ECARDEXCHANGE; goto out; } - print_dbg("-- 5",resp, resp_len); + print_dbg("-- 5", resp, resp_len); uint8_t tmp_p1[4] = {0}; uint8_t tmp_p2[4] = {0}; @@ -350,7 +351,7 @@ int sam_picopass_get_pacs(void) { res = PM3_ECARDEXCHANGE; goto out; } - print_dbg("-- 6",resp, resp_len); + print_dbg("-- 6", resp, resp_len); // c1 61 c1 00 00 a1 10 a1 0e 80 04 0c 06 45 56 81 02 00 04 82 02 01 f4 90 00 // read block 6 @@ -364,7 +365,7 @@ int sam_picopass_get_pacs(void) { res = PM3_ECARDEXCHANGE; goto out; } - print_dbg("Block 6 from Picopass",resp, resp_len); + print_dbg("Block 6 from Picopass", resp, resp_len); // ----------------------------------------------------------------------------- // eight send block 6 config to SAM @@ -391,7 +392,7 @@ int sam_picopass_get_pacs(void) { res = PM3_ECARDEXCHANGE; goto out; } - print_dbg("Block 6-9 from Picopass",resp, resp_len); + print_dbg("Block 6-9 from Picopass", resp, resp_len); // ----------------------------------------------------------------------------- // nine send credential blocks to SAM @@ -403,7 +404,7 @@ int sam_picopass_get_pacs(void) { res = PM3_ECARDEXCHANGE; goto out; } - print_dbg("-- 8",resp, resp_len); + print_dbg("-- 8", resp, resp_len); // ----------------------------------------------------------------------------- @@ -438,7 +439,7 @@ out: off: switch_off(); - BigBuf_free(); + BigBuf_free(); return res; } diff --git a/armsrc/sam_picopass.h b/armsrc/sam_picopass.h index a4f553c5b..7feef0bde 100644 --- a/armsrc/sam_picopass.h +++ b/armsrc/sam_picopass.h @@ -20,4 +20,4 @@ int sam_picopass_get_pacs(void); -#endif \ No newline at end of file +#endif diff --git a/armsrc/sam_seos.c b/armsrc/sam_seos.c index 2f0f01817..00e4da45b 100644 --- a/armsrc/sam_seos.c +++ b/armsrc/sam_seos.c @@ -19,4 +19,4 @@ #include "iclass.h" #include "proxmark3_arm.h" -#include "cmd.h" \ No newline at end of file +#include "cmd.h" diff --git a/armsrc/sam_seos.h b/armsrc/sam_seos.h index 7cc08517b..c2100f07e 100644 --- a/armsrc/sam_seos.h +++ b/armsrc/sam_seos.h @@ -18,4 +18,4 @@ #include "common.h" -#endif \ No newline at end of file +#endif diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 0d9af88ec..3cda9feef 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -4472,17 +4472,17 @@ static int CmdHFiClassSAM(const char *Cmd) { // CSN, config, epurse, NR/MAC, AIA // PACS // first byte skip - // second byte length - // third padded + // second byte length + // third padded // fourth .. uint8_t *d = resp.data.asBytes; uint8_t n = d[1] - 1; // skip length byte uint8_t pad = d[2]; - char *binstr = (char*)calloc((n * 8) + 1 , sizeof(uint8_t)); + char *binstr = (char *)calloc((n * 8) + 1, sizeof(uint8_t)); if (binstr == NULL) { return PM3_EMALLOC; } - + byte_2_binstr(binstr, d + 3, n); PrintAndLogEx(NORMAL, ""); @@ -4494,7 +4494,7 @@ static int CmdHFiClassSAM(const char *Cmd) { size_t hexlen = 0; uint8_t hex[16] = {0}; - binstr_2_bytes(hex, &hexlen,binstr); + binstr_2_bytes(hex, &hexlen, binstr); PrintAndLogEx(SUCCESS, "hex.......... " _GREEN_("%s"), sprint_hex_inrow(hex, hexlen)); uint32_t top = 0, mid = 0, bot = 0; diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index adcd31846..583d5a0d0 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -42,8 +42,9 @@ const static vocabulary_t vocabulary[] = { { 1, "prefs help" }, { 1, "prefs show" }, { 1, "prefs get barmode" }, - { 1, "prefs get clientdebug" }, - { 1, "prefs get clientdelay" }, + { 1, "prefs get client.debug" }, + { 1, "prefs get client.delay" }, + { 1, "prefs get client.timeout" }, { 1, "prefs get color" }, { 1, "prefs get savepaths" }, { 1, "prefs get emoji" }, @@ -52,8 +53,9 @@ const static vocabulary_t vocabulary[] = { { 1, "prefs get plotsliders" }, { 1, "prefs set help" }, { 1, "prefs set barmode" }, - { 1, "prefs set clientdebug" }, - { 1, "prefs set clientdelay" }, + { 1, "prefs set client.debug" }, + { 1, "prefs set client.delay" }, + { 1, "prefs set client.timeout" }, { 1, "prefs set color" }, { 1, "prefs set emoji" }, { 1, "prefs set hints" }, diff --git a/client/src/preferences.c b/client/src/preferences.c index 83deb945d..904e12a44 100644 --- a/client/src/preferences.c +++ b/client/src/preferences.c @@ -852,7 +852,7 @@ static int setClientTimeout(const char *Cmd) { uint32_t new_value = (uint32_t)arg_get_int_def(ctx, 1, 0); CLIParserFree(ctx); - // UART_USB_CLIENT_RX_TIMEOUT_MS is considered as the minimum required timeout. + // UART_USB_CLIENT_RX_TIMEOUT_MS is considered as the minimum required timeout. if (new_value < UART_USB_CLIENT_RX_TIMEOUT_MS) { PrintAndLogEx(WARNING, "Timeout less than %u ms might cause errors.", UART_USB_CLIENT_RX_TIMEOUT_MS); } else if (new_value > 5000) { @@ -1268,7 +1268,7 @@ static command_t CommandTableSet[] = { {"client.debug", setCmdDebug, AlwaysAvailable, "Set client debug level"}, {"client.delay", setCmdExeDelay, AlwaysAvailable, "Set client execution delay"}, {"client.timeout", setClientTimeout, AlwaysAvailable, "Set client communication timeout"}, - + {"color", setCmdColor, AlwaysAvailable, "Set color support"}, {"emoji", setCmdEmoji, AlwaysAvailable, "Set emoji display"}, {"hints", setCmdHint, AlwaysAvailable, "Set hint display"}, diff --git a/client/src/uart/ringbuffer.c b/client/src/uart/ringbuffer.c index 13ff133e8..345abdf5a 100644 --- a/client/src/uart/ringbuffer.c +++ b/client/src/uart/ringbuffer.c @@ -1,13 +1,13 @@ #include "ringbuffer.h" #include <stdlib.h> -RingBuffer* RingBuf_create(int capacity) { - RingBuffer* buffer = (RingBuffer*)malloc(sizeof(RingBuffer)); +RingBuffer *RingBuf_create(int capacity) { + RingBuffer *buffer = (RingBuffer *)malloc(sizeof(RingBuffer)); if (!buffer) { return NULL; } - buffer->data = (uint8_t*)calloc(capacity, sizeof(uint8_t)); + buffer->data = (uint8_t *)calloc(capacity, sizeof(uint8_t)); if (!buffer->data) { free(buffer); return NULL; @@ -21,15 +21,15 @@ RingBuffer* RingBuf_create(int capacity) { return buffer; } -inline bool RingBuf_isFull(RingBuffer* buffer) { +inline bool RingBuf_isFull(RingBuffer *buffer) { return buffer->size == buffer->capacity; } -inline bool RingBuf_isEmpty(RingBuffer* buffer) { +inline bool RingBuf_isEmpty(RingBuffer *buffer) { return buffer->size == 0; } -bool RingBuf_enqueue(RingBuffer* buffer, uint8_t value) { +bool RingBuf_enqueue(RingBuffer *buffer, uint8_t value) { if (RingBuf_isFull(buffer)) { return false; } @@ -40,7 +40,7 @@ bool RingBuf_enqueue(RingBuffer* buffer, uint8_t value) { return true; } -bool RingBuf_dequeue(RingBuffer* buffer, uint8_t* value) { +bool RingBuf_dequeue(RingBuffer *buffer, uint8_t *value) { if (RingBuf_isEmpty(buffer)) { return false; } @@ -51,7 +51,7 @@ bool RingBuf_dequeue(RingBuffer* buffer, uint8_t* value) { return true; } -int RingBuf_enqueueBatch(RingBuffer* buffer, const uint8_t* values, int count) { +int RingBuf_enqueueBatch(RingBuffer *buffer, const uint8_t *values, int count) { int processed = 0; if (RingBuf_getAvailableSize(buffer) < count) { @@ -69,7 +69,7 @@ int RingBuf_enqueueBatch(RingBuffer* buffer, const uint8_t* values, int count) { return processed; } -int RingBuf_dequeueBatch(RingBuffer* buffer, uint8_t* values, int count) { +int RingBuf_dequeueBatch(RingBuffer *buffer, uint8_t *values, int count) { int processed = 0; if (buffer->size < count) { @@ -87,32 +87,32 @@ int RingBuf_dequeueBatch(RingBuffer* buffer, uint8_t* values, int count) { return processed; } -inline int RingBuf_getUsedSize(RingBuffer* buffer) { +inline int RingBuf_getUsedSize(RingBuffer *buffer) { return buffer->size; } -inline int RingBuf_getAvailableSize(RingBuffer* buffer) { +inline int RingBuf_getAvailableSize(RingBuffer *buffer) { return (buffer->capacity) - (buffer->size); } -void RingBuf_destroy(RingBuffer* buffer) { +void RingBuf_destroy(RingBuffer *buffer) { if (buffer != NULL) free(buffer->data); free(buffer); } -inline int RingBuf_getContinousAvailableSize(RingBuffer* buffer) { +inline int RingBuf_getContinousAvailableSize(RingBuffer *buffer) { const int availableSize = RingBuf_getAvailableSize(buffer); const int continousSize = (buffer->capacity) - (buffer->rear); return (availableSize < continousSize) ? availableSize : continousSize; } -inline void RingBuf_postEnqueueBatch(RingBuffer* buffer, int count) { +inline void RingBuf_postEnqueueBatch(RingBuffer *buffer, int count) { // no check there buffer->rear = (buffer->rear + count) % buffer->capacity; buffer->size += count; } -inline uint8_t* RingBuf_getRearPtr(RingBuffer* buffer) { +inline uint8_t *RingBuf_getRearPtr(RingBuffer *buffer) { return buffer->data + buffer->rear; } diff --git a/client/src/uart/ringbuffer.h b/client/src/uart/ringbuffer.h index 35321c8d6..ba29ddd77 100644 --- a/client/src/uart/ringbuffer.h +++ b/client/src/uart/ringbuffer.h @@ -5,27 +5,27 @@ #include <stdint.h> typedef struct { - uint8_t* data; + uint8_t *data; int capacity; int size; int front; int rear; } RingBuffer; -RingBuffer* RingBuf_create(int capacity); -bool RingBuf_isFull(RingBuffer* buffer); -bool RingBuf_isEmpty(RingBuffer* buffer); -bool RingBuf_enqueue(RingBuffer* buffer, uint8_t value); -bool RingBuf_dequeue(RingBuffer* buffer, uint8_t* value); -int RingBuf_enqueueBatch(RingBuffer* buffer, const uint8_t* values, int count); -int RingBuf_dequeueBatch(RingBuffer* buffer, uint8_t* values, int count); -int RingBuf_getUsedSize(RingBuffer* buffer); -int RingBuf_getAvailableSize(RingBuffer* buffer); -void RingBuf_destroy(RingBuffer* buffer); +RingBuffer *RingBuf_create(int capacity); +bool RingBuf_isFull(RingBuffer *buffer); +bool RingBuf_isEmpty(RingBuffer *buffer); +bool RingBuf_enqueue(RingBuffer *buffer, uint8_t value); +bool RingBuf_dequeue(RingBuffer *buffer, uint8_t *value); +int RingBuf_enqueueBatch(RingBuffer *buffer, const uint8_t *values, int count); +int RingBuf_dequeueBatch(RingBuffer *buffer, uint8_t *values, int count); +int RingBuf_getUsedSize(RingBuffer *buffer); +int RingBuf_getAvailableSize(RingBuffer *buffer); +void RingBuf_destroy(RingBuffer *buffer); // for direct write -int RingBuf_getContinousAvailableSize(RingBuffer* buffer); -void RingBuf_postEnqueueBatch(RingBuffer* buffer, int count); -uint8_t* RingBuf_getRearPtr(RingBuffer* buffer); +int RingBuf_getContinousAvailableSize(RingBuffer *buffer); +void RingBuf_postEnqueueBatch(RingBuffer *buffer, int count); +uint8_t *RingBuf_getRearPtr(RingBuffer *buffer); #endif diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index 5480e98b7..0a9afb04a 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -56,7 +56,7 @@ typedef struct { int fd; // Serial port file descriptor term_info tiOld; // Terminal info before using the port term_info tiNew; // Terminal info during the transaction - RingBuffer* udpBuffer; + RingBuffer *udpBuffer; } serial_port_unix_t_t; // see pm3_cmd.h @@ -150,7 +150,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { portstr = rColon + 1; } else { portstr = "18888"; - } + } } // handle the end of the address @@ -261,7 +261,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { portstr = rColon + 1; } else { portstr = "18888"; - } + } } // handle the end of the address @@ -519,9 +519,9 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin *pszRxLen = 0; do { int res; - if(spu->udpBuffer != NULL) { + if (spu->udpBuffer != NULL) { // for UDP connection, try to use the data from the buffer - + byteCount = RingBuf_getAvailableSize(spu->udpBuffer); // Cap the number of bytes, so we don't overrun the buffer if (pszMaxRxLen - (*pszRxLen) < byteCount) { @@ -536,7 +536,7 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin return PM3_SUCCESS; } } - + // Reset file descriptor FD_ZERO(&rfds); FD_SET(spu->fd, &rfds); diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index 7e7021c71..794302a81 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -38,7 +38,7 @@ typedef struct { DCB dcb; // Device control settings COMMTIMEOUTS ct; // Serial port time-out configuration SOCKET hSocket; // Socket handle - RingBuffer* udpBuffer; // Buffer for UDP + RingBuffer *udpBuffer; // Buffer for UDP } serial_port_windows_t; // this is for TCP connection @@ -473,7 +473,7 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin *pszRxLen = 0; do { int res; - if(spw->udpBuffer != NULL) { + if (spw->udpBuffer != NULL) { // for UDP connection, try to use the data from the buffer byteCount = RingBuf_getAvailableSize(spw->udpBuffer); diff --git a/common/cardhelper.c b/common/cardhelper.c index 8c5fd8c22..623e1c1f4 100644 --- a/common/cardhelper.c +++ b/common/cardhelper.c @@ -74,15 +74,15 @@ bool IsHIDSamPresent(bool verbose) { // SAM identification smart_card_atr_t supported[] = { - {15, {0x3B, 0x95, 0x96, 0x80, 0xB1, 0xFE, 0x55, 0x1F, 0xC7, 0x47, 0x72, 0x61, 0x63, 0x65, 0x13}}, - {11, {0x3b, 0x90, 0x96, 0x91, 0x81, 0xb1, 0xfe, 0x55, 0x1f, 0xc7, 0xd4}}, + {15, {0x3B, 0x95, 0x96, 0x80, 0xB1, 0xFE, 0x55, 0x1F, 0xC7, 0x47, 0x72, 0x61, 0x63, 0x65, 0x13}}, + {11, {0x3b, 0x90, 0x96, 0x91, 0x81, 0xb1, 0xfe, 0x55, 0x1f, 0xc7, 0xd4}}, }; bool found = false; for (int i = 0; i < sizeof(supported) / sizeof(supported[0]); i++) { if ((card.atr_len == supported[i].atr_len) && - (memcmp(card.atr, supported[i].atr, supported[i].atr_len) == 0)) { - found = true; - break; + (memcmp(card.atr, supported[i].atr, supported[i].atr_len) == 0)) { + found = true; + break; } } if (found == false) { diff --git a/doc/commands.json b/doc/commands.json index e410a0a98..a0f7232d1 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -7580,15 +7580,15 @@ "description": "Set the communication timeout on the client side", "notes": [ "hw timeout -> Show current timeout", - "hw timeout -t 20 -> Set the timeout to 20ms", - "hw timeout -t 500 -> Set the timeout to 500ms" + "hw timeout -m 20 -> Set the timeout to 20ms", + "hw timeout --ms 500 -> Set the timeout to 500ms" ], "offline": true, "options": [ "-h, --help This help", - "-t, --timeout <dec> timeout in ms" + "-m, --ms <ms> timeout in micro seconds" ], - "usage": "hw timeout [-h] [-t <dec>]" + "usage": "hw timeout [-h] [-m <ms>]" }, "hw tune": { "command": "hw tune", @@ -11220,29 +11220,41 @@ ], "usage": "prefs get barmode [-h]" }, - "prefs get clientdebug": { - "command": "prefs get clientdebug", + "prefs get client.debug": { + "command": "prefs get client.debug", "description": "Get preference of using clientside debug level", "notes": [ - "prefs get clientdebug" + "prefs get client.debug" ], "offline": true, "options": [ "-h, --help This help" ], - "usage": "prefs get clientdebug [-h]" + "usage": "prefs get client.debug [-h]" }, - "prefs get clientdelay": { - "command": "prefs get clientdelay", + "prefs get client.delay": { + "command": "prefs get client.delay", "description": "Get preference of delay time before execution of a command in the client", "notes": [ - "prefs get clientdelay" + "prefs get client.delay" ], "offline": true, "options": [ "-h, --help This help" ], - "usage": "prefs get clientdelay [-h]" + "usage": "prefs get client.delay [-h]" + }, + "prefs get client.timeout": { + "command": "prefs get client.timeout", + "description": "Get preference of delay time before execution of a command in the client", + "notes": [ + "prefs get client.timeout" + ], + "offline": true, + "options": [ + "-h, --help This help" + ], + "usage": "prefs get client.timeout [-h]" }, "prefs get color": { "command": "prefs get color", @@ -11331,11 +11343,11 @@ ], "usage": "prefs set barmode [-h] [--bar] [--mix] [--val]" }, - "prefs set clientdebug": { - "command": "prefs set clientdebug", + "prefs set client.debug": { + "command": "prefs set client.debug", "description": "Set persistent preference of using clientside debug level", "notes": [ - "prefs set clientdebug --simple" + "prefs set client.debug --simple" ], "offline": true, "options": [ @@ -11344,21 +11356,36 @@ "--simple simple debug messages", "--full full debug messages" ], - "usage": "prefs set clientdebug [-h] [--off] [--simple] [--full]" + "usage": "prefs set client.debug [-h] [--off] [--simple] [--full]" }, - "prefs set clientdelay": { - "command": "prefs set clientdelay", + "prefs set client.delay": { + "command": "prefs set client.delay", "description": "Set persistent preference of delay before executing a command in the client", "notes": [ - "prefs set clientdelay --ms 0 -> unsets any delay", - "prefs set clientdelay --ms 1000 -> sets 1000ms delay" + "prefs set client.delay --ms 0 -> unsets any delay", + "prefs set client.delay --ms 1000 -> sets 1000ms delay" ], "offline": true, "options": [ "-h, --help This help", "--ms <ms> delay in micro seconds" ], - "usage": "prefs set clientdelay [-h] [--ms <ms>]" + "usage": "prefs set client.delay [-h] [--ms <ms>]" + }, + "prefs set client.timeout": { + "command": "prefs set client.timeout", + "description": "Set persistent preference of client communication timeout", + "notes": [ + "prefs set client.timeout --ms 0 -> unsets any timeout", + "prefs set client.timeout -m 20 -> Set the timeout to 20ms", + "prefs set client.timeout --ms 500 -> Set the timeout to 500ms" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-m, --ms <ms> timeout in micro seconds" + ], + "usage": "prefs set client.timeout [-h] [-m <ms>]" }, "prefs set color": { "command": "prefs set color", @@ -11854,8 +11881,8 @@ } }, "metadata": { - "commands_extracted": 687, + "commands_extracted": 689, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-10-15T15:14:39" + "extracted_on": "2023-10-18T18:30:58" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 07d744045..6fcbf242f 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -37,8 +37,9 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`prefs get barmode `|Y |`Get bar mode preference` -|`prefs get clientdebug `|Y |`Get client debug level preference` -|`prefs get clientdelay `|Y |`Get client execution delay preference` +|`prefs get client.debug `|Y |`Get client debug level preference` +|`prefs get client.delay `|Y |`Get client execution delay preference` +|`prefs get client.timeout`|Y |`Get client execution delay preference` |`prefs get color `|Y |`Get color support preference` |`prefs get savepaths `|Y |`Get file folder ` |`prefs get emoji `|Y |`Get emoji display preference` @@ -55,8 +56,9 @@ Check column "offline" for their availability. |------- |------- |----------- |`prefs set help `|Y |`This help` |`prefs set barmode `|Y |`Set bar mode` -|`prefs set clientdebug `|Y |`Set client debug level` -|`prefs set clientdelay `|Y |`Set client execution delay` +|`prefs set client.debug `|Y |`Set client debug level` +|`prefs set client.delay `|Y |`Set client execution delay` +|`prefs set client.timeout`|Y |`Set client communication timeout` |`prefs set color `|Y |`Set color support` |`prefs set emoji `|Y |`Set emoji display` |`prefs set hints `|Y |`Set hint display` From 5ae919d8ee80c878973b98e2f9b9299f0913fce9 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 18 Oct 2023 20:43:52 +0200 Subject: [PATCH 0596/1034] since we split the image for iclass, every time we swap back to hf / mf commands there is a penalty for swapping fpga image. this fix some allow for fast simulation part --- armsrc/appmain.c | 1 + 1 file changed, 1 insertion(+) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 68490325c..0162fae80 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -1686,6 +1686,7 @@ static void PacketReceived(PacketCommandNG *packet) { case CMD_HF_MIFARE_EML_MEMCLR: { MifareEMemClr(); reply_ng(CMD_HF_MIFARE_EML_MEMCLR, PM3_SUCCESS, NULL, 0); + FpgaDownloadAndGo(FPGA_BITSTREAM_HF); break; } case CMD_HF_MIFARE_EML_MEMSET: { From 34d8a41021a0bf153e6a764ce7b77cddb4367169 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 19 Oct 2023 11:08:53 +0200 Subject: [PATCH 0597/1034] hw ping - fix output text --- client/src/cmdhw.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index 7483a07a9..7cef9fa81 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -987,7 +987,7 @@ static int CmdPing(const char *Cmd) { len = PM3_CMD_DATA_SIZE; if (len) { - PrintAndLogEx(INFO, "Ping sent with payload len " _YELLOW_("%d"), len); + PrintAndLogEx(INFO, "Ping sent with payload len... " _YELLOW_("%d"), len); } else { PrintAndLogEx(INFO, "Ping sent"); } @@ -996,14 +996,15 @@ static int CmdPing(const char *Cmd) { PacketResponseNG resp; uint8_t data[PM3_CMD_DATA_SIZE] = {0}; - for (uint16_t i = 0; i < len; i++) + for (uint16_t i = 0; i < len; i++) { data[i] = i & 0xFF; + } SendCommandNG(CMD_PING, data, len); if (WaitForResponseTimeout(CMD_PING, &resp, 1000)) { if (len) { bool error = (memcmp(data, resp.data.asBytes, len) != 0); - PrintAndLogEx((error) ? ERR : SUCCESS, "Ping response " _GREEN_("received") " and content () %s )", error ? _RED_("fail") : _GREEN_("ok")); + PrintAndLogEx((error) ? ERR : SUCCESS, "Ping response " _GREEN_("received") " and content ( %s )", error ? _RED_("fail") : _GREEN_("ok")); } else { PrintAndLogEx(SUCCESS, "Ping response " _GREEN_("received")); } From ae1504e763fb869f9eacdb222764bee5d7b557e4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 19 Oct 2023 14:21:46 +0200 Subject: [PATCH 0598/1034] fixed a boolean bug with write block, and added a hf mf encodehid which writes some simple ndef message to a empty MFC 1K card --- CHANGELOG.md | 1 + client/src/cmdhfmf.c | 127 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 127 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 822f33018..caa1ffd66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `hf mf encodehid` - writes HID legacy credential to a empty MFC (@iceman1001) - Added `hf iclass sam` - Added support for HID SAM Picopass communications (@iceman1001) - Add support for quoted arguments in the CLI, allowing spaces in them which are removed automatically (@jmichelp) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index fb620edbf..ae33ea91f 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -37,6 +37,8 @@ #include "wiegand_formats.h" #include "wiegand_formatutils.h" #include "cmdhw.h" // set_fpga_mode +#include "loclass/cipherutils.h" // BitstreamOut_t +#include "proxendian.h" static int CmdHelp(const char *Cmd); @@ -483,7 +485,7 @@ static bool mf_write_block(const uint8_t *key, uint8_t keytype, uint8_t blockno, return false; } - return (resp.oldarg[0] & 0xff); + return ((resp.oldarg[0] & 0xff) == 1); } // assumes n is in number of blocks 0..255 @@ -8508,6 +8510,128 @@ static int CmdHF14AMfValue(const char *Cmd) { return PM3_SUCCESS; } +static int CmdHFMFHidEncode(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mf encodehid", + "Encode binary wiegand to card\n" + "Use either --bin or --wiegand/--fc/--cn", + "hf mf encodehid --bin 10001111100000001010100011 -> FC 31 CN 337 (H10301)\n" + "hf mf encodehid -w H10301 --fc 31 --cn 337\n" + ); + + void *argtable[] = { + arg_param_begin, + arg_str0(NULL, "bin", "<bin>", "Binary string i.e 0001001001"), + arg_u64_0(NULL, "fc", "<dec>", "facility code"), + arg_u64_0(NULL, "cn", "<dec>", "card number"), + arg_str0("w", "wiegand", "<format>", "see " _YELLOW_("`wiegand list`") " for available formats"), + arg_lit0("v", "verbose", "verbose output"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + + int bin_len = 120; + uint8_t bin[121] = {0}; + CLIGetStrWithReturn(ctx, 1, bin, &bin_len); + + wiegand_card_t card; + memset(&card, 0, sizeof(wiegand_card_t)); + card.FacilityCode = arg_get_u32_def(ctx, 2, 0); + card.CardNumber = arg_get_u32_def(ctx, 3, 0); + + char format[16] = {0}; + int format_len = 0; + CLIParamStrToBuf(arg_get_str(ctx, 4), (uint8_t *)format, sizeof(format), &format_len); + + bool verbose = arg_get_lit(ctx, 5); + CLIParserFree(ctx); + + // santity checks + if (bin_len > 120) { + PrintAndLogEx(ERR, "Binary wiegand string must be less than 120 bits"); + return PM3_EINVARG; + } + + if (bin_len == 0 && card.FacilityCode == 0 && card.CardNumber == 0) { + PrintAndLogEx(ERR, "Must provide either --cn/--fc or --bin"); + return PM3_EINVARG; + } + + uint8_t blocks[] = { + 0x1B, 0x01, 0x4D, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0x78, 0x77, 0x88, 0xC1, 0x89, 0xEC, 0xA9, 0x7F, 0x8C, 0x2A, + 0x00, 0x00, 0x00, 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, + 0x48, 0x49, 0x44, 0x20, 0x49, 0x53, 0x78, 0x77, 0x88, 0xAA, 0x20, 0x47, 0x52, 0x45, 0x41, 0x54, + }; + + if (bin_len) { + char mfcbin[121] = {0}; + mfcbin[0] = '1'; + memcpy(mfcbin + 1, bin, strlen(bin)); + + size_t hexlen = 0; + uint8_t hex[15] = {0}; + binstr_2_bytes(hex, &hexlen, mfcbin); + + memcpy(blocks + (MFBLOCK_SIZE * 4) + 1 + (15 - hexlen), hex, hexlen); + } else { + wiegand_message_t packed; + memset(&packed, 0, sizeof(wiegand_message_t)); + + int format_idx = HIDFindCardFormat(format); + if (format_idx == -1) { + PrintAndLogEx(WARNING, "Unknown format: " _YELLOW_("%s"), format); + return PM3_EINVARG; + } + + if (HIDPack(format_idx, &card, &packed, false) == false) { + PrintAndLogEx(WARNING, "The card data could not be encoded in the selected format."); + return PM3_ESOFT; + } + + // iceman: only for formats w length smaller than 37. + // Needs a check. + + // increase length to allow setting bit just above real data + packed.Length++; + // Set sentinel bit + set_bit_by_position(&packed, true, 0); + +#ifdef HOST_LITTLE_ENDIAN + packed.Mid = BSWAP_32(packed.Mid); + packed.Bot = BSWAP_32(packed.Bot); +#endif + + memcpy(blocks + (MFBLOCK_SIZE * 4) + 8, &packed.Mid, sizeof(packed.Mid)); + memcpy(blocks + (MFBLOCK_SIZE * 4) + 12, &packed.Bot, sizeof(packed.Bot)); + } + + uint8_t empty[MIFARE_KEY_SIZE] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; + bool res = true; + for (uint8_t i = 0; i < (sizeof(blocks) / MFBLOCK_SIZE); i++) { + + if (verbose) { + PrintAndLogEx(INFO, "Writing %u - %s", (i + 1), sprint_hex_inrow(blocks + (i * MFBLOCK_SIZE), MFBLOCK_SIZE)); + } + + if (mf_write_block(empty, MF_KEY_A, (i + 1), blocks + (i * MFBLOCK_SIZE)) == false) { + if (mf_write_block(empty, MF_KEY_B, (i + 1), blocks + (i * MFBLOCK_SIZE)) == false) { + PrintAndLogEx(WARNING, "failed writing block %d using default empty key", (i + 1)); + res = false; + break; + } + } + } + if (res == false) { + PrintAndLogEx(WARNING, "Make sure card is wiped before running this command"); + } + PrintAndLogEx(NORMAL, ""); + return PM3_SUCCESS; +} + static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, {"list", CmdHF14AMfList, AlwaysAvailable, "List MIFARE history"}, @@ -8576,6 +8700,7 @@ static command_t CommandTable[] = { {"ndefformat", CmdHFMFNDEFFormat, IfPm3Iso14443a, "Format MIFARE Classic Tag as NFC Tag"}, {"ndefread", CmdHFMFNDEFRead, IfPm3Iso14443a, "Read and print NDEF records from card"}, {"ndefwrite", CmdHFMFNDEFWrite, IfPm3Iso14443a, "Write NDEF records to card"}, + {"encodehid", CmdHFMFHidEncode, IfPm3Iso14443a, "Encode a HID Credential / NDEF record to card"}, {NULL, NULL, NULL, NULL} }; From 8565781f66e6cafaaa2499df17c63856fde0ae2a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 19 Oct 2023 14:22:13 +0200 Subject: [PATCH 0599/1034] text --- client/src/cmdhficlass.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 3cda9feef..3e06a93c9 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -4513,10 +4513,16 @@ static int CmdHFiClassSAM(const char *Cmd) { if (strlen(binstr) >= 26 && verbose) { + // iCLASS Legacy + PrintAndLogEx(INFO, "Clone to " _YELLOW_("iCLASS Legacy")); + PrintAndLogEx(SUCCESS, " hf iclass encode --ki 0 --bin %s", binstr); + PrintAndLogEx(NORMAL, ""); + // HID Prox II PrintAndLogEx(INFO, "Downgrade to " _YELLOW_("HID Prox II")); PrintAndLogEx(SUCCESS, " lf hid clone -w H10301 --bin %s", binstr); PrintAndLogEx(NORMAL, ""); + // MIFARE Classic char mfcbin[28] = {0}; mfcbin[0] = '1'; @@ -4533,9 +4539,8 @@ static int CmdHFiClassSAM(const char *Cmd) { PrintAndLogEx(SUCCESS, " hf mf sim --1k -i;"); PrintAndLogEx(NORMAL, ""); - // iCLASS Legacy - PrintAndLogEx(INFO, "Clone to " _YELLOW_("iCLASS Legacy")); - PrintAndLogEx(SUCCESS, " hf iclass encode --ki 0 --bin %s", binstr); + PrintAndLogEx(INFO, "Downgrade to " _YELLOW_("MIFARE Classic 1K")); + PrintAndLogEx(SUCCESS, " hf mf encodehid --bin %s", binstr); PrintAndLogEx(NORMAL, ""); } free(binstr); From 0a42e92d1112928af7aa7a86762683640230eefb Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 19 Oct 2023 14:40:48 +0200 Subject: [PATCH 0600/1034] fix compilation errors for strlen call that doesnt like uint8_t arrays --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index ae33ea91f..e4892e31b 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8570,7 +8570,7 @@ static int CmdHFMFHidEncode(const char *Cmd) { if (bin_len) { char mfcbin[121] = {0}; mfcbin[0] = '1'; - memcpy(mfcbin + 1, bin, strlen(bin)); + memcpy(mfcbin + 1, bin, bin_len); size_t hexlen = 0; uint8_t hex[15] = {0}; From e2f7454abc87bad45ec37cd520f0b11384e9d8d7 Mon Sep 17 00:00:00 2001 From: Antiklesys <syselkitna@gmail.com> Date: Thu, 19 Oct 2023 23:35:09 +0800 Subject: [PATCH 0601/1034] Fixed command description Fixed command help file as it incorrectly shows -b instead of --blk --- client/src/cmdhficlass.c | 2 +- doc/commands.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 3e06a93c9..19a319db5 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1284,7 +1284,7 @@ static int CmdHFiClassESetBlk(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf iclass esetblk", "Sets an individual block in emulator memory.", - "hf iclass esetblk -b 7 -d 0000000000000000"); + "hf iclass esetblk --blk 7 -d 0000000000000000"); void *argtable[] = { arg_param_begin, diff --git a/doc/commands.json b/doc/commands.json index a0f7232d1..5a59d65dc 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3173,7 +3173,7 @@ "command": "hf iclass esetblk", "description": "Sets an individual block in emulator memory.", "notes": [ - "hf iclass esetblk -b 7 -d 0000000000000000" + "hf iclass esetblk --blk 7 -d 0000000000000000" ], "offline": false, "options": [ From 31bc88f6846a8ab3ad9601e112697db5993974b6 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 19 Oct 2023 21:42:01 +0200 Subject: [PATCH 0602/1034] style --- client/src/cmdhfmf.c | 2 +- client/src/pm3line_vocabulary.h | 1 + doc/commands.json | 22 ++++++++++++++++++++-- doc/commands.md | 1 + 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index e4892e31b..0459cd4f7 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8609,7 +8609,7 @@ static int CmdHFMFHidEncode(const char *Cmd) { memcpy(blocks + (MFBLOCK_SIZE * 4) + 12, &packed.Bot, sizeof(packed.Bot)); } - uint8_t empty[MIFARE_KEY_SIZE] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; + uint8_t empty[MIFARE_KEY_SIZE] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; bool res = true; for (uint8_t i = 0; i < (sizeof(blocks) / MFBLOCK_SIZE); i++) { diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index 583d5a0d0..0274fcf89 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -376,6 +376,7 @@ const static vocabulary_t vocabulary[] = { { 0, "hf mf ndefformat" }, { 0, "hf mf ndefread" }, { 0, "hf mf ndefwrite" }, + { 0, "hf mf encodehid" }, { 1, "hf mfp help" }, { 1, "hf mfp list" }, { 0, "hf mfp auth" }, diff --git a/doc/commands.json b/doc/commands.json index 5a59d65dc..7e27429f1 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -4338,6 +4338,24 @@ ], "usage": "hf mf eload [-hmv] -f <fn> [--mini] [--1k] [--2k] [--4k] [--ul] [-q <dec>]" }, + "hf mf encodehid": { + "command": "hf mf encodehid", + "description": "Encode binary wiegand to card Use either --bin or --wiegand/--fc/--cn", + "notes": [ + "hf mf encodehid --bin 10001111100000001010100011 -> FC 31 CN 337 (H10301)", + "hf mf encodehid -w H10301 --fc 31 --cn 337" + ], + "offline": false, + "options": [ + "-h, --help This help", + "--bin <bin> Binary string i.e 0001001001", + "--fc <dec> facility code", + "--cn <dec> card number", + "-w, --wiegand <format> see `wiegand list` for available formats", + "-v, --verbose verbose output" + ], + "usage": "hf mf encodehid [-hv] [--bin <bin>] [--fc <dec>] [--cn <dec>] [-w <format>]" + }, "hf mf esave": { "command": "hf mf esave", "description": "Save emulator memory to file (bin/json)", @@ -11881,8 +11899,8 @@ } }, "metadata": { - "commands_extracted": 689, + "commands_extracted": 690, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-10-18T18:30:58" + "extracted_on": "2023-10-19T19:41:49" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 6fcbf242f..c1fa64657 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -539,6 +539,7 @@ Check column "offline" for their availability. |`hf mf ndefformat `|N |`Format MIFARE Classic Tag as NFC Tag` |`hf mf ndefread `|N |`Read and print NDEF records from card` |`hf mf ndefwrite `|N |`Write NDEF records to card` +|`hf mf encodehid `|N |`Encode a HID Credential / NDEF record to card` ### hf mfp From b9ae38f88808b26be0e68ffa2475e9629d8e0e1b Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Fri, 20 Oct 2023 00:33:58 +0200 Subject: [PATCH 0603/1034] Add timing to hw ping, reduce sleep to 1ms in WaitForResponse, no impact on CPU --- client/src/cmdhw.c | 11 +++++++++-- client/src/comms.c | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index 7cef9fa81..7b2693781 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -35,6 +35,7 @@ #include "pmflash.h" // rdv40validation_t #include "cmdflashmem.h" // get_signature.. #include "uart/uart.h" // configure timeout +#include "util_posix.h" static int CmdHelp(const char *Cmd); @@ -979,6 +980,7 @@ static int CmdPing(const char *Cmd) { arg_u64_0("l", "len", "<dec>", "length of payload to send"), arg_param_end }; + CLIExecWithReturn(ctx, Cmd, argtable, true); uint32_t len = arg_get_u32_def(ctx, 1, 32); CLIParserFree(ctx); @@ -1000,13 +1002,18 @@ static int CmdPing(const char *Cmd) { data[i] = i & 0xFF; } + uint64_t tms = msclock(); SendCommandNG(CMD_PING, data, len); if (WaitForResponseTimeout(CMD_PING, &resp, 1000)) { + tms = msclock() - tms; if (len) { bool error = (memcmp(data, resp.data.asBytes, len) != 0); - PrintAndLogEx((error) ? ERR : SUCCESS, "Ping response " _GREEN_("received") " and content ( %s )", error ? _RED_("fail") : _GREEN_("ok")); + PrintAndLogEx((error) ? ERR : SUCCESS, "Ping response " _GREEN_("received") + " in " _YELLOW_("%" PRIu64) " ms and content ( %s )", + tms, error ? _RED_("fail") : _GREEN_("ok")); } else { - PrintAndLogEx(SUCCESS, "Ping response " _GREEN_("received")); + PrintAndLogEx(SUCCESS, "Ping response " _GREEN_("received") + " in " _YELLOW_("%" PRIu64) " ms", tms); } } else PrintAndLogEx(WARNING, "Ping response " _RED_("timeout")); diff --git a/client/src/comms.c b/client/src/comms.c index 4d65fd5f9..269e75a1d 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -802,7 +802,7 @@ bool WaitForResponseTimeoutW(uint32_t cmd, PacketResponseNG *response, size_t ms show_warning = false; } // just to avoid CPU busy loop: - msleep(10); + msleep(1); } return false; } From a35bfbb13e9bd75c612dd6750ebe3098bc0eee8d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 20 Oct 2023 10:38:53 +0200 Subject: [PATCH 0604/1034] modified the CLI prompt to also show if TCP/UDP is used in the communication --- CHANGELOG.md | 2 ++ client/src/comms.h | 9 +++++++++ client/src/proxmark3.c | 34 ++++++++++++++++++++++++++-------- client/src/proxmark3.h | 7 ++++++- client/src/uart/uart_posix.c | 8 ++++++++ client/src/uart/uart_win32.c | 3 +++ 6 files changed, 54 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index caa1ffd66..fe36c3236 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed the CLI prompt to show tcp/udp if used (@iceman1001) + - Changed `hw ping` - now shows transfer time (@doegox) - Added `hf mf encodehid` - writes HID legacy credential to a empty MFC (@iceman1001) - Added `hf iclass sam` - Added support for HID SAM Picopass communications (@iceman1001) - Add support for quoted arguments in the CLI, allowing spaces in them which diff --git a/client/src/comms.h b/client/src/comms.h index 0c1329cda..3b35e9a24 100644 --- a/client/src/comms.h +++ b/client/src/comms.h @@ -54,6 +54,13 @@ typedef enum { FPGA_MEM, } DeviceMemType_t; +typedef enum { + PM3_TCPv4, + PM3_TCPv6, + PM3_UDPv4, + PM3_NONE, +} CommunicationProtol_t; + typedef struct { bool run; // If TRUE, continue running the uart_communication thread bool block_after_ACK; // if true, block after receiving an ACK package @@ -62,6 +69,8 @@ typedef struct { bool send_with_crc_on_fpc; // "Session" flag, to tell via which interface next msgs are sent: USB or FPC USART bool send_via_fpc_usart; + // to tell if we are using TCP/UDP/TCPv6 + CommunicationProtol_t send_via_ip; // To memorise baudrate uint32_t uart_speed; uint16_t last_command; diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index a91f74179..f4887dc1f 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -127,9 +127,10 @@ static void showBanner(void) { static const char *prompt_dev = ""; static const char *prompt_ctx = ""; +static const char *prompt_net = ""; -static void prompt_compose(char *buf, size_t buflen, const char *promptctx, const char *promptdev) { - snprintf(buf, buflen - 1, PROXPROMPT_COMPOSE, promptdev, promptctx); +static void prompt_compose(char *buf, size_t buflen, const char *promptctx, const char *promptdev, const char *promptnet) { + snprintf(buf, buflen - 1, PROXPROMPT_COMPOSE, promptdev, promptnet, promptctx); } static int check_comm(void) { @@ -138,7 +139,7 @@ static int check_comm(void) { PrintAndLogEx(INFO, "Running in " _YELLOW_("OFFLINE") " mode. Use "_YELLOW_("\"hw connect\"") " to reconnect\n"); prompt_dev = PROXPROMPT_DEV_OFFLINE; char prompt[PROXPROMPT_MAX_SIZE] = {0}; - prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev); + prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev, prompt_net); char prompt_filtered[PROXPROMPT_MAX_SIZE] = {0}; memcpy_filter_ansi(prompt_filtered, prompt, sizeof(prompt_filtered), !g_session.supports_colors); pm3line_update_prompt(prompt_filtered); @@ -265,10 +266,27 @@ main_loop(char *script_cmds_file, char *script_cmd, bool stayInCommandLoop) { bool printprompt = false; if (g_session.pm3_present) { - if (g_conn.send_via_fpc_usart == false) - prompt_dev = PROXPROMPT_DEV_USB; - else + + switch(g_conn.send_via_ip) { + case PM3_TCPv4: + prompt_net = PROXPROMPT_NET_TCPV4; + break; + case PM3_TCPv6: + prompt_net = PROXPROMPT_NET_TCPV6; + break; + case PM3_UDPv4: + prompt_net = PROXPROMPT_NET_UDPV4; + break; + case PM3_NONE: + default: + break; + } + + if (g_conn.send_via_fpc_usart) prompt_dev = PROXPROMPT_DEV_FPC; + else + prompt_dev = PROXPROMPT_DEV_USB; + } else { prompt_dev = PROXPROMPT_DEV_OFFLINE; } @@ -341,7 +359,7 @@ check_script: pm3line_check(check_comm); prompt_ctx = PROXPROMPT_CTX_INTERACTIVE; char prompt[PROXPROMPT_MAX_SIZE] = {0}; - prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev); + prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev, prompt_net); char prompt_filtered[PROXPROMPT_MAX_SIZE] = {0}; memcpy_filter_ansi(prompt_filtered, prompt, sizeof(prompt_filtered), !g_session.supports_colors); g_pendingPrompt = true; @@ -391,7 +409,7 @@ check_script: g_printAndLog &= PRINTANDLOG_LOG; } char prompt[PROXPROMPT_MAX_SIZE] = {0}; - prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev); + prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev, prompt_net); // always filter RL magic separators if not using readline char prompt_filtered[PROXPROMPT_MAX_SIZE] = {0}; memcpy_filter_rlmarkers(prompt_filtered, prompt, sizeof(prompt_filtered)); diff --git a/client/src/proxmark3.h b/client/src/proxmark3.h index 71072422a..e63b93f4e 100644 --- a/client/src/proxmark3.h +++ b/client/src/proxmark3.h @@ -24,7 +24,7 @@ #define PROXPROMPT_MAX_SIZE 255 -#define PROXPROMPT_COMPOSE "[" "%s%s" "] pm3 --> " +#define PROXPROMPT_COMPOSE "[" "%s%s%s" "] pm3 --> " #define PROXPROMPT_CTX_SCRIPTFILE "|" _RL_GREEN_("script") #define PROXPROMPT_CTX_SCRIPTCMD "|" _RL_GREEN_("script") @@ -35,6 +35,11 @@ #define PROXPROMPT_DEV_FPC _RL_BOLD_GREEN_("fpc") #define PROXPROMPT_DEV_OFFLINE _RL_BOLD_RED_("offline") +#define PROXPROMPT_NET_TCPV4 "|" _RL_BOLD_GREEN_("tcp") +#define PROXPROMPT_NET_UDPV4 "|" _RL_BOLD_GREEN_("udp") +#define PROXPROMPT_NET_TCPV6 "|" _RL_BOLD_GREEN_("tcp v6") + + #define PROXHISTORY "history.txt" #define PROXLOG "log_%Y%m%d%H%M%S.txt" #define MAX_NESTED_CMDSCRIPT 10 diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index 0a9afb04a..5be5ffcdb 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -206,6 +206,8 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { free(sp); return INVALID_SERIAL_PORT; } + + g_conn.send_via_ip = PM3_TCPv4; return sp; } @@ -313,6 +315,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { sp->fd = sfd; sp->udpBuffer = RingBuf_create(MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 30); + g_conn.send_via_ip = PM3_UDPv4; return sp; } @@ -360,6 +363,8 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } sp->fd = sfd; + + g_conn.send_via_ip = PM3_NONE; return sp; #else // HAVE_BLUEZ PrintAndLogEx(ERR, "Sorry, this client doesn't support native Bluetooth addresses"); @@ -411,6 +416,8 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } sp->fd = localsocket; + + g_conn.send_via_ip = PM3_NONE; return sp; } @@ -480,6 +487,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } } g_conn.uart_speed = uart_get_speed(sp); + g_conn.send_via_ip = PM3_NONE; return sp; } diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index 794302a81..2d0498981 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -225,6 +225,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { free(sp); return INVALID_SERIAL_PORT; } + g_conn.send_via_ip = PM3_TCPv4; return sp; } @@ -345,6 +346,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { sp->hSocket = hSocket; sp->udpBuffer = RingBuf_create(MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 30); + g_conn.send_via_ip = PM3_UDPv4; return sp; } @@ -390,6 +392,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } } g_conn.uart_speed = uart_get_speed(sp); + g_conn.send_via_ip = PM3_NONE; return sp; } From 0dc921c6b7658c5f7427c50f3d8780df6935ff1b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 20 Oct 2023 12:51:12 +0200 Subject: [PATCH 0605/1034] added the udpv6 and also try to identify when v6 is used (tcp/udp) --- client/src/comms.h | 1 + client/src/proxmark3.c | 3 +++ client/src/proxmark3.h | 1 + client/src/uart/uart_posix.c | 13 +++++++++---- client/src/uart/uart_win32.c | 11 ++++++++--- 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/client/src/comms.h b/client/src/comms.h index 3b35e9a24..3d281f026 100644 --- a/client/src/comms.h +++ b/client/src/comms.h @@ -58,6 +58,7 @@ typedef enum { PM3_TCPv4, PM3_TCPv6, PM3_UDPv4, + PM3_UDPv6, PM3_NONE, } CommunicationProtol_t; diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index f4887dc1f..df5ef7a18 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -277,6 +277,9 @@ main_loop(char *script_cmds_file, char *script_cmd, bool stayInCommandLoop) { case PM3_UDPv4: prompt_net = PROXPROMPT_NET_UDPV4; break; + case PM3_UDPv6: + prompt_net = PROXPROMPT_NET_UDPV6; + break; case PM3_NONE: default: break; diff --git a/client/src/proxmark3.h b/client/src/proxmark3.h index e63b93f4e..f58c7950e 100644 --- a/client/src/proxmark3.h +++ b/client/src/proxmark3.h @@ -38,6 +38,7 @@ #define PROXPROMPT_NET_TCPV4 "|" _RL_BOLD_GREEN_("tcp") #define PROXPROMPT_NET_UDPV4 "|" _RL_BOLD_GREEN_("udp") #define PROXPROMPT_NET_TCPV6 "|" _RL_BOLD_GREEN_("tcp v6") +#define PROXPROMPT_NET_UDPV6 "|" _RL_BOLD_GREEN_("udp v6") #define PROXHISTORY "history.txt" diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index 5be5ffcdb..1c87b2c1e 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -131,6 +131,10 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } } + + // assume v4 + g_conn.send_via_ip = PM3_TCPv4; + // find the port char *lColon = strchr(addrPortStr, ':'); char *rColon = strrchr(addrPortStr, ':'); @@ -151,6 +155,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } else { portstr = "18888"; } + g_conn.send_via_ip = PM3_TCPv6; } // handle the end of the address @@ -207,7 +212,6 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { return INVALID_SERIAL_PORT; } - g_conn.send_via_ip = PM3_TCPv4; return sp; } @@ -244,6 +248,9 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } } + // Assume v4 + g_conn.send_via_ip = PM3_UDPv4; + // find the port char *lColon = strchr(addrPortStr, ':'); char *rColon = strrchr(addrPortStr, ':'); @@ -264,6 +271,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } else { portstr = "18888"; } + g_conn.send_via_ip = PM3_UDPv6; } // handle the end of the address @@ -279,7 +287,6 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { info.ai_family = PF_UNSPEC; info.ai_socktype = SOCK_DGRAM; -// info.ai_protocol = SOL_UDP; int s = getaddrinfo(addrstr, portstr, &info, &addr); if (s != 0) { @@ -314,8 +321,6 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { sp->fd = sfd; sp->udpBuffer = RingBuf_create(MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 30); - - g_conn.send_via_ip = PM3_UDPv4; return sp; } diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index 2d0498981..a96b6e1bb 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -135,6 +135,9 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } } + // Assume v4 + g_conn.send_via_ip = PM3_TCPv4; + // find the port char *lColon = strchr(addrPortStr, ':'); char *rColon = strrchr(addrPortStr, ':'); @@ -155,6 +158,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } else { portstr = "18888"; } + g_conn.send_via_ip = PM3_TCPv6; } // handle the end of the address @@ -225,7 +229,6 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { free(sp); return INVALID_SERIAL_PORT; } - g_conn.send_via_ip = PM3_TCPv4; return sp; } @@ -263,6 +266,9 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } } + // Assume v4 + g_conn.send_via_ip = PM3_UDPv4; + // find the port char *lColon = strchr(addrPortStr, ':'); char *rColon = strrchr(addrPortStr, ':'); @@ -283,6 +289,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } else { portstr = "18888"; } + g_conn.send_via_ip = PM3_UDPv6; } // handle the end of the address @@ -345,8 +352,6 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { sp->hSocket = hSocket; sp->udpBuffer = RingBuf_create(MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 30); - - g_conn.send_via_ip = PM3_UDPv4; return sp; } From 2790bc0c16933fc7710291d92ce05e20d051a8ed Mon Sep 17 00:00:00 2001 From: Antiklesys <syselkitna@gmail.com> Date: Fri, 20 Oct 2023 20:30:16 +0800 Subject: [PATCH 0606/1034] Modified hf iclass calcnewkey Added support for a scenario in which the old key is elite and the new key is not elite. --- CHANGELOG.md | 1 + client/src/cmdhficlass.c | 6 ++++++ doc/commands.json | 6 +++--- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe36c3236..a9336c352 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Modified `hf iclass calcnewkey` - Added calculations for old key elite and new key non elite (@Antiklesys) - Changed the CLI prompt to show tcp/udp if used (@iceman1001) - Changed `hw ping` - now shows transfer time (@doegox) - Added `hf mf encodehid` - writes HID legacy credential to a empty MFC (@iceman1001) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 19a319db5..2a66634ac 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -3215,6 +3215,7 @@ static int CmdHFiClassCalcNewKey(const char *Cmd) { arg_str0(NULL, "csn", "<hex>", "Specify a Card Serial Number (CSN) to diversify the key (if omitted will attempt to read a CSN)"), arg_lit0(NULL, "elite", "Elite computations applied to new key"), arg_lit0(NULL, "elite2", "Elite computations applied to both old and new key"), + arg_lit0(NULL, "oldelite", "Elite computations applied only to old key"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -3307,6 +3308,11 @@ static int CmdHFiClassCalcNewKey(const char *Cmd) { old_elite = true; } + if (arg_get_lit(ctx, 8)) { + elite = false; + old_elite = true; + } + CLIParserFree(ctx); uint8_t xor_div_key[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/doc/commands.json b/doc/commands.json index 7e27429f1..96ecb5e32 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -2986,10 +2986,10 @@ "--new <hex> Specify key as 8 hex bytes", "--nki <dec> New key index to select key from memory 'hf iclass managekeys'", "--csn <hex> Specify a Card Serial Number (CSN) to diversify the key (if omitted will attempt to read a CSN)", - "--elite Elite computations applied to new key", - "--elite2 Elite computations applied to both old and new key" + "--elite2 Elite computations applied to both old and new key", + "--oldelite Elite computations applied only to old key" ], - "usage": "hf iclass calcnewkey [-h] [--old <hex>] [--oki <dec>] [--new <hex>] [--nki <dec>] [--csn <hex>] [--elite] [--elite2]" + "usage": "hf iclass calcnewkey [-h] [--old <hex>] [--oki <dec>] [--new <hex>] [--nki <dec>] [--csn <hex>] [--elite] [--elite2] [--oldelite]" }, "hf iclass chk": { "command": "hf iclass chk", From c4ff8473557cb8c2879d7e6acb32a09e76213ff8 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Fri, 20 Oct 2023 14:49:39 +0200 Subject: [PATCH 0607/1034] typo --- client/src/comms.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/comms.h b/client/src/comms.h index 3d281f026..9f4d6cd60 100644 --- a/client/src/comms.h +++ b/client/src/comms.h @@ -60,7 +60,7 @@ typedef enum { PM3_UDPv4, PM3_UDPv6, PM3_NONE, -} CommunicationProtol_t; +} CommunicationProtocol_t; typedef struct { bool run; // If TRUE, continue running the uart_communication thread @@ -71,7 +71,7 @@ typedef struct { // "Session" flag, to tell via which interface next msgs are sent: USB or FPC USART bool send_via_fpc_usart; // to tell if we are using TCP/UDP/TCPv6 - CommunicationProtol_t send_via_ip; + CommunicationProtocol_t send_via_ip; // To memorise baudrate uint32_t uart_speed; uint16_t last_command; From 272cb2bbc57f28c5185491cd9c8d2acae9d4e434 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 20 Oct 2023 16:54:44 +0200 Subject: [PATCH 0608/1034] added no save parameter to iclass dump. Also adjusted the text for the other places. --- CHANGELOG.md | 3 ++- client/src/cmdhf14b.c | 24 ++++++++++++++---------- client/src/cmdhficlass.c | 8 ++++++++ client/src/cmdhfmfu.c | 34 +++++++++++++++++++--------------- client/src/cmdlft55xx.c | 8 +++++++- 5 files changed, 50 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a9336c352..6bbf83804 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Modified `hf iclass calcnewkey` - Added calculations for old key elite and new key non elite (@Antiklesys) + - Changed `hf iclass dump` - now allow no save of dumped data (@iceman1001) + - Changed `hf iclass calcnewkey` - Added calculations for old key elite and new key non elite (@Antiklesys) - Changed the CLI prompt to show tcp/udp if used (@iceman1001) - Changed `hw ping` - now shows transfer time (@doegox) - Added `hf mf encodehid` - writes HID legacy credential to a empty MFC (@iceman1001) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index a762f3525..c60f1a683 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -1537,17 +1537,21 @@ static int CmdHF14BDump(const char *Cmd) { print_sr_blocks(data, cardsize, card.uid); - if (nosave == false) { - // save to file - if (fnlen < 1) { - PrintAndLogEx(INFO, "using UID as filename"); - char *fptr = filename + snprintf(filename, sizeof(filename), "hf-14b-"); - FillFileNameByUID(fptr, SwapEndian64(card.uid, card.uidlen, 8), "-dump", card.uidlen); - } - - size_t datalen = (lastblock + 2) * ST25TB_SR_BLOCK_SIZE; - pm3_save_dump(filename, data, datalen, jsf14b_v2); + if (nosave) { + PrintAndLogEx(INFO, "Called with no save option"); + PrintAndLogEx(NORMAL, ""); + return PM3_SUCCESS; } + + // save to file + if (fnlen < 1) { + PrintAndLogEx(INFO, "using UID as filename"); + char *fptr = filename + snprintf(filename, sizeof(filename), "hf-14b-"); + FillFileNameByUID(fptr, SwapEndian64(card.uid, card.uidlen, 8), "-dump", card.uidlen); + } + + size_t datalen = (lastblock + 2) * ST25TB_SR_BLOCK_SIZE; + pm3_save_dump(filename, data, datalen, jsf14b_v2); } return switch_off_field_14b(); diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 2a66634ac..f5dfe4145 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1754,6 +1754,7 @@ static int CmdHFiClassDump(const char *Cmd) { arg_lit0("z", "dense", "dense dump output style"), arg_lit0(NULL, "force", "force unsecure card read"), arg_lit0(NULL, "shallow", "use shallow (ASK) reader modulation instead of OOK"), + arg_lit0(NULL, "ns", "no save to file"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -1840,6 +1841,7 @@ static int CmdHFiClassDump(const char *Cmd) { bool dense_output = g_session.dense_output || arg_get_lit(ctx, 9); bool force = arg_get_lit(ctx, 10); bool shallow_mod = arg_get_lit(ctx, 11); + bool nosave = arg_get_lit(ctx, 12); CLIParserFree(ctx); @@ -2085,6 +2087,12 @@ write_dump: // print the dump printIclassDumpContents(tag_data, 1, (bytes_got / 8), bytes_got, dense_output); + if (nosave) { + PrintAndLogEx(INFO, "Called with no save option"); + PrintAndLogEx(NORMAL, ""); + return PM3_SUCCESS; + } + // use CSN as filename if (filename[0] == 0) { strcat(filename, "hf-iclass-"); diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index c15ad1b74..99c0223a4 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -2665,23 +2665,27 @@ static int CmdHF14AMfUDump(const char *Cmd) { printMFUdumpEx(&dump_file_data, pages, start_page); - if (nosave == false) { - // user supplied filename? - if (fnlen < 1) { - PrintAndLogEx(INFO, "Using UID as filename"); - uint8_t uid[7] = {0}; - memcpy(uid, (uint8_t *)&dump_file_data.data, 3); - memcpy(uid + 3, (uint8_t *)&dump_file_data.data + 4, 4); - strcat(filename, "hf-mfu-"); - FillFileNameByUID(filename, uid, "-dump", sizeof(uid)); - } + if (nosave) { + PrintAndLogEx(INFO, "Called with no save option"); + PrintAndLogEx(NORMAL, ""); + return PM3_SUCCESS; + } - uint16_t datalen = pages * MFU_BLOCK_SIZE + MFU_DUMP_PREFIX_LENGTH; - pm3_save_dump(filename, (uint8_t *)&dump_file_data, datalen, jsfMfuMemory); + // user supplied filename? + if (fnlen < 1) { + PrintAndLogEx(INFO, "Using UID as filename"); + uint8_t uid[7] = {0}; + memcpy(uid, (uint8_t *)&dump_file_data.data, 3); + memcpy(uid + 3, (uint8_t *)&dump_file_data.data + 4, 4); + strcat(filename, "hf-mfu-"); + FillFileNameByUID(filename, uid, "-dump", sizeof(uid)); + } - if (is_partial) { - PrintAndLogEx(WARNING, "Partial dump created. (%d of %d blocks)", pages, card_mem_size); - } + uint16_t datalen = pages * MFU_BLOCK_SIZE + MFU_DUMP_PREFIX_LENGTH; + pm3_save_dump(filename, (uint8_t *)&dump_file_data, datalen, jsfMfuMemory); + + if (is_partial) { + PrintAndLogEx(WARNING, "Partial dump created. (%d of %d blocks)", pages, card_mem_size); } return PM3_SUCCESS; diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index 89a060a8e..e181f8667 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -2298,8 +2298,14 @@ static int CmdT55xxDump(const char *Cmd) { } } + if (nosave) { + PrintAndLogEx(INFO, "Called with no save option"); + PrintAndLogEx(NORMAL, ""); + return PM3_SUCCESS; + } + // all ok, save dump to file - if (success && nosave == false) { + if (success) { // set default filename, if not set by user if (strlen(filename) == 0) { From 854a95db6c3536b94f83c3d2e6195e826ee61b10 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 21 Oct 2023 15:45:12 +0200 Subject: [PATCH 0609/1034] added MAD entries from the Metrodroid Project. https://github.com/metrodroid/metrodroid/wiki/DESFire-Applications-IDs --- CHANGELOG.md | 1 + client/resources/mad.json | 54 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bbf83804..b190c5363 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed mad.json - added entries from the Metrodroid project (@iceman1001) - Changed `hf iclass dump` - now allow no save of dumped data (@iceman1001) - Changed `hf iclass calcnewkey` - Added calculations for old key elite and new key non elite (@Antiklesys) - Changed the CLI prompt to show tcp/udp if used (@iceman1001) diff --git a/client/resources/mad.json b/client/resources/mad.json index 38cdf2636..a11236189 100644 --- a/client/resources/mad.json +++ b/client/resources/mad.json @@ -2940,7 +2940,7 @@ "system_integrator": "A.I.I." }, { - "application": "Multi-Modal Transit", + "application": "Multi-Modal Transit (Vix/ERG)", "company": "ERG Transit Systems", "mad": "0x2103", "service_provider": "ERG Transit Systems", @@ -2953,6 +2953,13 @@ "service_provider": "ERG Transit Systems", "system_integrator": "ERG Transit Systems" }, + { + "application": "Transit (Metrocard / Christchurch)", + "company": "INIT Transit Systems", + "mad": "0x2105", + "service_provider": "INIT Transit Systems", + "system_integrator": "INIT Transit Systems" + }, { "application": "Mass Transportation Ticketing", "company": "Omnifare", @@ -2995,6 +3002,13 @@ "service_provider": "Emcard", "system_integrator": "Emtest" }, + { + "application": "Integrated multi-modal transport ticketing system", + "company": "HOP Fastpass", + "mad": "0x210E", + "service_provider": "HOP Fastpass", + "system_integrator": "HOP Fastpass" + }, { "application": "Integrated multi-modal transport ticketing system", "company": "Keane Australia PTY Limited", @@ -3038,7 +3052,7 @@ "system_integrator": "T-Systems GEI" }, { - "application": "Transportation ticket", + "application": "Transportation ticket (Lítačka)", "company": "Haguess s.r.o.", "mad": "0x2115", "service_provider": "HAGUESS, a.s.", @@ -3135,6 +3149,35 @@ "service_provider": "RTD", "system_integrator": "ACS" }, + { + "application": "Bus and rail fare collection (HOLO)", + "company": "INIT", + "mad": "0x2136", + "service_provider": "INIT", + "system_integrator": "INIT" + }, + { + "application": "Bus and rail fare collection (Ventra)", + "company": "Cubic", + "mad": "0x2138", + "service_provider": "Cubic", + "system_integrator": "Cubic" + }, + { + "application": "Bus and rail fare collection (Clipper)", + "company": "Cubic", + "mad": "0x2139", + "service_provider": "Cubic", + "system_integrator": "Cubic" + }, + { + "application": "Bus and rail fare collection (WAVE)", + "company": "INIT Rhode Island", + "mad": "0x213A", + "service_provider": "INIT Rhode Island", + "system_integrator": "INIT Rhode Island" + }, + { "application": "Bus services with extension to rail and taxi", "company": "Questek Marketing", @@ -13621,5 +13664,12 @@ "mad": "0xF001", "service_provider": "Tech ID", "system_integrator": "Tech ID" + }, + { + "application": "Miscellaneous applications", + "company": "Reserved For future Use", + "mad": "0xFFFF", + "service_provider": "RFU", + "system_integrator": "RFU" } ] From 2fed756dd945e6b97be63490a887f98307b63ad3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 21 Oct 2023 17:07:47 +0200 Subject: [PATCH 0610/1034] added desfire AID entries from the Metrodroid Project. https://github.com/metrodroid/metrodroid/wiki/DESFire-Applications-IDs --- CHANGELOG.md | 1 + client/resources/aid_desfire.json | 158 +++++++++++++++++++++++++++++- 2 files changed, 156 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b190c5363..ee649ac76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed aid_desfire.json - added entreis from the Metrodroid project (@iceman1001) - Changed mad.json - added entries from the Metrodroid project (@iceman1001) - Changed `hf iclass dump` - now allow no save of dumped data (@iceman1001) - Changed `hf iclass calcnewkey` - Added calculations for old key elite and new key non elite (@Antiklesys) diff --git a/client/resources/aid_desfire.json b/client/resources/aid_desfire.json index f5387ff45..f1a0d946a 100644 --- a/client/resources/aid_desfire.json +++ b/client/resources/aid_desfire.json @@ -49,7 +49,7 @@ }, { "AID": "F21190", - "Vendor": "Metropolitan Transportation Commission", + "Vendor": "Metropolitan Transportation Commission / Cubic", "Country": "US", "Name": "Clipper Card", "Description": "", @@ -81,7 +81,7 @@ }, { "AID": "784000", - "Vendor": "NO1", + "Vendor": "NOL", "Country": "UAE", "Name": "Nol Card/Dubai", "Description": "Nol Card/Dubai", @@ -121,7 +121,7 @@ }, { "AID": "F21030", - "Vendor": "ORCA Card", + "Vendor": "ORCA (VUX/ERG)", "Country": "", "Name": "ORCA Card", "Description": "(FIDs 02: Trip History; 04: current balance)", @@ -383,5 +383,157 @@ "Name": "Disney MagicBand", "Description": "AID found on MagicBand desfire cards", "Type": "payment system" + }, + { + "AID": "F21100", + "Vendor": "MyKI", + "Country": "AUS", + "Name": "Myki", + "Description": "AID found on Myki ticket cards", + "Type": "transport" + }, + { + "AID": "F210F0", + "Vendor": "MyKI", + "Country": "AUS", + "Name": "Myki", + "Description": "AID found on Myki ticket cards", + "Type": "transport" + }, + { + "AID": "F206B0", + "Vendor": "ACS", + "Country": "AUS", + "Name": "Metrocard / ACS", + "Description": "", + "Type": "transport" + }, + { + "AID": "F21050", + "Vendor": "INIT", + "Country": "NZ", + "Name": "Metrocard / Christchurch", + "Description": "", + "Type": "transport" + }, + { + "AID": "F21150", + "Vendor": "HAGUESS", + "Country": "CZ", + "Name": "Lítačka / Prague", + "Description": "", + "Type": "transport" + }, + { + "AID": "F21360", + "Vendor": "INIT", + "Country": "CZ", + "Name": "HOLO", + "Description": "", + "Type": "transport" + }, + { + "AID": "F21381", + "Vendor": "Cubic", + "Country": "US", + "Name": "Ventra", + "Description": "", + "Type": "transport" + }, + { + "AID": "F213A0", + "Vendor": "INIT", + "Country": "US", + "Name": "WAVE / Rhode Island", + "Description": "", + "Type": "transport" + }, + { + "AID": "F210E0", + "Vendor": "Hop Fastpass", + "Country": "", + "Name": "Hop Fastpass", + "Description": "", + "Type": "transport" + }, + { + "AID": "EF2011", + "Vendor": "HSL", + "Country": "FI", + "Name": "HSL / Helsinki", + "Description": "", + "Type": "transport" + }, + { + "AID": "A00216", + "Vendor": "ITSO", + "Country": "", + "Name": "ITSO", + "Description": "", + "Type": "transport" + }, + { + "AID": "554000", + "Vendor": "AT HOP", + "Country": "", + "Name": "AT HOP", + "Description": "", + "Type": "transport" + }, + { + "AID": "534531", + "Vendor": "OPAL", + "Country": "AUS", + "Name": "OPAL", + "Description": "", + "Type": "transport" + }, + { + "AID": "2211AF", + "Vendor": "Leap", + "Country": "", + "Name": "Leap", + "Description": "", + "Type": "transport" + }, + { + "AID": "015342", + "Vendor": "BEM", + "Country": "TH", + "Name": "BEM / Bangkok", + "Description": "", + "Type": "transport" + }, + { + "AID": "012242", + "Vendor": "Istanbulkart", + "Country": "TR", + "Name": "Istanbulkart / Istanbul", + "Description": "", + "Type": "transport" + }, + { + "AID": "010000", + "Vendor": "Madrid Public Transit Card", + "Country": "ES", + "Name": "Madrid Public Transit Card", + "Description": "", + "Type": "transport" + }, + { + "AID": "000001", + "Vendor": "Invalid / reserved", + "Country": "", + "Name": "Invalid / reserved", + "Description": "used by Compass DESFire and Breeze DESFire", + "Type": "transport" + }, + { + "AID": "FFFFFF", + "Vendor": "Reserved for future use", + "Country": "", + "Name": "Reserved for future use", + "Description": "used by AT HOP, Nol, ORCA", + "Type": "transport" } ] From 9a9d2cf6212df9dae5e71f4dee5c5121fbd531e1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 22 Oct 2023 14:08:18 +0200 Subject: [PATCH 0611/1034] added a new command -data bmap- it breaks down a hex value in rows of bits according to a supplied template --- CHANGELOG.md | 1 + client/src/cmddata.c | 64 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee649ac76..084441cc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added new command `data bmap` - breaks down a hexvalue to a binary template (@iceman1001) - Changed aid_desfire.json - added entreis from the Metrodroid project (@iceman1001) - Changed mad.json - added entries from the Metrodroid project (@iceman1001) - Changed `hf iclass dump` - now allow no save of dumped data (@iceman1001) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index a1ed8dc65..ea37ccfd5 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3451,6 +3451,69 @@ static int CmdAtrLookup(const char *Cmd) { return PM3_SUCCESS; } +static int CmdBinaryMap(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "data bmap", + "Breaks down a hex value to binary according a template\n" + " data bmap -d 16 -m 4,4\n" + "This will give two rows each with four bits", + "data bmap -d 3B -m 2,5,1\n" + ); + + void *argtable[] = { + arg_param_begin, + arg_str0("d", NULL, "<hex>", "hex string"), + arg_str0("m", NULL, "<str>", "binary template"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + + int hlen = 5; + uint8_t hex[5 + 1]; + CLIGetStrWithReturn(ctx, 1,hex, &hlen); + + int tlen = 40; + uint8_t template[40 + 1]; + CLIGetStrWithReturn(ctx, 2, template, &tlen); + CLIParserFree(ctx); + + char bits[(8 * 4) + 1] = {0}; + hextobinstring_n(bits, hex, hlen); + + int x = 0; + char *token = strtok(template, ","); + + PrintAndLogEx(INFO, "---+---------------------------"); + PrintAndLogEx(INFO, " | b0 b1 b2 b3 b4 b5 b6 b7"); + PrintAndLogEx(INFO, "---+---------------------------"); + + uint8_t i = 0; + uint8_t cnt = 1; + while (token != NULL) { + sscanf(token, "%d", &x); + + if (i) { + PrintAndLogEx(INFO, " %d | %*.s" NOLF, cnt, i * 3, " "); + } else { + PrintAndLogEx(INFO, " %d | " NOLF, cnt); + } + + // incease with previous offset + x += i; + + for (;i < x; i++) { + PrintAndLogEx(NORMAL, "%c " NOLF, bits[7 - i]); + } + + PrintAndLogEx(NORMAL, ""); + token = strtok(NULL, ","); + cnt++; + } + + PrintAndLogEx(NORMAL, ""); + return PM3_SUCCESS; +} + static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, @@ -3493,6 +3556,7 @@ static command_t CommandTable[] = { {"atr", CmdAtrLookup, AlwaysAvailable, "ATR lookup"}, {"bin2hex", Cmdbin2hex, AlwaysAvailable, "Converts binary to hexadecimal"}, {"bitsamples", CmdBitsamples, IfPm3Present, "Get raw samples as bitstring"}, + {"bmap", CmdBinaryMap, AlwaysAvailable, "Convert hex value according a binary template"}, {"clear", CmdBuffClear, AlwaysAvailable, "Clears bigbuf on deviceside and graph window"}, {"diff", CmdDiff, AlwaysAvailable, "Diff of input files"}, {"hexsamples", CmdHexsamples, IfPm3Present, "Dump big buffer as hex bytes"}, From b857369f7a6727c56c1fffdd6f12d354ec89e105 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 22 Oct 2023 14:19:01 +0200 Subject: [PATCH 0612/1034] fix some warnings --- client/src/cmddata.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index ea37ccfd5..9d2f624d6 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3478,11 +3478,12 @@ static int CmdBinaryMap(const char *Cmd) { CLIParserFree(ctx); char bits[(8 * 4) + 1] = {0}; - hextobinstring_n(bits, hex, hlen); + hextobinstring_n(bits, (char*)hex, hlen); int x = 0; - char *token = strtok(template, ","); + char *token = strtok((char*)template, ","); + // header PrintAndLogEx(INFO, "---+---------------------------"); PrintAndLogEx(INFO, " | b0 b1 b2 b3 b4 b5 b6 b7"); PrintAndLogEx(INFO, "---+---------------------------"); From a2fdab98b53a7ca57f72a50f61ff337b93bdcbe7 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 22 Oct 2023 14:20:20 +0200 Subject: [PATCH 0613/1034] style --- client/src/cmddata.c | 8 ++++---- client/src/cmdhf14b.c | 2 +- client/src/cmdhficlass.c | 2 +- client/src/pm3line_vocabulary.h | 1 + client/src/proxmark3.c | 2 +- doc/commands.json | 24 ++++++++++++++++++++---- doc/commands.md | 1 + 7 files changed, 29 insertions(+), 11 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 9d2f624d6..01292cf65 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3470,7 +3470,7 @@ static int CmdBinaryMap(const char *Cmd) { int hlen = 5; uint8_t hex[5 + 1]; - CLIGetStrWithReturn(ctx, 1,hex, &hlen); + CLIGetStrWithReturn(ctx, 1, hex, &hlen); int tlen = 40; uint8_t template[40 + 1]; @@ -3478,10 +3478,10 @@ static int CmdBinaryMap(const char *Cmd) { CLIParserFree(ctx); char bits[(8 * 4) + 1] = {0}; - hextobinstring_n(bits, (char*)hex, hlen); + hextobinstring_n(bits, (char *)hex, hlen); int x = 0; - char *token = strtok((char*)template, ","); + char *token = strtok((char *)template, ","); // header PrintAndLogEx(INFO, "---+---------------------------"); @@ -3502,7 +3502,7 @@ static int CmdBinaryMap(const char *Cmd) { // incease with previous offset x += i; - for (;i < x; i++) { + for (; i < x; i++) { PrintAndLogEx(NORMAL, "%c " NOLF, bits[7 - i]); } diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index c60f1a683..5ddd150cb 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -1542,7 +1542,7 @@ static int CmdHF14BDump(const char *Cmd) { PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } - + // save to file if (fnlen < 1) { PrintAndLogEx(INFO, "using UID as filename"); diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index f5dfe4145..3966f8517 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1754,7 +1754,7 @@ static int CmdHFiClassDump(const char *Cmd) { arg_lit0("z", "dense", "dense dump output style"), arg_lit0(NULL, "force", "force unsecure card read"), arg_lit0(NULL, "shallow", "use shallow (ASK) reader modulation instead of OOK"), - arg_lit0(NULL, "ns", "no save to file"), + arg_lit0(NULL, "ns", "no save to file"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index 0274fcf89..cbc0632d7 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -107,6 +107,7 @@ const static vocabulary_t vocabulary[] = { { 1, "data atr" }, { 1, "data bin2hex" }, { 0, "data bitsamples" }, + { 1, "data bmap" }, { 1, "data clear" }, { 1, "data diff" }, { 0, "data hexsamples" }, diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index df5ef7a18..85b85f762 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -267,7 +267,7 @@ main_loop(char *script_cmds_file, char *script_cmd, bool stayInCommandLoop) { bool printprompt = false; if (g_session.pm3_present) { - switch(g_conn.send_via_ip) { + switch (g_conn.send_via_ip) { case PM3_TCPv4: prompt_net = PROXPROMPT_NET_TCPV4; break; diff --git a/doc/commands.json b/doc/commands.json index 96ecb5e32..635559526 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -275,6 +275,20 @@ ], "usage": "data bitsamples [-h]" }, + "data bmap": { + "command": "data bmap", + "description": "Breaks down a hex value to binary according a template data bmap -d 16 -m 4,4 This will give two rows each with four bits", + "notes": [ + "data bmap -d 3B -m 2,5,1" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-d <hex> hex string", + "-m <str> binary template" + ], + "usage": "data bmap [-h] [-d <hex>] [-m <str>]" + }, "data clear": { "command": "data clear", "description": "This function clears the bigbuff on deviceside and graph window", @@ -2986,6 +3000,7 @@ "--new <hex> Specify key as 8 hex bytes", "--nki <dec> New key index to select key from memory 'hf iclass managekeys'", "--csn <hex> Specify a Card Serial Number (CSN) to diversify the key (if omitted will attempt to read a CSN)", + "--elite Elite computations applied to new key", "--elite2 Elite computations applied to both old and new key", "--oldelite Elite computations applied only to old key" ], @@ -3092,9 +3107,10 @@ "--nr replay of NR/MAC", "-z, --dense dense dump output style", "--force force unsecure card read", - "--shallow use shallow (ASK) reader modulation instead of OOK" + "--shallow use shallow (ASK) reader modulation instead of OOK", + "--ns no save to file" ], - "usage": "hf iclass dump [-hz] [-f <fn>] [-k <hex>] [--ki <dec>] [--credit <hex>] [--ci <dec>] [--elite] [--raw] [--nr] [--force] [--shallow]" + "usage": "hf iclass dump [-hz] [-f <fn>] [-k <hex>] [--ki <dec>] [--credit <hex>] [--ci <dec>] [--elite] [--raw] [--nr] [--force] [--shallow] [--ns]" }, "hf iclass eload": { "command": "hf iclass eload", @@ -11899,8 +11915,8 @@ } }, "metadata": { - "commands_extracted": 690, + "commands_extracted": 691, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-10-19T19:41:49" + "extracted_on": "2023-10-22T12:20:10" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index c1fa64657..a2059a666 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -126,6 +126,7 @@ Check column "offline" for their availability. |`data atr `|Y |`ATR lookup` |`data bin2hex `|Y |`Converts binary to hexadecimal` |`data bitsamples `|N |`Get raw samples as bitstring` +|`data bmap `|Y |`Convert hex value according a binary template` |`data clear `|Y |`Clears bigbuf on deviceside and graph window` |`data diff `|Y |`Diff of input files` |`data hexsamples `|N |`Dump big buffer as hex bytes` From fd121bab4ffd02516ae0921171968d7f94b8caad Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 22 Oct 2023 18:56:19 +0200 Subject: [PATCH 0614/1034] added nosave parameter to lf em 4x05 dump --- CHANGELOG.md | 1 + client/src/cmdlfem4x05.c | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 084441cc8..7b5156d96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `lf em 4x05 dump` - now supports the `--ns` nosave parameter (@iceman1001) - Added new command `data bmap` - breaks down a hexvalue to a binary template (@iceman1001) - Changed aid_desfire.json - added entreis from the Metrodroid project (@iceman1001) - Changed mad.json - added entries from the Metrodroid project (@iceman1001) diff --git a/client/src/cmdlfem4x05.c b/client/src/cmdlfem4x05.c index f548d98e3..423afbab7 100644 --- a/client/src/cmdlfem4x05.c +++ b/client/src/cmdlfem4x05.c @@ -514,6 +514,7 @@ int CmdEM4x05Dump(const char *Cmd) { arg_param_begin, arg_str0("p", "pwd", "<hex>", "password (00000000)"), arg_str0("f", "file", "<fn>", "override filename prefix (optional). Default is based on UID"), + arg_lit0(NULL, "ns", "no save to file"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -522,6 +523,7 @@ int CmdEM4x05Dump(const char *Cmd) { int fnlen = 0; char filename[FILE_PATH_SIZE] = {0}; CLIParamStrToBuf(arg_get_str(ctx, 2), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); + bool nosave = arg_get_lit(ctx, 3); CLIParserFree(ctx); uint8_t addr = 0; @@ -693,6 +695,13 @@ int CmdEM4x05Dump(const char *Cmd) { } else { } + if (nosave) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "Called with no save option"); + PrintAndLogEx(NORMAL, ""); + return PM3_SUCCESS; + } + // all ok save dump to file if (success == PM3_SUCCESS) { From 225b1894f9c1268366f55d37c5e160ea2a6c33a3 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Mon, 23 Oct 2023 01:48:38 +0800 Subject: [PATCH 0615/1034] Add bind option (UDP, Linux) --- client/src/uart/uart.h | 4 ++ client/src/uart/uart_posix.c | 106 ++++++++++++++++++++++++++++++++++- client/src/uart/uart_win32.c | 4 ++ 3 files changed, 112 insertions(+), 2 deletions(-) diff --git a/client/src/uart/uart.h b/client/src/uart/uart.h index ae3896f73..f68d9c2f4 100644 --- a/client/src/uart/uart.h +++ b/client/src/uart/uart.h @@ -82,4 +82,8 @@ int uart_reconfigure_timeouts(uint32_t value); */ uint32_t uart_get_timeouts(void); +/* Specify the outbound address and port for TCP/UDP connections + */ +bool uart_bind(int sfd, char *bindAddrStr, char *bindPortStr, bool isBindingIPv6); + #endif // _UART_H_ diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index 1c87b2c1e..33ea9a88c 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -31,9 +31,11 @@ #include <unistd.h> #include <fcntl.h> #include <netinet/tcp.h> +#include <arpa/inet.h> #include <netdb.h> #include <sys/socket.h> #include <sys/un.h> +#include <errno.h> #ifdef HAVE_BLUEZ #include <bluetooth/bluetooth.h> @@ -148,7 +150,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { portstr = rColon + 1; } else { // two or more colon, IPv6 address - // tcp:[<ipv6 address>]:<port> + // "tcp:[<ipv6 address>]:<port>" // "tcp:<ipv6 address>", "tcp:[<ipv6 address>]" if (endBracket != NULL && rColon == endBracket + 1) { portstr = rColon + 1; @@ -236,6 +238,65 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { timeout.tv_usec = UART_TCP_CLIENT_RX_TIMEOUT_MS * 1000; + // find the "bind" option + char *bindAddrPortStr = strstr(addrPortStr, ",bind="); + char *bindAddrStr = NULL; + char *bindPortStr = NULL; + bool isBindingIPv6 = false; // Assume v4 + if (bindAddrPortStr != NULL) { + *bindAddrPortStr = '\0'; // as the end of target address (and port) + bindAddrPortStr += 6; + bindAddrStr = bindAddrPortStr; + + // find the start of the bind address + char *endBracket = strrchr(bindAddrPortStr, ']'); + if (bindAddrPortStr[0] == '[') { + bindAddrStr += 1; + if (endBracket == NULL) { + PrintAndLogEx(ERR, "error: wrong address: [] unmatched in bind option"); + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; + } + } + + // find the bind port + char *lColon = strchr(bindAddrPortStr, ':'); + char *rColon = strrchr(bindAddrPortStr, ':'); + if (rColon == NULL) { + // no colon + // ",bind=<ipv4 address>", ",bind=[<ipv4 address>]" + bindPortStr = NULL; + } else if (lColon == rColon) { + // only one colon + // ",bind=<ipv4 address>:<port>", ",bind=[<ipv4 address>]:<port>" + bindPortStr = rColon + 1; + } else { + // two or more colon, IPv6 address + // ",bind=[<ipv6 address>]:<port>" + // ",bind=<ipv6 address>", ",bind=[<ipv6 address>]" + if (endBracket != NULL && rColon == endBracket + 1) { + bindPortStr = rColon + 1; + } else { + bindPortStr = NULL; + } + isBindingIPv6 = true; + } + + // handle the end of the bind address + if (endBracket != NULL) { + *endBracket = '\0'; + } else if (rColon != NULL && lColon == rColon) { + *rColon = '\0'; + } + + // for bind option, it's possible to only specify address or port + if (strlen(bindAddrStr) == 0) + bindAddrStr = NULL; + if (bindPortStr != NULL && strlen(bindPortStr) == 0) + bindPortStr = NULL; + } + // find the start of the address char *endBracket = strrchr(addrPortStr, ']'); if (addrPortStr[0] == '[') { @@ -264,7 +325,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { portstr = rColon + 1; } else { // two or more colon, IPv6 address - // tcp:[<ipv6 address>]:<port> + // "tcp:[<ipv6 address>]:<port>" // "tcp:<ipv6 address>", "tcp:[<ipv6 address>]" if (endBracket != NULL && rColon == endBracket + 1) { portstr = rColon + 1; @@ -304,6 +365,14 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { if (sfd == -1) continue; + if (!uart_bind(sfd, bindAddrStr, bindPortStr, isBindingIPv6)) { + PrintAndLogEx(ERR, "error: Could not bind. errno: %d", errno); + freeaddrinfo(addr); + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; + } + if (connect(sfd, rp->ai_addr, rp->ai_addrlen) != -1) break; @@ -843,4 +912,37 @@ uint32_t uart_get_speed(const serial_port sp) { }; return uiPortSpeed; } + +bool uart_bind(int sfd, char *bindAddrStr, char *bindPortStr, bool isBindingIPv6) { + if (bindAddrStr == NULL && bindPortStr == NULL) + return true; // no need to bind + + struct sockaddr_storage bindSockaddr; + memset(&bindSockaddr, 0, sizeof(bindSockaddr)); + int bindPort = 0; // 0: port unspecified + if (bindPortStr != NULL) + bindPort = atoi(bindPortStr); + + if (!isBindingIPv6) { + struct sockaddr_in *bindSockaddr4 = (struct sockaddr_in *)&bindSockaddr; + bindSockaddr4->sin_family = AF_INET; + bindSockaddr4->sin_port = htons(bindPort); + if (bindAddrStr == NULL) + bindSockaddr4->sin_addr.s_addr = INADDR_ANY; + else + bindSockaddr4->sin_addr.s_addr = inet_addr(bindAddrStr); + } else { + struct sockaddr_in6 *bindSockaddr6 = (struct sockaddr_in6 *)&bindSockaddr; + bindSockaddr6->sin6_family = AF_INET6; + bindSockaddr6->sin6_port = htons(bindPort); + if (bindAddrStr == NULL) + bindSockaddr6->sin6_addr = in6addr_any; + else + inet_pton(AF_INET6, bindAddrStr, &(bindSockaddr6->sin6_addr)); + } + + int res = bind(sfd, (struct sockaddr *)&bindSockaddr, sizeof(bindSockaddr)); + return (res >= 0); +} + #endif diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index a96b6e1bb..233abf640 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -626,4 +626,8 @@ int uart_send(const serial_port sp, const uint8_t *p_tx, const uint32_t len) { } } +bool uart_bind(int sfd, char *bindAddrStr, char *bindPortStr, bool isBindingIPv6) { + return true; +} + #endif From 3a2b2dffae37b6fafe82e61a6d94a92f3e4698b8 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 22 Oct 2023 19:57:48 +0200 Subject: [PATCH 0616/1034] add some colors --- client/src/cmdlfem4x05.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/client/src/cmdlfem4x05.c b/client/src/cmdlfem4x05.c index 423afbab7..9b0e69753 100644 --- a/client/src/cmdlfem4x05.c +++ b/client/src/cmdlfem4x05.c @@ -750,16 +750,16 @@ int CmdEM4x05Read(const char *Cmd) { bool use_pwd = false; if (addr > 15) { - PrintAndLogEx(ERR, "Address must be between 0 and 15"); + PrintAndLogEx(ERR, "Address must be between 0 and 15, got " _RED_("%d"), addr); return PM3_EINVARG; } if (inputpwd == 0xFFFFFFFFFFFFFFFF) { - PrintAndLogEx(INFO, "Reading address %02u", addr); + PrintAndLogEx(INFO, "Reading address " _YELLOW_("%02u"), addr); } else { pwd = (inputpwd & 0xFFFFFFFF); use_pwd = true; - PrintAndLogEx(INFO, "Reading address %02u using password %08X", addr, pwd); + PrintAndLogEx(INFO, "Reading address " _YELLOW_("%02u") " using password " _YELLOW_("%08X"), addr, pwd); } uint32_t word = 0; @@ -827,14 +827,14 @@ int CmdEM4x05Write(const char *Cmd) { if (use_pwd) { if (protect_operation) - PrintAndLogEx(INFO, "Writing protection words data %08X using password %08X", data, pwd); + PrintAndLogEx(INFO, "Writing protection words data " _YELLOW_("%08X") " using password " _YELLOW_("%08X"), data, pwd); else - PrintAndLogEx(INFO, "Writing address %d data %08X using password %08X", addr, data, pwd); + PrintAndLogEx(INFO, "Writing address " _YELLOW_("%d") " data " _YELLOW_("%08X") " using password " _YELLOW_("%08X"), addr, data, pwd); } else { if (protect_operation) - PrintAndLogEx(INFO, "Writing protection words data %08X", data); + PrintAndLogEx(INFO, "Writing protection words data " _YELLOW_("%08X") , data); else - PrintAndLogEx(INFO, "Writing address %d data %08X", addr, data); + PrintAndLogEx(INFO, "Writing address " _YELLOW_("%d") " data " _YELLOW_("%08X") , addr, data); } res = PM3_SUCCESS; @@ -859,7 +859,7 @@ int CmdEM4x05Write(const char *Cmd) { if (status == PM3_SUCCESS) PrintAndLogEx(SUCCESS, "Data written and verified"); else if (status == PM3_EFAILED) - PrintAndLogEx(ERR, "Tag denied %s operation", protect_operation ? "Protect" : "Write"); + PrintAndLogEx(ERR, "Tag denied " _RED_("%s") " operation", protect_operation ? "Protect" : "Write"); else PrintAndLogEx(DEBUG, "No answer from tag"); From baecf198013e59f0cf444ffe496657672f373299 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 22 Oct 2023 21:02:01 +0200 Subject: [PATCH 0617/1034] fix lf_em_tearoff --- client/luascripts/lf_em_tearoff.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/luascripts/lf_em_tearoff.lua b/client/luascripts/lf_em_tearoff.lua index 2aa0dd5ee..8c56eaede 100644 --- a/client/luascripts/lf_em_tearoff.lua +++ b/client/luascripts/lf_em_tearoff.lua @@ -114,7 +114,7 @@ local function main(args) local set_tearoff_delay = 'hw tearoff --delay %d' local enable_tearoff = 'hw tearoff --on' - local wr_template = 'lf em 4x05_write %s %s %s' + local wr_template = 'lf em 4x05 write --addr %s --data %s --pwd %s' -- init addr to value core.console(wr_template:format(addr, wr_value, password)) From 675c86ec98a5395c0dcedd0fb1ab437b375f8436 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 22 Oct 2023 22:06:13 +0200 Subject: [PATCH 0618/1034] lf_em_tearoff: better safe than sorry --- client/luascripts/lf_em_tearoff.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/luascripts/lf_em_tearoff.lua b/client/luascripts/lf_em_tearoff.lua index 8c56eaede..ee8acfa70 100644 --- a/client/luascripts/lf_em_tearoff.lua +++ b/client/luascripts/lf_em_tearoff.lua @@ -83,15 +83,15 @@ local function main(args) ed = ed or 2100 if #password ~= 8 then - password = '' + return oops('password must be 4 hex bytes') end if #wr_value ~= 8 then - wr_value = 'FFFFFFFF' + return oops('write value must be 4 hex bytes') end if #rd_value ~= 8 then - rd_value = 'FFFFFFFF' + return oops('read value must be 4 hex bytes') end if sd > ed then From e20742dd0420b101499a31e04e3a4960473e88ea Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 22 Oct 2023 22:39:01 +0200 Subject: [PATCH 0619/1034] lf_em_tearoff: oops accept absence of pwd --- client/luascripts/lf_em_tearoff.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/luascripts/lf_em_tearoff.lua b/client/luascripts/lf_em_tearoff.lua index ee8acfa70..c26979d9a 100644 --- a/client/luascripts/lf_em_tearoff.lua +++ b/client/luascripts/lf_em_tearoff.lua @@ -82,7 +82,7 @@ local function main(args) sd = sd or 2000 ed = ed or 2100 - if #password ~= 8 then + if password ~= '' and #password ~= 8 then return oops('password must be 4 hex bytes') end From 15ef4f676816060d63025f4c8f160fa4a9614452 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Mon, 23 Oct 2023 13:30:27 +0800 Subject: [PATCH 0620/1034] Add bind option (UDP, Windows) --- client/src/uart/uart.h | 2 +- client/src/uart/uart_posix.c | 15 ++--- client/src/uart/uart_win32.c | 112 ++++++++++++++++++++++++++++++++--- 3 files changed, 114 insertions(+), 15 deletions(-) diff --git a/client/src/uart/uart.h b/client/src/uart/uart.h index f68d9c2f4..954fa6685 100644 --- a/client/src/uart/uart.h +++ b/client/src/uart/uart.h @@ -84,6 +84,6 @@ uint32_t uart_get_timeouts(void); /* Specify the outbound address and port for TCP/UDP connections */ -bool uart_bind(int sfd, char *bindAddrStr, char *bindPortStr, bool isBindingIPv6); +bool uart_bind(void *socket, char *bindAddrStr, char *bindPortStr, bool isBindingIPv6); #endif // _UART_H_ diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index 33ea9a88c..6ed15f568 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -317,16 +317,16 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { char *rColon = strrchr(addrPortStr, ':'); if (rColon == NULL) { // no colon - // "tcp:<ipv4 address>", "tcp:[<ipv4 address>]" + // "udp:<ipv4 address>", "udp:[<ipv4 address>]" portstr = "18888"; } else if (lColon == rColon) { // only one colon - // "tcp:<ipv4 address>:<port>", "tcp:[<ipv4 address>]:<port>" + // "udp:<ipv4 address>:<port>", "udp:[<ipv4 address>]:<port>" portstr = rColon + 1; } else { // two or more colon, IPv6 address - // "tcp:[<ipv6 address>]:<port>" - // "tcp:<ipv6 address>", "tcp:[<ipv6 address>]" + // "udp:[<ipv6 address>]:<port>" + // "udp:<ipv6 address>", "udp:[<ipv6 address>]" if (endBracket != NULL && rColon == endBracket + 1) { portstr = rColon + 1; } else { @@ -365,8 +365,9 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { if (sfd == -1) continue; - if (!uart_bind(sfd, bindAddrStr, bindPortStr, isBindingIPv6)) { + if (!uart_bind(&sfd, bindAddrStr, bindPortStr, isBindingIPv6)) { PrintAndLogEx(ERR, "error: Could not bind. errno: %d", errno); + close(sfd); freeaddrinfo(addr); free(addrPortStr); free(sp); @@ -913,7 +914,7 @@ uint32_t uart_get_speed(const serial_port sp) { return uiPortSpeed; } -bool uart_bind(int sfd, char *bindAddrStr, char *bindPortStr, bool isBindingIPv6) { +bool uart_bind(void *socket, char *bindAddrStr, char *bindPortStr, bool isBindingIPv6) { if (bindAddrStr == NULL && bindPortStr == NULL) return true; // no need to bind @@ -941,7 +942,7 @@ bool uart_bind(int sfd, char *bindAddrStr, char *bindPortStr, bool isBindingIPv6 inet_pton(AF_INET6, bindAddrStr, &(bindSockaddr6->sin6_addr)); } - int res = bind(sfd, (struct sockaddr *)&bindSockaddr, sizeof(bindSockaddr)); + int res = bind(*(int *)socket, (struct sockaddr *)&bindSockaddr, sizeof(bindSockaddr)); return (res >= 0); } diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index 233abf640..5a5d1b415 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -151,7 +151,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { portstr = rColon + 1; } else { // two or more colon, IPv6 address - // tcp:[<ipv6 address>]:<port> + // "tcp:[<ipv6 address>]:<port>" // "tcp:<ipv6 address>", "tcp:[<ipv6 address>]" if (endBracket != NULL && rColon == endBracket + 1) { portstr = rColon + 1; @@ -254,6 +254,65 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { timeout.tv_usec = UART_TCP_CLIENT_RX_TIMEOUT_MS * 1000; + // find the "bind" option + char *bindAddrPortStr = strstr(addrPortStr, ",bind="); + char *bindAddrStr = NULL; + char *bindPortStr = NULL; + bool isBindingIPv6 = false; // Assume v4 + if (bindAddrPortStr != NULL) { + *bindAddrPortStr = '\0'; // as the end of target address (and port) + bindAddrPortStr += 6; + bindAddrStr = bindAddrPortStr; + + // find the start of the bind address + char *endBracket = strrchr(bindAddrPortStr, ']'); + if (bindAddrPortStr[0] == '[') { + bindAddrStr += 1; + if (endBracket == NULL) { + PrintAndLogEx(ERR, "error: wrong address: [] unmatched in bind option"); + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; + } + } + + // find the bind port + char *lColon = strchr(bindAddrPortStr, ':'); + char *rColon = strrchr(bindAddrPortStr, ':'); + if (rColon == NULL) { + // no colon + // ",bind=<ipv4 address>", ",bind=[<ipv4 address>]" + bindPortStr = NULL; + } else if (lColon == rColon) { + // only one colon + // ",bind=<ipv4 address>:<port>", ",bind=[<ipv4 address>]:<port>" + bindPortStr = rColon + 1; + } else { + // two or more colon, IPv6 address + // ",bind=[<ipv6 address>]:<port>" + // ",bind=<ipv6 address>", ",bind=[<ipv6 address>]" + if (endBracket != NULL && rColon == endBracket + 1) { + bindPortStr = rColon + 1; + } else { + bindPortStr = NULL; + } + isBindingIPv6 = true; + } + + // handle the end of the bind address + if (endBracket != NULL) { + *endBracket = '\0'; + } else if (rColon != NULL && lColon == rColon) { + *rColon = '\0'; + } + + // for bind option, it's possible to only specify address or port + if (strlen(bindAddrStr) == 0) + bindAddrStr = NULL; + if (bindPortStr != NULL && strlen(bindPortStr) == 0) + bindPortStr = NULL; + } + // find the start of the address char *endBracket = strrchr(addrPortStr, ']'); if (addrPortStr[0] == '[') { @@ -274,16 +333,16 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { char *rColon = strrchr(addrPortStr, ':'); if (rColon == NULL) { // no colon - // "tcp:<ipv4 address>", "tcp:[<ipv4 address>]" + // "udp:<ipv4 address>", "udp:[<ipv4 address>]" portstr = "18888"; } else if (lColon == rColon) { // only one colon - // "tcp:<ipv4 address>:<port>", "tcp:[<ipv4 address>]:<port>" + // "udp:<ipv4 address>:<port>", "udp:[<ipv4 address>]:<port>" portstr = rColon + 1; } else { // two or more colon, IPv6 address - // tcp:[<ipv6 address>]:<port> - // "tcp:<ipv6 address>", "tcp:[<ipv6 address>]" + // "udp:[<ipv6 address>]:<port>" + // "udp:<ipv6 address>", "udp:[<ipv6 address>]" if (endBracket != NULL && rColon == endBracket + 1) { portstr = rColon + 1; } else { @@ -333,6 +392,17 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { if (hSocket == INVALID_SOCKET) continue; + if (!uart_bind(&hSocket, bindAddrStr, bindPortStr, isBindingIPv6)) { + PrintAndLogEx(ERR, "error: Could not bind. error: %u", WSAGetLastError()); + closesocket(hSocket); + hSocket = INVALID_SOCKET; + freeaddrinfo(addr); + free(addrPortStr); + free(sp); + WSACleanup(); + return INVALID_SERIAL_PORT; + } + if (connect(hSocket, rp->ai_addr, (int)rp->ai_addrlen) != INVALID_SOCKET) break; @@ -626,8 +696,36 @@ int uart_send(const serial_port sp, const uint8_t *p_tx, const uint32_t len) { } } -bool uart_bind(int sfd, char *bindAddrStr, char *bindPortStr, bool isBindingIPv6) { - return true; +bool uart_bind(void *socket, char *bindAddrStr, char *bindPortStr, bool isBindingIPv6) { + if (bindAddrStr == NULL && bindPortStr == NULL) + return true; // no need to bind + + struct sockaddr_storage bindSockaddr; + memset(&bindSockaddr, 0, sizeof(bindSockaddr)); + int bindPort = 0; // 0: port unspecified + if (bindPortStr != NULL) + bindPort = atoi(bindPortStr); + + if (!isBindingIPv6) { + struct sockaddr_in *bindSockaddr4 = (struct sockaddr_in *)&bindSockaddr; + bindSockaddr4->sin_family = AF_INET; + bindSockaddr4->sin_port = htons(bindPort); + if (bindAddrStr == NULL) + bindSockaddr4->sin_addr.s_addr = INADDR_ANY; + else + bindSockaddr4->sin_addr.s_addr = inet_addr(bindAddrStr); + } else { + struct sockaddr_in6 *bindSockaddr6 = (struct sockaddr_in6 *)&bindSockaddr; + bindSockaddr6->sin6_family = AF_INET6; + bindSockaddr6->sin6_port = htons(bindPort); + if (bindAddrStr == NULL) + bindSockaddr6->sin6_addr = in6addr_any; + else + inet_pton(AF_INET6, bindAddrStr, &(bindSockaddr6->sin6_addr)); + } + + int res = bind(*(SOCKET *)socket, (struct sockaddr *)&bindSockaddr, sizeof(bindSockaddr)); + return (res >= 0); } #endif From 56b4bda50d1cd708616bd9a583db6baa286215f0 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Mon, 23 Oct 2023 13:45:06 +0800 Subject: [PATCH 0621/1034] Add bind option for TCP --- CHANGELOG.md | 1 + client/src/uart/uart_posix.c | 68 +++++++++++++++++++++++++++++++++++ client/src/uart/uart_win32.c | 70 ++++++++++++++++++++++++++++++++++++ 3 files changed, 139 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 084441cc8..24ea5b3a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `bind` option for network connections to specify the outbound address and port (@wh201906) - Added new command `data bmap` - breaks down a hexvalue to a binary template (@iceman1001) - Changed aid_desfire.json - added entreis from the Metrodroid project (@iceman1001) - Changed mad.json - added entries from the Metrodroid project (@iceman1001) diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index 6ed15f568..ecb488633 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -121,6 +121,65 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { timeout.tv_usec = UART_TCP_CLIENT_RX_TIMEOUT_MS * 1000; + // find the "bind" option + char *bindAddrPortStr = strstr(addrPortStr, ",bind="); + char *bindAddrStr = NULL; + char *bindPortStr = NULL; + bool isBindingIPv6 = false; // Assume v4 + if (bindAddrPortStr != NULL) { + *bindAddrPortStr = '\0'; // as the end of target address (and port) + bindAddrPortStr += 6; + bindAddrStr = bindAddrPortStr; + + // find the start of the bind address + char *endBracket = strrchr(bindAddrPortStr, ']'); + if (bindAddrPortStr[0] == '[') { + bindAddrStr += 1; + if (endBracket == NULL) { + PrintAndLogEx(ERR, "error: wrong address: [] unmatched in bind option"); + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; + } + } + + // find the bind port + char *lColon = strchr(bindAddrPortStr, ':'); + char *rColon = strrchr(bindAddrPortStr, ':'); + if (rColon == NULL) { + // no colon + // ",bind=<ipv4 address>", ",bind=[<ipv4 address>]" + bindPortStr = NULL; + } else if (lColon == rColon) { + // only one colon + // ",bind=<ipv4 address>:<port>", ",bind=[<ipv4 address>]:<port>" + bindPortStr = rColon + 1; + } else { + // two or more colon, IPv6 address + // ",bind=[<ipv6 address>]:<port>" + // ",bind=<ipv6 address>", ",bind=[<ipv6 address>]" + if (endBracket != NULL && rColon == endBracket + 1) { + bindPortStr = rColon + 1; + } else { + bindPortStr = NULL; + } + isBindingIPv6 = true; + } + + // handle the end of the bind address + if (endBracket != NULL) { + *endBracket = '\0'; + } else if (rColon != NULL && lColon == rColon) { + *rColon = '\0'; + } + + // for bind option, it's possible to only specify address or port + if (strlen(bindAddrStr) == 0) + bindAddrStr = NULL; + if (bindPortStr != NULL && strlen(bindPortStr) == 0) + bindPortStr = NULL; + } + // find the start of the address char *endBracket = strrchr(addrPortStr, ']'); if (addrPortStr[0] == '[') { @@ -190,6 +249,15 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { if (sfd == -1) continue; + if (!uart_bind(&sfd, bindAddrStr, bindPortStr, isBindingIPv6)) { + PrintAndLogEx(ERR, "error: Could not bind. errno: %d", errno); + close(sfd); + freeaddrinfo(addr); + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; + } + if (connect(sfd, rp->ai_addr, rp->ai_addrlen) != -1) break; diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index 5a5d1b415..72faf97b4 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -123,6 +123,65 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { timeout.tv_usec = UART_TCP_CLIENT_RX_TIMEOUT_MS * 1000; + // find the "bind" option + char *bindAddrPortStr = strstr(addrPortStr, ",bind="); + char *bindAddrStr = NULL; + char *bindPortStr = NULL; + bool isBindingIPv6 = false; // Assume v4 + if (bindAddrPortStr != NULL) { + *bindAddrPortStr = '\0'; // as the end of target address (and port) + bindAddrPortStr += 6; + bindAddrStr = bindAddrPortStr; + + // find the start of the bind address + char *endBracket = strrchr(bindAddrPortStr, ']'); + if (bindAddrPortStr[0] == '[') { + bindAddrStr += 1; + if (endBracket == NULL) { + PrintAndLogEx(ERR, "error: wrong address: [] unmatched in bind option"); + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; + } + } + + // find the bind port + char *lColon = strchr(bindAddrPortStr, ':'); + char *rColon = strrchr(bindAddrPortStr, ':'); + if (rColon == NULL) { + // no colon + // ",bind=<ipv4 address>", ",bind=[<ipv4 address>]" + bindPortStr = NULL; + } else if (lColon == rColon) { + // only one colon + // ",bind=<ipv4 address>:<port>", ",bind=[<ipv4 address>]:<port>" + bindPortStr = rColon + 1; + } else { + // two or more colon, IPv6 address + // ",bind=[<ipv6 address>]:<port>" + // ",bind=<ipv6 address>", ",bind=[<ipv6 address>]" + if (endBracket != NULL && rColon == endBracket + 1) { + bindPortStr = rColon + 1; + } else { + bindPortStr = NULL; + } + isBindingIPv6 = true; + } + + // handle the end of the bind address + if (endBracket != NULL) { + *endBracket = '\0'; + } else if (rColon != NULL && lColon == rColon) { + *rColon = '\0'; + } + + // for bind option, it's possible to only specify address or port + if (strlen(bindAddrStr) == 0) + bindAddrStr = NULL; + if (bindPortStr != NULL && strlen(bindPortStr) == 0) + bindPortStr = NULL; + } + // find the start of the address char *endBracket = strrchr(addrPortStr, ']'); if (addrPortStr[0] == '[') { @@ -202,6 +261,17 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { if (hSocket == INVALID_SOCKET) continue; + if (!uart_bind(&hSocket, bindAddrStr, bindPortStr, isBindingIPv6)) { + PrintAndLogEx(ERR, "error: Could not bind. error: %u", WSAGetLastError()); + closesocket(hSocket); + hSocket = INVALID_SOCKET; + freeaddrinfo(addr); + free(addrPortStr); + free(sp); + WSACleanup(); + return INVALID_SERIAL_PORT; + } + if (connect(hSocket, rp->ai_addr, (int)rp->ai_addrlen) != INVALID_SOCKET) break; From 72da0c962364d1ec285e467275976bd2bf5a627d Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 24 Oct 2023 00:46:28 +0800 Subject: [PATCH 0622/1034] Fix some wrong synchronization waits in usb_write() To make the full use of the ping-pong endpoint Transfer speed before this fix: 616448,618496,618496,615424,615424->616857.6 bytes/s Transfer speed after this fix: 707584,709632,707584,709632,710656->709017.6 bytes/s (+14.9%) Tested by running hw status --- common_arm/usb_cdc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common_arm/usb_cdc.c b/common_arm/usb_cdc.c index cb2d0c64a..37ecd0497 100644 --- a/common_arm/usb_cdc.c +++ b/common_arm/usb_cdc.c @@ -797,7 +797,7 @@ int usb_write(const uint8_t *data, const size_t len) { while (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP) {}; UDP_SET_EP_FLAGS(AT91C_EP_IN, AT91C_UDP_TXPKTRDY); - while (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY) {}; + while (!(pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY)) {}; } // Wait for the end of transfer @@ -812,7 +812,7 @@ int usb_write(const uint8_t *data, const size_t len) { if (len % AT91C_EP_IN_SIZE == 0) { UDP_SET_EP_FLAGS(AT91C_EP_IN, AT91C_UDP_TXPKTRDY); - while (!(pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP)) {}; + while (!(pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY)) {}; UDP_CLEAR_EP_FLAGS(AT91C_EP_IN, AT91C_UDP_TXCOMP); while (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP) {}; From 96dc4be112d2d10002730a133893cd05e54b2471 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 24 Oct 2023 01:27:08 +0800 Subject: [PATCH 0623/1034] Add an entry in CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b5156d96..db267aff1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac ## [unreleased][unreleased] - Changed `lf em 4x05 dump` - now supports the `--ns` nosave parameter (@iceman1001) + - Fixed some wrong synchronization waits in usb_write() to increase the communication speed (@wh201906) - Added new command `data bmap` - breaks down a hexvalue to a binary template (@iceman1001) - Changed aid_desfire.json - added entreis from the Metrodroid project (@iceman1001) - Changed mad.json - added entries from the Metrodroid project (@iceman1001) From a0af1fa0853d3c7b17be20defb5a2fff2d0eca5e Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 24 Oct 2023 12:12:09 +0800 Subject: [PATCH 0624/1034] Use ping-pong mode from the start of usb_write() Before: 708608,708608,707584,707584,708608->708198.4 bytes/s After: 722944,733184,732160,731136,733184->730521.6 bytes/s Added some note for ping-pong mode and non ping-pong mode --- common_arm/usb_cdc.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/common_arm/usb_cdc.c b/common_arm/usb_cdc.c index 37ecd0497..4787ce112 100644 --- a/common_arm/usb_cdc.c +++ b/common_arm/usb_cdc.c @@ -777,7 +777,7 @@ int usb_write(const uint8_t *data, const size_t len) { } UDP_SET_EP_FLAGS(AT91C_EP_IN, AT91C_UDP_TXPKTRDY); - while (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY) {}; + while (!(pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY)) {}; while (length) { // Send next chunk @@ -810,9 +810,9 @@ int usb_write(const uint8_t *data, const size_t len) { if (len % AT91C_EP_IN_SIZE == 0) { - + // like AT91F_USB_SendZlp(), in non ping-pong mode UDP_SET_EP_FLAGS(AT91C_EP_IN, AT91C_UDP_TXPKTRDY); - while (!(pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY)) {}; + while (!(pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP)) {}; UDP_CLEAR_EP_FLAGS(AT91C_EP_IN, AT91C_UDP_TXCOMP); while (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP) {}; @@ -869,6 +869,8 @@ void AT91F_USB_SendData(AT91PS_UDP pudp, const char *pData, uint32_t length) { //*---------------------------------------------------------------------------- void AT91F_USB_SendZlp(AT91PS_UDP pudp) { UDP_SET_EP_FLAGS(AT91C_EP_CONTROL, AT91C_UDP_TXPKTRDY); + // for non ping-pong operation, wait until the FIFO is released + // the flag for FIFO released is AT91C_UDP_TXCOMP rather than AT91C_UDP_TXPKTRDY while (!(pudp->UDP_CSR[AT91C_EP_CONTROL] & AT91C_UDP_TXCOMP)) {}; UDP_CLEAR_EP_FLAGS(AT91C_EP_CONTROL, AT91C_UDP_TXCOMP); while (pudp->UDP_CSR[AT91C_EP_CONTROL] & AT91C_UDP_TXCOMP) {}; From 51bea8995bf8c6909d08c594a60c687f84d242dc Mon Sep 17 00:00:00 2001 From: s00se <95649696+s00se@users.noreply.github.com> Date: Tue, 24 Oct 2023 16:00:22 -0600 Subject: [PATCH 0625/1034] cmdscript.c: explicitly include ctype header https://bugzilla.redhat.com/show_bug.cgi?id=2245823 Signed-off-by: s00se <95649696+s00se@users.noreply.github.com> --- client/src/cmdscript.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index 0abab9b01..91c1ce50f 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -22,6 +22,7 @@ #ifdef HAVE_PYTHON //#define PY_SSIZE_T_CLEAN #include <Python.h> +#include <ctype.h> #include <wchar.h> #endif From de7b6f35bc3fbcf78cc6a0ac8c6abe962b7d1182 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Wed, 25 Oct 2023 23:45:23 +0800 Subject: [PATCH 0626/1034] Clean up the code for timeout Rename UART_TCP_CLIENT_RX_TIMEOUT_MS to UART_NET_CLIENT_RX_TIMEOUT_MS Add UART_UDP_LOCAL_CLIENT_RX_TIMEOUT_MS for shorter timeout Check if the target address is local in uart_open() --- client/src/comms.c | 18 +++++++----------- client/src/comms.h | 4 +++- client/src/uart/uart_posix.c | 20 +++++++++++++++++--- client/src/uart/uart_win32.c | 20 +++++++++++++++++--- include/pm3_cmd.h | 5 +++-- 5 files changed, 47 insertions(+), 20 deletions(-) diff --git a/client/src/comms.c b/client/src/comms.c index 269e75a1d..9460c7024 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -666,9 +666,9 @@ int TestProxmark(pm3_device_t *dev) { g_conn.send_via_fpc_usart = g_pm3_capabilities.via_fpc; g_conn.uart_speed = g_pm3_capabilities.baudrate; - bool is_tcp_conn = (memcmp(g_conn.serial_port_name, "tcp:", 4) == 0); + bool is_tcp_conn = (g_conn.send_via_ip == PM3_TCPv4 || g_conn.send_via_ip == PM3_TCPv6); bool is_bt_conn = (memcmp(g_conn.serial_port_name, "bt:", 3) == 0); - bool is_udp_conn = (memcmp(g_conn.serial_port_name, "udp:", 4) == 0); + bool is_udp_conn = (g_conn.send_via_ip == PM3_UDPv4 || g_conn.send_via_ip == PM3_UDPv6); PrintAndLogEx(INFO, "Communicating with PM3 over %s%s%s%s", (g_conn.send_via_fpc_usart) ? _YELLOW_("FPC UART") : _YELLOW_("USB-CDC"), @@ -680,15 +680,11 @@ int TestProxmark(pm3_device_t *dev) { PrintAndLogEx(INFO, "PM3 UART serial baudrate: " _YELLOW_("%u") "\n", g_conn.uart_speed); } else { int res; - if (is_tcp_conn || is_udp_conn) { - if ((strstr(g_conn.serial_port_name, "localhost") != NULL) || - (strstr(g_conn.serial_port_name, "127.0.0.1") != NULL) || - (strstr(g_conn.serial_port_name, "[::1]") != NULL) || - (strstr(g_conn.serial_port_name, "p:::1") != NULL)) { - res = uart_reconfigure_timeouts(UART_TCP_CLIENT_LOCAL_RX_TIMEOUT_MS); - } else { - res = uart_reconfigure_timeouts(UART_TCP_CLIENT_RX_TIMEOUT_MS); - } + if (g_conn.send_via_local_ip) { + // (g_conn.send_via_local_ip == true) -> ((is_tcp_conn || is_udp_conn) == true) + res = uart_reconfigure_timeouts(is_tcp_conn ? UART_TCP_LOCAL_CLIENT_RX_TIMEOUT_MS : UART_UDP_LOCAL_CLIENT_RX_TIMEOUT_MS); + } else if (is_tcp_conn || is_udp_conn) { + res = uart_reconfigure_timeouts(UART_NET_CLIENT_RX_TIMEOUT_MS); } else { res = uart_reconfigure_timeouts(UART_USB_CLIENT_RX_TIMEOUT_MS); } diff --git a/client/src/comms.h b/client/src/comms.h index 9f4d6cd60..333b2bf1c 100644 --- a/client/src/comms.h +++ b/client/src/comms.h @@ -70,8 +70,10 @@ typedef struct { bool send_with_crc_on_fpc; // "Session" flag, to tell via which interface next msgs are sent: USB or FPC USART bool send_via_fpc_usart; - // to tell if we are using TCP/UDP/TCPv6 + // to tell if we are using TCP/UDP/TCP(IPv6)/UDP(IPv6) CommunicationProtocol_t send_via_ip; + // to tell if the target address is local address(127.0.0.1/localhost/::1) + bool send_via_local_ip; // To memorise baudrate uint32_t uart_speed; uint16_t last_command; diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index ecb488633..bc0fb37c4 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -91,6 +91,8 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { sp->udpBuffer = NULL; // init timeouts timeout.tv_usec = UART_FPC_CLIENT_RX_TIMEOUT_MS * 1000; + g_conn.send_via_local_ip = false; + g_conn.send_via_ip = PM3_NONE; char *prefix = strdup(pcPortName); if (prefix == NULL) { @@ -119,7 +121,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { return INVALID_SERIAL_PORT; } - timeout.tv_usec = UART_TCP_CLIENT_RX_TIMEOUT_MS * 1000; + timeout.tv_usec = UART_NET_CLIENT_RX_TIMEOUT_MS * 1000; // find the "bind" option char *bindAddrPortStr = strstr(addrPortStr, ",bind="); @@ -233,6 +235,12 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { info.ai_family = PF_UNSPEC; info.ai_socktype = SOCK_STREAM; + if ((strstr(addrstr, "localhost") != NULL) || + (strstr(addrstr, "127.0.0.1") != NULL) || + (strstr(addrstr, "::1") != NULL)) { + g_conn.send_via_local_ip = true; + } + int s = getaddrinfo(addrstr, portstr, &info, &addr); if (s != 0) { PrintAndLogEx(ERR, "error: getaddrinfo: %s", gai_strerror(s)); @@ -304,7 +312,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { return INVALID_SERIAL_PORT; } - timeout.tv_usec = UART_TCP_CLIENT_RX_TIMEOUT_MS * 1000; + timeout.tv_usec = UART_NET_CLIENT_RX_TIMEOUT_MS * 1000; // find the "bind" option char *bindAddrPortStr = strstr(addrPortStr, ",bind="); @@ -417,6 +425,12 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { info.ai_family = PF_UNSPEC; info.ai_socktype = SOCK_DGRAM; + if ((strstr(addrstr, "localhost") != NULL) || + (strstr(addrstr, "127.0.0.1") != NULL) || + (strstr(addrstr, "::1") != NULL)) { + g_conn.send_via_local_ip = true; + } + int s = getaddrinfo(addrstr, portstr, &info, &addr); if (s != 0) { PrintAndLogEx(ERR, "error: getaddrinfo: %s", gai_strerror(s)); @@ -528,7 +542,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } // we must use max timeout! - timeout.tv_usec = UART_TCP_CLIENT_RX_TIMEOUT_MS * 1000; + timeout.tv_usec = UART_NET_CLIENT_RX_TIMEOUT_MS * 1000; size_t servernameLen = (strlen(pcPortName) - 7) + 1; char serverNameBuf[servernameLen]; diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index 72faf97b4..ba3374494 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -44,7 +44,7 @@ typedef struct { // this is for TCP connection struct timeval timeout = { .tv_sec = 0, // 0 second - .tv_usec = UART_TCP_CLIENT_RX_TIMEOUT_MS * 1000 + .tv_usec = UART_NET_CLIENT_RX_TIMEOUT_MS * 1000 }; uint32_t newtimeout_value = 0; @@ -92,6 +92,8 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } sp->udpBuffer = NULL; + g_conn.send_via_local_ip = false; + g_conn.send_via_ip = PM3_NONE; char *prefix = strdup(pcPortName); if (prefix == NULL) { @@ -121,7 +123,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { return INVALID_SERIAL_PORT; } - timeout.tv_usec = UART_TCP_CLIENT_RX_TIMEOUT_MS * 1000; + timeout.tv_usec = UART_NET_CLIENT_RX_TIMEOUT_MS * 1000; // find the "bind" option char *bindAddrPortStr = strstr(addrPortStr, ",bind="); @@ -244,6 +246,12 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { info.ai_socktype = SOCK_STREAM; info.ai_protocol = IPPROTO_TCP; + if ((strstr(addrstr, "localhost") != NULL) || + (strstr(addrstr, "127.0.0.1") != NULL) || + (strstr(addrstr, "::1") != NULL)) { + g_conn.send_via_local_ip = true; + } + int s = getaddrinfo(addrstr, portstr, &info, &addr); if (s != 0) { PrintAndLogEx(ERR, "error: getaddrinfo: %d: %s", s, gai_strerror(s)); @@ -322,7 +330,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { return INVALID_SERIAL_PORT; } - timeout.tv_usec = UART_TCP_CLIENT_RX_TIMEOUT_MS * 1000; + timeout.tv_usec = UART_NET_CLIENT_RX_TIMEOUT_MS * 1000; // find the "bind" option char *bindAddrPortStr = strstr(addrPortStr, ",bind="); @@ -445,6 +453,12 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { info.ai_socktype = SOCK_DGRAM; info.ai_protocol = IPPROTO_UDP; + if ((strstr(addrstr, "localhost") != NULL) || + (strstr(addrstr, "127.0.0.1") != NULL) || + (strstr(addrstr, "::1") != NULL)) { + g_conn.send_via_local_ip = true; + } + int s = getaddrinfo(addrstr, portstr, &info, &addr); if (s != 0) { PrintAndLogEx(ERR, "error: getaddrinfo: %d: %s", s, gai_strerror(s)); diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index 8f488013e..af019eadd 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -831,8 +831,9 @@ typedef struct { // uart_windows.c & uart_posix.c # define UART_FPC_CLIENT_RX_TIMEOUT_MS 200 # define UART_USB_CLIENT_RX_TIMEOUT_MS 20 -# define UART_TCP_CLIENT_RX_TIMEOUT_MS 500 -# define UART_TCP_CLIENT_LOCAL_RX_TIMEOUT_MS 40 +# define UART_NET_CLIENT_RX_TIMEOUT_MS 500 +# define UART_TCP_LOCAL_CLIENT_RX_TIMEOUT_MS 40 +# define UART_UDP_LOCAL_CLIENT_RX_TIMEOUT_MS 20 // CMD_DEVICE_INFO response packet has flags in arg[0], flag definitions: From 9ff672ca8ff0774fb70726c20c561af3735f8784 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Wed, 25 Oct 2023 23:46:52 +0800 Subject: [PATCH 0627/1034] Update docs --- doc/new_frame_format.md | 10 ++++---- doc/termux_notes.md | 51 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 52 insertions(+), 9 deletions(-) diff --git a/doc/new_frame_format.md b/doc/new_frame_format.md index 73c6faabb..061dcd929 100644 --- a/doc/new_frame_format.md +++ b/doc/new_frame_format.md @@ -332,9 +332,11 @@ else we get errors about partial packet reception FTDI 460800 hw status ⇒ we need 30ms BT 115200 hf mf fchk --1k -f file.dic ⇒ we need 140ms - # define UART_FPC_CLIENT_RX_TIMEOUT_MS 170 - # define UART_USB_CLIENT_RX_TIMEOUT_MS 20 - # define UART_TCP_CLIENT_RX_TIMEOUT_MS 300 + # define UART_FPC_CLIENT_RX_TIMEOUT_MS 200 + # define UART_USB_CLIENT_RX_TIMEOUT_MS 20 + # define UART_NET_CLIENT_RX_TIMEOUT_MS 500 + # define UART_TCP_LOCAL_CLIENT_RX_TIMEOUT_MS 40 + # define UART_UDP_LOCAL_CLIENT_RX_TIMEOUT_MS 20 This goes to `uart_posix.c` `timeval` struct and `uart_win32.c` `serial_port_windows` struct @@ -342,7 +344,7 @@ and `uart_win32.c` `serial_port_windows` struct It starts at UART_FPC_CLIENT_RX_TIMEOUT_MS and once we detect we're working over USB it's reduced to UART_USB_CLIENT_RX_TIMEOUT_MS. - +The timeout is configurable by the `hw timeout` command (since v4.17140). Add automatically some communication delay in the `WaitForResponseTimeout` & `dl_it` timeouts. Only when using FPC, timeout = 2* empirically measured delay (FTDI cable). diff --git a/doc/termux_notes.md b/doc/termux_notes.md index 852c3cdc1..c4ab7fa9b 100644 --- a/doc/termux_notes.md +++ b/doc/termux_notes.md @@ -15,12 +15,13 @@ * [ Flashing the kernel ](#flashing-the-kernel) * [ Testing ](#testing) * [ Troubleshooting ](#troubleshooting) - * [ TCP bridge method ](#tcp-bridge-method) + * [ TCP/UDP bridge method ](#tcpudp-bridge-method) * [ USB connection ](#usb-connection) * [ USB-UART bridge application ](#usb-uart-bridge-application) * [ Bluetooth connection ](#bluetooth-connection) * [ BT-UART bridge application ](#bt-uart-bridge-application) * [ TCP connection ](#tcp-connection) + * [ UDP connection ](#udp-connection) * [Troubleshooting](#troubleshooting-1) * [BTADDON Missing in Firmware of PM3](#btaddon-missing-in-firmware-of-pm3) * [Compiling and Flashing a Proxmark3 Firmware from non-root Android](#compiling-and-flashing-a-proxmark3-firmware-from-non-root-android) @@ -125,16 +126,20 @@ Everything should work just like if it was your PC! - `dmesg | grep usb` - useful debug info - `/proc/config.gz` - contains your kernel's build configuration. Look for `CONFIG_USB_ACM`, which should be enabled -## TCP bridge method +## TCP/UDP bridge method ^[Top](#top) Termux doesn't come with usb serial neither bluetooth serial drivers. -However, it is fully integrated with phone's network, so we need to talk to the proxmark using serial to tcp sockets (carried out by android apps). +However, it is fully integrated with phone's network, so we need to talk to the proxmark using serial to TCP/UDP sockets (carried out by other android apps). + +``` +|Client in Termux| <--TCP/UDP--> |Bridge App| <--USB/Bluetooth--> |Proxmark3| +``` ### USB connection ^[Top](#top) -#### USB-UART Bridge Application +#### USB-UART Bridge Application for TCP to USB bridging ^[Top](#top) Install [this free TCPUART app](https://play.google.com/store/apps/details?id=com.hardcodedjoy.tcpuart) on the Play Store @@ -153,7 +158,7 @@ It is possible to record the config as autostart, cf 'Settings' -> 'Autostart se ### Bluetooth connection ^[Top](#top) -#### BT-UART Bridge Application +#### BT-UART Bridge Application for TCP to BT bridging ^[Top](#top) Install [this free app](https://play.google.com/store/apps/details?id=masar.bb) or [the paid version](https://play.google.com/store/apps/details?id=masar.bluetoothbridge.pro) (which includes usb bridge) @@ -175,6 +180,42 @@ Alternatively, if you have made the client in the git repo: ``` ./client/proxmark3 tcp:localhost:<chosenPort> ``` +If the last colon and the chosen port are missing, the client will use `18888` as the default port. + +### UDP connection +^[Top](#top) + +Start a new session, then: +``` +proxmark3 udp:localhost:<chosenPort> +``` +Alternatively, if you have made the client in the git repo: +``` +./client/proxmark3 udp:localhost:<chosenPort> +``` +If the last colon and the chosen port are missing, the client will use `18888` as the default port. + +You can also specify the outbound port for UDP connections, which might be required for some UDP to USB/BT bridge app as the target port of it. +The format is +``` +proxmark3 udp:localhost:<chosenPort>,bind=:<outboundPort> +``` +Some examples: +``` +# The bridge app listens on Port 12345, and the client listens on Port 12355 +proxmark3 udp:localhost:12345,bind=:12355 + +# 127.0.0.1 is also a valid local address +proxmark3 udp:127.0.0.1:12345,bind=:12355 + +# The bridge app listens on the default port 18888, and the client listens on Port 12355 +proxmark3 udp:127.0.0.1,bind=:12355 + +# OutboundPort is randomly picked by the system, which requires the "UDP server" mode for the bridge app +proxmark3 udp:localhost:12345 +``` + + ### Troubleshooting ^[Top](#top) From 70422937f228c7536b6139a498962a5fb2bf8a29 Mon Sep 17 00:00:00 2001 From: Daniel Karling <danne@dekay.se> Date: Wed, 25 Oct 2023 17:59:07 +0200 Subject: [PATCH 0628/1034] Partial implementation of NTAG424 commands Noteworthy stuff that's missing: * Encrypted read/write to file. * Handling of CC and Proprietary file Stuff that works: * Read/write file * Get/change file settings * Change auth keys * Configuring SDM/SUN feature --- client/src/cmdhfntag424.c | 1337 +++++++++++++++++++++++++++++-- client/src/pm3line_vocabulary.h | 9 +- 2 files changed, 1270 insertions(+), 76 deletions(-) diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index b3b6c47c7..725d2cdc3 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -20,13 +20,16 @@ #include <ctype.h> #include "cmdparser.h" #include "commonutil.h" +#include "comms.h" #include "protocols.h" #include "cliparser.h" #include "cmdmain.h" #include "fileutils.h" // saveFile #include "crypto/libpcrypto.h" // aes_decode #include "cmac.h" - +#include "cmdhf14a.h" +#include "util.h" +#include "crc32.h" #define NTAG424_MAX_BYTES 412 @@ -79,83 +82,679 @@ typedef struct sdm_picc_s { uint32_t cnt_int; } sdm_picc_t; -static int sdm_generator(void) { +// -------------- Encryption structs --------------------------- +typedef struct { + uint8_t ti[4]; + uint8_t rnd_a[16]; + uint8_t pd_cap2[6]; + uint8_t pcd_cap2[6]; +} ntag424_ev2_response_t; - // NXP Secure Dynamic Messaging (SDM) with Secure Unique NFC message (SUN) - // Where do they come up with these names? - // - // ref: - // https://www.nxp.com/docs/en/application-note/AN12196.pdf +typedef struct { + uint16_t command_counter; + uint8_t ti[4]; + uint8_t encryption[16]; + uint8_t mac[16]; +} ntag424_session_keys_t; - // SMD / CMAC - uint8_t iv[16] = {0}; - uint8_t aeskey[16] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - // uint8_t enc_txt[16] = {0xEF, 0x96, 0x3F, 0xF7, 0x82, 0x86, 0x58, 0xA5, 0x99, 0xF3, 0x04, 0x15, 0x10, 0x67, 0x1E, 0x88}; - uint8_t enc_txt[16] = {0xe6, 0x45, 0xb6, 0x15, 0x4e, 0x8f, 0x32, 0x7d, 0xfb, 0xab, 0x93, 0x4d, 0x4c, 0x66, 0x46, 0x14}; - uint8_t dec_txt[16] = {0}; +// -------------- File settings structs ------------------------- +#define FILE_SETTINGS_OPTIONS_SDM_AND_MIRRORING (1 << 6) - aes_decode(iv, aeskey, enc_txt, dec_txt, sizeof(enc_txt)); +#define FILE_SETTINGS_SDM_OPTIONS_UID (1 << 7) +#define FILE_SETTINGS_SDM_OPTIONS_SDM_READ_COUNTER (1 << 6) +#define FILE_SETTINGS_SDM_OPTIONS_SDM_READ_COUNTER_LIMIT (1 << 5) +#define FILE_SETTINGS_SDM_OPTIONS_SDM_ENC_FILE_DATA (1 << 4) +// RFU stuff... +#define FILE_SETTINGS_SDM_OPTIONS_ENCODING_MODE_ASCII (1 << 0) - PrintAndLogEx(INFO, "Ntag424 SUN message validation and encryption"); - PrintAndLogEx(INFO, "Enc text... %s", sprint_hex(enc_txt, sizeof(enc_txt))); - PrintAndLogEx(INFO, "Dec text... %s", sprint_hex(dec_txt, sizeof(dec_txt))); +typedef struct { + uint8_t sdm_options; + uint8_t sdm_access[2]; + uint8_t offset[8][3]; +} ntag424_file_sdm_settings_t; - sdm_picc_t o = {0}; - o.tag = dec_txt[0]; - memcpy(o.uid, dec_txt + 1, sizeof(o.uid)); - memcpy(o.cnt, dec_txt + 8, sizeof(o.cnt)); - o.cnt_int = MemLeToUint3byte(o.cnt); +typedef struct { + uint8_t type; + uint8_t options; + uint8_t access[2]; + uint8_t size[3]; + ntag424_file_sdm_settings_t optional_sdm_settings; +} ntag424_file_settings_t; - PrintAndLogEx(INFO, "Decypted text"); - PrintAndLogEx(INFO, " Tag........... 0x%02X", o.tag); - PrintAndLogEx(INFO, " UID........... %s", sprint_hex(o.uid, sizeof(o.uid))); - PrintAndLogEx(INFO, " Count bytes... %s", sprint_hex(o.cnt, sizeof(o.cnt))); - PrintAndLogEx(INFO, " Count value... 0x%X ( %u )", o.cnt_int, o.cnt_int); +#define SETTINGS_WITHOUT_OFFSETS_SIZE (1+1+2+3+1+2) - // SV2 as per NXP DS465430 (NT4H2421Gx Data sheet) - uint8_t sv2data[16] = {0x3C, 0xC3, 0x00, 0x01, 0x00, 0x80}; +// A different struct is used when actually writing the settings back, +// since we obviously can't change the size or type of a static file. +typedef struct { + uint8_t options; + uint8_t access[2]; + ntag424_file_sdm_settings_t optional_sdm_settings; +} file_settings_write_t; - memcpy(sv2data + 6, o.uid, sizeof(o.uid)); - memcpy(sv2data + 6 + sizeof(o.uid), o.cnt, sizeof(o.cnt)); +// Currently unused functions, commented out due to -Wunused-function +/*static void ntag424_file_settings_set_access_rights(ntag424_file_settings_t *settings, + uint8_t read_write_key, uint8_t change_key, + uint8_t read_key, uint8_t write_key) - uint8_t cmackey[16] = {0}; - mbedtls_aes_cmac_prf_128(aeskey, 16, sv2data, sizeof(sv2data), cmackey); +{ + settings->access[0] = read_write_key << 4 | change_key; + settings->access[1] = read_key << 4 | write_key; +}*/ - uint8_t zero[16] = {0}; - uint8_t full_cmac[16] = {0}; - mbedtls_aes_cmac_prf_128(cmackey, 16, zero, 0, full_cmac); +// Currently unused functions, commented out due to -Wunused-function +/*static void ntag424_file_settings_set_sdm_access_rights(ntag424_file_settings_t *settings, + uint8_t sdm_meta_read, uint8_t sdm_file_read, + uint8_t rfu, uint8_t sdm_ctr_ret) +{ + settings->optional_sdm_settings.sdm_access[1] = sdm_meta_read << 4 | sdm_file_read; + settings->optional_sdm_settings.sdm_access[0] = rfu << 4 | sdm_ctr_ret; +}*/ - uint8_t cmac[8] = {0}; - for (int i = 0, j = 1; i < 8; ++i, j += 2) { - cmac[i] = full_cmac[j]; + +static uint8_t ntag424_file_settings_get_sdm_meta_read(const ntag424_file_settings_t *settings) { + return settings->optional_sdm_settings.sdm_access[1] >> 4; +} + +static uint8_t ntag424_file_settings_get_sdm_file_read(const ntag424_file_settings_t *settings) { + return settings->optional_sdm_settings.sdm_access[1] & 0xf; +} + +// Currently unused functions, commented out due to -Wunused-function +/*static uint8_t ntag424_file_settings_get_sdm_rfu(const ntag424_file_settings_t *settings) { + return settings->optional_sdm_settings.sdm_access[0] >> 4; +} + +static uint8_t ntag424_file_settings_get_sdm_ctr_ret(const ntag424_file_settings_t *settings) { + return settings->optional_sdm_settings.sdm_access[0] & 4; +}*/ + +// Calculate the actual size of a file settings struct. A variable number of data is attached +// at the end depending on settings. +static int ntag424_calc_file_settings_size(const ntag424_file_settings_t *settings) { + int size = 7; + + if(settings->options & FILE_SETTINGS_OPTIONS_SDM_AND_MIRRORING) { + size += 3; // sdm_options and sdm_access must be present + + if(settings->optional_sdm_settings.sdm_options & FILE_SETTINGS_SDM_OPTIONS_UID && + ntag424_file_settings_get_sdm_meta_read(settings) == 0xe) + { + size += 3; // UIDOffset + } + + if(settings->optional_sdm_settings.sdm_options & FILE_SETTINGS_SDM_OPTIONS_SDM_READ_COUNTER && + ntag424_file_settings_get_sdm_meta_read(settings) == 0xe) + { + size += 3; // SDMReadCtrOffset + } + + if(ntag424_file_settings_get_sdm_meta_read(settings) <= 0x04) { + size += 3; // PICCDataOffset + } + + if(ntag424_file_settings_get_sdm_file_read(settings) != 0x0f) { + size += 3; // SDMMacInputOffset + } + + if(ntag424_file_settings_get_sdm_file_read(settings) != 0x0f && + settings->optional_sdm_settings.sdm_options & FILE_SETTINGS_SDM_OPTIONS_SDM_ENC_FILE_DATA) + { + size += 3; // SDMEncOffset + size += 3; // SDMEncLength + } + + if(ntag424_file_settings_get_sdm_file_read(settings) != 0x0f) { + // Warning, this value has different offsets depending on + // FILE_SETTINGS_SDM_OPTIONS_SDM_ENC_FILE_DATA + size += 3; // SDMMacOffset + } + + if(settings->optional_sdm_settings.sdm_options & FILE_SETTINGS_SDM_OPTIONS_SDM_READ_COUNTER_LIMIT) + { + size += 3; // SDMReadCtrLimit + } } - //uint8_t veri[] = {0x94, 0xee, 0xd9, 0xee, 0x65, 0x33, 0x70, 0x86}; - uint8_t veri[] = {0x8b, 0xa1, 0xfb, 0x47, 0x0d, 0x63, 0x39, 0xe8 }; - uint8_t is_ok = (memcmp(cmac, veri, 8) == 0); + return size; +} + +static int ntag424_read_file_settings(uint8_t fileno, ntag424_file_settings_t *settings_out) { + const size_t RESPONSE_LENGTH = sizeof(ntag424_file_settings_t) + 2; + uint8_t cmd[] = { 0x90, 0xF5, 0x00, 0x00, 0x01, fileno, 0x00}; + uint8_t resp[RESPONSE_LENGTH]; + int outlen = 0; + int res; - PrintAndLogEx(INFO, "SDM cmac... %s ( %s )", - sprint_hex(cmac, sizeof(cmac)), - (is_ok) ? _GREEN_("ok") : _RED_("fail") - ); + res = ExchangeAPDU14a(cmd, sizeof(cmd), false, true, resp, RESPONSE_LENGTH, &outlen); + if(res != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Failed to send apdu"); + return res; + } + + if(outlen < 9) { + PrintAndLogEx(ERR, "Incorrect response asdaslength: %d", outlen); + return PM3_ESOFT; + } + + if(resp[outlen-2] != 0x91 || resp[outlen-1] != 0x00) + { + PrintAndLogEx(ERR, "Failed to get file settings"); + return PM3_ESOFT; + } + + if(settings_out) + { + memcpy(settings_out, resp, outlen-2); + } return PM3_SUCCESS; } -static int CmdHF_ntag424_sdm(const char *Cmd) { - CLIParserContext *ctx; - CLIParserInit(&ctx, "hf ntag424 sdm", - "Validate a SDM message", - "hf ntag424 sdm" - ); - void *argtable[] = { - arg_param_begin, - arg_param_end +// Write file settings is done with full communication mode. This can probably be broken out +// and used for read/write of file when full communication mode is needed. +static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t *settings, ntag424_session_keys_t *session_keys) { + + // ------- Convert file settings to the format for writing + file_settings_write_t write_settings = { + .options = settings->options, + .access[0] = settings->access[0], + .access[1] = settings->access[1], + .optional_sdm_settings = settings->optional_sdm_settings, }; - CLIExecWithReturn(ctx, Cmd, argtable, false); - CLIParserFree(ctx); - return sdm_generator(); + + // ------- Calculate IV + uint8_t iv_clear[] = { 0xa5, 0x5a, + session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], + (uint8_t)(session_keys->command_counter), (uint8_t)(session_keys->command_counter >> 8), + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + uint8_t zero_iv[16] = {0}; + uint8_t ivc[16] = {0}; + aes_encode(zero_iv, session_keys->encryption, iv_clear, ivc, 16); + + // ------- Encrypt file settings + uint8_t padded_cmddata_buffer[256] = {0}; + uint8_t encrypted_cmddata[256] = {0}; + size_t settings_size = ntag424_calc_file_settings_size(settings) - 4; // This is weird, but since the write settings are the same as + // the settings read out, but minus file type and file size, we subtract 4 here. + + size_t total_size = settings_size + 16 - (settings_size % 16); // pad up to 16 byte blocks + memcpy(padded_cmddata_buffer, (void*)&write_settings, settings_size); + if(total_size > settings_size) { + padded_cmddata_buffer[settings_size] = 0x80; + } + aes_encode(ivc, session_keys->encryption, padded_cmddata_buffer, encrypted_cmddata, total_size); + + // ------- Calculate MAC + uint8_t mac_input_header[] = { 0x5f, + (uint8_t)session_keys->command_counter, (uint8_t)(session_keys->command_counter >> 8), + session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], + fileno // CmdHeader + }; + + uint8_t mac_input[256] = {0}; + memcpy(mac_input, mac_input_header, sizeof(mac_input_header)); + memcpy(&mac_input[sizeof(mac_input_header)], encrypted_cmddata, total_size); + uint8_t mac[16] = {0}; + mbedtls_aes_cmac_prf_128(session_keys->mac, 16, mac_input, sizeof(mac_input_header) + total_size, mac); + uint8_t mact[8] = { mac[1], mac[3], mac[5], mac[7], mac[9], mac[11], mac[13], mac[15] }; + + // ------- Assemble the actual command + uint8_t lc = 1 + total_size + 8; // CmdHeader + size + mac*/ + + uint8_t cmd_header[] = { + 0x90, 0x5f, 0x00, 0x00, + lc, + fileno + }; + + uint8_t cmd[256] = {0}; + + memcpy(cmd, cmd_header, sizeof(cmd_header)); + memcpy(&cmd[sizeof(cmd_header)], encrypted_cmddata, total_size); + memcpy(&cmd[sizeof(cmd_header) + total_size], mact, sizeof(mact)); + cmd[sizeof(cmd_header) + total_size + sizeof(mact)] = 0x00; + + size_t apdu_size = sizeof(cmd_header) + total_size + sizeof(mact) + 1; + + // ------- Actually send the APDU + const size_t RESPONSE_LENGTH = 8 + 2; + int outlen; + uint8_t resp[RESPONSE_LENGTH]; + int res = ExchangeAPDU14a(cmd, apdu_size, false, true, resp, RESPONSE_LENGTH, &outlen); + if(res != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Failed to send apdu"); + return res; + } + + if(outlen != RESPONSE_LENGTH) { + PrintAndLogEx(ERR, "Incorrect response asdaslength: %d, %02X%02X", outlen, resp[outlen-2], resp[outlen-1]); + return PM3_ESOFT; + } + + if(resp[outlen-2] != 0x91 || resp[outlen-1] != 0x00) + { + PrintAndLogEx(ERR, "Failed to get file settings"); + return PM3_ESOFT; + } + + session_keys->command_counter++; // Should this be incremented only on success? + + return PM3_SUCCESS; +} + +static void ntag424_print_file_settings(uint8_t fileno, const ntag424_file_settings_t *settings) { + + int num_offsets = (ntag424_calc_file_settings_size(settings) - SETTINGS_WITHOUT_OFFSETS_SIZE) / 3; + + PrintAndLogEx(SUCCESS, "--- " _CYAN_("File %d settings:") , fileno); + + PrintAndLogEx(SUCCESS, " type: " _GREEN_("%02X"), settings->type); + PrintAndLogEx(SUCCESS, " options: " _GREEN_("%02X"), settings->options); + PrintAndLogEx(SUCCESS, " access: " _GREEN_("%02X%02X (RW, C, R, W)"), settings->access[0], settings->access[1]); + PrintAndLogEx(SUCCESS, " size: " _GREEN_("%02X%02X%02X"), settings->size[2], settings->size[1], settings->size[0]); + + if(settings->options & FILE_SETTINGS_OPTIONS_SDM_AND_MIRRORING) + { + PrintAndLogEx(SUCCESS, "--- " _CYAN_("SDM settings: ")); + PrintAndLogEx(SUCCESS, " options: " _GREEN_("%02X"), settings->optional_sdm_settings.sdm_options); + PrintAndLogEx(SUCCESS, " sdm access: " _GREEN_("%02X%02X"), settings->optional_sdm_settings.sdm_access[0], settings->optional_sdm_settings.sdm_access[1]); + + if(num_offsets > 0) + { + PrintAndLogEx(SUCCESS, "--- " _CYAN_("SDM offsets: ")); + for(int i = 0; i < num_offsets; i++) + { + PrintAndLogEx(SUCCESS, " offset %d: %02X%02X%02X", i, + settings->optional_sdm_settings.offset[i][2], + settings->optional_sdm_settings.offset[i][1], + settings->optional_sdm_settings.offset[i][0]); + } + } + } + + + // Add printing of variable number of offsets here... +} + +// NTAG424 only have one static application, so we select it here +static int ntag424_select_application(void) { + const size_t RESPONSE_LENGTH = 2; + uint8_t cmd[] = {0x00, 0xA4, 0x04, 0x0C, 0x07, 0xD2, 0x76, 0x00, 0x00, 0x85, 0x01, 0x01, 0x00 }; + uint8_t resp[RESPONSE_LENGTH]; + int outlen = 0; + int res; + + res = ExchangeAPDU14a(cmd, sizeof(cmd), false, true, resp, RESPONSE_LENGTH, &outlen); + if(res != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Failed to send apdu"); + return res; + } + + if(outlen != RESPONSE_LENGTH || resp[RESPONSE_LENGTH-2] != 0x90 || resp[RESPONSE_LENGTH-1] != 0x00) + { + PrintAndLogEx(ERR, "Failed to select application"); + return PM3_ESOFT; + } + + return PM3_SUCCESS; +} + +static int ntag424_auth_first_step(uint8_t keyno, uint8_t *key, uint8_t *out) +{ + const size_t RESPONSE_LENGTH = 16 + 2; + uint8_t cmd[] = {0x90, 0x71, 0x00, 0x00, 0x02, keyno, 0x00, 0x00}; + uint8_t resp[RESPONSE_LENGTH]; + int outlen = 0; + int res; + + res = ExchangeAPDU14a(cmd, sizeof(cmd), false, true, resp, RESPONSE_LENGTH, &outlen); + if(res != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Failed to send apdu"); + return res; + } + + if(outlen != RESPONSE_LENGTH || resp[RESPONSE_LENGTH-2] != 0x91 || resp[RESPONSE_LENGTH-1] != 0xAF) + { + PrintAndLogEx(ERR, "Failed to get RndB (invalid key number?)"); + return PM3_ESOFT; + } + + uint8_t iv[16] = {0}; + aes_decode(iv, key, resp, out, 16); + + return PM3_SUCCESS; +} + +static int ntag424_auth_second_step(uint8_t *challenge, uint8_t *response) +{ + uint8_t cmd_header[] = { 0x90, 0xAF, 0x00, 0x00, 0x20 }; + + uint8_t cmd[sizeof(cmd_header) + 32 + 1] = {0}; + + memcpy(cmd, cmd_header, sizeof(cmd_header)); + memcpy(&cmd[sizeof(cmd_header)], challenge, 32); + + const size_t RESPONSE_LENGTH = 256; + uint8_t resp[RESPONSE_LENGTH]; + int outlen = 0; + int res; + + res = ExchangeAPDU14a(cmd, sizeof(cmd), false, true, resp, RESPONSE_LENGTH, &outlen); + if(res != PM3_SUCCESS) + { + return res; + } + + if(resp[outlen-2] != 0x91 || resp[outlen-1] != 0x00) + { + PrintAndLogEx(ERR, "Challenge failed: wrong key?"); + return PM3_ESOFT; + } + + memcpy(response, resp, outlen-2); + + return PM3_SUCCESS; +} + +// Authenticate against a key number and optionally get session keys out +static int ntag424_authenticate_ev2_first(uint8_t keyno, uint8_t *key, ntag424_session_keys_t *session_keys_out) +{ + // -------- Get first challenge from card + uint8_t rnd_b_clear[16] = {0}; + + int res = ntag424_auth_first_step(keyno, key, rnd_b_clear); + if(res != PM3_SUCCESS) + { + return res; + } + + // -------- Concatenate RndA and RndB and encrypt it with the key + uint8_t concat_clear[32] = {0}; + uint8_t concat_enc[32] = {0}; + // This should of course be completely random, if we cared + // about security + uint8_t rnd_a_clear[16] = { + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, + 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf + }; + + uint8_t iv[16] = {0}; + memcpy(&concat_clear[16], &rnd_b_clear[1], 15); + concat_clear[31] = rnd_b_clear[0]; + memcpy(concat_clear, rnd_a_clear, 16); + + aes_encode(iv, key, concat_clear, concat_enc, 32); + + // -------- Do second step with our concatenated encrypted RndA || RndB + uint8_t resp[4+16+6+6]; + res = ntag424_auth_second_step(concat_enc, resp); + if(res != PM3_SUCCESS) + { + return res; + } + + ntag424_ev2_response_t response; + aes_decode(iv, key, resp, (uint8_t*)&response, sizeof(ntag424_ev2_response_t)); + + // -------- Verify that the response we got contains the RndA that we supplied (rotated one byte) + if(memcmp(response.rnd_a, &rnd_a_clear[1], 15) != 0 || + response.rnd_a[15] != rnd_a_clear[0]) + { + PrintAndLogEx(ERR, "Incorrect response from card\n" + "expected: %s\n" + "got: %s" + , sprint_hex(rnd_a_clear, 16), + sprint_hex(response.rnd_a, 16)); + return PM3_ESOFT; + } + + // -------- Optionally calculate session keys + if(session_keys_out) + { + memset(session_keys_out, 0, sizeof(ntag424_session_keys_t)); + memcpy(session_keys_out->ti, response.ti, sizeof(response.ti)); + + // SV 1 = [0xA5][0x5A][0x00][0x01] + // [0x00][0x80][RndA[15:14] || + // [ (RndA[13:8] ⊕ RndB[15:10]) ] || + // [RndB[9:0] || RndA[7:0] + + uint8_t sv1[] = { 0xa5, 0x5a, 0x00, 0x01, 0x00, 0x80, rnd_a_clear[0], rnd_a_clear[1], + rnd_a_clear[2] ^ rnd_b_clear[0], + rnd_a_clear[3] ^ rnd_b_clear[1], + rnd_a_clear[4] ^ rnd_b_clear[2], + rnd_a_clear[5] ^ rnd_b_clear[3], + rnd_a_clear[6] ^ rnd_b_clear[4], + rnd_a_clear[7] ^ rnd_b_clear[5], + rnd_b_clear[6], rnd_b_clear[7], rnd_b_clear[8], rnd_b_clear[9], rnd_b_clear[10], + rnd_b_clear[11], rnd_b_clear[12], rnd_b_clear[13], rnd_b_clear[14], rnd_b_clear[15], + rnd_a_clear[8], rnd_a_clear[9], rnd_a_clear[10], + rnd_a_clear[11], rnd_a_clear[12], rnd_a_clear[13], rnd_a_clear[14], rnd_a_clear[15] + }; + + // SV 2 = [0x5A][0xA5][0x00][0x01] + // [0x00][0x80][RndA[15:14] || + // [ (RndA[13:8] ⊕ RndB[15:10]) ] || + // [RndB[9:0] || RndA[7:0] + + uint8_t sv2[] = { 0x5a, 0xa5, 0x00, 0x01, 0x00, 0x80, rnd_a_clear[0], rnd_a_clear[1], + rnd_a_clear[2] ^ rnd_b_clear[0], + rnd_a_clear[3] ^ rnd_b_clear[1], + rnd_a_clear[4] ^ rnd_b_clear[2], + rnd_a_clear[5] ^ rnd_b_clear[3], + rnd_a_clear[6] ^ rnd_b_clear[4], + rnd_a_clear[7] ^ rnd_b_clear[5], + rnd_b_clear[6], rnd_b_clear[7], rnd_b_clear[8], rnd_b_clear[9], rnd_b_clear[10], + rnd_b_clear[11], rnd_b_clear[12], rnd_b_clear[13], rnd_b_clear[14], rnd_b_clear[15], + rnd_a_clear[8], rnd_a_clear[9], rnd_a_clear[10], + rnd_a_clear[11], rnd_a_clear[12], rnd_a_clear[13], rnd_a_clear[14], rnd_a_clear[15] + }; + + mbedtls_aes_cmac_prf_128(key, 16, sv1, sizeof(sv1), session_keys_out->encryption); + mbedtls_aes_cmac_prf_128(key, 16, sv2, sizeof(sv2), session_keys_out->mac); + } + + return PM3_SUCCESS; +} + +#define MAX_WRITE_APDU 248 + +// Write file to card. Only supports plain communications mode. Authentication must be done +// first unless file has free write access. +static int ntag424_write_file(uint8_t fileno, uint16_t offset, uint16_t num_bytes, uint8_t *in) { + const size_t RESPONSE_LENGTH = 2; + size_t remainder = 0; + + if(num_bytes > MAX_WRITE_APDU) + { + remainder = num_bytes - MAX_WRITE_APDU; + num_bytes = MAX_WRITE_APDU; + } + + // 248 + + uint8_t cmd_header[] = { 0x90, 0x8d, 0x00, 0x00, 0x07 + num_bytes, fileno, + (uint8_t)offset, (uint8_t)(offset << 8), (uint8_t)(offset << 16), // offset + (uint8_t)num_bytes, (uint8_t)(num_bytes >> 8), (uint8_t)(num_bytes >> 16) //size + }; + + uint8_t cmd[512] = {0}; + + memcpy(cmd, cmd_header, sizeof(cmd_header)); + memcpy(&cmd[sizeof(cmd_header)], in, num_bytes); + + size_t total_size = sizeof(cmd_header) + num_bytes + 1; //(Le) + + uint8_t resp[RESPONSE_LENGTH]; + int outlen = 0; + int res; + + res = ExchangeAPDU14a(cmd, total_size, false, true, resp, RESPONSE_LENGTH, &outlen); + if(res != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Failed to send apdu"); + return res; + } + + if(outlen != RESPONSE_LENGTH) { + PrintAndLogEx(ERR, "Incorrect response length: %d, %s", outlen, sprint_hex(resp, 2)); + return PM3_ESOFT; + } + + if(resp[outlen-2] != 0x91 || resp[outlen-1] != 0x00) + { + PrintAndLogEx(ERR, "Failed to write file"); + return PM3_ESOFT; + } + + if(remainder > 0) + { + return ntag424_write_file(fileno, offset + num_bytes, remainder, &in[num_bytes]); + } + + return PM3_SUCCESS; +} + +// Read file from card. Only supports plain communications mode. Authentication must be done +// first unless file has free read access. +static int ntag424_read_file(uint8_t fileno, uint16_t offset, uint16_t num_bytes, uint8_t *out) { + const size_t RESPONSE_LENGTH = num_bytes + 2; + + uint8_t cmd[] = { 0x90, 0xad, 0x00, 0x00, 0x07, fileno, + (uint8_t)offset, (uint8_t)(offset << 8), (uint8_t)(offset << 16), // offset + (uint8_t)num_bytes, (uint8_t)(num_bytes >> 8), 0x00, //size + 0x00 }; + uint8_t resp[RESPONSE_LENGTH]; + int outlen = 0; + int res; + + res = ExchangeAPDU14a(cmd, sizeof(cmd), false, true, resp, RESPONSE_LENGTH, &outlen); + if(res != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Failed to send apdu"); + return res; + } + + if(outlen != RESPONSE_LENGTH) { + PrintAndLogEx(ERR, "Incorrect response length: %d, %s", outlen, sprint_hex(resp, 2)); + return PM3_ESOFT; + } + + if(resp[outlen-2] != 0x91 || resp[outlen-1] != 0x00) + { + PrintAndLogEx(ERR, "Failed to read file"); + return PM3_ESOFT; + } + + memcpy(out, resp, num_bytes); + return PM3_SUCCESS; +} + +static int ntag424_change_key(uint8_t keyno, uint8_t *new_key, uint8_t *old_key, uint8_t version, ntag424_session_keys_t *session_keys) { + // -------- Calculate xor and crc + uint8_t key[16] = {0}; + uint8_t crc[4] = {0}; + if(keyno != 0) + { + for(int i = 0; i < 16; i++) + { + key[i] = old_key[i] ^ new_key[i]; + } + crc32_ex(new_key, 16, crc); + } + else + { + memcpy(key, new_key, 16); + } + + + // ------- Calculate IV + uint8_t iv_clear[] = { 0xa5, 0x5a, + session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], + (uint8_t)(session_keys->command_counter), (uint8_t)(session_keys->command_counter >> 8), + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + uint8_t zero_iv[16] = {0}; + uint8_t ive[16] = {0}; + aes_encode(zero_iv, session_keys->encryption, iv_clear, ive, 16); + + // ------- Calculate KeyData + uint8_t keydata[32] = {0}; + memcpy(keydata, key, 16); + keydata[16] = version; + if(keyno != 0) + { + memcpy(&keydata[17], crc, 4); + keydata[21] = 0x80; + } + else + { + keydata[17] = 0x80; + } + + uint8_t enc_keydata[32] = {0}; + aes_encode(ive, session_keys->encryption, keydata, enc_keydata, 32); + + // -------- Calculate MAC + uint8_t mac_input_header[] = { 0xC4, + (uint8_t)session_keys->command_counter, (uint8_t)(session_keys->command_counter >> 8), + session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], + keyno, + }; + + uint8_t mac_input[256] = {0}; + memcpy(mac_input, mac_input_header, sizeof(mac_input_header)); + memcpy(&mac_input[sizeof(mac_input_header)], enc_keydata, 32); + uint8_t mac[16] = {0}; + mbedtls_aes_cmac_prf_128(session_keys->mac, 16, mac_input, sizeof(mac_input_header) + 32, mac); + uint8_t mact[8] = { mac[1], mac[3], mac[5], mac[7], mac[9], mac[11], mac[13], mac[15] }; + + + // ------- Assemble APDU + uint8_t cmd_header[] = { + 0x90, 0xC4, 0x00, 0x00, 0x29, keyno + }; + + uint8_t cmd[512] = {0}; + memcpy(cmd, cmd_header, sizeof(cmd_header)); + memcpy(&cmd[sizeof(cmd_header)], enc_keydata, 32); + memcpy(&cmd[sizeof(cmd_header) + 32], mact, 8); + int apdu_size = sizeof(cmd_header) + 32 + 8 + 1; + + + // ------- Actually send the APDU + const size_t RESPONSE_LENGTH = 8 + 2; + int outlen; + uint8_t resp[RESPONSE_LENGTH]; + int res = ExchangeAPDU14a(cmd, apdu_size, false, true, resp, RESPONSE_LENGTH, &outlen); + if(res != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Failed to send apdu"); + return res; + } + + if(outlen < 2) { + PrintAndLogEx(ERR, "Incorrect response length: %d", outlen); + return PM3_ESOFT; + } + + if(resp[outlen-2] != 0x91 || resp[outlen-1] != 0x00) + { + PrintAndLogEx(ERR, "Failed to get file settings"); + return PM3_ESOFT; + } + + session_keys->command_counter++; // Should this be incremented only on success? + + return PM3_SUCCESS; + } static int CmdHF_ntag424_info(const char *Cmd) { @@ -169,27 +768,613 @@ static int CmdHF_ntag424_info(const char *Cmd) { arg_param_begin, arg_param_end }; - CLIExecWithReturn(ctx, Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, true); CLIParserFree(ctx); PrintAndLogEx(INFO, "not implemented yet"); PrintAndLogEx(INFO, "Feel free to contribute!"); + return PM3_SUCCESS; +} +static int ntag424_cli_get_auth_information(CLIParserContext *ctx, int key_no_index, int key_index, int *keyno, uint8_t *key_out) +{ + uint8_t key[16]; + int keylen = 16; + if(keyno) + { + *keyno = arg_get_int(ctx, key_no_index); + } + CLIGetHexWithReturn(ctx, key_index, key, &keylen); - // has hardcoded application and three files. + if(keylen != 16) + { + PrintAndLogEx(ERR, "Key must be 16 bytes"); + return PM3_ESOFT; + } + memcpy(key_out, key, 16); + + return PM3_SUCCESS; +} - /* - // Check if the tag reponds to APDUs. - PrintAndLogEx(INFO, "Sending a test APDU (select file command) to check if the tag is responding to APDU"); - param_gethex_to_eol("00a404000aa000000440000101000100", 0, aSELECT_AID, sizeof(aSELECT_AID), &aSELECT_AID_n); - int res = ExchangeAPDU14a(aSELECT_AID, aSELECT_AID_n, true, false, response, sizeof(response), &response_n); - if (res != PM3_SUCCESS) { - PrintAndLogEx(FAILED, "Tag did not respond to a test APDU (select file command). Aborting..."); +static int CmdHF_ntag424_auth(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf ntag424 auth", + "Authenticate with selected key against NTAG424.", + "hf ntag424 auth -n 0 -k 00000000000000000000000000000000"); + + void *argtable[] = { + arg_param_begin, + arg_int1("n", "keyno", "<dec>", "Key number"), + arg_str1("k", "key", "<hex>", "Key for authenticate (HEX 16 bytes)"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + int keyno; + uint8_t key[16] = {0}; + + if(ntag424_cli_get_auth_information(ctx, 1, 2, &keyno, key) != PM3_SUCCESS) + { + CLIParserFree(ctx); + return PM3_ESOFT; + } + + CLIParserFree(ctx); + + int res = SelectCard14443A_4(false, true, NULL); + if (res != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Failed to select card"); + DropField(); + return res; + } + + res = ntag424_select_application(); + if(res != PM3_SUCCESS) + { + DropField(); + return res; + } + + res = ntag424_authenticate_ev2_first(keyno, key, NULL); + if(res != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Failed to authenticate with key %d", keyno); + } + else + { + PrintAndLogEx(SUCCESS, "Successfully authenticated with key %d", keyno); + } + + DropField(); + + return res; +} + +// Read can only read files with plain communication mode! +static int CmdHF_ntag424_read(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf ntag424 read", + "Read and print data from file on NTAG424 tag. Will authenticate if key information is provided.", + "hf ntag424 read -f 2 -n 0 -k 00000000000000000000000000000000 -o 0 -l 256"); + + void *argtable[] = { + arg_param_begin, + arg_int1("f", "fileno", "<dec>", "File number (1-3), (default 2)"), + arg_int0("n", "keyno", "<dec>", "Key number"), + arg_str0("k", "key", "<hex>", "Key for authentication (HEX 16 bytes)"), + arg_int0("o", "offset", "<dec>", "Offset to read in file (default 0)"), + arg_int1("l", "length", "<dec>", "Number of bytes to read"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + + int keyno; + uint8_t key[16] = {0}; + int auth = 1; + + int fileno = arg_get_int(ctx, 1); + + if(ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) != PM3_SUCCESS) + { + PrintAndLogEx(INFO, "Reading unauthenticated"); + auth = 0; + } + else + { + PrintAndLogEx(INFO, "Reading authenticated"); + } + + int offset = arg_get_int_def(ctx, 4, 0); + int read_length = arg_get_int(ctx, 5); + + CLIParserFree(ctx); + + int res = SelectCard14443A_4(false, true, NULL); + if (res != PM3_SUCCESS) + { + DropField(); + PrintAndLogEx(ERR, "Failed to select card"); + return res; + } + + res = ntag424_select_application(); + if(res != PM3_SUCCESS) + { + DropField(); + return res; + } + + if(auth) + { + res = ntag424_authenticate_ev2_first(keyno, key, NULL); + if(res != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Failed to authenticate with key %d", keyno); + DropField(); return res; } - */ + else + { + PrintAndLogEx(SUCCESS, "Successfully authenticated with key %d", keyno); + } + } + uint8_t data[512]; + + res = ntag424_read_file(fileno, offset, read_length, data); + if(res != PM3_SUCCESS) + { + DropField(); + return res; + } + + PrintAndLogEx(SUCCESS, " -------- Read file %d contents ------------ ", fileno); + print_hex_break(data, read_length, 16); + + DropField(); + + return res; +} + +static int CmdHF_ntag424_write(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf ntag424 write", + "Write data to file on NTAG424 tag. Will authenticate if key information is provided.", + "hf ntag424 write -f 2 -n 0 -k 00000000000000000000000000000000 -o 0 -d 1122334455667788"); + + void *argtable[] = { + arg_param_begin, + arg_int1("f", "fileno", "<dec>", "File number (1-3), (default 2)"), + arg_int0("n", "keyno", "<dec>", "Key number"), + arg_str0("k", "key", "<hex>", "Key for authentication (HEX 16 bytes)"), + arg_int0("o", "offset", "<dec>", "Offset to write in file (default 0)"), + arg_str1("d", "data", "<hex>", "Data to write"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + + int keyno; + uint8_t key[16] = {0}; + int auth = 1; + + int fileno = arg_get_int(ctx, 1); + + if(ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) != PM3_SUCCESS) + { + PrintAndLogEx(INFO, "Will write unauthenticated"); + auth = 0; + } + else + { + PrintAndLogEx(INFO, "Will write authenticated"); + } + + int offset = arg_get_int_def(ctx, 4, 0); + + uint8_t data[512] = {0}; + int datalen = 512; + CLIGetHexWithReturn(ctx, 5, data, &datalen); + + CLIParserFree(ctx); + + int res = SelectCard14443A_4(false, true, NULL); + if (res != PM3_SUCCESS) + { + DropField(); + PrintAndLogEx(ERR, "Failed to select card"); + return res; + } + + res = ntag424_select_application(); + if(res != PM3_SUCCESS) + { + DropField(); + return res; + } + + if(auth) + { + res = ntag424_authenticate_ev2_first(keyno, key, NULL); + if(res != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Failed to authenticate with key %d", keyno); + DropField(); + return res; + } + else + { + PrintAndLogEx(SUCCESS, "Successfully authenticated with key %d", keyno); + } + } + + res = ntag424_write_file(fileno, offset, datalen, data); + if(res != PM3_SUCCESS) + { + DropField(); + return res; + } + + PrintAndLogEx(SUCCESS, "Wrote %d bytes", datalen); + + DropField(); + + return res; +} + +static int CmdHF_ntag424_getfilesettings(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf ntag424 getfilesettings", + "Read and print file settings for file", + "hf ntag424 getfilesettings -f 2"); + + void *argtable[] = { + arg_param_begin, + arg_int1("f", "file", "<dec>", "File number"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + int fileno = arg_get_int(ctx, 1); + + CLIParserFree(ctx); + + int res = SelectCard14443A_4(false, true, NULL); + if (res != PM3_SUCCESS) + { + DropField(); + PrintAndLogEx(ERR, "Failed to select card"); + return res; + } + + res = ntag424_select_application(); + if(res != PM3_SUCCESS) + { + DropField(); + return res; + } + + ntag424_file_settings_t settings; + res = ntag424_read_file_settings(fileno, &settings); + DropField(); + if(res != PM3_SUCCESS) + { + return res; + } + + ntag424_print_file_settings(fileno, &settings); + + + return res; +} + +static int CmdHF_ntag424_changefilesettings(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf ntag424 changefilesettings", + "Updates file settings for file, must be authenticated.\n" + "This is a short explanation of the settings. See AN12196 for more information:\n" + "options: byte with bit flags\n" + " Bit: Setting:\n" + " 6 Enable SDM and mirroring\n\n" + + "access: two byte access rights.\n" + "Each nibble is a key number, or E for free access.\n" + "Order is key for readwrite, change, read and write\n\n" + + "sdmoptions: byte with bit flags\n" + " Bit: Setting:\n" + " 0 ASCII encoding\n" + " 4 SDMEncFileData\n" + " 5 SDMReadCtrLimit\n" + " 6 SDMReadCtr\n" + " 7 SDMOptionsUID\n\n" + + "sdmaccess: two byte access rights.\n" + "Each nibble is a key, or E for plain mirror and F for no mirroring\n" + "Order is SDMMetaRead, SDMFileRead, RFU and SDMCtrRet\n\n" + + "offset: A three byte offset to the data to be mirrored to/from. Can be specified multiple times.\n\n" + + "Note: Not all of these settings will be written. It depends on the option byte, and the keys set. See AN12196 for more information.\n" + "You must also start with offset1, then offset2, up to the number of offsets you want to write", + + + "hf ntag424 changefilesettings -f 2 -n 0 -k 00000000000000000000000000000000 -o 40 -a 00E0 -s C1 -c F000 --offset1 000020 --offset2 000043 --offset3 000043"); + + void *argtable[] = { + arg_param_begin, + arg_int1("f", "file", "<dec>", "File number"), + arg_int1("n", "keyno", "<dec>", "Key number"), + arg_str1("k", "key", "<hex>", "Key for authentication (HEX 16 bytes)"), + arg_str0("o", "options", "<hex>", "File options byte (HEX 1 byte)"), + arg_str0("a", "access", "<hex>", "File access settings (HEX 2 bytes)"), + arg_str0("s", "sdmoptions", "<hex>", "SDM options (HEX 1 byte)"), + arg_str0("c", "sdmaccess", "<hex>", "SDM access settings (HEX 2 bytes)"), + arg_str0(NULL, "offset1", "<hex>", "SDM offset (HEX 3 bytes)"), + arg_str0(NULL, "offset2", "<hex>", "SDM offset (HEX 3 bytes)"), + arg_str0(NULL, "offset3", "<hex>", "SDM offset (HEX 3 bytes)"), + arg_str0(NULL, "offset4", "<hex>", "SDM offset (HEX 3 bytes)"), + arg_str0(NULL, "offset5", "<hex>", "SDM offset (HEX 3 bytes)"), + arg_str0(NULL, "offset6", "<hex>", "SDM offset (HEX 3 bytes)"), + arg_str0(NULL, "offset7", "<hex>", "SDM offset (HEX 3 bytes)"), + // Sorry, couldn't figure out how to work with arg_strn... + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + int fileno = arg_get_int(ctx, 1); + + int keyno; + uint8_t key[16] = {0}; + + uint8_t has_options = 0; + uint8_t options[1]; + uint8_t has_access = 0; + uint8_t access[2]; + uint8_t has_sdmoptions = 0; + uint8_t sdmoptions[1]; + uint8_t has_sdmaccess = 0; + uint8_t sdmaccess[2]; + uint8_t num_offsets = 0; + uint8_t offsets[8][3]; + + + if(ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Could not get key settings"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + int len = 1; + if(arg_get_str(ctx,4)->count == 1) + { + has_options = 1; + CLIGetHexWithReturn(ctx, 4, options, &len); + if(len != 1) + { + PrintAndLogEx(ERR, "Options must be 1 byte"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + } + len = 2; + if(arg_get_str(ctx,5)->count == 1) + { + has_access = 1; + CLIGetHexWithReturn(ctx, 5, access, &len); + if(len != 2) + { + PrintAndLogEx(ERR, "access must be 2 bytes"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + } + len = 1; + if(arg_get_str(ctx,6)->count == 1) + { + has_sdmoptions = 1; + CLIGetHexWithReturn(ctx, 6, sdmoptions, &len); + if(len != 1) + { + PrintAndLogEx(ERR, "SDM Options must be 1 byte"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + } + len = 2; + if(arg_get_str(ctx,7)->count == 1) + { + has_sdmaccess = 1; + CLIGetHexWithReturn(ctx, 7, sdmaccess, &len); + if(len != 2) + { + PrintAndLogEx(ERR, "SDM access must be 2 bytes"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + } + + for(int i = 0; i < 8; i++) + { + if(arg_get_str(ctx,8+i)->count == 1) + { + len = 3; + num_offsets++; + CLIGetHexWithReturn(ctx, 8+i, offsets[i], &len); + if(len != 3) + { + PrintAndLogEx(ERR, "Offset must be 3 bytes"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + } + else + { + break; + } + } + + + CLIParserFree(ctx); + + int res = SelectCard14443A_4(false, true, NULL); + if (res != PM3_SUCCESS) + { + DropField(); + PrintAndLogEx(ERR, "Failed to select card"); + return res; + } + + res = ntag424_select_application(); + if(res != PM3_SUCCESS) + { + DropField(); + return res; + } + + ntag424_file_settings_t settings; + res = ntag424_read_file_settings(fileno, &settings); + if(res != PM3_SUCCESS) + { + DropField(); + return res; + } + + ntag424_session_keys_t session = {0}; + res = ntag424_authenticate_ev2_first(keyno, key, &session); + if(res != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Failed to authenticate with key %d", keyno); + DropField(); + return res; + } + + if(has_options) + { + settings.options = options[0]; + } + if(has_access) + { + memcpy(settings.access, access, 2); + } + if(has_sdmoptions) + { + settings.optional_sdm_settings.sdm_options = sdmoptions[0]; + } + if(has_sdmaccess) + { + memcpy(settings.optional_sdm_settings.sdm_access, sdmaccess, 2); + } + + for(int i = 0; i < num_offsets; i++) + { + settings.optional_sdm_settings.offset[i][2] = offsets[i][0]; + settings.optional_sdm_settings.offset[i][1] = offsets[i][1]; + settings.optional_sdm_settings.offset[i][0] = offsets[i][2]; + } + + if(ntag424_write_file_settings(fileno, &settings, &session) != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Failed to write settings"); + DropField(); + return PM3_ESOFT; + } + PrintAndLogEx(SUCCESS, "Wrote settings successfully"); + ntag424_print_file_settings(fileno, &settings); + + DropField(); + return res; +} + +static int CmdHF_ntag424_changekey(const char *Cmd) { + + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf ntag424 changekey", + "Change a key.\n" + "Authentication key must currently be different to the one we want to change.\n", + "hf ntag424 changekey -n 1 --oldkey 00000000000000000000000000000000 --newkey 11111111111111111111111111111111 --key0 00000000000000000000000000000000 -v 1" + ); + void *argtable[] = { + arg_param_begin, + arg_int1("n", "keyno", "<dec>", "Key number to change"), + arg_str0(NULL, "oldkey", "<hex>", "Old key (only needed when changing key 1-4, HEX 16 bytes)"), + arg_str1(NULL, "newkey", "<hex>", "New key (HEX 16 bytes)"), + arg_str1(NULL, "key0", "<hex>", "Authentication key (must be key 0, HEX 16 bytes)"), + arg_int1("v", "version", "<dec>", "Version of the new key"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + + uint8_t version = arg_get_int(ctx, 6); + int keyno = arg_get_int(ctx, 1); + uint8_t oldkey[16]; + uint8_t newkey[16]; + uint8_t authkey[16]; + + if(keyno != 0) + { + if(ntag424_cli_get_auth_information(ctx, 0, 2, NULL, oldkey) != PM3_SUCCESS) + { + + PrintAndLogEx(ERR, "Could not get keyno or old key"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + } + if(ntag424_cli_get_auth_information(ctx, 0, 3, NULL, newkey) != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Could not get new key"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + if(ntag424_cli_get_auth_information(ctx, 0, 4, NULL, authkey) != PM3_SUCCESS) + { + PrintAndLogEx(ERR, "Could not get authentication key"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + CLIParserFree(ctx); + + int res = SelectCard14443A_4(false, true, NULL); + if (res != PM3_SUCCESS) + { + DropField(); + PrintAndLogEx(ERR, "Failed to select card"); + return res; + } + + res = ntag424_select_application(); + if(res != PM3_SUCCESS) + { + DropField(); + return res; + } + + ntag424_session_keys_t session = {0}; + res = ntag424_authenticate_ev2_first(0, authkey, &session); + if(res != PM3_SUCCESS) + { + DropField(); + PrintAndLogEx(ERR, "Failed to authenticate"); + return PM3_ESOFT; + } + else + { + PrintAndLogEx(SUCCESS, "Successfully authenticated"); + } + + res = ntag424_change_key(keyno, newkey, oldkey, version, &session); + if(res != PM3_SUCCESS) + { + DropField(); + PrintAndLogEx(ERR, "Failed to change key"); + DropField(); + return PM3_ESOFT; + } + else + { + PrintAndLogEx(SUCCESS, "Successfully changed key %d", keyno); + } + + DropField(); return PM3_SUCCESS; } @@ -197,12 +1382,16 @@ static int CmdHF_ntag424_info(const char *Cmd) { // Menu Stuff //------------------------------------ static command_t CommandTable[] = { - {"help", CmdHelp, AlwaysAvailable, "This help"}, - {"-----------", CmdHelp, IfPm3Iso14443a, "----------------------- " _CYAN_("operations") " -----------------------"}, - {"info", CmdHF_ntag424_info, IfPm3Iso14443a, "Tag information"}, -// {"ndefread", CmdHF_ntag424_sdm, IfPm3Iso14443a, "Prints NDEF records from card"}, - {"sdm", CmdHF_ntag424_sdm, IfPm3Iso14443a, "Prints NDEF records from card"}, - {"view", CmdHF_ntag424_view, AlwaysAvailable, "Display content from tag dump file"}, + {"help", CmdHelp, AlwaysAvailable, "This help"}, + {"-----------", CmdHelp, IfPm3Iso14443a, "----------------------- " _CYAN_("operations") " -----------------------"}, + {"info", CmdHF_ntag424_info, IfPm3Iso14443a, "Tag information (not implemented yet)"}, + {"view", CmdHF_ntag424_view, AlwaysAvailable, "Display content from tag dump file"}, + {"auth", CmdHF_ntag424_auth, IfPm3Iso14443a, "Test authentication with key"}, + {"read", CmdHF_ntag424_read, IfPm3Iso14443a, "Read file"}, + {"write", CmdHF_ntag424_write, IfPm3Iso14443a, "Write file"}, + {"getfilesettings", CmdHF_ntag424_getfilesettings, IfPm3Iso14443a, "Get file settings"}, + {"changefilesettings", CmdHF_ntag424_changefilesettings, IfPm3Iso14443a, "Change file settings"}, + {"changekey", CmdHF_ntag424_changekey, IfPm3Iso14443a, "Change key"}, {NULL, NULL, NULL, NULL} }; diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index cbc0632d7..e4fab934d 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -455,8 +455,13 @@ const static vocabulary_t vocabulary[] = { { 1, "hf mfdes test" }, { 1, "hf ntag424 help" }, { 0, "hf ntag424 info" }, - { 0, "hf ntag424 sdm" }, { 1, "hf ntag424 view" }, + { 0, "hf ntag424 auth" }, + { 0, "hf ntag424 read" }, + { 0, "hf ntag424 write" }, + { 0, "hf ntag424 getfilesettings" }, + { 0, "hf ntag424 changefilesettings" }, + { 0, "hf ntag424 changekey" }, { 1, "hf seos help" }, { 0, "hf seos info" }, { 1, "hf seos list" }, @@ -817,4 +822,4 @@ const static vocabulary_t vocabulary[] = { } #endif -#endif \ No newline at end of file +#endif From 011d1f6a4427412c18cb7f50ca86f2da21eb5d92 Mon Sep 17 00:00:00 2001 From: Daniel Karling <danne@dekay.se> Date: Fri, 27 Oct 2023 06:52:30 +0200 Subject: [PATCH 0629/1034] Refactored MAC and IV calculations --- client/src/cmdhfntag424.c | 88 +++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index 725d2cdc3..c076bdafb 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -251,6 +251,40 @@ static int ntag424_read_file_settings(uint8_t fileno, ntag424_file_settings_t *s return PM3_SUCCESS; } +static void ntag424_calc_iv(ntag424_session_keys_t *session_keys, uint8_t *out_ivc) { + uint8_t iv_clear[] = { 0xa5, 0x5a, + session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], + (uint8_t)(session_keys->command_counter), (uint8_t)(session_keys->command_counter >> 8), + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + uint8_t zero_iv[16] = {0}; + aes_encode(zero_iv, session_keys->encryption, iv_clear, out_ivc, 16); +} + +static void ntag424_calc_mac(ntag424_session_keys_t *session_keys, uint8_t command, uint8_t command_header, uint8_t *data, uint8_t datalen, uint8_t *out_mac) { + uint8_t mac_input_header[] = { command, + (uint8_t)session_keys->command_counter, (uint8_t)(session_keys->command_counter >> 8), + session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], + command_header, + }; + + int mac_input_len = sizeof(mac_input_header) + datalen; + + uint8_t *mac_input = (uint8_t*)malloc(mac_input_len); + memcpy(mac_input, mac_input_header, sizeof(mac_input_header)); + memcpy(&mac_input[sizeof(mac_input_header)], data, datalen); + uint8_t mac[16] = {0}; + mbedtls_aes_cmac_prf_128(session_keys->mac, 16, mac_input, sizeof(mac_input_header) + 32, mac); + + for(int i = 0; i < 8; i++) + { + out_mac[i] = mac[i*2+1]; + } + + free(mac_input); +} + // Write file settings is done with full communication mode. This can probably be broken out // and used for read/write of file when full communication mode is needed. static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t *settings, ntag424_session_keys_t *session_keys) { @@ -265,15 +299,8 @@ static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t * // ------- Calculate IV - uint8_t iv_clear[] = { 0xa5, 0x5a, - session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], - (uint8_t)(session_keys->command_counter), (uint8_t)(session_keys->command_counter >> 8), - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - uint8_t zero_iv[16] = {0}; - uint8_t ivc[16] = {0}; - aes_encode(zero_iv, session_keys->encryption, iv_clear, ivc, 16); + uint8_t ivc[16]; + ntag424_calc_iv(session_keys, ivc); // ------- Encrypt file settings uint8_t padded_cmddata_buffer[256] = {0}; @@ -289,18 +316,8 @@ static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t * aes_encode(ivc, session_keys->encryption, padded_cmddata_buffer, encrypted_cmddata, total_size); // ------- Calculate MAC - uint8_t mac_input_header[] = { 0x5f, - (uint8_t)session_keys->command_counter, (uint8_t)(session_keys->command_counter >> 8), - session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], - fileno // CmdHeader - }; - - uint8_t mac_input[256] = {0}; - memcpy(mac_input, mac_input_header, sizeof(mac_input_header)); - memcpy(&mac_input[sizeof(mac_input_header)], encrypted_cmddata, total_size); - uint8_t mac[16] = {0}; - mbedtls_aes_cmac_prf_128(session_keys->mac, 16, mac_input, sizeof(mac_input_header) + total_size, mac); - uint8_t mact[8] = { mac[1], mac[3], mac[5], mac[7], mac[9], mac[11], mac[13], mac[15] }; + uint8_t mact[8]; + ntag424_calc_mac(session_keys, 0x5f, fileno, encrypted_cmddata, total_size, mact); // ------- Assemble the actual command uint8_t lc = 1 + total_size + 8; // CmdHeader + size + mac*/ @@ -675,15 +692,8 @@ static int ntag424_change_key(uint8_t keyno, uint8_t *new_key, uint8_t *old_key, // ------- Calculate IV - uint8_t iv_clear[] = { 0xa5, 0x5a, - session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], - (uint8_t)(session_keys->command_counter), (uint8_t)(session_keys->command_counter >> 8), - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - uint8_t zero_iv[16] = {0}; - uint8_t ive[16] = {0}; - aes_encode(zero_iv, session_keys->encryption, iv_clear, ive, 16); + uint8_t ive[16]; + ntag424_calc_iv(session_keys, ive); // ------- Calculate KeyData uint8_t keydata[32] = {0}; @@ -703,19 +713,8 @@ static int ntag424_change_key(uint8_t keyno, uint8_t *new_key, uint8_t *old_key, aes_encode(ive, session_keys->encryption, keydata, enc_keydata, 32); // -------- Calculate MAC - uint8_t mac_input_header[] = { 0xC4, - (uint8_t)session_keys->command_counter, (uint8_t)(session_keys->command_counter >> 8), - session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], - keyno, - }; - - uint8_t mac_input[256] = {0}; - memcpy(mac_input, mac_input_header, sizeof(mac_input_header)); - memcpy(&mac_input[sizeof(mac_input_header)], enc_keydata, 32); - uint8_t mac[16] = {0}; - mbedtls_aes_cmac_prf_128(session_keys->mac, 16, mac_input, sizeof(mac_input_header) + 32, mac); - uint8_t mact[8] = { mac[1], mac[3], mac[5], mac[7], mac[9], mac[11], mac[13], mac[15] }; - + uint8_t mact[8]; + ntag424_calc_mac(session_keys, 0xC4, keyno, enc_keydata, 32, mact); // ------- Assemble APDU uint8_t cmd_header[] = { @@ -1290,7 +1289,8 @@ static int CmdHF_ntag424_changekey(const char *Cmd) { CLIParserInit(&ctx, "hf ntag424 changekey", "Change a key.\n" "Authentication key must currently be different to the one we want to change.\n", - "hf ntag424 changekey -n 1 --oldkey 00000000000000000000000000000000 --newkey 11111111111111111111111111111111 --key0 00000000000000000000000000000000 -v 1" + "hf ntag424 changekey -n 1 --oldkey 00000000000000000000000000000000 --newkey 11111111111111111111111111111111 --key0 00000000000000000000000000000000 -v 1\n" + "hf ntag424 changekey -n 0 --newkey 11111111111111111111111111111111 --key0 00000000000000000000000000000000 -v 1\n" ); void *argtable[] = { arg_param_begin, From 81b116c23f2c5aa99b85b6ec1dc9387c46a4b977 Mon Sep 17 00:00:00 2001 From: Antiklesys <syselkitna@gmail.com> Date: Fri, 27 Oct 2023 13:21:49 +0800 Subject: [PATCH 0630/1034] Fixed keyroll mode for hf ic configcard Was able to compare the output of nfc-iclass and I identified two bugs in the generation of blocks 0x0D (was being overwritten with FF, it seems this was an original bug in the original pm3 code?) Fixed the porting for block 15 generation. --- CHANGELOG.md | 1 + client/src/cmdhficlass.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b794f4db..eae63e74b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Additional fixes to configcard code for keyroll mode based on nfc-iclass output (@Antiklesys) - Added `bind` option for network connections to specify the outbound address and port (@wh201906) - Changed `lf em 4x05 dump` - now supports the `--ns` nosave parameter (@iceman1001) - Fixed some wrong synchronization waits in usb_write() to increase the communication speed (@wh201906) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 3966f8517..98065f2d0 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -424,7 +424,7 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke memcpy(data + (0x0D * 8), lkey, sizeof(enckey1)); } // encrypted 0xFF - for (uint8_t i = 0x0D; i < 0x14; i++) { + for (uint8_t i = 0x0E; i < 0x14; i++) { memcpy(data + (i * 8), ffs, sizeof(ffs)); } PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); @@ -450,7 +450,7 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke // encrypted partial keyroll key 15 PrintAndLogEx(INFO, "Setting encrypted partial key15... " NOLF); memset(foo, 0xFF, sizeof(foo)); - foo[0] = lkey[7]; + foo[0] = key[7]; if (IsCardHelperPresent(false) != false) { if (Encrypt(foo, enckey2) == false) { PrintAndLogEx(WARNING, "failed to encrypt partial 2"); From eb29e1a17e0a4dd5b0aed9b168e5b0d5dd6745d0 Mon Sep 17 00:00:00 2001 From: Daniel Karling <danne@dekay.se> Date: Fri, 27 Oct 2023 07:18:13 +0200 Subject: [PATCH 0631/1034] Cleanup * Added some comments * Changed name of offsets to sdm_data since this is more apt. Not all of them are describing offsets * Fixed dumb bug in MAC refactor --- client/src/cmdhfntag424.c | 91 ++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 49 deletions(-) diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index c076bdafb..bb7f130a4 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -98,19 +98,19 @@ typedef struct { } ntag424_session_keys_t; // -------------- File settings structs ------------------------- -#define FILE_SETTINGS_OPTIONS_SDM_AND_MIRRORING (1 << 6) +// Enabling this bit in the settings will also reset the read counter to 0 +#define FILE_SETTINGS_OPTIONS_SDM_AND_MIRRORING (1 << 6) #define FILE_SETTINGS_SDM_OPTIONS_UID (1 << 7) #define FILE_SETTINGS_SDM_OPTIONS_SDM_READ_COUNTER (1 << 6) #define FILE_SETTINGS_SDM_OPTIONS_SDM_READ_COUNTER_LIMIT (1 << 5) #define FILE_SETTINGS_SDM_OPTIONS_SDM_ENC_FILE_DATA (1 << 4) -// RFU stuff... #define FILE_SETTINGS_SDM_OPTIONS_ENCODING_MODE_ASCII (1 << 0) typedef struct { uint8_t sdm_options; uint8_t sdm_access[2]; - uint8_t offset[8][3]; + uint8_t sdm_data[8][3]; } ntag424_file_sdm_settings_t; typedef struct { @@ -121,7 +121,7 @@ typedef struct { ntag424_file_sdm_settings_t optional_sdm_settings; } ntag424_file_settings_t; -#define SETTINGS_WITHOUT_OFFSETS_SIZE (1+1+2+3+1+2) +#define SETTINGS_WITHOUT_SDM_DATA_SIZE (1+1+2+3+1+2) // A different struct is used when actually writing the settings back, // since we obviously can't change the size or type of a static file. @@ -143,11 +143,10 @@ typedef struct { // Currently unused functions, commented out due to -Wunused-function /*static void ntag424_file_settings_set_sdm_access_rights(ntag424_file_settings_t *settings, - uint8_t sdm_meta_read, uint8_t sdm_file_read, - uint8_t rfu, uint8_t sdm_ctr_ret) + uint8_t sdm_meta_read, uint8_t sdm_file_read, uint8_t sdm_ctr_ret) { settings->optional_sdm_settings.sdm_access[1] = sdm_meta_read << 4 | sdm_file_read; - settings->optional_sdm_settings.sdm_access[0] = rfu << 4 | sdm_ctr_ret; + settings->optional_sdm_settings.sdm_access[0] = 0xf << 4 | sdm_ctr_ret; // (0xf is due to reserved for future use) }*/ @@ -160,11 +159,7 @@ static uint8_t ntag424_file_settings_get_sdm_file_read(const ntag424_file_settin } // Currently unused functions, commented out due to -Wunused-function -/*static uint8_t ntag424_file_settings_get_sdm_rfu(const ntag424_file_settings_t *settings) { - return settings->optional_sdm_settings.sdm_access[0] >> 4; -} - -static uint8_t ntag424_file_settings_get_sdm_ctr_ret(const ntag424_file_settings_t *settings) { +/*static uint8_t ntag424_file_settings_get_sdm_ctr_ret(const ntag424_file_settings_t *settings) { return settings->optional_sdm_settings.sdm_access[0] & 4; }*/ @@ -233,7 +228,7 @@ static int ntag424_read_file_settings(uint8_t fileno, ntag424_file_settings_t *s } if(outlen < 9) { - PrintAndLogEx(ERR, "Incorrect response asdaslength: %d", outlen); + PrintAndLogEx(ERR, "Incorrect response length: %d", outlen); return PM3_ESOFT; } @@ -275,7 +270,7 @@ static void ntag424_calc_mac(ntag424_session_keys_t *session_keys, uint8_t comma memcpy(mac_input, mac_input_header, sizeof(mac_input_header)); memcpy(&mac_input[sizeof(mac_input_header)], data, datalen); uint8_t mac[16] = {0}; - mbedtls_aes_cmac_prf_128(session_keys->mac, 16, mac_input, sizeof(mac_input_header) + 32, mac); + mbedtls_aes_cmac_prf_128(session_keys->mac, 16, mac_input, sizeof(mac_input_header) + datalen, mac); for(int i = 0; i < 8; i++) { @@ -349,7 +344,7 @@ static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t * } if(outlen != RESPONSE_LENGTH) { - PrintAndLogEx(ERR, "Incorrect response asdaslength: %d, %02X%02X", outlen, resp[outlen-2], resp[outlen-1]); + PrintAndLogEx(ERR, "Incorrect response length: %d, %02X%02X", outlen, resp[outlen-2], resp[outlen-1]); return PM3_ESOFT; } @@ -366,7 +361,7 @@ static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t * static void ntag424_print_file_settings(uint8_t fileno, const ntag424_file_settings_t *settings) { - int num_offsets = (ntag424_calc_file_settings_size(settings) - SETTINGS_WITHOUT_OFFSETS_SIZE) / 3; + int num_sdm_data = (ntag424_calc_file_settings_size(settings) - SETTINGS_WITHOUT_SDM_DATA_SIZE) / 3; PrintAndLogEx(SUCCESS, "--- " _CYAN_("File %d settings:") , fileno); @@ -381,21 +376,18 @@ static void ntag424_print_file_settings(uint8_t fileno, const ntag424_file_setti PrintAndLogEx(SUCCESS, " options: " _GREEN_("%02X"), settings->optional_sdm_settings.sdm_options); PrintAndLogEx(SUCCESS, " sdm access: " _GREEN_("%02X%02X"), settings->optional_sdm_settings.sdm_access[0], settings->optional_sdm_settings.sdm_access[1]); - if(num_offsets > 0) + if(num_sdm_data > 0) { - PrintAndLogEx(SUCCESS, "--- " _CYAN_("SDM offsets: ")); - for(int i = 0; i < num_offsets; i++) + PrintAndLogEx(SUCCESS, "--- " _CYAN_("SDM data: ")); + for(int i = 0; i < num_sdm_data; i++) { - PrintAndLogEx(SUCCESS, " offset %d: %02X%02X%02X", i, - settings->optional_sdm_settings.offset[i][2], - settings->optional_sdm_settings.offset[i][1], - settings->optional_sdm_settings.offset[i][0]); + PrintAndLogEx(SUCCESS, " %d: %02X%02X%02X", i, + settings->optional_sdm_settings.sdm_data[i][2], + settings->optional_sdm_settings.sdm_data[i][1], + settings->optional_sdm_settings.sdm_data[i][0]); } } } - - - // Add printing of variable number of offsets here... } // NTAG424 only have one static application, so we select it here @@ -1089,15 +1081,16 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { "sdmaccess: two byte access rights.\n" "Each nibble is a key, or E for plain mirror and F for no mirroring\n" - "Order is SDMMetaRead, SDMFileRead, RFU and SDMCtrRet\n\n" + "Order is SDMMetaRead, SDMFileRead, Reserved and SDMCtrRet\n\n" - "offset: A three byte offset to the data to be mirrored to/from. Can be specified multiple times.\n\n" + "sdm_data: Three bytes of data used to control SDM settings. Can be specified multiple times.\n" + "Data means different things depending on settings.\n\n" "Note: Not all of these settings will be written. It depends on the option byte, and the keys set. See AN12196 for more information.\n" - "You must also start with offset1, then offset2, up to the number of offsets you want to write", + "You must also start with sdmdata1, then sdmdata2, up to the number of sdm_data you want to write", - "hf ntag424 changefilesettings -f 2 -n 0 -k 00000000000000000000000000000000 -o 40 -a 00E0 -s C1 -c F000 --offset1 000020 --offset2 000043 --offset3 000043"); + "hf ntag424 changefilesettings -f 2 -n 0 -k 00000000000000000000000000000000 -o 40 -a 00E0 -s C1 -c F000 --sdmdata1 000020 --sdmdata2 000043 --sdmdata3 000043"); void *argtable[] = { arg_param_begin, @@ -1108,13 +1101,14 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { arg_str0("a", "access", "<hex>", "File access settings (HEX 2 bytes)"), arg_str0("s", "sdmoptions", "<hex>", "SDM options (HEX 1 byte)"), arg_str0("c", "sdmaccess", "<hex>", "SDM access settings (HEX 2 bytes)"), - arg_str0(NULL, "offset1", "<hex>", "SDM offset (HEX 3 bytes)"), - arg_str0(NULL, "offset2", "<hex>", "SDM offset (HEX 3 bytes)"), - arg_str0(NULL, "offset3", "<hex>", "SDM offset (HEX 3 bytes)"), - arg_str0(NULL, "offset4", "<hex>", "SDM offset (HEX 3 bytes)"), - arg_str0(NULL, "offset5", "<hex>", "SDM offset (HEX 3 bytes)"), - arg_str0(NULL, "offset6", "<hex>", "SDM offset (HEX 3 bytes)"), - arg_str0(NULL, "offset7", "<hex>", "SDM offset (HEX 3 bytes)"), + arg_str0(NULL, "sdmdata1", "<hex>", "SDM data (HEX 3 bytes)"), + arg_str0(NULL, "sdmdata2", "<hex>", "SDM data (HEX 3 bytes)"), + arg_str0(NULL, "sdmdata3", "<hex>", "SDM data (HEX 3 bytes)"), + arg_str0(NULL, "sdmdata4", "<hex>", "SDM data (HEX 3 bytes)"), + arg_str0(NULL, "sdmdata5", "<hex>", "SDM data (HEX 3 bytes)"), + arg_str0(NULL, "sdmdata6", "<hex>", "SDM data (HEX 3 bytes)"), + arg_str0(NULL, "sdmdata7", "<hex>", "SDM data (HEX 3 bytes)"), + arg_str0(NULL, "sdmdata8", "<hex>", "SDM data (HEX 3 bytes)"), // Sorry, couldn't figure out how to work with arg_strn... arg_param_end }; @@ -1132,9 +1126,8 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { uint8_t sdmoptions[1]; uint8_t has_sdmaccess = 0; uint8_t sdmaccess[2]; - uint8_t num_offsets = 0; - uint8_t offsets[8][3]; - + uint8_t num_sdm_data = 0; + uint8_t sdm_data[8][3]; if(ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) != PM3_SUCCESS) { @@ -1161,7 +1154,7 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { CLIGetHexWithReturn(ctx, 5, access, &len); if(len != 2) { - PrintAndLogEx(ERR, "access must be 2 bytes"); + PrintAndLogEx(ERR, "Access must be 2 bytes"); CLIParserFree(ctx); return PM3_EINVARG; } @@ -1185,7 +1178,7 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { CLIGetHexWithReturn(ctx, 7, sdmaccess, &len); if(len != 2) { - PrintAndLogEx(ERR, "SDM access must be 2 bytes"); + PrintAndLogEx(ERR, "SDM Access must be 2 bytes"); CLIParserFree(ctx); return PM3_EINVARG; } @@ -1196,11 +1189,11 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { if(arg_get_str(ctx,8+i)->count == 1) { len = 3; - num_offsets++; - CLIGetHexWithReturn(ctx, 8+i, offsets[i], &len); + num_sdm_data++; + CLIGetHexWithReturn(ctx, 8+i, sdm_data[i], &len); if(len != 3) { - PrintAndLogEx(ERR, "Offset must be 3 bytes"); + PrintAndLogEx(ERR, "sdmdata must be 3 bytes"); CLIParserFree(ctx); return PM3_EINVARG; } @@ -1263,11 +1256,11 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { memcpy(settings.optional_sdm_settings.sdm_access, sdmaccess, 2); } - for(int i = 0; i < num_offsets; i++) + for(int i = 0; i < num_sdm_data; i++) { - settings.optional_sdm_settings.offset[i][2] = offsets[i][0]; - settings.optional_sdm_settings.offset[i][1] = offsets[i][1]; - settings.optional_sdm_settings.offset[i][0] = offsets[i][2]; + settings.optional_sdm_settings.sdm_data[i][2] = sdm_data[i][0]; + settings.optional_sdm_settings.sdm_data[i][1] = sdm_data[i][1]; + settings.optional_sdm_settings.sdm_data[i][0] = sdm_data[i][2]; } if(ntag424_write_file_settings(fileno, &settings, &session) != PM3_SUCCESS) From 9d07ee497c7ead38c3fb947e3f6e1f5710edd548 Mon Sep 17 00:00:00 2001 From: yah01 <yah2er0ne@outlook.com> Date: Fri, 27 Oct 2023 13:47:26 +0800 Subject: [PATCH 0632/1034] Improve lf sampling performance Signed-off-by: yah01 <yah2er0ne@outlook.com> --- CHANGELOG.md | 1 + armsrc/lfsampling.c | 35 ++++++++++++++--------------------- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b794f4db..276521e5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Modified `hf iclass configcard` to only support online mode (@Antiklesys) - Modified `hf iclass configcard` command to generate config cards without a cardhelper module by porting the contents of blocks 6 & 7 from nfc-iclass (@Antiklesys) - Fixed `hf iclass info` command showing incorrectly in offline mode (@Antiklesys) + - Changed lf sampling - improved the performance (@yah01) ## [Raccoon.4.17140][2023-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) diff --git a/armsrc/lfsampling.c b/armsrc/lfsampling.c index 6c131e7f3..c763bd0c6 100644 --- a/armsrc/lfsampling.c +++ b/armsrc/lfsampling.c @@ -128,20 +128,6 @@ sample_config *getSamplingConfig(void) { return &config; } -/** - * @brief Pushes bit onto the stream - * @param stream - * @param bit - */ -static void pushBit(BitstreamOut_t *stream, uint8_t bit) { - int bytepos = stream->position >> 3; // divide by 8 - int bitpos = stream->position & 7; - *(stream->buffer + bytepos) &= ~(1 << (7 - bitpos)); - *(stream->buffer + bytepos) |= (bit > 0) << (7 - bitpos); - stream->position++; - stream->numbits++; -} - void initSampleBuffer(uint32_t *sample_size) { initSampleBufferEx(sample_size, false); } @@ -233,13 +219,20 @@ void logSample(uint8_t sample, uint8_t decimation, uint8_t bits_per_sample, bool data.numbits = samples.total_saved << 3; } else { - pushBit(&data, sample & 0x80); - if (bits_per_sample > 1) pushBit(&data, sample & 0x40); - if (bits_per_sample > 2) pushBit(&data, sample & 0x20); - if (bits_per_sample > 3) pushBit(&data, sample & 0x10); - if (bits_per_sample > 4) pushBit(&data, sample & 0x08); - if (bits_per_sample > 5) pushBit(&data, sample & 0x04); - if (bits_per_sample > 6) pushBit(&data, sample & 0x02); + // truncate trailing data + sample >>= 8 - bits_per_sample; + sample <<= 8 - bits_per_sample; + + uint8_t bits_offset = data.numbits & 0x7; + uint8_t bits_cap = 8 - bits_offset; + + // write the current byte + data.buffer[data.numbits >> 3] |= sample >> bits_offset; + int numbits = data.numbits + bits_cap; + + // write the remaining bits to the next byte + data.buffer[numbits >> 3] |= sample << (bits_cap); + data.numbits += bits_per_sample; } } From ad875a8c01b3671acd04759e932fa79ee97ad424 Mon Sep 17 00:00:00 2001 From: Daniel Karling <danne@dekay.se> Date: Fri, 27 Oct 2023 16:43:58 +0200 Subject: [PATCH 0633/1034] Refactored communication encryption --- client/src/cmdhfntag424.c | 124 ++++++++++++++++++++++---------------- 1 file changed, 71 insertions(+), 53 deletions(-) diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index bb7f130a4..e74182262 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -28,6 +28,7 @@ #include "crypto/libpcrypto.h" // aes_decode #include "cmac.h" #include "cmdhf14a.h" +#include "ui.h" #include "util.h" #include "crc32.h" @@ -212,6 +213,10 @@ static int ntag424_calc_file_settings_size(const ntag424_file_settings_t *settin return size; } + +static int ntag424_calc_file_write_settings_size(const ntag424_file_settings_t *settings) { + return ntag424_calc_file_settings_size(settings) - 4; +} static int ntag424_read_file_settings(uint8_t fileno, ntag424_file_settings_t *settings_out) { const size_t RESPONSE_LENGTH = sizeof(ntag424_file_settings_t) + 2; @@ -280,8 +285,52 @@ static void ntag424_calc_mac(ntag424_session_keys_t *session_keys, uint8_t comma free(mac_input); } -// Write file settings is done with full communication mode. This can probably be broken out -// and used for read/write of file when full communication mode is needed. +static int ntag424_comm_full_encrypt_apdu(const uint8_t *apdu_in, uint8_t *apdu_out, int *apdu_out_size, ntag424_session_keys_t *session_keys) +{ +#define MAC_SIZE 8 +#define APDU_HEADER_SIZE 5 +#define APDU_OVERHEAD (APDU_HEADER_SIZE + 1) + + // ------- Calculate IV + uint8_t ivc[16]; + ntag424_calc_iv(session_keys, ivc); + + + // ------- Copy apdu header + size_t size = apdu_in[4]; + memcpy(apdu_out, apdu_in, 6); + + size_t encrypt_data_size = size - 1; + size_t padded_data_size = encrypt_data_size + 16 - (encrypt_data_size % 16); // pad up to 16 byte blocks + uint8_t temp_buffer[256] = {0}; + + int apdu_final_size = APDU_OVERHEAD + padded_data_size + 8 + 1; // + MAC and CmdHdr + if(*apdu_out_size < apdu_final_size) + { + PrintAndLogEx(ERR, "APDU out buffer not large enough"); + return PM3_EINVARG; + } + + *apdu_out_size = apdu_final_size; + + // ------ Pad data + memcpy(temp_buffer, &apdu_in[APDU_HEADER_SIZE + 1], encrypt_data_size); // We encrypt everything except the CmdHdr + temp_buffer[encrypt_data_size] = 0x80; + + // ------ Encrypt it + memcpy(apdu_out, apdu_in, 4); + aes_encode(ivc, session_keys->encryption, temp_buffer, &apdu_out[6], padded_data_size); + + // ------ Add MAC + ntag424_calc_mac(session_keys, apdu_in[1], apdu_in[5], &apdu_out[6], padded_data_size, &apdu_out[APDU_HEADER_SIZE + padded_data_size + 1]); + + apdu_out[4] = (uint8_t)(padded_data_size+8+1); // Set size to CmdHdr + padded data + MAC + apdu_out[APDU_HEADER_SIZE + padded_data_size + 8 + 1] = 0; // Le + + + return PM3_SUCCESS; +} + static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t *settings, ntag424_session_keys_t *session_keys) { // ------- Convert file settings to the format for writing @@ -292,51 +341,29 @@ static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t * .optional_sdm_settings = settings->optional_sdm_settings, }; - - // ------- Calculate IV - uint8_t ivc[16]; - ntag424_calc_iv(session_keys, ivc); - - // ------- Encrypt file settings - uint8_t padded_cmddata_buffer[256] = {0}; - uint8_t encrypted_cmddata[256] = {0}; - size_t settings_size = ntag424_calc_file_settings_size(settings) - 4; // This is weird, but since the write settings are the same as - // the settings read out, but minus file type and file size, we subtract 4 here. - - size_t total_size = settings_size + 16 - (settings_size % 16); // pad up to 16 byte blocks - memcpy(padded_cmddata_buffer, (void*)&write_settings, settings_size); - if(total_size > settings_size) { - padded_cmddata_buffer[settings_size] = 0x80; - } - aes_encode(ivc, session_keys->encryption, padded_cmddata_buffer, encrypted_cmddata, total_size); - - // ------- Calculate MAC - uint8_t mact[8]; - ntag424_calc_mac(session_keys, 0x5f, fileno, encrypted_cmddata, total_size, mact); - // ------- Assemble the actual command - uint8_t lc = 1 + total_size + 8; // CmdHeader + size + mac*/ + size_t settings_size = ntag424_calc_file_write_settings_size(settings); + uint8_t lc = 1 + settings_size; // CmdHeader + size */ uint8_t cmd_header[] = { 0x90, 0x5f, 0x00, 0x00, lc, fileno }; - uint8_t cmd[256] = {0}; - memcpy(cmd, cmd_header, sizeof(cmd_header)); - memcpy(&cmd[sizeof(cmd_header)], encrypted_cmddata, total_size); - memcpy(&cmd[sizeof(cmd_header) + total_size], mact, sizeof(mact)); - cmd[sizeof(cmd_header) + total_size + sizeof(mact)] = 0x00; + memcpy(&cmd[sizeof(cmd_header)], (void*)&write_settings, settings_size); + cmd[sizeof(cmd_header) + settings_size] = 0x00; - size_t apdu_size = sizeof(cmd_header) + total_size + sizeof(mact) + 1; + uint8_t apdu_out[256] = {0}; + int apdu_out_size = 256; + ntag424_comm_full_encrypt_apdu(cmd, apdu_out, &apdu_out_size, session_keys); // ------- Actually send the APDU const size_t RESPONSE_LENGTH = 8 + 2; int outlen; uint8_t resp[RESPONSE_LENGTH]; - int res = ExchangeAPDU14a(cmd, apdu_size, false, true, resp, RESPONSE_LENGTH, &outlen); + int res = ExchangeAPDU14a(apdu_out, apdu_out_size, false, true, resp, RESPONSE_LENGTH, &outlen); if(res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to send apdu"); @@ -355,7 +382,6 @@ static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t * } session_keys->command_counter++; // Should this be incremented only on success? - return PM3_SUCCESS; } @@ -681,50 +707,43 @@ static int ntag424_change_key(uint8_t keyno, uint8_t *new_key, uint8_t *old_key, { memcpy(key, new_key, 16); } - - - // ------- Calculate IV - uint8_t ive[16]; - ntag424_calc_iv(session_keys, ive); - + // ------- Calculate KeyData uint8_t keydata[32] = {0}; memcpy(keydata, key, 16); keydata[16] = version; + int key_data_len; if(keyno != 0) { memcpy(&keydata[17], crc, 4); keydata[21] = 0x80; + key_data_len = 16 + 4 + 1; } else { keydata[17] = 0x80; + key_data_len = 16 + 1; } - uint8_t enc_keydata[32] = {0}; - aes_encode(ive, session_keys->encryption, keydata, enc_keydata, 32); - - // -------- Calculate MAC - uint8_t mact[8]; - ntag424_calc_mac(session_keys, 0xC4, keyno, enc_keydata, 32, mact); - // ------- Assemble APDU uint8_t cmd_header[] = { - 0x90, 0xC4, 0x00, 0x00, 0x29, keyno + 0x90, 0xC4, 0x00, 0x00, key_data_len+1, keyno }; uint8_t cmd[512] = {0}; memcpy(cmd, cmd_header, sizeof(cmd_header)); - memcpy(&cmd[sizeof(cmd_header)], enc_keydata, 32); - memcpy(&cmd[sizeof(cmd_header) + 32], mact, 8); - int apdu_size = sizeof(cmd_header) + 32 + 8 + 1; + memcpy(&cmd[sizeof(cmd_header)], keydata, key_data_len); + + uint8_t apdu_out[256]; + int apdu_out_size = 256; + ntag424_comm_full_encrypt_apdu(cmd, apdu_out, &apdu_out_size, session_keys); // ------- Actually send the APDU const size_t RESPONSE_LENGTH = 8 + 2; int outlen; uint8_t resp[RESPONSE_LENGTH]; - int res = ExchangeAPDU14a(cmd, apdu_size, false, true, resp, RESPONSE_LENGTH, &outlen); + int res = ExchangeAPDU14a(apdu_out, apdu_out_size, false, true, resp, RESPONSE_LENGTH, &outlen); if(res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to send apdu"); @@ -738,7 +757,7 @@ static int ntag424_change_key(uint8_t keyno, uint8_t *new_key, uint8_t *old_key, if(resp[outlen-2] != 0x91 || resp[outlen-1] != 0x00) { - PrintAndLogEx(ERR, "Failed to get file settings"); + PrintAndLogEx(ERR, "Error when changing key. Wrong old key?"); return PM3_ESOFT; } @@ -761,7 +780,6 @@ static int CmdHF_ntag424_info(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); CLIParserFree(ctx); - PrintAndLogEx(INFO, "not implemented yet"); PrintAndLogEx(INFO, "Feel free to contribute!"); return PM3_SUCCESS; From 05a230246686bfbed8f5c5a119d0d7942455f315 Mon Sep 17 00:00:00 2001 From: Daniel Karling <danne@dekay.se> Date: Fri, 27 Oct 2023 18:09:38 +0200 Subject: [PATCH 0634/1034] Implemented style --- client/src/cmdhfntag424.c | 508 +++++++++++++------------------- client/src/pm3line_vocabulary.h | 2 +- doc/commands.json | 115 +++++++- doc/commands.md | 9 +- 4 files changed, 312 insertions(+), 322 deletions(-) diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index e74182262..25e862ef8 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -100,7 +100,7 @@ typedef struct { // -------------- File settings structs ------------------------- // Enabling this bit in the settings will also reset the read counter to 0 -#define FILE_SETTINGS_OPTIONS_SDM_AND_MIRRORING (1 << 6) +#define FILE_SETTINGS_OPTIONS_SDM_AND_MIRRORING (1 << 6) #define FILE_SETTINGS_SDM_OPTIONS_UID (1 << 7) #define FILE_SETTINGS_SDM_OPTIONS_SDM_READ_COUNTER (1 << 6) @@ -168,47 +168,43 @@ static uint8_t ntag424_file_settings_get_sdm_file_read(const ntag424_file_settin // at the end depending on settings. static int ntag424_calc_file_settings_size(const ntag424_file_settings_t *settings) { int size = 7; - - if(settings->options & FILE_SETTINGS_OPTIONS_SDM_AND_MIRRORING) { + + if (settings->options & FILE_SETTINGS_OPTIONS_SDM_AND_MIRRORING) { size += 3; // sdm_options and sdm_access must be present - if(settings->optional_sdm_settings.sdm_options & FILE_SETTINGS_SDM_OPTIONS_UID && - ntag424_file_settings_get_sdm_meta_read(settings) == 0xe) - { + if (settings->optional_sdm_settings.sdm_options & FILE_SETTINGS_SDM_OPTIONS_UID && + ntag424_file_settings_get_sdm_meta_read(settings) == 0xe) { size += 3; // UIDOffset } - if(settings->optional_sdm_settings.sdm_options & FILE_SETTINGS_SDM_OPTIONS_SDM_READ_COUNTER && - ntag424_file_settings_get_sdm_meta_read(settings) == 0xe) - { + if (settings->optional_sdm_settings.sdm_options & FILE_SETTINGS_SDM_OPTIONS_SDM_READ_COUNTER && + ntag424_file_settings_get_sdm_meta_read(settings) == 0xe) { size += 3; // SDMReadCtrOffset } - if(ntag424_file_settings_get_sdm_meta_read(settings) <= 0x04) { + if (ntag424_file_settings_get_sdm_meta_read(settings) <= 0x04) { size += 3; // PICCDataOffset } - if(ntag424_file_settings_get_sdm_file_read(settings) != 0x0f) { + if (ntag424_file_settings_get_sdm_file_read(settings) != 0x0f) { size += 3; // SDMMacInputOffset } - if(ntag424_file_settings_get_sdm_file_read(settings) != 0x0f && - settings->optional_sdm_settings.sdm_options & FILE_SETTINGS_SDM_OPTIONS_SDM_ENC_FILE_DATA) - { + if (ntag424_file_settings_get_sdm_file_read(settings) != 0x0f && + settings->optional_sdm_settings.sdm_options & FILE_SETTINGS_SDM_OPTIONS_SDM_ENC_FILE_DATA) { size += 3; // SDMEncOffset size += 3; // SDMEncLength } - if(ntag424_file_settings_get_sdm_file_read(settings) != 0x0f) { + if (ntag424_file_settings_get_sdm_file_read(settings) != 0x0f) { // Warning, this value has different offsets depending on // FILE_SETTINGS_SDM_OPTIONS_SDM_ENC_FILE_DATA size += 3; // SDMMacOffset } - if(settings->optional_sdm_settings.sdm_options & FILE_SETTINGS_SDM_OPTIONS_SDM_READ_COUNTER_LIMIT) - { + if (settings->optional_sdm_settings.sdm_options & FILE_SETTINGS_SDM_OPTIONS_SDM_READ_COUNTER_LIMIT) { size += 3; // SDMReadCtrLimit - } + } } return size; @@ -217,7 +213,7 @@ static int ntag424_calc_file_settings_size(const ntag424_file_settings_t *settin static int ntag424_calc_file_write_settings_size(const ntag424_file_settings_t *settings) { return ntag424_calc_file_settings_size(settings) - 4; } - + static int ntag424_read_file_settings(uint8_t fileno, ntag424_file_settings_t *settings_out) { const size_t RESPONSE_LENGTH = sizeof(ntag424_file_settings_t) + 2; uint8_t cmd[] = { 0x90, 0xF5, 0x00, 0x00, 0x01, fileno, 0x00}; @@ -226,26 +222,23 @@ static int ntag424_read_file_settings(uint8_t fileno, ntag424_file_settings_t *s int res; res = ExchangeAPDU14a(cmd, sizeof(cmd), false, true, resp, RESPONSE_LENGTH, &outlen); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to send apdu"); return res; } - if(outlen < 9) { + if (outlen < 9) { PrintAndLogEx(ERR, "Incorrect response length: %d", outlen); return PM3_ESOFT; } - if(resp[outlen-2] != 0x91 || resp[outlen-1] != 0x00) - { + if (resp[outlen - 2] != 0x91 || resp[outlen - 1] != 0x00) { PrintAndLogEx(ERR, "Failed to get file settings"); return PM3_ESOFT; } - if(settings_out) - { - memcpy(settings_out, resp, outlen-2); + if (settings_out) { + memcpy(settings_out, resp, outlen - 2); } return PM3_SUCCESS; @@ -253,10 +246,10 @@ static int ntag424_read_file_settings(uint8_t fileno, ntag424_file_settings_t *s static void ntag424_calc_iv(ntag424_session_keys_t *session_keys, uint8_t *out_ivc) { uint8_t iv_clear[] = { 0xa5, 0x5a, - session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], - (uint8_t)(session_keys->command_counter), (uint8_t)(session_keys->command_counter >> 8), - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; + session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], + (uint8_t)(session_keys->command_counter), (uint8_t)(session_keys->command_counter >> 8), + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; uint8_t zero_iv[16] = {0}; aes_encode(zero_iv, session_keys->encryption, iv_clear, out_ivc, 16); @@ -264,33 +257,31 @@ static void ntag424_calc_iv(ntag424_session_keys_t *session_keys, uint8_t *out_i static void ntag424_calc_mac(ntag424_session_keys_t *session_keys, uint8_t command, uint8_t command_header, uint8_t *data, uint8_t datalen, uint8_t *out_mac) { uint8_t mac_input_header[] = { command, - (uint8_t)session_keys->command_counter, (uint8_t)(session_keys->command_counter >> 8), - session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], - command_header, - }; + (uint8_t)session_keys->command_counter, (uint8_t)(session_keys->command_counter >> 8), + session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], + command_header, + }; int mac_input_len = sizeof(mac_input_header) + datalen; - uint8_t *mac_input = (uint8_t*)malloc(mac_input_len); + uint8_t *mac_input = (uint8_t *)malloc(mac_input_len); memcpy(mac_input, mac_input_header, sizeof(mac_input_header)); memcpy(&mac_input[sizeof(mac_input_header)], data, datalen); uint8_t mac[16] = {0}; mbedtls_aes_cmac_prf_128(session_keys->mac, 16, mac_input, sizeof(mac_input_header) + datalen, mac); - - for(int i = 0; i < 8; i++) - { - out_mac[i] = mac[i*2+1]; + + for (int i = 0; i < 8; i++) { + out_mac[i] = mac[i * 2 + 1]; } free(mac_input); } -static int ntag424_comm_full_encrypt_apdu(const uint8_t *apdu_in, uint8_t *apdu_out, int *apdu_out_size, ntag424_session_keys_t *session_keys) -{ +static int ntag424_comm_full_encrypt_apdu(const uint8_t *apdu_in, uint8_t *apdu_out, int *apdu_out_size, ntag424_session_keys_t *session_keys) { #define MAC_SIZE 8 #define APDU_HEADER_SIZE 5 #define APDU_OVERHEAD (APDU_HEADER_SIZE + 1) - + // ------- Calculate IV uint8_t ivc[16]; ntag424_calc_iv(session_keys, ivc); @@ -305,8 +296,7 @@ static int ntag424_comm_full_encrypt_apdu(const uint8_t *apdu_in, uint8_t *apdu_ uint8_t temp_buffer[256] = {0}; int apdu_final_size = APDU_OVERHEAD + padded_data_size + 8 + 1; // + MAC and CmdHdr - if(*apdu_out_size < apdu_final_size) - { + if (*apdu_out_size < apdu_final_size) { PrintAndLogEx(ERR, "APDU out buffer not large enough"); return PM3_EINVARG; } @@ -324,15 +314,15 @@ static int ntag424_comm_full_encrypt_apdu(const uint8_t *apdu_in, uint8_t *apdu_ // ------ Add MAC ntag424_calc_mac(session_keys, apdu_in[1], apdu_in[5], &apdu_out[6], padded_data_size, &apdu_out[APDU_HEADER_SIZE + padded_data_size + 1]); - apdu_out[4] = (uint8_t)(padded_data_size+8+1); // Set size to CmdHdr + padded data + MAC + apdu_out[4] = (uint8_t)(padded_data_size + 8 + 1); // Set size to CmdHdr + padded data + MAC apdu_out[APDU_HEADER_SIZE + padded_data_size + 8 + 1] = 0; // Le - + return PM3_SUCCESS; } static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t *settings, ntag424_session_keys_t *session_keys) { - + // ------- Convert file settings to the format for writing file_settings_write_t write_settings = { .options = settings->options, @@ -352,7 +342,7 @@ static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t * }; uint8_t cmd[256] = {0}; memcpy(cmd, cmd_header, sizeof(cmd_header)); - memcpy(&cmd[sizeof(cmd_header)], (void*)&write_settings, settings_size); + memcpy(&cmd[sizeof(cmd_header)], (void *)&write_settings, settings_size); cmd[sizeof(cmd_header) + settings_size] = 0x00; uint8_t apdu_out[256] = {0}; @@ -364,19 +354,17 @@ static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t * int outlen; uint8_t resp[RESPONSE_LENGTH]; int res = ExchangeAPDU14a(apdu_out, apdu_out_size, false, true, resp, RESPONSE_LENGTH, &outlen); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to send apdu"); return res; } - if(outlen != RESPONSE_LENGTH) { - PrintAndLogEx(ERR, "Incorrect response length: %d, %02X%02X", outlen, resp[outlen-2], resp[outlen-1]); + if (outlen != RESPONSE_LENGTH) { + PrintAndLogEx(ERR, "Incorrect response length: %d, %02X%02X", outlen, resp[outlen - 2], resp[outlen - 1]); return PM3_ESOFT; } - if(resp[outlen-2] != 0x91 || resp[outlen-1] != 0x00) - { + if (resp[outlen - 2] != 0x91 || resp[outlen - 1] != 0x00) { PrintAndLogEx(ERR, "Failed to get file settings"); return PM3_ESOFT; } @@ -388,25 +376,22 @@ static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t * static void ntag424_print_file_settings(uint8_t fileno, const ntag424_file_settings_t *settings) { int num_sdm_data = (ntag424_calc_file_settings_size(settings) - SETTINGS_WITHOUT_SDM_DATA_SIZE) / 3; - - PrintAndLogEx(SUCCESS, "--- " _CYAN_("File %d settings:") , fileno); + + PrintAndLogEx(SUCCESS, "--- " _CYAN_("File %d settings:"), fileno); PrintAndLogEx(SUCCESS, " type: " _GREEN_("%02X"), settings->type); PrintAndLogEx(SUCCESS, " options: " _GREEN_("%02X"), settings->options); PrintAndLogEx(SUCCESS, " access: " _GREEN_("%02X%02X (RW, C, R, W)"), settings->access[0], settings->access[1]); PrintAndLogEx(SUCCESS, " size: " _GREEN_("%02X%02X%02X"), settings->size[2], settings->size[1], settings->size[0]); - if(settings->options & FILE_SETTINGS_OPTIONS_SDM_AND_MIRRORING) - { + if (settings->options & FILE_SETTINGS_OPTIONS_SDM_AND_MIRRORING) { PrintAndLogEx(SUCCESS, "--- " _CYAN_("SDM settings: ")); PrintAndLogEx(SUCCESS, " options: " _GREEN_("%02X"), settings->optional_sdm_settings.sdm_options); PrintAndLogEx(SUCCESS, " sdm access: " _GREEN_("%02X%02X"), settings->optional_sdm_settings.sdm_access[0], settings->optional_sdm_settings.sdm_access[1]); - if(num_sdm_data > 0) - { + if (num_sdm_data > 0) { PrintAndLogEx(SUCCESS, "--- " _CYAN_("SDM data: ")); - for(int i = 0; i < num_sdm_data; i++) - { + for (int i = 0; i < num_sdm_data; i++) { PrintAndLogEx(SUCCESS, " %d: %02X%02X%02X", i, settings->optional_sdm_settings.sdm_data[i][2], settings->optional_sdm_settings.sdm_data[i][1], @@ -425,14 +410,12 @@ static int ntag424_select_application(void) { int res; res = ExchangeAPDU14a(cmd, sizeof(cmd), false, true, resp, RESPONSE_LENGTH, &outlen); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to send apdu"); return res; } - if(outlen != RESPONSE_LENGTH || resp[RESPONSE_LENGTH-2] != 0x90 || resp[RESPONSE_LENGTH-1] != 0x00) - { + if (outlen != RESPONSE_LENGTH || resp[RESPONSE_LENGTH - 2] != 0x90 || resp[RESPONSE_LENGTH - 1] != 0x00) { PrintAndLogEx(ERR, "Failed to select application"); return PM3_ESOFT; } @@ -440,8 +423,7 @@ static int ntag424_select_application(void) { return PM3_SUCCESS; } -static int ntag424_auth_first_step(uint8_t keyno, uint8_t *key, uint8_t *out) -{ +static int ntag424_auth_first_step(uint8_t keyno, uint8_t *key, uint8_t *out) { const size_t RESPONSE_LENGTH = 16 + 2; uint8_t cmd[] = {0x90, 0x71, 0x00, 0x00, 0x02, keyno, 0x00, 0x00}; uint8_t resp[RESPONSE_LENGTH]; @@ -449,14 +431,12 @@ static int ntag424_auth_first_step(uint8_t keyno, uint8_t *key, uint8_t *out) int res; res = ExchangeAPDU14a(cmd, sizeof(cmd), false, true, resp, RESPONSE_LENGTH, &outlen); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to send apdu"); return res; } - if(outlen != RESPONSE_LENGTH || resp[RESPONSE_LENGTH-2] != 0x91 || resp[RESPONSE_LENGTH-1] != 0xAF) - { + if (outlen != RESPONSE_LENGTH || resp[RESPONSE_LENGTH - 2] != 0x91 || resp[RESPONSE_LENGTH - 1] != 0xAF) { PrintAndLogEx(ERR, "Failed to get RndB (invalid key number?)"); return PM3_ESOFT; } @@ -467,8 +447,7 @@ static int ntag424_auth_first_step(uint8_t keyno, uint8_t *key, uint8_t *out) return PM3_SUCCESS; } -static int ntag424_auth_second_step(uint8_t *challenge, uint8_t *response) -{ +static int ntag424_auth_second_step(uint8_t *challenge, uint8_t *response) { uint8_t cmd_header[] = { 0x90, 0xAF, 0x00, 0x00, 0x20 }; uint8_t cmd[sizeof(cmd_header) + 32 + 1] = {0}; @@ -482,31 +461,27 @@ static int ntag424_auth_second_step(uint8_t *challenge, uint8_t *response) int res; res = ExchangeAPDU14a(cmd, sizeof(cmd), false, true, resp, RESPONSE_LENGTH, &outlen); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { return res; } - if(resp[outlen-2] != 0x91 || resp[outlen-1] != 0x00) - { + if (resp[outlen - 2] != 0x91 || resp[outlen - 1] != 0x00) { PrintAndLogEx(ERR, "Challenge failed: wrong key?"); return PM3_ESOFT; } - memcpy(response, resp, outlen-2); + memcpy(response, resp, outlen - 2); return PM3_SUCCESS; } // Authenticate against a key number and optionally get session keys out -static int ntag424_authenticate_ev2_first(uint8_t keyno, uint8_t *key, ntag424_session_keys_t *session_keys_out) -{ - // -------- Get first challenge from card +static int ntag424_authenticate_ev2_first(uint8_t keyno, uint8_t *key, ntag424_session_keys_t *session_keys_out) { + // -------- Get first challenge from card uint8_t rnd_b_clear[16] = {0}; int res = ntag424_auth_first_step(keyno, key, rnd_b_clear); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { return res; } @@ -528,20 +503,18 @@ static int ntag424_authenticate_ev2_first(uint8_t keyno, uint8_t *key, ntag424_s aes_encode(iv, key, concat_clear, concat_enc, 32); // -------- Do second step with our concatenated encrypted RndA || RndB - uint8_t resp[4+16+6+6]; + uint8_t resp[4 + 16 + 6 + 6]; res = ntag424_auth_second_step(concat_enc, resp); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { return res; } ntag424_ev2_response_t response; - aes_decode(iv, key, resp, (uint8_t*)&response, sizeof(ntag424_ev2_response_t)); + aes_decode(iv, key, resp, (uint8_t *)&response, sizeof(ntag424_ev2_response_t)); // -------- Verify that the response we got contains the RndA that we supplied (rotated one byte) - if(memcmp(response.rnd_a, &rnd_a_clear[1], 15) != 0 || - response.rnd_a[15] != rnd_a_clear[0]) - { + if (memcmp(response.rnd_a, &rnd_a_clear[1], 15) != 0 || + response.rnd_a[15] != rnd_a_clear[0]) { PrintAndLogEx(ERR, "Incorrect response from card\n" "expected: %s\n" "got: %s" @@ -551,8 +524,7 @@ static int ntag424_authenticate_ev2_first(uint8_t keyno, uint8_t *key, ntag424_s } // -------- Optionally calculate session keys - if(session_keys_out) - { + if (session_keys_out) { memset(session_keys_out, 0, sizeof(ntag424_session_keys_t)); memcpy(session_keys_out->ti, response.ti, sizeof(response.ti)); @@ -562,17 +534,17 @@ static int ntag424_authenticate_ev2_first(uint8_t keyno, uint8_t *key, ntag424_s // [RndB[9:0] || RndA[7:0] uint8_t sv1[] = { 0xa5, 0x5a, 0x00, 0x01, 0x00, 0x80, rnd_a_clear[0], rnd_a_clear[1], - rnd_a_clear[2] ^ rnd_b_clear[0], - rnd_a_clear[3] ^ rnd_b_clear[1], - rnd_a_clear[4] ^ rnd_b_clear[2], - rnd_a_clear[5] ^ rnd_b_clear[3], - rnd_a_clear[6] ^ rnd_b_clear[4], - rnd_a_clear[7] ^ rnd_b_clear[5], - rnd_b_clear[6], rnd_b_clear[7], rnd_b_clear[8], rnd_b_clear[9], rnd_b_clear[10], - rnd_b_clear[11], rnd_b_clear[12], rnd_b_clear[13], rnd_b_clear[14], rnd_b_clear[15], - rnd_a_clear[8], rnd_a_clear[9], rnd_a_clear[10], - rnd_a_clear[11], rnd_a_clear[12], rnd_a_clear[13], rnd_a_clear[14], rnd_a_clear[15] - }; + rnd_a_clear[2] ^rnd_b_clear[0], + rnd_a_clear[3] ^rnd_b_clear[1], + rnd_a_clear[4] ^rnd_b_clear[2], + rnd_a_clear[5] ^rnd_b_clear[3], + rnd_a_clear[6] ^rnd_b_clear[4], + rnd_a_clear[7] ^rnd_b_clear[5], + rnd_b_clear[6], rnd_b_clear[7], rnd_b_clear[8], rnd_b_clear[9], rnd_b_clear[10], + rnd_b_clear[11], rnd_b_clear[12], rnd_b_clear[13], rnd_b_clear[14], rnd_b_clear[15], + rnd_a_clear[8], rnd_a_clear[9], rnd_a_clear[10], + rnd_a_clear[11], rnd_a_clear[12], rnd_a_clear[13], rnd_a_clear[14], rnd_a_clear[15] + }; // SV 2 = [0x5A][0xA5][0x00][0x01] // [0x00][0x80][RndA[15:14] || @@ -580,18 +552,18 @@ static int ntag424_authenticate_ev2_first(uint8_t keyno, uint8_t *key, ntag424_s // [RndB[9:0] || RndA[7:0] uint8_t sv2[] = { 0x5a, 0xa5, 0x00, 0x01, 0x00, 0x80, rnd_a_clear[0], rnd_a_clear[1], - rnd_a_clear[2] ^ rnd_b_clear[0], - rnd_a_clear[3] ^ rnd_b_clear[1], - rnd_a_clear[4] ^ rnd_b_clear[2], - rnd_a_clear[5] ^ rnd_b_clear[3], - rnd_a_clear[6] ^ rnd_b_clear[4], - rnd_a_clear[7] ^ rnd_b_clear[5], - rnd_b_clear[6], rnd_b_clear[7], rnd_b_clear[8], rnd_b_clear[9], rnd_b_clear[10], - rnd_b_clear[11], rnd_b_clear[12], rnd_b_clear[13], rnd_b_clear[14], rnd_b_clear[15], - rnd_a_clear[8], rnd_a_clear[9], rnd_a_clear[10], - rnd_a_clear[11], rnd_a_clear[12], rnd_a_clear[13], rnd_a_clear[14], rnd_a_clear[15] - }; - + rnd_a_clear[2] ^rnd_b_clear[0], + rnd_a_clear[3] ^rnd_b_clear[1], + rnd_a_clear[4] ^rnd_b_clear[2], + rnd_a_clear[5] ^rnd_b_clear[3], + rnd_a_clear[6] ^rnd_b_clear[4], + rnd_a_clear[7] ^rnd_b_clear[5], + rnd_b_clear[6], rnd_b_clear[7], rnd_b_clear[8], rnd_b_clear[9], rnd_b_clear[10], + rnd_b_clear[11], rnd_b_clear[12], rnd_b_clear[13], rnd_b_clear[14], rnd_b_clear[15], + rnd_a_clear[8], rnd_a_clear[9], rnd_a_clear[10], + rnd_a_clear[11], rnd_a_clear[12], rnd_a_clear[13], rnd_a_clear[14], rnd_a_clear[15] + }; + mbedtls_aes_cmac_prf_128(key, 16, sv1, sizeof(sv1), session_keys_out->encryption); mbedtls_aes_cmac_prf_128(key, 16, sv2, sizeof(sv2), session_keys_out->mac); } @@ -607,17 +579,16 @@ static int ntag424_write_file(uint8_t fileno, uint16_t offset, uint16_t num_byte const size_t RESPONSE_LENGTH = 2; size_t remainder = 0; - if(num_bytes > MAX_WRITE_APDU) - { + if (num_bytes > MAX_WRITE_APDU) { remainder = num_bytes - MAX_WRITE_APDU; num_bytes = MAX_WRITE_APDU; } - // 248 + + // 248 + uint8_t cmd_header[] = { 0x90, 0x8d, 0x00, 0x00, 0x07 + num_bytes, fileno, - (uint8_t)offset, (uint8_t)(offset << 8), (uint8_t)(offset << 16), // offset - (uint8_t)num_bytes, (uint8_t)(num_bytes >> 8), (uint8_t)(num_bytes >> 16) //size - }; + (uint8_t)offset, (uint8_t)(offset << 8), (uint8_t)(offset << 16), // offset + (uint8_t)num_bytes, (uint8_t)(num_bytes >> 8), (uint8_t)(num_bytes >> 16) //size + }; uint8_t cmd[512] = {0}; @@ -625,34 +596,31 @@ static int ntag424_write_file(uint8_t fileno, uint16_t offset, uint16_t num_byte memcpy(&cmd[sizeof(cmd_header)], in, num_bytes); size_t total_size = sizeof(cmd_header) + num_bytes + 1; //(Le) - + uint8_t resp[RESPONSE_LENGTH]; int outlen = 0; int res; res = ExchangeAPDU14a(cmd, total_size, false, true, resp, RESPONSE_LENGTH, &outlen); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to send apdu"); return res; } - if(outlen != RESPONSE_LENGTH) { + if (outlen != RESPONSE_LENGTH) { PrintAndLogEx(ERR, "Incorrect response length: %d, %s", outlen, sprint_hex(resp, 2)); return PM3_ESOFT; } - if(resp[outlen-2] != 0x91 || resp[outlen-1] != 0x00) - { + if (resp[outlen - 2] != 0x91 || resp[outlen - 1] != 0x00) { PrintAndLogEx(ERR, "Failed to write file"); return PM3_ESOFT; } - if(remainder > 0) - { + if (remainder > 0) { return ntag424_write_file(fileno, offset + num_bytes, remainder, &in[num_bytes]); } - + return PM3_SUCCESS; } @@ -660,29 +628,28 @@ static int ntag424_write_file(uint8_t fileno, uint16_t offset, uint16_t num_byte // first unless file has free read access. static int ntag424_read_file(uint8_t fileno, uint16_t offset, uint16_t num_bytes, uint8_t *out) { const size_t RESPONSE_LENGTH = num_bytes + 2; - + uint8_t cmd[] = { 0x90, 0xad, 0x00, 0x00, 0x07, fileno, - (uint8_t)offset, (uint8_t)(offset << 8), (uint8_t)(offset << 16), // offset - (uint8_t)num_bytes, (uint8_t)(num_bytes >> 8), 0x00, //size - 0x00 }; + (uint8_t)offset, (uint8_t)(offset << 8), (uint8_t)(offset << 16), // offset + (uint8_t)num_bytes, (uint8_t)(num_bytes >> 8), 0x00, //size + 0x00 + }; uint8_t resp[RESPONSE_LENGTH]; int outlen = 0; int res; res = ExchangeAPDU14a(cmd, sizeof(cmd), false, true, resp, RESPONSE_LENGTH, &outlen); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to send apdu"); return res; } - if(outlen != RESPONSE_LENGTH) { + if (outlen != RESPONSE_LENGTH) { PrintAndLogEx(ERR, "Incorrect response length: %d, %s", outlen, sprint_hex(resp, 2)); return PM3_ESOFT; } - if(resp[outlen-2] != 0x91 || resp[outlen-1] != 0x00) - { + if (resp[outlen - 2] != 0x91 || resp[outlen - 1] != 0x00) { PrintAndLogEx(ERR, "Failed to read file"); return PM3_ESOFT; } @@ -695,39 +662,32 @@ static int ntag424_change_key(uint8_t keyno, uint8_t *new_key, uint8_t *old_key, // -------- Calculate xor and crc uint8_t key[16] = {0}; uint8_t crc[4] = {0}; - if(keyno != 0) - { - for(int i = 0; i < 16; i++) - { + if (keyno != 0) { + for (int i = 0; i < 16; i++) { key[i] = old_key[i] ^ new_key[i]; } crc32_ex(new_key, 16, crc); - } - else - { + } else { memcpy(key, new_key, 16); } - + // ------- Calculate KeyData uint8_t keydata[32] = {0}; memcpy(keydata, key, 16); keydata[16] = version; int key_data_len; - if(keyno != 0) - { + if (keyno != 0) { memcpy(&keydata[17], crc, 4); keydata[21] = 0x80; key_data_len = 16 + 4 + 1; - } - else - { + } else { keydata[17] = 0x80; key_data_len = 16 + 1; } // ------- Assemble APDU uint8_t cmd_header[] = { - 0x90, 0xC4, 0x00, 0x00, key_data_len+1, keyno + 0x90, 0xC4, 0x00, 0x00, key_data_len + 1, keyno }; uint8_t cmd[512] = {0}; @@ -737,32 +697,30 @@ static int ntag424_change_key(uint8_t keyno, uint8_t *new_key, uint8_t *old_key, uint8_t apdu_out[256]; int apdu_out_size = 256; ntag424_comm_full_encrypt_apdu(cmd, apdu_out, &apdu_out_size, session_keys); - + // ------- Actually send the APDU const size_t RESPONSE_LENGTH = 8 + 2; int outlen; uint8_t resp[RESPONSE_LENGTH]; int res = ExchangeAPDU14a(apdu_out, apdu_out_size, false, true, resp, RESPONSE_LENGTH, &outlen); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to send apdu"); return res; } - if(outlen < 2) { + if (outlen < 2) { PrintAndLogEx(ERR, "Incorrect response length: %d", outlen); return PM3_ESOFT; } - if(resp[outlen-2] != 0x91 || resp[outlen-1] != 0x00) - { + if (resp[outlen - 2] != 0x91 || resp[outlen - 1] != 0x00) { PrintAndLogEx(ERR, "Error when changing key. Wrong old key?"); return PM3_ESOFT; } session_keys->command_counter++; // Should this be incremented only on success? - + return PM3_SUCCESS; } @@ -785,24 +743,21 @@ static int CmdHF_ntag424_info(const char *Cmd) { return PM3_SUCCESS; } -static int ntag424_cli_get_auth_information(CLIParserContext *ctx, int key_no_index, int key_index, int *keyno, uint8_t *key_out) -{ +static int ntag424_cli_get_auth_information(CLIParserContext *ctx, int key_no_index, int key_index, int *keyno, uint8_t *key_out) { uint8_t key[16]; int keylen = 16; - if(keyno) - { + if (keyno) { *keyno = arg_get_int(ctx, key_no_index); } CLIGetHexWithReturn(ctx, key_index, key, &keylen); - if(keylen != 16) - { + if (keylen != 16) { PrintAndLogEx(ERR, "Key must be 16 bytes"); return PM3_ESOFT; } memcpy(key_out, key, 16); - + return PM3_SUCCESS; } @@ -822,8 +777,7 @@ static int CmdHF_ntag424_auth(const char *Cmd) { int keyno; uint8_t key[16] = {0}; - if(ntag424_cli_get_auth_information(ctx, 1, 2, &keyno, key) != PM3_SUCCESS) - { + if (ntag424_cli_get_auth_information(ctx, 1, 2, &keyno, key) != PM3_SUCCESS) { CLIParserFree(ctx); return PM3_ESOFT; } @@ -831,27 +785,22 @@ static int CmdHF_ntag424_auth(const char *Cmd) { CLIParserFree(ctx); int res = SelectCard14443A_4(false, true, NULL); - if (res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to select card"); DropField(); return res; } res = ntag424_select_application(); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); return res; - } + } res = ntag424_authenticate_ev2_first(keyno, key, NULL); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to authenticate with key %d", keyno); - } - else - { + } else { PrintAndLogEx(SUCCESS, "Successfully authenticated with key %d", keyno); } @@ -884,47 +833,38 @@ static int CmdHF_ntag424_read(const char *Cmd) { int fileno = arg_get_int(ctx, 1); - if(ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) != PM3_SUCCESS) - { + if (ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) != PM3_SUCCESS) { PrintAndLogEx(INFO, "Reading unauthenticated"); auth = 0; - } - else - { + } else { PrintAndLogEx(INFO, "Reading authenticated"); } int offset = arg_get_int_def(ctx, 4, 0); int read_length = arg_get_int(ctx, 5); - + CLIParserFree(ctx); int res = SelectCard14443A_4(false, true, NULL); - if (res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); PrintAndLogEx(ERR, "Failed to select card"); return res; } res = ntag424_select_application(); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); return res; - } + } - if(auth) - { + if (auth) { res = ntag424_authenticate_ev2_first(keyno, key, NULL); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to authenticate with key %d", keyno); DropField(); return res; - } - else - { + } else { PrintAndLogEx(SUCCESS, "Successfully authenticated with key %d", keyno); } } @@ -932,8 +872,7 @@ static int CmdHF_ntag424_read(const char *Cmd) { uint8_t data[512]; res = ntag424_read_file(fileno, offset, read_length, data); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); return res; } @@ -969,13 +908,10 @@ static int CmdHF_ntag424_write(const char *Cmd) { int fileno = arg_get_int(ctx, 1); - if(ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) != PM3_SUCCESS) - { + if (ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) != PM3_SUCCESS) { PrintAndLogEx(INFO, "Will write unauthenticated"); auth = 0; - } - else - { + } else { PrintAndLogEx(INFO, "Will write authenticated"); } @@ -984,42 +920,35 @@ static int CmdHF_ntag424_write(const char *Cmd) { uint8_t data[512] = {0}; int datalen = 512; CLIGetHexWithReturn(ctx, 5, data, &datalen); - + CLIParserFree(ctx); int res = SelectCard14443A_4(false, true, NULL); - if (res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); PrintAndLogEx(ERR, "Failed to select card"); return res; } res = ntag424_select_application(); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); return res; - } + } - if(auth) - { + if (auth) { res = ntag424_authenticate_ev2_first(keyno, key, NULL); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to authenticate with key %d", keyno); DropField(); return res; - } - else - { + } else { PrintAndLogEx(SUCCESS, "Successfully authenticated with key %d", keyno); } } res = ntag424_write_file(fileno, offset, datalen, data); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); return res; } @@ -1048,25 +977,22 @@ static int CmdHF_ntag424_getfilesettings(const char *Cmd) { CLIParserFree(ctx); int res = SelectCard14443A_4(false, true, NULL); - if (res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); PrintAndLogEx(ERR, "Failed to select card"); return res; } res = ntag424_select_application(); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); return res; - } + } ntag424_file_settings_t settings; res = ntag424_read_file_settings(fileno, &settings); DropField(); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { return res; } @@ -1084,11 +1010,11 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { "options: byte with bit flags\n" " Bit: Setting:\n" " 6 Enable SDM and mirroring\n\n" - + "access: two byte access rights.\n" "Each nibble is a key number, or E for free access.\n" "Order is key for readwrite, change, read and write\n\n" - + "sdmoptions: byte with bit flags\n" " Bit: Setting:\n" " 0 ASCII encoding\n" @@ -1096,7 +1022,7 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { " 5 SDMReadCtrLimit\n" " 6 SDMReadCtr\n" " 7 SDMOptionsUID\n\n" - + "sdmaccess: two byte access rights.\n" "Each nibble is a key, or E for plain mirror and F for no mirroring\n" "Order is SDMMetaRead, SDMFileRead, Reserved and SDMCtrRet\n\n" @@ -1106,8 +1032,8 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { "Note: Not all of these settings will be written. It depends on the option byte, and the keys set. See AN12196 for more information.\n" "You must also start with sdmdata1, then sdmdata2, up to the number of sdm_data you want to write", - - + + "hf ntag424 changefilesettings -f 2 -n 0 -k 00000000000000000000000000000000 -o 40 -a 00E0 -s C1 -c F000 --sdmdata1 000020 --sdmdata2 000043 --sdmdata3 000043"); void *argtable[] = { @@ -1147,149 +1073,125 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { uint8_t num_sdm_data = 0; uint8_t sdm_data[8][3]; - if(ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) != PM3_SUCCESS) - { + if (ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) != PM3_SUCCESS) { PrintAndLogEx(ERR, "Could not get key settings"); CLIParserFree(ctx); return PM3_EINVARG; } int len = 1; - if(arg_get_str(ctx,4)->count == 1) - { + if (arg_get_str(ctx, 4)->count == 1) { has_options = 1; CLIGetHexWithReturn(ctx, 4, options, &len); - if(len != 1) - { + if (len != 1) { PrintAndLogEx(ERR, "Options must be 1 byte"); CLIParserFree(ctx); return PM3_EINVARG; } } len = 2; - if(arg_get_str(ctx,5)->count == 1) - { + if (arg_get_str(ctx, 5)->count == 1) { has_access = 1; CLIGetHexWithReturn(ctx, 5, access, &len); - if(len != 2) - { + if (len != 2) { PrintAndLogEx(ERR, "Access must be 2 bytes"); CLIParserFree(ctx); return PM3_EINVARG; } } len = 1; - if(arg_get_str(ctx,6)->count == 1) - { + if (arg_get_str(ctx, 6)->count == 1) { has_sdmoptions = 1; CLIGetHexWithReturn(ctx, 6, sdmoptions, &len); - if(len != 1) - { + if (len != 1) { PrintAndLogEx(ERR, "SDM Options must be 1 byte"); CLIParserFree(ctx); return PM3_EINVARG; } } len = 2; - if(arg_get_str(ctx,7)->count == 1) - { + if (arg_get_str(ctx, 7)->count == 1) { has_sdmaccess = 1; CLIGetHexWithReturn(ctx, 7, sdmaccess, &len); - if(len != 2) - { + if (len != 2) { PrintAndLogEx(ERR, "SDM Access must be 2 bytes"); CLIParserFree(ctx); return PM3_EINVARG; } } - for(int i = 0; i < 8; i++) - { - if(arg_get_str(ctx,8+i)->count == 1) - { + for (int i = 0; i < 8; i++) { + if (arg_get_str(ctx, 8 + i)->count == 1) { len = 3; num_sdm_data++; - CLIGetHexWithReturn(ctx, 8+i, sdm_data[i], &len); - if(len != 3) - { + CLIGetHexWithReturn(ctx, 8 + i, sdm_data[i], &len); + if (len != 3) { PrintAndLogEx(ERR, "sdmdata must be 3 bytes"); CLIParserFree(ctx); return PM3_EINVARG; } - } - else - { + } else { break; } } - + CLIParserFree(ctx); int res = SelectCard14443A_4(false, true, NULL); - if (res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); PrintAndLogEx(ERR, "Failed to select card"); return res; } res = ntag424_select_application(); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); return res; - } + } ntag424_file_settings_t settings; res = ntag424_read_file_settings(fileno, &settings); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); return res; } ntag424_session_keys_t session = {0}; res = ntag424_authenticate_ev2_first(keyno, key, &session); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to authenticate with key %d", keyno); DropField(); return res; } - if(has_options) - { + if (has_options) { settings.options = options[0]; } - if(has_access) - { + if (has_access) { memcpy(settings.access, access, 2); } - if(has_sdmoptions) - { + if (has_sdmoptions) { settings.optional_sdm_settings.sdm_options = sdmoptions[0]; } - if(has_sdmaccess) - { + if (has_sdmaccess) { memcpy(settings.optional_sdm_settings.sdm_access, sdmaccess, 2); } - for(int i = 0; i < num_sdm_data; i++) - { + for (int i = 0; i < num_sdm_data; i++) { settings.optional_sdm_settings.sdm_data[i][2] = sdm_data[i][0]; settings.optional_sdm_settings.sdm_data[i][1] = sdm_data[i][1]; settings.optional_sdm_settings.sdm_data[i][0] = sdm_data[i][2]; } - if(ntag424_write_file_settings(fileno, &settings, &session) != PM3_SUCCESS) - { + if (ntag424_write_file_settings(fileno, &settings, &session) != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to write settings"); DropField(); return PM3_ESOFT; } PrintAndLogEx(SUCCESS, "Wrote settings successfully"); ntag424_print_file_settings(fileno, &settings); - + DropField(); return res; } @@ -1320,24 +1222,20 @@ static int CmdHF_ntag424_changekey(const char *Cmd) { uint8_t newkey[16]; uint8_t authkey[16]; - if(keyno != 0) - { - if(ntag424_cli_get_auth_information(ctx, 0, 2, NULL, oldkey) != PM3_SUCCESS) - { - + if (keyno != 0) { + if (ntag424_cli_get_auth_information(ctx, 0, 2, NULL, oldkey) != PM3_SUCCESS) { + PrintAndLogEx(ERR, "Could not get keyno or old key"); CLIParserFree(ctx); return PM3_EINVARG; } } - if(ntag424_cli_get_auth_information(ctx, 0, 3, NULL, newkey) != PM3_SUCCESS) - { + if (ntag424_cli_get_auth_information(ctx, 0, 3, NULL, newkey) != PM3_SUCCESS) { PrintAndLogEx(ERR, "Could not get new key"); CLIParserFree(ctx); return PM3_EINVARG; } - if(ntag424_cli_get_auth_information(ctx, 0, 4, NULL, authkey) != PM3_SUCCESS) - { + if (ntag424_cli_get_auth_information(ctx, 0, 4, NULL, authkey) != PM3_SUCCESS) { PrintAndLogEx(ERR, "Could not get authentication key"); CLIParserFree(ctx); return PM3_EINVARG; @@ -1345,43 +1243,35 @@ static int CmdHF_ntag424_changekey(const char *Cmd) { CLIParserFree(ctx); int res = SelectCard14443A_4(false, true, NULL); - if (res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); PrintAndLogEx(ERR, "Failed to select card"); return res; } res = ntag424_select_application(); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); return res; - } + } ntag424_session_keys_t session = {0}; res = ntag424_authenticate_ev2_first(0, authkey, &session); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); PrintAndLogEx(ERR, "Failed to authenticate"); return PM3_ESOFT; - } - else - { + } else { PrintAndLogEx(SUCCESS, "Successfully authenticated"); } - + res = ntag424_change_key(keyno, newkey, oldkey, version, &session); - if(res != PM3_SUCCESS) - { + if (res != PM3_SUCCESS) { DropField(); PrintAndLogEx(ERR, "Failed to change key"); DropField(); return PM3_ESOFT; - } - else - { + } else { PrintAndLogEx(SUCCESS, "Successfully changed key %d", keyno); } diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index e4fab934d..5b3720d85 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -822,4 +822,4 @@ const static vocabulary_t vocabulary[] = { } #endif -#endif +#endif \ No newline at end of file diff --git a/doc/commands.json b/doc/commands.json index 635559526..d20870949 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -6790,6 +6790,78 @@ ], "usage": "hf mfu wrbl [-hl] [-k <hex>] -b <dec> -d <hex> [--force]" }, + "hf ntag424 auth": { + "command": "hf ntag424 auth", + "description": "Authenticate with selected key against NTAG424.", + "notes": [ + "hf ntag424 auth -n 0 -k 00000000000000000000000000000000" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-n, --keyno <dec> Key number", + "-k, --key <hex> Key for authenticate (HEX 16 bytes)" + ], + "usage": "hf ntag424 auth [-h] -n <dec> -k <hex>" + }, + "hf ntag424 changefilesettings": { + "command": "hf ntag424 changefilesettings", + "description": "Updates file settings for file, must be authenticated. This is a short explanation of the settings. See AN12196 for more information: options: byte with bit flags Bit: Setting: 6 Enable SDM and mirroring access: two byte access rights. Each nibble is a key number, or E for free access. Order is key for readwrite, change, read and write sdmoptions: byte with bit flags Bit: Setting: 0 ASCII encoding 4 SDMEncFileData 5 SDMReadCtrLimit 6 SDMReadCtr 7 SDMOptionsUID sdmaccess: two byte access rights. Each nibble is a key, or E for plain mirror and F for no mirroring Order is SDMMetaRead, SDMFileRead, Reserved and SDMCtrRet sdm_data: Three bytes of data used to control SDM settings. Can be specified multiple times. Data means different things depending on settings. Note: Not all of these settings will be written. It depends on the option byte, and the keys set. See AN12196 for more information. You must also start with sdmdata1, then sdmdata2, up to the number of sdm_data you want to write", + "notes": [ + "hf ntag424 changefilesettings -f 2 -n 0 -k 00000000000000000000000000000000 -o 40 -a 00E0 -s C1 -c F000 --sdmdata1 000020 --sdmdata2 000043 --sdmdata3 000043" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-f, --file <dec> File number", + "-n, --keyno <dec> Key number", + "-k, --key <hex> Key for authentication (HEX 16 bytes)", + "-o, --options <hex> File options byte (HEX 1 byte)", + "-a, --access <hex> File access settings (HEX 2 bytes)", + "-s, --sdmoptions <hex> SDM options (HEX 1 byte)", + "-c, --sdmaccess <hex> SDM access settings (HEX 2 bytes)", + "--sdmdata1 <hex> SDM data (HEX 3 bytes)", + "--sdmdata2 <hex> SDM data (HEX 3 bytes)", + "--sdmdata3 <hex> SDM data (HEX 3 bytes)", + "--sdmdata4 <hex> SDM data (HEX 3 bytes)", + "--sdmdata5 <hex> SDM data (HEX 3 bytes)", + "--sdmdata6 <hex> SDM data (HEX 3 bytes)", + "--sdmdata7 <hex> SDM data (HEX 3 bytes)", + "--sdmdata8 <hex> SDM data (HEX 3 bytes)" + ], + "usage": "hf ntag424 changefilesettings [-h] -f <dec> -n <dec> -k <hex> [-o <hex>] [-a <hex>] [-s <hex>] [-c <hex>] [--sdmdata1 <hex>] [--sdmdata2 <hex>] [--sdmdata3 <hex>] [--sdmdata4 <hex>] [--sdmdata5 <hex>] [--sdmdata6 <hex>] [--sdmdata7 <hex>] [--sdmdata8 <hex>]" + }, + "hf ntag424 changekey": { + "command": "hf ntag424 changekey", + "description": "Change a key. Authentication key must currently be different to the one we want to change.", + "notes": [ + "hf ntag424 changekey -n 1 --oldkey 00000000000000000000000000000000 --newkey 11111111111111111111111111111111 --key0 00000000000000000000000000000000 -v 1", + "hf ntag424 changekey -n 0 --newkey 11111111111111111111111111111111 --key0 00000000000000000000000000000000 -v 1" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-n, --keyno <dec> Key number to change", + "--oldkey <hex> Old key (only needed when changing key 1-4, HEX 16 bytes)", + "--newkey <hex> New key (HEX 16 bytes)", + "--key0 <hex> Authentication key (must be key 0, HEX 16 bytes)", + "-v, --version <dec> Version of the new key" + ], + "usage": "hf ntag424 changekey [-h] -n <dec> [--oldkey <hex>] --newkey <hex> --key0 <hex> -v <dec>" + }, + "hf ntag424 getfilesettings": { + "command": "hf ntag424 getfilesettings", + "description": "Read and print file settings for file", + "notes": [ + "hf ntag424 getfilesettings -f 2" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-f, --file <dec> File number" + ], + "usage": "hf ntag424 getfilesettings [-h] -f <dec>" + }, "hf ntag424 info": { "command": "hf ntag424 info", "description": "Get info about NXP NTAG424 DNA Family styled tag.", @@ -6802,17 +6874,22 @@ ], "usage": "hf ntag424 info [-h]" }, - "hf ntag424 sdm": { - "command": "hf ntag424 sdm", - "description": "Validate a SDM message", + "hf ntag424 read": { + "command": "hf ntag424 read", + "description": "Read and print data from file on NTAG424 tag. Will authenticate if key information is provided.", "notes": [ - "hf ntag424 sdm" + "hf ntag424 read -f 2 -n 0 -k 00000000000000000000000000000000 -o 0 -l 256" ], "offline": false, "options": [ - "-h, --help This help" + "-h, --help This help", + "-f, --fileno <dec> File number (1-3), (default 2)", + "-n, --keyno <dec> Key number", + "-k, --key <hex> Key for authentication (HEX 16 bytes)", + "-o, --offset <dec> Offset to read in file (default 0)", + "-l, --length <dec> Number of bytes to read" ], - "usage": "hf ntag424 sdm [-h]" + "usage": "hf ntag424 read [-h] -f <dec> [-n <dec>] [-k <hex>] [-o <dec>] -l <dec>" }, "hf ntag424 view": { "command": "hf ntag424 view", @@ -6828,6 +6905,23 @@ ], "usage": "hf ntag424 view [-hv] -f <fn>" }, + "hf ntag424 write": { + "command": "hf ntag424 write", + "description": "Write data to file on NTAG424 tag. Will authenticate if key information is provided.", + "notes": [ + "hf ntag424 write -f 2 -n 0 -k 00000000000000000000000000000000 -o 0 -d 1122334455667788" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-f, --fileno <dec> File number (1-3), (default 2)", + "-n, --keyno <dec> Key number", + "-k, --key <hex> Key for authentication (HEX 16 bytes)", + "-o, --offset <dec> Offset to write in file (default 0)", + "-d, --data <hex> Data to write" + ], + "usage": "hf ntag424 write [-h] -f <dec> [-n <dec>] [-k <hex>] [-o <dec>] -d <hex>" + }, "hf plot": { "command": "hf plot", "description": "Plots HF signal after RF signal path and A/D conversion.", @@ -8053,9 +8147,10 @@ "options": [ "-h, --help This help", "-p, --pwd <hex> password (00000000)", - "-f, --file <fn> override filename prefix (optional). Default is based on UID" + "-f, --file <fn> override filename prefix (optional). Default is based on UID", + "--ns no save to file" ], - "usage": "lf em 4x05 dump [-h] [-p <hex>] [-f <fn>]" + "usage": "lf em 4x05 dump [-h] [-p <hex>] [-f <fn>] [--ns]" }, "lf em 4x05 info": { "command": "lf em 4x05 info", @@ -11915,8 +12010,8 @@ } }, "metadata": { - "commands_extracted": 691, + "commands_extracted": 696, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-10-22T12:20:10" + "extracted_on": "2023-10-27T16:08:32" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index a2059a666..43eeb3535 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -649,9 +649,14 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`hf ntag424 help `|Y |`This help` -|`hf ntag424 info `|N |`Tag information` -|`hf ntag424 sdm `|N |`Prints NDEF records from card` +|`hf ntag424 info `|N |`Tag information (not implemented yet)` |`hf ntag424 view `|Y |`Display content from tag dump file` +|`hf ntag424 auth `|N |`Test authentication with key` +|`hf ntag424 read `|N |`Read file` +|`hf ntag424 write `|N |`Write file` +|`hf ntag424 getfilesettings`|N |`Get file settings` +|`hf ntag424 changefilesettings`|N |`Change file settings` +|`hf ntag424 changekey `|N |`Change key` ### hf seos From 1eaf8d0e804f6bd02c74617639446849554c6277 Mon Sep 17 00:00:00 2001 From: Daniel Karling <danne@dekay.se> Date: Sat, 28 Oct 2023 10:33:30 +0200 Subject: [PATCH 0635/1034] Fixed incorrect order of sdm access rights in command help --- client/src/cmdhfntag424.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index 25e862ef8..d0f8022e9 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -1025,7 +1025,7 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { "sdmaccess: two byte access rights.\n" "Each nibble is a key, or E for plain mirror and F for no mirroring\n" - "Order is SDMMetaRead, SDMFileRead, Reserved and SDMCtrRet\n\n" + "Order is Reserved, SDMCtrRet, SDMMetaRead and SDMFileRead\n\n" "sdm_data: Three bytes of data used to control SDM settings. Can be specified multiple times.\n" "Data means different things depending on settings.\n\n" From 6d290f1bae8b34a6303dec1bd3d8876ab13580c2 Mon Sep 17 00:00:00 2001 From: Daniel Karling <danne@dekay.se> Date: Sun, 29 Oct 2023 13:43:25 +0100 Subject: [PATCH 0636/1034] Less magic numbers, more refactoring --- client/src/cmdhfntag424.c | 423 ++++++++++++++++++++------------------ doc/commands.json | 4 +- 2 files changed, 222 insertions(+), 205 deletions(-) diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index d0f8022e9..f01df9605 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -21,6 +21,7 @@ #include "cmdparser.h" #include "commonutil.h" #include "comms.h" +#include "iso7816/apduinfo.h" #include "protocols.h" #include "cliparser.h" #include "cmdmain.h" @@ -32,7 +33,17 @@ #include "util.h" #include "crc32.h" -#define NTAG424_MAX_BYTES 412 +#define NTAG424_MAX_BYTES 412 + + +// NTAG424 commands currently implemented +#define NTAG424_CMD_GET_FILE_SETTINGS 0xF5 +#define NTAG424_CMD_CHANGE_FILE_SETTINGS 0x5F +#define NTAG424_CMD_CHANGE_KEY 0xC4 +#define NTAG424_CMD_READ_DATA 0xAD +#define NTAG424_CMD_WRITE_DATA 0x8D +#define NTAG424_CMD_AUTHENTICATE_EV2_FIRST_PART_1 0x71 +#define NTAG424_CMD_AUTHENTICATE_EV2_FIRST_PART_2 0xAF static int CmdHelp(const char *Cmd); @@ -98,6 +109,12 @@ typedef struct { uint8_t mac[16]; } ntag424_session_keys_t; +typedef enum { + COMM_PLAIN, + COMM_MAC, + COMM_FULL +} ntag424_communication_mode_t; + // -------------- File settings structs ------------------------- // Enabling this bit in the settings will also reset the read counter to 0 #define FILE_SETTINGS_OPTIONS_SDM_AND_MIRRORING (1 << 6) @@ -214,36 +231,6 @@ static int ntag424_calc_file_write_settings_size(const ntag424_file_settings_t * return ntag424_calc_file_settings_size(settings) - 4; } -static int ntag424_read_file_settings(uint8_t fileno, ntag424_file_settings_t *settings_out) { - const size_t RESPONSE_LENGTH = sizeof(ntag424_file_settings_t) + 2; - uint8_t cmd[] = { 0x90, 0xF5, 0x00, 0x00, 0x01, fileno, 0x00}; - uint8_t resp[RESPONSE_LENGTH]; - int outlen = 0; - int res; - - res = ExchangeAPDU14a(cmd, sizeof(cmd), false, true, resp, RESPONSE_LENGTH, &outlen); - if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Failed to send apdu"); - return res; - } - - if (outlen < 9) { - PrintAndLogEx(ERR, "Incorrect response length: %d", outlen); - return PM3_ESOFT; - } - - if (resp[outlen - 2] != 0x91 || resp[outlen - 1] != 0x00) { - PrintAndLogEx(ERR, "Failed to get file settings"); - return PM3_ESOFT; - } - - if (settings_out) { - memcpy(settings_out, resp, outlen - 2); - } - - return PM3_SUCCESS; -} - static void ntag424_calc_iv(ntag424_session_keys_t *session_keys, uint8_t *out_ivc) { uint8_t iv_clear[] = { 0xa5, 0x5a, session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], @@ -277,46 +264,132 @@ static void ntag424_calc_mac(ntag424_session_keys_t *session_keys, uint8_t comma free(mac_input); } -static int ntag424_comm_full_encrypt_apdu(const uint8_t *apdu_in, uint8_t *apdu_out, int *apdu_out_size, ntag424_session_keys_t *session_keys) { -#define MAC_SIZE 8 -#define APDU_HEADER_SIZE 5 -#define APDU_OVERHEAD (APDU_HEADER_SIZE + 1) +static int ntag424_comm_mac_apdu(APDU_t *apdu, int apdu_max_data_size, ntag424_session_keys_t *session_keys) { + int size = apdu->lc; + + if (size + 8 > apdu_max_data_size) { + return PM3_EOVFLOW; + } + + ntag424_calc_mac(session_keys, apdu->ins, apdu->data[0], &apdu->data[1], size - 1, &apdu->data[size]); + + apdu->lc = size + 8; + + return PM3_SUCCESS; +} + +static int ntag424_comm_encrypt_apdu(APDU_t *apdu, int apdu_max_data_size, ntag424_session_keys_t *session_keys) { // ------- Calculate IV uint8_t ivc[16]; ntag424_calc_iv(session_keys, ivc); - - // ------- Copy apdu header - size_t size = apdu_in[4]; - memcpy(apdu_out, apdu_in, 6); + int size = apdu->lc; size_t encrypt_data_size = size - 1; size_t padded_data_size = encrypt_data_size + 16 - (encrypt_data_size % 16); // pad up to 16 byte blocks uint8_t temp_buffer[256] = {0}; - int apdu_final_size = APDU_OVERHEAD + padded_data_size + 8 + 1; // + MAC and CmdHdr - if (*apdu_out_size < apdu_final_size) { - PrintAndLogEx(ERR, "APDU out buffer not large enough"); - return PM3_EINVARG; + if (padded_data_size + 1 > apdu_max_data_size) { + return PM3_EOVFLOW; } - *apdu_out_size = apdu_final_size; - // ------ Pad data - memcpy(temp_buffer, &apdu_in[APDU_HEADER_SIZE + 1], encrypt_data_size); // We encrypt everything except the CmdHdr + memcpy(temp_buffer, &apdu->data[1], encrypt_data_size); // We encrypt everything except the CmdHdr (first byte in data) temp_buffer[encrypt_data_size] = 0x80; // ------ Encrypt it - memcpy(apdu_out, apdu_in, 4); - aes_encode(ivc, session_keys->encryption, temp_buffer, &apdu_out[6], padded_data_size); + aes_encode(ivc, session_keys->encryption, temp_buffer, &apdu->data[1], padded_data_size); - // ------ Add MAC - ntag424_calc_mac(session_keys, apdu_in[1], apdu_in[5], &apdu_out[6], padded_data_size, &apdu_out[APDU_HEADER_SIZE + padded_data_size + 1]); + apdu->lc = (uint8_t)(1 + padded_data_size); // Set size to CmdHdr + padded data - apdu_out[4] = (uint8_t)(padded_data_size + 8 + 1); // Set size to CmdHdr + padded data + MAC - apdu_out[APDU_HEADER_SIZE + padded_data_size + 8 + 1] = 0; // Le + return PM3_SUCCESS; +} +static int ntag424_exchange_apdu(APDU_t *apdu, uint8_t *response, int *response_length, ntag424_communication_mode_t comm_mode, ntag424_session_keys_t *session_keys, uint8_t sw1_expected, uint8_t sw2_expected) { + + int res; + + // New buffer since we might need to expand the data in the apdu + int buffer_length = 256; + uint8_t tmp_apdu_buffer[256] = {0}; + + if (comm_mode != COMM_PLAIN) { + if (session_keys == NULL) { + PrintAndLogEx(ERR, "Non-plain communications mode requested but no session keys supplied"); + return PM3_EINVARG; + } + memcpy(tmp_apdu_buffer, apdu->data, apdu->lc); + apdu->data = tmp_apdu_buffer; + } + + if (comm_mode == COMM_FULL) { + res = ntag424_comm_encrypt_apdu(apdu, buffer_length, session_keys); + if (res != PM3_SUCCESS) { + return res; + } + } + + if (comm_mode == COMM_MAC || comm_mode == COMM_FULL) { + res = ntag424_comm_mac_apdu(apdu, buffer_length, session_keys); + if (res != PM3_SUCCESS) { + return res; + } + } + + uint8_t cmd[256] = {0}; + int apdu_length = 256; + + if (APDUEncode(apdu, cmd, &apdu_length) != 0) { + return PM3_EINVARG; + } + + res = ExchangeAPDU14a(cmd, apdu_length + 1, false, true, response, *response_length, response_length); + if (res != PM3_SUCCESS) { + PrintAndLogEx(ERR, "Failed to exchange APDU"); + return res; + } + + if (*response_length < 2) { + PrintAndLogEx(ERR, "No response"); + return PM3_ESOFT; + } + + uint8_t sw1 = response[*response_length - 2]; + uint8_t sw2 = response[*response_length - 1]; + + if (sw1 != sw1_expected || sw2 != sw2_expected) { + PrintAndLogEx(ERR, "Error from card: %02X %02X (%s)", sw1, sw2, GetAPDUCodeDescription(sw1, sw2)); + return PM3_ESOFT; + } + + // TODO: In case of COMM_FULL we would need to decrypt response here as well. + // And in case of COMM_MAC we would need to verify the MAC here, if we want to verify the card. + + return PM3_SUCCESS; +} + + +static int ntag424_get_file_settings(uint8_t fileno, ntag424_file_settings_t *settings_out) { + int response_length = sizeof(ntag424_file_settings_t) + 2; + uint8_t response[response_length]; + + APDU_t apdu = { + .cla = 0x90, + .ins = NTAG424_CMD_GET_FILE_SETTINGS, + .lc = 1, + .data = &fileno, + .extended_apdu = false + }; + + int res = ntag424_exchange_apdu(&apdu, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00); + if (res != PM3_SUCCESS) { + return res; + } + + if (settings_out) { + memcpy(settings_out, response, response_length); + } return PM3_SUCCESS; } @@ -331,46 +404,29 @@ static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t * .optional_sdm_settings = settings->optional_sdm_settings, }; - // ------- Assemble the actual command size_t settings_size = ntag424_calc_file_write_settings_size(settings); - uint8_t lc = 1 + settings_size; // CmdHeader + size */ - uint8_t cmd_header[] = { - 0x90, 0x5f, 0x00, 0x00, - lc, - fileno + uint8_t cmd_buffer[256]; + cmd_buffer[0] = fileno; + memcpy(&cmd_buffer[1], &write_settings, settings_size); + + APDU_t apdu = { + .cla = 0x90, + .ins = NTAG424_CMD_CHANGE_FILE_SETTINGS, + .lc = 1 + settings_size, + .data = cmd_buffer }; - uint8_t cmd[256] = {0}; - memcpy(cmd, cmd_header, sizeof(cmd_header)); - memcpy(&cmd[sizeof(cmd_header)], (void *)&write_settings, settings_size); - cmd[sizeof(cmd_header) + settings_size] = 0x00; - uint8_t apdu_out[256] = {0}; - int apdu_out_size = 256; - ntag424_comm_full_encrypt_apdu(cmd, apdu_out, &apdu_out_size, session_keys); // ------- Actually send the APDU - const size_t RESPONSE_LENGTH = 8 + 2; - int outlen; - uint8_t resp[RESPONSE_LENGTH]; - int res = ExchangeAPDU14a(apdu_out, apdu_out_size, false, true, resp, RESPONSE_LENGTH, &outlen); - if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Failed to send apdu"); - return res; - } + int response_length = 8 + 2; + uint8_t response[response_length]; - if (outlen != RESPONSE_LENGTH) { - PrintAndLogEx(ERR, "Incorrect response length: %d, %02X%02X", outlen, resp[outlen - 2], resp[outlen - 1]); - return PM3_ESOFT; - } + int res = ntag424_exchange_apdu(&apdu, response, &response_length, COMM_FULL, session_keys, 0x91, 0x00); - if (resp[outlen - 2] != 0x91 || resp[outlen - 1] != 0x00) { - PrintAndLogEx(ERR, "Failed to get file settings"); - return PM3_ESOFT; - } session_keys->command_counter++; // Should this be incremented only on success? - return PM3_SUCCESS; + return res; } static void ntag424_print_file_settings(uint8_t fileno, const ntag424_file_settings_t *settings) { @@ -424,53 +480,50 @@ static int ntag424_select_application(void) { } static int ntag424_auth_first_step(uint8_t keyno, uint8_t *key, uint8_t *out) { - const size_t RESPONSE_LENGTH = 16 + 2; - uint8_t cmd[] = {0x90, 0x71, 0x00, 0x00, 0x02, keyno, 0x00, 0x00}; - uint8_t resp[RESPONSE_LENGTH]; - int outlen = 0; - int res; + uint8_t key_number[2] = { keyno, 0x00 }; - res = ExchangeAPDU14a(cmd, sizeof(cmd), false, true, resp, RESPONSE_LENGTH, &outlen); + APDU_t apdu = { + .cla = 0x90, + .ins = NTAG424_CMD_AUTHENTICATE_EV2_FIRST_PART_1, + .lc = 0x02, + .data = key_number + }; + + int response_length = 16 + 2; + uint8_t response[response_length]; + + int res = ntag424_exchange_apdu(&apdu, response, &response_length, COMM_PLAIN, NULL, 0x91, 0xAF); if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Failed to send apdu"); return res; } - if (outlen != RESPONSE_LENGTH || resp[RESPONSE_LENGTH - 2] != 0x91 || resp[RESPONSE_LENGTH - 1] != 0xAF) { + if (response_length != 16 + 2) { PrintAndLogEx(ERR, "Failed to get RndB (invalid key number?)"); return PM3_ESOFT; } uint8_t iv[16] = {0}; - aes_decode(iv, key, resp, out, 16); + aes_decode(iv, key, response, out, 16); return PM3_SUCCESS; } -static int ntag424_auth_second_step(uint8_t *challenge, uint8_t *response) { - uint8_t cmd_header[] = { 0x90, 0xAF, 0x00, 0x00, 0x20 }; +static int ntag424_auth_second_step(uint8_t *challenge, uint8_t *response_out) { + APDU_t apdu = { + .cla = 0x90, + .ins = NTAG424_CMD_AUTHENTICATE_EV2_FIRST_PART_2, + .lc = 0x20, + .data = challenge, + }; + int response_length = 256; + uint8_t response[response_length]; - uint8_t cmd[sizeof(cmd_header) + 32 + 1] = {0}; - - memcpy(cmd, cmd_header, sizeof(cmd_header)); - memcpy(&cmd[sizeof(cmd_header)], challenge, 32); - - const size_t RESPONSE_LENGTH = 256; - uint8_t resp[RESPONSE_LENGTH]; - int outlen = 0; - int res; - - res = ExchangeAPDU14a(cmd, sizeof(cmd), false, true, resp, RESPONSE_LENGTH, &outlen); + int res = ntag424_exchange_apdu(&apdu, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00); if (res != PM3_SUCCESS) { return res; } - if (resp[outlen - 2] != 0x91 || resp[outlen - 1] != 0x00) { - PrintAndLogEx(ERR, "Challenge failed: wrong key?"); - return PM3_ESOFT; - } - - memcpy(response, resp, outlen - 2); + memcpy(response_out, response, response_length - 2); return PM3_SUCCESS; } @@ -571,54 +624,47 @@ static int ntag424_authenticate_ev2_first(uint8_t keyno, uint8_t *key, ntag424_s return PM3_SUCCESS; } -#define MAX_WRITE_APDU 248 +#define MAX_WRITE_APDU (200) // Write file to card. Only supports plain communications mode. Authentication must be done // first unless file has free write access. -static int ntag424_write_file(uint8_t fileno, uint16_t offset, uint16_t num_bytes, uint8_t *in) { - const size_t RESPONSE_LENGTH = 2; +static int ntag424_write_data(uint8_t fileno, uint16_t offset, uint16_t num_bytes, uint8_t *in) { size_t remainder = 0; + // Split writes that are too large for one APDU if (num_bytes > MAX_WRITE_APDU) { remainder = num_bytes - MAX_WRITE_APDU; num_bytes = MAX_WRITE_APDU; } - // 248 + - uint8_t cmd_header[] = { 0x90, 0x8d, 0x00, 0x00, 0x07 + num_bytes, fileno, - (uint8_t)offset, (uint8_t)(offset << 8), (uint8_t)(offset << 16), // offset - (uint8_t)num_bytes, (uint8_t)(num_bytes >> 8), (uint8_t)(num_bytes >> 16) //size - }; + uint8_t cmd_header[] = { + fileno, + (uint8_t)offset, (uint8_t)(offset << 8), (uint8_t)(offset << 16), // offset + (uint8_t)num_bytes, (uint8_t)(num_bytes >> 8), (uint8_t)(num_bytes >> 16) //size + }; - uint8_t cmd[512] = {0}; + uint8_t cmd[256] = {0}; memcpy(cmd, cmd_header, sizeof(cmd_header)); memcpy(&cmd[sizeof(cmd_header)], in, num_bytes); - size_t total_size = sizeof(cmd_header) + num_bytes + 1; //(Le) + APDU_t apdu = { + .cla = 0x90, + .ins = NTAG424_CMD_WRITE_DATA, + .lc = sizeof(cmd_header) + num_bytes, + .data = cmd, + }; - uint8_t resp[RESPONSE_LENGTH]; - int outlen = 0; - int res; + int response_length = 2; + uint8_t response[response_length]; - res = ExchangeAPDU14a(cmd, total_size, false, true, resp, RESPONSE_LENGTH, &outlen); + int res = ntag424_exchange_apdu(&apdu, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00); if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Failed to send apdu"); return res; } - if (outlen != RESPONSE_LENGTH) { - PrintAndLogEx(ERR, "Incorrect response length: %d, %s", outlen, sprint_hex(resp, 2)); - return PM3_ESOFT; - } - - if (resp[outlen - 2] != 0x91 || resp[outlen - 1] != 0x00) { - PrintAndLogEx(ERR, "Failed to write file"); - return PM3_ESOFT; - } - if (remainder > 0) { - return ntag424_write_file(fileno, offset + num_bytes, remainder, &in[num_bytes]); + return ntag424_write_data(fileno, offset + num_bytes, remainder, &in[num_bytes]); } return PM3_SUCCESS; @@ -626,35 +672,29 @@ static int ntag424_write_file(uint8_t fileno, uint16_t offset, uint16_t num_byte // Read file from card. Only supports plain communications mode. Authentication must be done // first unless file has free read access. -static int ntag424_read_file(uint8_t fileno, uint16_t offset, uint16_t num_bytes, uint8_t *out) { - const size_t RESPONSE_LENGTH = num_bytes + 2; +static int ntag424_read_data(uint8_t fileno, uint16_t offset, uint16_t num_bytes, uint8_t *out) { + uint8_t cmd[] = { + fileno, + (uint8_t)offset, (uint8_t)(offset << 8), (uint8_t)(offset << 16), // offset + (uint8_t)num_bytes, (uint8_t)(num_bytes >> 8), 0x00 + }; - uint8_t cmd[] = { 0x90, 0xad, 0x00, 0x00, 0x07, fileno, - (uint8_t)offset, (uint8_t)(offset << 8), (uint8_t)(offset << 16), // offset - (uint8_t)num_bytes, (uint8_t)(num_bytes >> 8), 0x00, //size - 0x00 - }; - uint8_t resp[RESPONSE_LENGTH]; - int outlen = 0; - int res; + APDU_t apdu = { + .cla = 0x90, + .ins = NTAG424_CMD_READ_DATA, + .lc = sizeof(cmd), + .data = cmd, + }; - res = ExchangeAPDU14a(cmd, sizeof(cmd), false, true, resp, RESPONSE_LENGTH, &outlen); + int response_length = num_bytes + 2; + uint8_t response[response_length]; + + int res = ntag424_exchange_apdu(&apdu, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00); if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Failed to send apdu"); return res; } - if (outlen != RESPONSE_LENGTH) { - PrintAndLogEx(ERR, "Incorrect response length: %d, %s", outlen, sprint_hex(resp, 2)); - return PM3_ESOFT; - } - - if (resp[outlen - 2] != 0x91 || resp[outlen - 1] != 0x00) { - PrintAndLogEx(ERR, "Failed to read file"); - return PM3_ESOFT; - } - - memcpy(out, resp, num_bytes); + memcpy(out, response, num_bytes); return PM3_SUCCESS; } @@ -671,57 +711,34 @@ static int ntag424_change_key(uint8_t keyno, uint8_t *new_key, uint8_t *old_key, memcpy(key, new_key, 16); } - // ------- Calculate KeyData - uint8_t keydata[32] = {0}; - memcpy(keydata, key, 16); - keydata[16] = version; + // ------- Assemble KeyData command + uint8_t key_cmd_data[32] = {0}; + key_cmd_data[0] = keyno; + memcpy(&key_cmd_data[1], key, 16); + key_cmd_data[17] = version; int key_data_len; if (keyno != 0) { - memcpy(&keydata[17], crc, 4); - keydata[21] = 0x80; - key_data_len = 16 + 4 + 1; + memcpy(&key_cmd_data[18], crc, sizeof(crc)); + key_data_len = sizeof(keyno) + sizeof(key) + sizeof(version) + sizeof(crc); } else { - keydata[17] = 0x80; - key_data_len = 16 + 1; + key_data_len = sizeof(keyno) + sizeof(key) + sizeof(version); } - // ------- Assemble APDU - uint8_t cmd_header[] = { - 0x90, 0xC4, 0x00, 0x00, key_data_len + 1, keyno + APDU_t apdu = { + .cla = 0x90, + .ins = NTAG424_CMD_CHANGE_KEY, + .lc = key_data_len, + .data = key_cmd_data }; - uint8_t cmd[512] = {0}; - memcpy(cmd, cmd_header, sizeof(cmd_header)); - memcpy(&cmd[sizeof(cmd_header)], keydata, key_data_len); + int response_length = 8 + 2; + uint8_t response[response_length]; - uint8_t apdu_out[256]; - int apdu_out_size = 256; - ntag424_comm_full_encrypt_apdu(cmd, apdu_out, &apdu_out_size, session_keys); - - - // ------- Actually send the APDU - const size_t RESPONSE_LENGTH = 8 + 2; - int outlen; - uint8_t resp[RESPONSE_LENGTH]; - int res = ExchangeAPDU14a(apdu_out, apdu_out_size, false, true, resp, RESPONSE_LENGTH, &outlen); - if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Failed to send apdu"); - return res; - } - - if (outlen < 2) { - PrintAndLogEx(ERR, "Incorrect response length: %d", outlen); - return PM3_ESOFT; - } - - if (resp[outlen - 2] != 0x91 || resp[outlen - 1] != 0x00) { - PrintAndLogEx(ERR, "Error when changing key. Wrong old key?"); - return PM3_ESOFT; - } + int res = ntag424_exchange_apdu(&apdu, response, &response_length, COMM_FULL, session_keys, 0x91, 0x00); session_keys->command_counter++; // Should this be incremented only on success? - return PM3_SUCCESS; + return res; } @@ -871,7 +888,7 @@ static int CmdHF_ntag424_read(const char *Cmd) { uint8_t data[512]; - res = ntag424_read_file(fileno, offset, read_length, data); + res = ntag424_read_data(fileno, offset, read_length, data); if (res != PM3_SUCCESS) { DropField(); return res; @@ -947,7 +964,7 @@ static int CmdHF_ntag424_write(const char *Cmd) { } } - res = ntag424_write_file(fileno, offset, datalen, data); + res = ntag424_write_data(fileno, offset, datalen, data); if (res != PM3_SUCCESS) { DropField(); return res; @@ -990,7 +1007,7 @@ static int CmdHF_ntag424_getfilesettings(const char *Cmd) { } ntag424_file_settings_t settings; - res = ntag424_read_file_settings(fileno, &settings); + res = ntag424_get_file_settings(fileno, &settings); DropField(); if (res != PM3_SUCCESS) { return res; @@ -1151,7 +1168,7 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { } ntag424_file_settings_t settings; - res = ntag424_read_file_settings(fileno, &settings); + res = ntag424_get_file_settings(fileno, &settings); if (res != PM3_SUCCESS) { DropField(); return res; diff --git a/doc/commands.json b/doc/commands.json index d20870949..9499df7e1 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -6806,7 +6806,7 @@ }, "hf ntag424 changefilesettings": { "command": "hf ntag424 changefilesettings", - "description": "Updates file settings for file, must be authenticated. This is a short explanation of the settings. See AN12196 for more information: options: byte with bit flags Bit: Setting: 6 Enable SDM and mirroring access: two byte access rights. Each nibble is a key number, or E for free access. Order is key for readwrite, change, read and write sdmoptions: byte with bit flags Bit: Setting: 0 ASCII encoding 4 SDMEncFileData 5 SDMReadCtrLimit 6 SDMReadCtr 7 SDMOptionsUID sdmaccess: two byte access rights. Each nibble is a key, or E for plain mirror and F for no mirroring Order is SDMMetaRead, SDMFileRead, Reserved and SDMCtrRet sdm_data: Three bytes of data used to control SDM settings. Can be specified multiple times. Data means different things depending on settings. Note: Not all of these settings will be written. It depends on the option byte, and the keys set. See AN12196 for more information. You must also start with sdmdata1, then sdmdata2, up to the number of sdm_data you want to write", + "description": "Updates file settings for file, must be authenticated. This is a short explanation of the settings. See AN12196 for more information: options: byte with bit flags Bit: Setting: 6 Enable SDM and mirroring access: two byte access rights. Each nibble is a key number, or E for free access. Order is key for readwrite, change, read and write sdmoptions: byte with bit flags Bit: Setting: 0 ASCII encoding 4 SDMEncFileData 5 SDMReadCtrLimit 6 SDMReadCtr 7 SDMOptionsUID sdmaccess: two byte access rights. Each nibble is a key, or E for plain mirror and F for no mirroring Order is Reserved, SDMCtrRet, SDMMetaRead and SDMFileRead sdm_data: Three bytes of data used to control SDM settings. Can be specified multiple times. Data means different things depending on settings. Note: Not all of these settings will be written. It depends on the option byte, and the keys set. See AN12196 for more information. You must also start with sdmdata1, then sdmdata2, up to the number of sdm_data you want to write", "notes": [ "hf ntag424 changefilesettings -f 2 -n 0 -k 00000000000000000000000000000000 -o 40 -a 00E0 -s C1 -c F000 --sdmdata1 000020 --sdmdata2 000043 --sdmdata3 000043" ], @@ -12012,6 +12012,6 @@ "metadata": { "commands_extracted": 696, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-10-27T16:08:32" + "extracted_on": "2023-10-29T12:42:07" } } \ No newline at end of file From 912c1262664978a406bc54c92bb340e83767de38 Mon Sep 17 00:00:00 2001 From: Daniel Karling <danne@dekay.se> Date: Sun, 29 Oct 2023 16:44:53 +0100 Subject: [PATCH 0637/1034] Added encrypted comms to ReadData and WriteData commands This allows reading and writing to the "proprietary" file (number 3), or file 2 if it's set to "full" communications mode. --- client/src/cmdhfntag424.c | 229 +++++++++++++++++++++++--------------- doc/commands.json | 12 +- 2 files changed, 145 insertions(+), 96 deletions(-) diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index f01df9605..cc308cc2a 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -45,45 +45,6 @@ #define NTAG424_CMD_AUTHENTICATE_EV2_FIRST_PART_1 0x71 #define NTAG424_CMD_AUTHENTICATE_EV2_FIRST_PART_2 0xAF -static int CmdHelp(const char *Cmd); - -static int CmdHF_ntag424_view(const char *Cmd) { - - CLIParserContext *ctx; - CLIParserInit(&ctx, "hf ntag424 view", - "Print a NTAG 424 DNA dump file (bin/eml/json)", - "hf ntag424 view -f hf-ntag424-01020304-dump.bin" - ); - void *argtable[] = { - arg_param_begin, - arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), - arg_lit0("v", "verbose", "Verbose output"), - arg_param_end - }; - CLIExecWithReturn(ctx, Cmd, argtable, false); - int fnlen = 0; - char filename[FILE_PATH_SIZE]; - CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); - bool verbose = arg_get_lit(ctx, 2); - CLIParserFree(ctx); - - // read dump file - uint8_t *dump = NULL; - size_t bytes_read = NTAG424_MAX_BYTES; - int res = pm3_load_dump(filename, (void **)&dump, &bytes_read, NTAG424_MAX_BYTES); - if (res != PM3_SUCCESS) { - return res; - } - - if (verbose) { - PrintAndLogEx(INFO, "File: " _YELLOW_("%s"), filename); - PrintAndLogEx(INFO, "File size %zu bytes", bytes_read); - } - - free(dump); - return PM3_SUCCESS; -} - // // Original from https://github.com/rfidhacking/node-sdm/ // @@ -115,6 +76,13 @@ typedef enum { COMM_FULL } ntag424_communication_mode_t; +const CLIParserOption ntag424_communication_mode_options[] = { + {COMM_PLAIN, "plain"}, + {COMM_MAC, "mac"}, + {COMM_FULL, "encrypt"}, + {0, NULL}, +}; + // -------------- File settings structs ------------------------- // Enabling this bit in the settings will also reset the read counter to 0 #define FILE_SETTINGS_OPTIONS_SDM_AND_MIRRORING (1 << 6) @@ -231,7 +199,7 @@ static int ntag424_calc_file_write_settings_size(const ntag424_file_settings_t * return ntag424_calc_file_settings_size(settings) - 4; } -static void ntag424_calc_iv(ntag424_session_keys_t *session_keys, uint8_t *out_ivc) { +static void ntag424_calc_send_iv(ntag424_session_keys_t *session_keys, uint8_t *out_ivc) { uint8_t iv_clear[] = { 0xa5, 0x5a, session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], (uint8_t)(session_keys->command_counter), (uint8_t)(session_keys->command_counter >> 8), @@ -242,11 +210,21 @@ static void ntag424_calc_iv(ntag424_session_keys_t *session_keys, uint8_t *out_i aes_encode(zero_iv, session_keys->encryption, iv_clear, out_ivc, 16); } -static void ntag424_calc_mac(ntag424_session_keys_t *session_keys, uint8_t command, uint8_t command_header, uint8_t *data, uint8_t datalen, uint8_t *out_mac) { +static void ntag424_calc_recieve_iv(ntag424_session_keys_t *session_keys, uint8_t *out_ivc) { + uint8_t iv_clear[] = { 0x5a, 0xa5, + session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], + (uint8_t)(session_keys->command_counter), (uint8_t)(session_keys->command_counter >> 8), + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + uint8_t zero_iv[16] = {0}; + aes_encode(zero_iv, session_keys->encryption, iv_clear, out_ivc, 16); +} + +static void ntag424_calc_mac(ntag424_session_keys_t *session_keys, uint8_t command, uint8_t *data, uint8_t datalen, uint8_t *out_mac) { uint8_t mac_input_header[] = { command, (uint8_t)session_keys->command_counter, (uint8_t)(session_keys->command_counter >> 8), - session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], - command_header, + session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3] }; int mac_input_len = sizeof(mac_input_header) + datalen; @@ -264,7 +242,7 @@ static void ntag424_calc_mac(ntag424_session_keys_t *session_keys, uint8_t comma free(mac_input); } -static int ntag424_comm_mac_apdu(APDU_t *apdu, int apdu_max_data_size, ntag424_session_keys_t *session_keys) { +static int ntag424_comm_mac_apdu(APDU_t *apdu, int command_header_length, int apdu_max_data_size, ntag424_session_keys_t *session_keys) { int size = apdu->lc; @@ -272,41 +250,45 @@ static int ntag424_comm_mac_apdu(APDU_t *apdu, int apdu_max_data_size, ntag424_s return PM3_EOVFLOW; } - ntag424_calc_mac(session_keys, apdu->ins, apdu->data[0], &apdu->data[1], size - 1, &apdu->data[size]); - + ntag424_calc_mac(session_keys, apdu->ins, apdu->data, size, &apdu->data[size]); + session_keys->command_counter++; // CmdCtr should be incremented each time a MAC is calculated apdu->lc = size + 8; return PM3_SUCCESS; } -static int ntag424_comm_encrypt_apdu(APDU_t *apdu, int apdu_max_data_size, ntag424_session_keys_t *session_keys) { +static int ntag424_comm_encrypt_apdu(APDU_t *apdu, int command_header_length, int apdu_max_data_size, ntag424_session_keys_t *session_keys) { // ------- Calculate IV uint8_t ivc[16]; - ntag424_calc_iv(session_keys, ivc); + ntag424_calc_send_iv(session_keys, ivc); int size = apdu->lc; - size_t encrypt_data_size = size - 1; + size_t encrypt_data_size = size - command_header_length; size_t padded_data_size = encrypt_data_size + 16 - (encrypt_data_size % 16); // pad up to 16 byte blocks uint8_t temp_buffer[256] = {0}; - if (padded_data_size + 1 > apdu_max_data_size) { + if (!encrypt_data_size) { + return PM3_SUCCESS; + } + + if (padded_data_size + command_header_length > apdu_max_data_size) { return PM3_EOVFLOW; } // ------ Pad data - memcpy(temp_buffer, &apdu->data[1], encrypt_data_size); // We encrypt everything except the CmdHdr (first byte in data) + memcpy(temp_buffer, &apdu->data[command_header_length], encrypt_data_size); // We encrypt everything except the CmdHdr (first byte in data) temp_buffer[encrypt_data_size] = 0x80; // ------ Encrypt it - aes_encode(ivc, session_keys->encryption, temp_buffer, &apdu->data[1], padded_data_size); + aes_encode(ivc, session_keys->encryption, temp_buffer, &apdu->data[command_header_length], padded_data_size); - apdu->lc = (uint8_t)(1 + padded_data_size); // Set size to CmdHdr + padded data + apdu->lc = (uint8_t)(command_header_length + padded_data_size); // Set size to CmdHdr + padded data return PM3_SUCCESS; } -static int ntag424_exchange_apdu(APDU_t *apdu, uint8_t *response, int *response_length, ntag424_communication_mode_t comm_mode, ntag424_session_keys_t *session_keys, uint8_t sw1_expected, uint8_t sw2_expected) { +static int ntag424_exchange_apdu(APDU_t *apdu, int command_header_length, uint8_t *response, int *response_length, ntag424_communication_mode_t comm_mode, ntag424_session_keys_t *session_keys, uint8_t sw1_expected, uint8_t sw2_expected) { int res; @@ -324,14 +306,14 @@ static int ntag424_exchange_apdu(APDU_t *apdu, uint8_t *response, int *response_ } if (comm_mode == COMM_FULL) { - res = ntag424_comm_encrypt_apdu(apdu, buffer_length, session_keys); + res = ntag424_comm_encrypt_apdu(apdu, command_header_length, buffer_length, session_keys); if (res != PM3_SUCCESS) { return res; } } if (comm_mode == COMM_MAC || comm_mode == COMM_FULL) { - res = ntag424_comm_mac_apdu(apdu, buffer_length, session_keys); + res = ntag424_comm_mac_apdu(apdu, command_header_length, buffer_length, session_keys); if (res != PM3_SUCCESS) { return res; } @@ -346,7 +328,7 @@ static int ntag424_exchange_apdu(APDU_t *apdu, uint8_t *response, int *response_ res = ExchangeAPDU14a(cmd, apdu_length + 1, false, true, response, *response_length, response_length); if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Failed to exchange APDU"); + PrintAndLogEx(ERR, "Failed to exchange APDU: %d", res); return res; } @@ -363,8 +345,18 @@ static int ntag424_exchange_apdu(APDU_t *apdu, uint8_t *response, int *response_ return PM3_ESOFT; } - // TODO: In case of COMM_FULL we would need to decrypt response here as well. - // And in case of COMM_MAC we would need to verify the MAC here, if we want to verify the card. + // Decrypt data if we are in full communications mode. If we want to verify MAC, this + // should also be done here + if (comm_mode == COMM_FULL) { + uint8_t iv[16] = {0}; + ntag424_calc_recieve_iv(session_keys, iv); + + uint8_t tmp[256]; + memcpy(tmp, response, *response_length); + aes_decode(iv, session_keys->encryption, response, tmp, *response_length - 10); + + memcpy(response, tmp, *response_length); + } return PM3_SUCCESS; } @@ -382,7 +374,7 @@ static int ntag424_get_file_settings(uint8_t fileno, ntag424_file_settings_t *se .extended_apdu = false }; - int res = ntag424_exchange_apdu(&apdu, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00); + int res = ntag424_exchange_apdu(&apdu, 1, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00); if (res != PM3_SUCCESS) { return res; } @@ -422,10 +414,7 @@ static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t * int response_length = 8 + 2; uint8_t response[response_length]; - int res = ntag424_exchange_apdu(&apdu, response, &response_length, COMM_FULL, session_keys, 0x91, 0x00); - - - session_keys->command_counter++; // Should this be incremented only on success? + int res = ntag424_exchange_apdu(&apdu, 1, response, &response_length, COMM_FULL, session_keys, 0x91, 0x00); return res; } @@ -492,7 +481,7 @@ static int ntag424_auth_first_step(uint8_t keyno, uint8_t *key, uint8_t *out) { int response_length = 16 + 2; uint8_t response[response_length]; - int res = ntag424_exchange_apdu(&apdu, response, &response_length, COMM_PLAIN, NULL, 0x91, 0xAF); + int res = ntag424_exchange_apdu(&apdu, 2, response, &response_length, COMM_PLAIN, NULL, 0x91, 0xAF); if (res != PM3_SUCCESS) { return res; } @@ -518,7 +507,7 @@ static int ntag424_auth_second_step(uint8_t *challenge, uint8_t *response_out) { int response_length = 256; uint8_t response[response_length]; - int res = ntag424_exchange_apdu(&apdu, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00); + int res = ntag424_exchange_apdu(&apdu, 0x20, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00); if (res != PM3_SUCCESS) { return res; } @@ -628,7 +617,7 @@ static int ntag424_authenticate_ev2_first(uint8_t keyno, uint8_t *key, ntag424_s // Write file to card. Only supports plain communications mode. Authentication must be done // first unless file has free write access. -static int ntag424_write_data(uint8_t fileno, uint16_t offset, uint16_t num_bytes, uint8_t *in) { +static int ntag424_write_data(uint8_t fileno, uint16_t offset, uint16_t num_bytes, uint8_t *in, ntag424_communication_mode_t comm_mode, ntag424_session_keys_t *session_keys) { size_t remainder = 0; // Split writes that are too large for one APDU @@ -655,16 +644,16 @@ static int ntag424_write_data(uint8_t fileno, uint16_t offset, uint16_t num_byte .data = cmd, }; - int response_length = 2; + int response_length = 8 + 2; // potential MAC and result uint8_t response[response_length]; - int res = ntag424_exchange_apdu(&apdu, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00); + int res = ntag424_exchange_apdu(&apdu, sizeof(cmd_header), response, &response_length, comm_mode, session_keys, 0x91, 0x00); if (res != PM3_SUCCESS) { return res; } if (remainder > 0) { - return ntag424_write_data(fileno, offset + num_bytes, remainder, &in[num_bytes]); + return ntag424_write_data(fileno, offset + num_bytes, remainder, &in[num_bytes], comm_mode, session_keys); } return PM3_SUCCESS; @@ -672,8 +661,8 @@ static int ntag424_write_data(uint8_t fileno, uint16_t offset, uint16_t num_byte // Read file from card. Only supports plain communications mode. Authentication must be done // first unless file has free read access. -static int ntag424_read_data(uint8_t fileno, uint16_t offset, uint16_t num_bytes, uint8_t *out) { - uint8_t cmd[] = { +static int ntag424_read_data(uint8_t fileno, uint16_t offset, uint16_t num_bytes, uint8_t *out, ntag424_communication_mode_t comm_mode, ntag424_session_keys_t *session_keys) { + uint8_t cmd_header[] = { fileno, (uint8_t)offset, (uint8_t)(offset << 8), (uint8_t)(offset << 16), // offset (uint8_t)num_bytes, (uint8_t)(num_bytes >> 8), 0x00 @@ -682,14 +671,14 @@ static int ntag424_read_data(uint8_t fileno, uint16_t offset, uint16_t num_bytes APDU_t apdu = { .cla = 0x90, .ins = NTAG424_CMD_READ_DATA, - .lc = sizeof(cmd), - .data = cmd, + .lc = sizeof(cmd_header), + .data = cmd_header, }; - int response_length = num_bytes + 2; + int response_length = num_bytes + 4 + 2 + 20; // number of bytes to read + mac + result + potential padding uint8_t response[response_length]; - int res = ntag424_exchange_apdu(&apdu, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00); + int res = ntag424_exchange_apdu(&apdu, sizeof(cmd_header), response, &response_length, comm_mode, session_keys, 0x91, 0x00); if (res != PM3_SUCCESS) { return res; } @@ -734,12 +723,47 @@ static int ntag424_change_key(uint8_t keyno, uint8_t *new_key, uint8_t *old_key, int response_length = 8 + 2; uint8_t response[response_length]; - int res = ntag424_exchange_apdu(&apdu, response, &response_length, COMM_FULL, session_keys, 0x91, 0x00); - - session_keys->command_counter++; // Should this be incremented only on success? - + int res = ntag424_exchange_apdu(&apdu, 1, response, &response_length, COMM_FULL, session_keys, 0x91, 0x00); return res; +} +static int CmdHelp(const char *Cmd); + +static int CmdHF_ntag424_view(const char *Cmd) { + + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf ntag424 view", + "Print a NTAG 424 DNA dump file (bin/eml/json)", + "hf ntag424 view -f hf-ntag424-01020304-dump.bin" + ); + void *argtable[] = { + arg_param_begin, + arg_str1("f", "file", "<fn>", "Specify a filename for dump file"), + arg_lit0("v", "verbose", "Verbose output"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + int fnlen = 0; + char filename[FILE_PATH_SIZE]; + CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); + bool verbose = arg_get_lit(ctx, 2); + CLIParserFree(ctx); + + // read dump file + uint8_t *dump = NULL; + size_t bytes_read = NTAG424_MAX_BYTES; + int res = pm3_load_dump(filename, (void **)&dump, &bytes_read, NTAG424_MAX_BYTES); + if (res != PM3_SUCCESS) { + return res; + } + + if (verbose) { + PrintAndLogEx(INFO, "File: " _YELLOW_("%s"), filename); + PrintAndLogEx(INFO, "File size %zu bytes", bytes_read); + } + + free(dump); + return PM3_SUCCESS; } static int CmdHF_ntag424_info(const char *Cmd) { @@ -769,7 +793,6 @@ static int ntag424_cli_get_auth_information(CLIParserContext *ctx, int key_no_in CLIGetHexWithReturn(ctx, key_index, key, &keylen); if (keylen != 16) { - PrintAndLogEx(ERR, "Key must be 16 bytes"); return PM3_ESOFT; } @@ -840,6 +863,7 @@ static int CmdHF_ntag424_read(const char *Cmd) { arg_str0("k", "key", "<hex>", "Key for authentication (HEX 16 bytes)"), arg_int0("o", "offset", "<dec>", "Offset to read in file (default 0)"), arg_int1("l", "length", "<dec>", "Number of bytes to read"), + arg_str0("m", "cmode", "<plain|mac|encrypt>", "Communicaton mode"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -851,10 +875,20 @@ static int CmdHF_ntag424_read(const char *Cmd) { int fileno = arg_get_int(ctx, 1); if (ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) != PM3_SUCCESS) { - PrintAndLogEx(INFO, "Reading unauthenticated"); auth = 0; - } else { - PrintAndLogEx(INFO, "Reading authenticated"); + } + + ntag424_communication_mode_t comm_mode; + int comm_out = 0; + if (CLIGetOptionList(arg_get_str(ctx, 6), ntag424_communication_mode_options, &comm_out)) { + CLIParserFree(ctx); + return PM3_EINVARG; + } + comm_mode = comm_out; + + if (comm_mode != COMM_PLAIN && auth == 0) { + PrintAndLogEx(ERR, "Only plain communication mode can be used without a key specified"); + return PM3_EINVARG; } int offset = arg_get_int_def(ctx, 4, 0); @@ -875,8 +909,9 @@ static int CmdHF_ntag424_read(const char *Cmd) { return res; } + ntag424_session_keys_t session_keys; if (auth) { - res = ntag424_authenticate_ev2_first(keyno, key, NULL); + res = ntag424_authenticate_ev2_first(keyno, key, &session_keys); if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to authenticate with key %d", keyno); DropField(); @@ -888,7 +923,7 @@ static int CmdHF_ntag424_read(const char *Cmd) { uint8_t data[512]; - res = ntag424_read_data(fileno, offset, read_length, data); + res = ntag424_read_data(fileno, offset, read_length, data, comm_mode, &session_keys); if (res != PM3_SUCCESS) { DropField(); return res; @@ -915,6 +950,7 @@ static int CmdHF_ntag424_write(const char *Cmd) { arg_str0("k", "key", "<hex>", "Key for authentication (HEX 16 bytes)"), arg_int0("o", "offset", "<dec>", "Offset to write in file (default 0)"), arg_str1("d", "data", "<hex>", "Data to write"), + arg_str0("m", "cmode", "<plain|mac|encrypt>", "Communicaton mode"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -926,10 +962,20 @@ static int CmdHF_ntag424_write(const char *Cmd) { int fileno = arg_get_int(ctx, 1); if (ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) != PM3_SUCCESS) { - PrintAndLogEx(INFO, "Will write unauthenticated"); auth = 0; - } else { - PrintAndLogEx(INFO, "Will write authenticated"); + } + + ntag424_communication_mode_t comm_mode; + int comm_out = 0; + if (CLIGetOptionList(arg_get_str(ctx, 6), ntag424_communication_mode_options, &comm_out)) { + CLIParserFree(ctx); + return PM3_EINVARG; + } + comm_mode = comm_out; + + if (comm_mode != COMM_PLAIN && auth == 0) { + PrintAndLogEx(ERR, "Only plain communication mode can be used without a key specified"); + return PM3_EINVARG; } int offset = arg_get_int_def(ctx, 4, 0); @@ -953,8 +999,9 @@ static int CmdHF_ntag424_write(const char *Cmd) { return res; } + ntag424_session_keys_t session_keys; if (auth) { - res = ntag424_authenticate_ev2_first(keyno, key, NULL); + res = ntag424_authenticate_ev2_first(keyno, key, &session_keys); if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to authenticate with key %d", keyno); DropField(); @@ -964,7 +1011,7 @@ static int CmdHF_ntag424_write(const char *Cmd) { } } - res = ntag424_write_data(fileno, offset, datalen, data); + res = ntag424_write_data(fileno, offset, datalen, data, comm_mode, &session_keys); if (res != PM3_SUCCESS) { DropField(); return res; diff --git a/doc/commands.json b/doc/commands.json index 9499df7e1..12bc7a5e1 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -6887,9 +6887,10 @@ "-n, --keyno <dec> Key number", "-k, --key <hex> Key for authentication (HEX 16 bytes)", "-o, --offset <dec> Offset to read in file (default 0)", - "-l, --length <dec> Number of bytes to read" + "-l, --length <dec> Number of bytes to read", + "-m, --cmode <plain|mac|encrypt> Communicaton mode" ], - "usage": "hf ntag424 read [-h] -f <dec> [-n <dec>] [-k <hex>] [-o <dec>] -l <dec>" + "usage": "hf ntag424 read [-h] -f <dec> [-n <dec>] [-k <hex>] [-o <dec>] -l <dec> [-m <plain|mac|encrypt>]" }, "hf ntag424 view": { "command": "hf ntag424 view", @@ -6918,9 +6919,10 @@ "-n, --keyno <dec> Key number", "-k, --key <hex> Key for authentication (HEX 16 bytes)", "-o, --offset <dec> Offset to write in file (default 0)", - "-d, --data <hex> Data to write" + "-d, --data <hex> Data to write", + "-m, --cmode <plain|mac|encrypt> Communicaton mode" ], - "usage": "hf ntag424 write [-h] -f <dec> [-n <dec>] [-k <hex>] [-o <dec>] -d <hex>" + "usage": "hf ntag424 write [-h] -f <dec> [-n <dec>] [-k <hex>] [-o <dec>] -d <hex> [-m <plain|mac|encrypt>]" }, "hf plot": { "command": "hf plot", @@ -12012,6 +12014,6 @@ "metadata": { "commands_extracted": 696, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-10-29T12:42:07" + "extracted_on": "2023-10-29T15:43:05" } } \ No newline at end of file From efb645636bc317c4e0f92fd5517f8cc157284644 Mon Sep 17 00:00:00 2001 From: Daniel Karling <danne@dekay.se> Date: Sun, 29 Oct 2023 16:56:04 +0100 Subject: [PATCH 0638/1034] Updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b794f4db..1a8720a22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added support for NTAG424 cards. (@dankar) - Added `bind` option for network connections to specify the outbound address and port (@wh201906) - Changed `lf em 4x05 dump` - now supports the `--ns` nosave parameter (@iceman1001) - Fixed some wrong synchronization waits in usb_write() to increase the communication speed (@wh201906) From d4f8c42d3c9969bb7eb0569dde724630f7d6c85f Mon Sep 17 00:00:00 2001 From: Daniel Karling <danne@dekay.se> Date: Sun, 29 Oct 2023 17:13:27 +0100 Subject: [PATCH 0639/1034] Added additional command examples --- client/src/cmdhfntag424.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index cc308cc2a..cbf34de6e 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -854,11 +854,13 @@ static int CmdHF_ntag424_read(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf ntag424 read", "Read and print data from file on NTAG424 tag. Will authenticate if key information is provided.", - "hf ntag424 read -f 2 -n 0 -k 00000000000000000000000000000000 -o 0 -l 256"); + "hf ntag424 read -f 1 -n 0 -k 00000000000000000000000000000000 -o 0 -l 32\n" + "hf ntag424 read -f 2 -n 0 -k 00000000000000000000000000000000 -o 0 -l 256\n" + "hf ntag424 read -f 3 -n 3 -k 00000000000000000000000000000000 -o 0 -l 128 -m encrypt"); void *argtable[] = { arg_param_begin, - arg_int1("f", "fileno", "<dec>", "File number (1-3), (default 2)"), + arg_int1("f", "fileno", "<dec>", "File number (1-3)"), arg_int0("n", "keyno", "<dec>", "Key number"), arg_str0("k", "key", "<hex>", "Key for authentication (HEX 16 bytes)"), arg_int0("o", "offset", "<dec>", "Offset to read in file (default 0)"), @@ -941,7 +943,8 @@ static int CmdHF_ntag424_write(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf ntag424 write", "Write data to file on NTAG424 tag. Will authenticate if key information is provided.", - "hf ntag424 write -f 2 -n 0 -k 00000000000000000000000000000000 -o 0 -d 1122334455667788"); + "hf ntag424 write -f 2 -n 0 -k 00000000000000000000000000000000 -o 0 -d 1122334455667788\n" + "hf ntag424 write -f 3 -n 3 -k 00000000000000000000000000000000 -o 0 -d 1122334455667788 -m encrypt"); void *argtable[] = { arg_param_begin, From 9fb17c78c37a2e2946621236b1c502d8e5123f5c Mon Sep 17 00:00:00 2001 From: Antiklesys <syselkitna@gmail.com> Date: Mon, 30 Oct 2023 11:32:36 +0800 Subject: [PATCH 0640/1034] Update cmdhficlass.c Fixed ranges for configcards generation --- client/src/cmdhficlass.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 98065f2d0..559c4da37 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -4375,11 +4375,11 @@ static int CmdHFiClassAutopwn(const char *Cmd) { static int CmdHFiClassConfigCard(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf iclass configcard", - "Manage reader configuration card via Cardhelper,\n" + "Manage reader configuration card via Cardhelper or internal database,\n" "The generated config card will be uploaded to device emulator memory.\n" "You can start simulating `hf iclass sim -t 3` or use the emul commands", - "hf iclass configcard -l --> download config card settings\n" - "hf iclass configcard -p --> print all config cards\n" + "hf iclass configcard -l --> download config card settings (requires card helper)\n" + "hf iclass configcard -p --> print all config cards in the database (doesn't require cardhelper)\n" "hf iclass configcard --ci 1 --> view config card setting in slot 1\n" "hf iclass configcard -g --ci 0 --> generate config file from slot 0" ); @@ -4425,12 +4425,14 @@ static int CmdHFiClassConfigCard(const char *Cmd) { print_config_cards(); } - if (ccidx > -1 && ccidx < 14) { + if (ccidx > -1 && ccidx < 13) { const iclass_config_card_item_t *item = get_config_card_item(ccidx); print_config_card(item); + } else { + PrintAndLogEx(ERR, "Please specify a valid configuration number!"); } - if (do_generate) { + if (do_generate && (ccidx > -1 && ccidx < 13)) { const iclass_config_card_item_t *item = get_config_card_item(ccidx); if (strstr(item->desc, "Keyroll") != NULL) { if (got_kr == false) { From 7cbadad163c94624b9cc222ab207eb458b461a2d Mon Sep 17 00:00:00 2001 From: Antiklesys <syselkitna@gmail.com> Date: Mon, 30 Oct 2023 18:34:11 +0800 Subject: [PATCH 0641/1034] Update cmdhficlass.c Updated to use arraylen as suggested by iceman, but to do so without facing other issues /buggy behaviors I had to perform additional code changes. --- client/src/cmdhficlass.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 559c4da37..17c8f68aa 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -196,7 +196,7 @@ static uint8_t card_app2_limit[] = { 0xff, }; -static iclass_config_card_item_t iclass_config_types[14] = { +static iclass_config_card_item_t iclass_config_types[13] = { {"Audio/Visual #1 - Beep ON, LED Off, Flash GREEN on read", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x18, 0xAC, 0x00, 0xA8, 0x8F, 0xA7, 0x80, 0xA9, 0x01}}, {"Audio/Visual #2 - Beep ON, LED RED, Host must flash GREEN", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x18, 0xAC, 0x00, 0xA8, 0x1F, 0xA7, 0x80, 0xA9, 0x01}}, {"Audio/Visual #3 - Beep ON, LED Off, Host must flash RED and/or GREEN", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x18, 0xAC, 0x00, 0xA8, 0x0F, 0xA9, 0x03, 0xA7, 0x80}}, @@ -209,9 +209,7 @@ static iclass_config_card_item_t iclass_config_types[14] = { {"Keyroll DISABLE - Set ELITE Key and DISABLE Keyrolling", {0x0C, 0x00, 0x00, 0x01, 0x00, 0x00, 0xBF, 0x18, 0xBF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}}, {"Keyroll ENABLE - Set ELITE Key and ENABLE Keyrolling", {0x0C, 0x00, 0x00, 0x01, 0x00, 0x00, 0xBF, 0x18, 0xBF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}}, {"Reset READER - Reset READER to defaults", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, - {"Reset ENROLLER - Reset ENROLLER to defaults", {0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF}}, - // must be the last entry - {"no config card info available", ""} + {"Reset ENROLLER - Reset ENROLLER to defaults", {0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF}} }; static bool check_config_card(const iclass_config_card_item_t *o) { @@ -260,7 +258,7 @@ static const iclass_config_card_item_t *get_config_card_item(int idx) { static void print_config_cards(void) { if (check_config_card(&iclass_config_types[0])) { PrintAndLogEx(INFO, "---- " _CYAN_("Config cards available") " ------------"); - for (int i = 0; i < ARRAYLEN(iclass_config_types) - 1 ; ++i) { + for (int i = 0; i < ARRAYLEN(iclass_config_types) ; ++i) { PrintAndLogEx(INFO, "%2d, %s", i, iclass_config_types[i].desc); } PrintAndLogEx(NORMAL, ""); @@ -4378,8 +4376,8 @@ static int CmdHFiClassConfigCard(const char *Cmd) { "Manage reader configuration card via Cardhelper or internal database,\n" "The generated config card will be uploaded to device emulator memory.\n" "You can start simulating `hf iclass sim -t 3` or use the emul commands", - "hf iclass configcard -l --> download config card settings (requires card helper)\n" - "hf iclass configcard -p --> print all config cards in the database (doesn't require cardhelper)\n" + "hf iclass configcard -l --> download config card settings from cardhelper\n" + "hf iclass configcard -p --> print all config cards in the database\n" "hf iclass configcard --ci 1 --> view config card setting in slot 1\n" "hf iclass configcard -g --ci 0 --> generate config file from slot 0" ); @@ -4425,14 +4423,14 @@ static int CmdHFiClassConfigCard(const char *Cmd) { print_config_cards(); } - if (ccidx > -1 && ccidx < 13) { + if (ccidx > -1 && ccidx < ARRAYLEN(iclass_config_types)) { const iclass_config_card_item_t *item = get_config_card_item(ccidx); print_config_card(item); } else { PrintAndLogEx(ERR, "Please specify a valid configuration number!"); } - if (do_generate && (ccidx > -1 && ccidx < 13)) { + if (do_generate && (ccidx > -1 && ccidx < ARRAYLEN(iclass_config_types))) { const iclass_config_card_item_t *item = get_config_card_item(ccidx); if (strstr(item->desc, "Keyroll") != NULL) { if (got_kr == false) { From b0ee6ae67be2a0ca5f01c34f1e8eba466fcebfc2 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 30 Oct 2023 12:55:23 +0100 Subject: [PATCH 0642/1034] fixes ntag424 --- client/src/cmdhfmf.c | 5 +- client/src/cmdhfntag424.c | 380 ++++++++++++++++++-------------------- client/src/cmdlfem410x.c | 5 +- client/src/cmdsmartcard.c | 5 +- client/src/util.c | 24 +-- client/src/util.h | 1 - 6 files changed, 194 insertions(+), 226 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 0459cd4f7..8a9f5926e 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3990,7 +3990,10 @@ static int CmdHF14AMfKeyBrute(const char *Cmd) { if (cmdp == 'b') keytype = MF_KEY_B; // key - if (param_gethex(Cmd, 2, key, 12)) return usage_hf14_keybrute(); + int keylen = 0; + if (param_gethex_ex(Cmd, 2, key, &keylen) && (keylen != 12)) { + return usage_hf14_keybrute(); + } uint64_t t1 = msclock(); diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index cbf34de6e..8c7bcb553 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -617,7 +617,7 @@ static int ntag424_authenticate_ev2_first(uint8_t keyno, uint8_t *key, ntag424_s // Write file to card. Only supports plain communications mode. Authentication must be done // first unless file has free write access. -static int ntag424_write_data(uint8_t fileno, uint16_t offset, uint16_t num_bytes, uint8_t *in, ntag424_communication_mode_t comm_mode, ntag424_session_keys_t *session_keys) { +static int ntag424_write_data(uint8_t fileno, uint32_t offset, uint32_t num_bytes, uint8_t *in, ntag424_communication_mode_t comm_mode, ntag424_session_keys_t *session_keys) { size_t remainder = 0; // Split writes that are too large for one APDU @@ -628,8 +628,12 @@ static int ntag424_write_data(uint8_t fileno, uint16_t offset, uint16_t num_byte uint8_t cmd_header[] = { fileno, - (uint8_t)offset, (uint8_t)(offset << 8), (uint8_t)(offset << 16), // offset - (uint8_t)num_bytes, (uint8_t)(num_bytes >> 8), (uint8_t)(num_bytes >> 16) //size + (uint8_t)offset, + (uint8_t)(offset << 8), + (uint8_t)(offset << 16), // offset + (uint8_t)num_bytes, + (uint8_t)(num_bytes >> 8), + (uint8_t)(num_bytes >> 16) // size }; uint8_t cmd[256] = {0}; @@ -744,24 +748,28 @@ static int CmdHF_ntag424_view(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, false); int fnlen = 0; - char filename[FILE_PATH_SIZE]; - CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); + char fn[FILE_PATH_SIZE]; + CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)fn, FILE_PATH_SIZE, &fnlen); bool verbose = arg_get_lit(ctx, 2); CLIParserFree(ctx); // read dump file uint8_t *dump = NULL; size_t bytes_read = NTAG424_MAX_BYTES; - int res = pm3_load_dump(filename, (void **)&dump, &bytes_read, NTAG424_MAX_BYTES); + int res = pm3_load_dump(fn, (void **)&dump, &bytes_read, NTAG424_MAX_BYTES); if (res != PM3_SUCCESS) { return res; } if (verbose) { - PrintAndLogEx(INFO, "File: " _YELLOW_("%s"), filename); + PrintAndLogEx(INFO, "File: " _YELLOW_("%s"), fn); PrintAndLogEx(INFO, "File size %zu bytes", bytes_read); } + // to be implemented... + PrintAndLogEx(INFO, "not implemented yet"); + PrintAndLogEx(INFO, "Feel free to contribute!"); + free(dump); return PM3_SUCCESS; } @@ -785,19 +793,23 @@ static int CmdHF_ntag424_info(const char *Cmd) { } static int ntag424_cli_get_auth_information(CLIParserContext *ctx, int key_no_index, int key_index, int *keyno, uint8_t *key_out) { - uint8_t key[16]; + int keylen = 16; if (keyno) { *keyno = arg_get_int(ctx, key_no_index); } + + uint8_t key[16] = {0}; CLIGetHexWithReturn(ctx, key_index, key, &keylen); + if (CLIParamHexToBuf(arg_get_str((ctx), key_index), key, sizeof(key), &keylen)) { + + } if (keylen != 16) { return PM3_ESOFT; } memcpy(key_out, key, 16); - return PM3_SUCCESS; } @@ -805,18 +817,18 @@ static int CmdHF_ntag424_auth(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf ntag424 auth", "Authenticate with selected key against NTAG424.", - "hf ntag424 auth -n 0 -k 00000000000000000000000000000000"); + "hf ntag424 auth --keyno 0 -k 00000000000000000000000000000000"); void *argtable[] = { arg_param_begin, - arg_int1("n", "keyno", "<dec>", "Key number"), + arg_int1(NULL, "keyno", "<dec>", "Key number"), arg_str1("k", "key", "<hex>", "Key for authenticate (HEX 16 bytes)"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); + int keyno; uint8_t key[16] = {0}; - if (ntag424_cli_get_auth_information(ctx, 1, 2, &keyno, key) != PM3_SUCCESS) { CLIParserFree(ctx); return PM3_ESOFT; @@ -824,29 +836,26 @@ static int CmdHF_ntag424_auth(const char *Cmd) { CLIParserFree(ctx); - int res = SelectCard14443A_4(false, true, NULL); - if (res != PM3_SUCCESS) { + if (SelectCard14443A_4(false, true, NULL) != PM3_SUCCESS) { PrintAndLogEx(ERR, "Failed to select card"); DropField(); - return res; + return PM3_ERFTRANS; } - res = ntag424_select_application(); - if (res != PM3_SUCCESS) { + if (ntag424_select_application() != PM3_SUCCESS) { DropField(); - return res; + return PM3_ESOFT; } - res = ntag424_authenticate_ev2_first(keyno, key, NULL); + int res = ntag424_authenticate_ev2_first(keyno, key, NULL); if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Failed to authenticate with key %d", keyno); + PrintAndLogEx(ERR, "Auth key %d ( " _RED_("fail") " )", keyno); } else { - PrintAndLogEx(SUCCESS, "Successfully authenticated with key %d", keyno); + PrintAndLogEx(SUCCESS, "Auth key %d ( " _GREEN_("ok") " )", keyno); } DropField(); - - return res; + return PM3_SUCCESS; } // Read can only read files with plain communication mode! @@ -854,31 +863,30 @@ static int CmdHF_ntag424_read(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf ntag424 read", "Read and print data from file on NTAG424 tag. Will authenticate if key information is provided.", - "hf ntag424 read -f 1 -n 0 -k 00000000000000000000000000000000 -o 0 -l 32\n" - "hf ntag424 read -f 2 -n 0 -k 00000000000000000000000000000000 -o 0 -l 256\n" - "hf ntag424 read -f 3 -n 3 -k 00000000000000000000000000000000 -o 0 -l 128 -m encrypt"); + "hf ntag424 read --fileno 1 --keyno 0 -k 00000000000000000000000000000000 -o 0 -l 32\n" + "hf ntag424 read --fileno 2 --keyno 0 -k 00000000000000000000000000000000 -o 0 -l 256\n" + "hf ntag424 read --fileno 3 --keyno 3 -k 00000000000000000000000000000000 -o 0 -l 128 -m encrypt"); void *argtable[] = { arg_param_begin, - arg_int1("f", "fileno", "<dec>", "File number (1-3)"), - arg_int0("n", "keyno", "<dec>", "Key number"), - arg_str0("k", "key", "<hex>", "Key for authentication (HEX 16 bytes)"), - arg_int0("o", "offset", "<dec>", "Offset to read in file (default 0)"), - arg_int1("l", "length", "<dec>", "Number of bytes to read"), - arg_str0("m", "cmode", "<plain|mac|encrypt>", "Communicaton mode"), + arg_int1(NULL, "fileno", "<1|2|3>", "File number"), + arg_int0(NULL, "keyno", "<dec>", "Key number"), + arg_str0("k", "key", "<hex>", "Key for authentication (HEX 16 bytes)"), + arg_int0("o", "offset", "<dec>", "Offset to read in file (def 0)"), + arg_int1("l", "length", "<dec>", "Number of bytes to read"), + arg_str0("m", "cmode", "<plain|mac|encrypt>", "Communication mode"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); - int keyno; - uint8_t key[16] = {0}; - int auth = 1; - int fileno = arg_get_int(ctx, 1); - if (ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) != PM3_SUCCESS) { - auth = 0; - } + int keyno; + uint8_t key[16] = {0}; + bool auth = (ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) == PM3_SUCCESS); + + int offset = arg_get_int_def(ctx, 4, 0); + int read_length = arg_get_int(ctx, 5); ntag424_communication_mode_t comm_mode; int comm_out = 0; @@ -886,56 +894,46 @@ static int CmdHF_ntag424_read(const char *Cmd) { CLIParserFree(ctx); return PM3_EINVARG; } + CLIParserFree(ctx); + comm_mode = comm_out; - if (comm_mode != COMM_PLAIN && auth == 0) { + if (comm_mode != COMM_PLAIN && auth == false) { PrintAndLogEx(ERR, "Only plain communication mode can be used without a key specified"); return PM3_EINVARG; } - int offset = arg_get_int_def(ctx, 4, 0); - int read_length = arg_get_int(ctx, 5); - - CLIParserFree(ctx); - - int res = SelectCard14443A_4(false, true, NULL); - if (res != PM3_SUCCESS) { + if (SelectCard14443A_4(false, true, NULL) != PM3_SUCCESS) { DropField(); PrintAndLogEx(ERR, "Failed to select card"); - return res; + return PM3_ERFTRANS; } - res = ntag424_select_application(); - if (res != PM3_SUCCESS) { + if (ntag424_select_application() != PM3_SUCCESS) { DropField(); - return res; + return PM3_ESOFT; } + int res = PM3_SUCCESS; ntag424_session_keys_t session_keys; if (auth) { res = ntag424_authenticate_ev2_first(keyno, key, &session_keys); if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Failed to authenticate with key %d", keyno); + PrintAndLogEx(ERR, "Auth key %d ( " _RED_("fail") " )", keyno); DropField(); return res; } else { - PrintAndLogEx(SUCCESS, "Successfully authenticated with key %d", keyno); + PrintAndLogEx(SUCCESS, "Auth key %d ( " _GREEN_("ok") " )", keyno); } } - uint8_t data[512]; - + uint8_t data[512] = {0}; res = ntag424_read_data(fileno, offset, read_length, data, comm_mode, &session_keys); - if (res != PM3_SUCCESS) { - DropField(); - return res; - } - - PrintAndLogEx(SUCCESS, " -------- Read file %d contents ------------ ", fileno); - print_hex_break(data, read_length, 16); - DropField(); - + if (res == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, " -------- Read file " _YELLOW_("%d") " contents ------------ ", fileno); + print_hex_break(data, read_length, 16); + } return res; } @@ -943,30 +941,32 @@ static int CmdHF_ntag424_write(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf ntag424 write", "Write data to file on NTAG424 tag. Will authenticate if key information is provided.", - "hf ntag424 write -f 2 -n 0 -k 00000000000000000000000000000000 -o 0 -d 1122334455667788\n" - "hf ntag424 write -f 3 -n 3 -k 00000000000000000000000000000000 -o 0 -d 1122334455667788 -m encrypt"); + "hf ntag424 write --fileno 2 --keyno 0 -k 00000000000000000000000000000000 -o 0 -d 1122334455667788\n" + "hf ntag424 write --fileno 3 --keyno 3 -k 00000000000000000000000000000000 -o 0 -d 1122334455667788 -m encrypt"); void *argtable[] = { arg_param_begin, - arg_int1("f", "fileno", "<dec>", "File number (1-3), (default 2)"), - arg_int0("n", "keyno", "<dec>", "Key number"), - arg_str0("k", "key", "<hex>", "Key for authentication (HEX 16 bytes)"), - arg_int0("o", "offset", "<dec>", "Offset to write in file (default 0)"), - arg_str1("d", "data", "<hex>", "Data to write"), - arg_str0("m", "cmode", "<plain|mac|encrypt>", "Communicaton mode"), + arg_u64_1(NULL, "fileno", "<1|2|3>", "File number (def 2)"), + arg_int0(NULL, "keyno", "<dec>", "Key number"), + arg_str0("k", "key", "<hex>", "Key for authentication (HEX 16 bytes)"), + arg_int0("o", "offset", "<dec>", "Offset to write in file (def 0)"), + arg_str1("d", "data", "<hex>", "Data to write"), + arg_str0("m", "cmode", "<plain|mac|encrypt>", "Communication mode"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); - int keyno; - uint8_t key[16] = {0}; - int auth = 1; - int fileno = arg_get_int(ctx, 1); - if (ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) != PM3_SUCCESS) { - auth = 0; - } + int keyno = 0; + uint8_t key[16] = {0}; + bool auth = (ntag424_cli_get_auth_information(ctx, 2, 3, &keyno, key) == PM3_SUCCESS); + + uint32_t offset = arg_get_u32_def(ctx, 4, 0); + + uint8_t data[512] = {0}; + int datalen = 512; + CLIGetHexWithReturn(ctx, 5, data, &datalen); ntag424_communication_mode_t comm_mode; int comm_out = 0; @@ -974,68 +974,58 @@ static int CmdHF_ntag424_write(const char *Cmd) { CLIParserFree(ctx); return PM3_EINVARG; } + CLIParserFree(ctx); + comm_mode = comm_out; - if (comm_mode != COMM_PLAIN && auth == 0) { + if (comm_mode != COMM_PLAIN && auth == false) { PrintAndLogEx(ERR, "Only plain communication mode can be used without a key specified"); return PM3_EINVARG; } - - int offset = arg_get_int_def(ctx, 4, 0); - - uint8_t data[512] = {0}; - int datalen = 512; - CLIGetHexWithReturn(ctx, 5, data, &datalen); - - CLIParserFree(ctx); - - int res = SelectCard14443A_4(false, true, NULL); - if (res != PM3_SUCCESS) { + + if (SelectCard14443A_4(false, true, NULL) != PM3_SUCCESS) { DropField(); PrintAndLogEx(ERR, "Failed to select card"); - return res; + return PM3_ERFTRANS; } - res = ntag424_select_application(); - if (res != PM3_SUCCESS) { + if (ntag424_select_application() != PM3_SUCCESS) { DropField(); - return res; + return PM3_ESOFT; } - ntag424_session_keys_t session_keys; + int res = PM3_SUCCESS; + ntag424_session_keys_t session_keys = {0}; if (auth) { res = ntag424_authenticate_ev2_first(keyno, key, &session_keys); if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Failed to authenticate with key %d", keyno); + PrintAndLogEx(ERR, "Auth key %d ( " _RED_("fail") " )", keyno); DropField(); return res; } else { - PrintAndLogEx(SUCCESS, "Successfully authenticated with key %d", keyno); + PrintAndLogEx(SUCCESS, "Auth key %d ( " _GREEN_("ok") " )", keyno); } } - res = ntag424_write_data(fileno, offset, datalen, data, comm_mode, &session_keys); - if (res != PM3_SUCCESS) { - DropField(); - return res; - } - - PrintAndLogEx(SUCCESS, "Wrote %d bytes", datalen); - + res = ntag424_write_data(fileno, offset, (uint32_t)datalen, data, comm_mode, &session_keys); DropField(); - + if (res == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "Wrote " _YELLOW_("%d") " bytes ( " _GREEN_("ok") " )", datalen); + } else { + PrintAndLogEx(ERR, "Wrote " _YELLOW_("%d") " bytes ( " _RED_("fail") " )", datalen); + } return res; } static int CmdHF_ntag424_getfilesettings(const char *Cmd) { CLIParserContext *ctx; - CLIParserInit(&ctx, "hf ntag424 getfilesettings", + CLIParserInit(&ctx, "hf ntag424 getfs", "Read and print file settings for file", - "hf ntag424 getfilesettings -f 2"); + "hf ntag424 getfs --fileno 2"); void *argtable[] = { arg_param_begin, - arg_int1("f", "file", "<dec>", "File number"), + arg_int1(NULL, "fileno", "<dec>", "File number"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -1043,35 +1033,29 @@ static int CmdHF_ntag424_getfilesettings(const char *Cmd) { CLIParserFree(ctx); - int res = SelectCard14443A_4(false, true, NULL); - if (res != PM3_SUCCESS) { + if (SelectCard14443A_4(false, true, NULL) != PM3_SUCCESS) { DropField(); PrintAndLogEx(ERR, "Failed to select card"); - return res; + return PM3_ERFTRANS; } - res = ntag424_select_application(); - if (res != PM3_SUCCESS) { + if (ntag424_select_application() != PM3_SUCCESS) { DropField(); - return res; + return PM3_ESOFT; } - ntag424_file_settings_t settings; - res = ntag424_get_file_settings(fileno, &settings); + ntag424_file_settings_t settings = {0}; + int res = ntag424_get_file_settings(fileno, &settings); DropField(); - if (res != PM3_SUCCESS) { - return res; + if (res == PM3_SUCCESS) { + ntag424_print_file_settings(fileno, &settings); } - - ntag424_print_file_settings(fileno, &settings); - - return res; } static int CmdHF_ntag424_changefilesettings(const char *Cmd) { CLIParserContext *ctx; - CLIParserInit(&ctx, "hf ntag424 changefilesettings", + CLIParserInit(&ctx, "hf ntag424 changefs", "Updates file settings for file, must be authenticated.\n" "This is a short explanation of the settings. See AN12196 for more information:\n" "options: byte with bit flags\n" @@ -1100,26 +1084,26 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { "Note: Not all of these settings will be written. It depends on the option byte, and the keys set. See AN12196 for more information.\n" "You must also start with sdmdata1, then sdmdata2, up to the number of sdm_data you want to write", - - "hf ntag424 changefilesettings -f 2 -n 0 -k 00000000000000000000000000000000 -o 40 -a 00E0 -s C1 -c F000 --sdmdata1 000020 --sdmdata2 000043 --sdmdata3 000043"); + "hf ntag424 changefs --fileno 2 --keyno 0 -k 00000000000000000000000000000000 -o 40 -a 00E0 -s C1 -c F000 --data1 000020 --data2 000043 --data3 000043" + ); void *argtable[] = { arg_param_begin, - arg_int1("f", "file", "<dec>", "File number"), - arg_int1("n", "keyno", "<dec>", "Key number"), + arg_int1(NULL, "fileno", "<dec>", "File number"), + arg_int1(NULL, "keyno", "<dec>", "Key number"), arg_str1("k", "key", "<hex>", "Key for authentication (HEX 16 bytes)"), arg_str0("o", "options", "<hex>", "File options byte (HEX 1 byte)"), arg_str0("a", "access", "<hex>", "File access settings (HEX 2 bytes)"), arg_str0("s", "sdmoptions", "<hex>", "SDM options (HEX 1 byte)"), arg_str0("c", "sdmaccess", "<hex>", "SDM access settings (HEX 2 bytes)"), - arg_str0(NULL, "sdmdata1", "<hex>", "SDM data (HEX 3 bytes)"), - arg_str0(NULL, "sdmdata2", "<hex>", "SDM data (HEX 3 bytes)"), - arg_str0(NULL, "sdmdata3", "<hex>", "SDM data (HEX 3 bytes)"), - arg_str0(NULL, "sdmdata4", "<hex>", "SDM data (HEX 3 bytes)"), - arg_str0(NULL, "sdmdata5", "<hex>", "SDM data (HEX 3 bytes)"), - arg_str0(NULL, "sdmdata6", "<hex>", "SDM data (HEX 3 bytes)"), - arg_str0(NULL, "sdmdata7", "<hex>", "SDM data (HEX 3 bytes)"), - arg_str0(NULL, "sdmdata8", "<hex>", "SDM data (HEX 3 bytes)"), + arg_str0(NULL, "data1", "<hex>", "SDM data (HEX 3 bytes)"), + arg_str0(NULL, "data2", "<hex>", "SDM data (HEX 3 bytes)"), + arg_str0(NULL, "data3", "<hex>", "SDM data (HEX 3 bytes)"), + arg_str0(NULL, "data4", "<hex>", "SDM data (HEX 3 bytes)"), + arg_str0(NULL, "data5", "<hex>", "SDM data (HEX 3 bytes)"), + arg_str0(NULL, "data6", "<hex>", "SDM data (HEX 3 bytes)"), + arg_str0(NULL, "data7", "<hex>", "SDM data (HEX 3 bytes)"), + arg_str0(NULL, "data8", "<hex>", "SDM data (HEX 3 bytes)"), // Sorry, couldn't figure out how to work with arg_strn... arg_param_end }; @@ -1145,12 +1129,13 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { CLIParserFree(ctx); return PM3_EINVARG; } + int len = 1; if (arg_get_str(ctx, 4)->count == 1) { has_options = 1; CLIGetHexWithReturn(ctx, 4, options, &len); if (len != 1) { - PrintAndLogEx(ERR, "Options must be 1 byte"); + PrintAndLogEx(ERR, "Options must be 1 byte, got ( %d )", len); CLIParserFree(ctx); return PM3_EINVARG; } @@ -1160,7 +1145,7 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { has_access = 1; CLIGetHexWithReturn(ctx, 5, access, &len); if (len != 2) { - PrintAndLogEx(ERR, "Access must be 2 bytes"); + PrintAndLogEx(ERR, "Access must be 2 bytes, got ( %d )", len); CLIParserFree(ctx); return PM3_EINVARG; } @@ -1170,7 +1155,7 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { has_sdmoptions = 1; CLIGetHexWithReturn(ctx, 6, sdmoptions, &len); if (len != 1) { - PrintAndLogEx(ERR, "SDM Options must be 1 byte"); + PrintAndLogEx(ERR, "SDM Options must be 1 byte, got ( %d )", len); CLIParserFree(ctx); return PM3_EINVARG; } @@ -1180,7 +1165,7 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { has_sdmaccess = 1; CLIGetHexWithReturn(ctx, 7, sdmaccess, &len); if (len != 2) { - PrintAndLogEx(ERR, "SDM Access must be 2 bytes"); + PrintAndLogEx(ERR, "SDM Access must be 2 bytes, got ( %d )", len); CLIParserFree(ctx); return PM3_EINVARG; } @@ -1192,7 +1177,7 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { num_sdm_data++; CLIGetHexWithReturn(ctx, 8 + i, sdm_data[i], &len); if (len != 3) { - PrintAndLogEx(ERR, "sdmdata must be 3 bytes"); + PrintAndLogEx(ERR, "sdmdata must be 3 bytes, got ( %d )", len); CLIParserFree(ctx); return PM3_EINVARG; } @@ -1201,46 +1186,48 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { } } - CLIParserFree(ctx); - int res = SelectCard14443A_4(false, true, NULL); - if (res != PM3_SUCCESS) { + if (SelectCard14443A_4(false, true, NULL) != PM3_SUCCESS) { DropField(); PrintAndLogEx(ERR, "Failed to select card"); - return res; + return PM3_ERFTRANS; } - res = ntag424_select_application(); - if (res != PM3_SUCCESS) { + if (ntag424_select_application() != PM3_SUCCESS) { DropField(); - return res; + return PM3_ESOFT; } - ntag424_file_settings_t settings; - res = ntag424_get_file_settings(fileno, &settings); - if (res != PM3_SUCCESS) { + ntag424_file_settings_t settings = {0}; + if (ntag424_get_file_settings(fileno, &settings) != PM3_SUCCESS) { DropField(); - return res; + return PM3_ESOFT; } + int res = PM3_SUCCESS; ntag424_session_keys_t session = {0}; res = ntag424_authenticate_ev2_first(keyno, key, &session); if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Failed to authenticate with key %d", keyno); + PrintAndLogEx(ERR, "Auth key %d ( " _RED_("fail") " )", keyno); DropField(); return res; + } else { + PrintAndLogEx(SUCCESS, "Auth key %d ( " _GREEN_("ok") " )", keyno); } if (has_options) { settings.options = options[0]; } + if (has_access) { memcpy(settings.access, access, 2); } + if (has_sdmoptions) { settings.optional_sdm_settings.sdm_options = sdmoptions[0]; } + if (has_sdmaccess) { memcpy(settings.optional_sdm_settings.sdm_access, sdmaccess, 2); } @@ -1251,15 +1238,14 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { settings.optional_sdm_settings.sdm_data[i][0] = sdm_data[i][2]; } - if (ntag424_write_file_settings(fileno, &settings, &session) != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Failed to write settings"); - DropField(); - return PM3_ESOFT; - } - PrintAndLogEx(SUCCESS, "Wrote settings successfully"); - ntag424_print_file_settings(fileno, &settings); - + res = ntag424_write_file_settings(fileno, &settings, &session); DropField(); + if (res == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "Write settings ( " _GREEN_("ok") " )"); + ntag424_print_file_settings(fileno, &settings); + } else { + PrintAndLogEx(ERR, "Write settings (" _RED_("fail") " )"); + } return res; } @@ -1269,39 +1255,40 @@ static int CmdHF_ntag424_changekey(const char *Cmd) { CLIParserInit(&ctx, "hf ntag424 changekey", "Change a key.\n" "Authentication key must currently be different to the one we want to change.\n", - "hf ntag424 changekey -n 1 --oldkey 00000000000000000000000000000000 --newkey 11111111111111111111111111111111 --key0 00000000000000000000000000000000 -v 1\n" - "hf ntag424 changekey -n 0 --newkey 11111111111111111111111111111111 --key0 00000000000000000000000000000000 -v 1\n" + "hf ntag424 changekey --keyno 1 --oldkey 00000000000000000000000000000000 --newkey 11111111111111111111111111111111 --key0 00000000000000000000000000000000 --kv 1\n" + "hf ntag424 changekey --keyno 0 --newkey 11111111111111111111111111111111 --key0 00000000000000000000000000000000 --kv 1\n" ); void *argtable[] = { arg_param_begin, - arg_int1("n", "keyno", "<dec>", "Key number to change"), + arg_int1(NULL, "keyno", "<dec>", "Key number to change"), arg_str0(NULL, "oldkey", "<hex>", "Old key (only needed when changing key 1-4, HEX 16 bytes)"), arg_str1(NULL, "newkey", "<hex>", "New key (HEX 16 bytes)"), - arg_str1(NULL, "key0", "<hex>", "Authentication key (must be key 0, HEX 16 bytes)"), - arg_int1("v", "version", "<dec>", "Version of the new key"), + arg_str1(NULL, "key0", "<hex>", "Authentication key (must be key 0, HEX 16 bytes)"), + arg_int1(NULL, "kv", "<dec>", "New key version number"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); uint8_t version = arg_get_int(ctx, 6); int keyno = arg_get_int(ctx, 1); - uint8_t oldkey[16]; - uint8_t newkey[16]; - uint8_t authkey[16]; + uint8_t oldkey[16] = {0}; if (keyno != 0) { if (ntag424_cli_get_auth_information(ctx, 0, 2, NULL, oldkey) != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Could not get keyno or old key"); CLIParserFree(ctx); return PM3_EINVARG; } } + + uint8_t newkey[16] = {0}; if (ntag424_cli_get_auth_information(ctx, 0, 3, NULL, newkey) != PM3_SUCCESS) { PrintAndLogEx(ERR, "Could not get new key"); CLIParserFree(ctx); return PM3_EINVARG; } + + uint8_t authkey[16] = {0}; if (ntag424_cli_get_auth_information(ctx, 0, 4, NULL, authkey) != PM3_SUCCESS) { PrintAndLogEx(ERR, "Could not get authentication key"); CLIParserFree(ctx); @@ -1309,57 +1296,50 @@ static int CmdHF_ntag424_changekey(const char *Cmd) { } CLIParserFree(ctx); - int res = SelectCard14443A_4(false, true, NULL); - if (res != PM3_SUCCESS) { + if (SelectCard14443A_4(false, true, NULL) != PM3_SUCCESS) { DropField(); PrintAndLogEx(ERR, "Failed to select card"); - return res; + return PM3_ERFTRANS; } - res = ntag424_select_application(); - if (res != PM3_SUCCESS) { + if (ntag424_select_application() != PM3_SUCCESS) { DropField(); - return res; + return PM3_ESOFT; } + int res = PM3_SUCCESS; ntag424_session_keys_t session = {0}; res = ntag424_authenticate_ev2_first(0, authkey, &session); if (res != PM3_SUCCESS) { DropField(); - PrintAndLogEx(ERR, "Failed to authenticate"); + PrintAndLogEx(ERR, "Auth ( " _RED_("fail") " )"); return PM3_ESOFT; } else { - PrintAndLogEx(SUCCESS, "Successfully authenticated"); + PrintAndLogEx(SUCCESS, "Auth ( " _GREEN_("ok") " )"); } res = ntag424_change_key(keyno, newkey, oldkey, version, &session); - if (res != PM3_SUCCESS) { - DropField(); - PrintAndLogEx(ERR, "Failed to change key"); - DropField(); - return PM3_ESOFT; + DropField(); + if (res == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "Change key %d ( " _GREEN_("ok") " )", keyno); } else { - PrintAndLogEx(SUCCESS, "Successfully changed key %d", keyno); + PrintAndLogEx(ERR, "Change key %d ( "_RED_("fail") " )", keyno); } - DropField(); - return PM3_SUCCESS; + return res; } -//------------------------------------ -// Menu Stuff -//------------------------------------ static command_t CommandTable[] = { - {"help", CmdHelp, AlwaysAvailable, "This help"}, - {"-----------", CmdHelp, IfPm3Iso14443a, "----------------------- " _CYAN_("operations") " -----------------------"}, - {"info", CmdHF_ntag424_info, IfPm3Iso14443a, "Tag information (not implemented yet)"}, - {"view", CmdHF_ntag424_view, AlwaysAvailable, "Display content from tag dump file"}, - {"auth", CmdHF_ntag424_auth, IfPm3Iso14443a, "Test authentication with key"}, - {"read", CmdHF_ntag424_read, IfPm3Iso14443a, "Read file"}, - {"write", CmdHF_ntag424_write, IfPm3Iso14443a, "Write file"}, - {"getfilesettings", CmdHF_ntag424_getfilesettings, IfPm3Iso14443a, "Get file settings"}, - {"changefilesettings", CmdHF_ntag424_changefilesettings, IfPm3Iso14443a, "Change file settings"}, - {"changekey", CmdHF_ntag424_changekey, IfPm3Iso14443a, "Change key"}, + {"help", CmdHelp, AlwaysAvailable, "This help"}, + {"-----------", CmdHelp, IfPm3Iso14443a, "----------------------- " _CYAN_("operations") " -----------------------"}, + {"info", CmdHF_ntag424_info, IfPm3Iso14443a, "Tag information"}, + {"view", CmdHF_ntag424_view, AlwaysAvailable, "Display content from tag dump file"}, + {"auth", CmdHF_ntag424_auth, IfPm3Iso14443a, "Test authentication with key"}, + {"read", CmdHF_ntag424_read, IfPm3Iso14443a, "Read file"}, + {"write", CmdHF_ntag424_write, IfPm3Iso14443a, "Write file"}, + {"getfs", CmdHF_ntag424_getfilesettings, IfPm3Iso14443a, "Get file settings"}, + {"changefs", CmdHF_ntag424_changefilesettings, IfPm3Iso14443a, "Change file settings"}, + {"changekey", CmdHF_ntag424_changekey, IfPm3Iso14443a, "Change key"}, {NULL, NULL, NULL, NULL} }; diff --git a/client/src/cmdlfem410x.c b/client/src/cmdlfem410x.c index 29ad61bc9..a8e70fe36 100644 --- a/client/src/cmdlfem410x.c +++ b/client/src/cmdlfem410x.c @@ -528,8 +528,9 @@ static int CmdEM410xBrute(const char *Cmd) { //The line start with # is comment, skip if (buf[0] == '#') continue; - if (param_gethex(buf, 0, uid, 10)) { - PrintAndLogEx(FAILED, "EM Tag IDs must include 5 hex bytes (10 hex symbols)"); + int uidlen = 0; + if (param_gethex_ex(buf, 0, uid, &uidlen) && (uidlen != 10)) { + PrintAndLogEx(FAILED, "EM Tag IDs must include 5 hex bytes (10 hex symbols), got ( " _RED_("%d") " )", uidlen); free(uidblock); fclose(f); return PM3_ESOFT; diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index f0a4e3bf9..1e825bbaf 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -590,9 +590,10 @@ static int CmdSmartUpgrade(const char *Cmd) { } hashstring[128] = '\0'; + int hash1n = 0; uint8_t hash_1[64]; - if (param_gethex(hashstring, 0, hash_1, 128)) { - PrintAndLogEx(FAILED, "Couldn't read SHA-512 file"); + if (param_gethex_ex(hashstring, 0, hash_1, &hash1n) && hash1n != 128) { + PrintAndLogEx(FAILED, "Couldn't read SHA-512 file. expect 128 hex bytes, got ( "_RED_("%d") " )", hash1n); free(hashstring); free(firmware); return PM3_ESOFT; diff --git a/client/src/util.c b/client/src/util.c index b44f52711..51dbc0a19 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -759,25 +759,6 @@ float param_getfloat(const char *line, int paramnum, float deflt) { return deflt; } -int param_gethex(const char *line, int paramnum, uint8_t *data, int hexcnt) { - int bg, en, i; - uint32_t temp; - - if (hexcnt & 1) return 1; - - if (param_getptr(line, &bg, &en, paramnum)) return 1; - - if (en - bg + 1 != hexcnt) return 1; - - for (i = 0; i < hexcnt; i += 2) { - if (!(isxdigit(line[bg + i]) && isxdigit(line[bg + i + 1]))) return 1; - - sscanf((char[]) {line[bg + i], line[bg + i + 1], 0}, "%X", &temp); - data[i / 2] = temp & 0xff; - } - - return 0; -} int param_gethex_ex(const char *line, int paramnum, uint8_t *data, int *hexcnt) { int bg, en, i; uint32_t temp; @@ -785,8 +766,11 @@ int param_gethex_ex(const char *line, int paramnum, uint8_t *data, int *hexcnt) if (param_getptr(line, &bg, &en, paramnum)) return 1; *hexcnt = en - bg + 1; - if (*hexcnt % 2) //error if not complete hex bytes + + // error if not complete hex bytes + if (*hexcnt & 1) { return 1; + } for (i = 0; i < *hexcnt; i += 2) { if (!(isxdigit(line[bg + i]) && isxdigit(line[bg + i + 1]))) return 1; diff --git a/client/src/util.h b/client/src/util.h index a50bdd370..3b9a70183 100644 --- a/client/src/util.h +++ b/client/src/util.h @@ -106,7 +106,6 @@ uint64_t param_get64ex(const char *line, int paramnum, int deflt, int base); float param_getfloat(const char *line, int paramnum, float deflt); uint8_t param_getdec(const char *line, int paramnum, uint8_t *destination); uint8_t param_isdec(const char *line, int paramnum); -int param_gethex(const char *line, int paramnum, uint8_t *data, int hexcnt); int param_gethex_ex(const char *line, int paramnum, uint8_t *data, int *hexcnt); int param_gethex_to_eol(const char *line, int paramnum, uint8_t *data, int maxdatalen, int *datalen); int param_getbin_to_eol(const char *line, int paramnum, uint8_t *data, int maxdatalen, int *datalen); From 2763ead13b0763450f8dbe8d86230c39753a71b6 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 30 Oct 2023 13:05:46 +0100 Subject: [PATCH 0643/1034] fix the free ctx calls --- client/src/cmdhfntag424.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index 8c7bcb553..0b90b2b3d 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -792,20 +792,16 @@ static int CmdHF_ntag424_info(const char *Cmd) { return PM3_SUCCESS; } -static int ntag424_cli_get_auth_information(CLIParserContext *ctx, int key_no_index, int key_index, int *keyno, uint8_t *key_out) { +static int ntag424_cli_get_auth_information(CLIParserContext *ctx, int keyno_index, int key_index, int *keyno, uint8_t *key_out) { + + if (keyno) { + *keyno = arg_get_int(ctx, keyno_index); + } int keylen = 16; - if (keyno) { - *keyno = arg_get_int(ctx, key_no_index); - } - uint8_t key[16] = {0}; - CLIGetHexWithReturn(ctx, key_index, key, &keylen); - if (CLIParamHexToBuf(arg_get_str((ctx), key_index), key, sizeof(key), &keylen)) { - } - - if (keylen != 16) { + if (CLIParamHexToBuf(arg_get_str(ctx, key_index), key, sizeof(key), &keylen) || (keylen != 16)) { return PM3_ESOFT; } From b9dcd143d51fa504c23cb0df0bfa98d92311fac5 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 30 Oct 2023 13:11:52 +0100 Subject: [PATCH 0644/1034] style --- client/src/cmdhfntag424.c | 12 ++--- client/src/cmdlfem4x05.c | 4 +- client/src/pm3line_vocabulary.h | 4 +- doc/commands.json | 83 +++++++++++++++++---------------- doc/commands.md | 6 +-- 5 files changed, 56 insertions(+), 53 deletions(-) diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index 0b90b2b3d..835f88adc 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -628,10 +628,10 @@ static int ntag424_write_data(uint8_t fileno, uint32_t offset, uint32_t num_byte uint8_t cmd_header[] = { fileno, - (uint8_t)offset, - (uint8_t)(offset << 8), + (uint8_t)offset, + (uint8_t)(offset << 8), (uint8_t)(offset << 16), // offset - (uint8_t)num_bytes, + (uint8_t)num_bytes, (uint8_t)(num_bytes >> 8), (uint8_t)(num_bytes >> 16) // size }; @@ -768,7 +768,7 @@ static int CmdHF_ntag424_view(const char *Cmd) { // to be implemented... PrintAndLogEx(INFO, "not implemented yet"); - PrintAndLogEx(INFO, "Feel free to contribute!"); + PrintAndLogEx(INFO, "Feel free to contribute!"); free(dump); return PM3_SUCCESS; @@ -978,7 +978,7 @@ static int CmdHF_ntag424_write(const char *Cmd) { PrintAndLogEx(ERR, "Only plain communication mode can be used without a key specified"); return PM3_EINVARG; } - + if (SelectCard14443A_4(false, true, NULL) != PM3_SUCCESS) { DropField(); PrintAndLogEx(ERR, "Failed to select card"); @@ -1081,7 +1081,7 @@ static int CmdHF_ntag424_changefilesettings(const char *Cmd) { "You must also start with sdmdata1, then sdmdata2, up to the number of sdm_data you want to write", "hf ntag424 changefs --fileno 2 --keyno 0 -k 00000000000000000000000000000000 -o 40 -a 00E0 -s C1 -c F000 --data1 000020 --data2 000043 --data3 000043" - ); + ); void *argtable[] = { arg_param_begin, diff --git a/client/src/cmdlfem4x05.c b/client/src/cmdlfem4x05.c index 9b0e69753..f93db58d3 100644 --- a/client/src/cmdlfem4x05.c +++ b/client/src/cmdlfem4x05.c @@ -832,9 +832,9 @@ int CmdEM4x05Write(const char *Cmd) { PrintAndLogEx(INFO, "Writing address " _YELLOW_("%d") " data " _YELLOW_("%08X") " using password " _YELLOW_("%08X"), addr, data, pwd); } else { if (protect_operation) - PrintAndLogEx(INFO, "Writing protection words data " _YELLOW_("%08X") , data); + PrintAndLogEx(INFO, "Writing protection words data " _YELLOW_("%08X"), data); else - PrintAndLogEx(INFO, "Writing address " _YELLOW_("%d") " data " _YELLOW_("%08X") , addr, data); + PrintAndLogEx(INFO, "Writing address " _YELLOW_("%d") " data " _YELLOW_("%08X"), addr, data); } res = PM3_SUCCESS; diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index 5b3720d85..858267278 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -459,8 +459,8 @@ const static vocabulary_t vocabulary[] = { { 0, "hf ntag424 auth" }, { 0, "hf ntag424 read" }, { 0, "hf ntag424 write" }, - { 0, "hf ntag424 getfilesettings" }, - { 0, "hf ntag424 changefilesettings" }, + { 0, "hf ntag424 getfs" }, + { 0, "hf ntag424 changefs" }, { 0, "hf ntag424 changekey" }, { 1, "hf seos help" }, { 0, "hf seos info" }, diff --git a/doc/commands.json b/doc/commands.json index 12bc7a5e1..4cb9c4623 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -6794,73 +6794,73 @@ "command": "hf ntag424 auth", "description": "Authenticate with selected key against NTAG424.", "notes": [ - "hf ntag424 auth -n 0 -k 00000000000000000000000000000000" + "hf ntag424 auth --keyno 0 -k 00000000000000000000000000000000" ], "offline": false, "options": [ "-h, --help This help", - "-n, --keyno <dec> Key number", + "--keyno <dec> Key number", "-k, --key <hex> Key for authenticate (HEX 16 bytes)" ], - "usage": "hf ntag424 auth [-h] -n <dec> -k <hex>" + "usage": "hf ntag424 auth [-h] --keyno <dec> -k <hex>" }, - "hf ntag424 changefilesettings": { - "command": "hf ntag424 changefilesettings", + "hf ntag424 changefs": { + "command": "hf ntag424 changefs", "description": "Updates file settings for file, must be authenticated. This is a short explanation of the settings. See AN12196 for more information: options: byte with bit flags Bit: Setting: 6 Enable SDM and mirroring access: two byte access rights. Each nibble is a key number, or E for free access. Order is key for readwrite, change, read and write sdmoptions: byte with bit flags Bit: Setting: 0 ASCII encoding 4 SDMEncFileData 5 SDMReadCtrLimit 6 SDMReadCtr 7 SDMOptionsUID sdmaccess: two byte access rights. Each nibble is a key, or E for plain mirror and F for no mirroring Order is Reserved, SDMCtrRet, SDMMetaRead and SDMFileRead sdm_data: Three bytes of data used to control SDM settings. Can be specified multiple times. Data means different things depending on settings. Note: Not all of these settings will be written. It depends on the option byte, and the keys set. See AN12196 for more information. You must also start with sdmdata1, then sdmdata2, up to the number of sdm_data you want to write", "notes": [ - "hf ntag424 changefilesettings -f 2 -n 0 -k 00000000000000000000000000000000 -o 40 -a 00E0 -s C1 -c F000 --sdmdata1 000020 --sdmdata2 000043 --sdmdata3 000043" + "hf ntag424 changefs --fileno 2 --keyno 0 -k 00000000000000000000000000000000 -o 40 -a 00E0 -s C1 -c F000 --data1 000020 --data2 000043 --data3 000043" ], "offline": false, "options": [ "-h, --help This help", - "-f, --file <dec> File number", - "-n, --keyno <dec> Key number", + "--fileno <dec> File number", + "--keyno <dec> Key number", "-k, --key <hex> Key for authentication (HEX 16 bytes)", "-o, --options <hex> File options byte (HEX 1 byte)", "-a, --access <hex> File access settings (HEX 2 bytes)", "-s, --sdmoptions <hex> SDM options (HEX 1 byte)", "-c, --sdmaccess <hex> SDM access settings (HEX 2 bytes)", - "--sdmdata1 <hex> SDM data (HEX 3 bytes)", - "--sdmdata2 <hex> SDM data (HEX 3 bytes)", - "--sdmdata3 <hex> SDM data (HEX 3 bytes)", - "--sdmdata4 <hex> SDM data (HEX 3 bytes)", - "--sdmdata5 <hex> SDM data (HEX 3 bytes)", - "--sdmdata6 <hex> SDM data (HEX 3 bytes)", - "--sdmdata7 <hex> SDM data (HEX 3 bytes)", - "--sdmdata8 <hex> SDM data (HEX 3 bytes)" + "--data1 <hex> SDM data (HEX 3 bytes)", + "--data2 <hex> SDM data (HEX 3 bytes)", + "--data3 <hex> SDM data (HEX 3 bytes)", + "--data4 <hex> SDM data (HEX 3 bytes)", + "--data5 <hex> SDM data (HEX 3 bytes)", + "--data6 <hex> SDM data (HEX 3 bytes)", + "--data7 <hex> SDM data (HEX 3 bytes)", + "--data8 <hex> SDM data (HEX 3 bytes)" ], - "usage": "hf ntag424 changefilesettings [-h] -f <dec> -n <dec> -k <hex> [-o <hex>] [-a <hex>] [-s <hex>] [-c <hex>] [--sdmdata1 <hex>] [--sdmdata2 <hex>] [--sdmdata3 <hex>] [--sdmdata4 <hex>] [--sdmdata5 <hex>] [--sdmdata6 <hex>] [--sdmdata7 <hex>] [--sdmdata8 <hex>]" + "usage": "hf ntag424 changefs [-h] --fileno <dec> --keyno <dec> -k <hex> [-o <hex>] [-a <hex>] [-s <hex>] [-c <hex>] [--data1 <hex>] [--data2 <hex>] [--data3 <hex>] [--data4 <hex>] [--data5 <hex>] [--data6 <hex>] [--data7 <hex>] [--data8 <hex>]" }, "hf ntag424 changekey": { "command": "hf ntag424 changekey", "description": "Change a key. Authentication key must currently be different to the one we want to change.", "notes": [ - "hf ntag424 changekey -n 1 --oldkey 00000000000000000000000000000000 --newkey 11111111111111111111111111111111 --key0 00000000000000000000000000000000 -v 1", - "hf ntag424 changekey -n 0 --newkey 11111111111111111111111111111111 --key0 00000000000000000000000000000000 -v 1" + "hf ntag424 changekey --keyno 1 --oldkey 00000000000000000000000000000000 --newkey 11111111111111111111111111111111 --key0 00000000000000000000000000000000 --kv 1", + "hf ntag424 changekey --keyno 0 --newkey 11111111111111111111111111111111 --key0 00000000000000000000000000000000 --kv 1" ], "offline": false, "options": [ "-h, --help This help", - "-n, --keyno <dec> Key number to change", + "--keyno <dec> Key number to change", "--oldkey <hex> Old key (only needed when changing key 1-4, HEX 16 bytes)", "--newkey <hex> New key (HEX 16 bytes)", "--key0 <hex> Authentication key (must be key 0, HEX 16 bytes)", - "-v, --version <dec> Version of the new key" + "--kv <dec> New key version number" ], - "usage": "hf ntag424 changekey [-h] -n <dec> [--oldkey <hex>] --newkey <hex> --key0 <hex> -v <dec>" + "usage": "hf ntag424 changekey [-h] --keyno <dec> [--oldkey <hex>] --newkey <hex> --key0 <hex> --kv <dec>" }, - "hf ntag424 getfilesettings": { - "command": "hf ntag424 getfilesettings", + "hf ntag424 getfs": { + "command": "hf ntag424 getfs", "description": "Read and print file settings for file", "notes": [ - "hf ntag424 getfilesettings -f 2" + "hf ntag424 getfs --fileno 2" ], "offline": false, "options": [ "-h, --help This help", - "-f, --file <dec> File number" + "--fileno <dec> File number" ], - "usage": "hf ntag424 getfilesettings [-h] -f <dec>" + "usage": "hf ntag424 getfs [-h] --fileno <dec>" }, "hf ntag424 info": { "command": "hf ntag424 info", @@ -6878,19 +6878,21 @@ "command": "hf ntag424 read", "description": "Read and print data from file on NTAG424 tag. Will authenticate if key information is provided.", "notes": [ - "hf ntag424 read -f 2 -n 0 -k 00000000000000000000000000000000 -o 0 -l 256" + "hf ntag424 read --fileno 1 --keyno 0 -k 00000000000000000000000000000000 -o 0 -l 32", + "hf ntag424 read --fileno 2 --keyno 0 -k 00000000000000000000000000000000 -o 0 -l 256", + "hf ntag424 read --fileno 3 --keyno 3 -k 00000000000000000000000000000000 -o 0 -l 128 -m encrypt" ], "offline": false, "options": [ "-h, --help This help", - "-f, --fileno <dec> File number (1-3), (default 2)", - "-n, --keyno <dec> Key number", + "--fileno <1|2|3> File number", + "--keyno <dec> Key number", "-k, --key <hex> Key for authentication (HEX 16 bytes)", - "-o, --offset <dec> Offset to read in file (default 0)", + "-o, --offset <dec> Offset to read in file (def 0)", "-l, --length <dec> Number of bytes to read", - "-m, --cmode <plain|mac|encrypt> Communicaton mode" + "-m, --cmode <plain|mac|encrypt> Communication mode" ], - "usage": "hf ntag424 read [-h] -f <dec> [-n <dec>] [-k <hex>] [-o <dec>] -l <dec> [-m <plain|mac|encrypt>]" + "usage": "hf ntag424 read [-h] --fileno <1|2|3> [--keyno <dec>] [-k <hex>] [-o <dec>] -l <dec> [-m <plain|mac|encrypt>]" }, "hf ntag424 view": { "command": "hf ntag424 view", @@ -6910,19 +6912,20 @@ "command": "hf ntag424 write", "description": "Write data to file on NTAG424 tag. Will authenticate if key information is provided.", "notes": [ - "hf ntag424 write -f 2 -n 0 -k 00000000000000000000000000000000 -o 0 -d 1122334455667788" + "hf ntag424 write --fileno 2 --keyno 0 -k 00000000000000000000000000000000 -o 0 -d 1122334455667788", + "hf ntag424 write --fileno 3 --keyno 3 -k 00000000000000000000000000000000 -o 0 -d 1122334455667788 -m encrypt" ], "offline": false, "options": [ "-h, --help This help", - "-f, --fileno <dec> File number (1-3), (default 2)", - "-n, --keyno <dec> Key number", + "--fileno <1|2|3> File number (def 2)", + "--keyno <dec> Key number", "-k, --key <hex> Key for authentication (HEX 16 bytes)", - "-o, --offset <dec> Offset to write in file (default 0)", + "-o, --offset <dec> Offset to write in file (def 0)", "-d, --data <hex> Data to write", - "-m, --cmode <plain|mac|encrypt> Communicaton mode" + "-m, --cmode <plain|mac|encrypt> Communication mode" ], - "usage": "hf ntag424 write [-h] -f <dec> [-n <dec>] [-k <hex>] [-o <dec>] -d <hex> [-m <plain|mac|encrypt>]" + "usage": "hf ntag424 write [-h] --fileno <1|2|3> [--keyno <dec>] [-k <hex>] [-o <dec>] -d <hex> [-m <plain|mac|encrypt>]" }, "hf plot": { "command": "hf plot", @@ -12014,6 +12017,6 @@ "metadata": { "commands_extracted": 696, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-10-29T15:43:05" + "extracted_on": "2023-10-30T12:11:34" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 43eeb3535..49d34875d 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -649,13 +649,13 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`hf ntag424 help `|Y |`This help` -|`hf ntag424 info `|N |`Tag information (not implemented yet)` +|`hf ntag424 info `|N |`Tag information` |`hf ntag424 view `|Y |`Display content from tag dump file` |`hf ntag424 auth `|N |`Test authentication with key` |`hf ntag424 read `|N |`Read file` |`hf ntag424 write `|N |`Write file` -|`hf ntag424 getfilesettings`|N |`Get file settings` -|`hf ntag424 changefilesettings`|N |`Change file settings` +|`hf ntag424 getfs `|N |`Get file settings` +|`hf ntag424 changefs `|N |`Change file settings` |`hf ntag424 changekey `|N |`Change key` From f47fb2f74d0fba2f1be6ff51c654852e6ced4f7f Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 30 Oct 2023 16:07:13 +0100 Subject: [PATCH 0645/1034] adapt data bmap to handle calls without -m. --- CHANGELOG.md | 3 ++- client/src/cmddata.c | 16 +++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70e2bbe24..025595e2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,10 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `data bmap` - now default `-m` is 8 (@iceman1001) - Added support for NTAG424 cards. (@dankar) - Additional fixes to configcard code for keyroll mode based on nfc-iclass output (@Antiklesys) + - Changed lf sampling - improved the performance (@yah01) - Added `bind` option for network connections to specify the outbound address and port (@wh201906) - Changed `lf em 4x05 dump` - now supports the `--ns` nosave parameter (@iceman1001) - Fixed some wrong synchronization waits in usb_write() to increase the communication speed (@wh201906) @@ -41,7 +43,6 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Modified `hf iclass configcard` to only support online mode (@Antiklesys) - Modified `hf iclass configcard` command to generate config cards without a cardhelper module by porting the contents of blocks 6 & 7 from nfc-iclass (@Antiklesys) - Fixed `hf iclass info` command showing incorrectly in offline mode (@Antiklesys) - - Changed lf sampling - improved the performance (@yah01) ## [Raccoon.4.17140][2023-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 01292cf65..cca476c20 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3457,6 +3457,7 @@ static int CmdBinaryMap(const char *Cmd) { "Breaks down a hex value to binary according a template\n" " data bmap -d 16 -m 4,4\n" "This will give two rows each with four bits", + "data bmap -d 3B\n" "data bmap -d 3B -m 2,5,1\n" ); @@ -3480,7 +3481,11 @@ static int CmdBinaryMap(const char *Cmd) { char bits[(8 * 4) + 1] = {0}; hextobinstring_n(bits, (char *)hex, hlen); - int x = 0; + if (tlen == 0) { + template[0] = '8'; + template[1] = 0; + } + char *token = strtok((char *)template, ","); // header @@ -3490,19 +3495,16 @@ static int CmdBinaryMap(const char *Cmd) { uint8_t i = 0; uint8_t cnt = 1; + int x = 0; while (token != NULL) { sscanf(token, "%d", &x); - if (i) { - PrintAndLogEx(INFO, " %d | %*.s" NOLF, cnt, i * 3, " "); - } else { - PrintAndLogEx(INFO, " %d | " NOLF, cnt); - } + PrintAndLogEx(INFO, " %d | %*.s" NOLF, cnt, i * 3, " "); // incease with previous offset x += i; - for (; i < x; i++) { + for (; i < (uint8_t)x; i++) { PrintAndLogEx(NORMAL, "%c " NOLF, bits[7 - i]); } From 5ca29246e9f8c04e8f6fa462ec0896ee46e8c73c Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 30 Oct 2023 16:08:42 +0100 Subject: [PATCH 0646/1034] fix GH code alert --- client/src/cipurse/cipursecore.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/client/src/cipurse/cipursecore.c b/client/src/cipurse/cipursecore.c index 563fda14f..143c2b1f9 100644 --- a/client/src/cipurse/cipursecore.c +++ b/client/src/cipurse/cipursecore.c @@ -104,9 +104,7 @@ static int CIPURSEExchangeEx(bool activate_field, bool leave_field_on, sAPDU_t a memcpy(result, securedata, rlen); } - if (result_len != NULL) { - *result_len = rlen; - } + *result_len = rlen; if (sw != NULL) { *sw = isw; From 82e7830e5b56eb9fdfb5b651e6e5b16739f160ba Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 30 Oct 2023 22:20:55 +0100 Subject: [PATCH 0647/1034] style --- armsrc/i2c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/i2c.c b/armsrc/i2c.c index 8c9110150..2848509a1 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -725,7 +725,7 @@ void I2C_print_status(void) { uint8_t major, minor; if (I2C_get_version(&major, &minor) == PM3_SUCCESS) { - Dbprintf(" version................. v%x.%02d ( %s )" + Dbprintf(" version................. v%d.%02d ( %s )" , major , minor , ((major == 4) && (minor == 42)) ? _GREEN_("ok") : _RED_("Outdated") From 75a70cbf53a9f3c65fe5e4185d940432cf13f5d8 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 30 Oct 2023 22:22:22 +0100 Subject: [PATCH 0648/1034] updating json format for mfc --- client/src/fileutils.c | 76 +++++++++++++++++++++++++++++++++++++++++- client/src/fileutils.h | 2 ++ 2 files changed, 77 insertions(+), 1 deletion(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 14b596c6d..9da6dc923 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -288,7 +288,7 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, break; } case jsfMfc_v2: { - iso14a_mf_extdump_t *xdump = (iso14a_mf_extdump_t *)(void *) data; + iso14a_mf_extdump_t *xdump = (iso14a_mf_extdump_t *)data; JsonSaveStr(root, "FileType", "mfc v2"); JsonSaveBufAsHexCompact(root, "$.Card.UID", xdump->card_info.uid, xdump->card_info.uidlen); JsonSaveBufAsHexCompact(root, "$.Card.ATQA", xdump->card_info.atqa, 2); @@ -326,6 +326,48 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, } break; } + case jsfMfc_v3: { + iso14a_mf_dump_ev1_t *xdump = (iso14a_mf_dump_ev1_t *)data; + JsonSaveStr(root, "FileType", "mfc v3"); + JsonSaveBufAsHexCompact(root, "$.Card.UID", xdump->card.ev1.uid, xdump->card.ev1.uidlen); + JsonSaveBufAsHexCompact(root, "$.Card.ATQA", xdump->card.ev1.atqa, 2); + JsonSaveBufAsHexCompact(root, "$.Card.SAK", &(xdump->card.ev1.sak), 1); + JsonSaveBufAsHexCompact(root, "$.Card.ATS", xdump->card.ev1.ats, sizeof(xdump->card.ev1.ats_len)); + JsonSaveBufAsHexCompact(root, "$.Card.SIGNATURE", xdump->card.ev1.signature, sizeof(xdump->card.ev1.signature)); + + for (size_t i = 0; i < (xdump->dumplen / MFBLOCK_SIZE); i++) { + + snprintf(path, sizeof(path), "$.blocks.%zu", i); + JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE], MFBLOCK_SIZE); + if (mfIsSectorTrailer(i)) { + snprintf(path, sizeof(path), "$.SectorKeys.%d.KeyA", mfSectorNum(i)); + JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE], 6); + + snprintf(path, sizeof(path), "$.SectorKeys.%d.KeyB", mfSectorNum(i)); + JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE + 10], 6); + + uint8_t *adata = &xdump->dump[i * MFBLOCK_SIZE + 6]; + snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditions", mfSectorNum(i)); + JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE + 6], 4); + + snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditionsText.block%zu", mfSectorNum(i), i - 3); + JsonSaveStr(root, path, mfGetAccessConditionsDesc(0, adata)); + + snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditionsText.block%zu", mfSectorNum(i), i - 2); + JsonSaveStr(root, path, mfGetAccessConditionsDesc(1, adata)); + + snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditionsText.block%zu", mfSectorNum(i), i - 1); + JsonSaveStr(root, path, mfGetAccessConditionsDesc(2, adata)); + + snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditionsText.block%zu", mfSectorNum(i), i); + JsonSaveStr(root, path, mfGetAccessConditionsDesc(3, adata)); + + snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditionsText.UserData", mfSectorNum(i)); + JsonSaveBufAsHexCompact(root, path, &adata[3], 1); + } + } + break; + } case jsfFudan: { iso14a_mf_extdump_t *xdump = (iso14a_mf_extdump_t *)(void *) data; JsonSaveStr(root, "FileType", "fudan"); @@ -1123,6 +1165,38 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } + if (!strcmp(ctype, "mfc v3")) { + + JsonLoadBufAsHex(root, "$.Card.UID", udata.mfc_ev1->card.ev1.uid, udata.mfc_ev1->card.ev1.uidlen, datalen); + JsonLoadBufAsHex(root, "$.Card.ATQA", udata.mfc_ev1->card.ev1.atqa, 2, datalen); + JsonLoadBufAsHex(root, "$.Card.SAK", &(udata.mfc_ev1->card.ev1.sak), 1, datalen); + JsonLoadBufAsHex(root, "$.Card.ATS", udata.mfc_ev1->card.ev1.ats, sizeof(udata.mfc_ev1->card.ev1.ats_len), datalen); + JsonLoadBufAsHex(root, "$.Card.SIGNATURE", udata.mfc_ev1->card.ev1.signature, sizeof(udata.mfc_ev1->card.ev1.signature), datalen); + + *datalen = MFU_DUMP_PREFIX_LENGTH; + + size_t sptr = 0; + for (int i = 0; i < maxdatalen; i++) { + + if (sptr + MFBLOCK_SIZE > maxdatalen) { + retval = PM3_EMALLOC; + goto out; + } + + snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); + uint8_t block[MFBLOCK_SIZE]; + JsonLoadBufAsHex(root, blocks, block, MFBLOCK_SIZE, &len); + if (!len) + break; + + memcpy(&udata.bytes[sptr], block, MFBLOCK_SIZE); + sptr += len; + } + + *datalen = sptr; + goto out; + } + if (!strcmp(ctype, "fudan")) { size_t sptr = 0; for (int i = 0; i < maxdatalen; i++) { diff --git a/client/src/fileutils.h b/client/src/fileutils.h index 88d624788..0552ed5f3 100644 --- a/client/src/fileutils.h +++ b/client/src/fileutils.h @@ -39,12 +39,14 @@ typedef union { mfu_dump_t *mfu; topaz_tag_t *topaz; iso14a_mf_extdump_t *mfc; + iso14a_mf_dump_ev1_t *mfc_ev1; } udata_t; typedef enum { jsfRaw, jsfCardMemory, jsfMfc_v2, + jsfMfc_v3, jsfMfuMemory, jsfHitag, jsfIclass, From 094882454deb53d1ae0ec152f3a956558b6ad5cd Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 30 Oct 2023 22:23:07 +0100 Subject: [PATCH 0649/1034] missing structs --- include/mifare.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/include/mifare.h b/include/mifare.h index b59b29c8d..7e393fe5f 100644 --- a/include/mifare.h +++ b/include/mifare.h @@ -56,12 +56,33 @@ typedef struct { uint8_t ats[256]; } PACKED iso14a_card_select_t; +typedef struct { + uint8_t uid[10]; + uint8_t uidlen; + uint8_t atqa[2]; + uint8_t sak; + uint8_t ats_len; + uint8_t ats[256]; + uint8_t signature[32]; +} PACKED iso14a_card_select_ev1_t; + typedef struct { iso14a_card_select_t card_info; uint8_t *dump; uint16_t dumplen; } iso14a_mf_extdump_t; +typedef struct { + union + { + iso14a_card_select_t mfc; + iso14a_card_select_ev1_t ev1; + } card; + uint16_t dumplen; + uint8_t *dump; +} iso14a_mf_dump_ev1_t; + + typedef enum ISO14A_COMMAND { ISO14A_CONNECT = (1 << 0), ISO14A_NO_DISCONNECT = (1 << 1), From 5b7486553f8e265173569b7f6f7212a44dd8ca1e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 30 Oct 2023 22:53:41 +0100 Subject: [PATCH 0650/1034] remove unused param in desfire_print_signature --- client/src/cmdhfmfdes.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 59abee163..3f71fa405 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -372,8 +372,7 @@ static int mfdes_get_info(mfdes_info_res_t *info) { } // --- GET SIGNATURE -static int desfire_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signature, size_t signature_len, nxp_cardtype_t card_type) { - (void)card_type; +static int desfire_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signature, size_t signature_len) { if (uid == NULL) { PrintAndLogEx(DEBUG, "UID=NULL"); @@ -742,7 +741,7 @@ static int CmdHF14ADesInfo(const char *Cmd) { res = DesfireReadSignature(&dctx, 0x00, signature, &signature_len); if (res == PM3_SUCCESS) { if (signature_len == 56) - desfire_print_signature(info.uid, info.uidlen, signature, signature_len, cardtype); + desfire_print_signature(info.uid, info.uidlen, signature, signature_len); else PrintAndLogEx(WARNING, "--- GetSignature returned wrong signature length: %zu", signature_len); } else { From f2ed7d12991a9162d05dbcdfef529a0f29104552 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski <henrygab@users.noreply.github.com> Date: Mon, 30 Oct 2023 14:24:15 -0700 Subject: [PATCH 0651/1034] Fix mf file loading error Code was incorrectly checking if loop variable `i` was greater than maximum data length, rather than checking current buffer pointer. --- client/src/fileutils.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 14b596c6d..11d6ee590 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1087,6 +1087,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz // Proxmark3 settings file. No if (!strcmp(ctype, "settings")) { + PrintAndLogEx(ERR, "ERROR: json " _YELLOW_("%s") " appears to be Proxmark3 settings file ... not a valid dump file.", preferredName); goto out; } @@ -1102,21 +1103,26 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz // depricated mfcard if (!strcmp(ctype, "mfcard") || !strcmp(ctype, "mfc v2")) { size_t sptr = 0; - for (int i = 0; i < maxdatalen; i++) { - + // load blocks (i) from 0..N, but check sptr against total data length, not `i` + for (int i = 0; sptr < maxdatalen; i++) { if (sptr + MFBLOCK_SIZE > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%4d (%04x) block (i)=%4d (%04x) sptr=%4d (%04x) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); - uint8_t block[MFBLOCK_SIZE]; + uint8_t block[MFBLOCK_SIZE] = {0}; // ensure zero-filled when partial block of data read JsonLoadBufAsHex(root, blocks, block, MFBLOCK_SIZE, &len); - if (!len) + if (!len) { + PrintAndLogEx(WARNING, "WARNING: json %s block %d has zero-length data ... file parsing stopped", ctype, i); break; + } else if (len != MFBLOCK_SIZE) { + PrintAndLogEx(WARNING, "WARNING: json %s block %d only has %d bytes, expected %d (will fill with zero data)", ctype, i, len, MFBLOCK_SIZE); + } memcpy(&udata.bytes[sptr], block, MFBLOCK_SIZE); - sptr += len; + sptr += MFBLOCK_SIZE; // always increment pointer by the full block size, even if only partial data read from dump file } *datalen = sptr; From 9835543a2f8b8563e2c46ccf0f887c33bba72435 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 31 Oct 2023 00:03:53 +0100 Subject: [PATCH 0652/1034] apply fix for v3 --- client/src/fileutils.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 4b397013e..dbb8c8b27 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1157,7 +1157,8 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz uint8_t block[MFBLOCK_SIZE] = {0}; // ensure zero-filled when partial block of data read JsonLoadBufAsHex(root, blocks, block, MFBLOCK_SIZE, &len); if (!len) { - PrintAndLogEx(WARNING, "WARNING: json %s block %d has zero-length data ... file parsing stopped", ctype, i); + PrintAndLogEx(WARNING, "WARNING: json %s block %d has zero-length data", ctype, i); + PrintAndLogEx(INFO, "file parsing stopped"); break; } else if (len != MFBLOCK_SIZE) { PrintAndLogEx(WARNING, "WARNING: json %s block %d only has %d bytes, expected %d (will fill with zero data)", ctype, i, len, MFBLOCK_SIZE); @@ -1182,21 +1183,27 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz *datalen = MFU_DUMP_PREFIX_LENGTH; size_t sptr = 0; - for (int i = 0; i < maxdatalen; i++) { - + // load blocks (i) from 0..N, but check sptr against total data length, not `i` + for (int i = 0; sptr < maxdatalen; i++) { if (sptr + MFBLOCK_SIZE > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%4d (%04x) block (i)=%4d (%04x) sptr=%4d (%04x) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); - uint8_t block[MFBLOCK_SIZE]; + uint8_t block[MFBLOCK_SIZE] = {0}; // ensure zero-filled when partial block of data read JsonLoadBufAsHex(root, blocks, block, MFBLOCK_SIZE, &len); - if (!len) + if (!len) { + PrintAndLogEx(WARNING, "WARNING: json %s block %d has zero-length data", ctype, i); + PrintAndLogEx(INFO, "file parsing stopped"); break; + } else if (len != MFBLOCK_SIZE) { + PrintAndLogEx(WARNING, "WARNING: json %s block %d only has %d bytes, expected %d (will fill with zero data)", ctype, i, len, MFBLOCK_SIZE); + } memcpy(&udata.bytes[sptr], block, MFBLOCK_SIZE); - sptr += len; + sptr += MFBLOCK_SIZE; // always increment pointer by the full block size, even if only partial data read from dump file } *datalen = sptr; From f523d2917b5f5e7c27f26617aaf57695c99aec09 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 31 Oct 2023 00:43:44 +0100 Subject: [PATCH 0653/1034] fix string formatters --- client/src/fileutils.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index dbb8c8b27..7e7f0f945 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1148,7 +1148,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz // load blocks (i) from 0..N, but check sptr against total data length, not `i` for (int i = 0; sptr < maxdatalen; i++) { if (sptr + MFBLOCK_SIZE > maxdatalen) { - PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%4d (%04x) block (i)=%4d (%04x) sptr=%4d (%04x) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } @@ -1161,7 +1161,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz PrintAndLogEx(INFO, "file parsing stopped"); break; } else if (len != MFBLOCK_SIZE) { - PrintAndLogEx(WARNING, "WARNING: json %s block %d only has %d bytes, expected %d (will fill with zero data)", ctype, i, len, MFBLOCK_SIZE); + PrintAndLogEx(WARNING, "WARNING: json %s block %d only has %zu bytes, expected %d (will fill with zero data)", ctype, i, len, MFBLOCK_SIZE); } memcpy(&udata.bytes[sptr], block, MFBLOCK_SIZE); @@ -1186,7 +1186,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz // load blocks (i) from 0..N, but check sptr against total data length, not `i` for (int i = 0; sptr < maxdatalen; i++) { if (sptr + MFBLOCK_SIZE > maxdatalen) { - PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%4d (%04x) block (i)=%4d (%04x) sptr=%4d (%04x) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } @@ -1199,7 +1199,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz PrintAndLogEx(INFO, "file parsing stopped"); break; } else if (len != MFBLOCK_SIZE) { - PrintAndLogEx(WARNING, "WARNING: json %s block %d only has %d bytes, expected %d (will fill with zero data)", ctype, i, len, MFBLOCK_SIZE); + PrintAndLogEx(WARNING, "WARNING: json %s block %d only has %zu bytes, expected %d (will fill with zero data)", ctype, i, len, MFBLOCK_SIZE); } memcpy(&udata.bytes[sptr], block, MFBLOCK_SIZE); From c48f3054831e9e4e027fb1cd50f1fe2a1a2d72bf Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 31 Oct 2023 00:58:50 +0100 Subject: [PATCH 0654/1034] more verbose output for failues when loading json files --- client/src/fileutils.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 7e7f0f945..a62a1d2bf 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1129,7 +1129,8 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz // Proxmark3 settings file. No if (!strcmp(ctype, "settings")) { - PrintAndLogEx(ERR, "ERROR: json " _YELLOW_("%s") " appears to be Proxmark3 settings file ... not a valid dump file.", preferredName); + PrintAndLogEx(ERR, "ERROR: json " _YELLOW_("%s") " appears to be Proxmark3 settings file", preferredName); + PrintAndLogEx(INFO, "not a valid dump file"); goto out; } @@ -1214,6 +1215,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t sptr = 0; for (int i = 0; i < maxdatalen; i++) { if (sptr + 4 > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } @@ -1247,6 +1249,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t sptr = 0; for (int i = 0; i < 256; i++) { if (sptr + 4 > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } @@ -1270,6 +1273,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t sptr = 0; for (size_t i = 0; i < (maxdatalen / 4); i++) { if (sptr + 4 > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } @@ -1290,6 +1294,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t sptr = 0; for (size_t i = 0; i < (maxdatalen / PICOPASS_BLOCK_SIZE); i++) { if (sptr + PICOPASS_BLOCK_SIZE > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } @@ -1309,6 +1314,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t sptr = 0; for (size_t i = 0; i < (maxdatalen / 4); i++) { if (sptr + 4 > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } @@ -1328,6 +1334,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t sptr = 0; for (size_t i = 0; i < (maxdatalen / 4); i++) { if (sptr + 4 > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } @@ -1354,6 +1361,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t sptr = 0; for (int i = 0; i < (maxdatalen / 4); i++) { if (sptr + 4 > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } @@ -1374,6 +1382,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t sptr = 0; for (int i = 0; i < (maxdatalen / 8); i++) { if (sptr + 8 > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } @@ -1394,6 +1403,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t sptr = 0; for (int i = 0; i < 64; i++) { if (sptr + 16 > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } @@ -1426,6 +1436,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz for (int i = 0; i < (TOPAZ_STATIC_MEMORY / 8); i++) { if (sptr + TOPAZ_BLOCK_SIZE > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } @@ -1461,6 +1472,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz for (size_t i = 0; i < 64; i++) { if ((sptr + (AES_KEY_LEN * 2)) > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); break; } @@ -1522,6 +1534,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t sptr = 0; for (int i = 0; i < (maxdatalen / 4); i++) { if (sptr + 4 > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } @@ -1542,6 +1555,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t sptr = 0; for (int i = 0; i < (maxdatalen / 32); i++) { if (sptr + 32 > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } @@ -1562,6 +1576,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t sptr = 0; for (int i = 0; i < (maxdatalen / 8); i++) { if (sptr + 8 > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } @@ -1593,6 +1608,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t sptr = 0; for (int i = 0; i < (maxdatalen / 16); i++) { if (sptr + 16 > maxdatalen) { + PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; goto out; } From 17844afe9dc2b8dedc959904e157df0827811bd5 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 31 Oct 2023 01:07:19 +0100 Subject: [PATCH 0655/1034] more verbose output for failues when loading json files --- client/src/fileutils.c | 74 +++++++++++++++++++++++++----------------- 1 file changed, 44 insertions(+), 30 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index a62a1d2bf..15246e154 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1088,6 +1088,17 @@ int loadFileMCT_safe(const char *preferredName, void **pdata, size_t *datalen) { return retval; } +static int load_file_sanity(char *s, uint32_t datalen, int i, size_t len) { + if (len == 0) { + PrintAndLogEx(WARNING, "WARNING: json %s block %d has zero-length data", s, i); + PrintAndLogEx(INFO, "file parsing stopped"); + return false; + } else if (len != datalen) { + PrintAndLogEx(WARNING, "WARNING: json %s block %d only has %zu bytes, expected %d (will fill with zero data)", s, i, len, datalen); + } + return true; +} + int loadFileJSON(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, void (*callback)(json_t *)) { return loadFileJSONex(preferredName, data, maxdatalen, datalen, true, callback); } @@ -1157,12 +1168,8 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); uint8_t block[MFBLOCK_SIZE] = {0}; // ensure zero-filled when partial block of data read JsonLoadBufAsHex(root, blocks, block, MFBLOCK_SIZE, &len); - if (!len) { - PrintAndLogEx(WARNING, "WARNING: json %s block %d has zero-length data", ctype, i); - PrintAndLogEx(INFO, "file parsing stopped"); + if (load_file_sanity(ctype, MFBLOCK_SIZE, i, len) == false) { break; - } else if (len != MFBLOCK_SIZE) { - PrintAndLogEx(WARNING, "WARNING: json %s block %d only has %zu bytes, expected %d (will fill with zero data)", ctype, i, len, MFBLOCK_SIZE); } memcpy(&udata.bytes[sptr], block, MFBLOCK_SIZE); @@ -1195,12 +1202,9 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); uint8_t block[MFBLOCK_SIZE] = {0}; // ensure zero-filled when partial block of data read JsonLoadBufAsHex(root, blocks, block, MFBLOCK_SIZE, &len); - if (!len) { - PrintAndLogEx(WARNING, "WARNING: json %s block %d has zero-length data", ctype, i); - PrintAndLogEx(INFO, "file parsing stopped"); + + if (load_file_sanity(ctype, MFBLOCK_SIZE, i, len) == false) { break; - } else if (len != MFBLOCK_SIZE) { - PrintAndLogEx(WARNING, "WARNING: json %s block %d only has %zu bytes, expected %d (will fill with zero data)", ctype, i, len, MFBLOCK_SIZE); } memcpy(&udata.bytes[sptr], block, MFBLOCK_SIZE); @@ -1222,9 +1226,10 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 4, &len); - if (!len) - break; + if (load_file_sanity(ctype, 4, i, len) == false) { + break; + } sptr += len; } @@ -1256,8 +1261,10 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); JsonLoadBufAsHex(root, blocks, &udata.mfu->data[sptr], MFU_BLOCK_SIZE, &len); - if (!len) + + if (load_file_sanity(ctype, MFU_BLOCK_SIZE, i, len) == false) { break; + } sptr += len; udata.mfu->pages++; @@ -1280,8 +1287,9 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%zu", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 4, &len); - if (!len) + if (load_file_sanity(ctype, 4, i, len) == false) { break; + } sptr += len; } @@ -1301,8 +1309,9 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%zu", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], PICOPASS_BLOCK_SIZE, &len); - if (!len) + if (load_file_sanity(ctype, PICOPASS_BLOCK_SIZE, i, len) == false) { break; + } sptr += len; } @@ -1321,8 +1330,9 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%zu", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 4, &len); - if (!len) + if (load_file_sanity(ctype, 4, i, len) == false) { break; + } sptr += len; } @@ -1341,8 +1351,9 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%zu", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 4, &len); - if (!len) + if (load_file_sanity(ctype, 4, i, len) == false) { break; + } sptr += len; } @@ -1368,8 +1379,9 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 4, &len); - if (!len) + if (load_file_sanity(ctype, 4, i, len) == false) { break; + } sptr += len; } @@ -1389,9 +1401,9 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 8, &len); - if (!len) + if (load_file_sanity(ctype, 8, i, len) == false) { break; - + } sptr += len; } @@ -1410,9 +1422,9 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 16, &len); - if (!len) + if (load_file_sanity(ctype, 16, i, len) == false) { break; - + } sptr += len; } @@ -1443,8 +1455,9 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); JsonLoadBufAsHex(root, blocks, &udata.topaz->data_blocks[sptr][0], TOPAZ_BLOCK_SIZE, &len); - if (!len) + if (load_file_sanity(ctype, TOPAZ_BLOCK_SIZE, i, len) == false) { break; + } sptr += len; // ICEMAN todo: add dynamic memory. @@ -1541,9 +1554,9 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 4, &len); - if (!len) + if (load_file_sanity(ctype, 4, i, len) == false) { break; - + } sptr += len; } @@ -1562,9 +1575,9 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 32, &len); - if (!len) + if (load_file_sanity(ctype, 32, i, len) == false) { break; - + } sptr += len; } @@ -1583,9 +1596,9 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 8, &len); - if (!len) + if (load_file_sanity(ctype, 8, i, len) == false) { break; - + } sptr += len; } @@ -1615,8 +1628,9 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 16, &len); - if (!len) + if (load_file_sanity(ctype, 16, i, len) == false) { break; + } sptr += len; } From 939d3d4a93a82bf4ae04bbb9cbaf4c148d998a69 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski <henrygab@users.noreply.github.com> Date: Mon, 30 Oct 2023 17:26:07 -0700 Subject: [PATCH 0656/1034] Remove incorrect message (my own regression) --- client/src/fileutils.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 15246e154..10f1af49c 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1138,10 +1138,8 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz char ctype[100] = {0}; JsonLoadStr(root, "$.FileType", ctype); - // Proxmark3 settings file. No + // Proxmark3 settings file. Nothing to do except call the callback function if (!strcmp(ctype, "settings")) { - PrintAndLogEx(ERR, "ERROR: json " _YELLOW_("%s") " appears to be Proxmark3 settings file", preferredName); - PrintAndLogEx(INFO, "not a valid dump file"); goto out; } From ee3a223e37fd32bc6aeb3d573bd3135d8b26ef2c Mon Sep 17 00:00:00 2001 From: Daniel Karling <danne@dekay.se> Date: Mon, 30 Oct 2023 20:47:17 +0100 Subject: [PATCH 0657/1034] Implemented 'info' command for NTAG424 --- client/src/cmdhfmfdes.c | 4 + client/src/cmdhfmfdes.h | 2 + client/src/cmdhfntag424.c | 166 +++++++++++++++++++++++++++++++++++--- 3 files changed, 160 insertions(+), 12 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 3f71fa405..e77f8ebd9 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -439,6 +439,10 @@ static int desfire_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signat return PM3_SUCCESS; } +int DesfirePrintSignature(uint8_t *uid, uint8_t uidlen, uint8_t *signature, size_t signature_len) { + return desfire_print_signature(uid, uidlen, signature, signature_len, DESFIRE_UNKNOWN); +} + static void swap24(uint8_t *data) { if (data == NULL) return; uint8_t tmp = data[0]; diff --git a/client/src/cmdhfmfdes.h b/client/src/cmdhfmfdes.h index 88d2cdb32..461823250 100644 --- a/client/src/cmdhfmfdes.h +++ b/client/src/cmdhfmfdes.h @@ -28,6 +28,8 @@ char *getVersionStr(uint8_t major, uint8_t minor); int getKeySettings(uint8_t *aid); */ +int DesfirePrintSignature(uint8_t *uid, uint8_t uidlen, uint8_t *signature, size_t signature_len); + // Ev1 card limits #define MAX_NUM_KEYS 0x0F #define MAX_APPLICATION_COUNT 28 diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index 835f88adc..7d81765ce 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -32,18 +32,21 @@ #include "ui.h" #include "util.h" #include "crc32.h" +#include "cmdhfmfdes.h" #define NTAG424_MAX_BYTES 412 // NTAG424 commands currently implemented -#define NTAG424_CMD_GET_FILE_SETTINGS 0xF5 -#define NTAG424_CMD_CHANGE_FILE_SETTINGS 0x5F -#define NTAG424_CMD_CHANGE_KEY 0xC4 -#define NTAG424_CMD_READ_DATA 0xAD -#define NTAG424_CMD_WRITE_DATA 0x8D -#define NTAG424_CMD_AUTHENTICATE_EV2_FIRST_PART_1 0x71 -#define NTAG424_CMD_AUTHENTICATE_EV2_FIRST_PART_2 0xAF +#define NTAG424_CMD_GET_FILE_SETTINGS 0xF5 +#define NTAG424_CMD_CHANGE_FILE_SETTINGS 0x5F +#define NTAG424_CMD_CHANGE_KEY 0xC4 +#define NTAG424_CMD_READ_DATA 0xAD +#define NTAG424_CMD_WRITE_DATA 0x8D +#define NTAG424_CMD_AUTHENTICATE_EV2_FIRST 0x71 +#define NTAG424_CMD_MORE_DATA 0xAF +#define NTAG424_CMD_GET_VERSION 0x60 +#define NTAG424_CMD_GET_SIGNATURE 0x3C // // Original from https://github.com/rfidhacking/node-sdm/ @@ -117,6 +120,62 @@ typedef struct { ntag424_file_sdm_settings_t optional_sdm_settings; } file_settings_write_t; +// -------------- Version information structs ------------------------- +typedef struct { + uint8_t vendor_id; + uint8_t type; + uint8_t sub_type; + uint8_t major_version; + uint8_t minor_version; + uint8_t storage_size; + uint8_t protocol; +} PACKED ntag424_version_information_t; + +typedef struct { + uint8_t uid[7]; + uint8_t batch[4]; + uint8_t fab_key_high : 4; + uint8_t batchno : 4; + uint8_t week_prod : 7; + uint8_t fab_key_low : 1; + uint8_t year_prod; +} PACKED ntag424_production_information_t; + +typedef struct { + ntag424_version_information_t hardware; + ntag424_version_information_t software; + ntag424_production_information_t production; +} ntag424_full_version_information_t; + + +static void ntag424_print_version_information(ntag424_version_information_t *version) { + PrintAndLogEx(INFO, " vendor id: " _GREEN_("%02X"), version->vendor_id); + PrintAndLogEx(INFO, " type: " _GREEN_("%02X"), version->type); + PrintAndLogEx(INFO, " sub type: " _GREEN_("%02X"), version->sub_type); + PrintAndLogEx(INFO, " version: " _GREEN_("%d.%d"), version->major_version, version->minor_version); + PrintAndLogEx(INFO, "storage size: " _GREEN_("%02X"), version->storage_size); + PrintAndLogEx(INFO, " protocol: " _GREEN_("%02X"), version->protocol); +} + +static void ntag424_print_production_information(ntag424_production_information_t *version) { + PrintAndLogEx(INFO, " uid: " _GREEN_("%s"), sprint_hex(version->uid, sizeof(version->uid))); + PrintAndLogEx(INFO, " batch: " _GREEN_("%s"), sprint_hex(version->batch, sizeof(version->batch))); + PrintAndLogEx(INFO, " batchno: " _GREEN_("%02X"), version->batchno); + PrintAndLogEx(INFO, " fab key: " _GREEN_("%02X"), (version->fab_key_high << 1) | version->fab_key_low); + PrintAndLogEx(INFO, " date: week " _GREEN_("%02X") " / " _GREEN_("20%02X"), version->week_prod, version->year_prod); +} + +static void ntag424_print_full_version_information(ntag424_full_version_information_t *version) { + PrintAndLogEx(INFO, "--- " _CYAN_("Hardware version information:"), fileno); + ntag424_print_version_information(&version->hardware); + + PrintAndLogEx(INFO, "--- " _CYAN_("Software version information:"), fileno); + ntag424_print_version_information(&version->software); + + PrintAndLogEx(INFO, "--- " _CYAN_("Production information:"), fileno); + ntag424_print_production_information(&version->production); +} + // Currently unused functions, commented out due to -Wunused-function /*static void ntag424_file_settings_set_access_rights(ntag424_file_settings_t *settings, uint8_t read_write_key, uint8_t change_key, @@ -473,7 +532,7 @@ static int ntag424_auth_first_step(uint8_t keyno, uint8_t *key, uint8_t *out) { APDU_t apdu = { .cla = 0x90, - .ins = NTAG424_CMD_AUTHENTICATE_EV2_FIRST_PART_1, + .ins = NTAG424_CMD_AUTHENTICATE_EV2_FIRST, .lc = 0x02, .data = key_number }; @@ -500,7 +559,7 @@ static int ntag424_auth_first_step(uint8_t keyno, uint8_t *key, uint8_t *out) { static int ntag424_auth_second_step(uint8_t *challenge, uint8_t *response_out) { APDU_t apdu = { .cla = 0x90, - .ins = NTAG424_CMD_AUTHENTICATE_EV2_FIRST_PART_2, + .ins = NTAG424_CMD_MORE_DATA, .lc = 0x20, .data = challenge, }; @@ -691,6 +750,63 @@ static int ntag424_read_data(uint8_t fileno, uint16_t offset, uint16_t num_bytes return PM3_SUCCESS; } +static int ntag424_get_version(ntag424_full_version_information_t *version) { + APDU_t apdu = { + .cla = 0x90, + .ins = NTAG424_CMD_GET_VERSION, + }; + + + uint8_t response[256]; + + int response_length = sizeof(ntag424_version_information_t) + 2; + if (ntag424_exchange_apdu(&apdu, 0, response, &response_length, COMM_PLAIN, NULL, 0x91, 0xAF) != PM3_SUCCESS) { + return PM3_ESOFT; + } + memcpy(&version->hardware, response, sizeof(ntag424_version_information_t)); + + APDU_t continue_apdu = { + .cla = 0x90, + .ins = NTAG424_CMD_MORE_DATA, + }; + + response_length = sizeof(ntag424_version_information_t) + 2; + if (ntag424_exchange_apdu(&continue_apdu, 0, response, &response_length, COMM_PLAIN, NULL, 0x91, 0xAF) != PM3_SUCCESS) { + return PM3_ESOFT; + } + memcpy(&version->software, response, sizeof(ntag424_version_information_t)); + + response_length = sizeof(ntag424_production_information_t) + 2; + if (ntag424_exchange_apdu(&continue_apdu, 0, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00) != PM3_SUCCESS) { + return PM3_ESOFT; + } + memcpy(&version->production, response, sizeof(ntag424_production_information_t)); + + return PM3_SUCCESS; +} + +#define NXP_SIGNATURE_LENGTH 56 +#define NXP_SIGNATURE_ID 0x00 + +static int ntag424_get_signature(uint8_t *signature_out) { + uint8_t signature_id = NXP_SIGNATURE_ID; + APDU_t apdu = { + .cla = 0x90, + .ins = NTAG424_CMD_GET_SIGNATURE, + .lc = 1, + .data = &signature_id, + }; + + int response_length = NXP_SIGNATURE_LENGTH + 2; + // This is a weird one. Datasheet claims this command should result in 91 00, but cards, and the AN12196 + // document shows 91 90 on success. + if (ntag424_exchange_apdu(&apdu, 1, signature_out, &response_length, COMM_PLAIN, NULL, 0x91, 0x90) != PM3_SUCCESS) { + return PM3_ESOFT; + } + + return PM3_SUCCESS; +} + static int ntag424_change_key(uint8_t keyno, uint8_t *new_key, uint8_t *old_key, uint8_t version, ntag424_session_keys_t *session_keys) { // -------- Calculate xor and crc uint8_t key[16] = {0}; @@ -787,9 +903,35 @@ static int CmdHF_ntag424_info(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); CLIParserFree(ctx); - PrintAndLogEx(INFO, "not implemented yet"); - PrintAndLogEx(INFO, "Feel free to contribute!"); - return PM3_SUCCESS; + + if (SelectCard14443A_4(false, true, NULL) != PM3_SUCCESS) { + PrintAndLogEx(ERR, "Failed to select card"); + DropField(); + return PM3_ERFTRANS; + } + + if (ntag424_select_application() != PM3_SUCCESS) { + DropField(); + return PM3_ESOFT; + } + + ntag424_full_version_information_t version = {0}; + if (ntag424_get_version(&version) != PM3_SUCCESS) { + DropField(); + return PM3_ESOFT; + } + ntag424_print_full_version_information(&version); + + uint8_t signature[NXP_SIGNATURE_LENGTH]; + int res = ntag424_get_signature(signature); + DropField(); + + if (res == PM3_SUCCESS) { + PrintAndLogEx(INFO, "--- " _CYAN_("NXP originality signature:"), fileno); + DesfirePrintSignature(version.production.uid, 7, signature, NXP_SIGNATURE_LENGTH); + } + + return res; } static int ntag424_cli_get_auth_information(CLIParserContext *ctx, int keyno_index, int key_index, int *keyno, uint8_t *key_out) { From 5a750da4ef6b5f38998f3a509d4a608e2f5ffcc3 Mon Sep 17 00:00:00 2001 From: Daniel Karling <danne@dekay.se> Date: Tue, 31 Oct 2023 08:19:17 +0100 Subject: [PATCH 0658/1034] Removed wrapper for desfire_print_signature Not needed now when the unused parameter is gone. --- client/src/cmdhfmfdes.c | 6 +----- client/src/cmdhfmfdes.h | 2 +- client/src/cmdhfntag424.c | 2 +- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index e77f8ebd9..33240ea62 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -372,7 +372,7 @@ static int mfdes_get_info(mfdes_info_res_t *info) { } // --- GET SIGNATURE -static int desfire_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signature, size_t signature_len) { +int desfire_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signature, size_t signature_len) { if (uid == NULL) { PrintAndLogEx(DEBUG, "UID=NULL"); @@ -439,10 +439,6 @@ static int desfire_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signat return PM3_SUCCESS; } -int DesfirePrintSignature(uint8_t *uid, uint8_t uidlen, uint8_t *signature, size_t signature_len) { - return desfire_print_signature(uid, uidlen, signature, signature_len, DESFIRE_UNKNOWN); -} - static void swap24(uint8_t *data) { if (data == NULL) return; uint8_t tmp = data[0]; diff --git a/client/src/cmdhfmfdes.h b/client/src/cmdhfmfdes.h index 461823250..80b3e8c93 100644 --- a/client/src/cmdhfmfdes.h +++ b/client/src/cmdhfmfdes.h @@ -28,7 +28,7 @@ char *getVersionStr(uint8_t major, uint8_t minor); int getKeySettings(uint8_t *aid); */ -int DesfirePrintSignature(uint8_t *uid, uint8_t uidlen, uint8_t *signature, size_t signature_len); +int desfire_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signature, size_t signature_len); // Ev1 card limits #define MAX_NUM_KEYS 0x0F diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index 7d81765ce..c2d14b744 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -928,7 +928,7 @@ static int CmdHF_ntag424_info(const char *Cmd) { if (res == PM3_SUCCESS) { PrintAndLogEx(INFO, "--- " _CYAN_("NXP originality signature:"), fileno); - DesfirePrintSignature(version.production.uid, 7, signature, NXP_SIGNATURE_LENGTH); + desfire_print_signature(version.production.uid, 7, signature, NXP_SIGNATURE_LENGTH); } return res; From ae6ba395b4840556a487a720ad60a7c478bcd97d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 1 Nov 2023 02:43:10 +0100 Subject: [PATCH 0659/1034] added support for loading flipper MFC/MFU dump files.\nFixed NFC DECODE to identify and handle MFU dump files properly --- CHANGELOG.md | 2 + client/src/cmdnfc.c | 45 ++++-- client/src/fileutils.c | 315 ++++++++++++++++++++++++++++++++++++++++- client/src/fileutils.h | 40 +++++- client/src/nfc/ndef.c | 20 ++- 5 files changed, 394 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 025595e2c..17f7a1583 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `nfc decode` - now properly handles MFU dump files (@iceman1001) + - Added support for loading Flipper MCT/MFU dump files (@iceman1001) - Changed `data bmap` - now default `-m` is 8 (@iceman1001) - Added support for NTAG424 cards. (@dankar) - Additional fixes to configcard code for keyroll mode based on nfc-iclass output (@Antiklesys) diff --git a/client/src/cmdnfc.c b/client/src/cmdnfc.c index 431464076..70ca53e97 100644 --- a/client/src/cmdnfc.c +++ b/client/src/cmdnfc.c @@ -113,26 +113,45 @@ static int CmdNfcDecode(const char *Cmd) { return res; } - // convert from MFC dump file to a pure NDEF byte array - if (HasMADKey(dump)) { - PrintAndLogEx(SUCCESS, "MFC dump file detected. Converting..."); - uint8_t ndef[4096] = {0}; - uint16_t ndeflen = 0; + uint8_t *tmp = dump; - if (convert_mad_to_arr(dump, bytes_read, ndef, &ndeflen) != PM3_SUCCESS) { - PrintAndLogEx(FAILED, "Failed converting, aborting..."); - free(dump); - return PM3_ESOFT; + // if not MIFARE Classic default sizes, assume its Ultralight/NTAG + if (bytes_read != 4096 || bytes_read != 2048 || bytes_read != 1024 || bytes_read != 320) { + + uint8_t **pd = &tmp; + mfu_df_e df = detect_mfu_dump_format(pd, verbose); + if (df == MFU_DF_OLDBIN) { + tmp += OLD_MFU_DUMP_PREFIX_LENGTH + (4 * 4); + bytes_read -= OLD_MFU_DUMP_PREFIX_LENGTH + ( 4 * 4); + } else if (df == MFU_DF_NEWBIN) { + tmp += MFU_DUMP_PREFIX_LENGTH + (4 * 4); + bytes_read -= MFU_DUMP_PREFIX_LENGTH + ( 4 * 4); } + pd = NULL; - memcpy(dump, ndef, ndeflen); - bytes_read = ndeflen; + } else { + + // convert from MFC dump file to a pure NDEF byte array + if (HasMADKey(tmp)) { + PrintAndLogEx(SUCCESS, "MFC dump file detected. Converting..."); + uint8_t ndef[4096] = {0}; + uint16_t ndeflen = 0; + + if (convert_mad_to_arr(tmp, bytes_read, ndef, &ndeflen) != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "Failed converting, aborting..."); + free(dump); + return PM3_ESOFT; + } + + memcpy(tmp, ndef, ndeflen); + bytes_read = ndeflen; + } } - res = NDEFDecodeAndPrint(dump, bytes_read, verbose); + res = NDEFDecodeAndPrint(tmp, bytes_read, verbose); if (res != PM3_SUCCESS) { PrintAndLogEx(INFO, "Trying to parse NDEF records w/o NDEF header"); - res = NDEFRecordsDecodeAndPrint(dump, bytes_read, verbose); + res = NDEFRecordsDecodeAndPrint(tmp, bytes_read, verbose); } free(dump); diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 10f1af49c..ad2cbd36d 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -86,6 +86,8 @@ DumpFileType_t getfiletype(const char *filename) { o = DICTIONARY; } else if (str_endswith(s, "mct")) { o = MCT; + } else if (str_endswith(s, "nfc")) { + o = NFC; } else { // mfd, trc, trace is binary o = BIN; @@ -1001,6 +1003,195 @@ int loadFileEML_safe(const char *preferredName, void **pdata, size_t *datalen) { return retval; } +int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, nfc_df_e ft) { + + if (data == NULL) return PM3_EINVARG; + + *datalen = 0; + int retval = PM3_SUCCESS; + + char *path; + int res = searchFile(&path, RESOURCES_SUBDIR, preferredName, "", false); + if (res != PM3_SUCCESS) { + return PM3_EFILE; + } + + FILE *f = fopen(path, "r"); + if (!f) { + PrintAndLogEx(WARNING, "file not found or locked `" _YELLOW_("%s") "`", path); + free(path); + return PM3_EFILE; + } + free(path); + + // 256 + 2 newline chars + 1 null terminator + char line[256 + 2 + 1]; + memset(line, 0, sizeof(line)); + + udata_t udata = (udata_t)data; + int n = 0; + + while (!feof(f)) { + + memset(line, 0, sizeof(line)); + + if (fgets(line, sizeof(line), f) == NULL) { + if (feof(f)) + break; + + fclose(f); + PrintAndLogEx(FAILED, "File reading error."); + return PM3_EFILE; + } + + if (line[0] == '#') + continue; + + strcleanrn(line, sizeof(line)); + str_lower(line); + + + if (str_startswith(line, "uid:")) { + if (ft == NFC_DF_MFC) { + param_gethex_to_eol(line + 4, 0, udata.mfc->card_info.uid, sizeof(udata.mfc->card_info.uid), &n); + } + continue; + } + + if (str_startswith(line, "atqa:")) { + if (ft == NFC_DF_MFC) { + param_gethex_to_eol(line + 5, 0, udata.mfc->card_info.atqa, sizeof(udata.mfc->card_info.atqa), &n); + } + continue; + } + + if (str_startswith(line, "sak:")) { + if (ft == NFC_DF_MFC) { + int sak = 0; + sscanf(line, "sak: %d", &sak); + udata.mfc->card_info.sak = sak & 0xFF; + } + continue; + } + + if (str_startswith(line, "signature:")) { + if (ft == NFC_DF_MFC) { + } else if (ft == NFC_DF_MFU) { + param_gethex_to_eol(line + 11, 0, udata.mfu->signature, sizeof(udata.mfu->signature), &n); + } + continue; + } + + if (str_startswith(line, "mifare version:")) { + if (ft == NFC_DF_MFC) { + } else if (ft == NFC_DF_MFU) { + param_gethex_to_eol(line + 16, 0, udata.mfu->version, sizeof(udata.mfu->version), &n); + } + continue; + } + + if (str_startswith(line, "counter 0:")) { + int no = 0; + sscanf(line, "counter 0: %d", &no); + if (ft == NFC_DF_MFC) { + } else if (ft == NFC_DF_MFU) { + udata.mfu->counter_tearing[0][0] = no & 0xFF; + udata.mfu->counter_tearing[0][1] = no & 0xFF; + udata.mfu->counter_tearing[0][2] = no & 0xFF; + } + continue; + } + + if (str_startswith(line, "tearing 0:")) { + if (ft == NFC_DF_MFC) { + } else if (ft == NFC_DF_MFU) { + sscanf(line, "tearing 0: %02x", &n); + udata.mfu->counter_tearing[0][3] = n & 0xFF; + } + continue; + } + + if (str_startswith(line, "counter 1:")) { + int no = 0; + sscanf(line, "counter 1: %d", &no); + if (ft == NFC_DF_MFC) { + } else if (ft == NFC_DF_MFU) { + udata.mfu->counter_tearing[1][0] = no & 0xFF; + udata.mfu->counter_tearing[1][1] = no & 0xFF; + udata.mfu->counter_tearing[1][2] = no & 0xFF; + } + continue; + } + + if (str_startswith(line, "tearing 1:")) { + if (ft == NFC_DF_MFC) { + } else if (ft == NFC_DF_MFU) { + sscanf(line, "tearing 1: %02x", &n); + udata.mfu->counter_tearing[1][3] = n & 0xFF; + } + continue; + } + + if (str_startswith(line, "counter 2:")) { + int no = 0; + sscanf(line, "counter 2: %d", &no); + if (ft == NFC_DF_MFC) { + } else if (ft == NFC_DF_MFU) { + udata.mfu->counter_tearing[2][0] = no & 0xFF; + udata.mfu->counter_tearing[2][1] = no & 0xFF; + udata.mfu->counter_tearing[2][2] = no & 0xFF; + } + continue; + } + + if (str_startswith(line, "tearing 2:")) { + if (ft == NFC_DF_MFC) { + } else if (ft == NFC_DF_MFU) { + sscanf(line, "tearing 2: %02x", &n); + udata.mfu->counter_tearing[2][3] = n & 0xFF; + } + continue; + } + + if (str_startswith(line, "pages total:")) { + sscanf(line, "pages total: %d", &n); + if (ft == NFC_DF_MFC) { + } else if (ft == NFC_DF_MFU) { + udata.mfu->pages = n; + } + continue; + } + + // Page 0: 04 10 56 CA + if (str_startswith(line, "page ")) { + int pageno = 0; + sscanf(line, "page %d:", &pageno); + + char *p = line; + while (*p++ != ':') {}; + + if (ft == NFC_DF_MFC) { + param_gethex_to_eol(p, 0, udata.mfc->dump + (pageno * MFBLOCK_SIZE), MFBLOCK_SIZE, &n); + udata.mfc->dumplen += MFBLOCK_SIZE; + } else if (ft == NFC_DF_MFU) { + param_gethex_to_eol(p, 0, udata.mfu->data + (pageno * MFU_BLOCK_SIZE), MFU_BLOCK_SIZE, &n); + *datalen += MFU_BLOCK_SIZE; + } + continue; + } + } + + // add header length + if (ft == NFC_DF_MFC) { + } else if (ft == NFC_DF_MFU) { + *datalen += MFU_DUMP_PREFIX_LENGTH; + } + + fclose(f); + PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from NFC file `" _YELLOW_("%s") "`", *datalen, preferredName); + return retval; +} + int loadFileMCT_safe(const char *preferredName, void **pdata, size_t *datalen) { char *path; int res = searchFile(&path, RESOURCES_SUBDIR, preferredName, "", false); @@ -1926,7 +2117,7 @@ int loadFileBinaryKey(const char *preferredName, const char *suffix, void **keya return PM3_SUCCESS; } -mfu_df_e detect_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose) { +mfu_df_e detect_mfu_dump_format(uint8_t **dump, bool verbose) { mfu_df_e retval = MFU_DF_UNKNOWN; uint8_t bcc0, bcc1; @@ -1979,6 +2170,99 @@ mfu_df_e detect_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose) { return retval; } +nfc_df_e detect_nfc_dump_format(const char *preferredName, bool verbose) { + + char *path; + int res = searchFile(&path, RESOURCES_SUBDIR, preferredName, "", false); + if (res != PM3_SUCCESS) { + return PM3_EFILE; + } + + FILE *f = fopen(path, "r"); + if (!f) { + PrintAndLogEx(WARNING, "file not found or locked `" _YELLOW_("%s") "`", path); + free(path); + return PM3_EFILE; + } + free(path); + + nfc_df_e retval = NFC_DF_UNKNOWN; + + char line[256]; + memset(line, 0, sizeof(line)); + + while (!feof(f)) { + + memset(line, 0, sizeof(line)); + + if (fgets(line, sizeof(line), f) == NULL) { + if (feof(f)) { + break; + } + + fclose(f); + PrintAndLogEx(FAILED, "File reading error."); + return PM3_EFILE; + } + + strcleanrn(line, sizeof(line)); + str_lower(line); + + if (str_startswith(line, "device type: ntag")) { + retval = NFC_DF_MFU; + break; + } + if (str_startswith(line, "device type: mifare classic")) { + retval = NFC_DF_MFC; + break; + } + if (str_startswith(line, "device type: mifare desfire")) { + retval = NFC_DF_MFDES; + break; + } + if (str_startswith(line, "device type: iso14443-3a")) { + retval = NFC_DF_14_3A; + break; + } + if (str_startswith(line, "device type: iso14443-3b")) { + retval = NFC_DF_14_3B; + break; + } + if (str_startswith(line, "device type: iso14443-4a")) { + retval = NFC_DF_14_4A; + break; + } + } + fclose(f); + + if (verbose) { + switch (retval) { + case NFC_DF_MFU: + PrintAndLogEx(INFO, "detected MIFARE Ultralight / NTAG based dump format"); + break; + case NFC_DF_MFC: + PrintAndLogEx(INFO, "detected MIFARE Classic based dump format"); + break; + case NFC_DF_MFDES: + PrintAndLogEx(INFO, "detected MIFARE DESFire based dump format"); + break; + case NFC_DF_14_3A: + PrintAndLogEx(INFO, "detected ISO14443-3A based dump format. No data available"); + break; + case NFC_DF_14_3B: + PrintAndLogEx(INFO, "detected ISO14443-3B based dump format. No data available"); + break; + case NFC_DF_14_4A: + PrintAndLogEx(INFO, "detected ISO14443-4A based dump format. No data available"); + break; + case NFC_DF_UNKNOWN: + PrintAndLogEx(WARNING, "failed to detected dump format"); + break; + } + } + return retval; +} + static int convert_plain_mfu_dump(uint8_t **dump, size_t *dumplen, bool verbose) { mfu_dump_t *mfu = (mfu_dump_t *) calloc(sizeof(mfu_dump_t), sizeof(uint8_t)); @@ -2055,7 +2339,7 @@ int convert_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose) { return PM3_EINVARG; } - mfu_df_e res = detect_mfu_dump_format(dump, dumplen, verbose); + mfu_df_e res = detect_mfu_dump_format(dump, verbose); switch (res) { case MFU_DF_NEWBIN: @@ -2419,15 +2703,38 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl break; } case DICTIONARY: { - PrintAndLogEx(ERR, "Only BIN/EML/JSON formats allowed"); + PrintAndLogEx(ERR, "Only <BIN|EML|JSON|MCT|NFC formats allowed"); return PM3_EINVARG; } case MCT: { res = loadFileMCT_safe(fn, pdump, dumplen); break; } - } + case NFC: { + nfc_df_e foo = detect_nfc_dump_format(fn, true); + if (foo == NFC_DF_MFC || foo == NFC_DF_MFU) { + *pdump = calloc(maxdumplen, sizeof(uint8_t)); + if (*pdump == NULL) { + PrintAndLogEx(WARNING, "Fail, cannot allocate memory"); + return PM3_EMALLOC; + } + res = loadFileNFC_safe(fn, *pdump, maxdumplen, dumplen, foo); + if (res == PM3_SUCCESS) { + return res; + } + + free(*pdump); + + if (res == PM3_ESOFT) { + PrintAndLogEx(WARNING, "NFC objects failed to load"); + } else if (res == PM3_EMALLOC) { + PrintAndLogEx(WARNING, "Wrong size of allocated memory. Check your parameters"); + } + } + break; + } + } return res; } diff --git a/client/src/fileutils.h b/client/src/fileutils.h index 0552ed5f3..4e679be5a 100644 --- a/client/src/fileutils.h +++ b/client/src/fileutils.h @@ -79,8 +79,26 @@ typedef enum { JSON, DICTIONARY, MCT, + NFC, } DumpFileType_t; +typedef enum { + MFU_DF_UNKNOWN, + MFU_DF_PLAINBIN, + MFU_DF_OLDBIN, + MFU_DF_NEWBIN +} mfu_df_e; + +typedef enum { + NFC_DF_UNKNOWN, + NFC_DF_MFC, + NFC_DF_MFU, + NFC_DF_MFDES, + NFC_DF_14_3A, + NFC_DF_14_3B, + NFC_DF_14_4A +} nfc_df_e; + int fileExists(const char *filename); // set a path in the path list g_session.defaultPaths @@ -185,6 +203,19 @@ int loadFileEML_safe(const char *preferredName, void **pdata, size_t *datalen); */ int loadFileMCT_safe(const char *preferredName, void **pdata, size_t *datalen); +/** + * @brief Utility function to load data from a textfile (NFC). This method takes a preferred name. + * E.g. dumpdata-15.nfc + * + * @param preferredName + * @param data The data array to store the loaded bytes from file + * @param maxdatalen maximum size of data array in bytes + * @param datalen the number of bytes loaded from file + * @param ft + * @return 0 for ok, 1 for failz +*/ +int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, nfc_df_e ft); + /** * @brief Utility function to load data from a JSON textfile. This method takes a preferred name. * E.g. dumpdata-15.json @@ -244,12 +275,6 @@ int loadFileDICTIONARY_safe(const char *preferredName, void **pdata, uint8_t key int loadFileBinaryKey(const char *preferredName, const char *suffix, void **keya, void **keyb, size_t *alen, size_t *blen); -typedef enum { - MFU_DF_UNKNOWN, - MFU_DF_PLAINBIN, - MFU_DF_OLDBIN, - MFU_DF_NEWBIN -} mfu_df_e; /** * @brief Utility function to check and convert plain mfu dump format to new mfu binary format. * plain dumps doesn't have any extra data, like version, signature etc. @@ -259,7 +284,8 @@ typedef enum { * @return PM3_SUCCESS for ok, PM3_ESOFT for fails */ int convert_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose); -mfu_df_e detect_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose); +mfu_df_e detect_mfu_dump_format(uint8_t **dump, bool verbose); +nfc_df_e detect_nfc_dump_format(const char *preferredName, bool verbose); int searchAndList(const char *pm3dir, const char *ext); int searchFile(char **foundpath, const char *pm3dir, const char *searchname, const char *suffix, bool silent); diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index 17e5dd9d8..6134faa11 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -649,7 +649,7 @@ static int ndefDecodeMime_wifi_wsc(NDEFHeader_t *ndef) { if (ndef->Payload[pos] != 0x10) { n -= 1; - pos -= 1; + pos += 1; continue; } @@ -775,6 +775,16 @@ static int ndefDecodeMime_wifi_wsc(NDEFHeader_t *ndef) { pos += 2; pos += len; } + + // unknown the length. + if (memcmp(&ndef->Payload[pos], "\x10\x3C", 2) == 0) { + uint8_t len = 3; + PrintAndLogEx(INFO, "Unknown......... %s", sprint_hex(&ndef->Payload[pos + 2], len)); + n -= 2; + n -= len; + pos += 2; + pos += len; + } } /* @@ -1182,6 +1192,7 @@ int NDEFDecodeAndPrint(uint8_t *ndef, size_t ndefLen, bool verbose) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("NDEF parsing") " ----------------"); while (indx < ndefLen) { + switch (ndef[indx]) { case 0x00: { indx++; @@ -1246,8 +1257,9 @@ int NDEFDecodeAndPrint(uint8_t *ndef, size_t ndefLen, bool verbose) { PrintAndLogEx(SUCCESS, "Found NDEF message ( " _YELLOW_("%u") " bytes )", len); int res = NDEFRecordsDecodeAndPrint(&ndef[indx], len, verbose); - if (res != PM3_SUCCESS) + if (res != PM3_SUCCESS) { return res; + } } indx += len; @@ -1269,9 +1281,9 @@ int NDEFDecodeAndPrint(uint8_t *ndef, size_t ndefLen, bool verbose) { return PM3_SUCCESS; } default: { - if (verbose) + if (verbose) { PrintAndLogEx(ERR, "unknown tag 0x%02x", ndef[indx]); - + } return PM3_ESOFT; } } From a92e712cfeba80290bfdc030a2c2321f6dd28dcc Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 1 Nov 2023 03:06:10 +0100 Subject: [PATCH 0660/1034] fix bad comparisions --- client/src/cmdnfc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/src/cmdnfc.c b/client/src/cmdnfc.c index 70ca53e97..4e827a32b 100644 --- a/client/src/cmdnfc.c +++ b/client/src/cmdnfc.c @@ -116,7 +116,10 @@ static int CmdNfcDecode(const char *Cmd) { uint8_t *tmp = dump; // if not MIFARE Classic default sizes, assume its Ultralight/NTAG - if (bytes_read != 4096 || bytes_read != 2048 || bytes_read != 1024 || bytes_read != 320) { + if ( bytes_read != MIFARE_4K_MAX_BYTES + && bytes_read != MIFARE_2K_MAX_BYTES + && bytes_read != MIFARE_1K_MAX_BYTES + && bytes_read != MIFARE_MINI_MAX_BYTES) { uint8_t **pd = &tmp; mfu_df_e df = detect_mfu_dump_format(pd, verbose); From 98b7bd75d635d8ff36685178b6ee638de78a292e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 1 Nov 2023 03:17:48 +0100 Subject: [PATCH 0661/1034] seems nfc mifare classic dumps used "blocks" instead... --- client/src/fileutils.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index ad2cbd36d..d1fc62a09 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1050,7 +1050,6 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s strcleanrn(line, sizeof(line)); str_lower(line); - if (str_startswith(line, "uid:")) { if (ft == NFC_DF_MFC) { param_gethex_to_eol(line + 4, 0, udata.mfc->card_info.uid, sizeof(udata.mfc->card_info.uid), &n); @@ -1151,7 +1150,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s udata.mfu->counter_tearing[2][3] = n & 0xFF; } continue; - } + } if (str_startswith(line, "pages total:")) { sscanf(line, "pages total: %d", &n); @@ -1170,15 +1169,27 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s char *p = line; while (*p++ != ':') {}; - if (ft == NFC_DF_MFC) { - param_gethex_to_eol(p, 0, udata.mfc->dump + (pageno * MFBLOCK_SIZE), MFBLOCK_SIZE, &n); - udata.mfc->dumplen += MFBLOCK_SIZE; - } else if (ft == NFC_DF_MFU) { + if (ft == NFC_DF_MFU) { param_gethex_to_eol(p, 0, udata.mfu->data + (pageno * MFU_BLOCK_SIZE), MFU_BLOCK_SIZE, &n); *datalen += MFU_BLOCK_SIZE; } continue; - } + } + + // Block 0: 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF + if (str_startswith(line, "block ")) { + int blockno = 0; + sscanf(line, "block %d:", &blockno); + + char *p = line; + while (*p++ != ':') {}; + + if (ft == NFC_DF_MFC) { + param_gethex_to_eol(p, 0, udata.mfc->dump + (blockno * MFBLOCK_SIZE), MFBLOCK_SIZE, &n); + udata.mfc->dumplen += MFBLOCK_SIZE; + } + continue; + } } // add header length From 9f439fde4ec89d7a6e95caad45ab91e60472d29d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 1 Nov 2023 07:57:13 +0100 Subject: [PATCH 0662/1034] fix some ndef decoding --- client/src/nfc/ndef.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index 6134faa11..a8227ddc7 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -634,6 +634,7 @@ static const char *ndef_wifi_auth_lookup(uint8_t *d) { return ""; } + static int ndefDecodeMime_wifi_wsc(NDEFHeader_t *ndef) { if (ndef->PayloadLen == 0) { PrintAndLogEx(INFO, "no payload"); @@ -713,7 +714,7 @@ static int ndefDecodeMime_wifi_wsc(NDEFHeader_t *ndef) { pos += len; } - // NETWORK_IDX + // NETWORK_IDX - always set to 1, deprecated if (memcmp(&ndef->Payload[pos], "\x10\x26", 2) == 0) { // 10 26 00 01 01 uint8_t len = 3; @@ -776,10 +777,16 @@ static int ndefDecodeMime_wifi_wsc(NDEFHeader_t *ndef) { pos += len; } - // unknown the length. + // rf-bands if (memcmp(&ndef->Payload[pos], "\x10\x3C", 2) == 0) { uint8_t len = 3; - PrintAndLogEx(INFO, "Unknown......... %s", sprint_hex(&ndef->Payload[pos + 2], len)); + + if (ndef->Payload[pos + 2 + 2] == 0x01) { + PrintAndLogEx(INFO, "RF Bands........ %s ( " _YELLOW_("2.4 GHZ")" )", sprint_hex(&ndef->Payload[pos + 2], len)); + } else if (ndef->Payload[pos + 2 + 2] == 0x02) { + PrintAndLogEx(INFO, "RF Bands........ %s ( " _YELLOW_("5.0 GHZ")" )", sprint_hex(&ndef->Payload[pos + 2], len)); + } + n -= 2; n -= len; pos += 2; @@ -791,13 +798,12 @@ static int ndefDecodeMime_wifi_wsc(NDEFHeader_t *ndef) { ap-channel 0, 6 + credential device-name - mac-address + manufacturer model-name model-number + oob-password primary-device-type - rf-bands secondary-device-type-list serial-number ssid From 6423a0ec764ecf4f9687717a071589ec4a51c39d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 1 Nov 2023 07:57:45 +0100 Subject: [PATCH 0663/1034] file extension needed? --- client/src/fileutils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index d1fc62a09..c46dfec75 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1011,7 +1011,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s int retval = PM3_SUCCESS; char *path; - int res = searchFile(&path, RESOURCES_SUBDIR, preferredName, "", false); + int res = searchFile(&path, RESOURCES_SUBDIR, preferredName, ".nfc", false); if (res != PM3_SUCCESS) { return PM3_EFILE; } From c08e26ca26f644e0836e2fdfc8fcada755ec5f6f Mon Sep 17 00:00:00 2001 From: Jean-Michel Picod <jmichel@google.com> Date: Wed, 1 Nov 2023 10:40:53 +0100 Subject: [PATCH 0664/1034] Add alternative chip ID --- client/src/cmdhw.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index 7b2693781..c591e1703 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -45,6 +45,7 @@ static void lookup_chipid_short(uint32_t iChipID, uint32_t mem_used) { case 0x270B0A40: asBuff = "AT91SAM7S512 Rev A"; break; + case 0x270B0A4E: case 0x270B0A4F: asBuff = "AT91SAM7S512 Rev B"; break; @@ -153,6 +154,7 @@ static void lookupChipID(uint32_t iChipID, uint32_t mem_used) { case 0x270B0A40: asBuff = "AT91SAM7S512 Rev A"; break; + case 0x270B0A4E: case 0x270B0A4F: asBuff = "AT91SAM7S512 Rev B"; break; From 74347be52c27aa2f88d730323f01fcd75cea873c Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 1 Nov 2023 17:03:10 +0100 Subject: [PATCH 0665/1034] added O3 compiler param --- tools/mfkey/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/mfkey/Makefile b/tools/mfkey/Makefile index fd69207a7..7f5371132 100644 --- a/tools/mfkey/Makefile +++ b/tools/mfkey/Makefile @@ -1,7 +1,7 @@ MYSRCPATHS = ../../common ../../common/crapto1 MYSRCS = crypto1.c crapto1.c bucketsort.c MYINCLUDES = -I../../include -I../../common -MYCFLAGS = +MYCFLAGS = -O3 MYDEFS = BINS = mfkey32 mfkey32v2 mfkey64 From 865052b4e90ab12337230c890f44b3c079b9da74 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 1 Nov 2023 23:05:35 +0100 Subject: [PATCH 0666/1034] compiler optimizations from user @np0 --- tools/mfkey/Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/mfkey/Makefile b/tools/mfkey/Makefile index 7f5371132..22f87f207 100644 --- a/tools/mfkey/Makefile +++ b/tools/mfkey/Makefile @@ -1,9 +1,10 @@ MYSRCPATHS = ../../common ../../common/crapto1 MYSRCS = crypto1.c crapto1.c bucketsort.c MYINCLUDES = -I../../include -I../../common -MYCFLAGS = -O3 +MYCFLAGS = -O3 -funroll-all-loops --param max-completely-peeled-insns=1000 --param max-completely-peel-times=10000 MYDEFS = +#BINS = mfkey32 mfkey32v2 mfkey64 staticnested BINS = mfkey32 mfkey32v2 mfkey64 INSTALLTOOLS = $(BINS) @@ -19,3 +20,4 @@ endif mfkey32 : $(OBJDIR)/mfkey32.o $(MYOBJS) mfkey32v2 : $(OBJDIR)/mfkey32v2.o $(MYOBJS) mfkey64 : $(OBJDIR)/mfkey64.o $(MYOBJS) +#staticnested : $(OBJDIR)/staticnested.o $(MYOBJS) From c398e20eef31340ece44710e9c6d2a7641f72bae Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 1 Nov 2023 23:20:14 +0100 Subject: [PATCH 0667/1034] macos --- tools/mfkey/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/mfkey/Makefile b/tools/mfkey/Makefile index 22f87f207..985df47be 100644 --- a/tools/mfkey/Makefile +++ b/tools/mfkey/Makefile @@ -1,7 +1,7 @@ MYSRCPATHS = ../../common ../../common/crapto1 MYSRCS = crypto1.c crapto1.c bucketsort.c MYINCLUDES = -I../../include -I../../common -MYCFLAGS = -O3 -funroll-all-loops --param max-completely-peeled-insns=1000 --param max-completely-peel-times=10000 +MYCFLAGS = -O3 --param max-completely-peeled-insns=1000 --param max-completely-peel-times=10000 MYDEFS = #BINS = mfkey32 mfkey32v2 mfkey64 staticnested From e94be650aab93a3e9747decfbd97770fa2c48b90 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 1 Nov 2023 23:21:04 +0100 Subject: [PATCH 0668/1034] clean --- tools/mfkey/Makefile | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/mfkey/Makefile b/tools/mfkey/Makefile index 985df47be..fd6e37fd9 100644 --- a/tools/mfkey/Makefile +++ b/tools/mfkey/Makefile @@ -4,7 +4,6 @@ MYINCLUDES = -I../../include -I../../common MYCFLAGS = -O3 --param max-completely-peeled-insns=1000 --param max-completely-peel-times=10000 MYDEFS = -#BINS = mfkey32 mfkey32v2 mfkey64 staticnested BINS = mfkey32 mfkey32v2 mfkey64 INSTALLTOOLS = $(BINS) @@ -20,4 +19,3 @@ endif mfkey32 : $(OBJDIR)/mfkey32.o $(MYOBJS) mfkey32v2 : $(OBJDIR)/mfkey32v2.o $(MYOBJS) mfkey64 : $(OBJDIR)/mfkey64.o $(MYOBJS) -#staticnested : $(OBJDIR)/staticnested.o $(MYOBJS) From b17f5ef45c6bb9166f3808773d90288f254018ae Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 1 Nov 2023 23:39:42 +0100 Subject: [PATCH 0669/1034] fix nfc MFC dump file loading --- client/src/fileutils.c | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index c46dfec75..eae4de0cb 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1030,6 +1030,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s udata_t udata = (udata_t)data; int n = 0; + uint32_t counter = 0; while (!feof(f)) { @@ -1052,14 +1053,14 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s if (str_startswith(line, "uid:")) { if (ft == NFC_DF_MFC) { - param_gethex_to_eol(line + 4, 0, udata.mfc->card_info.uid, sizeof(udata.mfc->card_info.uid), &n); +// param_gethex_to_eol(line + 4, 0, udata.mfc->card_info.uid, sizeof(udata.mfc->card_info.uid), &n); } continue; } if (str_startswith(line, "atqa:")) { if (ft == NFC_DF_MFC) { - param_gethex_to_eol(line + 5, 0, udata.mfc->card_info.atqa, sizeof(udata.mfc->card_info.atqa), &n); +// param_gethex_to_eol(line + 5, 0, udata.mfc->card_info.atqa, sizeof(udata.mfc->card_info.atqa), &n); } continue; } @@ -1068,7 +1069,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s if (ft == NFC_DF_MFC) { int sak = 0; sscanf(line, "sak: %d", &sak); - udata.mfc->card_info.sak = sak & 0xFF; +// udata.mfc->card_info.sak = sak & 0xFF; } continue; } @@ -1166,8 +1167,14 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s int pageno = 0; sscanf(line, "page %d:", &pageno); + if (strcmp(line, "??") == 0) { + PrintAndLogEx(INFO, "Missing data detected in page %i, skipping...", pageno); + continue; + } + char *p = line; while (*p++ != ':') {}; + p++; if (ft == NFC_DF_MFU) { param_gethex_to_eol(p, 0, udata.mfu->data + (pageno * MFU_BLOCK_SIZE), MFU_BLOCK_SIZE, &n); @@ -1181,19 +1188,28 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s int blockno = 0; sscanf(line, "block %d:", &blockno); + if (strcmp(line, "??") == 0) { + PrintAndLogEx(INFO, "Missing data detected in block %i, skipping...", blockno); + continue; + } + char *p = line; while (*p++ != ':') {}; + p++; if (ft == NFC_DF_MFC) { - param_gethex_to_eol(p, 0, udata.mfc->dump + (blockno * MFBLOCK_SIZE), MFBLOCK_SIZE, &n); - udata.mfc->dumplen += MFBLOCK_SIZE; + uint8_t block[MFBLOCK_SIZE] = {0}; + param_gethex_to_eol(p, 0, block, MFBLOCK_SIZE, &n); + memcpy(&udata.bytes[(blockno * MFBLOCK_SIZE)], block, MFBLOCK_SIZE); } + counter += MFBLOCK_SIZE; continue; } } // add header length if (ft == NFC_DF_MFC) { + *datalen = counter; } else if (ft == NFC_DF_MFU) { *datalen += MFU_DUMP_PREFIX_LENGTH; } @@ -2725,7 +2741,11 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl nfc_df_e foo = detect_nfc_dump_format(fn, true); if (foo == NFC_DF_MFC || foo == NFC_DF_MFU) { - *pdump = calloc(maxdumplen, sizeof(uint8_t)); + if (foo == NFC_DF_MFC) { + *pdump = calloc(maxdumplen, sizeof(uint8_t)); + } else { + *pdump = calloc(maxdumplen, sizeof(uint8_t)); + } if (*pdump == NULL) { PrintAndLogEx(WARNING, "Fail, cannot allocate memory"); return PM3_EMALLOC; From e5d2fc3fa791e5397c7fccf93af2b82129c05d78 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 1 Nov 2023 23:40:10 +0100 Subject: [PATCH 0670/1034] some color to MFU dump output --- client/src/cmdhfmfu.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 99c0223a4..41b93f3f2 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -2328,7 +2328,12 @@ void printMFUdumpEx(mfu_dump_t *card, uint16_t pages, uint8_t startpage) { for (uint16_t i = 0; i < pages; ++i) { if (i < 3) { - PrintAndLogEx(INFO, "%3d/0x%02X | %s| | %s", i + startpage, i + startpage, sprint_hex(data + i * 4, 4), sprint_ascii(data + i * 4, 4)); + PrintAndLogEx(INFO, "%3d/0x%02X | " _RED_("%s")"| | %s", + i + startpage, + i + startpage, + sprint_hex(data + i * 4, 4), + sprint_ascii(data + i * 4, 4) + ); continue; } switch (i) { From 3d91806b5bea7d755e28311a0df71a675e78a957 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 1 Nov 2023 23:40:33 +0100 Subject: [PATCH 0671/1034] use correct define --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 8a9f5926e..83e9916be 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7353,7 +7353,7 @@ static int CmdHF14AMfView(const char *Cmd) { // read dump file uint8_t *dump = NULL; size_t bytes_read = 0; - int res = pm3_load_dump(filename, (void **)&dump, &bytes_read, (MFBLOCK_SIZE * MIFARE_4K_MAXBLOCK)); + int res = pm3_load_dump(filename, (void **)&dump, &bytes_read, MIFARE_4K_MAX_BYTES); if (res != PM3_SUCCESS) { return res; } From bae03ec7923572658ccd149e0cf60fa1024ddf7b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 2 Nov 2023 17:14:37 +0100 Subject: [PATCH 0672/1034] type confusing --- client/src/fileutils.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index eae4de0cb..61dc0bd99 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1172,6 +1172,10 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s continue; } + if (((pageno * MFU_BLOCK_SIZE) + MFU_BLOCK_SIZE) >= maxdatalen) { + continue; + } + char *p = line; while (*p++ != ':') {}; p++; @@ -1193,6 +1197,10 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s continue; } + if (((blockno * MFBLOCK_SIZE) + MFBLOCK_SIZE) >= maxdatalen) { + continue; + } + char *p = line; while (*p++ != ':') {}; p++; @@ -1494,7 +1502,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz if (!strcmp(ctype, "hitag")) { size_t sptr = 0; - for (size_t i = 0; i < (maxdatalen / 4); i++) { + for (int i = 0; i < (maxdatalen / 4); i++) { if (sptr + 4 > maxdatalen) { PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; @@ -1516,7 +1524,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz if (!strcmp(ctype, "iclass")) { size_t sptr = 0; - for (size_t i = 0; i < (maxdatalen / PICOPASS_BLOCK_SIZE); i++) { + for (int i = 0; i < (maxdatalen / PICOPASS_BLOCK_SIZE); i++) { if (sptr + PICOPASS_BLOCK_SIZE > maxdatalen) { PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; @@ -1537,7 +1545,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz if (!strcmp(ctype, "t55x7")) { size_t sptr = 0; - for (size_t i = 0; i < (maxdatalen / 4); i++) { + for (int i = 0; i < (maxdatalen / 4); i++) { if (sptr + 4 > maxdatalen) { PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; @@ -1558,7 +1566,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz if (!strcmp(ctype, "EM4X50")) { size_t sptr = 0; - for (size_t i = 0; i < (maxdatalen / 4); i++) { + for (int i = 0; i < (maxdatalen / 4); i++) { if (sptr + 4 > maxdatalen) { PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); retval = PM3_EMALLOC; @@ -1698,7 +1706,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t sptr = (14 + atslen); // memcpy(vdata, udata.bytes + (14 + atslen), 2 * 64 * 17); - for (size_t i = 0; i < 64; i++) { + for (int i = 0; i < 64; i++) { if ((sptr + (AES_KEY_LEN * 2)) > maxdatalen) { PrintAndLogEx(ERR, "loadFileJSONex: maxdatalen=%zu (%04zx) block (i)=%4d (%04x) sptr=%zu (%04zx) -- exceeded maxdatalen", maxdatalen, maxdatalen, i, i, sptr, sptr); From 85fafb5906ad70e9dff8fd969b1edfe2f012bc87 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 2 Nov 2023 17:19:42 +0100 Subject: [PATCH 0673/1034] type confusing --- client/src/fileutils.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 61dc0bd99..a3818680d 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1509,7 +1509,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - snprintf(blocks, sizeof(blocks), "$.blocks.%zu", i); + snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 4, &len); if (load_file_sanity(ctype, 4, i, len) == false) { break; @@ -1531,7 +1531,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - snprintf(blocks, sizeof(blocks), "$.blocks.%zu", i); + snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], PICOPASS_BLOCK_SIZE, &len); if (load_file_sanity(ctype, PICOPASS_BLOCK_SIZE, i, len) == false) { break; @@ -1552,7 +1552,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - snprintf(blocks, sizeof(blocks), "$.blocks.%zu", i); + snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 4, &len); if (load_file_sanity(ctype, 4, i, len) == false) { break; @@ -1573,7 +1573,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - snprintf(blocks, sizeof(blocks), "$.blocks.%zu", i); + snprintf(blocks, sizeof(blocks), "$.blocks.%d", i); JsonLoadBufAsHex(root, blocks, &udata.bytes[sptr], 4, &len); if (load_file_sanity(ctype, 4, i, len) == false) { break; @@ -1715,10 +1715,10 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz size_t offset = (14 + atslen) + (i * 2 * AES_KEY_LEN); - snprintf(blocks, sizeof(blocks), "$.SectorKeys.%zu.KeyA", i); + snprintf(blocks, sizeof(blocks), "$.SectorKeys.%d.KeyA", i); JsonLoadBufAsHex(root, blocks, udata.bytes + offset, AES_KEY_LEN, datalen); - snprintf(blocks, sizeof(blocks), "$.SectorKeys.%zu.KeyB", i); + snprintf(blocks, sizeof(blocks), "$.SectorKeys.%d.KeyB", i); JsonLoadBufAsHex(root, blocks, udata.bytes + offset + AES_KEY_LEN, AES_KEY_LEN, datalen); sptr += (2 * AES_KEY_LEN); From 5471d326b7a4d8122a6b008607a6308c2b1756b4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 3 Nov 2023 01:41:22 +0100 Subject: [PATCH 0674/1034] macOS complains about memory alignment when type casting. memcpy should sort it --- client/src/fileutils.c | 119 ++++++++++++++++++++++------------------- 1 file changed, 64 insertions(+), 55 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index a3818680d..79a9680f0 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -290,25 +290,28 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, break; } case jsfMfc_v2: { - iso14a_mf_extdump_t *xdump = (iso14a_mf_extdump_t *)data; + + iso14a_mf_extdump_t xdump; + memcpy(&xdump, data, sizeof(iso14a_mf_extdump_t)); + JsonSaveStr(root, "FileType", "mfc v2"); - JsonSaveBufAsHexCompact(root, "$.Card.UID", xdump->card_info.uid, xdump->card_info.uidlen); - JsonSaveBufAsHexCompact(root, "$.Card.ATQA", xdump->card_info.atqa, 2); - JsonSaveBufAsHexCompact(root, "$.Card.SAK", &(xdump->card_info.sak), 1); - for (size_t i = 0; i < (xdump->dumplen / MFBLOCK_SIZE); i++) { + JsonSaveBufAsHexCompact(root, "$.Card.UID", xdump.card_info.uid, xdump.card_info.uidlen); + JsonSaveBufAsHexCompact(root, "$.Card.ATQA", xdump.card_info.atqa, 2); + JsonSaveBufAsHexCompact(root, "$.Card.SAK", &(xdump.card_info.sak), 1); + for (size_t i = 0; i < (xdump.dumplen / MFBLOCK_SIZE); i++) { snprintf(path, sizeof(path), "$.blocks.%zu", i); - JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE], MFBLOCK_SIZE); + JsonSaveBufAsHexCompact(root, path, &xdump.dump[i * MFBLOCK_SIZE], MFBLOCK_SIZE); if (mfIsSectorTrailer(i)) { snprintf(path, sizeof(path), "$.SectorKeys.%d.KeyA", mfSectorNum(i)); - JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE], 6); + JsonSaveBufAsHexCompact(root, path, &xdump.dump[i * MFBLOCK_SIZE], 6); snprintf(path, sizeof(path), "$.SectorKeys.%d.KeyB", mfSectorNum(i)); - JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE + 10], 6); + JsonSaveBufAsHexCompact(root, path, &xdump.dump[i * MFBLOCK_SIZE + 10], 6); - uint8_t *adata = &xdump->dump[i * MFBLOCK_SIZE + 6]; + uint8_t *adata = &xdump.dump[i * MFBLOCK_SIZE + 6]; snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditions", mfSectorNum(i)); - JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE + 6], 4); + JsonSaveBufAsHexCompact(root, path, &xdump.dump[i * MFBLOCK_SIZE + 6], 4); snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditionsText.block%zu", mfSectorNum(i), i - 3); JsonSaveStr(root, path, mfGetAccessConditionsDesc(0, adata)); @@ -329,28 +332,31 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, break; } case jsfMfc_v3: { - iso14a_mf_dump_ev1_t *xdump = (iso14a_mf_dump_ev1_t *)data; - JsonSaveStr(root, "FileType", "mfc v3"); - JsonSaveBufAsHexCompact(root, "$.Card.UID", xdump->card.ev1.uid, xdump->card.ev1.uidlen); - JsonSaveBufAsHexCompact(root, "$.Card.ATQA", xdump->card.ev1.atqa, 2); - JsonSaveBufAsHexCompact(root, "$.Card.SAK", &(xdump->card.ev1.sak), 1); - JsonSaveBufAsHexCompact(root, "$.Card.ATS", xdump->card.ev1.ats, sizeof(xdump->card.ev1.ats_len)); - JsonSaveBufAsHexCompact(root, "$.Card.SIGNATURE", xdump->card.ev1.signature, sizeof(xdump->card.ev1.signature)); - for (size_t i = 0; i < (xdump->dumplen / MFBLOCK_SIZE); i++) { + iso14a_mf_dump_ev1_t xdump; + memcpy(&xdump, data, sizeof(iso14a_mf_dump_ev1_t)); + + JsonSaveStr(root, "FileType", "mfc v3"); + JsonSaveBufAsHexCompact(root, "$.Card.UID", xdump.card.ev1.uid, xdump.card.ev1.uidlen); + JsonSaveBufAsHexCompact(root, "$.Card.ATQA", xdump.card.ev1.atqa, 2); + JsonSaveBufAsHexCompact(root, "$.Card.SAK", &(xdump.card.ev1.sak), 1); + JsonSaveBufAsHexCompact(root, "$.Card.ATS", xdump.card.ev1.ats, sizeof(xdump.card.ev1.ats_len)); + JsonSaveBufAsHexCompact(root, "$.Card.SIGNATURE", xdump.card.ev1.signature, sizeof(xdump.card.ev1.signature)); + + for (size_t i = 0; i < (xdump.dumplen / MFBLOCK_SIZE); i++) { snprintf(path, sizeof(path), "$.blocks.%zu", i); - JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE], MFBLOCK_SIZE); + JsonSaveBufAsHexCompact(root, path, &xdump.dump[i * MFBLOCK_SIZE], MFBLOCK_SIZE); if (mfIsSectorTrailer(i)) { snprintf(path, sizeof(path), "$.SectorKeys.%d.KeyA", mfSectorNum(i)); - JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE], 6); + JsonSaveBufAsHexCompact(root, path, &xdump.dump[i * MFBLOCK_SIZE], 6); snprintf(path, sizeof(path), "$.SectorKeys.%d.KeyB", mfSectorNum(i)); - JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE + 10], 6); + JsonSaveBufAsHexCompact(root, path, &xdump.dump[i * MFBLOCK_SIZE + 10], 6); - uint8_t *adata = &xdump->dump[i * MFBLOCK_SIZE + 6]; + uint8_t *adata = &xdump.dump[i * MFBLOCK_SIZE + 6]; snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditions", mfSectorNum(i)); - JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * MFBLOCK_SIZE + 6], 4); + JsonSaveBufAsHexCompact(root, path, &xdump.dump[i * MFBLOCK_SIZE + 6], 4); snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditionsText.block%zu", mfSectorNum(i), i - 3); JsonSaveStr(root, path, mfGetAccessConditionsDesc(0, adata)); @@ -371,37 +377,39 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, break; } case jsfFudan: { - iso14a_mf_extdump_t *xdump = (iso14a_mf_extdump_t *)(void *) data; + iso14a_mf_extdump_t xdump; + memcpy(&xdump, data, sizeof(iso14a_mf_extdump_t)); + JsonSaveStr(root, "FileType", "fudan"); - JsonSaveBufAsHexCompact(root, "$.Card.UID", xdump->card_info.uid, xdump->card_info.uidlen); - JsonSaveBufAsHexCompact(root, "$.Card.ATQA", xdump->card_info.atqa, 2); - JsonSaveBufAsHexCompact(root, "$.Card.SAK", &(xdump->card_info.sak), 1); - for (size_t i = 0; i < (xdump->dumplen / 4); i++) { + JsonSaveBufAsHexCompact(root, "$.Card.UID", xdump.card_info.uid, xdump.card_info.uidlen); + JsonSaveBufAsHexCompact(root, "$.Card.ATQA", xdump.card_info.atqa, 2); + JsonSaveBufAsHexCompact(root, "$.Card.SAK", &(xdump.card_info.sak), 1); + for (size_t i = 0; i < (xdump.dumplen / 4); i++) { snprintf(path, sizeof(path), "$.blocks.%zu", i); - JsonSaveBufAsHexCompact(root, path, &xdump->dump[i * 4], 4); + JsonSaveBufAsHexCompact(root, path, &xdump.dump[i * 4], 4); } break; } case jsfMfuMemory: { - JsonSaveStr(root, "FileType", "mfu"); - - mfu_dump_t *tmp = (mfu_dump_t *)data; + mfu_dump_t tmp; + memcpy(&tmp, data, sizeof(mfu_dump_t)); uint8_t uid[7] = {0}; - memcpy(uid, tmp->data, 3); - memcpy(uid + 3, tmp->data + 4, 4); + memcpy(uid, tmp.data, 3); + memcpy(uid + 3, tmp.data + 4, 4); + JsonSaveStr(root, "FileType", "mfu"); JsonSaveBufAsHexCompact(root, "$.Card.UID", uid, sizeof(uid)); - JsonSaveBufAsHexCompact(root, "$.Card.Version", tmp->version, sizeof(tmp->version)); - JsonSaveBufAsHexCompact(root, "$.Card.TBO_0", tmp->tbo, sizeof(tmp->tbo)); - JsonSaveBufAsHexCompact(root, "$.Card.TBO_1", tmp->tbo1, sizeof(tmp->tbo1)); - JsonSaveBufAsHexCompact(root, "$.Card.Signature", tmp->signature, sizeof(tmp->signature)); + JsonSaveBufAsHexCompact(root, "$.Card.Version", tmp.version, sizeof(tmp.version)); + JsonSaveBufAsHexCompact(root, "$.Card.TBO_0", tmp.tbo, sizeof(tmp.tbo)); + JsonSaveBufAsHexCompact(root, "$.Card.TBO_1", tmp.tbo1, sizeof(tmp.tbo1)); + JsonSaveBufAsHexCompact(root, "$.Card.Signature", tmp.signature, sizeof(tmp.signature)); for (uint8_t i = 0; i < 3; i ++) { snprintf(path, sizeof(path), "$.Card.Counter%d", i); - JsonSaveBufAsHexCompact(root, path, tmp->counter_tearing[i], 3); + JsonSaveBufAsHexCompact(root, path, tmp.counter_tearing[i], 3); snprintf(path, sizeof(path), "$.Card.Tearing%d", i); - JsonSaveBufAsHexCompact(root, path, tmp->counter_tearing[i] + 3, 1); + JsonSaveBufAsHexCompact(root, path, tmp.counter_tearing[i] + 3, 1); } // size of header 56b @@ -410,15 +418,14 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, for (size_t i = 0; i < len; i++) { snprintf(path, sizeof(path), "$.blocks.%zu", i); - JsonSaveBufAsHexCompact(root, path, tmp->data + (i * MFU_BLOCK_SIZE), MFU_BLOCK_SIZE); + JsonSaveBufAsHexCompact(root, path, tmp.data + (i * MFU_BLOCK_SIZE), MFU_BLOCK_SIZE); } break; } case jsfHitag: { - JsonSaveStr(root, "FileType", "hitag"); uint8_t uid[4] = {0}; memcpy(uid, data, 4); - + JsonSaveStr(root, "FileType", "hitag"); JsonSaveBufAsHexCompact(root, "$.Card.UID", uid, sizeof(uid)); for (size_t i = 0; i < (datalen / 4); i++) { @@ -428,25 +435,27 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, break; } case jsfIclass: { + + picopass_hdr_t hdr; + memcpy(&hdr, data, sizeof(picopass_hdr_t)); + JsonSaveStr(root, "FileType", "iclass"); + JsonSaveBufAsHexCompact(root, "$.Card.CSN", hdr.csn, sizeof(hdr.csn)); + JsonSaveBufAsHexCompact(root, "$.Card.Configuration", (uint8_t *)&hdr.conf, sizeof(hdr.conf)); - picopass_hdr_t *hdr = (picopass_hdr_t *)data; - JsonSaveBufAsHexCompact(root, "$.Card.CSN", hdr->csn, sizeof(hdr->csn)); - JsonSaveBufAsHexCompact(root, "$.Card.Configuration", (uint8_t *)&hdr->conf, sizeof(hdr->conf)); - - uint8_t pagemap = get_pagemap(hdr); + uint8_t pagemap = get_pagemap(&hdr); if (pagemap == PICOPASS_NON_SECURE_PAGEMODE) { - picopass_ns_hdr_t *ns_hdr = (picopass_ns_hdr_t *)data; - JsonSaveBufAsHexCompact(root, "$.Card.AIA", ns_hdr->app_issuer_area, sizeof(ns_hdr->app_issuer_area)); + picopass_ns_hdr_t ns_hdr; + memcpy(&ns_hdr, data, sizeof(picopass_hdr_t)); + JsonSaveBufAsHexCompact(root, "$.Card.AIA", ns_hdr.app_issuer_area, sizeof(ns_hdr.app_issuer_area)); } else { - JsonSaveBufAsHexCompact(root, "$.Card.Epurse", hdr->epurse, sizeof(hdr->epurse)); - JsonSaveBufAsHexCompact(root, "$.Card.Kd", hdr->key_d, sizeof(hdr->key_d)); - JsonSaveBufAsHexCompact(root, "$.Card.Kc", hdr->key_c, sizeof(hdr->key_c)); - JsonSaveBufAsHexCompact(root, "$.Card.AIA", hdr->app_issuer_area, sizeof(hdr->app_issuer_area)); + JsonSaveBufAsHexCompact(root, "$.Card.Epurse", hdr.epurse, sizeof(hdr.epurse)); + JsonSaveBufAsHexCompact(root, "$.Card.Kd", hdr.key_d, sizeof(hdr.key_d)); + JsonSaveBufAsHexCompact(root, "$.Card.Kc", hdr.key_c, sizeof(hdr.key_c)); + JsonSaveBufAsHexCompact(root, "$.Card.AIA", hdr.app_issuer_area, sizeof(hdr.app_issuer_area)); } for (size_t i = 0; i < (datalen / PICOPASS_BLOCK_SIZE); i++) { - snprintf(path, sizeof(path), "$.blocks.%zu", i); JsonSaveBufAsHexCompact(root, path, data + (i * PICOPASS_BLOCK_SIZE), PICOPASS_BLOCK_SIZE); } From 4708940c69090e9eaf01d6448f74821f0267dbab Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 3 Nov 2023 01:46:42 +0100 Subject: [PATCH 0675/1034] wrong struct when pasting --- client/src/fileutils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 79a9680f0..9d97b9831 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -446,7 +446,7 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, uint8_t pagemap = get_pagemap(&hdr); if (pagemap == PICOPASS_NON_SECURE_PAGEMODE) { picopass_ns_hdr_t ns_hdr; - memcpy(&ns_hdr, data, sizeof(picopass_hdr_t)); + memcpy(&ns_hdr, data, sizeof(picopass_ns_hdr_t)); JsonSaveBufAsHexCompact(root, "$.Card.AIA", ns_hdr.app_issuer_area, sizeof(ns_hdr.app_issuer_area)); } else { JsonSaveBufAsHexCompact(root, "$.Card.Epurse", hdr.epurse, sizeof(hdr.epurse)); From 68f296cc14f809240a4f0d88e02dd1289d2b31cf Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 3 Nov 2023 11:36:10 +0100 Subject: [PATCH 0676/1034] compile for optimized speed execution --- tools/cryptorf/Makefile | 2 +- tools/mf_nonce_brute/Makefile | 2 +- tools/mfkey/Makefile | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/tools/cryptorf/Makefile b/tools/cryptorf/Makefile index 82d1d591c..bc6b7c853 100644 --- a/tools/cryptorf/Makefile +++ b/tools/cryptorf/Makefile @@ -1,7 +1,7 @@ MYSRCPATHS = ../../common ../../common/cryptorf MYSRCS = cryptolib.c util.c MYINCLUDES = -I../../common/cryptorf -MYCFLAGS = +MYCFLAGS = -O3 MYDEFS = # build artifacts diff --git a/tools/mf_nonce_brute/Makefile b/tools/mf_nonce_brute/Makefile index 17ae04ddc..35711a460 100644 --- a/tools/mf_nonce_brute/Makefile +++ b/tools/mf_nonce_brute/Makefile @@ -1,7 +1,7 @@ MYSRCPATHS = ../../common ../../common/crapto1 MYSRCS = crypto1.c crapto1.c bucketsort.c iso14443crc.c sleep.c util_posix.c MYINCLUDES = -I../../include -I../../common -MYCFLAGS = +MYCFLAGS = -O3 MYDEFS = MYLDLIBS = ifneq ($(SKIPPTHREAD),1) diff --git a/tools/mfkey/Makefile b/tools/mfkey/Makefile index fd6e37fd9..d1579a98b 100644 --- a/tools/mfkey/Makefile +++ b/tools/mfkey/Makefile @@ -1,7 +1,7 @@ MYSRCPATHS = ../../common ../../common/crapto1 MYSRCS = crypto1.c crapto1.c bucketsort.c MYINCLUDES = -I../../include -I../../common -MYCFLAGS = -O3 --param max-completely-peeled-insns=1000 --param max-completely-peel-times=10000 +MYCFLAGS = -O3 MYDEFS = BINS = mfkey32 mfkey32v2 mfkey64 @@ -16,6 +16,11 @@ ifneq (,$(findstring MINGW,$(platform))) CFLAGS += -D_ISOC99_SOURCE endif +# macOS doesn't like these compiler params +ifneq ($(platform),Darwin) + MYCFLAGS += --param max-completely-peeled-insns=1000 --param max-completely-peel-times=10000 +endif + mfkey32 : $(OBJDIR)/mfkey32.o $(MYOBJS) mfkey32v2 : $(OBJDIR)/mfkey32v2.o $(MYOBJS) mfkey64 : $(OBJDIR)/mfkey64.o $(MYOBJS) From ffb6f4ddbbd972c8a21accb26cf7e47195eb41d2 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 3 Nov 2023 11:48:47 +0100 Subject: [PATCH 0677/1034] remove default build to add debugging info --- client/Makefile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/client/Makefile b/client/Makefile index d45e958f7..94ad5079b 100644 --- a/client/Makefile +++ b/client/Makefile @@ -371,12 +371,16 @@ ifeq ($(PYTHON_FOUND),1) endif ####################################################################################################### +# macOS doesn't like this params +#MYCFLAGS += --param max-completely-peeled-insns=1000 --param max-completely-peel-times=10000 +MYCFLAGS += -O3 + CFLAGS ?= $(DEFCFLAGS) CFLAGS += $(MYDEFS) $(MYCFLAGS) $(MYINCLUDES) # We cannot just use CFLAGS+=... because it has impact on sub-makes if CFLAGS is defined in env: PM3CFLAGS = $(CFLAGS) -PM3CFLAGS += -g -I./src -I./include -I../include -I../common -I../common_fpga $(PM3INCLUDES) $(INCLUDES) +PM3CFLAGS += -I./src -I./include -I../include -I../common -I../common_fpga $(PM3INCLUDES) $(INCLUDES) # WIP Testing #PM3CFLAGS += -std=c11 -pedantic @@ -415,7 +419,7 @@ endif PM3CFLAGS += -DHAVE_SNPRINTF -CXXFLAGS ?= -Wall -Werror -O3 +CXXFLAGS ?= -Wall -Werror CXXFLAGS += $(MYDEFS) $(MYCXXFLAGS) $(MYINCLUDES) PM3CXXFLAGS = $(CXXFLAGS) From ea249d7b17b3b0f0c9bbd5b445e5c7c438091588 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 3 Nov 2023 12:20:30 +0100 Subject: [PATCH 0678/1034] fixes --- client/src/cipurse/cipursecore.c | 2 +- client/src/cmdhfmf.c | 2 +- client/src/cmdhfmfdes.c | 6 +++--- client/src/cmdhfntag424.c | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/client/src/cipurse/cipursecore.c b/client/src/cipurse/cipursecore.c index 143c2b1f9..ff75cc20e 100644 --- a/client/src/cipurse/cipursecore.c +++ b/client/src/cipurse/cipursecore.c @@ -626,7 +626,7 @@ void CIPURSEPrintFileAttrEx(uint8_t *attr, size_t len, bool isDGI) { } void CIPURSEPrintFileAttr(uint8_t *attr, size_t len) { - return CIPURSEPrintFileAttrEx(attr, len, false); + CIPURSEPrintFileAttrEx(attr, len, false); } void CIPURSEPrintFileUpdateAttr(uint8_t *attr, size_t len) { diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 83e9916be..852d50712 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4009,7 +4009,7 @@ static int CmdHF14AMfKeyBrute(const char *Cmd) { */ void printKeyTable(size_t sectorscnt, sector_t *e_sector) { - return printKeyTableEx(sectorscnt, e_sector, 0); + printKeyTableEx(sectorscnt, e_sector, 0); } void printKeyTableEx(size_t sectorscnt, sector_t *e_sector, uint8_t start_sector) { diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 33240ea62..d25e0dbf1 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -807,9 +807,9 @@ static int CmdHF14ADesInfo(const char *Cmd) { iso14a_card_select_t card; res = SelectCard14443A_4(true, false, &card); if (res == PM3_SUCCESS) { - static const char STANDALONE_DESFIRE[] = { 0x75, 0x77, 0x81, 0x02 }; - static const char JCOP_DESFIRE[] = { 0x75, 0xf7, 0xb1, 0x02 }; - static const char JCOP3_DESFIRE[] = { 0x78, 0x77, 0x71, 0x02 }; + static const uint8_t STANDALONE_DESFIRE[] = { 0x75, 0x77, 0x81, 0x02 }; + static const uint8_t JCOP_DESFIRE[] = { 0x75, 0xf7, 0xb1, 0x02 }; + static const uint8_t JCOP3_DESFIRE[] = { 0x78, 0x77, 0x71, 0x02 }; if (card.sak == 0x20) { diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index c2d14b744..97a271c84 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -166,13 +166,13 @@ static void ntag424_print_production_information(ntag424_production_information_ } static void ntag424_print_full_version_information(ntag424_full_version_information_t *version) { - PrintAndLogEx(INFO, "--- " _CYAN_("Hardware version information:"), fileno); + PrintAndLogEx(INFO, "--- " _CYAN_("Hardware version information:")); ntag424_print_version_information(&version->hardware); - PrintAndLogEx(INFO, "--- " _CYAN_("Software version information:"), fileno); + PrintAndLogEx(INFO, "--- " _CYAN_("Software version information:")); ntag424_print_version_information(&version->software); - PrintAndLogEx(INFO, "--- " _CYAN_("Production information:"), fileno); + PrintAndLogEx(INFO, "--- " _CYAN_("Production information:")); ntag424_print_production_information(&version->production); } @@ -927,7 +927,7 @@ static int CmdHF_ntag424_info(const char *Cmd) { DropField(); if (res == PM3_SUCCESS) { - PrintAndLogEx(INFO, "--- " _CYAN_("NXP originality signature:"), fileno); + PrintAndLogEx(INFO, "--- " _CYAN_("NXP originality signature:")); desfire_print_signature(version.production.uid, 7, signature, NXP_SIGNATURE_LENGTH); } From c793363b4f95357e8af2be98c106652d088f4b45 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 3 Nov 2023 12:52:01 +0100 Subject: [PATCH 0679/1034] pedantic fixes --- client/src/cmdhfemrtd.c | 4 +- client/src/cmdhftexkom.c | 8 +-- client/src/cmdhfvas.c | 4 +- client/src/ksx6924/ksx6924core.c | 111 +++++++++++++++--------------- client/src/mifare/desfirecrypto.c | 4 +- client/src/uart/uart_posix.c | 6 +- client/src/uart/uart_win32.c | 6 +- 7 files changed, 70 insertions(+), 73 deletions(-) diff --git a/client/src/cmdhfemrtd.c b/client/src/cmdhfemrtd.c index 98bb3e44d..2e81ec3a7 100644 --- a/client/src/cmdhfemrtd.c +++ b/client/src/cmdhfemrtd.c @@ -120,7 +120,7 @@ static emrtd_hashalg_t hashalg_table[] = { {"SHA-1", sha1hash, 20, 7, {0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A}}, {"SHA-256", sha256hash, 32, 11, {0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01}}, {"SHA-512", sha512hash, 64, 11, {0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03}}, - {NULL, NULL, 0, 0, {}} + {NULL, NULL, 0, 0, {0}} }; static emrtd_pacealg_t pacealg_table[] = { @@ -141,7 +141,7 @@ static emrtd_pacealg_t pacealg_table[] = { {"ECDH, Integrated Mapping, AES-CMAC-128", NULL, {0x04, 0x00, 0x7F, 0x00, 0x07, 0x02, 0x02, 0x04, 0x04, 0x02}}, {"ECDH, Integrated Mapping, AES-CMAC-192", NULL, {0x04, 0x00, 0x7F, 0x00, 0x07, 0x02, 0x02, 0x04, 0x04, 0x03}}, {"ECDH, Integrated Mapping, AES-CMAC-256", NULL, {0x04, 0x00, 0x7F, 0x00, 0x07, 0x02, 0x02, 0x04, 0x04, 0x04}}, - {NULL, NULL, {}} + {NULL, NULL, {0}} }; static emrtd_pacesdp_t pacesdp_table[] = { diff --git a/client/src/cmdhftexkom.c b/client/src/cmdhftexkom.c index 6cb77a54e..6063e807c 100644 --- a/client/src/cmdhftexkom.c +++ b/client/src/cmdhftexkom.c @@ -429,7 +429,7 @@ static void TexcomReverseCode(const uint8_t *code, int length, uint8_t *reverse_ for (int i = 0; i < length; i++) { reverse_code[i] = code[(length - 1) - i]; } -}; +} static int texkom_get_type(texkom_card_select_t *card, bool verbose) { @@ -493,7 +493,7 @@ static int texkom_get_type(texkom_card_select_t *card, bool verbose) { noiselvl = TEXKOM_NOISE_THRESHOLD; } - uint32_t implengths[256] = {}; + uint32_t implengths[256] = { 0 }; uint32_t implengthslen = 0; uint32_t impulseindx = 0; uint32_t impulsecnt = 0; @@ -707,7 +707,7 @@ static int CmdHFTexkomReader(const char *Cmd) { //PrintAndLogEx(WARNING, "--- indx: %d, len: %d, max: %d, noise: %d", sindx, slen, maxlvl, noiselvl); - uint32_t implengths[256] = {}; + uint32_t implengths[256] = { 0 }; uint32_t implengthslen = 0; uint32_t impulseindx = 0; uint32_t impulsecnt = 0; @@ -872,7 +872,7 @@ static int CmdHFTexkomSim(const char *Cmd) { uint8_t data[8]; uint8_t modulation; uint32_t timeout; - } PACKED payload = {}; + } PACKED payload = {0}; bool verbose = arg_get_lit(ctx, 1); payload.modulation = 0; // tk-13 diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index fa621e853..0c6cc5df8 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -586,10 +586,10 @@ static command_t CommandTable[] = { int CmdHFVAS(const char *Cmd) { clearCommandBuffer(); return CmdsParse(CommandTable, Cmd); -}; +} static int CmdHelp(const char *Cmd) { (void)Cmd; // Cmd is not used so far CmdsHelp(CommandTable); return PM3_SUCCESS; -}; +} diff --git a/client/src/ksx6924/ksx6924core.c b/client/src/ksx6924/ksx6924core.c index 307573f74..4f4ab676e 100644 --- a/client/src/ksx6924/ksx6924core.c +++ b/client/src/ksx6924/ksx6924core.c @@ -108,86 +108,83 @@ typedef struct { return r->value; \ } -MAKE_ENUM_TYPE(uint8_t); +MAKE_ENUM_TYPE(uint8_t) // KSX6924LookupCardType MAKE_ENUM_CONST(CardType, uint8_t, -{ 0x00, "Pre-paid" }, -{ 0x10, "Post-pay" }, -{ 0x20, "Mobile post-pay" }, - ); + { 0x00, "Pre-paid" }, + { 0x10, "Post-pay" }, + { 0x20, "Mobile post-pay" }, +) // KSX6924LookupAlg MAKE_ENUM_CONST(Alg, uint8_t, -{ 0x00, "SEED" }, -{ 0x10, "3DES" }, - ); + { 0x00, "SEED" }, + { 0x10, "3DES" }, +) // KSX6924LookupTMoneyIDCenter MAKE_ENUM_CONST(TMoneyIDCenter, uint8_t, -{ 0x00, "Reserved" }, -{ 0x01, "Korea Financial Telecommunications and Clearings Institute" }, -{ 0x02, "A-Cash" }, -{ 0x03, "Mybi" }, -{ 0x04, "Reserved" }, -{ 0x05, "V-Cash" }, -{ 0x06, "Mondex Korea" }, -{ 0x07, "Korea Expressway Corporation" }, -{ 0x08, "Tmoney Co., Ltd." }, -{ 0x09, "KORAIL Networks" }, -{ 0x0a, "Reserved" }, -{ 0x0b, "EB Card Corporation" }, -{ 0x0c, "Seoul Bus Transport Association" }, -{ 0x0d, "Cardnet" }, - ); + { 0x00, "Reserved" }, + { 0x01, "Korea Financial Telecommunications and Clearings Institute" }, + { 0x02, "A-Cash" }, + { 0x03, "Mybi" }, + { 0x04, "Reserved" }, + { 0x05, "V-Cash" }, + { 0x06, "Mondex Korea" }, + { 0x07, "Korea Expressway Corporation" }, + { 0x08, "Tmoney Co., Ltd." }, + { 0x09, "KORAIL Networks" }, + { 0x0a, "Reserved" }, + { 0x0b, "EB Card Corporation" }, + { 0x0c, "Seoul Bus Transport Association" }, + { 0x0d, "Cardnet" }, +) // KSX6924LookupTMoneyUserCode MAKE_ENUM_CONST(TMoneyUserCode, uint8_t, -{ 0x01, "Regular/normal" }, -{ 0x02, "Child" }, - -{ 0x04, "Youth" }, - -{ 0x06, "elderly" }, - -{ 0x0f, "Test" }, -{ 0xff, "Inactive" }, - ); + { 0x01, "Regular/normal" }, + { 0x02, "Child" }, + { 0x04, "Youth" }, + { 0x06, "elderly" }, + { 0x0f, "Test" }, + { 0xff, "Inactive" }, +) // KSX6924LookupTMoneyDisRate MAKE_ENUM_CONST(TMoneyDisRate, uint8_t, -{ 0x00, "No discount" }, + { 0x00, "No discount" }, -{ 0x10, "Disabled, basic" }, -{ 0x11, "Disabled, companion" }, + { 0x10, "Disabled, basic" }, + { 0x11, "Disabled, companion" }, -{ 0x20, "Merit, basic" }, -{ 0x21, "Merit, companion" }, - ); + { 0x20, "Merit, basic" }, + { 0x21, "Merit, companion" }, +) // KSX6924LookupTMoneyTCode MAKE_ENUM_CONST(TMoneyTCode, uint8_t, -{ 0x00, "None" }, -{ 0x01, "SK Telecom" }, -{ 0x02, "Korea Telecom" }, -{ 0x03, "LG Uplus" }, - ); + { 0x00, "None" }, + { 0x01, "SK Telecom" }, + { 0x02, "Korea Telecom" }, + { 0x03, "LG Uplus" }, +) // KSX6924LookupTMoneyCCode MAKE_ENUM_CONST(TMoneyCCode, uint8_t, -{ 0x00, "None" }, -{ 0x01, "KB Card" }, -{ 0x02, "NH Card" }, -{ 0x03, "Lotte Card" }, -{ 0x04, "BC Card" }, -{ 0x05, "Samsung Card" }, -{ 0x06, "Shinhan Card" }, -{ 0x07, "Citibank Korea" }, -{ 0x08, "Korea Exchange Bank" }, -{ 0x09, "Woori Card" }, -{ 0x0a, "Hana SK Card" }, -{ 0x0b, "Hyundai Card" }, - ); + { 0x00, "None" }, + { 0x01, "KB Card" }, + { 0x02, "NH Card" }, + { 0x03, "Lotte Card" }, + { 0x04, "BC Card" }, + { 0x05, "Samsung Card" }, + { 0x06, "Shinhan Card" }, + { 0x07, "Citibank Korea" }, + { 0x08, "Korea Exchange Bank" }, + { 0x09, "Woori Card" }, + { 0x0a, "Hana SK Card" }, + { 0x0b, "Hyundai Card" }, +) static const char *KSX6924_UNKNOWN = "Unknown"; diff --git a/client/src/mifare/desfirecrypto.c b/client/src/mifare/desfirecrypto.c index 48126ae50..750723dab 100644 --- a/client/src/mifare/desfirecrypto.c +++ b/client/src/mifare/desfirecrypto.c @@ -788,11 +788,11 @@ bool desfire_crc32_check(uint8_t *data, const size_t len, uint8_t *crc) { } void iso14443a_crc_append(uint8_t *data, size_t len) { - return compute_crc(CRC_14443_A, data, len, data + len, data + len + 1); + compute_crc(CRC_14443_A, data, len, data + len, data + len + 1); } void iso14443a_crc(uint8_t *data, size_t len, uint8_t *pbtCrc) { - return compute_crc(CRC_14443_A, data, len, pbtCrc, pbtCrc + 1); + compute_crc(CRC_14443_A, data, len, pbtCrc, pbtCrc + 1); } bool iso14443a_crc_check(uint8_t *data, const size_t len, uint8_t *crc) { diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index bc0fb37c4..588e9ae90 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -94,7 +94,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { g_conn.send_via_local_ip = false; g_conn.send_via_ip = PM3_NONE; - char *prefix = strdup(pcPortName); + char *prefix = str_dup(pcPortName); if (prefix == NULL) { PrintAndLogEx(ERR, "error: string duplication"); free(sp); @@ -112,7 +112,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { struct addrinfo *addr = NULL, *rp; - char *addrPortStr = strdup(pcPortName + 4); + char *addrPortStr = str_dup(pcPortName + 4); char *addrstr = addrPortStr; const char *portstr; if (addrPortStr == NULL) { @@ -303,7 +303,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { struct addrinfo *addr = NULL, *rp; - char *addrPortStr = strdup(pcPortName + 4); + char *addrPortStr = str_dup(pcPortName + 4); char *addrstr = addrPortStr; const char *portstr; if (addrPortStr == NULL) { diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index ba3374494..43299ca5a 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -95,7 +95,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { g_conn.send_via_local_ip = false; g_conn.send_via_ip = PM3_NONE; - char *prefix = strdup(pcPortName); + char *prefix = str_dup(pcPortName); if (prefix == NULL) { PrintAndLogEx(ERR, "error: string duplication"); free(sp); @@ -114,7 +114,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { struct addrinfo *addr = NULL, *rp; - char *addrPortStr = strdup(pcPortName + 4); + char *addrPortStr = str_dup(pcPortName + 4); char *addrstr = addrPortStr; const char *portstr; if (addrPortStr == NULL) { @@ -321,7 +321,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { struct addrinfo *addr = NULL, *rp; - char *addrPortStr = strdup(pcPortName + 4); + char *addrPortStr = str_dup(pcPortName + 4); char *addrstr = addrPortStr; const char *portstr; if (addrPortStr == NULL) { From b7028bb7986d31a58143eb552dd009dfc399cabc Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 3 Nov 2023 12:55:23 +0100 Subject: [PATCH 0680/1034] init fixes --- client/src/cmdhf15.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 7059bdd2c..e9468943a 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -849,7 +849,7 @@ static int CmdHF15Info(const char *Cmd) { "hf 15 info -u E011223344556677" ); - void *argtable[6 + 1] = {}; + void *argtable[6 + 1] = {0}; uint8_t arglen = arg_add_default(argtable); argtable[arglen++] = arg_param_end; @@ -1365,12 +1365,13 @@ static int CmdHF15WriteAfi(const char *Cmd) { "hf 15 writeafi -u E011223344556677 --afi 12 -p 0F0F0F0F" ); - void *argtable[5] = {}; - argtable[0] = arg_param_begin; - argtable[1] = arg_str0("u", "uid", "<hex>", "full UID, 8 bytes"); - argtable[2] = arg_int1(NULL, "afi", "<dec>", "AFI number (0-255)"); - argtable[3] = arg_str0("p", "pwd", "<hex>", "optional AFI/EAS password"); - argtable[4] = arg_param_end; + void *argtable[] = { + arg_param_begin, + arg_str0("u", "uid", "<hex>", "full UID, 8 bytes"), + arg_int1(NULL, "afi", "<dec>", "AFI number (0-255)"), + arg_str0("p", "pwd", "<hex>", "optional AFI/EAS password"), + arg_param_end + }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -1448,7 +1449,7 @@ static int CmdHF15WriteDsfid(const char *Cmd) { "hf 15 writedsfid -u E011223344556677 --dsfid 12" ); - void *argtable[6 + 2] = {}; + void *argtable[6 + 2] = {0}; uint8_t arglen = arg_add_default(argtable); argtable[arglen++] = arg_int1(NULL, "dsfid", "<dec>", "DSFID number (0-255)"); argtable[arglen++] = arg_param_end; @@ -1548,7 +1549,7 @@ static int CmdHF15Dump(const char *Cmd) { "hf 15 dump -u E011223344556677 -f hf-15-my-dump.bin" ); - void *argtable[6 + 2] = {}; + void *argtable[6 + 2] = {0}; uint8_t arglen = arg_add_default(argtable); argtable[arglen++] = arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), argtable[arglen++] = arg_param_end; @@ -1792,7 +1793,7 @@ static int CmdHF15Readmulti(const char *Cmd) { "hf 15 rdmulti -u E011223344556677 -b 12 --cnt 3 -> read three blocks" ); - void *argtable[6 + 3] = {}; + void *argtable[6 + 3] = {0}; uint8_t arglen = arg_add_default(argtable); argtable[arglen++] = arg_int1("b", NULL, "<dec>", "first page number (0-255)"); argtable[arglen++] = arg_int1(NULL, "cnt", "<dec>", "number of pages (1-6)"); @@ -1928,7 +1929,7 @@ static int CmdHF15Readblock(const char *Cmd) { "hf 15 rdbl -u E011223344556677 -b 12" ); - void *argtable[6 + 2] = {}; + void *argtable[6 + 2] = {0}; uint8_t arglen = arg_add_default(argtable); argtable[arglen++] = arg_int1("b", "blk", "<dec>", "page number (0-255)"); argtable[arglen++] = arg_param_end; @@ -2090,7 +2091,7 @@ static int CmdHF15Write(const char *Cmd) { "hf 15 wrbl -u E011223344556677 -b 12 -d AABBCCDD" ); - void *argtable[6 + 4] = {}; + void *argtable[6 + 4] = {0}; uint8_t arglen = arg_add_default(argtable); argtable[arglen++] = arg_int1("b", "blk", "<dec>", "page number (0-255)"); argtable[arglen++] = arg_str1("d", "data", "<hex>", "data, 4 bytes"); @@ -2181,7 +2182,7 @@ static int CmdHF15Restore(const char *Cmd) { "hf 15 restore -u E011223344556677 -f hf-15-my-dump.bin" ); - void *argtable[6 + 5] = {}; + void *argtable[6 + 5] = {0}; uint8_t arglen = arg_add_default(argtable); argtable[arglen++] = arg_str0("f", "file", "<fn>", "Specify a filename for dump file"), argtable[arglen++] = arg_int0("r", "retry", "<dec>", "number of retries (def 3)"), From b09c3ac67c063107ca18a087e3ed4d2859a46d81 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 3 Nov 2023 15:39:28 +0100 Subject: [PATCH 0681/1034] default type of ENUM in C is INT. the tagtype enum broke it. Converted to DEFINES since you cant change type of an ENUM --- client/src/cmdhf14a.c | 4 +- client/src/cmdhfmf.c | 4 +- client/src/cmdhfmfu.c | 289 ++++++++++++++++++++++-------------------- client/src/cmdhfmfu.h | 79 ++++++------ 4 files changed, 193 insertions(+), 183 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 7bfecea55..b86001f32 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -2010,8 +2010,8 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { // ******** is card of the MFU type (UL/ULC/NTAG/ etc etc) DropField(); - uint32_t tagT = GetHF14AMfU_Type(); - if (tagT != UL_ERROR) { + uint64_t tagT = GetHF14AMfU_Type(); + if (tagT != MFU_TT_UL_ERROR) { ul_print_type(tagT, 0); isMifareUltralight = true; printTag("MIFARE Ultralight/C/NTAG Compatible"); diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 852d50712..da94e1205 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2485,8 +2485,8 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { // ------------------------------ - uint32_t tagT = GetHF14AMfU_Type(); - if (tagT != UL_ERROR) { + uint64_t tagT = GetHF14AMfU_Type(); + if (tagT != MFU_TT_UL_ERROR) { PrintAndLogEx(ERR, "Detected a MIFARE Ultralight/C/NTAG Compatible card."); PrintAndLogEx(ERR, "This command targets " _YELLOW_("MIFARE Classic")); return PM3_ESOFT; diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 41b93f3f2..860744220 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -69,16 +69,24 @@ static uint8_t default_pwd_pack[][4] = { {0x4E, 0x45, 0x78, 0x54}, // NExT }; -static uint32_t UL_TYPES_ARRAY[] = { - UNKNOWN, UL, UL_C, UL_EV1_48, UL_EV1_128, - NTAG, NTAG_203, NTAG_210, NTAG_212, - NTAG_213, NTAG_215, NTAG_216, - MY_D, MY_D_NFC, MY_D_MOVE, MY_D_MOVE_NFC, MY_D_MOVE_LEAN, - NTAG_I2C_1K, NTAG_I2C_2K, NTAG_I2C_1K_PLUS, NTAG_I2C_2K_PLUS, - FUDAN_UL, NTAG_213_F, NTAG_216_F, UL_EV1, UL_NANO_40, - NTAG_213_TT, NTAG_213_C, - MAGIC_1A, MAGIC_1B, MAGIC_NTAG, - NTAG_210u, UL_MAGIC, UL_C_MAGIC +static uint64_t UL_TYPES_ARRAY[] = { + MFU_TT_UNKNOWN, MFU_TT_UL, + MFU_TT_UL_C, MFU_TT_UL_EV1_48, + MFU_TT_UL_EV1_128, MFU_TT_NTAG, + MFU_TT_NTAG_203, MFU_TT_NTAG_210, + MFU_TT_NTAG_212, MFU_TT_NTAG_213, + MFU_TT_NTAG_215, MFU_TT_NTAG_216, + MFU_TT_MY_D, MFU_TT_MY_D_NFC, + MFU_TT_MY_D_MOVE, MFU_TT_MY_D_MOVE_NFC, + MFU_TT_MY_D_MOVE_LEAN, MFU_TT_NTAG_I2C_1K, + MFU_TT_NTAG_I2C_2K, MFU_TT_NTAG_I2C_1K_PLUS, + MFU_TT_NTAG_I2C_2K_PLUS, MFU_TT_FUDAN_UL, + MFU_TT_NTAG_213_F, MFU_TT_NTAG_216_F, + MFU_TT_UL_EV1, MFU_TT_UL_NANO_40, + MFU_TT_NTAG_213_TT, MFU_TT_NTAG_213_C, + MFU_TT_MAGIC_1A, MFU_TT_MAGIC_1B, + MFU_TT_MAGIC_NTAG, MFU_TT_NTAG_210u, + MFU_TT_UL_MAGIC, MFU_TT_UL_C_MAGIC }; static uint8_t UL_MEMORY_ARRAY[ARRAYLEN(UL_TYPES_ARRAY)] = { @@ -372,8 +380,8 @@ static int ulev1_requestAuthentication(uint8_t *pwd, uint8_t *pack, uint16_t pac return len; } -static int ul_auth_select(iso14a_card_select_t *card, TagTypeUL_t tagtype, bool hasAuthKey, uint8_t *authkey, uint8_t *pack, uint8_t packSize) { - if (hasAuthKey && (tagtype & UL_C)) { +static int ul_auth_select(iso14a_card_select_t *card, uint64_t tagtype, bool hasAuthKey, uint8_t *authkey, uint8_t *pack, uint8_t packSize) { + if (hasAuthKey && (tagtype & MFU_TT_UL_C)) { //will select card automatically and close connection on error if (!ulc_authentication(authkey, false)) { PrintAndLogEx(WARNING, "Authentication Failed UL-C"); @@ -442,16 +450,16 @@ static int ulev1_readSignature(uint8_t *response, uint16_t responseLength) { static int ul_fudan_check(void) { iso14a_card_select_t card; if (!ul_select(&card)) - return UL_ERROR; + return MFU_TT_UL_ERROR; uint8_t cmd[4] = {ISO14443A_CMD_READBLOCK, 0x00, 0x02, 0xa7}; //wrong crc on purpose should be 0xa8 clearCommandBuffer(); SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_RAW | ISO14A_NO_DISCONNECT | ISO14A_NO_RATS, 4, 0, cmd, sizeof(cmd)); PacketResponseNG resp; - if (!WaitForResponseTimeout(CMD_ACK, &resp, 1500)) return UL_ERROR; - if (resp.oldarg[0] != 1) return UL_ERROR; + if (!WaitForResponseTimeout(CMD_ACK, &resp, 1500)) return MFU_TT_UL_ERROR; + if (resp.oldarg[0] != 1) return MFU_TT_UL_ERROR; - return (!resp.data.asBytes[0]) ? FUDAN_UL : UL; //if response == 0x00 then Fudan, else Genuine NXP + return (!resp.data.asBytes[0]) ? MFU_TT_FUDAN_UL : MFU_TT_UL; //if response == 0x00 then Fudan, else Genuine NXP } static int ul_print_default(uint8_t *data, uint8_t *real_uid) { @@ -623,7 +631,7 @@ static int ndef_print_CC(uint8_t *data) { return PM3_SUCCESS; } -int ul_print_type(uint32_t tagtype, uint8_t spaces) { +int ul_print_type(uint64_t tagtype, uint8_t spaces) { if (spaces > 10) spaces = 10; @@ -631,73 +639,73 @@ int ul_print_type(uint32_t tagtype, uint8_t spaces) { char typestr[100]; memset(typestr, 0x00, sizeof(typestr)); - if (tagtype & UL) + if (tagtype & MFU_TT_UL) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("MIFARE Ultralight (MF0ICU1)"), spaces, ""); - else if (tagtype & UL_C) + else if (tagtype & MFU_TT_UL_C) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("MIFARE Ultralight C (MF0ULC)"), spaces, ""); - else if (tagtype & UL_NANO_40) + else if (tagtype & MFU_TT_UL_NANO_40) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("MIFARE Ultralight Nano 40bytes (MF0UNH00)"), spaces, ""); - else if (tagtype & UL_EV1_48) + else if (tagtype & MFU_TT_UL_EV1_48) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("MIFARE Ultralight EV1 48bytes (MF0UL1101)"), spaces, ""); - else if (tagtype & UL_EV1_128) + else if (tagtype & MFU_TT_UL_EV1_128) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("MIFARE Ultralight EV1 128bytes (MF0UL2101)"), spaces, ""); - else if (tagtype & UL_EV1) + else if (tagtype & MFU_TT_UL_EV1) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("MIFARE Ultralight EV1 UNKNOWN"), spaces, ""); - else if (tagtype & NTAG) + else if (tagtype & MFU_TT_NTAG) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG UNKNOWN"), spaces, ""); - else if (tagtype & NTAG_203) + else if (tagtype & MFU_TT_NTAG_203) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG 203 144bytes (NT2H0301F0DT)"), spaces, ""); - else if (tagtype & NTAG_210u) + else if (tagtype & MFU_TT_NTAG_210u) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG 210u (micro) 48bytes (NT2L1001G0DU)"), spaces, ""); - else if (tagtype & NTAG_210) + else if (tagtype & MFU_TT_NTAG_210) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG 210 48bytes (NT2L1011G0DU)"), spaces, ""); - else if (tagtype & NTAG_212) + else if (tagtype & MFU_TT_NTAG_212) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG 212 128bytes (NT2L1211G0DU)"), spaces, ""); - else if (tagtype & NTAG_213) + else if (tagtype & MFU_TT_NTAG_213) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG 213 144bytes (NT2H1311G0DU)"), spaces, ""); - else if (tagtype & NTAG_213_F) + else if (tagtype & MFU_TT_NTAG_213_F) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG 213F 144bytes (NT2H1311F0DTL)"), spaces, ""); - else if (tagtype & NTAG_213_C) + else if (tagtype & MFU_TT_NTAG_213_C) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG 213C 144bytes (NT2H1311C1DTL)"), spaces, ""); - else if (tagtype & NTAG_213_TT) + else if (tagtype & MFU_TT_NTAG_213_TT) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG 213TT 144bytes (NT2H1311TTDU)"), spaces, ""); - else if (tagtype & NTAG_215) + else if (tagtype & MFU_TT_NTAG_215) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG 215 504bytes (NT2H1511G0DU)"), spaces, ""); - else if (tagtype & NTAG_216) + else if (tagtype & MFU_TT_NTAG_216) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG 216 888bytes (NT2H1611G0DU)"), spaces, ""); - else if (tagtype & NTAG_216_F) + else if (tagtype & MFU_TT_NTAG_216_F) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG 216F 888bytes (NT2H1611F0DTL)"), spaces, ""); - else if (tagtype & NTAG_I2C_1K) + else if (tagtype & MFU_TT_NTAG_I2C_1K) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG I2C 888bytes (NT3H1101FHK)"), spaces, ""); - else if (tagtype & NTAG_I2C_2K) + else if (tagtype & MFU_TT_NTAG_I2C_2K) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG I2C 1904bytes (NT3H1201FHK)"), spaces, ""); - else if (tagtype & NTAG_I2C_1K_PLUS) + else if (tagtype & MFU_TT_NTAG_I2C_1K_PLUS) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG I2C plus 888bytes (NT3H2111FHK)"), spaces, ""); - else if (tagtype & NTAG_I2C_2K_PLUS) + else if (tagtype & MFU_TT_NTAG_I2C_2K_PLUS) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("NTAG I2C plus 1912bytes (NT3H2211FHK)"), spaces, ""); - else if (tagtype & MY_D) + else if (tagtype & MFU_TT_MY_D) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("INFINEON my-d\x99 (SLE 66RxxS)"), spaces, ""); - else if (tagtype & MY_D_NFC) + else if (tagtype & MFU_TT_MY_D_NFC) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("INFINEON my-d\x99 NFC (SLE 66RxxP)"), spaces, ""); - else if (tagtype & MY_D_MOVE) + else if (tagtype & MFU_TT_MY_D_MOVE) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("INFINEON my-d\x99 move (SLE 66R01P)"), spaces, ""); - else if (tagtype & MY_D_MOVE_NFC) + else if (tagtype & MFU_TT_MY_D_MOVE_NFC) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("INFINEON my-d\x99 move NFC (SLE 66R01P)"), spaces, ""); - else if (tagtype & MY_D_MOVE_LEAN) + else if (tagtype & MFU_TT_MY_D_MOVE_LEAN) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("INFINEON my-d\x99 move lean (SLE 66R01L)"), spaces, ""); - else if (tagtype & FUDAN_UL) + else if (tagtype & MFU_TT_FUDAN_UL) snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("FUDAN Ultralight Compatible (or other compatible)"), spaces, ""); else - snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("Unknown %06x"), spaces, "", tagtype); + snprintf(typestr, sizeof(typestr), "%*sTYPE: " _YELLOW_("Unknown %06" PRIx64), spaces, "", tagtype); - bool ismagic = ((tagtype & MAGIC) == MAGIC); + bool ismagic = ((tagtype & MFU_TT_MAGIC) == MFU_TT_MAGIC); if (ismagic) snprintf(typestr + strlen(typestr), 4, " ("); - snprintf(typestr + strlen(typestr), sizeof(typestr) - strlen(typestr), " %s ", (tagtype & MAGIC) ? _GREEN_("magic") : ""); - tagtype &= ~(MAGIC); - snprintf(typestr + strlen(typestr), sizeof(typestr) - strlen(typestr), "%s", (tagtype & MAGIC_1A) ? _GREEN_("Gen 1a") : ""); - snprintf(typestr + strlen(typestr), sizeof(typestr) - strlen(typestr), "%s", (tagtype & MAGIC_1B) ? _GREEN_("Gen 1b") : ""); + snprintf(typestr + strlen(typestr), sizeof(typestr) - strlen(typestr), " %s ", (tagtype & MFU_TT_MAGIC) ? _GREEN_("magic") : ""); + tagtype &= ~(MFU_TT_MAGIC); + snprintf(typestr + strlen(typestr), sizeof(typestr) - strlen(typestr), "%s", (tagtype & MFU_TT_MAGIC_1A) ? _GREEN_("Gen 1a") : ""); + snprintf(typestr + strlen(typestr), sizeof(typestr) - strlen(typestr), "%s", (tagtype & MFU_TT_MAGIC_1B) ? _GREEN_("Gen 1b") : ""); if (ismagic) snprintf(typestr + strlen(typestr), 4, " )"); @@ -738,7 +746,7 @@ static int ulc_print_configuration(uint8_t *data) { return PM3_SUCCESS; } -static int ulev1_print_configuration(uint32_t tagtype, uint8_t *data, uint8_t startPage) { +static int ulev1_print_configuration(uint64_t tagtype, uint8_t *data, uint8_t startPage) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Configuration")); @@ -756,7 +764,7 @@ static int ulev1_print_configuration(uint32_t tagtype, uint8_t *data, uint8_t st PrintAndLogEx(INFO, " cfg0 [%u/0x%02X]: %s", startPage, startPage, sprint_hex(data, 4)); //NTAG213TT has different ASCII mirroring options and config bytes interpretation from other ulev1 class tags - if (tagtype & NTAG_213_TT) { + if (tagtype & MFU_TT_NTAG_213_TT) { uint8_t mirror_conf = ((data[0] & 0xE0) >> 5); uint8_t mirror_byte = ((data[0] & 0x18) >> 3); uint8_t mirror_page = data[2]; @@ -822,7 +830,7 @@ static int ulev1_print_configuration(uint32_t tagtype, uint8_t *data, uint8_t st PrintAndLogEx(INFO, " mirror start page %02X | byte pos %02X - %s", mirror_page, mirror_byte, (mirror_page >= 0x4 && ((mirror_user_mem_start_byte + bytes_required_for_mirror_data) <= 144)) ? _GREEN_("OK") : _YELLOW_("Invalid value")); } - } else if (tagtype & (NTAG_213_F | NTAG_216_F)) { + } else if (tagtype & (MFU_TT_NTAG_213_F | MFU_TT_NTAG_216_F)) { uint8_t mirror_conf = ((data[0] & 0xC0) >> 6); uint8_t mirror_byte = (data[0] & 0x30); bool sleep_en = (data[0] & 0x08); @@ -865,7 +873,7 @@ static int ulev1_print_configuration(uint32_t tagtype, uint8_t *data, uint8_t st break; } // valid mirror start page and byte position within start page. - if (tagtype & NTAG_213_F) { + if (tagtype & MFU_TT_NTAG_213_F) { switch (mirror_conf) { case 1: { PrintAndLogEx(INFO, " mirror start block %02X | byte pos %02X - %s", data[2], mirror_byte, (data[2] >= 0x4 && data[2] <= 0x24) ? "OK" : "Invalid value"); break;} @@ -876,7 +884,7 @@ static int ulev1_print_configuration(uint32_t tagtype, uint8_t *data, uint8_t st default: break; } - } else if (tagtype & NTAG_216_F) { + } else if (tagtype & MFU_TT_NTAG_216_F) { switch (mirror_conf) { case 1: { PrintAndLogEx(INFO, " mirror start block %02X | byte pos %02X - %s", data[2], mirror_byte, (data[2] >= 0x4 && data[2] <= 0xDE) ? "OK" : "Invalid value"); break;} @@ -901,7 +909,7 @@ static int ulev1_print_configuration(uint32_t tagtype, uint8_t *data, uint8_t st uint8_t tt_msg_resp_len = 0; uint8_t tt_status_resp[5] = {0x00}; - if (tagtype & NTAG_213_TT) { + if (tagtype & MFU_TT_NTAG_213_TT) { tt_enabled = (data[1] & 0x02); tt_msg_resp_len = ul_read(45, tt_message, 4); @@ -941,7 +949,7 @@ static int ulev1_print_configuration(uint32_t tagtype, uint8_t *data, uint8_t st PrintAndLogEx(INFO, " PACK [%u/0x%02X]: %s - (cannot be read)", startPage + 3, startPage + 3, sprint_hex(data + 12, 2)); PrintAndLogEx(INFO, " RFU [%u/0x%02X]: %s- (cannot be read)", startPage + 3, startPage + 3, sprint_hex(data + 14, 2)); - if (tagtype & NTAG_213_TT) { + if (tagtype & MFU_TT_NTAG_213_TT) { if (data[1] & 0x06) { PrintAndLogEx(INFO, "TT_MSG [45/0x2D]: %s- (cannot be read)", sprint_hex(tt_message, tt_msg_resp_len)); PrintAndLogEx(INFO, " - tamper message is masked in memory"); @@ -952,7 +960,7 @@ static int ulev1_print_configuration(uint32_t tagtype, uint8_t *data, uint8_t st } //The NTAG213TT only returns meaningful information for the fields below if the tamper feature is enabled - if ((tagtype & NTAG_213_TT) && tt_enabled) { + if ((tagtype & MFU_TT_NTAG_213_TT) && tt_enabled) { uint8_t tt_status_len = ntagtt_getTamperStatus(tt_status_resp, 5); @@ -1012,7 +1020,7 @@ static int ulev1_print_counters(void) { return len; } -static int ulev1_print_signature(TagTypeUL_t tagtype, uint8_t *uid, uint8_t *signature, size_t signature_len) { +static int ulev1_print_signature(uint64_t tagtype, uint8_t *uid, uint8_t *signature, size_t signature_len) { #define PUBLIC_ECDA_KEYLEN 33 // known public keys for the originality check (source: https://github.com/alexbatalov/node-nxp-originality-verifier) @@ -1152,14 +1160,14 @@ static int ulc_magic_test(){ uint8_t nonce1[11] = {0x00}; uint8_t nonce2[11] = {0x00}; if ( !ul_select(&card) ){ - return UL_ERROR; + return MFU_TT_UL_ERROR; } int status = ulc_requestAuthentication(nonce1, sizeof(nonce1)); if ( status > 0 ) { status = ulc_requestAuthentication(nonce2, sizeof(nonce2)); - returnValue = ( !memcmp(nonce1, nonce2, 11) ) ? UL_C_MAGIC : UL_C; + returnValue = ( !memcmp(nonce1, nonce2, 11) ) ? MFU_TT_UL_C_MAGIC : MFU_TT_UL_C; } else { - returnValue = UL; + returnValue = MFU_TT_UL; } DropField(); return returnValue; @@ -1172,12 +1180,12 @@ static int ul_magic_test(void) { iso14a_card_select_t card; if (ul_select(&card) == false) - return UL_ERROR; + return MFU_TT_UL_ERROR; int status = ul_comp_write(0, NULL, 0); DropField(); if (status == 0) - return MAGIC; + return MFU_TT_MAGIC; // check for GEN1A, GEN1B and NTAG21x uint8_t is_generation = 0; @@ -1191,11 +1199,11 @@ static int ul_magic_test(void) { } switch (is_generation) { case MAGIC_GEN_1A: - return MAGIC_1A; + return MFU_TT_MAGIC_1A; case MAGIC_GEN_1B: - return MAGIC_1B; + return MFU_TT_MAGIC_1B; case MAGIC_NTAG21X: - return MAGIC_NTAG; + return MFU_TT_MAGIC_NTAG; default: break; } @@ -1461,7 +1469,7 @@ static int mfu_get_version_uid(uint8_t *version, uint8_t *uid) { return PM3_SUCCESS; } -static int mfu_fingerprint(TagTypeUL_t tagtype, bool hasAuthKey, uint8_t *authkey, int ak_len) { +static int mfu_fingerprint(uint64_t tagtype, bool hasAuthKey, uint8_t *authkey, int ak_len) { uint8_t *data = NULL; int res = PM3_SUCCESS; @@ -1486,7 +1494,7 @@ static int mfu_fingerprint(TagTypeUL_t tagtype, bool hasAuthKey, uint8_t *authke uint8_t keytype = 0; if (hasAuthKey) { - if (tagtype & UL_C) + if (tagtype & MFU_TT_UL_C) keytype = 1; //UL_C auth else keytype = 2; //UL_EV1/NTAG auth @@ -1567,17 +1575,17 @@ out: uint32_t GetHF14AMfU_Type(void) { - TagTypeUL_t tagtype = UNKNOWN; + uint64_t tagtype = MFU_TT_UNKNOWN; iso14a_card_select_t card; if (ul_select(&card) == false) - return UL_ERROR; + return MFU_TT_UL_ERROR; // Ultralight - ATQA / SAK if (card.atqa[1] != 0x00 || card.atqa[0] != 0x44 || card.sak != 0x00) { //PrintAndLogEx(NORMAL, "Tag is not Ultralight | NTAG | MY-D [ATQA: %02X %02X SAK: %02X]\n", card.atqa[1], card.atqa[0], card.sak); DropField(); - return UL_ERROR; + return MFU_TT_UL_ERROR; } if (card.uid[0] != 0x05) { @@ -1628,79 +1636,79 @@ uint32_t GetHF14AMfU_Type(void) { Feiju NTAG 0053040201000F03 */ - if (memcmp(version, "\x00\x04\x03\x01\x01\x00\x0B", 7) == 0) { tagtype = UL_EV1_48; break; } - else if (memcmp(version, "\x00\x04\x03\x01\x02\x00\x0B", 7) == 0) { tagtype = UL_NANO_40; break; } - else if (memcmp(version, "\x00\x04\x03\x02\x01\x00\x0B", 7) == 0) { tagtype = UL_EV1_48; break; } - else if (memcmp(version, "\x00\x04\x03\x01\x01\x00\x0E", 7) == 0) { tagtype = UL_EV1_128; break; } - else if (memcmp(version, "\x00\x04\x03\x02\x01\x00\x0E", 7) == 0) { tagtype = UL_EV1_128; break; } - else if (memcmp(version, "\x00\x34\x21\x01\x01\x00\x0E", 7) == 0) { tagtype = UL_EV1_128; break; } // Mikron JSC Russia EV1 41 pages tag - else if (memcmp(version, "\x00\x04\x04\x01\x01\x00\x0B", 7) == 0) { tagtype = NTAG_210; break; } - else if (memcmp(version, "\x00\x04\x04\x01\x02\x00\x0B", 7) == 0) { tagtype = NTAG_210u; break; } - else if (memcmp(version, "\x00\x04\x04\x02\x02\x00\x0B", 7) == 0) { tagtype = NTAG_210u; break; } - else if (memcmp(version, "\x00\x04\x04\x01\x01\x00\x0E", 7) == 0) { tagtype = NTAG_212; break; } - else if (memcmp(version, "\x00\x04\x04\x02\x01\x00\x0F", 7) == 0) { tagtype = NTAG_213; break; } - else if (memcmp(version, "\x00\x53\x04\x02\x01\x00\x0F", 7) == 0) { tagtype = NTAG_213; break; } //Shanghai Feiju Microelectronics Co. Ltd. China (Xiaomi Air Purifier filter) - else if (memcmp(version, "\x00\x04\x04\x02\x01\x01\x0F", 7) == 0) { tagtype = NTAG_213_C; break; } - else if (memcmp(version, "\x00\x04\x04\x02\x01\x00\x11", 7) == 0) { tagtype = NTAG_215; break; } - else if (memcmp(version, "\x00\x04\x04\x02\x01\x00\x13", 7) == 0) { tagtype = NTAG_216; break; } - else if (memcmp(version, "\x00\x04\x04\x04\x01\x00\x0F", 7) == 0) { tagtype = NTAG_213_F; break; } - else if (memcmp(version, "\x00\x04\x04\x04\x01\x00\x13", 7) == 0) { tagtype = NTAG_216_F; break; } - else if (memcmp(version, "\x00\x04\x04\x02\x03\x00\x0F", 7) == 0) { tagtype = NTAG_213_TT; break; } - else if (memcmp(version, "\x00\x04\x04\x05\x02\x01\x13", 7) == 0) { tagtype = NTAG_I2C_1K; break; } - else if (memcmp(version, "\x00\x04\x04\x05\x02\x01\x15", 7) == 0) { tagtype = NTAG_I2C_2K; break; } - else if (memcmp(version, "\x00\x04\x04\x05\x02\x02\x13", 7) == 0) { tagtype = NTAG_I2C_1K_PLUS; break; } - else if (memcmp(version, "\x00\x04\x04\x05\x02\x02\x15", 7) == 0) { tagtype = NTAG_I2C_2K_PLUS; break; } - else if (version[2] == 0x04) { tagtype = NTAG; break; } - else if (version[2] == 0x03) { tagtype = UL_EV1; } + if (memcmp(version, "\x00\x04\x03\x01\x01\x00\x0B", 7) == 0) { tagtype = MFU_TT_UL_EV1_48; break; } + else if (memcmp(version, "\x00\x04\x03\x01\x02\x00\x0B", 7) == 0) { tagtype = MFU_TT_UL_NANO_40; break; } + else if (memcmp(version, "\x00\x04\x03\x02\x01\x00\x0B", 7) == 0) { tagtype = MFU_TT_UL_EV1_48; break; } + else if (memcmp(version, "\x00\x04\x03\x01\x01\x00\x0E", 7) == 0) { tagtype = MFU_TT_UL_EV1_128; break; } + else if (memcmp(version, "\x00\x04\x03\x02\x01\x00\x0E", 7) == 0) { tagtype = MFU_TT_UL_EV1_128; break; } + else if (memcmp(version, "\x00\x34\x21\x01\x01\x00\x0E", 7) == 0) { tagtype = MFU_TT_UL_EV1_128; break; } // Mikron JSC Russia EV1 41 pages tag + else if (memcmp(version, "\x00\x04\x04\x01\x01\x00\x0B", 7) == 0) { tagtype = MFU_TT_NTAG_210; break; } + else if (memcmp(version, "\x00\x04\x04\x01\x02\x00\x0B", 7) == 0) { tagtype = MFU_TT_NTAG_210u; break; } + else if (memcmp(version, "\x00\x04\x04\x02\x02\x00\x0B", 7) == 0) { tagtype = MFU_TT_NTAG_210u; break; } + else if (memcmp(version, "\x00\x04\x04\x01\x01\x00\x0E", 7) == 0) { tagtype = MFU_TT_NTAG_212; break; } + else if (memcmp(version, "\x00\x04\x04\x02\x01\x00\x0F", 7) == 0) { tagtype = MFU_TT_NTAG_213; break; } + else if (memcmp(version, "\x00\x53\x04\x02\x01\x00\x0F", 7) == 0) { tagtype = MFU_TT_NTAG_213; break; } //Shanghai Feiju Microelectronics Co. Ltd. China (Xiaomi Air Purifier filter) + else if (memcmp(version, "\x00\x04\x04\x02\x01\x01\x0F", 7) == 0) { tagtype = MFU_TT_NTAG_213_C; break; } + else if (memcmp(version, "\x00\x04\x04\x02\x01\x00\x11", 7) == 0) { tagtype = MFU_TT_NTAG_215; break; } + else if (memcmp(version, "\x00\x04\x04\x02\x01\x00\x13", 7) == 0) { tagtype = MFU_TT_NTAG_216; break; } + else if (memcmp(version, "\x00\x04\x04\x04\x01\x00\x0F", 7) == 0) { tagtype = MFU_TT_NTAG_213_F; break; } + else if (memcmp(version, "\x00\x04\x04\x04\x01\x00\x13", 7) == 0) { tagtype = MFU_TT_NTAG_216_F; break; } + else if (memcmp(version, "\x00\x04\x04\x02\x03\x00\x0F", 7) == 0) { tagtype = MFU_TT_NTAG_213_TT; break; } + else if (memcmp(version, "\x00\x04\x04\x05\x02\x01\x13", 7) == 0) { tagtype = MFU_TT_NTAG_I2C_1K; break; } + else if (memcmp(version, "\x00\x04\x04\x05\x02\x01\x15", 7) == 0) { tagtype = MFU_TT_NTAG_I2C_2K; break; } + else if (memcmp(version, "\x00\x04\x04\x05\x02\x02\x13", 7) == 0) { tagtype = MFU_TT_NTAG_I2C_1K_PLUS; break; } + else if (memcmp(version, "\x00\x04\x04\x05\x02\x02\x15", 7) == 0) { tagtype = MFU_TT_NTAG_I2C_2K_PLUS; break; } + else if (version[2] == 0x04) { tagtype = MFU_TT_NTAG; break; } + else if (version[2] == 0x03) { tagtype = MFU_TT_UL_EV1; } break; } case 0x01: - tagtype = UL_C; + tagtype = MFU_TT_UL_C; break; case 0x00: - tagtype = UL; + tagtype = MFU_TT_UL; break; case -1 : - tagtype = (UL | UL_C | NTAG_203); + tagtype = (MFU_TT_UL | MFU_TT_UL_C | MFU_TT_NTAG_203); break; // could be UL | UL_C magic tags default : - tagtype = UNKNOWN; + tagtype = MFU_TT_UNKNOWN; break; } // UL vs UL-C vs ntag203 test - if (tagtype & (UL | UL_C | NTAG_203)) { - if (!ul_select(&card)) return UL_ERROR; + if (tagtype & (MFU_TT_UL | MFU_TT_UL_C | MFU_TT_NTAG_203)) { + if (!ul_select(&card)) return MFU_TT_UL_ERROR; // do UL_C check first... uint8_t nonce[11] = {0x00}; int status = ulc_requestAuthentication(nonce, sizeof(nonce)); DropField(); if (status > 1) { - tagtype = UL_C; + tagtype = MFU_TT_UL_C; } else { // need to re-select after authentication error if (ul_select(&card) == false) - return UL_ERROR; + return MFU_TT_UL_ERROR; uint8_t data[16] = {0x00}; // read page 0x26-0x29 (last valid ntag203 page) status = ul_read(0x26, data, sizeof(data)); if (status <= 1) { - tagtype = UL; + tagtype = MFU_TT_UL; } else { // read page 0x30 (should error if it is a ntag203) status = ul_read(0x30, data, sizeof(data)); if (status <= 1) { - tagtype = NTAG_203; + tagtype = MFU_TT_NTAG_203; } else { - tagtype = UNKNOWN; + tagtype = MFU_TT_UNKNOWN; } } DropField(); } } - if (tagtype & UL) { + if (tagtype & MFU_TT_UL) { tagtype = ul_fudan_check(); DropField(); } @@ -1711,23 +1719,23 @@ uint32_t GetHF14AMfU_Type(void) { switch (nib) { // case 0: tagtype = SLE66R35E7; break; //or SLE 66R35E7 - mifare compat... should have different sak/atqa for mf 1k case 1: - tagtype = MY_D; + tagtype = MFU_TT_MY_D; break; // or SLE 66RxxS ... up to 512 pages of 8 user bytes... case 2: - tagtype = (MY_D_NFC); + tagtype = MFU_TT_MY_D_NFC; break; // or SLE 66RxxP ... up to 512 pages of 8 user bytes... (or in nfc mode FF pages of 4 bytes) case 3: - tagtype = (MY_D_MOVE | MY_D_MOVE_NFC); + tagtype = (MFU_TT_MY_D_MOVE | MFU_TT_MY_D_MOVE_NFC); break; // or SLE 66R01P // 38 pages of 4 bytes //notice: we can not currently distinguish between these two case 7: - tagtype = MY_D_MOVE_LEAN; + tagtype = MFU_TT_MY_D_MOVE_LEAN; break; // or SLE 66R01L // 16 pages of 4 bytes } } tagtype |= ul_magic_test(); - if (tagtype == (UNKNOWN | MAGIC)) { - tagtype = (UL_MAGIC); + if (tagtype == (MFU_TT_UNKNOWN | MFU_TT_MAGIC)) { + tagtype = (MFU_TT_UL_MAGIC); } return tagtype; } @@ -1780,8 +1788,8 @@ static int CmdHF14AMfUInfo(const char *Cmd) { uint8_t pack[4] = {0, 0, 0, 0}; int len; - TagTypeUL_t tagtype = GetHF14AMfU_Type(); - if (tagtype == UL_ERROR) + uint64_t tagtype = GetHF14AMfU_Type(); + if (tagtype == MFU_TT_UL_ERROR) return PM3_ESOFT; PrintAndLogEx(NORMAL, ""); @@ -1812,7 +1820,7 @@ static int CmdHF14AMfUInfo(const char *Cmd) { } // UL_C Specific - if ((tagtype & UL_C)) { + if ((tagtype & MFU_TT_UL_C)) { // read pages 0x28, 0x29, 0x2A, 0x2B uint8_t ulc_conf[16] = {0x00}; @@ -1829,7 +1837,7 @@ static int CmdHF14AMfUInfo(const char *Cmd) { mfu_fingerprint(tagtype, has_auth_key, authkeyptr, ak_len); - if ((tagtype & MAGIC)) { + if ((tagtype & MFU_TT_MAGIC)) { //just read key uint8_t ulc_deskey[16] = {0x00}; status = ul_read(0x2C, ulc_deskey, sizeof(ulc_deskey)); @@ -1863,7 +1871,7 @@ static int CmdHF14AMfUInfo(const char *Cmd) { // do counters and signature first (don't neet auth) // ul counters are different than ntag counters - if ((tagtype & (UL_EV1_48 | UL_EV1_128 | UL_EV1))) { + if ((tagtype & (MFU_TT_UL_EV1_48 | MFU_TT_UL_EV1_128 | MFU_TT_UL_EV1))) { if (ulev1_print_counters() != 3) { // failed - re-select if (ul_auth_select(&card, tagtype, has_auth_key, authkeyptr, pack, sizeof(pack)) == PM3_ESOFT) { @@ -1873,7 +1881,7 @@ static int CmdHF14AMfUInfo(const char *Cmd) { } // NTAG counters? - if ((tagtype & (NTAG_213 | NTAG_213_F | NTAG_213_C | NTAG_213_TT | NTAG_215 | NTAG_216))) { + if ((tagtype & (MFU_TT_NTAG_213 | MFU_TT_NTAG_213_F | MFU_TT_NTAG_213_C | MFU_TT_NTAG_213_TT | MFU_TT_NTAG_215 | MFU_TT_NTAG_216))) { if (ntag_print_counter()) { // failed - re-select if (ul_auth_select(&card, tagtype, has_auth_key, authkeyptr, pack, sizeof(pack)) == PM3_ESOFT) { @@ -1883,7 +1891,10 @@ static int CmdHF14AMfUInfo(const char *Cmd) { } // Read signature - if ((tagtype & (UL_EV1_48 | UL_EV1_128 | UL_EV1 | UL_NANO_40 | NTAG_210u | NTAG_213 | NTAG_213_F | NTAG_213_C | NTAG_213_TT | NTAG_215 | NTAG_216 | NTAG_216_F | NTAG_I2C_1K | NTAG_I2C_2K | NTAG_I2C_1K_PLUS | NTAG_I2C_2K_PLUS))) { + if ((tagtype & (MFU_TT_UL_EV1_48 | MFU_TT_UL_EV1_128 | MFU_TT_UL_EV1 | MFU_TT_UL_NANO_40 | + MFU_TT_NTAG_210u | MFU_TT_NTAG_213 | MFU_TT_NTAG_213_F | MFU_TT_NTAG_213_C | + MFU_TT_NTAG_213_TT | MFU_TT_NTAG_215 | MFU_TT_NTAG_216 | MFU_TT_NTAG_216_F | + MFU_TT_NTAG_I2C_1K | MFU_TT_NTAG_I2C_2K | MFU_TT_NTAG_I2C_1K_PLUS | MFU_TT_NTAG_I2C_2K_PLUS))) { uint8_t ulev1_signature[32] = {0x00}; status = ulev1_readSignature(ulev1_signature, sizeof(ulev1_signature)); if (status == -1) { @@ -2096,8 +2107,8 @@ static int CmdHF14AMfUWrBl(const char *Cmd) { uint8_t *authKeyPtr = authenticationkey; // starting with getting tagtype - TagTypeUL_t tagtype = GetHF14AMfU_Type(); - if (tagtype == UL_ERROR) + uint64_t tagtype = GetHF14AMfU_Type(); + if (tagtype == MFU_TT_UL_ERROR) return PM3_ESOFT; uint8_t maxblockno = 0; @@ -2217,8 +2228,8 @@ static int CmdHF14AMfURdBl(const char *Cmd) { uint8_t *authKeyPtr = authenticationkey; // start with getting tagtype - TagTypeUL_t tagtype = GetHF14AMfU_Type(); - if (tagtype == UL_ERROR) + uint64_t tagtype = GetHF14AMfU_Type(); + if (tagtype == MFU_TT_UL_ERROR) return PM3_ESOFT; uint8_t maxblockno = 0; @@ -2506,8 +2517,8 @@ static int CmdHF14AMfUDump(const char *Cmd) { authKeyPtr = SwapEndian64(authenticationkey, ak_len, 4); } - TagTypeUL_t tagtype = GetHF14AMfU_Type(); - if (tagtype == UL_ERROR) + uint64_t tagtype = GetHF14AMfU_Type(); + if (tagtype == MFU_TT_UL_ERROR) return PM3_ESOFT; //get number of pages to read @@ -2524,7 +2535,7 @@ static int CmdHF14AMfUDump(const char *Cmd) { PrintAndLogEx(SUCCESS, "Reading tag memory..."); uint8_t keytype = 0; if (has_auth_key || has_pwd) { - if (tagtype & UL_C) + if (tagtype & MFU_TT_UL_C) keytype = 1; //UL_C auth else keytype = 2; //UL_EV1/NTAG auth @@ -2574,7 +2585,7 @@ static int CmdHF14AMfUDump(const char *Cmd) { // not ul_c and not std ul then attempt to collect info like // VERSION, SIGNATURE, COUNTERS, TEARING, PACK, - if (!(tagtype & UL_C || tagtype & UL || tagtype & MY_D_MOVE || tagtype & MY_D_MOVE_LEAN)) { + if (!(tagtype & MFU_TT_UL_C || tagtype & MFU_TT_UL || tagtype & MFU_TT_MY_D_MOVE || tagtype & MFU_TT_MY_D_MOVE_LEAN)) { //attempt to read pack uint8_t get_pack[] = {0, 0}; if (ul_auth_select(&card, tagtype, true, authKeyPtr, get_pack, sizeof(get_pack)) != PM3_SUCCESS) { @@ -2604,7 +2615,7 @@ static int CmdHF14AMfUDump(const char *Cmd) { uint8_t n = 0; // NTAG has 1 counter, at 0x02 - if ((tagtype & (NTAG_213 | NTAG_213_F | NTAG_213_C | NTAG_213_TT | NTAG_215 | NTAG_216))) { + if ((tagtype & (MFU_TT_NTAG_213 | MFU_TT_NTAG_213_F | MFU_TT_NTAG_213_C | MFU_TT_NTAG_213_TT | MFU_TT_NTAG_215 | MFU_TT_NTAG_216))) { n = 2; } @@ -2652,7 +2663,7 @@ static int CmdHF14AMfUDump(const char *Cmd) { authKeyPtr = authenticationkey; } - if (tagtype & UL_C) { //add 4 pages + if (tagtype & MFU_TT_UL_C) { //add 4 pages memcpy(data + pages * 4, authKeyPtr, ak_len); pages += ak_len / 4; } else { // 2nd page from end @@ -2751,13 +2762,13 @@ int CmdHF14MfUTamper(const char *Cmd) { bool disable = arg_get_lit(ctx, 2); CLIParserFree(ctx); - TagTypeUL_t tagtype = GetHF14AMfU_Type(); - if (tagtype == UL_ERROR) { + uint64_t tagtype = GetHF14AMfU_Type(); + if (tagtype == MFU_TT_UL_ERROR) { PrintAndLogEx(WARNING, "Tag type not detected"); DropField(); return PM3_ESOFT; } - if (tagtype != NTAG_213_TT) { + if (tagtype != MFU_TT_NTAG_213_TT) { PrintAndLogEx(WARNING, "Tag type not NTAG 213TT"); DropField(); return PM3_ESOFT; @@ -2775,7 +2786,7 @@ int CmdHF14MfUTamper(const char *Cmd) { if (use_msg) { if (ul_select(&card) == false) { DropField(); - return UL_ERROR; + return MFU_TT_UL_ERROR; } PrintAndLogEx(INFO, "Trying to write tamper message\n"); SendCommandMIX(CMD_HF_MIFAREU_WRITEBL, tt_msg_page, 0, 0, msg_data, 4); @@ -2798,7 +2809,7 @@ int CmdHF14MfUTamper(const char *Cmd) { if (ul_select(&card) == false) { PrintAndLogEx(ERR, "Unable to select tag"); DropField(); - return UL_ERROR; + return MFU_TT_UL_ERROR; } uint8_t cfg_page[4] = {0x00}; @@ -4384,8 +4395,8 @@ int CmdHF14MfuNDEFRead(const char *Cmd) { } // Get tag type - TagTypeUL_t tagtype = GetHF14AMfU_Type(); - if (tagtype == UL_ERROR) { + uint64_t tagtype = GetHF14AMfU_Type(); + if (tagtype == MFU_TT_UL_ERROR) { PrintAndLogEx(WARNING, "No Ultralight / NTAG based tag found"); return PM3_ESOFT; } diff --git a/client/src/cmdhfmfu.h b/client/src/cmdhfmfu.h index 1ed652e79..f0057298d 100644 --- a/client/src/cmdhfmfu.h +++ b/client/src/cmdhfmfu.h @@ -43,7 +43,7 @@ typedef struct { } PACKED old_mfu_dump_t; uint32_t GetHF14AMfU_Type(void); -int ul_print_type(uint32_t tagtype, uint8_t spaces); +int ul_print_type(uint64_t tagtype, uint8_t spaces); void printMFUdumpEx(mfu_dump_t *card, uint16_t pages, uint8_t startpage); int ul_read_uid(uint8_t *uid); int trace_mfuc_try_default_3des_keys(uint8_t **correct_key, int state, uint8_t (*authdata)[16]); @@ -55,44 +55,43 @@ int CmdHF14MfUTamper(const char *Cmd); uint16_t ul_ev1_packgen_VCNEW(uint8_t *uid, uint32_t pwd); uint32_t ul_ev1_otpgenA(uint8_t *uid); -typedef enum TAGTYPE_UL { - UNKNOWN = 0x000000, - UL = 0x1, - UL_C = 0x2, - UL_EV1_48 = 0x4, - UL_EV1_128 = 0x8, - NTAG = 0x10, - NTAG_203 = 0x20, - NTAG_210 = 0x40, - NTAG_212 = 0x80, - NTAG_213 = 0x100, - NTAG_215 = 0x200, - NTAG_216 = 0x400, - MY_D = 0x800, - MY_D_NFC = 0x1000, - MY_D_MOVE = 0x2000, - MY_D_MOVE_NFC = 0x4000, - MY_D_MOVE_LEAN = 0x8000, - NTAG_I2C_1K = 0x10000, - NTAG_I2C_2K = 0x20000, - NTAG_I2C_1K_PLUS = 0x40000, - NTAG_I2C_2K_PLUS = 0x80000, - FUDAN_UL = 0x100000, - MAGIC = 0x200000, - NTAG_213_F = 0x400000, - NTAG_216_F = 0x800000, - UL_EV1 = 0x1000000, - UL_NANO_40 = 0x2000000, - NTAG_213_TT = 0x4000000, - NTAG_213_C = 0x8000000, - MAGIC_1A = 0x10000000 | MAGIC, - MAGIC_1B = 0x20000000 | MAGIC, - MAGIC_NTAG = 0x40000000 | MAGIC, - NTAG_210u = 0x80000000, - UL_MAGIC = UL | MAGIC, - UL_C_MAGIC = UL_C | MAGIC, - // Don't forget to fill UL_TYPES_ARRAY and UL_MEMORY_ARRAY if new types are added - UL_ERROR = 0xFFFFFF, -} TagTypeUL_t; +#define MFU_TT_UNKNOWN 0x0ULL +#define MFU_TT_UL 0x1ULL +#define MFU_TT_UL_C 0x2ULL +#define MFU_TT_UL_EV1_48 0x4ULL +#define MFU_TT_UL_EV1_128 0x8ULL +#define MFU_TT_NTAG 0x10ULL +#define MFU_TT_NTAG_203 0x20ULL +#define MFU_TT_NTAG_210 0x40ULL +#define MFU_TT_NTAG_212 0x80ULL +#define MFU_TT_NTAG_213 0x100ULL +#define MFU_TT_NTAG_215 0x200ULL +#define MFU_TT_NTAG_216 0x400ULL +#define MFU_TT_MY_D 0x800ULL +#define MFU_TT_MY_D_NFC 0x1000ULL +#define MFU_TT_MY_D_MOVE 0x2000ULL +#define MFU_TT_MY_D_MOVE_NFC 0x4000ULL +#define MFU_TT_MY_D_MOVE_LEAN 0x8000ULL +#define MFU_TT_NTAG_I2C_1K 0x10000ULL +#define MFU_TT_NTAG_I2C_2K 0x20000ULL +#define MFU_TT_NTAG_I2C_1K_PLUS 0x40000ULL +#define MFU_TT_NTAG_I2C_2K_PLUS 0x80000ULL +#define MFU_TT_FUDAN_UL 0x100000ULL +#define MFU_TT_MAGIC 0x200000ULL +#define MFU_TT_NTAG_213_F 0x400000ULL +#define MFU_TT_NTAG_216_F 0x800000ULL +#define MFU_TT_UL_EV1 0x1000000ULL +#define MFU_TT_UL_NANO_40 0x2000000ULL +#define MFU_TT_NTAG_213_TT 0x4000000ULL +#define MFU_TT_NTAG_213_C 0x8000000ULL +#define MFU_TT_MAGIC_1A (0x10000000ULL | MFU_TT_MAGIC) +#define MFU_TT_MAGIC_1B (0x20000000ULL | MFU_TT_MAGIC) +#define MFU_TT_MAGIC_NTAG (0x40000000ULL | MFU_TT_MAGIC) +#define MFU_TT_NTAG_210u 0x80000000ULL +#define MFU_TT_UL_MAGIC (MFU_TT_UL | MFU_TT_MAGIC) +#define MFU_TT_UL_C_MAGIC (MFU_TT_UL_C | MFU_TT_MAGIC) +// Don't forget to fill UL_TYPES_ARRAY and UL_MEMORY_ARRAY if new types are added +#define MFU_TT_UL_ERROR 0x7FFFFFFFULL + #endif From dfdaa4198764ed45a54b54cca7b510bda0f21414 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 3 Nov 2023 15:41:07 +0100 Subject: [PATCH 0682/1034] wrong string formatter --- client/src/util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/util.c b/client/src/util.c index 51dbc0a19..640178959 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -860,7 +860,7 @@ int param_getbin_to_eol(const char *line, int paramnum, uint8_t *data, int maxda if (strlen(buf) > 0) { uint32_t temp = 0; - sscanf(buf, "%d", &temp); + sscanf(buf, "%u", &temp); data[*datalen] = (uint8_t)(temp & 0xff); *buf = 0; (*datalen)++; From f58b4603ba1d22280ac49670a2e3f844e9b127eb Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 3 Nov 2023 15:42:13 +0100 Subject: [PATCH 0683/1034] fix --- client/src/cmdhffelica.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhffelica.c b/client/src/cmdhffelica.c index 191a481de..230628c51 100644 --- a/client/src/cmdhffelica.c +++ b/client/src/cmdhffelica.c @@ -566,7 +566,7 @@ static void reverse_3des_key(const uint8_t *master_key, int length, uint8_t *rev for (int i = 0; i < length; i++) { reverse_master_key[i] = master_key[(length - 1) - i]; } -}; +} /** * Command parser for auth1 From 83b9057473c4e0e8c6cd979270130eaf14e19ab2 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 3 Nov 2023 15:44:28 +0100 Subject: [PATCH 0684/1034] fix --- client/src/cmdhfmfdes.c | 2 +- client/src/ksx6924/ksx6924core.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index d25e0dbf1..88166a8f2 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -444,7 +444,7 @@ static void swap24(uint8_t *data) { uint8_t tmp = data[0]; data[0] = data[2]; data[2] = tmp; -}; +} // default parameters static uint8_t defaultKeyNum = 0; diff --git a/client/src/ksx6924/ksx6924core.c b/client/src/ksx6924/ksx6924core.c index 4f4ab676e..a46d1a055 100644 --- a/client/src/ksx6924/ksx6924core.c +++ b/client/src/ksx6924/ksx6924core.c @@ -317,7 +317,7 @@ bool KSX6924ParsePurseInfo(const uint8_t *purseInfo, size_t purseLen, struct ksx // TODO return true; -}; +} /** * Prints out a ksx6924_purse_info @@ -520,7 +520,7 @@ bool KSX6924ParseInitializeCardResponse(const uint8_t *initCardResponse, size_t // TODO return true; -}; +} /** * Prints out a Initialize Card response From 4df28b88d3b90978cca79277a3e0c28e548a103f Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 3 Nov 2023 15:47:45 +0100 Subject: [PATCH 0685/1034] fix --- client/src/fileutils.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 9d97b9831..52c0a28bf 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1114,8 +1114,9 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s if (str_startswith(line, "tearing 0:")) { if (ft == NFC_DF_MFC) { } else if (ft == NFC_DF_MFU) { - sscanf(line, "tearing 0: %02x", &n); - udata.mfu->counter_tearing[0][3] = n & 0xFF; + uint32_t b = 0; + sscanf(line, "tearing 0: %02x", &b); + udata.mfu->counter_tearing[0][3] = b & 0xFF; } continue; } @@ -1135,8 +1136,9 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s if (str_startswith(line, "tearing 1:")) { if (ft == NFC_DF_MFC) { } else if (ft == NFC_DF_MFU) { - sscanf(line, "tearing 1: %02x", &n); - udata.mfu->counter_tearing[1][3] = n & 0xFF; + uint32_t b = 0; + sscanf(line, "tearing 1: %02x", &b); + udata.mfu->counter_tearing[1][3] = b & 0xFF; } continue; } @@ -1156,8 +1158,9 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s if (str_startswith(line, "tearing 2:")) { if (ft == NFC_DF_MFC) { } else if (ft == NFC_DF_MFU) { - sscanf(line, "tearing 2: %02x", &n); - udata.mfu->counter_tearing[2][3] = n & 0xFF; + uint32_t b = 0; + sscanf(line, "tearing 2: %02x", &b); + udata.mfu->counter_tearing[2][3] = b & 0xFF; } continue; } From 9c1644cd739ae8b9b2458cef4d62a5fef7dc3825 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 5 Nov 2023 01:50:32 +0100 Subject: [PATCH 0686/1034] support loading of flipper zero .picopass files. Also adapted to naive detect if PACS w variable length encoded is present --- client/src/cmdhficlass.c | 99 +++++++++++++++++++++++++++++++++------- client/src/fileutils.c | 29 +++++++++--- client/src/fileutils.h | 5 +- 3 files changed, 107 insertions(+), 26 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 17c8f68aa..0071601a5 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1321,36 +1321,101 @@ static int CmdHFiClassESetBlk(const char *Cmd) { return PM3_SUCCESS; } +static bool iclass_detect_new_pacs(uint8_t *d) { + uint8_t n = 0; + while (n++ < (PICOPASS_BLOCK_SIZE / 2)) { + if (d[n] && + d[n + 1] == 0xA6) { + return true; + } + } + return false; +} + +// block 7 decoder for PACS +static int iclass_decode_credentials_new_pacs(uint8_t *d) { + + uint8_t offset = 0; + while(d[offset] == 0 && (offset < PICOPASS_BLOCK_SIZE / 2)) { + offset++; + } + + uint8_t pad = d[offset]; + + PrintAndLogEx(INFO, "%u , %u", offset, pad); + + char *binstr = (char *)calloc((PICOPASS_BLOCK_SIZE * 8) + 1, sizeof(uint8_t)); + if (binstr == NULL) { + return PM3_EMALLOC; + } + + uint8_t n = PICOPASS_BLOCK_SIZE - offset - 2; + byte_2_binstr(binstr, d + offset + 2, n); + + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(SUCCESS, "PACS......... " _GREEN_("%s"), sprint_hex_inrow(d + offset + 2, n)); + PrintAndLogEx(SUCCESS, "padded bin... " _GREEN_("%s") " ( %zu )", binstr, strlen(binstr)); + + binstr[strlen(binstr) - pad] = '\0'; + PrintAndLogEx(SUCCESS, "bin.......... " _GREEN_("%s") " ( %zu )", binstr, strlen(binstr)); + + size_t hexlen = 0; + uint8_t hex[16] = {0}; + binstr_2_bytes(hex, &hexlen, binstr); + PrintAndLogEx(SUCCESS, "hex.......... " _GREEN_("%s"), sprint_hex_inrow(hex, hexlen)); + + uint32_t top = 0, mid = 0, bot = 0; + if (binstring_to_u96(&top, &mid, &bot, binstr) != strlen(binstr)) { + PrintAndLogEx(ERR, "Binary string contains none <0|1> chars"); + free(binstr); + return PM3_EINVARG; + } + + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "Wiegand decode"); + wiegand_message_t packed = initialize_message_object(top, mid, bot, 0); + HIDTryUnpack(&packed); +} + static void iclass_decode_credentials(uint8_t *data) { picopass_hdr_t *hdr = (picopass_hdr_t *)data; - if (memcmp(hdr->app_issuer_area, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { + if (memcmp(hdr->app_issuer_area, empty, PICOPASS_BLOCK_SIZE)) { // Not a Legacy or SR card, nothing to do here. return; } - BLOCK79ENCRYPTION encryption = (data[(6 * 8) + 7] & 0x03); - bool has_values = (memcmp(data + (8 * 7), empty, 8) != 0) && (memcmp(data + (8 * 7), zeros, 8) != 0); + BLOCK79ENCRYPTION encryption = (data[(6 * PICOPASS_BLOCK_SIZE) + 7] & 0x03); + + uint8_t *b7 = data + (PICOPASS_BLOCK_SIZE * 7); + + bool has_new_pacs = iclass_detect_new_pacs(b7); + bool has_values = (memcmp(b7, empty, PICOPASS_BLOCK_SIZE) != 0) && (memcmp(b7, zeros, PICOPASS_BLOCK_SIZE) != 0); if (has_values && encryption == None) { - //todo: remove preamble/sentinel - uint32_t top = 0, mid = 0, bot = 0; - + // todo: remove preamble/sentinel PrintAndLogEx(INFO, "Block 7 decoder"); - char hexstr[16 + 1] = {0}; - hex_to_buffer((uint8_t *)hexstr, data + (8 * 7), 8, sizeof(hexstr) - 1, 0, 0, true); - hexstring_to_u96(&top, &mid, &bot, hexstr); + if (has_new_pacs) { + iclass_decode_credentials_new_pacs(b7); + } else { + char hexstr[16 + 1] = {0}; + hex_to_buffer((uint8_t *)hexstr, b7, PICOPASS_BLOCK_SIZE, sizeof(hexstr) - 1, 0, 0, true); - char binstr[64 + 1]; - hextobinstring(binstr, hexstr); - char *pbin = binstr; - while (strlen(pbin) && *(++pbin) == '0'); + uint32_t top = 0, mid = 0, bot = 0; + hexstring_to_u96(&top, &mid, &bot, hexstr); - PrintAndLogEx(SUCCESS, "Binary..................... " _GREEN_("%s"), pbin); + char binstr[64 + 1]; + hextobinstring(binstr, hexstr); + char *pbin = binstr; + while (strlen(pbin) && *(++pbin) == '0'); + + PrintAndLogEx(SUCCESS, "Binary..................... " _GREEN_("%s"), pbin); + + PrintAndLogEx(INFO, "Wiegand decode"); + wiegand_message_t packed = initialize_message_object(top, mid, bot, 0); + HIDTryUnpack(&packed); + } - PrintAndLogEx(INFO, "Wiegand decode"); - wiegand_message_t packed = initialize_message_object(top, mid, bot, 0); - HIDTryUnpack(&packed); } else { PrintAndLogEx(INFO, "No unencrypted legacy credential found"); } diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 52c0a28bf..1ddb66d74 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -87,7 +87,9 @@ DumpFileType_t getfiletype(const char *filename) { } else if (str_endswith(s, "mct")) { o = MCT; } else if (str_endswith(s, "nfc")) { - o = NFC; + o = FLIPPER; + } else if (str_endswith(s, "picopass")) { + o = FLIPPER; } else { // mfd, trc, trace is binary o = BIN; @@ -1020,7 +1022,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s int retval = PM3_SUCCESS; char *path; - int res = searchFile(&path, RESOURCES_SUBDIR, preferredName, ".nfc", false); + int res = searchFile(&path, RESOURCES_SUBDIR, preferredName, "", false); if (res != PM3_SUCCESS) { return PM3_EFILE; } @@ -1221,14 +1223,18 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s uint8_t block[MFBLOCK_SIZE] = {0}; param_gethex_to_eol(p, 0, block, MFBLOCK_SIZE, &n); memcpy(&udata.bytes[(blockno * MFBLOCK_SIZE)], block, MFBLOCK_SIZE); + } else if (ft == NFC_DF_PICOPASS) { + uint8_t block[PICOPASS_BLOCK_SIZE] = {0}; + param_gethex_to_eol(p, 0, block, PICOPASS_BLOCK_SIZE, &n); + memcpy(&udata.bytes[(blockno * PICOPASS_BLOCK_SIZE)], block, PICOPASS_BLOCK_SIZE); } - counter += MFBLOCK_SIZE; + counter += PICOPASS_BLOCK_SIZE; continue; } } // add header length - if (ft == NFC_DF_MFC) { + if (ft == NFC_DF_MFC || ft == NFC_DF_PICOPASS) { *datalen = counter; } else if (ft == NFC_DF_MFU) { *datalen += MFU_DUMP_PREFIX_LENGTH; @@ -1382,6 +1388,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz } udata_t udata = (udata_t)data; + size_t len = 0; char blocks[PATH_MAX_LENGTH] = {0}; @@ -2278,7 +2285,12 @@ nfc_df_e detect_nfc_dump_format(const char *preferredName, bool verbose) { if (str_startswith(line, "device type: iso14443-4a")) { retval = NFC_DF_14_4A; break; - } + } + if (str_startswith(line, "filetype: flipper picopass device")) { + retval = NFC_DF_PICOPASS; + break; + } + } fclose(f); @@ -2302,6 +2314,9 @@ nfc_df_e detect_nfc_dump_format(const char *preferredName, bool verbose) { case NFC_DF_14_4A: PrintAndLogEx(INFO, "detected ISO14443-4A based dump format. No data available"); break; + case NFC_DF_PICOPASS: + PrintAndLogEx(INFO, "detected PICOPASS based dump format"); + break; case NFC_DF_UNKNOWN: PrintAndLogEx(WARNING, "failed to detected dump format"); break; @@ -2757,9 +2772,9 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl res = loadFileMCT_safe(fn, pdump, dumplen); break; } - case NFC: { + case FLIPPER: { nfc_df_e foo = detect_nfc_dump_format(fn, true); - if (foo == NFC_DF_MFC || foo == NFC_DF_MFU) { + if (foo == NFC_DF_MFC || foo == NFC_DF_MFU || foo == NFC_DF_PICOPASS) { if (foo == NFC_DF_MFC) { *pdump = calloc(maxdumplen, sizeof(uint8_t)); diff --git a/client/src/fileutils.h b/client/src/fileutils.h index 4e679be5a..1af72f28d 100644 --- a/client/src/fileutils.h +++ b/client/src/fileutils.h @@ -79,7 +79,7 @@ typedef enum { JSON, DICTIONARY, MCT, - NFC, + FLIPPER, } DumpFileType_t; typedef enum { @@ -96,7 +96,8 @@ typedef enum { NFC_DF_MFDES, NFC_DF_14_3A, NFC_DF_14_3B, - NFC_DF_14_4A + NFC_DF_14_4A, + NFC_DF_PICOPASS, } nfc_df_e; int fileExists(const char *filename); From a3415da519a6385cabc3c39d72fe032fd4ef1a57 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 5 Nov 2023 01:51:09 +0100 Subject: [PATCH 0687/1034] text --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17f7a1583..1ea6c9159 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added support for loading Flipper PICOPASS dump files (@iceman1001) - Fixed `nfc decode` - now properly handles MFU dump files (@iceman1001) - Added support for loading Flipper MCT/MFU dump files (@iceman1001) - Changed `data bmap` - now default `-m` is 8 (@iceman1001) From 2ccf84f40aaa49457f8110d8ce3d6823b4cf2745 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 5 Nov 2023 02:08:30 +0100 Subject: [PATCH 0688/1034] use a local str_nlen fct instead of hinting to POSIX --- client/src/crypto/asn1dump.c | 8 ++++---- client/src/mifare/desfirecore.c | 5 +++-- client/src/util.c | 10 ++++++++++ client/src/util.h | 1 + 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/client/src/crypto/asn1dump.c b/client/src/crypto/asn1dump.c index 025e200ca..32dc8f051 100644 --- a/client/src/crypto/asn1dump.c +++ b/client/src/crypto/asn1dump.c @@ -15,7 +15,7 @@ //----------------------------------------------------------------------------- // asn.1 dumping //----------------------------------------------------------------------------- -#define _POSIX_C_SOURCE 200809L // need for strnlen() + #include "asn1dump.h" #include "commonutil.h" // ARRAYLEN @@ -344,17 +344,17 @@ static void asn1_tag_dump_object_id(const struct tlv *tlv, const struct asn1_tag } else { const char *ppstr = NULL; mbedtls_oid_get_attr_short_name(&asn1_buf, &ppstr); - if (ppstr && strnlen(ppstr, 1)) { + if (ppstr && str_nlen(ppstr, 1)) { PrintAndLogEx(NORMAL, " (%s)", ppstr); return; } mbedtls_oid_get_sig_alg_desc(&asn1_buf, &ppstr); - if (ppstr && strnlen(ppstr, 1)) { + if (ppstr && str_nlen(ppstr, 1)) { PrintAndLogEx(NORMAL, " (%s)", ppstr); return; } mbedtls_oid_get_extended_key_usage(&asn1_buf, &ppstr); - if (ppstr && strnlen(ppstr, 1)) { + if (ppstr && str_nlen(ppstr, 1)) { PrintAndLogEx(NORMAL, " (%s)", ppstr); return; } diff --git a/client/src/mifare/desfirecore.c b/client/src/mifare/desfirecore.c index 9c3326f83..077414c86 100644 --- a/client/src/mifare/desfirecore.c +++ b/client/src/mifare/desfirecore.c @@ -43,6 +43,7 @@ #include "mifare/mad.h" #include "mifare/aiddesfire.h" + const CLIParserOption DesfireAlgoOpts[] = { {T_DES, "des"}, {T_3DES, "2tdea"}, @@ -1749,7 +1750,7 @@ int DesfireFillAppList(DesfireContext_t *dctx, PICCInfo_t *PICCInfo, AppListS ap memcpy( appList[indx].appDFName, &buf[i * 24 + 1 + 5], - // strnlen((char *)&buf[i * 24 + 1 + 5], 16) + // str_nlen((char *)&buf[i * 24 + 1 + 5], 16) 16 ); } @@ -2879,7 +2880,7 @@ int DesfireISOSelect(DesfireContext_t *dctx, DesfireISOSelectControl cntr, uint8 } int DesfireISOSelectDF(DesfireContext_t *dctx, char *dfname, uint8_t *resp, size_t *resplen) { - return DesfireISOSelect(dctx, ISSDFName, (uint8_t *)dfname, strnlen(dfname, 16), resp, resplen); + return DesfireISOSelect(dctx, ISSDFName, (uint8_t *)dfname, str_nlen(dfname, 16), resp, resplen); } int DesfireISOGetChallenge(DesfireContext_t *dctx, DesfireCryptoAlgorithm keytype, uint8_t *resp, size_t *resplen) { diff --git a/client/src/util.c b/client/src/util.c index 640178959..79d3c312b 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -1198,6 +1198,16 @@ char *str_ndup(const char *src, size_t len) { return dest; } +size_t str_nlen(const char *src, size_t maxlen) { + size_t len = 0; + if(src { + for(char c = *src; (len < maxlen && c != '\0'); c = *++src) { + len++; + } + } + return len; +} + /** * Converts a hex string to component "hi2", "hi" and "lo" 32-bit integers * one nibble at a time. diff --git a/client/src/util.h b/client/src/util.h index 3b9a70183..1d6df987d 100644 --- a/client/src/util.h +++ b/client/src/util.h @@ -147,6 +147,7 @@ void strcleanrn(char *buf, size_t len); void strcreplace(char *buf, size_t len, char from, char to); char *str_dup(const char *src); char *str_ndup(const char *src, size_t len); +size_t str_nlen(const char *src, size_t maxlen); int hexstring_to_u96(uint32_t *hi2, uint32_t *hi, uint32_t *lo, const char *str); int binstring_to_u96(uint32_t *hi2, uint32_t *hi, uint32_t *lo, const char *str); int binarray_to_u96(uint32_t *hi2, uint32_t *hi, uint32_t *lo, const uint8_t *arr, int arrlen); From a69eed79501f2e5aba1893574f405e76b7bbe2e4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 5 Nov 2023 02:11:24 +0100 Subject: [PATCH 0689/1034] fix missing loaded counter --- client/src/fileutils.c | 3 ++- client/src/util.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 1ddb66d74..72850b7fe 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1223,12 +1223,13 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s uint8_t block[MFBLOCK_SIZE] = {0}; param_gethex_to_eol(p, 0, block, MFBLOCK_SIZE, &n); memcpy(&udata.bytes[(blockno * MFBLOCK_SIZE)], block, MFBLOCK_SIZE); + counter += MFBLOCK_SIZE; } else if (ft == NFC_DF_PICOPASS) { uint8_t block[PICOPASS_BLOCK_SIZE] = {0}; param_gethex_to_eol(p, 0, block, PICOPASS_BLOCK_SIZE, &n); memcpy(&udata.bytes[(blockno * PICOPASS_BLOCK_SIZE)], block, PICOPASS_BLOCK_SIZE); + counter += PICOPASS_BLOCK_SIZE; } - counter += PICOPASS_BLOCK_SIZE; continue; } } diff --git a/client/src/util.c b/client/src/util.c index 79d3c312b..65e8349da 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -1200,7 +1200,7 @@ char *str_ndup(const char *src, size_t len) { size_t str_nlen(const char *src, size_t maxlen) { size_t len = 0; - if(src { + if(src) { for(char c = *src; (len < maxlen && c != '\0'); c = *++src) { len++; } From 9dba9f275c9c966e70940eb21532d1e9ad1dbe60 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 5 Nov 2023 02:17:52 +0100 Subject: [PATCH 0690/1034] fix missing return --- client/src/cmdhficlass.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 0071601a5..5d5380233 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1375,6 +1375,8 @@ static int iclass_decode_credentials_new_pacs(uint8_t *d) { PrintAndLogEx(INFO, "Wiegand decode"); wiegand_message_t packed = initialize_message_object(top, mid, bot, 0); HIDTryUnpack(&packed); + + return PM3_SUCCESS; } static void iclass_decode_credentials(uint8_t *data) { From fdacd67626f0ca89dd6345da5ce2b1d61a2349db Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 5 Nov 2023 11:26:39 +0100 Subject: [PATCH 0691/1034] pedantic fix --- client/src/cmdhflegic.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 33aad2518..2b9101516 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -112,27 +112,25 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff int fl = 0; - if (data[6] == 0xec) { + if (data[6] == 0xEC) { strncpy(token_type, "XAM", sizeof(token_type) - 1); fl = 1; stamp_len = 0x0c - (data[5] >> 4); } else { - switch (data[5] & 0x7f) { - case 0x00 ... 0x2f: - strncpy(token_type, "IAM", sizeof(token_type) - 1); - fl = (0x2f - (data[5] & 0x7f)) + 1; - break; - case 0x30 ... 0x6f: - strncpy(token_type, "SAM", sizeof(token_type) - 1); - fl = (0x6f - (data[5] & 0x7f)) + 1; - break; - case 0x70 ... 0x7f: - strncpy(token_type, "GAM", sizeof(token_type) - 1); - fl = (0x7f - (data[5] & 0x7f)) + 1; - break; + + uint8_t tmp = data[5] & 0x7F; + if (tmp <= 0x2F) { + strncpy(token_type, "IAM", sizeof(token_type) - 1); + fl = (0x2F - tmp) + 1; + } else if (tmp >= 0x30 && tmp <= 0x6F) { + strncpy(token_type, "SAM", sizeof(token_type) - 1); + fl = (0x6F - tmp) + 1; + } else if (tmp >= 0x70 && tmp <= 0x7F) { + strncpy(token_type, "GAM", sizeof(token_type) - 1); + fl = (0x7F - tmp) + 1; } - stamp_len = 0xfc - data[6]; + stamp_len = 0xFC - data[6]; } PrintAndLogEx(SUCCESS, "DCF: %d (%02x %02x) Token Type=" _YELLOW_("%s") " (OLE=%01u) OL=%02u FL=%02u", From 56e511e08b9eda3fcbe459afebe868b1719f0bba Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 5 Nov 2023 11:30:33 +0100 Subject: [PATCH 0692/1034] text --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ea6c9159..490d96463 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,10 @@ -# Change Log + Change Log All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - Added support for loading Flipper PICOPASS dump files (@iceman1001) + - Fixed unknown chip identification (@jmichelp) - Fixed `nfc decode` - now properly handles MFU dump files (@iceman1001) - Added support for loading Flipper MCT/MFU dump files (@iceman1001) - Changed `data bmap` - now default `-m` is 8 (@iceman1001) From eb8c2d1b6a012f87d5be8ff4cbf1e8b7d24b725a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 5 Nov 2023 11:52:12 +0100 Subject: [PATCH 0693/1034] move file operations to fileutils.c --- client/src/cmdhficlass.c | 44 +++++++++++++++------------------------- 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 5d5380233..227996e60 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -3403,7 +3403,7 @@ static int CmdHFiClassCalcNewKey(const char *Cmd) { return PM3_SUCCESS; } -static int loadKeys(char *filename) { +static int iclass_load_keys(char *filename) { uint8_t *dump = NULL; size_t bytes_read = 0; @@ -3412,46 +3412,30 @@ static int loadKeys(char *filename) { return PM3_EFILE; } - if (bytes_read > ICLASS_KEYS_MAX * 8) { + if (bytes_read > ICLASS_KEYS_MAX * PICOPASS_BLOCK_SIZE) { PrintAndLogEx(WARNING, "File is too long to load - bytes: %zu", bytes_read); free(dump); return PM3_EFILE; } size_t i = 0; - for (; i < bytes_read / 8; i++) - memcpy(iClass_Key_Table[i], dump + (i * 8), 8); + for (; i < bytes_read / PICOPASS_BLOCK_SIZE; i++) { + memcpy(iClass_Key_Table[i], dump + (i * PICOPASS_BLOCK_SIZE), PICOPASS_BLOCK_SIZE); + } free(dump); PrintAndLogEx(SUCCESS, "Loaded " _GREEN_("%2zd") " keys from %s", i, filename); return PM3_SUCCESS; } -static int saveKeys(char *filename) { - FILE *f; - f = fopen(filename, "wb"); - if (!f) { - PrintAndLogEx(FAILED, "File: " _YELLOW_("%s") ": not found or locked.", filename); - return PM3_EFILE; - } - for (uint8_t i = 0; i < ICLASS_KEYS_MAX; i++) { - if (fwrite(iClass_Key_Table[i], 8, 1, f) != 1) { - PrintAndLogEx(WARNING, "save key failed to write to file:" _YELLOW_("%s"), filename); - break; - } - } - fclose(f); - return PM3_SUCCESS; -} - -static int printKeys(void) { +static int iclass_print_keys(void) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "idx| key"); PrintAndLogEx(INFO, "---+------------------------"); for (uint8_t i = 0; i < ICLASS_KEYS_MAX; i++) { - if (memcmp(iClass_Key_Table[i], "\x00\x00\x00\x00\x00\x00\x00\x00", 8) == 0) + if (memcmp(iClass_Key_Table[i], zeros, sizeof(zeros)) == 0) PrintAndLogEx(INFO, " %u |", i); else - PrintAndLogEx(INFO, " %u | " _YELLOW_("%s"), i, sprint_hex(iClass_Key_Table[i], 8)); + PrintAndLogEx(INFO, " %u | " _YELLOW_("%s"), i, sprint_hex(iClass_Key_Table[i], PICOPASS_BLOCK_SIZE)); } PrintAndLogEx(INFO, "---+------------------------"); PrintAndLogEx(NORMAL, ""); @@ -3544,11 +3528,15 @@ static int CmdHFiClassManageKeys(const char *Cmd) { PrintAndLogEx(SUCCESS, " New key[%d] " _GREEN_("%s"), key_nr, sprint_hex_inrow(iClass_Key_Table[key_nr], 8)); return PM3_SUCCESS; case 4: - return printKeys(); + return iclass_print_keys(); case 5: - return loadKeys(filename); - case 6: - return saveKeys(filename); + return iclass_load_keys(filename); + case 6: { + bool isOK = saveFile(filename, ".bin", iClass_Key_Table, sizeof(iClass_Key_Table)); + if (isOK == false) { + return PM3_EFILE; + } + } } return PM3_SUCCESS; } From 8f7d7a2dd4409273b154c10fc826c2bd37ecb5d1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 5 Nov 2023 15:30:25 +0100 Subject: [PATCH 0694/1034] fix mem leak and add new pacs style decoding when reading block 7 --- client/src/cmdhficlass.c | 43 ++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 227996e60..b8e80aaa4 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1371,6 +1371,8 @@ static int iclass_decode_credentials_new_pacs(uint8_t *d) { return PM3_EINVARG; } + free(binstr); + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "Wiegand decode"); wiegand_message_t packed = initialize_message_object(top, mid, bot, 0); @@ -2783,9 +2785,9 @@ static int CmdHFiClass_ReadBlock(const char *Cmd) { } case 7: { - uint8_t dec_data[8]; + uint8_t dec_data[PICOPASS_BLOCK_SIZE]; - uint64_t a = bytes_to_num(data, 8); + uint64_t a = bytes_to_num(data, PICOPASS_BLOCK_SIZE); bool starts = (leadingzeros(a) < 12); bool ones = (bitcount64(a) > 16 && bitcount64(a) < 48); @@ -2798,25 +2800,32 @@ static int CmdHFiClass_ReadBlock(const char *Cmd) { PrintAndLogEx(INFO, "data looks unencrypted, trying to decode"); } - if (memcmp(dec_data, empty, 8) != 0) { + bool has_new_pacs = iclass_detect_new_pacs(dec_data); + bool has_values = (memcmp(dec_data, empty, PICOPASS_BLOCK_SIZE) != 0) && (memcmp(dec_data, zeros, PICOPASS_BLOCK_SIZE) != 0); - //todo: remove preamble/sentinel - uint32_t top = 0, mid = 0, bot = 0; + if (has_values) { - char hexstr[16 + 1] = {0}; - hex_to_buffer((uint8_t *)hexstr, dec_data, 8, sizeof(hexstr) - 1, 0, 0, true); - hexstring_to_u96(&top, &mid, &bot, hexstr); + if (has_new_pacs) { + iclass_decode_credentials_new_pacs(dec_data); + } else { + //todo: remove preamble/sentinel + uint32_t top = 0, mid = 0, bot = 0; - char binstr[64 + 1]; - hextobinstring(binstr, hexstr); - char *pbin = binstr; - while (strlen(pbin) && *(++pbin) == '0'); + char hexstr[16 + 1] = {0}; + hex_to_buffer((uint8_t *)hexstr, dec_data, PICOPASS_BLOCK_SIZE, sizeof(hexstr) - 1, 0, 0, true); + hexstring_to_u96(&top, &mid, &bot, hexstr); - PrintAndLogEx(SUCCESS, " bin : %s", pbin); - PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "------------------------------ " _CYAN_("Wiegand") " -------------------------------"); - wiegand_message_t packed = initialize_message_object(top, mid, bot, 0); - HIDTryUnpack(&packed); + char binstr[64 + 1]; + hextobinstring(binstr, hexstr); + char *pbin = binstr; + while (strlen(pbin) && *(++pbin) == '0'); + + PrintAndLogEx(SUCCESS, " bin : %s", pbin); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "------------------------------ " _CYAN_("Wiegand") " -------------------------------"); + wiegand_message_t packed = initialize_message_object(top, mid, bot, 0); + HIDTryUnpack(&packed); + } } else { PrintAndLogEx(INFO, "no credential found"); } From d31385c7768a3383f03b14ae2e9f4d90746b74e3 Mon Sep 17 00:00:00 2001 From: Oleg Moiseenko <807634+merlokk@users.noreply.github.com> Date: Sun, 5 Nov 2023 16:36:01 +0200 Subject: [PATCH 0695/1034] Update magic_cards_notes.md add some gen4 notes Signed-off-by: Oleg Moiseenko <807634+merlokk@users.noreply.github.com> --- doc/magic_cards_notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/magic_cards_notes.md b/doc/magic_cards_notes.md index 0477a46ae..41d818a3d 100644 --- a/doc/magic_cards_notes.md +++ b/doc/magic_cards_notes.md @@ -1289,7 +1289,7 @@ CF <passwd> 69 <00-01> // (De)Activate Ultralight mode CF <passwd> 6A <00-03> // Select Ultralight mode CF <passwd> 6B <1b> // Set Ultralight and M1 maximum read/write sectors CF <passwd> C6 // Dump configuration -CF <passwd> CC // Factory test, returns 6666 +CF <passwd> CC // Factory test, returns 6666 for generic card, 02AA for limited functionality card and 06A0 for broken functionality card CF <passwd> CD <1b block number><16b block data> // Backdoor write 16b block CF <passwd> CE <1b block number> // Backdoor read 16b block CF <passwd> CF <1b param> // (De)Activate direct write to block 0 From c9bee6d3b8267261d35a3e6b79b02c8e764304a9 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 5 Nov 2023 15:38:21 +0100 Subject: [PATCH 0696/1034] pointer to buffer. Zero sized array not allowed when pedantic --- client/src/emv/tlv.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/emv/tlv.h b/client/src/emv/tlv.h index 39f1bcacd..2582066a9 100644 --- a/client/src/emv/tlv.h +++ b/client/src/emv/tlv.h @@ -22,6 +22,7 @@ #define TLV_H #include "common.h" +#include <stdbool.h> typedef uint32_t tlv_tag_t; @@ -41,7 +42,7 @@ struct tlvdb { struct tlvdb_root { struct tlvdb db; size_t len; - unsigned char buf[0]; + unsigned char buf[]; }; typedef void (*tlv_cb)(void *data, const struct tlv *tlv, int level, bool is_leaf); From 7026fd69fb05d7a8a5f4b0c6d109da63d1f77aa3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 5 Nov 2023 15:40:36 +0100 Subject: [PATCH 0697/1034] pedantic fix --- client/src/emv/emv_pki.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/emv/emv_pki.c b/client/src/emv/emv_pki.c index 17eb7e0ea..8f430e290 100644 --- a/client/src/emv/emv_pki.c +++ b/client/src/emv/emv_pki.c @@ -37,7 +37,7 @@ void PKISetStrictExecution(bool se) { strictExecution = se; } -static const unsigned char empty_tlv_value[] = {}; +static const unsigned char empty_tlv_value[] = {0}; static const struct tlv empty_tlv = {.tag = 0x0, .len = 0, .value = empty_tlv_value}; static size_t emv_pki_hash_psn[256] = { 0, 0, 11, 2, 17, 2, }; From 282d22c3cc753c23fdc89393cd314aadfb5eb979 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Sun, 5 Nov 2023 21:11:55 +0200 Subject: [PATCH 0698/1034] add ginfo comamnd --- client/src/cmdhfmf.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index da94e1205..16d56c7dd 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7431,6 +7431,35 @@ static int CmdHF14AMfView(const char *Cmd) { } free(dump); + return PM3_SUCCESS; +} + +// info about Gen4 GTU card +static int CmdHF14AGen4Info(const char *cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mf ginfo", + "Read info about magic gen4 GTU card.", + "hf mf ginfo --> get info with default password 00000000\n" + "hf mf ginfo --pwd 01020304 --> get info with password\n" + ); + void *argtable[] = { + arg_param_begin, + arg_lit0("v", "verbose", "verbose output"), + arg_str0("p", "pwd", "<hex>", "password 4bytes"), + arg_param_end + }; + CLIExecWithReturn(ctx, cmd, argtable, false); + //bool verbose = arg_get_lit(ctx, 1); + + int pwd_len = 0; + uint8_t pwd[4] = {0}; + CLIGetHexWithReturn(ctx, 3, pwd, &pwd_len); + CLIParserFree(ctx); + + + + + return PM3_SUCCESS; } @@ -8689,6 +8718,7 @@ static command_t CommandTable[] = { {"gen3blk", CmdHf14AGen3Block, IfPm3Iso14443a, "Overwrite manufacturer block"}, {"gen3freeze", CmdHf14AGen3Freeze, IfPm3Iso14443a, "Perma lock UID changes. irreversible"}, {"-----------", CmdHelp, IfPm3Iso14443a, "-------------------- " _CYAN_("magic gen4 GTU") " --------------------------"}, + {"ginfo", CmdHF14AGen4Info, IfPm3Iso14443a, "Info about configuration of the card"}, {"ggetblk", CmdHF14AGen4GetBlk, IfPm3Iso14443a, "Read block from card"}, {"gload", CmdHF14AGen4Load, IfPm3Iso14443a, "Load dump to card"}, {"gsave", CmdHF14AGen4Save, IfPm3Iso14443a, "Save dump from card into file or emulator"}, From e6e757865e8a934a52315690ef53e87280d1f269 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Sun, 5 Nov 2023 21:58:50 +0200 Subject: [PATCH 0699/1034] add gen4 commands --- client/src/mifare/gen4.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 client/src/mifare/gen4.h diff --git a/client/src/mifare/gen4.h b/client/src/mifare/gen4.h new file mode 100644 index 000000000..bc4dcfb4f --- /dev/null +++ b/client/src/mifare/gen4.h @@ -0,0 +1,37 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// High frequency ISO14443A commands +//----------------------------------------------------------------------------- +#ifndef __GEN4_H +#define __GEN4_H + +#define GEN4_CMD_CONFIG_GTU 0x32 +#define GEN4_CMD_CONFIG_ATS 0x34 +#define GEN4_CMD_CONFIG_ATQA_SAK 0x35 +#define GEN4_CMD_CONFIG_UID_LEN 0x68 +#define GEN4_CMD_CONFIG_UL_ENABLE 0x69 +#define GEN4_CMD_CONFIG_UL_MODE 0x6A +#define GEN4_CMD_CONFIG_UL_SECTOR_COUNT 0x6A +#define GEN4_CMD_DUMP_CONFIG 0xC6 +#define GEN4_CMD_FACTORY_TEST 0xCC +#define GEN4_CMD_WRITE_BLOCK 0xCD +#define GEN4_CMD_READ_BLOCK 0xCE +#define GEN4_CMD_BL0_DIRECT_WRITE_EN 0xCF +#define GEN4_CMD_SET_CONFIG 0xF0 +#define GEN4_CMD_SET_CONFIG_PERMANENT 0xF1 +#define GEN4_CMD_CHANGE_PASSWORD 0xFE + +#endif \ No newline at end of file From 70eb1b13912c99f263113f997f67dc9a4265e047 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Sun, 5 Nov 2023 22:09:30 +0200 Subject: [PATCH 0700/1034] add low level g4 info commands --- client/src/mifare/mifarehost.c | 79 ++++++++++++++++++++++++++++++++++ client/src/mifare/mifarehost.h | 3 ++ 2 files changed, 82 insertions(+) diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 76c392490..6666aca8a 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -40,6 +40,7 @@ #include "crypto/libpcrypto.h" #include "util.h" // xor #include "mbedtls/sha1.h" // SHA1 +#include "gen4.h" int mfDarkside(uint8_t blockno, uint8_t key_type, uint64_t *key) { uint32_t uid = 0; @@ -1173,6 +1174,84 @@ int mfGen3Freeze(void) { } } +static int mfG4ExCommand(uint8_t cmd, uint8_t *pwd, uint8_t *data, size_t datalen, uint8_t *response, size_t *responselen) { + struct p { + uint8_t cmdheader; + uint8_t pwd[4]; + uint8_t command; + uint8_t data[32]; + } PACKED payload; + memset(&payload, 0, sizeof(payload)); + + if (datalen > sizeof(payload.data)) { + return PM3_EINVARG; + } + + payload.cmdheader = 0xCF; + payload.command = cmd; + if (pwd != NULL) { + memcpy(payload.pwd, pwd, sizeof(payload.pwd)); + } + if (data != NULL && datalen > 0) { + memcpy(payload.data, data, datalen); + } + + clearCommandBuffer(); + SendCommandNG(CMD_HF_MIFARE_G4_RDBL, (uint8_t *)&payload, 1 + 4 + 1 + datalen); + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_HF_MIFARE_G4_RDBL, &resp, 1500)) { + if (resp.status != PM3_SUCCESS) { + return PM3_EUNDEF; + } + + if (response != NULL) + memcpy(response, resp.data.asBytes, resp.length); + + if (responselen != NULL) + *responselen = resp.length; + } else { + PrintAndLogEx(WARNING, "command execute timeout"); + return PM3_ETIMEOUT; + } + return PM3_SUCCESS; +} + +int mfG4GetConfig(uint8_t *pwd, uint8_t *data, size_t *datalen) { + uint8_t resp[40] = {0}; + size_t resplen = 0; + + int res = mfG4ExCommand(GEN4_CMD_DUMP_CONFIG, pwd, NULL, 0, resp, &resplen); + if (res != PM3_SUCCESS) { + return PM3_EUNDEF; + } + + if (data != NULL) + memcpy(data, resp, resplen); + + if (datalen != NULL) + *datalen = resplen; + + return PM3_SUCCESS; +} + +int mfG4GetFactoryTest(uint8_t *pwd, uint8_t *data, size_t *datalen) { + uint8_t resp[40] = {0}; + size_t resplen = 0; + + int res = mfG4ExCommand(GEN4_CMD_FACTORY_TEST, pwd, NULL, 0, resp, &resplen); + if (res != PM3_SUCCESS) { + return PM3_EUNDEF; + } + + if (data != NULL) + memcpy(data, resp, resplen); + + if (datalen != NULL) + *datalen = resplen; + + return PM3_SUCCESS; +} + int mfG4GetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags) { struct p { uint8_t blockno; diff --git a/client/src/mifare/mifarehost.h b/client/src/mifare/mifarehost.h index ccefbbd40..036770ddf 100644 --- a/client/src/mifare/mifarehost.h +++ b/client/src/mifare/mifarehost.h @@ -96,6 +96,9 @@ int mfGen3UID(uint8_t *uid, uint8_t uidlen, uint8_t *oldUid); int mfGen3Block(uint8_t *block, int blockLen, uint8_t *newBlock); int mfGen3Freeze(void); +int mfG4GetConfig(uint8_t *pwd, uint8_t *data, size_t *datalen); +int mfG4GetFactoryTest(uint8_t *pwd, uint8_t *data, size_t *datalen); + int mfG4GetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags); int mfG4SetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags); From 6ae1bae8c0e90cd18a5d0d880f8bc2c128e1596f Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Sun, 5 Nov 2023 23:43:05 +0200 Subject: [PATCH 0701/1034] ginfo command works and shows raw data --- client/src/cmdhfmf.c | 27 +++++++++++++-- client/src/mifare/mifarehost.c | 61 ++++++++++++++++++++++++++-------- client/src/mifare/mifarehost.h | 4 +-- 3 files changed, 75 insertions(+), 17 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 16d56c7dd..e9507c06d 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7448,16 +7448,39 @@ static int CmdHF14AGen4Info(const char *cmd) { arg_str0("p", "pwd", "<hex>", "password 4bytes"), arg_param_end }; - CLIExecWithReturn(ctx, cmd, argtable, false); - //bool verbose = arg_get_lit(ctx, 1); + CLIExecWithReturn(ctx, cmd, argtable, true); + bool verbose = arg_get_lit(ctx, 1); int pwd_len = 0; uint8_t pwd[4] = {0}; CLIGetHexWithReturn(ctx, 3, pwd, &pwd_len); CLIParserFree(ctx); + if (pwd_len != 0 && pwd_len != 4) { + PrintAndLogEx(FAILED, "Password must be 4 bytes length, got " _YELLOW_("%u"), pwd_len); + return PM3_EINVARG; + } + uint8_t resp[40] = {0}; + size_t resplen = 0; + int res = mfG4GetConfig(pwd, resp, &resplen, verbose); + if (res != PM3_SUCCESS || resplen == 0) { + PrintAndLogEx(ERR, "Error get config. Maybe not a Gen4 card?. error=%d rlen=%d", res, resplen); + return PM3_ESOFT; + } + PrintAndLogEx(INFO, "---------- Gen4 configuration ----------"); + PrintAndLogEx(INFO, "Raw config [%02d]: %s", resplen, sprint_hex_inrow(resp, resplen)); + if (resplen != 32 && resplen != 34) { + PrintAndLogEx(WARNING, "Unknown config format"); + return PM3_SUCCESS; + } + + res = mfG4GetFactoryTest(pwd, resp, &resplen, verbose); + if (res == PM3_SUCCESS && resplen > 2) { + PrintAndLogEx(INFO, "Raw test [%02d]: %s", resplen, sprint_hex_inrow(resp, resplen)); + return PM3_ESOFT; + } return PM3_SUCCESS; diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 6666aca8a..f18b103cb 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -40,6 +40,7 @@ #include "crypto/libpcrypto.h" #include "util.h" // xor #include "mbedtls/sha1.h" // SHA1 +#include "cmdhf14a.h" #include "gen4.h" int mfDarkside(uint8_t blockno, uint8_t key_type, uint64_t *key) { @@ -1174,7 +1175,7 @@ int mfGen3Freeze(void) { } } -static int mfG4ExCommand(uint8_t cmd, uint8_t *pwd, uint8_t *data, size_t datalen, uint8_t *response, size_t *responselen) { +static int mfG4ExCommand(uint8_t cmd, uint8_t *pwd, uint8_t *data, size_t datalen, uint8_t *response, size_t *responselen, bool verbose) { struct p { uint8_t cmdheader; uint8_t pwd[4]; @@ -1196,31 +1197,65 @@ static int mfG4ExCommand(uint8_t cmd, uint8_t *pwd, uint8_t *data, size_t datale memcpy(payload.data, data, datalen); } + int resplen = 0; + clearCommandBuffer(); - SendCommandNG(CMD_HF_MIFARE_G4_RDBL, (uint8_t *)&payload, 1 + 4 + 1 + datalen); + SendCommandOLD(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_RAW | ISO14A_NO_RATS | ISO14A_APPEND_CRC, 6 + datalen, 0, (uint8_t *)&payload, 6 + datalen); + PacketResponseNG resp; - if (WaitForResponseTimeout(CMD_HF_MIFARE_G4_RDBL, &resp, 1500)) { - if (resp.status != PM3_SUCCESS) { - return PM3_EUNDEF; + if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { + if (resp.oldarg[0] != 2) { + if (verbose) PrintAndLogEx(ERR, "No card in the field."); + return PM3_ETIMEOUT; + } + + iso14a_card_select_t card; + memcpy(&card, (iso14a_card_select_t *)resp.data.asBytes, sizeof(iso14a_card_select_t)); + if (verbose) { + PrintAndLogEx(SUCCESS, " UID: " _GREEN_("%s"), sprint_hex(card.uid, card.uidlen)); + PrintAndLogEx(SUCCESS, "ATQA: " _GREEN_("%02X %02X"), card.atqa[1], card.atqa[0]); + PrintAndLogEx(SUCCESS, " SAK: " _GREEN_("%02X [%" PRIu64 "]"), card.sak, resp.oldarg[0]); + } + } else { + if (verbose) PrintAndLogEx(ERR, "No card in the field."); + return PM3_ETIMEOUT; + } + + if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { + resplen = resp.oldarg[0]; + + if (!resplen) { + if (verbose) PrintAndLogEx(ERR, "No card response."); + return PM3_EFAILED; + } + + resplen = resplen - 2; // 14A CRC + if (resplen < 0) + resplen = 0; + + if (resplen > 40) { + if (verbose) PrintAndLogEx(ERR, "Buffer too small(%d).", resplen); + return PM3_EOVFLOW; } if (response != NULL) - memcpy(response, resp.data.asBytes, resp.length); + memcpy(response, resp.data.asBytes, resplen); if (responselen != NULL) - *responselen = resp.length; + *responselen = resplen; + + return PM3_SUCCESS; } else { - PrintAndLogEx(WARNING, "command execute timeout"); + if (verbose) PrintAndLogEx(ERR, "Reply timeout."); return PM3_ETIMEOUT; } - return PM3_SUCCESS; } -int mfG4GetConfig(uint8_t *pwd, uint8_t *data, size_t *datalen) { +int mfG4GetConfig(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbose) { uint8_t resp[40] = {0}; size_t resplen = 0; - int res = mfG4ExCommand(GEN4_CMD_DUMP_CONFIG, pwd, NULL, 0, resp, &resplen); + int res = mfG4ExCommand(GEN4_CMD_DUMP_CONFIG, pwd, NULL, 0, resp, &resplen, verbose); if (res != PM3_SUCCESS) { return PM3_EUNDEF; } @@ -1234,11 +1269,11 @@ int mfG4GetConfig(uint8_t *pwd, uint8_t *data, size_t *datalen) { return PM3_SUCCESS; } -int mfG4GetFactoryTest(uint8_t *pwd, uint8_t *data, size_t *datalen) { +int mfG4GetFactoryTest(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbose) { uint8_t resp[40] = {0}; size_t resplen = 0; - int res = mfG4ExCommand(GEN4_CMD_FACTORY_TEST, pwd, NULL, 0, resp, &resplen); + int res = mfG4ExCommand(GEN4_CMD_FACTORY_TEST, pwd, NULL, 0, resp, &resplen, verbose); if (res != PM3_SUCCESS) { return PM3_EUNDEF; } diff --git a/client/src/mifare/mifarehost.h b/client/src/mifare/mifarehost.h index 036770ddf..dedf7f5ea 100644 --- a/client/src/mifare/mifarehost.h +++ b/client/src/mifare/mifarehost.h @@ -96,8 +96,8 @@ int mfGen3UID(uint8_t *uid, uint8_t uidlen, uint8_t *oldUid); int mfGen3Block(uint8_t *block, int blockLen, uint8_t *newBlock); int mfGen3Freeze(void); -int mfG4GetConfig(uint8_t *pwd, uint8_t *data, size_t *datalen); -int mfG4GetFactoryTest(uint8_t *pwd, uint8_t *data, size_t *datalen); +int mfG4GetConfig(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbose); +int mfG4GetFactoryTest(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbose); int mfG4GetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags); int mfG4SetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags); From 89c19fce9c6a709ab00c4073287fc60b090af8aa Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Sun, 5 Nov 2023 23:51:52 +0200 Subject: [PATCH 0702/1034] ad test data decoding --- client/src/cmdhfmf.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index e9507c06d..35bf6e699 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7471,15 +7471,24 @@ static int CmdHF14AGen4Info(const char *cmd) { PrintAndLogEx(INFO, "---------- Gen4 configuration ----------"); PrintAndLogEx(INFO, "Raw config [%02d]: %s", resplen, sprint_hex_inrow(resp, resplen)); - if (resplen != 32 && resplen != 34) { + if (resplen != 30 && resplen != 32) { PrintAndLogEx(WARNING, "Unknown config format"); return PM3_SUCCESS; } - res = mfG4GetFactoryTest(pwd, resp, &resplen, verbose); + res = mfG4GetFactoryTest(pwd, resp, &resplen, false); if (res == PM3_SUCCESS && resplen > 2) { - PrintAndLogEx(INFO, "Raw test [%02d]: %s", resplen, sprint_hex_inrow(resp, resplen)); - return PM3_ESOFT; + if (verbose) + PrintAndLogEx(INFO, "Raw test [%02d]: %s", resplen, sprint_hex_inrow(resp, resplen)); + + if (resp[resplen - 2] == 0x66 && resp[resplen - 1] == 0x66) + PrintAndLogEx(INFO, "Card type : generic"); + else if (resp[resplen - 2] == 0x02 && resp[resplen - 1] == 0xaa) + PrintAndLogEx(INFO, "Card type : limited functionality"); + else if (resp[resplen - 2] == 0x06 && resp[resplen - 1] == 0xa0) + PrintAndLogEx(INFO, "Card type : broken functionality"); + else + PrintAndLogEx(INFO, "Card type : unknown %02x%02x", resp[resplen - 2], resp[resplen - 1]); } From ac970064d31f13c474c23d9ac555521d4afee8a8 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:19:45 +0200 Subject: [PATCH 0703/1034] add timeout error --- client/src/cmdhfmf.c | 5 ++++- client/src/mifare/mifarehost.c | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 35bf6e699..47a0bdb74 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7465,7 +7465,10 @@ static int CmdHF14AGen4Info(const char *cmd) { size_t resplen = 0; int res = mfG4GetConfig(pwd, resp, &resplen, verbose); if (res != PM3_SUCCESS || resplen == 0) { - PrintAndLogEx(ERR, "Error get config. Maybe not a Gen4 card?. error=%d rlen=%d", res, resplen); + if (res == PM3_ETIMEOUT) + PrintAndLogEx(ERR, "No card in the field or card command timeout."); + else + PrintAndLogEx(ERR, "Error get config. Maybe not a Gen4 card?. error=%d rlen=%d", res, resplen); return PM3_ESOFT; } diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index f18b103cb..b6fd7e22b 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -1257,7 +1257,7 @@ int mfG4GetConfig(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbose) { int res = mfG4ExCommand(GEN4_CMD_DUMP_CONFIG, pwd, NULL, 0, resp, &resplen, verbose); if (res != PM3_SUCCESS) { - return PM3_EUNDEF; + return res; } if (data != NULL) @@ -1275,7 +1275,7 @@ int mfG4GetFactoryTest(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbos int res = mfG4ExCommand(GEN4_CMD_FACTORY_TEST, pwd, NULL, 0, resp, &resplen, verbose); if (res != PM3_SUCCESS) { - return PM3_EUNDEF; + return res; } if (data != NULL) From 910c4d8c92b85ca0bb6ce70499b86fddba44f0c4 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:29:28 +0200 Subject: [PATCH 0704/1034] make style --- .vscode/extensions.json | 1 - client/src/cmdhficlass.c | 6 +++--- client/src/cmdhfmfu.c | 6 +++--- client/src/cmdnfc.c | 8 ++++---- client/src/mifare/gen4.h | 2 +- client/src/mifare/mifarehost.c | 4 ++-- client/src/pm3line_vocabulary.h | 1 + doc/commands.json | 28 ++++++++++++++++++++++------ doc/commands.md | 1 + 9 files changed, 37 insertions(+), 20 deletions(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 85b3997e2..e9b75675f 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,7 +3,6 @@ // for the documentation about the extensions.json format "recommendations": [ "ms-vscode.cpptools", - "austin.code-gnu-global", "marus25.cortex-debug", "augustocdias.tasks-shell-input" ] diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index b8e80aaa4..4c60438df 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1324,7 +1324,7 @@ static int CmdHFiClassESetBlk(const char *Cmd) { static bool iclass_detect_new_pacs(uint8_t *d) { uint8_t n = 0; while (n++ < (PICOPASS_BLOCK_SIZE / 2)) { - if (d[n] && + if (d[n] && d[n + 1] == 0xA6) { return true; } @@ -1332,7 +1332,7 @@ static bool iclass_detect_new_pacs(uint8_t *d) { return false; } -// block 7 decoder for PACS +// block 7 decoder for PACS static int iclass_decode_credentials_new_pacs(uint8_t *d) { uint8_t offset = 0; @@ -1349,7 +1349,7 @@ static int iclass_decode_credentials_new_pacs(uint8_t *d) { return PM3_EMALLOC; } - uint8_t n = PICOPASS_BLOCK_SIZE - offset - 2; + uint8_t n = PICOPASS_BLOCK_SIZE - offset - 2; byte_2_binstr(binstr, d + offset + 2, n); PrintAndLogEx(NORMAL, ""); diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 860744220..6b55875f7 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -70,7 +70,7 @@ static uint8_t default_pwd_pack[][4] = { }; static uint64_t UL_TYPES_ARRAY[] = { - MFU_TT_UNKNOWN, MFU_TT_UL, + MFU_TT_UNKNOWN, MFU_TT_UL, MFU_TT_UL_C, MFU_TT_UL_EV1_48, MFU_TT_UL_EV1_128, MFU_TT_NTAG, MFU_TT_NTAG_203, MFU_TT_NTAG_210, @@ -79,7 +79,7 @@ static uint64_t UL_TYPES_ARRAY[] = { MFU_TT_MY_D, MFU_TT_MY_D_NFC, MFU_TT_MY_D_MOVE, MFU_TT_MY_D_MOVE_NFC, MFU_TT_MY_D_MOVE_LEAN, MFU_TT_NTAG_I2C_1K, - MFU_TT_NTAG_I2C_2K, MFU_TT_NTAG_I2C_1K_PLUS, + MFU_TT_NTAG_I2C_2K, MFU_TT_NTAG_I2C_1K_PLUS, MFU_TT_NTAG_I2C_2K_PLUS, MFU_TT_FUDAN_UL, MFU_TT_NTAG_213_F, MFU_TT_NTAG_216_F, MFU_TT_UL_EV1, MFU_TT_UL_NANO_40, @@ -1891,7 +1891,7 @@ static int CmdHF14AMfUInfo(const char *Cmd) { } // Read signature - if ((tagtype & (MFU_TT_UL_EV1_48 | MFU_TT_UL_EV1_128 | MFU_TT_UL_EV1 | MFU_TT_UL_NANO_40 | + if ((tagtype & (MFU_TT_UL_EV1_48 | MFU_TT_UL_EV1_128 | MFU_TT_UL_EV1 | MFU_TT_UL_NANO_40 | MFU_TT_NTAG_210u | MFU_TT_NTAG_213 | MFU_TT_NTAG_213_F | MFU_TT_NTAG_213_C | MFU_TT_NTAG_213_TT | MFU_TT_NTAG_215 | MFU_TT_NTAG_216 | MFU_TT_NTAG_216_F | MFU_TT_NTAG_I2C_1K | MFU_TT_NTAG_I2C_2K | MFU_TT_NTAG_I2C_1K_PLUS | MFU_TT_NTAG_I2C_2K_PLUS))) { diff --git a/client/src/cmdnfc.c b/client/src/cmdnfc.c index 4e827a32b..1096dec8f 100644 --- a/client/src/cmdnfc.c +++ b/client/src/cmdnfc.c @@ -113,12 +113,12 @@ static int CmdNfcDecode(const char *Cmd) { return res; } - uint8_t *tmp = dump; + uint8_t *tmp = dump; // if not MIFARE Classic default sizes, assume its Ultralight/NTAG - if ( bytes_read != MIFARE_4K_MAX_BYTES - && bytes_read != MIFARE_2K_MAX_BYTES - && bytes_read != MIFARE_1K_MAX_BYTES + if ( bytes_read != MIFARE_4K_MAX_BYTES + && bytes_read != MIFARE_2K_MAX_BYTES + && bytes_read != MIFARE_1K_MAX_BYTES && bytes_read != MIFARE_MINI_MAX_BYTES) { uint8_t **pd = &tmp; diff --git a/client/src/mifare/gen4.h b/client/src/mifare/gen4.h index bc4dcfb4f..3a2ab0947 100644 --- a/client/src/mifare/gen4.h +++ b/client/src/mifare/gen4.h @@ -34,4 +34,4 @@ #define GEN4_CMD_SET_CONFIG_PERMANENT 0xF1 #define GEN4_CMD_CHANGE_PASSWORD 0xFE -#endif \ No newline at end of file +#endif diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index b6fd7e22b..7ff786832 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -1208,7 +1208,7 @@ static int mfG4ExCommand(uint8_t cmd, uint8_t *pwd, uint8_t *data, size_t datale if (verbose) PrintAndLogEx(ERR, "No card in the field."); return PM3_ETIMEOUT; } - + iso14a_card_select_t card; memcpy(&card, (iso14a_card_select_t *)resp.data.asBytes, sizeof(iso14a_card_select_t)); if (verbose) { @@ -1223,7 +1223,7 @@ static int mfG4ExCommand(uint8_t cmd, uint8_t *pwd, uint8_t *data, size_t datale if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { resplen = resp.oldarg[0]; - + if (!resplen) { if (verbose) PrintAndLogEx(ERR, "No card response."); return PM3_EFAILED; diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index 858267278..a0fcee232 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -366,6 +366,7 @@ const static vocabulary_t vocabulary[] = { { 0, "hf mf gen3uid" }, { 0, "hf mf gen3blk" }, { 0, "hf mf gen3freeze" }, + { 0, "hf mf ginfo" }, { 0, "hf mf ggetblk" }, { 0, "hf mf gload" }, { 0, "hf mf gsave" }, diff --git a/doc/commands.json b/doc/commands.json index 4cb9c4623..35bb46ec4 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -279,6 +279,7 @@ "command": "data bmap", "description": "Breaks down a hex value to binary according a template data bmap -d 16 -m 4,4 This will give two rows each with four bits", "notes": [ + "data bmap -d 3B", "data bmap -d 3B -m 2,5,1" ], "offline": true, @@ -3026,10 +3027,10 @@ }, "hf iclass configcard": { "command": "hf iclass configcard", - "description": "Manage reader configuration card via Cardhelper, The generated config card will be uploaded to device emulator memory. You can start simulating `hf iclass sim -t 3` or use the emul commands", + "description": "Manage reader configuration card via Cardhelper or internal database, The generated config card will be uploaded to device emulator memory. You can start simulating `hf iclass sim -t 3` or use the emul commands", "notes": [ - "hf iclass configcard -l -> download config card settings", - "hf iclass configcard -p -> print all config cards", + "hf iclass configcard -l -> download config card settings from cardhelper", + "hf iclass configcard -p -> print all config cards in the database", "hf iclass configcard --ci 1 -> view config card setting in slot 1", "hf iclass configcard -g --ci 0 -> generate config file from slot 0" ], @@ -4553,6 +4554,21 @@ ], "usage": "hf mf ggetblk [-hv] -b <dec> [-p <hex>]" }, + "hf mf ginfo": { + "command": "hf mf ginfo", + "description": "Read info about magic gen4 GTU card.", + "notes": [ + "hf mf ginfo -> get info with default password 00000000", + "hf mf ginfo --pwd 01020304 -> get info with password" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-v, --verbose verbose output", + "-p, --pwd <hex> password 4bytes" + ], + "usage": "hf mf ginfo [-hv] [-p <hex>]" + }, "hf mf gload": { "command": "hf mf gload", "description": "Load magic gen4 gtu card with data from (bin/eml/json) dump file or from emulator memory.", @@ -8939,7 +8955,7 @@ "-1, --ht1 Card type Hitag 1", "-2, --ht2 Card type Hitag 2", "-s, --hts Card type Hitag S", - "-m, --htm Card type Hitag \u03bc" + "-m, --htm Card type Hitag \u041e\u0458" ], "usage": "lf hitag eload [-h12sm] -f <fn>" }, @@ -12015,8 +12031,8 @@ } }, "metadata": { - "commands_extracted": 696, + "commands_extracted": 697, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-10-30T12:11:34" + "extracted_on": "2023-11-05T22:22:55" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 49d34875d..0ff13a82e 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -529,6 +529,7 @@ Check column "offline" for their availability. |`hf mf gen3uid `|N |`Set UID without changing manufacturer block` |`hf mf gen3blk `|N |`Overwrite manufacturer block` |`hf mf gen3freeze `|N |`Perma lock UID changes. irreversible` +|`hf mf ginfo `|N |`Info about configuration of the card` |`hf mf ggetblk `|N |`Read block from card` |`hf mf gload `|N |`Load dump to card` |`hf mf gsave `|N |`Save dump from card into file or emulator` From 7afaaf8535e76dce7b23fa56ee97469061c73bdf Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:29:42 +0200 Subject: [PATCH 0705/1034] style --- client/src/fileutils.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 72850b7fe..5f923e492 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -292,7 +292,7 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, break; } case jsfMfc_v2: { - + iso14a_mf_extdump_t xdump; memcpy(&xdump, data, sizeof(iso14a_mf_extdump_t)); @@ -1038,7 +1038,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s // 256 + 2 newline chars + 1 null terminator char line[256 + 2 + 1]; memset(line, 0, sizeof(line)); - + udata_t udata = (udata_t)data; int n = 0; uint32_t counter = 0; @@ -1067,14 +1067,14 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s // param_gethex_to_eol(line + 4, 0, udata.mfc->card_info.uid, sizeof(udata.mfc->card_info.uid), &n); } continue; - } + } if (str_startswith(line, "atqa:")) { if (ft == NFC_DF_MFC) { // param_gethex_to_eol(line + 5, 0, udata.mfc->card_info.atqa, sizeof(udata.mfc->card_info.atqa), &n); } continue; - } + } if (str_startswith(line, "sak:")) { if (ft == NFC_DF_MFC) { @@ -1083,7 +1083,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s // udata.mfc->card_info.sak = sak & 0xFF; } continue; - } + } if (str_startswith(line, "signature:")) { if (ft == NFC_DF_MFC) { @@ -1091,7 +1091,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s param_gethex_to_eol(line + 11, 0, udata.mfu->signature, sizeof(udata.mfu->signature), &n); } continue; - } + } if (str_startswith(line, "mifare version:")) { if (ft == NFC_DF_MFC) { @@ -1099,7 +1099,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s param_gethex_to_eol(line + 16, 0, udata.mfu->version, sizeof(udata.mfu->version), &n); } continue; - } + } if (str_startswith(line, "counter 0:")) { int no = 0; @@ -1111,7 +1111,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s udata.mfu->counter_tearing[0][2] = no & 0xFF; } continue; - } + } if (str_startswith(line, "tearing 0:")) { if (ft == NFC_DF_MFC) { @@ -1121,7 +1121,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s udata.mfu->counter_tearing[0][3] = b & 0xFF; } continue; - } + } if (str_startswith(line, "counter 1:")) { int no = 0; @@ -1133,7 +1133,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s udata.mfu->counter_tearing[1][2] = no & 0xFF; } continue; - } + } if (str_startswith(line, "tearing 1:")) { if (ft == NFC_DF_MFC) { @@ -1155,7 +1155,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s udata.mfu->counter_tearing[2][2] = no & 0xFF; } continue; - } + } if (str_startswith(line, "tearing 2:")) { if (ft == NFC_DF_MFC) { @@ -1174,7 +1174,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s udata.mfu->pages = n; } continue; - } + } // Page 0: 04 10 56 CA if (str_startswith(line, "page ")) { @@ -2317,7 +2317,7 @@ nfc_df_e detect_nfc_dump_format(const char *preferredName, bool verbose) { break; case NFC_DF_PICOPASS: PrintAndLogEx(INFO, "detected PICOPASS based dump format"); - break; + break; case NFC_DF_UNKNOWN: PrintAndLogEx(WARNING, "failed to detected dump format"); break; From 2077ea7da50c95c5a0b211ade9ea0c9e2137d7f5 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:30:13 +0200 Subject: [PATCH 0706/1034] decode config --- client/src/cmdhfmf.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 47a0bdb74..f35c0be83 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7473,11 +7473,22 @@ static int CmdHF14AGen4Info(const char *cmd) { } PrintAndLogEx(INFO, "---------- Gen4 configuration ----------"); - PrintAndLogEx(INFO, "Raw config [%02d]: %s", resplen, sprint_hex_inrow(resp, resplen)); if (resplen != 30 && resplen != 32) { + PrintAndLogEx(INFO, "Raw config [%02d]: %s", resplen, sprint_hex_inrow(resp, resplen)); PrintAndLogEx(WARNING, "Unknown config format"); return PM3_SUCCESS; } + if (verbose) + PrintAndLogEx(INFO, "Raw config [%02d]: %s", resplen, sprint_hex_inrow(resp, resplen)); + + PrintAndLogEx(INFO, "UL protocol: %02x", resp[0]); + PrintAndLogEx(INFO, "UID length: %02x", resp[1]); + PrintAndLogEx(INFO, "Password: %s", sprint_hex_inrow(&resp[2], 4)); + PrintAndLogEx(INFO, "GTU mode: %02x", resp[6]); + PrintAndLogEx(INFO, "ATS [%d]: %s", resp[7], sprint_hex_inrow(&resp[8], resp[7])); + PrintAndLogEx(INFO, "ATQA: %02x%02x", resp[25]); + PrintAndLogEx(INFO, "SAK: %02x", resp[26]); + res = mfG4GetFactoryTest(pwd, resp, &resplen, false); if (res == PM3_SUCCESS && resplen > 2) { @@ -7494,7 +7505,6 @@ static int CmdHF14AGen4Info(const char *cmd) { PrintAndLogEx(INFO, "Card type : unknown %02x%02x", resp[resplen - 2], resp[resplen - 1]); } - return PM3_SUCCESS; } From 4c828f4424943eb0f333db5c3ff83680cece2862 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:35:48 +0200 Subject: [PATCH 0707/1034] view format --- client/src/cmdhfmf.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index f35c0be83..adc1dd739 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7474,35 +7474,35 @@ static int CmdHF14AGen4Info(const char *cmd) { PrintAndLogEx(INFO, "---------- Gen4 configuration ----------"); if (resplen != 30 && resplen != 32) { - PrintAndLogEx(INFO, "Raw config [%02d]: %s", resplen, sprint_hex_inrow(resp, resplen)); + PrintAndLogEx(INFO, "Raw config [%02d] %s", resplen, sprint_hex_inrow(resp, resplen)); PrintAndLogEx(WARNING, "Unknown config format"); return PM3_SUCCESS; } if (verbose) - PrintAndLogEx(INFO, "Raw config [%02d]: %s", resplen, sprint_hex_inrow(resp, resplen)); + PrintAndLogEx(INFO, "Raw config [%02d]. %s", resplen, sprint_hex_inrow(resp, resplen)); - PrintAndLogEx(INFO, "UL protocol: %02x", resp[0]); - PrintAndLogEx(INFO, "UID length: %02x", resp[1]); - PrintAndLogEx(INFO, "Password: %s", sprint_hex_inrow(&resp[2], 4)); - PrintAndLogEx(INFO, "GTU mode: %02x", resp[6]); - PrintAndLogEx(INFO, "ATS [%d]: %s", resp[7], sprint_hex_inrow(&resp[8], resp[7])); - PrintAndLogEx(INFO, "ATQA: %02x%02x", resp[25]); - PrintAndLogEx(INFO, "SAK: %02x", resp[26]); + PrintAndLogEx(INFO, "UL protocol..... %02x", resp[0]); + PrintAndLogEx(INFO, "UID length...... %02x", resp[1]); + PrintAndLogEx(INFO, "Password........ %s", sprint_hex_inrow(&resp[2], 4)); + PrintAndLogEx(INFO, "GTU mode........ %02x", resp[6]); + PrintAndLogEx(INFO, "ATS [%02d]........ %s", resp[7], sprint_hex_inrow(&resp[8], resp[7])); + PrintAndLogEx(INFO, "ATQA............ %02x%02x", resp[25]); + PrintAndLogEx(INFO, "SAK............. %02x", resp[26]); res = mfG4GetFactoryTest(pwd, resp, &resplen, false); if (res == PM3_SUCCESS && resplen > 2) { if (verbose) - PrintAndLogEx(INFO, "Raw test [%02d]: %s", resplen, sprint_hex_inrow(resp, resplen)); + PrintAndLogEx(INFO, "Raw test [%02d]... %s", resplen, sprint_hex_inrow(resp, resplen)); if (resp[resplen - 2] == 0x66 && resp[resplen - 1] == 0x66) - PrintAndLogEx(INFO, "Card type : generic"); + PrintAndLogEx(INFO, "Card type....... generic"); else if (resp[resplen - 2] == 0x02 && resp[resplen - 1] == 0xaa) - PrintAndLogEx(INFO, "Card type : limited functionality"); + PrintAndLogEx(INFO, "Card type....... limited functionality"); else if (resp[resplen - 2] == 0x06 && resp[resplen - 1] == 0xa0) - PrintAndLogEx(INFO, "Card type : broken functionality"); + PrintAndLogEx(INFO, "Card type....... broken functionality"); else - PrintAndLogEx(INFO, "Card type : unknown %02x%02x", resp[resplen - 2], resp[resplen - 1]); + PrintAndLogEx(INFO, "Card type....... unknown %02x%02x", resp[resplen - 2], resp[resplen - 1]); } return PM3_SUCCESS; From c6bf1cefe32058fa221b71906c8b46c3f1d11d7a Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:45:14 +0200 Subject: [PATCH 0708/1034] fix format --- client/src/cmdhfmf.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index adc1dd739..be770be15 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7479,30 +7479,33 @@ static int CmdHF14AGen4Info(const char *cmd) { return PM3_SUCCESS; } if (verbose) - PrintAndLogEx(INFO, "Raw config [%02d]. %s", resplen, sprint_hex_inrow(resp, resplen)); + PrintAndLogEx(INFO, "Raw config [%02d]..... %s", resplen, sprint_hex_inrow(resp, resplen)); - PrintAndLogEx(INFO, "UL protocol..... %02x", resp[0]); - PrintAndLogEx(INFO, "UID length...... %02x", resp[1]); - PrintAndLogEx(INFO, "Password........ %s", sprint_hex_inrow(&resp[2], 4)); - PrintAndLogEx(INFO, "GTU mode........ %02x", resp[6]); - PrintAndLogEx(INFO, "ATS [%02d]........ %s", resp[7], sprint_hex_inrow(&resp[8], resp[7])); - PrintAndLogEx(INFO, "ATQA............ %02x%02x", resp[25]); - PrintAndLogEx(INFO, "SAK............. %02x", resp[26]); + PrintAndLogEx(INFO, "UL protocol......... %02x", resp[0]); + PrintAndLogEx(INFO, "UID length.......... %02x", resp[1]); + PrintAndLogEx(INFO, "Password............ %s", sprint_hex_inrow(&resp[2], 4)); + PrintAndLogEx(INFO, "GTU mode............ %02x", resp[6]); + PrintAndLogEx(INFO, "ATS [%02d]............ %s", resp[7], sprint_hex_inrow(&resp[8], resp[7])); + PrintAndLogEx(INFO, "ATQA................ %02x%02x", resp[24], resp[25]); + PrintAndLogEx(INFO, "SAK................. %02x", resp[26]); + PrintAndLogEx(INFO, "UL mode............. %02x", resp[27]); + PrintAndLogEx(INFO, "max rd/wr sectors... %02x", resp[28]); + PrintAndLogEx(INFO, "block0 direct wr.... %02x", resp[29]); res = mfG4GetFactoryTest(pwd, resp, &resplen, false); if (res == PM3_SUCCESS && resplen > 2) { if (verbose) - PrintAndLogEx(INFO, "Raw test [%02d]... %s", resplen, sprint_hex_inrow(resp, resplen)); + PrintAndLogEx(INFO, "Raw test [%02d]....... %s", resplen, sprint_hex_inrow(resp, resplen)); if (resp[resplen - 2] == 0x66 && resp[resplen - 1] == 0x66) - PrintAndLogEx(INFO, "Card type....... generic"); + PrintAndLogEx(INFO, "Card type........... generic"); else if (resp[resplen - 2] == 0x02 && resp[resplen - 1] == 0xaa) - PrintAndLogEx(INFO, "Card type....... limited functionality"); + PrintAndLogEx(INFO, "Card type........... limited functionality"); else if (resp[resplen - 2] == 0x06 && resp[resplen - 1] == 0xa0) - PrintAndLogEx(INFO, "Card type....... broken functionality"); + PrintAndLogEx(INFO, "Card type........... broken functionality"); else - PrintAndLogEx(INFO, "Card type....... unknown %02x%02x", resp[resplen - 2], resp[resplen - 1]); + PrintAndLogEx(INFO, "Card type........... unknown %02x%02x", resp[resplen - 2], resp[resplen - 1]); } return PM3_SUCCESS; From 69130384db6f61e9e8303d1a14249640b2bbf704 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:48:18 +0200 Subject: [PATCH 0709/1034] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 490d96463..f73a36179 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `hf mf ginfo` command for get info about Gen4 GTU configuration (@merlokk) - Added support for loading Flipper PICOPASS dump files (@iceman1001) - Fixed unknown chip identification (@jmichelp) - Fixed `nfc decode` - now properly handles MFU dump files (@iceman1001) From 3a0002d403e11ffc0efb38fe87abc58fe1d82d76 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:49:57 +0200 Subject: [PATCH 0710/1034] revert extensions --- .vscode/extensions.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index e9b75675f..85b3997e2 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,6 +3,7 @@ // for the documentation about the extensions.json format "recommendations": [ "ms-vscode.cpptools", + "austin.code-gnu-global", "marus25.cortex-debug", "augustocdias.tasks-shell-input" ] From 0a22fd8f66fd13cb46bb4ef4d5993edff3aa0452 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 10:25:13 +0200 Subject: [PATCH 0711/1034] uid len details --- client/src/cmdhfmf.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index be770be15..bab7b9fee 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7482,7 +7482,21 @@ static int CmdHF14AGen4Info(const char *cmd) { PrintAndLogEx(INFO, "Raw config [%02d]..... %s", resplen, sprint_hex_inrow(resp, resplen)); PrintAndLogEx(INFO, "UL protocol......... %02x", resp[0]); - PrintAndLogEx(INFO, "UID length.......... %02x", resp[1]); + PrintAndLogEx(INFO, "UID length.......... %02x" NOLF, resp[1]); + switch (resp[1]){ + case 0x01: + PrintAndLogEx(NORMAL, " (4 byte)"); + break; + case 0x01: + PrintAndLogEx(NORMAL, " (7 byte)"); + break; + case 0x02: + PrintAndLogEx(NORMAL, " (10 byte)"); + break; + default: + PrintAndLogEx(NORMAL, " (unknown %02x)", resp[1]); + break; + } PrintAndLogEx(INFO, "Password............ %s", sprint_hex_inrow(&resp[2], 4)); PrintAndLogEx(INFO, "GTU mode............ %02x", resp[6]); PrintAndLogEx(INFO, "ATS [%02d]............ %s", resp[7], sprint_hex_inrow(&resp[8], resp[7])); From b44c214009c5c56e5f292f4a82c0366b81735a75 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 10:28:37 +0200 Subject: [PATCH 0712/1034] fix --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index bab7b9fee..06fb8c324 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7484,7 +7484,7 @@ static int CmdHF14AGen4Info(const char *cmd) { PrintAndLogEx(INFO, "UL protocol......... %02x", resp[0]); PrintAndLogEx(INFO, "UID length.......... %02x" NOLF, resp[1]); switch (resp[1]){ - case 0x01: + case 0x00: PrintAndLogEx(NORMAL, " (4 byte)"); break; case 0x01: From 85e38ddc388cc0e7b0609222b6203746344d104d Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Mon, 6 Nov 2023 16:35:43 +0800 Subject: [PATCH 0713/1034] Add --ms option in hw status To specify the timeout of connection speed test --- armsrc/appmain.c | 15 +++++++++------ armsrc/appmain.h | 3 +++ client/src/cmdhw.c | 16 +++++++++++++--- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 0162fae80..90fae6d17 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -369,11 +369,10 @@ static void print_debug_level(void) { // measure the Connection Speed by sending SpeedTestBufferSize bytes to client and measuring the elapsed time. // Note: this mimics GetFromBigbuf(), i.e. we have the overhead of the PacketCommandNG structure included. -static void printConnSpeed(void) { +static void printConnSpeed(uint32_t testTimeout) { DbpString(_CYAN_("Transfer Speed")); Dbprintf(" Sending packets to client..."); -#define CONN_SPEED_TEST_MIN_TIME 500 // in milliseconds uint8_t *test_data = BigBuf_get_addr(); uint32_t start_time = GetTickCount(); uint32_t delta_time = 0; @@ -381,7 +380,7 @@ static void printConnSpeed(void) { LED_B_ON(); - while (delta_time < CONN_SPEED_TEST_MIN_TIME) { + while (delta_time < testTimeout) { reply_ng(CMD_DOWNLOADED_BIGBUF, PM3_SUCCESS, test_data, PM3_CMD_DATA_SIZE); bytes_transferred += PM3_CMD_DATA_SIZE; delta_time = GetTickCountDelta(start_time); @@ -396,7 +395,7 @@ static void printConnSpeed(void) { /** * Prints runtime information about the PM3. **/ -static void SendStatus(void) { +static void SendStatus(int32_t speedTestTimeout) { BigBuf_print_status(); Fpga_print_status(); #ifdef WITH_FLASH @@ -412,7 +411,7 @@ static void SendStatus(void) { #ifdef WITH_ISO14443a printHf14aConfig(); // HF 14a config #endif - printConnSpeed(); + printConnSpeed(speedTestTimeout); DbpString(_CYAN_("Various")); print_stack_usage(); @@ -2663,7 +2662,11 @@ static void PacketReceived(PacketCommandNG *packet) { break; } case CMD_STATUS: { - SendStatus(); + Dbprintf("Packet Len:%d", packet->length); + if (packet->length == 4) + SendStatus(packet->data.asDwords[0]); + else + SendStatus(CONN_SPEED_TEST_MIN_TIME_DEFAULT); break; } case CMD_TIA: { diff --git a/armsrc/appmain.h b/armsrc/appmain.h index 815245b04..fdc520f5f 100644 --- a/armsrc/appmain.h +++ b/armsrc/appmain.h @@ -37,6 +37,9 @@ int tearoff_hook(void); // ADC Vref = 3300mV, (240k-10M):240k voltage divider, 140800 mV #define MAX_ADC_LF_VOLTAGE 140800 +// Default connection speed test timeout, used in hw status +#define CONN_SPEED_TEST_MIN_TIME_DEFAULT 500 // in milliseconds + extern int ToSendMax; extern uint8_t ToSend[]; diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index c591e1703..257122744 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -812,19 +812,29 @@ static int CmdStatus(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hw status", "Show runtime status information about the connected Proxmark3", - "hw status" + "hw status\n" + "hw status -t 1000 -> Test connection speed with 1000ms timeout\n" ); void *argtable[] = { arg_param_begin, + arg_int0("m", "ms", "<ms>", "speed test timeout in micro seconds"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); + int32_t speedTestTimeout = arg_get_int_def(ctx, 1, -1); CLIParserFree(ctx); + clearCommandBuffer(); PacketResponseNG resp; - SendCommandNG(CMD_STATUS, NULL, 0); - if (WaitForResponseTimeout(CMD_STATUS, &resp, 2000) == false) { + if (speedTestTimeout < 0) { + speedTestTimeout = 0; + SendCommandNG(CMD_STATUS, NULL, 0); + } else { + SendCommandNG(CMD_STATUS, (uint8_t *)&speedTestTimeout, sizeof(speedTestTimeout)); + } + + if (WaitForResponseTimeout(CMD_STATUS, &resp, 2000 + speedTestTimeout) == false) { PrintAndLogEx(WARNING, "Status command timeout. Communication speed test timed out"); return PM3_ETIMEOUT; } From 6ac01e4db4d192ec8851dae5b980117d9cb7e13a Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Mon, 6 Nov 2023 16:43:37 +0800 Subject: [PATCH 0714/1034] Change some entries in CHANGELOG.md Add a new entry for the new feature Add 2 missing entries (#1654, #1655) Change the description of a entry --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f73a36179..401621458 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `--ms` option in `hw status` to specify the timeout of connection speed test (@wh201906) - Added `hf mf ginfo` command for get info about Gen4 GTU configuration (@merlokk) - Added support for loading Flipper PICOPASS dump files (@iceman1001) - Fixed unknown chip identification (@jmichelp) @@ -101,7 +102,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Fixed compiling liblua on iOS (@The-SamminAter) - Changed `hf_mf_luxeo_dump.lua` - now have list of keys to iterate (@iceman1001) - Fixed the timeout of TCP connections (@wh201906) - - Changed the connection timeout configurable (@wh201906) + - Added `hw timeout` - make the connection timeout configurable (@wh201906) ## [Seven.4.16717][2023-06-25] - Change `hf 14a info` - now identifes QL88 tags (@iceman1001) @@ -341,6 +342,8 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Added new standalone mode `lf_em4100rsww` (@zabszk) - Fixed `hf 15 slixdisable` wrong pass id (@r1ddl3rz) - Added `script run hf_mf_hid_sim.lua` (@micsen) + - Added flashmem support in `HF_14BSNIFF` standalone mode (@wh201906) + - Changed `HF_14ASNIFF` standalone mode - now supports Proxmark3 without flashmem (@wh201906) ## [Frostbit.4.14831][2022-01-11] - Changed Wiegand format lookup - now case-insensitive (@iceman1001) From 2d48e33a9901b083c3b212f11f4b519a26417659 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Mon, 6 Nov 2023 18:44:19 +0800 Subject: [PATCH 0715/1034] Some small fix --- armsrc/appmain.c | 1 - client/src/cmdhw.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 90fae6d17..ef5e06179 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -2662,7 +2662,6 @@ static void PacketReceived(PacketCommandNG *packet) { break; } case CMD_STATUS: { - Dbprintf("Packet Len:%d", packet->length); if (packet->length == 4) SendStatus(packet->data.asDwords[0]); else diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index 257122744..d0a7102cf 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -813,7 +813,7 @@ static int CmdStatus(const char *Cmd) { CLIParserInit(&ctx, "hw status", "Show runtime status information about the connected Proxmark3", "hw status\n" - "hw status -t 1000 -> Test connection speed with 1000ms timeout\n" + "hw status --ms 1000 -> Test connection speed with 1000ms timeout\n" ); void *argtable[] = { From c215752b6ed120d03167005991819d6ecad0e769 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 13:51:56 +0200 Subject: [PATCH 0716/1034] add some hints on the ginfo config values and double-check correctness --- client/src/cmdhfmf.c | 109 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 99 insertions(+), 10 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 06fb8c324..b61e1b52c 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7481,7 +7481,20 @@ static int CmdHF14AGen4Info(const char *cmd) { if (verbose) PrintAndLogEx(INFO, "Raw config [%02d]..... %s", resplen, sprint_hex_inrow(resp, resplen)); - PrintAndLogEx(INFO, "UL protocol......... %02x", resp[0]); + PrintAndLogEx(INFO, "UL protocol......... %02x" NOLF, resp[0]); + switch (resp[0]){ + case 0x00: + PrintAndLogEx(NORMAL, " (MIFARE Classic mode)"); + break; + case 0x01: + PrintAndLogEx(NORMAL, " (MIFARE Ultralight/NTAG mode)"); + break; + default: + PrintAndLogEx(NORMAL, " (unknown %02x)", resp[0]); + break; + } + + uint8_t uid_len = resp[1]; PrintAndLogEx(INFO, "UID length.......... %02x" NOLF, resp[1]); switch (resp[1]){ case 0x00: @@ -7497,20 +7510,74 @@ static int CmdHF14AGen4Info(const char *cmd) { PrintAndLogEx(NORMAL, " (unknown %02x)", resp[1]); break; } - PrintAndLogEx(INFO, "Password............ %s", sprint_hex_inrow(&resp[2], 4)); - PrintAndLogEx(INFO, "GTU mode............ %02x", resp[6]); - PrintAndLogEx(INFO, "ATS [%02d]............ %s", resp[7], sprint_hex_inrow(&resp[8], resp[7])); - PrintAndLogEx(INFO, "ATQA................ %02x%02x", resp[24], resp[25]); - PrintAndLogEx(INFO, "SAK................. %02x", resp[26]); - PrintAndLogEx(INFO, "UL mode............. %02x", resp[27]); - PrintAndLogEx(INFO, "max rd/wr sectors... %02x", resp[28]); - PrintAndLogEx(INFO, "block0 direct wr.... %02x", resp[29]); + PrintAndLogEx(INFO, "Password............ %s", sprint_hex_inrow(&resp[2], 4)); + + PrintAndLogEx(INFO, "GTU mode............ %02x" NOLF, resp[6]); + switch (resp[6]){ + case 0x00: + PrintAndLogEx(NORMAL, " (pre-write, shadow data can be written)"); + break; + case 0x01: + PrintAndLogEx(NORMAL, " (restore mode)"); + break; + case 0x02: + PrintAndLogEx(NORMAL, " (disabled)"); + break; + case 0x03: + PrintAndLogEx(NORMAL, " (disabled, high speed R/W mode for Ultralight?)"); + break; + default: + PrintAndLogEx(NORMAL, " (unknown %02x)", resp[6]); + break; + } + + PrintAndLogEx(INFO, "ATS [%02d]............ %s", resp[7], sprint_hex_inrow(&resp[8], resp[7])); + PrintAndLogEx(INFO, "ATQA................ %02x%02x", resp[25], resp[24]); + PrintAndLogEx(INFO, "SAK................. %02x", resp[26]); + + PrintAndLogEx(INFO, "UL mode............. %02x" NOLF, resp[27]); + switch (resp[27]){ + case 0x00: + PrintAndLogEx(NORMAL, " (UL EV1)"); + break; + case 0x01: + PrintAndLogEx(NORMAL, " (NTAG)"); + break; + case 0x02: + PrintAndLogEx(NORMAL, " (UL-C)"); + break; + case 0x03: + PrintAndLogEx(NORMAL, " (UL)"); + break; + default: + PrintAndLogEx(NORMAL, " (unknown %02x)", resp[27]); + break; + } + + PrintAndLogEx(INFO, "max rd/wr sectors... %02x", resp[28]); + PrintAndLogEx(INFO, "block0 direct wr.... %02x" NOLF, resp[29]); + switch (resp[29]){ + case 0x00: + PrintAndLogEx(NORMAL, " (Activate direct write to block 0 (Same behaviour of Gen2 cards. Some readers may identify the card as magic))"); + break; + case 0x01: + PrintAndLogEx(NORMAL, " (Deactivate direct write to block 0 (Same behaviour of vanilla cards))"); + break; + case 0x02: + PrintAndLogEx(NORMAL, " (Default value. Same behaviour as 00?"); + break; + default: + PrintAndLogEx(NORMAL, " (unknown %02x)", resp[29]); + break; + } res = mfG4GetFactoryTest(pwd, resp, &resplen, false); if (res == PM3_SUCCESS && resplen > 2) { - if (verbose) + if (verbose) { + PrintAndLogEx(INFO, ""); PrintAndLogEx(INFO, "Raw test [%02d]....... %s", resplen, sprint_hex_inrow(resp, resplen)); + } if (resp[resplen - 2] == 0x66 && resp[resplen - 1] == 0x66) PrintAndLogEx(INFO, "Card type........... generic"); @@ -7522,6 +7589,28 @@ static int CmdHF14AGen4Info(const char *cmd) { PrintAndLogEx(INFO, "Card type........... unknown %02x%02x", resp[resplen - 2], resp[resplen - 1]); } + // read block 0 + res = mfG4GetBlock(pwd, 0, resp, MAGIC_INIT | MAGIC_OFF); + if (res == PM3_SUCCESS) { + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "Block 0............. %s", sprint_hex_inrow(resp, 16)); + + switch (uid_len){ + case 0x00: + PrintAndLogEx(INFO, "UID [4]............. %s", sprint_hex(resp, 4)); + break; + case 0x01: + PrintAndLogEx(INFO, "UID [7]............. %s", sprint_hex(resp, 7)); + break; + case 0x02: + PrintAndLogEx(INFO, "UID [10]............ %s", sprint_hex(resp, 10)); + break; + default: + break; + } + } + + return PM3_SUCCESS; } From f617cac9936c6c498632b573c6a10d02ade2c45a Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 13:55:49 +0200 Subject: [PATCH 0717/1034] fix password parameter in the command --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index b61e1b52c..a3c20193d 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7453,7 +7453,7 @@ static int CmdHF14AGen4Info(const char *cmd) { int pwd_len = 0; uint8_t pwd[4] = {0}; - CLIGetHexWithReturn(ctx, 3, pwd, &pwd_len); + CLIGetHexWithReturn(ctx, 2, pwd, &pwd_len); CLIParserFree(ctx); if (pwd_len != 0 && pwd_len != 4) { From e32ca560844e741cf0cbb0da6c8c668f6e4a12a9 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 14:22:21 +0200 Subject: [PATCH 0718/1034] gen4 commands refactoring --- client/CMakeLists.txt | 1 + client/Makefile | 1 + client/src/cmdhfmf.c | 1 + client/src/mifare/gen4.c | 197 +++++++++++++++++++++++++++++++++ client/src/mifare/gen4.h | 8 ++ client/src/mifare/mifarehost.c | 164 --------------------------- client/src/mifare/mifarehost.h | 6 - 7 files changed, 208 insertions(+), 170 deletions(-) create mode 100644 client/src/mifare/gen4.c diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index acf079f70..f14b2d50f 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -279,6 +279,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/mifare/mifare4.c ${PM3_ROOT}/client/src/mifare/mifaredefault.c ${PM3_ROOT}/client/src/mifare/mifarehost.c + ${PM3_ROOT}/client/src/mifare/gen4.c ${PM3_ROOT}/client/src/nfc/ndef.c ${PM3_ROOT}/client/src/mifare/lrpcrypto.c ${PM3_ROOT}/client/src/mifare/desfirecrypto.c diff --git a/client/Makefile b/client/Makefile index 94ad5079b..0d4f73928 100644 --- a/client/Makefile +++ b/client/Makefile @@ -703,6 +703,7 @@ SRCS = mifare/aiddesfire.c \ mifare/mifare4.c \ mifare/mifaredefault.c \ mifare/mifarehost.c \ + mifare/gen4.c \ nfc/ndef.c \ pm3.c \ pm3_binlib.c \ diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index a3c20193d..85d24bba9 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -39,6 +39,7 @@ #include "cmdhw.h" // set_fpga_mode #include "loclass/cipherutils.h" // BitstreamOut_t #include "proxendian.h" +#include "mifare/gen4.h" static int CmdHelp(const char *Cmd); diff --git a/client/src/mifare/gen4.c b/client/src/mifare/gen4.c new file mode 100644 index 000000000..7dfff509f --- /dev/null +++ b/client/src/mifare/gen4.c @@ -0,0 +1,197 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// Common functionality for low/high-frequency GALLAGHER tag encoding & decoding. +//----------------------------------------------------------------------------- +#include "gen4.h" + +#include <inttypes.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "commonutil.h" +#include "util.h" +#include "ui.h" +#include "mifaredefault.h" +#include "comms.h" +#include "cmdhf14a.h" +#include "protocols.h" +#include "mfkey.h" +#include "util_posix.h" +#include "cmdparser.h" + +static int mfG4ExCommand(uint8_t cmd, uint8_t *pwd, uint8_t *data, size_t datalen, uint8_t *response, size_t *responselen, bool verbose) { + struct p { + uint8_t cmdheader; + uint8_t pwd[4]; + uint8_t command; + uint8_t data[32]; + } PACKED payload; + memset(&payload, 0, sizeof(payload)); + + if (datalen > sizeof(payload.data)) { + return PM3_EINVARG; + } + + payload.cmdheader = 0xCF; + payload.command = cmd; + if (pwd != NULL) { + memcpy(payload.pwd, pwd, sizeof(payload.pwd)); + } + if (data != NULL && datalen > 0) { + memcpy(payload.data, data, datalen); + } + + int resplen = 0; + + clearCommandBuffer(); + SendCommandOLD(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_RAW | ISO14A_NO_RATS | ISO14A_APPEND_CRC, 6 + datalen, 0, (uint8_t *)&payload, 6 + datalen); + + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { + if (resp.oldarg[0] != 2) { + if (verbose) PrintAndLogEx(ERR, "No card in the field."); + return PM3_ETIMEOUT; + } + + iso14a_card_select_t card; + memcpy(&card, (iso14a_card_select_t *)resp.data.asBytes, sizeof(iso14a_card_select_t)); + if (verbose) { + PrintAndLogEx(SUCCESS, " UID: " _GREEN_("%s"), sprint_hex(card.uid, card.uidlen)); + PrintAndLogEx(SUCCESS, "ATQA: " _GREEN_("%02X %02X"), card.atqa[1], card.atqa[0]); + PrintAndLogEx(SUCCESS, " SAK: " _GREEN_("%02X [%" PRIu64 "]"), card.sak, resp.oldarg[0]); + } + } else { + if (verbose) PrintAndLogEx(ERR, "No card in the field."); + return PM3_ETIMEOUT; + } + + if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { + resplen = resp.oldarg[0]; + + if (!resplen) { + if (verbose) PrintAndLogEx(ERR, "No card response."); + return PM3_EFAILED; + } + + resplen = resplen - 2; // 14A CRC + if (resplen < 0) + resplen = 0; + + if (resplen > 40) { + if (verbose) PrintAndLogEx(ERR, "Buffer too small(%d).", resplen); + return PM3_EOVFLOW; + } + + if (response != NULL) + memcpy(response, resp.data.asBytes, resplen); + + if (responselen != NULL) + *responselen = resplen; + + return PM3_SUCCESS; + } else { + if (verbose) PrintAndLogEx(ERR, "Reply timeout."); + return PM3_ETIMEOUT; + } +} + +int mfG4GetConfig(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbose) { + uint8_t resp[40] = {0}; + size_t resplen = 0; + + int res = mfG4ExCommand(GEN4_CMD_DUMP_CONFIG, pwd, NULL, 0, resp, &resplen, verbose); + if (res != PM3_SUCCESS) { + return res; + } + + if (data != NULL) + memcpy(data, resp, resplen); + + if (datalen != NULL) + *datalen = resplen; + + return PM3_SUCCESS; +} + +int mfG4GetFactoryTest(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbose) { + uint8_t resp[40] = {0}; + size_t resplen = 0; + + int res = mfG4ExCommand(GEN4_CMD_FACTORY_TEST, pwd, NULL, 0, resp, &resplen, verbose); + if (res != PM3_SUCCESS) { + return res; + } + + if (data != NULL) + memcpy(data, resp, resplen); + + if (datalen != NULL) + *datalen = resplen; + + return PM3_SUCCESS; +} + +int mfG4GetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags) { + struct p { + uint8_t blockno; + uint8_t pwd[4]; + uint8_t workFlags; + } PACKED payload; + payload.blockno = blockno; + memcpy(payload.pwd, pwd, sizeof(payload.pwd)); + payload.workFlags = workFlags; + + clearCommandBuffer(); + SendCommandNG(CMD_HF_MIFARE_G4_RDBL, (uint8_t *)&payload, sizeof(payload)); + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_HF_MIFARE_G4_RDBL, &resp, 1500)) { + if (resp.status != PM3_SUCCESS) { + return PM3_EUNDEF; + } + memcpy(data, resp.data.asBytes, MFBLOCK_SIZE); + } else { + PrintAndLogEx(WARNING, "command execute timeout"); + return PM3_ETIMEOUT; + } + return PM3_SUCCESS; +} + +int mfG4SetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags) { + struct p { + uint8_t blockno; + uint8_t pwd[4]; + uint8_t data[MFBLOCK_SIZE]; + uint8_t workFlags; + } PACKED payload; + payload.blockno = blockno; + memcpy(payload.pwd, pwd, sizeof(payload.pwd)); + memcpy(payload.data, data, sizeof(payload.data)); + payload.workFlags = workFlags; + + clearCommandBuffer(); + SendCommandNG(CMD_HF_MIFARE_G4_WRBL, (uint8_t *)&payload, sizeof(payload)); + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_HF_MIFARE_G4_WRBL, &resp, 1500)) { + if (resp.status != PM3_SUCCESS) { + return PM3_EUNDEF; + } + } else { + PrintAndLogEx(WARNING, "command execute timeout"); + return PM3_ETIMEOUT; + } + return PM3_SUCCESS; +} diff --git a/client/src/mifare/gen4.h b/client/src/mifare/gen4.h index 3a2ab0947..3cdc7daf1 100644 --- a/client/src/mifare/gen4.h +++ b/client/src/mifare/gen4.h @@ -18,6 +18,8 @@ #ifndef __GEN4_H #define __GEN4_H +#include "common.h" + #define GEN4_CMD_CONFIG_GTU 0x32 #define GEN4_CMD_CONFIG_ATS 0x34 #define GEN4_CMD_CONFIG_ATQA_SAK 0x35 @@ -34,4 +36,10 @@ #define GEN4_CMD_SET_CONFIG_PERMANENT 0xF1 #define GEN4_CMD_CHANGE_PASSWORD 0xFE +int mfG4GetConfig(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbose); +int mfG4GetFactoryTest(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbose); + +int mfG4GetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags); +int mfG4SetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags); + #endif diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 7ff786832..13d925fdd 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -1175,170 +1175,6 @@ int mfGen3Freeze(void) { } } -static int mfG4ExCommand(uint8_t cmd, uint8_t *pwd, uint8_t *data, size_t datalen, uint8_t *response, size_t *responselen, bool verbose) { - struct p { - uint8_t cmdheader; - uint8_t pwd[4]; - uint8_t command; - uint8_t data[32]; - } PACKED payload; - memset(&payload, 0, sizeof(payload)); - - if (datalen > sizeof(payload.data)) { - return PM3_EINVARG; - } - - payload.cmdheader = 0xCF; - payload.command = cmd; - if (pwd != NULL) { - memcpy(payload.pwd, pwd, sizeof(payload.pwd)); - } - if (data != NULL && datalen > 0) { - memcpy(payload.data, data, datalen); - } - - int resplen = 0; - - clearCommandBuffer(); - SendCommandOLD(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_RAW | ISO14A_NO_RATS | ISO14A_APPEND_CRC, 6 + datalen, 0, (uint8_t *)&payload, 6 + datalen); - - PacketResponseNG resp; - if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { - if (resp.oldarg[0] != 2) { - if (verbose) PrintAndLogEx(ERR, "No card in the field."); - return PM3_ETIMEOUT; - } - - iso14a_card_select_t card; - memcpy(&card, (iso14a_card_select_t *)resp.data.asBytes, sizeof(iso14a_card_select_t)); - if (verbose) { - PrintAndLogEx(SUCCESS, " UID: " _GREEN_("%s"), sprint_hex(card.uid, card.uidlen)); - PrintAndLogEx(SUCCESS, "ATQA: " _GREEN_("%02X %02X"), card.atqa[1], card.atqa[0]); - PrintAndLogEx(SUCCESS, " SAK: " _GREEN_("%02X [%" PRIu64 "]"), card.sak, resp.oldarg[0]); - } - } else { - if (verbose) PrintAndLogEx(ERR, "No card in the field."); - return PM3_ETIMEOUT; - } - - if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { - resplen = resp.oldarg[0]; - - if (!resplen) { - if (verbose) PrintAndLogEx(ERR, "No card response."); - return PM3_EFAILED; - } - - resplen = resplen - 2; // 14A CRC - if (resplen < 0) - resplen = 0; - - if (resplen > 40) { - if (verbose) PrintAndLogEx(ERR, "Buffer too small(%d).", resplen); - return PM3_EOVFLOW; - } - - if (response != NULL) - memcpy(response, resp.data.asBytes, resplen); - - if (responselen != NULL) - *responselen = resplen; - - return PM3_SUCCESS; - } else { - if (verbose) PrintAndLogEx(ERR, "Reply timeout."); - return PM3_ETIMEOUT; - } -} - -int mfG4GetConfig(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbose) { - uint8_t resp[40] = {0}; - size_t resplen = 0; - - int res = mfG4ExCommand(GEN4_CMD_DUMP_CONFIG, pwd, NULL, 0, resp, &resplen, verbose); - if (res != PM3_SUCCESS) { - return res; - } - - if (data != NULL) - memcpy(data, resp, resplen); - - if (datalen != NULL) - *datalen = resplen; - - return PM3_SUCCESS; -} - -int mfG4GetFactoryTest(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbose) { - uint8_t resp[40] = {0}; - size_t resplen = 0; - - int res = mfG4ExCommand(GEN4_CMD_FACTORY_TEST, pwd, NULL, 0, resp, &resplen, verbose); - if (res != PM3_SUCCESS) { - return res; - } - - if (data != NULL) - memcpy(data, resp, resplen); - - if (datalen != NULL) - *datalen = resplen; - - return PM3_SUCCESS; -} - -int mfG4GetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags) { - struct p { - uint8_t blockno; - uint8_t pwd[4]; - uint8_t workFlags; - } PACKED payload; - payload.blockno = blockno; - memcpy(payload.pwd, pwd, sizeof(payload.pwd)); - payload.workFlags = workFlags; - - clearCommandBuffer(); - SendCommandNG(CMD_HF_MIFARE_G4_RDBL, (uint8_t *)&payload, sizeof(payload)); - PacketResponseNG resp; - if (WaitForResponseTimeout(CMD_HF_MIFARE_G4_RDBL, &resp, 1500)) { - if (resp.status != PM3_SUCCESS) { - return PM3_EUNDEF; - } - memcpy(data, resp.data.asBytes, MFBLOCK_SIZE); - } else { - PrintAndLogEx(WARNING, "command execute timeout"); - return PM3_ETIMEOUT; - } - return PM3_SUCCESS; -} - -int mfG4SetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags) { - struct p { - uint8_t blockno; - uint8_t pwd[4]; - uint8_t data[MFBLOCK_SIZE]; - uint8_t workFlags; - } PACKED payload; - payload.blockno = blockno; - memcpy(payload.pwd, pwd, sizeof(payload.pwd)); - memcpy(payload.data, data, sizeof(payload.data)); - payload.workFlags = workFlags; - - clearCommandBuffer(); - SendCommandNG(CMD_HF_MIFARE_G4_WRBL, (uint8_t *)&payload, sizeof(payload)); - PacketResponseNG resp; - if (WaitForResponseTimeout(CMD_HF_MIFARE_G4_WRBL, &resp, 1500)) { - if (resp.status != PM3_SUCCESS) { - return PM3_EUNDEF; - } - } else { - PrintAndLogEx(WARNING, "command execute timeout"); - return PM3_ETIMEOUT; - } - return PM3_SUCCESS; -} - - // variables uint32_t cuid = 0; // uid part used for crypto1. diff --git a/client/src/mifare/mifarehost.h b/client/src/mifare/mifarehost.h index dedf7f5ea..6f131f924 100644 --- a/client/src/mifare/mifarehost.h +++ b/client/src/mifare/mifarehost.h @@ -96,12 +96,6 @@ int mfGen3UID(uint8_t *uid, uint8_t uidlen, uint8_t *oldUid); int mfGen3Block(uint8_t *block, int blockLen, uint8_t *newBlock); int mfGen3Freeze(void); -int mfG4GetConfig(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbose); -int mfG4GetFactoryTest(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbose); - -int mfG4GetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags); -int mfG4SetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags); - int tryDecryptWord(uint32_t nt, uint32_t ar_enc, uint32_t at_enc, uint8_t *data, int len); int detect_classic_prng(void); From 660622568630439d0f576577912eddf4c2d5dbd3 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 15:48:18 +0200 Subject: [PATCH 0719/1034] add change password command --- client/src/cmdhfmf.c | 49 ++++++++++++++++++++++++++++++++++++++++ client/src/mifare/gen4.c | 12 ++++++++++ client/src/mifare/gen4.h | 2 ++ 3 files changed, 63 insertions(+) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 85d24bba9..4582e423a 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8229,6 +8229,54 @@ static int CmdHF14AGen4Save(const char *Cmd) { return PM3_SUCCESS; } +// change Gent4 GTU card access password +static int CmdHF14AGen4ChangePwd(const char *Cmd) { + + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mf gchpwd", + "Save `magic gen4 gtu` card memory to file (bin/json)", + "hf mf gchpwd --pwd 00000000 --newpwd 01020304" + ); + void *argtable[] = { + arg_param_begin, + arg_str0("p", "pwd", "<hex>", "password 4 bytes"), + arg_str0("n", "newpwd", "<hex>", "new password 4 bytes"), + arg_lit0("v", "verbose", "verbose output"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + + int pwd_len = 0; + uint8_t pwd[4] = {0}; + CLIGetHexWithReturn(ctx, 1, pwd, &pwd_len); + + int new_pwd_len = 0; + uint8_t new_pwd[4] = {0}; + CLIGetHexWithReturn(ctx, 2, new_pwd, &new_pwd_len); + + bool verbose = arg_get_lit(ctx, 3); + + if (pwd_len != 4) { + PrintAndLogEx(FAILED, "Old password must be 4 bytes long, got " _YELLOW_("%u"), pwd_len); + return PM3_EINVARG; + } + + if (new_pwd_len != 4) { + PrintAndLogEx(FAILED, "New password must be 4 bytes long, got " _YELLOW_("%u"), new_pwd_len); + return PM3_EINVARG; + } + + int res = mfG4ChangePassword(pwd, new_pwd, verbose); + if (res != PM3_SUCCESS) { + PrintAndLogEx(ERROR, "Change password error"); + return res; + } + + PrintAndLogEx(SUCCESS, "Change password done successfully."); + + return PM3_SUCCESS; +} + static int CmdHF14AGen4_GDM_Cfg(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf gdmcfg", @@ -8876,6 +8924,7 @@ static command_t CommandTable[] = { {"gsave", CmdHF14AGen4Save, IfPm3Iso14443a, "Save dump from card into file or emulator"}, {"gsetblk", CmdHF14AGen4SetBlk, IfPm3Iso14443a, "Write block to card"}, {"gview", CmdHF14AGen4View, IfPm3Iso14443a, "View card"}, + {"gchpwd", CmdHF14AGen4ChangePwd, IfPm3Iso14443a, "Change card access password. Warning!"}, {"-----------", CmdHelp, IfPm3Iso14443a, "-------------------- " _CYAN_("magic gen4 GDM") " --------------------------"}, {"gdmcfg", CmdHF14AGen4_GDM_Cfg, IfPm3Iso14443a, "Read config block from card"}, {"gdmsetcfg", CmdHF14AGen4_GDM_SetCfg, IfPm3Iso14443a, "Write config block to card"}, diff --git a/client/src/mifare/gen4.c b/client/src/mifare/gen4.c index 7dfff509f..5846c2a40 100644 --- a/client/src/mifare/gen4.c +++ b/client/src/mifare/gen4.c @@ -145,6 +145,18 @@ int mfG4GetFactoryTest(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbos return PM3_SUCCESS; } +int mfG4ChangePassword(uint8_t *pwd, uint8_t *newpwd, bool verbose) { + uint8_t resp[40] = {0}; + size_t resplen = 0; + + int res = mfG4ExCommand(GEN4_CMD_CHANGE_PASSWORD, pwd, newpwd, 4, resp, &resplen, verbose); + if (res != PM3_SUCCESS) { + return res; + } + + return PM3_SUCCESS; +} + int mfG4GetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags) { struct p { uint8_t blockno; diff --git a/client/src/mifare/gen4.h b/client/src/mifare/gen4.h index 3cdc7daf1..b4e22fb98 100644 --- a/client/src/mifare/gen4.h +++ b/client/src/mifare/gen4.h @@ -42,4 +42,6 @@ int mfG4GetFactoryTest(uint8_t *pwd, uint8_t *data, size_t *datalen, bool verbos int mfG4GetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags); int mfG4SetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags); +int mfG4ChangePassword(uint8_t *pwd, uint8_t *newpwd, bool verbose); + #endif From c1bc926e24789ea18c58e0439aa1f7cb758af51c Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 15:49:26 +0200 Subject: [PATCH 0720/1034] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 401621458..6b46e72c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `hf mf gchpwd` command for change Gen4 GTU card access password (@merlokk) - Added `--ms` option in `hw status` to specify the timeout of connection speed test (@wh201906) - Added `hf mf ginfo` command for get info about Gen4 GTU configuration (@merlokk) - Added support for loading Flipper PICOPASS dump files (@iceman1001) From 70e39ec0c450b1cb81ed03341b4e055dc7d030c6 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 15:52:54 +0200 Subject: [PATCH 0721/1034] check return code --- client/src/mifare/gen4.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/src/mifare/gen4.c b/client/src/mifare/gen4.c index 5846c2a40..b01085671 100644 --- a/client/src/mifare/gen4.c +++ b/client/src/mifare/gen4.c @@ -154,6 +154,9 @@ int mfG4ChangePassword(uint8_t *pwd, uint8_t *newpwd, bool verbose) { return res; } + if (resplen != 2 || resp[0] != 0x90 || resp[1] != 0x00) + return PM3_EAPDU_FAIL; + return PM3_SUCCESS; } From f2110c11ae4d27d7a5817f8381d2d0e11cfb6e02 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 15:56:51 +0200 Subject: [PATCH 0722/1034] fix text --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 4582e423a..141c49c43 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8234,7 +8234,7 @@ static int CmdHF14AGen4ChangePwd(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf gchpwd", - "Save `magic gen4 gtu` card memory to file (bin/json)", + "Change access password for Gen4 GTU card. WARNING! If you dont KNOW the password - you CAN'T access it!!!", "hf mf gchpwd --pwd 00000000 --newpwd 01020304" ); void *argtable[] = { From 73f5270fa21845b82abffec5358218861a87ee38 Mon Sep 17 00:00:00 2001 From: Oleg Moiseenko <807634+merlokk@users.noreply.github.com> Date: Mon, 6 Nov 2023 16:01:56 +0200 Subject: [PATCH 0723/1034] Update cmdhfmf.c Signed-off-by: Oleg Moiseenko <807634+merlokk@users.noreply.github.com> --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 141c49c43..60e8e6db4 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8268,7 +8268,7 @@ static int CmdHF14AGen4ChangePwd(const char *Cmd) { int res = mfG4ChangePassword(pwd, new_pwd, verbose); if (res != PM3_SUCCESS) { - PrintAndLogEx(ERROR, "Change password error"); + PrintAndLogEx(ERR, "Change password error"); return res; } From be63138016b1320f30fd584ba6a5dfaf171d808f Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 6 Nov 2023 17:07:16 +0100 Subject: [PATCH 0724/1034] fix wrong types --- client/src/cmdhfmf.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 60e8e6db4..d36b1aab4 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7469,18 +7469,18 @@ static int CmdHF14AGen4Info(const char *cmd) { if (res == PM3_ETIMEOUT) PrintAndLogEx(ERR, "No card in the field or card command timeout."); else - PrintAndLogEx(ERR, "Error get config. Maybe not a Gen4 card?. error=%d rlen=%d", res, resplen); + PrintAndLogEx(ERR, "Error get config. Maybe not a Gen4 card?. error=%d rlen=%zu", res, resplen); return PM3_ESOFT; } PrintAndLogEx(INFO, "---------- Gen4 configuration ----------"); if (resplen != 30 && resplen != 32) { - PrintAndLogEx(INFO, "Raw config [%02d] %s", resplen, sprint_hex_inrow(resp, resplen)); + PrintAndLogEx(INFO, "Raw config [%02zu] %s", resplen, sprint_hex_inrow(resp, resplen)); PrintAndLogEx(WARNING, "Unknown config format"); return PM3_SUCCESS; } if (verbose) - PrintAndLogEx(INFO, "Raw config [%02d]..... %s", resplen, sprint_hex_inrow(resp, resplen)); + PrintAndLogEx(INFO, "Raw config [%02zu]..... %s", resplen, sprint_hex_inrow(resp, resplen)); PrintAndLogEx(INFO, "UL protocol......... %02x" NOLF, resp[0]); switch (resp[0]){ @@ -7577,7 +7577,7 @@ static int CmdHF14AGen4Info(const char *cmd) { if (res == PM3_SUCCESS && resplen > 2) { if (verbose) { PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "Raw test [%02d]....... %s", resplen, sprint_hex_inrow(resp, resplen)); + PrintAndLogEx(INFO, "Raw test [%02zu]....... %s", resplen, sprint_hex_inrow(resp, resplen)); } if (resp[resplen - 2] == 0x66 && resp[resplen - 1] == 0x66) From bf6f5518acc1baaaec69e7eafa60d9fbf53caa8e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 6 Nov 2023 17:12:03 +0100 Subject: [PATCH 0725/1034] fix overflow (@wh201906) --- armsrc/appmain.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index ef5e06179..a3c075f8f 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -369,7 +369,7 @@ static void print_debug_level(void) { // measure the Connection Speed by sending SpeedTestBufferSize bytes to client and measuring the elapsed time. // Note: this mimics GetFromBigbuf(), i.e. we have the overhead of the PacketCommandNG structure included. -static void printConnSpeed(uint32_t testTimeout) { +static void printConnSpeed(uint32_t wait) { DbpString(_CYAN_("Transfer Speed")); Dbprintf(" Sending packets to client..."); @@ -380,7 +380,7 @@ static void printConnSpeed(uint32_t testTimeout) { LED_B_ON(); - while (delta_time < testTimeout) { + while (delta_time < wait) { reply_ng(CMD_DOWNLOADED_BIGBUF, PM3_SUCCESS, test_data, PM3_CMD_DATA_SIZE); bytes_transferred += PM3_CMD_DATA_SIZE; delta_time = GetTickCountDelta(start_time); @@ -389,13 +389,13 @@ static void printConnSpeed(uint32_t testTimeout) { Dbprintf(" Time elapsed................... %dms", delta_time); Dbprintf(" Bytes transferred.............. %d", bytes_transferred); - Dbprintf(" Transfer Speed PM3 -> Client... " _YELLOW_("%d") " bytes/s", 1000 * bytes_transferred / delta_time); + Dbprintf(" Transfer Speed PM3 -> Client... " _YELLOW_("%llu") " bytes/s", 1000 * (uint64_t)bytes_transferred / delta_time); } /** * Prints runtime information about the PM3. **/ -static void SendStatus(int32_t speedTestTimeout) { +static void SendStatus(uint32_t wait) { BigBuf_print_status(); Fpga_print_status(); #ifdef WITH_FLASH @@ -411,7 +411,7 @@ static void SendStatus(int32_t speedTestTimeout) { #ifdef WITH_ISO14443a printHf14aConfig(); // HF 14a config #endif - printConnSpeed(speedTestTimeout); + printConnSpeed(wait); DbpString(_CYAN_("Various")); print_stack_usage(); From 6653bffe004e31ab9b29624c9ca73e30527a2fa1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 6 Nov 2023 22:58:14 +0100 Subject: [PATCH 0726/1034] coverity fixes --- armsrc/appmain.c | 5 +++-- client/src/cmdhfmf.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index a3c075f8f..de0ec875e 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -389,8 +389,9 @@ static void printConnSpeed(uint32_t wait) { Dbprintf(" Time elapsed................... %dms", delta_time); Dbprintf(" Bytes transferred.............. %d", bytes_transferred); - Dbprintf(" Transfer Speed PM3 -> Client... " _YELLOW_("%llu") " bytes/s", 1000 * (uint64_t)bytes_transferred / delta_time); -} + if (delta_time) { + Dbprintf(" Transfer Speed PM3 -> Client... " _YELLOW_("%llu") " bytes/s", 1000 * (uint64_t)bytes_transferred / delta_time); + } /** * Prints runtime information about the PM3. diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index d36b1aab4..056ee8f05 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8256,6 +8256,8 @@ static int CmdHF14AGen4ChangePwd(const char *Cmd) { bool verbose = arg_get_lit(ctx, 3); + CLIParserFree(ctx); + if (pwd_len != 4) { PrintAndLogEx(FAILED, "Old password must be 4 bytes long, got " _YELLOW_("%u"), pwd_len); return PM3_EINVARG; @@ -8272,8 +8274,7 @@ static int CmdHF14AGen4ChangePwd(const char *Cmd) { return res; } - PrintAndLogEx(SUCCESS, "Change password done successfully."); - + PrintAndLogEx(SUCCESS, "Change password ( " _GREEN_("ok") " )"); return PM3_SUCCESS; } From d137b74de79a9652c07733d52442fdd1f349abe5 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 6 Nov 2023 23:19:46 +0100 Subject: [PATCH 0727/1034] missing --- armsrc/appmain.c | 1 + 1 file changed, 1 insertion(+) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index de0ec875e..b8823af3b 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -392,6 +392,7 @@ static void printConnSpeed(uint32_t wait) { if (delta_time) { Dbprintf(" Transfer Speed PM3 -> Client... " _YELLOW_("%llu") " bytes/s", 1000 * (uint64_t)bytes_transferred / delta_time); } +} /** * Prints runtime information about the PM3. From 5dd144b1935c0887ee0d2a925ae81bd3923e925c Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 6 Nov 2023 23:52:05 +0100 Subject: [PATCH 0728/1034] reworked autopwn to allow for user to supply multiple keys in command line. All is merged with default array and dictionary if suppolied when doing dictionary attack --- CHANGELOG.md | 1 + client/src/cmdhfmf.c | 297 ++++++++++++++++--------------------------- 2 files changed, 110 insertions(+), 188 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b46e72c0..1a38c2edb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf mf autopwn` - now supports multiple user supplied keys (@iceman1001) - Added `hf mf gchpwd` command for change Gen4 GTU card access password (@merlokk) - Added `--ms` option in `hw status` to specify the timeout of connection speed test (@wh201906) - Added `hf mf ginfo` command for get info about Gen4 GTU configuration (@merlokk) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 056ee8f05..7b8f97f75 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -750,6 +750,77 @@ static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t n return PM3_SUCCESS ; } +static int mfLoadKeys(uint8_t **pkeyBlock, uint32_t *pkeycnt, uint8_t *userkey, int userkeylen, const char *filename, int fnlen) { + // Handle Keys + *pkeycnt = 0; + *pkeyBlock = NULL; + uint8_t *p; + // Handle user supplied key + // (it considers *pkeycnt and *pkeyBlock as possibly non-null so logic can be easily reordered) + if (userkeylen >= MIFARE_KEY_SIZE) { + int numKeys = userkeylen / MIFARE_KEY_SIZE; + p = realloc(*pkeyBlock, (*pkeycnt + numKeys) * MIFARE_KEY_SIZE); + if (!p) { + PrintAndLogEx(FAILED, "cannot allocate memory for Keys"); + free(*pkeyBlock); + return PM3_EMALLOC; + } + *pkeyBlock = p; + + memcpy(*pkeyBlock + *pkeycnt * MIFARE_KEY_SIZE, userkey, numKeys * MIFARE_KEY_SIZE); + + for (int i = 0; i < numKeys; i++) { + PrintAndLogEx(INFO, "[%2d] key %s", *pkeycnt + i, sprint_hex(*pkeyBlock + (*pkeycnt + i) * MIFARE_KEY_SIZE, MIFARE_KEY_SIZE)); + } + *pkeycnt += numKeys; + PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%2d") " keys supplied by user ", numKeys); + } + + // Handle default keys + p = realloc(*pkeyBlock, (*pkeycnt + ARRAYLEN(g_mifare_default_keys)) * MIFARE_KEY_SIZE); + if (!p) { + PrintAndLogEx(FAILED, "cannot allocate memory for Keys"); + free(*pkeyBlock); + return PM3_EMALLOC; + } + *pkeyBlock = p; + // Copy default keys to list + for (int i = 0; i < ARRAYLEN(g_mifare_default_keys); i++) { + num_to_bytes(g_mifare_default_keys[i], MIFARE_KEY_SIZE, (uint8_t *)(*pkeyBlock + (*pkeycnt + i) * MIFARE_KEY_SIZE)); + PrintAndLogEx(DEBUG, "[%2d] key %s", *pkeycnt + i, sprint_hex(*pkeyBlock + (*pkeycnt + i) * MIFARE_KEY_SIZE, MIFARE_KEY_SIZE)); + } + *pkeycnt += ARRAYLEN(g_mifare_default_keys); + PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%2d") " keys from hardcoded default array", ARRAYLEN(g_mifare_default_keys)); + + + // Handle user supplied dictionary file + if (fnlen > 0) { + uint32_t loaded_numKeys = 0; + uint8_t *keyBlock_tmp = NULL; + int res = loadFileDICTIONARY_safe(filename, (void **) &keyBlock_tmp, MIFARE_KEY_SIZE, &loaded_numKeys); + if (res != PM3_SUCCESS || loaded_numKeys == 0 || *pkeyBlock == NULL) { + PrintAndLogEx(FAILED, "An error occurred while loading the dictionary!"); + free(keyBlock_tmp); + free(*pkeyBlock); + return PM3_EFILE; + } else { + p = realloc(*pkeyBlock, (*pkeycnt + loaded_numKeys) * MIFARE_KEY_SIZE); + if (!p) { + PrintAndLogEx(FAILED, "cannot allocate memory for Keys"); + free(keyBlock_tmp); + free(*pkeyBlock); + return PM3_EMALLOC; + } + *pkeyBlock = p; + memcpy(*pkeyBlock + *pkeycnt * MIFARE_KEY_SIZE, keyBlock_tmp, loaded_numKeys * MIFARE_KEY_SIZE); + *pkeycnt += loaded_numKeys; + free(keyBlock_tmp); + } + PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%2d") " keys from dictionary", loaded_numKeys); + } + return PM3_SUCCESS; +} + static int CmdHF14AMfAcl(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf acl", @@ -2320,12 +2391,13 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { "hf mf autopwn\n" "hf mf autopwn -s 0 -a -k FFFFFFFFFFFF --> target MFC 1K card, Sector 0 with known key A 'FFFFFFFFFFFF'\n" "hf mf autopwn --1k -f mfc_default_keys --> target MFC 1K card, default dictionary\n" - "hf mf autopwn --1k -s 0 -a -k FFFFFFFFFFFF -f mfc_default_keys --> combo of the two above samples" + "hf mf autopwn --1k -s 0 -a -k FFFFFFFFFFFF -f mfc_default_keys --> combo of the two above samples\n" + "hf mf autopwn --1k -s 0 -a -k FFFFFFFFFFFF -k a0a1a2a3a4a5 --> multiple user supplied keys" ); void *argtable[] = { arg_param_begin, - arg_str0("k", "key", "<hex>", "Known key, 12 hex bytes"), + arg_strx0("k", "key", "<hex>", "Known key, 12 hex bytes"), arg_int0("s", "sector", "<dec>", "Input sector number"), arg_lit0("a", NULL, "Input key A (def)"), arg_lit0("b", NULL, "Input key B"), @@ -2356,17 +2428,10 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - int keylen = 0; - uint8_t key[6] = {0}; - int32_t res = CLIParamHexToBuf(arg_get_str(ctx, 1), key, sizeof(key), &keylen); - if (res) { - CLIParserFree(ctx); - PrintAndLogEx(FAILED, "Error parsing key bytes"); - return PM3_EINVARG; - } - - bool known_key = (keylen == 6); - + int in_keys_len = 0; + uint8_t in_keys[100 * 6] = {0}; + CLIGetHexWithReturn(ctx, 1, in_keys, &in_keys_len); + uint8_t sectorno = arg_get_u32_def(ctx, 2, 0); uint8_t keytype = MF_KEY_A; @@ -2381,7 +2446,6 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { int fnlen = 0; char filename[FILE_PATH_SIZE] = {0}; CLIParamStrToBuf(arg_get_str(ctx, 5), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); - bool has_filename = (fnlen > 0); bool slow = arg_get_lit(ctx, 6); bool legacy_mfchk = arg_get_lit(ctx, 7); @@ -2464,26 +2528,28 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { if (in) SetSIMDInstr(SIMD_NONE); - // Nested and Hardnested parameter uint64_t key64 = 0; bool calibrate = true; + // Attack key storage variables uint8_t *keyBlock = NULL; uint32_t key_cnt = 0; - uint8_t tmp_key[6] = {0}; + uint8_t tmp_key[MIFARE_KEY_SIZE] = {0}; // Nested and Hardnested returned status uint64_t foundkey = 0; - int isOK = 0; int current_sector_i = 0, current_key_type_i = 0; + // Dumping and transfere to simulater memory - uint8_t block[16] = {0x00}; + uint8_t block[MFBLOCK_SIZE] = {0x00}; int bytes; + // Settings int prng_type = PM3_EUNDEF; uint8_t num_found_keys = 0; + int isOK = 0; // ------------------------------ uint64_t tagT = GetHF14AMfU_Type(); @@ -2514,6 +2580,12 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { iso14a_card_select_t card; memcpy(&card, (iso14a_card_select_t *)resp.data.asBytes, sizeof(iso14a_card_select_t)); + bool known_key = (in_keys_len > 5); + uint8_t key[6] = {0}; + if (known_key) { + memcpy(key, in_keys, sizeof(key)); + } + // detect MFC EV1 Signature bool is_ev1 = detect_mfc_ev1_signature(); if (is_ev1) { @@ -2579,106 +2651,20 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { PrintAndLogEx(INFO, "========================================================================"); } - // Start the timer - uint64_t t1 = msclock(); - // check the user supplied key if (known_key == false) { PrintAndLogEx(WARNING, "no known key was supplied, key recovery might fail"); - } else { - if (verbose) { - PrintAndLogEx(INFO, "======================= " _YELLOW_("START KNOWN KEY ATTACK") " ======================="); - } - - if (mfCheckKeys(mfFirstBlockOfSector(sectorno), keytype, true, 1, key, &key64) == PM3_SUCCESS) { - PrintAndLogEx(INFO, "target sector %3u key type %c -- using valid key [ " _GREEN_("%s") " ] (used for nested / hardnested attack)", - sectorno, - (keytype == MF_KEY_B) ? 'B' : 'A', - sprint_hex_inrow(key, sizeof(key)) - ); - - // Store the key for the nested / hardnested attack (if supplied by the user) - e_sector[sectorno].Key[keytype] = key64; - e_sector[sectorno].foundKey[keytype] = 'U'; - - ++num_found_keys; - } else { - known_key = false; - PrintAndLogEx(FAILED, "Key is wrong. Can't authenticate to sector"_RED_("%3d") " key type "_RED_("%c") " key " _RED_("%s"), - sectorno, - (keytype == MF_KEY_B) ? 'B' : 'A', - sprint_hex_inrow(key, sizeof(key)) - ); - PrintAndLogEx(WARNING, "falling back to dictionary"); - } - - // Check if the user supplied key is used by other sectors - for (int i = 0; i < sector_cnt; i++) { - for (int j = MF_KEY_A; j <= MF_KEY_B; j++) { - - if (e_sector[i].foundKey[j]) { - continue; - } - - if (mfCheckKeys(mfFirstBlockOfSector(i), j, true, 1, key, &key64) == PM3_SUCCESS) { - e_sector[i].Key[j] = bytes_to_num(key, 6); - e_sector[i].foundKey[j] = 'U'; - - // If the user supplied secctor / keytype was wrong --> just be nice and correct it ;) - if (known_key == false) { - num_to_bytes(e_sector[i].Key[j], 6, key); - known_key = true; - sectorno = i; - keytype = j; - PrintAndLogEx(SUCCESS, "target sector %3u key type %c -- found valid key [ " _GREEN_("%s") " ] (used for nested / hardnested attack)", - i, - (j == MF_KEY_B) ? 'B' : 'A', - sprint_hex_inrow(key, sizeof(key)) - ); - } else { - PrintAndLogEx(SUCCESS, "target sector %3u key type %c -- found valid key [ " _GREEN_("%s") " ]", - i, - (j == MF_KEY_B) ? 'B' : 'A', - sprint_hex_inrow(key, sizeof(key)) - ); - } - ++num_found_keys; - } - } - } - - if (num_found_keys == sector_cnt * 2) { - goto all_found; - } } - bool load_success = true; - // Load the dictionary - if (has_filename) { - res = loadFileDICTIONARY_safe(filename, (void **) &keyBlock, 6, &key_cnt); - if (res != PM3_SUCCESS || key_cnt == 0 || keyBlock == NULL) { - PrintAndLogEx(FAILED, "An error occurred while loading the dictionary! (we will use the default keys now)"); - if (keyBlock != NULL) { - free(keyBlock); - } - load_success = false; - } + // Start the timer + uint64_t t1 = msclock(); + + int ret = mfLoadKeys(&keyBlock, &key_cnt, in_keys, in_keys_len, filename, fnlen); + if (ret != PM3_SUCCESS) { + return ret; } - if (has_filename == false || load_success == false) { - keyBlock = calloc(ARRAYLEN(g_mifare_default_keys), 6); - if (keyBlock == NULL) { - free(e_sector); - free(fptr); - return PM3_EMALLOC; - } - - for (int cnt = 0; cnt < ARRAYLEN(g_mifare_default_keys); cnt++) { - num_to_bytes(g_mifare_default_keys[cnt], 6, keyBlock + cnt * 6); - } - key_cnt = ARRAYLEN(g_mifare_default_keys); - PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%2d") " keys from hardcoded default array", key_cnt); - } + int32_t res = PM3_SUCCESS; // Use the dictionary to find sector keys on the card if (verbose) PrintAndLogEx(INFO, "======================= " _YELLOW_("START DICTIONARY ATTACK") " ======================="); @@ -2694,8 +2680,8 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { PrintAndLogEx(NORMAL, "." NOLF); fflush(stdout); - if (mfCheckKeys(mfFirstBlockOfSector(i), j, true, 1, (keyBlock + (6 * k)), &key64) == PM3_SUCCESS) { - e_sector[i].Key[j] = bytes_to_num((keyBlock + (6 * k)), 6); + if (mfCheckKeys(mfFirstBlockOfSector(i), j, true, 1, (keyBlock + (MIFARE_KEY_SIZE * k)), &key64) == PM3_SUCCESS) { + e_sector[i].Key[j] = bytes_to_num((keyBlock + (MIFARE_KEY_SIZE * k)), MIFARE_KEY_SIZE); e_sector[i].foundKey[j] = 'D'; ++num_found_keys; break; @@ -2723,12 +2709,14 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { } uint32_t size = ((key_cnt - i) > chunksize) ? chunksize : key_cnt - i; // last chunk? - if (size == key_cnt - i) + if (size == key_cnt - i) { lastChunk = true; + } - res = mfCheckKeys_fast(sector_cnt, firstChunk, lastChunk, strategy, size, keyBlock + (i * 6), e_sector, false); - if (firstChunk) + res = mfCheckKeys_fast(sector_cnt, firstChunk, lastChunk, strategy, size, keyBlock + (i * MIFARE_KEY_SIZE), e_sector, false); + if (firstChunk) { firstChunk = false; + } // all keys, aborted if (res == PM3_SUCCESS) { i = key_cnt; @@ -2749,11 +2737,11 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { } e_sector[i].foundKey[j] = 'D'; - num_to_bytes(e_sector[i].Key[j], 6, tmp_key); + num_to_bytes(e_sector[i].Key[j], MIFARE_KEY_SIZE, tmp_key); // Store valid credentials for the nested / hardnested attack if none exist if (known_key == false) { - num_to_bytes(e_sector[i].Key[j], 6, key); + num_to_bytes(e_sector[i].Key[j], MIFARE_KEY_SIZE, key); known_key = true; sectorno = i; keytype = j; @@ -2823,7 +2811,7 @@ noValidKeyFound: free(keyBlock); // Clear the needed variables - num_to_bytes(0, 6, tmp_key); + num_to_bytes(0, MIFARE_KEY_SIZE, tmp_key); bool nested_failed = false; // Iterate over each sector and key(A/B) @@ -3092,7 +3080,7 @@ tryStaticnested: } } -all_found: +// all_found: // Show the results to the user PrintAndLogEx(NORMAL, ""); @@ -3171,73 +3159,6 @@ all_found: return PM3_SUCCESS; } -static int mfLoadKeys(uint8_t **pkeyBlock, uint32_t *pkeycnt, uint8_t *userkey, int userkeylen, const char *filename, int fnlen) { - // Handle Keys - *pkeycnt = 0; - *pkeyBlock = NULL; - uint8_t *p; - // Handle user supplied key - // (it considers *pkeycnt and *pkeyBlock as possibly non-null so logic can be easily reordered) - if (userkeylen >= 6) { - int numKeys = userkeylen / 6; - p = realloc(*pkeyBlock, (*pkeycnt + numKeys) * 6); - if (!p) { - PrintAndLogEx(FAILED, "cannot allocate memory for Keys"); - free(*pkeyBlock); - return PM3_EMALLOC; - } - *pkeyBlock = p; - - memcpy(*pkeyBlock + *pkeycnt * 6, userkey, numKeys * 6); - - for (int i = 0; i < numKeys; i++) { - PrintAndLogEx(INFO, "[%2d] key %s", *pkeycnt + i, sprint_hex(*pkeyBlock + (*pkeycnt + i) * 6, 6)); - } - *pkeycnt += numKeys; - } - - // Handle default keys - p = realloc(*pkeyBlock, (*pkeycnt + ARRAYLEN(g_mifare_default_keys)) * 6); - if (!p) { - PrintAndLogEx(FAILED, "cannot allocate memory for Keys"); - free(*pkeyBlock); - return PM3_EMALLOC; - } - *pkeyBlock = p; - // Copy default keys to list - for (int i = 0; i < ARRAYLEN(g_mifare_default_keys); i++) { - num_to_bytes(g_mifare_default_keys[i], 6, (uint8_t *)(*pkeyBlock + (*pkeycnt + i) * 6)); - PrintAndLogEx(DEBUG, "[%2d] key %s", *pkeycnt + i, sprint_hex(*pkeyBlock + (*pkeycnt + i) * 6, 6)); - } - *pkeycnt += ARRAYLEN(g_mifare_default_keys); - - // Handle user supplied dictionary file - if (fnlen > 0) { - uint32_t loaded_numKeys = 0; - uint8_t *keyBlock_tmp = NULL; - int res = loadFileDICTIONARY_safe(filename, (void **) &keyBlock_tmp, 6, &loaded_numKeys); - if (res != PM3_SUCCESS || loaded_numKeys == 0 || *pkeyBlock == NULL) { - PrintAndLogEx(FAILED, "An error occurred while loading the dictionary!"); - free(keyBlock_tmp); - free(*pkeyBlock); - return PM3_EFILE; - } else { - p = realloc(*pkeyBlock, (*pkeycnt + loaded_numKeys) * 6); - if (!p) { - PrintAndLogEx(FAILED, "cannot allocate memory for Keys"); - free(keyBlock_tmp); - free(*pkeyBlock); - return PM3_EMALLOC; - } - *pkeyBlock = p; - memcpy(*pkeyBlock + *pkeycnt * 6, keyBlock_tmp, loaded_numKeys * 6); - *pkeycnt += loaded_numKeys; - free(keyBlock_tmp); - } - } - return PM3_SUCCESS; -} - static int CmdHF14AMfChk_fast(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf fchk", @@ -3267,7 +3188,7 @@ static int CmdHF14AMfChk_fast(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, true); int keylen = 0; - uint8_t key[255 * 6] = {0}; + uint8_t key[100 * 6] = {0}; CLIGetHexWithReturn(ctx, 1, key, &keylen); bool m0 = arg_get_lit(ctx, 2); From 01aaad7866226acfe1fb18996bba1b7188607b33 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 7 Nov 2023 13:55:39 +0100 Subject: [PATCH 0729/1034] text --- client/src/cmdhfmf.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 7b8f97f75..43966c048 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -759,7 +759,7 @@ static int mfLoadKeys(uint8_t **pkeyBlock, uint32_t *pkeycnt, uint8_t *userkey, // (it considers *pkeycnt and *pkeyBlock as possibly non-null so logic can be easily reordered) if (userkeylen >= MIFARE_KEY_SIZE) { int numKeys = userkeylen / MIFARE_KEY_SIZE; - p = realloc(*pkeyBlock, (*pkeycnt + numKeys) * MIFARE_KEY_SIZE); + p = realloc(*pkeyBlock, numKeys * MIFARE_KEY_SIZE); if (!p) { PrintAndLogEx(FAILED, "cannot allocate memory for Keys"); free(*pkeyBlock); @@ -767,13 +767,13 @@ static int mfLoadKeys(uint8_t **pkeyBlock, uint32_t *pkeycnt, uint8_t *userkey, } *pkeyBlock = p; - memcpy(*pkeyBlock + *pkeycnt * MIFARE_KEY_SIZE, userkey, numKeys * MIFARE_KEY_SIZE); + memcpy(*pkeyBlock, userkey, numKeys * MIFARE_KEY_SIZE); for (int i = 0; i < numKeys; i++) { - PrintAndLogEx(INFO, "[%2d] key %s", *pkeycnt + i, sprint_hex(*pkeyBlock + (*pkeycnt + i) * MIFARE_KEY_SIZE, MIFARE_KEY_SIZE)); + PrintAndLogEx(INFO, "[" _YELLOW_("%d") "] key %s", i, sprint_hex(*pkeyBlock + i * MIFARE_KEY_SIZE, MIFARE_KEY_SIZE)); } *pkeycnt += numKeys; - PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%2d") " keys supplied by user ", numKeys); + PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%d") " keys supplied by user ", numKeys); } // Handle default keys @@ -787,10 +787,10 @@ static int mfLoadKeys(uint8_t **pkeyBlock, uint32_t *pkeycnt, uint8_t *userkey, // Copy default keys to list for (int i = 0; i < ARRAYLEN(g_mifare_default_keys); i++) { num_to_bytes(g_mifare_default_keys[i], MIFARE_KEY_SIZE, (uint8_t *)(*pkeyBlock + (*pkeycnt + i) * MIFARE_KEY_SIZE)); - PrintAndLogEx(DEBUG, "[%2d] key %s", *pkeycnt + i, sprint_hex(*pkeyBlock + (*pkeycnt + i) * MIFARE_KEY_SIZE, MIFARE_KEY_SIZE)); + PrintAndLogEx(DEBUG, "[" _YELLOW_("%d") "] key %s", *pkeycnt + i, sprint_hex(*pkeyBlock + (*pkeycnt + i) * MIFARE_KEY_SIZE, MIFARE_KEY_SIZE)); } *pkeycnt += ARRAYLEN(g_mifare_default_keys); - PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%2d") " keys from hardcoded default array", ARRAYLEN(g_mifare_default_keys)); + PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%u") " keys from hardcoded default array", ARRAYLEN(g_mifare_default_keys)); // Handle user supplied dictionary file @@ -816,7 +816,7 @@ static int mfLoadKeys(uint8_t **pkeyBlock, uint32_t *pkeycnt, uint8_t *userkey, *pkeycnt += loaded_numKeys; free(keyBlock_tmp); } - PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%2d") " keys from dictionary", loaded_numKeys); + PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%u") " keys from dictionary", loaded_numKeys); } return PM3_SUCCESS; } From c3543c461077b04b068ee43dcfa4549241e41f0f Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 7 Nov 2023 13:59:54 +0100 Subject: [PATCH 0730/1034] adapting cmakefile to the client cmakefile. --- client/experimental_lib/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 04198cf88..9dae9d64b 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -166,11 +166,12 @@ endif (NOT SKIPJANSSONSYSTEM EQUAL 1) if(EMBED_BZIP2) cmake_policy(SET CMP0114 NEW) set(BZIP2_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/bzip2/src/bzip2) + # Specify SOURCE_DIR will cause some errors ExternalProject_Add(bzip2 GIT_REPOSITORY https://android.googlesource.com/platform/external/bzip2 GIT_TAG platform-tools-30.0.2 PREFIX deps/bzip2 - SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/bzip2 + # SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/bzip2 CONFIGURE_COMMAND mkdir -p ${BZIP2_BUILD_DIR} && git archive --format tar HEAD | tar -C ${BZIP2_BUILD_DIR} -x BUILD_IN_SOURCE ON BUILD_COMMAND make -C ${BZIP2_BUILD_DIR} -j4 CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} libbz2.a @@ -279,6 +280,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/mifare/mifare4.c ${PM3_ROOT}/client/src/mifare/mifaredefault.c ${PM3_ROOT}/client/src/mifare/mifarehost.c + ${PM3_ROOT}/client/src/mifare/gen4.c ${PM3_ROOT}/client/src/nfc/ndef.c ${PM3_ROOT}/client/src/mifare/lrpcrypto.c ${PM3_ROOT}/client/src/mifare/desfirecrypto.c @@ -657,6 +659,8 @@ if (MINGW) set(CMAKE_C_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_CXX_FLAGS}") + # link Winsock2 + set(ADDITIONAL_LNK ws2_32 ${ADDITIONAL_LNK}) endif (MINGW) # GCC 10 has issues with false positives on stringop-overflow, From c60503560c37bcc4e1ca41233539cd1a62ebe187 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 7 Nov 2023 15:44:12 +0100 Subject: [PATCH 0731/1034] more defines and fix termux compilation --- client/src/cmdhfmf.c | 72 +++++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 43966c048..6a122ce4d 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2429,7 +2429,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, true); int in_keys_len = 0; - uint8_t in_keys[100 * 6] = {0}; + uint8_t in_keys[100 * MIFARE_KEY_SIZE] = {0}; CLIGetHexWithReturn(ctx, 1, in_keys, &in_keys_len); uint8_t sectorno = arg_get_u32_def(ctx, 2, 0); @@ -2547,8 +2547,6 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { // Settings int prng_type = PM3_EUNDEF; - uint8_t num_found_keys = 0; - int isOK = 0; // ------------------------------ @@ -2581,7 +2579,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { memcpy(&card, (iso14a_card_select_t *)resp.data.asBytes, sizeof(iso14a_card_select_t)); bool known_key = (in_keys_len > 5); - uint8_t key[6] = {0}; + uint8_t key[MIFARE_KEY_SIZE] = {0}; if (known_key) { memcpy(key, in_keys, sizeof(key)); } @@ -2683,7 +2681,6 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { if (mfCheckKeys(mfFirstBlockOfSector(i), j, true, 1, (keyBlock + (MIFARE_KEY_SIZE * k)), &key64) == PM3_SUCCESS) { e_sector[i].Key[j] = bytes_to_num((keyBlock + (MIFARE_KEY_SIZE * k)), MIFARE_KEY_SIZE); e_sector[i].foundKey[j] = 'D'; - ++num_found_keys; break; } } @@ -2693,7 +2690,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { PrintAndLogEx(NORMAL, ""); } else { - uint32_t chunksize = key_cnt > (PM3_CMD_DATA_SIZE / 6) ? (PM3_CMD_DATA_SIZE / 6) : key_cnt; + uint32_t chunksize = key_cnt > (PM3_CMD_DATA_SIZE / MIFARE_KEY_SIZE) ? (PM3_CMD_DATA_SIZE / MIFARE_KEY_SIZE) : key_cnt; bool firstChunk = true, lastChunk = false; for (uint8_t strategy = 1; strategy < 3; strategy++) { @@ -2730,12 +2727,15 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { } // Analyse the dictionary attack + uint8_t num_found_keys = 0; for (int i = 0; i < sector_cnt; i++) { for (int j = MF_KEY_A; j <= MF_KEY_B; j++) { if (e_sector[i].foundKey[j] != 1) { continue; } + ++num_found_keys; + e_sector[i].foundKey[j] = 'D'; num_to_bytes(e_sector[i].Key[j], MIFARE_KEY_SIZE, tmp_key); @@ -2760,6 +2760,10 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { } } + if (num_found_keys == sector_cnt * 2) { + goto all_found; + } + // Check if at least one sector key was found if (known_key == false) { @@ -2768,7 +2772,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { if (verbose) { PrintAndLogEx(INFO, "======================= " _YELLOW_("START DARKSIDE ATTACK") " ======================="); } - isOK = mfDarkside(mfFirstBlockOfSector(sectorno), keytype + 0x60, &key64); + isOK = mfDarkside(mfFirstBlockOfSector(sectorno), MIFARE_AUTH_KEYA + keytype, &key64); switch (isOK) { case PM3_EOPABORTED : @@ -2790,7 +2794,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { } // Store the keys - num_to_bytes(key64, 6, key); + num_to_bytes(key64, MIFARE_KEY_SIZE, key); e_sector[sectorno].Key[keytype] = key64; e_sector[sectorno].foundKey[keytype] = 'S'; PrintAndLogEx(SUCCESS, "target sector %3u key type %c -- found valid key [ " _GREEN_("%012" PRIx64) " ] (used for nested / hardnested attack)", @@ -2826,7 +2830,7 @@ noValidKeyFound: goto tryStaticnested; // Try the found keys are reused - if (bytes_to_num(tmp_key, 6) != 0) { + if (bytes_to_num(tmp_key, MIFARE_KEY_SIZE) != 0) { // <!> The fast check --> mfCheckKeys_fast(sector_cnt, true, true, 2, 1, tmp_key, e_sector, false); // <!> Returns false keys, so we just stick to the slower mfchk. for (int i = 0; i < sector_cnt; i++) { @@ -2837,7 +2841,7 @@ noValidKeyFound: // Check if the key works if (mfCheckKeys(mfFirstBlockOfSector(i), j, true, 1, tmp_key, &key64) == PM3_SUCCESS) { - e_sector[i].Key[j] = bytes_to_num(tmp_key, 6); + e_sector[i].Key[j] = bytes_to_num(tmp_key, MIFARE_KEY_SIZE); e_sector[i].foundKey[j] = 'R'; PrintAndLogEx(SUCCESS, "target sector %3u key type %c -- found valid key [ " _GREEN_("%s") " ]", i, @@ -2849,7 +2853,7 @@ noValidKeyFound: } } // Clear the last found key - num_to_bytes(0, 6, tmp_key); + num_to_bytes(0, MIFARE_KEY_SIZE, tmp_key); if (current_key_type_i == MF_KEY_B) { if (e_sector[current_sector_i].foundKey[0] && !e_sector[current_sector_i].foundKey[1]) { @@ -2865,7 +2869,7 @@ noValidKeyFound: payload.blockno = sectrail; payload.keytype = MF_KEY_A; - num_to_bytes(e_sector[current_sector_i].Key[0], 6, payload.key); // KEY A + num_to_bytes(e_sector[current_sector_i].Key[0], MIFARE_KEY_SIZE, payload.key); // KEY A clearCommandBuffer(); SendCommandNG(CMD_HF_MIFARE_READBL, (uint8_t *)&payload, sizeof(mf_readblock_t)); @@ -2875,11 +2879,11 @@ noValidKeyFound: if (resp.status != PM3_SUCCESS) goto skipReadBKey; uint8_t *data = resp.data.asBytes; - key64 = bytes_to_num(data + 10, 6); + key64 = bytes_to_num(data + 10, MIFARE_KEY_SIZE); if (key64) { e_sector[current_sector_i].foundKey[current_key_type_i] = 'A'; e_sector[current_sector_i].Key[current_key_type_i] = key64; - num_to_bytes(key64, 6, tmp_key); + num_to_bytes(key64, MIFARE_KEY_SIZE, tmp_key); PrintAndLogEx(SUCCESS, "target sector %3u key type %c -- found valid key [ " _GREEN_("%s") " ]", current_sector_i, (current_key_type_i == MF_KEY_B) ? 'B' : 'A', @@ -2965,7 +2969,7 @@ tryNested: } case PM3_SUCCESS: { calibrate = false; - e_sector[current_sector_i].Key[current_key_type_i] = bytes_to_num(tmp_key, 6); + e_sector[current_sector_i].Key[current_key_type_i] = bytes_to_num(tmp_key, MIFARE_KEY_SIZE); e_sector[current_sector_i].foundKey[current_key_type_i] = 'N'; break; } @@ -3027,7 +3031,7 @@ tryHardnested: // If the nested attack fails then we try the hardnested attack } // Copy the found key to the tmp_key variale (for the following print statement, and the mfCheckKeys above) - num_to_bytes(foundkey, 6, tmp_key); + num_to_bytes(foundkey, MIFARE_KEY_SIZE, tmp_key); e_sector[current_sector_i].Key[current_key_type_i] = foundkey; e_sector[current_sector_i].foundKey[current_key_type_i] = 'H'; } @@ -3057,7 +3061,7 @@ tryStaticnested: return isOK; } case PM3_SUCCESS: { - e_sector[current_sector_i].Key[current_key_type_i] = bytes_to_num(tmp_key, 6); + e_sector[current_sector_i].Key[current_key_type_i] = bytes_to_num(tmp_key, MIFARE_KEY_SIZE); e_sector[current_sector_i].foundKey[current_key_type_i] = 'C'; break; } @@ -3080,7 +3084,7 @@ tryStaticnested: } } -// all_found: +all_found: // Show the results to the user PrintAndLogEx(NORMAL, ""); @@ -3105,9 +3109,9 @@ tryStaticnested: for (current_sector_i = 0; current_sector_i < sector_cnt; current_sector_i++) { mfEmlGetMem(block, current_sector_i, 1); if (e_sector[current_sector_i].foundKey[0]) - num_to_bytes(e_sector[current_sector_i].Key[0], 6, block); + num_to_bytes(e_sector[current_sector_i].Key[0], MIFARE_KEY_SIZE, block); if (e_sector[current_sector_i].foundKey[1]) - num_to_bytes(e_sector[current_sector_i].Key[1], 6, block + 10); + num_to_bytes(e_sector[current_sector_i].Key[1], MIFARE_KEY_SIZE, block + 10); transfer_status |= mfEmlSetMem(block, mfFirstBlockOfSector(current_sector_i) + mfNumBlocksPerSector(current_sector_i) - 1, 1); } @@ -3188,7 +3192,7 @@ static int CmdHF14AMfChk_fast(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, true); int keylen = 0; - uint8_t key[100 * 6] = {0}; + uint8_t key[100 * MIFARE_KEY_SIZE] = {0}; CLIGetHexWithReturn(ctx, 1, key, &keylen); bool m0 = arg_get_lit(ctx, 2); @@ -3243,7 +3247,7 @@ static int CmdHF14AMfChk_fast(const char *Cmd) { return PM3_EMALLOC; } - uint32_t chunksize = keycnt > (PM3_CMD_DATA_SIZE / 6) ? (PM3_CMD_DATA_SIZE / 6) : keycnt; + uint32_t chunksize = keycnt > (PM3_CMD_DATA_SIZE / MIFARE_KEY_SIZE) ? (PM3_CMD_DATA_SIZE / MIFARE_KEY_SIZE) : keycnt; bool firstChunk = true, lastChunk = false; int i = 0; @@ -3273,7 +3277,7 @@ static int CmdHF14AMfChk_fast(const char *Cmd) { if (size == keycnt - i) lastChunk = true; - int res = mfCheckKeys_fast(sectorsCnt, firstChunk, lastChunk, strategy, size, keyBlock + (i * 6), e_sector, false); + int res = mfCheckKeys_fast(sectorsCnt, firstChunk, lastChunk, strategy, size, keyBlock + (i * MIFARE_KEY_SIZE), e_sector, false); if (firstChunk) firstChunk = false; @@ -3320,16 +3324,16 @@ out: if (transferToEml) { // fast push mode g_conn.block_after_ACK = true; - uint8_t block[16] = {0x00}; + uint8_t block[MFBLOCK_SIZE] = {0x00}; for (i = 0; i < sectorsCnt; ++i) { uint8_t b = mfFirstBlockOfSector(i) + mfNumBlocksPerSector(i) - 1; mfEmlGetMem(block, b, 1); if (e_sector[i].foundKey[0]) - num_to_bytes(e_sector[i].Key[0], 6, block); + num_to_bytes(e_sector[i].Key[0], MIFARE_KEY_SIZE, block); if (e_sector[i].foundKey[1]) - num_to_bytes(e_sector[i].Key[1], 6, block + 10); + num_to_bytes(e_sector[i].Key[1], MIFARE_KEY_SIZE, block + 10); if (i == sectorsCnt - 1) { // Disable fast mode on last packet @@ -3391,7 +3395,7 @@ static int CmdHF14AMfChk(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, true); int keylen = 0; - uint8_t key[255 * 6] = {0}; + uint8_t key[100 * MIFARE_KEY_SIZE] = {0}; CLIGetHexWithReturn(ctx, 1, key, &keylen); int blockNo = arg_get_int_def(ctx, 2, -1); @@ -3527,7 +3531,7 @@ static int CmdHF14AMfChk(const char *Cmd) { uint32_t size = keycnt - c > max_keys ? max_keys : keycnt - c; - if (mfCheckKeys(b, trgKeyType, clearLog, size, &keyBlock[6 * c], &key64) == PM3_SUCCESS) { + if (mfCheckKeys(b, trgKeyType, clearLog, size, &keyBlock[MIFARE_KEY_SIZE * c], &key64) == PM3_SUCCESS) { e_sector[i].Key[trgKeyType] = key64; e_sector[i].foundKey[trgKeyType] = true; clearLog = false; @@ -3564,7 +3568,7 @@ static int CmdHF14AMfChk(const char *Cmd) { payload.keytype = MF_KEY_A; // Use key A - num_to_bytes(e_sector[i].Key[0], 6, payload.key); + num_to_bytes(e_sector[i].Key[0], MIFARE_KEY_SIZE, payload.key); clearCommandBuffer(); SendCommandNG(CMD_HF_MIFARE_READBL, (uint8_t *)&payload, sizeof(mf_readblock_t)); @@ -3575,9 +3579,9 @@ static int CmdHF14AMfChk(const char *Cmd) { if (resp.status != PM3_SUCCESS) continue; uint8_t *data = resp.data.asBytes; - key64 = bytes_to_num(data + 10, 6); + key64 = bytes_to_num(data + 10, MIFARE_KEY_SIZE); if (key64) { - PrintAndLogEx(NORMAL, "Data:%s", sprint_hex(data + 10, 6)); + PrintAndLogEx(NORMAL, "Data:%s", sprint_hex(data + 10, MIFARE_KEY_SIZE)); e_sector[i].foundKey[1] = 1; e_sector[i].Key[1] = key64; } @@ -3601,16 +3605,16 @@ out: if (transferToEml) { // fast push mode g_conn.block_after_ACK = true; - uint8_t block[16] = {0x00}; + uint8_t block[MFBLOCK_SIZE] = {0x00}; for (int i = 0; i < sectors_cnt; ++i) { uint8_t blockno = mfFirstBlockOfSector(i) + mfNumBlocksPerSector(i) - 1; mfEmlGetMem(block, blockno, 1); if (e_sector[i].foundKey[0]) - num_to_bytes(e_sector[i].Key[0], 6, block); + num_to_bytes(e_sector[i].Key[0], MIFARE_KEY_SIZE, block); if (e_sector[i].foundKey[1]) - num_to_bytes(e_sector[i].Key[1], 6, block + 10); + num_to_bytes(e_sector[i].Key[1], MIFARE_KEY_SIZE, block + 10); if (i == sectors_cnt - 1) { // Disable fast mode on last packet From 463356469abf3a0b987c0e3f60335b8708bbc908 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 7 Nov 2023 21:20:39 +0100 Subject: [PATCH 0732/1034] added test scenario for MIFARE Ultrlight AES. However openssl doesnt handle curve secp192r1. Which is odd because I was sure it did. --- tools/recover_pk.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/recover_pk.py b/tools/recover_pk.py index f4a78dda7..ea676fc22 100755 --- a/tools/recover_pk.py +++ b/tools/recover_pk.py @@ -164,6 +164,13 @@ def selftests(): 'samples': ["04B59F6A226F82", "6F577EB7F570D74DB6250477427F68A0088762BD318767537122919A7916597149F9D16D8B135E9BF826FB28AE293F3168661CD4A049FAED", "04B44A82D80F92", "A0868ECF26733D3C3C838D055968B4559F77693CC3E346E3A4741BC826801F8360FD88857BEC440AAD3A21153D64302DEB6F5ED40B15C3F7"], 'pk': "040F732E0EA7DF2B38F791BF89425BF7DCDF3EE4D976669E3831F324FF15751BD52AFF1782F72FF2731EEAD5F63ABE7D126E03C856FFB942AF"}, + + {'name': "MIFARE Ultralight AES", + # uses , + 'samples': ["04E163C2451390", "240284F3F2703C6911D2E7B4211A421378C3DE911F6E9DA120224508C72D4CDE58F3DBEE065C824BA595AB0352888516", + "042F6892457080", "1824472A4CC927C7CA423F2B75E8E15CD26F682D3D633B3E032879B11D2E7C0E5BDC720D7D4F3AB04DEC7229EC213C89"], + 'pk': "0453BF8C49B7BD9FE3207A91513B9C1D238ECAB07186B772104AB535F7D3AE63CF7C7F3DD0D169DA3E99E43C6399621A86"}, + ] succeeded = True for t in tests: From 7adadde5f5bf58b931e50c0aa9abcef845ee1402 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 7 Nov 2023 21:22:25 +0100 Subject: [PATCH 0733/1034] added support to verify UL AES signatures. This tag supports of randomizing UID and mixing with AES keys, making a generic signature algo a bit harder. But for the non mixed signature check it should work. Also added Ul AES version for it to be correct identified. --- client/src/cmdhfmfu.c | 85 +++++++++++++++++++++++++++++++------------ client/src/cmdhfmfu.h | 1 + 2 files changed, 62 insertions(+), 24 deletions(-) diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 6b55875f7..161055042 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -51,6 +51,7 @@ #define MAX_MY_D_MOVE 0x25 #define MAX_MY_D_MOVE_LEAN 0x0F #define MAX_UL_NANO_40 0x0A +#define MAX_UL_AES 0x37 static int CmdHelp(const char *Cmd); @@ -86,7 +87,8 @@ static uint64_t UL_TYPES_ARRAY[] = { MFU_TT_NTAG_213_TT, MFU_TT_NTAG_213_C, MFU_TT_MAGIC_1A, MFU_TT_MAGIC_1B, MFU_TT_MAGIC_NTAG, MFU_TT_NTAG_210u, - MFU_TT_UL_MAGIC, MFU_TT_UL_C_MAGIC + MFU_TT_UL_MAGIC, MFU_TT_UL_C_MAGIC, + MFU_TT_UL_AES }; static uint8_t UL_MEMORY_ARRAY[ARRAYLEN(UL_TYPES_ARRAY)] = { @@ -107,7 +109,7 @@ static uint8_t UL_MEMORY_ARRAY[ARRAYLEN(UL_TYPES_ARRAY)] = { // MAGIC_1A, MAGIC_1B, MAGIC_NTAG, MAX_UL_BLOCKS, MAX_UL_BLOCKS, MAX_NTAG_216, // NTAG_210u, UL_MAGIC, UL_C_MAGIC - MAX_NTAG_210, MAX_UL_BLOCKS, MAX_ULC_BLOCKS + MAX_NTAG_210, MAX_UL_BLOCKS, MAX_ULC_BLOCKS, MAX_UL_AES }; //------------------------------------ @@ -428,7 +430,6 @@ static int ulev1_readTearing(uint8_t counter, uint8_t *response, uint16_t respon } static int ulev1_readSignature(uint8_t *response, uint16_t responseLength) { - uint8_t cmd[] = {MIFARE_ULEV1_READSIG, 0x00}; int len = ul_send_cmd_raw(cmd, sizeof(cmd), response, responseLength); return len; @@ -1023,6 +1024,7 @@ static int ulev1_print_counters(void) { static int ulev1_print_signature(uint64_t tagtype, uint8_t *uid, uint8_t *signature, size_t signature_len) { #define PUBLIC_ECDA_KEYLEN 33 +#define PUBLIC_ECDA_192_KEYLEN 49 // known public keys for the originality check (source: https://github.com/alexbatalov/node-nxp-originality-verifier) // ref: AN11350 NTAG 21x Originality Signature Validation // ref: AN11341 MIFARE Ultralight EV1 Originality Signature Validation @@ -1036,6 +1038,11 @@ static int ulev1_print_signature(uint64_t tagtype, uint8_t *uid, uint8_t *signat {"MIKRON Public key", "04f971eda742a4a80d32dcf6a814a707cc3dc396d35902f72929fdcd698b3468f2"}, }; + // https://www.nxp.com/docs/en/application-note/AN13452.pdf + const ecdsa_publickey_t nxp_mfu_192_public_keys[] = { + {"NXP Ultralight AES", "0453BF8C49B7BD9FE3207A91513B9C1D238ECAB07186B772104AB535F7D3AE63CF7C7F3DD0D169DA3E99E43C6399621A86"}, + }; + /* uint8_t nxp_mfu_public_keys[6][PUBLIC_ECDA_KEYLEN] = { // UL, NTAG21x and NDEF @@ -1084,34 +1091,60 @@ static int ulev1_print_signature(uint64_t tagtype, uint8_t *uid, uint8_t *signat */ uint8_t i; bool is_valid = false; - for (i = 0; i < ARRAYLEN(nxp_mfu_public_keys); i++) { + if (signature_len == 32) { + for (i = 0; i < ARRAYLEN(nxp_mfu_public_keys); i++) { - int dl = 0; - uint8_t key[PUBLIC_ECDA_KEYLEN] = {0}; - param_gethex_to_eol(nxp_mfu_public_keys[i].value, 0, key, PUBLIC_ECDA_KEYLEN, &dl); + int dl = 0; + uint8_t key[PUBLIC_ECDA_KEYLEN] = {0}; + param_gethex_to_eol(nxp_mfu_public_keys[i].value, 0, key, PUBLIC_ECDA_KEYLEN, &dl); - int res = ecdsa_signature_r_s_verify(MBEDTLS_ECP_DP_SECP128R1, key, uid, 7, signature, signature_len, false); + int res = ecdsa_signature_r_s_verify(MBEDTLS_ECP_DP_SECP128R1, key, uid, 7, signature, signature_len, false); - is_valid = (res == 0); - if (is_valid) - break; + is_valid = (res == 0); + if (is_valid) + break; + } + } + + bool is_192_valid = false; + if (signature_len == 48) { + for (i = 0; i < ARRAYLEN(nxp_mfu_192_public_keys); i++) { + int dl = 0; + uint8_t key[PUBLIC_ECDA_192_KEYLEN] = {0}; + param_gethex_to_eol(nxp_mfu_192_public_keys[i].value, 0, key, PUBLIC_ECDA_192_KEYLEN, &dl); + + int res = ecdsa_signature_r_s_verify(MBEDTLS_ECP_DP_SECP192R1, key, uid, 7, signature, signature_len, false); + + is_192_valid = (res == 0); + if (is_192_valid) + break; + } } PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Signature")); - if (is_valid == false || i == ARRAYLEN(nxp_mfu_public_keys)) { - PrintAndLogEx(INFO, " Elliptic curve parameters: NID_secp128r1"); + if (is_192_valid ) { + PrintAndLogEx(INFO, " IC signature public key name: " _GREEN_("%s"), nxp_mfu_192_public_keys[i].desc); + PrintAndLogEx(INFO, "IC signature public key value: %s", nxp_mfu_192_public_keys[i].value); + PrintAndLogEx(INFO, " Elliptic curve parameters: NID_secp192r1"); PrintAndLogEx(INFO, " TAG IC Signature: %s", sprint_hex_inrow(signature, signature_len)); - PrintAndLogEx(SUCCESS, " Signature verification ( " _RED_("fail") " )"); - return PM3_ESOFT; + PrintAndLogEx(SUCCESS, " Signature verification ( " _GREEN_("successful") " )"); + return PM3_SUCCESS; } - PrintAndLogEx(INFO, " IC signature public key name: " _GREEN_("%s"), nxp_mfu_public_keys[i].desc); - PrintAndLogEx(INFO, "IC signature public key value: %s", nxp_mfu_public_keys[i].value); - PrintAndLogEx(INFO, " Elliptic curve parameters: NID_secp128r1"); + if (is_valid) { + PrintAndLogEx(INFO, " IC signature public key name: " _GREEN_("%s"), nxp_mfu_public_keys[i].desc); + PrintAndLogEx(INFO, "IC signature public key value: %s", nxp_mfu_public_keys[i].value); + PrintAndLogEx(INFO, " Elliptic curve parameters: NID_secp128r1"); + PrintAndLogEx(INFO, " TAG IC Signature: %s", sprint_hex_inrow(signature, signature_len)); + PrintAndLogEx(SUCCESS, " Signature verification ( " _GREEN_("successful") " )"); + return PM3_SUCCESS; + } + + PrintAndLogEx(INFO, " Elliptic curve parameters: %s", (signature_len == 48) ? "NID_secp192r1" : "NID_secp128r1" ); PrintAndLogEx(INFO, " TAG IC Signature: %s", sprint_hex_inrow(signature, signature_len)); - PrintAndLogEx(SUCCESS, " Signature verification ( " _GREEN_("successful") " )"); - return PM3_SUCCESS; + PrintAndLogEx(SUCCESS, " Signature verification ( " _RED_("fail") " )"); + return PM3_ESOFT; } static int ulev1_print_version(uint8_t *data) { @@ -1641,13 +1674,14 @@ uint32_t GetHF14AMfU_Type(void) { else if (memcmp(version, "\x00\x04\x03\x02\x01\x00\x0B", 7) == 0) { tagtype = MFU_TT_UL_EV1_48; break; } else if (memcmp(version, "\x00\x04\x03\x01\x01\x00\x0E", 7) == 0) { tagtype = MFU_TT_UL_EV1_128; break; } else if (memcmp(version, "\x00\x04\x03\x02\x01\x00\x0E", 7) == 0) { tagtype = MFU_TT_UL_EV1_128; break; } + else if (memcmp(version, "\x00\x04\x03\x01\x04\x00\x0F\x03", 8) == 0) { tagtype = MFU_TT_UL_AES; break; } else if (memcmp(version, "\x00\x34\x21\x01\x01\x00\x0E", 7) == 0) { tagtype = MFU_TT_UL_EV1_128; break; } // Mikron JSC Russia EV1 41 pages tag else if (memcmp(version, "\x00\x04\x04\x01\x01\x00\x0B", 7) == 0) { tagtype = MFU_TT_NTAG_210; break; } else if (memcmp(version, "\x00\x04\x04\x01\x02\x00\x0B", 7) == 0) { tagtype = MFU_TT_NTAG_210u; break; } else if (memcmp(version, "\x00\x04\x04\x02\x02\x00\x0B", 7) == 0) { tagtype = MFU_TT_NTAG_210u; break; } else if (memcmp(version, "\x00\x04\x04\x01\x01\x00\x0E", 7) == 0) { tagtype = MFU_TT_NTAG_212; break; } else if (memcmp(version, "\x00\x04\x04\x02\x01\x00\x0F", 7) == 0) { tagtype = MFU_TT_NTAG_213; break; } - else if (memcmp(version, "\x00\x53\x04\x02\x01\x00\x0F", 7) == 0) { tagtype = MFU_TT_NTAG_213; break; } //Shanghai Feiju Microelectronics Co. Ltd. China (Xiaomi Air Purifier filter) + else if (memcmp(version, "\x00\x53\x04\x02\x01\x00\x0F", 7) == 0) { tagtype = MFU_TT_NTAG_213; break; } // Shanghai Feiju Microelectronics Co. Ltd. China (Xiaomi Air Purifier filter) else if (memcmp(version, "\x00\x04\x04\x02\x01\x01\x0F", 7) == 0) { tagtype = MFU_TT_NTAG_213_C; break; } else if (memcmp(version, "\x00\x04\x04\x02\x01\x00\x11", 7) == 0) { tagtype = MFU_TT_NTAG_215; break; } else if (memcmp(version, "\x00\x04\x04\x02\x01\x00\x13", 7) == 0) { tagtype = MFU_TT_NTAG_216; break; } @@ -1894,8 +1928,9 @@ static int CmdHF14AMfUInfo(const char *Cmd) { if ((tagtype & (MFU_TT_UL_EV1_48 | MFU_TT_UL_EV1_128 | MFU_TT_UL_EV1 | MFU_TT_UL_NANO_40 | MFU_TT_NTAG_210u | MFU_TT_NTAG_213 | MFU_TT_NTAG_213_F | MFU_TT_NTAG_213_C | MFU_TT_NTAG_213_TT | MFU_TT_NTAG_215 | MFU_TT_NTAG_216 | MFU_TT_NTAG_216_F | - MFU_TT_NTAG_I2C_1K | MFU_TT_NTAG_I2C_2K | MFU_TT_NTAG_I2C_1K_PLUS | MFU_TT_NTAG_I2C_2K_PLUS))) { - uint8_t ulev1_signature[32] = {0x00}; + MFU_TT_NTAG_I2C_1K | MFU_TT_NTAG_I2C_2K | MFU_TT_NTAG_I2C_1K_PLUS | MFU_TT_NTAG_I2C_2K_PLUS | + MFU_TT_UL_AES))) { + uint8_t ulev1_signature[49] = {0x00}; status = ulev1_readSignature(ulev1_signature, sizeof(ulev1_signature)); if (status == -1) { PrintAndLogEx(ERR, "Error: tag didn't answer to READ SIGNATURE"); @@ -1903,7 +1938,9 @@ static int CmdHF14AMfUInfo(const char *Cmd) { return PM3_ESOFT; } if (status == 32) { - ulev1_print_signature(tagtype, card.uid, ulev1_signature, sizeof(ulev1_signature)); + ulev1_print_signature(tagtype, card.uid, ulev1_signature, 32); + } else if (status == 48) { + ulev1_print_signature(tagtype, card.uid, ulev1_signature, 48); } else { // re-select if (ul_auth_select(&card, tagtype, has_auth_key, authkeyptr, pack, sizeof(pack)) == PM3_ESOFT) { diff --git a/client/src/cmdhfmfu.h b/client/src/cmdhfmfu.h index f0057298d..7b1acf27a 100644 --- a/client/src/cmdhfmfu.h +++ b/client/src/cmdhfmfu.h @@ -88,6 +88,7 @@ uint32_t ul_ev1_otpgenA(uint8_t *uid); #define MFU_TT_MAGIC_1B (0x20000000ULL | MFU_TT_MAGIC) #define MFU_TT_MAGIC_NTAG (0x40000000ULL | MFU_TT_MAGIC) #define MFU_TT_NTAG_210u 0x80000000ULL +#define MFU_TT_UL_AES 0x100000000ULL #define MFU_TT_UL_MAGIC (MFU_TT_UL | MFU_TT_MAGIC) #define MFU_TT_UL_C_MAGIC (MFU_TT_UL_C | MFU_TT_MAGIC) // Don't forget to fill UL_TYPES_ARRAY and UL_MEMORY_ARRAY if new types are added From 2ba8c50b79316f10504697ea82422c1841647b1d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 7 Nov 2023 21:23:03 +0100 Subject: [PATCH 0734/1034] text --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a38c2edb..a4e681c44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf mfu info` - now detect MIFARE Ultralight AES (@iceman1001) - Changed `hf mf autopwn` - now supports multiple user supplied keys (@iceman1001) - Added `hf mf gchpwd` command for change Gen4 GTU card access password (@merlokk) - Added `--ms` option in `hw status` to specify the timeout of connection speed test (@wh201906) From 1beab7e07b63f91499a11cdce5d79a23563fcd70 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 7 Nov 2023 21:31:25 +0100 Subject: [PATCH 0735/1034] uncomment out --- tools/recover_pk.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/recover_pk.py b/tools/recover_pk.py index ea676fc22..2eb6358d6 100755 --- a/tools/recover_pk.py +++ b/tools/recover_pk.py @@ -165,11 +165,11 @@ def selftests(): "04B44A82D80F92", "A0868ECF26733D3C3C838D055968B4559F77693CC3E346E3A4741BC826801F8360FD88857BEC440AAD3A21153D64302DEB6F5ED40B15C3F7"], 'pk': "040F732E0EA7DF2B38F791BF89425BF7DCDF3EE4D976669E3831F324FF15751BD52AFF1782F72FF2731EEAD5F63ABE7D126E03C856FFB942AF"}, - {'name': "MIFARE Ultralight AES", +# {'name': "MIFARE Ultralight AES", # uses , - 'samples': ["04E163C2451390", "240284F3F2703C6911D2E7B4211A421378C3DE911F6E9DA120224508C72D4CDE58F3DBEE065C824BA595AB0352888516", - "042F6892457080", "1824472A4CC927C7CA423F2B75E8E15CD26F682D3D633B3E032879B11D2E7C0E5BDC720D7D4F3AB04DEC7229EC213C89"], - 'pk': "0453BF8C49B7BD9FE3207A91513B9C1D238ECAB07186B772104AB535F7D3AE63CF7C7F3DD0D169DA3E99E43C6399621A86"}, +# 'samples': ["04E163C2451390", "240284F3F2703C6911D2E7B4211A421378C3DE911F6E9DA120224508C72D4CDE58F3DBEE065C824BA595AB0352888516", +# "042F6892457080", "1824472A4CC927C7CA423F2B75E8E15CD26F682D3D633B3E032879B11D2E7C0E5BDC720D7D4F3AB04DEC7229EC213C89"], +# 'pk': "0453BF8C49B7BD9FE3207A91513B9C1D238ECAB07186B772104AB535F7D3AE63CF7C7F3DD0D169DA3E99E43C6399621A86"}, ] succeeded = True From c1ec770a692e94b24d7080d36a14997d210d6220 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 7 Nov 2023 21:41:42 +0100 Subject: [PATCH 0736/1034] changed "hf 14a info" to also give a hint for NTAG424 tags --- client/src/cmdhf14a.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index b86001f32..a39092fe8 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -1595,6 +1595,7 @@ typedef enum { MTEMV = 128, MTFUDAN = 256, MTISO18092 = 512, + MT424 = 1024, } nxp_mifare_type_t; // Based on NXP AN10833 Rev 3.6 and NXP AN10834 Rev 4.1 @@ -1723,7 +1724,7 @@ static int detect_nxp_card(uint8_t sak, uint16_t atqa, uint64_t select_status) { } printTag("NTAG 4xx"); - type |= MTDESFIRE; + type |= (MTDESFIRE | MT424); } } else if ((sak & 0x04) == 0x04) { printTag("Any MIFARE CL1"); @@ -1920,6 +1921,7 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { bool isEMV = false; bool isFUDAN = false; bool isISO18092 = false; + bool isNTAG424 = false; int nxptype = MTNONE; if (card.uidlen <= 4) { @@ -1929,6 +1931,7 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { isMifareDESFire = ((nxptype & MTDESFIRE) == MTDESFIRE); isMifarePlus = ((nxptype & MTPLUS) == MTPLUS); isMifareUltralight = ((nxptype & MTULTRALIGHT) == MTULTRALIGHT); + isNTAG424 = ((nxptype & MT424) == MT424); if ((nxptype & MTOTHER) == MTOTHER) isMifareClassic = true; @@ -1958,6 +1961,7 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { isMifareDESFire = ((nxptype & MTDESFIRE) == MTDESFIRE); isMifarePlus = ((nxptype & MTPLUS) == MTPLUS); isMifareUltralight = ((nxptype & MTULTRALIGHT) == MTULTRALIGHT); + isNTAG424 = ((nxptype & MT424) == MT424); if ((nxptype & MTOTHER) == MTOTHER) isMifareClassic = true; @@ -2461,6 +2465,11 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { */ } + if (isNTAG424) { + PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("hf ntag424 info") "`"); + } + + PrintAndLogEx(NORMAL, ""); DropField(); return select_status; From a9b3c0d9f4c206718e534b39a5b00058a0845651 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Wed, 8 Nov 2023 12:02:02 +0800 Subject: [PATCH 0737/1034] Add note for USB to UDP bridge app --- doc/termux_notes.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/doc/termux_notes.md b/doc/termux_notes.md index c4ab7fa9b..812719a75 100644 --- a/doc/termux_notes.md +++ b/doc/termux_notes.md @@ -17,9 +17,10 @@ * [ Troubleshooting ](#troubleshooting) * [ TCP/UDP bridge method ](#tcpudp-bridge-method) * [ USB connection ](#usb-connection) - * [ USB-UART bridge application ](#usb-uart-bridge-application) + * [ USB-UART bridge application for TCP to USB bridging](#usb-uart-bridge-application-for-tcp-to-usb-bridging) + * [ USB-UART Bridge Application for UDP to USB bridging](#usb-uart-bridge-application-for-udp-to-usb-bridging) * [ Bluetooth connection ](#bluetooth-connection) - * [ BT-UART bridge application ](#bt-uart-bridge-application) + * [ BT-UART bridge application for TCP to BT bridging](#bt-uart-bridge-application-for-tcp-to-bt-bridging) * [ TCP connection ](#tcp-connection) * [ UDP connection ](#udp-connection) * [Troubleshooting](#troubleshooting-1) @@ -155,6 +156,18 @@ Choose your registered PM3 device as 'Device B' -> 'Connect to USB device'. Ensure 'Retransmission' is set to 'both ways'. It is possible to record the config as autostart, cf 'Settings' -> 'Autostart setting'. +#### USB-UART Bridge Application for UDP to USB bridging +^[Top](#top) + +Install [this free SerialPipe app](https://f-droid.org/packages/io.github.wh201906.serialpipe/) on [F-Droid](https://f-droid.org/). +You can download the apk on this website without installing F-Droid. + +The app lets you choose the baudrate. Default value (115 200 baud) is fine. +Plug the PM3 in and click `Connect`. +Choose a random port not used by system (e.g. 4321) and click `Start Server`. + +Note: This app uses foreground service to keep the connection alive, so you can safely put it in the background without suspending the transmission. However, you will see a dummy notification in the status bar which is required for foreground service. + ### Bluetooth connection ^[Top](#top) From cd167b4632959b61197a097f63e37f92baab1e9b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 8 Nov 2023 13:50:16 +0100 Subject: [PATCH 0738/1034] added a python3 script that given a folder will try to extract all keys in the dump files and create a unique dictionary text file --- CHANGELOG.md | 1 + tools/pm3_gen_dictionary.py | 154 ++++++++++++++++++++++++++++++++++++ 2 files changed, 155 insertions(+) create mode 100755 tools/pm3_gen_dictionary.py diff --git a/CHANGELOG.md b/CHANGELOG.md index a4e681c44..7a7cf9112 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `pm3_gen_dictionary.py` - python script to extract and save all keys from MFC dump files. (@iceman1001) - Changed `hf mfu info` - now detect MIFARE Ultralight AES (@iceman1001) - Changed `hf mf autopwn` - now supports multiple user supplied keys (@iceman1001) - Added `hf mf gchpwd` command for change Gen4 GTU card access password (@merlokk) diff --git a/tools/pm3_gen_dictionary.py b/tools/pm3_gen_dictionary.py new file mode 100755 index 000000000..7234dee20 --- /dev/null +++ b/tools/pm3_gen_dictionary.py @@ -0,0 +1,154 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import pexpect +from colors import color +import re +import argparse +import os +import fnmatch + +''' +# pm3_gen_dictionary.py +# Christian Herrmann, Iceman, <iceman@icesql.se> 2023 +# version = 'v1.0.0' +# +# This code is copyright (c) Christian Herrmann, 2023, All rights reserved. +# For non-commercial use only, the following terms apply - for all other +# uses, please contact the author: +# +# This code is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This code is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# +# Dependencies: +# +# pip3 install pexpect ansicolors +# +# Usage: +# +# ./pm3_gen_dictionary.py --path folder --fn mydictionary.dic -v +# +# Info: +# Will search all dump files files in given folder and all its subfolders +# With the option to save found keys to a text file. +# +''' + +def escape_ansi(line): + ansi_escape = re.compile(r'(\x9B|\x1B\[)[0-?]*[ -/]*[@-~]') + return ansi_escape.sub('', str(line)).lower() + +def parse_keys(line): + """ + Parse keys from a line and return them as a set. + Keys must be 12 hex characters long + :param line: string containing keys. + :return: A set of keys read from the line + """ + keys = set() + key_regex = re.compile('[0-9a-fA-F]{12}') + + key = key_regex.findall(line) + if not key: + return [] + + try: + keys.add(key[0]) + keys.add(key[1]) + except AttributeError: + pass + return keys + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--path", help="Path to folder") + parser.add_argument("--fn", help="Dictionary file name") + parser.add_argument("-v", help="verbose output", action="store_true") + args = parser.parse_args() + + path = args.path + verbose = args.v + # Check if the directory exists + if not os.path.isdir(path): + print("The provided directory does not exist.") + return + + # start pm3 + child = pexpect.spawnu('./pm3 -o') + i = child.expect('pm3 --> ') + print("[+] Proxmark3 client open") + + + # MIFARE CLASSIC dumps + pattern = 'hf-mf-*-dump*' + + print(f'[+] Iterating all dumpfiles in... ', color(f'{path}', fg='cyan')) + # Walk through the directory + keys = set() + for root, dirs, files in os.walk(path): + for file in files: + # Check if the file name starts with the given prefix + if fnmatch.fnmatch(file, pattern): + if ":Zone.Identifier" in file: + continue + if ":OECustomProperty" in file: + continue + + f = os.path.join(root, file) + cmd = f'hf mf view -v -f {f}' + if verbose: + print(cmd) + + # Send proxmark3 commnad + child.sendline(cmd) + i = child.expect('pm3 --> ') + msg = escape_ansi(str(child.before)) + + # extract key table from msg + found = False + for line in msg.splitlines(): + + if found == False: + key_row = line.find('000 | 003') + if key_row > -1: + found = True + + if found: + foo = parse_keys(line) + if not foo: + found = False + continue + + # append found set + keys |= foo + + # shut down proxmark3 client connection + child.sendline('quit') + child.expect(pexpect.EOF) + print("[+] Proxmark3 client closed") + + # print all found keys + if verbose: + for k in keys: + print(f'{k}') + print("") + + # save keys + if args.fn: + print(f'[+] Writing keys to dictionary file... ', color(f'{args.fn}', fg='cyan')) + with open(args.fn, 'w') as f: + for k in keys: + f.write(f'{k}\n') + + return 0 + +if __name__ == "__main__": + main() From fdfe8869ae5cc08e2d265733b52b78c35b8f53a2 Mon Sep 17 00:00:00 2001 From: Oleg Moiseenko <807634+merlokk@users.noreply.github.com> Date: Thu, 9 Nov 2023 01:35:26 +0200 Subject: [PATCH 0739/1034] Update cmdhfmf.c Signed-off-by: Oleg Moiseenko <807634+merlokk@users.noreply.github.com> --- client/src/cmdhfmf.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 6a122ce4d..086609717 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7509,8 +7509,10 @@ static int CmdHF14AGen4Info(const char *cmd) { PrintAndLogEx(INFO, "Card type........... generic"); else if (resp[resplen - 2] == 0x02 && resp[resplen - 1] == 0xaa) PrintAndLogEx(INFO, "Card type........... limited functionality"); + else if (resp[resplen - 2] == 0x03 && resp[resplen - 1] == 0xa0) + PrintAndLogEx(INFO, "Card type........... old card version"); else if (resp[resplen - 2] == 0x06 && resp[resplen - 1] == 0xa0) - PrintAndLogEx(INFO, "Card type........... broken functionality"); + PrintAndLogEx(INFO, "Card type........... new card version"); else PrintAndLogEx(INFO, "Card type........... unknown %02x%02x", resp[resplen - 2], resp[resplen - 1]); } From a2f97761db05ff7d686cc1a183a8944697b8ae1e Mon Sep 17 00:00:00 2001 From: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> Date: Thu, 9 Nov 2023 07:33:51 +0300 Subject: [PATCH 0740/1034] Megafix There is no commit history. I'm sorry. I suck with git. Please see PR 2003, it has it. Signed-off-by: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> --- doc/magic_cards_notes.md | 696 ++++++++++++++++++++++++++++++++------- 1 file changed, 570 insertions(+), 126 deletions(-) diff --git a/doc/magic_cards_notes.md b/doc/magic_cards_notes.md index 41d818a3d..48605beb8 100644 --- a/doc/magic_cards_notes.md +++ b/doc/magic_cards_notes.md @@ -8,20 +8,29 @@ Useful docs: # Table of Contents - +- [Low frequency](#low-frequency) + * [T55xx](#t55xx) + * [EM4x05](#em4x05) + * [ID82xx series](#id82xx-series) + * [ID8265](#id8265) + * [ID-F8268](#id-f8268) + * [K8678](#k8678) + * [H series](#h-series) + * [H1](#h1) + * [H5.5 / H7](h55--h7) + * [i57 / i57v2](#i57--i57v2) - [ISO14443A](#iso14443a) * [Identifying broken ISO14443A magic](#identifying-broken-iso14443a-magic) - [MIFARE Classic](#mifare-classic) * [MIFARE Classic block0](#mifare-classic-block0) * [MIFARE Classic Gen1A aka UID](#mifare-classic-gen1a-aka-uid) * [MIFARE Classic Gen1B](#mifare-classic-gen1b) - * [MIFARE Classic Gen1A OTP/One Time Programming](#mifare-classic-gen1a-otpone-time-programming) + * [MIFARE Classic OTP2](#mifare-classic-otp2) * [MIFARE Classic DirectWrite aka Gen2 aka CUID](#mifare-classic-directwrite-aka-gen2-aka-cuid) * [MIFARE Classic DirectWrite, FUID version aka 1-write](#mifare-classic-directwrite-fuid-version-aka-1-write) - * [MIFARE Classic DirectWrite, UFUID version](#mifare-classic-directwrite-ufuid-version) - * [MIFARE Classic, other versions](#mifare-classic-other-versions) * [MIFARE Classic Gen3 aka APDU](#mifare-classic-gen3-aka-apdu) - * [MIFARE Classic Gen4 aka GDM](#mifare-classic-gen4-aka-gdm) + * [MIFARE Classic USCUID](#mifare-classic-uscuid) + * [MIFARE Classic, other versions](#mifare-classic-other-versions) * [MIFARE Classic Super](#mifare-classic-super) - [MIFARE Ultralight](#mifare-ultralight) * [MIFARE Ultralight blocks 0..2](#mifare-ultralight-blocks-02) @@ -30,6 +39,11 @@ Useful docs: * [MIFARE Ultralight EV1 DirectWrite](#mifare-ultralight-ev1-directwrite) * [MIFARE Ultralight C Gen1A](#mifare-ultralight-c-gen1a) * [MIFARE Ultralight C DirectWrite](#mifare-ultralight-c-directwrite) + * [UL series (RU)](#ul-series-ru) + * [UL-Y](#ul-y) + * [ULtra](#ultra) + * [UL-5](#ul-5) + * [UL, other chips](#ul-other-chips) - [NTAG](#ntag) * [NTAG213 DirectWrite](#ntag213-directwrite) * [NTAG21x](#ntag21x) @@ -37,12 +51,195 @@ Useful docs: * ["DESFire" APDU, 7b UID](#desfire-apdu-7b-uid) * ["DESFire" APDU, 4b UID](#desfire-apdu-4b-uid) - [ISO14443B](#iso14443b) - * [ISO14443B magic](#iso14443b-magic) + * [Tiananxin TCOS CPU card](#tiananxin-tcos-cpu-card) - [ISO15693](#iso15693) * [ISO15693 magic](#iso15693-magic) - [Multi](#multi) - * [Gen 4 GTU](#gen-4-gtu) + * [UMC](#umc) +- [Other](#other) + * [SID](#sid) + * [NSCK-II](#nsck-ii) +# Low frequency + +## T55xx +^[Top](#top) + +The temic T55xx/Atmel ATA5577 is the most commonly used chip for cloning LF RFIDs. + +A useful document can be found [here](https://github.com/RfidResearchGroup/proxmark3/blob/master/doc/T5577_Guide.md). + +### Characteristics + +* 28/24 bytes of user memory (without/with password) +* Universal output settings (data rate, modulation, etc) +* Password protection (4 bytes), usually "19920427" +* Lock bits per page +* Analog frontend setup +* Other names: + * 5577 + * 5200 (CN) + - Cut down version of T55xx chip (no analog frontend setup, no test mode support). + * H2 (RU) + - Seems to be renamed 5200 chip. + * RW125T5 (RU) +* Old variant "T5555" is hard to come across + +### Detect + +``` +[usb] pm3 --> lf search +... +[+] Chipset detection: T55xx +``` + +This will **not** work if you have a downlink mode other than fixed bit length! + +### Commands + +*See ATMEL ATA5577C datasheet for sending commands to chip* + +* **Do not mix "password read" and "regular write" commands! You risk potentially writing incorrect data. +* When replying, the chip will use the modulation and data rate specified in block 0. + +## EM4x05 +^[Top](#top) + +The EM4305 and EM4205 (and 4469/4569) chips are the 2nd most common used chips for cloning LF RFIDs. +It is also used by HID Global (but with a custom chip) for HIDProx credentials. + +### Characteristics + +* 36 bytes of user memory +* Output settings are limited (ASK only, FSK added on HID variant) +* Password protection (4 bytes), usually "84AC15E2" +* Lock page used +* Other names: + * H3 (RU) + * RW125EM (RU) + +### Detect + +``` +[usb] pm3 --> lf search +... +[+] Chipset detection: EM4x05 / EM4x69 +``` + +### Commands + +*See EM microelectronic EM4305 datasheet for sending commands to chip* + +## ID82xx series +^[Top](#top) + +These are custom chinese chips designed to clone EM IDs only. Often times, these are redesigned clones of Hitag chips. + +### ID8265 +^[Top](#top) + +This is the cheapest and most common ID82xx chip available. It is usually sold as T55xx on AliExpress, with excuses to use cloners. + +#### Characteristics + +* Chip is likely a Hitag μ (micro) +* Password protection (4b), usually "1AC4999C" +* Currently unimplemented in proxmark3 client +* Other names: + * ID8210 (CN) + * H-125 (CN) + * H5 (RU) + - The sales of "H5" have been ceased because "the chip was leaked". + +#### Detect + +``` +[usb] pm3 --> lf cmdread -d 50 -z 116 -o 166 -e W3000 -c W00011 -s 3000 +[usb] pm3 --> data plot +``` + +Check the green line of the plot. It must be a straight line at the end with no big waves. + +### ID-F8268 +^[Top](#top) + +This is an "improved" variant of ID82xx chips, bypassing some magic detection in China. + +#### Characteristics + +* Chip is likely a Hitag 1 +* Unsure whether password protection is used +* Currently unimplemeneted in proxmark3 client +* Other names: + - F8278 (CN) + - F8310 (CN) + +#### Detect + +``` +[usb] pm3 --> lf cmdread -d 50 -z 116 -o 166 -e W3000 -c W00110 -s 3000 +[usb] pm3 --> data plot +``` + +Check the green line of the plot. It must be a straight line at the end with no big waves. + +### K8678 +^[Top](#top) + +This is an "even better" chip, manufactured by Hyctec. + +#### Characteristics + +* Chip is likely a Hitag S256 +* Plain mode used, no password protection +* Currently unimplemented in proxmark3 client +* Memory access is odd (chip doesnt reply to memory access commands for unknown reason) + +#### Detect + +``` +[usb] pm3 --> lf cmdread -d 50 -z 116 -o 166 -e W3000 -c W00110 -s 3000 +[usb] pm3 --> data plot +``` + +Check the green line of the plot. It must be a straight line at the end with no big waves. + +## H series +^[Top](#top) + +These are chips sold in Russia, manufactured by iKey LLC. Often times these are custom. + +### H1 +^[Top](#top) + +Simplest EM ID cloning chip available. Officially discontinued. + +#### Characteristics + +* Currently almost all structure is unknown +* No locking or password protection + * "OTP" chip is same chip, but with EM ID of zeroes. Locked after first write +* Other names: + * RW64bit + * RW125FL + + +### H5.5 / H7 +^[Top](#top) + +First "advanced" custom chip with H naming. + +#### Characteristics + +* Currently all structure is unknown +* No password protection +* Only supported by Russian "TMD"/"RFD" cloners +* H7 is advertised to work with "Stroymaster" access control +* Setting ID to "3F0096F87E" will make the chip show up like T55xx + +### i57 / i57v2 + +\[ Chip is discontinued, no info \] # ISO14443A @@ -109,7 +306,8 @@ UID 7b: ## MIFARE Classic Gen1A aka UID ^[Top](#top) -aka MF ZERO +* Other names: + - ZERO (RU) ### Identify ^[Top](#top) @@ -267,16 +465,17 @@ hf 14a info * Read: `40(7)`, `30xx` * Write: `40(7)`, `A0xx`+crc, `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`+crc -## MIFARE Classic Gen1A OTP/One Time Programming +## MIFARE Classic OTP2 ^[Top](#top) -aka MF OTP 2.0 - Similar to Gen1A, but after first block 0 edit, tag no longer replies to 0x40 command. -Initial UID is 00000000 +### Characteristics -All bytes are 00 from factory wherever possible. +* Initial UID is 00000000 +* BCC: unknown +* SAK/ATQA: fixed +* All bytes are 00 from factory wherever possible. ### Identify ^[Top](#top) @@ -287,6 +486,7 @@ Only possible before personalization. hf 14a info ... [+] Magic capabilities : Gen 1a +[+] Prng detection: hard ``` ### Magic commands @@ -299,6 +499,11 @@ hf 14a info (also referred as MCT compatible by some sellers) +* Other names: + * MF-8 (RU) + * MF3 (RU) + - What's so special about this chip in particular..? + ### Identify ^[Top](#top) @@ -442,16 +647,19 @@ hf 14a reader ## MIFARE Classic DirectWrite, FUID version aka 1-write ^[Top](#top) -aka MF OTP - Same as MIFARE Classic DirectWrite, but block0 can be written only once. -Initial UID is AA55C396 +* Other names: + - OTP (RU) + +### Characteristics + +* Initial UID is AA55C396 ### Identify ^[Top](#top) -Only possible before personalization. +Only possible before personalization. *It is also possible after, but unknown how.* ``` hf 14a info @@ -459,28 +667,6 @@ hf 14a info [+] Magic capabilities : Write Once / FUID ``` -## MIFARE Classic DirectWrite, UFUID version -^[Top](#top) - -Same as MIFARE Classic DirectWrite, but block0 can be locked with special command. - -### Identify -^[Top](#top) - -**TODO** - -### Proxmark3 commands -^[Top](#top) - -To lock definitively block0: -``` -hf 14a raw -a -k -b 7 40 -hf 14a raw -k 43 -hf 14a raw -k -c e000 -hf 14a raw -k -c e100 -hf 14a raw -c 85000000000000000000000000000008 -``` - ## MIFARE Classic Gen3 aka APDU ^[Top](#top) @@ -554,85 +740,131 @@ hf 14a raw -s -c -t 2000 90F0CCCC10 041219c3219316984200e32000000000 hf 14a raw -s -c 90FD111100 ``` -## MIFARE Classic Gen4 aka GDM +## MIFARE Classic USCUID ^[Top](#top) -Tag has shadow mode enabled from start. -Meaning every write or changes to normal MFC memory is restored back to a copy from persistent memory after about 3 seconds -off rfid field. -Tag also seems to support Gen2 style, direct write, to block 0 to the normal MFC memory. +TLDR: These magic cards have a 16 byte long configuration page, which usually starts with 0x85. +All of the known tags using this, except for Ultralight tags, are listed here. -The persistent memory is also writable. For that tag uses its own backdoor commands. -for example to write, you must use a customer authentication byte, 0x80, to authenticate with an all zeros key, 0x0000000000. -Then send the data to be written. - -This tag has simular commands to the [UFUID](#mifare-classic-directwrite-ufuid-version) -This indicates that both tagtypes are developed by the same person. - -**OBS** - -When writing to persistent memory it is possible to write _bad_ ACL and perm-brick the tag. - -**OBS** - -It is possible to write a configuration that perma locks the tag, i.e. no more magic - -### Identify -^[Top](#top) - -``` -hf 14a info -... -[+] Magic capabilities : Gen 4 GDM -``` -### Magic commands -^[Top](#top) - -* Auth: `80xx`+crc -* Write: `A8xx`+crc, `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`+crc -* Read config: `E000`+crc -* Write config: `E100`+crc, `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`+crc +You cannot turn a Classic tag into an Ultralight and vice-versa! ### Characteristics ^[Top](#top) -* Have no knowledge in ATQA/SAK/BCC quirks or if there is a wipe, softbrick recover -* Its magic part seem to be three identified custom command. -* Auth command 0x80, with the key 0x0000000000, Write 0xA8 allows writing to persistent memory, Read 0xE0 which seems to return a configuration. This is unknown today what these bytes are. +* UID: 4/7 bytes +* ATQA: always read from block 0 +* SAK: read from backdoor or configuration +* BCC: read from memory, beware! +* ATS: no/unknown -Read config: -1. sending custom auth with all zeros key -2. send 0xE000, will return the configuration bytes. -`results: 850000000000000000005A5A00000008` +### Magic commands +^[Top](#top) +* Magic authentication: select, `8000+crc`, `[Crypto1 Auth: 000000000000]` + - Backdoor read: `38xx+crc` + - Backdoor write: `A8xx+crc`, `[16 bytes data]+crc` -Mapping of configuration bytes so far: + - Read configuration: `E000+crc` + - Write configuration: `E100+crc`; `[16 bytes data]+crc` +* Magic wakeup (A: 00): `40(7)`, `43` +* Magic wakeup (B: 85): `20(7)`, `23` + - Backdoor read main block: `30xx+crc` + - Backdoor write main block: `A0xx+crc`, `[16 bytes data]+crc` + - Read hidden block: `38xx+crc` + - Write hidden block: `A8xx+crc`, `[16 bytes data]+crc` + + - Read configuration: `E000+crc` + - Write configuration: `E100+crc` + + **DANGER** + - Set main memory and config to 00 `F000+crc` + - Set main memory and config to FF `F100+crc` + - Set main memory and config to 55 (no 0A response) `F600+crc` + - Set backdoor memory to 00 `F800+crc` + - Set backdoor memory to FF `F900+crc` + - Set backdoor memory to 55 (no 0A response) `FE00+crc` + +### USCUID configuration guide +^[Top](#top) + +1. Configuration ``` -850000000000000000005A5A00000008 - ^^ --> SAK +85000000000000000000000000000008 + ^^^^^^ ^^ ^^ >> ??? Mystery ??? +^^^^ >> Gen1a mode (works with bitflip) + ^^ >> Magic wakeup command (00 for 40-43; 85 for 20-23) + ^^ >> Block use of Key B if readable by ACL + ^^ >> CUID mode + ^^ >> MFC EV1 CL2 Perso config* + ^^ >> Shadow mode** + ^^ >> Magic Auth command + ^^ >> Static encrypted nonce mode + ^^ >> Signature sector + ^^ >> SAK*** + +To enable an option, set it to 5A. +* 5A - unfused F0. C3 - F0: CL2 UID; A5 - F1: CL2 UID with anticollision shortcut; 87 - F2: CL1 Random UID; 69 - F3: CL1 non-UID. Anything else is going to be ignored, and set as 4 bytes. +** Do not change the real ACL! Backdoor commands only acknowledge FF0780. To recover, disable this byte and issue regular write to sector trailer. +*** If perso byte is enabled, this SAK is ignored, and hidden SAK is used instead. +``` +* Gen1a mode: Allow using custom wakeup commands, like real gen1a chip, to run backdoor commands, as well as some extras. +* Magic wakeup command: Use different wakeup commands for entering Gen1a mode. A) 00 - 40(7), 43; B) 85 - 20(7), 23. +* Block use of Key B if readable by ACL: Per the MF1ICS50 datasheet, if Key B is readable by the ACL, using it shall give a Cmd Error 04. This option controls whether it happens or not. +* CUID mode: Allow direct write to block 0, instead of giving Cmd Error 04. +* MFC EV1 CL2 Perso config: When configured, the tag behaves like a real Mifare Classic EV1 7B UID tag, and reads UID from backdoor blocks. Otherwise, the tag acts like a 4 byte tag. +* Shadow mode: Writes to memory persisting in tag RAM. As soon as no power is left, the contents are restored to saved data. +* Magic Auth Command: Acknowledge command `8000` after selection, and call for Crypto1 auth with key `000000000000`. +* Static encrypted nonce mode: Use static encrypted nonces for authentication, making key recovery impossible. +* Signature sector: Acknowledge auth commands to sector 17, which is stored in backdoor sector 1. +* SAK: If perso byte is not set, after UID select, send this value. + + +2. Backdoor blocks ``` -Write config: -1. sending custom auth with all zeros key -2. send 0xE100 -3. send 16 bytes +Sector 0 +88 04 BD E5 D4 04 6A BB 5B 80 0A 08 44 00 00 00 - Block 0: Perso F0, F1 data +^^ ^^ ^^ ^^ - UID0 + ^^ - BCC0 + ^^ - SAK0 (0x04 to call for CL2) + ^^ ^^ ^^ ^^ - UID1 + ^^ - BCC1 + ^^ - SAK1 + ^^ ^^ ^^ ^^ - Unused +04 BD E5 6A 36 08 00 00 00 00 00 00 00 00 00 00 - Block 1: Perso F3 data +^^ ^^ ^^ ^^ - UID0 + ^^ - BCC0 + ^^ - SAK0 + ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ - Unused +Block 2: unused +Block 3: ignored (custom keys, acl; broken acl ignored - anticollision will still work) +Sector 1 +[Signature sector (#17) - needs config byte 13 (from 0) enabled to allow auth] +Sectors 2-15 +[Unused] +``` -**Warning** +### Variations +^[Top](#top) +| Factory configuration | Name | +| --- | --- | +| 850000000000000000005A5A00000008 | GDMIC | +| 850000000000005A0000005A5A5A0008 | UCUID | +| 8500000000005A00005A005A005A0008 | "7 byte hard" | +| 7AFF850102015A00005A005A005A0008 | M1-7B | +| 7AFF85000000000000FF000000000008 | FUID | +| 7AFF000000000000BAFA358500000008 | PFUID | +| 7AFF000000000000BAFA000000000008 | UFUID | -Example of configuration to Perma lock tag: -`85000000000000000000000000000008` +*Not all tags are the same!* UFUID and PFUID* are not full implementations of Magic85 - they only acknowledge the first 8 (except wakeup command) and last config byte(s). +*Read and write config commands are flipped -It is unknown what kind of block 0 changes the tag supports -* UID: 4b -* ATQA/SAK: unknown -* BCC: unknown -* ATS: none - -### Proxmark3 commands +#### Proxmark3 commands ^[Top](#top) ``` -# Write to persistent memory +Using magic auth: +# Write to persistent memory: hf mf gdmsetblk # Read configuration (0xE0): @@ -651,15 +883,14 @@ No implemented commands today **TODO** -* ZXUID, EUID, ICUID, KUID, HUID, RFUID ? -* Some cards exhibit a specific SAK=28 ?? +* ZXUID, EUID, ICUID, KUID? ## MIFARE Classic Super ^[Top](#top) It behaves like regular Mifare Classic but records reader auth attempts. -#### MIFARE Classic Super Gen1 +### MIFARE Classic Super Gen1 ^[Top](#top) Old type of cards, hard to obtain. They are DirectWrite, UID can be changed via 0 block or backdoor commands. @@ -684,19 +915,19 @@ Backdoor commands provided over APDU. Format: 👉 You can't change UID with backdoor command if incorrect data is written to the 0 sector trailer! -#### MIFARE Classic Super Gen1B +### MIFARE Classic Super Gen1B DirectWrite card, ATS unknown. Probably same as Gen1, except backdoor commands. Implementation: https://github.com/netscylla/super-card/blob/master/libnfc-1.7.1/utils/nfc-super.c -#### MIFARE Classic Super Gen2 +### MIFARE Classic Super Gen2 ^[Top](#top) New generation of cards, based on limited Gen4 chip. Emulates Gen1 backdoor protocol, but can store up to 7 different traces. -Card always answer `ff ff ff ff` to auth, so writing/reading it via Mifare protocol is impossible. +Card always answers `ff ff ff ff` as `at`, so reading/writing it via Mifare protocol is impossible. -UID is changeable via Gen4 backdoor write to 0 block. +UID is changeable via UMC backdoor write to 0 block. * UID: 4b and 7b versions * ATQA/SAK: fixed @@ -707,12 +938,53 @@ Gen4 commands available: ``` CF <passwd> 34 <1b length><0-16b ATS> // Configure ATS -CF <passwd> CC // Factory test, returns 00 00 00 02 AA +CF <passwd> CC // Version information, returns 00 00 00 02 AA CF <passwd> CD <1b block number><16b block data> // Backdoor write 16b block CF <passwd> CE <1b block number> // Backdoor read 16b block CF <passwd> FE <4b new_password> // Change password ``` +### MIFARE Classic Super Furui +^[Top](#top) + +#### Characteristics +^[Top](#top) + +* SAK/ATQA: play blindly the block0 bytes, beware! +* BCC: play blindly the block0 BCC bytes, beware! +* PRNG: hard + +**!!!WARNING!!!** This tag can die for no reason (no reply to WUPA/REQA). We don't know why this happens. + +#### Identify +^[Top](#top) + +``` +[usb] pm3 --> hf 14a raw -sct 250 AAA500000000000000000000000000000000 +[+] 90 00 +``` + +#### Magic commands +^[Top](#top) + +* Configure: `AAA5[16 byte config]`+crc +* Write block 0: `AAA4[4b UID][1b BCC][1b SAK][2b ATQA reversed]0000000000000000`+crc +* Recover trace: `AAA8[00/01][00-08]`+crc + +Caution: tag does not append CRC to magic responses! + +Please use config as 00 bytes. + +Parsing traces: +``` +44 33 22 11 03 61 08 68 7A C7 4B 62 43 A6 11 6F 64 F3 +^^ ^^ ^^ ^^ -- UID + ^^ ^^ -- auth command, reversed + ^^ ^^ ^^ ^^ -- Auth (nt) + ^^ ^^ ^^ ^^ -- Auth (nr) + ^^ ^^ ^^ ^^ -- Auth (ar) +``` + ### Identify ^[Top](#top) @@ -724,6 +996,15 @@ hf 14a info [+] Magic capabilities : Super card (Gen ?) ``` +### Proxmark3 commands + +``` +[usb] pm3 --> hf mf supercard +... + +[usb] pm3 --> hf mf supercard --furui +... +``` # MIFARE Ultralight ^[Top](#top) @@ -746,6 +1027,7 @@ Int is internal, typically 0x48 Anticol shortcut (CL1/3000) is supported for UL, ULC, NTAG except NTAG I2C +Some cards have a password: `B6AA558D`. Usually "copykey" chips. ## MIFARE Ultralight Gen1A ^[Top](#top) @@ -874,8 +1156,6 @@ See `--uid` and `--full` ## MIFARE Ultralight EV1 DirectWrite ^[Top](#top) -aka UL2 - Similar to MFUL DirectWrite ### Identify @@ -957,11 +1237,6 @@ hf 14a info * ATS: 0A78008102DBA0C119402AB5 * Anticol shortcut (CL1/3000): fails -**TODO** - -* UL-X, UL-Y, UL-Z, ULtra, UL-5 ? - - # NTAG ^[Top](#top) @@ -1027,6 +1302,78 @@ Anticol shortcut (CL1/3000): fails script run hf_mfu_magicwrite -h ``` +## UL series (RU) +^[Top](#top) + +Custom chips, manufactured by iKey LLC for cloning Ultralight tags. + +### UL-Y +^[Top](#top) + +Ultralight magic, 16 pages. Recommended for Vizit RF3.1 with markings "3.1" or "4.1". +Behavior: allows writes to page 0-2. + +#### Identify +^[Top](#top) + +``` +hf mfu rdbl --force -b 16 +hf 14a raw -sct 250 60 +``` +If tag replies with +`Cmd Error: 00` +`00 00 00 00 00 00 00 00` +then it is UL-Y. + +### ULtra +^[Top](#top) + +Ultralight EV1 magic; 41 page. Recommended for Vizit RF3.1 with 41 page. +Behavior: allows writes to page 0-2. + +#### Identify +^[Top](#top) + +``` +hf mfu info +... +[=] TAG IC Signature: 0000000000000000000000000000000000000000000000000000000000000000 +[=] --- Tag Version +[=] Raw bytes: 00 34 21 01 01 00 0E 03 +``` + +Remember that this is not a reliable method of identification, as it interferes with locked [UL-5](#mifare-ul-5). + +### UL-5 +^[Top](#top) + +Ultralight EV1 magic; 41 page. Recommended for Vizit RF3.1 with 41 page and if [ULtra](#mifare-ultra) has failed. + +Behavior: similar to Ultra, but after editing page 0, tag becomes original Mifare Ultralight EV1. + +**WARNING!** When using UL-5 to clone, write UID pages in inverse (from 2 to 0) and do NOT make mistakes! This tag does not allow reversing one-way actions (OTP page, lock bits). + +#### Identify +^[Top](#top) + +``` +hf mfu info +[=] UID: AA 55 C3 A1 30 61 80 +TAG IC Signature: 0000000000000000000000000000000000000000000000000000000000000000 +[=] --- Tag Version +[=] Raw bytes: 00 34 21 01 01 00 0E 03 +``` + +After personalization it is not possible to identify UL-5. + +Some chips have UID of `AA 55 C3 A4 30 61 80`. + +### UL, other chips + +**TODO** + +UL-X, UL-Z - ? + # DESFire ^[Top](#top) @@ -1084,7 +1431,8 @@ Android compatible ### Characteristics ^[Top](#top) -* ATQA: 0008 ??? This is not DESFire, 0008/20 doesn't match anything +* ATQA: 0008 + * This is FM1208-9, NOT DESFire! * SAK: 20 * ATS: 0675338102005110 or 06757781028002F0 @@ -1129,12 +1477,37 @@ hf 14a info # ISO14443B ^[Top](#top) -## ISO14443B magic +## Tiananxin TCOS CPU card ^[Top](#top) -No such card is available. +This is a card sold on Taobao for testing readers. +ISO14443-4 compliant. -Some vendor allow to specify an ID (PUPI) when ordering a card. +### Identify + +``` +hf 14a apdu -s 90B2900000 // Get Card OS version +>>> 90 B2 90 00 00 +<<< 54 43 4F 53 20 56 31 2E 34 2E 30 90 00 | TCOS V1.4.0.. +``` + +### Magic commands + +All commands in APDU. + +``` +CL IN P1 P2 Lc Data +90 F4 CC CC 01 [..1 ] // Change protocol used (1: ISO14443 [AA - type A, BB - type B]) +90 F6 CC CC 01 [TA1 ] // Change TA1 value (transfer speed) +90 F8 CC CC 01 [..1 ] // Use random UID/PUPI value (1: FF: static, AB: random) +90 F8 DD DD 01 [..1 ] // Set UID length (1: bytes in UID (04, 07, 0A for 4, 7, 10 bytes accordingly)) +90 F8 EE EE 0B [... ] // Set UID/PUPI value (FF+enter UID value here). To clear, use Lc=01; data=00. +90 FA CC CC 01 [FSCI] // Set FSCI (1: value 0-8) +90 FC CC CC 01 [SFGI] // Set SFGI (DO NOT SET TOO HIGH!) (1: value 0-E) +90 FE CC CC 01 [FWI ] // Set FWI (DO NOT SET BELOW 4!!!) (value 0-E) +``` + +More commands to follow. Be careful with some. # ISO15693 ^[Top](#top) @@ -1164,7 +1537,7 @@ script run hf_15_magic -u E004013344556677 # Multi ^[Top](#top) -## Gen 4 GTU +## UMC ^[Top](#top) A.k.a ultimate magic card, most promenent feature is shadow mode (GTU) and optional password protected backdoor commands. @@ -1197,6 +1570,8 @@ Can emulate MIFARE Classic, Ultralight/NTAG families, 14b UID & App Data 👉 **TODO** If the password is not default, Tag doesn't get identified correctly by latest Proxmark3 client (it might get mislabeled as MFC Gen2/CUID, Gen3/APDU or NTAG21x Modifiable, depending on configured UID/ATQA/SAK/ATS) +👉 **TODO** Using C6 command can change config due to a bug in some cards. CC should be used instead. + ``` hf 14a info [+] Magic capabilities : Gen 4 GTU @@ -1289,7 +1664,7 @@ CF <passwd> 69 <00-01> // (De)Activate Ultralight mode CF <passwd> 6A <00-03> // Select Ultralight mode CF <passwd> 6B <1b> // Set Ultralight and M1 maximum read/write sectors CF <passwd> C6 // Dump configuration -CF <passwd> CC // Factory test, returns 6666 for generic card, 02AA for limited functionality card and 06A0 for broken functionality card +CF <passwd> CC // Version info, returns `00 00 00 [03 A0 (old) / 06 A0 (new) ]` CF <passwd> CD <1b block number><16b block data> // Backdoor write 16b block CF <passwd> CE <1b block number> // Backdoor read 16b block CF <passwd> CF <1b param> // (De)Activate direct write to block 0 @@ -1304,10 +1679,10 @@ Default `<passwd>`: `00000000` * UID: 4b, 7b and 10b versions * ATQA/SAK: changeable -* BCC: auto +* BCC: computed * ATS: changeable, can be disabled -* Card Type: changeable -* Shadow mode: GTU +* Card Type: changeable +* Shadow mode: GTU * Backdoor password mode ### Proxmark3 commands @@ -1446,9 +1821,9 @@ Ultralight mode, 10b UID ### Set 14443B UID and ATQB ^[Top](#top) ^^[Gen4](#g4top) -UID and ATQB are configured according to block0 with a (14a) backdoor write. - -UID size is always 4 bytes. +* UID and ATQB are configured according to block0 with a (14a) backdoor write. +* UID size is always 4 bytes. +* 14B will show up only on new cards. Example: ``` @@ -1758,3 +2133,72 @@ hf mfu wrbl -b 250 -d 00040402 --force hf mfu wrbl -b 251 -d 01001303 --force hf mfu info ``` + +# Other +^[Top](#top) + +These are chips to clone other ICs. Usually the originals are only sold in China. + +## SID +^[Top](#top) + +- Magic tag for Fudan FM1208-9 chips + +### Characteristics +^[Top](#top) +- ISO14443-A tag +- ATQA-SAK: `0008`-`20` +- ATS: `10 78 80 A0 02 00 9D 46 16 40 00 A3 [UID]` +- Compared to real FM1208 chip: + - CLA byte is ignored + - Command parsing is irregular (some replies are wrong) + +### Magic commands +^[Top](#top) + +**WARNING!!!** Risk of bricking tag - cause is unknown +- Below you can find a list of all INS bytes not present on real FM1208 chip, and what their output is when executed (P1, P2, Lc = 00) + - Results may vary between chips: +``` +INS | RES +0A | 44454641554C540000002018112840000000000000000000000000000000000000000000000000000000400000000000 +3B | 00000000001C0EF90000000000000000000000000000000000000000000000002000000000C09040009002840000000000000000000000000000000000006C0FC08700EB1A9F1BA01801010019000000000000000000000000000090000000000000094B066600000000007D000000000000000000000000000000003B000000107880A002009D46164000A3CA81E15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +3C* | 0000 +3D | 6700 +7D | Tag does not reply (if 0<Lc<=15, RES=6700) +CD | 6A82 +D5 | 9000 +DD | 6700 +DE | 6700 +DF | 9000 +EE | 6700 +F0 | 6A82 +FB | 6A82 + +* - DO NOT EXECUTE THIS INSTRUCTION!!! After 2nd execution tag will brick (No reply to REQA/WUPA). Very likely you need to add extra data which we do not know +``` + +## NSCK-II +^[Top](#top) + +- Magic tag for "NSC/BS-CPU" + +### Characteristics +^[Top](#top) +- Programming is done via ISO14443-A (but not sure how to modulate). Original tag is working somewhere hidden from proxmark. +- ATQA-SAK: `0044`-`20` +- ATS: `05 72 F7 60 02` +- Communications encrypted(?) + - When writing with copykey, after RATS, this communication takes place (NSC ID programmed: `5800000000`, tag UID: `1D94CE25840000`): + ``` + >>> 54 03 8A BC DF C1 [CRC] + <<< A2 [CRC] + >>> 54 04 57 AA 84 DD [CRC] + <<< A2 [CRC] + ``` + +### Magic commands +^[Top](#top) + +- Write NSC UID: `54 [part 1b] [data 4b enc] [CRC]` + - Tag replies: `A2 [CRC]` From a561fd431753f5f5308fe2e29ce40d4b318ef5fd Mon Sep 17 00:00:00 2001 From: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> Date: Thu, 9 Nov 2023 07:51:52 +0300 Subject: [PATCH 0741/1034] Update CHANGELOG.md There's nothing to describe, I think. Signed-off-by: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a7cf9112..5d1c6ff89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,6 +53,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Modified `hf iclass configcard` to only support online mode (@Antiklesys) - Modified `hf iclass configcard` command to generate config cards without a cardhelper module by porting the contents of blocks 6 & 7 from nfc-iclass (@Antiklesys) - Fixed `hf iclass info` command showing incorrectly in offline mode (@Antiklesys) + - The "doc/magic_cards_notes.md" file has been rebuilt, filled up, and so on. (@team-orangeBlue) ## [Raccoon.4.17140][2023-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) From 23473714c382bba8ba1fcc140df6da8b292acb09 Mon Sep 17 00:00:00 2001 From: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> Date: Thu, 9 Nov 2023 08:03:10 +0300 Subject: [PATCH 0742/1034] Some UMC updates They're 06A0 specific, and I must add them. Signed-off-by: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> --- doc/magic_cards_notes.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/magic_cards_notes.md b/doc/magic_cards_notes.md index 48605beb8..ab125ffb6 100644 --- a/doc/magic_cards_notes.md +++ b/doc/magic_cards_notes.md @@ -1932,6 +1932,7 @@ hf 14a raw -s -c -t 1000 CF<passwd>32<1b param> * `<param>` * `00`: pre-write, shadow data can be written * `01`: restore mode + - WARNING: new UMC (06a0) cards return garbage data when using 01, please use 04! * `02`: disabled * `03`: disabled, high speed R/W mode for Ultralight? @@ -1987,7 +1988,9 @@ hf 14a raw -s -c -t 1000 CF00000000CF01 ### Change backdoor password ^[Top](#top) ^^[Gen4](#g4top) -All backdoor operations are protected by a password. If password is forgotten, the card can't be recovered. Default password is `00000000`. +All backdoor operations are protected by a password. If password is forgotten, it can't be recovered. Default password is `00000000`. + +WARNING: new UMC (06A0) returns 6300 when issuing password change command. Please write the password using F0 and entering the full configuration, but with the new password. Change password: ``` From a361118279b64f51a813e2551849446d820b97c7 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 10 Nov 2023 00:29:46 +0100 Subject: [PATCH 0743/1034] fixed checks where the decoded crypto stream compared, added hard coded default keys check, seperate old vs ev1 recovery, simplified thread loops.\nall samples works as expected again. --- tools/mf_nonce_brute/README.md | 2 +- tools/mf_nonce_brute/mf_nonce_brute.c | 395 ++++++++++++++++++-------- 2 files changed, 277 insertions(+), 120 deletions(-) diff --git a/tools/mf_nonce_brute/README.md b/tools/mf_nonce_brute/README.md index 9dde9b5da..440474e73 100644 --- a/tools/mf_nonce_brute/README.md +++ b/tools/mf_nonce_brute/README.md @@ -108,7 +108,7 @@ This one uses the encrypted tagnonce `nt`=`5a920d85` and the encrypted cmd `3e70 ``` Full output: ``` -$ ./mf_nonce_brute 9c599b32 5a920d85 1011 98d76b77 d6c6e870 0000 ca7e0b63 0111 3e709c8a +./mf_nonce_brute 9c599b32 5a920d85 1011 98d76b77 d6c6e870 0000 ca7e0b63 0111 3e709c8a Mifare classic nested auth key recovery. Phase 1. ------------------------------------------------- uid: 9c599b32 diff --git a/tools/mf_nonce_brute/mf_nonce_brute.c b/tools/mf_nonce_brute/mf_nonce_brute.c index 2491c502d..0c897a189 100644 --- a/tools/mf_nonce_brute/mf_nonce_brute.c +++ b/tools/mf_nonce_brute/mf_nonce_brute.c @@ -20,6 +20,7 @@ #define _CYAN_(s) "\x1b[36m" s AEND #define odd_parity(i) (( (i) ^ (i)>>1 ^ (i)>>2 ^ (i)>>3 ^ (i)>>4 ^ (i)>>5 ^ (i)>>6 ^ (i)>>7 ^ 1) & 0x01) +#define ARRAYLEN(x) (sizeof(x) / sizeof((x)[0])) // a global mutex to prevent interlaced printing from different threads pthread_mutex_t print_lock; @@ -68,6 +69,66 @@ uint8_t cmds[8][2] = { {MIFARE_CMD_TRANSFER, 0} }; +static const uint64_t g_mifare_default_keys[] = { + 0xffffffffffff, // Default key (first key used by program if no user defined key) + 0xa0a1a2a3a4a5, // NFCForum MAD key + 0xd3f7d3f7d3f7, // NDEF public key + 0x4b791bea7bcc, // MFC EV1 Signature 17 B + 0x5C8FF9990DA2, // MFC EV1 Signature 16 A + 0xD01AFEEB890A, // MFC EV1 Signature 16 B + 0x75CCB59C9BED, // MFC EV1 Signature 17 A + 0xfc00018778f7, // Public Transport + 0x6471a5ef2d1a, // SimonsVoss + 0x4E3552426B32, // ID06 + 0x6A1987C40A21, // Salto + 0xef1232ab18a0, // Schlage + 0x3B7E4FD575AD, // + 0xb7bf0c13066e, // Gallagher + 0x135b88a94b8b, // Saflok + 0x2A2C13CC242A, // Dorma Kaba + 0x5a7a52d5e20d, // Bosch + 0x314B49474956, // VIGIK1 A + 0x564c505f4d41, // VIGIK1 B + 0x021209197591, // BTCINO + 0x484558414354, // Intratone + 0xEC0A9B1A9E06, // Vingcard + 0x66b31e64ca4b, // Vingcard + 0x97F5DA640B18, // Bangkok metro key + 0xA8844B0BCA06, // Metro Valencia key + 0xE4410EF8ED2D, // Armenian metro + 0x857464D3AAD1, // HTC Eindhoven key + 0x08B386463229, // troika + 0xe00000000000, // icopy + 0x199404281970, // NSP A + 0x199404281998, // NSP B + 0x6A1987C40A21, // SALTO + 0x7F33625BC129, // SALTO + 0x484944204953, // HID + 0x204752454154, // HID + 0x3B7E4FD575AD, // HID + 0x11496F97752A, // HID + 0x3E65E4FB65B3, // Gym + 0x000000000000, // Blank key + 0xb0b1b2b3b4b5, + 0xaabbccddeeff, + 0x1a2b3c4d5e6f, + 0x123456789abc, + 0x010203040506, + 0x123456abcdef, + 0xabcdef123456, + 0x4d3a99c351dd, + 0x1a982c7e459a, + 0x714c5c886e97, + 0x587ee5f9350f, + 0xa0478cc39091, + 0x533cb6c723f6, + 0x8fd0a4f256e9, + 0x0000014b5c31, + 0xb578f38a5c61, + 0x96a301bce267, +}; + + //static int global_counter = 0; static int global_found = 0; static int global_found_candidate = 0; @@ -202,9 +263,10 @@ static uint16_t parity_from_err(uint32_t data, uint16_t par_err) { } static uint16_t xored_bits(uint16_t nt_par, uint32_t ntenc, uint16_t ar_par, uint32_t arenc, uint16_t at_par, uint32_t atenc) { - uint16_t xored = 0; + uint16_t xored = 0; uint8_t par; + //1st (1st nt) par = (nt_par >> 12) & 1; xored |= par ^ ((ntenc >> 16) & 1); @@ -258,63 +320,73 @@ static uint16_t xored_bits(uint16_t nt_par, uint32_t ntenc, uint16_t ar_par, uin } static bool candidate_nonce(uint32_t xored, uint32_t nt, bool ev1) { - uint8_t byte, check; + uint8_t byte; if (!ev1) { - //1st (1st nt) + // 1st (1st nt) byte = (nt >> 24) & 0xFF; - check = odd_parity(byte) ^ ((nt >> 16) & 1) ^ ((xored >> 9) & 1); - if (check) return false; + if (odd_parity(byte) ^ ((nt >> 16) & 1) ^ ((xored >> 9) & 1)) { + return false; + } - //2nd (2nd nt) + // 2nd (2nd nt) byte = (nt >> 16) & 0xFF; - check = odd_parity(byte) ^ ((nt >> 8) & 1) ^ ((xored >> 8) & 1); - if (check) return false; + if (odd_parity(byte) ^ ((nt >> 8) & 1) ^ ((xored >> 8) & 1)) { + return false; + } } - //3rd (3rd nt) + // 3rd (3rd nt) byte = (nt >> 8) & 0xFF; - check = odd_parity(byte) ^ (nt & 1) ^ ((xored >> 7) & 1); - if (check) return false; + if (odd_parity(byte) ^ (nt & 1) ^ ((xored >> 7) & 1)) { + return false; + } uint32_t ar = prng_successor(nt, 64); - //4th (1st ar) + // 4th (1st ar) byte = (ar >> 24) & 0xFF; - check = odd_parity(byte) ^ ((ar >> 16) & 1) ^ ((xored >> 6) & 1); - if (check) return false; + if (odd_parity(byte) ^ ((ar >> 16) & 1) ^ ((xored >> 6) & 1)) { + return false; + } - //5th (2nd ar) + // 5th (2nd ar) byte = (ar >> 16) & 0x0FF; - check = odd_parity(byte) ^ ((ar >> 8) & 1) ^ ((xored >> 5) & 1); - if (check) return false; + if (odd_parity(byte) ^ ((ar >> 8) & 1) ^ ((xored >> 5) & 1)) { + return false; + } - //6th (3rd ar) + // 6th (3rd ar) byte = (ar >> 8) & 0xFF; - check = odd_parity(byte) ^ (ar & 1) ^ ((xored >> 4) & 1); - if (check) return false; + if (odd_parity(byte) ^ (ar & 1) ^ ((xored >> 4) & 1)) { + return false; + } uint32_t at = prng_successor(nt, 96); - //7th (4th ar) + // 7th (4th ar) byte = ar & 0xFF; - check = odd_parity(byte) ^ ((at >> 24) & 1) ^ ((xored >> 3) & 1); - if (check) return false; + if (odd_parity(byte) ^ ((at >> 24) & 1) ^ ((xored >> 3) & 1)) { + return false; + } - //8th (1st at) + // 8th (1st at) byte = (at >> 24) & 0xFF; - check = odd_parity(byte) ^ ((at >> 16) & 1) ^ ((xored >> 2) & 1); - if (check) return false; + if (odd_parity(byte) ^ ((at >> 16) & 1) ^ ((xored >> 2) & 1)) { + return false; + } - //9th (2nd at) + // 9th (2nd at) byte = (at >> 16) & 0xFF; - check = odd_parity(byte) ^ ((at >> 8) & 1) ^ ((xored >> 1) & 1) ; - if (check) return false; + if (odd_parity(byte) ^ ((at >> 8) & 1) ^ ((xored >> 1) & 1)) { + return false; + } - //10th (3rd at) + // 10th (3rd at) byte = (at >> 8) & 0xFF; - check = odd_parity(byte) ^ (at & 1) ^ (xored & 1); - if (check) return false; + if (odd_parity(byte) ^ (at & 1) ^ (xored & 1)) { + return false; + } return true; } @@ -322,27 +394,34 @@ static bool candidate_nonce(uint32_t xored, uint32_t nt, bool ev1) { static bool checkValidCmd(uint32_t decrypted) { uint8_t cmd = (decrypted >> 24) & 0xFF; for (int i = 0; i < 8; ++i) { - if (cmd == cmds[i][0]) + if (cmd == cmds[i][0]) { return true; + } } return false; } static bool checkValidCmdByte(uint8_t *cmd, uint16_t n) { +// if we don't have enough data then this might be a false positive - bool ok = false; - if (cmd == NULL) + if (cmd == NULL) { return false; + } + for (int i = 0; i < 8; ++i) { if (cmd[0] == cmds[i][0]) { - if (n >= 4) - ok = CheckCrc14443(CRC_14443_A, cmd, 4); + int res = 0; - if (cmds[i][1] > 0 && n >= cmds[i][1]) - ok = CheckCrc14443(CRC_14443_A, cmd + 4, cmds[i][1]); + if (n >= 4) { + res = CheckCrc14443(CRC_14443_A, cmd, 4); + } - if (ok) { + if (res == 0 && cmds[i][1] > 0 && n >= cmds[i][1]) { + res = CheckCrc14443(CRC_14443_A, cmd, cmds[i][1]); + } + + if (res) { return true; } } @@ -360,9 +439,60 @@ static bool checkCRC(uint32_t decrypted) { return CheckCrc14443(CRC_14443_A, data, sizeof(data)); } +static void *check_default_keys(void *arguments) { + struct thread_key_args *args = (struct thread_key_args *) arguments; + uint8_t local_enc[args->enc_len]; + memcpy(local_enc, args->enc, args->enc_len); + + for (uint8_t i = 0; i < ARRAYLEN(g_mifare_default_keys); i++) { + + uint64_t key = g_mifare_default_keys[i]; + if (args->part_key != (key & 0xffffffff)) { + continue; + } + + // Init cipher with key + struct Crypto1State *pcs = crypto1_create(key); + + // NESTED decrypt nt with help of new key + crypto1_word(pcs, args->nt_enc ^ args->uid, 0); + crypto1_word(pcs, args->nr_enc, 1); + crypto1_word(pcs, 0, 0); + crypto1_word(pcs, 0, 0); + + // decrypt bytes + uint8_t dec[args->enc_len]; + for (int j = 0; j < args->enc_len; j++) { + dec[j] = crypto1_byte(pcs, 0x00, 0) ^ local_enc[j]; + } + crypto1_destroy(pcs); + + // check if cmd exists + bool res = checkValidCmdByte(dec, args->enc_len); + if (args->enc_len > 4) { + res |= checkValidCmdByte(dec + 4, args->enc_len -4); + } + + if (res == false) { + continue; + } + + __sync_fetch_and_add(&global_found, 1); + + pthread_mutex_lock(&print_lock); + printf("\nFound a default key!\n"); + printf("enc: %s\n", sprint_hex_inrow_ex(local_enc, args->enc_len, 0)); + printf("dec: %s\n", sprint_hex_inrow_ex(dec, args->enc_len, 0)); + printf("\nValid Key found [ " _GREEN_("%012" PRIx64) " ]\n\n", key); + pthread_mutex_unlock(&print_lock); + break; + } + free(args); + return NULL; +} + static void *brute_thread(void *arguments) { - //int shift = (int)arg; struct thread_args *args = (struct thread_args *) arguments; struct Crypto1State *revstate = NULL; @@ -373,11 +503,10 @@ static void *brute_thread(void *arguments) { uint32_t nt; // current tag nonce uint32_t p64 = 0; - uint32_t count; // TC == 4 ( // threads calls 0 ev1 == false // threads calls 0,1,2 ev1 == true - for (count = args->idx; count <= 0xFFFF; count += thread_count - 1) { + for (uint32_t count = args->idx; count <= 0xFFFF; count += thread_count) { if (__atomic_load_n(&global_found, __ATOMIC_ACQUIRE) == 1) { break; @@ -385,8 +514,9 @@ static void *brute_thread(void *arguments) { nt = count << 16 | prng_successor(count, 16); - if (candidate_nonce(args->xored, nt, args->ev1) == false) + if (candidate_nonce(args->xored, nt, args->ev1) == false) { continue; + } p64 = prng_successor(nt, 64); ks2 = ar_enc ^ p64; @@ -394,12 +524,16 @@ static void *brute_thread(void *arguments) { revstate = lfsr_recovery64(ks2, ks3); ks4 = crypto1_word(revstate, 0, 0); - if (ks4 != 0) { - - // lock this section to avoid interlacing prints from different threats - pthread_mutex_lock(&print_lock); - if (args->ev1) - printf("\n**** Possible key candidate ****\n"); + if (ks4 == 0) { + free(revstate); + continue; + } + + // lock this section to avoid interlacing prints from different threats + pthread_mutex_lock(&print_lock); + if (args->ev1) { + printf("\n---> " _YELLOW_(" Possible key candidate")" <---\n"); + } #if 0 printf("thread #%d idx %d %s\n", args->thread, args->idx, (args->ev1) ? "(Ev1)" : ""); @@ -408,54 +542,53 @@ static void *brute_thread(void *arguments) { printf("ks3:%08x\n", ks3); printf("ks4:%08x\n", ks4); #endif - if (cmd_enc) { - uint32_t decrypted = ks4 ^ cmd_enc; - printf("CMD enc( %08x )\n", cmd_enc); - printf(" dec( %08x ) ", decrypted); + if (cmd_enc) { + uint32_t decrypted = ks4 ^ cmd_enc; + printf("CMD enc( %08x )\n", cmd_enc); + printf(" dec( %08x ) ", decrypted); - // check if cmd exists - uint8_t isOK = checkValidCmd(decrypted); - if (isOK == false) { - printf(_RED_("<-- not a valid cmd\n")); - pthread_mutex_unlock(&print_lock); - free(revstate); - continue; - } - - // Add a crc-check. - isOK = checkCRC(decrypted); - if (isOK == false) { - printf(_RED_("<-- not a valid crc\n")); - pthread_mutex_unlock(&print_lock); - free(revstate); - continue; - } else { - printf("<-- valid cmd\n"); - } + // check if cmd exists + uint8_t isOK = checkValidCmd(decrypted); + if (isOK == false) { + printf(_RED_("<-- not a valid cmd\n")); + pthread_mutex_unlock(&print_lock); + free(revstate); + continue; } - lfsr_rollback_word(revstate, 0, 0); - lfsr_rollback_word(revstate, 0, 0); - lfsr_rollback_word(revstate, 0, 0); - lfsr_rollback_word(revstate, nr_enc, 1); - lfsr_rollback_word(revstate, uid ^ nt, 0); - crypto1_get_lfsr(revstate, &key); - - if (args->ev1) { - // if it was EV1, we know for sure xxxAAAAAAAA recovery - printf("\nKey candidate [ " _YELLOW_("....%08" PRIx64)" ]\n\n", key & 0xFFFFFFFF); - __sync_fetch_and_add(&global_found_candidate, 1); + // Add a crc-check. + isOK = checkCRC(decrypted); + if (isOK == false) { + printf(_RED_("<-- not a valid crc\n")); + pthread_mutex_unlock(&print_lock); + free(revstate); + continue; } else { - printf("\nKey candidate [ " _GREEN_("....%08" PRIx64) " ]\n\n", key & 0xFFFFFFFF); - __sync_fetch_and_add(&global_found, 1); + printf("<-- " _GREEN_("valid cmd") "\n"); } - //release lock - pthread_mutex_unlock(&print_lock); - __sync_fetch_and_add(&global_candidate_key, key); - free(revstate); - break; } + + lfsr_rollback_word(revstate, 0, 0); + lfsr_rollback_word(revstate, 0, 0); + lfsr_rollback_word(revstate, 0, 0); + lfsr_rollback_word(revstate, nr_enc, 1); + lfsr_rollback_word(revstate, uid ^ nt, 0); + crypto1_get_lfsr(revstate, &key); free(revstate); + + if (args->ev1) { + // if it was EV1, we know for sure xxxAAAAAAAA recovery + printf("\nKey candidate [ " _YELLOW_("....%08" PRIx64)" ]\n\n", key & 0xFFFFFFFF); + __sync_fetch_and_add(&global_found_candidate, 1); + } else { + printf("\nKey candidate [ " _GREEN_("....%08" PRIx64) " ]", key & 0xFFFFFFFF); + printf("\nKey candidate [ " _GREEN_("%12" PRIx64) " ]\n\n", key); + __sync_fetch_and_add(&global_found, 1); + } + // release lock + pthread_mutex_unlock(&print_lock); + __sync_fetch_and_add(&global_candidate_key, key); + break; } free(args); return NULL; @@ -487,8 +620,9 @@ static void *brute_key_thread(void *arguments) { // decrypt 22 bytes uint8_t dec[args->enc_len]; - for (int i = 0; i < args->enc_len; i++) + for (int i = 0; i < args->enc_len; i++) { dec[i] = crypto1_byte(pcs, 0x00, 0) ^ local_enc[i]; + } crypto1_destroy(pcs); @@ -496,6 +630,7 @@ static void *brute_key_thread(void *arguments) { if (checkValidCmdByte(dec, args->enc_len) == false) { continue; } + __sync_fetch_and_add(&global_found, 1); // lock this section to avoid interlacing prints from different threats @@ -547,15 +682,15 @@ int main(int argc, const char *argv[]) { sscanf(argv[7], "%x", &at_enc); sscanf(argv[8], "%x", &at_par_err); + // next encrypted command + a full read/write int enc_len = 0; - uint8_t enc[ENC_LEN] = {0}; // next encrypted command + a full read/write + uint8_t enc[ENC_LEN] = {0}; if (argc > 9) { -// sscanf(argv[9], "%x", &cmd_enc); param_gethex_to_eol(argv[9], 0, enc, sizeof(enc), &enc_len); cmd_enc = (enc[0] << 24 | enc[1] << 16 | enc[2] << 8 | enc[3]); } - printf("----------- " _CYAN_("Phase 1") " ------------------------\n"); + printf("----------- " _CYAN_("Phase 1 examine") " ------------------------\n"); printf("uid.................. %08x\n", uid); printf("nt encrypted......... %08x\n", nt_enc); printf("nt parity err........ %04x\n", nt_par_err); @@ -574,7 +709,7 @@ int main(int argc, const char *argv[]) { uint16_t ar_par = parity_from_err(ar_enc, ar_par_err); uint16_t at_par = parity_from_err(at_enc, at_par_err); - //calc (parity XOR corresponding nonce bit encoded with the same keystream bit) + // calc (parity XOR corresponding nonce bit encoded with the same keystream bit) uint16_t xored = xored_bits(nt_par, nt_enc, ar_par, ar_enc, at_par, at_enc); #if !defined(_WIN32) || !defined(__WIN32__) @@ -586,40 +721,58 @@ int main(int argc, const char *argv[]) { printf("\nBruteforce using " _YELLOW_("%d") " threads\n", thread_count); printf("looking for the last bytes of the encrypted tagnonce\n"); + printf("\nTarget old MFC...\n"); + pthread_t threads[thread_count]; // create a mutex to avoid interlacing print commands from our different threads pthread_mutex_init(&print_lock, NULL); - // one thread T0 for none EV1. - struct thread_args *a = calloc(1, sizeof(struct thread_args)); - a->xored = xored; - a->thread = 0; - a->idx = 0; - a->ev1 = false; - pthread_create(&threads[0], NULL, brute_thread, (void *)a); - // the rest of available threads to EV1 scenario - for (int i = 0; i < thread_count - 1; ++i) { - struct thread_args *b = calloc(1, sizeof(struct thread_args)); - b->xored = xored; - b->thread = i + 1; - b->idx = i; - b->ev1 = true; - pthread_create(&threads[i + 1], NULL, brute_thread, (void *)b); + for (int i = 0; i < thread_count; ++i) { + struct thread_args *a = calloc(1, sizeof(struct thread_args)); + a->xored = xored; + a->thread = i; + a->idx = i; + a->ev1 = false; + pthread_create(&threads[i], NULL, brute_thread, (void *)a); } // wait for threads to terminate: - for (int i = 0; i < thread_count; ++i) + for (int i = 0; i < thread_count; ++i) { pthread_join(threads[i], NULL); + } t1 = msclock() - t1; printf("execution time " _YELLOW_("%.2f") " sec\n", (float)t1 / 1000.0); - if (!global_found && !global_found_candidate) { - printf("\nFailed to find a key\n\n"); - goto out; + printf("\nTarget MFC Ev1...\n"); + + t1 = msclock(); + // the rest of available threads to EV1 scenario + for (int i = 0; i < thread_count; ++i) { + struct thread_args *a = calloc(1, sizeof(struct thread_args)); + a->xored = xored; + a->thread = i; + a->idx = i; + a->ev1 = true; + pthread_create(&threads[i], NULL, brute_thread, (void *)a); + } + + // wait for threads to terminate: + for (int i = 0; i < thread_count; ++i) { + pthread_join(threads[i], NULL); + } + + t1 = msclock() - t1; + printf("execution time " _YELLOW_("%.2f") " sec\n", (float)t1 / 1000.0); + + + if (!global_found && !global_found_candidate) { + printf("\nFailed to find a key\n\n"); + goto out; + } } if (enc_len < 4) { @@ -631,13 +784,13 @@ int main(int argc, const char *argv[]) { global_found = 0; global_found_candidate = 0; - printf("\n----------- " _CYAN_("Phase 2") " ------------------------\n"); + printf("\n----------- " _CYAN_("Phase 2 validating") " ------------------------\n"); printf("uid.................. %08x\n", uid); printf("partial key.......... %08x\n", (uint32_t)(global_candidate_key & 0xFFFFFFFF)); printf("nt enc............... %08x\n", nt_enc); printf("nr enc............... %08x\n", nr_enc); printf("next encrypted cmd... %s\n", sprint_hex_inrow_ex(enc, enc_len, 0)); - printf("\nlooking for the upper 16 bits of key\n"); + printf("\nLooking for the upper 16 bits of the key\n"); fflush(stdout); // threads @@ -651,12 +804,16 @@ int main(int argc, const char *argv[]) { b->nr_enc = nr_enc; b->enc_len = enc_len; memcpy(b->enc, enc, enc_len); - pthread_create(&threads[i], NULL, brute_key_thread, (void *)b); + if ( i == 0) + pthread_create(&threads[0], NULL, check_default_keys, (void *)b); + else + pthread_create(&threads[i], NULL, brute_key_thread, (void *)b); } // wait for threads to terminate: - for (int i = 0; i < thread_count; ++i) + for (int i = 0; i < thread_count; ++i) { pthread_join(threads[i], NULL); + } if (!global_found && !global_found_candidate) { printf("\nfailed to find a key\n\n"); From 918e11bac4e1a207da0841c81a85112067462d1b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 10 Nov 2023 00:31:00 +0100 Subject: [PATCH 0744/1034] there are more requirements in all python scripts in this folder.\nneeds to be added if this file shall be relevant --- tools/requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/requirements.txt b/tools/requirements.txt index b6be80271..23141093d 100644 --- a/tools/requirements.txt +++ b/tools/requirements.txt @@ -1,3 +1,4 @@ ansicolors==1.1.8 sslcrypto==5.3 -pexpect==4.8.0 \ No newline at end of file +pexpect==4.8.0 +bitstring==4.1.2 \ No newline at end of file From 7f2bc916d487ca123e4271626b5b7341014707bd Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 10 Nov 2023 00:32:10 +0100 Subject: [PATCH 0745/1034] use local fct instead --- client/src/preferences.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/client/src/preferences.c b/client/src/preferences.c index 904e12a44..dd697da74 100644 --- a/client/src/preferences.c +++ b/client/src/preferences.c @@ -26,13 +26,13 @@ //----------------------------------------------------------------------------- #include "preferences.h" -#include "comms.h" -#include "emv/emvjson.h" #include <string.h> -#include "cmdparser.h" #include <ctype.h> #include <dirent.h> -#include <proxmark3.h> +#include "proxmark3.h" +#include "comms.h" +#include "emv/emvjson.h" +#include "cmdparser.h" #include "cliparser.h" #include "uart/uart.h" // uart_reconfigure_timeouts @@ -45,7 +45,7 @@ static char *prefGetFilename(void) { if (searchHomeFilePath(&path, NULL, preferencesFilename, false) == PM3_SUCCESS) return path; else - return strdup(preferencesFilename); + return str_dup(preferencesFilename); } int preferences_load(void) { From a36cfbdb1f5f0ad98a3abd7f1f1f63b14d55d4b0 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 11 Nov 2023 15:13:14 +0100 Subject: [PATCH 0746/1034] move keys check to pre-processing --- tools/mf_nonce_brute/mf_nonce_brute.c | 43 +++++++++++++++++---------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/tools/mf_nonce_brute/mf_nonce_brute.c b/tools/mf_nonce_brute/mf_nonce_brute.c index 0c897a189..63572da0d 100644 --- a/tools/mf_nonce_brute/mf_nonce_brute.c +++ b/tools/mf_nonce_brute/mf_nonce_brute.c @@ -447,15 +447,12 @@ static void *check_default_keys(void *arguments) { for (uint8_t i = 0; i < ARRAYLEN(g_mifare_default_keys); i++) { uint64_t key = g_mifare_default_keys[i]; - if (args->part_key != (key & 0xffffffff)) { - continue; - } // Init cipher with key struct Crypto1State *pcs = crypto1_create(key); // NESTED decrypt nt with help of new key - crypto1_word(pcs, args->nt_enc ^ args->uid, 0); + crypto1_word(pcs, args->nt_enc ^ args->uid, 1); crypto1_word(pcs, args->nr_enc, 1); crypto1_word(pcs, 0, 0); crypto1_word(pcs, 0, 0); @@ -470,7 +467,7 @@ static void *check_default_keys(void *arguments) { // check if cmd exists bool res = checkValidCmdByte(dec, args->enc_len); if (args->enc_len > 4) { - res |= checkValidCmdByte(dec + 4, args->enc_len -4); + res |= checkValidCmdByte(dec + 4, args->enc_len - 4); } if (res == false) { @@ -690,7 +687,7 @@ int main(int argc, const char *argv[]) { cmd_enc = (enc[0] << 24 | enc[1] << 16 | enc[2] << 8 | enc[3]); } - printf("----------- " _CYAN_("Phase 1 examine") " ------------------------\n"); + printf("----------- " _CYAN_("information") " ------------------------\n"); printf("uid.................. %08x\n", uid); printf("nt encrypted......... %08x\n", nt_enc); printf("nt parity err........ %04x\n", nt_par_err); @@ -718,16 +715,35 @@ int main(int argc, const char *argv[]) { thread_count = 2; #endif /* _WIN32 */ - printf("\nBruteforce using " _YELLOW_("%d") " threads\n", thread_count); - printf("looking for the last bytes of the encrypted tagnonce\n"); - - printf("\nTarget old MFC...\n"); + printf("\nBruteforce using " _YELLOW_("%d") " threads\n\n", thread_count); pthread_t threads[thread_count]; // create a mutex to avoid interlacing print commands from our different threads pthread_mutex_init(&print_lock, NULL); + // if we have 4 or more bytes, look for a default key + if (enc_len > 3) { + printf("----------- " _CYAN_("Phase 1 pre-processing") " ------------------------\n"); + printf("Testing default keys using NESTED authentication...\n"); + struct thread_key_args *def = calloc(1, sizeof(struct thread_key_args)); + def->thread = 0; + def->idx = 0; + def->uid = uid; + def->nt_enc = nt_enc; + def->nr_enc = nr_enc; + def->enc_len = enc_len; + memcpy(def->enc, enc, enc_len); + pthread_create(&threads[0], NULL, check_default_keys, (void *)def); + pthread_join(threads[0], NULL); + if (global_found) { + goto out; + } + } + + printf("\n----------- " _CYAN_("Phase 2 examine") " -------------------------------\n"); + printf("Looking for the last bytes of the encrypted tagnonce\n"); + printf("\nTarget old MFC...\n"); // the rest of available threads to EV1 scenario for (int i = 0; i < thread_count; ++i) { struct thread_args *a = calloc(1, sizeof(struct thread_args)); @@ -784,7 +800,7 @@ int main(int argc, const char *argv[]) { global_found = 0; global_found_candidate = 0; - printf("\n----------- " _CYAN_("Phase 2 validating") " ------------------------\n"); + printf("\n----------- " _CYAN_("Phase 3 validating") " ----------------------------\n"); printf("uid.................. %08x\n", uid); printf("partial key.......... %08x\n", (uint32_t)(global_candidate_key & 0xFFFFFFFF)); printf("nt enc............... %08x\n", nt_enc); @@ -804,10 +820,7 @@ int main(int argc, const char *argv[]) { b->nr_enc = nr_enc; b->enc_len = enc_len; memcpy(b->enc, enc, enc_len); - if ( i == 0) - pthread_create(&threads[0], NULL, check_default_keys, (void *)b); - else - pthread_create(&threads[i], NULL, brute_key_thread, (void *)b); + pthread_create(&threads[i], NULL, brute_key_thread, (void *)b); } // wait for threads to terminate: From ecd7f53edaa96d6d800c50522ae45b3f225c1a9e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 11 Nov 2023 15:46:47 +0100 Subject: [PATCH 0747/1034] added a staticnested program that uses two different implementations. The Chameleon Ultra impl and PM3 Impl.\nRunning the test script will show how the CU impl has some issues --- CHANGELOG.md | 1 + tools/mfkey/Makefile | 5 +- tools/mfkey/nested_util.c | 257 +++++++++++++++++++++++++++++++++++++ tools/mfkey/nested_util.h | 15 +++ tools/mfkey/staticnested.c | 234 +++++++++++++++++++++++++++++++++ tools/mfkey/test_static.sh | 9 ++ tools/pm3_tests.sh | 4 +- 7 files changed, 522 insertions(+), 3 deletions(-) create mode 100644 tools/mfkey/nested_util.c create mode 100644 tools/mfkey/nested_util.h create mode 100644 tools/mfkey/staticnested.c create mode 100755 tools/mfkey/test_static.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d1c6ff89..4ae35b2f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `tools\mfkeys\staticnested` - program to recover static nested keys (@iceman1001) - Added `pm3_gen_dictionary.py` - python script to extract and save all keys from MFC dump files. (@iceman1001) - Changed `hf mfu info` - now detect MIFARE Ultralight AES (@iceman1001) - Changed `hf mf autopwn` - now supports multiple user supplied keys (@iceman1001) diff --git a/tools/mfkey/Makefile b/tools/mfkey/Makefile index d1579a98b..113cd753d 100644 --- a/tools/mfkey/Makefile +++ b/tools/mfkey/Makefile @@ -1,10 +1,10 @@ MYSRCPATHS = ../../common ../../common/crapto1 -MYSRCS = crypto1.c crapto1.c bucketsort.c +MYSRCS = crypto1.c crapto1.c bucketsort.c nested_util.c MYINCLUDES = -I../../include -I../../common MYCFLAGS = -O3 MYDEFS = -BINS = mfkey32 mfkey32v2 mfkey64 +BINS = mfkey32 mfkey32v2 mfkey64 staticnested INSTALLTOOLS = $(BINS) include ../../Makefile.host @@ -24,3 +24,4 @@ endif mfkey32 : $(OBJDIR)/mfkey32.o $(MYOBJS) mfkey32v2 : $(OBJDIR)/mfkey32v2.o $(MYOBJS) mfkey64 : $(OBJDIR)/mfkey64.o $(MYOBJS) +staticnested : $(OBJDIR)/staticnested.o $(MYOBJS) diff --git a/tools/mfkey/nested_util.c b/tools/mfkey/nested_util.c new file mode 100644 index 000000000..d25cfd663 --- /dev/null +++ b/tools/mfkey/nested_util.c @@ -0,0 +1,257 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <inttypes.h> +#include <ctype.h> +#include "parity.h" + +#ifdef __WIN32 +#include "windows.h" +#else +#include "unistd.h" +#endif + +#include "pthread.h" +#include "nested_util.h" + + +#define MEM_CHUNK 10000 +#define TRY_KEYS 50 + + +typedef struct { + uint64_t key; + int count; +} countKeys; + +typedef struct { + NtpKs1 *pNK; + uint32_t authuid; + + uint64_t *keys; + uint32_t keyCount; + + uint32_t startPos; + uint32_t endPos; +} RecPar; + + +static int compar_int(const void *a, const void *b) { + return (*(uint64_t *)b - * (uint64_t *)a); +} + +// Compare countKeys structure +static int compar_special_int(const void *a, const void *b) { + return (((countKeys *)b)->count - ((countKeys *)a)->count); +} + +// keys qsort and unique. +static countKeys *uniqsort(uint64_t *possibleKeys, uint32_t size) { + unsigned int i, j = 0; + int count = 0; + countKeys *our_counts; + + qsort(possibleKeys, size, sizeof(uint64_t), compar_int); + + our_counts = calloc(size, sizeof(countKeys)); + if (our_counts == NULL) { + printf("Memory allocation error for our_counts"); + exit(EXIT_FAILURE); + } + + for (i = 0; i < size; i++) { + if (possibleKeys[i + 1] == possibleKeys[i]) { + count++; + } else { + our_counts[j].key = possibleKeys[i]; + our_counts[j].count = count; + j++; + count = 0; + } + } + qsort(our_counts, j, sizeof(countKeys), compar_special_int); + return (our_counts); +} + +// nested decrypt +static void *nested_revover(void *args) { + struct Crypto1State *revstate, * revstate_start = NULL; + uint64_t lfsr = 0; + uint32_t i, kcount = 0; + bool is_ok = true; + + RecPar *rp = (RecPar *)args; + + rp->keyCount = 0; + rp->keys = NULL; + + //printf("Start pos is %d, End pos is %d\r\n", rp->startPos, rp->endPos); + + for (i = rp->startPos; i < rp->endPos; i++) { + uint32_t nt_probe = rp->pNK[i].ntp ^ rp->authuid; + uint32_t ks1 = rp->pNK[i].ks1; + + /* + printf(" ntp = %"PRIu32"\r\n", nt_probe); + printf(" ks1 = %"PRIu32"\r\n", ks1); + printf("\r\n"); + */ + + // And finally recover the first 32 bits of the key + revstate = lfsr_recovery32(ks1, nt_probe); + if (revstate_start == NULL) { + revstate_start = revstate; + } + + while ((revstate->odd != 0x0) || (revstate->even != 0x0)) { + lfsr_rollback_word(revstate, nt_probe, 0); + crypto1_get_lfsr(revstate, &lfsr); + if (((kcount % MEM_CHUNK) == 0) || (kcount >= rp->keyCount)) { + rp->keyCount += MEM_CHUNK; + // printf("New chunk by %d, sizeof %lu\n", kcount, rp->keyCount * sizeof(uint64_t)); + void *tmp = realloc(rp->keys, rp->keyCount * sizeof(uint64_t)); + if (tmp == NULL) { + printf("Memory allocation error for pk->possibleKeys"); + rp->keyCount = 0; + is_ok = false; + break; + } + rp->keys = (uint64_t *)tmp; + } + rp->keys[kcount] = lfsr; + kcount++; + revstate++; + } + --kcount; + free(revstate_start); + revstate_start = NULL; + if (!is_ok) { + break; + } + } + if (is_ok) { + if (kcount != 0) { + rp->keyCount = kcount; + void *tmp = (uint64_t *)realloc(rp->keys, rp->keyCount * sizeof(uint64_t)); + if (tmp == NULL) { + printf("Memory allocation error for pk->possibleKeys"); + rp->keyCount = 0; + free(rp->keys); + } else { + rp->keys = tmp; + } + } + } else { + rp->keyCount = 0; + free(rp->keys); + } + return NULL; +} + +uint64_t *nested(NtpKs1 *pNK, uint32_t sizePNK, uint32_t authuid, uint32_t *keyCount) { +#define THREAD_MAX 4 + + *keyCount = 0; + uint32_t i, j, manyThread; + uint64_t *keys = (uint64_t *)NULL; + + manyThread = THREAD_MAX; + if (manyThread > sizePNK) { + manyThread = sizePNK; + } + + // pthread handle + pthread_t *threads = calloc(sizePNK, sizeof(pthread_t)); + if (threads == NULL) return NULL; + + // Param + RecPar *pRPs = calloc(sizePNK, sizeof(RecPar)); + if (pRPs == NULL) { + free(threads); + return NULL; + } + + uint32_t average = sizePNK / manyThread; + uint32_t modules = sizePNK % manyThread; + + // Assign tasks + for (i = 0, j = 0; i < manyThread; i++, j += average) { + pRPs[i].pNK = pNK; + pRPs[i].authuid = authuid; + pRPs[i].startPos = j; + pRPs[i].endPos = j + average; + pRPs[i].keys = NULL; + // last thread can decrypt more pNK + if (i == (manyThread - 1) && modules > 0) { + (pRPs[i].endPos) += modules; + } + pthread_create(&threads[i], NULL, nested_revover, &(pRPs[i])); + } + + for (i = 0; i < manyThread; i++) { + // wait thread exit... + pthread_join(threads[i], NULL); + *keyCount += pRPs[i].keyCount; + } + free(threads); + + if (*keyCount != 0) { + keys = malloc((*keyCount) * sizeof(uint64_t)); + if (keys != NULL) { + for (i = 0, j = 0; i < manyThread; i++) { + if (pRPs[i].keyCount > 0) { + // printf("The thread %d recover %d keys.\r\n", i, pRPs[i].keyCount); + if (pRPs[i].keys != NULL) { + memcpy( + keys + j, + pRPs[i].keys, + pRPs[i].keyCount * sizeof(uint64_t) + ); + j += pRPs[i].keyCount; + free(pRPs[i].keys); + } + } + } + + countKeys *ck = uniqsort(keys, *keyCount); + free(keys); + keys = (uint64_t *)NULL; + *keyCount = 0; + + if (ck != NULL) { + for (i = 0; i < TRY_KEYS; i++) { + // We don't known this key, try to break it + // This key can be found here two or more times + if (ck[i].count > 0) { + *keyCount += 1; + void *tmp = realloc(keys, sizeof(uint64_t) * (*keyCount)); + if (tmp != NULL) { + keys = tmp; + keys[*keyCount - 1] = ck[i].key; + } else { + printf("Cannot allocate memory for keys on merge."); + free(keys); + break; + } + } + } + } else { + printf("Cannot allocate memory for ck on uniqsort."); + } + } else { + printf("Cannot allocate memory to merge keys.\r\n"); + } + } + free(pRPs); + return keys; +} + +// Return 1 if the nonce is invalid else return 0 +uint8_t valid_nonce(uint32_t Nt, uint32_t NtEnc, uint32_t Ks1, uint8_t *parity) { + return ( + (oddparity8((Nt >> 24) & 0xFF) == ((parity[0]) ^ oddparity8((NtEnc >> 24) & 0xFF) ^ BIT(Ks1, 16))) && \ + (oddparity8((Nt >> 16) & 0xFF) == ((parity[1]) ^ oddparity8((NtEnc >> 16) & 0xFF) ^ BIT(Ks1, 8))) && \ + (oddparity8((Nt >> 8) & 0xFF) == ((parity[2]) ^ oddparity8((NtEnc >> 8) & 0xFF) ^ BIT(Ks1, 0))) + ) ? 1 : 0; +} diff --git a/tools/mfkey/nested_util.h b/tools/mfkey/nested_util.h new file mode 100644 index 000000000..fa0e1552d --- /dev/null +++ b/tools/mfkey/nested_util.h @@ -0,0 +1,15 @@ +#ifndef NESTED_H__ +#define NESTED_H__ + +#include "crapto1/crapto1.h" + +typedef struct { + uint32_t ntp; + uint32_t ks1; +} NtpKs1; + + +uint8_t valid_nonce(uint32_t Nt, uint32_t NtEnc, uint32_t Ks1, uint8_t *parity); +uint64_t *nested(NtpKs1 *pNK, uint32_t sizePNK, uint32_t authuid, uint32_t *keyCount); + +#endif \ No newline at end of file diff --git a/tools/mfkey/staticnested.c b/tools/mfkey/staticnested.c new file mode 100644 index 000000000..4e68e5f94 --- /dev/null +++ b/tools/mfkey/staticnested.c @@ -0,0 +1,234 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <inttypes.h> +#include <pthread.h> +#include "common.h" +#include "nested_util.h" +#include "crapto1/crapto1.h" + + +#define AEND "\x1b[0m" +#define _RED_(s) "\x1b[31m" s AEND +#define _GREEN_(s) "\x1b[32m" s AEND +#define _YELLOW_(s) "\x1b[33m" s AEND +#define _CYAN_(s) "\x1b[36m" s AEND + +typedef struct { + union { + struct Crypto1State *slhead; + uint64_t *keyhead; + } head; + union { + struct Crypto1State *sltail; + uint64_t *keytail; + } tail; + uint32_t len; + uint32_t uid; + uint32_t blockNo; + uint32_t keyType; + uint32_t nt_enc; + uint32_t ks1; +} StateList_t; + + +inline static int compare_uint64(const void *a, const void *b) { + if (*(uint64_t *)b == *(uint64_t *)a) return 0; + if (*(uint64_t *)b < * (uint64_t *)a) return 1; + return -1; +} + +// Compare 16 Bits out of cryptostate +inline static int compare16Bits(const void *a, const void *b) { + if ((*(uint64_t *)b & 0x00ff000000ff0000) == (*(uint64_t *)a & 0x00ff000000ff0000)) return 0; + if ((*(uint64_t *)b & 0x00ff000000ff0000) > (*(uint64_t *)a & 0x00ff000000ff0000)) return 1; + return -1; +} + +// create the intersection (common members) of two sorted lists. Lists are terminated by -1. Result will be in list1. Number of elements is returned. +static uint32_t intersection(uint64_t *listA, uint64_t *listB) { + if (listA == NULL || listB == NULL) + return 0; + + uint64_t *p1, *p2, *p3; + p1 = p3 = listA; + p2 = listB; + + while (*p1 != UINT64_C(-1) && *p2 != UINT64_C(-1)) { + if (compare_uint64(p1, p2) == 0) { + *p3++ = *p1++; + p2++; + } else { + while (compare_uint64(p1, p2) < 0) ++p1; + while (compare_uint64(p1, p2) > 0) ++p2; + } + } + *p3 = UINT64_C(-1); + return p3 - listA; +} + +// wrapper function for multi-threaded lfsr_recovery32 +static void +#ifdef __has_attribute +#if __has_attribute(force_align_arg_pointer) +__attribute__((force_align_arg_pointer)) +#endif +#endif +*nested_worker_thread(void *arg) { + struct Crypto1State *p1; + StateList_t *statelist = arg; + statelist->head.slhead = lfsr_recovery32(statelist->ks1, statelist->nt_enc ^ statelist->uid); + + for (p1 = statelist->head.slhead; p1->odd | p1->even; p1++) {}; + + statelist->len = p1 - statelist->head.slhead; + statelist->tail.sltail = --p1; + + qsort(statelist->head.slhead, statelist->len, sizeof(uint64_t), compare16Bits); + + return statelist->head.slhead; +} + +static void pm3_staticnested(uint32_t uid, uint32_t nt1, uint32_t ks1, uint32_t nt2, uint32_t ks2) { + + StateList_t statelists[2]; + struct Crypto1State *p1, * p2, * p3, * p4; + + for (uint8_t i = 0; i < 2; i++) { + statelists[i].uid = uid; + } + + statelists[0].nt_enc = nt1; + statelists[0].ks1 = ks1; + statelists[1].nt_enc = nt2; + statelists[1].ks1 = ks2; + + // calc keys + pthread_t thread_id[2]; + + // create and run worker threads + for (uint8_t i = 0; i < 2; i++) + pthread_create(thread_id + i, NULL, nested_worker_thread, &statelists[i]); + + // wait for threads to terminate: + for (uint8_t i = 0; i < 2; i++) + pthread_join(thread_id[i], (void *)&statelists[i].head.slhead); + + // the first 16 Bits of the cryptostate already contain part of our key. + // Create the intersection of the two lists based on these 16 Bits and + // roll back the cryptostate + p1 = p3 = statelists[0].head.slhead; + p2 = p4 = statelists[1].head.slhead; + + while (p1 <= statelists[0].tail.sltail && p2 <= statelists[1].tail.sltail) { + if (compare16Bits(p1, p2) == 0) { + + struct Crypto1State savestate; + savestate = *p1; + while (compare16Bits(p1, &savestate) == 0 && p1 <= statelists[0].tail.sltail) { + *p3 = *p1; + lfsr_rollback_word(p3, statelists[0].nt_enc ^ statelists[0].uid, 0); + p3++; + p1++; + } + savestate = *p2; + while (compare16Bits(p2, &savestate) == 0 && p2 <= statelists[1].tail.sltail) { + *p4 = *p2; + lfsr_rollback_word(p4, statelists[1].nt_enc ^ statelists[1].uid, 0); + p4++; + p2++; + } + } else { + while (compare16Bits(p1, p2) == -1) p1++; + while (compare16Bits(p1, p2) == 1) p2++; + } + } + + p3->odd = -1; + p3->even = -1; + p4->odd = -1; + p4->even = -1; + statelists[0].len = p3 - statelists[0].head.slhead; + statelists[1].len = p4 - statelists[1].head.slhead; + statelists[0].tail.sltail = --p3; + statelists[1].tail.sltail = --p4; + + // the statelists now contain possible keys. The key we are searching for must be in the + // intersection of both lists + qsort(statelists[0].head.keyhead, statelists[0].len, sizeof(uint64_t), compare_uint64); + qsort(statelists[1].head.keyhead, statelists[1].len, sizeof(uint64_t), compare_uint64); + // Create the intersection + statelists[0].len = intersection(statelists[0].head.keyhead, statelists[1].head.keyhead); + + uint32_t keycnt = statelists[0].len; + if (keycnt) { + printf("PM3 Static nested --> Found " _YELLOW_("%u") " key candidates\n", keycnt); + for (uint32_t k = 0; k < keycnt; k++) { + uint64_t key64 = 0; + crypto1_get_lfsr(statelists[0].head.slhead + k, &key64); + printf("[ %d ] " _GREEN_("%012" PRIx64) "\n", k + 1, key64); + } + } +} + +static int usage(void) { + printf("\n"); + printf("\nProgram tries to recover keys from static encrypted nested MFC cards\n"); + printf("using two different implementations, Chameleon Ultra (CU) and Proxmark3.\n"); + printf("It uses the nonce, keystream sent from pm3 device to client.\n"); + printf("ie: NOT the CU data which is data in the trace.\n"); + printf("\n"); + printf("syntax: staticnested <uid> <nt1> <ks1> <nt2> <ks2>\n\n"); + printf("samples:\n"); + printf("\n"); + printf(" ./staticnested 461dce03 7eef3586 ffb02eda 322bc14d ffc875ca\n"); + printf("\n"); + return 1; +} + +int main(int argc, char *const argv[]) { + + printf("\nMIFARE Classic static nested key recovery\n\n"); + + if (argc < 5) return usage(); + + printf("Init...\n"); + NtpKs1 *pNK = calloc(2, sizeof(NtpKs1)); + if (pNK == NULL) { + goto error; + } + + uint32_t uid = 0; + + sscanf(argv[1], "%x", &uid); + sscanf(argv[2], "%x", &pNK[0].ntp); + sscanf(argv[3], "%x", &pNK[0].ks1); + sscanf(argv[4], "%x", &pNK[1].ntp); + sscanf(argv[5], "%x", &pNK[1].ks1); + + printf("uid... %08x\n", uid); + printf("nt1... %08x\n", pNK[0].ntp); + printf("ks1... %08x\n", pNK[0].ks1); + printf("nt2... %08x\n", pNK[1].ntp); + printf("ks2... %08x\n", pNK[1].ks1); + + // process all args. + printf("Recovery...\n"); + + uint32_t key_count = 0; + uint64_t *keys = nested(pNK, 2, uid, &key_count); + if (key_count) { + printf("Ultra Static nested --> Found " _YELLOW_("%u") " key candidates\n", key_count); + for (uint32_t k = 0; k < key_count; k++) { + printf("[ %d ] " _GREEN_("%012" PRIx64) "\n", k + 1, keys[k]); + } + } + + pm3_staticnested(uid, pNK[0].ntp, pNK[0].ks1, pNK[1].ntp, pNK[1].ks1); + + fflush(stdout); + free(keys); + exit(EXIT_SUCCESS); +error: + exit(EXIT_FAILURE); +} \ No newline at end of file diff --git a/tools/mfkey/test_static.sh b/tools/mfkey/test_static.sh new file mode 100755 index 000000000..7fd180d8a --- /dev/null +++ b/tools/mfkey/test_static.sh @@ -0,0 +1,9 @@ +./staticnested 461dce03 7eef3586 ffb02eda 322bc14d ffc875ca; +./staticnested 461dce03 7eef3586 7f21594f 322bc14d 7f815fba; +./staticnested 461dce03 7eef3586 ff315fe7 322bc14d ffc1364d; +./staticnested 461dce03 7eef3586 d742a617 322bc14d d7f2f337; +./staticnested 461dce03 7eef3586 5e3e037c 322bc14d 5ef705c2; +./staticnested 461dce03 7eef3586 5fcaebc6 322bc14d 5f72de17; +./staticnested 461dce03 7eef3586 3fbcfb30 322bc14d 3fe4c47c; +./staticnested 461dce03 7eef3586 1fb6b496 322bc14d 1f4eebdd; +./staticnested 461dce03 7eef3586 7fa28c7e 322bc14d 7f62b3d6; diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 0615a1447..6343fcfcd 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -283,13 +283,15 @@ while true; do if ! CheckFileExist "fpgacompress exists" "$FPGACPMPRESSBIN"; then break; fi fi if $TESTALL || $TESTMFKEY; then - echo -e "\n${C_BLUE}Testing mfkey:${C_NC} ${MFKEY32V2BIN:=./tools/mfkey/mfkey32v2} ${MFKEY64BIN:=./tools/mfkey/mfkey64}" + echo -e "\n${C_BLUE}Testing mfkey:${C_NC} ${MFKEY32V2BIN:=./tools/mfkey/mfkey32v2} ${MFKEY64BIN:=./tools/mfkey/mfkey64} ${STATICNESTEDBIN:=./tools/mfkey/staticnested}" if ! CheckFileExist "mfkey32v2 exists" "$MFKEY32V2BIN"; then break; fi if ! CheckFileExist "mfkey64 exists" "$MFKEY64BIN"; then break; fi + if ! CheckFileExist "staticnested exists" "$STATICNESTEDBIN"; then break; fi # Need a decent example for mfkey32... if ! CheckExecute "mfkey32v2 test" "$MFKEY32V2BIN 12345678 1AD8DF2B 1D316024 620EF048 30D6CB07 C52077E2 837AC61A" "Found Key: \[a0a1a2a3a4a5\]"; then break; fi if ! CheckExecute "mfkey64 test" "$MFKEY64BIN 9c599b32 82a4166c a1e458ce 6eea41e0 5cadf439" "Found Key: \[ffffffffffff\]"; then break; fi if ! CheckExecute "mfkey64 long trace test" "$MFKEY64BIN 14579f69 ce844261 f8049ccb 0525c84f 9431cc40 7093df99 9972428ce2e8523f456b99c831e769dced09 8ca6827b ab797fd369e8b93a86776b40dae3ef686efd c3c381ba 49e2c9def4868d1777670e584c27230286f4 fbdcd7c1 4abd964b07d3563aa066ed0a2eac7f6312bf 9f9149ea" "Found Key: \[091e639cb715\]"; then break; fi + if ! CheckExecute "staticnested test" "$STATICNESTEDBIN 461dce03 7eef3586 7fa28c7e 322bc14d 7f62b3d6" "\[ 2 \].*ffffffffff40.*"; then break; fi fi if $TESTALL || $TESTNONCE2KEY; then echo -e "\n${C_BLUE}Testing nonce2key:${C_NC} ${NONCE2KEYBIN:=./tools/nonce2key/nonce2key}" From da73a2896a1b9bab84ff0da4da0f12ea4ed606c1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 11 Nov 2023 15:47:10 +0100 Subject: [PATCH 0748/1034] text --- tools/mfkey/staticnested.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/mfkey/staticnested.c b/tools/mfkey/staticnested.c index 4e68e5f94..70bade540 100644 --- a/tools/mfkey/staticnested.c +++ b/tools/mfkey/staticnested.c @@ -182,6 +182,8 @@ static int usage(void) { printf("samples:\n"); printf("\n"); printf(" ./staticnested 461dce03 7eef3586 ffb02eda 322bc14d ffc875ca\n"); + printf(" ./staticnested 461dce03 7eef3586 1fb6b496 322bc14d 1f4eebdd\n"); + printf(" ./staticnested 461dce03 7eef3586 7fa28c7e 322bc14d 7f62b3d6\n"); printf("\n"); return 1; } From 21fa3331b5cdf55b82092aa736c7d544f2cc3d84 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 11 Nov 2023 15:47:58 +0100 Subject: [PATCH 0749/1034] set array pointer to end of struct. Otherwise we will have some issues --- include/mifare.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mifare.h b/include/mifare.h index 7e393fe5f..1c4125127 100644 --- a/include/mifare.h +++ b/include/mifare.h @@ -68,8 +68,8 @@ typedef struct { typedef struct { iso14a_card_select_t card_info; - uint8_t *dump; uint16_t dumplen; + uint8_t *dump; } iso14a_mf_extdump_t; typedef struct { From 9ed6a3cb6cf3d0e10f853e9cf1e4b4158cddc711 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 11 Nov 2023 16:43:12 +0100 Subject: [PATCH 0750/1034] fix coverity ID 423236, 423235, 423234. Resource leak, use after free, out-of-bounds --- tools/mfkey/nested_util.c | 97 ++++++++++++++++++++++----------------- 1 file changed, 55 insertions(+), 42 deletions(-) diff --git a/tools/mfkey/nested_util.c b/tools/mfkey/nested_util.c index d25cfd663..239fe5d88 100644 --- a/tools/mfkey/nested_util.c +++ b/tools/mfkey/nested_util.c @@ -196,53 +196,66 @@ uint64_t *nested(NtpKs1 *pNK, uint32_t sizePNK, uint32_t authuid, uint32_t *keyC } free(threads); - if (*keyCount != 0) { - keys = malloc((*keyCount) * sizeof(uint64_t)); - if (keys != NULL) { - for (i = 0, j = 0; i < manyThread; i++) { - if (pRPs[i].keyCount > 0) { - // printf("The thread %d recover %d keys.\r\n", i, pRPs[i].keyCount); - if (pRPs[i].keys != NULL) { - memcpy( - keys + j, - pRPs[i].keys, - pRPs[i].keyCount * sizeof(uint64_t) - ); - j += pRPs[i].keyCount; - free(pRPs[i].keys); - } - } - } + if (*keyCount == 0) { + printf("Didn't recover any keys.\r\n"); + free(pRPs); + return NULL; + } - countKeys *ck = uniqsort(keys, *keyCount); - free(keys); - keys = (uint64_t *)NULL; - *keyCount = 0; + keys = calloc((*keyCount) * sizeof(uint64_t), sizeof(uint8_t)); + if (keys == NULL) { + printf("Cannot allocate memory to merge keys.\r\n"); + free(pRPs); + return NULL; + } - if (ck != NULL) { - for (i = 0; i < TRY_KEYS; i++) { - // We don't known this key, try to break it - // This key can be found here two or more times - if (ck[i].count > 0) { - *keyCount += 1; - void *tmp = realloc(keys, sizeof(uint64_t) * (*keyCount)); - if (tmp != NULL) { - keys = tmp; - keys[*keyCount - 1] = ck[i].key; - } else { - printf("Cannot allocate memory for keys on merge."); - free(keys); - break; - } - } - } - } else { - printf("Cannot allocate memory for ck on uniqsort."); + for (i = 0, j = 0; i < manyThread; i++) { + if (pRPs[i].keyCount > 0) { + // printf("The thread %d recover %d keys.\r\n", i, pRPs[i].keyCount); + if (pRPs[i].keys != NULL) { + memcpy( + keys + j, + pRPs[i].keys, + pRPs[i].keyCount * sizeof(uint64_t) + ); + j += pRPs[i].keyCount; + free(pRPs[i].keys); } - } else { - printf("Cannot allocate memory to merge keys.\r\n"); } } + + countKeys *ck = uniqsort(keys, *keyCount); + free(keys); + keys = (uint64_t *)NULL; + *keyCount = 0; + + if (ck == NULL) { + printf("Cannot allocate memory for ck on uniqsort."); + free(ck); + free(pRPs); + return NULL; + } + + for (i = 0; i < TRY_KEYS; i++) { + // We don't known this key, try to break it + // This key can be found here two or more times + if (ck[i].count > 0) { + *keyCount += 1; + void *tmp = realloc(keys, sizeof(uint64_t) * (*keyCount)); + if (tmp == NULL) { + printf("Cannot allocate memory for keys on merge."); + free(ck); + free(keys); + free(pRPs); + return NULL; + } + + keys = tmp; + keys[*keyCount - 1] = ck[i].key; + } + } + + free(ck); free(pRPs); return keys; } From 0924cb30bbdd8693ebe26efbe845023fbee07eb2 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 11 Nov 2023 16:46:32 +0100 Subject: [PATCH 0751/1034] fix coverity 421621 --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 086609717..7e9b3b9c9 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -790,7 +790,7 @@ static int mfLoadKeys(uint8_t **pkeyBlock, uint32_t *pkeycnt, uint8_t *userkey, PrintAndLogEx(DEBUG, "[" _YELLOW_("%d") "] key %s", *pkeycnt + i, sprint_hex(*pkeyBlock + (*pkeycnt + i) * MIFARE_KEY_SIZE, MIFARE_KEY_SIZE)); } *pkeycnt += ARRAYLEN(g_mifare_default_keys); - PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%u") " keys from hardcoded default array", ARRAYLEN(g_mifare_default_keys)); + PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%zu") " keys from hardcoded default array", ARRAYLEN(g_mifare_default_keys)); // Handle user supplied dictionary file From 2401a0e27bc1c9f3b1d9b0c52943d16f04f37e21 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 11 Nov 2023 16:47:45 +0100 Subject: [PATCH 0752/1034] fix coverity 420050 --- client/src/fileutils.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 5f923e492..942dafdf0 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -2777,11 +2777,7 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl nfc_df_e foo = detect_nfc_dump_format(fn, true); if (foo == NFC_DF_MFC || foo == NFC_DF_MFU || foo == NFC_DF_PICOPASS) { - if (foo == NFC_DF_MFC) { - *pdump = calloc(maxdumplen, sizeof(uint8_t)); - } else { - *pdump = calloc(maxdumplen, sizeof(uint8_t)); - } + *pdump = calloc(maxdumplen, sizeof(uint8_t)); if (*pdump == NULL) { PrintAndLogEx(WARNING, "Fail, cannot allocate memory"); return PM3_EMALLOC; From 8e2e1d4cb4c5b36fed67ef4638ae5c0a32bbc4c2 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 11 Nov 2023 16:50:23 +0100 Subject: [PATCH 0753/1034] fix coverity 420049 --- client/src/fileutils.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 942dafdf0..d8c4afe90 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1195,6 +1195,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s p++; if (ft == NFC_DF_MFU) { + n = 0; param_gethex_to_eol(p, 0, udata.mfu->data + (pageno * MFU_BLOCK_SIZE), MFU_BLOCK_SIZE, &n); *datalen += MFU_BLOCK_SIZE; } From 169d31cc8e50ecd343848810a48cb17fb01df2c2 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 11 Nov 2023 16:53:06 +0100 Subject: [PATCH 0754/1034] fix coverity 265059 --- client/src/cmdhfmf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 7e9b3b9c9..42f610fe6 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2659,6 +2659,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { int ret = mfLoadKeys(&keyBlock, &key_cnt, in_keys, in_keys_len, filename, fnlen); if (ret != PM3_SUCCESS) { + free(e_sector); return ret; } From ba8e90edfd49c144d814e2664f437a54b252f46c Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 9 Nov 2023 17:30:52 +0100 Subject: [PATCH 0755/1034] make style --- client/src/cmdhficlass.c | 5 +- client/src/cmdhfmf.c | 14 ++-- client/src/cmdhfmfu.c | 22 +++---- client/src/cmdnfc.c | 12 ++-- client/src/ksx6924/ksx6924core.c | 106 +++++++++++++++---------------- client/src/pm3line_vocabulary.h | 1 + client/src/util.c | 4 +- doc/commands.json | 34 +++++++--- doc/commands.md | 1 + include/mifare.h | 3 +- tools/pm3_gen_dictionary.py | 6 +- 11 files changed, 113 insertions(+), 95 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 4c60438df..313ecf2ce 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1324,8 +1324,7 @@ static int CmdHFiClassESetBlk(const char *Cmd) { static bool iclass_detect_new_pacs(uint8_t *d) { uint8_t n = 0; while (n++ < (PICOPASS_BLOCK_SIZE / 2)) { - if (d[n] && - d[n + 1] == 0xA6) { + if (d[n] && d[n + 1] == 0xA6) { return true; } } @@ -1336,7 +1335,7 @@ static bool iclass_detect_new_pacs(uint8_t *d) { static int iclass_decode_credentials_new_pacs(uint8_t *d) { uint8_t offset = 0; - while(d[offset] == 0 && (offset < PICOPASS_BLOCK_SIZE / 2)) { + while (d[offset] == 0 && (offset < PICOPASS_BLOCK_SIZE / 2)) { offset++; } diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 42f610fe6..334933a5c 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2431,7 +2431,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { int in_keys_len = 0; uint8_t in_keys[100 * MIFARE_KEY_SIZE] = {0}; CLIGetHexWithReturn(ctx, 1, in_keys, &in_keys_len); - + uint8_t sectorno = arg_get_u32_def(ctx, 2, 0); uint8_t keytype = MF_KEY_A; @@ -7409,7 +7409,7 @@ static int CmdHF14AGen4Info(const char *cmd) { PrintAndLogEx(INFO, "Raw config [%02zu]..... %s", resplen, sprint_hex_inrow(resp, resplen)); PrintAndLogEx(INFO, "UL protocol......... %02x" NOLF, resp[0]); - switch (resp[0]){ + switch (resp[0]) { case 0x00: PrintAndLogEx(NORMAL, " (MIFARE Classic mode)"); break; @@ -7423,7 +7423,7 @@ static int CmdHF14AGen4Info(const char *cmd) { uint8_t uid_len = resp[1]; PrintAndLogEx(INFO, "UID length.......... %02x" NOLF, resp[1]); - switch (resp[1]){ + switch (resp[1]) { case 0x00: PrintAndLogEx(NORMAL, " (4 byte)"); break; @@ -7441,7 +7441,7 @@ static int CmdHF14AGen4Info(const char *cmd) { PrintAndLogEx(INFO, "Password............ %s", sprint_hex_inrow(&resp[2], 4)); PrintAndLogEx(INFO, "GTU mode............ %02x" NOLF, resp[6]); - switch (resp[6]){ + switch (resp[6]) { case 0x00: PrintAndLogEx(NORMAL, " (pre-write, shadow data can be written)"); break; @@ -7464,7 +7464,7 @@ static int CmdHF14AGen4Info(const char *cmd) { PrintAndLogEx(INFO, "SAK................. %02x", resp[26]); PrintAndLogEx(INFO, "UL mode............. %02x" NOLF, resp[27]); - switch (resp[27]){ + switch (resp[27]) { case 0x00: PrintAndLogEx(NORMAL, " (UL EV1)"); break; @@ -7484,7 +7484,7 @@ static int CmdHF14AGen4Info(const char *cmd) { PrintAndLogEx(INFO, "max rd/wr sectors... %02x", resp[28]); PrintAndLogEx(INFO, "block0 direct wr.... %02x" NOLF, resp[29]); - switch (resp[29]){ + switch (resp[29]) { case 0x00: PrintAndLogEx(NORMAL, " (Activate direct write to block 0 (Same behaviour of Gen2 cards. Some readers may identify the card as magic))"); break; @@ -7524,7 +7524,7 @@ static int CmdHF14AGen4Info(const char *cmd) { PrintAndLogEx(INFO, ""); PrintAndLogEx(INFO, "Block 0............. %s", sprint_hex_inrow(resp, 16)); - switch (uid_len){ + switch (uid_len) { case 0x00: PrintAndLogEx(INFO, "UID [4]............. %s", sprint_hex(resp, 4)); break; diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 161055042..f19f36f99 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -1123,7 +1123,7 @@ static int ulev1_print_signature(uint64_t tagtype, uint8_t *uid, uint8_t *signat PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Signature")); - if (is_192_valid ) { + if (is_192_valid) { PrintAndLogEx(INFO, " IC signature public key name: " _GREEN_("%s"), nxp_mfu_192_public_keys[i].desc); PrintAndLogEx(INFO, "IC signature public key value: %s", nxp_mfu_192_public_keys[i].value); PrintAndLogEx(INFO, " Elliptic curve parameters: NID_secp192r1"); @@ -1141,7 +1141,7 @@ static int ulev1_print_signature(uint64_t tagtype, uint8_t *uid, uint8_t *signat return PM3_SUCCESS; } - PrintAndLogEx(INFO, " Elliptic curve parameters: %s", (signature_len == 48) ? "NID_secp192r1" : "NID_secp128r1" ); + PrintAndLogEx(INFO, " Elliptic curve parameters: %s", (signature_len == 48) ? "NID_secp192r1" : "NID_secp128r1"); PrintAndLogEx(INFO, " TAG IC Signature: %s", sprint_hex_inrow(signature, signature_len)); PrintAndLogEx(SUCCESS, " Signature verification ( " _RED_("fail") " )"); return PM3_ESOFT; @@ -1926,10 +1926,10 @@ static int CmdHF14AMfUInfo(const char *Cmd) { // Read signature if ((tagtype & (MFU_TT_UL_EV1_48 | MFU_TT_UL_EV1_128 | MFU_TT_UL_EV1 | MFU_TT_UL_NANO_40 | - MFU_TT_NTAG_210u | MFU_TT_NTAG_213 | MFU_TT_NTAG_213_F | MFU_TT_NTAG_213_C | - MFU_TT_NTAG_213_TT | MFU_TT_NTAG_215 | MFU_TT_NTAG_216 | MFU_TT_NTAG_216_F | - MFU_TT_NTAG_I2C_1K | MFU_TT_NTAG_I2C_2K | MFU_TT_NTAG_I2C_1K_PLUS | MFU_TT_NTAG_I2C_2K_PLUS | - MFU_TT_UL_AES))) { + MFU_TT_NTAG_210u | MFU_TT_NTAG_213 | MFU_TT_NTAG_213_F | MFU_TT_NTAG_213_C | + MFU_TT_NTAG_213_TT | MFU_TT_NTAG_215 | MFU_TT_NTAG_216 | MFU_TT_NTAG_216_F | + MFU_TT_NTAG_I2C_1K | MFU_TT_NTAG_I2C_2K | MFU_TT_NTAG_I2C_1K_PLUS | MFU_TT_NTAG_I2C_2K_PLUS | + MFU_TT_UL_AES))) { uint8_t ulev1_signature[49] = {0x00}; status = ulev1_readSignature(ulev1_signature, sizeof(ulev1_signature)); if (status == -1) { @@ -2377,11 +2377,11 @@ void printMFUdumpEx(mfu_dump_t *card, uint16_t pages, uint8_t startpage) { for (uint16_t i = 0; i < pages; ++i) { if (i < 3) { PrintAndLogEx(INFO, "%3d/0x%02X | " _RED_("%s")"| | %s", - i + startpage, - i + startpage, - sprint_hex(data + i * 4, 4), - sprint_ascii(data + i * 4, 4) - ); + i + startpage, + i + startpage, + sprint_hex(data + i * 4, 4), + sprint_ascii(data + i * 4, 4) + ); continue; } switch (i) { diff --git a/client/src/cmdnfc.c b/client/src/cmdnfc.c index 1096dec8f..06ddf0f10 100644 --- a/client/src/cmdnfc.c +++ b/client/src/cmdnfc.c @@ -116,19 +116,19 @@ static int CmdNfcDecode(const char *Cmd) { uint8_t *tmp = dump; // if not MIFARE Classic default sizes, assume its Ultralight/NTAG - if ( bytes_read != MIFARE_4K_MAX_BYTES - && bytes_read != MIFARE_2K_MAX_BYTES - && bytes_read != MIFARE_1K_MAX_BYTES - && bytes_read != MIFARE_MINI_MAX_BYTES) { + if (bytes_read != MIFARE_4K_MAX_BYTES + && bytes_read != MIFARE_2K_MAX_BYTES + && bytes_read != MIFARE_1K_MAX_BYTES + && bytes_read != MIFARE_MINI_MAX_BYTES) { uint8_t **pd = &tmp; mfu_df_e df = detect_mfu_dump_format(pd, verbose); if (df == MFU_DF_OLDBIN) { tmp += OLD_MFU_DUMP_PREFIX_LENGTH + (4 * 4); - bytes_read -= OLD_MFU_DUMP_PREFIX_LENGTH + ( 4 * 4); + bytes_read -= OLD_MFU_DUMP_PREFIX_LENGTH + (4 * 4); } else if (df == MFU_DF_NEWBIN) { tmp += MFU_DUMP_PREFIX_LENGTH + (4 * 4); - bytes_read -= MFU_DUMP_PREFIX_LENGTH + ( 4 * 4); + bytes_read -= MFU_DUMP_PREFIX_LENGTH + (4 * 4); } pd = NULL; diff --git a/client/src/ksx6924/ksx6924core.c b/client/src/ksx6924/ksx6924core.c index a46d1a055..fa943eeba 100644 --- a/client/src/ksx6924/ksx6924core.c +++ b/client/src/ksx6924/ksx6924core.c @@ -112,79 +112,79 @@ MAKE_ENUM_TYPE(uint8_t) // KSX6924LookupCardType MAKE_ENUM_CONST(CardType, uint8_t, - { 0x00, "Pre-paid" }, - { 0x10, "Post-pay" }, - { 0x20, "Mobile post-pay" }, -) +{ 0x00, "Pre-paid" }, +{ 0x10, "Post-pay" }, +{ 0x20, "Mobile post-pay" }, + ) // KSX6924LookupAlg MAKE_ENUM_CONST(Alg, uint8_t, - { 0x00, "SEED" }, - { 0x10, "3DES" }, -) +{ 0x00, "SEED" }, +{ 0x10, "3DES" }, + ) // KSX6924LookupTMoneyIDCenter MAKE_ENUM_CONST(TMoneyIDCenter, uint8_t, - { 0x00, "Reserved" }, - { 0x01, "Korea Financial Telecommunications and Clearings Institute" }, - { 0x02, "A-Cash" }, - { 0x03, "Mybi" }, - { 0x04, "Reserved" }, - { 0x05, "V-Cash" }, - { 0x06, "Mondex Korea" }, - { 0x07, "Korea Expressway Corporation" }, - { 0x08, "Tmoney Co., Ltd." }, - { 0x09, "KORAIL Networks" }, - { 0x0a, "Reserved" }, - { 0x0b, "EB Card Corporation" }, - { 0x0c, "Seoul Bus Transport Association" }, - { 0x0d, "Cardnet" }, -) +{ 0x00, "Reserved" }, +{ 0x01, "Korea Financial Telecommunications and Clearings Institute" }, +{ 0x02, "A-Cash" }, +{ 0x03, "Mybi" }, +{ 0x04, "Reserved" }, +{ 0x05, "V-Cash" }, +{ 0x06, "Mondex Korea" }, +{ 0x07, "Korea Expressway Corporation" }, +{ 0x08, "Tmoney Co., Ltd." }, +{ 0x09, "KORAIL Networks" }, +{ 0x0a, "Reserved" }, +{ 0x0b, "EB Card Corporation" }, +{ 0x0c, "Seoul Bus Transport Association" }, +{ 0x0d, "Cardnet" }, + ) // KSX6924LookupTMoneyUserCode MAKE_ENUM_CONST(TMoneyUserCode, uint8_t, - { 0x01, "Regular/normal" }, - { 0x02, "Child" }, - { 0x04, "Youth" }, - { 0x06, "elderly" }, - { 0x0f, "Test" }, - { 0xff, "Inactive" }, -) +{ 0x01, "Regular/normal" }, +{ 0x02, "Child" }, +{ 0x04, "Youth" }, +{ 0x06, "elderly" }, +{ 0x0f, "Test" }, +{ 0xff, "Inactive" }, + ) // KSX6924LookupTMoneyDisRate MAKE_ENUM_CONST(TMoneyDisRate, uint8_t, - { 0x00, "No discount" }, +{ 0x00, "No discount" }, - { 0x10, "Disabled, basic" }, - { 0x11, "Disabled, companion" }, +{ 0x10, "Disabled, basic" }, +{ 0x11, "Disabled, companion" }, - { 0x20, "Merit, basic" }, - { 0x21, "Merit, companion" }, -) +{ 0x20, "Merit, basic" }, +{ 0x21, "Merit, companion" }, + ) // KSX6924LookupTMoneyTCode MAKE_ENUM_CONST(TMoneyTCode, uint8_t, - { 0x00, "None" }, - { 0x01, "SK Telecom" }, - { 0x02, "Korea Telecom" }, - { 0x03, "LG Uplus" }, -) +{ 0x00, "None" }, +{ 0x01, "SK Telecom" }, +{ 0x02, "Korea Telecom" }, +{ 0x03, "LG Uplus" }, + ) // KSX6924LookupTMoneyCCode MAKE_ENUM_CONST(TMoneyCCode, uint8_t, - { 0x00, "None" }, - { 0x01, "KB Card" }, - { 0x02, "NH Card" }, - { 0x03, "Lotte Card" }, - { 0x04, "BC Card" }, - { 0x05, "Samsung Card" }, - { 0x06, "Shinhan Card" }, - { 0x07, "Citibank Korea" }, - { 0x08, "Korea Exchange Bank" }, - { 0x09, "Woori Card" }, - { 0x0a, "Hana SK Card" }, - { 0x0b, "Hyundai Card" }, -) +{ 0x00, "None" }, +{ 0x01, "KB Card" }, +{ 0x02, "NH Card" }, +{ 0x03, "Lotte Card" }, +{ 0x04, "BC Card" }, +{ 0x05, "Samsung Card" }, +{ 0x06, "Shinhan Card" }, +{ 0x07, "Citibank Korea" }, +{ 0x08, "Korea Exchange Bank" }, +{ 0x09, "Woori Card" }, +{ 0x0a, "Hana SK Card" }, +{ 0x0b, "Hyundai Card" }, + ) static const char *KSX6924_UNKNOWN = "Unknown"; diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index a0fcee232..46c33389d 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -372,6 +372,7 @@ const static vocabulary_t vocabulary[] = { { 0, "hf mf gsave" }, { 0, "hf mf gsetblk" }, { 0, "hf mf gview" }, + { 0, "hf mf gchpwd" }, { 0, "hf mf gdmcfg" }, { 0, "hf mf gdmsetcfg" }, { 0, "hf mf gdmsetblk" }, diff --git a/client/src/util.c b/client/src/util.c index 65e8349da..205c2d32f 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -1200,8 +1200,8 @@ char *str_ndup(const char *src, size_t len) { size_t str_nlen(const char *src, size_t maxlen) { size_t len = 0; - if(src) { - for(char c = *src; (len < maxlen && c != '\0'); c = *++src) { + if (src) { + for (char c = *src; (len < maxlen && c != '\0'); c = *++src) { len++; } } diff --git a/doc/commands.json b/doc/commands.json index 35bb46ec4..03751cbe2 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -4013,7 +4013,8 @@ "hf mf autopwn", "hf mf autopwn -s 0 -a -k FFFFFFFFFFFF -> target MFC 1K card, Sector 0 with known key A 'FFFFFFFFFFFF'", "hf mf autopwn --1k -f mfc_default_keys -> target MFC 1K card, default dictionary", - "hf mf autopwn --1k -s 0 -a -k FFFFFFFFFFFF -f mfc_default_keys -> combo of the two above samples" + "hf mf autopwn --1k -s 0 -a -k FFFFFFFFFFFF -f mfc_default_keys -> combo of the two above samples", + "hf mf autopwn --1k -s 0 -a -k FFFFFFFFFFFF -k a0a1a2a3a4a5 -> multiple user supplied keys" ], "offline": false, "options": [ @@ -4037,7 +4038,7 @@ "--i2 AVX2", "--i5 AVX512" ], - "usage": "hf mf autopwn [-hablv] [-k <hex>] [-s <dec>] [-f <fn>] [--slow] [--mini] [--1k] [--2k] [--4k] [--in] [--im] [--is] [--ia] [--i2] [--i5]" + "usage": "hf mf autopwn [-hablv] [-k <hex>]... [-s <dec>] [-f <fn>] [--slow] [--mini] [--1k] [--2k] [--4k] [--in] [--im] [--is] [--ia] [--i2] [--i5]" }, "hf mf cgetblk": { "command": "hf mf cgetblk", @@ -4453,6 +4454,21 @@ ], "usage": "hf mf fchk [-h] [-k <hex>]... [--mini] [--1k] [--2k] [--4k] [--emu] [--dump] [--mem] [-f <fn>]" }, + "hf mf gchpwd": { + "command": "hf mf gchpwd", + "description": "Change access password for Gen4 GTU card. WARNING! If you dont KNOW the password - you CAN'T access it!!!", + "notes": [ + "hf mf gchpwd --pwd 00000000 --newpwd 01020304" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-p, --pwd <hex> password 4 bytes", + "-n, --newpwd <hex> new password 4 bytes", + "-v, --verbose verbose output" + ], + "usage": "hf mf gchpwd [-hv] [-p <hex>] [-n <hex>]" + }, "hf mf gdmcfg": { "command": "hf mf gdmcfg", "description": "Get configuration data from magic gen4 GDM card.", @@ -7686,13 +7702,15 @@ "command": "hw status", "description": "Show runtime status information about the connected Proxmark3", "notes": [ - "hw status" + "hw status", + "hw status --ms 1000 -> Test connection speed with 1000ms timeout" ], "offline": false, "options": [ - "-h, --help This help" + "-h, --help This help", + "-m, --ms <ms> speed test timeout in micro seconds" ], - "usage": "hw status [-h]" + "usage": "hw status [-h] [-m <ms>]" }, "hw tearoff": { "command": "hw tearoff", @@ -8955,7 +8973,7 @@ "-1, --ht1 Card type Hitag 1", "-2, --ht2 Card type Hitag 2", "-s, --hts Card type Hitag S", - "-m, --htm Card type Hitag \u041e\u0458" + "-m, --htm Card type Hitag \u03bc" ], "usage": "lf hitag eload [-h12sm] -f <fn>" }, @@ -12031,8 +12049,8 @@ } }, "metadata": { - "commands_extracted": 697, + "commands_extracted": 698, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-11-05T22:22:55" + "extracted_on": "2023-11-09T16:29:08" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 0ff13a82e..94c3aa8ee 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -535,6 +535,7 @@ Check column "offline" for their availability. |`hf mf gsave `|N |`Save dump from card into file or emulator` |`hf mf gsetblk `|N |`Write block to card` |`hf mf gview `|N |`View card` +|`hf mf gchpwd `|N |`Change card access password. Warning!` |`hf mf gdmcfg `|N |`Read config block from card` |`hf mf gdmsetcfg `|N |`Write config block to card` |`hf mf gdmsetblk `|N |`Write block to card` diff --git a/include/mifare.h b/include/mifare.h index 1c4125127..5dc04e0c7 100644 --- a/include/mifare.h +++ b/include/mifare.h @@ -73,8 +73,7 @@ typedef struct { } iso14a_mf_extdump_t; typedef struct { - union - { + union { iso14a_card_select_t mfc; iso14a_card_select_ev1_t ev1; } card; diff --git a/tools/pm3_gen_dictionary.py b/tools/pm3_gen_dictionary.py index 7234dee20..02275642e 100755 --- a/tools/pm3_gen_dictionary.py +++ b/tools/pm3_gen_dictionary.py @@ -38,7 +38,7 @@ import fnmatch # # Info: # Will search all dump files files in given folder and all its subfolders -# With the option to save found keys to a text file. +# With the option to save found keys to a text file. # ''' @@ -60,7 +60,7 @@ def parse_keys(line): if not key: return [] - try: + try: keys.add(key[0]) keys.add(key[1]) except AttributeError: @@ -116,7 +116,7 @@ def main(): found = False for line in msg.splitlines(): - if found == False: + if found == False: key_row = line.find('000 | 003') if key_row > -1: found = True From 9f8c02bf967bddac5925466af64d7e049a01d10f Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 9 Nov 2023 18:02:45 +0100 Subject: [PATCH 0756/1034] fix CWE-562: Return of Stack Variable Address --- client/src/cmdhfntag424.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index 97a271c84..277b2ec18 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -269,7 +269,7 @@ static void ntag424_calc_send_iv(ntag424_session_keys_t *session_keys, uint8_t * aes_encode(zero_iv, session_keys->encryption, iv_clear, out_ivc, 16); } -static void ntag424_calc_recieve_iv(ntag424_session_keys_t *session_keys, uint8_t *out_ivc) { +static void ntag424_calc_receive_iv(ntag424_session_keys_t *session_keys, uint8_t *out_ivc) { uint8_t iv_clear[] = { 0x5a, 0xa5, session_keys->ti[0], session_keys->ti[1], session_keys->ti[2], session_keys->ti[3], (uint8_t)(session_keys->command_counter), (uint8_t)(session_keys->command_counter >> 8), @@ -347,7 +347,7 @@ static int ntag424_comm_encrypt_apdu(APDU_t *apdu, int command_header_length, in return PM3_SUCCESS; } -static int ntag424_exchange_apdu(APDU_t *apdu, int command_header_length, uint8_t *response, int *response_length, ntag424_communication_mode_t comm_mode, ntag424_session_keys_t *session_keys, uint8_t sw1_expected, uint8_t sw2_expected) { +static int ntag424_exchange_apdu(APDU_t apdu, int command_header_length, uint8_t *response, int *response_length, ntag424_communication_mode_t comm_mode, ntag424_session_keys_t *session_keys, uint8_t sw1_expected, uint8_t sw2_expected) { int res; @@ -360,19 +360,19 @@ static int ntag424_exchange_apdu(APDU_t *apdu, int command_header_length, uint8_ PrintAndLogEx(ERR, "Non-plain communications mode requested but no session keys supplied"); return PM3_EINVARG; } - memcpy(tmp_apdu_buffer, apdu->data, apdu->lc); - apdu->data = tmp_apdu_buffer; + memcpy(tmp_apdu_buffer, apdu.data, apdu.lc); + apdu.data = tmp_apdu_buffer; } if (comm_mode == COMM_FULL) { - res = ntag424_comm_encrypt_apdu(apdu, command_header_length, buffer_length, session_keys); + res = ntag424_comm_encrypt_apdu(&apdu, command_header_length, buffer_length, session_keys); if (res != PM3_SUCCESS) { return res; } } if (comm_mode == COMM_MAC || comm_mode == COMM_FULL) { - res = ntag424_comm_mac_apdu(apdu, command_header_length, buffer_length, session_keys); + res = ntag424_comm_mac_apdu(&apdu, command_header_length, buffer_length, session_keys); if (res != PM3_SUCCESS) { return res; } @@ -381,7 +381,7 @@ static int ntag424_exchange_apdu(APDU_t *apdu, int command_header_length, uint8_ uint8_t cmd[256] = {0}; int apdu_length = 256; - if (APDUEncode(apdu, cmd, &apdu_length) != 0) { + if (APDUEncode(&apdu, cmd, &apdu_length) != 0) { return PM3_EINVARG; } @@ -408,7 +408,7 @@ static int ntag424_exchange_apdu(APDU_t *apdu, int command_header_length, uint8_ // should also be done here if (comm_mode == COMM_FULL) { uint8_t iv[16] = {0}; - ntag424_calc_recieve_iv(session_keys, iv); + ntag424_calc_receive_iv(session_keys, iv); uint8_t tmp[256]; memcpy(tmp, response, *response_length); @@ -433,7 +433,7 @@ static int ntag424_get_file_settings(uint8_t fileno, ntag424_file_settings_t *se .extended_apdu = false }; - int res = ntag424_exchange_apdu(&apdu, 1, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00); + int res = ntag424_exchange_apdu(apdu, 1, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00); if (res != PM3_SUCCESS) { return res; } @@ -473,7 +473,7 @@ static int ntag424_write_file_settings(uint8_t fileno, ntag424_file_settings_t * int response_length = 8 + 2; uint8_t response[response_length]; - int res = ntag424_exchange_apdu(&apdu, 1, response, &response_length, COMM_FULL, session_keys, 0x91, 0x00); + int res = ntag424_exchange_apdu(apdu, 1, response, &response_length, COMM_FULL, session_keys, 0x91, 0x00); return res; } @@ -540,7 +540,7 @@ static int ntag424_auth_first_step(uint8_t keyno, uint8_t *key, uint8_t *out) { int response_length = 16 + 2; uint8_t response[response_length]; - int res = ntag424_exchange_apdu(&apdu, 2, response, &response_length, COMM_PLAIN, NULL, 0x91, 0xAF); + int res = ntag424_exchange_apdu(apdu, 2, response, &response_length, COMM_PLAIN, NULL, 0x91, 0xAF); if (res != PM3_SUCCESS) { return res; } @@ -566,7 +566,7 @@ static int ntag424_auth_second_step(uint8_t *challenge, uint8_t *response_out) { int response_length = 256; uint8_t response[response_length]; - int res = ntag424_exchange_apdu(&apdu, 0x20, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00); + int res = ntag424_exchange_apdu(apdu, 0x20, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00); if (res != PM3_SUCCESS) { return res; } @@ -710,7 +710,7 @@ static int ntag424_write_data(uint8_t fileno, uint32_t offset, uint32_t num_byte int response_length = 8 + 2; // potential MAC and result uint8_t response[response_length]; - int res = ntag424_exchange_apdu(&apdu, sizeof(cmd_header), response, &response_length, comm_mode, session_keys, 0x91, 0x00); + int res = ntag424_exchange_apdu(apdu, sizeof(cmd_header), response, &response_length, comm_mode, session_keys, 0x91, 0x00); if (res != PM3_SUCCESS) { return res; } @@ -741,7 +741,7 @@ static int ntag424_read_data(uint8_t fileno, uint16_t offset, uint16_t num_bytes int response_length = num_bytes + 4 + 2 + 20; // number of bytes to read + mac + result + potential padding uint8_t response[response_length]; - int res = ntag424_exchange_apdu(&apdu, sizeof(cmd_header), response, &response_length, comm_mode, session_keys, 0x91, 0x00); + int res = ntag424_exchange_apdu(apdu, sizeof(cmd_header), response, &response_length, comm_mode, session_keys, 0x91, 0x00); if (res != PM3_SUCCESS) { return res; } @@ -760,7 +760,7 @@ static int ntag424_get_version(ntag424_full_version_information_t *version) { uint8_t response[256]; int response_length = sizeof(ntag424_version_information_t) + 2; - if (ntag424_exchange_apdu(&apdu, 0, response, &response_length, COMM_PLAIN, NULL, 0x91, 0xAF) != PM3_SUCCESS) { + if (ntag424_exchange_apdu(apdu, 0, response, &response_length, COMM_PLAIN, NULL, 0x91, 0xAF) != PM3_SUCCESS) { return PM3_ESOFT; } memcpy(&version->hardware, response, sizeof(ntag424_version_information_t)); @@ -771,13 +771,13 @@ static int ntag424_get_version(ntag424_full_version_information_t *version) { }; response_length = sizeof(ntag424_version_information_t) + 2; - if (ntag424_exchange_apdu(&continue_apdu, 0, response, &response_length, COMM_PLAIN, NULL, 0x91, 0xAF) != PM3_SUCCESS) { + if (ntag424_exchange_apdu(continue_apdu, 0, response, &response_length, COMM_PLAIN, NULL, 0x91, 0xAF) != PM3_SUCCESS) { return PM3_ESOFT; } memcpy(&version->software, response, sizeof(ntag424_version_information_t)); response_length = sizeof(ntag424_production_information_t) + 2; - if (ntag424_exchange_apdu(&continue_apdu, 0, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00) != PM3_SUCCESS) { + if (ntag424_exchange_apdu(continue_apdu, 0, response, &response_length, COMM_PLAIN, NULL, 0x91, 0x00) != PM3_SUCCESS) { return PM3_ESOFT; } memcpy(&version->production, response, sizeof(ntag424_production_information_t)); @@ -800,7 +800,7 @@ static int ntag424_get_signature(uint8_t *signature_out) { int response_length = NXP_SIGNATURE_LENGTH + 2; // This is a weird one. Datasheet claims this command should result in 91 00, but cards, and the AN12196 // document shows 91 90 on success. - if (ntag424_exchange_apdu(&apdu, 1, signature_out, &response_length, COMM_PLAIN, NULL, 0x91, 0x90) != PM3_SUCCESS) { + if (ntag424_exchange_apdu(apdu, 1, signature_out, &response_length, COMM_PLAIN, NULL, 0x91, 0x90) != PM3_SUCCESS) { return PM3_ESOFT; } @@ -843,7 +843,7 @@ static int ntag424_change_key(uint8_t keyno, uint8_t *new_key, uint8_t *old_key, int response_length = 8 + 2; uint8_t response[response_length]; - int res = ntag424_exchange_apdu(&apdu, 1, response, &response_length, COMM_FULL, session_keys, 0x91, 0x00); + int res = ntag424_exchange_apdu(apdu, 1, response, &response_length, COMM_FULL, session_keys, 0x91, 0x00); return res; } From 73db5cb912ab8b4132732838772d557a893df434 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 9 Nov 2023 18:03:08 +0100 Subject: [PATCH 0757/1034] style: missing include of own header --- armsrc/sam_mfc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/armsrc/sam_mfc.c b/armsrc/sam_mfc.c index f2dee067c..090f4a781 100644 --- a/armsrc/sam_mfc.c +++ b/armsrc/sam_mfc.c @@ -15,6 +15,7 @@ //----------------------------------------------------------------------------- // Routines to support MFC <-> SAM communication //----------------------------------------------------------------------------- +#include "sam_mfc.h" #include "sam_seos.h" #include "iclass.h" From 3cb023f560c2db8a7ce14ef806ee87ad944afbc8 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 9 Nov 2023 18:16:31 +0100 Subject: [PATCH 0758/1034] arraylen --- common/cardhelper.c | 3 ++- tools/hitag2crack/crack5opencl/opencl.c | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/common/cardhelper.c b/common/cardhelper.c index 623e1c1f4..fc4fe2503 100644 --- a/common/cardhelper.c +++ b/common/cardhelper.c @@ -22,6 +22,7 @@ #include "cmdsmartcard.h" #include "ui.h" #include "util.h" +#include "commonutil.h" #define CARD_INS_DECRYPT 0x01 #define CARD_INS_ENCRYPT 0x02 @@ -78,7 +79,7 @@ bool IsHIDSamPresent(bool verbose) { {11, {0x3b, 0x90, 0x96, 0x91, 0x81, 0xb1, 0xfe, 0x55, 0x1f, 0xc7, 0xd4}}, }; bool found = false; - for (int i = 0; i < sizeof(supported) / sizeof(supported[0]); i++) { + for (int i = 0; i < ARRAYLEN(supported); i++) { if ((card.atr_len == supported[i].atr_len) && (memcmp(card.atr, supported[i].atr, supported[i].atr_len) == 0)) { found = true; diff --git a/tools/hitag2crack/crack5opencl/opencl.c b/tools/hitag2crack/crack5opencl/opencl.c index aadca459a..79b7b1e92 100644 --- a/tools/hitag2crack/crack5opencl/opencl.c +++ b/tools/hitag2crack/crack5opencl/opencl.c @@ -23,6 +23,7 @@ License: GNU General Public License v3 or any later version (see LICENSE.txt) ****************************************************************************/ #include "opencl.h" +#define ARRAYLEN(x) (sizeof(x)/sizeof((x)[0])) bool plat_dev_enabled(unsigned int id, const unsigned int *sel, unsigned int cnt, unsigned int cur_type, unsigned int allow_type) { @@ -106,10 +107,10 @@ int discoverDevices(unsigned int profile_selected, uint32_t device_types_selecte } cl_platform_info ocl_platforms_info[3] = { CL_PLATFORM_NAME, CL_PLATFORM_VENDOR, CL_PLATFORM_VERSION }; - unsigned int ocl_platforms_info_cnt = sizeof(ocl_platforms_info) / sizeof(cl_platform_info); + unsigned int ocl_platforms_info_cnt = ARRAYLEN(ocl_platforms_info); cl_device_info ocl_devices_info[8] = { CL_DEVICE_TYPE, CL_DEVICE_NAME, CL_DEVICE_VERSION, CL_DRIVER_VERSION, CL_DEVICE_VENDOR, CL_DEVICE_LOCAL_MEM_TYPE, CL_DEVICE_MAX_WORK_ITEM_SIZES, CL_DEVICE_MAX_COMPUTE_UNITS }; - unsigned int ocl_devices_info_cnt = sizeof(ocl_devices_info) / sizeof(cl_device_info); + unsigned int ocl_devices_info_cnt = ARRAYLEN(ocl_devices_info); unsigned int info_idx; size_t tmp_len = 0; From a42cb6dea1695c63c3a91edede35722cc1fc740c Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sat, 11 Nov 2023 18:23:58 +0100 Subject: [PATCH 0759/1034] experimental_lib/example_c port as arg --- client/experimental_lib/example_c/02run_test.sh | 2 +- client/experimental_lib/example_c/02run_test_grab.sh | 2 +- client/experimental_lib/example_c/test.c | 8 +++++++- client/experimental_lib/example_c/test_grab.c | 11 +++++++++-- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/client/experimental_lib/example_c/02run_test.sh b/client/experimental_lib/example_c/02run_test.sh index a3e4ec057..7da0e3700 100755 --- a/client/experimental_lib/example_c/02run_test.sh +++ b/client/experimental_lib/example_c/02run_test.sh @@ -1,3 +1,3 @@ #!/bin/bash -LD_LIBRARY_PATH=../build ./test +LD_LIBRARY_PATH=../build ./test /dev/ttyACM0 diff --git a/client/experimental_lib/example_c/02run_test_grab.sh b/client/experimental_lib/example_c/02run_test_grab.sh index 2dd6f892b..93545c422 100755 --- a/client/experimental_lib/example_c/02run_test_grab.sh +++ b/client/experimental_lib/example_c/02run_test_grab.sh @@ -1,3 +1,3 @@ #!/bin/bash -LD_LIBRARY_PATH=../build ./test_grab +LD_LIBRARY_PATH=../build ./test_grab /dev/ttyACM0 diff --git a/client/experimental_lib/example_c/test.c b/client/experimental_lib/example_c/test.c index a3cf212dc..319b6b08e 100644 --- a/client/experimental_lib/example_c/test.c +++ b/client/experimental_lib/example_c/test.c @@ -1,8 +1,14 @@ +#include <stdio.h> +#include <stdlib.h> #include "pm3.h" int main(int argc, char *argv[]) { + if (argc < 2) { + printf("Usage: %s <port>\n", argv[0]); + exit(-1); + } pm3 *p; - p = pm3_open("/dev/ttyACM0"); + p = pm3_open(argv[1]); pm3_console(p, "hw status"); pm3_close(p); } diff --git a/client/experimental_lib/example_c/test_grab.c b/client/experimental_lib/example_c/test_grab.c index f4a6c64bf..c785361ba 100644 --- a/client/experimental_lib/example_c/test_grab.c +++ b/client/experimental_lib/example_c/test_grab.c @@ -10,6 +10,11 @@ int main(int argc, char *argv[]) { char buf[8196 + 1]; size_t n; + if (argc < 2) { + printf("Usage: %s <port>\n", argv[0]); + exit(-1); + } + if (pipe(pipefd) == -1) { exit(-1); } @@ -31,8 +36,7 @@ int main(int argc, char *argv[]) { close(pipefd[1]); // Close original write end pm3 *p; - p = pm3_open("/dev/ttyS9"); - //printf("Device: %s\n", pm3_name_get(p)); + p = pm3_open(argv[1]); // Execute the command pm3_console(p, "hw status"); @@ -55,6 +59,9 @@ int main(int argc, char *argv[]) { } else { // null termination buf[n] = 0; + if (strstr(buf, "ERROR") != NULL) { + printf("%s", buf); + } if (strstr(buf, "Unique ID") != NULL) { printf("%s", buf); } From db3c86958a4eddd2d0bd976af06e292b0271b8b6 Mon Sep 17 00:00:00 2001 From: Grayson Martin <grayson@graysonmartin.net> Date: Sat, 11 Nov 2023 14:30:31 -0600 Subject: [PATCH 0760/1034] implement smartcard daemon relay for iso14b cards --- client/src/cmdsmartcard.c | 84 +++++++++++++++++++++++++++++---------- 1 file changed, 62 insertions(+), 22 deletions(-) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index c030746f8..2fada5563 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -37,6 +37,7 @@ #include "mifare.h" #include "util_posix.h" #include "cmdhf14a.h" +#include "cmdhf14b.h" static int CmdHelp(const char *Cmd); @@ -1193,7 +1194,7 @@ static void atsToEmulatedAtr(uint8_t *ats, uint8_t *atr, int *atrLen) { atr[2] = 0x80; atr[3] = 0x01; - uint8_t tck = 0; + uint8_t tck = atr[1] ^ atr[2] ^ atr[3]; for (int i = 0; i < historicalLen; ++i) { atr[4 + i] = ats[offset + i]; tck = tck ^ ats[offset + i]; @@ -1203,6 +1204,24 @@ static void atsToEmulatedAtr(uint8_t *ats, uint8_t *atr, int *atrLen) { *atrLen = 5 + historicalLen; } +static void atqbToEmulatedAtr(uint8_t *atqb, uint8_t cid, uint8_t *atr, int *atrLen) { + atr[0] = 0x3B; + atr[1] = 0x80 | 8; + atr[2] = 0x80; + atr[3] = 0x01; + + memcpy(atr + 4, atqb, 7); + atr[11] = cid >> 4; + + uint8_t tck = 0; + for (int i = 1; i < 12; ++i) { + tck = tck ^ atr[i]; + } + atr[12] = tck; + + *atrLen = 13; +} + static int CmdRelay(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "smart relay", @@ -1243,11 +1262,13 @@ static int CmdRelay(const char *Cmd) { PrintAndLogEx(INFO, "Relaying pm3 to host OS pcsc daemon. Press " _GREEN_("Enter") " to exit"); uint8_t cmdbuf[512] = {0}; - bool haveCard = false; - iso14a_card_select_t selectedCard; + iso14a_card_select_t selectedCard14a; + iso14b_card_select_t selectedCard14b; + isodep_state_t cardType = ISODEP_INACTIVE; + bool fieldActivated = false; do { - if (haveCard) { + if (cardType != ISODEP_INACTIVE) { int bytesRead = mbedtls_net_recv_timeout(&netCtx, cmdbuf, sizeof(cmdbuf), 100); if (bytesRead == MBEDTLS_ERR_SSL_TIMEOUT || bytesRead == MBEDTLS_ERR_SSL_WANT_READ) { @@ -1258,7 +1279,12 @@ static int CmdRelay(const char *Cmd) { if (cmdbuf[1] == 0x01 && cmdbuf[2] == 0x04) { // vpcd GET ATR uint8_t atr[20] = {0}; int atrLen = 0; - atsToEmulatedAtr(selectedCard.ats, atr, &atrLen); + + if (cardType == ISODEP_NFCA) { + atsToEmulatedAtr(selectedCard14a.ats, atr, &atrLen); + } else if (cardType == ISODEP_NFCB) { + atqbToEmulatedAtr(selectedCard14b.atqb, selectedCard14b.cid, atr, &atrLen); + } uint8_t res[22] = {0}; res[1] = atrLen; @@ -1274,11 +1300,21 @@ static int CmdRelay(const char *Cmd) { PrintAndLogEx(INFO, ">> %s", sprint_hex(cmdbuf + 2, apduLen)); } - if (ExchangeAPDU14a(cmdbuf + 2, apduLen, true, true, apduRes, sizeof(apduRes), &apduResLen) != PM3_SUCCESS) { - haveCard = false; - mbedtls_net_close(&netCtx); - continue; - } + if (cardType == ISODEP_NFCA) { + if (ExchangeAPDU14a(cmdbuf + 2, apduLen, !fieldActivated, true, apduRes, sizeof(apduRes), &apduResLen) != PM3_SUCCESS) { + cardType = ISODEP_INACTIVE; + mbedtls_net_close(&netCtx); + continue; + } + } else if (cardType == ISODEP_NFCB) { + if (exchange_14b_apdu(cmdbuf + 2, apduLen, !fieldActivated, true, apduRes, sizeof(apduRes), &apduResLen, 0)) { + cardType = ISODEP_INACTIVE; + mbedtls_net_close(&netCtx); + continue; + } + } + + fieldActivated = true; if (verbose) { PrintAndLogEx(INFO, "<< %s", sprint_hex(apduRes, apduResLen)); @@ -1292,18 +1328,22 @@ static int CmdRelay(const char *Cmd) { } } } else { - if (SelectCard14443A_4(false, false, &selectedCard) == PM3_SUCCESS) { - if (mbedtls_net_connect(&netCtx, (char *) host, (char *) port, MBEDTLS_NET_PROTO_TCP)) { - PrintAndLogEx(FAILED, "Failed to connect to vpcd socket. Ensure you have vpcd installed and running"); - mbedtls_net_close(&netCtx); - mbedtls_net_free(&netCtx); - DropField(); - return PM3_EINVARG; - } - - haveCard = true; - } - msleep(300); + if (IfPm3Iso14443a() && SelectCard14443A_4(false, false, &selectedCard14a) == PM3_SUCCESS) { + cardType = ISODEP_NFCA; + } else if (IfPm3Iso14443b() && select_card_14443b_4(false, &selectedCard14b) == PM3_SUCCESS) { + cardType = ISODEP_NFCB; + } + if (cardType != ISODEP_INACTIVE) { + fieldActivated = false; + if (mbedtls_net_connect(&netCtx, (char *) host, (char *) port, MBEDTLS_NET_PROTO_TCP)) { + PrintAndLogEx(FAILED, "Failed to connect to vpcd socket. Ensure you have vpcd installed and running"); + mbedtls_net_close(&netCtx); + mbedtls_net_free(&netCtx); + DropField(); + return PM3_EINVARG; + } + } + msleep(300); } } while (!kbd_enter_pressed()); From e65263c73be6bf057a7cffe2555438ab6dbea51c Mon Sep 17 00:00:00 2001 From: Grayson Martin <grayson@graysonmartin.net> Date: Sat, 11 Nov 2023 14:32:09 -0600 Subject: [PATCH 0761/1034] run make style --- client/src/cmdsmartcard.c | 100 +++++++++++++------------- client/src/pm3line_vocabulary.h | 1 + doc/commands.json | 19 ++++- doc/commands.md | 1 + tools/mf_nonce_brute/mf_nonce_brute.c | 14 ++-- tools/mfkey/nested_util.c | 2 +- tools/mfkey/nested_util.h | 2 +- tools/mfkey/staticnested.c | 2 +- 8 files changed, 79 insertions(+), 62 deletions(-) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index 2fada5563..2d6ed052a 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -1205,21 +1205,21 @@ static void atsToEmulatedAtr(uint8_t *ats, uint8_t *atr, int *atrLen) { } static void atqbToEmulatedAtr(uint8_t *atqb, uint8_t cid, uint8_t *atr, int *atrLen) { - atr[0] = 0x3B; - atr[1] = 0x80 | 8; - atr[2] = 0x80; - atr[3] = 0x01; + atr[0] = 0x3B; + atr[1] = 0x80 | 8; + atr[2] = 0x80; + atr[3] = 0x01; - memcpy(atr + 4, atqb, 7); - atr[11] = cid >> 4; + memcpy(atr + 4, atqb, 7); + atr[11] = cid >> 4; - uint8_t tck = 0; - for (int i = 1; i < 12; ++i) { - tck = tck ^ atr[i]; - } - atr[12] = tck; + uint8_t tck = 0; + for (int i = 1; i < 12; ++i) { + tck = tck ^ atr[i]; + } + atr[12] = tck; - *atrLen = 13; + *atrLen = 13; } static int CmdRelay(const char *Cmd) { @@ -1263,9 +1263,9 @@ static int CmdRelay(const char *Cmd) { uint8_t cmdbuf[512] = {0}; iso14a_card_select_t selectedCard14a; - iso14b_card_select_t selectedCard14b; - isodep_state_t cardType = ISODEP_INACTIVE; - bool fieldActivated = false; + iso14b_card_select_t selectedCard14b; + isodep_state_t cardType = ISODEP_INACTIVE; + bool fieldActivated = false; do { if (cardType != ISODEP_INACTIVE) { @@ -1280,11 +1280,11 @@ static int CmdRelay(const char *Cmd) { uint8_t atr[20] = {0}; int atrLen = 0; - if (cardType == ISODEP_NFCA) { - atsToEmulatedAtr(selectedCard14a.ats, atr, &atrLen); - } else if (cardType == ISODEP_NFCB) { - atqbToEmulatedAtr(selectedCard14b.atqb, selectedCard14b.cid, atr, &atrLen); - } + if (cardType == ISODEP_NFCA) { + atsToEmulatedAtr(selectedCard14a.ats, atr, &atrLen); + } else if (cardType == ISODEP_NFCB) { + atqbToEmulatedAtr(selectedCard14b.atqb, selectedCard14b.cid, atr, &atrLen); + } uint8_t res[22] = {0}; res[1] = atrLen; @@ -1300,21 +1300,21 @@ static int CmdRelay(const char *Cmd) { PrintAndLogEx(INFO, ">> %s", sprint_hex(cmdbuf + 2, apduLen)); } - if (cardType == ISODEP_NFCA) { - if (ExchangeAPDU14a(cmdbuf + 2, apduLen, !fieldActivated, true, apduRes, sizeof(apduRes), &apduResLen) != PM3_SUCCESS) { - cardType = ISODEP_INACTIVE; - mbedtls_net_close(&netCtx); - continue; - } - } else if (cardType == ISODEP_NFCB) { - if (exchange_14b_apdu(cmdbuf + 2, apduLen, !fieldActivated, true, apduRes, sizeof(apduRes), &apduResLen, 0)) { - cardType = ISODEP_INACTIVE; - mbedtls_net_close(&netCtx); - continue; - } - } + if (cardType == ISODEP_NFCA) { + if (ExchangeAPDU14a(cmdbuf + 2, apduLen, !fieldActivated, true, apduRes, sizeof(apduRes), &apduResLen) != PM3_SUCCESS) { + cardType = ISODEP_INACTIVE; + mbedtls_net_close(&netCtx); + continue; + } + } else if (cardType == ISODEP_NFCB) { + if (exchange_14b_apdu(cmdbuf + 2, apduLen, !fieldActivated, true, apduRes, sizeof(apduRes), &apduResLen, 0)) { + cardType = ISODEP_INACTIVE; + mbedtls_net_close(&netCtx); + continue; + } + } - fieldActivated = true; + fieldActivated = true; if (verbose) { PrintAndLogEx(INFO, "<< %s", sprint_hex(apduRes, apduResLen)); @@ -1328,22 +1328,22 @@ static int CmdRelay(const char *Cmd) { } } } else { - if (IfPm3Iso14443a() && SelectCard14443A_4(false, false, &selectedCard14a) == PM3_SUCCESS) { - cardType = ISODEP_NFCA; - } else if (IfPm3Iso14443b() && select_card_14443b_4(false, &selectedCard14b) == PM3_SUCCESS) { - cardType = ISODEP_NFCB; - } - if (cardType != ISODEP_INACTIVE) { - fieldActivated = false; - if (mbedtls_net_connect(&netCtx, (char *) host, (char *) port, MBEDTLS_NET_PROTO_TCP)) { - PrintAndLogEx(FAILED, "Failed to connect to vpcd socket. Ensure you have vpcd installed and running"); - mbedtls_net_close(&netCtx); - mbedtls_net_free(&netCtx); - DropField(); - return PM3_EINVARG; - } - } - msleep(300); + if (IfPm3Iso14443a() && SelectCard14443A_4(false, false, &selectedCard14a) == PM3_SUCCESS) { + cardType = ISODEP_NFCA; + } else if (IfPm3Iso14443b() && select_card_14443b_4(false, &selectedCard14b) == PM3_SUCCESS) { + cardType = ISODEP_NFCB; + } + if (cardType != ISODEP_INACTIVE) { + fieldActivated = false; + if (mbedtls_net_connect(&netCtx, (char *) host, (char *) port, MBEDTLS_NET_PROTO_TCP)) { + PrintAndLogEx(FAILED, "Failed to connect to vpcd socket. Ensure you have vpcd installed and running"); + mbedtls_net_close(&netCtx); + mbedtls_net_free(&netCtx); + DropField(); + return PM3_EINVARG; + } + } + msleep(300); } } while (!kbd_enter_pressed()); diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index 46c33389d..48a2ecb91 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -791,6 +791,7 @@ const static vocabulary_t vocabulary[] = { { 1, "smart help" }, { 1, "smart list" }, { 0, "smart info" }, + { 0, "smart relay" }, { 0, "smart reader" }, { 0, "smart raw" }, { 1, "smart upgrade" }, diff --git a/doc/commands.json b/doc/commands.json index 03751cbe2..3320a9c5d 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -11790,6 +11790,21 @@ ], "usage": "smart reader [-hv]" }, + "smart relay": { + "command": "smart relay", + "description": "Make pm3 available to host OS smartcard driver via vpcd to enable use with other software such as GlobalPlatform Pro", + "notes": [ + "Requires the virtual smartcard daemon to be installed and running, see https://frankmorgner.github.io/vsmartcard/virtualsmartcard/README.html" + ], + "offline": false, + "options": [ + "-h, --help This help", + "--host <str> vpcd socket host (default: localhost)", + "-p, --port <int> vpcd socket port (default: 35963)", + "-v, --verbose display APDU transactions between OS and card" + ], + "usage": "smart relay [-hv] [--host <str>] [-p <int>]" + }, "smart setclock": { "command": "smart setclock", "description": "Set clock speed for smart card interface.", @@ -12049,8 +12064,8 @@ } }, "metadata": { - "commands_extracted": 698, + "commands_extracted": 699, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-11-09T16:29:08" + "extracted_on": "2023-11-11T20:31:02" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 94c3aa8ee..ef9dac251 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -1424,6 +1424,7 @@ Check column "offline" for their availability. |`smart help `|Y |`This help` |`smart list `|Y |`List ISO 7816 history` |`smart info `|N |`Tag information` +|`smart relay `|N |`Turn pm3 into pcsc reader and relay to host OS via vpcd` |`smart reader `|N |`Act like an IS07816 reader` |`smart raw `|N |`Send raw hex data to tag` |`smart upgrade `|Y |`Upgrade sim module firmware` diff --git a/tools/mf_nonce_brute/mf_nonce_brute.c b/tools/mf_nonce_brute/mf_nonce_brute.c index 63572da0d..1c00f4eef 100644 --- a/tools/mf_nonce_brute/mf_nonce_brute.c +++ b/tools/mf_nonce_brute/mf_nonce_brute.c @@ -525,7 +525,7 @@ static void *brute_thread(void *arguments) { free(revstate); continue; } - + // lock this section to avoid interlacing prints from different threats pthread_mutex_lock(&print_lock); if (args->ev1) { @@ -533,11 +533,11 @@ static void *brute_thread(void *arguments) { } #if 0 - printf("thread #%d idx %d %s\n", args->thread, args->idx, (args->ev1) ? "(Ev1)" : ""); - printf("current nt(%08x) ar_enc(%08x) at_enc(%08x)\n", nt, ar_enc, at_enc); - printf("ks2:%08x\n", ks2); - printf("ks3:%08x\n", ks3); - printf("ks4:%08x\n", ks4); + printf("thread #%d idx %d %s\n", args->thread, args->idx, (args->ev1) ? "(Ev1)" : ""); + printf("current nt(%08x) ar_enc(%08x) at_enc(%08x)\n", nt, ar_enc, at_enc); + printf("ks2:%08x\n", ks2); + printf("ks3:%08x\n", ks3); + printf("ks4:%08x\n", ks4); #endif if (cmd_enc) { uint32_t decrypted = ks4 ^ cmd_enc; @@ -681,7 +681,7 @@ int main(int argc, const char *argv[]) { // next encrypted command + a full read/write int enc_len = 0; - uint8_t enc[ENC_LEN] = {0}; + uint8_t enc[ENC_LEN] = {0}; if (argc > 9) { param_gethex_to_eol(argv[9], 0, enc, sizeof(enc), &enc_len); cmd_enc = (enc[0] << 24 | enc[1] << 16 | enc[2] << 8 | enc[3]); diff --git a/tools/mfkey/nested_util.c b/tools/mfkey/nested_util.c index 239fe5d88..4b2b86c4c 100644 --- a/tools/mfkey/nested_util.c +++ b/tools/mfkey/nested_util.c @@ -235,7 +235,7 @@ uint64_t *nested(NtpKs1 *pNK, uint32_t sizePNK, uint32_t authuid, uint32_t *keyC free(pRPs); return NULL; } - + for (i = 0; i < TRY_KEYS; i++) { // We don't known this key, try to break it // This key can be found here two or more times diff --git a/tools/mfkey/nested_util.h b/tools/mfkey/nested_util.h index fa0e1552d..140d99414 100644 --- a/tools/mfkey/nested_util.h +++ b/tools/mfkey/nested_util.h @@ -12,4 +12,4 @@ typedef struct { uint8_t valid_nonce(uint32_t Nt, uint32_t NtEnc, uint32_t Ks1, uint8_t *parity); uint64_t *nested(NtpKs1 *pNK, uint32_t sizePNK, uint32_t authuid, uint32_t *keyCount); -#endif \ No newline at end of file +#endif diff --git a/tools/mfkey/staticnested.c b/tools/mfkey/staticnested.c index 70bade540..164dcaaa1 100644 --- a/tools/mfkey/staticnested.c +++ b/tools/mfkey/staticnested.c @@ -233,4 +233,4 @@ int main(int argc, char *const argv[]) { exit(EXIT_SUCCESS); error: exit(EXIT_FAILURE); -} \ No newline at end of file +} From 97f2770982c3425226d284e6dacae8632b022610 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 13 Nov 2023 09:25:41 +0100 Subject: [PATCH 0762/1034] Ignore mbedtls header sitch-enum warnings --- client/src/cmdsmartcard.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index 2d6ed052a..488e5b9d8 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -33,7 +33,12 @@ #include "crc16.h" // crc #include "cliparser.h" // cliparsing #include "atrs.h" // ATR lookup + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wswitch-enum" #include "mbedtls/net_sockets.h" +#pragma GCC diagnostic pop + #include "mifare.h" #include "util_posix.h" #include "cmdhf14a.h" From e0be057f622fa3f125f7a2e6dd0009c99cd31442 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 13 Nov 2023 10:10:44 +0100 Subject: [PATCH 0763/1034] Get Python support of experimental_client_with_swig working again --- CHANGELOG.md | 1 + client/Makefile | 1 - client/experimental_lib/example_py/02run_test.sh | 2 +- .../example_py/02run_test_grab_interactive.sh | 2 +- client/experimental_lib/example_py/02run_test_interactive.sh | 2 +- client/{src => pyscripts}/pm3.py | 0 pm3 | 4 ---- 7 files changed, 4 insertions(+), 8 deletions(-) rename client/{src => pyscripts}/pm3.py (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46dfc8d0f..12bdbe8ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed Python support of `experimental_client_with_swig` (@doegox) - Use proxmark3 as a generic smartcard reader with other software with `smart relay` (@gm3197) - Added `tools\mfkeys\staticnested` - program to recover static nested keys (@iceman1001) - Added `pm3_gen_dictionary.py` - python script to extract and save all keys from MFC dump files. (@iceman1001) diff --git a/client/Makefile b/client/Makefile index 0d4f73928..06b4258bb 100644 --- a/client/Makefile +++ b/client/Makefile @@ -837,7 +837,6 @@ endif ifneq (,$(INSTALLSHARE)) $(Q)$(INSTALLSUDO) $(MKDIR) $(DESTDIR)$(PREFIX)$(PATHSEP)$(INSTALLSHARERELPATH) $(Q)$(INSTALLSUDO) $(CP) $(INSTALLSHARE) $(DESTDIR)$(PREFIX)$(PATHSEP)$(INSTALLSHARERELPATH) - $(Q)$(INSTALLSUDO) $(CP) src/pm3.py $(DESTDIR)$(PREFIX)$(PATHSEP)$(INSTALLSHARERELPATH)/pyscripts endif @true diff --git a/client/experimental_lib/example_py/02run_test.sh b/client/experimental_lib/example_py/02run_test.sh index 67ab20525..f881b459d 100755 --- a/client/experimental_lib/example_py/02run_test.sh +++ b/client/experimental_lib/example_py/02run_test.sh @@ -8,4 +8,4 @@ #/usr/lib/python3/dist-packages/pm3.py # need access to pm3.py -PYTHONPATH=../../src ./test.py +PYTHONPATH=../../pyscripts ./test.py diff --git a/client/experimental_lib/example_py/02run_test_grab_interactive.sh b/client/experimental_lib/example_py/02run_test_grab_interactive.sh index d7dd7dd16..5cfa7a038 100755 --- a/client/experimental_lib/example_py/02run_test_grab_interactive.sh +++ b/client/experimental_lib/example_py/02run_test_grab_interactive.sh @@ -1,3 +1,3 @@ #!/bin/bash -PYTHONPATH=../../src ipython3 -i ./test_grab.py +PYTHONPATH=../../pyscripts ipython3 -i ./test_grab.py diff --git a/client/experimental_lib/example_py/02run_test_interactive.sh b/client/experimental_lib/example_py/02run_test_interactive.sh index 701dbb5cf..f7d70a5d4 100755 --- a/client/experimental_lib/example_py/02run_test_interactive.sh +++ b/client/experimental_lib/example_py/02run_test_interactive.sh @@ -1,3 +1,3 @@ #!/bin/bash -PYTHONPATH=../../src ipython3 -i ./test.py +PYTHONPATH=../../pyscripts ipython3 -i ./test.py diff --git a/client/src/pm3.py b/client/pyscripts/pm3.py similarity index 100% rename from client/src/pm3.py rename to client/pyscripts/pm3.py diff --git a/pm3 b/pm3 index b011c8ed5..80aad83d8 100755 --- a/pm3 +++ b/pm3 @@ -27,13 +27,9 @@ if [ ! "$1" == "--list" ]; then echo >&2 "[!!] In devel workdir but no executable found, did you compile it?" exit 1 fi - # Devel mode: point to workdir pm3.py module - EVALENV+=" PYTHONPATH=$PM3PATH/client/src" # try install dir elif [ -x "$PM3PATH/proxmark3" ]; then CLIENT="$PM3PATH/proxmark3" - EVALENV+=" PYTHONPATH=$PM3PATH/../share/proxmark3/pyscripts/" - # or /usr/[local/]lib/python3/dist-packages/pm3.py ? else # hope it's installed somehow, still not sure where fw images and pm3.py are... CLIENT="proxmark3" From 295df201f3740b5165b18341afa8e2ddbafce784 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 13 Nov 2023 10:18:33 +0100 Subject: [PATCH 0764/1034] prepare release --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12bdbe8ea..9d3524488 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + +## [Faraday][2023-11-13] - Fixed Python support of `experimental_client_with_swig` (@doegox) - Use proxmark3 as a generic smartcard reader with other software with `smart relay` (@gm3197) - Added `tools\mfkeys\staticnested` - program to recover static nested keys (@iceman1001) From 6e9df18de6e4532672a46a88346106df8c9e253f Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 13 Nov 2023 10:19:09 +0100 Subject: [PATCH 0765/1034] Release v4.17511 - Faraday --- Makefile.defs | 4 ++-- armsrc/Makefile | 2 +- bootrom/Makefile | 2 +- client/CMakeLists.txt | 4 ++-- client/Makefile | 4 ++-- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 18 ++++++++-------- client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/experimental_lib/CMakeLists.txt | 2 +- client/src/proxmark3.c | 2 +- common/default_version_pm3.c | 29 +++++++------------------- common_arm/Makefile.common | 2 +- 18 files changed, 35 insertions(+), 50 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index 76409a37d..874440a47 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -112,8 +112,8 @@ ifeq ($(DEBUG),1) DEFCFLAGS = -g -O0 -fstrict-aliasing -pipe DEFLDFLAGS = else - DEFCXXFLAGS = -Wall -Werror -O3 -pipe - DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe + DEFCXXFLAGS = -Wall -O3 -pipe + DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe DEFLDFLAGS = endif diff --git a/armsrc/Makefile b/armsrc/Makefile index 5f641884a..cc786b9a1 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -184,7 +184,7 @@ showinfo: # version_pm3.c should be checked on every time fullimage.stage1.elf should be remade version_pm3.c: default_version_pm3.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) .FORCE $(info [-] CHECK $@) - $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ + $(Q)$(CP) $< $@ fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR) $(info [-] GEN $@) diff --git a/bootrom/Makefile b/bootrom/Makefile index b6825530d..86c785cd1 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -56,7 +56,7 @@ OBJS = $(OBJDIR)/bootrom.s19 # version_pm3.c should be checked on every compilation version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ + $(Q)$(CP) $< $@ all: showinfo $(OBJS) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index f14b2d50f..8f97d0de7 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -399,7 +399,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) @@ -635,7 +635,7 @@ add_executable(proxmark3 ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) +target_compile_options(proxmark3 PUBLIC -Wall -O3) if (EMBED_READLINE) if (NOT SKIPREADLINE EQUAL 1) add_dependencies(proxmark3 ncurses readline) diff --git a/client/Makefile b/client/Makefile index 06b4258bb..31cb61b85 100644 --- a/client/Makefile +++ b/client/Makefile @@ -419,7 +419,7 @@ endif PM3CFLAGS += -DHAVE_SNPRINTF -CXXFLAGS ?= -Wall -Werror +CXXFLAGS ?= -Wall CXXFLAGS += $(MYDEFS) $(MYCXXFLAGS) $(MYINCLUDES) PM3CXXFLAGS = $(CXXFLAGS) @@ -926,7 +926,7 @@ src/pm3_pywrap.c: pm3.i # version_pm3.c should be checked on every compilation src/version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ + $(Q)$(CP) $< $@ # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index c946c0682..8c524c170 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -19,7 +19,7 @@ target_link_libraries(pm3rrg_rdv4_amiibo PRIVATE m pm3rrg_rdv4_mbedtls) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_amiibo PRIVATE amiitool diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index fccae33b7..a85cc2374 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -9,5 +9,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index ec545e2a8..468ee4ef2 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -32,7 +32,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -47,7 +47,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -62,7 +62,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -77,7 +77,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -92,7 +92,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -116,7 +116,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM64_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_neon PRIVATE @@ -134,7 +134,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM32_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_neon BEFORE PRIVATE -mfpu=neon) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -155,7 +155,7 @@ add_library(pm3rrg_rdv4_hardnested STATIC hardnested/hardnested_bruteforce.c $<TARGET_OBJECTS:pm3rrg_rdv4_hardnested_nosimd> ${SIMD_TARGETS}) -target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested PRIVATE ../../common diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index c91a47047..42c701d5e 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -14,5 +14,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 12870342e..5cf33d724 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -52,5 +52,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index c1ab8d880..9d06b1c96 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -48,5 +48,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) target_include_directories(pm3rrg_rdv4_mbedtls INTERFACE ../../common/mbedtls) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index d7e3cfd8a..1040730f1 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index 5a6abda25..c74618149 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index d2d6a5b2a..721873066 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 9dae9d64b..75399f342 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -400,7 +400,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 85b85f762..19c439c32 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -42,7 +42,7 @@ static int mainret = PM3_ESOFT; #ifndef LIBPM3 #define BANNERMSG1 "" #define BANNERMSG2 " [ :coffee: ]" -#define BANNERMSG3 "" +#define BANNERMSG3 "Release v4.17511 - Faraday" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common/default_version_pm3.c b/common/default_version_pm3.c index d93a7ef15..651bed9df 100644 --- a/common/default_version_pm3.c +++ b/common/default_version_pm3.c @@ -1,20 +1,5 @@ -//----------------------------------------------------------------------------- -// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// See LICENSE.txt for the text of the license. -//----------------------------------------------------------------------------- #include "common.h" -/* This is the default version_pm3.c file that Makefile.common falls back to if sh is not available */ +/* Generated file, do not edit */ #ifndef ON_DEVICE #define SECTVERSINFO #else @@ -23,10 +8,10 @@ const struct version_information_t SECTVERSINFO g_version_information = { VERSION_INFORMATION_MAGIC, - 1, /* version 1 */ - 0, /* version information not present */ - 2, /* cleanliness couldn't be determined */ - "Iceman/master/unknown", - "1970-01-01 00:00:00", - "no sha256" + 1, + 1, + 2, + "Iceman/master/v4.17511", + "2023-11-13 10:19:09", + "db54c4c2c" }; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 18d931b46..3c01c9a2e 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -49,7 +49,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits From 4f9016814ed879a6d20235484cb2bfc00ff23ff6 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 13 Nov 2023 10:19:09 +0100 Subject: [PATCH 0766/1034] Revert "Release v4.17511 - Faraday" This reverts commit 6e9df18de6e4532672a46a88346106df8c9e253f. --- Makefile.defs | 4 ++-- armsrc/Makefile | 2 +- bootrom/Makefile | 2 +- client/CMakeLists.txt | 4 ++-- client/Makefile | 4 ++-- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 18 ++++++++-------- client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/experimental_lib/CMakeLists.txt | 2 +- client/src/proxmark3.c | 2 +- common/default_version_pm3.c | 29 +++++++++++++++++++------- common_arm/Makefile.common | 2 +- 18 files changed, 50 insertions(+), 35 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index 874440a47..76409a37d 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -112,8 +112,8 @@ ifeq ($(DEBUG),1) DEFCFLAGS = -g -O0 -fstrict-aliasing -pipe DEFLDFLAGS = else - DEFCXXFLAGS = -Wall -O3 -pipe - DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe + DEFCXXFLAGS = -Wall -Werror -O3 -pipe + DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe DEFLDFLAGS = endif diff --git a/armsrc/Makefile b/armsrc/Makefile index cc786b9a1..5f641884a 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -184,7 +184,7 @@ showinfo: # version_pm3.c should be checked on every time fullimage.stage1.elf should be remade version_pm3.c: default_version_pm3.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) .FORCE $(info [-] CHECK $@) - $(Q)$(CP) $< $@ + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR) $(info [-] GEN $@) diff --git a/bootrom/Makefile b/bootrom/Makefile index 86c785cd1..b6825530d 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -56,7 +56,7 @@ OBJS = $(OBJDIR)/bootrom.s19 # version_pm3.c should be checked on every compilation version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(CP) $< $@ + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ all: showinfo $(OBJS) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 8f97d0de7..f14b2d50f 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -399,7 +399,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) @@ -635,7 +635,7 @@ add_executable(proxmark3 ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -O3) +target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) if (EMBED_READLINE) if (NOT SKIPREADLINE EQUAL 1) add_dependencies(proxmark3 ncurses readline) diff --git a/client/Makefile b/client/Makefile index 31cb61b85..06b4258bb 100644 --- a/client/Makefile +++ b/client/Makefile @@ -419,7 +419,7 @@ endif PM3CFLAGS += -DHAVE_SNPRINTF -CXXFLAGS ?= -Wall +CXXFLAGS ?= -Wall -Werror CXXFLAGS += $(MYDEFS) $(MYCXXFLAGS) $(MYINCLUDES) PM3CXXFLAGS = $(CXXFLAGS) @@ -926,7 +926,7 @@ src/pm3_pywrap.c: pm3.i # version_pm3.c should be checked on every compilation src/version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(CP) $< $@ + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index 8c524c170..c946c0682 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -19,7 +19,7 @@ target_link_libraries(pm3rrg_rdv4_amiibo PRIVATE m pm3rrg_rdv4_mbedtls) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_amiibo PRIVATE amiitool diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index a85cc2374..fccae33b7 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -9,5 +9,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index 468ee4ef2..ec545e2a8 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -32,7 +32,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -47,7 +47,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -62,7 +62,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -77,7 +77,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -92,7 +92,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -116,7 +116,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM64_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_neon PRIVATE @@ -134,7 +134,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM32_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_neon BEFORE PRIVATE -mfpu=neon) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -155,7 +155,7 @@ add_library(pm3rrg_rdv4_hardnested STATIC hardnested/hardnested_bruteforce.c $<TARGET_OBJECTS:pm3rrg_rdv4_hardnested_nosimd> ${SIMD_TARGETS}) -target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested PRIVATE ../../common diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index 42c701d5e..c91a47047 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -14,5 +14,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 5cf33d724..12870342e 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -52,5 +52,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 9d06b1c96..c1ab8d880 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -48,5 +48,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) target_include_directories(pm3rrg_rdv4_mbedtls INTERFACE ../../common/mbedtls) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index 1040730f1..d7e3cfd8a 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index c74618149..5a6abda25 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index 721873066..d2d6a5b2a 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 75399f342..9dae9d64b 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -400,7 +400,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 19c439c32..85b85f762 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -42,7 +42,7 @@ static int mainret = PM3_ESOFT; #ifndef LIBPM3 #define BANNERMSG1 "" #define BANNERMSG2 " [ :coffee: ]" -#define BANNERMSG3 "Release v4.17511 - Faraday" +#define BANNERMSG3 "" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common/default_version_pm3.c b/common/default_version_pm3.c index 651bed9df..d93a7ef15 100644 --- a/common/default_version_pm3.c +++ b/common/default_version_pm3.c @@ -1,5 +1,20 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- #include "common.h" -/* Generated file, do not edit */ +/* This is the default version_pm3.c file that Makefile.common falls back to if sh is not available */ #ifndef ON_DEVICE #define SECTVERSINFO #else @@ -8,10 +23,10 @@ const struct version_information_t SECTVERSINFO g_version_information = { VERSION_INFORMATION_MAGIC, - 1, - 1, - 2, - "Iceman/master/v4.17511", - "2023-11-13 10:19:09", - "db54c4c2c" + 1, /* version 1 */ + 0, /* version information not present */ + 2, /* cleanliness couldn't be determined */ + "Iceman/master/unknown", + "1970-01-01 00:00:00", + "no sha256" }; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 3c01c9a2e..18d931b46 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -49,7 +49,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits From d39a4aa5c0341620007531686f611d4fb25a6e53 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 13 Nov 2023 10:20:13 +0100 Subject: [PATCH 0767/1034] release version in changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d3524488..398e369bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac ## [unreleased][unreleased] -## [Faraday][2023-11-13] +## [Faraday.4.17511][2023-11-13] - Fixed Python support of `experimental_client_with_swig` (@doegox) - Use proxmark3 as a generic smartcard reader with other software with `smart relay` (@gm3197) - Added `tools\mfkeys\staticnested` - program to recover static nested keys (@iceman1001) From a2d1a7bc92186d59e845b2f1ee01d7cd2aff2a60 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 13 Nov 2023 10:54:45 +0100 Subject: [PATCH 0768/1034] minor changes to checklist-for-release.md --- .github/ISSUE_TEMPLATE/checklist-for-release.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/checklist-for-release.md b/.github/ISSUE_TEMPLATE/checklist-for-release.md index 8b5872891..af802cab3 100644 --- a/.github/ISSUE_TEMPLATE/checklist-for-release.md +++ b/.github/ISSUE_TEMPLATE/checklist-for-release.md @@ -9,7 +9,6 @@ assignees: doegox, iceman1001 # Checklist -- [ ] CHANGELOG.md: add title: `## [releasename][YYYY-MM-DD]` - [ ] `make style` - [ ] `make miscchecks` - [ ] `make clean; make client CC=clang CXX=clang++ LD=clang++` on recent Debian or Ubuntu @@ -44,14 +43,24 @@ Run `tools/release_tests.sh` on: # creating release -- [ ] `make release RELEASE_NAME="ice awesome"` - - last line of output, gives you next command to run. +- [ ] CHANGELOG.md: add title: `## [myreleasename][YYYY-MM-DD]` +- [ ] `make release RELEASE_NAME="myreleasename"` + - last line of output gives you next command to run. - Sample: `git push && git push origin v4.12345` -- [ ] CHANGELOG.md: edit title to add version info: `## [releasename.4.12345][YYYY-MM-DD]` +- [ ] CHANGELOG.md: edit title to add version info: `## [myreleasename.4.12345][YYYY-MM-DD]` ## Step Github releases - [ ] Go to Github releases, create release based on the new created tag and publish + - Choose a tag: v4.12345 + - Target: master + - Set as the latest release + - Title: `proxmark3-v4.12345` + - Description: +``` +Release v4.12345 +Nickname "myreleasename" +``` ## Step Homebrew updates From 2b320929fc3db47ade021d3c50047d31477a0ac8 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 13 Nov 2023 12:22:36 +0100 Subject: [PATCH 0769/1034] static analysis, some fixing fun in perspective --- Makefile.defs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile.defs b/Makefile.defs index 76409a37d..1ef2aa09d 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -170,6 +170,8 @@ GCCEXTRACFLAGS += -Wold-style-declaration -Wno-error=old-style-declaration GCCEXTRACFLAGS += -Woverride-init GCCEXTRACFLAGS += -Wshift-negative-value GCCEXTRACFLAGS += -Wunused-but-set-parameter -Wno-error=unused-but-set-parameter +# enable gcc static analysis +GCCEXTRACFLAGS += -fanalyzer ifeq ($(GCCEXTRA),1) DEFCFLAGS += $(GCCEXTRACFLAGS) $(EXTRACFLAGS) endif From 9e8b1ceda748c187c6c4bebec8e34b4c09d0fbd8 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 14 Nov 2023 01:05:27 +0800 Subject: [PATCH 0770/1034] Reduce duplicate payload structure for lf read/sniff --- armsrc/appmain.c | 12 ++---------- client/src/cmdlf.c | 12 ++---------- include/pm3_cmd.h | 11 +++++++++++ 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index b8823af3b..dded4be55 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -851,11 +851,7 @@ static void PacketReceived(PacketCommandNG *packet) { break; } case CMD_LF_ACQ_RAW_ADC: { - struct p { - uint32_t samples : 31; - bool verbose : 1; - } PACKED; - struct p *payload = (struct p *)packet->data.asBytes; + lf_sample_payload_t *payload = (lf_sample_payload_t *)packet->data.asBytes; uint32_t bits = SampleLF(payload->verbose, payload->samples, true); reply_ng(CMD_LF_ACQ_RAW_ADC, PM3_SUCCESS, (uint8_t *)&bits, sizeof(bits)); break; @@ -880,11 +876,7 @@ static void PacketReceived(PacketCommandNG *packet) { break; } case CMD_LF_SNIFF_RAW_ADC: { - struct p { - uint32_t samples : 31; - bool verbose : 1; - } PACKED; - struct p *payload = (struct p *)packet->data.asBytes; + lf_sample_payload_t *payload = (lf_sample_payload_t *)packet->data.asBytes; uint32_t bits = SniffLF(payload->verbose, payload->samples, true); reply_ng(CMD_LF_SNIFF_RAW_ADC, PM3_SUCCESS, (uint8_t *)&bits, sizeof(bits)); diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 1d57378c7..ce0e67ff5 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -699,12 +699,7 @@ int CmdLFConfig(const char *Cmd) { int lf_read(bool verbose, uint32_t samples) { if (!g_session.pm3_present) return PM3_ENOTTY; - struct p { - uint32_t samples : 31; - bool verbose : 1; - } PACKED; - - struct p payload; + lf_sample_payload_t payload; payload.verbose = verbose; payload.samples = samples; @@ -765,10 +760,7 @@ int CmdLFRead(const char *Cmd) { int lf_sniff(bool verbose, uint32_t samples) { if (!g_session.pm3_present) return PM3_ENOTTY; - struct p { - uint32_t samples : 31; - bool verbose : 1; - } PACKED payload; + lf_sample_payload_t payload; payload.samples = (samples & 0xFFFF); payload.verbose = verbose; diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index af019eadd..4b0b21c0e 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -274,6 +274,17 @@ typedef struct { uint8_t data[]; } PACKED lf_hitag_t; +// For CMD_LF_SNIFF_RAW_ADC and CMD_LF_ACQ_RAW_ADC +#define LF_SAMPLES_BITS 30 +#define MAX_LF_SAMPLES ((((uint32_t)1u) << LF_SAMPLES_BITS) - 1) + +typedef struct { + // 64KB SRAM -> 524288 bits(max sample num) < 2^30 + uint32_t samples : LF_SAMPLES_BITS; + bool realtime : 1; + bool verbose : 1; +} PACKED lf_sample_payload_t; + typedef struct { uint8_t blockno; uint8_t keytype; From e1dc17df1ab0ae832c02464d5d170331af8bcfd9 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 14 Nov 2023 01:12:21 +0800 Subject: [PATCH 0771/1034] Add async_usb_write_XX() --- common_arm/usb_cdc.c | 122 +++++++++++++++++++++++++++++++++++++++++-- common_arm/usb_cdc.h | 5 ++ 2 files changed, 124 insertions(+), 3 deletions(-) diff --git a/common_arm/usb_cdc.c b/common_arm/usb_cdc.c index 4787ce112..a1fa96f5d 100644 --- a/common_arm/usb_cdc.c +++ b/common_arm/usb_cdc.c @@ -114,6 +114,7 @@ AT91SAM7S256 USB Device Port #define SET_LINE_CODING 0x2021 #define SET_CONTROL_LINE_STATE 0x2221 +static bool isAsyncRequestFinished = false; static AT91PS_UDP pUdp = AT91C_BASE_UDP; static uint8_t btConfiguration = 0; static uint8_t btConnection = 0; @@ -638,6 +639,10 @@ bool usb_poll(void) { return (pUdp->UDP_CSR[AT91C_EP_OUT] & btReceiveBank); } +inline uint16_t usb_available_length(void) { + return ((pUdp->UDP_CSR[AT91C_EP_OUT] & AT91C_UDP_RXBYTECNT) >> 16); +} + /** In github PR #129, some users appears to get a false positive from usb_poll, which returns true, but the usb_read operation @@ -649,7 +654,7 @@ bool usb_poll(void) { bool usb_poll_validate_length(void) { if (!usb_check()) return false; if (!(pUdp->UDP_CSR[AT91C_EP_OUT] & btReceiveBank)) return false; - return ((pUdp->UDP_CSR[AT91C_EP_OUT] & AT91C_UDP_RXBYTECNT) >> 16) > 0; + return ((pUdp->UDP_CSR[AT91C_EP_OUT] & AT91C_UDP_RXBYTECNT) >> 16) > 0; } /* @@ -671,7 +676,7 @@ uint32_t usb_read(uint8_t *data, size_t len) { if (pUdp->UDP_CSR[AT91C_EP_OUT] & bank) { - packetSize = (pUdp->UDP_CSR[AT91C_EP_OUT] & AT91C_UDP_RXBYTECNT) >> 16; + packetSize = ((pUdp->UDP_CSR[AT91C_EP_OUT] & AT91C_UDP_RXBYTECNT) >> 16); packetSize = MIN(packetSize, len); len -= packetSize; while (packetSize--) @@ -727,7 +732,7 @@ uint32_t usb_read_ng(uint8_t *data, size_t len) { if ((pUdp->UDP_CSR[AT91C_EP_OUT] & bank)) { - uint32_t available = (pUdp->UDP_CSR[AT91C_EP_OUT] & AT91C_UDP_RXBYTECNT) >> 16; + uint32_t available = ((pUdp->UDP_CSR[AT91C_EP_OUT] & AT91C_UDP_RXBYTECNT) >> 16); packetSize = MIN(available, len); available -= packetSize; len -= packetSize; @@ -821,6 +826,117 @@ int usb_write(const uint8_t *data, const size_t len) { return PM3_SUCCESS; } +/* + *---------------------------------------------------------------------------- + * \fn async_usb_write_start + * \brief Start async write process + * \return PM3_EIO if USB is invalid, PM3_SUCCESS if it is ready for write + * + * This function checks if the USB is connected, and wait until the FIFO + * is ready to be filled. + * + * Warning: usb_write() should not be called between + * async_usb_write_start() and async_usb_write_stop(). + *---------------------------------------------------------------------------- +*/ +int async_usb_write_start(void) { + + if (!usb_check()) return PM3_EIO; + + while (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY) { + if (!usb_check()) return PM3_EIO; + } + + isAsyncRequestFinished = false; + return PM3_SUCCESS; +} + +/* + *---------------------------------------------------------------------------- + * \fn async_usb_write_pushByte + * \brief Push one byte to the FIFO of IN endpoint (time-critical) + * + * This function simply push a byte to the FIFO of IN endpoint. + * The FIFO size is AT91C_EP_IN_SIZE. Make sure this function is not called + * over AT91C_EP_IN_SIZE times between each async_usb_write_requestWrite(). + *---------------------------------------------------------------------------- +*/ +inline void async_usb_write_pushByte(uint8_t data) { + pUdp->UDP_FDR[AT91C_EP_IN] = data; + isAsyncRequestFinished = false; +} + +/* + *---------------------------------------------------------------------------- + * \fn async_usb_write_requestWrite + * \brief Request a write operation (time-critical) + * \return false if the last write request is not finished, true if success + * + * This function requests a write operation from FIFO to the USB bus, + * and switch the internal banks of FIFO. It doesn't wait for the end of + * transmission from FIFO to the USB bus. + * + * Note: This function doesn't check if the usb is valid, as it is + * time-critical. + *---------------------------------------------------------------------------- +*/ +inline bool async_usb_write_requestWrite(void) { + + // check if last request is finished + if (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY) { + return false; + } + + // clear transmission completed flag + UDP_CLEAR_EP_FLAGS(AT91C_EP_IN, AT91C_UDP_TXCOMP); + while (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP) {}; + + // start of transmission + UDP_SET_EP_FLAGS(AT91C_EP_IN, AT91C_UDP_TXPKTRDY); + + // hack: no need to wait if UDP_CSR and UDP_FDR are not used immediately. + // while (!(pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY)) {}; + isAsyncRequestFinished = true; + return true; +} + +/* + *---------------------------------------------------------------------------- + * \fn async_usb_write_stop + * \brief Stop async write process + * \return PM3_EIO if USB is invalid, PM3_SUCCESS if data is written + * + * This function makes sure the data left in the FIFO is written to the + * USB bus. + * + * Warning: usb_write() should not be called between + * async_usb_write_start() and async_usb_write_stop(). + *---------------------------------------------------------------------------- +*/ +int async_usb_write_stop(void) { + // Wait for the end of transfer + while (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY) { + if (!usb_check()) return PM3_EIO; + } + + // clear transmission completed flag + UDP_CLEAR_EP_FLAGS(AT91C_EP_IN, AT91C_UDP_TXCOMP); + while (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP) {}; + + // FIFO is not empty, request a write in non-ping-pong mode + if (isAsyncRequestFinished == false) { + UDP_SET_EP_FLAGS(AT91C_EP_IN, AT91C_UDP_TXPKTRDY); + + while (!(pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP)) { + if (!usb_check()) return PM3_EIO; + } + + UDP_CLEAR_EP_FLAGS(AT91C_EP_IN, AT91C_UDP_TXCOMP); + while (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP) {}; + } + return PM3_SUCCESS; +} + /* *---------------------------------------------------------------------------- * \fn AT91F_USB_SendData diff --git a/common_arm/usb_cdc.h b/common_arm/usb_cdc.h index e7f6f3d09..aab8e2c5c 100644 --- a/common_arm/usb_cdc.h +++ b/common_arm/usb_cdc.h @@ -27,9 +27,14 @@ void usb_disable(void); void usb_enable(void); bool usb_check(void); bool usb_poll(void); +uint16_t usb_available_length(void); bool usb_poll_validate_length(void); uint32_t usb_read(uint8_t *data, size_t len); int usb_write(const uint8_t *data, const size_t len); +int async_usb_write_start(void); +void async_usb_write_pushByte(uint8_t data); +bool async_usb_write_requestWrite(void); +int async_usb_write_stop(void); uint32_t usb_read_ng(uint8_t *data, size_t len); void usb_update_serial(uint64_t newSerialNumber); From b4cc7c02cdfedfc04bd90b682007459acb7902bf Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 14 Nov 2023 01:40:31 +0800 Subject: [PATCH 0772/1034] Real-time LF sampling mode on armsrc --- armsrc/appmain.c | 17 +++++-- armsrc/lfsampling.c | 121 ++++++++++++++++++++++++++++++++++++++++++++ armsrc/lfsampling.h | 10 ++++ armsrc/util.c | 8 +++ armsrc/util.h | 1 + include/common.h | 14 +++++ 6 files changed, 166 insertions(+), 5 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index dded4be55..f1afc3c62 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -852,8 +852,12 @@ static void PacketReceived(PacketCommandNG *packet) { } case CMD_LF_ACQ_RAW_ADC: { lf_sample_payload_t *payload = (lf_sample_payload_t *)packet->data.asBytes; - uint32_t bits = SampleLF(payload->verbose, payload->samples, true); - reply_ng(CMD_LF_ACQ_RAW_ADC, PM3_SUCCESS, (uint8_t *)&bits, sizeof(bits)); + if (payload->realtime) { + ReadLF_realtime(true); + } else { + uint32_t bits = SampleLF(payload->verbose, payload->samples, true); + reply_ng(CMD_LF_ACQ_RAW_ADC, PM3_SUCCESS, (uint8_t *)&bits, sizeof(bits)); + } break; } case CMD_LF_MOD_THEN_ACQ_RAW_ADC: { @@ -877,9 +881,12 @@ static void PacketReceived(PacketCommandNG *packet) { } case CMD_LF_SNIFF_RAW_ADC: { lf_sample_payload_t *payload = (lf_sample_payload_t *)packet->data.asBytes; - - uint32_t bits = SniffLF(payload->verbose, payload->samples, true); - reply_ng(CMD_LF_SNIFF_RAW_ADC, PM3_SUCCESS, (uint8_t *)&bits, sizeof(bits)); + if (payload->realtime) { + ReadLF_realtime(false); + } else { + uint32_t bits = SniffLF(payload->verbose, payload->samples, true); + reply_ng(CMD_LF_SNIFF_RAW_ADC, PM3_SUCCESS, (uint8_t *)&bits, sizeof(bits)); + } break; } case CMD_LF_HID_WATCH: { diff --git a/armsrc/lfsampling.c b/armsrc/lfsampling.c index c763bd0c6..123befb3a 100644 --- a/armsrc/lfsampling.c +++ b/armsrc/lfsampling.c @@ -27,6 +27,7 @@ #include "lfdemod.h" #include "string.h" // memset #include "appmain.h" // print stack +#include "usb_cdc.h" // real-time sampling /* Default LF config is set to: @@ -424,6 +425,126 @@ uint32_t SampleLF(bool verbose, uint32_t sample_size, bool ledcontrol) { BigBuf_Clear_ext(false); return ReadLF(true, verbose, sample_size, ledcontrol); } + +/** + * Do LF sampling and send samples to the USB + * + * Uses parameters in config. Only bits_per_sample = 8 is working now + * + * @param reader_field - true for reading tags, false for sniffing + * @return sampling result +**/ +int ReadLF_realtime(bool reader_field) { + // parameters from config and constants + const uint8_t bits_per_sample = config.bits_per_sample; + const int16_t trigger_threshold = config.trigger_threshold; + int32_t samples_to_skip = config.samples_to_skip; + const uint8_t decimation = config.decimation; + + uint32_t sample_size = 64; + const int8_t size_threshold_table[9] = {0, 64, 64, 60, 64, 60, 60, 56, 64}; + const int8_t size_threshold = size_threshold_table[bits_per_sample]; + + // DoAcquisition() start + uint8_t last_byte = 0; + uint8_t curr_byte = 0; + int return_value = PM3_SUCCESS; + + initSampleBuffer(&sample_size); // sample size in bytes + if (sample_size != 64) { + return PM3_EFAILED; + } + + sample_size <<= 3; // sample size in bits + sample_size /= bits_per_sample; // sample count + + bool trigger_hit = false; + int16_t checked = 0; + + return_value = async_usb_write_start(); + if (return_value != PM3_SUCCESS) { + return return_value; + } + + BigBuf_Clear_ext(false); + LFSetupFPGAForADC(config.divisor, reader_field); + + while (BUTTON_PRESS() == false) { + // only every 4000th times, in order to save time when collecting samples. + // interruptible only when logging not yet triggered + if (unlikely(trigger_hit == false && (checked >= 4000))) { + if (data_available()) { + checked = -1; + break; + } else { + checked = 0; + } + } + ++checked; + + WDT_HIT(); + + if ((AT91C_BASE_SSC->SSC_SR & AT91C_SSC_TXRDY)) { + LED_D_ON(); + } + + if (AT91C_BASE_SSC->SSC_SR & AT91C_SSC_RXRDY) { + volatile uint8_t sample = (uint8_t)AT91C_BASE_SSC->SSC_RHR; + + // (RDV4) Test point 8 (TP8) can be used to trigger oscilloscope + LED_D_OFF(); + + // threshold either high or low values 128 = center 0. if trigger = 178 + if (unlikely(trigger_hit == false)) { + if ((trigger_threshold > 0) && (sample < (trigger_threshold + 128)) && (sample > (128 - trigger_threshold))) { + continue; + } + trigger_hit = true; + } + + if (unlikely(samples_to_skip > 0)) { + samples_to_skip--; + continue; + } + + logSample(sample, decimation, bits_per_sample, false); + + // write to USB FIFO if byte changed + curr_byte = data.numbits >> 3; + if (curr_byte > last_byte) { + async_usb_write_pushByte(data.buffer[last_byte]); + } + last_byte = curr_byte; + + if (samples.total_saved == size_threshold) { + // request usb transmission and change FIFO bank + if (async_usb_write_requestWrite() == false) { + return_value = PM3_EIO; + break; + } + + // reset sample + last_byte = 0; + data.numbits = 0; + samples.counter = size_threshold; + samples.total_saved = 0; + + } else if (samples.total_saved == 1) { + // check if there is any data from client + if (data_available_fast()) { + break; + } + } + } + } + LED_D_OFF(); + return_value = async_usb_write_stop(); + + // DoAcquisition() end + StopTicks(); + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + return return_value; +} /** * Initializes the FPGA for sniffer-mode (field off), and acquires the samples. * @return number of bits sampled diff --git a/armsrc/lfsampling.h b/armsrc/lfsampling.h index 8a8e40868..27844d81c 100644 --- a/armsrc/lfsampling.h +++ b/armsrc/lfsampling.h @@ -51,6 +51,16 @@ void doT55x7Acquisition(size_t sample_size, bool ledcontrol); **/ uint32_t SampleLF(bool verbose, uint32_t sample_size, bool ledcontrol); +/** + * Do LF sampling and send samples to the USB + * + * Uses parameters in config. Only bits_per_sample = 8 is working now + * + * @param reader_field - true for reading tags, false for sniffing + * @return sampling result +**/ +int ReadLF_realtime(bool reader_field); + /** * Initializes the FPGA for sniff-mode (field off), and acquires the samples. * @return number of bits sampled diff --git a/armsrc/util.c b/armsrc/util.c index fe40b6b43..70a6d01ef 100644 --- a/armsrc/util.c +++ b/armsrc/util.c @@ -305,3 +305,11 @@ bool data_available(void) { return usb_poll_validate_length(); #endif } + +bool data_available_fast(void) { +#ifdef WITH_FPC_USART_HOST + return usb_available_length() || (usart_rxdata_available() > 0); +#else + return usb_available_length(); +#endif +} diff --git a/armsrc/util.h b/armsrc/util.h index 65d24f026..da45219a7 100644 --- a/armsrc/util.h +++ b/armsrc/util.h @@ -101,5 +101,6 @@ void SpinUp(uint32_t speed); int BUTTON_CLICKED(int ms); int BUTTON_HELD(int ms); bool data_available(void); +bool data_available_fast(void); #endif diff --git a/include/common.h b/include/common.h index a97545996..37cf254d9 100644 --- a/include/common.h +++ b/include/common.h @@ -196,4 +196,18 @@ extern bool g_tearoff_enabled; #define CLEAR_BIT(data, i) *(data + (i / 8)) &= ~(1 << (7 - (i % 8))) #define FLIP_BIT(data, i) *(data + (i / 8)) ^= (1 << (7 - (i % 8))) +// GCC extension +// from client/deps/tinycbor/compilersupport_p.h +#ifdef __GNUC__ +#ifndef likely +# define likely(x) __builtin_expect(!!(x), 1) +#endif +#ifndef unlikely +# define unlikely(x) __builtin_expect(!!(x), 0) +#endif +#else +# define likely(x) (x) +# define unlikely(x) (x) +#endif + #endif From 8fdf04fcfbe88fc118b6b158bb3e5ae0cac0f5dd Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 14 Nov 2023 02:17:45 +0800 Subject: [PATCH 0773/1034] Receive raw data on the client --- client/src/comms.c | 359 ++++++++++++++++++++++++++++++++------------- client/src/comms.h | 8 +- 2 files changed, 260 insertions(+), 107 deletions(-) diff --git a/client/src/comms.c b/client/src/comms.c index 9460c7024..be2d481dc 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -41,6 +41,10 @@ capabilities_t g_pm3_capabilities; static pthread_t communication_thread; static bool comm_thread_dead = false; +static bool comm_raw_mode = false; +static uint8_t *comm_raw_data = NULL; +static size_t comm_raw_len = 0; +static size_t comm_raw_pos = 0; // Transmit buffer. static PacketCommandOLD txBuffer; @@ -346,6 +350,8 @@ __attribute__((force_align_arg_pointer)) bool commfailed = false; PacketResponseNG rx; PacketResponseNGRaw rx_raw; + // stash the last state of is_receiving_raw, to detect if state changed + bool is_receiving_raw_last = false; #if defined(__MACH__) && defined(__APPLE__) disableAppNap("Proxmark3 polling UART"); @@ -368,136 +374,179 @@ __attribute__((force_align_arg_pointer)) break; } - res = uart_receive(sp, (uint8_t *)&rx_raw.pre, sizeof(PacketResponseNGPreamble), &rxlen); + bool is_receiving_raw = __atomic_load_n(&comm_raw_mode, __ATOMIC_SEQ_CST); - if ((res == PM3_SUCCESS) && (rxlen == sizeof(PacketResponseNGPreamble))) { - rx.magic = rx_raw.pre.magic; - uint16_t length = rx_raw.pre.length; - rx.ng = rx_raw.pre.ng; - rx.status = rx_raw.pre.status; - rx.cmd = rx_raw.pre.cmd; - if (rx.magic == RESPONSENG_PREAMBLE_MAGIC) { // New style NG reply - if (length > PM3_CMD_DATA_SIZE) { - PrintAndLogEx(WARNING, "Received packet frame with incompatible length: 0x%04x", length); + if (is_receiving_raw) { + uint8_t *bufferData = __atomic_load_n(&comm_raw_data, __ATOMIC_SEQ_CST); // read only + size_t bufferLen = __atomic_load_n(&comm_raw_len, __ATOMIC_SEQ_CST); // read only + size_t bufferPos = __atomic_load_n(&comm_raw_pos, __ATOMIC_SEQ_CST); // read and write + if (bufferPos < bufferLen) { + size_t rxMaxLen = bufferLen - bufferPos; + + rxMaxLen = MIN(COMM_RAW_RECEIVE_LEN, rxMaxLen); + + res = uart_receive(sp, bufferData + bufferPos, rxMaxLen, &rxlen); + if (res == PM3_SUCCESS) { + uint64_t clk = msclock(); + __atomic_store_n(&timeout_start_time, clk, __ATOMIC_SEQ_CST); + __atomic_store_n(&comm_raw_pos, bufferPos + rxlen, __ATOMIC_SEQ_CST); + } else if (res != PM3_ENODATA) { + PrintAndLogEx(WARNING, "Error when reading raw data: %zu/%zu, %d", bufferPos, bufferLen, res); error = true; + if (res == PM3_ENOTTY) { + commfailed = true; + } } + } else { + // ignore data when bufferPos >= bufferLen and is_receiving_raw has not been set to false + uint8_t dummyData[64]; + uint32_t dummyLen; + uart_receive(sp, dummyData, sizeof(dummyData), &dummyLen); - if ((!error) && (length > 0)) { // Get the variable length payload + // set the buffer as undefined + // comm_raw_data == NULL is used in SetCommunicationReceiveMode() + __atomic_store_n(&comm_raw_data, NULL, __ATOMIC_SEQ_CST); + } + } else { + if (is_receiving_raw_last) { + // is_receiving_raw changed from true to false - res = uart_receive(sp, (uint8_t *)&rx_raw.data, length, &rxlen); - if ((res != PM3_SUCCESS) || (rxlen != length)) { - PrintAndLogEx(WARNING, "Received packet frame with variable part too short? %d/%d", rxlen, length); + // set the buffer as undefined + // comm_raw_data == NULL is used in SetCommunicationReceiveMode() + __atomic_store_n(&comm_raw_data, NULL, __ATOMIC_SEQ_CST); + } + res = uart_receive(sp, (uint8_t *)&rx_raw.pre, sizeof(PacketResponseNGPreamble), &rxlen); + + if ((res == PM3_SUCCESS) && (rxlen == sizeof(PacketResponseNGPreamble))) { + rx.magic = rx_raw.pre.magic; + uint16_t length = rx_raw.pre.length; + rx.ng = rx_raw.pre.ng; + rx.status = rx_raw.pre.status; + rx.cmd = rx_raw.pre.cmd; + if (rx.magic == RESPONSENG_PREAMBLE_MAGIC) { // New style NG reply + if (length > PM3_CMD_DATA_SIZE) { + PrintAndLogEx(WARNING, "Received packet frame with incompatible length: 0x%04x", length); error = true; - } else { + } - if (rx.ng) { // Received a valid NG frame - memcpy(&rx.data, &rx_raw.data, length); - rx.length = length; - if ((rx.cmd == g_conn.last_command) && (rx.status == PM3_SUCCESS)) { - ACK_received = true; - } + if ((!error) && (length > 0)) { // Get the variable length payload + + res = uart_receive(sp, (uint8_t *)&rx_raw.data, length, &rxlen); + if ((res != PM3_SUCCESS) || (rxlen != length)) { + PrintAndLogEx(WARNING, "Received packet frame with variable part too short? %d/%d", rxlen, length); + error = true; } else { - uint64_t arg[3]; - if (length < sizeof(arg)) { - PrintAndLogEx(WARNING, "Received MIX packet frame with incompatible length: 0x%04x", length); - error = true; - } - if (!error) { // Received a valid MIX frame - memcpy(arg, &rx_raw.data, sizeof(arg)); - rx.oldarg[0] = arg[0]; - rx.oldarg[1] = arg[1]; - rx.oldarg[2] = arg[2]; - memcpy(&rx.data, ((uint8_t *)&rx_raw.data) + sizeof(arg), length - sizeof(arg)); - rx.length = length - sizeof(arg); - if (rx.cmd == CMD_ACK) { + + if (rx.ng) { // Received a valid NG frame + memcpy(&rx.data, &rx_raw.data, length); + rx.length = length; + if ((rx.cmd == g_conn.last_command) && (rx.status == PM3_SUCCESS)) { ACK_received = true; } + } else { + uint64_t arg[3]; + if (length < sizeof(arg)) { + PrintAndLogEx(WARNING, "Received MIX packet frame with incompatible length: 0x%04x", length); + error = true; + } + if (!error) { // Received a valid MIX frame + memcpy(arg, &rx_raw.data, sizeof(arg)); + rx.oldarg[0] = arg[0]; + rx.oldarg[1] = arg[1]; + rx.oldarg[2] = arg[2]; + memcpy(&rx.data, ((uint8_t *)&rx_raw.data) + sizeof(arg), length - sizeof(arg)); + rx.length = length - sizeof(arg); + if (rx.cmd == CMD_ACK) { + ACK_received = true; + } + } } } - } - } else if ((!error) && (length == 0)) { // we received an empty frame - if (rx.ng) - rx.length = 0; // set received length to 0 - else { // old frames can't be empty - PrintAndLogEx(WARNING, "Received empty MIX packet frame (length: 0x00)"); - error = true; - } - } - - if (!error) { // Get the postamble - res = uart_receive(sp, (uint8_t *)&rx_raw.foopost, sizeof(PacketResponseNGPostamble), &rxlen); - if ((res != PM3_SUCCESS) || (rxlen != sizeof(PacketResponseNGPostamble))) { - PrintAndLogEx(WARNING, "Received packet frame without postamble"); - error = true; - } - } - - if (!error) { // Check CRC, accept MAGIC as placeholder - rx.crc = rx_raw.foopost.crc; - if (rx.crc != RESPONSENG_POSTAMBLE_MAGIC) { - uint8_t first, second; - compute_crc(CRC_14443_A, (uint8_t *)&rx_raw, sizeof(PacketResponseNGPreamble) + length, &first, &second); - if ((first << 8) + second != rx.crc) { - PrintAndLogEx(WARNING, "Received packet frame with invalid CRC %02X%02X <> %04X", first, second, rx.crc); + } else if ((!error) && (length == 0)) { // we received an empty frame + if (rx.ng) + rx.length = 0; // set received length to 0 + else { // old frames can't be empty + PrintAndLogEx(WARNING, "Received empty MIX packet frame (length: 0x00)"); error = true; } } - } - if (!error) { // Received a valid OLD frame -#ifdef COMMS_DEBUG - PrintAndLogEx(NORMAL, "Receiving %s:", rx.ng ? "NG" : "MIX"); -#endif -#ifdef COMMS_DEBUG_RAW - print_hex_break((uint8_t *)&rx_raw.pre, sizeof(PacketResponseNGPreamble), 32); - print_hex_break((uint8_t *)&rx_raw.data, rx_raw.pre.length, 32); - print_hex_break((uint8_t *)&rx_raw.foopost, sizeof(PacketResponseNGPostamble), 32); -#endif - PacketResponseReceived(&rx); - } - } else { // Old style reply - PacketResponseOLD rx_old; - memcpy(&rx_old, &rx_raw.pre, sizeof(PacketResponseNGPreamble)); - res = uart_receive(sp, ((uint8_t *)&rx_old) + sizeof(PacketResponseNGPreamble), sizeof(PacketResponseOLD) - sizeof(PacketResponseNGPreamble), &rxlen); - if ((res != PM3_SUCCESS) || (rxlen != sizeof(PacketResponseOLD) - sizeof(PacketResponseNGPreamble))) { - PrintAndLogEx(WARNING, "Received packet OLD frame with payload too short? %d/%zu", rxlen, sizeof(PacketResponseOLD) - sizeof(PacketResponseNGPreamble)); - error = true; - } - if (!error) { + if (!error) { // Get the postamble + res = uart_receive(sp, (uint8_t *)&rx_raw.foopost, sizeof(PacketResponseNGPostamble), &rxlen); + if ((res != PM3_SUCCESS) || (rxlen != sizeof(PacketResponseNGPostamble))) { + PrintAndLogEx(WARNING, "Received packet frame without postamble"); + error = true; + } + } + + if (!error) { // Check CRC, accept MAGIC as placeholder + rx.crc = rx_raw.foopost.crc; + if (rx.crc != RESPONSENG_POSTAMBLE_MAGIC) { + uint8_t first, second; + compute_crc(CRC_14443_A, (uint8_t *)&rx_raw, sizeof(PacketResponseNGPreamble) + length, &first, &second); + if ((first << 8) + second != rx.crc) { + PrintAndLogEx(WARNING, "Received packet frame with invalid CRC %02X%02X <> %04X", first, second, rx.crc); + error = true; + } + } + } + if (!error) { // Received a valid OLD frame #ifdef COMMS_DEBUG - PrintAndLogEx(NORMAL, "Receiving OLD:"); + PrintAndLogEx(NORMAL, "Receiving %s:", rx.ng ? "NG" : "MIX"); #endif #ifdef COMMS_DEBUG_RAW - print_hex_break((uint8_t *)&rx_old.cmd, sizeof(rx_old.cmd), 32); - print_hex_break((uint8_t *)&rx_old.arg, sizeof(rx_old.arg), 32); - print_hex_break((uint8_t *)&rx_old.d, sizeof(rx_old.d), 32); + print_hex_break((uint8_t *)&rx_raw.pre, sizeof(PacketResponseNGPreamble), 32); + print_hex_break((uint8_t *)&rx_raw.data, rx_raw.pre.length, 32); + print_hex_break((uint8_t *)&rx_raw.foopost, sizeof(PacketResponseNGPostamble), 32); #endif - rx.ng = false; - rx.magic = 0; - rx.status = 0; - rx.crc = 0; - rx.cmd = rx_old.cmd; - rx.oldarg[0] = rx_old.arg[0]; - rx.oldarg[1] = rx_old.arg[1]; - rx.oldarg[2] = rx_old.arg[2]; - rx.length = PM3_CMD_DATA_SIZE; - memcpy(&rx.data, &rx_old.d, rx.length); - PacketResponseReceived(&rx); - if (rx.cmd == CMD_ACK) { - ACK_received = true; + PacketResponseReceived(&rx); + } + } else { // Old style reply + PacketResponseOLD rx_old; + memcpy(&rx_old, &rx_raw.pre, sizeof(PacketResponseNGPreamble)); + + res = uart_receive(sp, ((uint8_t *)&rx_old) + sizeof(PacketResponseNGPreamble), sizeof(PacketResponseOLD) - sizeof(PacketResponseNGPreamble), &rxlen); + if ((res != PM3_SUCCESS) || (rxlen != sizeof(PacketResponseOLD) - sizeof(PacketResponseNGPreamble))) { + PrintAndLogEx(WARNING, "Received packet OLD frame with payload too short? %d/%zu", rxlen, sizeof(PacketResponseOLD) - sizeof(PacketResponseNGPreamble)); + error = true; + } + if (!error) { +#ifdef COMMS_DEBUG + PrintAndLogEx(NORMAL, "Receiving OLD:"); +#endif +#ifdef COMMS_DEBUG_RAW + print_hex_break((uint8_t *)&rx_old.cmd, sizeof(rx_old.cmd), 32); + print_hex_break((uint8_t *)&rx_old.arg, sizeof(rx_old.arg), 32); + print_hex_break((uint8_t *)&rx_old.d, sizeof(rx_old.d), 32); +#endif + rx.ng = false; + rx.magic = 0; + rx.status = 0; + rx.crc = 0; + rx.cmd = rx_old.cmd; + rx.oldarg[0] = rx_old.arg[0]; + rx.oldarg[1] = rx_old.arg[1]; + rx.oldarg[2] = rx_old.arg[2]; + rx.length = PM3_CMD_DATA_SIZE; + memcpy(&rx.data, &rx_old.d, rx.length); + PacketResponseReceived(&rx); + if (rx.cmd == CMD_ACK) { + ACK_received = true; + } } } - } - } else { - if (rxlen > 0) { - PrintAndLogEx(WARNING, "Received packet frame preamble too short: %d/%zu", rxlen, sizeof(PacketResponseNGPreamble)); - error = true; - } - if (res == PM3_ENOTTY) { - commfailed = true; + } else { + if (rxlen > 0) { + PrintAndLogEx(WARNING, "Received packet frame preamble too short: %d/%zu", rxlen, sizeof(PacketResponseNGPreamble)); + error = true; + } + if (res == PM3_ENOTTY) { + commfailed = true; + } } } + is_receiving_raw_last = is_receiving_raw; // TODO if error, shall we resync ? pthread_mutex_lock(&txBufferMutex); @@ -560,6 +609,45 @@ bool IsCommunicationThreadDead(void) { return ret; } +// To start raw receive mode: +// 1. Call SetCommunicationRawReceiveBuffer(...) +// 2. Call SetCommunicationReceiveMode(true) +// +// To stop raw receive mode: +// Call SetCommunicationReceiveMode(false) +// +// Note: +// 1. The receiving thread won't accept any normal packets after calling +// SetCommunicationReceiveMode(true). You need to call +// SetCommunicationReceiveMode(false) to stop the raw receiving process. +// 2. If the received size >= len used in SetCommunicationRawReceiveBuffer(), +// The receiving thread will ignore the incoming data to prevent overflow. +// 3. Normally you only need WaitForRawDataTimeout() rather than the +// low level functions like SetCommunicationReceiveMode(), +// SetCommunicationRawReceiveBuffer() and GetCommunicationRawReceiveNum() + +bool SetCommunicationReceiveMode(bool isRawMode) { + if (isRawMode) { + uint8_t *buffer = __atomic_load_n(&comm_raw_data, __ATOMIC_SEQ_CST); + if (buffer == NULL) { + PrintAndLogEx(ERR, "Buffer for raw data is not set"); + return false; + } + } + __atomic_store_n(&comm_raw_mode, isRawMode, __ATOMIC_SEQ_CST); + return true; +} + +void SetCommunicationRawReceiveBuffer(uint8_t *buffer, size_t len) { + __atomic_store_n(&comm_raw_data, buffer, __ATOMIC_SEQ_CST); + __atomic_store_n(&comm_raw_len, len, __ATOMIC_SEQ_CST); + __atomic_store_n(&comm_raw_pos, 0, __ATOMIC_SEQ_CST); +} + +size_t GetCommunicationRawReceiveNum(void) { + return __atomic_load_n(&comm_raw_pos, __ATOMIC_SEQ_CST); +} + bool OpenProxmark(pm3_device_t **dev, const char *port, bool wait_for_port, int timeout, bool flash_mode, uint32_t speed) { if (!wait_for_port) { @@ -738,6 +826,67 @@ static size_t communication_delay(void) { return 0; } + +/** + * @brief Wait for receiving a specified amount of bytes + * + * @param buffer The receive buffer + * @param len The maximum receive byte size + * @param ms_timeout the maximum timeout + * @param show_process print how many bytes are received + * @return the number of received bytes + */ +size_t WaitForRawDataTimeout(uint8_t *buffer, size_t len, size_t ms_timeout, bool show_process) { + uint8_t print_counter = 0; + size_t last_pos = 0; + + // Add delay depending on the communication channel & speed + if (ms_timeout != (size_t) - 1) { + ms_timeout += communication_delay(); + } + __atomic_store_n(&timeout_start_time, msclock(), __ATOMIC_SEQ_CST); + + SetCommunicationRawReceiveBuffer(buffer, len); + SetCommunicationReceiveMode(true); + + size_t pos = 0; + while (pos < len) { + + if (kbd_enter_pressed()) { + // send anything to stop the transfer + PrintAndLogEx(INFO, "Stopping"); + SendCommandNG(CMD_BREAK_LOOP, NULL, 0); + } + + pos = __atomic_load_n(&comm_raw_pos, __ATOMIC_SEQ_CST); + + // check the timeout if pos is not updated + if (last_pos == pos) { + uint64_t tmp_clk = __atomic_load_n(&timeout_start_time, __ATOMIC_SEQ_CST); + if ((msclock() - tmp_clk > ms_timeout)) { + break; + } + } else { + // print when (print_counter % 64) == 0 + if (show_process && (print_counter & 0x3F) == 0) { + PrintAndLogEx(INFO, "[%zu/%zu]", pos, len); + } + } + + print_counter++; + last_pos = pos; + msleep(10); + } + if (pos == len) { + SendCommandNG(CMD_BREAK_LOOP, NULL, 0); + msleep(ms_timeout); + } + SetCommunicationReceiveMode(false); + pos = __atomic_load_n(&comm_raw_pos, __ATOMIC_SEQ_CST); + PrintAndLogEx(INFO, "Done: [%zu/%zu]", pos, len); + return pos; +} + /** * @brief Waits for a certain response type. This method waits for a maximum of * ms_timeout milliseconds for a specified response command. diff --git a/client/src/comms.h b/client/src/comms.h index 333b2bf1c..632f0d29f 100644 --- a/client/src/comms.h +++ b/client/src/comms.h @@ -45,6 +45,8 @@ extern "C" { #define CMD_BUFFER_SIZE 100 #endif +#define COMM_RAW_RECEIVE_LEN (1024) + typedef enum { BIG_BUF, BIG_BUF_EML, @@ -96,10 +98,14 @@ void clearCommandBuffer(void); #define FLASHMODE_SPEED 460800 bool IsCommunicationThreadDead(void); +bool SetCommunicationReceiveMode(bool isRawMode); +void SetCommunicationRawReceiveBuffer(uint8_t *buffer, size_t len); +size_t GetCommunicationRawReceiveNum(void); bool OpenProxmark(pm3_device_t **dev, const char *port, bool wait_for_port, int timeout, bool flash_mode, uint32_t speed); int TestProxmark(pm3_device_t *dev); void CloseProxmark(pm3_device_t *dev); +size_t WaitForRawDataTimeout(uint8_t *buffer, size_t len, size_t ms_timeout, bool show_process); bool WaitForResponseTimeoutW(uint32_t cmd, PacketResponseNG *response, size_t ms_timeout, bool show_warning); bool WaitForResponseTimeout(uint32_t cmd, PacketResponseNG *response, size_t ms_timeout); bool WaitForResponse(uint32_t cmd, PacketResponseNG *response); @@ -111,5 +117,3 @@ bool GetFromDevice(DeviceMemType_t memtype, uint8_t *dest, uint32_t bytes, uint3 } #endif #endif - - From 42ab3ee1e60a756cf69a2de2254eda0916e6f598 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 14 Nov 2023 02:57:52 +0800 Subject: [PATCH 0774/1034] Receive raw LF samples on the client --- client/src/cmddata.c | 28 ++++++---- client/src/cmddata.h | 1 + client/src/cmdlf.c | 127 ++++++++++++++++++++++++++++++++----------- client/src/cmdlf.h | 4 +- 4 files changed, 116 insertions(+), 44 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index cca476c20..534663844 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1776,36 +1776,45 @@ int getSamplesEx(uint32_t start, uint32_t end, bool verbose, bool ignore_lf_conf bits_per_sample = sc->bits_per_sample; } + getSamplesFromBufEx(got, n, bits_per_sample, verbose); + + return PM3_SUCCESS; +} + +void getSamplesFromBufEx(uint8_t *data, size_t sample_num, uint8_t bits_per_sample, bool verbose) { + + size_t max_num = MIN(sample_num, MAX_GRAPH_TRACE_LEN); + if (bits_per_sample < 8) { if (verbose) PrintAndLogEx(INFO, "Unpacking..."); - BitstreamOut_t bout = { got, bits_per_sample * n, 0}; - uint32_t j = 0; - for (j = 0; j * bits_per_sample < n * 8 && j * bits_per_sample < MAX_GRAPH_TRACE_LEN * 8; j++) { + BitstreamOut_t bout = {data, bits_per_sample * sample_num, 0}; + size_t j = 0; + for (j = 0; j < max_num; j++) { uint8_t sample = getByte(bits_per_sample, &bout); g_GraphBuffer[j] = ((int) sample) - 127; } g_GraphTraceLen = j; - if (verbose) PrintAndLogEx(INFO, "Unpacked %d samples", j); + if (verbose) PrintAndLogEx(INFO, "Unpacked %zu samples", j); } else { - for (uint32_t j = 0; j < n; j++) { - g_GraphBuffer[j] = ((int)got[j]) - 127; + for (size_t j = 0; j < max_num; j++) { + g_GraphBuffer[j] = ((int)data[j]) - 127; } - g_GraphTraceLen = n; + g_GraphTraceLen = max_num; } - uint8_t bits[g_GraphTraceLen]; + uint8_t *bits = malloc(g_GraphTraceLen); size_t size = getFromGraphBuf(bits); // set signal properties low/high/mean/amplitude and is_noise detection computeSignalProperties(bits, size); + free(bits); setClockGrid(0, 0); g_DemodBufferLen = 0; RepaintGraphWindow(); - return PM3_SUCCESS; } static int CmdSamples(const char *Cmd) { @@ -3584,4 +3593,3 @@ int CmdData(const char *Cmd) { clearCommandBuffer(); return CmdsParse(CommandTable, Cmd); } - diff --git a/client/src/cmddata.h b/client/src/cmddata.h index 1e4500d32..c9f7398be 100644 --- a/client/src/cmddata.h +++ b/client/src/cmddata.h @@ -86,6 +86,7 @@ int AutoCorrelate(const int *in, int *out, size_t len, size_t window, bool SaveG int getSamples(uint32_t n, bool verbose); int getSamplesEx(uint32_t start, uint32_t end, bool verbose, bool ignore_lf_config); +void getSamplesFromBufEx(uint8_t *data, size_t sample_num, uint8_t bits_per_sample, bool verbose); void setClockGrid(uint32_t clk, int offset); int directionalThreshold(const int *in, int *out, size_t len, int8_t up, int8_t down); diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index ce0e67ff5..f078f795f 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -696,31 +696,58 @@ int CmdLFConfig(const char *Cmd) { return lf_config(&config); } -int lf_read(bool verbose, uint32_t samples) { +static int lf_read_internal(bool realtime, bool verbose, uint64_t samples) { if (!g_session.pm3_present) return PM3_ENOTTY; lf_sample_payload_t payload; + payload.realtime = realtime; payload.verbose = verbose; - payload.samples = samples; + sample_config current_config; + int retval = lf_getconfig(&current_config); + if (retval != PM3_SUCCESS) { + PrintAndLogEx(ERR, "failed to get current device config"); + return retval; + } clearCommandBuffer(); - SendCommandNG(CMD_LF_ACQ_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); - PacketResponseNG resp; - if (gs_lf_threshold_set) { - WaitForResponse(CMD_LF_ACQ_RAW_ADC, &resp); + const uint8_t bits_per_sample = current_config.bits_per_sample; + + if (realtime) { + uint8_t *realtimeBuf = calloc(samples, sizeof(uint8_t)); + + size_t sample_bytes = samples * bits_per_sample; + sample_bytes = (sample_bytes / 8) + (sample_bytes % 8 != 0); + + SendCommandNG(CMD_LF_ACQ_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); + sample_bytes = WaitForRawDataTimeout(realtimeBuf, sample_bytes, 1000, true); + samples = sample_bytes * 8 / bits_per_sample; + getSamplesFromBufEx(realtimeBuf, samples, bits_per_sample, verbose); + + free(realtimeBuf); } else { - if (!WaitForResponseTimeout(CMD_LF_ACQ_RAW_ADC, &resp, 2500)) { - PrintAndLogEx(WARNING, "(lf_read) command execution time out"); - return PM3_ETIMEOUT; + payload.samples = (samples > MAX_LF_SAMPLES) ? MAX_LF_SAMPLES : samples; + SendCommandNG(CMD_LF_ACQ_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); + PacketResponseNG resp; + if (gs_lf_threshold_set) { + WaitForResponse(CMD_LF_ACQ_RAW_ADC, &resp); + } else { + if (!WaitForResponseTimeout(CMD_LF_ACQ_RAW_ADC, &resp, 2500)) { + PrintAndLogEx(WARNING, "(lf_read) command execution time out"); + return PM3_ETIMEOUT; + } } + // response is number of bits read + uint32_t size = (resp.data.asDwords[0] / bits_per_sample); + getSamples(size, verbose); } - // response is number of bits read - uint32_t size = (resp.data.asDwords[0] / 8); - getSamples(size, verbose); return PM3_SUCCESS; } +int lf_read(bool verbose, uint64_t samples) { + return lf_read_internal(false, verbose, samples); +} + int CmdLFRead(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf read", @@ -729,6 +756,7 @@ int CmdLFRead(const char *Cmd) { _CYAN_(" - use ") _YELLOW_("`data plot`") _CYAN_(" to look at it"), "lf read -v -s 12000 --> collect 12000 samples\n" "lf read -s 3000 -@ --> oscilloscope style \n" + "lf read -r --> use real-time mode \n" ); void *argtable[] = { @@ -736,50 +764,78 @@ int CmdLFRead(const char *Cmd) { arg_u64_0("s", "samples", "<dec>", "number of samples to collect"), arg_lit0("v", "verbose", "verbose output"), arg_lit0("@", NULL, "continuous reading mode"), + arg_lit0("r", "realtime", "real-time reading mode"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); - uint32_t samples = arg_get_u32_def(ctx, 1, 0); + uint64_t samples = arg_get_u64_def(ctx, 1, 0); bool verbose = arg_get_lit(ctx, 2); bool cm = arg_get_lit(ctx, 3); + bool realtime = arg_get_lit(ctx, 4); CLIParserFree(ctx); if (g_session.pm3_present == false) return PM3_ENOTTY; - if (cm) { + if (realtime && samples == 0) { + samples = MAX_GRAPH_TRACE_LEN; + } + + if (cm || realtime) { PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " to exit"); } int ret = PM3_SUCCESS; do { - ret = lf_read(verbose, samples); + ret = lf_read_internal(realtime, verbose, samples); } while (cm && kbd_enter_pressed() == false); return ret; } -int lf_sniff(bool verbose, uint32_t samples) { +int lf_sniff(bool realtime, bool verbose, uint64_t samples) { if (!g_session.pm3_present) return PM3_ENOTTY; lf_sample_payload_t payload; - - payload.samples = (samples & 0xFFFF); + payload.realtime = realtime; payload.verbose = verbose; + sample_config current_config; + int retval = lf_getconfig(&current_config); + if (retval != PM3_SUCCESS) { + PrintAndLogEx(ERR, "failed to get current device config"); + return retval; + } clearCommandBuffer(); - SendCommandNG(CMD_LF_SNIFF_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); - PacketResponseNG resp; - if (gs_lf_threshold_set) { - WaitForResponse(CMD_LF_SNIFF_RAW_ADC, &resp); + const uint8_t bits_per_sample = current_config.bits_per_sample; + + if (realtime) { + uint8_t *realtimeBuf = calloc(samples, sizeof(uint8_t)); + + size_t sample_bytes = samples * bits_per_sample; + sample_bytes = (sample_bytes / 8) + (sample_bytes % 8 != 0); + + SendCommandNG(CMD_LF_SNIFF_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); + sample_bytes = WaitForRawDataTimeout(realtimeBuf, sample_bytes, 1000, true); + samples = sample_bytes * 8 / bits_per_sample; + getSamplesFromBufEx(realtimeBuf, samples, bits_per_sample, verbose); + + free(realtimeBuf); } else { - if (WaitForResponseTimeout(CMD_LF_SNIFF_RAW_ADC, &resp, 2500) == false) { - PrintAndLogEx(WARNING, "(lf_read) command execution time out"); - return PM3_ETIMEOUT; + payload.samples = (samples > MAX_LF_SAMPLES) ? MAX_LF_SAMPLES : samples; + SendCommandNG(CMD_LF_SNIFF_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); + PacketResponseNG resp; + if (gs_lf_threshold_set) { + WaitForResponse(CMD_LF_SNIFF_RAW_ADC, &resp); + } else { + if (WaitForResponseTimeout(CMD_LF_SNIFF_RAW_ADC, &resp, 2500) == false) { + PrintAndLogEx(WARNING, "(lf_read) command execution time out"); + return PM3_ETIMEOUT; + } } + // response is number of bits read + uint32_t size = (resp.data.asDwords[0] / bits_per_sample); + getSamples(size, verbose); } - // response is number of bits read - uint32_t size = (resp.data.asDwords[0] / 8); - getSamples(size, verbose); return PM3_SUCCESS; } @@ -794,6 +850,7 @@ int CmdLFSniff(const char *Cmd) { _CYAN_(" - use ") _YELLOW_("`lf search -1`") _CYAN_(" to see if signal can be automatic decoded\n"), "lf sniff -v\n" "lf sniff -s 3000 -@ --> oscilloscope style \n" + "lf sniff -r --> use real-time mode \n" ); void *argtable[] = { @@ -801,24 +858,30 @@ int CmdLFSniff(const char *Cmd) { arg_u64_0("s", "samples", "<dec>", "number of samples to collect"), arg_lit0("v", "verbose", "verbose output"), arg_lit0("@", NULL, "continuous sniffing mode"), + arg_lit0("r", "realtime", "real-time sniffing mode"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); - uint32_t samples = (arg_get_u32_def(ctx, 1, 0) & 0xFFFF); + uint64_t samples = arg_get_u64_def(ctx, 1, 0); bool verbose = arg_get_lit(ctx, 2); bool cm = arg_get_lit(ctx, 3); + bool realtime = arg_get_lit(ctx, 4); CLIParserFree(ctx); if (g_session.pm3_present == false) return PM3_ENOTTY; - if (cm) { + if (realtime && samples == 0) { + samples = MAX_GRAPH_TRACE_LEN; + } + + if (cm || realtime) { PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " to exit"); } int ret = PM3_SUCCESS; do { - ret = lf_sniff(verbose, samples); - } while (cm && !kbd_enter_pressed()); + ret = lf_sniff(realtime, verbose, samples); + } while (cm && kbd_enter_pressed() == false); return ret; } diff --git a/client/src/cmdlf.h b/client/src/cmdlf.h index 3bcd3ecf2..b29fd137f 100644 --- a/client/src/cmdlf.h +++ b/client/src/cmdlf.h @@ -40,8 +40,8 @@ int CmdLFSniff(const char *Cmd); int CmdVchDemod(const char *Cmd); int CmdLFfind(const char *Cmd); -int lf_read(bool verbose, uint32_t samples); -int lf_sniff(bool verbose, uint32_t samples); +int lf_read(bool verbose, uint64_t samples); +int lf_sniff(bool realtime, bool verbose, uint64_t samples); int lf_config(sample_config *config); int lf_getconfig(sample_config *config); int lfsim_upload_gb(void); From 8b6a274e289cd96f16616de741f0d02fb10d1e6e Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 14 Nov 2023 10:05:13 +0800 Subject: [PATCH 0775/1034] Bigger graph buffer 1280000 samples -> 10.24s for 125kHz 8bit sampling Allocate graph related memory on heap --- client/src/cmddata.c | 27 ++++++++++++++++++--------- client/src/cmdlf.c | 4 +++- client/src/cmdlfhid.c | 4 +++- client/src/cmdlfindala.c | 3 ++- client/src/cmdlfio.c | 7 +++++-- client/src/cmdlfparadox.c | 8 +++++--- client/src/cmdlfpyramid.c | 7 +++++-- client/src/graph.h | 2 +- 8 files changed, 42 insertions(+), 20 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 534663844..3339f9681 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1011,7 +1011,7 @@ static int CmdUndecimate(const char *Cmd) { CLIParserFree(ctx); //We have memory, don't we? - int swap[MAX_GRAPH_TRACE_LEN] = {0}; + int *swap = calloc(MAX_GRAPH_TRACE_LEN, sizeof(int)); uint32_t g_index = 0, s_index = 0; while (g_index < g_GraphTraceLen && s_index + factor < MAX_GRAPH_TRACE_LEN) { int count = 0; @@ -1028,6 +1028,7 @@ static int CmdUndecimate(const char *Cmd) { memcpy(g_GraphBuffer, swap, s_index * sizeof(int)); g_GraphTraceLen = s_index; RepaintGraphWindow(); + free(swap); return PM3_SUCCESS; } @@ -1707,7 +1708,7 @@ int CmdHpf(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, true); CLIParserFree(ctx); - uint8_t bits[g_GraphTraceLen]; + uint8_t *bits = malloc(g_GraphTraceLen); size_t size = getFromGraphBuf(bits); removeSignalOffset(bits, size); // push it back to graph @@ -1716,6 +1717,7 @@ int CmdHpf(const char *Cmd) { computeSignalProperties(bits, size); RepaintGraphWindow(); + free(bits); return PM3_SUCCESS; } @@ -2103,12 +2105,13 @@ static int CmdLoad(const char *Cmd) { PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " samples", g_GraphTraceLen); if (nofix == false) { - uint8_t bits[g_GraphTraceLen]; + uint8_t *bits = malloc(g_GraphTraceLen); size_t size = getFromGraphBuf(bits); removeSignalOffset(bits, size); setGraphBuf(bits, size); computeSignalProperties(bits, size); + free(bits); } setClockGrid(0, 0); @@ -2240,12 +2243,13 @@ int CmdNorm(const char *Cmd) { } } - uint8_t bits[g_GraphTraceLen]; + uint8_t *bits = malloc(g_GraphTraceLen); size_t size = getFromGraphBuf(bits); // set signal properties low/high/mean/amplitude and is_noise detection computeSignalProperties(bits, size); RepaintGraphWindow(); + free(bits); return PM3_SUCCESS; } @@ -2386,12 +2390,13 @@ static int CmdDirectionalThreshold(const char *Cmd) { directionalThreshold(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen, up, down); // set signal properties low/high/mean/amplitude and isnoice detection - uint8_t bits[g_GraphTraceLen]; + uint8_t *bits = malloc(g_GraphTraceLen); size_t size = getFromGraphBuf(bits); // set signal properties low/high/mean/amplitude and is_noice detection computeSignalProperties(bits, size); RepaintGraphWindow(); + free(bits); return PM3_SUCCESS; } @@ -2429,11 +2434,12 @@ static int CmdZerocrossings(const char *Cmd) { } } - uint8_t bits[g_GraphTraceLen]; + uint8_t *bits = malloc(g_GraphTraceLen); size_t size = getFromGraphBuf(bits); // set signal properties low/high/mean/amplitude and is_noise detection computeSignalProperties(bits, size); RepaintGraphWindow(); + free(bits); return PM3_SUCCESS; } @@ -2742,11 +2748,12 @@ static int CmdDataIIR(const char *Cmd) { iceSimple_Filter(g_GraphBuffer, g_GraphTraceLen, k); - uint8_t bits[g_GraphTraceLen]; + uint8_t *bits = malloc(g_GraphTraceLen); size_t size = getFromGraphBuf(bits); // set signal properties low/high/mean/amplitude and is_noise detection computeSignalProperties(bits, size); RepaintGraphWindow(); + free(bits); return PM3_SUCCESS; } @@ -3369,11 +3376,12 @@ static int CmdCenterThreshold(const char *Cmd) { centerThreshold(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen, up, down); // set signal properties low/high/mean/amplitude and isnoice detection - uint8_t bits[g_GraphTraceLen]; + uint8_t *bits = malloc(g_GraphTraceLen); size_t size = getFromGraphBuf(bits); // set signal properties low/high/mean/amplitude and is_noice detection computeSignalProperties(bits, size); RepaintGraphWindow(); + free(bits); return PM3_SUCCESS; } @@ -3414,11 +3422,12 @@ static int CmdEnvelope(const char *Cmd) { envelope_square(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen); - uint8_t bits[g_GraphTraceLen]; + uint8_t *bits = malloc(g_GraphTraceLen); size_t size = getFromGraphBuf(bits); // set signal properties low/high/mean/amplitude and is_noice detection computeSignalProperties(bits, size); RepaintGraphWindow(); + free(bits); return PM3_SUCCESS; } diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index f078f795f..02f630f30 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -433,7 +433,7 @@ int CmdFlexdemod(const char *Cmd) { #endif int i, j, start, bit, sum; - int data[g_GraphTraceLen]; + int *data = malloc(g_GraphTraceLen * sizeof(int)); memcpy(data, g_GraphBuffer, g_GraphTraceLen); size_t size = g_GraphTraceLen; @@ -454,6 +454,7 @@ int CmdFlexdemod(const char *Cmd) { if (start == size - LONG_WAIT) { PrintAndLogEx(WARNING, "nothing to wait for"); + free(data); return PM3_ENODATA; } @@ -497,6 +498,7 @@ int CmdFlexdemod(const char *Cmd) { } } RepaintGraphWindow(); + free(data); return PM3_SUCCESS; } diff --git a/client/src/cmdlfhid.c b/client/src/cmdlfhid.c index 7e3763ec5..8e3a1e8eb 100644 --- a/client/src/cmdlfhid.c +++ b/client/src/cmdlfhid.c @@ -117,10 +117,11 @@ int demodHID(bool verbose) { //raw fsk demod no manchester decoding no start bit finding just get binary from wave uint32_t hi2 = 0, hi = 0, lo = 0; - uint8_t bits[g_GraphTraceLen]; + uint8_t *bits = malloc(g_GraphTraceLen); size_t size = getFromGraphBuf(bits); if (size == 0) { PrintAndLogEx(DEBUG, "DEBUG: Error - " _RED_("HID not enough samples")); + free(bits); return PM3_ESOFT; } //get binary from fsk wave @@ -146,6 +147,7 @@ int demodHID(bool verbose) { setDemodBuff(bits, size, idx); setClockGrid(50, waveIdx + (idx * 50)); + free(bits); if (hi2 == 0 && hi == 0 && lo == 0) { PrintAndLogEx(DEBUG, "DEBUG: Error - " _RED_("HID no values found")); diff --git a/client/src/cmdlfindala.c b/client/src/cmdlfindala.c index ba1d14205..3e8b3bcd7 100644 --- a/client/src/cmdlfindala.c +++ b/client/src/cmdlfindala.c @@ -403,7 +403,7 @@ static int CmdIndalaDemodAlt(const char *Cmd) { // worst case with g_GraphTraceLen=40000 is < 4096 // under normal conditions it's < 2048 - uint8_t data[MAX_GRAPH_TRACE_LEN] = {0}; + uint8_t *data = calloc(MAX_GRAPH_TRACE_LEN, sizeof(uint8_t)); size_t datasize = getFromGraphBuf(data); uint8_t rawbits[4096] = {0}; @@ -446,6 +446,7 @@ static int CmdIndalaDemodAlt(const char *Cmd) { count = 0; } } + free(data); if (rawbit > 0) { PrintAndLogEx(INFO, "Recovered %d raw bits, expected: %zu", rawbit, g_GraphTraceLen / 32); diff --git a/client/src/cmdlfio.c b/client/src/cmdlfio.c index 454d01a54..a5507ce33 100644 --- a/client/src/cmdlfio.c +++ b/client/src/cmdlfio.c @@ -66,10 +66,11 @@ static int CmdIOProxWatch(const char *Cmd) { int demodIOProx(bool verbose) { (void) verbose; // unused so far int idx = 0, retval = PM3_SUCCESS; - uint8_t bits[MAX_GRAPH_TRACE_LEN] = {0}; + uint8_t *bits = calloc(MAX_GRAPH_TRACE_LEN, sizeof(uint8_t)); size_t size = getFromGraphBuf(bits); if (size < 65) { PrintAndLogEx(DEBUG, "DEBUG: Error - IO prox not enough samples in GraphBuffer"); + free(bits); return PM3_ESOFT; } //get binary from fsk wave @@ -93,6 +94,7 @@ int demodIOProx(bool verbose) { PrintAndLogEx(DEBUG, "DEBUG: Error - IO prox error demoding fsk %d", idx); } } + free(bits); return PM3_ESOFT; } setDemodBuff(bits, size, idx); @@ -103,6 +105,7 @@ int demodIOProx(bool verbose) { PrintAndLogEx(DEBUG, "DEBUG: Error - IO prox data not found - FSK Bits: %zu", size); if (size > 92) PrintAndLogEx(DEBUG, "%s", sprint_bytebits_bin_break(bits, 92, 16)); } + free(bits); return PM3_ESOFT; } @@ -156,6 +159,7 @@ int demodIOProx(bool verbose) { printDemodBuff(0, false, false, true); printDemodBuff(0, false, false, false); } + free(bits); return retval; } @@ -441,4 +445,3 @@ int getIOProxBits(uint8_t version, uint8_t fc, uint16_t cn, uint8_t *bits) { PrintAndLogEx(SUCCESS, "IO raw bits:\n %s \n", sprint_bytebits_bin(bits, 64)); return PM3_SUCCESS; } - diff --git a/client/src/cmdlfparadox.c b/client/src/cmdlfparadox.c index d750efa51..f82ef52f2 100644 --- a/client/src/cmdlfparadox.c +++ b/client/src/cmdlfparadox.c @@ -103,10 +103,11 @@ static uint8_t GetParadoxBits(const uint32_t fc, const uint32_t cn, unsigned int int demodParadox(bool verbose, bool oldChksum) { (void) verbose; // unused so far //raw fsk demod no manchester decoding no start bit finding just get binary from wave - uint8_t bits[MAX_GRAPH_TRACE_LEN] = {0}; + uint8_t *bits = calloc(MAX_GRAPH_TRACE_LEN, sizeof(uint8_t)); size_t size = getFromGraphBuf(bits); if (size == 0) { PrintAndLogEx(DEBUG, "DEBUG: Error - Paradox not enough samples"); + free(bits); return PM3_ESOFT; } @@ -125,6 +126,7 @@ int demodParadox(bool verbose, bool oldChksum) { else PrintAndLogEx(DEBUG, "DEBUG: Error - Paradox error demoding fsk %d", idx); + free(bits); return PM3_ESOFT; } @@ -175,6 +177,7 @@ int demodParadox(bool verbose, bool oldChksum) { if (hi2 == 0 && hi == 0 && lo == 0) { PrintAndLogEx(DEBUG, "DEBUG: Error - Paradox no value found"); + free(bits); return PM3_ESOFT; } @@ -230,6 +233,7 @@ int demodParadox(bool verbose, bool oldChksum) { printDemodBuff(0, false, false, false); } + free(bits); return PM3_SUCCESS; } @@ -500,5 +504,3 @@ int detectParadox(uint8_t *dest, size_t *size, int *wave_start_idx) { return (int)idx; } - - diff --git a/client/src/cmdlfpyramid.c b/client/src/cmdlfpyramid.c index 80eeb251c..4edc2b287 100644 --- a/client/src/cmdlfpyramid.c +++ b/client/src/cmdlfpyramid.c @@ -43,10 +43,11 @@ static int CmdHelp(const char *Cmd); int demodPyramid(bool verbose) { (void) verbose; // unused so far //raw fsk demod no manchester decoding no start bit finding just get binary from wave - uint8_t bits[MAX_GRAPH_TRACE_LEN] = {0}; + uint8_t *bits = calloc(MAX_GRAPH_TRACE_LEN, sizeof(uint8_t)); size_t size = getFromGraphBuf(bits); if (size == 0) { PrintAndLogEx(DEBUG, "DEBUG: Error - Pyramid not enough samples"); + free(bits); return PM3_ESOFT; } //get binary from fsk wave @@ -65,6 +66,7 @@ int demodPyramid(bool verbose) { PrintAndLogEx(DEBUG, "DEBUG: Error - Pyramid: size not correct: %zu", size); else PrintAndLogEx(DEBUG, "DEBUG: Error - Pyramid: error demoding fsk idx: %d", idx); + free(bits); return PM3_ESOFT; } setDemodBuff(bits, size, idx); @@ -113,6 +115,7 @@ int demodPyramid(bool verbose) { PrintAndLogEx(DEBUG, "DEBUG: Error - Pyramid: parity check failed - IDX: %d, hi3: %08X", idx, rawHi3); else PrintAndLogEx(DEBUG, "DEBUG: Error - Pyramid: at parity check - tag size does not match Pyramid format, SIZE: %zu, IDX: %d, hi3: %08X", size, idx, rawHi3); + free(bits); return PM3_ESOFT; } @@ -181,6 +184,7 @@ int demodPyramid(bool verbose) { printDemodBuff(0, false, false, false); } + free(bits); return PM3_SUCCESS; } @@ -507,4 +511,3 @@ int detectPyramid(uint8_t *dest, size_t *size, int *waveStartIdx) { return (int)startIdx; } - diff --git a/client/src/graph.h b/client/src/graph.h index 3be6c9852..4963fb2b1 100644 --- a/client/src/graph.h +++ b/client/src/graph.h @@ -42,7 +42,7 @@ int GetNrzClock(const char *str, bool verbose); int GetFskClock(const char *str, bool verbose); bool fskClocks(uint8_t *fc1, uint8_t *fc2, uint8_t *rf1, int *firstClockEdge); -#define MAX_GRAPH_TRACE_LEN (40000 * 8) +#define MAX_GRAPH_TRACE_LEN (40000 * 32) #define GRAPH_SAVE 1 #define GRAPH_RESTORE 0 From ab9f49f86ef0ed4b0358b8fadee5707bb1b91a21 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 14 Nov 2023 10:34:50 +0800 Subject: [PATCH 0776/1034] Some minor fixes Use longer timeout in WaitForRawDataTimeout() to handle CMD_WTX Fix a wrong type Apply changes to other similar part Remove unused instructions --- armsrc/fpgaloader.c | 2 +- armsrc/lfsampling.c | 23 ++++++++++------------- armsrc/lfzx.c | 2 +- client/src/cmdlf.c | 6 ++++-- include/common.h | 3 +++ 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index ccc47bcde..7ac52a42a 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -493,7 +493,7 @@ void FpgaDownloadAndGo(int bitstream_version) { #endif // Send waiting time extension request as this will take a while - send_wtx(1500); + send_wtx(FPGA_LOAD_WAIT_TIME); bool verbose = (g_dbglevel > 3); diff --git a/armsrc/lfsampling.c b/armsrc/lfsampling.c index 123befb3a..df1c7454a 100644 --- a/armsrc/lfsampling.c +++ b/armsrc/lfsampling.c @@ -229,7 +229,7 @@ void logSample(uint8_t sample, uint8_t decimation, uint8_t bits_per_sample, bool // write the current byte data.buffer[data.numbits >> 3] |= sample >> bits_offset; - int numbits = data.numbits + bits_cap; + uint32_t numbits = data.numbits + bits_cap; // write the remaining bits to the next byte data.buffer[numbits >> 3] |= sample << (bits_cap); @@ -306,7 +306,7 @@ uint32_t DoAcquisition(uint8_t decimation, uint8_t bits_per_sample, bool avg, in // only every 4000th times, in order to save time when collecting samples. // interruptible only when logging not yet triggered - if ((checked >= 4000) && trigger_hit == false) { + if (unlikely(trigger_hit == false && (checked >= 4000))) { if (data_available()) { checked = -1; break; @@ -325,11 +325,11 @@ uint32_t DoAcquisition(uint8_t decimation, uint8_t bits_per_sample, bool avg, in if (AT91C_BASE_SSC->SSC_SR & AT91C_SSC_RXRDY) { volatile uint8_t sample = (uint8_t)AT91C_BASE_SSC->SSC_RHR; - // Test point 8 (TP8) can be used to trigger oscilloscope + // (RDV4) Test point 8 (TP8) can be used to trigger oscilloscope if (ledcontrol) LED_D_OFF(); // threshold either high or low values 128 = center 0. if trigger = 178 - if (trigger_hit == false) { + if (unlikely(trigger_hit == false)) { if ((trigger_threshold > 0) && (sample < (trigger_threshold + 128)) && (sample > (128 - trigger_threshold))) { if (cancel_after > 0) { cancel_counter++; @@ -338,11 +338,10 @@ uint32_t DoAcquisition(uint8_t decimation, uint8_t bits_per_sample, bool avg, in } continue; } + trigger_hit = true; } - trigger_hit = true; - - if (samples_to_skip > 0) { + if (unlikely(samples_to_skip > 0)) { samples_to_skip--; continue; } @@ -371,6 +370,7 @@ uint32_t DoAcquisition(uint8_t decimation, uint8_t bits_per_sample, bool avg, in } return data.numbits; } + /** * @brief Does sample acquisition, ignoring the config values set in the sample_config. * This method is typically used by tag-specific readers who just wants to read the samples @@ -441,7 +441,7 @@ int ReadLF_realtime(bool reader_field) { int32_t samples_to_skip = config.samples_to_skip; const uint8_t decimation = config.decimation; - uint32_t sample_size = 64; + uint32_t sample_buffer_len = 64; const int8_t size_threshold_table[9] = {0, 64, 64, 60, 64, 60, 60, 56, 64}; const int8_t size_threshold = size_threshold_table[bits_per_sample]; @@ -450,14 +450,11 @@ int ReadLF_realtime(bool reader_field) { uint8_t curr_byte = 0; int return_value = PM3_SUCCESS; - initSampleBuffer(&sample_size); // sample size in bytes - if (sample_size != 64) { + initSampleBuffer(&sample_buffer_len); + if (sample_buffer_len != 64) { return PM3_EFAILED; } - sample_size <<= 3; // sample size in bits - sample_size /= bits_per_sample; // sample count - bool trigger_hit = false; int16_t checked = 0; diff --git a/armsrc/lfzx.c b/armsrc/lfzx.c index f086c2d71..f95b2c2b7 100644 --- a/armsrc/lfzx.c +++ b/armsrc/lfzx.c @@ -153,7 +153,7 @@ static void zx_get(bool ledcontrol) { volatile uint8_t sample = (uint8_t)AT91C_BASE_SSC->SSC_RHR; (void)sample; - // Test point 8 (TP8) can be used to trigger oscilloscope + // (RDV4) Test point 8 (TP8) can be used to trigger oscilloscope if (ledcontrol) LED_D_OFF(); } diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 02f630f30..b32f67897 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -721,7 +721,7 @@ static int lf_read_internal(bool realtime, bool verbose, uint64_t samples) { sample_bytes = (sample_bytes / 8) + (sample_bytes % 8 != 0); SendCommandNG(CMD_LF_ACQ_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); - sample_bytes = WaitForRawDataTimeout(realtimeBuf, sample_bytes, 1000, true); + sample_bytes = WaitForRawDataTimeout(realtimeBuf, sample_bytes, 1000 + FPGA_LOAD_WAIT_TIME, true); samples = sample_bytes * 8 / bits_per_sample; getSamplesFromBufEx(realtimeBuf, samples, bits_per_sample, verbose); @@ -751,6 +751,7 @@ int lf_read(bool verbose, uint64_t samples) { } int CmdLFRead(const char *Cmd) { + // In real-time mode, the first few bytes might be the response of CMD_WTX rather than the real samples CLIParserContext *ctx; CLIParserInit(&ctx, "lf read", "Sniff low frequency signal.\n" @@ -816,7 +817,7 @@ int lf_sniff(bool realtime, bool verbose, uint64_t samples) { sample_bytes = (sample_bytes / 8) + (sample_bytes % 8 != 0); SendCommandNG(CMD_LF_SNIFF_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); - sample_bytes = WaitForRawDataTimeout(realtimeBuf, sample_bytes, 1000, true); + sample_bytes = WaitForRawDataTimeout(realtimeBuf, sample_bytes, 1000 + FPGA_LOAD_WAIT_TIME, true); samples = sample_bytes * 8 / bits_per_sample; getSamplesFromBufEx(realtimeBuf, samples, bits_per_sample, verbose); @@ -842,6 +843,7 @@ int lf_sniff(bool realtime, bool verbose, uint64_t samples) { } int CmdLFSniff(const char *Cmd) { + // In real-time mode, the first few bytes might be the response of CMD_WTX rather than the real samples CLIParserContext *ctx; CLIParserInit(&ctx, "lf sniff", "Sniff low frequency signal. You need to configure the LF part on the Proxmark3 device manually.\n" diff --git a/include/common.h b/include/common.h index 37cf254d9..b3d4598c5 100644 --- a/include/common.h +++ b/include/common.h @@ -196,6 +196,9 @@ extern bool g_tearoff_enabled; #define CLEAR_BIT(data, i) *(data + (i / 8)) &= ~(1 << (7 - (i % 8))) #define FLIP_BIT(data, i) *(data + (i / 8)) ^= (1 << (7 - (i % 8))) +// time for decompressing and loading the image to the FPGA +#define FPGA_LOAD_WAIT_TIME (1500) + // GCC extension // from client/deps/tinycbor/compilersupport_p.h #ifdef __GNUC__ From 835b7a9150c9774102b8c803b50aab7e570c29cb Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 14 Nov 2023 13:12:35 +0800 Subject: [PATCH 0777/1034] Add support for trigger threshold --- client/src/cmdlf.c | 40 ++++++++++++++++++++++++++++++---------- client/src/comms.c | 21 ++++++++++++++------- 2 files changed, 44 insertions(+), 17 deletions(-) diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index b32f67897..17805b9b1 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -66,8 +66,6 @@ #include "crc.h" #include "pm3_cmd.h" // for LF_CMDREAD_MAX_EXTRA_SYMBOLS -static bool gs_lf_threshold_set = false; - static int CmdHelp(const char *Cmd); // Informative user function. @@ -646,7 +644,6 @@ int CmdLFConfig(const char *Cmd) { config.divisor = LF_DIVISOR_125; config.samples_to_skip = 0; config.trigger_threshold = 0; - gs_lf_threshold_set = false; } if (use_125) @@ -691,7 +688,6 @@ int CmdLFConfig(const char *Cmd) { if (trigg > -1) { config.trigger_threshold = trigg; - gs_lf_threshold_set = (config.trigger_threshold > 0); } config.samples_to_skip = skip; @@ -713,6 +709,7 @@ static int lf_read_internal(bool realtime, bool verbose, uint64_t samples) { } clearCommandBuffer(); const uint8_t bits_per_sample = current_config.bits_per_sample; + const bool is_trigger_threshold_set = (current_config.trigger_threshold > 0); if (realtime) { uint8_t *realtimeBuf = calloc(samples, sizeof(uint8_t)); @@ -721,16 +718,27 @@ static int lf_read_internal(bool realtime, bool verbose, uint64_t samples) { sample_bytes = (sample_bytes / 8) + (sample_bytes % 8 != 0); SendCommandNG(CMD_LF_ACQ_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); - sample_bytes = WaitForRawDataTimeout(realtimeBuf, sample_bytes, 1000 + FPGA_LOAD_WAIT_TIME, true); + if (is_trigger_threshold_set) { + size_t first_receive_len = 32; // larger than the response of CMD_WTX + // wait until a bunch of data arrives + first_receive_len = WaitForRawDataTimeout(realtimeBuf, first_receive_len, -1, false); + sample_bytes = WaitForRawDataTimeout(realtimeBuf + first_receive_len, sample_bytes - first_receive_len, 1000 + FPGA_LOAD_WAIT_TIME, true); + sample_bytes += first_receive_len; + } else { + sample_bytes = WaitForRawDataTimeout(realtimeBuf, sample_bytes, 1000 + FPGA_LOAD_WAIT_TIME, true); + } samples = sample_bytes * 8 / bits_per_sample; - getSamplesFromBufEx(realtimeBuf, samples, bits_per_sample, verbose); + PrintAndLogEx(INFO, "Done: %" PRIu64 " samples (%zu bytes)", samples, sample_bytes); + if (samples != 0) { + getSamplesFromBufEx(realtimeBuf, samples, bits_per_sample, verbose); + } free(realtimeBuf); } else { payload.samples = (samples > MAX_LF_SAMPLES) ? MAX_LF_SAMPLES : samples; SendCommandNG(CMD_LF_ACQ_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); PacketResponseNG resp; - if (gs_lf_threshold_set) { + if (is_trigger_threshold_set) { WaitForResponse(CMD_LF_ACQ_RAW_ADC, &resp); } else { if (!WaitForResponseTimeout(CMD_LF_ACQ_RAW_ADC, &resp, 2500)) { @@ -809,6 +817,7 @@ int lf_sniff(bool realtime, bool verbose, uint64_t samples) { } clearCommandBuffer(); const uint8_t bits_per_sample = current_config.bits_per_sample; + const bool is_trigger_threshold_set = (current_config.trigger_threshold > 0); if (realtime) { uint8_t *realtimeBuf = calloc(samples, sizeof(uint8_t)); @@ -817,16 +826,27 @@ int lf_sniff(bool realtime, bool verbose, uint64_t samples) { sample_bytes = (sample_bytes / 8) + (sample_bytes % 8 != 0); SendCommandNG(CMD_LF_SNIFF_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); - sample_bytes = WaitForRawDataTimeout(realtimeBuf, sample_bytes, 1000 + FPGA_LOAD_WAIT_TIME, true); + if (is_trigger_threshold_set) { + size_t first_receive_len = 32; // larger than the response of CMD_WTX + // wait until a bunch of data arrives + first_receive_len = WaitForRawDataTimeout(realtimeBuf, first_receive_len, -1, false); + sample_bytes = WaitForRawDataTimeout(realtimeBuf + first_receive_len, sample_bytes - first_receive_len, 1000 + FPGA_LOAD_WAIT_TIME, true); + sample_bytes += first_receive_len; + } else { + sample_bytes = WaitForRawDataTimeout(realtimeBuf, sample_bytes, 1000 + FPGA_LOAD_WAIT_TIME, true); + } samples = sample_bytes * 8 / bits_per_sample; - getSamplesFromBufEx(realtimeBuf, samples, bits_per_sample, verbose); + PrintAndLogEx(INFO, "Done: %" PRIu64 " samples (%zu bytes)", samples, sample_bytes); + if (samples != 0) { + getSamplesFromBufEx(realtimeBuf, samples, bits_per_sample, verbose); + } free(realtimeBuf); } else { payload.samples = (samples > MAX_LF_SAMPLES) ? MAX_LF_SAMPLES : samples; SendCommandNG(CMD_LF_SNIFF_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); PacketResponseNG resp; - if (gs_lf_threshold_set) { + if (is_trigger_threshold_set) { WaitForResponse(CMD_LF_SNIFF_RAW_ADC, &resp); } else { if (WaitForResponseTimeout(CMD_LF_SNIFF_RAW_ADC, &resp, 2500) == false) { diff --git a/client/src/comms.c b/client/src/comms.c index be2d481dc..1cd01d728 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -402,10 +402,6 @@ __attribute__((force_align_arg_pointer)) uint8_t dummyData[64]; uint32_t dummyLen; uart_receive(sp, dummyData, sizeof(dummyData), &dummyLen); - - // set the buffer as undefined - // comm_raw_data == NULL is used in SetCommunicationReceiveMode() - __atomic_store_n(&comm_raw_data, NULL, __ATOMIC_SEQ_CST); } } else { if (is_receiving_raw_last) { @@ -856,6 +852,12 @@ size_t WaitForRawDataTimeout(uint8_t *buffer, size_t len, size_t ms_timeout, boo // send anything to stop the transfer PrintAndLogEx(INFO, "Stopping"); SendCommandNG(CMD_BREAK_LOOP, NULL, 0); + + // for ms_timeout == -1, pos < len might always be true + // so user need a spectial way to break this loop + if (ms_timeout == (size_t) - 1) { + break; + } } pos = __atomic_load_n(&comm_raw_pos, __ATOMIC_SEQ_CST); @@ -863,7 +865,8 @@ size_t WaitForRawDataTimeout(uint8_t *buffer, size_t len, size_t ms_timeout, boo // check the timeout if pos is not updated if (last_pos == pos) { uint64_t tmp_clk = __atomic_load_n(&timeout_start_time, __ATOMIC_SEQ_CST); - if ((msclock() - tmp_clk > ms_timeout)) { + // if ms_timeout == -1, the loop can only be breaked by pressing Enter or receiving enough data + if ((ms_timeout != (size_t) - 1) && (msclock() - tmp_clk > ms_timeout)) { break; } } else { @@ -877,13 +880,17 @@ size_t WaitForRawDataTimeout(uint8_t *buffer, size_t len, size_t ms_timeout, boo last_pos = pos; msleep(10); } - if (pos == len) { + if (pos == len && (ms_timeout != (size_t) - 1)) { + // if ms_timeout != -1, when the desired data is received, tell the arm side + // to stop the current process, and wait for some time to make sure the process + // has been stopped + // if ms_timeout == -1, the user might not want to break the existing process + // on the arm side SendCommandNG(CMD_BREAK_LOOP, NULL, 0); msleep(ms_timeout); } SetCommunicationReceiveMode(false); pos = __atomic_load_n(&comm_raw_pos, __ATOMIC_SEQ_CST); - PrintAndLogEx(INFO, "Done: [%zu/%zu]", pos, len); return pos; } From 627cf6e3d59435622559cb52032fa6671d1ff987 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski <henrygab@users.noreply.github.com> Date: Tue, 14 Nov 2023 01:52:02 -0800 Subject: [PATCH 0778/1034] Slow clock speed message update Signed-off-by: Henry Gabryjelski <henrygab@users.noreply.github.com> --- armsrc/appmain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index b8823af3b..29cdb9c0e 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -432,7 +432,7 @@ static void SendStatus(uint32_t wait) { delta_time = GetTickCountDelta(start_time); if ((delta_time < SLCK_CHECK_MS - 1) || (delta_time > SLCK_CHECK_MS + 1)) { // error > 2% with SLCK_CHECK_MS=50 - Dbprintf(_RED_(" Slow Clock speed change detected, TIA needed")); + Dbprintf(_RED_(" Slow Clock speed change detected, run `hw tia`")); Dbprintf(_YELLOW_(" Slow Clock actual speed seems closer to %d kHz"), (16 * MAINCK / 1000) / mainf * delta_time / SLCK_CHECK_MS); } From fb9e79190e122464fac1b1047fd405534881ad4d Mon Sep 17 00:00:00 2001 From: temskiy <temskiy@DESKTOP.localdomain> Date: Tue, 14 Nov 2023 18:19:49 +0700 Subject: [PATCH 0779/1034] Add some info about UMC --- CHANGELOG.md | 1 + doc/magic_cards_notes.md | 36 ++++++++++++++++++++++++++---------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 398e369bd..289701649 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added some info about UMC in "doc/magic_cards_notes.md" (@temskiy) ## [Faraday.4.17511][2023-11-13] - Fixed Python support of `experimental_client_with_swig` (@doegox) diff --git a/doc/magic_cards_notes.md b/doc/magic_cards_notes.md index ab125ffb6..b70954774 100644 --- a/doc/magic_cards_notes.md +++ b/doc/magic_cards_notes.md @@ -1656,7 +1656,7 @@ Example usage Special raw commands summary: ``` -CF <passwd> 32 <00-03> // Configure GTU shadow mode +CF <passwd> 32 <00-04> // Configure GTU shadow mode CF <passwd> 34 <1b length><0-16b ATS> // Configure ATS CF <passwd> 35 <2b ATQA><1b SAK> // Configure ATQA/SAK (swap ATQA bytes) CF <passwd> 68 <00-02> // Configure UID length @@ -1823,7 +1823,7 @@ Ultralight mode, 10b UID * UID and ATQB are configured according to block0 with a (14a) backdoor write. * UID size is always 4 bytes. -* 14B will show up only on new cards. +* 14B will show up only on new cards. (Need more test on new card. Example not work) Example: ``` @@ -1908,6 +1908,15 @@ This mode is divided into four states: off (pre-write), on (on restore), don’t If you use it, please enter the pre-write mode first. At this time, write the full card data. After writing, set it to on. At this time, after writing the data, the first time you read the data just written, the next time you read It is the pre-written data. All modes support this operation. It should be noted that using any block to read and write in this mode may give wrong results. +*This is very starnge and fuzzed descripotion. I don`t understand how it can work, if "using any block to read and write in this mode may give wrong result" ? Maybe this mode not work for old card too?* + +Modes description for new UMC (configured as MFC for example): + +Mode 2(3): This mode have persistent buffer. All standart command (rdbl, wrbl e.t.c) and all backdoor (gsetblk, ggetblk, gload e.t.c.) commands use this buffer +Mode 0: This mode have persistent buffer too. Standart read command use this buffer. Write command use this buffer AND buffer mode 2 +Mode 4: Here no any buffers. Read command use buffer mode0 and write command use buffer mode 2. This is split mode. +Mode 1: Crazy mode. For new card this mode looks like a bug. Reading/writing first two block use buffer mode 2. Reading other block use (it`s only my oppinion) invalid region of memory and all data looks like pseudo-random. This data is immutable. And acl for all blocks is incorrect. But data is readable... by keys and acl wich was written in buffer mode 0. Write command in this mode use copy of buffer mode 0 and only it. It`s not affected any other buffers. So if you change keys or/and acl you will must use new keys to read data. + Example: `script run hf_mf_ultimatecard -w 1 -g 00 -t 18 -u 04112233445566 -s 112233445566778899001122334455667788990011223344556677 -p FFFFFFFF -a 8080 -o 11111111 -g 01` * -w 1 = wipe the card in Ultralight Mode @@ -1932,9 +1941,10 @@ hf 14a raw -s -c -t 1000 CF<passwd>32<1b param> * `<param>` * `00`: pre-write, shadow data can be written * `01`: restore mode - - WARNING: new UMC (06a0) cards return garbage data when using 01, please use 04! + - WARNING: new UMC (06a0) cards return garbage data when using 01 * `02`: disabled * `03`: disabled, high speed R/W mode for Ultralight? + * `04`: split mode, work with new UMC. With old UMC is untested. ### Direct block read and write ^[Top](#top) ^^[Gen4](#g4top) @@ -2014,7 +2024,7 @@ hf 14a raw -s -c -t 1000 CF<passwd>C6 Default configuration: ``` 00000000000002000978009102DABC191010111213141516040008006B024F6B - ^^^^ ?? + ^^^^ CRC, type unknown ^^ cf cmd cf: block0 direct write setting, factory value 0x02 ^^ cf cmd 6b: maximum read/write sectors, factory value 0x6b ^^ cf cmd 6a: UL mode @@ -2078,32 +2088,38 @@ hf 14a raw -s -c -t 1000 CF00000000F000010000000002000978009102DABC1910101112131 **Ultralight** ``` -hf 14a raw -s -c -t 1000 CF00000000F001010000000003000978009102DABC19101011121314151644000003 +hf 14a raw -s -c -t 1000 CF00000000F001010000000003000978009102DABC19101011121314151644000003FB ``` **Ultralight-C** ``` -hf 14a raw -s -c -t 1000 CF00000000F001010000000003000978009102DABC19101011121314151644000002 +hf 14a raw -s -c -t 1000 CF00000000F001010000000003000978009102DABC19101011121314151644000002FB ``` **Ultralight EV1** ``` -hf 14a raw -s -c -t 1000 CF00000000F001010000000003000978009102DABC19101011121314151644000000 +hf 14a raw -s -c -t 1000 CF00000000F001010000000003000978009102DABC19101011121314151644000000FB ``` **NTAG21x** ``` -hf 14a raw -s -c -t 1000 CF00000000F001010000000003000978009102DABC19101011121314151644000001 +hf 14a raw -s -c -t 1000 CF00000000F001010000000003000978009102DABC19101011121314151644000001FB ``` ### Version and Signature ^[Top](#top) ^^[Gen4](#g4top) +Don`t forget to set up maximum read/write sectors direcly in config or use command 6B + +``` +hf mf raw -s -c -t 1000 CF000000006BFB +``` + Ultralight EV1 and NTAG Version info and Signature are stored respectively in blocks 250-251 and 242-249. Example for an Ultralight EV1 128b with the signature sample from tools/recover_pk.py ``` -hf 14a raw -s -c -t 1000 CF00000000F001010000000003000978009102DABC19101011121314151644000000 +hf 14a raw -s -c -t 1000 CF00000000F001010000000003000978009102DABC19101011121314151644000000FB hf mfu wrbl -b 0 -d 04C12865 hf mfu wrbl -b 1 -d 5A373080 hf mfu wrbl -b 242 -d CEA2EB0B --force @@ -2121,7 +2137,7 @@ hf mfu info Example for an NTAG216 with the signature sample from tools/recover_pk.py ``` -hf 14a raw -s -c -t 1000 CF00000000F001010000000003000978009102DABC19101011121314151644000001 +hf 14a raw -s -c -t 1000 CF00000000F001010000000003000978009102DABC19101011121314151644000001FB hf mfu wrbl -b 0 -d 04E10C61 hf mfu wrbl -b 1 -d DA993C80 hf mfu wrbl -b 242 -d 8B76052E --force From 8bf4e7c25e63254ee4c2a6a9e8d2bb8ada422bdd Mon Sep 17 00:00:00 2001 From: "K.C. Budd" <phreakmonkey@gmail.com> Date: Tue, 14 Nov 2023 08:22:27 -0800 Subject: [PATCH 0780/1034] Fix pthreads on older gcc --- tools/mfkey/Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/mfkey/Makefile b/tools/mfkey/Makefile index 113cd753d..d5b14f1a3 100644 --- a/tools/mfkey/Makefile +++ b/tools/mfkey/Makefile @@ -9,6 +9,11 @@ INSTALLTOOLS = $(BINS) include ../../Makefile.host +# nested_util.c needs pthread support. Older glibc needs it externally +ifneq ($(SKIPPTHREAD),1) + MYLDLIBS += -lpthread +endif + # checking platform can be done only after Makefile.host ifneq (,$(findstring MINGW,$(platform))) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) From c0dc9de43fe20448da2cc204f5067b029a19653d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 14 Nov 2023 19:25:14 +0100 Subject: [PATCH 0781/1034] fix for ultra recovery --- tools/mfkey/nested_util.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/mfkey/nested_util.c b/tools/mfkey/nested_util.c index 4b2b86c4c..f2910de74 100644 --- a/tools/mfkey/nested_util.c +++ b/tools/mfkey/nested_util.c @@ -36,9 +36,10 @@ typedef struct { uint32_t endPos; } RecPar; - -static int compar_int(const void *a, const void *b) { - return (*(uint64_t *)b - * (uint64_t *)a); +inline static int compar_int(const void *a, const void *b) { + if (*(uint64_t *)b == *(uint64_t *)a) return 0; + if (*(uint64_t *)b < * (uint64_t *)a) return 1; + return -1; } // Compare countKeys structure From 5c79721b197fb6bf1089ed6166d75b415fda23af Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 14 Nov 2023 19:27:59 +0100 Subject: [PATCH 0782/1034] ignore new exe --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 30cc1020a..07ef14acb 100644 --- a/.gitignore +++ b/.gitignore @@ -68,6 +68,7 @@ luac tools/fpga_compress/fpga_compress tools/mfkey/mfkey32 tools/mfkey/mfkey64 +tools/staticnested tools/nonce2key/nonce2key tools/cryptorf/cm tools/cryptorf/sm From 3ee13c9ba63ae2d4e508427b3cb620f2278a1040 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Wed, 15 Nov 2023 18:04:52 +0800 Subject: [PATCH 0783/1034] Apply suggestions from @henrygab Check if memory allocation fails Fix memory leak Initialize struct in declaration Add/Fix some notes Remove unlikely() in favor of readability Remove a hard-coded magic number --- armsrc/lfsampling.c | 24 ++++++++++++------------ armsrc/util.c | 5 +++++ client/src/cmddata.c | 36 ++++++++++++++++++++++++++++++++++++ client/src/cmdlf.c | 18 ++++++++++++------ client/src/cmdlfhid.c | 5 +++++ client/src/cmdlfindala.c | 4 ++++ client/src/cmdlfio.c | 4 ++++ client/src/cmdlfparadox.c | 4 ++++ client/src/cmdlfpyramid.c | 4 ++++ client/src/comms.c | 24 ++++++++++++------------ common_arm/usb_cdc.c | 25 +++++++++++-------------- common_arm/usb_cdc.h | 4 ++++ 12 files changed, 113 insertions(+), 44 deletions(-) diff --git a/armsrc/lfsampling.c b/armsrc/lfsampling.c index df1c7454a..e4f9ff2e8 100644 --- a/armsrc/lfsampling.c +++ b/armsrc/lfsampling.c @@ -306,7 +306,7 @@ uint32_t DoAcquisition(uint8_t decimation, uint8_t bits_per_sample, bool avg, in // only every 4000th times, in order to save time when collecting samples. // interruptible only when logging not yet triggered - if (unlikely(trigger_hit == false && (checked >= 4000))) { + if (trigger_hit == false && (checked >= 4000)) { if (data_available()) { checked = -1; break; @@ -329,7 +329,7 @@ uint32_t DoAcquisition(uint8_t decimation, uint8_t bits_per_sample, bool avg, in if (ledcontrol) LED_D_OFF(); // threshold either high or low values 128 = center 0. if trigger = 178 - if (unlikely(trigger_hit == false)) { + if (trigger_hit == false) { if ((trigger_threshold > 0) && (sample < (trigger_threshold + 128)) && (sample > (128 - trigger_threshold))) { if (cancel_after > 0) { cancel_counter++; @@ -341,7 +341,7 @@ uint32_t DoAcquisition(uint8_t decimation, uint8_t bits_per_sample, bool avg, in trigger_hit = true; } - if (unlikely(samples_to_skip > 0)) { + if (samples_to_skip > 0) { samples_to_skip--; continue; } @@ -441,7 +441,6 @@ int ReadLF_realtime(bool reader_field) { int32_t samples_to_skip = config.samples_to_skip; const uint8_t decimation = config.decimation; - uint32_t sample_buffer_len = 64; const int8_t size_threshold_table[9] = {0, 64, 64, 60, 64, 60, 60, 56, 64}; const int8_t size_threshold = size_threshold_table[bits_per_sample]; @@ -450,8 +449,9 @@ int ReadLF_realtime(bool reader_field) { uint8_t curr_byte = 0; int return_value = PM3_SUCCESS; + uint32_t sample_buffer_len = AT91C_USB_EP_IN_SIZE; initSampleBuffer(&sample_buffer_len); - if (sample_buffer_len != 64) { + if (sample_buffer_len != AT91C_USB_EP_IN_SIZE) { return PM3_EFAILED; } @@ -469,7 +469,7 @@ int ReadLF_realtime(bool reader_field) { while (BUTTON_PRESS() == false) { // only every 4000th times, in order to save time when collecting samples. // interruptible only when logging not yet triggered - if (unlikely(trigger_hit == false && (checked >= 4000))) { + if (trigger_hit == false && (checked >= 4000)) { if (data_available()) { checked = -1; break; @@ -492,21 +492,21 @@ int ReadLF_realtime(bool reader_field) { LED_D_OFF(); // threshold either high or low values 128 = center 0. if trigger = 178 - if (unlikely(trigger_hit == false)) { + if (trigger_hit == false) { if ((trigger_threshold > 0) && (sample < (trigger_threshold + 128)) && (sample > (128 - trigger_threshold))) { continue; } trigger_hit = true; } - if (unlikely(samples_to_skip > 0)) { + if (samples_to_skip > 0) { samples_to_skip--; continue; } logSample(sample, decimation, bits_per_sample, false); - // write to USB FIFO if byte changed + // Write to USB FIFO if byte changed curr_byte = data.numbits >> 3; if (curr_byte > last_byte) { async_usb_write_pushByte(data.buffer[last_byte]); @@ -514,20 +514,20 @@ int ReadLF_realtime(bool reader_field) { last_byte = curr_byte; if (samples.total_saved == size_threshold) { - // request usb transmission and change FIFO bank + // Request USB transmission and change FIFO bank if (async_usb_write_requestWrite() == false) { return_value = PM3_EIO; break; } - // reset sample + // Reset sample last_byte = 0; data.numbits = 0; samples.counter = size_threshold; samples.total_saved = 0; } else if (samples.total_saved == 1) { - // check if there is any data from client + // Check if there is any data from client if (data_available_fast()) { break; } diff --git a/armsrc/util.c b/armsrc/util.c index 70a6d01ef..9f42c0b08 100644 --- a/armsrc/util.c +++ b/armsrc/util.c @@ -298,6 +298,8 @@ int BUTTON_HELD(int ms) { return BUTTON_ERROR; } +// This function returns false if no data is available or +// the USB connection is invalid. bool data_available(void) { #ifdef WITH_FPC_USART_HOST return usb_poll_validate_length() || (usart_rxdata_available() > 0); @@ -306,6 +308,9 @@ bool data_available(void) { #endif } +// This function doesn't check if the USB connection is valid. +// In most of the cases, you should use data_available() unless +// the timing is critical. bool data_available_fast(void) { #ifdef WITH_FPC_USART_HOST return usb_available_length() || (usart_rxdata_available() > 0); diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 3339f9681..734b87644 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1012,6 +1012,10 @@ static int CmdUndecimate(const char *Cmd) { //We have memory, don't we? int *swap = calloc(MAX_GRAPH_TRACE_LEN, sizeof(int)); + if (swap == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } uint32_t g_index = 0, s_index = 0; while (g_index < g_GraphTraceLen && s_index + factor < MAX_GRAPH_TRACE_LEN) { int count = 0; @@ -1709,6 +1713,10 @@ int CmdHpf(const char *Cmd) { CLIParserFree(ctx); uint8_t *bits = malloc(g_GraphTraceLen); + if (bits == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t size = getFromGraphBuf(bits); removeSignalOffset(bits, size); // push it back to graph @@ -2106,6 +2114,10 @@ static int CmdLoad(const char *Cmd) { if (nofix == false) { uint8_t *bits = malloc(g_GraphTraceLen); + if (bits == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t size = getFromGraphBuf(bits); removeSignalOffset(bits, size); @@ -2244,6 +2256,10 @@ int CmdNorm(const char *Cmd) { } uint8_t *bits = malloc(g_GraphTraceLen); + if (bits == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t size = getFromGraphBuf(bits); // set signal properties low/high/mean/amplitude and is_noise detection computeSignalProperties(bits, size); @@ -2391,6 +2407,10 @@ static int CmdDirectionalThreshold(const char *Cmd) { // set signal properties low/high/mean/amplitude and isnoice detection uint8_t *bits = malloc(g_GraphTraceLen); + if (bits == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t size = getFromGraphBuf(bits); // set signal properties low/high/mean/amplitude and is_noice detection computeSignalProperties(bits, size); @@ -2435,6 +2455,10 @@ static int CmdZerocrossings(const char *Cmd) { } uint8_t *bits = malloc(g_GraphTraceLen); + if (bits == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t size = getFromGraphBuf(bits); // set signal properties low/high/mean/amplitude and is_noise detection computeSignalProperties(bits, size); @@ -2749,6 +2773,10 @@ static int CmdDataIIR(const char *Cmd) { iceSimple_Filter(g_GraphBuffer, g_GraphTraceLen, k); uint8_t *bits = malloc(g_GraphTraceLen); + if (bits == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t size = getFromGraphBuf(bits); // set signal properties low/high/mean/amplitude and is_noise detection computeSignalProperties(bits, size); @@ -3377,6 +3405,10 @@ static int CmdCenterThreshold(const char *Cmd) { // set signal properties low/high/mean/amplitude and isnoice detection uint8_t *bits = malloc(g_GraphTraceLen); + if (bits == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t size = getFromGraphBuf(bits); // set signal properties low/high/mean/amplitude and is_noice detection computeSignalProperties(bits, size); @@ -3423,6 +3455,10 @@ static int CmdEnvelope(const char *Cmd) { envelope_square(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen); uint8_t *bits = malloc(g_GraphTraceLen); + if (bits == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t size = getFromGraphBuf(bits); // set signal properties low/high/mean/amplitude and is_noice detection computeSignalProperties(bits, size); diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 17805b9b1..3c4e44af8 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -432,6 +432,10 @@ int CmdFlexdemod(const char *Cmd) { int i, j, start, bit, sum; int *data = malloc(g_GraphTraceLen * sizeof(int)); + if (data == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } memcpy(data, g_GraphBuffer, g_GraphTraceLen); size_t size = g_GraphTraceLen; @@ -697,7 +701,7 @@ int CmdLFConfig(const char *Cmd) { static int lf_read_internal(bool realtime, bool verbose, uint64_t samples) { if (!g_session.pm3_present) return PM3_ENOTTY; - lf_sample_payload_t payload; + lf_sample_payload_t payload = {0}; payload.realtime = realtime; payload.verbose = verbose; @@ -720,7 +724,7 @@ static int lf_read_internal(bool realtime, bool verbose, uint64_t samples) { SendCommandNG(CMD_LF_ACQ_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); if (is_trigger_threshold_set) { size_t first_receive_len = 32; // larger than the response of CMD_WTX - // wait until a bunch of data arrives + // Wait until a bunch of data arrives first_receive_len = WaitForRawDataTimeout(realtimeBuf, first_receive_len, -1, false); sample_bytes = WaitForRawDataTimeout(realtimeBuf + first_receive_len, sample_bytes - first_receive_len, 1000 + FPGA_LOAD_WAIT_TIME, true); sample_bytes += first_receive_len; @@ -759,7 +763,8 @@ int lf_read(bool verbose, uint64_t samples) { } int CmdLFRead(const char *Cmd) { - // In real-time mode, the first few bytes might be the response of CMD_WTX rather than the real samples + // In real-time mode, the first few bytes might be the response of CMD_WTX + // rather than the real samples if the LF FPGA image is not ready. CLIParserContext *ctx; CLIParserInit(&ctx, "lf read", "Sniff low frequency signal.\n" @@ -805,7 +810,7 @@ int CmdLFRead(const char *Cmd) { int lf_sniff(bool realtime, bool verbose, uint64_t samples) { if (!g_session.pm3_present) return PM3_ENOTTY; - lf_sample_payload_t payload; + lf_sample_payload_t payload = {0}; payload.realtime = realtime; payload.verbose = verbose; @@ -828,7 +833,7 @@ int lf_sniff(bool realtime, bool verbose, uint64_t samples) { SendCommandNG(CMD_LF_SNIFF_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); if (is_trigger_threshold_set) { size_t first_receive_len = 32; // larger than the response of CMD_WTX - // wait until a bunch of data arrives + // Wait until a bunch of data arrives first_receive_len = WaitForRawDataTimeout(realtimeBuf, first_receive_len, -1, false); sample_bytes = WaitForRawDataTimeout(realtimeBuf + first_receive_len, sample_bytes - first_receive_len, 1000 + FPGA_LOAD_WAIT_TIME, true); sample_bytes += first_receive_len; @@ -863,7 +868,8 @@ int lf_sniff(bool realtime, bool verbose, uint64_t samples) { } int CmdLFSniff(const char *Cmd) { - // In real-time mode, the first few bytes might be the response of CMD_WTX rather than the real samples + // In real-time mode, the first few bytes might be the response of CMD_WTX + // rather than the real samples if the LF FPGA image is not ready. CLIParserContext *ctx; CLIParserInit(&ctx, "lf sniff", "Sniff low frequency signal. You need to configure the LF part on the Proxmark3 device manually.\n" diff --git a/client/src/cmdlfhid.c b/client/src/cmdlfhid.c index 8e3a1e8eb..e8b0d179e 100644 --- a/client/src/cmdlfhid.c +++ b/client/src/cmdlfhid.c @@ -118,6 +118,10 @@ int demodHID(bool verbose) { uint32_t hi2 = 0, hi = 0, lo = 0; uint8_t *bits = malloc(g_GraphTraceLen); + if (bits == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t size = getFromGraphBuf(bits); if (size == 0) { PrintAndLogEx(DEBUG, "DEBUG: Error - " _RED_("HID not enough samples")); @@ -142,6 +146,7 @@ int demodHID(bool verbose) { else PrintAndLogEx(DEBUG, "DEBUG: Error - " _RED_("HID error demoding fsk %d"), idx); + free(bits); return PM3_ESOFT; } diff --git a/client/src/cmdlfindala.c b/client/src/cmdlfindala.c index 3e8b3bcd7..5417bf158 100644 --- a/client/src/cmdlfindala.c +++ b/client/src/cmdlfindala.c @@ -404,6 +404,10 @@ static int CmdIndalaDemodAlt(const char *Cmd) { // worst case with g_GraphTraceLen=40000 is < 4096 // under normal conditions it's < 2048 uint8_t *data = calloc(MAX_GRAPH_TRACE_LEN, sizeof(uint8_t)); + if (data == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t datasize = getFromGraphBuf(data); uint8_t rawbits[4096] = {0}; diff --git a/client/src/cmdlfio.c b/client/src/cmdlfio.c index a5507ce33..5ef0df99a 100644 --- a/client/src/cmdlfio.c +++ b/client/src/cmdlfio.c @@ -67,6 +67,10 @@ int demodIOProx(bool verbose) { (void) verbose; // unused so far int idx = 0, retval = PM3_SUCCESS; uint8_t *bits = calloc(MAX_GRAPH_TRACE_LEN, sizeof(uint8_t)); + if (bits == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t size = getFromGraphBuf(bits); if (size < 65) { PrintAndLogEx(DEBUG, "DEBUG: Error - IO prox not enough samples in GraphBuffer"); diff --git a/client/src/cmdlfparadox.c b/client/src/cmdlfparadox.c index f82ef52f2..ad6b42bf8 100644 --- a/client/src/cmdlfparadox.c +++ b/client/src/cmdlfparadox.c @@ -104,6 +104,10 @@ int demodParadox(bool verbose, bool oldChksum) { (void) verbose; // unused so far //raw fsk demod no manchester decoding no start bit finding just get binary from wave uint8_t *bits = calloc(MAX_GRAPH_TRACE_LEN, sizeof(uint8_t)); + if (bits == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t size = getFromGraphBuf(bits); if (size == 0) { PrintAndLogEx(DEBUG, "DEBUG: Error - Paradox not enough samples"); diff --git a/client/src/cmdlfpyramid.c b/client/src/cmdlfpyramid.c index 4edc2b287..5ed9ef576 100644 --- a/client/src/cmdlfpyramid.c +++ b/client/src/cmdlfpyramid.c @@ -44,6 +44,10 @@ int demodPyramid(bool verbose) { (void) verbose; // unused so far //raw fsk demod no manchester decoding no start bit finding just get binary from wave uint8_t *bits = calloc(MAX_GRAPH_TRACE_LEN, sizeof(uint8_t)); + if (bits == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t size = getFromGraphBuf(bits); if (size == 0) { PrintAndLogEx(DEBUG, "DEBUG: Error - Pyramid not enough samples"); diff --git a/client/src/comms.c b/client/src/comms.c index 1cd01d728..1cf42f0b1 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -350,7 +350,7 @@ __attribute__((force_align_arg_pointer)) bool commfailed = false; PacketResponseNG rx; PacketResponseNGRaw rx_raw; - // stash the last state of is_receiving_raw, to detect if state changed + // Stash the last state of is_receiving_raw, to detect if state changed bool is_receiving_raw_last = false; #if defined(__MACH__) && defined(__APPLE__) @@ -398,7 +398,7 @@ __attribute__((force_align_arg_pointer)) } } } else { - // ignore data when bufferPos >= bufferLen and is_receiving_raw has not been set to false + // Ignore data when bufferPos >= bufferLen and is_receiving_raw has not been set to false uint8_t dummyData[64]; uint32_t dummyLen; uart_receive(sp, dummyData, sizeof(dummyData), &dummyLen); @@ -407,7 +407,7 @@ __attribute__((force_align_arg_pointer)) if (is_receiving_raw_last) { // is_receiving_raw changed from true to false - // set the buffer as undefined + // Set the buffer as undefined // comm_raw_data == NULL is used in SetCommunicationReceiveMode() __atomic_store_n(&comm_raw_data, NULL, __ATOMIC_SEQ_CST); } @@ -849,11 +849,11 @@ size_t WaitForRawDataTimeout(uint8_t *buffer, size_t len, size_t ms_timeout, boo while (pos < len) { if (kbd_enter_pressed()) { - // send anything to stop the transfer + // Send anything to stop the transfer PrintAndLogEx(INFO, "Stopping"); SendCommandNG(CMD_BREAK_LOOP, NULL, 0); - // for ms_timeout == -1, pos < len might always be true + // For ms_timeout == -1, pos < len might always be true // so user need a spectial way to break this loop if (ms_timeout == (size_t) - 1) { break; @@ -862,15 +862,15 @@ size_t WaitForRawDataTimeout(uint8_t *buffer, size_t len, size_t ms_timeout, boo pos = __atomic_load_n(&comm_raw_pos, __ATOMIC_SEQ_CST); - // check the timeout if pos is not updated + // Check the timeout if pos is not updated if (last_pos == pos) { uint64_t tmp_clk = __atomic_load_n(&timeout_start_time, __ATOMIC_SEQ_CST); - // if ms_timeout == -1, the loop can only be breaked by pressing Enter or receiving enough data + // If ms_timeout == -1, the loop can only be breaked by pressing Enter or receiving enough data if ((ms_timeout != (size_t) - 1) && (msclock() - tmp_clk > ms_timeout)) { break; } } else { - // print when (print_counter % 64) == 0 + // Print process when (print_counter % 64) == 0 if (show_process && (print_counter & 0x3F) == 0) { PrintAndLogEx(INFO, "[%zu/%zu]", pos, len); } @@ -881,11 +881,11 @@ size_t WaitForRawDataTimeout(uint8_t *buffer, size_t len, size_t ms_timeout, boo msleep(10); } if (pos == len && (ms_timeout != (size_t) - 1)) { - // if ms_timeout != -1, when the desired data is received, tell the arm side + // If ms_timeout != -1, when the desired data is received, tell the arm side // to stop the current process, and wait for some time to make sure the process - // has been stopped - // if ms_timeout == -1, the user might not want to break the existing process - // on the arm side + // has been stopped. + // If ms_timeout == -1, the user might not want to break the existing process + // on the arm side. SendCommandNG(CMD_BREAK_LOOP, NULL, 0); msleep(ms_timeout); } diff --git a/common_arm/usb_cdc.c b/common_arm/usb_cdc.c index a1fa96f5d..37774aeeb 100644 --- a/common_arm/usb_cdc.c +++ b/common_arm/usb_cdc.c @@ -37,10 +37,7 @@ AT91SAM7S256 USB Device Port #define AT91C_EP_IN 2 // cfg bulk in #define AT91C_EP_NOTIFY 3 // cfg cdc notification interrup -#define AT91C_EP_CONTROL_SIZE 8 -#define AT91C_EP_OUT_SIZE 64 -#define AT91C_EP_IN_SIZE 64 - +// The endpoint size is defined in usb_cdc.h // Section: USB Descriptors #define USB_DESCRIPTOR_DEVICE 0x01 // DescriptorType for a Device Descriptor. @@ -128,7 +125,7 @@ static const char devDescriptor[] = { 2, // Device Class: Communication Device Class 0, // Device Subclass: CDC class sub code ACM [ice 0x02 = win10 virtual comport ] 0, // Device Protocol: CDC Device protocol (unused) - AT91C_EP_CONTROL_SIZE, // MaxPacketSize0 + AT91C_USB_EP_CONTROL_SIZE, // MaxPacketSize0 0xc4, 0x9a, // Vendor ID [0x9ac4 = J. Westhues] 0x8f, 0x4b, // Product ID [0x4b8f = Proxmark-3 RFID Instrument] 0x00, 0x01, // BCD Device release number (1.00) @@ -218,7 +215,7 @@ static const char cfgDescriptor[] = { USB_DESCRIPTOR_ENDPOINT, // Descriptor Type _EP03_IN, // EndpointAddress: Endpoint 03 - IN _INTERRUPT, // Attributes - AT91C_EP_CONTROL_SIZE, 0x00, // MaxPacket Size: EP0 - 8 + AT91C_USB_EP_CONTROL_SIZE, 0x00, // MaxPacket Size: EP0 - 8 0xFF, // Interval polling @@ -239,7 +236,7 @@ static const char cfgDescriptor[] = { USB_DESCRIPTOR_ENDPOINT, // Descriptor Type _EP01_OUT, // Endpoint Address: Endpoint 01 - OUT _BULK, // Attributes: BULK - AT91C_EP_OUT_SIZE, 0x00, // MaxPacket Size: 64 bytes + AT91C_USB_EP_OUT_SIZE, 0x00, // MaxPacket Size: 64 bytes 0, // Interval: ignored for bulk /* Endpoint descriptor */ @@ -247,7 +244,7 @@ static const char cfgDescriptor[] = { USB_DESCRIPTOR_ENDPOINT, // Descriptor Type _EP02_IN, // Endpoint Address: Endpoint 02 - IN _BULK, // Attribute: BULK - AT91C_EP_IN_SIZE, 0x00, // MaxPacket Size: 64 bytes + AT91C_USB_EP_IN_SIZE, 0x00, // MaxPacket Size: 64 bytes 0 // Interval: ignored for bulk }; @@ -775,7 +772,7 @@ int usb_write(const uint8_t *data, const size_t len) { // send first chunk - cpt = MIN(length, AT91C_EP_IN_SIZE); + cpt = MIN(length, AT91C_USB_EP_IN_SIZE); length -= cpt; while (cpt--) { pUdp->UDP_FDR[AT91C_EP_IN] = *data++; @@ -786,7 +783,7 @@ int usb_write(const uint8_t *data, const size_t len) { while (length) { // Send next chunk - cpt = MIN(length, AT91C_EP_IN_SIZE); + cpt = MIN(length, AT91C_USB_EP_IN_SIZE); length -= cpt; while (cpt--) { pUdp->UDP_FDR[AT91C_EP_IN] = *data++; @@ -814,7 +811,7 @@ int usb_write(const uint8_t *data, const size_t len) { while (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP) {}; - if (len % AT91C_EP_IN_SIZE == 0) { + if (len % AT91C_USB_EP_IN_SIZE == 0) { // like AT91F_USB_SendZlp(), in non ping-pong mode UDP_SET_EP_FLAGS(AT91C_EP_IN, AT91C_UDP_TXPKTRDY); while (!(pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP)) {}; @@ -857,8 +854,8 @@ int async_usb_write_start(void) { * \brief Push one byte to the FIFO of IN endpoint (time-critical) * * This function simply push a byte to the FIFO of IN endpoint. - * The FIFO size is AT91C_EP_IN_SIZE. Make sure this function is not called - * over AT91C_EP_IN_SIZE times between each async_usb_write_requestWrite(). + * The FIFO size is AT91C_USB_EP_IN_SIZE. Make sure this function is not called + * over AT91C_USB_EP_IN_SIZE times between each async_usb_write_requestWrite(). *---------------------------------------------------------------------------- */ inline void async_usb_write_pushByte(uint8_t data) { @@ -947,7 +944,7 @@ void AT91F_USB_SendData(AT91PS_UDP pudp, const char *pData, uint32_t length) { AT91_REG csr; do { - uint32_t cpt = MIN(length, AT91C_EP_CONTROL_SIZE); + uint32_t cpt = MIN(length, AT91C_USB_EP_CONTROL_SIZE); length -= cpt; while (cpt--) diff --git a/common_arm/usb_cdc.h b/common_arm/usb_cdc.h index aab8e2c5c..9c7cb7299 100644 --- a/common_arm/usb_cdc.h +++ b/common_arm/usb_cdc.h @@ -23,6 +23,10 @@ #include "common.h" #include "at91sam7s512.h" +#define AT91C_USB_EP_CONTROL_SIZE 8 +#define AT91C_USB_EP_OUT_SIZE 64 +#define AT91C_USB_EP_IN_SIZE 64 + void usb_disable(void); void usb_enable(void); bool usb_check(void); From cee46928cabfb90c4ff92873d675a7dbc14206c1 Mon Sep 17 00:00:00 2001 From: Pathfinder <john.e.lester@gmail.com> Date: Thu, 16 Nov 2023 09:37:38 -0500 Subject: [PATCH 0784/1034] Update mfc_default_keys.dic Signed-off-by: Pathfinder <john.e.lester@gmail.com> --- client/dictionaries/mfc_default_keys.dic | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 100cfb4f0..9de50fae5 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -2287,4 +2287,11 @@ A71E80EA35E1 # Hotel Key from Las Vegas EA0CA627FD06 80BB8436024C -5044068C5183 \ No newline at end of file +5044068C5183 +# +# Key from Hotel M Montreal (probably diversified) +7E5E05866ED6 +661ABF99AFAD +# +# Key from evo Montreal (probably diversified) +1064BA5D6DF8 From 0b9f11a24983f5f2982a83ebbd07c5f9b4371204 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Fri, 17 Nov 2023 10:59:14 +0800 Subject: [PATCH 0785/1034] Add a slider in the plot window for navigation --- client/src/proxgui.h | 2 +- client/src/proxguiqt.cpp | 51 +++++++++++++++++++++++++++++++++++++++- client/src/proxguiqt.h | 16 +++++++++++-- client/src/ui.c | 1 + 4 files changed, 66 insertions(+), 4 deletions(-) diff --git a/client/src/proxgui.h b/client/src/proxgui.h index 56d0d9574..99c69af94 100644 --- a/client/src/proxgui.h +++ b/client/src/proxgui.h @@ -44,7 +44,7 @@ void ExitGraphics(void); extern double g_CursorScaleFactor; extern char g_CursorScaleFactorUnit[11]; extern double g_PlotGridX, g_PlotGridY, g_PlotGridXdefault, g_PlotGridYdefault, g_GridOffset; -extern uint32_t g_CursorCPos, g_CursorDPos, g_GraphStart, g_GraphStop; +extern uint32_t g_CursorCPos, g_CursorDPos, g_GraphStart, g_GraphStart_old, g_GraphStop; extern int CommandFinished; extern int offline; extern bool g_GridLocked; diff --git a/client/src/proxguiqt.cpp b/client/src/proxguiqt.cpp index 1c9a05d11..94a102bf5 100644 --- a/client/src/proxguiqt.cpp +++ b/client/src/proxguiqt.cpp @@ -49,6 +49,7 @@ static int s_Buff[MAX_GRAPH_TRACE_LEN]; static bool gs_useOverlays = false; static int gs_absVMax = 0; static uint32_t startMax; // Maximum offset in the graph (right side of graph) +static uint32_t startMaxOld; static uint32_t PageWidth; // How many samples are currently visible on this 'page' / graph static int unlockStart = 0; @@ -372,6 +373,18 @@ void ProxWidget::vchange_dthr_down(int v) { RepaintGraphWindow(); } +void ProxWidget::updateNavSlider() { + navSlider->blockSignals(true); + navSlider->setValue(g_GraphStart); + navSlider->setMaximum(startMax); + // for startMaxOld < g_GraphStart or startMax < g_GraphStart_old + navSlider->setValue(g_GraphStart); + navSlider->setMaximum(startMax); + // for click + navSlider->setPageStep(startMax / 10); + navSlider->blockSignals(false); +} + ProxWidget::ProxWidget(QWidget *parent, ProxGuiQT *master) : QWidget(parent) { this->master = master; @@ -406,10 +419,20 @@ ProxWidget::ProxWidget(QWidget *parent, ProxGuiQT *master) : QWidget(parent) { // Set up the plot widget, which does the actual plotting plot = new Plot(this); + navSlider = new QSlider(this); QVBoxLayout *layout = new QVBoxLayout; - layout->addWidget(plot); + layout->addWidget(plot, 1); + layout->addWidget(navSlider); setLayout(layout); + navSlider->setOrientation(Qt::Horizontal); + plot->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + navSlider->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + + QObject::connect(navSlider, SIGNAL(valueChanged(int)), plot, SLOT(MoveTo(int))); + QObject::connect(plot, SIGNAL(startMaxChanged(uint32_t)), this, SLOT(updateNavSlider(void))); + QObject::connect(plot, SIGNAL(graphStartChanged(uint32_t)), this, SLOT(updateNavSlider(void))); + // plot window title QString pt = QString("[*]Plot [ %1 ]").arg(g_conn.serial_port_name); setWindowTitle(pt); @@ -809,6 +832,16 @@ void Plot::paintEvent(QPaintEvent *event) { ); painter.setPen(WHITE); painter.drawText(20, infoRect.bottom() - 3, str); + + if (startMaxOld != startMax) { + emit startMaxChanged(startMax); + } + startMaxOld = startMax; + + if (g_GraphStart != g_GraphStart_old) { + emit graphStartChanged(g_GraphStart); + } + g_GraphStart_old = g_GraphStart; } Plot::Plot(QWidget *parent) : QWidget(parent), g_GraphPixelsPerPoint(1) { @@ -868,6 +901,22 @@ void Plot::Zoom(double factor, uint32_t refX) { } } +void Plot::MoveTo(uint32_t pos) { + if (g_GraphTraceLen == 0) return; + g_GraphStart = pos; + + QObject* signalSender = sender(); + if (signalSender != nullptr && signalSender != this) { + // Update if it's triggered by a signal from other object + this->update(); + } +} + +void Plot::MoveTo(int pos) { + MoveTo((uint32_t)((pos >= 0) ? pos : 0)); + // sender() is still valid in the inner call +} + void Plot::Move(int offset) { if (g_GraphTraceLen == 0) return; if (offset > 0) { // Move right diff --git a/client/src/proxguiqt.h b/client/src/proxguiqt.h index ac19a99c9..8b3891c4a 100644 --- a/client/src/proxguiqt.h +++ b/client/src/proxguiqt.h @@ -38,6 +38,8 @@ class ProxWidget; * @brief The actual plot, black area were we paint the graph */ class Plot: public QWidget { + Q_OBJECT; //needed for slot/signal classes + private: QWidget *master; double g_GraphPixelsPerPoint; // How many visual pixels are between each sample point (x axis) @@ -55,16 +57,24 @@ class Plot: public QWidget { public: Plot(QWidget *parent = 0); + public slots: + void Zoom(double factor, uint32_t refX); + void MoveTo(uint32_t pos); + void MoveTo(int pos); + void Move(int offset); + protected: void paintEvent(QPaintEvent *event); void closeEvent(QCloseEvent *event); - void Zoom(double factor, uint32_t refX); - void Move(int offset); void Trim(void); void wheelEvent(QWheelEvent *event); void mouseMoveEvent(QMouseEvent *event); void mousePressEvent(QMouseEvent *event) { mouseMoveEvent(event); } void keyPressEvent(QKeyEvent *event); + + signals: + void startMaxChanged(uint32_t startMax); + void graphStartChanged(uint32_t graphStart); }; class ProxGuiQT; @@ -97,6 +107,7 @@ class ProxWidget : public QWidget { Plot *plot; Ui::Form *opsController; SliderWidget *controlWidget; + QSlider *navSlider; public: ProxWidget(QWidget *parent = 0, ProxGuiQT *master = NULL); @@ -120,6 +131,7 @@ class ProxWidget : public QWidget { void vchange_askedge(int v); void vchange_dthr_up(int v); void vchange_dthr_down(int v); + void updateNavSlider(void); }; class WorkerThread : public QThread { diff --git a/client/src/ui.c b/client/src/ui.c index 2281497c1..153b26ecd 100644 --- a/client/src/ui.c +++ b/client/src/ui.c @@ -52,6 +52,7 @@ char g_CursorScaleFactorUnit[11] = {0}; double g_PlotGridX = 0, g_PlotGridY = 0, g_PlotGridXdefault = 64, g_PlotGridYdefault = 64; uint32_t g_CursorCPos = 0, g_CursorDPos = 0, g_GraphStop = 0; uint32_t g_GraphStart = 0; // Starting point/offset for the left side of the graph +uint32_t g_GraphStart_old = 0; double g_GraphPixelsPerPoint = 1.f; // How many visual pixels are between each sample point (x axis) static bool flushAfterWrite = false; double g_GridOffset = 0; From e82fb8b67fe83a6c5ee9dfa8d8de57eb85a98895 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Fri, 17 Nov 2023 12:23:58 +0800 Subject: [PATCH 0786/1034] Use calloc() instead of malloc() Suggested by @iceman1001 Mainly for 8b6a274e289cd96f16616de741f0d02fb10d1e6e Replaced the malloc() in getSamplesFromBufEx() Added memory allocation result check for getSamplesFromBufEx(), lf_read_internal(), and lf_sniff() --- client/src/cmddata.c | 36 ++++++++++++++++++++---------------- client/src/cmddata.h | 2 +- client/src/cmdlf.c | 10 +++++++++- client/src/cmdlfhid.c | 2 +- 4 files changed, 31 insertions(+), 19 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 734b87644..7445f3759 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1712,7 +1712,7 @@ int CmdHpf(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, true); CLIParserFree(ctx); - uint8_t *bits = malloc(g_GraphTraceLen); + uint8_t *bits = calloc(g_GraphTraceLen, sizeof(uint8_t)); if (bits == NULL) { PrintAndLogEx(FAILED, "failed to allocate memory"); return PM3_EMALLOC; @@ -1786,12 +1786,10 @@ int getSamplesEx(uint32_t start, uint32_t end, bool verbose, bool ignore_lf_conf bits_per_sample = sc->bits_per_sample; } - getSamplesFromBufEx(got, n, bits_per_sample, verbose); - - return PM3_SUCCESS; + return getSamplesFromBufEx(got, n, bits_per_sample, verbose);; } -void getSamplesFromBufEx(uint8_t *data, size_t sample_num, uint8_t bits_per_sample, bool verbose) { +int getSamplesFromBufEx(uint8_t *data, size_t sample_num, uint8_t bits_per_sample, bool verbose) { size_t max_num = MIN(sample_num, MAX_GRAPH_TRACE_LEN); @@ -1816,7 +1814,11 @@ void getSamplesFromBufEx(uint8_t *data, size_t sample_num, uint8_t bits_per_samp g_GraphTraceLen = max_num; } - uint8_t *bits = malloc(g_GraphTraceLen); + uint8_t *bits = calloc(g_GraphTraceLen, sizeof(uint8_t)); + if (bits == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t size = getFromGraphBuf(bits); // set signal properties low/high/mean/amplitude and is_noise detection computeSignalProperties(bits, size); @@ -1825,6 +1827,8 @@ void getSamplesFromBufEx(uint8_t *data, size_t sample_num, uint8_t bits_per_samp setClockGrid(0, 0); g_DemodBufferLen = 0; RepaintGraphWindow(); + + return PM3_SUCCESS; } static int CmdSamples(const char *Cmd) { @@ -2113,11 +2117,11 @@ static int CmdLoad(const char *Cmd) { PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " samples", g_GraphTraceLen); if (nofix == false) { - uint8_t *bits = malloc(g_GraphTraceLen); + uint8_t *bits = calloc(g_GraphTraceLen, sizeof(uint8_t)); if (bits == NULL) { - PrintAndLogEx(FAILED, "failed to allocate memory"); - return PM3_EMALLOC; - } + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t size = getFromGraphBuf(bits); removeSignalOffset(bits, size); @@ -2255,7 +2259,7 @@ int CmdNorm(const char *Cmd) { } } - uint8_t *bits = malloc(g_GraphTraceLen); + uint8_t *bits = calloc(g_GraphTraceLen, sizeof(uint8_t)); if (bits == NULL) { PrintAndLogEx(FAILED, "failed to allocate memory"); return PM3_EMALLOC; @@ -2406,7 +2410,7 @@ static int CmdDirectionalThreshold(const char *Cmd) { directionalThreshold(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen, up, down); // set signal properties low/high/mean/amplitude and isnoice detection - uint8_t *bits = malloc(g_GraphTraceLen); + uint8_t *bits = calloc(g_GraphTraceLen, sizeof(uint8_t)); if (bits == NULL) { PrintAndLogEx(FAILED, "failed to allocate memory"); return PM3_EMALLOC; @@ -2454,7 +2458,7 @@ static int CmdZerocrossings(const char *Cmd) { } } - uint8_t *bits = malloc(g_GraphTraceLen); + uint8_t *bits = calloc(g_GraphTraceLen, sizeof(uint8_t)); if (bits == NULL) { PrintAndLogEx(FAILED, "failed to allocate memory"); return PM3_EMALLOC; @@ -2772,7 +2776,7 @@ static int CmdDataIIR(const char *Cmd) { iceSimple_Filter(g_GraphBuffer, g_GraphTraceLen, k); - uint8_t *bits = malloc(g_GraphTraceLen); + uint8_t *bits = calloc(g_GraphTraceLen, sizeof(uint8_t)); if (bits == NULL) { PrintAndLogEx(FAILED, "failed to allocate memory"); return PM3_EMALLOC; @@ -3404,7 +3408,7 @@ static int CmdCenterThreshold(const char *Cmd) { centerThreshold(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen, up, down); // set signal properties low/high/mean/amplitude and isnoice detection - uint8_t *bits = malloc(g_GraphTraceLen); + uint8_t *bits = calloc(g_GraphTraceLen, sizeof(uint8_t)); if (bits == NULL) { PrintAndLogEx(FAILED, "failed to allocate memory"); return PM3_EMALLOC; @@ -3454,7 +3458,7 @@ static int CmdEnvelope(const char *Cmd) { envelope_square(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen); - uint8_t *bits = malloc(g_GraphTraceLen); + uint8_t *bits = calloc(g_GraphTraceLen, sizeof(uint8_t)); if (bits == NULL) { PrintAndLogEx(FAILED, "failed to allocate memory"); return PM3_EMALLOC; diff --git a/client/src/cmddata.h b/client/src/cmddata.h index c9f7398be..0767412cb 100644 --- a/client/src/cmddata.h +++ b/client/src/cmddata.h @@ -86,7 +86,7 @@ int AutoCorrelate(const int *in, int *out, size_t len, size_t window, bool SaveG int getSamples(uint32_t n, bool verbose); int getSamplesEx(uint32_t start, uint32_t end, bool verbose, bool ignore_lf_config); -void getSamplesFromBufEx(uint8_t *data, size_t sample_num, uint8_t bits_per_sample, bool verbose); +int getSamplesFromBufEx(uint8_t *data, size_t sample_num, uint8_t bits_per_sample, bool verbose); void setClockGrid(uint32_t clk, int offset); int directionalThreshold(const int *in, int *out, size_t len, int8_t up, int8_t down); diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 3c4e44af8..2247236fe 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -431,7 +431,7 @@ int CmdFlexdemod(const char *Cmd) { #endif int i, j, start, bit, sum; - int *data = malloc(g_GraphTraceLen * sizeof(int)); + int *data = calloc(g_GraphTraceLen, sizeof(int)); if (data == NULL) { PrintAndLogEx(FAILED, "failed to allocate memory"); return PM3_EMALLOC; @@ -717,6 +717,10 @@ static int lf_read_internal(bool realtime, bool verbose, uint64_t samples) { if (realtime) { uint8_t *realtimeBuf = calloc(samples, sizeof(uint8_t)); + if (realtimeBuf == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t sample_bytes = samples * bits_per_sample; sample_bytes = (sample_bytes / 8) + (sample_bytes % 8 != 0); @@ -826,6 +830,10 @@ int lf_sniff(bool realtime, bool verbose, uint64_t samples) { if (realtime) { uint8_t *realtimeBuf = calloc(samples, sizeof(uint8_t)); + if (realtimeBuf == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } size_t sample_bytes = samples * bits_per_sample; sample_bytes = (sample_bytes / 8) + (sample_bytes % 8 != 0); diff --git a/client/src/cmdlfhid.c b/client/src/cmdlfhid.c index e8b0d179e..0526b16db 100644 --- a/client/src/cmdlfhid.c +++ b/client/src/cmdlfhid.c @@ -117,7 +117,7 @@ int demodHID(bool verbose) { //raw fsk demod no manchester decoding no start bit finding just get binary from wave uint32_t hi2 = 0, hi = 0, lo = 0; - uint8_t *bits = malloc(g_GraphTraceLen); + uint8_t *bits = calloc(g_GraphTraceLen, sizeof(uint8_t)); if (bits == NULL) { PrintAndLogEx(FAILED, "failed to allocate memory"); return PM3_EMALLOC; From f6c6014bcde68e742552851d64c8649291718420 Mon Sep 17 00:00:00 2001 From: Jared Stemper <31346981+JaredStemper@users.noreply.github.com> Date: Sat, 18 Nov 2023 23:29:32 -0600 Subject: [PATCH 0787/1034] Added common dependency troubleshooting Signed-off-by: Jared Stemper <31346981+JaredStemper@users.noreply.github.com> --- .../Troubleshooting.md | 63 ++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/doc/md/Installation_Instructions/Troubleshooting.md b/doc/md/Installation_Instructions/Troubleshooting.md index a0982a3c0..724ae6736 100644 --- a/doc/md/Installation_Instructions/Troubleshooting.md +++ b/doc/md/Installation_Instructions/Troubleshooting.md @@ -24,6 +24,7 @@ Always use the latest repository commits from *master* branch. There are always - [WSL](#wsl) - [Troubles with running the Proxmark3 client](#troubles-with-running-the-proxmark3-client) - [libQt5Core.so.5 not found](#libqt5coreso5-not-found) + - [bzlib.h: No such file or directory](#bzlib.h: No such file or directory) - [target attribute is not supported on this machine](#target-attribute-is-not-supported-on-this-machine) - [Qt Session management error](#qt-session-management-error) @@ -225,12 +226,72 @@ Try running it with ^[Top](#top) On WSL1 / updated to Ubuntu 20.04 and 22.04, there is a slight chance you experience problems when compiling the repo with QT5. -The following steps is needed to make the development environment happy again. +The following steps are needed to make the development environment happy again. ``` sudo apt reinstall qtbase5-dev sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 ``` +## bzlib.h: No such file or directory +^[Top](#top) + +This particular issue occurs on Debian/Kali Linux when dependencies aren't installed appropriately. Review the [installation guide](https://github.com/RfidResearchGroup/proxmark3/blob/master/doc/md/Installation_Instructions/Linux-Installation-Instructions.md#on-debian--ubuntu--kali--parrotos--raspbian) for further instructions on how to set up your environment. + +Sample error output: +``` +=================================================================== +Version info: Iceman/master/v4.17511-12-g7fb5a5a74 +Platform name: Proxmark3 generic target +PLATFORM: PM3GENERIC +PLATFORM_FPGA: xc2s30 +PLATFORM_SIZE: 512 +Platform extras: No extra selected +Included options: LF HITAG EM4x50 EM4x70 ZX8211 GENERAL_HF ISO15693 LEGICRF ISO14443b ISO14443a ICLASS FELICA NFCBARCODE HFSNIFF HFPLOT +Standalone mode: LF_SAMYRUN +=================================================================== +[*] MAKE client/all +=================================================================== +Version info: Iceman/master/v4.17511-12-g7fb5a5a74 +Client platform: Linux +GUI support: QT not found, disabled +native BT support: Bluez not found, disabled +Jansson library: system library not found, using local library +Lua library: system library not found, using local library +Python3 library: Python3 v3.11 found, enabled +Readline library: enabled +Whereami library: system library not found, using local library +Lua SWIG: wrapper found +Python SWIG: wrapper found +compiler version: cc (Debian 12.2.0-14) 12.2.0 +=================================================================== ... +[-] CC src/cmdhflto.c +[=] CXX cm +[=] CXX sm +[-] CC src/cmdhfmf.c +[-] CC src/cmdhfmfdes.c +[-] CC src/cmdhfmfhard.c +[-] CC src/cmdhfmfu.c +[-] CC src/cmdhfmfp.c +[-] CC src/cmdhfntag424.c +[-] CC src/cmdhfseos.c +[-] CC src/cmdhfst.c +[-] CC src/cmdhfst25ta.c +[-] CC src/cmdhfmfhard.c +src/cmdhfmfhard.c:34:10: fatal error: bzlib.h: No such file or directory + 34 | #include <bzlib.h> + | ^~~~~~~~~ +compilation terminated. +make[1]: *** [Makefile:946: obj/cmdhfmfhard.o] Error 1 +make: *** [Makefile:177: client/all] Error 2 +``` + +The following dependencies are currently needed to make the development environment compile: +``` +sudo apt-get install --no-install-recommends git ca-certificates build-essential pkg-config \ +libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev \ +libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev +``` + ## target attribute is not supported on this machine ^[Top](#top) From 05a2fa08ac75ce4ebf101670aa22f565af31c074 Mon Sep 17 00:00:00 2001 From: Jared Stemper <31346981+JaredStemper@users.noreply.github.com> Date: Sat, 18 Nov 2023 23:32:01 -0600 Subject: [PATCH 0788/1034] Added troubleshooting details fixed hyperlink; slimmed error output Signed-off-by: Jared Stemper <31346981+JaredStemper@users.noreply.github.com> --- .../Troubleshooting.md | 41 +------------------ 1 file changed, 2 insertions(+), 39 deletions(-) diff --git a/doc/md/Installation_Instructions/Troubleshooting.md b/doc/md/Installation_Instructions/Troubleshooting.md index 724ae6736..d9c0334c4 100644 --- a/doc/md/Installation_Instructions/Troubleshooting.md +++ b/doc/md/Installation_Instructions/Troubleshooting.md @@ -24,7 +24,7 @@ Always use the latest repository commits from *master* branch. There are always - [WSL](#wsl) - [Troubles with running the Proxmark3 client](#troubles-with-running-the-proxmark3-client) - [libQt5Core.so.5 not found](#libqt5coreso5-not-found) - - [bzlib.h: No such file or directory](#bzlib.h: No such file or directory) + - [bzlib.h: No such file or directory](#bzlibh-no-such-file-or-directory) - [target attribute is not supported on this machine](#target-attribute-is-not-supported-on-this-machine) - [Qt Session management error](#qt-session-management-error) @@ -238,44 +238,7 @@ sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.s This particular issue occurs on Debian/Kali Linux when dependencies aren't installed appropriately. Review the [installation guide](https://github.com/RfidResearchGroup/proxmark3/blob/master/doc/md/Installation_Instructions/Linux-Installation-Instructions.md#on-debian--ubuntu--kali--parrotos--raspbian) for further instructions on how to set up your environment. Sample error output: -``` -=================================================================== -Version info: Iceman/master/v4.17511-12-g7fb5a5a74 -Platform name: Proxmark3 generic target -PLATFORM: PM3GENERIC -PLATFORM_FPGA: xc2s30 -PLATFORM_SIZE: 512 -Platform extras: No extra selected -Included options: LF HITAG EM4x50 EM4x70 ZX8211 GENERAL_HF ISO15693 LEGICRF ISO14443b ISO14443a ICLASS FELICA NFCBARCODE HFSNIFF HFPLOT -Standalone mode: LF_SAMYRUN -=================================================================== -[*] MAKE client/all -=================================================================== -Version info: Iceman/master/v4.17511-12-g7fb5a5a74 -Client platform: Linux -GUI support: QT not found, disabled -native BT support: Bluez not found, disabled -Jansson library: system library not found, using local library -Lua library: system library not found, using local library -Python3 library: Python3 v3.11 found, enabled -Readline library: enabled -Whereami library: system library not found, using local library -Lua SWIG: wrapper found -Python SWIG: wrapper found -compiler version: cc (Debian 12.2.0-14) 12.2.0 -=================================================================== ... -[-] CC src/cmdhflto.c -[=] CXX cm -[=] CXX sm -[-] CC src/cmdhfmf.c -[-] CC src/cmdhfmfdes.c -[-] CC src/cmdhfmfhard.c -[-] CC src/cmdhfmfu.c -[-] CC src/cmdhfmfp.c -[-] CC src/cmdhfntag424.c -[-] CC src/cmdhfseos.c -[-] CC src/cmdhfst.c -[-] CC src/cmdhfst25ta.c +``` [-] CC src/cmdhfmfhard.c src/cmdhfmfhard.c:34:10: fatal error: bzlib.h: No such file or directory 34 | #include <bzlib.h> From ca5570ea607a8527039efe1d0c68f2e0c20c6f8b Mon Sep 17 00:00:00 2001 From: Jared Stemper <31346981+JaredStemper@users.noreply.github.com> Date: Sat, 18 Nov 2023 23:38:27 -0600 Subject: [PATCH 0789/1034] added context to error output Signed-off-by: Jared Stemper <31346981+JaredStemper@users.noreply.github.com> --- doc/md/Installation_Instructions/Troubleshooting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/md/Installation_Instructions/Troubleshooting.md b/doc/md/Installation_Instructions/Troubleshooting.md index d9c0334c4..a978ff8b2 100644 --- a/doc/md/Installation_Instructions/Troubleshooting.md +++ b/doc/md/Installation_Instructions/Troubleshooting.md @@ -235,7 +235,7 @@ sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.s ## bzlib.h: No such file or directory ^[Top](#top) -This particular issue occurs on Debian/Kali Linux when dependencies aren't installed appropriately. Review the [installation guide](https://github.com/RfidResearchGroup/proxmark3/blob/master/doc/md/Installation_Instructions/Linux-Installation-Instructions.md#on-debian--ubuntu--kali--parrotos--raspbian) for further instructions on how to set up your environment. +This particular issue occurs on Debian/Kali Linux when dependencies aren't installed appropriately; you need to install bzip2 developer (libbz2-dev on Debian-alike) package. Note that the name depends on the distro you're using. Review the [installation guide](https://github.com/RfidResearchGroup/proxmark3/blob/master/doc/md/Installation_Instructions/Linux-Installation-Instructions.md#on-debian--ubuntu--kali--parrotos--raspbian) for further instructions on how to set up your environment. Sample error output: ``` From c9246f06be1c1b6f59419b0523383ff8884f8597 Mon Sep 17 00:00:00 2001 From: Artem V Gnatyuk <31589761+temskiy@users.noreply.github.com> Date: Mon, 20 Nov 2023 01:07:21 +0700 Subject: [PATCH 0790/1034] Fix mistakes. Removed unnecessary. Signed-off-by: Artem V Gnatyuk <31589761+temskiy@users.noreply.github.com> --- doc/magic_cards_notes.md | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/doc/magic_cards_notes.md b/doc/magic_cards_notes.md index b70954774..ecae5fc68 100644 --- a/doc/magic_cards_notes.md +++ b/doc/magic_cards_notes.md @@ -1592,7 +1592,7 @@ There are two ways to program this card. ***OR*** - 2. Use the hf_mf_ultimatecard.lua script commands designated but the `script run hf_mf_ultimatecard` examples. + 2. Use the hf_mf_ultimatecard.lua script commands designated but the `script run hf_mf_ultimatecard` examples. This script is nof fully compartible with new version UMC. script run hf_mf_ultimatecard.lua -h @@ -1823,7 +1823,7 @@ Ultralight mode, 10b UID * UID and ATQB are configured according to block0 with a (14a) backdoor write. * UID size is always 4 bytes. -* 14B will show up only on new cards. (Need more test on new card. Example not work) +* 14B will show up only on new cards. (Need more tests on new card. Example not work) Example: ``` @@ -1904,20 +1904,21 @@ hf 14a raw -s -c -t 1000 CF000000006B3F ### Set shadow mode (GTU) ^[Top](#top) ^^[Gen4](#g4top) -This mode is divided into four states: off (pre-write), on (on restore), don’t care, and high-speed read and write. -If you use it, please enter the pre-write mode first. At this time, write the full card data. -After writing, set it to on. At this time, after writing the data, the first time you read the data just written, the next time you read It is the pre-written data. All modes support this operation. It should be noted that using any block to read and write in this mode may give wrong results. +This description of shadow modes wroted by seller at marketpalces: -*This is very starnge and fuzzed descripotion. I don`t understand how it can work, if "using any block to read and write in this mode may give wrong result" ? Maybe this mode not work for old card too?* +>This mode is divided into four states: off (pre-write), on (on restore), don’t care, and high-speed read and write. If you use it, please enter the pre-write mode first. At this time, write the full card data. After writing, set it to on. At this time, after writing the data, the first time you read the data just written, the next time you read It is the pre-written data. All modes support this operation. It should be noted that using any block to read and write in this mode may give wrong results. -Modes description for new UMC (configured as MFC for example): +And these conclusions were made after a number of tests with UMC (new version, configured as MFC for example): -Mode 2(3): This mode have persistent buffer. All standart command (rdbl, wrbl e.t.c) and all backdoor (gsetblk, ggetblk, gload e.t.c.) commands use this buffer -Mode 0: This mode have persistent buffer too. Standart read command use this buffer. Write command use this buffer AND buffer mode 2 -Mode 4: Here no any buffers. Read command use buffer mode0 and write command use buffer mode 2. This is split mode. -Mode 1: Crazy mode. For new card this mode looks like a bug. Reading/writing first two block use buffer mode 2. Reading other block use (it`s only my oppinion) invalid region of memory and all data looks like pseudo-random. This data is immutable. And acl for all blocks is incorrect. But data is readable... by keys and acl wich was written in buffer mode 0. Write command in this mode use copy of buffer mode 0 and only it. It`s not affected any other buffers. So if you change keys or/and acl you will must use new keys to read data. +| Mode | Buffer | Standart command (rdbl, wrbl e.t.c) | Backdoor command (gsetblk, ggetblk, gload e.t.c.) | +|------|--------|-----------------------------------------|---------------------------------------------------| +| 2,3 | buf23 | read/write from/to buf23 | read/write from/to buf23 | +| 0 | buf0 | read from buf0, write to buf0 and buf23 | read/write from/to buf23 | +| 4 | - | read from buf0, write to buf23 | read/write from/to buf23 | -Example: +Mode 1: For new card this mode looks like a bug. Reading/writing first two block use *buf23*. Reading other blocks use invalid region of memory and all returned data looks like pseudo-random. All acl looks like invalid. All data is readable by the keys and acl wich was written in *buf0*. Any writing operations in this mode use copy of *buf0* and only it. It`s not affected any other buffers. So if you change keys or/and acl you will must use new keys to read data. + +Example (not work with new UMC): `script run hf_mf_ultimatecard -w 1 -g 00 -t 18 -u 04112233445566 -s 112233445566778899001122334455667788990011223344556677 -p FFFFFFFF -a 8080 -o 11111111 -g 01` * -w 1 = wipe the card in Ultralight Mode * -g 00 = turn on pre-write mode @@ -2109,12 +2110,14 @@ hf 14a raw -s -c -t 1000 CF00000000F001010000000003000978009102DABC1910101112131 ### Version and Signature ^[Top](#top) ^^[Gen4](#g4top) -Don`t forget to set up maximum read/write sectors direcly in config or use command 6B +Don`t forget configure maximum read/write blocks. It`s can be adjusted directly in config (see *Dump configuration*) or by command 6B: ``` hf mf raw -s -c -t 1000 CF000000006BFB ``` +Note: 0xFB = 251 + Ultralight EV1 and NTAG Version info and Signature are stored respectively in blocks 250-251 and 242-249. Example for an Ultralight EV1 128b with the signature sample from tools/recover_pk.py From 3a612dead91047f58a8b376a076c83eb405803f1 Mon Sep 17 00:00:00 2001 From: Oleg Moiseenko <807634+merlokk@users.noreply.github.com> Date: Tue, 21 Nov 2023 21:56:37 +0200 Subject: [PATCH 0791/1034] Create mfc_notes.md Signed-off-by: Oleg Moiseenko <807634+merlokk@users.noreply.github.com> --- doc/mfc_notes.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 doc/mfc_notes.md diff --git a/doc/mfc_notes.md b/doc/mfc_notes.md new file mode 100644 index 000000000..530af9b96 --- /dev/null +++ b/doc/mfc_notes.md @@ -0,0 +1,45 @@ +# mfc card types + +Some information about MFC cards and their vulnerabilities + +## original card +the first cards original and first China's clones + +Have the first version of the PRNG. `Weak PRNG` + +Vulnerable: +1. card-only dark side attack (`hf mf darkside`) +2. card-only nested attack (`hf mf nested`) +3. decode card-reader trace (`data list`) + +## Fixed PRNG cards +the first cards original and first China's clones + +Have the next version of the PRNG. `Strong PRNG`. The nested auth has not changed. Dark-side attack is not possible. + +Vulnerable: +1. card-only hardnested attack (`hf mf hardnested`) +2. decode card-reader trace + +## Static nonce cards + +The first revision of China's cards tried to fix holes in the card's auth +Cards have static nonce instead of dynamic. The nonce is just the same for each authentication. + +Have the next version of the PRNG. The nested auth has not changed. Dark-side attack is not possible. + +Vulnerable: +1. card-only staticnested attack (`hf mf staticnested`) +2. decode card-reader trace + +## Static encrypted nonce cards + +For the first auth, it has the first version of the PRNG. `Weak PRNG` + +For the nested, the card has a nonce that is some function of auth+card's data instead of dynamic. +The nonce is just the same for each auth with the same parameters. + +(in progress...) + +Vulnerable: +1. decode card-reader trace From 43f64887f7714919e8bce03a12e16c715d0ace97 Mon Sep 17 00:00:00 2001 From: Oleg Moiseenko <807634+merlokk@users.noreply.github.com> Date: Tue, 21 Nov 2023 22:00:59 +0200 Subject: [PATCH 0792/1034] Update mfc_notes.md Signed-off-by: Oleg Moiseenko <807634+merlokk@users.noreply.github.com> --- doc/mfc_notes.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/mfc_notes.md b/doc/mfc_notes.md index 530af9b96..a6fd1beff 100644 --- a/doc/mfc_notes.md +++ b/doc/mfc_notes.md @@ -43,3 +43,7 @@ The nonce is just the same for each auth with the same parameters. Vulnerable: 1. decode card-reader trace + +## reader-only attack + +The readers have a random generator bug. With it, we can recover a key for the sector it tries to authenticate. From ee64e71f69862d5f51fc67f6b0efe89a0b7576ba Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Fri, 24 Nov 2023 13:08:46 +0800 Subject: [PATCH 0793/1034] Fix client build with Python 3.12 Caused by upstream bug https://github.com/python/cpython/issues/106560 The fix is like this https://github.com/intel-media-ci/gstreamer/commit/bbdf6d46539061bf171319ae51999f061148ecbc --- client/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/Makefile b/client/Makefile index 06b4258bb..6534f27a0 100644 --- a/client/Makefile +++ b/client/Makefile @@ -273,7 +273,7 @@ ifneq ($(SKIPPYTHON),1) PYTHONLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs python3 2>/dev/null) ifneq ($(PYTHONLDLIBS),) PYTHONLIBLD = $(PYTHONLDLIBS) - PYTHONLIBINC = $(PYTHONINCLUDES) + PYTHONLIBINC = $(subst -I,-isystem ,$(PYTHONINCLUDES)) PYTHON_FOUND = 1 else # since python3.8, applications willing to embed python must use -embed: @@ -281,7 +281,7 @@ ifneq ($(SKIPPYTHON),1) PYTHONLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs python3-embed 2>/dev/null) ifneq ($(PYTHONLDLIBS),) PYTHONLIBLD = $(PYTHONLDLIBS) - PYTHONLIBINC = $(PYTHONINCLUDES) + PYTHONLIBINC = $(subst -I,-isystem ,$(PYTHONINCLUDES)) PYTHON_FOUND = 1 endif endif From 493383c99571181e8644376b3d5741ea4afa9c9a Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Fri, 24 Nov 2023 22:18:06 +0800 Subject: [PATCH 0794/1034] Fix ExchangeAPDUSC() in cmdsmartcard.c It doesn't return 1 if the retry fails, which is different from the behavior of the first try. --- client/src/cmdsmartcard.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index 488e5b9d8..e8f3c8eb9 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -1417,6 +1417,10 @@ int ExchangeAPDUSC(bool verbose, uint8_t *datain, int datainlen, bool activateCa SendCommandNG(CMD_SMART_RAW, (uint8_t *)payload, sizeof(smart_card_raw_t) + 5); datain[4] = 0; len = smart_responseEx(dataout, maxdataoutlen, verbose); + if (len < 0) { + free(payload); + return 1; + } } free(payload); From 10ab013f5b8fc06ab126b80c481b7059ec119734 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Sat, 25 Nov 2023 11:09:16 +0800 Subject: [PATCH 0795/1034] Use defined return value --- client/src/cmdsmartcard.c | 6 +++--- client/src/iso7816/iso7816core.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index e8f3c8eb9..933d34a4f 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -1402,7 +1402,7 @@ int ExchangeAPDUSC(bool verbose, uint8_t *datain, int datainlen, bool activateCa int len = smart_responseEx(dataout, maxdataoutlen, verbose); if (len < 0) { free(payload); - return 1; + return PM3_ESOFT; } // retry @@ -1419,13 +1419,13 @@ int ExchangeAPDUSC(bool verbose, uint8_t *datain, int datainlen, bool activateCa len = smart_responseEx(dataout, maxdataoutlen, verbose); if (len < 0) { free(payload); - return 1; + return PM3_ESOFT; } } free(payload); *dataoutlen = len; - return 0; + return PM3_SUCCESS; } bool smart_select(bool verbose, smart_card_atr_t *atr) { diff --git a/client/src/iso7816/iso7816core.c b/client/src/iso7816/iso7816core.c index 025d55d16..71f2a8e49 100644 --- a/client/src/iso7816/iso7816core.c +++ b/client/src/iso7816/iso7816core.c @@ -153,7 +153,7 @@ int Iso7816ExchangeEx(Iso7816CommandChannel channel, bool activate_field, bool l res = ExchangeAPDUSC(false, data, datalen, activate_field, leave_field_on, result, (int)max_result_len, (int *)result_len); } - if (res) { + if (res != PM3_SUCCESS) { return res; } break; From 345303de3729c2f980e5fa788f53e4b4e5889d3d Mon Sep 17 00:00:00 2001 From: Hampton Moore <me@hamptonmoore.com> Date: Sat, 25 Nov 2023 21:48:33 -0500 Subject: [PATCH 0796/1034] Implement Avigilon 56 format --- client/src/wiegand_formats.c | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/client/src/wiegand_formats.c b/client/src/wiegand_formats.c index f88c8f759..fc14f2bb6 100644 --- a/client/src/wiegand_formats.c +++ b/client/src/wiegand_formats.c @@ -1288,6 +1288,58 @@ static bool Unpack_bc40(wiegand_message_t *packed, wiegand_card_t *card) { return true; } + +static bool step_parity_check(wiegand_message_t *packed, int start, int length, bool even_parity) { + bool parity = even_parity; + for (int i = start; i < start + length; i += 2) { + // Extract 2 bits + bool bit1 = get_bit_by_position(packed, i); + bool bit2 = get_bit_by_position(packed, i + 1); + + // Calculate parity for these 2 bits + parity ^= (bit1 ^ bit2); + } + return parity; +} + +static bool Pack_Avig56(wiegand_card_t *card, wiegand_message_t *packed, bool preamble) { + memset(packed, 0, sizeof(wiegand_message_t)); + packed->Length = 56; + + if (card->FacilityCode > 0xFFFFF) return false; // Can't encode FC. + if (card->CardNumber > 0x3FFFFFFFF) return false; // Can't encode CN. + + set_linear_field(packed, card->FacilityCode, 1, 20); + set_linear_field(packed, card->CardNumber, 21, 34); + + bool even_parity_valid = step_parity_check(packed, 0, 28, true); + set_bit_by_position(packed, !even_parity_valid, 0); + + bool odd_parity_valid = step_parity_check(packed, 28, 28, false); + set_bit_by_position(packed, !odd_parity_valid, 55); + + if (preamble) + return add_HID_header(packed); + + return true; +} + +static bool Unpack_Avig56(wiegand_message_t *packed, wiegand_card_t *card) { + memset(card, 0, sizeof(wiegand_card_t)); + + if (packed->Length != 56) return false; + + card->FacilityCode = get_linear_field(packed, 1, 20); + card->CardNumber = get_linear_field(packed, 21, 34); + + // Check step parity for every 2 bits + bool even_parity_valid = step_parity_check(packed, 0, 28, true); + bool odd_parity_valid = step_parity_check(packed, 28, 28, false); + + card->ParityValid = even_parity_valid && odd_parity_valid; + return true; +} + // --------------------------------------------------------------------------------------------------- void print_desc_wiegand(cardformat_t *fmt, wiegand_message_t *packed) { @@ -1414,6 +1466,7 @@ static const cardformat_t FormatTable[] = { {"Casi40", Pack_CasiRusco40, Unpack_CasiRusco40, "Casi-Rusco 40-bit", {1, 0, 0, 0, 0}}, // from cardinfo.barkweb.com.au {"C1k48s", Pack_C1k48s, Unpack_C1k48s, "HID Corporate 1000 48-bit std", {1, 1, 0, 0, 1}}, // imported from old pack/unpack {"BC40", Pack_bc40, Unpack_bc40, "Bundy TimeClock 40-bit", {1, 1, 0, 1, 1}}, // from + {"Avig56", Pack_Avig56, Unpack_Avig56, "Avigilon 56-bit", {1, 1, 0, 0, 1}}, {NULL, NULL, NULL, NULL, {0, 0, 0, 0, 0}} // Must null terminate array }; From 7b0ca4369511446425c924dd9e254f9f4ad77ada Mon Sep 17 00:00:00 2001 From: nvx <neovortex@gmail.com> Date: Sun, 26 Nov 2023 18:39:36 +1000 Subject: [PATCH 0797/1034] Fix iClass dump truncating the AA2 area and improve dump reliability by fixing cmd retry delays. --- armsrc/iclass.c | 8 +++++++- client/src/cmdhficlass.c | 32 +++++++++++++++++--------------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/armsrc/iclass.c b/armsrc/iclass.c index 405ad610f..283577e3a 100644 --- a/armsrc/iclass.c +++ b/armsrc/iclass.c @@ -1254,6 +1254,12 @@ static bool iclass_send_cmd_with_retries(uint8_t *cmd, size_t cmdsize, uint8_t * if (res == PM3_SUCCESS && expected_size == resp_len) { return true; } + + // Timed out waiting for the tag to reply, but perhaps the tag did hear the command and is attempting to reply + // So wait long enough for the tag to encode it's reply plus required frame delays on each side before retrying + // And then double it, because in practice it seems to make it much more likely to succeed + // Response time calculation from expected_size lifted from GetIso15693AnswerFromTag + *start_time = *eof_time + ((DELAY_ICLASS_VICC_TO_VCD_READER + DELAY_ISO15693_VCD_TO_VICC_READER + (expected_size * 8 * 8 * 16)) * 2); } return false; } @@ -1739,7 +1745,7 @@ void iClass_Dump(uint8_t *msg) { } PACKED response; response.isOK = dumpsuccess; - response.block_cnt = i; + response.block_cnt = i - cmd->start_block; response.bb_offset = dataout - BigBuf_get_addr(); reply_ng(CMD_HF_ICLASS_DUMP, PM3_SUCCESS, (uint8_t *)&response, sizeof(response)); } diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 313ecf2ce..afaf6cab9 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -2067,17 +2067,15 @@ static int CmdHFiClassDump(const char *Cmd) { return PM3_ETIMEOUT; } - if (pagemap == PICOPASS_NON_SECURE_PAGEMODE) { - // all memory available - memcpy(tag_data + (8 * 3), tempbuf + (8 * 3), (blocks_read * 8)); - } else { + if (pagemap != PICOPASS_NON_SECURE_PAGEMODE) { // div key KD - memcpy(tag_data + (8 * 3), tempbuf + (8 * 3), 8); - // AIA data - memcpy(tag_data + (8 * 5), tempbuf + (8 * 5), 8); - // AA1 data - memcpy(tag_data + (8 * 6), tempbuf + (8 * 6), ((blocks_read - 6) * 8)); + memcpy(tag_data + (PICOPASS_BLOCK_SIZE * 3), + tempbuf + (PICOPASS_BLOCK_SIZE * 3), PICOPASS_BLOCK_SIZE); } + // all memory available + memcpy(tag_data + (PICOPASS_BLOCK_SIZE * payload.start_block), + tempbuf + (PICOPASS_BLOCK_SIZE * payload.start_block), + blocks_read * PICOPASS_BLOCK_SIZE); uint16_t bytes_got = (app_limit1 + 1) * 8; @@ -2135,12 +2133,14 @@ static int CmdHFiClassDump(const char *Cmd) { } // div key KC - memcpy(tag_data + (8 * 4), tempbuf + (8 * 4), 8); + memcpy(tag_data + (PICOPASS_BLOCK_SIZE * 4), tempbuf + (PICOPASS_BLOCK_SIZE * 4), PICOPASS_BLOCK_SIZE); // AA2 data - memcpy(tag_data + (8 * (app_limit1 + 1)), tempbuf + (8 * (app_limit1 + 1)), (blocks_read * 8)); + memcpy(tag_data + (PICOPASS_BLOCK_SIZE * payload.start_block), + tempbuf + (PICOPASS_BLOCK_SIZE * payload.start_block), + blocks_read * PICOPASS_BLOCK_SIZE); - bytes_got = (blocks_read * 8); + bytes_got += (blocks_read * PICOPASS_BLOCK_SIZE); aa2_success = true; } @@ -3036,7 +3036,7 @@ void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t e int sio_start_block = 0, sio_end_block = 0; if (sio_start && sio_length > 0) { sio_start_block = (sio_start - iclass_dump) / PICOPASS_BLOCK_SIZE; - sio_end_block = sio_start_block + (sio_length + PICOPASS_BLOCK_SIZE - 1) / PICOPASS_BLOCK_SIZE - 1; + sio_end_block = sio_start_block + ((sio_length + PICOPASS_BLOCK_SIZE - 1) / PICOPASS_BLOCK_SIZE) - 1; } int i = startblock; @@ -3107,7 +3107,7 @@ void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t e regular_print_block = true; } else { - const char *info_ks[] = {"CSN", "Config", "E-purse", "Debit", "Credit", "AIA", "User"}; + const char *info_ks[] = {"CSN", "Config", "E-purse", "Debit", "Credit", "AIA", "User", "User AA2"}; if (i >= 6 && i <= 9 && is_legacy) { // legacy credential @@ -3132,6 +3132,8 @@ void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t e } else { if (i < 6) { block_info = info_ks[i]; + } else if (i > hdr->conf.app_limit) { + block_info = info_ks[7]; } else { block_info = info_ks[6]; } @@ -3156,7 +3158,7 @@ void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t e if (in_repeated_block == false) { PrintAndLogEx(INFO, - "%3d/0x%02X | %s | %s | %s ", + "%3d/0x%02X | %s | %s | %s", i, i, sprint_hex_ascii(blk, 8), From 33ec6f43fc469b01758505a7ec3543dd7f765654 Mon Sep 17 00:00:00 2001 From: nvx <neovortex@gmail.com> Date: Sun, 26 Nov 2023 19:17:57 +1000 Subject: [PATCH 0798/1034] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 289701649..267388fb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `hf iclass dump` truncating AA2 blocks and improve reliability (@nvx) - Added some info about UMC in "doc/magic_cards_notes.md" (@temskiy) ## [Faraday.4.17511][2023-11-13] From fbdb268445f874ad722f96bb9edac04c62e84f94 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 28 Nov 2023 11:00:48 +0100 Subject: [PATCH 0799/1034] QL88 signature Public Key was identified as Manufacture Mifare Classic before. Now added tests and checks.\nnext step is to use the S17/B key to read the signature --- client/src/cmdhf15.c | 16 ++++++++-------- client/src/cmdhfmf.c | 3 ++- client/src/cmdhfmfu.c | 14 +++++++------- tools/recover_pk.py | 5 +++++ 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index e9468943a..8769a6662 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -229,14 +229,14 @@ static int nxp_15693_print_signature(uint8_t *uid, uint8_t *signature) { #define PUBLIC_ECDA_KEYLEN 33 const ecdsa_publickey_t nxp_15693_public_keys[] = { - {"NXP Mifare Classic MFC1C14_x", "044F6D3F294DEA5737F0F46FFEE88A356EED95695DD7E0C27A591E6F6F65962BAF"}, - {"Manufacturer Mifare Classic MFC1C14_x", "046F70AC557F5461CE5052C8E4A7838C11C7A236797E8A0730A101837C004039C2"}, - {"NXP ICODE DNA, ICODE SLIX2", "048878A2A2D3EEC336B4F261A082BD71F9BE11C4E2E896648B32EFA59CEA6E59F0"}, - {"NXP Public key", "04A748B6A632FBEE2C0897702B33BEA1C074998E17B84ACA04FF267E5D2C91F6DC"}, - {"NXP Ultralight Ev1", "0490933BDCD6E99B4E255E3DA55389A827564E11718E017292FAF23226A96614B8"}, - {"NXP NTAG21x (2013)", "04494E1A386D3D3CFE3DC10E5DE68A499B1C202DB5B132393E89ED19FE5BE8BC61"}, - {"MIKRON Public key", "04f971eda742a4a80d32dcf6a814a707cc3dc396d35902f72929fdcd698b3468f2"}, - {"VivoKey Spark1 Public key", "04d64bb732c0d214e7ec580736acf847284b502c25c0f7f2fa86aace1dada4387a"}, + {"NXP MIFARE Classic MFC1C14_x", "044F6D3F294DEA5737F0F46FFEE88A356EED95695DD7E0C27A591E6F6F65962BAF"}, + {"Manufacturer MIFARE Classic / QL88", "046F70AC557F5461CE5052C8E4A7838C11C7A236797E8A0730A101837C004039C2"}, + {"NXP ICODE DNA, ICODE SLIX2", "048878A2A2D3EEC336B4F261A082BD71F9BE11C4E2E896648B32EFA59CEA6E59F0"}, + {"NXP Public key", "04A748B6A632FBEE2C0897702B33BEA1C074998E17B84ACA04FF267E5D2C91F6DC"}, + {"NXP Ultralight Ev1", "0490933BDCD6E99B4E255E3DA55389A827564E11718E017292FAF23226A96614B8"}, + {"NXP NTAG21x (2013)", "04494E1A386D3D3CFE3DC10E5DE68A499B1C202DB5B132393E89ED19FE5BE8BC61"}, + {"MIKRON Public key", "04f971eda742a4a80d32dcf6a814a707cc3dc396d35902f72929fdcd698b3468f2"}, + {"VivoKey Spark1 Public key", "04d64bb732c0d214e7ec580736acf847284b502c25c0f7f2fa86aace1dada4387a"}, }; /* uint8_t nxp_15693_public_keys[][PUBLIC_ECDA_KEYLEN] = { diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 334933a5c..c1ccadb39 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -66,7 +66,8 @@ int mfc_ev1_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signature, in // ref: MIFARE Classic EV1 Originality Signature Validation #define PUBLIC_MFCEV1_ECDA_KEYLEN 33 const ecdsa_publickey_t nxp_mfc_public_keys[] = { - {"NXP Mifare Classic MFC1C14_x", "044F6D3F294DEA5737F0F46FFEE88A356EED95695DD7E0C27A591E6F6F65962BAF"}, + {"NXP MIFARE Classic MFC1C14_x", "044F6D3F294DEA5737F0F46FFEE88A356EED95695DD7E0C27A591E6F6F65962BAF"}, + {"Manufacturer MIFARE Classic / QL88", "046F70AC557F5461CE5052C8E4A7838C11C7A236797E8A0730A101837C004039C2"}, }; uint8_t i; diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index f19f36f99..440e05180 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -1029,13 +1029,13 @@ static int ulev1_print_signature(uint64_t tagtype, uint8_t *uid, uint8_t *signat // ref: AN11350 NTAG 21x Originality Signature Validation // ref: AN11341 MIFARE Ultralight EV1 Originality Signature Validation const ecdsa_publickey_t nxp_mfu_public_keys[] = { - {"NXP MIFARE Classic MFC1C14_x", "044F6D3F294DEA5737F0F46FFEE88A356EED95695DD7E0C27A591E6F6F65962BAF"}, - {"Manufacturer MIFARE Classic MFC1C14_x", "046F70AC557F5461CE5052C8E4A7838C11C7A236797E8A0730A101837C004039C2"}, - {"NXP ICODE DNA, ICODE SLIX2", "048878A2A2D3EEC336B4F261A082BD71F9BE11C4E2E896648B32EFA59CEA6E59F0"}, - {"NXP Public key", "04A748B6A632FBEE2C0897702B33BEA1C074998E17B84ACA04FF267E5D2C91F6DC"}, - {"NXP Ultralight Ev1", "0490933BDCD6E99B4E255E3DA55389A827564E11718E017292FAF23226A96614B8"}, - {"NXP NTAG21x (2013)", "04494E1A386D3D3CFE3DC10E5DE68A499B1C202DB5B132393E89ED19FE5BE8BC61"}, - {"MIKRON Public key", "04f971eda742a4a80d32dcf6a814a707cc3dc396d35902f72929fdcd698b3468f2"}, + {"NXP MIFARE Classic MFC1C14_x", "044F6D3F294DEA5737F0F46FFEE88A356EED95695DD7E0C27A591E6F6F65962BAF"}, + {"Manufacturer MIFARE Classic / QL88", "046F70AC557F5461CE5052C8E4A7838C11C7A236797E8A0730A101837C004039C2"}, + {"NXP ICODE DNA, ICODE SLIX2", "048878A2A2D3EEC336B4F261A082BD71F9BE11C4E2E896648B32EFA59CEA6E59F0"}, + {"NXP Public key", "04A748B6A632FBEE2C0897702B33BEA1C074998E17B84ACA04FF267E5D2C91F6DC"}, + {"NXP Ultralight Ev1", "0490933BDCD6E99B4E255E3DA55389A827564E11718E017292FAF23226A96614B8"}, + {"NXP NTAG21x (2013)", "04494E1A386D3D3CFE3DC10E5DE68A499B1C202DB5B132393E89ED19FE5BE8BC61"}, + {"MIKRON Public key", "04f971eda742a4a80d32dcf6a814a707cc3dc396d35902f72929fdcd698b3468f2"}, }; // https://www.nxp.com/docs/en/application-note/AN13452.pdf diff --git a/tools/recover_pk.py b/tools/recover_pk.py index 2eb6358d6..884353755 100755 --- a/tools/recover_pk.py +++ b/tools/recover_pk.py @@ -171,6 +171,11 @@ def selftests(): # "042F6892457080", "1824472A4CC927C7CA423F2B75E8E15CD26F682D3D633B3E032879B11D2E7C0E5BDC720D7D4F3AB04DEC7229EC213C89"], # 'pk': "0453BF8C49B7BD9FE3207A91513B9C1D238ECAB07186B772104AB535F7D3AE63CF7C7F3DD0D169DA3E99E43C6399621A86"}, + {'name': "Manufacturer MIFARE Classic / QL88", + 'samples': ["30933C61", "AEA4DD0B800FAC63D4DE08EE91F4650ED825FD6B4D7DEEE98DBC9BAE10BE003E", + "20593261", "F762CDD59EEDC075F4DDBA7ECD529FEEE5135C65A84D12EF0A250A321B2012F5"], + 'pk': "046F70AC557F5461CE5052C8E4A7838C11C7A236797E8A0730A101837C004039C2"}, + ] succeeded = True for t in tests: From e026c712c1188999c977bb586cd36f4edc991552 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 28 Nov 2023 11:08:17 +0100 Subject: [PATCH 0800/1034] hf 14a info now tries to read QL88 sigantures and verify them --- CHANGELOG.md | 1 + client/src/mifare/mifaredefault.h | 5 +++++ client/src/mifare/mifarehost.c | 9 +++++++++ 3 files changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 267388fb9..1fa759886 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf 14a info` - now reads and prints QL88 sigantures (@iceman1001) - Fixed `hf iclass dump` truncating AA2 blocks and improve reliability (@nvx) - Added some info about UMC in "doc/magic_cards_notes.md" (@temskiy) diff --git a/client/src/mifare/mifaredefault.h b/client/src/mifare/mifaredefault.h index f399bb7b0..ab200de5f 100644 --- a/client/src/mifare/mifaredefault.h +++ b/client/src/mifare/mifaredefault.h @@ -61,6 +61,8 @@ static const uint64_t g_mifare_default_keys[] = { 0x5C8FF9990DA2, // MFC EV1 Signature 16 A 0xD01AFEEB890A, // MFC EV1 Signature 16 B 0x75CCB59C9BED, // MFC EV1 Signature 17 A + 0x707B11FC1481, // MFC QL88 Signature 17 B + 0x2612C6DE84CA, // MFC QL88 Signature 17 A 0xfc00018778f7, // Public Transport 0x6471a5ef2d1a, // SimonsVoss 0x4E3552426B32, // ID06 @@ -120,6 +122,9 @@ static const uint8_t g_mifare_mad_key_b[] = {0x89, 0xEC, 0xA9, 0x7F, 0x8C, 0x2A} static const uint8_t g_mifare_signature_key_a[] = {0x5C, 0x8F, 0xF9, 0x99, 0x0D, 0xA2}; static const uint8_t g_mifare_signature_key_b[] = {0x4b, 0x79, 0x1b, 0xea, 0x7b, 0xcc}; +// Manufacture MFC / QL88 (S17 / B) +static const uint8_t g_mifare_ql88_signature_key_b[] = {0x70, 0x7B, 0x11, 0xFC, 0x14, 0x81}; + static const uint8_t g_mifare_ndef_key[] = {0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7}; static const uint8_t g_mifarep_mad_key[] = {0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7}; static const uint8_t g_mifarep_ndef_key[] = {0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7}; diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 13d925fdd..040d24df9 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -1415,6 +1415,15 @@ int read_mfc_ev1_signature(uint8_t *signature) { if (res == PM3_SUCCESS) { memcpy(signature, sign, sizeof(sign)); } + } else { + // try QL88 + res = mfReadBlock(69, MF_KEY_B, g_mifare_ql88_signature_key_b, sign); + if (res == PM3_SUCCESS) { + res = mfReadBlock(70, MF_KEY_B, g_mifare_ql88_signature_key_b, sign + 16); + if (res == PM3_SUCCESS) { + memcpy(signature, sign, sizeof(sign)); + } + } } return res; } From 45df618b7c58fc17d5507e47daa10388bcf65470 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Thu, 30 Nov 2023 13:39:59 +0800 Subject: [PATCH 0801/1034] Fix segmentation fault --- client/src/cmddata.c | 40 ++++++++++++++++++++++++++++++++++------ client/src/graph.c | 10 ++++++++-- client/src/graph.h | 1 + 3 files changed, 43 insertions(+), 8 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 7445f3759..47c8ef910 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -564,7 +564,11 @@ static int Cmdmandecoderaw(const char *Cmd) { return PM3_ESOFT; } - uint8_t bits[MAX_DEMOD_BUF_LEN] = {0}; + uint8_t *bits = calloc(MAX_DEMOD_BUF_LEN, sizeof(uint8_t)); + if (bits == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } // make sure its just binary data 0|1|7 in buffer int high = 0, low = 0; @@ -579,6 +583,7 @@ static int Cmdmandecoderaw(const char *Cmd) { if (high > 7 || low < 0) { PrintAndLogEx(ERR, "Error: please first raw demod then manchester raw decode"); + free(bits); return PM3_ESOFT; } @@ -587,6 +592,7 @@ static int Cmdmandecoderaw(const char *Cmd) { uint16_t err_cnt = manrawdecode(bits, &size, invert, &offset); if (err_cnt > max_err) { PrintAndLogEx(ERR, "Too many errors attempting to decode " _RED_("%i"), err_cnt); + free(bits); return PM3_ESOFT; } @@ -611,6 +617,7 @@ static int Cmdmandecoderaw(const char *Cmd) { } setDemodBuff(bits, size, 0); setClockGrid(g_DemodClock * 2, g_DemodStartIdx); + free(bits); return PM3_SUCCESS; } @@ -651,17 +658,27 @@ static int CmdBiphaseDecodeRaw(const char *Cmd) { return PM3_ESOFT; } - uint8_t bits[MAX_DEMOD_BUF_LEN] = {0}; - size_t size = sizeof(bits); - if (!getDemodBuff(bits, &size)) return PM3_ESOFT; + uint8_t *bits = calloc(MAX_DEMOD_BUF_LEN, sizeof(uint8_t)); + if (bits == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } + + size_t size = MAX_DEMOD_BUF_LEN; + if (!getDemodBuff(bits, &size)) { + free(bits); + return PM3_ESOFT; + } int err_cnt = BiphaseRawDecode(bits, &size, &offset, invert); if (err_cnt < 0) { PrintAndLogEx(ERR, "Error during decode " _RED_("%i"), err_cnt); + free(bits); return PM3_ESOFT; } if (err_cnt > max_err) { PrintAndLogEx(ERR, "Too many errors attempting to decode " _RED_("%i"), err_cnt); + free(bits); return PM3_ESOFT; } @@ -674,6 +691,7 @@ static int CmdBiphaseDecodeRaw(const char *Cmd) { setDemodBuff(bits, size, 0); setClockGrid(g_DemodClock * 2, g_DemodStartIdx + g_DemodClock * offset); + free(bits); return PM3_SUCCESS; } @@ -681,10 +699,16 @@ static int CmdBiphaseDecodeRaw(const char *Cmd) { int ASKbiphaseDemod(int offset, int clk, int invert, int maxErr, bool verbose) { //ask raw demod g_GraphBuffer first - uint8_t bs[MAX_DEMOD_BUF_LEN]; - size_t size = getFromGraphBuf(bs); + uint8_t *bs = calloc(MAX_DEMOD_BUF_LEN, sizeof(uint8_t)); + if (bs == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } + + size_t size = getFromGraphBufEx(bs, MAX_DEMOD_BUF_LEN); if (size == 0) { PrintAndLogEx(DEBUG, "DEBUG: no data in graphbuf"); + free(bs); return PM3_ESOFT; } int startIdx = 0; @@ -692,6 +716,7 @@ int ASKbiphaseDemod(int offset, int clk, int invert, int maxErr, bool verbose) { int errCnt = askdemod_ext(bs, &size, &clk, &invert, maxErr, 0, 0, &startIdx); if (errCnt < 0 || errCnt > maxErr) { PrintAndLogEx(DEBUG, "DEBUG: no data or error found %d, clock: %d", errCnt, clk); + free(bs); return PM3_ESOFT; } @@ -699,10 +724,12 @@ int ASKbiphaseDemod(int offset, int clk, int invert, int maxErr, bool verbose) { errCnt = BiphaseRawDecode(bs, &size, &offset, invert); if (errCnt < 0) { if (g_debugMode || verbose) PrintAndLogEx(DEBUG, "DEBUG: Error BiphaseRawDecode: %d", errCnt); + free(bs); return PM3_ESOFT; } if (errCnt > maxErr) { if (g_debugMode || verbose) PrintAndLogEx(DEBUG, "DEBUG: Error BiphaseRawDecode too many errors: %d", errCnt); + free(bs); return PM3_ESOFT; } @@ -716,6 +743,7 @@ int ASKbiphaseDemod(int offset, int clk, int invert, int maxErr, bool verbose) { PrintAndLogEx(DEBUG, "Biphase Decoded using offset %d | clock %d | #errors %d | start index %d\ndata\n", offset, clk, errCnt, (startIdx + clk * offset / 2)); printDemodBuff(offset, false, false, false); } + free(bs); return PM3_SUCCESS; } diff --git a/client/src/graph.c b/client/src/graph.c index 851e49d5a..8b97dcfad 100644 --- a/client/src/graph.c +++ b/client/src/graph.c @@ -113,12 +113,19 @@ void setGraphBuf(const uint8_t *src, size_t size) { RepaintGraphWindow(); } +// This function assumes that the length of dest array >= g_GraphTraceLen. +// If the length of dest array is less than g_GraphTraceLen, use getFromGraphBufEx(dest, maxLen) instead. size_t getFromGraphBuf(uint8_t *dest) { + return getFromGraphBufEx(dest, g_GraphTraceLen); +} + +size_t getFromGraphBufEx(uint8_t *dest, size_t maxLen) { if (dest == NULL) return 0; if (g_GraphTraceLen == 0) return 0; size_t i; - for (i = 0; i < g_GraphTraceLen; ++i) { + maxLen = (maxLen < g_GraphTraceLen) ? maxLen : g_GraphTraceLen; + for (i = 0; i < maxLen; ++i) { //trim if (g_GraphBuffer[i] > 127) g_GraphBuffer[i] = 127; if (g_GraphBuffer[i] < -127) g_GraphBuffer[i] = -127; @@ -387,4 +394,3 @@ bool fskClocks(uint8_t *fc1, uint8_t *fc2, uint8_t *rf1, int *firstClockEdge) { } return true; } - diff --git a/client/src/graph.h b/client/src/graph.h index 4963fb2b1..3a05dd8eb 100644 --- a/client/src/graph.h +++ b/client/src/graph.h @@ -31,6 +31,7 @@ bool HasGraphData(void); void setGraphBuf(const uint8_t *src, size_t size); void save_restoreGB(uint8_t saveOpt); size_t getFromGraphBuf(uint8_t *dest); +size_t getFromGraphBufEx(uint8_t *dest, size_t maxLen); void convertGraphFromBitstream(void); void convertGraphFromBitstreamEx(int hi, int low); bool isGraphBitstream(void); From 8dea0d320358a715b203afad343b67f4ee8eaeb3 Mon Sep 17 00:00:00 2001 From: Adam Jon Foster <me@evildaemond.com> Date: Thu, 30 Nov 2023 21:40:14 +0800 Subject: [PATCH 0802/1034] Create hf_mf_uid_downgrade.lua Adding hf_mf_uid_downgrade, which allows you to add a fc and cn to a UID of a Mifare Classic. Signed-off-by: Adam Jon Foster <me@evildaemond.com> --- client/luascripts/hf_mf_uid_downgrade.lua | 131 ++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 client/luascripts/hf_mf_uid_downgrade.lua diff --git a/client/luascripts/hf_mf_uid_downgrade.lua b/client/luascripts/hf_mf_uid_downgrade.lua new file mode 100644 index 000000000..efce2079c --- /dev/null +++ b/client/luascripts/hf_mf_uid_downgrade.lua @@ -0,0 +1,131 @@ +-- +-- hf_mf_uid_downgrade.lua - Downgrading to UID-based Mifare Classic +-- Adapted from hf_mf_sim_hid.lua +-- Created 29.11.2023 + +local getopt = require('getopt') +local ansicolors = require('ansicolors') + +copyright = '' +author = "Adam Foster (evildaemond)" +version = 'v0.0.1' +desc = [[ +Convert a facility code and card number to a Mifare Classic UID, which can be used as part of a downgrade attack. + +Working on HID Readers with any of the following enabled +- Generic 14333A +- Mifare Classic SIO + CSN +- Mifare Classic CSN +]] +example = [[ + -- Downgrade a card with the facility code of 146 and card number of 5 + script run hf_mf_uid_downgrade.lua -f 146 -c 5 +]] +usage = [[ +script run hf_mf_uid_downgrade.lua -f <dec> -c <dec> +]] +arguments = [[ + -h : this help + -f <dec> : facility code + -c <dec> : card number +]] + +--local bxor = bit32.bxor +local bor = bit32.bor +local lshift = bit32.lshift +--- +--- +-- Usage help +local function help() + print(copyright) + print(author) + print(version) + print(desc) + print(ansicolors.cyan..'Usage'..ansicolors.reset) + print(usage) + print(ansicolors.cyan..'Arguments'..ansicolors.reset) + print(arguments) + print(ansicolors.cyan..'Example usage'..ansicolors.reset) + print(example) +end +--- +-- Exit message +local function exitMsg(msg) + print( string.rep('--',20) ) + print( string.rep('--',20) ) + print(msg) + print() +end + +local function oops(err) + print('ERROR:', err) + core.clearCommandBuffer() + return nil, errr +end + + +local function isempty(s) + return s == nil or s == '' +end + +-- Function to combine two hexadecimal strings +local function convertToUID(hex_str1, hex_str2) + local hex1 = string.format('%04x', hex_str1) + local hex2 = string.format('%04x', hex_str2) + + local combined_hex = hex1 .. hex2 + local reversed_hex = '' + for i = #combined_hex, 1, -2 do + reversed_hex = reversed_hex .. string.sub(combined_hex, i - 1, i) + end + return reversed_hex +end + +--- +-- main +local function main(args) + + print( string.rep('--',20) ) + print( string.rep('--',20) ) + print() + + if #args == 0 then return help() end + + --I really wish a better getopt function would be brought in supporting + --long arguments, but it seems this library was chosen for BSD style + --compatibility + for o, a in getopt.getopt(args, 'f:c:h') do + if o == 'h' then return help() end + if o == 'f' then + if isempty(a) then return oops('You must supply a facility code') end + facility = a + end + if o == 'c' then + if isempty(a) then return oops('You must supply a card number') end + cardnum = a + end + end + + --Due to my earlier complaints about how this specific getopt library + --works, specifying ':' does not enforce supplying a value, thus we + --need to do these checks all over again. + if isempty(facility) then return oops('You must supply a facility code') end + if isempty(cardnum) then return oops('You must supply a card number') end + + local cardh = convertToUID(facility, cardnum) + + print('Facility Code... ' .. facility) + print('Card number..... ' .. cardnum) + print('UID............. ' .. cardh) + print('') + + -- Print emulation or writing string based on flags + print('Emulate via PM3:') + print('hf mf sim --1k -u', cardh, '\n') + + print('Write to Mifare Classic Card (Gen1a or Above):') + print('hf mf csetuid -u', cardh) + +end + +main(args) From bcbe76064d874a5d616f36709b453acd1edafcf1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 1 Dec 2023 10:58:33 +0100 Subject: [PATCH 0803/1034] Changed modulation max bit length from 512 to 4096, since we now can get much longer traces --- client/src/cmddata.c | 8 ++++---- common/lfdemod.c | 10 +++++----- common/lfdemod.h | 3 +++ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 47c8ef910..62b824304 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -222,7 +222,7 @@ static int CmdSetDebugMode(const char *Cmd) { return PM3_SUCCESS; } -// max output to 512 bits if we have more +// max output to MAX_DEMODULATION_BITS bits if we have more // doesn't take inconsideration where the demod offset or bitlen found. int printDemodBuff(uint8_t offset, bool strip_leading, bool invert, bool print_hex) { size_t len = g_DemodBufferLen; @@ -257,8 +257,8 @@ int printDemodBuff(uint8_t offset, bool strip_leading, bool invert, bool print_h len = (g_DemodBufferLen - offset); } - if (len > 512) { - len = 512; + if (len > MAX_DEMODULATION_BITS) { + len = MAX_DEMODULATION_BITS; } if (invert) { @@ -275,7 +275,7 @@ int printDemodBuff(uint8_t offset, bool strip_leading, bool invert, bool print_h if (print_hex) { p = (buf + offset); - char hex[512] = {0x00}; + char hex[MAX_DEMODULATION_BITS + 1] = {0x00}; int num_bits = binarraytohex(hex, sizeof(hex), (char *)p, len); if (num_bits == 0) { p = NULL; diff --git a/common/lfdemod.c b/common/lfdemod.c index 9ed6f4e28..1255396c9 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -53,8 +53,8 @@ // ********************************************************************************************** // ---------------------------------Utilities Section-------------------------------------------- // ********************************************************************************************** -#define LOWEST_DEFAULT_CLOCK 32 -#define FSK_PSK_THRESHOLD 123 +#define LOWEST_DEFAULT_CLOCK 32 +#define FSK_PSK_THRESHOLD 123 //to allow debug print calls when used not on dev @@ -1496,7 +1496,7 @@ bool DetectST(uint8_t *buffer, size_t *size, int *foundclock, size_t *ststart, s static int millerRawDecode(uint8_t *bits, size_t *size, int invert) { if (*size < 16) return -1; - uint16_t MaxBits = 512, errCnt = 0; + uint16_t MaxBits = MAX_DEMODULATION_BITS, errCnt = 0; size_t i, bitCnt = 0; uint8_t alignCnt = 0, curBit = bits[0], alignedIdx = 0, halfClkErr = 0; @@ -1540,7 +1540,7 @@ int BiphaseRawDecode(uint8_t *bits, size_t *size, int *offset, int invert) { uint16_t bitnum = 0; uint16_t errCnt = 0; size_t i = *offset; - uint16_t maxbits = 512; + uint16_t maxbits = MAX_DEMODULATION_BITS; //check for phase change faults - skip one sample if faulty bool offsetA = true, offsetB = true; @@ -1580,7 +1580,7 @@ uint16_t manrawdecode(uint8_t *bits, size_t *size, uint8_t invert, uint8_t *alig if (*size < 16) return 0xFFFF; int errCnt = 0, bestErr = 1000; - uint16_t bitnum = 0, maxBits = 512, bestRun = 0; + uint16_t bitnum = 0, maxBits = MAX_DEMODULATION_BITS, bestRun = 0; size_t i; //find correct start position [alignment] diff --git a/common/lfdemod.h b/common/lfdemod.h index c8ca0cfea..a33752b31 100644 --- a/common/lfdemod.h +++ b/common/lfdemod.h @@ -30,6 +30,9 @@ // ignore first x samples of the buffer #define SIGNAL_IGNORE_FIRST_SAMPLES 10 +// Max number of bits when demodulating a signal +#define MAX_DEMODULATION_BITS 4096 + // generic typedef struct { int low; From a913b2c6628477f93179fea2532280b7d823fc17 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 1 Dec 2023 10:59:18 +0100 Subject: [PATCH 0804/1034] style --- armsrc/lfsampling.c | 4 ++-- armsrc/lfsampling.h | 4 ++-- client/luascripts/hf_mf_uid_downgrade.lua | 2 +- client/src/cmdhficlass.c | 6 +++--- client/src/cmdlf.c | 4 ++-- client/src/comms.c | 10 +++++----- client/src/mifare/mifaredefault.h | 2 +- client/src/proxguiqt.cpp | 2 +- client/src/proxguiqt.h | 2 +- doc/commands.json | 18 +++++++++++------- include/pm3_cmd.h | 3 ++- 11 files changed, 31 insertions(+), 26 deletions(-) diff --git a/armsrc/lfsampling.c b/armsrc/lfsampling.c index e4f9ff2e8..ec79630eb 100644 --- a/armsrc/lfsampling.c +++ b/armsrc/lfsampling.c @@ -428,9 +428,9 @@ uint32_t SampleLF(bool verbose, uint32_t sample_size, bool ledcontrol) { /** * Do LF sampling and send samples to the USB - * + * * Uses parameters in config. Only bits_per_sample = 8 is working now - * + * * @param reader_field - true for reading tags, false for sniffing * @return sampling result **/ diff --git a/armsrc/lfsampling.h b/armsrc/lfsampling.h index 27844d81c..c96112385 100644 --- a/armsrc/lfsampling.h +++ b/armsrc/lfsampling.h @@ -53,9 +53,9 @@ uint32_t SampleLF(bool verbose, uint32_t sample_size, bool ledcontrol); /** * Do LF sampling and send samples to the USB - * + * * Uses parameters in config. Only bits_per_sample = 8 is working now - * + * * @param reader_field - true for reading tags, false for sniffing * @return sampling result **/ diff --git a/client/luascripts/hf_mf_uid_downgrade.lua b/client/luascripts/hf_mf_uid_downgrade.lua index efce2079c..a8d243888 100644 --- a/client/luascripts/hf_mf_uid_downgrade.lua +++ b/client/luascripts/hf_mf_uid_downgrade.lua @@ -15,7 +15,7 @@ Convert a facility code and card number to a Mifare Classic UID, which can be us Working on HID Readers with any of the following enabled - Generic 14333A - Mifare Classic SIO + CSN -- Mifare Classic CSN +- Mifare Classic CSN ]] example = [[ -- Downgrade a card with the facility code of 146 and card number of 5 diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index afaf6cab9..6da027c32 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -2070,7 +2070,7 @@ static int CmdHFiClassDump(const char *Cmd) { if (pagemap != PICOPASS_NON_SECURE_PAGEMODE) { // div key KD memcpy(tag_data + (PICOPASS_BLOCK_SIZE * 3), - tempbuf + (PICOPASS_BLOCK_SIZE * 3), PICOPASS_BLOCK_SIZE); + tempbuf + (PICOPASS_BLOCK_SIZE * 3), PICOPASS_BLOCK_SIZE); } // all memory available memcpy(tag_data + (PICOPASS_BLOCK_SIZE * payload.start_block), @@ -2137,8 +2137,8 @@ static int CmdHFiClassDump(const char *Cmd) { // AA2 data memcpy(tag_data + (PICOPASS_BLOCK_SIZE * payload.start_block), - tempbuf + (PICOPASS_BLOCK_SIZE * payload.start_block), - blocks_read * PICOPASS_BLOCK_SIZE); + tempbuf + (PICOPASS_BLOCK_SIZE * payload.start_block), + blocks_read * PICOPASS_BLOCK_SIZE); bytes_got += (blocks_read * PICOPASS_BLOCK_SIZE); diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 2247236fe..c5206bfbf 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -767,7 +767,7 @@ int lf_read(bool verbose, uint64_t samples) { } int CmdLFRead(const char *Cmd) { - // In real-time mode, the first few bytes might be the response of CMD_WTX + // In real-time mode, the first few bytes might be the response of CMD_WTX // rather than the real samples if the LF FPGA image is not ready. CLIParserContext *ctx; CLIParserInit(&ctx, "lf read", @@ -876,7 +876,7 @@ int lf_sniff(bool realtime, bool verbose, uint64_t samples) { } int CmdLFSniff(const char *Cmd) { - // In real-time mode, the first few bytes might be the response of CMD_WTX + // In real-time mode, the first few bytes might be the response of CMD_WTX // rather than the real samples if the LF FPGA image is not ready. CLIParserContext *ctx; CLIParserInit(&ctx, "lf sniff", diff --git a/client/src/comms.c b/client/src/comms.c index 1cf42f0b1..99413b0df 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -612,14 +612,14 @@ bool IsCommunicationThreadDead(void) { // To stop raw receive mode: // Call SetCommunicationReceiveMode(false) // -// Note: +// Note: // 1. The receiving thread won't accept any normal packets after calling -// SetCommunicationReceiveMode(true). You need to call +// SetCommunicationReceiveMode(true). You need to call // SetCommunicationReceiveMode(false) to stop the raw receiving process. // 2. If the received size >= len used in SetCommunicationRawReceiveBuffer(), // The receiving thread will ignore the incoming data to prevent overflow. -// 3. Normally you only need WaitForRawDataTimeout() rather than the -// low level functions like SetCommunicationReceiveMode(), +// 3. Normally you only need WaitForRawDataTimeout() rather than the +// low level functions like SetCommunicationReceiveMode(), // SetCommunicationRawReceiveBuffer() and GetCommunicationRawReceiveNum() bool SetCommunicationReceiveMode(bool isRawMode) { @@ -825,7 +825,7 @@ static size_t communication_delay(void) { /** * @brief Wait for receiving a specified amount of bytes - * + * * @param buffer The receive buffer * @param len The maximum receive byte size * @param ms_timeout the maximum timeout diff --git a/client/src/mifare/mifaredefault.h b/client/src/mifare/mifaredefault.h index ab200de5f..0a631a765 100644 --- a/client/src/mifare/mifaredefault.h +++ b/client/src/mifare/mifaredefault.h @@ -122,7 +122,7 @@ static const uint8_t g_mifare_mad_key_b[] = {0x89, 0xEC, 0xA9, 0x7F, 0x8C, 0x2A} static const uint8_t g_mifare_signature_key_a[] = {0x5C, 0x8F, 0xF9, 0x99, 0x0D, 0xA2}; static const uint8_t g_mifare_signature_key_b[] = {0x4b, 0x79, 0x1b, 0xea, 0x7b, 0xcc}; -// Manufacture MFC / QL88 (S17 / B) +// Manufacture MFC / QL88 (S17 / B) static const uint8_t g_mifare_ql88_signature_key_b[] = {0x70, 0x7B, 0x11, 0xFC, 0x14, 0x81}; static const uint8_t g_mifare_ndef_key[] = {0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7}; diff --git a/client/src/proxguiqt.cpp b/client/src/proxguiqt.cpp index 94a102bf5..bce468394 100644 --- a/client/src/proxguiqt.cpp +++ b/client/src/proxguiqt.cpp @@ -905,7 +905,7 @@ void Plot::MoveTo(uint32_t pos) { if (g_GraphTraceLen == 0) return; g_GraphStart = pos; - QObject* signalSender = sender(); + QObject *signalSender = sender(); if (signalSender != nullptr && signalSender != this) { // Update if it's triggered by a signal from other object this->update(); diff --git a/client/src/proxguiqt.h b/client/src/proxguiqt.h index 8b3891c4a..244d083e3 100644 --- a/client/src/proxguiqt.h +++ b/client/src/proxguiqt.h @@ -38,7 +38,7 @@ class ProxWidget; * @brief The actual plot, black area were we paint the graph */ class Plot: public QWidget { - Q_OBJECT; //needed for slot/signal classes + Q_OBJECT; //needed for slot/signal classes private: QWidget *master; diff --git a/doc/commands.json b/doc/commands.json index 3320a9c5d..642e40482 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -9995,16 +9995,18 @@ "description": "Sniff low frequency signal. - use `lf config` to set parameters. - use `data plot` to look at it", "notes": [ "lf read -v -s 12000 -> collect 12000 samples", - "lf read -s 3000 -@ -> oscilloscope style" + "lf read -s 3000 -@ -> oscilloscope style", + "lf read -r -> use real-time mode" ], "offline": false, "options": [ "-h, --help This help", "-s, --samples <dec> number of samples to collect", "-v, --verbose verbose output", - "-@ continuous reading mode" + "-@ continuous reading mode", + "-r, --realtime real-time reading mode" ], - "usage": "lf read [-hv@] [-s <dec>]" + "usage": "lf read [-hv@r] [-s <dec>]" }, "lf search": { "command": "lf search", @@ -10180,16 +10182,18 @@ "description": "Sniff low frequency signal. You need to configure the LF part on the Proxmark3 device manually. Usually a trigger and skip samples is a good thing to set before doing a low frequency sniff. - use `lf config` to set parameters. - use `data plot` to look at sniff signal. - use `lf search -1` to see if signal can be automatic decoded", "notes": [ "lf sniff -v", - "lf sniff -s 3000 -@ -> oscilloscope style" + "lf sniff -s 3000 -@ -> oscilloscope style", + "lf sniff -r -> use real-time mode" ], "offline": false, "options": [ "-h, --help This help", "-s, --samples <dec> number of samples to collect", "-v, --verbose verbose output", - "-@ continuous sniffing mode" + "-@ continuous sniffing mode", + "-r, --realtime real-time sniffing mode" ], - "usage": "lf sniff [-hv@] [-s <dec>]" + "usage": "lf sniff [-hv@r] [-s <dec>]" }, "lf t55xx bruteforce": { "command": "lf t55xx bruteforce", @@ -12066,6 +12070,6 @@ "metadata": { "commands_extracted": 699, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-11-11T20:31:02" + "extracted_on": "2023-12-01T09:58:53" } } \ No newline at end of file diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index 4b0b21c0e..dcb33bb17 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -280,7 +280,8 @@ typedef struct { typedef struct { // 64KB SRAM -> 524288 bits(max sample num) < 2^30 - uint32_t samples : LF_SAMPLES_BITS; +uint32_t samples : + LF_SAMPLES_BITS; bool realtime : 1; bool verbose : 1; } PACKED lf_sample_payload_t; From f8605311f757bcfdaeb924196160b0d46ea04721 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Fri, 1 Dec 2023 19:58:00 +0800 Subject: [PATCH 0805/1034] Use real-time sampling with high sample size --- client/src/cmdlf.c | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index c5206bfbf..29eadeb85 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -773,10 +773,11 @@ int CmdLFRead(const char *Cmd) { CLIParserInit(&ctx, "lf read", "Sniff low frequency signal.\n" " - use " _YELLOW_("`lf config`") _CYAN_(" to set parameters.\n") - _CYAN_(" - use ") _YELLOW_("`data plot`") _CYAN_(" to look at it"), + _CYAN_(" - use ") _YELLOW_("`data plot`") _CYAN_(" to look at it.\n") + _CYAN_("If the number of samples is more than the device memory limit (40000 now), ") + _CYAN_("it will try to use the real-time sampling mode."), "lf read -v -s 12000 --> collect 12000 samples\n" "lf read -s 3000 -@ --> oscilloscope style \n" - "lf read -r --> use real-time mode \n" ); void *argtable[] = { @@ -784,23 +785,21 @@ int CmdLFRead(const char *Cmd) { arg_u64_0("s", "samples", "<dec>", "number of samples to collect"), arg_lit0("v", "verbose", "verbose output"), arg_lit0("@", NULL, "continuous reading mode"), - arg_lit0("r", "realtime", "real-time reading mode"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); uint64_t samples = arg_get_u64_def(ctx, 1, 0); bool verbose = arg_get_lit(ctx, 2); bool cm = arg_get_lit(ctx, 3); - bool realtime = arg_get_lit(ctx, 4); CLIParserFree(ctx); + // the 40000 there should be the result of BigBuf_max_traceLen(), + // but IDK how to get it. + bool realtime = samples > 40000; + if (g_session.pm3_present == false) return PM3_ENOTTY; - if (realtime && samples == 0) { - samples = MAX_GRAPH_TRACE_LEN; - } - if (cm || realtime) { PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " to exit"); } @@ -885,10 +884,11 @@ int CmdLFSniff(const char *Cmd) { "\n" " - use " _YELLOW_("`lf config`") _CYAN_(" to set parameters.\n") _CYAN_(" - use ") _YELLOW_("`data plot`") _CYAN_(" to look at sniff signal.\n") - _CYAN_(" - use ") _YELLOW_("`lf search -1`") _CYAN_(" to see if signal can be automatic decoded\n"), + _CYAN_(" - use ") _YELLOW_("`lf search -1`") _CYAN_(" to see if signal can be automatic decoded.\n") + _CYAN_("If the number of samples is more than the device memory limit (40000 now), ") + _CYAN_("it will try to use the real-time sampling mode."), "lf sniff -v\n" "lf sniff -s 3000 -@ --> oscilloscope style \n" - "lf sniff -r --> use real-time mode \n" ); void *argtable[] = { @@ -896,23 +896,21 @@ int CmdLFSniff(const char *Cmd) { arg_u64_0("s", "samples", "<dec>", "number of samples to collect"), arg_lit0("v", "verbose", "verbose output"), arg_lit0("@", NULL, "continuous sniffing mode"), - arg_lit0("r", "realtime", "real-time sniffing mode"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); uint64_t samples = arg_get_u64_def(ctx, 1, 0); bool verbose = arg_get_lit(ctx, 2); bool cm = arg_get_lit(ctx, 3); - bool realtime = arg_get_lit(ctx, 4); CLIParserFree(ctx); + // the 40000 there should be the result of BigBuf_max_traceLen(), + // but IDK how to get it. + bool realtime = samples > 40000; + if (g_session.pm3_present == false) return PM3_ENOTTY; - if (realtime && samples == 0) { - samples = MAX_GRAPH_TRACE_LEN; - } - if (cm || realtime) { PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " to exit"); } From b6fa1eb6e3d7ee1d6768ef2d9d698f4d02f0d43c Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Fri, 1 Dec 2023 22:18:05 +0800 Subject: [PATCH 0806/1034] Add some CHANGELOG items --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fa759886..5054a1da0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added a slider in the plot window for navigation (@wh201906) + - Fixed client build bug with Python 3.12 (@wh201906) + - Fixed `ExchangeAPDUSC()` in `cmdsmartcard.c` to prevent client crash (@wh201906) + - Added real-time LF sampling support (@wh201906) - Changed `hf 14a info` - now reads and prints QL88 sigantures (@iceman1001) - Fixed `hf iclass dump` truncating AA2 blocks and improve reliability (@nvx) - Added some info about UMC in "doc/magic_cards_notes.md" (@temskiy) From f3a96298957662acf51d1cb8f43b2a0d5389ee50 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 1 Dec 2023 15:25:09 +0100 Subject: [PATCH 0807/1034] style --- client/src/cmdlf.c | 4 ++-- covsubmit.sh | 33 ++++++++++++++++++++++++++++++++- doc/commands.json | 22 +++++++++------------- 3 files changed, 43 insertions(+), 16 deletions(-) diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 29eadeb85..c9f693573 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -793,7 +793,7 @@ int CmdLFRead(const char *Cmd) { bool cm = arg_get_lit(ctx, 3); CLIParserFree(ctx); - // the 40000 there should be the result of BigBuf_max_traceLen(), + // the 40000 there should be the result of BigBuf_max_traceLen(), // but IDK how to get it. bool realtime = samples > 40000; @@ -904,7 +904,7 @@ int CmdLFSniff(const char *Cmd) { bool cm = arg_get_lit(ctx, 3); CLIParserFree(ctx); - // the 40000 there should be the result of BigBuf_max_traceLen(), + // the 40000 there should be the result of BigBuf_max_traceLen(), // but IDK how to get it. bool realtime = samples > 40000; diff --git a/covsubmit.sh b/covsubmit.sh index 61ca853f1..579caf61d 100755 --- a/covsubmit.sh +++ b/covsubmit.sh @@ -5,6 +5,37 @@ set -e pre_submit_hook +echo "Checking upload permissions..." + +if ! up_perm="$(wget https://scan.coverity.com/api/upload_permitted --post-data "token=${COVTOKEN}&project=${COVPROJECT}" -q -O -)"; then + echo "Coverity Scan API access denied: bad token?" + exit 1 +fi + +# Really up_perm is a JSON response with either +# {upload_permitted:true} or {next_upload_permitted_at:<date>} +# We do some hacky string parsing instead of properly parsing it. +case "$up_perm" in + *upload_permitted*true*) + echo "Coverity Scan: upload permitted" + ;; + *next_upload_permitted_at*) + if [ -z "$COVERITY_DRYRUN" ]; then + echo "Coverity Scan: upload quota reached; stopping here" + # Exit success as this isn't a build error. + exit 0 + else + echo "Coverity Scan: upload quota reached, continuing dry run" + fi + ;; + *) + echo "Coverity Scan upload check: unexpected result $up_perm" + exit 1 + ;; +esac + + + ## delete all previous tarballs rm -f proxmark3.all.*.tgz proxmark3.all.*.log @@ -25,7 +56,7 @@ curl --progress-bar --fail \ --form file="@$FILENAME" \ --form version="$VERSION" \ --form description="$DESCNAME" \ - https://scan.coverity.com/builds?project=Proxmark3+RRG+Iceman+repo | tee -a "${LOGFILENAME}" ; test "${PIPESTATUS[0]}" -eq 0 || exit $? + https://scan.coverity.com/builds?project="${COVPROJECT}" | tee -a "${LOGFILENAME}" ; test "${PIPESTATUS[0]}" -eq 0 || exit $? echo "tarball uploaded to Coverity for analyse" post_submit_hook diff --git a/doc/commands.json b/doc/commands.json index 642e40482..99785b3cd 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -9992,21 +9992,19 @@ }, "lf read": { "command": "lf read", - "description": "Sniff low frequency signal. - use `lf config` to set parameters. - use `data plot` to look at it", + "description": "Sniff low frequency signal. - use `lf config` to set parameters. - use `data plot` to look at it. If the number of samples is more than the device memory limit (40000 now), it will try to use the real-time sampling mode.", "notes": [ "lf read -v -s 12000 -> collect 12000 samples", - "lf read -s 3000 -@ -> oscilloscope style", - "lf read -r -> use real-time mode" + "lf read -s 3000 -@ -> oscilloscope style" ], "offline": false, "options": [ "-h, --help This help", "-s, --samples <dec> number of samples to collect", "-v, --verbose verbose output", - "-@ continuous reading mode", - "-r, --realtime real-time reading mode" + "-@ continuous reading mode" ], - "usage": "lf read [-hv@r] [-s <dec>]" + "usage": "lf read [-hv@] [-s <dec>]" }, "lf search": { "command": "lf search", @@ -10179,21 +10177,19 @@ }, "lf sniff": { "command": "lf sniff", - "description": "Sniff low frequency signal. You need to configure the LF part on the Proxmark3 device manually. Usually a trigger and skip samples is a good thing to set before doing a low frequency sniff. - use `lf config` to set parameters. - use `data plot` to look at sniff signal. - use `lf search -1` to see if signal can be automatic decoded", + "description": "Sniff low frequency signal. You need to configure the LF part on the Proxmark3 device manually. Usually a trigger and skip samples is a good thing to set before doing a low frequency sniff. - use `lf config` to set parameters. - use `data plot` to look at sniff signal. - use `lf search -1` to see if signal can be automatic decoded. If the number of samples is more than the device memory limit (40000 now), it will try to use the real-time sampling mode.", "notes": [ "lf sniff -v", - "lf sniff -s 3000 -@ -> oscilloscope style", - "lf sniff -r -> use real-time mode" + "lf sniff -s 3000 -@ -> oscilloscope style" ], "offline": false, "options": [ "-h, --help This help", "-s, --samples <dec> number of samples to collect", "-v, --verbose verbose output", - "-@ continuous sniffing mode", - "-r, --realtime real-time sniffing mode" + "-@ continuous sniffing mode" ], - "usage": "lf sniff [-hv@r] [-s <dec>]" + "usage": "lf sniff [-hv@] [-s <dec>]" }, "lf t55xx bruteforce": { "command": "lf t55xx bruteforce", @@ -12070,6 +12066,6 @@ "metadata": { "commands_extracted": 699, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-12-01T09:58:53" + "extracted_on": "2023-12-01T14:06:40" } } \ No newline at end of file From a523c1e062d4319394a3da898859d508ce3ee060 Mon Sep 17 00:00:00 2001 From: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> Date: Fri, 1 Dec 2023 23:47:45 +0300 Subject: [PATCH 0808/1034] New crypto Add encryption Add key updating Add config updating Signed-off-by: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> --- client/src/cmdhfmfp.c | 360 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 315 insertions(+), 45 deletions(-) diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 9c02e8aea..bf8e0c95a 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -389,7 +389,7 @@ static int CmdHFMFPInfo(const char *Cmd) { // DESFire answers 0x1C or 67 00 // Plus answers 0x0B, 0x09, 0x06 - // Which tag answers 6D 00 ?? + // 6D00 is "INS code not supported" in APDU if (data[0] != 0x0b && data[0] != 0x09 && data[0] != 0x1C && data[0] != 0x67 && data[0] != 0x6d) { PrintAndLogEx(INFO, _RED_("Send copy to iceman of this command output!")); PrintAndLogEx(INFO, "data: %s", sprint_hex(data, datalen)); @@ -451,49 +451,59 @@ static int CmdHFMFPWritePerso(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mfp wrp", "Executes Write Perso command. Can be used in SL0 mode only.", - "hf mfp wrp --ki 4000 --key 000102030405060708090a0b0c0d0e0f -> write key (00..0f) to key number 4000 \n" - "hf mfp wrp --ki 4000 -> write default key(0xff..0xff) to key number 4000"); + "Use this command to program AES keys, as well as personalize other data on the tag.\n" + "You can program:\n" + "* Address 00 [00-FF]: Memory blocks (as well as ACLs and Crypto1 keys)\n" + "* Address 40 [00-40]: AES sector keys\n" + "* Address 90 [00-04]: AES administrative keys\n" + "* Address A0 [00, 01, 80, 81]: Virtual Card keys\n" + "* Address B0 [00-03]: Configuration data (DO NOT TOUCH B003)\n" + "Examples:\n" + "hf mfp wrp --adr 4000 --data 000102030405060708090a0b0c0d0e0f -> write key (00..0f) to key number 4000 \n" + "hf mfp wrp --adr 4000 -> write default key(0xff..0xff) to key number 4000\n" + "hf mfp wrp --adr b000 -d FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> allow 255 commands without MAC in configuration block (B000)\n" + "hf mfp wrp --adr 0003 -d 1234561234567F078869B0B1B2B3B4B5 -> write crypto1 keys A: 123456123456 and B: B0B1B2B3B4B5 to block 3\n"); void *argtable[] = { arg_param_begin, arg_lit0("v", "verbose", "Verbose output"), - arg_str1(NULL, "ki", "<hex>", " Key number, 2 hex bytes"), - arg_str0(NULL, "key", "<hex>", " Key, 16 hex bytes"), + arg_str1("a", "adr", "<hex>", "Address, 2 hex bytes"), + arg_str0("d", "data", "<hex>", "Data, 16 hex bytes"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); bool verbose = arg_get_lit(ctx, 1); - uint8_t keyNum[64] = {0}; - int keyNumLen = 0; - CLIGetHexWithReturn(ctx, 2, keyNum, &keyNumLen); + uint8_t addr[64] = {0}; + int addrLen = 0; + CLIGetHexWithReturn(ctx, 2, addr, &addrLen); - uint8_t key[64] = {0}; - int keyLen = 0; - CLIGetHexWithReturn(ctx, 3, key, &keyLen); + uint8_t datain[64] = {0}; + int datainLen = 0; + CLIGetHexWithReturn(ctx, 3, datain, &datainLen); CLIParserFree(ctx); mfpSetVerboseMode(verbose); - if (!keyLen) { - memmove(key, mfp_default_key, 16); - keyLen = 16; + if (!datainLen) { + memmove(datain, mfp_default_key, 16); + datainLen = 16; } - if (keyNumLen != 2) { - PrintAndLogEx(ERR, "Key number length must be 2 bytes. Got %d", keyNumLen); + if (addrLen != 2) { + PrintAndLogEx(ERR, "Address length must be 2 bytes. Got %d", addrLen); return PM3_EINVARG; } - if (keyLen != 16) { - PrintAndLogEx(ERR, "Key length must be 16 bytes. Got %d", keyLen); + if (datainLen != 16) { + PrintAndLogEx(ERR, "Data length must be 16 bytes. Got %d", datainLen); return PM3_EINVARG; } uint8_t data[250] = {0}; int datalen = 0; - int res = MFPWritePerso(keyNum, key, true, false, data, sizeof(data), &datalen); + int res = MFPWritePerso(addr, datain, true, false, data, sizeof(data), &datalen); if (res) { PrintAndLogEx(ERR, "Exchange error: %d", res); return res; @@ -671,7 +681,29 @@ static int CmdHFMFPAuth(const char *Cmd) { return MifareAuth4(NULL, keyn, key, true, false, true, verbose, false); } - +static int data_crypt(mf4Session_t *mf4session, uint8_t *dati, uint8_t *dato, bool rev){ +uint8_t kenc[16]; + memcpy(kenc, mf4session->Kenc, 16); + uint8_t ti[4]; + memcpy(ti, mf4session->TI, 4); + uint8_t ctr[1]; + uint8_t IV[16] ={0,0,0x00,0x00,0x00,0,0x00,0x00,0x00,0}; + if (rev){ + ctr[0] = (uint8_t)(mf4session->R_Ctr & 0xff); + for (int i = 0; i<9; i+=4){memcpy(&IV[i], ctr, 1);} + memcpy(&IV[12], ti, 4); // For reads TI is LS + } else { + ctr[0] = (uint8_t)(mf4session->W_Ctr & 0xff); + for (int i = 3; i<16; i+=4){memcpy(&IV[i], ctr, 1);} + memcpy(&IV[0], ti, 4); // For writes TI is MS + } + if (rev){ + aes_decode(IV, kenc, dati, dato, 16); + } else { + aes_encode(IV, kenc, dati, dato, 16); + } + return 0; +} static int CmdHFMFPRdbl(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mfp rdbl", @@ -684,7 +716,9 @@ static int CmdHFMFPRdbl(const char *Cmd) { arg_lit0("v", "verbose", "Verbose mode"), arg_int0("n", "count", "<dec>", "Blocks count (def: 1)"), arg_lit0("b", "keyb", "Use key B (def: keyA)"), - arg_lit0("p", "plain", "Plain communication mode between reader and card"), + arg_lit0("p", "plain", "Do not use encrypted communication mode between reader and card"), + arg_lit0(NULL, "nmc", "Do not append MAC to command"), + arg_lit0(NULL, "nmr", "Do not expect MAC in reply"), arg_int1(NULL, "blk", "<0..255>", "Block number"), arg_str0("k", "key", "<hex>", "Key, 16 hex bytes"), arg_param_end @@ -694,13 +728,15 @@ static int CmdHFMFPRdbl(const char *Cmd) { bool verbose = arg_get_lit(ctx, 1); int blocksCount = arg_get_int_def(ctx, 2, 1); bool keyB = arg_get_lit(ctx, 3); - int plain = arg_get_lit(ctx, 4); - uint32_t blockn = arg_get_int(ctx, 5); + bool plain = arg_get_lit(ctx, 4); + bool nomaccmd = arg_get_lit(ctx, 5); + bool nomacres = arg_get_lit(ctx, 6); + uint32_t blockn = arg_get_int(ctx, 7); uint8_t keyn[2] = {0}; uint8_t key[250] = {0}; int keylen = 0; - CLIGetHexWithReturn(ctx, 6, key, &keylen); + CLIGetHexWithReturn(ctx, 8, key, &keylen); CLIParserFree(ctx); mfpSetVerboseMode(verbose); @@ -747,7 +783,7 @@ static int CmdHFMFPRdbl(const char *Cmd) { uint8_t data[250] = {0}; int datalen = 0; uint8_t mac[8] = {0}; - res = MFPReadBlock(&mf4session, plain, blockn & 0xff, blocksCount, false, false, data, sizeof(data), &datalen, mac); + res = MFPReadBlock(&mf4session, plain, nomaccmd, nomacres, blockn & 0xff, blocksCount, false, false, data, sizeof(data), &datalen, mac); if (res) { PrintAndLogEx(ERR, "Read error: %d", res); return res; @@ -757,12 +793,13 @@ static int CmdHFMFPRdbl(const char *Cmd) { PrintAndLogEx(ERR, "Card read error: %02x %s", data[0], mfpGetErrorDescription(data[0])); return PM3_ESOFT; } - - if (datalen != 1 + blocksCount * 16 + 8 + 2) { + //PrintAndLogEx(INFO, "%i", 8 && (!macres || 0xff)); + if (datalen != 1 + blocksCount * 16 + (nomacres ? 0 : 8) + 2) { PrintAndLogEx(ERR, "Error return length: %d", datalen); return PM3_ESOFT; } - + + if (!plain) data_crypt(&mf4session, &data[1], &data[1], true); uint8_t sector = mfSectorNum(blockn); mf_print_sector_hdr(sector); @@ -772,11 +809,11 @@ static int CmdHFMFPRdbl(const char *Cmd) { indx++; } - if (memcmp(&data[(blocksCount * 16) + 1], mac, 8)) { + if (memcmp(&data[(blocksCount * 16) + 1], mac, 8) && !nomacres) { PrintAndLogEx(WARNING, "WARNING: mac not equal..."); PrintAndLogEx(WARNING, "MAC card... " _YELLOW_("%s"), sprint_hex_inrow(&data[1 + (blocksCount * MFBLOCK_SIZE)], 8)); PrintAndLogEx(WARNING, "MAC reader... " _YELLOW_("%s"), sprint_hex_inrow(mac, sizeof(mac))); - } else { + } else if (!nomacres) { if (verbose) { PrintAndLogEx(INFO, "MAC... " _YELLOW_("%s"), sprint_hex_inrow(&data[1 + (blocksCount * MFBLOCK_SIZE)], 8)); } @@ -796,7 +833,9 @@ static int CmdHFMFPRdsc(const char *Cmd) { arg_param_begin, arg_lit0("v", "verbose", "Verbose mode"), arg_lit0("b", "keyb", "Use key B (def: keyA)"), - arg_lit0("p", "plain", "Plain communication mode between reader and card"), + arg_lit0("p", "plain", "Do not use encrypted communication mode between reader and card"), + arg_lit0(NULL, "nmc", "Do not append MAC to command"), + arg_lit0(NULL, "nmr", "Do not expect MAC in reply"), arg_int1("s", "sn", "<0..255>", "Sector number"), arg_str0("k", "key", "<hex>", "Key, 16 hex bytes"), arg_param_end @@ -806,11 +845,13 @@ static int CmdHFMFPRdsc(const char *Cmd) { bool verbose = arg_get_lit(ctx, 1); bool keyB = arg_get_lit(ctx, 2); bool plain = arg_get_lit(ctx, 3); - uint32_t sectorNum = arg_get_int(ctx, 4); + bool nomaccmd = arg_get_lit(ctx, 4); + bool nomacres = arg_get_lit(ctx, 5); + uint32_t sectorNum = arg_get_int(ctx, 6); uint8_t keyn[2] = {0}; uint8_t key[250] = {0}; int keylen = 0; - CLIGetHexWithReturn(ctx, 5, key, &keylen); + CLIGetHexWithReturn(ctx, 7, key, &keylen); CLIParserFree(ctx); mfpSetVerboseMode(verbose); @@ -851,7 +892,7 @@ static int CmdHFMFPRdsc(const char *Cmd) { for (int blockno = mfFirstBlockOfSector(sectorNum); blockno < mfFirstBlockOfSector(sectorNum) + mfNumBlocksPerSector(sectorNum); blockno++) { - res = MFPReadBlock(&mf4session, plain, blockno & 0xff, 1, false, true, data, sizeof(data), &datalen, mac); + res = MFPReadBlock(&mf4session, plain, nomaccmd, nomacres, blockno & 0xff, 1, false, true, data, sizeof(data), &datalen, mac); if (res) { PrintAndLogEx(ERR, "Read error: %d", res); DropField(); @@ -864,19 +905,19 @@ static int CmdHFMFPRdsc(const char *Cmd) { return PM3_ESOFT; } - if (datalen != 1 + MFBLOCK_SIZE + 8 + 2) { + if (datalen != 1 + MFBLOCK_SIZE + (nomacres? 0 : 8) + 2) { PrintAndLogEx(ERR, "Error return length:%d", datalen); DropField(); return PM3_ESOFT; } - + if (!plain) data_crypt(&mf4session, &data[1], &data[1], true); mf_print_block_one(blockno, data + 1, verbose); - if (memcmp(&data[1 + 16], mac, 8)) { + if (memcmp(&data[1 + 16], mac, 8) && !nomacres) { PrintAndLogEx(WARNING, "WARNING: mac on block %d not equal...", blockno); PrintAndLogEx(WARNING, "MAC card... " _YELLOW_("%s"), sprint_hex_inrow(&data[1 + MFBLOCK_SIZE], 8)); PrintAndLogEx(WARNING, "MAC reader... " _YELLOW_("%s"), sprint_hex_inrow(mac, sizeof(mac))); - } else { + } else if (!nomacres) { if (verbose) { PrintAndLogEx(INFO, "MAC... " _YELLOW_("%s"), sprint_hex_inrow(&data[1 + MFBLOCK_SIZE], 8)); } @@ -900,6 +941,8 @@ static int CmdHFMFPWrbl(const char *Cmd) { arg_lit0("v", "verbose", "Verbose mode"), arg_lit0("b", "keyb", "Use key B (def: keyA)"), arg_int1(NULL, "blk", "<0..255>", "Block number"), + arg_lit0("p", "plain", "Do not use encrypted transmission"), + arg_lit0(NULL, "nmr", "Do not expect MAC in response"), arg_str1("d", "data", "<hex>", "Data, 16 hex bytes"), arg_str0("k", "key", "<hex>", "Key, 16 hex bytes"), arg_param_end @@ -909,14 +952,16 @@ static int CmdHFMFPWrbl(const char *Cmd) { bool verbose = arg_get_lit(ctx, 1); bool keyB = arg_get_lit(ctx, 2); uint32_t blockNum = arg_get_int(ctx, 3); + bool plain = arg_get_lit(ctx, 4); + bool nomacres = arg_get_lit(ctx, 5); uint8_t datain[250] = {0}; int datainlen = 0; - CLIGetHexWithReturn(ctx, 4, datain, &datainlen); + CLIGetHexWithReturn(ctx, 6, datain, &datainlen); uint8_t key[250] = {0}; int keylen = 0; - CLIGetHexWithReturn(ctx, 5, key, &keylen); + CLIGetHexWithReturn(ctx, 7, key, &keylen); CLIParserFree(ctx); uint8_t keyn[2] = {0}; @@ -956,18 +1001,18 @@ static int CmdHFMFPWrbl(const char *Cmd) { PrintAndLogEx(ERR, "Authentication error: %d", res); return res; } - + if (!plain) data_crypt(&mf4session, &datain[0], &datain[0], false); uint8_t data[250] = {0}; int datalen = 0; uint8_t mac[8] = {0}; - res = MFPWriteBlock(&mf4session, blockNum & 0xff, datain, false, false, data, sizeof(data), &datalen, mac); + res = MFPWriteBlock(&mf4session, plain, nomacres, blockNum & 0xff, 0x00, datain, false, false, data, sizeof(data), &datalen, mac); if (res) { PrintAndLogEx(ERR, "Write error: %d", res); DropField(); return res; } - if (datalen != 3 && (datalen != 3 + 8)) { + if (datalen != 3 && (datalen != 3 + (nomacres ? 0 : 8))) { PrintAndLogEx(ERR, "Error return length:%d", datalen); DropField(); return PM3_ESOFT; @@ -979,11 +1024,11 @@ static int CmdHFMFPWrbl(const char *Cmd) { return PM3_ESOFT; } - if (memcmp(&data[1], mac, 8)) { + if (memcmp(&data[1], mac, 8) && !nomacres) { PrintAndLogEx(WARNING, "WARNING: mac not equal..."); PrintAndLogEx(WARNING, "MAC card: %s", sprint_hex(&data[1], 8)); PrintAndLogEx(WARNING, "MAC reader: %s", sprint_hex(mac, 8)); - } else { + } else if (!nomacres) { if (verbose) PrintAndLogEx(INFO, "MAC: %s", sprint_hex(&data[1], 8)); } @@ -993,6 +1038,229 @@ static int CmdHFMFPWrbl(const char *Cmd) { return PM3_SUCCESS; } +static int CmdHFMFPChKey(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfp chkey", + "Change the keys on a Mifare Plus tag", + "This requires the key that can update the key that you are trying to update.\n" + "hf mfp chkey --ki 401f -d FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF --key A0A1A2A3A4A5A6A7A0A1A2A3A4A5A6A7 -> Change key B for Sector 15 from MAD to default\n" + "hf mfp chkey --ki 9000 -d 32F9351A1C02B35FF97E0CA943F814F6 --key FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> Change card master key to custom from default" + ); + + void *argtable[] = { + arg_param_begin, + arg_lit0("v", "verbose", "Verbose mode"), + arg_lit0(NULL, "nmr", "Do not expect MAC in response"), + arg_str1(NULL, "ki", "<hex>", "Key Index, 2 hex bytes"), + arg_str0("k", "key", "<hex>", "Current sector key, 16 hex bytes"), + arg_lit0("b", "typeb", "Sector key is key B"), + arg_str1("d", "data", "<hex>", "New key, 16 hex bytes"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + + bool verbose = arg_get_lit(ctx, 1); + bool nomacres = arg_get_lit(ctx, 2); + + uint8_t keyn[250] = {0}; + + uint8_t ki[250] = {0}; + int kilen = 0; + CLIGetHexWithReturn(ctx, 3, ki, &kilen); + + uint8_t key[250] = {0}; + int keylen = 0; + CLIGetHexWithReturn(ctx, 4, key, &keylen); + + bool usekeyb = arg_get_lit(ctx, 5); + uint8_t datain[250] = {0}; + int datainlen = 0; + CLIGetHexWithReturn(ctx, 6, datain, &datainlen); + + CLIParserFree(ctx); + + mfpSetVerboseMode(verbose); + + if (!keylen) { + memmove(key, mfp_default_key, 16); + keylen = 16; + } + + if (keylen != 16) { + PrintAndLogEx(ERR, "<key> must be 16 bytes. Got %d", keylen); + return PM3_EINVARG; + } + + if (datainlen != 16) { + PrintAndLogEx(ERR, "<data> must be 16 bytes. Got %d", datainlen); + return PM3_EINVARG; + } + mf4Session_t mf4session; + keyn[0] = ki[0]; + if (ki[0] == 0x40){ // Only if we are working with sector keys + if (usekeyb){ + keyn[1] = (ki[1] % 2 ==0) ? ki[1] + 1 : ki[1]; // If we change using key B, check if KI is key A + } else { + keyn[1] = (ki[1] % 2 ==0) ? ki[1] : ki[1] -1; // If we change using key A, check if KI is key A + } + } else {keyn[1] = ki[1];} + if (verbose){ + PrintAndLogEx(INFO, "--key index:", sprint_hex(keyn, 2)); + } + int res = MifareAuth4(&mf4session, keyn, key, true, true, true, verbose, false); + if (res) { + PrintAndLogEx(ERR, "Authentication error: %d", res); + return res; + } + data_crypt(&mf4session, &datain[0], &datain[0], false); + uint8_t data[250] = {0}; + int datalen = 0; + uint8_t mac[8] = {0}; + res = MFPWriteBlock(&mf4session, false, nomacres, ki[1], ki[0], datain, false, false, data, sizeof(data), &datalen, mac); + if (res) { + PrintAndLogEx(ERR, "Write error: %d", res); + DropField(); + return res; + } + + if (datalen != 3 && (datalen != 3 + (nomacres ? 0 : 8))) { + PrintAndLogEx(ERR, "Error return length:%d", datalen); + DropField(); + return PM3_ESOFT; + } + + if (datalen && data[0] != 0x90) { + PrintAndLogEx(ERR, "Card write error: %02x %s", data[0], mfpGetErrorDescription(data[0])); + DropField(); + return PM3_ESOFT; + } + + if (memcmp(&data[1], mac, 8) && !nomacres) { + PrintAndLogEx(WARNING, "WARNING: mac not equal..."); + PrintAndLogEx(WARNING, "MAC card: %s", sprint_hex(&data[1], 8)); + PrintAndLogEx(WARNING, "MAC reader: %s", sprint_hex(mac, 8)); + } else if (!nomacres) { + if (verbose) + PrintAndLogEx(INFO, "MAC: %s", sprint_hex(&data[1], 8)); + } + + DropField(); + PrintAndLogEx(INFO, "Key update ( " _GREEN_("ok") " )"); + return PM3_SUCCESS; +} + +static int CmdHFMFPChConf(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfp chconf", + "Change the configuration on a Mifare Plus tag. DANGER!", + "This requires Card Master Key (9000) or Card Configuration Key (9001).\n" + "Configuration block info can be found below.\n" + "* Block B000 (00; CMK): Max amount of commands without MAC (byte 0), as well as plain mode access (unknown).\n" + "* Block B001 (01; CCK): Installation identifier for Virtual Card. Please consult NXP for data.\n" + "* Block B002 (02; CCK): ATS data.\n" + "* Block B003 (03; CCK): Use Random ID in SL3, decide whether proximity check is mandatory.\n * DO NOT WRITE THIS BLOCK UNDER ANY CIRCUMSTANCES! Risk of bricking.\n" + "More configuration tips to follow. Check JMY600 Series IC Card Module.\n" + "hf mfp chconf -c 00 -d 10ffffffffffffffffffffffffffffff --key A0A1A2A3A4A5A6A7A0A1A2A3A4A5A6A7 -> Allow 16 commands without MAC in a single transaction." + ); + + void *argtable[] = { + arg_param_begin, + arg_lit0("v", "verbose", "Verbose mode"), + arg_lit0(NULL, "nmr", "Do not expect MAC in response"), + arg_int1("c", "conf", "<hex>", "Config block number, 0-3"), + arg_str0("k", "key", "<hex>", "Card key, 16 hex bytes"), + arg_lit0(NULL, "cck", "Auth as Card Configuration key instead of than Card Master Key"), + arg_str1("d", "data", "<hex>", "New configuration data, 16 hex bytes"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + + bool verbose = arg_get_lit(ctx, 1); + bool nomacres = arg_get_lit(ctx, 2); + + uint8_t keyn[250] = {0}; + uint32_t blockNum = arg_get_int(ctx, 3); + + uint8_t key[250] = {0}; + int keylen = 0; + CLIGetHexWithReturn(ctx, 4, key, &keylen); + bool usecck = arg_get_lit(ctx, 5); + + uint8_t datain[250] = {0}; + int datainlen = 0; + CLIGetHexWithReturn(ctx, 6, datain, &datainlen); + + CLIParserFree(ctx); + + mfpSetVerboseMode(verbose); + + if (!keylen) { + memmove(key, mfp_default_key, 16); + keylen = 16; + } + + if (keylen != 16) { + PrintAndLogEx(ERR, "<key> must be 16 bytes. Got %d", keylen); + return PM3_EINVARG; + } + + if (datainlen != 16) { + PrintAndLogEx(ERR, "<data> must be 16 bytes. Got %d", datainlen); + return PM3_EINVARG; + } + + if (blockNum > 3) { + PrintAndLogEx(ERR, "<config number> must be in range [0..3]. Got %d", blockNum); + return PM3_EINVARG; + } + mf4Session_t mf4session; + keyn[0] = 0x90; + keyn[1] = usecck ? 0x01 : 0x00; + if (verbose){ + PrintAndLogEx(INFO, "--key index:", sprint_hex(keyn, 2)); + } + int res = MifareAuth4(&mf4session, keyn, key, true, true, true, verbose, false); + if (res) { + PrintAndLogEx(ERR, "Authentication error: %d", res); + return res; + } + data_crypt(&mf4session, &datain[0], &datain[0], false); + uint8_t data[250] = {0}; + int datalen = 0; + uint8_t mac[8] = {0}; + res = MFPWriteBlock(&mf4session, false, nomacres, blockNum & 0xff, 0xb0, datain, false, false, data, sizeof(data), &datalen, mac); + if (res) { + PrintAndLogEx(ERR, "Write error: %d", res); + DropField(); + return res; + } + + if (datalen != 3 && (datalen != 3 + (nomacres ? 0 : 8))) { + PrintAndLogEx(ERR, "Error return length:%d", datalen); + DropField(); + return PM3_ESOFT; + } + + if (datalen && data[0] != 0x90) { + PrintAndLogEx(ERR, "Card write error: %02x %s", data[0], mfpGetErrorDescription(data[0])); + DropField(); + return PM3_ESOFT; + } + + if (memcmp(&data[1], mac, 8) && !nomacres) { + PrintAndLogEx(WARNING, "WARNING: mac not equal..."); + PrintAndLogEx(WARNING, "MAC card: %s", sprint_hex(&data[1], 8)); + PrintAndLogEx(WARNING, "MAC reader: %s", sprint_hex(mac, 8)); + } else if (!nomacres) { + if (verbose) + PrintAndLogEx(INFO, "MAC: %s", sprint_hex(&data[1], 8)); + } + + DropField(); + PrintAndLogEx(INFO, "Write config ( " _GREEN_("ok") " )"); + return PM3_SUCCESS; +} + static int plus_key_check(uint8_t startSector, uint8_t endSector, uint8_t startKeyAB, uint8_t endKeyAB, uint8_t keyList[MAX_AES_KEYS_LIST_LEN][AES_KEY_LEN], size_t keyListLen, uint8_t foundKeys[2][64][AES_KEY_LEN + 1], bool verbose) { @@ -1821,6 +2089,8 @@ static command_t CommandTable[] = { {"rdbl", CmdHFMFPRdbl, IfPm3Iso14443a, "Read blocks from card"}, {"rdsc", CmdHFMFPRdsc, IfPm3Iso14443a, "Read sectors from card"}, {"wrbl", CmdHFMFPWrbl, IfPm3Iso14443a, "Write block to card"}, + {"chkey", CmdHFMFPChKey, IfPm3Iso14443a, "Change key on card"}, + {"chconf", CmdHFMFPChConf, IfPm3Iso14443a, "Change config on card"}, {"-----------", CmdHelp, IfPm3Iso14443a, "---------------- " _CYAN_("personalization") " -------------------"}, {"commitp", CmdHFMFPCommitPerso, IfPm3Iso14443a, "Configure security layer (SL1/SL3 mode)"}, {"initp", CmdHFMFPInitPerso, IfPm3Iso14443a, "Fill all the card's keys in SL0 mode"}, From 91f574ab1939c7f554c02a5cdfed50d66e3300e6 Mon Sep 17 00:00:00 2001 From: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> Date: Fri, 1 Dec 2023 23:48:45 +0300 Subject: [PATCH 0809/1034] More arguments Add support for writing special blocks Add custom command bytes Signed-off-by: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> --- client/src/mifare/mifare4.c | 38 ++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/client/src/mifare/mifare4.c b/client/src/mifare/mifare4.c index 420c93a9e..8186b27d5 100644 --- a/client/src/mifare/mifare4.c +++ b/client/src/mifare/mifare4.c @@ -258,9 +258,9 @@ int MifareAuth4(mf4Session_t *mf4session, uint8_t *keyn, uint8_t *key, bool acti memmove(&raw[16], &RndB[1], 16); aes_encode(NULL, key, raw, &cmd2[1], 32); - if (verbose) + if (verbose){ PrintAndLogEx(INFO, ">phase2: %s", sprint_hex(cmd2, 33)); - + } res = ExchangeRAW14a(cmd2, sizeof(cmd2), false, true, data, sizeof(data), &datalen, silentMode); if (res) { if (!silentMode) PrintAndLogEx(ERR, "Exchange raw error: %d", res); @@ -372,26 +372,34 @@ int MFPCommitPerso(bool activateField, bool leaveSignalON, uint8_t *dataout, int return intExchangeRAW14aPlus(rcmd, sizeof(rcmd), activateField, leaveSignalON, dataout, maxdataoutlen, dataoutlen); } -int MFPReadBlock(mf4Session_t *mf4session, bool plain, uint8_t blockNum, uint8_t blockCount, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, uint8_t *mac) { - uint8_t rcmd[4 + 8] = {(plain ? (0x37) : (0x33)), blockNum, 0x00, blockCount}; - if (!plain && mf4session) - CalculateMAC(mf4session, mtypReadCmd, blockNum, blockCount, rcmd, 4, &rcmd[4], g_verbose_mode); - - int res = intExchangeRAW14aPlus(rcmd, plain ? 4 : sizeof(rcmd), activateField, leaveSignalON, dataout, maxdataoutlen, dataoutlen); +int MFPReadBlock(mf4Session_t *mf4session, bool plain, bool nomaccmd, bool nomacres, uint8_t blockNum, uint8_t blockCount, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, uint8_t *mac) { + int cmdb = 0x31; + if (nomacres){cmdb = cmdb ^ 0x01;} // If we do not want MAC in reply, remove 0x01 + if (plain){cmdb = cmdb ^ 0x02;} // If we do not need an encrypted transmission, add 0x02 + if (nomaccmd){cmdb = cmdb ^ 0x04;} // If we do not want to send a MAC, remove 0x04 + uint8_t rcmd1[4] = {cmdb, blockNum, 0x00, blockCount}; + uint8_t maccmddat[8] = {0}; + uint8_t rcmd[nomaccmd ? 4 : 12]; + if (!nomaccmd && mf4session) + CalculateMAC(mf4session, mtypReadCmd, blockNum, blockCount, rcmd1, 4, &maccmddat[0], g_verbose_mode); + memmove(rcmd, rcmd1, 4); + if (!nomaccmd){memmove(&rcmd[4], maccmddat, 8);} + int res = intExchangeRAW14aPlus(rcmd, sizeof(rcmd), activateField, leaveSignalON, dataout, maxdataoutlen, dataoutlen); if (res) return res; - if (mf4session) mf4session->R_Ctr++; - - if (mf4session && mac && *dataoutlen > 11) + if (mf4session && !nomacres && *dataoutlen > 11) CalculateMAC(mf4session, mtypReadResp, blockNum, blockCount, dataout, *dataoutlen - 8 - 2, mac, g_verbose_mode); return 0; } -int MFPWriteBlock(mf4Session_t *mf4session, uint8_t blockNum, uint8_t *data, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, uint8_t *mac) { - uint8_t rcmd[1 + 2 + 16 + 8] = {0xA3, blockNum, 0x00}; +int MFPWriteBlock(mf4Session_t *mf4session, bool plain, bool nomacres, uint8_t blockNum, uint8_t blockHdr, uint8_t *data, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, uint8_t *mac) { + int cmdb = 0xA1; + if (nomacres){cmdb = cmdb ^ 0x01;} // If we do not want MAC in reply, remove 0x01 + if (plain){cmdb = cmdb ^ 0x02;} // If we do not need an encrypted transmission, add 0x02 + uint8_t rcmd[1 + 2 + 16 + 8] = {cmdb, blockNum, blockHdr}; memmove(&rcmd[3], data, 16); if (mf4session) CalculateMAC(mf4session, mtypWriteCmd, blockNum, 1, rcmd, 19, &rcmd[19], g_verbose_mode); @@ -403,7 +411,7 @@ int MFPWriteBlock(mf4Session_t *mf4session, uint8_t blockNum, uint8_t *data, boo if (mf4session) mf4session->W_Ctr++; - if (mf4session && mac && *dataoutlen > 3) + if (mf4session && mac && *dataoutlen > 3 && !nomacres) CalculateMAC(mf4session, mtypWriteResp, blockNum, 1, dataout, *dataoutlen, mac, g_verbose_mode); return 0; @@ -431,7 +439,7 @@ int mfpReadSector(uint8_t sectorNo, uint8_t keyType, uint8_t *key, uint8_t *data uint8_t mac[8] = {0}; uint8_t firstBlockNo = mfFirstBlockOfSector(sectorNo); for (int n = firstBlockNo; n < firstBlockNo + mfNumBlocksPerSector(sectorNo); n++) { - res = MFPReadBlock(&_session, plain, n & 0xff, 1, false, true, data, sizeof(data), &datalen, mac); + res = MFPReadBlock(&_session, plain, false, false, n & 0xff, 1, false, true, data, sizeof(data), &datalen, mac); if (res) { PrintAndLogEx(ERR, "Sector %u read error: %d", sectorNo, res); DropField(); From ce99e8699737eeaa9f769242c0e4ab11d3ed9b70 Mon Sep 17 00:00:00 2001 From: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> Date: Fri, 1 Dec 2023 23:49:19 +0300 Subject: [PATCH 0810/1034] New arguments Won't compile otherwise Signed-off-by: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> --- client/src/mifare/mifare4.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/mifare/mifare4.h b/client/src/mifare/mifare4.h index 6687930e6..b5449ab44 100644 --- a/client/src/mifare/mifare4.h +++ b/client/src/mifare/mifare4.h @@ -63,8 +63,8 @@ int MifareAuth4(mf4Session_t *mf4session, uint8_t *keyn, uint8_t *key, bool acti int MFPWritePerso(uint8_t *keyNum, uint8_t *key, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen); int MFPCommitPerso(bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen); -int MFPReadBlock(mf4Session_t *mf4session, bool plain, uint8_t blockNum, uint8_t blockCount, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, uint8_t *mac); -int MFPWriteBlock(mf4Session_t *mf4session, uint8_t blockNum, uint8_t *data, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, uint8_t *mac); +int MFPReadBlock(mf4Session_t *mf4session, bool plain, bool maccmd, bool macres, uint8_t blockNum, uint8_t blockCount, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, uint8_t *mac); +int MFPWriteBlock(mf4Session_t *mf4session, bool plain, bool nomacres, uint8_t blockNum, uint8_t blockHdr, uint8_t *data, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, uint8_t *mac); int mfpReadSector(uint8_t sectorNo, uint8_t keyType, uint8_t *key, uint8_t *dataout, bool verbose); int MFPGetSignature(bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen); From 322411c44f9049ac4f4a3976c5e2e66909002956 Mon Sep 17 00:00:00 2001 From: Anonymous <hazardousvoltage312@gmail.com> Date: Fri, 1 Dec 2023 22:39:46 -0500 Subject: [PATCH 0811/1034] Implement hf_unisniff, 14a/14b/15 sniffer with runtime selection and more save options --- armsrc/Standalone/Makefile.hal | 5 +- armsrc/Standalone/Makefile.inc | 4 + armsrc/Standalone/hf_unisniff.c | 340 ++++++++++++++++++++++++++++++++ 3 files changed, 348 insertions(+), 1 deletion(-) create mode 100644 armsrc/Standalone/hf_unisniff.c diff --git a/armsrc/Standalone/Makefile.hal b/armsrc/Standalone/Makefile.hal index 1a903a0ac..62dd8813d 100644 --- a/armsrc/Standalone/Makefile.hal +++ b/armsrc/Standalone/Makefile.hal @@ -122,6 +122,9 @@ define KNOWN_STANDALONE_DEFINITIONS | HF_TMUDFORD | Read and emulate 15 tags | | | - Tim Mudford | +----------------------------------------------------------+ +| HF_UNISNIFF | Sniff 14a/14b/15 (optionally to flash) | +| | - hazardousvoltage | ++----------------------------------------------------------+ | HF_YOUNG | Mifare sniff/simulation | | | - Craig Young | +----------------------------------------------------------+ @@ -133,7 +136,7 @@ endef STANDALONE_MODES := LF_SKELETON STANDALONE_MODES += LF_EM4100EMUL LF_EM4100RSWB LF_EM4100RSWW LF_EM4100RWC LF_HIDBRUTE LF_HIDFCBRUTE LF_ICEHID LF_MULTIHID LF_NEDAP_SIM LF_NEXID LF_PROXBRUTE LF_PROX2BRUTE LF_SAMYRUN LF_THAREXDE -STANDALONE_MODES += HF_14ASNIFF HF_14BSNIFF HF_15SNIFF HF_AVEFUL HF_BOG HF_CARDHOPPER HF_COLIN HF_CRAFTBYTE HF_ICECLASS HF_LEGIC HF_LEGICSIM HF_MATTYRUN HF_MFCSIM HF_MSDSAL HF_REBLAY HF_TCPRST HF_TMUDFORD HF_YOUNG +STANDALONE_MODES += HF_14ASNIFF HF_14BSNIFF HF_15SNIFF HF_AVEFUL HF_BOG HF_CARDHOPPER HF_COLIN HF_CRAFTBYTE HF_ICECLASS HF_LEGIC HF_LEGICSIM HF_MATTYRUN HF_MFCSIM HF_MSDSAL HF_REBLAY HF_TCPRST HF_TMUDFORD HF_UNISNIFF HF_YOUNG STANDALONE_MODES += DANKARMULTI STANDALONE_MODES_REQ_BT := HF_CARDHOPPER HF_REBLAY STANDALONE_MODES_REQ_SMARTCARD := diff --git a/armsrc/Standalone/Makefile.inc b/armsrc/Standalone/Makefile.inc index 19e3645ff..6f9ec5465 100644 --- a/armsrc/Standalone/Makefile.inc +++ b/armsrc/Standalone/Makefile.inc @@ -145,6 +145,10 @@ endif ifneq (,$(findstring WITH_STANDALONE_HF_TMUDFORD,$(APP_CFLAGS))) SRC_STANDALONE = hf_tmudford.c endif +# WITH_STANDALONE_HF_UNISNIFF +ifneq (,$(findstring WITH_STANDALONE_HF_UNISNIFF,$(APP_CFLAGS))) + SRC_STANDALONE = hf_unisniff.c +endif # WITH_STANDALONE_HF_YOUNG ifneq (,$(findstring WITH_STANDALONE_HF_YOUNG,$(APP_CFLAGS))) SRC_STANDALONE = hf_young.c diff --git a/armsrc/Standalone/hf_unisniff.c b/armsrc/Standalone/hf_unisniff.c new file mode 100644 index 000000000..c8a79f99b --- /dev/null +++ b/armsrc/Standalone/hf_unisniff.c @@ -0,0 +1,340 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// HF_UNISNIFF: Integrated 14a/14b/15 sniffer +//----------------------------------------------------------------------------- + +/* + * 'hf_unisniff' integrates existing sniffer functionality for 14a/14b/15a into + * one standalone module. It can sniff to the RAM trace buffer, or if you have + * a PM3 with Flash it will (optionally) save traces to SPIFFS. + * + * You can select which protocol will be sniffed with compile-time flags, or at + * runtime via button presses or a config file in SPIFFS. You can also choose + * whether it will append to the trace file for each sniffing session + * or create new ones. + * + * If the protocol to sniff is configured at compile time or in config file: + * Once the module is launched, it will begin sniffing immediately. + * + * If configured for runtime selection: + * Flashing LED(s) indicate selected sniffer protocol: A=14a, B=14b, A+B=15 + * Short press cycles through options. Long press begins sniffing. + * + * Short-pressing the button again will stop sniffing, with the sniffed data in + * the trace buffer. If you have Flash, and have not set the 'save=none' + * option in the config file, trace data will be saved to SPIFFS. The default + * is to create a new file for each sniffing session, but you may configure it + * to append instead. + * + * Once the data is saved, standalone mode will exit. + * + * LEDs: + * - LED1: sniffing + * - LED2: sniffed tag command, turns off when finished sniffing reader command + * - LED3: sniffed reader command, turns off when finished sniffing tag command + * - LED4: unmounting/sync'ing flash (normally < 100ms) + * + * Config file: 'hf_unisniff.conf' is a plain text file, one option per line. + * Settings here will override the compile-time options. + * + * Currently available options: + * save = [new|append|none] + * new = create a new file with a numbered name for each session. + * append = append to existing file, create if not existing. + * none = do not save to SPIFFS, leave in trace buffer only. + * + * protocol = [14a|14b|15|ask] + * which protocol to sniff. If you choose a protocol it will go directly + * to work. If you choose 'ask' you may select the protocol at the start + * of each session. + * + * To retrieve trace data from flash: + * + * 1. mem spiffs dump -s hf_unisniff_[protocol]_[number].trace -d hf_unisniff.trace + * Copies trace data file from flash to your PC. + * + * 2. trace load -f hf_unisniff.trace + * Loads trace data from a file into PC-side buffers. + * + * 3. For ISO14a: trace list -t [protocol] -1 + * For MIFARE Classic: trace list -t mf -1 + * + * Lists trace data from buffer without requesting it from PM3. + * + * This module emits debug strings during normal operation -- so try it out in + * the lab connected to PM3 client before taking it into the field. + * + * To delete the trace data from flash: + * mem spiffs remove -f [filename] + * + * Caveats / notes: + * - Trace buffer will be cleared on starting stand-alone mode. Data in flash + * will remain unless explicitly deleted. + * - This module will terminate if the trace buffer is full (and save data to + * flash). + * - Like normal sniffing mode, timestamps overflow after 5 min 16 sec. + * However, the trace buffer is sequential, so will be in the correct order. + * + * Mostly this is based on existing code, i.e. the hf_1*sniff modules and dankarmulti. + * I find it handy to have multiprotocol sniffing on the go, and prefer separate trace + * files rather than appends, so here it is. + * + * If you really like navigating menus with one button and some LEDs, it also works + * with dankarmulti :) + * + * Enjoy! + */ + +#include "standalone.h" // standalone definitions +#include "proxmark3_arm.h" +#include "iso14443a.h" +#include "iso14443b.h" +#include "iso15693.h" +#include "iso15.h" +#include "util.h" +#include "commonutil.h" +#include "spiffs.h" +#include "appmain.h" +#include "dbprint.h" +#include "ticks.h" +#include "BigBuf.h" +#include "string.h" + +#undef HF_UNISNIFF_VERBOSE_DEBUG +#define HF_UNISNIFF_PROTOCOL "14a" +#define HF_UNISNIFF_LOGFILE "hf_unisniff" +#define HF_UNISNIFF_LOGEXT ".trace" +#define HF_UNISNIFF_CONFIG "hf_unisniff.conf" +#define HF_UNISNIFF_CONFIG_SIZE 128 + +#define HF_UNISNIFF_PROTOCOLS {"14a","14b","15", "ask"} // The logic requires ASK be last. +#define HF_UNISNIFF_NUM_PROTOCOLS 4 +#define HF_UNISNIFF_PROTO_14a 0 +#define HF_UNISNIFF_PROTO_14b 1 +#define HF_UNISNIFF_PROTO_15 2 +#define HF_UNISNIFF_PROTO_ASK HF_UNISNIFF_NUM_PROTOCOLS-1 + +#define HF_UNISNIFF_SAVE_MODE HF_UNISNIFF_SAVE_MODE_NEW // Default, override in .conf +#define HF_UNISNIFF_SAVE_MODE_NEW 0 +#define HF_UNISNIFF_SAVE_MODE_APPEND 1 +#define HF_UNISNIFF_SAVE_MODE_NONE 2 + +#ifdef WITH_FLASH +static void UniSniff_DownloadTraceInstructions(char *filename) { + Dbprintf(""); + Dbprintf("To get the trace from flash and display it:"); + Dbprintf("1. mem spiffs dump -s %s -d hf_unisniff.trace", filename); + Dbprintf("2. trace load -f hf_unisniff.trace"); + Dbprintf("3. trace list -t [protocol] -1"); +} +#endif + +void ModInfo(void) { + DbpString(" HF UNISNIFF, multimode HF sniffer with optional flashmem & runtime select (hazardousvoltage)"); + Dbprintf(" Compile-time default protocol: %s", HF_UNISNIFF_PROTOCOL); +#ifdef WITH_FLASH + DbpString(" WITH_FLASH support."); +#endif +} + +void RunMod(void) { + char *protocols[]=HF_UNISNIFF_PROTOCOLS; + uint8_t sniff_protocol, default_sniff_protocol; + StandAloneMode(); + + Dbprintf(_YELLOW_("HF UNISNIFF started")); + for (sniff_protocol=0; sniff_protocol<HF_UNISNIFF_NUM_PROTOCOLS; sniff_protocol++) { + if (!strcmp(protocols[sniff_protocol], HF_UNISNIFF_PROTOCOL)) break; + } + default_sniff_protocol=sniff_protocol; +#ifdef HF_UNISNIFF_VERBOSE_DEBUG + Dbprintf("Compile-time configured protocol: %d", sniff_protocol); +#endif +#ifdef WITH_FLASH + uint8_t save_mode=HF_UNISNIFF_SAVE_MODE; + rdv40_spiffs_lazy_mount(); + // Allocate memory now for buffer for filename to save to. Who knows what'll be + // available after filling the trace buffer. + char *filename = (char *)BigBuf_malloc(64); + if (filename == NULL) { + Dbprintf("failed to allocate memory"); + return; + } + // Read the config file. Size is limited to defined value so as not to consume + // stupid amounts of stack + if (exists_in_spiffs(HF_UNISNIFF_CONFIG)) { + char config_buffer_array[HF_UNISNIFF_CONFIG_SIZE]; + char *config_buffer = &config_buffer_array[0]; + uint32_t config_size = size_in_spiffs(HF_UNISNIFF_CONFIG); + if (config_size > HF_UNISNIFF_CONFIG_SIZE) config_size = HF_UNISNIFF_CONFIG_SIZE; + rdv40_spiffs_read_as_filetype(HF_UNISNIFF_CONFIG, (uint8_t *)config_buffer, + config_size, RDV40_SPIFFS_SAFETY_SAFE); + // This parser is terrible but I think fairly memory efficient? Maybe better to use JSON? + char *x = config_buffer; + char *y = x; + // strip out all the whitespace and Windows line-endings + do { + while (*y == 0x20 || *y == 0x09 || *y == 0x0D) { + ++y; + } + } while ((*x++ = c_tolower(*y++))); + char *token = strchr(config_buffer, '\n'); + while (token != NULL) { + *token++ = '\0'; + char *tag = strtok(config_buffer, "="); + char *value = strtok(NULL, "\n"); + if (tag != NULL && value != NULL) { + if (!strcmp(tag,"protocol")) { + // If we got a selection here, override compile-time selection + uint8_t conf_protocol; + for (conf_protocol=0; conf_protocol<HF_UNISNIFF_NUM_PROTOCOLS; conf_protocol++) { + if (!strcmp(protocols[conf_protocol], value)) { + sniff_protocol = conf_protocol; + break; + } + } +#ifdef HF_UNISNIFF_VERBOSE_DEBUG + Dbprintf("Run-time configured protocol: %d", conf_protocol); +#endif + } else if (!strcmp(tag,"save")) { + if (!strcmp(value,"append")) save_mode = HF_UNISNIFF_SAVE_MODE_APPEND; + else if (!strcmp(value, "none")) save_mode = HF_UNISNIFF_SAVE_MODE_NONE; + else save_mode = HF_UNISNIFF_SAVE_MODE_NEW; +#ifdef HF_UNISNIFF_VERBOSE_DEBUG + Dbprintf("Run-time configured save_mode: %d", save_mode); +#endif + } + } + config_buffer = token; + token = strchr(config_buffer, '\n'); + } + + } +#endif + + if (sniff_protocol >= HF_UNISNIFF_PROTO_ASK) { + Dbprintf("[!] Protocol undefined, going to prompt loop"); + sniff_protocol = default_sniff_protocol; // Default to compile-time setting. + for (;;) { + WDT_HIT(); + if (data_available()) { + BigBuf_free(); + return; + } + if (GetTickCount() & 0x80) + LED(sniff_protocol + 1, 0); + else + LEDsoff(); + + // Was our button held down or pressed? + int button_pressed = BUTTON_HELD(1000); + if (button_pressed == BUTTON_SINGLE_CLICK) { + sniff_protocol++; + if (sniff_protocol >= HF_UNISNIFF_PROTO_ASK) sniff_protocol=0; + SpinDelay(100); + Dbprintf("Selected protocol: '%s'", protocols[sniff_protocol]); + } else if (button_pressed == BUTTON_HOLD) { + Dbprintf("Executing protocol %s", protocols[sniff_protocol]); + for (uint8_t i=0; i<4; i++) { + LED(15,0); + SpinDelay(100); + LEDsoff(); + SpinDelay(100); + } + WAIT_BUTTON_RELEASED(); + SpinDelay(300); + LEDsoff(); + break; + } + } + } + + switch(sniff_protocol) { + case HF_UNISNIFF_PROTO_14a: + SniffIso14443a(0); + break; + case HF_UNISNIFF_PROTO_14b: + SniffIso14443b(); + break; + case HF_UNISNIFF_PROTO_15: + SniffIso15693(0, NULL, false); + break; + default: + Dbprintf("No protocol selected, exiting."); + BigBuf_free(); + LEDsoff(); + return; + } + + Dbprintf("Stopped sniffing"); + SpinDelay(200); + + uint32_t trace_len = BigBuf_get_traceLen(); +#ifndef WITH_FLASH + // Keep stuff in BigBuf for USB/BT dumping + if (trace_len > 0) + Dbprintf("[!] Trace length (bytes) = %u", trace_len); +#else + // Write stuff to spiffs logfile + if (trace_len == 0) { + Dbprintf("[!] Trace buffer is empty, nothing to write!"); + } else if (save_mode == HF_UNISNIFF_SAVE_MODE_NONE) { + Dbprintf("[!] Trace save to flash disabled in config!"); + } else { + Dbprintf("[!] Trace length (bytes) = %u", trace_len); + + uint8_t *trace_buffer = BigBuf_get_addr(); + + sprintf(filename, "%s_%s%s", HF_UNISNIFF_LOGFILE, protocols[sniff_protocol], HF_UNISNIFF_LOGEXT); + if (save_mode == HF_UNISNIFF_SAVE_MODE_NEW) { + uint16_t file_index=0; + while (exists_in_spiffs(filename)) { + if (file_index++ == 1000) break; + sprintf(filename, "%s_%s-%03d%s", HF_UNISNIFF_LOGFILE, protocols[sniff_protocol], + file_index, HF_UNISNIFF_LOGEXT); + } + if (file_index > 999) { + Dbprintf("[!] Too many files! Trace not saved. Clean up your SPIFFS."); + } else { + rdv40_spiffs_write(filename, trace_buffer, trace_len, RDV40_SPIFFS_SAFETY_SAFE); + Dbprintf("[!] Wrote trace to %s", filename); + } + } else if (save_mode == HF_UNISNIFF_SAVE_MODE_APPEND) { + if (!exists_in_spiffs(filename)) { + rdv40_spiffs_write(filename, trace_buffer, trace_len, RDV40_SPIFFS_SAFETY_SAFE); + Dbprintf("[!] Wrote trace to %s", filename); + } else { + rdv40_spiffs_append(filename, trace_buffer, trace_len, RDV40_SPIFFS_SAFETY_SAFE); + Dbprintf("[!] Appended trace to %s", filename); + } + } + UniSniff_DownloadTraceInstructions(filename); + } + + LED_D_ON(); + rdv40_spiffs_lazy_unmount(); + LED_D_OFF(); + + SpinErr(LED_A, 200, 5); + SpinDelay(100); + BigBuf_free(); +#endif + + Dbprintf("-=[ exit ]=-"); + LEDsoff(); + + return; +} From bb529a9077ab15235f72b7a0e4a0d7fab84e5216 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Sat, 2 Dec 2023 16:52:48 +0800 Subject: [PATCH 0812/1034] Fix corrupted data caused by CMD_WTX No need to wait for 2.5s (1s + FPGA_LOAD_WAIT_TIME) if the real-time sampling stops. Make sure the LF bitstream is loaded before real-time sampling so the response of CMD_WTX won't appear. --- CHANGELOG.md | 1 + armsrc/fpgaloader.h | 6 ------ client/src/cmdhfmf.c | 4 ++-- client/src/cmdhw.c | 2 +- client/src/cmdlf.c | 33 +++++++++++++++++++++++---------- include/pm3_cmd.h | 5 +++++ 6 files changed, 32 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5054a1da0..bf4fcc240 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed the corrupted data in real-time sampling (@wh201906) - Added a slider in the plot window for navigation (@wh201906) - Fixed client build bug with Python 3.12 (@wh201906) - Fixed `ExchangeAPDUSC()` in `cmdsmartcard.c` to prevent client crash (@wh201906) diff --git a/armsrc/fpgaloader.h b/armsrc/fpgaloader.h index b345e34f2..27455507d 100644 --- a/armsrc/fpgaloader.h +++ b/armsrc/fpgaloader.h @@ -24,12 +24,6 @@ #define FpgaDisableSscDma(void) AT91C_BASE_PDC_SSC->PDC_PTCR = AT91C_PDC_RXTDIS; #define FpgaEnableSscDma(void) AT91C_BASE_PDC_SSC->PDC_PTCR = AT91C_PDC_RXTEN; -// definitions for multiple FPGA config files support -#define FPGA_BITSTREAM_LF 1 -#define FPGA_BITSTREAM_HF 2 -#define FPGA_BITSTREAM_HF_FELICA 3 -#define FPGA_BITSTREAM_HF_15 4 - /* Communication between ARM / FPGA is done inside armsrc/fpgaloader.c see: function FpgaSendCommand() Send 16 bit command / data pair to FPGA with the bit format: diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index c1ccadb39..935d1cb82 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4249,7 +4249,7 @@ int CmdHF14AMfELoad(const char *Cmd) { // ICEMAN: bug. if device has been using ICLASS commands, // the device needs to load the HF fpga image. It takes 1.5 second. - set_fpga_mode(2); + set_fpga_mode(FPGA_BITSTREAM_HF); // use RDV4 spiffs if (use_spiffs && IfPm3Flash() == false) { @@ -8006,7 +8006,7 @@ static int CmdHF14AGen4Save(const char *Cmd) { // ICEMAN: bug. if device has been using ICLASS commands, // the device needs to load the HF fpga image. It takes 1.5 second. - set_fpga_mode(2); + set_fpga_mode(FPGA_BITSTREAM_HF); // validations if (pwd_len != 4 && pwd_len != 0) { diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index d0a7102cf..b355e66cb 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -1105,7 +1105,7 @@ static int CmdBreak(const char *Cmd) { } int set_fpga_mode(uint8_t mode) { - if (mode < 1 || mode > 4) { + if (mode < FPGA_BITSTREAM_LF || mode > FPGA_BITSTREAM_HF_15) { return PM3_EINVARG; } uint8_t d[] = {mode}; diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index c9f693573..8533e7ac8 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -30,6 +30,7 @@ #include "cliparser.h" // args parsing #include "graph.h" // for graph data #include "cmddata.h" // for `lf search` +#include "cmdhw.h" // for setting FPGA image #include "cmdlfawid.h" // for awid menu #include "cmdlfem.h" // for em menu #include "cmdlfem410x.h" // for em4x menu @@ -725,15 +726,23 @@ static int lf_read_internal(bool realtime, bool verbose, uint64_t samples) { size_t sample_bytes = samples * bits_per_sample; sample_bytes = (sample_bytes / 8) + (sample_bytes % 8 != 0); + // In real-time mode, the LF bitstream should be loaded before receiving raw data. + // Otherwise, the first batch of raw data might contain the response of CMD_WTX. + int result = set_fpga_mode(FPGA_BITSTREAM_LF); + if (result != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "failed to load LF bitstream to FPGA"); + return result; + } + SendCommandNG(CMD_LF_ACQ_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); if (is_trigger_threshold_set) { - size_t first_receive_len = 32; // larger than the response of CMD_WTX + size_t first_receive_len = 32; // Wait until a bunch of data arrives first_receive_len = WaitForRawDataTimeout(realtimeBuf, first_receive_len, -1, false); - sample_bytes = WaitForRawDataTimeout(realtimeBuf + first_receive_len, sample_bytes - first_receive_len, 1000 + FPGA_LOAD_WAIT_TIME, true); + sample_bytes = WaitForRawDataTimeout(realtimeBuf + first_receive_len, sample_bytes - first_receive_len, 1000, true); sample_bytes += first_receive_len; } else { - sample_bytes = WaitForRawDataTimeout(realtimeBuf, sample_bytes, 1000 + FPGA_LOAD_WAIT_TIME, true); + sample_bytes = WaitForRawDataTimeout(realtimeBuf, sample_bytes, 1000, true); } samples = sample_bytes * 8 / bits_per_sample; PrintAndLogEx(INFO, "Done: %" PRIu64 " samples (%zu bytes)", samples, sample_bytes); @@ -767,8 +776,6 @@ int lf_read(bool verbose, uint64_t samples) { } int CmdLFRead(const char *Cmd) { - // In real-time mode, the first few bytes might be the response of CMD_WTX - // rather than the real samples if the LF FPGA image is not ready. CLIParserContext *ctx; CLIParserInit(&ctx, "lf read", "Sniff low frequency signal.\n" @@ -837,15 +844,23 @@ int lf_sniff(bool realtime, bool verbose, uint64_t samples) { size_t sample_bytes = samples * bits_per_sample; sample_bytes = (sample_bytes / 8) + (sample_bytes % 8 != 0); + // In real-time mode, the LF bitstream should be loaded before receiving raw data. + // Otherwise, the first batch of raw data might contain the response of CMD_WTX. + int result = set_fpga_mode(FPGA_BITSTREAM_LF); + if (result != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "failed to load LF bitstream to FPGA"); + return result; + } + SendCommandNG(CMD_LF_SNIFF_RAW_ADC, (uint8_t *)&payload, sizeof(payload)); if (is_trigger_threshold_set) { - size_t first_receive_len = 32; // larger than the response of CMD_WTX + size_t first_receive_len = 32; // Wait until a bunch of data arrives first_receive_len = WaitForRawDataTimeout(realtimeBuf, first_receive_len, -1, false); - sample_bytes = WaitForRawDataTimeout(realtimeBuf + first_receive_len, sample_bytes - first_receive_len, 1000 + FPGA_LOAD_WAIT_TIME, true); + sample_bytes = WaitForRawDataTimeout(realtimeBuf + first_receive_len, sample_bytes - first_receive_len, 1000, true); sample_bytes += first_receive_len; } else { - sample_bytes = WaitForRawDataTimeout(realtimeBuf, sample_bytes, 1000 + FPGA_LOAD_WAIT_TIME, true); + sample_bytes = WaitForRawDataTimeout(realtimeBuf, sample_bytes, 1000, true); } samples = sample_bytes * 8 / bits_per_sample; PrintAndLogEx(INFO, "Done: %" PRIu64 " samples (%zu bytes)", samples, sample_bytes); @@ -875,8 +890,6 @@ int lf_sniff(bool realtime, bool verbose, uint64_t samples) { } int CmdLFSniff(const char *Cmd) { - // In real-time mode, the first few bytes might be the response of CMD_WTX - // rather than the real samples if the LF FPGA image is not ready. CLIParserContext *ctx; CLIParserInit(&ctx, "lf sniff", "Sniff low frequency signal. You need to configure the LF part on the Proxmark3 device manually.\n" diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index dcb33bb17..9189704e4 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -847,6 +847,11 @@ typedef struct { # define UART_TCP_LOCAL_CLIENT_RX_TIMEOUT_MS 40 # define UART_UDP_LOCAL_CLIENT_RX_TIMEOUT_MS 20 +// definitions for multiple FPGA config files support +#define FPGA_BITSTREAM_LF 1 +#define FPGA_BITSTREAM_HF 2 +#define FPGA_BITSTREAM_HF_FELICA 3 +#define FPGA_BITSTREAM_HF_15 4 // CMD_DEVICE_INFO response packet has flags in arg[0], flag definitions: /* Whether a bootloader that understands the g_common_area is present */ From 046237500be4a9a685b15bd01ccdce3d63e2bd4b Mon Sep 17 00:00:00 2001 From: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> Date: Sun, 3 Dec 2023 10:28:32 +0300 Subject: [PATCH 0813/1034] Proper block data for Mifare Plus All blocks are NOT data blocks Some are now config/management keys/sector keys/... Signed-off-by: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> --- client/src/cmdhflist.c | 134 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 129 insertions(+), 5 deletions(-) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index bf67a2b0b..aacbb4085 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -1331,8 +1331,57 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { case MFP_AUTHENTICATEFIRST_VARIANT: if (data_size > 1) { // key : uint16_t uKeyNum = 0x4000 + sectorNum * 2 + (keyB ? 1 : 0); - uint16_t uKeyNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "FIRST AUTH (Keynr 0x%04X: %c sector %d)", uKeyNum, uKeyNum & 0x0001 ? 'B' : 'A', (uKeyNum - 0x4000) / 2); + uint16_t uKeyNum = MemLeToUint2byte(data); + switch (uKeyNum & 0xf000){ + const char* stringdata; + default: + stringdata = "FIRST AUTH (Keynr 0x%04X: Key not identified)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); + break; + case 0x4000: + stringdata = "FIRST AUTH (Keynr 0x%04X: %c sector %d)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum, uKeyNum & 0x0001 ? 'B' : 'A', (uKeyNum - 0x4000) / 2); + break; + case 0xA000: // There are virtual card encryption and MACing keys, but this is NOT their place! + stringdata = "FIRST AUTH(Keynr 0x%04X: Proximity Check Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); + break; + case 0x9000: + switch (uKeyNum & 0xf){ + case 0x0: + stringdata = "FIRST AUTH (Keynr 0x%04X: Card Master Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); + break; + case 0x1: + stringdata = "FIRST AUTH (Keynr 0x%04X: Card Configuration Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); + break; + case 0x2: + stringdata = "FIRST AUTH(Keynr 0x%04X: SL2 Switch Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); + break; + case 0x3: + stringdata = "FIRST AUTH(Keynr 0x%04X: SL3 Switch Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); + break; + case 0x4: + stringdata = "FIRST AUTH(Keynr 0x%04X: SL1 Additional Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); + break; + case 0x6: + stringdata = "FIRST AUTH(Keynr 0x%04X: SL3 Sector Switch Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); + break; + case 0x7: + stringdata = "FIRST AUTH(Keynr 0x%04X: SL1SL3Mix Sector Switch Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); + break; + default: + stringdata = "FIRST AUTH(Keynr 0x%04X: Management Key not identified)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); + break; + } + } } else { snprintf(exp, size, "FIRST AUTH") ; } @@ -1341,7 +1390,7 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { case MFP_WRITEPERSO: if (data_size > 1) { uint16_t uKeyNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "WRITE PERSO (Keynr 0x%04X)", uKeyNum); + snprintf(exp, size, "WRITE PERSO (Addr 0x%04X)", uKeyNum); } else { snprintf(exp, size, "WRITE PERSO"); } @@ -1381,8 +1430,83 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { const char *responseMaced = mfpGetResponseMacedForCode(opcode) ; if (data_size > 1) { - uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "WRITE %s(%u) %s", encrypted, uBlockNum, responseMaced); + uint16_t uBlockNum = MemLeToUint2byte(data); + switch (uBlockNum & 0xF000){ + const char* stringdata; + default: + stringdata = "WRITE %s(%u) %s"; + snprintf(exp, size, stringdata, encrypted, uBlockNum, responseMaced); + break; + case 0x4000: + stringdata = "WRITE (Keynr 0x%04X: %c sector %d)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum, uBlockNum & 0x0001 ? 'B' : 'A', (uBlockNum - 0x4000) / 2); + break; + case 0xA000: // There are virtual card encryption and MACing keys, but this is NOT their place! + stringdata = "WRITE(Keynr 0x%04X: Proximity Check Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); + break; + case 0xB000: + case 0x9000: + if ((uBlockNum & 0x2000) == 0x2000){ + switch (uBlockNum & 0xf){ + default: + stringdata = "WRITE(Config %04X: Unidentified)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); + break; + case 0x0: + stringdata = "WRITE(Config %04X: Config)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); + break; + case 0x1: + stringdata = "WRITE(Config %04X: Virtual Card Installation ID)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); + break; + case 0x2: + stringdata = "WRITE(Config %04X: ATS)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); + break; + case 0x3: + stringdata = "WRITE(Config %04X: Field configuration)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); + break; + } + } else { + switch (uBlockNum & 0xf){ + default: + stringdata = "WRITE(Keynr 0x%04X: Management Key not identified)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); + break; + case 0x0: + stringdata = "WRITE(Keynr 0x%04X: Card Master Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); + break; + case 0x1: + stringdata = "WRITE(Keynr 0x%04X: Card Configuration Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); + break; + case 0x2: + stringdata = "WRITE(Keynr 0x%04X: SL2 Switch Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); + break; + case 0x3: + stringdata = "WRITE(Keynr 0x%04X: SL3 Switch Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); + break; + case 0x4: + stringdata = "WRITE(Keynr 0x%04X: SL1 Additional Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); + break; + case 0x6: + stringdata = "WRITE(Keynr 0x%04X: SL3 Sector Switch Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); + break; + case 0x7: + stringdata = "WRITE(Keynr 0x%04X: SL1SL3Mix Sector Switch Key)"; + snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); + break; + } + } + } } else { snprintf(exp, size, "WRITE %s %s ?", encrypted, responseMaced); } From 192ccf7c3631df0b2e785f8e7066f32ce3a5000c Mon Sep 17 00:00:00 2001 From: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> Date: Sun, 3 Dec 2023 11:22:47 +0300 Subject: [PATCH 0814/1034] New mifare plus data 2 new commands Some argument names updated Signed-off-by: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> --- doc/commands.json | 76 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 65 insertions(+), 11 deletions(-) diff --git a/doc/commands.json b/doc/commands.json index 99785b3cd..89f0ac7fd 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -6247,6 +6247,32 @@ ], "usage": "hf mfp auth [-hv] --ki <hex> --key <hex>" }, + "hf mfp chconf": { + "command": "hf mfp chconf", + "description": "Change the configuration on a Mifare Plus tag. DANGER!", + "notes": [ + "This requires Card Master Key (9000) or Card Configuration Key (9001).", + "Configuration block info can be found below.", + "* Block B000 (00; CMK): Max amount of commands without MAC (byte 0), as well as plain mode access (unknown).", + "* Block B001 (01; CCK): Installation identifier for Virtual Card. Please consult NXP for data.", + "* Block B002 (02; CCK): ATS data.", + "* Block B003 (03; CCK): Use Random ID in SL3, decide whether proximity check is mandatory.", + " * DO NOT WRITE THIS BLOCK UNDER ANY CIRCUMSTANCES! Risk of bricking.", + "More configuration tips to follow. Check JMY600 Series IC Card Module.", + "hf mfp chconf -c 00 -d 10ffffffffffffffffffffffffffffff --key A0A1A2A3A4A5A6A7A0A1A2A3A4A5A6A7 -> Allow 16 commands without MAC in a single transaction." + ], + "offline": false, + "options": [ + "-h, --help This help", + "-v, --verbose Verbose mode", + "--nmr Do not expect MAC in response", + "-c, --conf <hex> Config block number, 0-3", + "-k, --key <hex> Card key, 16 hex bytes", + "--cck Auth as Card Configuration key instead of Card Master Key", + "-d, --data <hex> New configuration data, 16 hex bytes" + ], + "usage": "hf mfp chconf [-hv] [--nmr] -c <hex> [-k <hex>] [--cck] -d <hex>" + }, "hf mfp chk": { "command": "hf mfp chk", "description": "Checks keys on MIFARE Plus card", @@ -6274,6 +6300,26 @@ ], "usage": "hf mfp chk [-habv] [-s <0..255>] [-e <0..255>] [-k <hex>] [-d <fn>] [--pattern1b] [--pattern2b] [--startp2b <pattern>] [--dump]" }, + "hf mfp chkey": { + "command": "hf mfp chkey", + "description": "Change the keys on a Mifare Plus tag", + "notes": [ + "This requires the key that can update the key that you are trying to update.", + "hf mfp chkey --ki 401f -d FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF --key A0A1A2A3A4A5A6A7A0A1A2A3A4A5A6A7 -> Change key B for Sector 15 from MAD to default", + "hf mfp chkey --ki 9000 -d 32F9351A1C02B35FF97E0CA943F814F6 --key FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> Change card master key to custom from default" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-v, --verbose Verbose mode", + "--nmr Do not expect MAC in response", + "--ki <hex> Key Index, 2 hex bytes", + "-k, --key <hex> Current sector key, 16 hex bytes", + "-b, --typeb Sector key is key B", + "-d, --data <hex> New key, 16 hex bytes" + ], + "usage": "hf mfp chkey [-hvb] [--nmr] --ki <hex> [-k <hex>] -d <hex>" + }, "hf mfp commitp": { "command": "hf mfp commitp", "description": "Executes Commit Perso command. Can be used in SL0 mode only. OBS! This command will not be executed if CardConfigKey, CardMasterKey and L3SwitchKey AES keys are not written.", @@ -6436,11 +6482,13 @@ "-v, --verbose Verbose mode", "-n, --count <dec> Blocks count (def: 1)", "-b, --keyb Use key B (def: keyA)", - "-p, --plain Plain communication mode between reader and card", + "-p, --plain Do not use encrypted transmission between reader and card", + "--nmc Do not append MAC to command", + "--nmr Do not expect MAC in reply", "--blk <0..255> Block number", "-k, --key <hex> Key, 16 hex bytes" ], - "usage": "hf mfp rdbl [-hvbp] [-n <dec>] --blk <0..255> [-k <hex>]" + "usage": "hf mfp rdbl [-hvbp] [-n <dec>] [--nmc] [--nmr] --blk <0..255> [-k <hex>]" }, "hf mfp rdsc": { "command": "hf mfp rdsc", @@ -6454,11 +6502,13 @@ "-h, --help This help", "-v, --verbose Verbose mode", "-b, --keyb Use key B (def: keyA)", - "-p, --plain Plain communication mode between reader and card", + "-p, --plain Do not use encrypted transmission between reader and card", + "--nmc Do not append MAC to command", + "--nmr Do not expect MAC in reply", "-s, --sn <0..255> Sector number", "-k, --key <hex> Key, 16 hex bytes" ], - "usage": "hf mfp rdsc [-hvbp] -s <0..255> [-k <hex>]" + "usage": "hf mfp rdsc [-hvbp] [--nmc] [--nmr] -s <0..255> [-k <hex>]" }, "hf mfp wrbl": { "command": "hf mfp wrbl", @@ -6473,26 +6523,30 @@ "-v, --verbose Verbose mode", "-b, --keyb Use key B (def: keyA)", "--blk <0..255> Block number", + "-p, --plain Do not use encrypted transmission", + "--nmr Do not expect MAC in response", "-d, --data <hex> Data, 16 hex bytes", "-k, --key <hex> Key, 16 hex bytes" ], - "usage": "hf mfp wrbl [-hvb] --blk <0..255> -d <hex> [-k <hex>]" + "usage": "hf mfp wrbl [-hvbp] --blk <0..255> [--nmr] -d <hex> [-k <hex>]" }, "hf mfp wrp": { "command": "hf mfp wrp", "description": "Executes Write Perso command. Can be used in SL0 mode only.", "notes": [ - "hf mfp wrp --ki 4000 --key 000102030405060708090a0b0c0d0e0f -> write key (00..0f) to key number 4000", - "hf mfp wrp --ki 4000 -> write default key(0xff..0xff) to key number 4000" + "hf mfp wrp --adr 4000 --data 000102030405060708090a0b0c0d0e0f -> write key (00..0f) to key number 4000", + "hf mfp wrp --adr 4000 -> write default key(0xff..0xff) to key number 4000", + "hf mfp wrp -a b000 -d 20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> allow 32 commands without MAC in configuration block (B000)", + "hf mfp wrp -a 0003 -d 1234561234567F078869B0B1B2B3B4B5 -> write crypto1 keys A: 123456123456 and B: B0B1B2B3B4B5 to block 3" ], "offline": false, "options": [ "-h, --help This help", "-v, --verbose Verbose output", - "--ki <hex> Key number, 2 hex bytes", - "--key <hex> Key, 16 hex bytes" + "-a, --adr <hex> Address, 2 hex bytes", + "-d, --data <hex> Data, 16 hex bytes" ], - "usage": "hf mfp wrp [-hv] --ki <hex> [--key <hex>]" + "usage": "hf mfp wrp [-hv] -a <hex> [-d <hex>]" }, "hf mfu cauth": { "command": "hf mfu cauth", @@ -12068,4 +12122,4 @@ "extracted_by": "PM3Help2JSON v1.00", "extracted_on": "2023-12-01T14:06:40" } -} \ No newline at end of file +} From 29773e92ca903fbfc30ee08195a3307271d23c1c Mon Sep 17 00:00:00 2001 From: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> Date: Sun, 3 Dec 2023 11:24:38 +0300 Subject: [PATCH 0815/1034] Fix typo, correct data 2 new keys (SL3 sector switch; SL1SL3Mix sector switch). "instead of than" - removed the than. Signed-off-by: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> --- client/src/cmdhfmfp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index bf8e0c95a..5d6c94929 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -37,7 +37,7 @@ #include "cmdtrace.h" static const uint8_t mfp_default_key[16] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; -static uint16_t mfp_card_adresses[] = {0x9000, 0x9001, 0x9002, 0x9003, 0x9004, 0xA000, 0xA001, 0xA080, 0xA081, 0xC000, 0xC001}; +static uint16_t mfp_card_adresses[] = {0x9000, 0x9001, 0x9002, 0x9003, 0x9004, 0x9006, 0x9007, 0xA000, 0xA001, 0xA080, 0xA081, 0xC000, 0xC001}; #define MFP_KEY_FILE_SIZE 14 + (2 * 64 * (AES_KEY_LEN + 1)) @@ -1169,7 +1169,7 @@ static int CmdHFMFPChConf(const char *Cmd) { arg_lit0(NULL, "nmr", "Do not expect MAC in response"), arg_int1("c", "conf", "<hex>", "Config block number, 0-3"), arg_str0("k", "key", "<hex>", "Card key, 16 hex bytes"), - arg_lit0(NULL, "cck", "Auth as Card Configuration key instead of than Card Master Key"), + arg_lit0(NULL, "cck", "Auth as Card Configuration key instead of Card Master Key"), arg_str1("d", "data", "<hex>", "New configuration data, 16 hex bytes"), arg_param_end }; From 8300ab923202bfbc651f5590a971291f9f6d65a6 Mon Sep 17 00:00:00 2001 From: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> Date: Sun, 3 Dec 2023 11:28:23 +0300 Subject: [PATCH 0816/1034] 2 new commands We're done for now Signed-off-by: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> --- doc/commands.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/commands.md b/doc/commands.md index ef9dac251..8e6060400 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -561,6 +561,8 @@ Check column "offline" for their availability. |`hf mfp rdbl `|N |`Read blocks from card` |`hf mfp rdsc `|N |`Read sectors from card` |`hf mfp wrbl `|N |`Write block to card` +|`hf mfp chkey `|N |`Change key on card` +|`hf mfp chconf `|N |`Change config on card` |`hf mfp commitp `|N |`Configure security layer (SL1/SL3 mode)` |`hf mfp initp `|N |`Fill all the card's keys in SL0 mode` |`hf mfp wrp `|N |`Write Perso command` From 3523c3df62920da7a18328f2f2e0b91505d7502c Mon Sep 17 00:00:00 2001 From: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> Date: Sun, 3 Dec 2023 11:38:09 +0300 Subject: [PATCH 0817/1034] Added plus code Signed-off-by: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bf4fcc240..e3c4787de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added encryption and other SL3 functions for Mifare Plus - more to come (@team-orangeBlue) - Fixed the corrupted data in real-time sampling (@wh201906) - Added a slider in the plot window for navigation (@wh201906) - Fixed client build bug with Python 3.12 (@wh201906) From b82857f8922110be83ea9b6a80d2dd373ff3cc82 Mon Sep 17 00:00:00 2001 From: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> Date: Sun, 3 Dec 2023 12:05:15 +0300 Subject: [PATCH 0818/1034] Compilation workaround May be reverted if fails Signed-off-by: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> --- client/src/cmdhflist.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index aacbb4085..ccedc5c66 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -1339,8 +1339,7 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); break; case 0x4000: - stringdata = "FIRST AUTH (Keynr 0x%04X: %c sector %d)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum, uKeyNum & 0x0001 ? 'B' : 'A', (uKeyNum - 0x4000) / 2); + snprintf(exp, size, "FIRST AUTH (Keynr 0x%04X: %c sector %d)", uKeyNum, uKeyNum & 0x0001 ? 'B' : 'A', (uKeyNum - 0x4000) / 2); break; case 0xA000: // There are virtual card encryption and MACing keys, but this is NOT their place! stringdata = "FIRST AUTH(Keynr 0x%04X: Proximity Check Key)"; @@ -1438,8 +1437,7 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { snprintf(exp, size, stringdata, encrypted, uBlockNum, responseMaced); break; case 0x4000: - stringdata = "WRITE (Keynr 0x%04X: %c sector %d)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum, uBlockNum & 0x0001 ? 'B' : 'A', (uBlockNum - 0x4000) / 2); + snprintf(exp, size, "WRITE (Keynr 0x%04X: %c sector %d)", uBlockNum, uBlockNum & 0x0001 ? 'B' : 'A', (uBlockNum - 0x4000) / 2); break; case 0xA000: // There are virtual card encryption and MACing keys, but this is NOT their place! stringdata = "WRITE(Keynr 0x%04X: Proximity Check Key)"; From 9b752c6ecba1c2a03792b31e1ccef24c6e499a01 Mon Sep 17 00:00:00 2001 From: Anonymous <hazardousvoltage312@gmail.com> Date: Sun, 3 Dec 2023 08:44:06 -0500 Subject: [PATCH 0819/1034] hf_unisniff: rename "ask" to "user" to avoid confusion with "ASK" sniffing --- armsrc/Standalone/hf_unisniff.c | 12 ++++++------ .../4_Advanced-compilation-parameters.md | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/armsrc/Standalone/hf_unisniff.c b/armsrc/Standalone/hf_unisniff.c index c8a79f99b..a39cd7277 100644 --- a/armsrc/Standalone/hf_unisniff.c +++ b/armsrc/Standalone/hf_unisniff.c @@ -56,9 +56,9 @@ * append = append to existing file, create if not existing. * none = do not save to SPIFFS, leave in trace buffer only. * - * protocol = [14a|14b|15|ask] + * protocol = [14a|14b|15|user] * which protocol to sniff. If you choose a protocol it will go directly - * to work. If you choose 'ask' you may select the protocol at the start + * to work. If you choose 'user' you may select the protocol at the start * of each session. * * To retrieve trace data from flash: @@ -120,12 +120,12 @@ #define HF_UNISNIFF_CONFIG "hf_unisniff.conf" #define HF_UNISNIFF_CONFIG_SIZE 128 -#define HF_UNISNIFF_PROTOCOLS {"14a","14b","15", "ask"} // The logic requires ASK be last. +#define HF_UNISNIFF_PROTOCOLS {"14a","14b","15", "user"} // The logic requires USER be last. #define HF_UNISNIFF_NUM_PROTOCOLS 4 #define HF_UNISNIFF_PROTO_14a 0 #define HF_UNISNIFF_PROTO_14b 1 #define HF_UNISNIFF_PROTO_15 2 -#define HF_UNISNIFF_PROTO_ASK HF_UNISNIFF_NUM_PROTOCOLS-1 +#define HF_UNISNIFF_PROTO_USER HF_UNISNIFF_NUM_PROTOCOLS-1 #define HF_UNISNIFF_SAVE_MODE HF_UNISNIFF_SAVE_MODE_NEW // Default, override in .conf #define HF_UNISNIFF_SAVE_MODE_NEW 0 @@ -225,7 +225,7 @@ void RunMod(void) { } #endif - if (sniff_protocol >= HF_UNISNIFF_PROTO_ASK) { + if (sniff_protocol >= HF_UNISNIFF_PROTO_USER) { Dbprintf("[!] Protocol undefined, going to prompt loop"); sniff_protocol = default_sniff_protocol; // Default to compile-time setting. for (;;) { @@ -243,7 +243,7 @@ void RunMod(void) { int button_pressed = BUTTON_HELD(1000); if (button_pressed == BUTTON_SINGLE_CLICK) { sniff_protocol++; - if (sniff_protocol >= HF_UNISNIFF_PROTO_ASK) sniff_protocol=0; + if (sniff_protocol >= HF_UNISNIFF_PROTO_USER) sniff_protocol=0; SpinDelay(100); Dbprintf("Selected protocol: '%s'", protocols[sniff_protocol]); } else if (button_pressed == BUTTON_HOLD) { diff --git a/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md b/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md index 823e527da..32c7e4116 100644 --- a/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md +++ b/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md @@ -133,6 +133,7 @@ Here are the supported values you can assign to `STANDALONE` in `Makefile.platfo | HF_REBLAY | 14A relay over BT - Salvador Mendoza | HF_TCPRST | IKEA Rothult ST25TA, Standalone Master Key Dump/Emulation - Nick Draffen | HF_TMUDFORD | Read and emulate ISO15693 card UID - Tim Mudford +| HF_UNISNIFF | Combined 14a/14b/15 sniffer with runtime selection & extra save options | HF_YOUNG | Mifare sniff/simulation - Craig Young | DANKARMULTI | Standalone mode that bakes together multiple other standalone modes. - dankar From 3d984559a19539a584533f14484e2f47d05a91a9 Mon Sep 17 00:00:00 2001 From: Anonymous <hazardousvoltage312@gmail.com> Date: Sun, 3 Dec 2023 08:52:47 -0500 Subject: [PATCH 0820/1034] CHANGELOG.md: add standalone hf_unisniff --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3c4787de..c180020aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `hf 14a info` - now reads and prints QL88 sigantures (@iceman1001) - Fixed `hf iclass dump` truncating AA2 blocks and improve reliability (@nvx) - Added some info about UMC in "doc/magic_cards_notes.md" (@temskiy) + - Added standalone mode `hf_unisniff` combining 14a/14b/15 sniffing with extra flash save options (@hazardousvoltage) ## [Faraday.4.17511][2023-11-13] - Fixed Python support of `experimental_client_with_swig` (@doegox) From 75d0601318066c87127d48087b9b8e1d0af7ff88 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 5 Dec 2023 12:08:09 +0100 Subject: [PATCH 0821/1034] fix decrypted output --- client/src/cmdtrace.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 9182608ae..aa1724a03 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -912,22 +912,32 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr size_t mfDataLen = 0; if (DecodeMifareData(frame, data_len, parityBytes, hdr->isResponse, mfData, &mfDataLen, mfDicKeys, mfDicKeysCount)) { memset(explanation, 0x00, sizeof(explanation)); - annotateIso14443a(explanation, sizeof(explanation), mfData, mfDataLen, hdr->isResponse); + + if (protocol == PROTO_MFPLUS) { + annotateMfPlus(explanation, sizeof(explanation), mfData, mfDataLen); + } else { + annotateIso14443a(explanation, sizeof(explanation), mfData, mfDataLen, hdr->isResponse); + } uint8_t crcc = iso14443A_CRC_check(hdr->isResponse, mfData, mfDataLen); - //iceman: colorise crc bytes here will need a refactor of code from above. - if (hdr->isResponse) { - PrintAndLogEx(NORMAL, " | | * |%-*s | %-4s| %s", - str_padder, - sprint_hex_inrow_spaces(mfData, mfDataLen, 2), - (crcc == 0 ? _RED_(" !! ") : (crcc == 1 ? _GREEN_(" ok ") : " ")), - explanation); - } else { - PrintAndLogEx(NORMAL, " | | * |" _YELLOW_("%-*s")" | " _YELLOW_("%s") "| " _YELLOW_("%s"), - str_padder, - sprint_hex_inrow_spaces(mfData, mfDataLen, 2), - (crcc == 0 ? _RED_(" !! ") : (crcc == 1 ? _GREEN_(" ok ") : " ")), - explanation); + // iceman: colorise crc bytes here will need a refactor of code from above. + for (int j = 0; j < mfDataLen; j += TRACE_MAX_HEX_BYTES) { + + int plen = MIN((mfDataLen - j), TRACE_MAX_HEX_BYTES); + + if (hdr->isResponse) { + PrintAndLogEx(NORMAL, " | | * |%-*s | %-4s| %s", + str_padder, + sprint_hex_inrow_spaces(mfData + j, plen, 2), + (crcc == 0 ? _RED_(" !! ") : (crcc == 1 ? _GREEN_(" ok ") : " ")), + explanation); + } else { + PrintAndLogEx(NORMAL, " | | * |" _YELLOW_("%-*s")" | " _YELLOW_("%s") "| " _YELLOW_("%s"), + str_padder, + sprint_hex_inrow_spaces(mfData + j, plen, 2), + (crcc == 0 ? _RED_(" !! ") : (crcc == 1 ? _GREEN_(" ok ") : " ")), + explanation); + } } } } From 7ef5fe14bb07b6dc257542313fc5025752fc8e44 Mon Sep 17 00:00:00 2001 From: Anonymous <hazardousvoltage312@gmail.com> Date: Wed, 6 Dec 2023 02:36:14 -0500 Subject: [PATCH 0822/1034] cmdtrace.c: fix segfault when trying to list trace after loading fails --- client/src/cmdtrace.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 9182608ae..da82e3834 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -1094,8 +1094,9 @@ static int CmdTraceLoad(const char *Cmd) { CLIParserFree(ctx); if (gs_trace) { - free(gs_trace); + free(gs_trace); // maybe better to not clobber this until we have successful load? gs_trace = NULL; + gs_traceLen = 0; } size_t len = 0; From 6b8a269671fd35447dcd3c8436b73583a5613ab9 Mon Sep 17 00:00:00 2001 From: Anonymous <hazardousvoltage312@gmail.com> Date: Wed, 6 Dec 2023 02:52:15 -0500 Subject: [PATCH 0823/1034] cmdtrace.c: fix segfault when trying to list trace after loading fails, part deux --- client/src/cmdtrace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 487ac47a3..8cc8795f3 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -1293,7 +1293,7 @@ int CmdTraceList(const char *Cmd) { if (use_buffer == false) { download_trace(); - } else if (gs_traceLen == 0) { + } else if (gs_traceLen == 0 || gs_trace ==NULL) { PrintAndLogEx(FAILED, "You requested a trace list in offline mode but there is no trace."); PrintAndLogEx(FAILED, "Consider using " _YELLOW_("`trace load`") " or removing parameter " _YELLOW_("`-1`")); return PM3_EINVARG; From cc73449c40af4b077e4e6379b9087b8e99f82d14 Mon Sep 17 00:00:00 2001 From: datatags <datatags@users.noreply.github.com> Date: Wed, 6 Dec 2023 10:19:22 -0800 Subject: [PATCH 0824/1034] Interactive reader attack sim now returns --- client/src/cmdhfmf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 935d1cb82..cf7339d5a 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3890,6 +3890,7 @@ static int CmdHF14AMfSim(const char *Cmd) { nonces_t data[1]; memcpy(data, resp.data.asBytes, sizeof(data)); readerAttack(k_sector, k_sectors_cnt, data[0], setEmulatorMem, verbose); + break; } //iceman: readerAttack call frees k_sector. this call below is useless. showSectorTable(k_sector, k_sectors_cnt); From e2f144c6dd8426b72782aa0823c18d6933161efe Mon Sep 17 00:00:00 2001 From: datatags <datatags@users.noreply.github.com> Date: Wed, 6 Dec 2023 12:19:25 -0800 Subject: [PATCH 0825/1034] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c180020aa..82af9ead6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Fixed `hf iclass dump` truncating AA2 blocks and improve reliability (@nvx) - Added some info about UMC in "doc/magic_cards_notes.md" (@temskiy) - Added standalone mode `hf_unisniff` combining 14a/14b/15 sniffing with extra flash save options (@hazardousvoltage) + - Fixed `hf mf sim -ix` never returning console (@datatags) ## [Faraday.4.17511][2023-11-13] - Fixed Python support of `experimental_client_with_swig` (@doegox) From fdc1c9d8646bd183b41890f7a419daaac0582b95 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 6 Dec 2023 22:16:53 +0100 Subject: [PATCH 0826/1034] text --- armsrc/Standalone/hf_aveful.c | 2 +- armsrc/Standalone/hf_craftbyte.c | 2 +- armsrc/Standalone/hf_tmudford.c | 2 +- client/lualibs/hf_reader.lua | 2 +- client/lualibs/read14a.lua | 2 +- client/lualibs/read15.lua | 2 +- client/src/cmdanalyse.c | 5 +++++ client/src/cmdhf.c | 5 +++-- client/src/cmdhf14a.c | 2 +- client/src/cmdhf14b.c | 2 +- client/src/cmdhf15.c | 4 ++-- client/src/cmdhffelica.c | 6 +++--- client/src/cmdhfjooki.c | 2 +- client/src/cmdhflegic.c | 2 +- client/src/cmdhfmf.c | 4 ++-- client/src/cmdhfthinfilm.c | 2 +- client/src/cmdhfvas.c | 2 +- client/src/cmdlf.c | 5 +++-- client/src/cmdlfawid.c | 4 ++-- client/src/cmdlfem4x50.c | 2 +- client/src/cmdlfem4x70.c | 2 +- client/src/cmdlfhid.c | 4 ++-- client/src/cmdlfidteck.c | 2 +- client/src/cmdlfindala.c | 4 ++-- client/src/cmdlfio.c | 4 ++-- client/src/cmdsmartcard.c | 3 ++- client/src/emv/cmdemv.c | 2 +- 27 files changed, 44 insertions(+), 36 deletions(-) diff --git a/armsrc/Standalone/hf_aveful.c b/armsrc/Standalone/hf_aveful.c index 7363a952e..a7d96a44e 100644 --- a/armsrc/Standalone/hf_aveful.c +++ b/armsrc/Standalone/hf_aveful.c @@ -250,7 +250,7 @@ void RunMod(void) { } else if (state == STATE_EMUL) { uint16_t flags = FLAG_7B_UID_IN_DATA; - Dbprintf("Starting simulation, press pm3-button to stop and go back to search state."); + Dbprintf("Starting simulation, press " _GREEN_("pm3 button") " to stop and go back to search state."); SimulateIso14443aTag(7, flags, card.uid, 0); // Go back to search state if user presses pm3-button diff --git a/armsrc/Standalone/hf_craftbyte.c b/armsrc/Standalone/hf_craftbyte.c index 80733a3cc..41d9a3503 100644 --- a/armsrc/Standalone/hf_craftbyte.c +++ b/armsrc/Standalone/hf_craftbyte.c @@ -91,7 +91,7 @@ void RunMod(void) { continue; } - Dbprintf("Starting simulation, press pm3-button to stop and go back to search state."); + Dbprintf("Starting simulation, press " _GREEN_("pm3 button") " to stop and go back to search state."); if (card.sak == 0x08 && card.atqa[0] == 0x04 && card.atqa[1] == 0) { DbpString("Mifare Classic 1k"); SimulateIso14443aTag(1, flags, card.uid, 0); diff --git a/armsrc/Standalone/hf_tmudford.c b/armsrc/Standalone/hf_tmudford.c index a945a49ec..0f20a5b86 100644 --- a/armsrc/Standalone/hf_tmudford.c +++ b/armsrc/Standalone/hf_tmudford.c @@ -74,7 +74,7 @@ void RunMod(void) { } } else if (state == STATE_EMUL) { Iso15693InitTag(); - Dbprintf("Starting simulation, press pm3-button to stop and go back to search state."); + Dbprintf("Starting simulation, press " _GREEN_("pm3 button") " to stop and go back to search state."); // default block size is 4 SimTagIso15693(card.uid, 4); diff --git a/client/lualibs/hf_reader.lua b/client/lualibs/hf_reader.lua index f49d587f2..894a0d8ef 100644 --- a/client/lualibs/hf_reader.lua +++ b/client/lualibs/hf_reader.lua @@ -15,7 +15,7 @@ local reader15693 = require('read15') -- @return if successful: an table containing card info -- @return if unsuccessful : nil, error local function waitForTag() - print("Waiting for card... press Enter to quit") + print("Waiting for card... press <Enter> to quit") local readers = {reader14443A, reader14443B, reader15693} local i = 0; while not core.kbd_enter_pressed() do diff --git a/client/lualibs/read14a.lua b/client/lualibs/read14a.lua index c4ef3caa7..782fca6d5 100644 --- a/client/lualibs/read14a.lua +++ b/client/lualibs/read14a.lua @@ -124,7 +124,7 @@ end -- @return if successful: an table containing card info -- @return if unsuccessful : nil, error local function waitFor14443a() - print('Waiting for card... press Enter to quit') + print('Waiting for card... press <Enter> to quit') while not core.kbd_enter_pressed() do res, err = read14443a() if res then return res end diff --git a/client/lualibs/read15.lua b/client/lualibs/read15.lua index feb35d3eb..9d4ca589d 100644 --- a/client/lualibs/read15.lua +++ b/client/lualibs/read15.lua @@ -133,7 +133,7 @@ end -- @return if successful: an table containing card info -- @return if unsuccessful : nil, error local function waitFor15693() - print('Waiting for card... press Enter to quit') + print('Waiting for card... press <Enter> to quit') while not core.kbd_enter_pressed() do res, err = read15693() if res then return res end diff --git a/client/src/cmdanalyse.c b/client/src/cmdanalyse.c index e8b925292..a6a4b737c 100644 --- a/client/src/cmdanalyse.c +++ b/client/src/cmdanalyse.c @@ -969,6 +969,11 @@ static int CmdAnalyseFreq(const char *Cmd) { PrintAndLogEx(INFO, " 134 kHz has %f m, rf range %f m", len_134, rf_range_134); PrintAndLogEx(INFO, " 13.56 mHz has %f m, rf range %f m", len_1356, rf_range_1356); + PrintAndLogEx(INFO, "Antenna lengths"); + PrintAndLogEx(INFO, " 125 kHz 1/2 = %f m, 1/4 = %f m", (len_125 / 2), (len_125 / 4) ); + PrintAndLogEx(INFO, " 134 kHz 1/2 = %f m, 1/4 = %f m", (len_134 / 2), (len_134 / 4) ); + PrintAndLogEx(INFO, " 13.56 mHz 1/2 = %f m, 1/4 = %f m", (len_1356 / 2), (len_1356 / 4)); + if (F == 0 && C == 0 && L == 0) return PM3_SUCCESS; diff --git a/client/src/cmdhf.c b/client/src/cmdhf.c index ef94adf41..366ba219d 100644 --- a/client/src/cmdhf.c +++ b/client/src/cmdhf.c @@ -216,7 +216,7 @@ int CmdHFTune(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf tune", "Continuously measure HF antenna tuning.\n" - "Press button or <Enter> to interrupt.", + "Press pm3 button or <Enter> to interrupt.", "hf tune\n" "hf tune --mix" ); @@ -249,7 +249,8 @@ int CmdHFTune(const char *Cmd) { if (is_value) style = STYLE_VALUE; - PrintAndLogEx(INFO, "Measuring HF antenna, click " _GREEN_("pm3 button") " or press " _GREEN_("Enter") " to exit"); + PrintAndLogEx(INFO, "Measuring HF antenna"); + PrintAndLogEx(INFO, "click " _GREEN_("pm3 button") " or press " _GREEN_("<Enter>") " to exit"); PacketResponseNG resp; clearCommandBuffer(); diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index a39092fe8..81bc89768 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -837,7 +837,7 @@ int CmdHF14ASim(const char *Cmd) { sector_t *k_sector = NULL; size_t k_sectors_cnt = MIFARE_4K_MAXSECTOR; - PrintAndLogEx(INFO, "Press pm3-button to abort simulation"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " to abort simulation"); bool keypress = kbd_enter_pressed(); while (keypress == false) { diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 5ddd150cb..a5b0ed00d 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -239,7 +239,7 @@ static int CmdHF14BSim(const char *Cmd) { } PrintAndLogEx(INFO, "Simulate with PUPI : " _GREEN_("%s"), sprint_hex_inrow(pupi, sizeof(pupi))); - PrintAndLogEx(INFO, "Press pm3-button to abort simulation"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " to abort simulation"); clearCommandBuffer(); SendCommandNG(CMD_HF_ISO14443B_SIMULATE, pupi, sizeof(pupi)); return PM3_SUCCESS; diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 8769a6662..065f4e064 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -1024,7 +1024,7 @@ static int CmdHF15Reader(const char *Cmd) { CLIParserFree(ctx); if (cm) { - PrintAndLogEx(INFO, "press " _GREEN_("`Enter`") " to exit"); + PrintAndLogEx(INFO, "press " _GREEN_("<Enter>") " to exit"); } readHF15Uid(cm, true); return PM3_SUCCESS; @@ -1321,7 +1321,7 @@ static int CmdHF15FindAfi(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, true); CLIParserFree(ctx); - PrintAndLogEx(INFO, "click " _GREEN_("pm3 button") " or press " _GREEN_("Enter") " to exit"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " or press " _GREEN_("<Enter>") " to exit"); clearCommandBuffer(); PacketResponseNG resp; SendCommandMIX(CMD_HF_ISO15693_FINDAFI, strtol(Cmd, NULL, 0), 0, 0, NULL, 0); diff --git a/client/src/cmdhffelica.c b/client/src/cmdhffelica.c index 230628c51..5ba3e8116 100644 --- a/client/src/cmdhffelica.c +++ b/client/src/cmdhffelica.c @@ -1783,7 +1783,7 @@ static int CmdHFFelicaSniff(const char *Cmd) { PrintAndLogEx(INFO, "Sniff Felica, getting first %" PRIu32 " frames, skipping after %" PRIu32 " triggers", payload.samples, payload.triggers); - PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " or pm3-button to abort sniffing"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " or press " _GREEN_("<Enter>") " to abort sniffing"); clearCommandBuffer(); SendCommandNG(CMD_HF_FELICA_SNIFF, (uint8_t *)&payload, sizeof(payload)); PacketResponseNG resp; @@ -1830,7 +1830,7 @@ static int CmdHFFelicaSimLite(const char *Cmd) { CLIParserFree(ctx); PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " or pm3-button to abort simulation"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " or press " _GREEN_("<Enter>") " to abort simulation"); clearCommandBuffer(); SendCommandNG(CMD_HF_FELICALITE_SIMULATE, payload.uid, sizeof(payload)); @@ -2035,7 +2035,7 @@ static int CmdHFFelicaDumpLite(const char *Cmd) { SendCommandNG(CMD_HF_FELICALITE_DUMP, NULL, 0); PacketResponseNG resp; - PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " or pm3-button to abort dumping"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " or press " _GREEN_("<Enter>") " to abort dumping"); uint8_t timeout = 0; while (WaitForResponseTimeout(CMD_ACK, &resp, 2000) == false) { diff --git a/client/src/cmdhfjooki.c b/client/src/cmdhfjooki.c index daf8530b0..261a6194a 100644 --- a/client/src/cmdhfjooki.c +++ b/client/src/cmdhfjooki.c @@ -575,7 +575,7 @@ static int CmdHF14AJookiSim(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, "Starting simulating"); - PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " or pm3-button to abort simulation"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " or press " _GREEN_("<Enter>") " to abort simulation"); for (;;) { if (kbd_enter_pressed()) { SendCommandNG(CMD_BREAK_LOOP, NULL, 0); diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 2b9101516..f7c44ecbc 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -556,7 +556,7 @@ static int CmdLegicSim(const char *Cmd) { SendCommandNG(CMD_HF_LEGIC_SIMULATE, (uint8_t *)&payload, sizeof(payload)); PacketResponseNG resp; - PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " or pm3-button to abort simulation"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " or press " _GREEN_("<Enter>") " to abort simulation"); for (;;) { if (kbd_enter_pressed()) { SendCommandNG(CMD_BREAK_LOOP, NULL, 0); diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index cf7339d5a..85ecd8033 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3872,7 +3872,7 @@ static int CmdHF14AMfSim(const char *Cmd) { PacketResponseNG resp; if (flags & FLAG_INTERACTIVE) { - PrintAndLogEx(INFO, "Press pm3-button or send another cmd to abort simulation"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " or send another cmd to abort simulation"); sector_t *k_sector = NULL; @@ -3896,7 +3896,7 @@ static int CmdHF14AMfSim(const char *Cmd) { showSectorTable(k_sector, k_sectors_cnt); } else { - PrintAndLogEx(INFO, "Press pm3-button to abort simulation"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " to abort simulation"); } return PM3_SUCCESS; } diff --git a/client/src/cmdhfthinfilm.c b/client/src/cmdhfthinfilm.c index 64b03a819..40e43519e 100644 --- a/client/src/cmdhfthinfilm.c +++ b/client/src/cmdhfthinfilm.c @@ -182,7 +182,7 @@ int CmdHfThinFilmSim(const char *Cmd) { clearCommandBuffer(); SendCommandNG(CMD_HF_THINFILM_SIMULATE, (uint8_t *)&data, data_len); PacketResponseNG resp; - PrintAndLogEx(SUCCESS, "press pm3-button to abort simulation"); + PrintAndLogEx(SUCCESS, "press " _GREEN_("pm3 button") " to abort simulation"); int ret; while (!(ret = kbd_enter_pressed())) { diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index 0c6cc5df8..9d4abbb6b 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -465,7 +465,7 @@ static int CmdVASReader(const char *Cmd) { PrintAndLogEx(INFO, "Requesting pass type id... " _GREEN_("%s"), sprint_ascii((uint8_t *) pid, pidlen)); if (continuous) { - PrintAndLogEx(INFO, "Press " _GREEN_("Enter") " to exit"); + PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " to exit"); } uint8_t pidhash[32] = {0}; diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 8533e7ac8..95e71f40b 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -74,7 +74,7 @@ static int CmdHelp(const char *Cmd); // if key event, send break loop cmd to Pm3 int lfsim_wait_check(uint32_t cmd) { PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " or pm3-button to abort simulation"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " or press " _GREEN_("<Enter>") " to abort simulation"); for (;;) { if (kbd_enter_pressed()) { @@ -159,7 +159,8 @@ static int CmdLFTune(const char *Cmd) { if (is_value) style = STYLE_VALUE; - PrintAndLogEx(INFO, "Measuring LF antenna at " _YELLOW_("%.2f") " kHz, click " _GREEN_("pm3 button") " or press " _GREEN_("Enter") " to exit", LF_DIV2FREQ(divisor)); + PrintAndLogEx(INFO, "Measuring LF antenna at " _YELLOW_("%.2f") " kHz", LF_DIV2FREQ(divisor)); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " or press " _GREEN_("<Enter>") " to exit"); uint8_t params[] = {1, 0}; params[1] = divisor; diff --git a/client/src/cmdlfawid.c b/client/src/cmdlfawid.c index 5d735a650..bdb8d008e 100644 --- a/client/src/cmdlfawid.c +++ b/client/src/cmdlfawid.c @@ -132,7 +132,7 @@ static int CmdAWIDWatch(const char *Cmd) { CLIParserFree(ctx); PrintAndLogEx(SUCCESS, "Watching for AWID cards - place tag on antenna"); - PrintAndLogEx(INFO, "Press pm3-button to stop reading cards"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " to stop reading cards"); clearCommandBuffer(); SendCommandNG(CMD_LF_AWID_WATCH, NULL, 0); return lfsim_wait_check(CMD_LF_AWID_WATCH); @@ -524,7 +524,7 @@ static int CmdAWIDBrute(const char *Cmd) { } PrintAndLogEx(SUCCESS, "Bruteforceing AWID %d reader", fmtlen); - PrintAndLogEx(SUCCESS, "Press pm3-button to abort simulation or press Enter"); + PrintAndLogEx(SUCCESS, "Press " _GREEN_("pm3 button") " to abort simulation or press " _GREEN_("<Enter>")); uint16_t up = cn; uint16_t down = cn; diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index b94acfcc5..fdcf48a99 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -1231,7 +1231,7 @@ int CmdEM4x50Sim(const char *Cmd) { clearCommandBuffer(); SendCommandNG(CMD_LF_EM4X50_SIM, (uint8_t *)&password, sizeof(password)); - PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " or pm3-button to abort simulation"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " or press " _GREEN_("<Enter>") " to abort simulation"); PacketResponseNG resp; // init to ZERO diff --git a/client/src/cmdlfem4x70.c b/client/src/cmdlfem4x70.c index c1e2aff03..574b30e20 100644 --- a/client/src/cmdlfem4x70.c +++ b/client/src/cmdlfem4x70.c @@ -282,7 +282,7 @@ int CmdEM4x70Brute(const char *Cmd) { return PM3_EINVARG; } - PrintAndLogEx(INFO, "click " _GREEN_("pm3 button") " or press " _GREEN_("Enter") " to exit"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " or press " _GREEN_("<Enter>") " to exit"); clearCommandBuffer(); PacketResponseNG resp; SendCommandNG(CMD_LF_EM4X70_BRUTE, (uint8_t *)&etd, sizeof(etd)); diff --git a/client/src/cmdlfhid.c b/client/src/cmdlfhid.c index 0526b16db..150df44c1 100644 --- a/client/src/cmdlfhid.c +++ b/client/src/cmdlfhid.c @@ -239,7 +239,7 @@ static int CmdHIDWatch(const char *Cmd) { CLIParserFree(ctx); PrintAndLogEx(SUCCESS, "Watching for HID Prox cards - place tag on antenna"); - PrintAndLogEx(INFO, "Press pm3-button to stop reading cards"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " to stop reading cards"); clearCommandBuffer(); SendCommandNG(CMD_LF_HID_WATCH, NULL, 0); return lfsim_wait_check(CMD_LF_HID_WATCH); @@ -592,7 +592,7 @@ static int CmdHIDBrute(const char *Cmd) { } PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "Started bruteforcing HID Prox reader"); - PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " or pm3-button to abort simulation"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " or press " _GREEN_("<Enter>") " to abort simulation"); PrintAndLogEx(NORMAL, ""); // copy values to low. card_low = card_hi; diff --git a/client/src/cmdlfidteck.c b/client/src/cmdlfidteck.c index 3dae4f0d1..e39354ef8 100644 --- a/client/src/cmdlfidteck.c +++ b/client/src/cmdlfidteck.c @@ -214,7 +214,7 @@ static int CmdIdteckSim(const char *Cmd) { } PrintAndLogEx(SUCCESS, "Simulating Idteck - raw " _YELLOW_("%s"), sprint_hex_inrow(raw, raw_len)); - PrintAndLogEx(SUCCESS, "Press pm3-button to abort simulation or run another command"); + PrintAndLogEx(SUCCESS, "Press " _GREEN_("pm3 button") " to abort simulation or run another command"); PrintAndLogEx(NORMAL, ""); lf_psksim_t *payload = calloc(1, sizeof(lf_psksim_t) + sizeof(bs)); diff --git a/client/src/cmdlfindala.c b/client/src/cmdlfindala.c index 5417bf158..ec61b938a 100644 --- a/client/src/cmdlfindala.c +++ b/client/src/cmdlfindala.c @@ -752,7 +752,7 @@ static int CmdIndalaSim(const char *Cmd) { // lf simpsk -1 -c 32 --fc 2 -d 0102030405060708 - PrintAndLogEx(SUCCESS, "Press pm3-button to abort simulation or run another command"); + PrintAndLogEx(SUCCESS, "Press " _GREEN_("pm3 button") " to abort simulation or run another command"); // indala PSK, clock 32, carrier 0 lf_psksim_t *payload = calloc(1, sizeof(lf_psksim_t) + sizeof(bs)); @@ -1015,7 +1015,7 @@ static int CmdIndalaBrute(const char *Cmd) { } PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "Started brute-forcing INDALA Prox reader"); - PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " or pm3-button to abort simulation"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " or press " _GREEN_("<Enter>") " to abort simulation"); PrintAndLogEx(NORMAL, ""); // main loop diff --git a/client/src/cmdlfio.c b/client/src/cmdlfio.c index 5ef0df99a..11027266b 100644 --- a/client/src/cmdlfio.c +++ b/client/src/cmdlfio.c @@ -55,7 +55,7 @@ static int CmdIOProxWatch(const char *Cmd) { CLIParserFree(ctx); PrintAndLogEx(SUCCESS, "Watching for IO Prox cards - place tag on antenna"); - PrintAndLogEx(INFO, "Press pm3-button to stop reading cards"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " to stop reading cards"); clearCommandBuffer(); SendCommandNG(CMD_LF_IO_WATCH, NULL, 0); return lfsim_wait_check(CMD_LF_IO_WATCH); @@ -237,7 +237,7 @@ static int CmdIOProxSim(const char *Cmd) { } PrintAndLogEx(SUCCESS, "Simulating ioProx version: " _YELLOW_("%u") " FC: " _YELLOW_("%u (0x%02x)") " CN: " _YELLOW_("%u"), version, fc, fc, cn); - PrintAndLogEx(SUCCESS, "Press pm3-button to abort simulation or run another command"); + PrintAndLogEx(SUCCESS, "Press " _GREEN_("pm3 button") " to abort simulation or run another command"); uint8_t bs[64]; memset(bs, 0x00, sizeof(bs)); diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index 933d34a4f..46a5a9448 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -1264,7 +1264,8 @@ static int CmdRelay(const char *Cmd) { mbedtls_net_context netCtx; mbedtls_net_init(&netCtx); - PrintAndLogEx(INFO, "Relaying pm3 to host OS pcsc daemon. Press " _GREEN_("Enter") " to exit"); + PrintAndLogEx(INFO, "Relaying PM3 to host OS pcsc daemon"); + PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " to exit"); uint8_t cmdbuf[512] = {0}; iso14a_card_select_t selectedCard14a; diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 47cd6de55..56a07386f 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -2716,7 +2716,7 @@ static int CmdEMVReader(const char *Cmd) { CLIParserFree(ctx); if (continuous) { - PrintAndLogEx(INFO, "Press " _GREEN_("Enter") " to exit"); + PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " to exit"); } uint8_t AID[APDU_AID_LEN] = {0}; From d230b770b34b01e5b753081244c3fc9245d6e34f Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 6 Dec 2023 22:18:47 +0100 Subject: [PATCH 0827/1034] text --- client/src/mifare/mifarehost.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 040d24df9..f28f38aaa 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -52,7 +52,7 @@ int mfDarkside(uint8_t blockno, uint8_t key_type, uint64_t *key) { // message PrintAndLogEx(INFO, "Expected execution time is about 25seconds on average"); - PrintAndLogEx(INFO, "Press pm3-button to abort"); + PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " to abort"); while (true) { clearCommandBuffer(); @@ -1180,8 +1180,9 @@ uint32_t cuid = 0; // uid part used for crypto1. void mf_crypto1_decrypt(struct Crypto1State *pcs, uint8_t *data, int len, bool isEncrypted) { if (len != 1) { - for (int i = 0; i < len; i++) + for (int i = 0; i < len; i++) { data[i] = crypto1_byte(pcs, 0x00, isEncrypted) ^ data[i]; + } } else { uint8_t bt = 0; bt |= (crypto1_bit(pcs, 0, isEncrypted) ^ BIT(data[0], 0)) << 0; @@ -1193,11 +1194,12 @@ void mf_crypto1_decrypt(struct Crypto1State *pcs, uint8_t *data, int len, bool i } int tryDecryptWord(uint32_t nt, uint32_t ar_enc, uint32_t at_enc, uint8_t *data, int len) { + PrintAndLogEx(SUCCESS, "encrypted data... %s", sprint_hex(data, len)); - struct Crypto1State *s; uint32_t ks2 = ar_enc ^ prng_successor(nt, 64); uint32_t ks3 = at_enc ^ prng_successor(nt, 96); - s = lfsr_recovery64(ks2, ks3); + + struct Crypto1State *s = lfsr_recovery64(ks2, ks3); mf_crypto1_decrypt(s, data, len, false); PrintAndLogEx(SUCCESS, "decrypted data... " _YELLOW_("%s"), sprint_hex(data, len)); PrintAndLogEx(NORMAL, ""); @@ -1261,8 +1263,9 @@ int detect_classic_nackbug(bool verbose) { PrintAndLogEx(INFO, "Checking for NACK bug"); - if (verbose) - PrintAndLogEx(SUCCESS, "press pm3-button on the Proxmark3 device to abort both Proxmark3 and client.\n"); + if (verbose) { + PrintAndLogEx(SUCCESS, "press " _GREEN_("pm3 button") " to abort both Proxmark3 and client\n"); + } PrintAndLogEx(INFO, "." NOLF); From 89bcdcddbceb75cc00898658eb773bb65663e1ad Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 6 Dec 2023 22:42:16 +0100 Subject: [PATCH 0828/1034] style --- armsrc/mifareutil.c | 2 +- client/src/cmdhf14a.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c index 415c01183..581efda8f 100644 --- a/armsrc/mifareutil.c +++ b/armsrc/mifareutil.c @@ -142,7 +142,7 @@ int mifare_classic_auth(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, return mifare_classic_authex(pcs, uid, blockNo, keyType, ui64Key, isNested, NULL, NULL); } int mifare_classic_authex(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t keyType, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *timing) { - return mifare_classic_authex_cmd(pcs, uid, blockNo, (keyType & 1) == 0 ? MIFARE_AUTH_KEYA : MIFARE_AUTH_KEYB, ui64Key, isNested, ntptr, timing); + return mifare_classic_authex_cmd(pcs, uid, blockNo, (keyType & 1) ? MIFARE_AUTH_KEYB : MIFARE_AUTH_KEYA, ui64Key, isNested, ntptr, timing); } int mifare_classic_authex_cmd(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t cmd, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *timing) { diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 81bc89768..a56a32851 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -554,7 +554,7 @@ static int CmdHF14AReader(const char *Cmd) { } if (continuous) { - PrintAndLogEx(INFO, "Press " _GREEN_("Enter") " to exit"); + PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " to exit"); } int res = PM3_SUCCESS; @@ -567,7 +567,6 @@ static int CmdHF14AReader(const char *Cmd) { SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, NULL, 0); } - if (ISO14A_CONNECT & cm) { PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 2500) == false) { From 7c749267e60fe074e1a7b6186b3ce3a141404940 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 7 Dec 2023 12:15:35 +0100 Subject: [PATCH 0829/1034] maur --- client/dictionaries/mfc_default_keys.dic | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 9de50fae5..48c87b5d3 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -145,6 +145,10 @@ FF9F11223358 AC37E76385F5 576DCFFF2F25 # +# Car wash system +1EE38419EF39 +26578719DCD9 +# # more Keys from mfc_default_keys.lua 000000000001 000000000002 From 97e2d7f026615ad3a5d8242a3a57485cf3ffcaa6 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 7 Dec 2023 16:44:31 +0100 Subject: [PATCH 0830/1034] changed "data num" to accept -r -i parameters where it will reverse or inverse the values.\nrenamed some util functions --- CHANGELOG.md | 5 ++- armsrc/hitag2crack.c | 12 +++--- armsrc/optimized_cipher.c | 8 ++-- armsrc/optimized_cipherutils.c | 6 +-- armsrc/optimized_cipherutils.h | 2 +- client/src/cmddata.c | 53 ++++++++++++++++++++---- client/src/cmdhficlass.c | 4 +- client/src/cmdlft55xx.c | 2 +- client/src/fileutils.c | 8 ++-- client/src/loclass/cipherutils.h | 2 +- client/src/proxmark3.c | 12 +++--- client/src/util.c | 70 ++++++++++++++++++++++++++++---- client/src/util.h | 16 +++++--- 13 files changed, 149 insertions(+), 51 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82af9ead6..c660d2011 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,9 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `data num` - now can print reversed and inverse (@iceman1001) + - Fixed `hf mf sim -ix` never returning console (@datatags) + - Added standalone mode `hf_unisniff` combining 14a/14b/15 sniffing with extra flash save options (@hazardousvoltage) - Added encryption and other SL3 functions for Mifare Plus - more to come (@team-orangeBlue) - Fixed the corrupted data in real-time sampling (@wh201906) - Added a slider in the plot window for navigation (@wh201906) @@ -12,8 +15,6 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `hf 14a info` - now reads and prints QL88 sigantures (@iceman1001) - Fixed `hf iclass dump` truncating AA2 blocks and improve reliability (@nvx) - Added some info about UMC in "doc/magic_cards_notes.md" (@temskiy) - - Added standalone mode `hf_unisniff` combining 14a/14b/15 sniffing with extra flash save options (@hazardousvoltage) - - Fixed `hf mf sim -ix` never returning console (@datatags) ## [Faraday.4.17511][2023-11-13] - Fixed Python support of `experimental_client_with_swig` (@doegox) diff --git a/armsrc/hitag2crack.c b/armsrc/hitag2crack.c index bd5fc2a94..138fdf451 100644 --- a/armsrc/hitag2crack.c +++ b/armsrc/hitag2crack.c @@ -339,7 +339,7 @@ bool hitag2crack_read_page(uint8_t *responsestr, uint8_t pagenum, uint8_t *nrar, // decrypt response hitag2crack_xor(response, e_response, keybits + 10, 32); // convert to hexstring - binarraytohex(responsestr, response, 32); + binarray_2_hex(responsestr, response, 32); return true; } else { UserMessage("hitag2crack_read_page:\r\n hitag2crack_send_e_cmd returned ERROR_RESPONSE\r\n"); @@ -424,7 +424,7 @@ bool hitag2crack_tx_rx(uint8_t *responsestr, uint8_t *msg, int len, int state, b } // convert response to hexstring - binarraytohex(responsestr, tmp + 5, 32); + binarray_2_hex(responsestr, tmp + 5, 32); return true; } else { #ifdef RFIDLER_DEBUG @@ -506,8 +506,8 @@ bool hitag2crack_decrypt_hex(uint8_t *response, uint8_t *hex) { binulong = hextoulong(hex); ulongtobinarray(bin, hitag2_crypt(binulong, 32), 32); - binarraytobinstring(binstr, bin, 32); - binarraytohex(binhex, bin, 32); + binarray_2_binstr(binstr, bin, 32); + binarray_2_hex(binhex, bin, 32); // UserMessage("ar = %s\r\n", binstr); // UserMessage("arhex = %s\r\n", binhex); @@ -532,7 +532,7 @@ bool hitag2crack_decrypt_bin(uint8_t *response, uint8_t *e_binstr) { binulong = binarraytoulong(e_bin, len); ulongtobinarray(bin, hitag2_crypt(binulong, len), len); - binarraytobinstring(binstr, bin, len); + binarray_2_binstr(binstr, bin, len); strcpy(response, binstr); return true; } @@ -646,7 +646,7 @@ bool hitag2_keystream(uint8_t *response, uint8_t *nrarhex) { } for (i = 0; i < 2048; i += 256) { - binarraytohex(keybitshex, keybits + i, 256); + binarray_2_hex(keybitshex, keybits + i, 256); UserMessage("%s\r\n", keybitshex); } diff --git a/armsrc/optimized_cipher.c b/armsrc/optimized_cipher.c index 68b36af85..c2ffa5da9 100644 --- a/armsrc/optimized_cipher.c +++ b/armsrc/optimized_cipher.c @@ -115,12 +115,12 @@ static void init_opt_select_LUT(void) { print_result("", opt_select_LUT, 256); } ***********************************************************************************/ - +/* #define opt__select(x,y,r) (4 & (((r & (r << 2)) >> 5) ^ ((r & ~(r << 2)) >> 4) ^ ( (r | r << 2) >> 3)))\ |(2 & (((r | r << 2) >> 6) ^ ( (r | r << 2) >> 1) ^ (r >> 5) ^ r ^ ((x^y) << 1)))\ |(1 & (((r & ~(r << 2)) >> 4) ^ ((r & (r << 2)) >> 3) ^ r ^ x)) -/* + * Some background on the expression above can be found here... uint8_t xopt__select(bool x, bool y, uint8_t r) { @@ -201,7 +201,9 @@ static void opt_suc(const uint8_t *k, State_t *s, const uint8_t *in, uint8_t len } //For tag MAC, an additional 32 zeroes if (add32Zeroes) { - for (int i = 0; i < 16; i++) { + for (int i = 0; i < 8; i++) { + opt_successor(k, s, 0); + opt_successor(k, s, 0); opt_successor(k, s, 0); opt_successor(k, s, 0); } diff --git a/armsrc/optimized_cipherutils.c b/armsrc/optimized_cipherutils.c index 3afba7164..66a618291 100644 --- a/armsrc/optimized_cipherutils.c +++ b/armsrc/optimized_cipherutils.c @@ -114,7 +114,7 @@ uint64_t x_bytes_to_num(uint8_t *src, size_t len) { return num; } -uint8_t reversebytes(uint8_t b) { +uint8_t reversebyte(uint8_t b) { b = (b & 0xF0) >> 4 | (b & 0x0F) << 4; b = (b & 0xCC) >> 2 | (b & 0x33) << 2; b = (b & 0xAA) >> 1 | (b & 0x55) << 1; @@ -124,14 +124,14 @@ uint8_t reversebytes(uint8_t b) { void reverse_arraybytes(uint8_t *arr, size_t len) { size_t i; for (i = 0; i < len ; i++) { - arr[i] = reversebytes(arr[i]); + arr[i] = reversebyte(arr[i]); } } void reverse_arraycopy(uint8_t *arr, uint8_t *dest, size_t len) { size_t i; for (i = 0; i < len ; i++) { - dest[i] = reversebytes(arr[i]); + dest[i] = reversebyte(arr[i]); } } diff --git a/armsrc/optimized_cipherutils.h b/armsrc/optimized_cipherutils.h index 1bef017a2..8d8a75f8c 100644 --- a/armsrc/optimized_cipherutils.h +++ b/armsrc/optimized_cipherutils.h @@ -57,7 +57,7 @@ int bitsLeft(BitstreamIn_t *stream); void push6bits(BitstreamOut_t *stream, uint8_t bits); void x_num_to_bytes(uint64_t n, size_t len, uint8_t *dest); uint64_t x_bytes_to_num(uint8_t *src, size_t len); -uint8_t reversebytes(uint8_t b); +uint8_t reversebyte(uint8_t b); void reverse_arraybytes(uint8_t *arr, size_t len); void reverse_arraycopy(uint8_t *arr, uint8_t *dest, size_t len); #endif // CIPHERUTILS_H diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 62b824304..74d6e3262 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -276,7 +276,7 @@ int printDemodBuff(uint8_t offset, bool strip_leading, bool invert, bool print_h if (print_hex) { p = (buf + offset); char hex[MAX_DEMODULATION_BITS + 1] = {0x00}; - int num_bits = binarraytohex(hex, sizeof(hex), (char *)p, len); + int num_bits = binarray_2_hex(hex, sizeof(hex), (char *)p, len); if (num_bits == 0) { p = NULL; free(buf); @@ -3281,6 +3281,7 @@ static int CmdNumCon(const char *Cmd) { arg_str0(NULL, "hex", "<hex>", "hexadecimal value"), arg_str0(NULL, "bin", "<bin>", "binary value"), arg_lit0("i", NULL, "print inverted value"), + arg_lit0("r", NULL, "print reversed value"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -3302,6 +3303,7 @@ static int CmdNumCon(const char *Cmd) { res |= CLIParamStrToBuf(arg_get_str(ctx, 3), (uint8_t *)bin, sizeof(bin), &blen); bool shall_invert = arg_get_lit(ctx, 4); + bool shall_reverse = arg_get_lit(ctx, 5); CLIParserFree(ctx); // sanity checks @@ -3343,11 +3345,6 @@ static int CmdNumCon(const char *Cmd) { mbedtls_mpi_init(&base); mbedtls_mpi_add_int(&base, &base, 10); - if (shall_invert) { - PrintAndLogEx(INFO, "should invert"); - MBEDTLS_MPI_CHK(mbedtls_mpi_inv_mod(&N, &N, &base)); - } - // printing typedef struct { const char *desc; @@ -3365,11 +3362,53 @@ static int CmdNumCon(const char *Cmd) { for (uint8_t i = 0; i < ARRAYLEN(radix); i++) { MBEDTLS_MPI_CHK(mbedtls_mpi_write_string(&N, radix[i].radix, s, sizeof(s), &slen)); - if (slen > 0) { + if (slen) { PrintAndLogEx(SUCCESS, "%s%s", radix[i].desc, s); } } + // reverse + if (shall_reverse) { + PrintAndLogEx(SUCCESS, _CYAN_("Reversed")); + for (uint8_t i = 0; i < ARRAYLEN(radix); i++) { + MBEDTLS_MPI_CHK(mbedtls_mpi_write_string(&N, radix[i].radix, s, sizeof(s), &slen)); + + str_reverse(s, strlen(s)); + + if (slen) { + PrintAndLogEx(SUCCESS, "%s%s", radix[i].desc, s); + } + } + } + + // invert + if (shall_invert) { + PrintAndLogEx(SUCCESS, _CYAN_("Inverted")); + for (uint8_t i = 0; i < ARRAYLEN(radix); i++) { + MBEDTLS_MPI_CHK(mbedtls_mpi_write_string(&N, radix[i].radix, s, sizeof(s), &slen)); + if (slen == 0) { + continue; + } + + switch(i) { + case 0: +// MBEDTLS_MPI_CHK(mbedtls_mpi_inv_mod(&N, &N, &base)); + break; + case 1: + str_inverse_hex(s, strlen(s)); + PrintAndLogEx(SUCCESS, "%s%s", radix[i].desc, s); + break; + case 2: + str_inverse_bin(s, strlen(s)); + PrintAndLogEx(SUCCESS, "%s%s", radix[i].desc, s); + break; + default: + break; + } + } + } + + // check if number is a prime mbedtls_entropy_context entropy; mbedtls_ctr_drbg_context ctr_drbg; diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 6da027c32..340af551a 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1349,7 +1349,7 @@ static int iclass_decode_credentials_new_pacs(uint8_t *d) { } uint8_t n = PICOPASS_BLOCK_SIZE - offset - 2; - byte_2_binstr(binstr, d + offset + 2, n); + bytes_2_binstr(binstr, d + offset + 2, n); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, "PACS......... " _GREEN_("%s"), sprint_hex_inrow(d + offset + 2, n)); @@ -4562,7 +4562,7 @@ static int CmdHFiClassSAM(const char *Cmd) { return PM3_EMALLOC; } - byte_2_binstr(binstr, d + 3, n); + bytes_2_binstr(binstr, d + 3, n); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, "PACS......... " _GREEN_("%s"), sprint_hex_inrow(d + 2, resp.length - 2)); diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index e181f8667..894ad3b5d 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -1677,7 +1677,7 @@ static int CmdT55xxDangerousRaw(const char *Cmd) { return PM3_EINVARG; } - int bs_len = binstring2binarray(ng.data, (char *)bin, bin_len); + int bs_len = binstr_2_binarray(ng.data, (char *)bin, bin_len); if (bs_len == 0) { return PM3_EINVARG; } diff --git a/client/src/fileutils.c b/client/src/fileutils.c index d8c4afe90..a17ca625b 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -986,7 +986,7 @@ int loadFileEML_safe(const char *preferredName, void **pdata, size_t *datalen) { if (line[0] == '#') continue; - strcleanrn(line, sizeof(line)); + str_cleanrn(line, sizeof(line)); res = param_gethex_to_eol(line, 0, buf, sizeof(buf), &hexlen); if (res == 0) { @@ -1059,7 +1059,7 @@ int loadFileNFC_safe(const char *preferredName, void *data, size_t maxdatalen, s if (line[0] == '#') continue; - strcleanrn(line, sizeof(line)); + str_cleanrn(line, sizeof(line)); str_lower(line); if (str_startswith(line, "uid:")) { @@ -1306,7 +1306,7 @@ int loadFileMCT_safe(const char *preferredName, void **pdata, size_t *datalen) { if (line[0] == '+') continue; - strcleanrn(line, sizeof(line)); + str_cleanrn(line, sizeof(line)); res = param_gethex_to_eol(line, 0, buf, sizeof(buf), &hexlen); if (res == 0) { @@ -2261,7 +2261,7 @@ nfc_df_e detect_nfc_dump_format(const char *preferredName, bool verbose) { return PM3_EFILE; } - strcleanrn(line, sizeof(line)); + str_cleanrn(line, sizeof(line)); str_lower(line); if (str_startswith(line, "device type: ntag")) { diff --git a/client/src/loclass/cipherutils.h b/client/src/loclass/cipherutils.h index 160945f0d..f3dc9d5f3 100644 --- a/client/src/loclass/cipherutils.h +++ b/client/src/loclass/cipherutils.h @@ -63,7 +63,7 @@ void push6bits(BitstreamOut_t *stream, uint8_t bits); void EncryptDES(bool key[56], bool outBlk[64], bool inBlk[64], int verbose) ; void x_num_to_bytes(uint64_t n, size_t len, uint8_t *dest); uint64_t x_bytes_to_num(uint8_t *src, size_t len); -uint8_t reversebytes(uint8_t b); +uint8_t reversebyte(uint8_t b); void reverse_arraybytes(uint8_t *arr, size_t len); void reverse_arraycopy(uint8_t *arr, uint8_t *dest, size_t len); void printarr(const char *name, uint8_t *arr, int len); diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 85b85f762..00e93c6d1 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -223,7 +223,7 @@ main_loop(char *script_cmds_file, char *script_cmd, bool stayInCommandLoop) { uint16_t script_cmd_len = 0; if (execCommand) { script_cmd_len = strlen(script_cmd); - strcreplace(script_cmd, script_cmd_len, ';', '\0'); + str_creplace(script_cmd, script_cmd_len, ';', '\0'); } bool stdinOnPipe = !isatty(STDIN_FILENO); char script_cmd_buf[256] = {0x00}; // iceman, needs lua script the same file_path_buffer as the rest @@ -312,7 +312,7 @@ check_script: prompt_ctx = PROXPROMPT_CTX_SCRIPTFILE; // remove linebreaks - strcleanrn(script_cmd_buf, sizeof(script_cmd_buf)); + str_cleanrn(script_cmd_buf, sizeof(script_cmd_buf)); cmd = str_dup(script_cmd_buf); if (cmd != NULL) { @@ -354,9 +354,9 @@ check_script: fromInteractive = false; script_cmd = script_cmd_buf; script_cmd_len = strlen(script_cmd); - strcreplace(script_cmd, script_cmd_len, ';', '\0'); + str_creplace(script_cmd, script_cmd_len, ';', '\0'); // remove linebreaks - strcleanrn(script_cmd, script_cmd_len); + str_cleanrn(script_cmd, script_cmd_len); goto check_script; } else { pm3line_check(check_comm); @@ -376,9 +376,9 @@ check_script: stayInCommandLoop = true; fromInteractive = true; script_cmd_len = strlen(script_cmd); - strcreplace(script_cmd, script_cmd_len, ';', '\0'); + str_creplace(script_cmd, script_cmd_len, ';', '\0'); // remove linebreaks - strcleanrn(script_cmd, script_cmd_len); + str_cleanrn(script_cmd, script_cmd_len); goto check_script; } fflush(NULL); diff --git a/client/src/util.c b/client/src/util.c index 205c2d32f..76a7b24ea 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -92,6 +92,30 @@ int kbd_enter_pressed(void) { } #endif +static char inv_b2s(char v, bool uppercase) { + + if (isxdigit(v) == 0) { + return '.'; + } + + uint8_t lut[] = { + 'f', 'e', 'd', 'c', + 'b', 'a', '9', '8', + '7', '6', '5', '4', + '3', '2', '1', '0' + }; + + uint8_t tmp = (tolower(v) - 'a' + 10); + if (isdigit(v)) { + tmp = (v - 0x30); + } + + if (uppercase) + return toupper(lut[tmp]); + else + return lut[tmp]; +} + static char b2s(uint8_t v, bool uppercase) { // clear higher bits v &= 0xF; @@ -938,12 +962,12 @@ int hextobinstring_n(char *target, char *source, int sourcelen) { if (length == 0) { return 0; } - binarraytobinstring(target, target, length); + binarray_2_binstr(target, target, length); return length; } // convert bytes to binary string -void byte_2_binstr(char *target, const uint8_t *source, size_t sourcelen) { +void bytes_2_binstr(char *target, const uint8_t *source, size_t sourcelen) { //uint8_t *p = *source; for (int i = 0 ; i < sourcelen; ++i) { uint8_t b = *(source++); @@ -961,7 +985,7 @@ void byte_2_binstr(char *target, const uint8_t *source, size_t sourcelen) { // convert binary array of 0x00/0x01 values to hex // return number of bits converted -int binarraytohex(char *target, const size_t targetlen, const char *source, size_t srclen) { +int binarray_2_hex(char *target, const size_t targetlen, const char *source, size_t srclen) { uint8_t i = 0, x = 0; uint32_t t = 0; // written target chars uint32_t r = 0; // consumed bits @@ -1007,14 +1031,14 @@ int binarraytohex(char *target, const size_t targetlen, const char *source, size } // convert binary array to human readable binary -void binarraytobinstring(char *target, char *source, int length) { +void binarray_2_binstr(char *target, char *source, int length) { for (int i = 0 ; i < length; ++i) { *(target++) = *(source++) + '0'; } *target = '\0'; } -int binstring2binarray(uint8_t *target, char *source, int length) { +int binstr_2_binarray(uint8_t *target, char *source, int length) { int count = 0; char *start = source; while (length--) { @@ -1171,13 +1195,13 @@ void clean_ascii(unsigned char *buf, size_t len) { } // replace \r \n to \0 -void strcleanrn(char *buf, size_t len) { - strcreplace(buf, len, '\n', '\0'); - strcreplace(buf, len, '\r', '\0'); +void str_cleanrn(char *buf, size_t len) { + str_creplace(buf, len, '\n', '\0'); + str_creplace(buf, len, '\r', '\0'); } // replace char in buffer -void strcreplace(char *buf, size_t len, char from, char to) { +void str_creplace(char *buf, size_t len, char from, char to) { for (size_t i = 0; i < len; i++) { if (buf[i] == from) buf[i] = to; @@ -1208,6 +1232,34 @@ size_t str_nlen(const char *src, size_t maxlen) { return len; } +void str_reverse(char *buf, size_t len) { + for (size_t i = 0; i < (len>>1); i++) { + char tmp = buf[i]; + buf[i] = buf[len - i - 1]; + buf[len - i - 1] = tmp; + } +} + +void str_inverse_hex(char *buf, size_t len) { + for (size_t i = 0; i < len; i++) { + buf[i] = inv_b2s(buf[i], true); + } +} + +void str_inverse_bin(char *buf, size_t len) { + for (size_t i = 0; i < len; i++) { + + char c = buf[i]; + if (c == '1') + buf[i] = '0'; + else if ( c == '0') + buf[i] = '1'; + else + buf[i] = '.'; + } +} + + /** * Converts a hex string to component "hi2", "hi" and "lo" 32-bit integers * one nibble at a time. diff --git a/client/src/util.h b/client/src/util.h index 1d6df987d..1949c1d53 100644 --- a/client/src/util.h +++ b/client/src/util.h @@ -117,11 +117,11 @@ int hextobinarray_n(char *target, char *source, int sourcelen); int hextobinstring(char *target, char *source); int hextobinstring_n(char *target, char *source, int sourcelen); -int binarraytohex(char *target, const size_t targetlen, const char *source, size_t srclen); -void binarraytobinstring(char *target, char *source, int length); -int binstring2binarray(uint8_t *target, char *source, int length); +int binarray_2_hex(char *target, const size_t targetlen, const char *source, size_t srclen); +void binarray_2_binstr(char *target, char *source, int length); +int binstr_2_binarray(uint8_t *target, char *source, int length); -void byte_2_binstr(char *target, const uint8_t *source, size_t sourcelen); +void bytes_2_binstr(char *target, const uint8_t *source, size_t sourcelen); void binstr_2_bytes(uint8_t *target, size_t *targetlen, const char *src); uint8_t GetParity(const uint8_t *bits, uint8_t type, int length); @@ -143,8 +143,12 @@ void strn_upper(char *s, size_t n); bool str_startswith(const char *s, const char *pre); // check for prefix in string bool str_endswith(const char *s, const char *suffix); // check for suffix in string void clean_ascii(unsigned char *buf, size_t len); -void strcleanrn(char *buf, size_t len); -void strcreplace(char *buf, size_t len, char from, char to); +void str_cleanrn(char *buf, size_t len); +void str_creplace(char *buf, size_t len, char from, char to); +void str_reverse(char *buf, size_t len); +void str_inverse_hex(char *buf, size_t len); +void str_inverse_bin(char *buf, size_t len); + char *str_dup(const char *src); char *str_ndup(const char *src, size_t len); size_t str_nlen(const char *src, size_t maxlen); From 3c6734c63bb0245d385fd99573ba2e15d9d33028 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 7 Dec 2023 19:56:41 +0100 Subject: [PATCH 0831/1034] style --- client/src/cmdhfemrtd.c | 51 ++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/client/src/cmdhfemrtd.c b/client/src/cmdhfemrtd.c index 2e81ec3a7..e9f2bc65e 100644 --- a/client/src/cmdhfemrtd.c +++ b/client/src/cmdhfemrtd.c @@ -416,8 +416,8 @@ static void emrtd_bump_ssc(uint8_t *ssc) { static bool emrtd_check_cc(uint8_t *ssc, uint8_t *key, uint8_t *rapdu, int rapdulength) { // https://elixi.re/i/clarkson.png - uint8_t k[500]; - uint8_t cc[500]; + uint8_t k[500] = { 0x00 }; + uint8_t cc[500] = { 0x00 }; emrtd_bump_ssc(ssc); @@ -449,16 +449,16 @@ static bool emrtd_check_cc(uint8_t *ssc, uint8_t *key, uint8_t *rapdu, int rapdu } static bool emrtd_secure_select_file_by_ef(uint8_t *kenc, uint8_t *kmac, uint8_t *ssc, uint16_t file) { - uint8_t response[PM3_CMD_DATA_SIZE]; + uint8_t response[PM3_CMD_DATA_SIZE] = { 0x00 }; size_t resplen = 0; // convert fileid to bytes - uint8_t file_id[2]; + uint8_t file_id[2] = { 0x00 }; _emrtd_convert_fileid(file, file_id); uint8_t iv[8] = { 0x00 }; - uint8_t cmd[8]; - uint8_t data[21]; + uint8_t cmd[8] = { 0x00 }; + uint8_t data[21] = { 0x00 }; uint8_t temp[8] = {0x0c, 0xa4, EMRTD_P1_SELECT_BY_EF, 0x0c}; int cmdlen = pad_block(temp, 4, cmd); @@ -507,8 +507,8 @@ static bool emrtd_secure_select_file_by_ef(uint8_t *kenc, uint8_t *kmac, uint8_t } static bool _emrtd_secure_read_binary(uint8_t *kmac, uint8_t *ssc, int offset, int bytes_to_read, uint8_t *dataout, size_t maxdataoutlen, size_t *dataoutlen) { - uint8_t cmd[8]; - uint8_t data[21]; + uint8_t cmd[8] = { 0x00 }; + uint8_t data[21] = { 0x00 }; uint8_t temp[8] = {0x0c, 0xb0}; PrintAndLogEx(DEBUG, "kmac: %s", sprint_hex_inrow(kmac, 20)); @@ -522,18 +522,18 @@ static bool _emrtd_secure_read_binary(uint8_t *kmac, uint8_t *ssc, int offset, i uint8_t do97[3] = {0x97, 0x01, bytes_to_read}; - uint8_t m[11]; + uint8_t m[11] = { 0x00 }; memcpy(m, cmd, 8); memcpy(m + 8, do97, 3); emrtd_bump_ssc(ssc); - uint8_t n[19]; + uint8_t n[19] = { 0x00 }; memcpy(n, ssc, 8); memcpy(n + 8, m, 11); PrintAndLogEx(DEBUG, "n: %s", sprint_hex_inrow(n, 19)); - uint8_t cc[8]; + uint8_t cc[8] = { 0x00 }; retail_mac(kmac, n, 19, cc); PrintAndLogEx(DEBUG, "cc: %s", sprint_hex_inrow(cc, 8)); @@ -556,8 +556,8 @@ static bool _emrtd_secure_read_binary(uint8_t *kmac, uint8_t *ssc, int offset, i } static bool _emrtd_secure_read_binary_decrypt(uint8_t *kenc, uint8_t *kmac, uint8_t *ssc, int offset, int bytes_to_read, uint8_t *dataout, size_t *dataoutlen) { - uint8_t response[500]; - uint8_t temp[500]; + uint8_t response[500] = { 0x00 }; + uint8_t temp[500] = { 0x00 }; size_t resplen, cutat = 0; uint8_t iv[8] = { 0x00 }; @@ -578,9 +578,9 @@ static bool _emrtd_secure_read_binary_decrypt(uint8_t *kenc, uint8_t *kmac, uint } static int emrtd_read_file(uint8_t *dataout, size_t *dataoutlen, uint8_t *kenc, uint8_t *kmac, uint8_t *ssc, bool use_secure) { - uint8_t response[EMRTD_MAX_FILE_SIZE]; + uint8_t response[EMRTD_MAX_FILE_SIZE] = { 0x00 }; size_t resplen = 0; - uint8_t tempresponse[500]; + uint8_t tempresponse[500] = { 0x00 }; size_t tempresplen = 0; int toread = 4; int offset = 0; @@ -747,7 +747,7 @@ static int emrtd_dump_ef_dg2(uint8_t *file_contents, size_t file_length, const c } static int emrtd_dump_ef_dg5(uint8_t *file_contents, size_t file_length, const char *path) { - uint8_t data[EMRTD_MAX_FILE_SIZE]; + uint8_t data[EMRTD_MAX_FILE_SIZE] = { 0x00 }; size_t datalen = 0; // If we can't find image in EF_DG5, return false. @@ -757,8 +757,9 @@ static int emrtd_dump_ef_dg5(uint8_t *file_contents, size_t file_length, const c if (datalen < EMRTD_MAX_FILE_SIZE) { char *filepath = calloc(strlen(path) + 100, sizeof(char)); - if (filepath == NULL) + if (filepath == NULL) { return PM3_EMALLOC; + } strcpy(filepath, path); strncat(filepath, PATHSEP, 2); strcat(filepath, dg_table[EF_DG5].filename); @@ -774,7 +775,7 @@ static int emrtd_dump_ef_dg5(uint8_t *file_contents, size_t file_length, const c } static int emrtd_dump_ef_dg7(uint8_t *file_contents, size_t file_length, const char *path) { - uint8_t data[EMRTD_MAX_FILE_SIZE]; + uint8_t data[EMRTD_MAX_FILE_SIZE] = { 0x00 }; size_t datalen = 0; // If we can't find image in EF_DG7, return false. @@ -784,8 +785,9 @@ static int emrtd_dump_ef_dg7(uint8_t *file_contents, size_t file_length, const c if (datalen < EMRTD_MAX_FILE_SIZE) { char *filepath = calloc(strlen(path) + 100, sizeof(char)); - if (filepath == NULL) + if (filepath == NULL) { return PM3_EMALLOC; + } strcpy(filepath, path); strncat(filepath, PATHSEP, 2); strcat(filepath, dg_table[EF_DG7].filename); @@ -810,8 +812,9 @@ static int emrtd_dump_ef_sod(uint8_t *file_contents, size_t file_length, const c } char *filepath = calloc(strlen(path) + 100, sizeof(char)); - if (filepath == NULL) + if (filepath == NULL) { return PM3_EMALLOC; + } strcpy(filepath, path); strncat(filepath, PATHSEP, 2); @@ -823,7 +826,7 @@ static int emrtd_dump_ef_sod(uint8_t *file_contents, size_t file_length, const c } static bool emrtd_dump_file(uint8_t *ks_enc, uint8_t *ks_mac, uint8_t *ssc, uint16_t file, const char *name, bool use_secure, const char *path) { - uint8_t response[EMRTD_MAX_FILE_SIZE]; + uint8_t response[EMRTD_MAX_FILE_SIZE] = { 0x00 }; size_t resplen = 0; if (emrtd_select_and_read(response, &resplen, file, ks_enc, ks_mac, ssc, use_secure) == false) { @@ -831,8 +834,9 @@ static bool emrtd_dump_file(uint8_t *ks_enc, uint8_t *ks_mac, uint8_t *ssc, uint } char *filepath = calloc(strlen(path) + 100, sizeof(char)); - if (filepath == NULL) + if (filepath == NULL) { return false; + } strcpy(filepath, path); strncat(filepath, PATHSEP, 2); @@ -1048,8 +1052,9 @@ int dumpHF_EMRTD(char *documentnumber, char *dob, char *expiry, bool BAC_availab char *filepath = calloc(strlen(path) + 100, sizeof(char)); - if (filepath == NULL) + if (filepath == NULL) { return PM3_EMALLOC; + } strcpy(filepath, path); strncat(filepath, PATHSEP, 2); From 367ff755a26e44dd115142a306b4437f1bb16dc9 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 7 Dec 2023 19:57:18 +0100 Subject: [PATCH 0832/1034] move lock --- client/src/ui.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/src/ui.c b/client/src/ui.c index 153b26ecd..fc3f7908a 100644 --- a/client/src/ui.c +++ b/client/src/ui.c @@ -317,8 +317,7 @@ static void fPrintAndLog(FILE *stream, const char *fmt, ...) { char buffer[MAX_PRINT_BUFFER] = {0}; char buffer2[MAX_PRINT_BUFFER] = {0}; char buffer3[MAX_PRINT_BUFFER] = {0}; - // lock this section to avoid interlacing prints from different threads - pthread_mutex_lock(&g_print_lock); + bool linefeed = true; if (logging && g_session.incognito) { @@ -353,6 +352,8 @@ static void fPrintAndLog(FILE *stream, const char *fmt, ...) { } } + // lock this section to avoid interlacing prints from different threads + pthread_mutex_lock(&g_print_lock); // If there is an incoming message from the hardware (eg: lf hid read) in // the background (while the prompt is displayed and accepting user input), From 843fa33d09a106fb657b76cfd9d7eaa8d0a810b3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 8 Dec 2023 19:20:39 +0100 Subject: [PATCH 0833/1034] modified to print number of samples. Also added a isnoise check, in order to fast get feedback instead of forcing user to look at the plot window --- client/src/cmdlf.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 95e71f40b..3cb9075a9 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -815,6 +815,14 @@ int CmdLFRead(const char *Cmd) { do { ret = lf_read_internal(realtime, verbose, samples); } while (cm && kbd_enter_pressed() == false); + + if (ret == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "Got " _YELLOW_("%u") " samples", g_GraphTraceLen); + + if (getSignalProperties()->isnoise) { + PrintAndLogEx(INFO, "signal looks like noise"); + } + } return ret; } From 62c926e0ddf205aa20a44c8fb18289b3a03f7472 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 8 Dec 2023 19:29:55 +0100 Subject: [PATCH 0834/1034] style --- client/src/cmddata.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 74d6e3262..196ff3d29 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -40,7 +40,7 @@ #include "mbedtls/ctr_drbg.h" // random generator #include "atrs.h" // ATR lookup -uint8_t g_DemodBuffer[MAX_DEMOD_BUF_LEN]; +uint8_t g_DemodBuffer[MAX_DEMOD_BUF_LEN] = { 0x00 }; size_t g_DemodBufferLen = 0; int32_t g_DemodStartIdx = 0; int g_DemodClock = 0; From f37e461398b7b1b0c023939faefe5a7729689244 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 8 Dec 2023 19:32:07 +0100 Subject: [PATCH 0835/1034] ignore executable --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 07ef14acb..90e9858f8 100644 --- a/.gitignore +++ b/.gitignore @@ -68,7 +68,7 @@ luac tools/fpga_compress/fpga_compress tools/mfkey/mfkey32 tools/mfkey/mfkey64 -tools/staticnested +tools/mfkey/staticnested tools/nonce2key/nonce2key tools/cryptorf/cm tools/cryptorf/sm From bf1160988cec48d4b66f5c4eda86c009f33c1bb4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 8 Dec 2023 19:34:06 +0100 Subject: [PATCH 0836/1034] style --- client/src/cmddata.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 74d6e3262..eb7ac910d 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1791,11 +1791,13 @@ int getSamplesEx(uint32_t start, uint32_t end, bool verbose, bool ignore_lf_conf uint32_t n = end - start; - if (n == 0 || n > g_pm3_capabilities.bigbuf_size - 1) + if (n == 0 || n > g_pm3_capabilities.bigbuf_size - 1) { n = g_pm3_capabilities.bigbuf_size - 1; + } - if (verbose) + if (verbose) { PrintAndLogEx(INFO, "Reading " _YELLOW_("%u") " bytes from device memory", n); + } PacketResponseNG resp; if (GetFromDevice(BIG_BUF, got, n, start, NULL, 0, &resp, 10000, true) == false) { @@ -1803,14 +1805,18 @@ int getSamplesEx(uint32_t start, uint32_t end, bool verbose, bool ignore_lf_conf return PM3_ETIMEOUT; } - if (verbose) PrintAndLogEx(SUCCESS, "Data fetched"); + if (verbose) { + PrintAndLogEx(SUCCESS, "Data fetched"); + } uint8_t bits_per_sample = 8; // Old devices without this feature would send 0 at arg[0] if (resp.oldarg[0] > 0 && (ignore_lf_config == false)) { sample_config *sc = (sample_config *) resp.data.asBytes; - if (verbose) PrintAndLogEx(INFO, "Samples @ " _YELLOW_("%d") " bits/smpl, decimation 1:%d ", sc->bits_per_sample, sc->decimation); + if (verbose) { + PrintAndLogEx(INFO, "Samples @ " _YELLOW_("%d") " bits/smpl, decimation 1:%d ", sc->bits_per_sample, sc->decimation); + } bits_per_sample = sc->bits_per_sample; } From 8fc3130a9f83c253db8d92daab600a5a73fc8b4c Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Sat, 9 Dec 2023 15:18:57 +0800 Subject: [PATCH 0837/1034] Add smartcard definition in PLATFORM_EXTRAS --- Makefile.platform.sample | 1 + common_arm/Makefile.hal | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/Makefile.platform.sample b/Makefile.platform.sample index aeb541cee..c928ae893 100644 --- a/Makefile.platform.sample +++ b/Makefile.platform.sample @@ -6,6 +6,7 @@ PLATFORM=PM3RDV4 # If you want more than one PLATFORM_EXTRAS option, separate them by spaces: #PLATFORM_EXTRAS=BTADDON #PLATFORM_EXTRAS=FLASH +#PLATFORM_EXTRAS=SMARTCARD #PLATFORM_EXTRAS=BTADDON FLASH #STANDALONE=LF_SAMYRUN diff --git a/common_arm/Makefile.hal b/common_arm/Makefile.hal index f9d7d2fe4..bbc0af74e 100644 --- a/common_arm/Makefile.hal +++ b/common_arm/Makefile.hal @@ -126,6 +126,10 @@ endif # parsing additional PLATFORM_EXTRAS tokens PLATFORM_EXTRAS_TMP:=$(PLATFORM_EXTRAS) +ifneq (,$(findstring SMARTCARD,$(PLATFORM_EXTRAS_TMP))) + PLATFORM_DEFS += -DWITH_SMARTCARD + PLATFORM_EXTRAS_TMP := $(strip $(filter-out SMARTCARD,$(PLATFORM_EXTRAS_TMP))) +endif ifneq (,$(findstring FLASH,$(PLATFORM_EXTRAS_TMP))) PLATFORM_DEFS += -DWITH_FLASH PLATFORM_EXTRAS_TMP := $(strip $(filter-out FLASH,$(PLATFORM_EXTRAS_TMP))) From 9075984c7f6cc41437ba9534f4c83810a42d8c06 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 9 Dec 2023 10:18:44 +0100 Subject: [PATCH 0838/1034] modified lf fdx demod, different text style and raw now shows all bytes not just crc bytes --- CHANGELOG.md | 1 + client/src/cmdlffdxb.c | 51 +++++++++++++++++++++++------------------- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c660d2011..15a2f4dca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `lf fdx demod` - now raw bytes shows all data (@iceman1001) - Changed `data num` - now can print reversed and inverse (@iceman1001) - Fixed `hf mf sim -ix` never returning console (@datatags) - Added standalone mode `hf_unisniff` combining 14a/14b/15 sniffing with extra flash save options (@hazardousvoltage) diff --git a/client/src/cmdlffdxb.c b/client/src/cmdlffdxb.c index e30d4f108..0c3330739 100644 --- a/client/src/cmdlffdxb.c +++ b/client/src/cmdlffdxb.c @@ -488,12 +488,13 @@ static const char *mapFDBX(uint16_t countryCode) { //see ASKDemod for what args are accepted //almost the same demod as cmddata.c/CmdFDXBdemodBI int demodFDXB(bool verbose) { - //Differential Biphase / di-phase (inverted biphase) - //get binary from ask wave + // Differential Biphase / di-phase (inverted biphase) + // get binary from ask wave if (ASKbiphaseDemod(0, 32, 1, 100, false) != PM3_SUCCESS) { PrintAndLogEx(DEBUG, "DEBUG: Error - FDX-B ASKbiphaseDemod failed"); return PM3_ESOFT; } + size_t size = g_DemodBufferLen; int preambleIndex = detectFDXB(g_DemodBuffer, &size); if (preambleIndex < 0) { @@ -513,7 +514,6 @@ int demodFDXB(bool verbose) { setDemodBuff(g_DemodBuffer, 128, preambleIndex); setClockGrid(g_DemodClock, g_DemodStartIdx + (preambleIndex * g_DemodClock)); - // remove marker bits (1's every 9th digit after preamble) (pType = 2) size = removeParity(g_DemodBuffer, 11, 9, 2, 117); if (size != 104) { @@ -521,7 +521,7 @@ int demodFDXB(bool verbose) { return PM3_ESOFT; } - //got a good demod + // got a good demod uint8_t offset; // ISO: bits 27..64 uint64_t NationalCode = ((uint64_t)(bytebits_to_byteLSBF(g_DemodBuffer + 32, 6)) << 32) | bytebits_to_byteLSBF(g_DemodBuffer, 32); @@ -559,31 +559,35 @@ int demodFDXB(bool verbose) { offset += 16; uint32_t extended = bytebits_to_byteLSBF(g_DemodBuffer + offset, 24); - uint64_t rawid = (uint64_t)(bytebits_to_byte(g_DemodBuffer, 32)) << 32 | bytebits_to_byte(g_DemodBuffer + 32, 32); - uint8_t raw[8]; - num_to_bytes(rawid, 8, raw); + uint8_t raw[13] = {0}; + for (int i = 0; i < sizeof(raw); i++) { + raw[i] = bytebits_to_byte(g_DemodBuffer + (i * 8), 8); + } - if (!verbose) { + if (verbose == false) { PROMPT_CLEARLINE; - PrintAndLogEx(SUCCESS, "Animal ID " _GREEN_("%04u-%012"PRIu64), countryCode, NationalCode); + PrintAndLogEx(SUCCESS, "Animal ID........... " _GREEN_("%04u-%012"PRIu64), countryCode, NationalCode); return PM3_SUCCESS; } - PrintAndLogEx(SUCCESS, "FDX-B / ISO 11784/5 Animal"); - PrintAndLogEx(SUCCESS, "Animal ID " _GREEN_("%03u-%012"PRIu64), countryCode, NationalCode); - PrintAndLogEx(SUCCESS, "National Code " _GREEN_("%012" PRIu64) " (0x%" PRIX64 ")", NationalCode, NationalCode); - PrintAndLogEx(SUCCESS, "Country Code " _GREEN_("%03u") " - %s", countryCode, mapFDBX(countryCode)); - PrintAndLogEx(SUCCESS, "Reserved/RFU %u (0x%04X)", reservedCode, reservedCode); - PrintAndLogEx(SUCCESS, " Animal bit set? %s", animalBit ? _YELLOW_("True") : "False"); - PrintAndLogEx(SUCCESS, " Data block? %s [value 0x%X]", dataBlockBit ? _YELLOW_("True") : "False", extended); - PrintAndLogEx(SUCCESS, " RUDI bit? %s", rudiBit ? _YELLOW_("True") " (advanced transponder)" : "False"); - PrintAndLogEx(SUCCESS, " User Info? %u %s", userInfo, userInfo == 0 ? "(RFU)" : ""); - PrintAndLogEx(SUCCESS, " Replacement No? %u %s", replacementNr, replacementNr == 0 ? "(RFU)" : ""); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(SUCCESS, _CYAN_("FDX-B / ISO 11784/5 Animal")); + PrintAndLogEx(SUCCESS, "Animal ID......... " _GREEN_("%03u-%012"PRIu64), countryCode, NationalCode); + PrintAndLogEx(SUCCESS, "National Code..... " _GREEN_("%012" PRIu64) " ( 0x%" PRIX64 " )", NationalCode, NationalCode); + PrintAndLogEx(SUCCESS, "Country Code...... " _GREEN_("%03u") " - %s", countryCode, mapFDBX(countryCode)); + PrintAndLogEx(SUCCESS, "Reserved/RFU...... %u (0x%04X)", reservedCode, reservedCode); + PrintAndLogEx(SUCCESS, "Animal bit set?... %s", animalBit ? _YELLOW_("True") : "False"); + PrintAndLogEx(SUCCESS, "Data block?....... %s ( 0x%X )", dataBlockBit ? _YELLOW_("True") : "False", extended); + PrintAndLogEx(SUCCESS, "RUDI bit?......... %s", rudiBit ? _YELLOW_("True") " ( advanced transponder )" : "False"); + PrintAndLogEx(SUCCESS, "User Info?........ %u %s", userInfo, (userInfo == 0) ? "( RFU )" : ""); + PrintAndLogEx(SUCCESS, "Replacement No?... %u %s", replacementNr, replacementNr == 0 ? "( RFU )" : ""); + + // crc only calculated over NORMAL data (8 bytes) uint8_t c[] = {0, 0}; - compute_crc(CRC_11784, raw, sizeof(raw), &c[0], &c[1]); - PrintAndLogEx(SUCCESS, "CRC-16 0x%04X ( %s )", crc, (crc == (c[1] << 8 | c[0])) ? _GREEN_("ok") : _RED_("fail")); + compute_crc(CRC_11784, raw, 8, &c[0], &c[1]); + PrintAndLogEx(SUCCESS, "CRC-16............ 0x%04X ( %s )", crc, (crc == (c[1] << 8 | c[0])) ? _GREEN_("ok") : _RED_("fail")); // iceman: crc doesn't protect the extended data? - PrintAndLogEx(SUCCESS, "Raw " _GREEN_("%s"), sprint_hex(raw, 8)); + PrintAndLogEx(SUCCESS, "Raw............... " _GREEN_("%s"), sprint_hex(raw, sizeof(raw))); if (g_debugMode) { PrintAndLogEx(DEBUG, "Start marker %d; Size %zu", preambleIndex, size); @@ -601,12 +605,13 @@ int demodFDXB(bool verbose) { float bt_C = (bt_F - 32) / 1.8; PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, "Bio-Thermo detected"); - PrintAndLogEx(INFO, " temperature " _GREEN_("%.1f")" F / " _GREEN_("%.1f") " C", bt_F, bt_C); + PrintAndLogEx(INFO, " temperature... " _GREEN_("%.1f")" F / " _GREEN_("%.1f") " C", bt_F, bt_C); } // set block 0 for later //g_DemodConfig = T55x7_MODULATION_DIPHASE | T55x7_BITRATE_RF_32 | 4 << T55x7_MAXBLOCK_SHIFT; + PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } From c72d4a188ded464283df4fe94de78ee222da0de8 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 9 Dec 2023 11:21:42 +0100 Subject: [PATCH 0839/1034] fix string formatter --- client/src/cmdlf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 3cb9075a9..098a05fbc 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -817,7 +817,7 @@ int CmdLFRead(const char *Cmd) { } while (cm && kbd_enter_pressed() == false); if (ret == PM3_SUCCESS) { - PrintAndLogEx(SUCCESS, "Got " _YELLOW_("%u") " samples", g_GraphTraceLen); + PrintAndLogEx(SUCCESS, "Got " _YELLOW_("%zu") " samples", g_GraphTraceLen); if (getSignalProperties()->isnoise) { PrintAndLogEx(INFO, "signal looks like noise"); From 7811a1830bfd275b13795c11cc3fe0331820c2a0 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 9 Dec 2023 12:03:18 +0100 Subject: [PATCH 0840/1034] adapt tests for new output --- tools/pm3_tests.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 6343fcfcd..8798ec269 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -445,10 +445,10 @@ while true; do "EM 410x ID 0F0368568B"; then break; fi if ! CheckExecute slow "lf T55 fdxb_animal test" "$CLIENTBIN -c 'data load -f traces/lf_ATA5577_fdxb_animal.pm3; lf search -1'" "FDX-B ID found"; then break; fi if ! CheckExecute slow "lf T55 fdxb_animal test2" "$CLIENTBIN -c 'data load -f traces/lf_ATA5577_fdxb_animal.pm3; lf fdxb demod'" \ - "Animal ID 999-000000112233"; then break; fi + "Animal ID......... 999-000000112233"; then break; fi if ! CheckExecute slow "lf T55 fdxb_extended test" "$CLIENTBIN -c 'data load -f traces/lf_ATA5577_fdxb_extended.pm3; lf search -1'" "FDX-B ID found"; then break; fi if ! CheckExecute slow "lf T55 fdxb_extended test2" "$CLIENTBIN -c 'data load -f traces/lf_ATA5577_fdxb_extended.pm3; lf fdxb demod'" \ - "temperature 95.2 F / 35.1 C"; then break; fi + "temperature... 95.2 F / 35.1 C"; then break; fi if ! CheckExecute slow "lf T55 gallagher test" "$CLIENTBIN -c 'data load -f traces/lf_ATA5577_gallagher.pm3; lf search -1'" "GALLAGHER ID found"; then break; fi if ! CheckExecute slow "lf T55 gallagher test2" "$CLIENTBIN -c 'data load -f traces/lf_ATA5577_gallagher.pm3; lf gallagher demod'" \ "GALLAGHER - Region: 1 Facility: 16640 Card No.: 201 Issue Level: 1"; then break; fi From 191525768d511032f55df3ab22361ece130c5e0c Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 9 Dec 2023 20:24:18 +0100 Subject: [PATCH 0841/1034] maur --- client/dictionaries/mfc_default_keys.dic | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 48c87b5d3..0ea00bc57 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -1142,6 +1142,33 @@ A2B2C9D187FB # Hotel Adina 9EBC3EB37130 # +# Misc. keys from hotels & library cards in Germany +914f57280ce3 +324a82200018 +370aee95cd69 +2e032ad6850d +1feda39d38ec +288b7a34dbf8 +0965e3193497 +18c628493f7f +064d9423938a +995fd2a2351e +7c7d672bc62e +217250fb7014 +ae7478ccaee7 +abbf6d116eaf +05862c58edfb +e43b7f185460 +6a59aa9a959b +b79e5b175227 +7bc9ebb8274b +b2afbf2331d4 +223e5847dd79 +640524d2a39b +aee297cb2fd6 +3da5dfa54604 +0cf1a2aa1f8d +# # most likely diversifed individual keys. # data from https://github.com/korsehindi/proxmark3/commit/24fdbfa9a1d5c996aaa5c192bc07e4ab28db4c5c 491CDC863104 From b11b797abe3e59f9980bd5841de08a91dcb01966 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 11 Dec 2023 00:48:28 +0200 Subject: [PATCH 0842/1034] info command draft --- client/src/cmdhfmf.c | 97 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 85ecd8033..6284c7766 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8795,10 +8795,107 @@ static int CmdHFMFHidEncode(const char *Cmd) { return PM3_SUCCESS; } +static int CmdHF14AMfInfo(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mf info", + "Information and check vulnerabilities in the mfc card\n" + "To check some of them need to specify key and/or specific keys in the copmmand line", + "hf mf info -k ffffffff -nv\n" + ); + + void *argtable[] = { + arg_param_begin, + arg_str0(NULL, "bin", "<bin>", "Binary string i.e 0001001001"), + arg_lit0("v", "verbose", "verbose output"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + + bool do_nack_test = false; + bool verbose = arg_get_lit(ctx, 2); + CLIParserFree(ctx); + + clearCommandBuffer(); + SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_ACK, &resp, 2500) == false) { + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); + return 0; + } + + iso14a_card_select_t card; + memcpy(&card, (iso14a_card_select_t *)resp.data.asBytes, sizeof(iso14a_card_select_t)); + + /* + 0: couldn't read + 1: OK, with ATS + 2: OK, no ATS + 3: proprietary Anticollision + */ + uint64_t select_status = resp.oldarg[0]; + + if (select_status == 0) { + PrintAndLogEx(DEBUG, "iso14443a card select failed"); + return select_status; + } + + if (select_status == 3) { + PrintAndLogEx(INFO, "Card doesn't support standard iso14443-3 anticollision"); + + if (verbose) { + PrintAndLogEx(SUCCESS, "ATQA: %02X %02X", card.atqa[1], card.atqa[0]); + } + + return select_status; + } + + if (verbose) { + PrintAndLogEx(INFO, "--- " _CYAN_("ISO14443-a Information") "---------------------"); + } + + PrintAndLogEx(SUCCESS, " UID: " _GREEN_("%s"), sprint_hex(card.uid, card.uidlen)); + PrintAndLogEx(SUCCESS, "ATQA: " _GREEN_("%02X %02X"), card.atqa[1], card.atqa[0]); + PrintAndLogEx(SUCCESS, " SAK: " _GREEN_("%02X [%" PRIu64 "]"), card.sak, resp.oldarg[0]); + + int res = detect_classic_static_nonce(); + if (res == NONCE_STATIC) + PrintAndLogEx(SUCCESS, "Static nonce: " _YELLOW_("yes")); + + if (res == NONCE_FAIL && verbose) + PrintAndLogEx(SUCCESS, "Static nonce: " _RED_("read failed")); + + if (res == NONCE_NORMAL) { + + // not static + res = detect_classic_prng(); + if (res == 1) + PrintAndLogEx(SUCCESS, "Prng detection: " _GREEN_("weak")); + else if (res == 0) + PrintAndLogEx(SUCCESS, "Prng detection: " _YELLOW_("hard")); + else + PrintAndLogEx(FAILED, "Prng detection: " _RED_("fail")); + + if (do_nack_test) + detect_classic_nackbug(verbose); + } + + uint8_t signature[32] = {0}; + res = read_mfc_ev1_signature(signature); + if (res == PM3_SUCCESS) { + mfc_ev1_print_signature(card.uid, card.uidlen, signature, sizeof(signature)); + } + + + + PrintAndLogEx(NORMAL, "done..."); + return PM3_SUCCESS; +} + static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, {"list", CmdHF14AMfList, AlwaysAvailable, "List MIFARE history"}, {"-----------", CmdHelp, IfPm3Iso14443a, "----------------------- " _CYAN_("recovery") " -----------------------"}, + {"info", CmdHF14AMfInfo, IfPm3Iso14443a, "mfc card Info"}, {"darkside", CmdHF14AMfDarkside, IfPm3Iso14443a, "Darkside attack"}, {"nested", CmdHF14AMfNested, IfPm3Iso14443a, "Nested attack"}, {"hardnested", CmdHF14AMfNestedHard, AlwaysAvailable, "Nested attack for hardened MIFARE Classic cards"}, From ea467414f4248a19a887d27ebd00717a9654b340 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 11 Dec 2023 00:58:48 +0200 Subject: [PATCH 0843/1034] add magic card detect --- client/src/cmdhfmf.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 6284c7766..f70340aa0 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8879,6 +8879,8 @@ static int CmdHF14AMfInfo(const char *Cmd) { detect_classic_nackbug(verbose); } + detect_mf_magic(true); + uint8_t signature[32] = {0}; res = read_mfc_ev1_signature(signature); if (res == PM3_SUCCESS) { From 30d59ac371213845969c84bea7c49b47f5918397 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 11 Dec 2023 00:06:40 +0100 Subject: [PATCH 0844/1034] Thanks to @h1kari for reversing this algo and sharing it back in 2019. And well done the rest of you who solved it later. --- CHANGELOG.md | 1 + common/generator.c | 67 ++++++++++++++++++++++++++++++++++++---------- 2 files changed, 54 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15a2f4dca..e7940e2c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added Saflok KDF - generate MFC keys (@h1kari) - Changed `lf fdx demod` - now raw bytes shows all data (@iceman1001) - Changed `data num` - now can print reversed and inverse (@iceman1001) - Fixed `hf mf sim -ix` never returning console (@datatags) diff --git a/common/generator.c b/common/generator.c index 20f8a0b5f..27099224a 100644 --- a/common/generator.c +++ b/common/generator.c @@ -326,10 +326,41 @@ int mfc_algo_yale_all(uint8_t *uid, uint8_t *keys) { int mfc_algo_saflok_one(uint8_t *uid, uint8_t sector, uint8_t keytype, uint64_t *key) { if (sector > 15) return PM3_EINVARG; if (key == NULL) return PM3_EINVARG; - if (keytype > 2) return PM3_EINVARG; - *key = 0; + + if (keytype == 0 && sector == 2) { + *key = 0xFFFFFFFFFFFF; return PM3_SUCCESS; } + + if (keytype == 0 && sector == 1) { + *key = 0x2a2c13cc242a; + return PM3_SUCCESS; + } + + if (keytype == 0) { + uint64_t lut[16] = { + 0xf057b39ee3d8ULL, 0x969d954ac157ULL, 0x8f43580d2c9dULL, 0xffcce0050c43ULL, + 0x341b15a690ccULL, 0x89585612e71bULL, 0xbb74b0953658ULL, 0xfb97f84b5b74ULL, + 0xc9d188359f92ULL, 0x8f92e97f5897ULL, 0x166ca2b09fd1ULL, 0x27dd93101c6cULL, + 0xda3e3fd649ddULL, 0x58dded078e3eULL, 0x5cd005cfd907ULL, 0x118dd00187d0ULL + }; + + uint8_t h = ((uid[3] >> 4) & 0xF); + h += ((uid[2] >> 4) & 0xF); + h += uid[0] & 0xF; + + uint64_t m = lut[h & 0xF]; + + uint64_t id = (bytes_to_num(uid, 4) << 8); + + *key = (h + (id + m + ((uint64_t)h << 40ULL))) & 0xFFFFFFFFFFFFULL; + + } else { + *key = 0xFFFFFFFFFFFF; + } + return PM3_SUCCESS; +} + int mfc_algo_saflok_all(uint8_t *uid, uint8_t *keys) { if (keys == NULL) return PM3_EINVARG; @@ -583,7 +614,7 @@ int mfc_algo_touch_one(uint8_t *uid, uint8_t sector, uint8_t keytype, uint64_t * int generator_selftest(void) { #ifndef ON_DEVICE -#define NUM_OF_TEST 9 +#define NUM_OF_TEST 10 PrintAndLogEx(INFO, "PWD / KEY generator selftest"); PrintAndLogEx(INFO, "----------------------------"); @@ -596,42 +627,42 @@ int generator_selftest(void) { if (success) testresult++; - PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid1, 7), pwd1, success ? "OK" : "->8432EB17<-"); + PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid1, 7), pwd1, success ? _GREEN_("ok") : "->8432EB17<-"); uint8_t uid2[] = {0x04, 0x1f, 0x98, 0xea, 0x1e, 0x3e, 0x81}; uint32_t pwd2 = ul_ev1_pwdgenB(uid2); success = (pwd2 == 0x5fd37eca); if (success) testresult++; - PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid2, 7), pwd2, success ? "OK" : "->5fd37eca<--"); + PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid2, 7), pwd2, success ? _GREEN_("ok") : "->5fd37eca<--"); uint8_t uid3[] = {0x04, 0x62, 0xB6, 0x8A, 0xB4, 0x42, 0x80}; uint32_t pwd3 = ul_ev1_pwdgenC(uid3); success = (pwd3 == 0x5a349515); if (success) testresult++; - PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid3, 7), pwd3, success ? "OK" : "->5a349515<--"); + PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid3, 7), pwd3, success ? _GREEN_("ok") : "->5a349515<--"); uint8_t uid4[] = {0x04, 0xC5, 0xDF, 0x4A, 0x6D, 0x51, 0x80}; uint32_t pwd4 = ul_ev1_pwdgenD(uid4); success = (pwd4 == 0x72B1EC61); if (success) testresult++; - PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid4, 7), pwd4, success ? "OK" : "->72B1EC61<--"); + PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid4, 7), pwd4, success ? _GREEN_("ok") : "->72B1EC61<--"); uint8_t uid5[] = {0x04, 0xA0, 0x3C, 0xAA, 0x1E, 0x70, 0x80}; uint32_t pwd5 = ul_ev1_pwdgenE(uid5); success = (pwd5 == 0xCD91AFCC); if (success) testresult++; - PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid5, 7), pwd5, success ? "OK" : "->CD91AFCC<--"); + PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid5, 7), pwd5, success ? _GREEN_("ok") : "->CD91AFCC<--"); uint8_t uid6[] = {0x04, 0x77, 0x42, 0xAB, 0xEF, 0x42, 0x70}; uint32_t pwd6 = ul_ev1_pwdgenF(uid6); success = (pwd6 == 0xA9C4C3C0); if (success) testresult++; - PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid6, 7), pwd6, success ? "OK" : "->A9C4C3C0<--"); + PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid6, 7), pwd6, success ? _GREEN_("ok") : "->A9C4C3C0<--"); uint8_t uid7[] = {0x04, 0x0D, 0x4B, 0x5A, 0xC5, 0x71, 0x81}; uint8_t mfg[] = {0x32, 0x31, 0x30, 0x36, 0x32, 0x38, 0x20, 0x35, 0x32, 0x4D}; @@ -639,13 +670,13 @@ int generator_selftest(void) { success = (pwd7 == 0xFBCFACC1); if (success) testresult++; - PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid7, 7), pwd7, success ? "OK" : "->FBCFACC1<--"); + PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid7, 7), pwd7, success ? _GREEN_("ok") : "->FBCFACC1<--"); // uint8_t uid5[] = {0x11, 0x22, 0x33, 0x44}; // uint64_t key1 = mfc_algo_a(uid5); // success = (key1 == 0xD1E2AA68E39A); -// PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %"PRIx64" - %s", sprint_hex(uid5, 4), key1, success ? "OK" : "->D1E2AA68E39A<--"); +// PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %"PRIx64" - %s", sprint_hex(uid5, 4), key1, success ? _GREEN_("ok") : "->D1E2AA68E39A<--"); uint8_t uid8[] = {0x74, 0x57, 0xCA, 0xA9}; uint64_t key8 = 0; @@ -653,16 +684,24 @@ int generator_selftest(void) { success = (key8 == 0x82c7e64bc565); if (success) testresult++; - PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %"PRIx64" - %s", sprint_hex(uid8, 4), key8, success ? "OK" : "->82C7E64BC565<--"); + PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %"PRIx64" - %s", sprint_hex(uid8, 4), key8, success ? _GREEN_("ok") : "->82C7E64BC565<--"); + // MFC SAFLOK + uint8_t uid9[] = {0x11, 0x22, 0x33, 0x44}; + uint64_t key9 = 0; + mfc_algo_saflok_one(uid9, 0, 0, &key9); + success = (key9 == 0xD1E2AA68E39A); + if (success) + testresult++; + PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %"PRIX64" - %s", sprint_hex(uid9, 4), key9, success ? _GREEN_("ok") : _RED_(">> D1E2AA68E39A <<")); uint32_t lf_id = lf_t55xx_white_pwdgen(0x00000080); success = (lf_id == 0x00018383); if (success) testresult++; - PrintAndLogEx(success ? SUCCESS : WARNING, "ID | 0x00000080 | %08"PRIx32 " - %s", lf_id, success ? "OK" : "->00018383<--"); + PrintAndLogEx(success ? SUCCESS : WARNING, "ID | 0x00000080 | %08"PRIx32 " - %s", lf_id, success ? _GREEN_("ok") : "->00018383<--"); - PrintAndLogEx(SUCCESS, "------------------- Selftest %s", (testresult == NUM_OF_TEST) ? "OK" : "fail"); + PrintAndLogEx(SUCCESS, "------------------- Selftest %s", (testresult == NUM_OF_TEST) ? _GREEN_("ok") : _RED_("fail")); #endif return PM3_SUCCESS; From 9d55455d6628d98b3070874e76f3525c978115e4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 11 Dec 2023 00:10:53 +0100 Subject: [PATCH 0845/1034] fix test for the change of text --- tools/pm3_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 8798ec269..e56ce5d25 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -402,7 +402,7 @@ while true; do if ! CheckExecute "reveng readline test" "$CLIENTBIN -c 'reveng -h;reveng -D'" "CRC-64/GO-ISO"; then break; fi if ! CheckExecute "reveng -g test" "$CLIENTBIN -c 'reveng -g abda202c'" "CRC-16/ISO-IEC-14443-3-A"; then break; fi if ! CheckExecute "reveng -w test" "$CLIENTBIN -c 'reveng -w 8 -s 01020304e3 010204039d'" "CRC-8/SMBUS"; then break; fi - if ! CheckExecute "mfu pwdgen test" "$CLIENTBIN -c 'hf mfu pwdgen -t'" "Selftest OK"; then break; fi + if ! CheckExecute "mfu pwdgen test" "$CLIENTBIN -c 'hf mfu pwdgen -t'" "Selftest ok"; then break; fi if ! CheckExecute "mfu keygen test" "$CLIENTBIN -c 'hf mfu keygen --uid 11223344556677'" "80 B1 C2 71 D8 A0"; then break; fi if ! CheckExecute "jooki encode test" "$CLIENTBIN -c 'hf jooki encode -t'" "04 28 F4 DA F0 4A 81 \( ok \)"; then break; fi if ! CheckExecute "trace load/list 14a" "$CLIENTBIN -c 'trace load -f traces/hf_14a_mfu.trace; trace list -1 -t 14a;'" "READBLOCK\(8\)"; then break; fi From e2f568b740f17842a52f3a2cd8ec1ca82c6ff0ca Mon Sep 17 00:00:00 2001 From: kitsunehunter <90627943+kitsunehunter@users.noreply.github.com> Date: Sun, 10 Dec 2023 22:34:12 -0500 Subject: [PATCH 0846/1034] Update Notes documentation Added documentation on HID downgrades and RM Signed-off-by: kitsunehunter <90627943+kitsunehunter@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 89bacebf1..538d5b952 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ The Proxmark3 is the swiss-army tool of RFID, allowing for interactions with the |[Developing standalone mode](/armsrc/Standalone/readme.md)|[Wiki about standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode)|[Notes on Magic UID cards](/doc/magic_cards_notes.md)| |[Notes on Color usage](/doc/colors_notes.md)|[Makefile vs CMake](/doc/md/Development/Makefile-vs-CMake.md)|[Notes on Cloner guns](/doc/cloner_notes.md)| |[Notes on cliparser usage](/doc/cliparser.md)|[Notes on clocks](/doc/clocks.md)|[Notes on MIFARE DESFire](/doc/desfire.md)| -|[Notes on CIPURSE](/doc/cipurse.md)|[Notes on NDEF type4a](/doc/ndef_type4a.md)|| +|[Notes on CIPURSE](/doc/cipurse.md)|[Notes on NDEF type4a](/doc/ndef_type4a.md)|[Notes on HID downgrades / RM](https://gist.github.com/kitsunehunter/c75294bdbd0533eca298d122c39fb1bd)| # How to build? From 1ab70541aa6fba2b412fcf2efbe1d0961ec3dccd Mon Sep 17 00:00:00 2001 From: kitsunehunter <90627943+kitsunehunter@users.noreply.github.com> Date: Sun, 10 Dec 2023 22:47:06 -0500 Subject: [PATCH 0847/1034] Update extensions_notes.md eml deprecated Signed-off-by: kitsunehunter <90627943+kitsunehunter@users.noreply.github.com> --- doc/extensions_notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/extensions_notes.md b/doc/extensions_notes.md index 063ce2b85..266a4df1e 100644 --- a/doc/extensions_notes.md +++ b/doc/extensions_notes.md @@ -6,7 +6,7 @@ The Proxmark3 client uses a wide range of files. Here is a brief recap to get yo |---|---| | .exe | windows executable | | .bin | binary file, can be firmware or memory dump of a tag or keys dump of a tag| -| .eml | text file, with memory dump of a tag | +| .eml | text file, with memory dump of a tag (deprecated) | | .mfd | binary file, MIFARE file dump, name comes from NFC-Tools. Usually created with Mifare Classic Tool app (MCT) or NFC-Tools, contains memory dump of tag. Very similar to .bin file | | .json | JSON file, usually settings file or it can also be a memory dump of a tag | | .dic | dictionary file. textual, with keys/passwords one line / key | From 6066e7e924f53e9721e99823d76cfa0ad55bedaa Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 11 Dec 2023 14:22:19 +0200 Subject: [PATCH 0848/1034] rearrange some keys and add one from the bottom --- client/src/mifare/mifaredefault.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/client/src/mifare/mifaredefault.h b/client/src/mifare/mifaredefault.h index 0a631a765..d94aae269 100644 --- a/client/src/mifare/mifaredefault.h +++ b/client/src/mifare/mifaredefault.h @@ -55,7 +55,9 @@ static const uint64_t g_mifare_default_keys[] = { 0xffffffffffff, // Default key (first key used by program if no user defined key) - 0xa0a1a2a3a4a5, // NFCForum MAD key + 0xa0a1a2a3a4a5, // NFCForum MAD key A + 0xb0b1b2b3b4b5, // NFCForum MAD key B + 0x89ECA97F8C2A, // NFCForum MAD key B 0xd3f7d3f7d3f7, // NDEF public key 0x4b791bea7bcc, // MFC EV1 Signature 17 B 0x5C8FF9990DA2, // MFC EV1 Signature 16 A @@ -95,13 +97,12 @@ static const uint64_t g_mifare_default_keys[] = { 0x11496F97752A, // HID 0x3E65E4FB65B3, // Gym 0x000000000000, // Blank key - 0xb0b1b2b3b4b5, - 0xaabbccddeeff, + 0x010203040506, 0x1a2b3c4d5e6f, 0x123456789abc, - 0x010203040506, 0x123456abcdef, 0xabcdef123456, + 0xaabbccddeeff, 0x4d3a99c351dd, 0x1a982c7e459a, 0x714c5c886e97, From fb51bf4fa1698a42d9f5d8587b895c40f329cc50 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 11 Dec 2023 14:23:26 +0200 Subject: [PATCH 0849/1034] add backdoor info and check keys for sector 0 --- client/src/cmdhfmf.c | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index f70340aa0..bd9eead19 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8806,13 +8806,14 @@ static int CmdHF14AMfInfo(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_str0(NULL, "bin", "<bin>", "Binary string i.e 0001001001"), + arg_lit0("n", "nack", "do nack test"), arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool do_nack_test = false; - bool verbose = arg_get_lit(ctx, 2); + bool do_nack_test = arg_get_lit(ctx, 2); + bool verbose = arg_get_lit(ctx, 3); CLIParserFree(ctx); clearCommandBuffer(); @@ -8849,14 +8850,13 @@ static int CmdHF14AMfInfo(const char *Cmd) { return select_status; } - if (verbose) { - PrintAndLogEx(INFO, "--- " _CYAN_("ISO14443-a Information") "---------------------"); - } - + PrintAndLogEx(INFO, "--- " _CYAN_("ISO14443-a Information") "---------------------"); PrintAndLogEx(SUCCESS, " UID: " _GREEN_("%s"), sprint_hex(card.uid, card.uidlen)); PrintAndLogEx(SUCCESS, "ATQA: " _GREEN_("%02X %02X"), card.atqa[1], card.atqa[0]); PrintAndLogEx(SUCCESS, " SAK: " _GREEN_("%02X [%" PRIu64 "]"), card.sak, resp.oldarg[0]); + PrintAndLogEx(INFO, "--- " _CYAN_("RNG Information") "---------------------"); + int res = detect_classic_static_nonce(); if (res == NONCE_STATIC) PrintAndLogEx(SUCCESS, "Static nonce: " _YELLOW_("yes")); @@ -8879,11 +8879,37 @@ static int CmdHF14AMfInfo(const char *Cmd) { detect_classic_nackbug(verbose); } - detect_mf_magic(true); + PrintAndLogEx(INFO, "--- " _CYAN_("Backdoors Information") "---------------------"); + if (detect_mf_magic(true) == 0) + PrintAndLogEx(INFO, "<none>"); + + PrintAndLogEx(INFO, "--- " _CYAN_("Keys Information") "---------------------"); + int sectorsCnt = 1; + uint8_t *keyBlock = NULL; + uint32_t keycnt = 0; + int ret = mfLoadKeys(&keyBlock, &keycnt, NULL, 0, NULL, 0); + if (ret != PM3_SUCCESS) { + return ret; + } + + // create/initialize key storage structure + sector_t *e_sector = NULL; + if (initSectorTable(&e_sector, sectorsCnt) != PM3_SUCCESS) { + free(keyBlock); + return PM3_EMALLOC; + } + res = mfCheckKeys_fast(sectorsCnt, true, true, 1, keycnt, keyBlock, e_sector, false); + + PrintAndLogEx(FAILED, "res: %d, %d %d", res, e_sector[0].foundKey[0], e_sector[0].foundKey[1]); + + free(keyBlock); + free(e_sector); + uint8_t signature[32] = {0}; res = read_mfc_ev1_signature(signature); - if (res == PM3_SUCCESS) { + if (res == PM3_SUCCESS) { + PrintAndLogEx(INFO, "--- " _CYAN_("Signature Information") "---------------------"); mfc_ev1_print_signature(card.uid, card.uidlen, signature, sizeof(signature)); } From af0e25b51935e3c17769591daab07dd8bd4a9310 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 11 Dec 2023 15:44:43 +0200 Subject: [PATCH 0850/1034] read block0 and check keys --- client/src/cmdhfmf.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index bd9eead19..f258c9ac3 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8884,6 +8884,9 @@ static int CmdHF14AMfInfo(const char *Cmd) { PrintAndLogEx(INFO, "<none>"); PrintAndLogEx(INFO, "--- " _CYAN_("Keys Information") "---------------------"); + uint8_t key[MIFARE_KEY_SIZE] = {0}; + uint8_t keyType = 0xff; + int sectorsCnt = 1; uint8_t *keyBlock = NULL; uint32_t keycnt = 0; @@ -8899,8 +8902,30 @@ static int CmdHF14AMfInfo(const char *Cmd) { return PM3_EMALLOC; } res = mfCheckKeys_fast(sectorsCnt, true, true, 1, keycnt, keyBlock, e_sector, false); + if (res == PM3_SUCCESS) { + uint8_t blockdata[MFBLOCK_SIZE] = {0}; - PrintAndLogEx(FAILED, "res: %d, %d %d", res, e_sector[0].foundKey[0], e_sector[0].foundKey[1]); + if (e_sector[0].foundKey[0]) { + PrintAndLogEx(SUCCESS, "Sector 0 key A... %12llx", e_sector[0].Key[0]); + + num_to_bytes(e_sector[0].Key[0], MIFARE_KEY_SIZE, key); + if (mfReadBlock(0, MF_KEY_A, key, blockdata) == PM3_SUCCESS) + keyType = MF_KEY_A; + } + + if (e_sector[0].foundKey[1]) { + PrintAndLogEx(SUCCESS, "Sector 0 key B... %12llx", e_sector[0].Key[1]); + + if (keyType == 0xff) { + num_to_bytes(e_sector[0].Key[1], MIFARE_KEY_SIZE, key); + if (mfReadBlock(0, MF_KEY_B, key, blockdata) == PM3_SUCCESS) + keyType = MF_KEY_B; + } + } + + if (keyType != 0xff) + PrintAndLogEx(SUCCESS, "Block 0 ......... %s", sprint_hex(blockdata, MFBLOCK_SIZE)); + } free(keyBlock); free(e_sector); From ebe9d72cc20df221ffa213bbd04326bdf73fb6f5 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 11 Dec 2023 18:46:25 +0200 Subject: [PATCH 0851/1034] set debug log level --- armsrc/appmain.c | 3 ++- client/src/cmdhw.c | 16 ++++++---------- client/src/preferences.c | 38 ++++++++++++++++++++++++++++++++++++++ client/src/preferences.h | 3 +++ 4 files changed, 49 insertions(+), 11 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index fc07d66f8..ce6d79dbb 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -799,7 +799,8 @@ static void PacketReceived(PacketCommandNG *packet) { // emulator case CMD_SET_DBGMODE: { g_dbglevel = packet->data.asBytes[0]; - print_debug_level(); + if (packet->length == 1 || packet->data.asBytes[1] != 0) + print_debug_level(); reply_ng(CMD_SET_DBGMODE, PM3_SUCCESS, NULL, 0); break; } diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index b355e66cb..184aa58e8 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -31,6 +31,7 @@ #include "cmdhw.h" #include "cmddata.h" #include "commonutil.h" +#include "preferences.h" #include "pm3_cmd.h" #include "pmflash.h" // rdv40validation_t #include "cmdflashmem.h" // get_signature.. @@ -476,14 +477,9 @@ static int CmdDbg(const char *Cmd) { return PM3_EINVARG; } - clearCommandBuffer(); - SendCommandNG(CMD_GET_DBGMODE, NULL, 0); - PacketResponseNG resp; - if (WaitForResponseTimeout(CMD_GET_DBGMODE, &resp, 2000) == false) { - PrintAndLogEx(WARNING, "Failed to get current device debug level"); - return PM3_ETIMEOUT; - } - uint8_t curr = resp.data.asBytes[0]; + uint8_t curr = DBG_NONE; + if (getDeviceDebugLevel(&curr) != PM3_SUCCESS) + return PM3_EFAILED; const char *dbglvlstr; switch (curr) { @@ -522,8 +518,8 @@ static int CmdDbg(const char *Cmd) { else if (lv4) dbg = 4; - clearCommandBuffer(); - SendCommandNG(CMD_SET_DBGMODE, &dbg, sizeof(dbg)); + if (setDeviceDebugLevel(dbg, true) != PM3_SUCCESS) + return PM3_EFAILED; } return PM3_SUCCESS; } diff --git a/client/src/preferences.c b/client/src/preferences.c index dd697da74..4effb1bef 100644 --- a/client/src/preferences.c +++ b/client/src/preferences.c @@ -762,6 +762,44 @@ static int setCmdDeviceDebug (const char *Cmd) } */ +int getDeviceDebugLevel (uint8_t *debug_level) { + if (!g_session.pm3_present) + return PM3_EFAILED; + + clearCommandBuffer(); + SendCommandNG(CMD_GET_DBGMODE, NULL, 0); + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_GET_DBGMODE, &resp, 2000) == false) { + PrintAndLogEx(WARNING, "Failed to get current device debug level"); + return PM3_ETIMEOUT; + } + + if (debug_level) + *debug_level = resp.data.asBytes[0]; + + return PM3_SUCCESS; +} + +int setDeviceDebugLevel (uint8_t debug_level, bool verbose) { + if (!g_session.pm3_present) + return PM3_EFAILED; + + if (verbose) + PrintAndLogEx (INFO,"setting device debug loglevel to %u", debug_level); + + uint8_t cdata[] = {debug_level, verbose}; + clearCommandBuffer(); + SendCommandNG(CMD_SET_DBGMODE, cdata, sizeof(cdata)); + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_SET_DBGMODE, &resp, 2000) == false) { + PrintAndLogEx (WARNING,"failed to set device debug loglevel"); + return PM3_EFAILED; + } + + return PM3_SUCCESS; +} + + static int setCmdOutput(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "prefs set output", diff --git a/client/src/preferences.h b/client/src/preferences.h index 56ba72fa3..74e3bc2a8 100644 --- a/client/src/preferences.h +++ b/client/src/preferences.h @@ -31,4 +31,7 @@ int preferences_save(void); void preferences_save_callback(json_t *root); void preferences_load_callback(json_t *root); +int getDeviceDebugLevel (uint8_t *debug_level); +int setDeviceDebugLevel (uint8_t debug_level, bool verbose); + #endif From 784e11021e939712f3a784dcfe39f701e044e374 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 11 Dec 2023 19:00:09 +0200 Subject: [PATCH 0852/1034] Remove debug messages from the info command --- client/src/cmdhfmf.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index f258c9ac3..89dec7c6e 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -39,6 +39,7 @@ #include "cmdhw.h" // set_fpga_mode #include "loclass/cipherutils.h" // BitstreamOut_t #include "proxendian.h" +#include "preferences.h" #include "mifare/gen4.h" static int CmdHelp(const char *Cmd); @@ -8816,6 +8817,10 @@ static int CmdHF14AMfInfo(const char *Cmd) { bool verbose = arg_get_lit(ctx, 3); CLIParserFree(ctx); + uint8_t dbg_curr = DBG_NONE; + if (getDeviceDebugLevel(&dbg_curr) != PM3_SUCCESS) + return PM3_EFAILED; + clearCommandBuffer(); SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; @@ -8855,6 +8860,9 @@ static int CmdHF14AMfInfo(const char *Cmd) { PrintAndLogEx(SUCCESS, "ATQA: " _GREEN_("%02X %02X"), card.atqa[1], card.atqa[0]); PrintAndLogEx(SUCCESS, " SAK: " _GREEN_("%02X [%" PRIu64 "]"), card.sak, resp.oldarg[0]); + if (setDeviceDebugLevel(DBG_NONE, false) != PM3_SUCCESS) + return PM3_EFAILED; + PrintAndLogEx(INFO, "--- " _CYAN_("RNG Information") "---------------------"); int res = detect_classic_static_nonce(); @@ -8938,7 +8946,8 @@ static int CmdHF14AMfInfo(const char *Cmd) { mfc_ev1_print_signature(card.uid, card.uidlen, signature, sizeof(signature)); } - + if (setDeviceDebugLevel(dbg_curr, false) != PM3_SUCCESS) + return PM3_EFAILED; PrintAndLogEx(NORMAL, "done..."); return PM3_SUCCESS; From edd004adc5dc9310b681abc6b64cec080358d425 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 11 Dec 2023 19:17:03 +0200 Subject: [PATCH 0853/1034] move rng info and add static encrypted nonce detect placeholder --- client/src/cmdhfmf.c | 59 +++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 89dec7c6e..7324ea195 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8863,30 +8863,6 @@ static int CmdHF14AMfInfo(const char *Cmd) { if (setDeviceDebugLevel(DBG_NONE, false) != PM3_SUCCESS) return PM3_EFAILED; - PrintAndLogEx(INFO, "--- " _CYAN_("RNG Information") "---------------------"); - - int res = detect_classic_static_nonce(); - if (res == NONCE_STATIC) - PrintAndLogEx(SUCCESS, "Static nonce: " _YELLOW_("yes")); - - if (res == NONCE_FAIL && verbose) - PrintAndLogEx(SUCCESS, "Static nonce: " _RED_("read failed")); - - if (res == NONCE_NORMAL) { - - // not static - res = detect_classic_prng(); - if (res == 1) - PrintAndLogEx(SUCCESS, "Prng detection: " _GREEN_("weak")); - else if (res == 0) - PrintAndLogEx(SUCCESS, "Prng detection: " _YELLOW_("hard")); - else - PrintAndLogEx(FAILED, "Prng detection: " _RED_("fail")); - - if (do_nack_test) - detect_classic_nackbug(verbose); - } - PrintAndLogEx(INFO, "--- " _CYAN_("Backdoors Information") "---------------------"); if (detect_mf_magic(true) == 0) PrintAndLogEx(INFO, "<none>"); @@ -8898,9 +8874,9 @@ static int CmdHF14AMfInfo(const char *Cmd) { int sectorsCnt = 1; uint8_t *keyBlock = NULL; uint32_t keycnt = 0; - int ret = mfLoadKeys(&keyBlock, &keycnt, NULL, 0, NULL, 0); - if (ret != PM3_SUCCESS) { - return ret; + int res = mfLoadKeys(&keyBlock, &keycnt, NULL, 0, NULL, 0); + if (res != PM3_SUCCESS) { + return res; } // create/initialize key storage structure @@ -8938,6 +8914,34 @@ static int CmdHF14AMfInfo(const char *Cmd) { free(keyBlock); free(e_sector); + PrintAndLogEx(INFO, "--- " _CYAN_("RNG Information") "---------------------"); + + res = detect_classic_static_nonce(); + if (res == NONCE_STATIC) + PrintAndLogEx(SUCCESS, "Static nonce: " _YELLOW_("yes")); + + if (res == NONCE_FAIL && verbose) + PrintAndLogEx(SUCCESS, "Static nonce: " _RED_("read failed")); + + if (res == NONCE_NORMAL) { + // not static + res = detect_classic_prng(); + if (res == 1) + PrintAndLogEx(SUCCESS, "Prng detection: " _GREEN_("weak")); + else if (res == 0) + PrintAndLogEx(SUCCESS, "Prng detection: " _YELLOW_("hard")); + else + PrintAndLogEx(FAILED, "Prng detection: " _RED_("fail")); + + + // detect static encrypted nonce + if (keyType != 0xff) { + + } + + if (do_nack_test) + detect_classic_nackbug(verbose); + } uint8_t signature[32] = {0}; res = read_mfc_ev1_signature(signature); @@ -8949,7 +8953,6 @@ static int CmdHF14AMfInfo(const char *Cmd) { if (setDeviceDebugLevel(dbg_curr, false) != PM3_SUCCESS) return PM3_EFAILED; - PrintAndLogEx(NORMAL, "done..."); return PM3_SUCCESS; } From d352f9d44ec06384572bdbba6cbf37b8a2d52ff0 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 11 Dec 2023 19:21:25 +0200 Subject: [PATCH 0854/1034] add key placeholder --- client/src/cmdhfmf.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 7324ea195..3a400899c 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8806,15 +8806,30 @@ static int CmdHF14AMfInfo(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str0(NULL, "bin", "<bin>", "Binary string i.e 0001001001"), + arg_str0("k", "key", "<hex>", "key, 6 hex bytes"), + arg_lit0("a", NULL, "input key type is key A (def)"), + arg_lit0("b", NULL, "input key type is key B"), arg_lit0("n", "nack", "do nack test"), arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool do_nack_test = arg_get_lit(ctx, 2); - bool verbose = arg_get_lit(ctx, 3); + /*uint8_t keytype = MF_KEY_A; + if (arg_get_lit(ctx, 2) && arg_get_lit(ctx, 3)) { + CLIParserFree(ctx); + PrintAndLogEx(WARNING, "Input key type must be A or B"); + return PM3_EINVARG; + } else if (arg_get_lit(ctx, 3)) { + keytype = MF_KEY_B; + } + + int keylen = 0; + uint8_t key[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; + CLIGetHexWithReturn(ctx, 4, key, &keylen); +*/ + bool do_nack_test = arg_get_lit(ctx, 4); + bool verbose = arg_get_lit(ctx, 5); CLIParserFree(ctx); uint8_t dbg_curr = DBG_NONE; From 91892bc1bf1a23369afb57ce525b805e87098416 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 11 Dec 2023 21:24:26 +0200 Subject: [PATCH 0855/1034] add static encrypted nonce detection --- armsrc/appmain.c | 11 ++++++ armsrc/mifarecmd.c | 71 +++++++++++++++++++++++++++++++++- armsrc/mifarecmd.h | 1 + armsrc/mifareutil.c | 6 ++- armsrc/mifareutil.h | 2 +- client/src/cmdhfmf.c | 8 +++- client/src/mifare/mifarehost.c | 27 +++++++++++++ client/src/mifare/mifarehost.h | 1 + include/pm3_cmd.h | 8 ++-- 9 files changed, 125 insertions(+), 10 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index ce6d79dbb..849bfcb2b 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -1866,6 +1866,17 @@ static void PacketReceived(PacketCommandNG *packet) { MifareHasStaticNonce(); break; } + case CMD_HF_MIFARE_STATIC_ENCRYPTED_NONCE: { + struct p { + uint8_t block_no; + uint8_t key_type; + uint8_t key[6]; + } PACKED; + struct p *payload = (struct p *) packet->data.asBytes; + + MifareHasStaticEncryptedNonce(payload->block_no, payload->key_type, payload->key); + break; + } #endif #ifdef WITH_NFCBARCODE diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 32e90d56a..1f0683599 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -90,7 +90,7 @@ int16_t mifare_cmd_readblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t read_c goto OUT; } - if (mifare_classic_authex_cmd(pcs, cuid, block_no, key_auth_cmd, ui64key, AUTH_FIRST, NULL, NULL)) { + if (mifare_classic_authex_cmd(pcs, cuid, block_no, key_auth_cmd, ui64key, AUTH_FIRST, NULL, NULL, NULL)) { if (g_dbglevel >= DBG_ERROR) Dbprintf("Auth error"); retval = PM3_ESOFT; goto OUT; @@ -158,7 +158,7 @@ int16_t mifare_cmd_writeblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t write goto OUT; }; - if (mifare_classic_authex_cmd(pcs, cuid, block_no, key_auth_cmd, ui64key, AUTH_FIRST, NULL, NULL)) { + if (mifare_classic_authex_cmd(pcs, cuid, block_no, key_auth_cmd, ui64key, AUTH_FIRST, NULL, NULL, NULL)) { if (g_dbglevel >= DBG_ERROR) Dbprintf("Auth error"); retval = PM3_ESOFT; goto OUT; @@ -2681,6 +2681,73 @@ OUT: // 2B F9 1C 1B D5 08 48 48 03 A4 B1 B1 75 FF 2D 90 // ^^ ^^ +void MifareHasStaticEncryptedNonce(uint8_t block_no, uint8_t key_type, uint8_t *key) { + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + + clear_trace(); + set_tracing(true); + + int retval = PM3_SUCCESS; + uint8_t *uid = BigBuf_malloc(10); + memset(uid, 0x00, 10); + + uint8_t data[1] = { NONCE_FAIL }; + struct Crypto1State mpcs = {0, 0}; + struct Crypto1State *pcs; + pcs = &mpcs; + uint64_t ui64key = bytes_to_num(key, 6); + + iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + + iso14a_card_select_t card_info; + uint32_t cuid = 0; + if (!iso14443a_select_card(uid, &card_info, &cuid, true, 0, true)) { + retval = PM3_ESOFT; + goto OUT; + } + + uint8_t key_auth_cmd = MIFARE_AUTH_KEYA + (key_type & 1); + if (mifare_classic_authex_cmd(pcs, cuid, block_no, key_auth_cmd, ui64key, AUTH_FIRST, NULL, NULL, NULL)) { + if (g_dbglevel >= DBG_ERROR) Dbprintf("Auth error"); + retval = PM3_ESOFT; + goto OUT; + }; + + uint32_t nt = 0; + uint8_t enc_counter = 0; + uint32_t ntenc = 0; + uint32_t oldntenc = 0; + for (uint8_t i = 0; i < 3; i++) { + if (mifare_classic_authex_cmd(pcs, cuid, block_no, key_auth_cmd, ui64key, AUTH_NESTED, &nt, &ntenc, NULL)) { + if (g_dbglevel >= DBG_ERROR) Dbprintf("Auth error"); + retval = PM3_ESOFT; + goto OUT; + }; + + if (g_dbglevel >= DBG_INFO) + Dbprintf("nt: %x, nt encoded: %x", nt, ntenc); + + if (oldntenc == 0) + oldntenc = ntenc; + else if (ntenc == oldntenc) + enc_counter++; + } + + if (enc_counter) { + data[0] = NONCE_STATIC_ENC; + } else { + data[0] = NONCE_NORMAL; + } + +OUT: + crypto1_deinit(pcs); + + reply_ng(CMD_HF_MIFARE_STATIC_ENCRYPTED_NONCE, retval, data, sizeof(data)); + // turns off + OnSuccessMagic(); + BigBuf_free(); +} + void OnSuccessMagic(void) { FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); LEDsoff(); diff --git a/armsrc/mifarecmd.h b/armsrc/mifarecmd.h index 52bc37f35..64df74f97 100644 --- a/armsrc/mifarecmd.h +++ b/armsrc/mifarecmd.h @@ -49,6 +49,7 @@ void MifareCSetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain); // Work wi void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain); void MifareCIdent(bool is_mfc); // is "magic chinese" card? void MifareHasStaticNonce(void); // Has the tag a static nonce? +void MifareHasStaticEncryptedNonce(uint8_t block_no, uint8_t key_type, uint8_t *key); // Has the tag a static encrypted nonce? // MFC GEN3 int DoGen3Cmd(uint8_t *cmd, uint8_t cmd_len); diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c index 581efda8f..3258007e3 100644 --- a/armsrc/mifareutil.c +++ b/armsrc/mifareutil.c @@ -142,9 +142,9 @@ int mifare_classic_auth(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, return mifare_classic_authex(pcs, uid, blockNo, keyType, ui64Key, isNested, NULL, NULL); } int mifare_classic_authex(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t keyType, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *timing) { - return mifare_classic_authex_cmd(pcs, uid, blockNo, (keyType & 1) ? MIFARE_AUTH_KEYB : MIFARE_AUTH_KEYA, ui64Key, isNested, ntptr, timing); + return mifare_classic_authex_cmd(pcs, uid, blockNo, (keyType & 1) ? MIFARE_AUTH_KEYB : MIFARE_AUTH_KEYA, ui64Key, isNested, ntptr, NULL, timing); } -int mifare_classic_authex_cmd(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t cmd, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *timing) { +int mifare_classic_authex_cmd(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t cmd, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *ntencptr, uint32_t *timing) { // "random" reader nonce: uint8_t nr[4]; @@ -159,6 +159,8 @@ int mifare_classic_authex_cmd(struct Crypto1State *pcs, uint32_t uid, uint8_t bl // Save the tag nonce (nt) uint32_t nt = bytes_to_num(receivedAnswer, 4); + if (ntencptr) + *ntencptr = nt; // ----------------------------- crypto1 create if (isNested) diff --git a/armsrc/mifareutil.h b/armsrc/mifareutil.h index 1e45d50be..e7ee0f7f9 100644 --- a/armsrc/mifareutil.h +++ b/armsrc/mifareutil.h @@ -72,7 +72,7 @@ uint16_t mifare_sendcmd_short(struct Crypto1State *pcs, uint8_t crypted, uint8_t // mifare classic int mifare_classic_auth(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t keyType, uint64_t ui64Key, uint8_t isNested); int mifare_classic_authex(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t keyType, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *timing); -int mifare_classic_authex_cmd(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t cmd, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *timing); +int mifare_classic_authex_cmd(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t cmd, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *ntencptr, uint32_t *timing); int mifare_classic_readblock(struct Crypto1State *pcs, uint8_t blockNo, uint8_t *blockData); int mifare_classic_readblock_ex(struct Crypto1State *pcs, uint8_t blockNo, uint8_t *blockData, uint8_t iso_byte); diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 3a400899c..357e1d45e 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8875,7 +8875,7 @@ static int CmdHF14AMfInfo(const char *Cmd) { PrintAndLogEx(SUCCESS, "ATQA: " _GREEN_("%02X %02X"), card.atqa[1], card.atqa[0]); PrintAndLogEx(SUCCESS, " SAK: " _GREEN_("%02X [%" PRIu64 "]"), card.sak, resp.oldarg[0]); - if (setDeviceDebugLevel(DBG_NONE, false) != PM3_SUCCESS) + if (setDeviceDebugLevel(verbose ? DBG_INFO : DBG_NONE, false) != PM3_SUCCESS) return PM3_EFAILED; PrintAndLogEx(INFO, "--- " _CYAN_("Backdoors Information") "---------------------"); @@ -8951,7 +8951,11 @@ static int CmdHF14AMfInfo(const char *Cmd) { // detect static encrypted nonce if (keyType != 0xff) { - + res = detect_classic_static_encrypted_nonce(0, keyType, key); // TODO: add block number to the config + if (res == NONCE_STATIC) + PrintAndLogEx(SUCCESS, "Static nested nonce: " _YELLOW_("yes")); + if (res == NONCE_STATIC_ENC) + PrintAndLogEx(SUCCESS, "Static encrypted nonce: " _YELLOW_("yes")); } if (do_nack_test) diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index f28f38aaa..8c129b8d9 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -1349,6 +1349,33 @@ int detect_classic_static_nonce(void) { return NONCE_FAIL; } +/* Detect Mifare Classic static encrypted nonce +detects special magic cards that has a static / fixed nonce +returns: +0 = nonce ok +1 = has static/fixed nonce +2 = cmd failed +3 = has encrypted nonce +*/ +int detect_classic_static_encrypted_nonce(uint8_t block_no, uint8_t key_type, uint8_t *key) { + + clearCommandBuffer(); + uint8_t cdata[1 + 1 + MIFARE_KEY_SIZE] = {0}; + cdata[0] = block_no; + cdata[1] = key_type; + memcpy(&cdata[2], key, MIFARE_KEY_SIZE); + SendCommandNG(CMD_HF_MIFARE_STATIC_ENCRYPTED_NONCE, cdata, sizeof(cdata)); + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_HF_MIFARE_STATIC_ENCRYPTED_NONCE, &resp, 1000)) { + + if (resp.status == PM3_ESOFT) + return NONCE_FAIL; + + return resp.data.asBytes[0]; + } + return NONCE_FAIL; +} + /* try to see if card responses to "Chinese magic backdoor" commands. */ int detect_mf_magic(bool is_mfc) { diff --git a/client/src/mifare/mifarehost.h b/client/src/mifare/mifarehost.h index 6f131f924..5eacabda3 100644 --- a/client/src/mifare/mifarehost.h +++ b/client/src/mifare/mifarehost.h @@ -102,6 +102,7 @@ int detect_classic_prng(void); int detect_classic_nackbug(bool verbose); int detect_mf_magic(bool is_mfc); int detect_classic_static_nonce(void); +int detect_classic_static_encrypted_nonce(uint8_t block_no, uint8_t key_type, uint8_t *key); bool detect_mfc_ev1_signature(void); int read_mfc_ev1_signature(uint8_t *signature); diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index 9189704e4..33803857d 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -675,6 +675,7 @@ typedef struct { #define CMD_HF_MIFARE_NACK_DETECT 0x0730 #define CMD_HF_MIFARE_STATIC_NONCE 0x0731 +#define CMD_HF_MIFARE_STATIC_ENCRYPTED_NONCE 0x0732 // MFU OTP TearOff #define CMD_HF_MFU_OTP_TEAROFF 0x0740 @@ -740,9 +741,10 @@ typedef struct { #define MODE_FULLSIM 2 // Static Nonce detection -#define NONCE_FAIL 0x01 -#define NONCE_NORMAL 0x02 -#define NONCE_STATIC 0x03 +#define NONCE_FAIL 0x01 +#define NONCE_NORMAL 0x02 +#define NONCE_STATIC 0x03 +#define NONCE_STATIC_ENC 0x04 // Dbprintf flags #define FLAG_RAWPRINT 0x00 From 749ba504f8a93dbd54df41e156dfb36c1fa9eac0 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 11 Dec 2023 21:25:31 +0200 Subject: [PATCH 0856/1034] text --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 357e1d45e..e027a0d77 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8923,7 +8923,7 @@ static int CmdHF14AMfInfo(const char *Cmd) { } if (keyType != 0xff) - PrintAndLogEx(SUCCESS, "Block 0 ......... %s", sprint_hex(blockdata, MFBLOCK_SIZE)); + PrintAndLogEx(SUCCESS, "Block 0.......... %s", sprint_hex(blockdata, MFBLOCK_SIZE)); } free(keyBlock); From 84cc6d6c79dde7ba2f8082bacbedf6018af6ddcd Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 11 Dec 2023 23:12:56 +0200 Subject: [PATCH 0857/1034] add: specify key and block for nested static encrypted checks --- client/src/cmdhfmf.c | 49 ++++++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index e027a0d77..d65e48040 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8806,16 +8806,19 @@ static int CmdHF14AMfInfo(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str0("k", "key", "<hex>", "key, 6 hex bytes"), + arg_int0(NULL, "blk", "<dec>", "block number"), arg_lit0("a", NULL, "input key type is key A (def)"), arg_lit0("b", NULL, "input key type is key B"), + arg_str0("k", "key", "<hex>", "key, 6 hex bytes"), arg_lit0("n", "nack", "do nack test"), arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); - /*uint8_t keytype = MF_KEY_A; + int blockn = arg_get_int_def(ctx, 1, 0); + + uint8_t keytype = MF_KEY_A; if (arg_get_lit(ctx, 2) && arg_get_lit(ctx, 3)) { CLIParserFree(ctx); PrintAndLogEx(WARNING, "Input key type must be A or B"); @@ -8827,15 +8830,20 @@ static int CmdHF14AMfInfo(const char *Cmd) { int keylen = 0; uint8_t key[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; CLIGetHexWithReturn(ctx, 4, key, &keylen); -*/ - bool do_nack_test = arg_get_lit(ctx, 4); - bool verbose = arg_get_lit(ctx, 5); + + bool do_nack_test = arg_get_lit(ctx, 5); + bool verbose = arg_get_lit(ctx, 6); CLIParserFree(ctx); uint8_t dbg_curr = DBG_NONE; if (getDeviceDebugLevel(&dbg_curr) != PM3_SUCCESS) return PM3_EFAILED; + if (keylen != 0 && keylen != 6) { + PrintAndLogEx(ERR, "Key length must be 6 bytes"); + return PM3_EINVARG; + } + clearCommandBuffer(); SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; @@ -8883,8 +8891,8 @@ static int CmdHF14AMfInfo(const char *Cmd) { PrintAndLogEx(INFO, "<none>"); PrintAndLogEx(INFO, "--- " _CYAN_("Keys Information") "---------------------"); - uint8_t key[MIFARE_KEY_SIZE] = {0}; - uint8_t keyType = 0xff; + uint8_t fkey[MIFARE_KEY_SIZE] = {0}; + uint8_t fKeyType = 0xff; int sectorsCnt = 1; uint8_t *keyBlock = NULL; @@ -8907,22 +8915,22 @@ static int CmdHF14AMfInfo(const char *Cmd) { if (e_sector[0].foundKey[0]) { PrintAndLogEx(SUCCESS, "Sector 0 key A... %12llx", e_sector[0].Key[0]); - num_to_bytes(e_sector[0].Key[0], MIFARE_KEY_SIZE, key); + num_to_bytes(e_sector[0].Key[0], MIFARE_KEY_SIZE, fkey); if (mfReadBlock(0, MF_KEY_A, key, blockdata) == PM3_SUCCESS) - keyType = MF_KEY_A; + fKeyType = MF_KEY_A; } if (e_sector[0].foundKey[1]) { PrintAndLogEx(SUCCESS, "Sector 0 key B... %12llx", e_sector[0].Key[1]); - if (keyType == 0xff) { - num_to_bytes(e_sector[0].Key[1], MIFARE_KEY_SIZE, key); + if (fKeyType == 0xff) { + num_to_bytes(e_sector[0].Key[1], MIFARE_KEY_SIZE, fkey); if (mfReadBlock(0, MF_KEY_B, key, blockdata) == PM3_SUCCESS) - keyType = MF_KEY_B; + fKeyType = MF_KEY_B; } } - if (keyType != 0xff) + if (fKeyType != 0xff) PrintAndLogEx(SUCCESS, "Block 0.......... %s", sprint_hex(blockdata, MFBLOCK_SIZE)); } @@ -8950,8 +8958,19 @@ static int CmdHF14AMfInfo(const char *Cmd) { // detect static encrypted nonce - if (keyType != 0xff) { - res = detect_classic_static_encrypted_nonce(0, keyType, key); // TODO: add block number to the config + if (keylen == 6) { + res = detect_classic_static_encrypted_nonce(blockn, keytype, key); + if (res == NONCE_STATIC) { + PrintAndLogEx(SUCCESS, "Static nested nonce: " _YELLOW_("yes")); + fKeyType = 0xff; // dont detect twice + } + if (res == NONCE_STATIC_ENC) { + PrintAndLogEx(SUCCESS, "Static encrypted nonce: " _YELLOW_("yes")); + fKeyType = 0xff; // dont detect twice + } + } + if (fKeyType != 0xff) { + res = detect_classic_static_encrypted_nonce(0, fKeyType, fkey); if (res == NONCE_STATIC) PrintAndLogEx(SUCCESS, "Static nested nonce: " _YELLOW_("yes")); if (res == NONCE_STATIC_ENC) From e77ed68775f465e15107d476c69b48a542655802 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 11 Dec 2023 23:16:53 +0200 Subject: [PATCH 0858/1034] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15a2f4dca..92fb6c858 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `hf mf info` command and static encrypted nonce detection (@merlokk) - Changed `lf fdx demod` - now raw bytes shows all data (@iceman1001) - Changed `data num` - now can print reversed and inverse (@iceman1001) - Fixed `hf mf sim -ix` never returning console (@datatags) From c533d3aba832dbd672816e9735ad603ff8074abb Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 11 Dec 2023 23:37:05 +0100 Subject: [PATCH 0859/1034] adapt text out for hf mf info --- client/src/cmdhfmf.c | 142 +++++++++++++++++++-------------- client/src/mifare/mifarehost.c | 9 ++- client/src/mifare/mifarehost.h | 3 +- 3 files changed, 89 insertions(+), 65 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index d65e48040..f361b5c6f 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -1767,7 +1767,7 @@ static int CmdHF14AMfNested(const char *Cmd) { //TODO: single mode broken? can't } PrintAndLogEx(SUCCESS, "Testing known keys. Sector count "_YELLOW_("%d"), SectorsCnt); - int res = mfCheckKeys_fast(SectorsCnt, true, true, 1, ARRAYLEN(g_mifare_default_keys) + 1, keyBlock, e_sector, use_flashmemory); + int res = mfCheckKeys_fast(SectorsCnt, true, true, 1, ARRAYLEN(g_mifare_default_keys) + 1, keyBlock, e_sector, use_flashmemory, false); if (res == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "Fast check found all keys"); goto jumptoend; @@ -1809,7 +1809,7 @@ static int CmdHF14AMfNested(const char *Cmd) { //TODO: single mode broken? can't e_sector[sectorNo].foundKey[trgKeyType] = 1; e_sector[sectorNo].Key[trgKeyType] = bytes_to_num(keyBlock, 6); - mfCheckKeys_fast(SectorsCnt, true, true, 2, 1, keyBlock, e_sector, false); + mfCheckKeys_fast(SectorsCnt, true, true, 2, 1, keyBlock, e_sector, false, false); continue; default : PrintAndLogEx(ERR, "Unknown error\n"); @@ -2023,7 +2023,7 @@ static int CmdHF14AMfNestedStatic(const char *Cmd) { } PrintAndLogEx(SUCCESS, "Testing known keys. Sector count "_YELLOW_("%d"), SectorsCnt); - int res = mfCheckKeys_fast(SectorsCnt, true, true, 1, ARRAYLEN(g_mifare_default_keys) + 1, keyBlock, e_sector, false); + int res = mfCheckKeys_fast(SectorsCnt, true, true, 1, ARRAYLEN(g_mifare_default_keys) + 1, keyBlock, e_sector, false, false); if (res == PM3_SUCCESS) { // all keys found PrintAndLogEx(SUCCESS, "Fast check found all keys"); @@ -2056,7 +2056,7 @@ static int CmdHF14AMfNestedStatic(const char *Cmd) { e_sector[sectorNo].foundKey[trgKeyType] = 1; e_sector[sectorNo].Key[trgKeyType] = bytes_to_num(keyBlock, 6); - // mfCheckKeys_fast(SectorsCnt, true, true, 2, 1, keyBlock, e_sector, false); + // mfCheckKeys_fast(SectorsCnt, true, true, 2, 1, keyBlock, e_sector, false, false); continue; default : PrintAndLogEx(ERR, "unknown error.\n"); @@ -2713,7 +2713,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { lastChunk = true; } - res = mfCheckKeys_fast(sector_cnt, firstChunk, lastChunk, strategy, size, keyBlock + (i * MIFARE_KEY_SIZE), e_sector, false); + res = mfCheckKeys_fast(sector_cnt, firstChunk, lastChunk, strategy, size, keyBlock + (i * MIFARE_KEY_SIZE), e_sector, false, verbose); if (firstChunk) { firstChunk = false; } @@ -2834,7 +2834,7 @@ noValidKeyFound: // Try the found keys are reused if (bytes_to_num(tmp_key, MIFARE_KEY_SIZE) != 0) { - // <!> The fast check --> mfCheckKeys_fast(sector_cnt, true, true, 2, 1, tmp_key, e_sector, false); + // <!> The fast check --> mfCheckKeys_fast(sector_cnt, true, true, 2, 1, tmp_key, e_sector, false, verbose); // <!> Returns false keys, so we just stick to the slower mfchk. for (int i = 0; i < sector_cnt; i++) { for (int j = MF_KEY_A; j <= MF_KEY_B; j++) { @@ -3259,7 +3259,7 @@ static int CmdHF14AMfChk_fast(const char *Cmd) { if (use_flashmemory) { PrintAndLogEx(SUCCESS, "Using dictionary in flash memory"); - mfCheckKeys_fast(sectorsCnt, true, true, 1, 0, keyBlock, e_sector, use_flashmemory); + mfCheckKeys_fast(sectorsCnt, true, true, 1, 0, keyBlock, e_sector, use_flashmemory, false); } else { // strategys. 1= deep first on sector 0 AB, 2= width first on all sectors @@ -3280,7 +3280,7 @@ static int CmdHF14AMfChk_fast(const char *Cmd) { if (size == keycnt - i) lastChunk = true; - int res = mfCheckKeys_fast(sectorsCnt, firstChunk, lastChunk, strategy, size, keyBlock + (i * MIFARE_KEY_SIZE), e_sector, false); + int res = mfCheckKeys_fast(sectorsCnt, firstChunk, lastChunk, strategy, size, keyBlock + (i * MIFARE_KEY_SIZE), e_sector, false, false); if (firstChunk) firstChunk = false; @@ -8799,9 +8799,11 @@ static int CmdHFMFHidEncode(const char *Cmd) { static int CmdHF14AMfInfo(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf info", - "Information and check vulnerabilities in the mfc card\n" - "To check some of them need to specify key and/or specific keys in the copmmand line", - "hf mf info -k ffffffff -nv\n" + "Information and check vulnerabilities in a MIFARE Classic card\n" + "Some cards in order to extract information you need to specify key\n" + "and/or specific keys in the copmmand line", + "hf mf info\n" + "hf mf info -k ffffffff -n -v\n" ); void *argtable[] = { @@ -8828,7 +8830,7 @@ static int CmdHF14AMfInfo(const char *Cmd) { } int keylen = 0; - uint8_t key[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; + uint8_t key[MIFARE_KEY_SIZE] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; CLIGetHexWithReturn(ctx, 4, key, &keylen); bool do_nack_test = arg_get_lit(ctx, 5); @@ -8836,11 +8838,12 @@ static int CmdHF14AMfInfo(const char *Cmd) { CLIParserFree(ctx); uint8_t dbg_curr = DBG_NONE; - if (getDeviceDebugLevel(&dbg_curr) != PM3_SUCCESS) + if (getDeviceDebugLevel(&dbg_curr) != PM3_SUCCESS) { return PM3_EFAILED; + } - if (keylen != 0 && keylen != 6) { - PrintAndLogEx(ERR, "Key length must be 6 bytes"); + if (keylen != 0 && keylen != MIFARE_KEY_SIZE) { + PrintAndLogEx(ERR, "Key length must be %u bytes", MIFARE_KEY_SIZE); return PM3_EINVARG; } @@ -8878,26 +8881,37 @@ static int CmdHF14AMfInfo(const char *Cmd) { return select_status; } - PrintAndLogEx(INFO, "--- " _CYAN_("ISO14443-a Information") "---------------------"); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "--- " _CYAN_("ISO14443-a Information") " ---------------------"); PrintAndLogEx(SUCCESS, " UID: " _GREEN_("%s"), sprint_hex(card.uid, card.uidlen)); PrintAndLogEx(SUCCESS, "ATQA: " _GREEN_("%02X %02X"), card.atqa[1], card.atqa[0]); PrintAndLogEx(SUCCESS, " SAK: " _GREEN_("%02X [%" PRIu64 "]"), card.sak, resp.oldarg[0]); - if (setDeviceDebugLevel(verbose ? DBG_INFO : DBG_NONE, false) != PM3_SUCCESS) + if (setDeviceDebugLevel(verbose ? DBG_INFO : DBG_NONE, false) != PM3_SUCCESS) { return PM3_EFAILED; + } - PrintAndLogEx(INFO, "--- " _CYAN_("Backdoors Information") "---------------------"); - if (detect_mf_magic(true) == 0) - PrintAndLogEx(INFO, "<none>"); + uint8_t signature[32] = {0}; + int res = read_mfc_ev1_signature(signature); + if (res == PM3_SUCCESS) { + mfc_ev1_print_signature(card.uid, card.uidlen, signature, sizeof(signature)); + } - PrintAndLogEx(INFO, "--- " _CYAN_("Keys Information") "---------------------"); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "--- " _CYAN_("Magic Tag Information")); + if (detect_mf_magic(true) == 0) { + PrintAndLogEx(INFO, "<N/A>"); + } + + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "--- " _CYAN_("Keys Information")); uint8_t fkey[MIFARE_KEY_SIZE] = {0}; uint8_t fKeyType = 0xff; int sectorsCnt = 1; uint8_t *keyBlock = NULL; uint32_t keycnt = 0; - int res = mfLoadKeys(&keyBlock, &keycnt, NULL, 0, NULL, 0); + res = mfLoadKeys(&keyBlock, &keycnt, NULL, 0, NULL, 0); if (res != PM3_SUCCESS) { return res; } @@ -8908,89 +8922,95 @@ static int CmdHF14AMfInfo(const char *Cmd) { free(keyBlock); return PM3_EMALLOC; } - res = mfCheckKeys_fast(sectorsCnt, true, true, 1, keycnt, keyBlock, e_sector, false); + + res = mfCheckKeys_fast(sectorsCnt, true, true, 1, keycnt, keyBlock, e_sector, false, verbose); if (res == PM3_SUCCESS) { uint8_t blockdata[MFBLOCK_SIZE] = {0}; if (e_sector[0].foundKey[0]) { - PrintAndLogEx(SUCCESS, "Sector 0 key A... %12llx", e_sector[0].Key[0]); + PrintAndLogEx(SUCCESS, "Sector 0 key A... " _GREEN_("%12" PRIX64), e_sector[0].Key[0]); - num_to_bytes(e_sector[0].Key[0], MIFARE_KEY_SIZE, fkey); - if (mfReadBlock(0, MF_KEY_A, key, blockdata) == PM3_SUCCESS) + num_to_bytes(e_sector[0].Key[MF_KEY_A], MIFARE_KEY_SIZE, fkey); + if (mfReadBlock(0, MF_KEY_A, key, blockdata) == PM3_SUCCESS) { fKeyType = MF_KEY_A; - } - - if (e_sector[0].foundKey[1]) { - PrintAndLogEx(SUCCESS, "Sector 0 key B... %12llx", e_sector[0].Key[1]); - - if (fKeyType == 0xff) { - num_to_bytes(e_sector[0].Key[1], MIFARE_KEY_SIZE, fkey); - if (mfReadBlock(0, MF_KEY_B, key, blockdata) == PM3_SUCCESS) - fKeyType = MF_KEY_B; } } - if (fKeyType != 0xff) + if (e_sector[0].foundKey[1]) { + PrintAndLogEx(SUCCESS, "Sector 0 key B... " _GREEN_("%12" PRIX64), e_sector[0].Key[1]); + + if (fKeyType == 0xFF) { + num_to_bytes(e_sector[0].Key[MF_KEY_B], MIFARE_KEY_SIZE, fkey); + if (mfReadBlock(0, MF_KEY_B, key, blockdata) == PM3_SUCCESS) { + fKeyType = MF_KEY_B; + } + } + } + + if (fKeyType != 0xFF) { PrintAndLogEx(SUCCESS, "Block 0.......... %s", sprint_hex(blockdata, MFBLOCK_SIZE)); + } + } else { + PrintAndLogEx(INFO, "<N/A>"); } free(keyBlock); free(e_sector); - PrintAndLogEx(INFO, "--- " _CYAN_("RNG Information") "---------------------"); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "--- " _CYAN_("RNG Information")); res = detect_classic_static_nonce(); - if (res == NONCE_STATIC) - PrintAndLogEx(SUCCESS, "Static nonce: " _YELLOW_("yes")); + if (res == NONCE_STATIC) { + PrintAndLogEx(SUCCESS, "Static nonce... " _YELLOW_("yes")); + } - if (res == NONCE_FAIL && verbose) - PrintAndLogEx(SUCCESS, "Static nonce: " _RED_("read failed")); + if (res == NONCE_FAIL && verbose) { + PrintAndLogEx(SUCCESS, "Static nonce... " _RED_("read failed")); + } if (res == NONCE_NORMAL) { // not static res = detect_classic_prng(); if (res == 1) - PrintAndLogEx(SUCCESS, "Prng detection: " _GREEN_("weak")); + PrintAndLogEx(SUCCESS, "Prng... " _GREEN_("weak")); else if (res == 0) - PrintAndLogEx(SUCCESS, "Prng detection: " _YELLOW_("hard")); + PrintAndLogEx(SUCCESS, "Prng... " _YELLOW_("hard")); else - PrintAndLogEx(FAILED, "Prng detection: " _RED_("fail")); + PrintAndLogEx(FAILED, "Prng... " _RED_("fail")); // detect static encrypted nonce - if (keylen == 6) { + if (keylen == MIFARE_KEY_SIZE) { res = detect_classic_static_encrypted_nonce(blockn, keytype, key); if (res == NONCE_STATIC) { - PrintAndLogEx(SUCCESS, "Static nested nonce: " _YELLOW_("yes")); - fKeyType = 0xff; // dont detect twice + PrintAndLogEx(SUCCESS, "Static nested nonce... " _YELLOW_("yes")); + fKeyType = 0xFF; // dont detect twice } if (res == NONCE_STATIC_ENC) { - PrintAndLogEx(SUCCESS, "Static encrypted nonce: " _YELLOW_("yes")); - fKeyType = 0xff; // dont detect twice + PrintAndLogEx(SUCCESS, "Static encrypted nonce... " _RED_("yes")); + fKeyType = 0xFF; // dont detect twice } } - if (fKeyType != 0xff) { + + if (fKeyType != 0xFF) { res = detect_classic_static_encrypted_nonce(0, fKeyType, fkey); if (res == NONCE_STATIC) - PrintAndLogEx(SUCCESS, "Static nested nonce: " _YELLOW_("yes")); + PrintAndLogEx(SUCCESS, "Static nested nonce... " _YELLOW_("yes")); if (res == NONCE_STATIC_ENC) - PrintAndLogEx(SUCCESS, "Static encrypted nonce: " _YELLOW_("yes")); + PrintAndLogEx(SUCCESS, "Static encrypted nonce... " _RED_("yes")); } - if (do_nack_test) + if (do_nack_test) { detect_classic_nackbug(verbose); + } } - uint8_t signature[32] = {0}; - res = read_mfc_ev1_signature(signature); - if (res == PM3_SUCCESS) { - PrintAndLogEx(INFO, "--- " _CYAN_("Signature Information") "---------------------"); - mfc_ev1_print_signature(card.uid, card.uidlen, signature, sizeof(signature)); - } - - if (setDeviceDebugLevel(dbg_curr, false) != PM3_SUCCESS) + if (setDeviceDebugLevel(dbg_curr, false) != PM3_SUCCESS) { return PM3_EFAILED; + } + PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 8c129b8d9..f838675d3 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -222,7 +222,7 @@ int mfCheckKeys(uint8_t blockNo, uint8_t keyType, bool clear_trace, uint8_t keyc // 1 == // 2 == Time-out, aborting int mfCheckKeys_fast(uint8_t sectorsCnt, uint8_t firstChunk, uint8_t lastChunk, uint8_t strategy, - uint32_t size, uint8_t *keyBlock, sector_t *e_sector, bool use_flashmemory) { + uint32_t size, uint8_t *keyBlock, sector_t *e_sector, bool use_flashmemory, bool verbose) { uint64_t t2 = msclock(); @@ -256,7 +256,9 @@ int mfCheckKeys_fast(uint8_t sectorsCnt, uint8_t firstChunk, uint8_t lastChunk, // time to convert the returned data. uint8_t curr_keys = resp.oldarg[0]; - PrintAndLogEx(INFO, "Chunk %.1fs | found %u/%u keys (%u)", (float)(t2 / 1000.0), curr_keys, (sectorsCnt << 1), size); + if (verbose) { + PrintAndLogEx(INFO, "Chunk %.1fs | found %u/%u keys (%u)", (float)(t2 / 1000.0), curr_keys, (sectorsCnt << 1), size); + } // all keys? if (curr_keys == sectorsCnt * 2 || lastChunk) { @@ -1385,8 +1387,9 @@ int detect_mf_magic(bool is_mfc) { uint8_t payload[] = { is_mfc }; SendCommandNG(CMD_HF_MIFARE_CIDENT, payload, sizeof(payload)); if (WaitForResponseTimeout(CMD_HF_MIFARE_CIDENT, &resp, 1500)) { - if (resp.status == PM3_SUCCESS) + if (resp.status == PM3_SUCCESS) { isGeneration = resp.data.asBytes[0]; + } } switch (isGeneration) { diff --git a/client/src/mifare/mifarehost.h b/client/src/mifare/mifarehost.h index 5eacabda3..b30c7a9ae 100644 --- a/client/src/mifare/mifarehost.h +++ b/client/src/mifare/mifarehost.h @@ -74,7 +74,8 @@ int mfnested(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBlockNo, int mfStaticNested(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBlockNo, uint8_t trgKeyType, uint8_t *resultKey); int mfCheckKeys(uint8_t blockNo, uint8_t keyType, bool clear_trace, uint8_t keycnt, uint8_t *keyBlock, uint64_t *key); int mfCheckKeys_fast(uint8_t sectorsCnt, uint8_t firstChunk, uint8_t lastChunk, - uint8_t strategy, uint32_t size, uint8_t *keyBlock, sector_t *e_sector, bool use_flashmemory); + uint8_t strategy, uint32_t size, uint8_t *keyBlock, sector_t *e_sector, + bool use_flashmemory, bool verbose); int mfCheckKeys_file(uint8_t *destfn, uint64_t *key); From 1d3129972ff887b7713cec3e8b2a0a41de10af94 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 11 Dec 2023 23:56:50 +0100 Subject: [PATCH 0860/1034] typo --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index f361b5c6f..76b6d0503 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8803,7 +8803,7 @@ static int CmdHF14AMfInfo(const char *Cmd) { "Some cards in order to extract information you need to specify key\n" "and/or specific keys in the copmmand line", "hf mf info\n" - "hf mf info -k ffffffff -n -v\n" + "hf mf info -k FFFFFFFFFFFF -n -v\n" ); void *argtable[] = { From 2517e8b345f8591e38eb4a6221876c0dc401578c Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Tue, 12 Dec 2023 01:11:10 +0200 Subject: [PATCH 0861/1034] make style --- armsrc/Standalone/hf_unisniff.c | 2 +- armsrc/appmain.c | 2 +- armsrc/mifarecmd.c | 2 +- client/src/cmddata.c | 2 +- client/src/cmdhfmfp.c | 16 ++++----- client/src/pm3line_vocabulary.h | 3 ++ client/src/util.c | 6 ++-- common/generator.c | 2 +- doc/commands.json | 62 ++++++++++++++++++++++++--------- doc/commands.md | 1 + 10 files changed, 65 insertions(+), 33 deletions(-) diff --git a/armsrc/Standalone/hf_unisniff.c b/armsrc/Standalone/hf_unisniff.c index a39cd7277..6d2a6ee54 100644 --- a/armsrc/Standalone/hf_unisniff.c +++ b/armsrc/Standalone/hf_unisniff.c @@ -180,7 +180,7 @@ void RunMod(void) { char *config_buffer = &config_buffer_array[0]; uint32_t config_size = size_in_spiffs(HF_UNISNIFF_CONFIG); if (config_size > HF_UNISNIFF_CONFIG_SIZE) config_size = HF_UNISNIFF_CONFIG_SIZE; - rdv40_spiffs_read_as_filetype(HF_UNISNIFF_CONFIG, (uint8_t *)config_buffer, + rdv40_spiffs_read_as_filetype(HF_UNISNIFF_CONFIG, (uint8_t *)config_buffer, config_size, RDV40_SPIFFS_SAFETY_SAFE); // This parser is terrible but I think fairly memory efficient? Maybe better to use JSON? char *x = config_buffer; diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 849bfcb2b..66fdcf3a3 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -1873,7 +1873,7 @@ static void PacketReceived(PacketCommandNG *packet) { uint8_t key[6]; } PACKED; struct p *payload = (struct p *) packet->data.asBytes; - + MifareHasStaticEncryptedNonce(payload->block_no, payload->key_type, payload->key); break; } diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 1f0683599..0d0eb97e0 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2724,7 +2724,7 @@ void MifareHasStaticEncryptedNonce(uint8_t block_no, uint8_t key_type, uint8_t * goto OUT; }; - if (g_dbglevel >= DBG_INFO) + if (g_dbglevel >= DBG_INFO) Dbprintf("nt: %x, nt encoded: %x", nt, ntenc); if (oldntenc == 0) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 30d68d6ba..238bff88d 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3392,7 +3392,7 @@ static int CmdNumCon(const char *Cmd) { PrintAndLogEx(SUCCESS, _CYAN_("Inverted")); for (uint8_t i = 0; i < ARRAYLEN(radix); i++) { MBEDTLS_MPI_CHK(mbedtls_mpi_write_string(&N, radix[i].radix, s, sizeof(s), &slen)); - if (slen == 0) { + if (slen == 0) { continue; } diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 5d6c94929..c8feeb044 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -798,7 +798,7 @@ static int CmdHFMFPRdbl(const char *Cmd) { PrintAndLogEx(ERR, "Error return length: %d", datalen); return PM3_ESOFT; } - + if (!plain) data_crypt(&mf4session, &data[1], &data[1], true); uint8_t sector = mfSectorNum(blockn); mf_print_sector_hdr(sector); @@ -1061,9 +1061,9 @@ static int CmdHFMFPChKey(const char *Cmd) { bool verbose = arg_get_lit(ctx, 1); bool nomacres = arg_get_lit(ctx, 2); - + uint8_t keyn[250] = {0}; - + uint8_t ki[250] = {0}; int kilen = 0; CLIGetHexWithReturn(ctx, 3, ki, &kilen); @@ -1076,7 +1076,7 @@ static int CmdHFMFPChKey(const char *Cmd) { uint8_t datain[250] = {0}; int datainlen = 0; CLIGetHexWithReturn(ctx, 6, datain, &datainlen); - + CLIParserFree(ctx); mfpSetVerboseMode(verbose); @@ -1177,7 +1177,7 @@ static int CmdHFMFPChConf(const char *Cmd) { bool verbose = arg_get_lit(ctx, 1); bool nomacres = arg_get_lit(ctx, 2); - + uint8_t keyn[250] = {0}; uint32_t blockNum = arg_get_int(ctx, 3); @@ -1185,11 +1185,11 @@ static int CmdHFMFPChConf(const char *Cmd) { int keylen = 0; CLIGetHexWithReturn(ctx, 4, key, &keylen); bool usecck = arg_get_lit(ctx, 5); - + uint8_t datain[250] = {0}; int datainlen = 0; CLIGetHexWithReturn(ctx, 6, datain, &datainlen); - + CLIParserFree(ctx); mfpSetVerboseMode(verbose); @@ -1208,7 +1208,7 @@ static int CmdHFMFPChConf(const char *Cmd) { PrintAndLogEx(ERR, "<data> must be 16 bytes. Got %d", datainlen); return PM3_EINVARG; } - + if (blockNum > 3) { PrintAndLogEx(ERR, "<config number> must be in range [0..3]. Got %d", blockNum); return PM3_EINVARG; diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index 48a2ecb91..df1c8ec75 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -322,6 +322,7 @@ const static vocabulary_t vocabulary[] = { { 0, "hf lto wrbl" }, { 1, "hf mf help" }, { 1, "hf mf list" }, + { 0, "hf mf info" }, { 0, "hf mf darkside" }, { 0, "hf mf nested" }, { 1, "hf mf hardnested" }, @@ -390,6 +391,8 @@ const static vocabulary_t vocabulary[] = { { 0, "hf mfp rdbl" }, { 0, "hf mfp rdsc" }, { 0, "hf mfp wrbl" }, + { 0, "hf mfp chkey" }, + { 0, "hf mfp chconf" }, { 0, "hf mfp commitp" }, { 0, "hf mfp initp" }, { 0, "hf mfp wrp" }, diff --git a/client/src/util.c b/client/src/util.c index 76a7b24ea..ad6b4f447 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -104,7 +104,7 @@ static char inv_b2s(char v, bool uppercase) { '7', '6', '5', '4', '3', '2', '1', '0' }; - + uint8_t tmp = (tolower(v) - 'a' + 10); if (isdigit(v)) { tmp = (v - 0x30); @@ -112,7 +112,7 @@ static char inv_b2s(char v, bool uppercase) { if (uppercase) return toupper(lut[tmp]); - else + else return lut[tmp]; } @@ -1254,7 +1254,7 @@ void str_inverse_bin(char *buf, size_t len) { buf[i] = '0'; else if ( c == '0') buf[i] = '1'; - else + else buf[i] = '.'; } } diff --git a/common/generator.c b/common/generator.c index 27099224a..28c8a5fa2 100644 --- a/common/generator.c +++ b/common/generator.c @@ -354,7 +354,7 @@ int mfc_algo_saflok_one(uint8_t *uid, uint8_t sector, uint8_t keytype, uint64_t uint64_t id = (bytes_to_num(uid, 4) << 8); *key = (h + (id + m + ((uint64_t)h << 40ULL))) & 0xFFFFFFFFFFFFULL; - + } else { *key = 0xFFFFFFFFFFFF; } diff --git a/doc/commands.json b/doc/commands.json index 89f0ac7fd..277e54e91 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -608,9 +608,10 @@ "--dec <dec> decimal value", "--hex <hex> hexadecimal value", "--bin <bin> binary value", - "-i print inverted value" + "-i print inverted value", + "-r print reversed value" ], - "usage": "data num [-hi] [--dec <dec>] [--hex <hex>] [--bin <bin>]" + "usage": "data num [-hir] [--dec <dec>] [--hex <hex>] [--bin <bin>]" }, "data plot": { "command": "data plot", @@ -4706,6 +4707,25 @@ ], "usage": "hf mf hardnested [-habrstw] [-k <hex>] [--blk <dec>] [--tblk <dec>] [--ta] [--tb] [--tk <hex>] [-u <hex>] [-f <fn>] [--in] [--im] [--is] [--ia] [--i2] [--i5]" }, + "hf mf info": { + "command": "hf mf info", + "description": "Information and check vulnerabilities in a MIFARE Classic card Some cards in order to extract information you need to specify key and/or specific keys in the copmmand line", + "notes": [ + "hf mf info", + "hf mf info -k ffffffff -n -v" + ], + "offline": false, + "options": [ + "-h, --help This help", + "--blk <dec> block number", + "-a input key type is key A (def)", + "-b input key type is key B", + "-k, --key <hex> key, 6 hex bytes", + "-n, --nack do nack test", + "-v, --verbose verbose output" + ], + "usage": "hf mf info [-habnv] [--blk <dec>] [-k <hex>]" + }, "hf mf list": { "command": "hf mf list", "description": "Alias of `trace list -t mf -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", @@ -6257,7 +6277,7 @@ "* Block B001 (01; CCK): Installation identifier for Virtual Card. Please consult NXP for data.", "* Block B002 (02; CCK): ATS data.", "* Block B003 (03; CCK): Use Random ID in SL3, decide whether proximity check is mandatory.", - " * DO NOT WRITE THIS BLOCK UNDER ANY CIRCUMSTANCES! Risk of bricking.", + "* DO NOT WRITE THIS BLOCK UNDER ANY CIRCUMSTANCES! Risk of bricking.", "More configuration tips to follow. Check JMY600 Series IC Card Module.", "hf mfp chconf -c 00 -d 10ffffffffffffffffffffffffffffff --key A0A1A2A3A4A5A6A7A0A1A2A3A4A5A6A7 -> Allow 16 commands without MAC in a single transaction." ], @@ -6312,11 +6332,11 @@ "options": [ "-h, --help This help", "-v, --verbose Verbose mode", - "--nmr Do not expect MAC in response", - "--ki <hex> Key Index, 2 hex bytes", - "-k, --key <hex> Current sector key, 16 hex bytes", - "-b, --typeb Sector key is key B", - "-d, --data <hex> New key, 16 hex bytes" + "--nmr Do not expect MAC in response", + "--ki <hex> Key Index, 2 hex bytes", + "-k, --key <hex> Current sector key, 16 hex bytes", + "-b, --typeb Sector key is key B", + "-d, --data <hex> New key, 16 hex bytes" ], "usage": "hf mfp chkey [-hvb] [--nmr] --ki <hex> [-k <hex>] -d <hex>" }, @@ -6482,7 +6502,7 @@ "-v, --verbose Verbose mode", "-n, --count <dec> Blocks count (def: 1)", "-b, --keyb Use key B (def: keyA)", - "-p, --plain Do not use encrypted transmission between reader and card", + "-p, --plain Do not use encrypted communication mode between reader and card", "--nmc Do not append MAC to command", "--nmr Do not expect MAC in reply", "--blk <0..255> Block number", @@ -6502,7 +6522,7 @@ "-h, --help This help", "-v, --verbose Verbose mode", "-b, --keyb Use key B (def: keyA)", - "-p, --plain Do not use encrypted transmission between reader and card", + "-p, --plain Do not use encrypted communication mode between reader and card", "--nmc Do not append MAC to command", "--nmr Do not expect MAC in reply", "-s, --sn <0..255> Sector number", @@ -6534,10 +6554,18 @@ "command": "hf mfp wrp", "description": "Executes Write Perso command. Can be used in SL0 mode only.", "notes": [ + "Use this command to program AES keys, as well as personalize other data on the tag.", + "You can program:", + "* Address 00 [00-FF]: Memory blocks (as well as ACLs and Crypto1 keys)", + "* Address 40 [00-40]: AES sector keys", + "* Address 90 [00-04]: AES administrative keys", + "* Address A0 [00, 01, 80, 81]: Virtual Card keys", + "* Address B0 [00-03]: Configuration data (DO NOT TOUCH B003)", + "Examples:", "hf mfp wrp --adr 4000 --data 000102030405060708090a0b0c0d0e0f -> write key (00..0f) to key number 4000", "hf mfp wrp --adr 4000 -> write default key(0xff..0xff) to key number 4000", - "hf mfp wrp -a b000 -d 20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> allow 32 commands without MAC in configuration block (B000)", - "hf mfp wrp -a 0003 -d 1234561234567F078869B0B1B2B3B4B5 -> write crypto1 keys A: 123456123456 and B: B0B1B2B3B4B5 to block 3" + "hf mfp wrp --adr b000 -d FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> allow 255 commands without MAC in configuration block (B000)", + "hf mfp wrp --adr 0003 -d 1234561234567F078869B0B1B2B3B4B5 -> write crypto1 keys A: 123456123456 and B: B0B1B2B3B4B5 to block 3" ], "offline": false, "options": [ @@ -7446,7 +7474,7 @@ }, "hf tune": { "command": "hf tune", - "description": "Continuously measure HF antenna tuning. Press button or <Enter> to interrupt.", + "description": "Continuously measure HF antenna tuning. Press pm3 button or <Enter> to interrupt.", "notes": [ "hf tune", "hf tune --mix" @@ -9027,7 +9055,7 @@ "-1, --ht1 Card type Hitag 1", "-2, --ht2 Card type Hitag 2", "-s, --hts Card type Hitag S", - "-m, --htm Card type Hitag \u03bc" + "-m, --htm Card type Hitag \u041e\u0458" ], "usage": "lf hitag eload [-h12sm] -f <fn>" }, @@ -12118,8 +12146,8 @@ } }, "metadata": { - "commands_extracted": 699, + "commands_extracted": 702, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-12-01T14:06:40" + "extracted_on": "2023-12-11T23:10:13" } -} +} \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 8e6060400..447478cfa 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -485,6 +485,7 @@ Check column "offline" for their availability. |------- |------- |----------- |`hf mf help `|Y |`This help` |`hf mf list `|Y |`List MIFARE history` +|`hf mf info `|N |`mfc card Info` |`hf mf darkside `|N |`Darkside attack` |`hf mf nested `|N |`Nested attack` |`hf mf hardnested `|Y |`Nested attack for hardened MIFARE Classic cards` From 20ca44c8b20f84d25a0bb24233ef7d61b95a22f2 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 12 Dec 2023 11:48:10 +0100 Subject: [PATCH 0862/1034] fix partial found keys --- client/src/cmdhfmf.c | 3 ++- client/src/mifare/mifarehost.c | 27 +++++++++++++++++++-------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 76b6d0503..7d180db7b 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8905,6 +8905,7 @@ static int CmdHF14AMfInfo(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Keys Information")); + uint8_t fkey[MIFARE_KEY_SIZE] = {0}; uint8_t fKeyType = 0xff; @@ -8924,7 +8925,7 @@ static int CmdHF14AMfInfo(const char *Cmd) { } res = mfCheckKeys_fast(sectorsCnt, true, true, 1, keycnt, keyBlock, e_sector, false, verbose); - if (res == PM3_SUCCESS) { + if (res == PM3_SUCCESS || res == PM3_EPARTIAL) { uint8_t blockdata[MFBLOCK_SIZE] = {0}; if (e_sector[0].foundKey[0]) { diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index f838675d3..96f099d8f 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -270,16 +270,19 @@ int mfCheckKeys_fast(uint8_t sectorsCnt, uint8_t firstChunk, uint8_t lastChunk, foo = bytes_to_num(resp.data.asBytes + 480, 8); bar = (resp.data.asBytes[489] << 8 | resp.data.asBytes[488]); - for (uint8_t i = 0; i < 64; i++) + for (uint8_t i = 0; i < 64; i++) { arr[i] = (foo >> i) & 0x1; + } - for (uint8_t i = 0; i < 16; i++) + for (uint8_t i = 0; i < 16; i++) { arr[i + 64] = (bar >> i) & 0x1; + } // initialize storage for found keys icesector_t *tmp = calloc(sectorsCnt, sizeof(icesector_t)); - if (tmp == NULL) + if (tmp == NULL) { return PM3_EMALLOC; + } memcpy(tmp, resp.data.asBytes, sectorsCnt * sizeof(icesector_t)); @@ -297,10 +300,19 @@ int mfCheckKeys_fast(uint8_t sectorsCnt, uint8_t firstChunk, uint8_t lastChunk, } free(tmp); - if (curr_keys == sectorsCnt * 2) + // if all keys where found + if (curr_keys == sectorsCnt * 2) { return PM3_SUCCESS; - if (lastChunk) + } + + // if some keys was found + if (curr_keys > 0) { + return PM3_EPARTIAL; + } + + if (lastChunk) { return PM3_ESOFT; + } } return PM3_ESOFT; } @@ -1360,7 +1372,6 @@ returns: 3 = has encrypted nonce */ int detect_classic_static_encrypted_nonce(uint8_t block_no, uint8_t key_type, uint8_t *key) { - clearCommandBuffer(); uint8_t cdata[1 + 1 + MIFARE_KEY_SIZE] = {0}; cdata[0] = block_no; @@ -1370,9 +1381,9 @@ int detect_classic_static_encrypted_nonce(uint8_t block_no, uint8_t key_type, ui PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_MIFARE_STATIC_ENCRYPTED_NONCE, &resp, 1000)) { - if (resp.status == PM3_ESOFT) + if (resp.status == PM3_ESOFT) { return NONCE_FAIL; - + } return resp.data.asBytes[0]; } return NONCE_FAIL; From da98ad8854691c6cf76a7876100603cdf42d72f8 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 12 Dec 2023 17:05:10 +0100 Subject: [PATCH 0863/1034] adapted the notes on downgrade attacks to follow the repo style --- CHANGELOG.md | 1 + README.md | 32 ++-- doc/hid_downgrade.md | 258 ++++++++++++++++++++++++++ doc/img/readermanager_1.png | Bin 0 -> 189418 bytes doc/img/readermanager_2.png | Bin 0 -> 83911 bytes doc/img/readermanager_3.png | Bin 0 -> 90493 bytes doc/img/readermanager_4.png | Bin 0 -> 134567 bytes traces/iclass/hf-iclass-dump.json | 33 ++++ traces/iclass/iclass-flipper.picopass | 22 +++ 9 files changed, 331 insertions(+), 15 deletions(-) create mode 100644 doc/hid_downgrade.md create mode 100644 doc/img/readermanager_1.png create mode 100644 doc/img/readermanager_2.png create mode 100644 doc/img/readermanager_3.png create mode 100644 doc/img/readermanager_4.png create mode 100644 traces/iclass/hf-iclass-dump.json create mode 100644 traces/iclass/iclass-flipper.picopass diff --git a/CHANGELOG.md b/CHANGELOG.md index 11fc87a5c..df11f9f47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Change `notes on downgrade attacks` - reworked the original text follow repo style (@iceman1001) - Added `hf mf info` command and static encrypted nonce detection (@merlokk) - Added Saflok KDF - generate MFC keys (@h1kari) - Changed `lf fdx demod` - now raw bytes shows all data (@iceman1001) diff --git a/README.md b/README.md index 538d5b952..a0fc24d02 100644 --- a/README.md +++ b/README.md @@ -13,20 +13,22 @@ The Proxmark3 is the swiss-army tool of RFID, allowing for interactions with the | [![MacOS Build and Test](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/macos.yml/badge.svg?branch=master)](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/macos.yml) | [![Ubuntu Build and Test](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/ubuntu.yml/badge.svg?branch=master)](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/ubuntu.yml) | [![Windows Build and Test](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/windows.yml/badge.svg?branch=master)](https://github.com/RfidResearchGroup/proxmark3/actions/workflows/windows.yml) | # Table of Contents - 1. [PROXMARK3 INSTALLATION AND OVERVIEW](#proxmark3-installation-and-overview) - 2. [Notes / helpful documents](#notes--helpful-documents) - 3. [How to build?](#how-to-build) - 1. [Proxmark3 RDV4](#proxmark3-rdv4) - 2. [Generic Proxmark3 platforms](#generic-proxmark3-platforms) - 4. [What has changed?](#what-has-changed) - 5. [Development](#development) - 6. [Supported operative systems](#supported-operative-systems) - 7. [Precompiled binaries](#precompiled-binaries) - 8. [Proxmark3 GUI](#proxmark3-gui) - 9. [Official channels](#official-channels) -10. [Maintainers](#maintainers) -11. [Citation](#citation) -12. [Copyright and licensing terms](#copyright-and-licensing-terms) +- [Iceman Fork - Proxmark3](#iceman-fork---proxmark3) +- [Table of Contents](#table-of-contents) +- [PROXMARK3 INSTALLATION AND OVERVIEW](#proxmark3-installation-and-overview) + - [Notes / helpful documents](#notes--helpful-documents) +- [How to build?](#how-to-build) + - [Proxmark3 RDV4](#proxmark3-rdv4) + - [Generic Proxmark3 platforms](#generic-proxmark3-platforms) +- [What has changed?](#what-has-changed) +- [Development](#development) + - [Supported operative systems](#supported-operative-systems) + - [Precompiled binaries](#precompiled-binaries) + - [Proxmark3 GUI](#proxmark3-gui) + - [Official channels](#official-channels) + - [Maintainers](#maintainers) + - [Citation](#citation) + - [Copyright and licensing terms](#copyright-and-licensing-terms) # PROXMARK3 INSTALLATION AND OVERVIEW @@ -58,7 +60,7 @@ The Proxmark3 is the swiss-army tool of RFID, allowing for interactions with the |[Developing standalone mode](/armsrc/Standalone/readme.md)|[Wiki about standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode)|[Notes on Magic UID cards](/doc/magic_cards_notes.md)| |[Notes on Color usage](/doc/colors_notes.md)|[Makefile vs CMake](/doc/md/Development/Makefile-vs-CMake.md)|[Notes on Cloner guns](/doc/cloner_notes.md)| |[Notes on cliparser usage](/doc/cliparser.md)|[Notes on clocks](/doc/clocks.md)|[Notes on MIFARE DESFire](/doc/desfire.md)| -|[Notes on CIPURSE](/doc/cipurse.md)|[Notes on NDEF type4a](/doc/ndef_type4a.md)|[Notes on HID downgrades / RM](https://gist.github.com/kitsunehunter/c75294bdbd0533eca298d122c39fb1bd)| +|[Notes on CIPURSE](/doc/cipurse.md)|[Notes on NDEF type4a](/doc/ndef_type4a.md)|[Notes on downgrade attacks](/doc/md/hid_downgrade.md)| # How to build? diff --git a/doc/hid_downgrade.md b/doc/hid_downgrade.md new file mode 100644 index 000000000..9dd856593 --- /dev/null +++ b/doc/hid_downgrade.md @@ -0,0 +1,258 @@ +# Notes on iCLASS SE / SEOS downgrade attacks +<a id="top"></a> + +This is a reworked text. You find the [original text here](https://gist.github.com/kitsunehunter/c75294bdbd0533eca298d122c39fb1bd) + +This document targets both Proxmark3 and Flipper Zero devices. + +# Table of Contents +- [Notes on iCLASS SE / SEOS downgrade attacks](#notes-on-iclass-se--seos-downgrade-attacks) +- [Table of Contents](#table-of-contents) +- [Terminology](#terminology) +- [Useful links](#useful-links) +- [Downgrade concept](#downgrade-concept) +- [Success rate](#success-rate) +- [Getting started](#getting-started) + - [Verfiy reader has iCLASS legacy enabled](#verfiy-reader-has-iclass-legacy-enabled) + - [Inspect reader with HID reader manager](#inspect-reader-with-hid-reader-manager) + - [Verify reader has ProxII enabled](#verify-reader-has-proxii-enabled) + - [Test files](#test-files) +- [Simulate a standard keyed iCLASS legacy credential](#simulate-a-standard-keyed-iclass-legacy-credential) +- [Write a downgraded iCLASS legacy credential](#write-a-downgraded-iclass-legacy-credential) + - [Using Omnikey Reader 5427CK Gen2 and Proxmark3](#using-omnikey-reader-5427ck-gen2-and-proxmark3) + - [Using Flipper Zero with NARD](#using-flipper-zero-with-nard) + - [Using Weaponized HID Reader](#using-weaponized-hid-reader) +- [Write ProxII credential to a T5577](#write-proxii-credential-to-a-t5577) + - [Using Proxmark3](#using-proxmark3) + - [Using Flipper Zero](#using-flipper-zero) + + +# Terminology +^[Top](#top) + +* Credential - an access token that acts as carrier of a SIO + +* SIO - Secure Identity Object + +* PACS - Physical Access Control System + +* PACS Payload - The binary encoded credential data. + +* Downgrade attack - Read the PACS payload off a SIO and encode it as a lesser secure legacy format + +* Omnikey - Official HID desktop reader to read PACS payload off iCLASS SE and SEOS cards + +* Weaponized reader - "DIY" omnikey reader to perform the same job as the omnikey using a actual HID reader you might find on a wall + +* NARD / SAM - SIM add-on for Flipper, used with HID SAM to read iCLASS SE and SEOS + +* SAM - HID Secure Access Module responsible for encoding and decoding PACS payload inside a SIO among others + +* T5577 - a low frequency multi purpose card. Used as clone card. + +# Useful links +^[Top](#top) + +[HID iCLASS Credentials tech primer](https://forum.dangerousthings.com/t/types-of-hid-iclass-cards/12243) +[What does all data on my card mean?!](https://www.hidglobal.com/doclib/files/resource_files/an0109_a.2_credential_id_markings_application_note.pdf) + + +# Downgrade concept +^[Top](#top) +There is not much you can do with just a card and a Proxmark3 or Flipper Zero. There is no card-only attack vectors. There are however reader/card vectors but that is outside the scope of this note. + +Your iCLASS SR/iCLASS SE/SEOS credential has a SIO (Secure Identity Object) that stores your access control information also known as the PACS payload. We will need to extract the SIO with one of the methods outlined below and write that data onto a Picopass or a T5577. + +In short: +We are downgrading from a secure credential to a lesser secure legacy format + +# Success rate +^[Top](#top) + +Unfortantely not all readers will have iCLASS legacy enabled and your **downgrade** will not work. The good thing is that **most** readers are left in their default configuration with iCLASS legacy enabled which allows us to easily take your secure credential and make a logical copy onto a less secure format. We can easily test if the reader is standard keyed and will accept a credential downgrade attack with the steps below. + +# Getting started +^[Top](#top) + +For the next steps, you will need a `Proxmark3` or `Flipper Zero` device. + +## Verfiy reader has iCLASS legacy enabled +^[Top](#top) + +Present a standard keyed iCLASS legacy credential at the reader and see if it beeps. +If the reader beeps, proceed to [Write a downgraded iCLASS legacy credential](#write-a-downgraded-iclass-legacy-credential) + +Instructions: +To check if your legacy credential is standard keyed. + +PM3 +`hf iclass dump --ki 0` if it dumps == standard key + +F0 +`Picopass app > Read card` check if key == standard + + +## Inspect reader with HID reader manager +^[Top](#top) + +Install [HID reader manager](https://play.google.com/store/apps/details?id=com.hidglobal.pacs.readermanager&hl=en&gl=US) and register before proceeding + +A Android phone with NFC is recommended for this next step as iPhone can only inspect readers that are bluetooth enabled natively or have a BLE backpack installed as a add-on. + +This method of inspection will not work if the reader has a MOB key or ELITE key. + +Reader inspection is only possible on official HID readers, not third party readers using HID credentials. + +Click use NFC and hold the phone to the reader and follow the prompts. Click on apply template. + +<img width="299" alt="Reader Manager Home Screen" src="./img/readermanager_1.png"> + +Click on the plus button + +<img width="298" alt="Templates" src="./img/readermanager_2.png"> + +Click on credentials + +<img width="299" alt="creds" src="./img/readermanager_3.png"> + +Make sure the switch for iCLASS is switched on (blue) + +<img width="297" alt="Screenshot 2023-11-14 221005" src="./img/readermanager_4.png"> + +If you have successfully confirmed that iCLASS legacy is switched on then proceed to the next step + +## Verify reader has ProxII enabled +^[Top](#top) + +You can verify that the low frequency ProxII is enabled by using one of the following methods: + + * Hold a [RF field detector](https://sneaktechnology.com/product/rf-detector-by-proxgrind-2/) at the reader and see if the RED LED flashes + * Use the Flipper RFID detector app `apps > tools > RFID detector` and make sure RFID symbol is active + * Use [reader manager](#inspect-reader-with-hid-reader-manager) and inspect the reader and check if 125khz prox is enabled at the bottom of the credentials page + + +## Test files +^[Top](#top) + +Below are two dump files provided for easy testing. + +PM3 - Download [hf-iclass-dump.json](../traces/iclass/hf-iclass-dump.json) +F0 - Download [iclass-flipper.picopass](../traces/iclass/iclass-flipper.picopass) + + +How to restore the dump files on each device. + +PM3 +- run the follwing command to restore hf-iclass-dump.json to a picopass card + `hf iclass restore -f hf-iclass-dump.json --ki 0` + +F0 +- Drop the iclass-flipper.picopass file here and write to card on Flipper + `qflipper > SD card > apps data > picopass` + + +# Simulate a standard keyed iCLASS legacy credential +^[Top](#top) + +For [Test files](#test-files) if needed. + +Instructions: +Once you loaded the file and started the simulation. Hold the device to the reader. If it beeps, proceed to [Write a downgraded iCLASS legacy credential](#write-a-downgraded-iclass-legacy-credential) + +PM3 +``` +hf iclass eload -f hf-iclass-dump.json +hf iclass sim -t 3 +``` + +F0 +`qflipper > SD card > apps data > picopass` +drop iclass-flipper.picopass file here and simulate on Flipper + + +# Write a downgraded iCLASS legacy credential +^[Top](#top) + +## Using Omnikey Reader 5427CK Gen2 and Proxmark3 +^[Top](#top) + +1. Download latest version of Omnikey workbench [here](https://www3.hidglobal.com/drivers/14994) +2. Plug in Omnikey reader +3. Start Omnikey workbench +4. Switch reader mode to CCID mode +5. Go to card diagnostic tab and place card on reader +6. Copy the raw PACS binary +7. Launch PM3 client, place iCLASS/Picopass card on HF antenna, and use following command to write your credential + `hf iclass encode --bin <COPIED BINARY> --ki 0` + +## Using Flipper Zero with NARD +^[Top](#top) + +Prequisite, you must already have a [NARD add-on board](https://github.com/killergeek/nard) and a HID SAM + +If not, you can buy a [kit](https://www.redteamtools.com/nard-sam-expansion-board-for-flipper-zero-with-hid-seos-iclass-sam/) from RTA webshop. + +Follow these steps: + +1. Launch Seader application + + if `credential == iClass` use read picopass + + if `credential == SEOS` use read 14443A + +2. Place flipper on credential and read +3. Save as picopass +4. Go to picopass app and write your credential to a card + +## Using Weaponized HID Reader +^[Top](#top) + +OBS! +This method involves more technical steps, wiring, and is recommended for advanced users. If this is your first time with RFID technology and downgrade attacks, we suggest any of the two options above. + +Prequisite, you will need the following bill of materials (BOM): +* A standard keyed iCLASS SE reader +* A ESPKEY [Github project](https://github.com/rfidtool/ESP-RFID-Tool) +* Some 20-24 AWG wire or ethernet cable +* Your preferred power source (5-9v) + +The easiest way is to buy a [ESPKEY](https://www.aliexpress.com/item/32850151497.html) + +Follow these steps: + +1. Connect the `Data 0, Data 1, Ground, Power` to the respective terminals on the ESPKEY +2. Provide 5-9V power to the reader and ESPKEY at the same time using your preferred power source + +IT IS ABSOLUTELY NECESSARY THAT THE READER AND ESPKEY SHARE THE SAME GROUND EVEN IF YOU ARE POWERING ESPKEY AND READER SEPERATELY + +3. Connect to the wifi network the ESPKEY and navigate to `192.168.1.1` for the interface +4. Scan your credential on the reader +5. Open `log.txt` and copy the binary string WITHOUT the preamble +6. Use the above instructions and encode the binary wiegand data to a iCLASS card using PM3 + + + +# Write ProxII credential to a T5577 +^[Top](#top) +OBS! Downgrading to a T5577 will only work if reader has low frequency (125 kHz) / Prox II enabled. + +## Using Proxmark3 +^[Top](#top) + +1. Copy the raw PACS binary from your [Omnikey](#using-omnikey-reader-5427ck-gen2-and-proxmark3) output +2. PM3 ``wiegand decode --bin <raw PACS binary>`` + +Below is example syntax, you will use your specific card information gathered in the previous step. + +3. `lf hid clone -w c1k48s --fc 69 --cn 69420` +4. `lf hid reader` to verify output + +## Using Flipper Zero +^[Top](#top) + +1. After reading your credential with [NARD / Seader](#using-flipper-zero-with-nard) +2. select the ``save RFID`` option +3. Use the 125kHz RFID app and write the data to a T5577 + + +Author [@kitsunehunter](https://gist.github.com/kitsunehunter) 2023 \ No newline at end of file diff --git a/doc/img/readermanager_1.png b/doc/img/readermanager_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e23ed99f18f56c49099a99960945514a43bb1537 GIT binary patch literal 189418 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 literal 0 HcmV?d00001 diff --git a/doc/img/readermanager_2.png b/doc/img/readermanager_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5c2db8e291820b875ce1772d3d61a4841114dfa3 GIT binary patch literal 83911 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 literal 0 HcmV?d00001 diff --git a/doc/img/readermanager_3.png b/doc/img/readermanager_3.png new file mode 100644 index 0000000000000000000000000000000000000000..37496f7659ce864474da2482e36bd2af40dd56c6 GIT binary patch literal 90493 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 literal 0 HcmV?d00001 diff --git a/doc/img/readermanager_4.png b/doc/img/readermanager_4.png new file mode 100644 index 0000000000000000000000000000000000000000..15a616f219790922b718e95c9658c87aa3040616 GIT binary patch literal 134567 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%0A$xqE|nBA)Q!_g4e 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 literal 0 HcmV?d00001 diff --git a/traces/iclass/hf-iclass-dump.json b/traces/iclass/hf-iclass-dump.json new file mode 100644 index 000000000..aa22fa6dc --- /dev/null +++ b/traces/iclass/hf-iclass-dump.json @@ -0,0 +1,33 @@ +{ + "Created": "proxmark3", + "FileType": "iclass", + "Card": { + "CSN": "6DC25B15FEFF12E0", + "Configuration": "12FFFFFF7F1FFF3C", + "Epurse": "FFFFFFFF05FEFFFF", + "Kd": "B2453554FC7F4148", + "Kc": "FFFFFFFFFFFFFFFF", + "AIA": "FFFFFFFFFFFFFFFF" + }, + "blocks": { + "0": "6DC25B15FEFF12E0", + "1": "12FFFFFF7F1FFF3C", + "2": "FFFFFFFF05FEFFFF", + "3": "B2453554FC7F4148", + "4": "FFFFFFFFFFFFFFFF", + "5": "FFFFFFFFFFFFFFFF", + "6": "030303030003E017", + "7": "783602A2283010E8", + "8": "2AD4C8211F996871", + "9": "2AD4C8211F996871", + "10": "FFFFFFFFFFFFFFFF", + "11": "FFFFFFFFFFFFFFFF", + "12": "FFFFFFFFFFFFFFFF", + "13": "FFFFFFFFFFFFFFFF", + "14": "FFFFFFFFFFFFFFFF", + "15": "FFFFFFFFFFFFFFFF", + "16": "FFFFFFFFFFFFFFFF", + "17": "FFFFFFFFFFFFFFFF", + "18": "FFFFFFFFFFFFFFFF" + } +} diff --git a/traces/iclass/iclass-flipper.picopass b/traces/iclass/iclass-flipper.picopass new file mode 100644 index 000000000..7997ac302 --- /dev/null +++ b/traces/iclass/iclass-flipper.picopass @@ -0,0 +1,22 @@ +Filetype: Flipper Picopass device +Version: 1 +Credential: 00 00 C0 00 45 02 1E 58 +# Picopass blocks +Block 0: 6D C2 5B 15 FE FF 12 E0 +Block 1: 12 FF FF FF 7F 1F FF 3C +Block 2: FF FF FF FF 05 FE FF FF +Block 3: B2 45 35 54 FC 7F 41 48 +Block 4: FF FF FF FF FF FF FF FF +Block 5: FF FF FF FF FF FF FF FF +Block 6: 03 03 03 03 00 03 E0 17 +Block 7: 78 36 02 A2 28 30 10 E8 +Block 8: 2A D4 C8 21 1F 99 68 71 +Block 9: 2A D4 C8 21 1F 99 68 71 +Block 10: FF FF FF FF FF FF FF FF +Block 11: FF FF FF FF FF FF FF FF +Block 12: FF FF FF FF FF FF FF FF +Block 13: FF FF FF FF FF FF FF FF +Block 14: FF FF FF FF FF FF FF FF +Block 15: FF FF FF FF FF FF FF FF +Block 16: FF FF FF FF FF FF FF FF +Block 17: FF FF FF FF FF FF FF FF From adc289c510d2154903cc2442d1c8a96addc1b3f3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 12 Dec 2023 17:06:07 +0100 Subject: [PATCH 0864/1034] fix path --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a0fc24d02..a2b473e78 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ The Proxmark3 is the swiss-army tool of RFID, allowing for interactions with the |[Developing standalone mode](/armsrc/Standalone/readme.md)|[Wiki about standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode)|[Notes on Magic UID cards](/doc/magic_cards_notes.md)| |[Notes on Color usage](/doc/colors_notes.md)|[Makefile vs CMake](/doc/md/Development/Makefile-vs-CMake.md)|[Notes on Cloner guns](/doc/cloner_notes.md)| |[Notes on cliparser usage](/doc/cliparser.md)|[Notes on clocks](/doc/clocks.md)|[Notes on MIFARE DESFire](/doc/desfire.md)| -|[Notes on CIPURSE](/doc/cipurse.md)|[Notes on NDEF type4a](/doc/ndef_type4a.md)|[Notes on downgrade attacks](/doc/md/hid_downgrade.md)| +|[Notes on CIPURSE](/doc/cipurse.md)|[Notes on NDEF type4a](/doc/ndef_type4a.md)|[Notes on downgrade attacks](/doc/hid_downgrade.md)| # How to build? From 20872b8707540c2bc10183fe03807951620d9360 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 12 Dec 2023 17:10:23 +0100 Subject: [PATCH 0865/1034] text --- doc/hid_downgrade.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/doc/hid_downgrade.md b/doc/hid_downgrade.md index 9dd856593..53e807df8 100644 --- a/doc/hid_downgrade.md +++ b/doc/hid_downgrade.md @@ -1,12 +1,16 @@ -# Notes on iCLASS SE / SEOS downgrade attacks +# Notes on downgrade attacks <a id="top"></a> +Author [@kitsunehunter](https://gist.github.com/kitsunehunter) 2023 + This is a reworked text. You find the [original text here](https://gist.github.com/kitsunehunter/c75294bdbd0533eca298d122c39fb1bd) +The collective notes on iCLASS SR / iCLASS SE / SEOS downgrade attacks. + This document targets both Proxmark3 and Flipper Zero devices. # Table of Contents -- [Notes on iCLASS SE / SEOS downgrade attacks](#notes-on-iclass-se--seos-downgrade-attacks) +- [Notes on downgrade attacks](#notes-on-downgrade-attacks) - [Table of Contents](#table-of-contents) - [Terminology](#terminology) - [Useful links](#useful-links) @@ -54,11 +58,13 @@ This document targets both Proxmark3 and Flipper Zero devices. ^[Top](#top) [HID iCLASS Credentials tech primer](https://forum.dangerousthings.com/t/types-of-hid-iclass-cards/12243) + [What does all data on my card mean?!](https://www.hidglobal.com/doclib/files/resource_files/an0109_a.2_credential_id_markings_application_note.pdf) # Downgrade concept ^[Top](#top) + There is not much you can do with just a card and a Proxmark3 or Flipper Zero. There is no card-only attack vectors. There are however reader/card vectors but that is outside the scope of this note. Your iCLASS SR/iCLASS SE/SEOS credential has a SIO (Secure Identity Object) that stores your access control information also known as the PACS payload. We will need to extract the SIO with one of the methods outlined below and write that data onto a Picopass or a T5577. @@ -254,5 +260,3 @@ Below is example syntax, you will use your specific card information gathered in 2. select the ``save RFID`` option 3. Use the 125kHz RFID app and write the data to a T5577 - -Author [@kitsunehunter](https://gist.github.com/kitsunehunter) 2023 \ No newline at end of file From 7aabd7870730c604e11789f368c4b422aa622870 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 12 Dec 2023 17:11:32 +0100 Subject: [PATCH 0866/1034] text --- doc/hid_downgrade.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/hid_downgrade.md b/doc/hid_downgrade.md index 53e807df8..2a48643c5 100644 --- a/doc/hid_downgrade.md +++ b/doc/hid_downgrade.md @@ -240,6 +240,7 @@ IT IS ABSOLUTELY NECESSARY THAT THE READER AND ESPKEY SHARE THE SAME GROUND EVEN # Write ProxII credential to a T5577 ^[Top](#top) + OBS! Downgrading to a T5577 will only work if reader has low frequency (125 kHz) / Prox II enabled. ## Using Proxmark3 From ab9753629b66f30c79e702ff90fa98d55ebd2526 Mon Sep 17 00:00:00 2001 From: kitsunehunter <90627943+kitsunehunter@users.noreply.github.com> Date: Tue, 12 Dec 2023 12:14:09 -0500 Subject: [PATCH 0867/1034] Add omnikey auto downgrade config file Signed-off-by: kitsunehunter <90627943+kitsunehunter@users.noreply.github.com> --- traces/iclass/encoder.cfg | Bin 0 -> 7168 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 traces/iclass/encoder.cfg diff --git a/traces/iclass/encoder.cfg b/traces/iclass/encoder.cfg new file mode 100644 index 0000000000000000000000000000000000000000..e65a44a1f4b69319e0f5514604baf1949a3210ad GIT binary patch literal 7168 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 C-Rvj; literal 0 HcmV?d00001 From b1410264ca17a8bdab7faa33afcb71fa83daac90 Mon Sep 17 00:00:00 2001 From: kitsunehunter <90627943+kitsunehunter@users.noreply.github.com> Date: Tue, 12 Dec 2023 13:16:32 -0500 Subject: [PATCH 0868/1034] Update omnikey usage and encoding Signed-off-by: kitsunehunter <90627943+kitsunehunter@users.noreply.github.com> --- doc/hid_downgrade.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/doc/hid_downgrade.md b/doc/hid_downgrade.md index 2a48643c5..5fdd06655 100644 --- a/doc/hid_downgrade.md +++ b/doc/hid_downgrade.md @@ -186,10 +186,10 @@ drop iclass-flipper.picopass file here and simulate on Flipper 2. Plug in Omnikey reader 3. Start Omnikey workbench 4. Switch reader mode to CCID mode -5. Go to card diagnostic tab and place card on reader -6. Copy the raw PACS binary -7. Launch PM3 client, place iCLASS/Picopass card on HF antenna, and use following command to write your credential - `hf iclass encode --bin <COPIED BINARY> --ki 0` +5. Go to reader upload tab +6. Use the "load file" function and load the `encoder.cfg` [config file](https://github.com/kitsunehunter/proxmark3/blob/master/traces/iclass/encoder.cfg) +7. Launch PM3 client, place iCLASS/Picopass card on HF antenna and read your original card on the Omnikey reader +8. Press enter ## Using Flipper Zero with NARD ^[Top](#top) @@ -234,8 +234,7 @@ IT IS ABSOLUTELY NECESSARY THAT THE READER AND ESPKEY SHARE THE SAME GROUND EVEN 3. Connect to the wifi network the ESPKEY and navigate to `192.168.1.1` for the interface 4. Scan your credential on the reader 5. Open `log.txt` and copy the binary string WITHOUT the preamble -6. Use the above instructions and encode the binary wiegand data to a iCLASS card using PM3 - +6. Use `hf iclass encode --bin <COPIED BINARY STRING> --ki 0` to encode the PACS payload to a iClass legacy card # Write ProxII credential to a T5577 From 032ba98c4937bb5230291314e35b117f19cdc194 Mon Sep 17 00:00:00 2001 From: kitsunehunter <90627943+kitsunehunter@users.noreply.github.com> Date: Tue, 12 Dec 2023 13:17:01 -0500 Subject: [PATCH 0869/1034] Add info on MultiClass Signed-off-by: kitsunehunter <90627943+kitsunehunter@users.noreply.github.com> --- doc/hid_downgrade.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/hid_downgrade.md b/doc/hid_downgrade.md index 5fdd06655..2ede7a422 100644 --- a/doc/hid_downgrade.md +++ b/doc/hid_downgrade.md @@ -241,6 +241,7 @@ IT IS ABSOLUTELY NECESSARY THAT THE READER AND ESPKEY SHARE THE SAME GROUND EVEN ^[Top](#top) OBS! Downgrading to a T5577 will only work if reader has low frequency (125 kHz) / Prox II enabled. +A good indicator to look out for is the "MultiClass" sticker on the reader. ## Using Proxmark3 ^[Top](#top) From fc1de1e1f1ca20b77bd253c3b4998e1123f2f7ec Mon Sep 17 00:00:00 2001 From: kitsunehunter <90627943+kitsunehunter@users.noreply.github.com> Date: Tue, 12 Dec 2023 13:56:25 -0500 Subject: [PATCH 0870/1034] spelling Signed-off-by: kitsunehunter <90627943+kitsunehunter@users.noreply.github.com> --- doc/hid_downgrade.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/hid_downgrade.md b/doc/hid_downgrade.md index 2ede7a422..28f30a8e9 100644 --- a/doc/hid_downgrade.md +++ b/doc/hid_downgrade.md @@ -234,14 +234,14 @@ IT IS ABSOLUTELY NECESSARY THAT THE READER AND ESPKEY SHARE THE SAME GROUND EVEN 3. Connect to the wifi network the ESPKEY and navigate to `192.168.1.1` for the interface 4. Scan your credential on the reader 5. Open `log.txt` and copy the binary string WITHOUT the preamble -6. Use `hf iclass encode --bin <COPIED BINARY STRING> --ki 0` to encode the PACS payload to a iClass legacy card +6. Use `hf iclass encode --bin <COPIED BINARY STRING> --ki 0` to encode the PACS payload to a iCLASS legacy card # Write ProxII credential to a T5577 ^[Top](#top) OBS! Downgrading to a T5577 will only work if reader has low frequency (125 kHz) / Prox II enabled. -A good indicator to look out for is the "MultiClass" sticker on the reader. +A good indicator to look out for is the "multiCLASS" sticker on the reader. ## Using Proxmark3 ^[Top](#top) From c14d67544646e7e5b3366c11c4c190e2dd788160 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 12 Dec 2023 21:06:53 +0100 Subject: [PATCH 0871/1034] fix link --- doc/hid_downgrade.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/hid_downgrade.md b/doc/hid_downgrade.md index 28f30a8e9..d9bea939b 100644 --- a/doc/hid_downgrade.md +++ b/doc/hid_downgrade.md @@ -142,8 +142,8 @@ You can verify that the low frequency ProxII is enabled by using one of the foll Below are two dump files provided for easy testing. -PM3 - Download [hf-iclass-dump.json](../traces/iclass/hf-iclass-dump.json) -F0 - Download [iclass-flipper.picopass](../traces/iclass/iclass-flipper.picopass) +- PM3 - Download [hf-iclass-dump.json](../traces/iclass/hf-iclass-dump.json) +- F0 - Download [iclass-flipper.picopass](../traces/iclass/iclass-flipper.picopass) How to restore the dump files on each device. @@ -187,7 +187,7 @@ drop iclass-flipper.picopass file here and simulate on Flipper 3. Start Omnikey workbench 4. Switch reader mode to CCID mode 5. Go to reader upload tab -6. Use the "load file" function and load the `encoder.cfg` [config file](https://github.com/kitsunehunter/proxmark3/blob/master/traces/iclass/encoder.cfg) +6. Use the "load file" function and load the `encoder.cfg` [config file](../traces/iclass/encoder.cfg) 7. Launch PM3 client, place iCLASS/Picopass card on HF antenna and read your original card on the Omnikey reader 8. Press enter From c82bc2aea571caa31467339905cea75cbc7ea59c Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Wed, 13 Dec 2023 21:00:11 +0800 Subject: [PATCH 0872/1034] Fix docs Add new PLATFORM_EXTRAS options in 4_Advanced-compilation-parameters.md Fix some help text --- client/src/proxmark3.c | 4 ++-- .../4_Advanced-compilation-parameters.md | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 00e93c6d1..6ab2e5edf 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -596,13 +596,13 @@ static void show_help(bool showFullHelp, char *exec_name) { PrintAndLogEx(NORMAL, " -s/--script-file <cmd_script_file> script file with one Proxmark3 command per line"); PrintAndLogEx(NORMAL, " -i/--interactive enter interactive mode after executing the script or the command"); PrintAndLogEx(NORMAL, " --incognito do not use history, prefs file nor log files"); + PrintAndLogEx(NORMAL, " --ncpu <num_cores> override number of CPU cores"); PrintAndLogEx(NORMAL, "\nOptions in flasher mode:"); PrintAndLogEx(NORMAL, " --flash flash Proxmark3, requires at least one --image"); - PrintAndLogEx(NORMAL, " --reboot-bootloader reboot Proxmark3 into bootloader mode"); + PrintAndLogEx(NORMAL, " --reboot-to-bootloader reboot Proxmark3 into bootloader mode"); PrintAndLogEx(NORMAL, " --unlock-bootloader Enable flashing of bootloader area *DANGEROUS* (need --flash)"); PrintAndLogEx(NORMAL, " --force Enable flashing even if firmware seems to not match client version"); PrintAndLogEx(NORMAL, " --image <imagefile> image to flash. Can be specified several times."); - PrintAndLogEx(NORMAL, " --ncpu <num_cores> override number of CPU cores"); PrintAndLogEx(NORMAL, "\nExamples:"); PrintAndLogEx(NORMAL, "\n to run Proxmark3 client:\n"); PrintAndLogEx(NORMAL, " %s "SERIAL_PORT_EXAMPLE_H" -- runs the pm3 client", exec_name); diff --git a/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md b/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md index 32c7e4116..406a7bcec 100644 --- a/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md +++ b/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md @@ -82,13 +82,21 @@ Known issues: Here are the supported values you can assign to `PLATFORM_EXTRAS` in `Makefile.platform`: -| PLATFORM_EXTRAS | DESCRIPTION | -|-----------------|----------------------------------------| -| BTADDON | Proxmark3 rdv4 BT add-on | +| PLATFORM_EXTRAS | DESCRIPTION | +|-----------------|-----------------------------------------| +| BTADDON | Proxmark3 rdv4 BT add-on | +| FLASH | Flash modding for generic Proxmark3 | +| SMARTCARD | Smartcard modding for generic Proxmark3 | By default `PLATFORM_EXTRAS=`. -If you have installed a Blue Shark add-on on your RDV4, define `PLATFORM_EXTRAS=BTADDON` in your `Makefile.platform`. +If you have installed a Blue Shark add-on on your RDV4, define `PLATFORM_EXTRAS=BTADDON` in your `Makefile.platform` to enable it. + +If you did some modding on the `PM3GENERIC` platform, you can define `FLASH` and `SMARTCARD` to enable these features, like +`PLATFORM_EXTRAS=FLASH` + +You can also define multiple options like +`PLATFORM_EXTRAS=FLASH SMARTCARD` ## STANDALONE From 81888e01a2244aebfa2b93b4bb08729a6de7dc49 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Wed, 13 Dec 2023 21:24:56 +0800 Subject: [PATCH 0873/1034] Add hw bootloader Reboot to the bootloader mode in the client --- CHANGELOG.md | 1 + client/src/cmdhw.c | 21 +++++++++++++++++++++ client/src/flash.c | 12 +++++++----- client/src/flash.h | 2 +- client/src/proxmark3.c | 2 +- 5 files changed, 31 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index df11f9f47..b2870624a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `hf 14a info` - now reads and prints QL88 sigantures (@iceman1001) - Fixed `hf iclass dump` truncating AA2 blocks and improve reliability (@nvx) - Added some info about UMC in "doc/magic_cards_notes.md" (@temskiy) + - Added `hw bootloader` to reboot to the bootloader mode (@wh201906) ## [Faraday.4.17511][2023-11-13] - Fixed Python support of `experimental_client_with_swig` (@doegox) diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index 184aa58e8..273ed384b 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -37,6 +37,7 @@ #include "cmdflashmem.h" // get_signature.. #include "uart/uart.h" // configure timeout #include "util_posix.h" +#include "flash.h" // reboot to bootloader mode static int CmdHelp(const char *Cmd); @@ -1100,6 +1101,25 @@ static int CmdBreak(const char *Cmd) { return PM3_SUCCESS; } +static int CmdBootloader(const char *Cmd) { + + CLIParserContext *ctx; + CLIParserInit(&ctx, "hw bootloader", + "Reboot Proxmark3 into bootloader mode", + "hw bootloader\n" + ); + + void *argtable[] = { + arg_param_begin, + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + CLIParserFree(ctx); + clearCommandBuffer(); + flash_reboot_bootloader(g_conn.serial_port_name, false); + return PM3_SUCCESS; +} + int set_fpga_mode(uint8_t mode) { if (mode < FPGA_BITSTREAM_LF || mode > FPGA_BITSTREAM_HF_15) { return PM3_EINVARG; @@ -1122,6 +1142,7 @@ static command_t CommandTable[] = { {"-------------", CmdHelp, AlwaysAvailable, "----------------------- " _CYAN_("Hardware") " -----------------------"}, {"help", CmdHelp, AlwaysAvailable, "This help"}, {"break", CmdBreak, IfPm3Present, "Send break loop usb command"}, + {"bootloader", CmdBootloader, IfPm3Present, "Reboot Proxmark3 into bootloader mode"}, {"connect", CmdConnect, AlwaysAvailable, "Connect Proxmark3 to serial port"}, {"dbg", CmdDbg, IfPm3Present, "Set Proxmark3 debug level"}, {"detectreader", CmdDetectReader, IfPm3Present, "Detect external reader field"}, diff --git a/client/src/flash.c b/client/src/flash.c index aed71f805..e4468ad8d 100644 --- a/client/src/flash.c +++ b/client/src/flash.c @@ -427,7 +427,7 @@ static int get_proxmark_state(uint32_t *state) { } // Enter the bootloader to be able to start flashing -static int enter_bootloader(char *serial_port_name) { +static int enter_bootloader(char *serial_port_name, bool wait_appear) { uint32_t state; int ret; @@ -457,7 +457,9 @@ static int enter_bootloader(char *serial_port_name) { // Let time to OS to make the port disappear msleep(1000); - if (OpenProxmark(&g_session.current_device, serial_port_name, true, 60, true, FLASHMODE_SPEED)) { + if (wait_appear == false) { + return PM3_SUCCESS; + } else if (OpenProxmark(&g_session.current_device, serial_port_name, true, 60, true, FLASHMODE_SPEED)) { PrintAndLogEx(NORMAL, _GREEN_(" found")); return PM3_SUCCESS; } else { @@ -512,7 +514,7 @@ int flash_start_flashing(int enable_bl_writes, char *serial_port_name, uint32_t uint32_t chipinfo = 0; int ret; - ret = enter_bootloader(serial_port_name); + ret = enter_bootloader(serial_port_name, true); if (ret != PM3_SUCCESS) return ret; @@ -601,8 +603,8 @@ int flash_start_flashing(int enable_bl_writes, char *serial_port_name, uint32_t } // Reboot into bootloader -int flash_reboot_bootloader(char *serial_port_name) { - return enter_bootloader(serial_port_name); +int flash_reboot_bootloader(char *serial_port_name, bool wait_appear) { + return enter_bootloader(serial_port_name, wait_appear); } static int write_block(uint32_t address, uint8_t *data, uint32_t length) { diff --git a/client/src/flash.h b/client/src/flash.h index fa5694dbd..8f66a2025 100644 --- a/client/src/flash.h +++ b/client/src/flash.h @@ -44,7 +44,7 @@ typedef struct { int flash_load(flash_file_t *ctx, bool force); int flash_prepare(flash_file_t *ctx, int can_write_bl, int flash_size); int flash_start_flashing(int enable_bl_writes, char *serial_port_name, uint32_t *max_allowed); -int flash_reboot_bootloader(char *serial_port_name); +int flash_reboot_bootloader(char *serial_port_name, bool wait_appear); int flash_write(flash_file_t *ctx); void flash_free(flash_file_t *ctx); int flash_stop_flashing(void); diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 00e93c6d1..328b45b52 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -733,7 +733,7 @@ static int reboot_bootloader_pm3(char *serial_port_name) { } PrintAndLogEx(NORMAL, _GREEN_(" found")); - return flash_reboot_bootloader(serial_port_name); + return flash_reboot_bootloader(serial_port_name, true); } #endif //LIBPM3 From a2327cfe2075e85851cf2ed77e28eabc8e877eee Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 13 Dec 2023 22:33:09 +0100 Subject: [PATCH 0874/1034] typo --- client/src/cmdhf14a.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index a56a32851..8e86f211f 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -284,7 +284,7 @@ static int hf_14a_config_example(void) { PrintAndLogEx(NORMAL, _YELLOW_(" hf mf wrbl --blk 0 -k FFFFFFFFFFFF -d 04112233445566084400626364656667")); PrintAndLogEx(NORMAL, _YELLOW_(" hf 14a config --std")); PrintAndLogEx(NORMAL, _CYAN_(" MFC 4k 7b UID")":"); - PrintAndLogEx(NORMAL, _YELLOW_(" hf 14a config --atqa forcce --bcc ignore --cl2 force --cl3 skip --rats skip")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf 14a config --atqa force --bcc ignore --cl2 force --cl3 skip --rats skip")); PrintAndLogEx(NORMAL, _YELLOW_(" hf mf wrbl --blk 0 -k FFFFFFFFFFFF -d 04112233445566184200626364656667")); PrintAndLogEx(NORMAL, _YELLOW_(" hf 14a config --std")); PrintAndLogEx(NORMAL, _CYAN_(" MFUL ")"/" _CYAN_(" MFUL EV1 ")"/" _CYAN_(" MFULC")":"); From 17ab86c52c91f723306383c699c696792100d48e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 00:30:15 +0100 Subject: [PATCH 0875/1034] make sure limit match up with the multiple of 4 bytes alignment --- armsrc/BigBuf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index b622e013b..0c629b50f 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -129,7 +129,7 @@ void BigBuf_Clear_keep_EM(void) { // allocate a chunk of memory from BigBuf. We allocate high memory first. The unallocated memory // at the beginning of BigBuf is always for traces/samples uint8_t *BigBuf_malloc(uint16_t chunksize) { - if (s_bigbuf_hi < chunksize) + if (s_bigbuf_hi < (chunksize + 3)) return NULL; // no memory left chunksize = (chunksize + 3) & 0xfffc; // round to next multiple of 4 @@ -142,7 +142,7 @@ uint8_t *BigBuf_malloc(uint16_t chunksize) { uint8_t *BigBuf_calloc(uint16_t chunksize) { uint8_t *mem = BigBuf_malloc(chunksize); if (mem != NULL) { - memset(mem, 0x00, chunksize); + memset(mem, 0x00, ((chunksize + 3) & 0xfffc)); // round to next multiple of 4 } return mem; } From ee1534103bc64f2e2f22d430c404e8f08a5803bb Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 00:31:09 +0100 Subject: [PATCH 0876/1034] make sure to turn off the antenna if entering this state --- armsrc/appmain.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 66fdcf3a3..9267ecffd 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -2826,13 +2826,14 @@ void __attribute__((noreturn)) AppMain(void) { usart_init(USART_BAUD_RATE, USART_PARITY); #endif + allow_send_wtx = true; + // This is made as late as possible to ensure enumeration without timeout // against device such as http://www.hobbytronics.co.uk/usb-host-board-v2 // In other words, keep the interval between usb_enable() and the main loop as short as possible. // (AT91F_CDC_Enumerate() will be called in the main loop) usb_disable(); usb_enable(); - allow_send_wtx = true; for (;;) { WDT_HIT(); @@ -2840,6 +2841,7 @@ void __attribute__((noreturn)) AppMain(void) { if (*_stack_start != 0xdeadbeef) { Dbprintf("Stack overflow detected! Please increase stack size, currently %d bytes", (uint32_t)_stack_end - (uint32_t)_stack_start); Dbprintf("Unplug your device now."); + hf_field_off(); while (1); } From f4f832e121c62667efeda41086c73f03760f04f7 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 00:33:02 +0100 Subject: [PATCH 0877/1034] style --- armsrc/iso14443a.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 9de1e9a31..a15359ed4 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1942,8 +1942,10 @@ static void TransmitFor14443a(const uint8_t *cmd, uint16_t len, uint32_t *timing else PrepareDelayedTransfer(*timing & 0x00000007); // Delay transfer (fine tuning - up to 7 MF clock ticks) - if (g_dbglevel >= DBG_EXTENDED && GetCountSspClk() >= (*timing & 0xfffffff8)) + if (g_dbglevel >= DBG_EXTENDED && GetCountSspClk() >= (*timing & 0xfffffff8)) { Dbprintf("TransmitFor14443a: Missed timing"); + } + while (GetCountSspClk() < (*timing & 0xfffffff8)) {}; // Delay transfer (multiple of 8 MF clock ticks) LastTimeProxToAirStart = *timing; } else { @@ -2298,7 +2300,7 @@ bool EmLogTrace(uint8_t *reader_data, uint16_t reader_len, uint32_t reader_Start //----------------------------------------------------------------------------- bool GetIso14443aAnswerFromTag_Thinfilm(uint8_t *receivedResponse, uint8_t *received_len) { - if (!g_hf_field_active) { + if (g_hf_field_active == false) { Dbprintf("Warning: HF field is off, ignoring GetIso14443aAnswerFromTag_Thinfilm command"); return false; } @@ -2346,8 +2348,10 @@ bool GetIso14443aAnswerFromTag_Thinfilm(uint8_t *receivedResponse, uint8_t *rec // If it takes too long return FALSE //----------------------------------------------------------------------------- static int GetIso14443aAnswerFromTag(uint8_t *receivedResponse, uint8_t *receivedResponsePar, uint16_t offset) { - if (g_hf_field_active == false) + if (g_hf_field_active == false) { + Dbprintf("Warning: HF field is off, ignoring GetIso14443aAnswerFromTag command"); return false; + } // Set FPGA mode to "reader listen mode", no modulation (listen // only, since we are receiving, not transmitting). @@ -2911,8 +2915,8 @@ void iso14443a_setup(uint8_t fpga_minor_mode) { } /* Peter Fillmore 2015 -Added card id field to the function - info from ISO14443A standard +Added card id field to the function info from ISO14443A standard + b1 = Block Number b2 = RFU (always 1) b3 = depends on block @@ -2920,14 +2924,17 @@ b4 = Card ID following if set to 1 b5 = depends on block type b6 = depends on block type b7,b8 = block type. + Coding of I-BLOCK: b8 b7 b6 b5 b4 b3 b2 b1 0 0 0 x x x 1 x b5 = chaining bit + Coding of R-block: b8 b7 b6 b5 b4 b3 b2 b1 1 0 1 x x 0 1 x b5 = ACK/NACK + Coding of S-block: b8 b7 b6 b5 b4 b3 b2 b1 1 1 x x x 0 1 0 From e41019e5847d74d2bdec65d4277a8c4960ef40db Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 00:36:07 +0100 Subject: [PATCH 0878/1034] the renumerations of USB seems to time critical. Prolonging the delay seems to improve it. Thanks to @NVX / @HenryGab for looking into it --- bootrom/bootrom.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/bootrom/bootrom.c b/bootrom/bootrom.c index 4c87a65b0..f55f3b52b 100644 --- a/bootrom/bootrom.c +++ b/bootrom/bootrom.c @@ -212,6 +212,12 @@ static void UsbPacketReceived(uint8_t *packet) { reply_old(CMD_ACK, arg0, 0, 0, 0, 0); } +// delay_loop(1) = 3.07us +static volatile uint32_t c; +static void __attribute__((optimize("O0"))) delay_loop(uint32_t delay) { + for (c = delay * 2; c; c--) {}; +} + static void flash_mode(void) { start_addr = 0; end_addr = 0; @@ -234,7 +240,7 @@ static void flash_mode(void) { usb_enable(); // wait for reset to be complete? - for (volatile size_t i = 0; i < 0x100000; i++) {}; + delay_loop(100000); for (;;) { WDT_HIT(); From 0c3d487c15ee202623231d492e3aa8eb5d608aa4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 00:36:33 +0100 Subject: [PATCH 0879/1034] maur --- client/dictionaries/mfc_default_keys.dic | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 0ea00bc57..574d6f05c 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -149,6 +149,9 @@ AC37E76385F5 1EE38419EF39 26578719DCD9 # +# EuroKEY (KeySECI) +4B657953454349 +# # more Keys from mfc_default_keys.lua 000000000001 000000000002 @@ -343,6 +346,9 @@ AFBECD121004 6E7747394E63 763958704B78 # +# Onity S1 A/B +8A19D40CF2B5 +# # 24-7 D21762B2DE3B 0E83A374B513 @@ -975,7 +981,6 @@ C01FC822C6E5 0854BF31111E # # More keys - Found 8A at Sebel Hotel in Canberra, Australia -8A19D40CF2B5 AE8587108640 # # SafLock standalone door locks From 79213b169aa9c03abb0fa9ad6720d8df66bdfd00 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 00:37:06 +0100 Subject: [PATCH 0880/1034] style --- common_arm/usb_cdc.c | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/common_arm/usb_cdc.c b/common_arm/usb_cdc.c index 37774aeeb..125c38115 100644 --- a/common_arm/usb_cdc.c +++ b/common_arm/usb_cdc.c @@ -669,15 +669,17 @@ uint32_t usb_read(uint8_t *data, size_t len) { uint32_t time_out = 0; while (len) { - if (!usb_check()) break; + if (!usb_check()) + break; if (pUdp->UDP_CSR[AT91C_EP_OUT] & bank) { packetSize = ((pUdp->UDP_CSR[AT91C_EP_OUT] & AT91C_UDP_RXBYTECNT) >> 16); packetSize = MIN(packetSize, len); len -= packetSize; - while (packetSize--) + while (packetSize--) { data[nbBytesRcv++] = pUdp->UDP_FDR[AT91C_EP_OUT]; + } // flip bank UDP_CLEAR_EP_FLAGS(AT91C_EP_OUT, bank) @@ -687,7 +689,9 @@ uint32_t usb_read(uint8_t *data, size_t len) { else bank = AT91C_UDP_RX_DATA_BK0; } - if (time_out++ == 0x1fff) break; + + if (time_out++ == 0x1fff) + break; } btReceiveBank = bank; @@ -700,7 +704,8 @@ static size_t usb_read_ng_buflen = 0; uint32_t usb_read_ng(uint8_t *data, size_t len) { - if (len == 0) return 0; + if (len == 0) + return 0; uint8_t bank = btReceiveBank; uint32_t packetSize, nbBytesRcv = 0; @@ -708,24 +713,30 @@ uint32_t usb_read_ng(uint8_t *data, size_t len) { // take first from local buffer if (len <= usb_read_ng_buflen) { - for (uint32_t i = 0; i < len; i++) + + for (uint32_t i = 0; i < len; i++) { data[nbBytesRcv++] = usb_read_ng_buffer[usb_read_ng_bufoff + i]; + } + usb_read_ng_buflen -= len; if (usb_read_ng_buflen == 0) usb_read_ng_bufoff = 0; else usb_read_ng_bufoff += len; + return nbBytesRcv; } else { - for (uint32_t i = 0; i < usb_read_ng_buflen; i++) + for (uint32_t i = 0; i < usb_read_ng_buflen; i++) { data[nbBytesRcv++] = usb_read_ng_buffer[usb_read_ng_bufoff + i]; + } len -= usb_read_ng_buflen; usb_read_ng_buflen = 0; usb_read_ng_bufoff = 0; } while (len) { - if (!usb_check()) break; + if (!usb_check()) + break; if ((pUdp->UDP_CSR[AT91C_EP_OUT] & bank)) { @@ -733,11 +744,13 @@ uint32_t usb_read_ng(uint8_t *data, size_t len) { packetSize = MIN(available, len); available -= packetSize; len -= packetSize; - while (packetSize--) + while (packetSize--) { data[nbBytesRcv++] = pUdp->UDP_FDR[AT91C_EP_OUT]; + } // fill the local buffer with the remaining bytes - for (uint32_t i = 0; i < available; i++) + for (uint32_t i = 0; i < available; i++) { usb_read_ng_buffer[i] = pUdp->UDP_FDR[AT91C_EP_OUT]; + } usb_read_ng_buflen = available; // flip bank UDP_CLEAR_EP_FLAGS(AT91C_EP_OUT, bank) @@ -746,7 +759,8 @@ uint32_t usb_read_ng(uint8_t *data, size_t len) { else bank = AT91C_UDP_RX_DATA_BK0; } - if (time_out++ == 0x1fff) break; + if (time_out++ == 0x1fff) + break; } btReceiveBank = bank; From c3bebd350d164f5975c426efc832a6d224275724 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 00:38:01 +0100 Subject: [PATCH 0881/1034] fix some helptext showing wrong dates compared to what the instructions said --- client/src/cmdhfemrtd.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/client/src/cmdhfemrtd.c b/client/src/cmdhfemrtd.c index e9f2bc65e..a4c934e71 100644 --- a/client/src/cmdhfemrtd.c +++ b/client/src/cmdhfemrtd.c @@ -2087,13 +2087,13 @@ static int CmdHFeMRTDDump(const char *Cmd) { "Dump all files on an eMRTD", "hf emrtd dump\n" "hf emrtd dump --dir ../dump\n" - "hf emrtd dump -n 123456789 -d 19890101 -e 20250401" + "hf emrtd dump -n 123456789 -d 890101 -e 250401" ); void *argtable[] = { arg_param_begin, - arg_str0("n", "documentnumber", "<alphanum>", "document number, up to 9 chars"), - arg_str0("d", "dateofbirth", "<YYMMDD>", "date of birth in YYMMDD format"), + arg_str0("n", "doc", "<alphanum>", "document number, up to 9 chars"), + arg_str0("d", "date", "<YYMMDD>", "date of birth in YYMMDD format"), arg_str0("e", "expiry", "<YYMMDD>", "expiry in YYMMDD format"), arg_str0("m", "mrz", "<[0-9A-Z<]>", "2nd line of MRZ, 44 chars"), arg_str0(NULL, "dir", "<str>", "save dump to the given dirpath"), @@ -2187,14 +2187,14 @@ static int CmdHFeMRTDInfo(const char *Cmd) { "Display info about an eMRTD", "hf emrtd info\n" "hf emrtd info --dir ../dumps\n" - "hf emrtd info -n 123456789 -d 19890101 -e 20250401\n" - "hf emrtd info -n 123456789 -d 19890101 -e 20250401 -i" + "hf emrtd info -n 123456789 -d 890101 -e 250401\n" + "hf emrtd info -n 123456789 -d 890101 -e 250401 -i" ); void *argtable[] = { arg_param_begin, - arg_str0("n", "documentnumber", "<alphanum>", "document number, up to 9 chars"), - arg_str0("d", "dateofbirth", "<YYMMDD>", "date of birth in YYMMDD format"), + arg_str0("n", "doc", "<alphanum>", "document number, up to 9 chars"), + arg_str0("d", "date", "<YYMMDD>", "date of birth in YYMMDD format"), arg_str0("e", "expiry", "<YYMMDD>", "expiry in YYMMDD format"), arg_str0("m", "mrz", "<[0-9A-Z<]>", "2nd line of MRZ, 44 chars (passports only)"), arg_str0(NULL, "dir", "<str>", "display info from offline dump stored in dirpath"), From f47d05df8a1470a2cd09b6e473bb88e4132729a5 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 00:40:03 +0100 Subject: [PATCH 0882/1034] the old isn't needed --- client/src/cmdhf14a.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 8e86f211f..e48e808bb 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -1073,7 +1073,7 @@ static int CmdExchangeAPDU(bool chainingin, uint8_t *datain, int datainlen, bool // here length PM3_CMD_DATA_SIZE=512 // timeout must be authomatically set by "get ATS" if (datain) - SendCommandOLD(CMD_HF_ISO14443A_READER, ISO14A_APDU | ISO14A_NO_DISCONNECT | cmdc, (datainlen & 0x1FF), 0, datain, datainlen & 0x1FF); + SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_APDU | ISO14A_NO_DISCONNECT | cmdc, (datainlen & 0x1FF), 0, datain, datainlen & 0x1FF); else SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_APDU | ISO14A_NO_DISCONNECT | cmdc, 0, 0, NULL, 0); @@ -1165,7 +1165,7 @@ int ExchangeAPDU14a(uint8_t *datain, int datainlen, bool activateField, bool lea } // check R-block ACK -//TODO check this one... + // TODO check this one... if ((*dataoutlen == 0) && (chaining != chainBlockNotLast)) { if (leaveSignalON == false) DropField(); From d3a90a5da34016b72287fcb330b12e3e9fe94994 Mon Sep 17 00:00:00 2001 From: nvx <neovortex@gmail.com> Date: Thu, 14 Dec 2023 20:33:00 +1000 Subject: [PATCH 0883/1034] Clear bss on bootloader start. This fixes a bug with the USB device serial number sometimes not working in bootloader mode. --- CHANGELOG.md | 1 + bootrom/bootrom.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2870624a..ed361cc65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed bootloader to correctly clear bss segment on start. Fixes USB serial number sometimes not working in the bootloader (@nvx) - Change `notes on downgrade attacks` - reworked the original text follow repo style (@iceman1001) - Added `hf mf info` command and static encrypted nonce detection (@merlokk) - Added Saflok KDF - generate MFC keys (@h1kari) diff --git a/bootrom/bootrom.c b/bootrom/bootrom.c index f55f3b52b..c596c7886 100644 --- a/bootrom/bootrom.c +++ b/bootrom/bootrom.c @@ -30,7 +30,7 @@ common_area_t g_common_area __attribute__((section(".commonarea"))); uint32_t start_addr, end_addr; bool bootrom_unlocked; -extern uint32_t _bootrom_start[], _bootrom_end[], _flash_start[], _flash_end[], _osimage_entry[]; +extern uint32_t _bootrom_start[], _bootrom_end[], _flash_start[], _flash_end[], _osimage_entry[], __bss_start__[], __bss_end__[]; static int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *data, size_t len) { PacketResponseOLD txcmd; @@ -268,6 +268,10 @@ static void flash_mode(void) { void BootROM(void); void BootROM(void) { + /* Set up (that is: clear) BSS. */ + uint32_t *bss_dst = __bss_start__; + while (bss_dst < __bss_end__) *bss_dst++ = 0; + //------------ // First set up all the I/O pins; GPIOs configured directly, other ones // just need to be assigned to the appropriate peripheral. From 95d1d5646f5006e5b1705fb7ec40e70c1a9c9b7c Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 23:29:43 +0100 Subject: [PATCH 0884/1034] an attempt to reduce some stack memory. No need for the debug printing to be 512 bytes. Now limited to 200 chars --- CHANGELOG.md | 1 + armsrc/BigBuf.c | 4 ++-- armsrc/appmain.c | 11 +++++++---- armsrc/cmd.c | 13 ++++++++----- armsrc/dbprint.c | 8 ++++---- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed361cc65..b588c69d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Change `dbprint` on device side to use max 200 chars strings. (@iceman1001) - Fixed bootloader to correctly clear bss segment on start. Fixes USB serial number sometimes not working in the bootloader (@nvx) - Change `notes on downgrade attacks` - reworked the original text follow repo style (@iceman1001) - Added `hf mf info` command and static encrypted nonce detection (@merlokk) diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index 0c629b50f..cce710ffa 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -328,9 +328,9 @@ uint8_t emlGet(uint8_t *out, uint32_t offset, uint32_t length) { // get the address of the ToSend buffer. Allocate part of Bigbuf for it, if not yet done tosend_t *get_tosend(void) { - if (toSend.buf == NULL) + if (toSend.buf == NULL) { toSend.buf = BigBuf_malloc(TOSEND_BUFFER_SIZE); - + } return &toSend; } diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 9267ecffd..456d721db 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -2197,8 +2197,9 @@ static void PacketReceived(PacketCommandNG *packet) { reply_ng(CMD_MEASURE_ANTENNA_TUNING_HF, PM3_SUCCESS, NULL, 0); break; case 2: - if (button_status == BUTTON_SINGLE_CLICK) + if (button_status == BUTTON_SINGLE_CLICK) { reply_ng(CMD_MEASURE_ANTENNA_TUNING_HF, PM3_EOPABORTED, NULL, 0); + } uint16_t volt = MeasureAntennaTuningHfData(); reply_ng(CMD_MEASURE_ANTENNA_TUNING_HF, PM3_SUCCESS, (uint8_t *)&volt, sizeof(volt)); break; @@ -2225,8 +2226,9 @@ static void PacketReceived(PacketCommandNG *packet) { reply_ng(CMD_MEASURE_ANTENNA_TUNING_LF, PM3_SUCCESS, NULL, 0); break; case 2: - if (button_status == BUTTON_SINGLE_CLICK) + if (button_status == BUTTON_SINGLE_CLICK) { reply_ng(CMD_MEASURE_ANTENNA_TUNING_LF, PM3_EOPABORTED, NULL, 0); + } uint32_t volt = MeasureAntennaTuningLfData(); reply_ng(CMD_MEASURE_ANTENNA_TUNING_LF, PM3_SUCCESS, (uint8_t *)&volt, sizeof(volt)); @@ -2839,8 +2841,9 @@ void __attribute__((noreturn)) AppMain(void) { WDT_HIT(); if (*_stack_start != 0xdeadbeef) { - Dbprintf("Stack overflow detected! Please increase stack size, currently %d bytes", (uint32_t)_stack_end - (uint32_t)_stack_start); - Dbprintf("Unplug your device now."); + Dbprintf("DEBUG: increase stack size, currently " _YELLOW_("%d") " bytes", (uint32_t)_stack_end - (uint32_t)_stack_start); + Dbprintf("Stack overflow detected"); + Dbprintf("--> Unplug your device now! <--"); hf_field_off(); while (1); } diff --git a/armsrc/cmd.c b/armsrc/cmd.c index f2b432d33..ee2565cd2 100644 --- a/armsrc/cmd.c +++ b/armsrc/cmd.c @@ -18,6 +18,7 @@ #include "usart.h" #include "crc16.h" #include "string.h" +#include "BigBuf.h" // Flags to tell where to add CRC on sent replies bool g_reply_with_crc_on_usb = false; @@ -29,8 +30,8 @@ bool g_reply_via_usb = false; int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, const void *data, size_t len) { PacketResponseOLD txcmd = {CMD_UNKNOWN, {0, 0, 0}, {{0}}}; -// for (size_t i = 0; i < sizeof(PacketResponseOLD); i++) -// ((uint8_t *)&txcmd)[i] = 0x00; + for (size_t i = 0; i < sizeof(PacketResponseOLD); i++) + ((uint8_t *)&txcmd)[i] = 0x00; // Compose the outgoing command frame txcmd.cmd = cmd; @@ -147,7 +148,8 @@ int reply_mix(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, const v if (len && data) memcpy(cmddata + sizeof(arg), data, (int)len); - return reply_ng_internal((cmd & 0xFFFF), status, cmddata, len + sizeof(arg), false); + int res = reply_ng_internal((cmd & 0xFFFF), status, cmddata, len + sizeof(arg), false); + return res; } static int receive_ng_internal(PacketCommandNG *rx, uint32_t read_ng(uint8_t *data, size_t len), bool usb, bool fpc) { @@ -178,9 +180,10 @@ static int receive_ng_internal(PacketCommandNG *rx, uint32_t read_ng(uint8_t *da memcpy(rx->data.asBytes, rx_raw.data, length); rx->length = length; } else { - uint64_t arg[3]; - if (length < sizeof(arg)) + uint64_t arg[3] = {0}; + if (length < sizeof(arg)) { return PM3_EIO; + } memcpy(arg, rx_raw.data, sizeof(arg)); rx->oldarg[0] = arg[0]; diff --git a/armsrc/dbprint.c b/armsrc/dbprint.c index 5caaafb0f..afb83da4c 100644 --- a/armsrc/dbprint.c +++ b/armsrc/dbprint.c @@ -22,7 +22,7 @@ #include "printf.h" #define DEBUG 1 - +#define DEBUG_MAX_MSG_SIZE 200 //============================================================================= // Debug print functions, to go out over USB, to the usual PC-side client. //============================================================================= @@ -31,7 +31,7 @@ void DbpStringEx(uint32_t flags, const char *src, size_t srclen) { #if DEBUG struct { uint16_t flag; - uint8_t buf[PM3_CMD_DATA_SIZE - sizeof(uint16_t)]; + uint8_t buf[DEBUG_MAX_MSG_SIZE]; } PACKED data; data.flag = flags; uint16_t len = MIN(srclen, sizeof(data.buf)); @@ -49,7 +49,7 @@ void DbpString(const char *str) { void DbprintfEx(uint32_t flags, const char *fmt, ...) { #if DEBUG // should probably limit size here; oh well, let's just use a big buffer - char s[PM3_CMD_DATA_SIZE] = {0x00}; + char s[DEBUG_MAX_MSG_SIZE] = {0x00}; va_list ap; va_start(ap, fmt); kvsprintf(fmt, s, 10, ap); @@ -62,7 +62,7 @@ void DbprintfEx(uint32_t flags, const char *fmt, ...) { void Dbprintf(const char *fmt, ...) { #if DEBUG // should probably limit size here; oh well, let's just use a big buffer - char output_string[PM3_CMD_DATA_SIZE] = {0x00}; + char output_string[DEBUG_MAX_MSG_SIZE] = {0x00}; va_list ap; va_start(ap, fmt); From ab0ee92f57e1358f6d7489ebbb396ed458a0adfb Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 23:35:30 +0100 Subject: [PATCH 0885/1034] the par[] array allocation was the root cause for the stack smashing. Making one static array to be reused across 14a functions took care of the issue.\nalso made the command allocation for ISO14 APDU sending a bigbuf allocation instead. Since nothing in the APDU has to do with EMULATOR memory etc. The trace log grows from start of bigbuff, allocations grows from end of bigbuff --- armsrc/iso14443a.c | 47 +++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index a15359ed4..117b5f6fc 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -150,6 +150,8 @@ static iso14a_polling_parameters_t WUPA_POLLING_PARAMETERS = { .extra_timeout = 0, }; +// parity isn't used much +static uint8_t parity_array[MAX_PARITY_SIZE] = {0}; void printHf14aConfig(void) { DbpString(_CYAN_("HF 14a config")); @@ -871,9 +873,8 @@ static void CodeIso14443aAsTagPar(const uint8_t *cmd, uint16_t len, const uint8_ } static void CodeIso14443aAsTagEx(const uint8_t *cmd, uint16_t len, bool collision) { - uint8_t par[MAX_PARITY_SIZE] = {0}; - GetParity(cmd, len, par); - CodeIso14443aAsTagPar(cmd, len, par, collision); + GetParity(cmd, len, parity_array); + CodeIso14443aAsTagPar(cmd, len, parity_array, collision); } static void CodeIso14443aAsTag(const uint8_t *cmd, uint16_t len) { CodeIso14443aAsTagEx(cmd, len, false); @@ -2246,17 +2247,15 @@ int EmSendCmd(uint8_t *resp, uint16_t respLen) { return EmSendCmdEx(resp, respLen, false); } int EmSendCmdEx(uint8_t *resp, uint16_t respLen, bool collision) { - uint8_t par[MAX_PARITY_SIZE] = {0x00}; - GetParity(resp, respLen, par); - return EmSendCmdParEx(resp, respLen, par, collision); + GetParity(resp, respLen, parity_array); + return EmSendCmdParEx(resp, respLen, parity_array, collision); } int EmSendPrecompiledCmd(tag_response_info_t *p_response) { if (p_response == NULL) return 0; int ret = EmSendCmd14443aRaw(p_response->modulation, p_response->modulation_n); // do the tracing for the previous reader request and this tag answer: - uint8_t par[MAX_PARITY_SIZE] = {0x00}; - GetParity(p_response->response, p_response->response_n, par); + GetParity(p_response->response, p_response->response_n, parity_array); EmLogTrace(Uart.output, Uart.len, @@ -2267,7 +2266,7 @@ int EmSendPrecompiledCmd(tag_response_info_t *p_response) { p_response->response_n, LastTimeProxToAirStart * 16 + DELAY_ARM2AIR_AS_TAG, (LastTimeProxToAirStart + p_response->ProxToAirDuration) * 16 + DELAY_ARM2AIR_AS_TAG, - par); + parity_array); return ret; } @@ -2349,7 +2348,7 @@ bool GetIso14443aAnswerFromTag_Thinfilm(uint8_t *receivedResponse, uint8_t *rec //----------------------------------------------------------------------------- static int GetIso14443aAnswerFromTag(uint8_t *receivedResponse, uint8_t *receivedResponsePar, uint16_t offset) { if (g_hf_field_active == false) { - Dbprintf("Warning: HF field is off, ignoring GetIso14443aAnswerFromTag command"); + Dbprintf("Warning: HF field is off"); return false; } @@ -2407,16 +2406,14 @@ void ReaderTransmitPar(uint8_t *frame, uint16_t len, uint8_t *par, uint32_t *tim static void ReaderTransmitBits(uint8_t *frame, uint16_t len, uint32_t *timing) { // Generate parity and redirect - uint8_t par[MAX_PARITY_SIZE] = {0x00}; - GetParity(frame, len / 8, par); - ReaderTransmitBitsPar(frame, len, par, timing); + GetParity(frame, len / 8, parity_array); + ReaderTransmitBitsPar(frame, len, parity_array, timing); } void ReaderTransmit(uint8_t *frame, uint16_t len, uint32_t *timing) { // Generate parity and redirect - uint8_t par[MAX_PARITY_SIZE] = {0x00}; - GetParity(frame, len, par); - ReaderTransmitBitsPar(frame, len * 8, par, timing); + GetParity(frame, len, parity_array); + ReaderTransmitBitsPar(frame, len * 8, parity_array, timing); } static uint16_t ReaderReceiveOffset(uint8_t *receivedAnswer, uint16_t offset, uint8_t *par) { @@ -2942,8 +2939,7 @@ b5,b6 = 00 - DESELECT 11 - WTX */ int iso14_apdu(uint8_t *cmd, uint16_t cmd_len, bool send_chaining, void *data, uint8_t *res) { - uint8_t parity[MAX_PARITY_SIZE] = {0x00}; - uint8_t real_cmd[cmd_len + 4]; + uint8_t *real_cmd = BigBuf_calloc(cmd_len + 4); if (cmd_len) { // ISO 14443 APDU frame: PCB [CID] [NAD] APDU CRC PCB=0x02 @@ -2963,11 +2959,12 @@ int iso14_apdu(uint8_t *cmd, uint16_t cmd_len, bool send_chaining, void *data, u ReaderTransmit(real_cmd, cmd_len + 3, NULL); - size_t len = ReaderReceive(data, parity); + size_t len = ReaderReceive(data, parity_array); uint8_t *data_bytes = (uint8_t *) data; if (!len) { - return 0; //DATA LINK ERROR + BigBuf_free(); + return 0; // DATA LINK ERROR } else { // S-Block WTX while (len && ((data_bytes[0] & 0xF2) == 0xF2)) { @@ -2982,7 +2979,7 @@ int iso14_apdu(uint8_t *cmd, uint16_t cmd_len, bool send_chaining, void *data, u // transmit S-Block ReaderTransmit(data_bytes, len, NULL); // retrieve the result again (with increased timeout) - len = ReaderReceive(data, parity); + len = ReaderReceive(data, parity_array); data_bytes = data; // restore timeout iso14a_set_timeout(save_iso14a_timeout); @@ -2998,11 +2995,13 @@ int iso14_apdu(uint8_t *cmd, uint16_t cmd_len, bool send_chaining, void *data, u } // if we received I-block with chaining we need to send ACK and receive another block of data - if (res) + if (res) { *res = data_bytes[0]; + } // crc check if (len >= 3 && !CheckCrc14A(data_bytes, len)) { + BigBuf_free(); return -1; } @@ -3012,10 +3011,12 @@ int iso14_apdu(uint8_t *cmd, uint16_t cmd_len, bool send_chaining, void *data, u // cut frame byte len -= 1; // memmove(data_bytes, data_bytes + 1, len); - for (int i = 0; i < len; i++) + for (int i = 0; i < len; i++) { data_bytes[i] = data_bytes[i + 1]; + } } + BigBuf_free(); return len; } From e7e3e86ea443ef2695db8771118f1360238a0b77 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 23:36:12 +0100 Subject: [PATCH 0886/1034] text --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b588c69d4..51fd362db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `hf emrtd dump` stack smashing on device side (@iceman1001) - Change `dbprint` on device side to use max 200 chars strings. (@iceman1001) - Fixed bootloader to correctly clear bss segment on start. Fixes USB serial number sometimes not working in the bootloader (@nvx) - Change `notes on downgrade attacks` - reworked the original text follow repo style (@iceman1001) From 6b9963b12a6393d9a7bba0752b0524b466711138 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 23:37:37 +0100 Subject: [PATCH 0887/1034] forgot to free the allocated memory --- armsrc/lfops.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/armsrc/lfops.c b/armsrc/lfops.c index ed2a29378..e11a08e4e 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -391,6 +391,8 @@ void loadT55xxConfig(void) { if (isok == T55XX_CONFIG_LEN) { if (g_dbglevel > 1) DbpString("T55XX Config load success"); } + + BigBuf_free(); #endif } From 70520af03b4773c2bf2850b0e3f56b32ad71c409 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 23:38:04 +0100 Subject: [PATCH 0888/1034] style --- armsrc/util.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/armsrc/util.c b/armsrc/util.c index 9f42c0b08..0834e619d 100644 --- a/armsrc/util.c +++ b/armsrc/util.c @@ -268,8 +268,9 @@ int BUTTON_HELD(int ms) { int ticks = (48000 * (ms ? ms : 1000)) >> 10; // If we're not even pressed, forget about it! - if (BUTTON_PRESS() == false) + if (BUTTON_PRESS() == false) { return BUTTON_NO_CLICK; + } // Borrow a PWM unit for my real-time clock AT91C_BASE_PWMC->PWMC_ENA = PWM_CHANNEL(0); @@ -284,12 +285,14 @@ int BUTTON_HELD(int ms) { uint16_t now = AT91C_BASE_PWMC_CH0->PWMC_CCNTR; // As soon as our button let go, we didn't hold long enough - if (BUTTON_PRESS() == false) + if (BUTTON_PRESS() == false) { return BUTTON_SINGLE_CLICK; + } // Have we waited the full second? - else if (now == (uint16_t)(start + ticks)) + else if (now == (uint16_t)(start + ticks)) { return BUTTON_HOLD; + } WDT_HIT(); } From 7fe12d4d1b310a354d1c0d11d0d26ea0fc17e6fe Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 23:39:21 +0100 Subject: [PATCH 0889/1034] payload should not be larger than 488 bytes, so we can use MIX instead --- client/src/mifare/gen4.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/mifare/gen4.c b/client/src/mifare/gen4.c index b01085671..f3a135b1d 100644 --- a/client/src/mifare/gen4.c +++ b/client/src/mifare/gen4.c @@ -58,7 +58,7 @@ static int mfG4ExCommand(uint8_t cmd, uint8_t *pwd, uint8_t *data, size_t datale int resplen = 0; clearCommandBuffer(); - SendCommandOLD(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_RAW | ISO14A_NO_RATS | ISO14A_APPEND_CRC, 6 + datalen, 0, (uint8_t *)&payload, 6 + datalen); + SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_RAW | ISO14A_NO_RATS | ISO14A_APPEND_CRC, 6 + datalen, 0, (uint8_t *)&payload, 6 + datalen); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { From 2709882312f17bc70397e2a22115cee988b59cc4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 23:40:30 +0100 Subject: [PATCH 0890/1034] untested/unused code but in the process of removing all OLD, will need to verify its never larger than 488 bytes --- client/src/cmdhfepa.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfepa.c b/client/src/cmdhfepa.c index 66ce37d6b..939fa999f 100644 --- a/client/src/cmdhfepa.c +++ b/client/src/cmdhfepa.c @@ -172,7 +172,7 @@ static int CmdHFEPAPACEReplay(const char *Cmd) { clearCommandBuffer(); // arg0: APDU number // arg1: offset into the APDU - SendCommandOLD(CMD_HF_EPA_REPLAY, i + 1, j * sizeof(data), packet_length, data, packet_length); + SendCommandMIX(CMD_HF_EPA_REPLAY, i + 1, j * sizeof(data), packet_length, data, packet_length); if (WaitForResponseTimeout(CMD_HF_EPA_REPLAY, &resp, 2500) == false) { PrintAndLogEx(WARNING, "command time out"); return PM3_ETIMEOUT; From 4a303afecc003cc449388b97b5daa34430b01324 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 23:42:51 +0100 Subject: [PATCH 0891/1034] in hf 14a raw the check for the datalength to be less than 512 bytes wasnt enforced. I might have gotten this wrong. But now we can use MIX instead. Same for APDUs. So sending 488 bytes to device is possible. I can only think of one person ever doing such a thing and I am sure I will hear about this --- client/src/cmdhf14a.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index e48e808bb..e99d709ac 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -921,8 +921,10 @@ int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leav uint8_t data[PM3_CMD_DATA_SIZE] = { 0x0a | gs_frames_num, 0x00}; gs_frames_num ^= 1; - memcpy(&data[2], datain, datainlen & 0xFFFF); - SendCommandOLD(CMD_HF_ISO14443A_READER, ISO14A_RAW | ISO14A_APPEND_CRC | cmdc, (datainlen & 0xFFFF) + 2, 0, data, (datainlen & 0xFFFF) + 2); + + int min = MIN( (PM3_CMD_DATA_SIZE - 2), (datainlen & 0x1FF)); + memcpy(&data[2], datain, min); + SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_RAW | ISO14A_APPEND_CRC | cmdc, (datainlen & 0xFFFF) + 2, 0, data, min + 2); uint8_t *recv; PacketResponseNG resp; @@ -1376,7 +1378,7 @@ static int CmdHF14ACmdRaw(const char *Cmd) { bool use_magsafe = arg_get_lit(ctx, 12); int datalen = 0; - uint8_t data[PM3_CMD_DATA_SIZE]; + uint8_t data[PM3_CMD_DATA_SIZE_MIX] = {0}; CLIGetHexWithReturn(ctx, 13, data, &datalen); CLIParserFree(ctx); @@ -1442,11 +1444,11 @@ static int CmdHF14ACmdRaw(const char *Cmd) { // flags |= ISO14A_USE_ECP; } - // Max buffer is PM3_CMD_DATA_SIZE - datalen = (datalen > PM3_CMD_DATA_SIZE) ? PM3_CMD_DATA_SIZE : datalen; + // Max buffer is PM3_CMD_DATA_SIZE_MIX + datalen = (datalen > PM3_CMD_DATA_SIZE_MIX) ? PM3_CMD_DATA_SIZE_MIX : datalen; clearCommandBuffer(); - SendCommandOLD(CMD_HF_ISO14443A_READER, flags, (datalen & 0xFFFF) | ((uint32_t)(numbits << 16)), argtimeout, data, datalen & 0xFFFF); + SendCommandMIX(CMD_HF_ISO14443A_READER, flags, (datalen & 0x1FF) | ((uint32_t)(numbits << 16)), argtimeout, data, datalen); if (reply) { int res = 0; From fe4c5792fcf90c790b6c506d5ab31c4690e418cc Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 23:43:30 +0100 Subject: [PATCH 0892/1034] make sure its initialised --- common_arm/usb_cdc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common_arm/usb_cdc.c b/common_arm/usb_cdc.c index 125c38115..3f3db2a5a 100644 --- a/common_arm/usb_cdc.c +++ b/common_arm/usb_cdc.c @@ -698,7 +698,7 @@ uint32_t usb_read(uint8_t *data, size_t len) { return nbBytesRcv; } -static uint8_t usb_read_ng_buffer[64]; +static uint8_t usb_read_ng_buffer[64] = {0}; static size_t usb_read_ng_bufoff = 0; static size_t usb_read_ng_buflen = 0; From 04769f318357855fa4a35c7dec25c6f1c11eff59 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 14 Dec 2023 23:44:07 +0100 Subject: [PATCH 0893/1034] fudan command is never 512 bytes. Converted to use MIX instead --- client/src/cmdhffudan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhffudan.c b/client/src/cmdhffudan.c index 85e857e6e..b0dc8b08d 100644 --- a/client/src/cmdhffudan.c +++ b/client/src/cmdhffudan.c @@ -304,7 +304,7 @@ static int CmdHFFudanDump(const char *Cmd) { clearCommandBuffer(); PacketResponseNG resp; - SendCommandOLD(CMD_HF_ISO14443A_READER, flags, sizeof(cmd) | ((uint32_t)(numbits << 16)), argtimeout, cmd, sizeof(cmd)); + SendCommandMIX(CMD_HF_ISO14443A_READER, flags, sizeof(cmd) | ((uint32_t)(numbits << 16)), argtimeout, cmd, sizeof(cmd)); if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { if (resp.status == PM3_SUCCESS) { From c210b370fec2c409be70da89e0a6a57c835df119 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 15 Dec 2023 09:13:20 +0100 Subject: [PATCH 0894/1034] remove par --- armsrc/iso14443a.c | 66 +++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 117b5f6fc..b8f652337 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1932,7 +1932,7 @@ static void PrepareDelayedTransfer(uint16_t delay) { static void TransmitFor14443a(const uint8_t *cmd, uint16_t len, uint32_t *timing) { if (g_hf_field_active == false) { - Dbprintf("Warning: HF field is off, ignoring TransmitFor14443a command"); + Dbprintf("Warning: HF field is off"); return; } FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_ISO14443A | FPGA_HF_ISO14443A_READER_MOD); @@ -1943,10 +1943,6 @@ static void TransmitFor14443a(const uint8_t *cmd, uint16_t len, uint32_t *timing else PrepareDelayedTransfer(*timing & 0x00000007); // Delay transfer (fine tuning - up to 7 MF clock ticks) - if (g_dbglevel >= DBG_EXTENDED && GetCountSspClk() >= (*timing & 0xfffffff8)) { - Dbprintf("TransmitFor14443a: Missed timing"); - } - while (GetCountSspClk() < (*timing & 0xfffffff8)) {}; // Delay transfer (multiple of 8 MF clock ticks) LastTimeProxToAirStart = *timing; } else { @@ -3035,8 +3031,8 @@ void ReaderIso14443a(PacketCommandNG *c) { uint32_t timeout = c->oldarg[2]; uint8_t *cmd = c->data.asBytes; uint32_t arg0; + uint8_t buf[PM3_CMD_DATA_SIZE] = {0x00}; - uint8_t par[MAX_PARITY_SIZE] = {0x00}; if ((param & ISO14A_CONNECT)) { iso14_pcb_blocknum = 0; @@ -3079,7 +3075,7 @@ void ReaderIso14443a(PacketCommandNG *c) { arg0 = iso14_apdu(cmd, len, (param & ISO14A_SEND_CHAINING), buf, &res); FpgaDisableTracing(); - reply_old(CMD_ACK, arg0, res, 0, buf, sizeof(buf)); + reply_mix(CMD_ACK, arg0, res, 0, buf, sizeof(buf)); } if ((param & ISO14A_RAW)) { @@ -3108,8 +3104,8 @@ void ReaderIso14443a(PacketCommandNG *c) { bits_to_send -= 8; } } else { - GetParity(cmd, lenbits / 8, par); - ReaderTransmitBitsPar(cmd, lenbits, par, NULL); // bytes are 8 bit with odd parity + GetParity(cmd, lenbits / 8, parity_array); + ReaderTransmitBitsPar(cmd, lenbits, parity_array, NULL); // bytes are 8 bit with odd parity } } else { // want to send complete bytes only if ((param & ISO14A_TOPAZMODE)) { @@ -3130,14 +3126,14 @@ void ReaderIso14443a(PacketCommandNG *c) { FpgaDisableTracing(); reply_mix(CMD_ACK, 0, 0, 0, NULL, 0); } else { - arg0 = ReaderReceive(buf, par); + arg0 = ReaderReceive(buf, parity_array); FpgaDisableTracing(); - reply_old(CMD_ACK, arg0, 0, 0, buf, sizeof(buf)); + reply_mix(CMD_ACK, arg0, 0, 0, buf, sizeof(buf)); } } else { - arg0 = ReaderReceive(buf, par); + arg0 = ReaderReceive(buf, parity_array); FpgaDisableTracing(); - reply_old(CMD_ACK, arg0, 0, 0, buf, sizeof(buf)); + reply_mix(CMD_ACK, arg0, 0, 0, buf, sizeof(buf)); } } else { @@ -3146,9 +3142,9 @@ void ReaderIso14443a(PacketCommandNG *c) { FpgaDisableTracing(); reply_mix(CMD_ACK, 0, 0, 0, NULL, 0); } else { - arg0 = ReaderReceive(buf, par); + arg0 = ReaderReceive(buf, parity_array); FpgaDisableTracing(); - reply_old(CMD_ACK, arg0, 0, 0, buf, sizeof(buf)); + reply_mix(CMD_ACK, arg0, 0, 0, buf, sizeof(buf)); } } } @@ -3160,8 +3156,9 @@ void ReaderIso14443a(PacketCommandNG *c) { iso14a_set_timeout(save_iso14a_timeout); } - if ((param & ISO14A_NO_DISCONNECT)) + if ((param & ISO14A_NO_DISCONNECT)) { return; + } OUT: hf_field_off(); @@ -3209,11 +3206,11 @@ void ReaderMifare(bool first_try, uint8_t block, uint8_t keytype) { clear_trace(); set_tracing(true); - uint8_t mf_auth[] = { keytype, block, 0x00, 0x00 }; - uint8_t mf_nr_ar[] = {0, 0, 0, 0, 0, 0, 0, 0}; - uint8_t uid[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - uint8_t par_list[8] = {0, 0, 0, 0, 0, 0, 0, 0}; - uint8_t ks_list[8] = {0, 0, 0, 0, 0, 0, 0, 0}; + uint8_t mf_auth[4] = { keytype, block, 0x00, 0x00 }; + uint8_t mf_nr_ar[8] = {0, 0, 0, 0, 0, 0, 0, 0}; + uint8_t uid[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + uint8_t par_list[8] = {0, 0, 0, 0, 0, 0, 0, 0}; + uint8_t ks_list[8] = {0, 0, 0, 0, 0, 0, 0, 0}; uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0x00}; uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = {0x00}; uint8_t par[1] = {0}; // maximum 8 Bytes to be sent here, 1 byte parity is therefore enough @@ -3496,12 +3493,12 @@ void ReaderMifare(bool first_try, uint8_t block, uint8_t keytype) { * Thanks to @doegox for the feedback and new approaches. */ void DetectNACKbug(void) { - uint8_t mf_auth[] = {0x60, 0x00, 0xF5, 0x7B}; - uint8_t mf_nr_ar[] = {0, 0, 0, 0, 0, 0, 0, 0}; - uint8_t uid[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0x00}; - uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = {0x00}; - uint8_t par[1] = {0}; // maximum 8 Bytes to be sent here, 1 byte parity is therefore enough + uint8_t mf_auth[4] = { MIFARE_AUTH_KEYA, 0x00, 0xF5, 0x7B }; + uint8_t mf_nr_ar[8]= { 0x00 }; + uint8_t uid[10] = { 0x00 }; + uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = { 0x00 }; + uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = { 0x00 }; + uint8_t par[1] = {0x00 }; // maximum 8 Bytes to be sent here, 1 byte parity is therefore enough uint32_t nt = 0, previous_nt = 0, nt_attacked = 0, cuid = 0; int32_t catch_up_cycles = 0, last_catch_up = 0; @@ -3651,17 +3648,18 @@ void DetectNACKbug(void) { sync_cycles = (sync_cycles - nt_distance) / elapsed_prng_sequences; - if (sync_cycles <= 0) + if (sync_cycles <= 0) { sync_cycles += PRNG_SEQUENCE_LENGTH; + } if (sync_cycles > PRNG_SEQUENCE_LENGTH * 2) { isOK = 96; // Card's PRNG runs at an unexpected frequency or resets unexpectedly break; } - if (g_dbglevel >= DBG_EXTENDED) + if (g_dbglevel >= DBG_EXTENDED) { Dbprintf("calibrating in cycle %d. nt_distance=%d, elapsed_prng_sequences=%d, new sync_cycles: %d\n", i, nt_distance, elapsed_prng_sequences, sync_cycles); - + } continue; } } @@ -3693,7 +3691,7 @@ void DetectNACKbug(void) { sync_cycles += catch_up_cycles; if (g_dbglevel >= DBG_EXTENDED) { - Dbprintf("Lost sync in cycle %d for the fourth time consecutively (nt_distance = %d). Adjusting sync_cycles to %d.\n", i, catch_up_cycles, sync_cycles); + Dbprintf("Lost sync in cycle %d for the fourth time consecutively (nt_distance = %d). Adjusting sync_cycles to %d\n", i, catch_up_cycles, sync_cycles); Dbprintf("nt [%08x] attacted [%08x]", nt, nt_attacked); } last_catch_up = 0; @@ -3704,8 +3702,9 @@ void DetectNACKbug(void) { } // Receive answer. This will be a 4 Bit NACK when the 8 parity bits are OK after decoding - if (received_nack) + if (received_nack) { catch_up_cycles = 8; // the PRNG is delayed by 8 cycles due to the NAC (4Bits = 0x05 encrypted) transfer + } // we are testing all 256 possibilities. par[0]++; @@ -3713,8 +3712,9 @@ void DetectNACKbug(void) { // tried all 256 possible parities without success. if (par[0] == 0) { // did we get one NACK? - if (num_nacks == 1) + if (num_nacks == 1) { isOK = 1; + } break; } From 30c7ce13351b6886b7341927254ce46cf47689c6 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 15 Dec 2023 09:22:35 +0100 Subject: [PATCH 0895/1034] wait until timeout --- armsrc/iso14443a.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index b8f652337..3c171ea6f 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -2313,7 +2313,9 @@ bool GetIso14443aAnswerFromTag_Thinfilm(uint8_t *receivedResponse, uint8_t *rec uint8_t b = (uint8_t)AT91C_BASE_SSC->SSC_RHR; (void)b; + uint32_t timeout = iso14a_get_timeout(); uint32_t receive_timer = GetTickCount(); + for (;;) { WDT_HIT(); @@ -2321,17 +2323,18 @@ bool GetIso14443aAnswerFromTag_Thinfilm(uint8_t *receivedResponse, uint8_t *rec b = (uint8_t)AT91C_BASE_SSC->SSC_RHR; if (ManchesterDecoding_Thinfilm(b)) { *received_len = Demod.len; - // log + LogTrace(receivedResponse, Demod.len, Demod.startTime * 16 - DELAY_AIR2ARM_AS_READER, Demod.endTime * 16 - DELAY_AIR2ARM_AS_READER, NULL, false); return true; } } - if (GetTickCountDelta(receive_timer) > 100) + if (GetTickCountDelta(receive_timer) > timeout + 100) break; } + *received_len = Demod.len; - // log + LogTrace(receivedResponse, Demod.len, Demod.startTime * 16 - DELAY_AIR2ARM_AS_READER, Demod.endTime * 16 - DELAY_AIR2ARM_AS_READER, NULL, false); return false; } From 20d95fa3eacde965a851c2ec799a7b8549afd793 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 15 Dec 2023 09:33:02 +0100 Subject: [PATCH 0896/1034] remove some more parity arrays --- armsrc/iso14443a.c | 46 +++++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 3c171ea6f..6efac56e7 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -2597,7 +2597,6 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint iso14a_polling_parameters_t *polling_parameters) { uint8_t resp[MAX_FRAME_SIZE] = {0}; // theoretically. A usual RATS will be much smaller - uint8_t resp_par[MAX_PARITY_SIZE] = {0}; uint8_t sak = 0; // cascade uid bool do_cascade = 1; @@ -2609,7 +2608,7 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint p_card->ats_len = 0; } - if (GetATQA(resp, resp_par, polling_parameters) == 0) { + if (GetATQA(resp, parity_array, polling_parameters) == 0) { return 0; } @@ -2626,7 +2625,7 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint // Read real UID uint8_t fudan_read[] = { 0x30, 0x01, 0x8B, 0xB9}; ReaderTransmit(fudan_read, sizeof(fudan_read), NULL); - if (!ReaderReceive(resp, resp_par)) { + if (!ReaderReceive(resp, parity_array)) { if (g_dbglevel >= DBG_INFO) Dbprintf("Card didn't answer to select all"); return 0; } @@ -2634,11 +2633,11 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint memcpy(p_card->uid, resp, 4); // select again? - if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == 0) { + if (GetATQA(resp, parity_array, &WUPA_POLLING_PARAMETERS) == 0) { return 0; } - if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == 0) { + if (GetATQA(resp, parity_array, &WUPA_POLLING_PARAMETERS) == 0) { return 0; } @@ -2656,7 +2655,10 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint if (hf14aconfig.forceanticol == 0) { // check for proprietary anticollision: - if ((resp[0] & 0x1F) == 0) return 3; + if ((resp[0] & 0x1F) == 0) { + return 3; + } + } else if (hf14aconfig.forceanticol == 2) { return 3; // force skipping anticol } // else force executing @@ -2675,7 +2677,7 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint // SELECT_ALL ReaderTransmit(sel_all, sizeof(sel_all), NULL); - if (!ReaderReceive(resp, resp_par)) { + if (!ReaderReceive(resp, parity_array)) { if (g_dbglevel >= DBG_INFO) Dbprintf("Card didn't answer to CL%i select all", cascade_level + 1); return 0; } @@ -2688,10 +2690,12 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint // anti-collision-loop: while (Demod.collisionPos) { Dbprintf("Multiple tags detected. Collision after Bit %d", Demod.collisionPos); + for (uint16_t i = collision_answer_offset; i < Demod.collisionPos; i++, uid_resp_bits++) { // add valid UID bits before collision point uint16_t UIDbit = (resp[i / 8] >> (i % 8)) & 0x01; uid_resp[uid_resp_bits / 8] |= UIDbit << (uid_resp_bits % 8); } + uid_resp[uid_resp_bits / 8] |= 1 << (uid_resp_bits % 8); // next time select the card(s) with a 1 in the collision position uid_resp_bits++; // construct anticollision command: @@ -2699,9 +2703,13 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint for (uint16_t i = 0; i <= uid_resp_bits / 8; i++) { sel_uid[2 + i] = uid_resp[i]; } + collision_answer_offset = uid_resp_bits % 8; + ReaderTransmitBits(sel_uid, 16 + uid_resp_bits, NULL); - if (!ReaderReceiveOffset(resp, collision_answer_offset, resp_par)) return 0; + if (!ReaderReceiveOffset(resp, collision_answer_offset, parity_array)) { + return 0; + } } // finally, add the last bits and BCC of the UID @@ -2732,17 +2740,21 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint sel_uid[1] = 0x70; // transmitting a full UID (1 Byte cmd, 1 Byte NVB, 4 Byte UID, 1 Byte BCC, 2 Bytes CRC) if (anticollision) { + memcpy(sel_uid + 2, uid_resp, 5); // the UID received during anticollision with original BCC uint8_t bcc = sel_uid[2] ^ sel_uid[3] ^ sel_uid[4] ^ sel_uid[5]; // calculate BCC if (sel_uid[6] != bcc) { + Dbprintf("BCC%d incorrect, got 0x%02x, expected 0x%02x", cascade_level, sel_uid[6], bcc); + if (hf14aconfig.forcebcc == 0) { Dbprintf("Aborting"); return 0; } else if (hf14aconfig.forcebcc == 1) { sel_uid[6] = bcc; } // else use card BCC - Dbprintf("Using BCC%d=" _YELLOW_("0x%02x") " to perform anticollision", cascade_level, sel_uid[6]); + + Dbprintf("Using BCC%d =" _YELLOW_("0x%02x"), cascade_level, sel_uid[6]); } } else { memcpy(sel_uid + 2, uid_resp, 4); // the provided UID @@ -2753,7 +2765,7 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint ReaderTransmit(sel_uid, sizeof(sel_uid), NULL); // Receive the SAK - if (!ReaderReceive(resp, resp_par)) { + if (!ReaderReceive(resp, parity_array)) { if (g_dbglevel >= DBG_INFO) Dbprintf("Card didn't answer to select"); return 0; } @@ -2761,13 +2773,16 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint // Test if more parts of the uid are coming do_cascade = (((sak & 0x04) /* && uid_resp[0] == 0x88 */) > 0); + if (cascade_level == 0) { + if (hf14aconfig.forcecl2 == 2) { do_cascade = false; } else if (hf14aconfig.forcecl2 == 1) { do_cascade = true; } // else 0==auto } else if (cascade_level == 1) { + if (hf14aconfig.forcecl3 == 2) { do_cascade = false; } else if (hf14aconfig.forcecl3 == 1) { @@ -2798,7 +2813,10 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint if (hf14aconfig.forcerats == 0) { // PICC compliant with iso14443a-4 ---> (SAK & 0x20 != 0) - if ((sak & 0x20) == 0) return 2; + if ((sak & 0x20) == 0) { + return 2; + } + } else if (hf14aconfig.forcerats == 2) { if ((sak & 0x20) != 0) Dbprintf("Skipping RATS according to hf 14a config"); return 2; @@ -2808,12 +2826,14 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint // RATS, Request for answer to select if (no_rats == false) { + uint8_t rats[] = { ISO14443A_CMD_RATS, 0x80, 0x00, 0x00 }; // FSD=256, FSDI=8, CID=0 AddCrc14A(rats, 2); ReaderTransmit(rats, sizeof(rats), NULL); - int len = ReaderReceive(resp, resp_par); - if (len == 0) + int len = ReaderReceive(resp, parity_array); + if (len == 0) { return 0; + } if (p_card) { memcpy(p_card->ats, resp, sizeof(p_card->ats)); From 1c8b2110bbccc77a2b85bdb432e391faf86674b3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 15 Dec 2023 16:39:42 +0100 Subject: [PATCH 0897/1034] reduce stack usage --- armsrc/mifarecmd.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 0d0eb97e0..87b00c6b2 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -1052,14 +1052,9 @@ void MifareNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8 }; // cards with fixed nonce - /* - if (nt1 == nt2) { - Dbprintf("Nested: %08x vs %08x", nt1, nt2); - break; - } - */ + // NXP Mifare is typical around 840,but for some unlicensed/compatible mifare card this can be 160 - uint32_t nttmp = prng_successor(nt1, 100); //NXP Mifare is typical around 840,but for some unlicensed/compatible mifare card this can be 160 + uint32_t nttmp = prng_successor(nt1, 100); for (i = 101; i < 1200; i++) { nttmp = prng_successor(nttmp, 1); if (nttmp == nt2) break; @@ -1071,12 +1066,14 @@ void MifareNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8 dmin = MIN(dmin, i); dmax = MAX(dmax, i); } else { - delta_time = auth2_time - auth1_time + 32; // allow some slack for proper timing + // allow some slack for proper timing + delta_time = auth2_time - auth1_time + 32; } if (g_dbglevel >= DBG_DEBUG) Dbprintf("Nested: calibrating... ntdist=%d", i); } else { unsuccessful_tries++; - if (unsuccessful_tries > NESTED_MAX_TRIES) { // card isn't vulnerable to nested attack (random numbers are not predictable) + // card isn't vulnerable to nested attack (random numbers are not predictable) + if (unsuccessful_tries > NESTED_MAX_TRIES) { isOK = PM3_EFAILED; } } @@ -1146,7 +1143,7 @@ void MifareNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8 // nested authentication auth2_time = auth1_time + delta_time; - len = mifare_sendcmd_short(pcs, AUTH_NESTED, 0x60 + (targetKeyType & 0x01), targetBlockNo, receivedAnswer, par, &auth2_time); + len = mifare_sendcmd_short(pcs, AUTH_NESTED, MIFARE_AUTH_KEYA + (targetKeyType & 0x01), targetBlockNo, receivedAnswer, par, &auth2_time); if (len != 4) { if (g_dbglevel >= DBG_INFO) Dbprintf("Nested: Auth2 error len=%d", len); continue; @@ -1271,7 +1268,7 @@ void MifareStaticNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, target_nt[1] = prng_successor(nt1, 320); } - len = mifare_sendcmd_short(pcs, AUTH_NESTED, 0x60 + (targetKeyType & 0x01), targetBlockNo, receivedAnswer, par, NULL); + len = mifare_sendcmd_short(pcs, AUTH_NESTED, MIFARE_AUTH_KEYA + (targetKeyType & 0x01), targetBlockNo, receivedAnswer, par, NULL); if (len != 4) { continue; }; @@ -1296,10 +1293,11 @@ void MifareStaticNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, continue; }; - len = mifare_sendcmd_short(pcs, AUTH_NESTED, 0x60 + (targetKeyType & 0x01), targetBlockNo, receivedAnswer, par, NULL); + len = mifare_sendcmd_short(pcs, AUTH_NESTED, MIFARE_AUTH_KEYA + (targetKeyType & 0x01), targetBlockNo, receivedAnswer, par, NULL); if (len != 4) { continue; }; + nt3 = bytes_to_num(receivedAnswer, 4); target_ks[1] = nt3 ^ target_nt[1]; @@ -2632,8 +2630,7 @@ void MifareHasStaticNonce(void) { uint8_t counter = 0; for (uint8_t i = 0; i < 3; i++) { - iso14a_card_select_t card_info; - if (!iso14443a_select_card(uid, &card_info, NULL, true, 0, true)) { + if (!iso14443a_select_card(uid, NULL, NULL, true, 0, true)) { retval = PM3_ESOFT; goto OUT; } @@ -2699,9 +2696,8 @@ void MifareHasStaticEncryptedNonce(uint8_t block_no, uint8_t key_type, uint8_t * iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); - iso14a_card_select_t card_info; uint32_t cuid = 0; - if (!iso14443a_select_card(uid, &card_info, &cuid, true, 0, true)) { + if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) { retval = PM3_ESOFT; goto OUT; } @@ -2779,7 +2775,6 @@ int DoGen3Cmd(uint8_t *cmd, uint8_t cmd_len) { } iso14a_set_timeout(save_iso14a_timeout); LED_B_OFF(); - return retval; } From 742080ed57156a83ed3a0fd30112f37a0d4b4696 Mon Sep 17 00:00:00 2001 From: Mykhailo Shevchuk <myte@ukr.net> Date: Sun, 17 Dec 2023 22:07:30 +0200 Subject: [PATCH 0898/1034] OTP + OTP 2.0 --- doc/magic_cards_notes.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/magic_cards_notes.md b/doc/magic_cards_notes.md index ecae5fc68..905c8a955 100644 --- a/doc/magic_cards_notes.md +++ b/doc/magic_cards_notes.md @@ -25,7 +25,8 @@ Useful docs: * [MIFARE Classic block0](#mifare-classic-block0) * [MIFARE Classic Gen1A aka UID](#mifare-classic-gen1a-aka-uid) * [MIFARE Classic Gen1B](#mifare-classic-gen1b) - * [MIFARE Classic OTP2](#mifare-classic-otp2) + * [Mifare Classic Direct Write OTP](#mifare-classic-direct-write-otp) + * [MIFARE Classic OTP 2.0](#mifare-classic-otp-2.0) * [MIFARE Classic DirectWrite aka Gen2 aka CUID](#mifare-classic-directwrite-aka-gen2-aka-cuid) * [MIFARE Classic DirectWrite, FUID version aka 1-write](#mifare-classic-directwrite-fuid-version-aka-1-write) * [MIFARE Classic Gen3 aka APDU](#mifare-classic-gen3-aka-apdu) @@ -465,10 +466,16 @@ hf 14a info * Read: `40(7)`, `30xx` * Write: `40(7)`, `A0xx`+crc, `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`+crc -## MIFARE Classic OTP2 +## Mifare Classic Direct Write OTP +^[Top](#top) + +TODO + +## MIFARE Classic OTP 2.0 ^[Top](#top) Similar to Gen1A, but after first block 0 edit, tag no longer replies to 0x40 command. +Were manufactured by iKey LLC as a replacement for [OTP](#mifare-classic-direct-write-otp) ### Characteristics From 586acf0933e70548cdc9dfe9e46b2f3b18dc04df Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 17 Dec 2023 21:42:54 +0100 Subject: [PATCH 0899/1034] modified the autocorrelate part in lf search -1u command. It should be a more informative output and better bytes length reporting --- CHANGELOG.md | 5 +- client/src/cmddata.c | 28 ++++++---- client/src/cmdlf.c | 124 +++++++++++++++++++++++++++++++------------ 3 files changed, 113 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51fd362db..1fecf7ef8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,10 +3,11 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `lf search -1u` - improved the autocorrelation detection for unknown signals (@iceman1001) - Fixed `hf emrtd dump` stack smashing on device side (@iceman1001) - - Change `dbprint` on device side to use max 200 chars strings. (@iceman1001) + - Changed `dbprint` on device side to use max 200 chars strings. (@iceman1001) - Fixed bootloader to correctly clear bss segment on start. Fixes USB serial number sometimes not working in the bootloader (@nvx) - - Change `notes on downgrade attacks` - reworked the original text follow repo style (@iceman1001) + - Changed `notes on downgrade attacks` - reworked the original text follow repo style (@iceman1001) - Added `hf mf info` command and static encrypted nonce detection (@merlokk) - Added Saflok KDF - generate MFC keys (@h1kari) - Changed `lf fdx demod` - now raw bytes shows all data (@iceman1001) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 238bff88d..8926329ba 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -233,7 +233,7 @@ int printDemodBuff(uint8_t offset, bool strip_leading, bool invert, bool print_h uint8_t *buf = calloc(len, sizeof(uint8_t)); if (buf == NULL) { - PrintAndLogEx(WARNING, "dail, cannot allocate memory"); + PrintAndLogEx(WARNING, "fail, cannot allocate memory"); return PM3_EMALLOC; } memcpy(buf, g_DemodBuffer, len); @@ -870,24 +870,34 @@ int AutoCorrelate(const int *in, int *out, size_t len, size_t window, bool SaveG int foo = ABS(hi - hi_1); int bar = (int)((int)((hi + hi_1) / 2) * 0.04); - if (verbose && foo < bar) { - distance = idx_1 - idx; - PrintAndLogEx(SUCCESS, "possible visible correlation "_YELLOW_("%4d") " samples", distance); - } else if (verbose && (correlation > 1)) { - PrintAndLogEx(SUCCESS, "possible correlation " _YELLOW_("%4zu") " samples", correlation); + int retval = correlation; + + if (foo < bar) { + distance = (idx_1 - idx); + retval = distance; + if (verbose) { + PrintAndLogEx(SUCCESS, "possible visible correlation "_YELLOW_("%4d") " samples", distance); + } + + } else if (correlation > 1) { + if (verbose) { + PrintAndLogEx(SUCCESS, "possible correlation " _YELLOW_("%4zu") " samples", correlation); + } } else { - PrintAndLogEx(FAILED, "no repeating pattern found, try increasing window size"); + PrintAndLogEx(HINT, "no repeating pattern found, try increasing window size"); + // return value -1, indication to increase window size + return -1; } - int retval = correlation; if (SaveGrph) { //g_GraphTraceLen = g_GraphTraceLen - window; memcpy(out, correl_buf, len * sizeof(int)); if (distance > 0) { setClockGrid(distance, idx); retval = distance; - } else + } else { setClockGrid(correlation, idx); + } g_CursorCPos = idx_1; g_CursorDPos = idx_1 + retval; diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 098a05fbc..0e0410c5c 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -1504,7 +1504,7 @@ int CmdVchDemod(const char *Cmd) { } */ -static bool CheckChipType(bool getDeviceData) { +static bool check_chiptype(bool getDeviceData) { bool retval = false; @@ -1555,6 +1555,41 @@ out: return retval; } +static int check_autocorrelate(int clock) { + + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, _CYAN_("Performing auto correlations...")); + for (int win = 4000; win < 30000; win += 2000) { + int ans = AutoCorrelate(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen, win, false, false); + if (ans == -1) { + continue; + } + + if (ans > 1) { + PrintAndLogEx(SUCCESS, " " _YELLOW_("%d") " repeating samples", ans); + + // If we got a field clock / bit rate from before + // we can use it for predict number of repeating bytes + // this signal contain. + if (clock > 0) { + int bytes = ans / (8 * clock); + int mod = (bytes % 4); + int blocks = (bytes / 4); + + PrintAndLogEx(SUCCESS, " " _YELLOW_("%u") " clock, " _YELLOW_("%d") " bytes repeating", clock, bytes); + + if (mod == 0 && blocks < 7) { + PrintAndLogEx(SUCCESS, " " _YELLOW_("%d") " T5577 block%c needed", (bytes / 4), (mod == 1) ? ' ' : 's'); + } + } + PrintAndLogEx(NORMAL, ""); + return PM3_SUCCESS; + } + } + PrintAndLogEx(NORMAL, ""); + return PM3_EFAILED; +} + int CmdLFfind(const char *Cmd) { CLIParserContext *ctx; @@ -1598,7 +1633,7 @@ int CmdLFfind(const char *Cmd) { PrintAndLogEx(INFO, "if it finds something that looks like a tag"); PrintAndLogEx(INFO, "False Positives " _YELLOW_("ARE") " possible"); PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "Checking for known tags..."); + PrintAndLogEx(INFO, _CYAN_("Checking for known tags...")); PrintAndLogEx(INFO, ""); // only run these tests if device is online @@ -1872,21 +1907,17 @@ int CmdLFfind(const char *Cmd) { } if (search_unk) { - //test unknown tag formats (raw mode) - PrintAndLogEx(INFO, "\nChecking for unknown tags:\n"); - int ans = AutoCorrelate(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen, 8000, false, false); - if (ans > 0) { - PrintAndLogEx(INFO, "Possible auto correlation of %d repeating samples", ans); + // test unknown tag formats (raw mode) + PrintAndLogEx(INFO, _CYAN_("Checking for unknown tags...") "\n"); - if (ans % 8 == 0) - PrintAndLogEx(INFO, "Possible %d bytes", (ans / 8)); - } - - //fsk - if (GetFskClock("", false)) { + // FSK + int clock = GetFskClock("", false); + if (clock) { if (FSKrawDemod(0, 0, 0, 0, true) == PM3_SUCCESS) { - PrintAndLogEx(INFO, "Unknown FSK Modulated Tag found!"); + PrintAndLogEx(INFO, _GREEN_("FSK") " modulation detected!"); + check_autocorrelate(clock); + if (search_cont) { found++; } else { @@ -1895,31 +1926,58 @@ int CmdLFfind(const char *Cmd) { } } - bool st = true; - if (ASKDemod_ext(0, 0, 0, 0, false, true, false, 1, &st) == PM3_SUCCESS) { - PrintAndLogEx(INFO, "Unknown ASK Modulated and Manchester encoded Tag found!"); - PrintAndLogEx(INFO, "if it does not look right it could instead be ASK/Biphase - try " _YELLOW_("'data rawdemod --ab'")); - if (search_cont) { - found++; - } else { - goto out; + // ASK + clock = GetAskClock("", false); + if (clock) { + bool st = true; + if (ASKDemod_ext(0, 0, 0, 0, false, true, false, 1, &st) == PM3_SUCCESS) { + PrintAndLogEx(INFO, _GREEN_("ASK") " modulation / Manchester encoding detected!"); + PrintAndLogEx(INFO, "if it does not look right it could instead be ASK/Biphase - try " _YELLOW_("'data rawdemod --ab'")); + check_autocorrelate(clock); + + if (search_cont) { + found++; + } else { + goto out; + } } } - if (CmdPSK1rawDemod("") == PM3_SUCCESS) { - PrintAndLogEx(INFO, "Possible unknown PSK1 Modulated Tag found above!"); - PrintAndLogEx(INFO, " Could also be PSK2 - try " _YELLOW_("'data rawdemod --p2'")); - PrintAndLogEx(INFO, " Could also be PSK3 - [currently not supported]"); - PrintAndLogEx(INFO, " Could also be NRZ - try " _YELLOW_("'data rawdemod --nr")); - if (search_cont) { - found++; - } else { - goto out; + // NZR + clock = GetNrzClock("", false); + if (clock) { + if (NRZrawDemod(0, 0, 0,false) == PM3_SUCCESS) { + PrintAndLogEx(INFO, _GREEN_("NRZ") " modulation detected!"); + check_autocorrelate(clock); + + if (search_cont) { + found++; + } else { + goto out; + } + } + } + + // PSK + clock = GetPskClock("", false); + if (clock) { + if (CmdPSK1rawDemod("") == PM3_SUCCESS) { + PrintAndLogEx(INFO, "Possible " _GREEN_("PSK1") " modulation detected!"); + PrintAndLogEx(INFO, " Could also be PSK2 - try " _YELLOW_("'data rawdemod --p2'")); + PrintAndLogEx(INFO, " Could also be PSK3 - [currently not supported]"); + PrintAndLogEx(INFO, " Could also be NRZ - try " _YELLOW_("'data rawdemod --nr")); + check_autocorrelate(clock); + + if (search_cont) { + found++; + } else { + goto out; + } } } if (found == 0) { - PrintAndLogEx(FAILED, _RED_("No data found!")); + PrintAndLogEx(FAILED, _RED_("Failed to determine any modulations or patterns")); } } @@ -1929,7 +1987,7 @@ int CmdLFfind(const char *Cmd) { out: // identify chipset - if (CheckChipType(is_online) == false) { + if (check_chiptype(is_online) == false) { PrintAndLogEx(DEBUG, "Automatic chip type detection " _RED_("failed")); } return retval; From 9f7597c43b5c2e4d4620973f197fe647992cb612 Mon Sep 17 00:00:00 2001 From: Mykhailo Shevchuk <myte@ukr.net> Date: Sun, 17 Dec 2023 23:14:40 +0200 Subject: [PATCH 0900/1034] OTP & OTP 2.0 --- doc/magic_cards_notes.md | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/doc/magic_cards_notes.md b/doc/magic_cards_notes.md index 905c8a955..4c71508c8 100644 --- a/doc/magic_cards_notes.md +++ b/doc/magic_cards_notes.md @@ -469,7 +469,34 @@ hf 14a info ## Mifare Classic Direct Write OTP ^[Top](#top) -TODO +Chip manufactured by iKey LLC as a bypass for Gen1 filters. +Support Direct Write as CUID, but block0 can be written only once. + +The chip had an issue in the protocol implementation. + +The reader could interrupt radiofield for 2-3 microseconds (standard pause in the bit period of ISO14443-2). +After the response to first `26 (7)` command, but before the following `93 70` command. In that case original M1 card will stop the flow, but OTP will continue it. + +That issue led to the development of the filters against that card and discontinuation of the production. + +As a successor, [OTP 2.0](#mifare-classic-otp-2.0) was created. + +### Characteristics +^[Top](#top) + +* Initial UID is AA55C396 +* Android compatible + +### Identify +^[Top](#top) + +Only possible before personalization. + +``` +hf 14a info +... +[+] Magic capabilities : Write Once / FUID +``` ## MIFARE Classic OTP 2.0 ^[Top](#top) From 7fa09a556a1bc7c898e511d6cb1278c2f39093f1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 18 Dec 2023 10:04:19 +0100 Subject: [PATCH 0901/1034] improved the autocorreleate detection. lf search -1uc got some more textual improvements --- client/src/cmddata.c | 78 ++++++++++++++++++++------------------------ client/src/cmdlf.c | 47 +++++++++++++++++++------- 2 files changed, 72 insertions(+), 53 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 8926329ba..6e8059ce8 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -814,9 +814,13 @@ static int Cmdaskrawdemod(const char *Cmd) { int AutoCorrelate(const int *in, int *out, size_t len, size_t window, bool SaveGrph, bool verbose) { // sanity check - if (window > len) window = len; + if (window > len) { + window = len; + } - if (verbose) PrintAndLogEx(INFO, "performing " _YELLOW_("%zu") " correlations", g_GraphTraceLen - window); + if (verbose) { + PrintAndLogEx(INFO, "performing " _YELLOW_("%zu") " correlations", g_GraphTraceLen - window); + } //test double autocv = 0.0; // Autocovariance value @@ -830,6 +834,9 @@ int AutoCorrelate(const int *in, int *out, size_t len, size_t window, bool SaveG int *correl_buf = calloc(MAX_GRAPH_TRACE_LEN, sizeof(int)); + uint8_t peak_cnt = 0; + size_t peaks[10] = {0}; + for (size_t i = 0; i < len - window; ++i) { for (size_t j = 0; j < (len - i); j++) { @@ -844,44 +851,38 @@ int AutoCorrelate(const int *in, int *out, size_t len, size_t window, bool SaveG double ac_value = autocv / variance; // keep track of which distance is repeating. - if (ac_value > 1) { + // A value near 1.0 or more indicates a correlation in the signal + if (ac_value > 0.95) { correlation = i - lastmax; lastmax = i; + + if ((correlation > 1) && peak_cnt < ARRAYLEN(peaks)) { + peaks[peak_cnt++] = correlation; + } } } - // - int hi = 0, idx = 0; - int distance = 0, hi_1 = 0, idx_1 = 0; - for (size_t i = 0; i <= len; ++i) { - if (correl_buf[i] > hi) { - hi = correl_buf[i]; - idx = i; + // Find shorts distance between peaks + int distance = -1; + for (size_t i = 0; i < ARRAYLEN(peaks); ++i) { + + if (peaks[i] < 2) { + continue; + } + + if (distance == -1) { + distance = peaks[i]; + continue; + } + + if (peaks[i] < distance) { + distance = peaks[i]; } } - for (size_t i = idx + 1; i <= window; ++i) { - if (correl_buf[i] > hi_1) { - hi_1 = correl_buf[i]; - idx_1 = i; - } - } - - int foo = ABS(hi - hi_1); - int bar = (int)((int)((hi + hi_1) / 2) * 0.04); - - int retval = correlation; - - if (foo < bar) { - distance = (idx_1 - idx); - retval = distance; + if (distance > -1) { if (verbose) { - PrintAndLogEx(SUCCESS, "possible visible correlation "_YELLOW_("%4d") " samples", distance); - } - - } else if (correlation > 1) { - if (verbose) { - PrintAndLogEx(SUCCESS, "possible correlation " _YELLOW_("%4zu") " samples", correlation); + PrintAndLogEx(SUCCESS, "possible correlation at "_YELLOW_("%4d") " samples", distance); } } else { PrintAndLogEx(HINT, "no repeating pattern found, try increasing window size"); @@ -892,20 +893,12 @@ int AutoCorrelate(const int *in, int *out, size_t len, size_t window, bool SaveG if (SaveGrph) { //g_GraphTraceLen = g_GraphTraceLen - window; memcpy(out, correl_buf, len * sizeof(int)); - if (distance > 0) { - setClockGrid(distance, idx); - retval = distance; - } else { - setClockGrid(correlation, idx); - } - - g_CursorCPos = idx_1; - g_CursorDPos = idx_1 + retval; + setClockGrid(distance, 0); g_DemodBufferLen = 0; RepaintGraphWindow(); } free(correl_buf); - return retval; + return distance; } static int CmdAutoCorr(const char *Cmd) { @@ -1413,7 +1406,8 @@ int NRZrawDemod(int clk, int invert, int maxErr, bool verbose) { if (errCnt > 0 && (verbose || g_debugMode)) PrintAndLogEx(DEBUG, "DEBUG: (NRZrawDemod) Errors during Demoding (shown as 7 in bit stream): %d", errCnt); if (verbose || g_debugMode) { - PrintAndLogEx(SUCCESS, "NRZ demoded bitstream:"); + PrintAndLogEx(SUCCESS, "NRZ demoded bitstream"); + PrintAndLogEx(INFO, "---------------------"); // Now output the bitstream to the scrollback by line of 16 bits printDemodBuff(0, false, invert, false); } diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 0e0410c5c..7f7c95edc 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -1555,11 +1555,11 @@ out: return retval; } -static int check_autocorrelate(int clock) { +static int check_autocorrelate(const char *prefix, int clock) { PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, _CYAN_("Performing auto correlations...")); - for (int win = 4000; win < 30000; win += 2000) { + PrintAndLogEx(INFO, _CYAN_("%s - auto correlations"), prefix); + for (int win = 2000; win < 30000; win += 2000) { int ans = AutoCorrelate(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen, win, false, false); if (ans == -1) { continue; @@ -1912,68 +1912,93 @@ int CmdLFfind(const char *Cmd) { PrintAndLogEx(INFO, _CYAN_("Checking for unknown tags...") "\n"); // FSK + PrintAndLogEx(INFO, "FSK clock.......... " NOLF); int clock = GetFskClock("", false); if (clock) { + PrintAndLogEx(NORMAL, _GREEN_("detected")); if (FSKrawDemod(0, 0, 0, 0, true) == PM3_SUCCESS) { PrintAndLogEx(INFO, _GREEN_("FSK") " modulation detected!"); - check_autocorrelate(clock); + check_autocorrelate("FSK", clock); if (search_cont) { found++; } else { goto out; } - } + } else { + PrintAndLogEx(INFO, "FSK demodulation... " _RED_("failed")); + } + } else { + PrintAndLogEx(NORMAL, _RED_("no")); } // ASK + PrintAndLogEx(INFO, "ASK clock.......... " NOLF); clock = GetAskClock("", false); if (clock) { + PrintAndLogEx(NORMAL, _GREEN_("detected")); bool st = true; if (ASKDemod_ext(0, 0, 0, 0, false, true, false, 1, &st) == PM3_SUCCESS) { + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, _GREEN_("ASK") " modulation / Manchester encoding detected!"); PrintAndLogEx(INFO, "if it does not look right it could instead be ASK/Biphase - try " _YELLOW_("'data rawdemod --ab'")); - check_autocorrelate(clock); + check_autocorrelate("ASK", clock); if (search_cont) { found++; } else { goto out; } + } else { + PrintAndLogEx(INFO, "ASK demodulation... " _RED_("failed")); } + } else { + PrintAndLogEx(NORMAL, _RED_("no")); } // NZR + PrintAndLogEx(INFO, "NRZ clock.......... " NOLF); clock = GetNrzClock("", false); if (clock) { - if (NRZrawDemod(0, 0, 0,false) == PM3_SUCCESS) { + PrintAndLogEx(NORMAL, _GREEN_("detected")); + if (NRZrawDemod(0, 0, 0, true) == PM3_SUCCESS) { PrintAndLogEx(INFO, _GREEN_("NRZ") " modulation detected!"); - check_autocorrelate(clock); + check_autocorrelate("NRZ", clock); if (search_cont) { found++; } else { goto out; } - } + } else { + PrintAndLogEx(INFO, "NRZ demodulation... " _RED_("failed")); + } + } else { + PrintAndLogEx(NORMAL, _RED_("no")); } // PSK + PrintAndLogEx(INFO, "PSK clock.......... " NOLF); clock = GetPskClock("", false); - if (clock) { + if (clock) { + PrintAndLogEx(NORMAL, _GREEN_("detected")); if (CmdPSK1rawDemod("") == PM3_SUCCESS) { PrintAndLogEx(INFO, "Possible " _GREEN_("PSK1") " modulation detected!"); PrintAndLogEx(INFO, " Could also be PSK2 - try " _YELLOW_("'data rawdemod --p2'")); PrintAndLogEx(INFO, " Could also be PSK3 - [currently not supported]"); PrintAndLogEx(INFO, " Could also be NRZ - try " _YELLOW_("'data rawdemod --nr")); - check_autocorrelate(clock); + check_autocorrelate("PSK", clock); if (search_cont) { found++; } else { goto out; } + } else { + PrintAndLogEx(INFO, "PSK demodulation... " _RED_("failed")); } + } else { + PrintAndLogEx(NORMAL, _RED_("no")); } if (found == 0) { From f8f135a3b723136615959e11065c74fb4c867c52 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 18 Dec 2023 10:11:11 +0100 Subject: [PATCH 0902/1034] style --- armsrc/Standalone/hf_unisniff.c | 32 ++--- client/src/cmdanalyse.c | 4 +- client/src/cmdhf14a.c | 2 +- client/src/cmdhflist.c | 244 ++++++++++++++++---------------- client/src/cmdhfmfp.c | 62 ++++---- client/src/cmdhw.c | 2 +- client/src/cmdlf.c | 22 +-- client/src/cmdtrace.c | 20 +-- client/src/mifare/mifare4.c | 14 +- client/src/pm3line_vocabulary.h | 1 + client/src/preferences.c | 8 +- client/src/preferences.h | 4 +- client/src/util.c | 6 +- common/generator.c | 4 +- common_arm/usb_cdc.c | 6 +- doc/commands.json | 34 +++-- doc/commands.md | 1 + 17 files changed, 240 insertions(+), 226 deletions(-) diff --git a/armsrc/Standalone/hf_unisniff.c b/armsrc/Standalone/hf_unisniff.c index 6d2a6ee54..e1882ba8c 100644 --- a/armsrc/Standalone/hf_unisniff.c +++ b/armsrc/Standalone/hf_unisniff.c @@ -151,20 +151,20 @@ void ModInfo(void) { } void RunMod(void) { - char *protocols[]=HF_UNISNIFF_PROTOCOLS; + char *protocols[] = HF_UNISNIFF_PROTOCOLS; uint8_t sniff_protocol, default_sniff_protocol; StandAloneMode(); Dbprintf(_YELLOW_("HF UNISNIFF started")); - for (sniff_protocol=0; sniff_protocol<HF_UNISNIFF_NUM_PROTOCOLS; sniff_protocol++) { + for (sniff_protocol = 0; sniff_protocol < HF_UNISNIFF_NUM_PROTOCOLS; sniff_protocol++) { if (!strcmp(protocols[sniff_protocol], HF_UNISNIFF_PROTOCOL)) break; } - default_sniff_protocol=sniff_protocol; + default_sniff_protocol = sniff_protocol; #ifdef HF_UNISNIFF_VERBOSE_DEBUG Dbprintf("Compile-time configured protocol: %d", sniff_protocol); #endif #ifdef WITH_FLASH - uint8_t save_mode=HF_UNISNIFF_SAVE_MODE; + uint8_t save_mode = HF_UNISNIFF_SAVE_MODE; rdv40_spiffs_lazy_mount(); // Allocate memory now for buffer for filename to save to. Who knows what'll be // available after filling the trace buffer. @@ -181,12 +181,12 @@ void RunMod(void) { uint32_t config_size = size_in_spiffs(HF_UNISNIFF_CONFIG); if (config_size > HF_UNISNIFF_CONFIG_SIZE) config_size = HF_UNISNIFF_CONFIG_SIZE; rdv40_spiffs_read_as_filetype(HF_UNISNIFF_CONFIG, (uint8_t *)config_buffer, - config_size, RDV40_SPIFFS_SAFETY_SAFE); + config_size, RDV40_SPIFFS_SAFETY_SAFE); // This parser is terrible but I think fairly memory efficient? Maybe better to use JSON? char *x = config_buffer; char *y = x; // strip out all the whitespace and Windows line-endings - do { + do { while (*y == 0x20 || *y == 0x09 || *y == 0x0D) { ++y; } @@ -197,10 +197,10 @@ void RunMod(void) { char *tag = strtok(config_buffer, "="); char *value = strtok(NULL, "\n"); if (tag != NULL && value != NULL) { - if (!strcmp(tag,"protocol")) { + if (!strcmp(tag, "protocol")) { // If we got a selection here, override compile-time selection uint8_t conf_protocol; - for (conf_protocol=0; conf_protocol<HF_UNISNIFF_NUM_PROTOCOLS; conf_protocol++) { + for (conf_protocol = 0; conf_protocol < HF_UNISNIFF_NUM_PROTOCOLS; conf_protocol++) { if (!strcmp(protocols[conf_protocol], value)) { sniff_protocol = conf_protocol; break; @@ -209,8 +209,8 @@ void RunMod(void) { #ifdef HF_UNISNIFF_VERBOSE_DEBUG Dbprintf("Run-time configured protocol: %d", conf_protocol); #endif - } else if (!strcmp(tag,"save")) { - if (!strcmp(value,"append")) save_mode = HF_UNISNIFF_SAVE_MODE_APPEND; + } else if (!strcmp(tag, "save")) { + if (!strcmp(value, "append")) save_mode = HF_UNISNIFF_SAVE_MODE_APPEND; else if (!strcmp(value, "none")) save_mode = HF_UNISNIFF_SAVE_MODE_NONE; else save_mode = HF_UNISNIFF_SAVE_MODE_NEW; #ifdef HF_UNISNIFF_VERBOSE_DEBUG @@ -243,13 +243,13 @@ void RunMod(void) { int button_pressed = BUTTON_HELD(1000); if (button_pressed == BUTTON_SINGLE_CLICK) { sniff_protocol++; - if (sniff_protocol >= HF_UNISNIFF_PROTO_USER) sniff_protocol=0; + if (sniff_protocol >= HF_UNISNIFF_PROTO_USER) sniff_protocol = 0; SpinDelay(100); Dbprintf("Selected protocol: '%s'", protocols[sniff_protocol]); } else if (button_pressed == BUTTON_HOLD) { Dbprintf("Executing protocol %s", protocols[sniff_protocol]); - for (uint8_t i=0; i<4; i++) { - LED(15,0); + for (uint8_t i = 0; i < 4; i++) { + LED(15, 0); SpinDelay(100); LEDsoff(); SpinDelay(100); @@ -262,7 +262,7 @@ void RunMod(void) { } } - switch(sniff_protocol) { + switch (sniff_protocol) { case HF_UNISNIFF_PROTO_14a: SniffIso14443a(0); break; @@ -300,11 +300,11 @@ void RunMod(void) { sprintf(filename, "%s_%s%s", HF_UNISNIFF_LOGFILE, protocols[sniff_protocol], HF_UNISNIFF_LOGEXT); if (save_mode == HF_UNISNIFF_SAVE_MODE_NEW) { - uint16_t file_index=0; + uint16_t file_index = 0; while (exists_in_spiffs(filename)) { if (file_index++ == 1000) break; sprintf(filename, "%s_%s-%03d%s", HF_UNISNIFF_LOGFILE, protocols[sniff_protocol], - file_index, HF_UNISNIFF_LOGEXT); + file_index, HF_UNISNIFF_LOGEXT); } if (file_index > 999) { Dbprintf("[!] Too many files! Trace not saved. Clean up your SPIFFS."); diff --git a/client/src/cmdanalyse.c b/client/src/cmdanalyse.c index a6a4b737c..780107953 100644 --- a/client/src/cmdanalyse.c +++ b/client/src/cmdanalyse.c @@ -970,8 +970,8 @@ static int CmdAnalyseFreq(const char *Cmd) { PrintAndLogEx(INFO, " 13.56 mHz has %f m, rf range %f m", len_1356, rf_range_1356); PrintAndLogEx(INFO, "Antenna lengths"); - PrintAndLogEx(INFO, " 125 kHz 1/2 = %f m, 1/4 = %f m", (len_125 / 2), (len_125 / 4) ); - PrintAndLogEx(INFO, " 134 kHz 1/2 = %f m, 1/4 = %f m", (len_134 / 2), (len_134 / 4) ); + PrintAndLogEx(INFO, " 125 kHz 1/2 = %f m, 1/4 = %f m", (len_125 / 2), (len_125 / 4)); + PrintAndLogEx(INFO, " 134 kHz 1/2 = %f m, 1/4 = %f m", (len_134 / 2), (len_134 / 4)); PrintAndLogEx(INFO, " 13.56 mHz 1/2 = %f m, 1/4 = %f m", (len_1356 / 2), (len_1356 / 4)); diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index e99d709ac..5fe74d6b9 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -922,7 +922,7 @@ int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leav uint8_t data[PM3_CMD_DATA_SIZE] = { 0x0a | gs_frames_num, 0x00}; gs_frames_num ^= 1; - int min = MIN( (PM3_CMD_DATA_SIZE - 2), (datainlen & 0x1FF)); + int min = MIN((PM3_CMD_DATA_SIZE - 2), (datainlen & 0x1FF)); memcpy(&data[2], datain, min); SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_RAW | ISO14A_APPEND_CRC | cmdc, (datainlen & 0xFFFF) + 2, 0, data, min + 2); diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index ccedc5c66..aaecb3e52 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -1332,54 +1332,54 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { if (data_size > 1) { // key : uint16_t uKeyNum = 0x4000 + sectorNum * 2 + (keyB ? 1 : 0); uint16_t uKeyNum = MemLeToUint2byte(data); - switch (uKeyNum & 0xf000){ - const char* stringdata; - default: - stringdata = "FIRST AUTH (Keynr 0x%04X: Key not identified)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); - break; - case 0x4000: - snprintf(exp, size, "FIRST AUTH (Keynr 0x%04X: %c sector %d)", uKeyNum, uKeyNum & 0x0001 ? 'B' : 'A', (uKeyNum - 0x4000) / 2); - break; - case 0xA000: // There are virtual card encryption and MACing keys, but this is NOT their place! - stringdata = "FIRST AUTH(Keynr 0x%04X: Proximity Check Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); - break; - case 0x9000: - switch (uKeyNum & 0xf){ - case 0x0: - stringdata = "FIRST AUTH (Keynr 0x%04X: Card Master Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); - break; - case 0x1: - stringdata = "FIRST AUTH (Keynr 0x%04X: Card Configuration Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); - break; - case 0x2: - stringdata = "FIRST AUTH(Keynr 0x%04X: SL2 Switch Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); - break; - case 0x3: - stringdata = "FIRST AUTH(Keynr 0x%04X: SL3 Switch Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); - break; - case 0x4: - stringdata = "FIRST AUTH(Keynr 0x%04X: SL1 Additional Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); - break; - case 0x6: - stringdata = "FIRST AUTH(Keynr 0x%04X: SL3 Sector Switch Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); - break; - case 0x7: - stringdata = "FIRST AUTH(Keynr 0x%04X: SL1SL3Mix Sector Switch Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); - break; - default: - stringdata = "FIRST AUTH(Keynr 0x%04X: Management Key not identified)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uKeyNum); - break; - } + switch (uKeyNum & 0xf000) { + const char *stringdata; + default: + stringdata = "FIRST AUTH (Keynr 0x%04X: Key not identified)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uKeyNum); + break; + case 0x4000: + snprintf(exp, size, "FIRST AUTH (Keynr 0x%04X: %c sector %d)", uKeyNum, uKeyNum & 0x0001 ? 'B' : 'A', (uKeyNum - 0x4000) / 2); + break; + case 0xA000: // There are virtual card encryption and MACing keys, but this is NOT their place! + stringdata = "FIRST AUTH(Keynr 0x%04X: Proximity Check Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uKeyNum); + break; + case 0x9000: + switch (uKeyNum & 0xf) { + case 0x0: + stringdata = "FIRST AUTH (Keynr 0x%04X: Card Master Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uKeyNum); + break; + case 0x1: + stringdata = "FIRST AUTH (Keynr 0x%04X: Card Configuration Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uKeyNum); + break; + case 0x2: + stringdata = "FIRST AUTH(Keynr 0x%04X: SL2 Switch Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uKeyNum); + break; + case 0x3: + stringdata = "FIRST AUTH(Keynr 0x%04X: SL3 Switch Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uKeyNum); + break; + case 0x4: + stringdata = "FIRST AUTH(Keynr 0x%04X: SL1 Additional Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uKeyNum); + break; + case 0x6: + stringdata = "FIRST AUTH(Keynr 0x%04X: SL3 Sector Switch Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uKeyNum); + break; + case 0x7: + stringdata = "FIRST AUTH(Keynr 0x%04X: SL1SL3Mix Sector Switch Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uKeyNum); + break; + default: + stringdata = "FIRST AUTH(Keynr 0x%04X: Management Key not identified)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uKeyNum); + break; + } } } else { snprintf(exp, size, "FIRST AUTH") ; @@ -1430,80 +1430,80 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { if (data_size > 1) { uint16_t uBlockNum = MemLeToUint2byte(data); - switch (uBlockNum & 0xF000){ - const char* stringdata; - default: - stringdata = "WRITE %s(%u) %s"; - snprintf(exp, size, stringdata, encrypted, uBlockNum, responseMaced); - break; - case 0x4000: - snprintf(exp, size, "WRITE (Keynr 0x%04X: %c sector %d)", uBlockNum, uBlockNum & 0x0001 ? 'B' : 'A', (uBlockNum - 0x4000) / 2); - break; - case 0xA000: // There are virtual card encryption and MACing keys, but this is NOT their place! - stringdata = "WRITE(Keynr 0x%04X: Proximity Check Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); - break; - case 0xB000: - case 0x9000: - if ((uBlockNum & 0x2000) == 0x2000){ - switch (uBlockNum & 0xf){ - default: - stringdata = "WRITE(Config %04X: Unidentified)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); - break; - case 0x0: - stringdata = "WRITE(Config %04X: Config)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); - break; - case 0x1: - stringdata = "WRITE(Config %04X: Virtual Card Installation ID)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); - break; - case 0x2: - stringdata = "WRITE(Config %04X: ATS)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); - break; - case 0x3: - stringdata = "WRITE(Config %04X: Field configuration)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); - break; - } - } else { - switch (uBlockNum & 0xf){ - default: - stringdata = "WRITE(Keynr 0x%04X: Management Key not identified)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); - break; - case 0x0: - stringdata = "WRITE(Keynr 0x%04X: Card Master Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); - break; - case 0x1: - stringdata = "WRITE(Keynr 0x%04X: Card Configuration Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); - break; - case 0x2: - stringdata = "WRITE(Keynr 0x%04X: SL2 Switch Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); - break; - case 0x3: - stringdata = "WRITE(Keynr 0x%04X: SL3 Switch Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); - break; - case 0x4: - stringdata = "WRITE(Keynr 0x%04X: SL1 Additional Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); - break; - case 0x6: - stringdata = "WRITE(Keynr 0x%04X: SL3 Sector Switch Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); - break; - case 0x7: - stringdata = "WRITE(Keynr 0x%04X: SL1SL3Mix Sector Switch Key)"; - snprintf(exp, strlen(stringdata)+1, stringdata, uBlockNum); - break; - } - } + switch (uBlockNum & 0xF000) { + const char *stringdata; + default: + stringdata = "WRITE %s(%u) %s"; + snprintf(exp, size, stringdata, encrypted, uBlockNum, responseMaced); + break; + case 0x4000: + snprintf(exp, size, "WRITE (Keynr 0x%04X: %c sector %d)", uBlockNum, uBlockNum & 0x0001 ? 'B' : 'A', (uBlockNum - 0x4000) / 2); + break; + case 0xA000: // There are virtual card encryption and MACing keys, but this is NOT their place! + stringdata = "WRITE(Keynr 0x%04X: Proximity Check Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uBlockNum); + break; + case 0xB000: + case 0x9000: + if ((uBlockNum & 0x2000) == 0x2000) { + switch (uBlockNum & 0xf) { + default: + stringdata = "WRITE(Config %04X: Unidentified)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uBlockNum); + break; + case 0x0: + stringdata = "WRITE(Config %04X: Config)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uBlockNum); + break; + case 0x1: + stringdata = "WRITE(Config %04X: Virtual Card Installation ID)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uBlockNum); + break; + case 0x2: + stringdata = "WRITE(Config %04X: ATS)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uBlockNum); + break; + case 0x3: + stringdata = "WRITE(Config %04X: Field configuration)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uBlockNum); + break; + } + } else { + switch (uBlockNum & 0xf) { + default: + stringdata = "WRITE(Keynr 0x%04X: Management Key not identified)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uBlockNum); + break; + case 0x0: + stringdata = "WRITE(Keynr 0x%04X: Card Master Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uBlockNum); + break; + case 0x1: + stringdata = "WRITE(Keynr 0x%04X: Card Configuration Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uBlockNum); + break; + case 0x2: + stringdata = "WRITE(Keynr 0x%04X: SL2 Switch Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uBlockNum); + break; + case 0x3: + stringdata = "WRITE(Keynr 0x%04X: SL3 Switch Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uBlockNum); + break; + case 0x4: + stringdata = "WRITE(Keynr 0x%04X: SL1 Additional Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uBlockNum); + break; + case 0x6: + stringdata = "WRITE(Keynr 0x%04X: SL3 Sector Switch Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uBlockNum); + break; + case 0x7: + stringdata = "WRITE(Keynr 0x%04X: SL1SL3Mix Sector Switch Key)"; + snprintf(exp, strlen(stringdata) + 1, stringdata, uBlockNum); + break; + } + } } } else { snprintf(exp, size, "WRITE %s %s ?", encrypted, responseMaced); diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index c8feeb044..868f65aab 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -681,28 +681,28 @@ static int CmdHFMFPAuth(const char *Cmd) { return MifareAuth4(NULL, keyn, key, true, false, true, verbose, false); } -static int data_crypt(mf4Session_t *mf4session, uint8_t *dati, uint8_t *dato, bool rev){ -uint8_t kenc[16]; - memcpy(kenc, mf4session->Kenc, 16); - uint8_t ti[4]; - memcpy(ti, mf4session->TI, 4); - uint8_t ctr[1]; - uint8_t IV[16] ={0,0,0x00,0x00,0x00,0,0x00,0x00,0x00,0}; - if (rev){ - ctr[0] = (uint8_t)(mf4session->R_Ctr & 0xff); - for (int i = 0; i<9; i+=4){memcpy(&IV[i], ctr, 1);} - memcpy(&IV[12], ti, 4); // For reads TI is LS - } else { - ctr[0] = (uint8_t)(mf4session->W_Ctr & 0xff); - for (int i = 3; i<16; i+=4){memcpy(&IV[i], ctr, 1);} - memcpy(&IV[0], ti, 4); // For writes TI is MS - } - if (rev){ - aes_decode(IV, kenc, dati, dato, 16); - } else { - aes_encode(IV, kenc, dati, dato, 16); - } - return 0; +static int data_crypt(mf4Session_t *mf4session, uint8_t *dati, uint8_t *dato, bool rev) { + uint8_t kenc[16]; + memcpy(kenc, mf4session->Kenc, 16); + uint8_t ti[4]; + memcpy(ti, mf4session->TI, 4); + uint8_t ctr[1]; + uint8_t IV[16] = {0, 0, 0x00, 0x00, 0x00, 0, 0x00, 0x00, 0x00, 0}; + if (rev) { + ctr[0] = (uint8_t)(mf4session->R_Ctr & 0xff); + for (int i = 0; i < 9; i += 4) {memcpy(&IV[i], ctr, 1);} + memcpy(&IV[12], ti, 4); // For reads TI is LS + } else { + ctr[0] = (uint8_t)(mf4session->W_Ctr & 0xff); + for (int i = 3; i < 16; i += 4) {memcpy(&IV[i], ctr, 1);} + memcpy(&IV[0], ti, 4); // For writes TI is MS + } + if (rev) { + aes_decode(IV, kenc, dati, dato, 16); + } else { + aes_encode(IV, kenc, dati, dato, 16); + } + return 0; } static int CmdHFMFPRdbl(const char *Cmd) { CLIParserContext *ctx; @@ -905,7 +905,7 @@ static int CmdHFMFPRdsc(const char *Cmd) { return PM3_ESOFT; } - if (datalen != 1 + MFBLOCK_SIZE + (nomacres? 0 : 8) + 2) { + if (datalen != 1 + MFBLOCK_SIZE + (nomacres ? 0 : 8) + 2) { PrintAndLogEx(ERR, "Error return length:%d", datalen); DropField(); return PM3_ESOFT; @@ -1097,14 +1097,14 @@ static int CmdHFMFPChKey(const char *Cmd) { } mf4Session_t mf4session; keyn[0] = ki[0]; - if (ki[0] == 0x40){ // Only if we are working with sector keys - if (usekeyb){ - keyn[1] = (ki[1] % 2 ==0) ? ki[1] + 1 : ki[1]; // If we change using key B, check if KI is key A - } else { - keyn[1] = (ki[1] % 2 ==0) ? ki[1] : ki[1] -1; // If we change using key A, check if KI is key A - } + if (ki[0] == 0x40) { // Only if we are working with sector keys + if (usekeyb) { + keyn[1] = (ki[1] % 2 == 0) ? ki[1] + 1 : ki[1]; // If we change using key B, check if KI is key A + } else { + keyn[1] = (ki[1] % 2 == 0) ? ki[1] : ki[1] - 1; // If we change using key A, check if KI is key A + } } else {keyn[1] = ki[1];} - if (verbose){ + if (verbose) { PrintAndLogEx(INFO, "--key index:", sprint_hex(keyn, 2)); } int res = MifareAuth4(&mf4session, keyn, key, true, true, true, verbose, false); @@ -1216,7 +1216,7 @@ static int CmdHFMFPChConf(const char *Cmd) { mf4Session_t mf4session; keyn[0] = 0x90; keyn[1] = usecck ? 0x01 : 0x00; - if (verbose){ + if (verbose) { PrintAndLogEx(INFO, "--key index:", sprint_hex(keyn, 2)); } int res = MifareAuth4(&mf4session, keyn, key, true, true, true, verbose, false); diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index 273ed384b..8c2757249 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -1142,7 +1142,7 @@ static command_t CommandTable[] = { {"-------------", CmdHelp, AlwaysAvailable, "----------------------- " _CYAN_("Hardware") " -----------------------"}, {"help", CmdHelp, AlwaysAvailable, "This help"}, {"break", CmdBreak, IfPm3Present, "Send break loop usb command"}, - {"bootloader", CmdBootloader, IfPm3Present, "Reboot Proxmark3 into bootloader mode"}, + {"bootloader", CmdBootloader, IfPm3Present, "Reboot Proxmark3 into bootloader mode"}, {"connect", CmdConnect, AlwaysAvailable, "Connect Proxmark3 to serial port"}, {"dbg", CmdDbg, IfPm3Present, "Set Proxmark3 debug level"}, {"detectreader", CmdDetectReader, IfPm3Present, "Detect external reader field"}, diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 7f7c95edc..a097c19ac 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -1564,12 +1564,12 @@ static int check_autocorrelate(const char *prefix, int clock) { if (ans == -1) { continue; } - + if (ans > 1) { PrintAndLogEx(SUCCESS, " " _YELLOW_("%d") " repeating samples", ans); // If we got a field clock / bit rate from before - // we can use it for predict number of repeating bytes + // we can use it for predict number of repeating bytes // this signal contain. if (clock > 0) { int bytes = ans / (8 * clock); @@ -1586,7 +1586,7 @@ static int check_autocorrelate(const char *prefix, int clock) { return PM3_SUCCESS; } } - PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(NORMAL, ""); return PM3_EFAILED; } @@ -1915,7 +1915,7 @@ int CmdLFfind(const char *Cmd) { PrintAndLogEx(INFO, "FSK clock.......... " NOLF); int clock = GetFskClock("", false); if (clock) { - PrintAndLogEx(NORMAL, _GREEN_("detected")); + PrintAndLogEx(NORMAL, _GREEN_("detected")); if (FSKrawDemod(0, 0, 0, 0, true) == PM3_SUCCESS) { PrintAndLogEx(INFO, _GREEN_("FSK") " modulation detected!"); check_autocorrelate("FSK", clock); @@ -1927,9 +1927,9 @@ int CmdLFfind(const char *Cmd) { } } else { PrintAndLogEx(INFO, "FSK demodulation... " _RED_("failed")); - } + } } else { - PrintAndLogEx(NORMAL, _RED_("no")); + PrintAndLogEx(NORMAL, _RED_("no")); } // ASK @@ -1953,7 +1953,7 @@ int CmdLFfind(const char *Cmd) { PrintAndLogEx(INFO, "ASK demodulation... " _RED_("failed")); } } else { - PrintAndLogEx(NORMAL, _RED_("no")); + PrintAndLogEx(NORMAL, _RED_("no")); } // NZR @@ -1972,15 +1972,15 @@ int CmdLFfind(const char *Cmd) { } } else { PrintAndLogEx(INFO, "NRZ demodulation... " _RED_("failed")); - } + } } else { - PrintAndLogEx(NORMAL, _RED_("no")); + PrintAndLogEx(NORMAL, _RED_("no")); } // PSK PrintAndLogEx(INFO, "PSK clock.......... " NOLF); clock = GetPskClock("", false); - if (clock) { + if (clock) { PrintAndLogEx(NORMAL, _GREEN_("detected")); if (CmdPSK1rawDemod("") == PM3_SUCCESS) { PrintAndLogEx(INFO, "Possible " _GREEN_("PSK1") " modulation detected!"); @@ -1998,7 +1998,7 @@ int CmdLFfind(const char *Cmd) { PrintAndLogEx(INFO, "PSK demodulation... " _RED_("failed")); } } else { - PrintAndLogEx(NORMAL, _RED_("no")); + PrintAndLogEx(NORMAL, _RED_("no")); } if (found == 0) { diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 8cc8795f3..c4d278c0a 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -927,16 +927,16 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr if (hdr->isResponse) { PrintAndLogEx(NORMAL, " | | * |%-*s | %-4s| %s", - str_padder, - sprint_hex_inrow_spaces(mfData + j, plen, 2), - (crcc == 0 ? _RED_(" !! ") : (crcc == 1 ? _GREEN_(" ok ") : " ")), - explanation); + str_padder, + sprint_hex_inrow_spaces(mfData + j, plen, 2), + (crcc == 0 ? _RED_(" !! ") : (crcc == 1 ? _GREEN_(" ok ") : " ")), + explanation); } else { PrintAndLogEx(NORMAL, " | | * |" _YELLOW_("%-*s")" | " _YELLOW_("%s") "| " _YELLOW_("%s"), - str_padder, - sprint_hex_inrow_spaces(mfData + j, plen, 2), - (crcc == 0 ? _RED_(" !! ") : (crcc == 1 ? _GREEN_(" ok ") : " ")), - explanation); + str_padder, + sprint_hex_inrow_spaces(mfData + j, plen, 2), + (crcc == 0 ? _RED_(" !! ") : (crcc == 1 ? _GREEN_(" ok ") : " ")), + explanation); } } } @@ -1106,7 +1106,7 @@ static int CmdTraceLoad(const char *Cmd) { if (gs_trace) { free(gs_trace); // maybe better to not clobber this until we have successful load? gs_trace = NULL; - gs_traceLen = 0; + gs_traceLen = 0; } size_t len = 0; @@ -1293,7 +1293,7 @@ int CmdTraceList(const char *Cmd) { if (use_buffer == false) { download_trace(); - } else if (gs_traceLen == 0 || gs_trace ==NULL) { + } else if (gs_traceLen == 0 || gs_trace == NULL) { PrintAndLogEx(FAILED, "You requested a trace list in offline mode but there is no trace."); PrintAndLogEx(FAILED, "Consider using " _YELLOW_("`trace load`") " or removing parameter " _YELLOW_("`-1`")); return PM3_EINVARG; diff --git a/client/src/mifare/mifare4.c b/client/src/mifare/mifare4.c index 8186b27d5..f7d9980a9 100644 --- a/client/src/mifare/mifare4.c +++ b/client/src/mifare/mifare4.c @@ -258,7 +258,7 @@ int MifareAuth4(mf4Session_t *mf4session, uint8_t *keyn, uint8_t *key, bool acti memmove(&raw[16], &RndB[1], 16); aes_encode(NULL, key, raw, &cmd2[1], 32); - if (verbose){ + if (verbose) { PrintAndLogEx(INFO, ">phase2: %s", sprint_hex(cmd2, 33)); } res = ExchangeRAW14a(cmd2, sizeof(cmd2), false, true, data, sizeof(data), &datalen, silentMode); @@ -374,16 +374,16 @@ int MFPCommitPerso(bool activateField, bool leaveSignalON, uint8_t *dataout, int int MFPReadBlock(mf4Session_t *mf4session, bool plain, bool nomaccmd, bool nomacres, uint8_t blockNum, uint8_t blockCount, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, uint8_t *mac) { int cmdb = 0x31; - if (nomacres){cmdb = cmdb ^ 0x01;} // If we do not want MAC in reply, remove 0x01 - if (plain){cmdb = cmdb ^ 0x02;} // If we do not need an encrypted transmission, add 0x02 - if (nomaccmd){cmdb = cmdb ^ 0x04;} // If we do not want to send a MAC, remove 0x04 + if (nomacres) {cmdb = cmdb ^ 0x01;} // If we do not want MAC in reply, remove 0x01 + if (plain) {cmdb = cmdb ^ 0x02;} // If we do not need an encrypted transmission, add 0x02 + if (nomaccmd) {cmdb = cmdb ^ 0x04;} // If we do not want to send a MAC, remove 0x04 uint8_t rcmd1[4] = {cmdb, blockNum, 0x00, blockCount}; uint8_t maccmddat[8] = {0}; uint8_t rcmd[nomaccmd ? 4 : 12]; if (!nomaccmd && mf4session) CalculateMAC(mf4session, mtypReadCmd, blockNum, blockCount, rcmd1, 4, &maccmddat[0], g_verbose_mode); memmove(rcmd, rcmd1, 4); - if (!nomaccmd){memmove(&rcmd[4], maccmddat, 8);} + if (!nomaccmd) {memmove(&rcmd[4], maccmddat, 8);} int res = intExchangeRAW14aPlus(rcmd, sizeof(rcmd), activateField, leaveSignalON, dataout, maxdataoutlen, dataoutlen); if (res) return res; @@ -397,8 +397,8 @@ int MFPReadBlock(mf4Session_t *mf4session, bool plain, bool nomaccmd, bool nomac int MFPWriteBlock(mf4Session_t *mf4session, bool plain, bool nomacres, uint8_t blockNum, uint8_t blockHdr, uint8_t *data, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, uint8_t *mac) { int cmdb = 0xA1; - if (nomacres){cmdb = cmdb ^ 0x01;} // If we do not want MAC in reply, remove 0x01 - if (plain){cmdb = cmdb ^ 0x02;} // If we do not need an encrypted transmission, add 0x02 + if (nomacres) {cmdb = cmdb ^ 0x01;} // If we do not want MAC in reply, remove 0x01 + if (plain) {cmdb = cmdb ^ 0x02;} // If we do not need an encrypted transmission, add 0x02 uint8_t rcmd[1 + 2 + 16 + 8] = {cmdb, blockNum, blockHdr}; memmove(&rcmd[3], data, 16); if (mf4session) diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index df1c8ec75..17c9c03e7 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -509,6 +509,7 @@ const static vocabulary_t vocabulary[] = { { 0, "hf xerox dump" }, { 1, "hw help" }, { 0, "hw break" }, + { 0, "hw bootloader" }, { 1, "hw connect" }, { 0, "hw dbg" }, { 0, "hw detectreader" }, diff --git a/client/src/preferences.c b/client/src/preferences.c index 4effb1bef..8ceab2bb5 100644 --- a/client/src/preferences.c +++ b/client/src/preferences.c @@ -762,7 +762,7 @@ static int setCmdDeviceDebug (const char *Cmd) } */ -int getDeviceDebugLevel (uint8_t *debug_level) { +int getDeviceDebugLevel(uint8_t *debug_level) { if (!g_session.pm3_present) return PM3_EFAILED; @@ -780,19 +780,19 @@ int getDeviceDebugLevel (uint8_t *debug_level) { return PM3_SUCCESS; } -int setDeviceDebugLevel (uint8_t debug_level, bool verbose) { +int setDeviceDebugLevel(uint8_t debug_level, bool verbose) { if (!g_session.pm3_present) return PM3_EFAILED; if (verbose) - PrintAndLogEx (INFO,"setting device debug loglevel to %u", debug_level); + PrintAndLogEx(INFO, "setting device debug loglevel to %u", debug_level); uint8_t cdata[] = {debug_level, verbose}; clearCommandBuffer(); SendCommandNG(CMD_SET_DBGMODE, cdata, sizeof(cdata)); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_SET_DBGMODE, &resp, 2000) == false) { - PrintAndLogEx (WARNING,"failed to set device debug loglevel"); + PrintAndLogEx(WARNING, "failed to set device debug loglevel"); return PM3_EFAILED; } diff --git a/client/src/preferences.h b/client/src/preferences.h index 74e3bc2a8..e49b64d9c 100644 --- a/client/src/preferences.h +++ b/client/src/preferences.h @@ -31,7 +31,7 @@ int preferences_save(void); void preferences_save_callback(json_t *root); void preferences_load_callback(json_t *root); -int getDeviceDebugLevel (uint8_t *debug_level); -int setDeviceDebugLevel (uint8_t debug_level, bool verbose); +int getDeviceDebugLevel(uint8_t *debug_level); +int setDeviceDebugLevel(uint8_t debug_level, bool verbose); #endif diff --git a/client/src/util.c b/client/src/util.c index ad6b4f447..0e2e27151 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -1233,7 +1233,7 @@ size_t str_nlen(const char *src, size_t maxlen) { } void str_reverse(char *buf, size_t len) { - for (size_t i = 0; i < (len>>1); i++) { + for (size_t i = 0; i < (len >> 1); i++) { char tmp = buf[i]; buf[i] = buf[len - i - 1]; buf[len - i - 1] = tmp; @@ -1241,7 +1241,7 @@ void str_reverse(char *buf, size_t len) { } void str_inverse_hex(char *buf, size_t len) { - for (size_t i = 0; i < len; i++) { + for (size_t i = 0; i < len; i++) { buf[i] = inv_b2s(buf[i], true); } } @@ -1252,7 +1252,7 @@ void str_inverse_bin(char *buf, size_t len) { char c = buf[i]; if (c == '1') buf[i] = '0'; - else if ( c == '0') + else if (c == '0') buf[i] = '1'; else buf[i] = '.'; diff --git a/common/generator.c b/common/generator.c index 28c8a5fa2..25832710a 100644 --- a/common/generator.c +++ b/common/generator.c @@ -329,8 +329,8 @@ int mfc_algo_saflok_one(uint8_t *uid, uint8_t sector, uint8_t keytype, uint64_t if (keytype == 0 && sector == 2) { *key = 0xFFFFFFFFFFFF; - return PM3_SUCCESS; -} + return PM3_SUCCESS; + } if (keytype == 0 && sector == 1) { *key = 0x2a2c13cc242a; diff --git a/common_arm/usb_cdc.c b/common_arm/usb_cdc.c index 3f3db2a5a..f0050bd90 100644 --- a/common_arm/usb_cdc.c +++ b/common_arm/usb_cdc.c @@ -669,7 +669,7 @@ uint32_t usb_read(uint8_t *data, size_t len) { uint32_t time_out = 0; while (len) { - if (!usb_check()) + if (!usb_check()) break; if (pUdp->UDP_CSR[AT91C_EP_OUT] & bank) { @@ -690,7 +690,7 @@ uint32_t usb_read(uint8_t *data, size_t len) { bank = AT91C_UDP_RX_DATA_BK0; } - if (time_out++ == 0x1fff) + if (time_out++ == 0x1fff) break; } @@ -735,7 +735,7 @@ uint32_t usb_read_ng(uint8_t *data, size_t len) { } while (len) { - if (!usb_check()) + if (!usb_check()) break; if ((pUdp->UDP_CSR[AT91C_EP_OUT] & bank)) { diff --git a/doc/commands.json b/doc/commands.json index 277e54e91..edebe62b9 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -2320,13 +2320,13 @@ "notes": [ "hf emrtd dump", "hf emrtd dump --dir ../dump", - "hf emrtd dump -n 123456789 -d 19890101 -e 20250401" + "hf emrtd dump -n 123456789 -d 890101 -e 250401" ], "offline": false, "options": [ "-h, --help This help", - "-n, --documentnumber <alphanum> document number, up to 9 chars", - "-d, --dateofbirth <YYMMDD> date of birth in YYMMDD format", + "-n, --doc <alphanum> document number, up to 9 chars", + "-d, --date <YYMMDD> date of birth in YYMMDD format", "-e, --expiry <YYMMDD> expiry in YYMMDD format", "-m, --mrz <[0-9A-Z<]> 2nd line of MRZ, 44 chars", "--dir <str> save dump to the given dirpath" @@ -2339,14 +2339,14 @@ "notes": [ "hf emrtd info", "hf emrtd info --dir ../dumps", - "hf emrtd info -n 123456789 -d 19890101 -e 20250401", - "hf emrtd info -n 123456789 -d 19890101 -e 20250401 -i" + "hf emrtd info -n 123456789 -d 890101 -e 250401", + "hf emrtd info -n 123456789 -d 890101 -e 250401 -i" ], "offline": true, "options": [ "-h, --help This help", - "-n, --documentnumber <alphanum> document number, up to 9 chars", - "-d, --dateofbirth <YYMMDD> date of birth in YYMMDD format", + "-n, --doc <alphanum> document number, up to 9 chars", + "-d, --date <YYMMDD> date of birth in YYMMDD format", "-e, --expiry <YYMMDD> expiry in YYMMDD format", "-m, --mrz <[0-9A-Z<]> 2nd line of MRZ, 44 chars (passports only)", "--dir <str> display info from offline dump stored in dirpath", @@ -4712,7 +4712,7 @@ "description": "Information and check vulnerabilities in a MIFARE Classic card Some cards in order to extract information you need to specify key and/or specific keys in the copmmand line", "notes": [ "hf mf info", - "hf mf info -k ffffffff -n -v" + "hf mf info -k FFFFFFFFFFFF -n -v" ], "offline": false, "options": [ @@ -7601,6 +7601,18 @@ ], "usage": "hints [-h10]" }, + "hw bootloader": { + "command": "hw bootloader", + "description": "Reboot Proxmark3 into bootloader mode", + "notes": [ + "hw bootloader" + ], + "offline": false, + "options": [ + "-h, --help This help" + ], + "usage": "hw bootloader [-h]" + }, "hw break": { "command": "hw break", "description": "send break loop package", @@ -9055,7 +9067,7 @@ "-1, --ht1 Card type Hitag 1", "-2, --ht2 Card type Hitag 2", "-s, --hts Card type Hitag S", - "-m, --htm Card type Hitag \u041e\u0458" + "-m, --htm Card type Hitag \u03bc" ], "usage": "lf hitag eload [-h12sm] -f <fn>" }, @@ -12146,8 +12158,8 @@ } }, "metadata": { - "commands_extracted": 702, + "commands_extracted": 703, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-12-11T23:10:13" + "extracted_on": "2023-12-18T09:05:00" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 447478cfa..8478e3205 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -784,6 +784,7 @@ Check column "offline" for their availability. |------- |------- |----------- |`hw help `|Y |`This help` |`hw break `|N |`Send break loop usb command` +|`hw bootloader `|N |`Reboot Proxmark3 into bootloader mode` |`hw connect `|Y |`Connect Proxmark3 to serial port` |`hw dbg `|N |`Set Proxmark3 debug level` |`hw detectreader `|N |`Detect external reader field` From bdbfa26f9a6580994ace2e62acbe74caa59efd79 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 18 Dec 2023 14:52:56 +0100 Subject: [PATCH 0903/1034] fix lf config --reset where the resetet value got overwritten. testing some rounding and textual changes to lf search -1uc --- client/src/cmdlf.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index a097c19ac..6aafe3325 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -21,6 +21,7 @@ #include <string.h> #include <limits.h> #include <ctype.h> +#include <math.h> #include "cmdparser.h" // command_t #include "comms.h" #include "commonutil.h" // ARRAYLEN @@ -643,15 +644,6 @@ int CmdLFConfig(const char *Cmd) { .verbose = true }; - if (reset) { - config.decimation = 1; - config.bits_per_sample = 8; - config.averaging = 1, - config.divisor = LF_DIVISOR_125; - config.samples_to_skip = 0; - config.trigger_threshold = 0; - } - if (use_125) config.divisor = LF_DIVISOR_125; @@ -697,6 +689,16 @@ int CmdLFConfig(const char *Cmd) { } config.samples_to_skip = skip; + + if (reset) { + config.decimation = 1; + config.bits_per_sample = 8; + config.averaging = 1, + config.divisor = LF_DIVISOR_125; + config.samples_to_skip = 0; + config.trigger_threshold = 0; + } + return lf_config(&config); } @@ -1572,7 +1574,7 @@ static int check_autocorrelate(const char *prefix, int clock) { // we can use it for predict number of repeating bytes // this signal contain. if (clock > 0) { - int bytes = ans / (8 * clock); + int bytes = round( (float)ans / (8 * clock)); int mod = (bytes % 4); int blocks = (bytes / 4); @@ -1917,7 +1919,6 @@ int CmdLFfind(const char *Cmd) { if (clock) { PrintAndLogEx(NORMAL, _GREEN_("detected")); if (FSKrawDemod(0, 0, 0, 0, true) == PM3_SUCCESS) { - PrintAndLogEx(INFO, _GREEN_("FSK") " modulation detected!"); check_autocorrelate("FSK", clock); if (search_cont) { @@ -1935,13 +1936,13 @@ int CmdLFfind(const char *Cmd) { // ASK PrintAndLogEx(INFO, "ASK clock.......... " NOLF); clock = GetAskClock("", false); - if (clock) { + if (clock && clock > 8) { PrintAndLogEx(NORMAL, _GREEN_("detected")); bool st = true; if (ASKDemod_ext(0, 0, 0, 0, false, true, false, 1, &st) == PM3_SUCCESS) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, _GREEN_("ASK") " modulation / Manchester encoding detected!"); - PrintAndLogEx(INFO, "if it does not look right it could instead be ASK/Biphase - try " _YELLOW_("'data rawdemod --ab'")); + PrintAndLogEx(INFO, " could also be ASK/Biphase - try " _YELLOW_("'data rawdemod --ab'")); check_autocorrelate("ASK", clock); if (search_cont) { @@ -1962,7 +1963,6 @@ int CmdLFfind(const char *Cmd) { if (clock) { PrintAndLogEx(NORMAL, _GREEN_("detected")); if (NRZrawDemod(0, 0, 0, true) == PM3_SUCCESS) { - PrintAndLogEx(INFO, _GREEN_("NRZ") " modulation detected!"); check_autocorrelate("NRZ", clock); if (search_cont) { From 2bfc31a7b67e1eae457a0646bcb6ba62dd3e79fe Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 18 Dec 2023 22:12:26 +0100 Subject: [PATCH 0904/1034] changed "data dectectclock" to try all clocks when not called with any params. Adapted the "lf search -1u" - with text and it should be more intuitive --- CHANGELOG.md | 1 + client/src/cmddata.c | 31 +++++++++++---- client/src/cmdlf.c | 95 ++++++++++++++++++++++---------------------- 3 files changed, 71 insertions(+), 56 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fecf7ef8..1b4d12182 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Change `data detectclock` - now tries all clocks if called w/o any params (@iceman1001) - Changed `lf search -1u` - improved the autocorrelation detection for unknown signals (@iceman1001) - Fixed `hf emrtd dump` stack smashing on device side (@iceman1001) - Changed `dbprint` on device side to use max 200 chars strings. (@iceman1001) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 6e8059ce8..5b179682b 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -818,10 +818,6 @@ int AutoCorrelate(const int *in, int *out, size_t len, size_t window, bool SaveG window = len; } - if (verbose) { - PrintAndLogEx(INFO, "performing " _YELLOW_("%zu") " correlations", g_GraphTraceLen - window); - } - //test double autocv = 0.0; // Autocovariance value size_t correlation = 0; @@ -852,7 +848,7 @@ int AutoCorrelate(const int *in, int *out, size_t len, size_t window, bool SaveG // keep track of which distance is repeating. // A value near 1.0 or more indicates a correlation in the signal - if (ac_value > 0.95) { + if (ac_value > 0.95f) { correlation = i - lastmax; lastmax = i; @@ -882,10 +878,10 @@ int AutoCorrelate(const int *in, int *out, size_t len, size_t window, bool SaveG if (distance > -1) { if (verbose) { - PrintAndLogEx(SUCCESS, "possible correlation at "_YELLOW_("%4d") " samples", distance); + PrintAndLogEx(SUCCESS, "Possible correlation at "_YELLOW_("%4d") " samples", distance); } } else { - PrintAndLogEx(HINT, "no repeating pattern found, try increasing window size"); + PrintAndLogEx(HINT, "No repeating pattern found, try increasing window size"); // return value -1, indication to increase window size return -1; } @@ -1154,7 +1150,7 @@ static int CmdDetectClockRate(const char *Cmd) { arg_lit0(NULL, "psk", "specify PSK modulation clock detection"), arg_param_end }; - CLIExecWithReturn(ctx, Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool a = arg_get_lit(ctx, 1); bool f = arg_get_lit(ctx, 2); bool n = arg_get_lit(ctx, 3); @@ -1165,6 +1161,25 @@ static int CmdDetectClockRate(const char *Cmd) { if (tmp > 1) { PrintAndLogEx(WARNING, "Only specify one modulation"); return PM3_EINVARG; + } else if (tmp == 0) { + + int clock = GetFskClock("", false); + if (clock > 0) { + PrintAndLogEx(SUCCESS, "FSK Clock... %d", clock); + } + clock = GetAskClock("", false); + if (clock > 0) { + PrintAndLogEx(SUCCESS, "ASK Clock... %d", clock); + } + clock = GetNrzClock("", false); + if (clock > 0) { + PrintAndLogEx(SUCCESS, "NRZ Clock... %d", clock); + } + clock = GetPskClock("", false); + if (clock > 0) { + PrintAndLogEx(SUCCESS, "PSK Clock... %d", clock); + } + return PM3_SUCCESS; } if (a) diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 6aafe3325..a2024a60a 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -1562,30 +1562,34 @@ static int check_autocorrelate(const char *prefix, int clock) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, _CYAN_("%s - auto correlations"), prefix); for (int win = 2000; win < 30000; win += 2000) { - int ans = AutoCorrelate(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen, win, false, false); - if (ans == -1) { + int samples = AutoCorrelate(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen, win, false, false); + if (samples == -1) { continue; } - if (ans > 1) { - PrintAndLogEx(SUCCESS, " " _YELLOW_("%d") " repeating samples", ans); + if ((samples > 1) && (clock > 0)) { // If we got a field clock / bit rate from before - // we can use it for predict number of repeating bytes - // this signal contain. - if (clock > 0) { - int bytes = round( (float)ans / (8 * clock)); - int mod = (bytes % 4); - int blocks = (bytes / 4); + // we can use it for predict number of repeating bytes within - PrintAndLogEx(SUCCESS, " " _YELLOW_("%u") " clock, " _YELLOW_("%d") " bytes repeating", clock, bytes); + int bytes = (samples / (8 * clock)); + int mod = (bytes % 4); + if (mod) + bytes++; - if (mod == 0 && blocks < 7) { - PrintAndLogEx(SUCCESS, " " _YELLOW_("%d") " T5577 block%c needed", (bytes / 4), (mod == 1) ? ' ' : 's'); - } + int blocks = (bytes / 4); + PrintAndLogEx(SUCCESS, " " _YELLOW_("%d") " samples / 8 bits / " _YELLOW_("%d") " clock", samples, clock); + PrintAndLogEx(SUCCESS, " " _YELLOW_("%d") " bytes repeating", bytes); + + if (blocks < 7) { + PrintAndLogEx(SUCCESS, " " _YELLOW_("%d") " block%c", blocks, (blocks == 1) ? ' ' : 's'); + PrintAndLogEx(NORMAL, ""); + return PM3_SUCCESS; + } else { + PrintAndLogEx(INFO, " " _YELLOW_("%d") " blocks ( too large for T5577 )", blocks); + PrintAndLogEx(NORMAL, ""); + return PM3_EFAILED; } - PrintAndLogEx(NORMAL, ""); - return PM3_SUCCESS; } } PrintAndLogEx(NORMAL, ""); @@ -1598,16 +1602,16 @@ int CmdLFfind(const char *Cmd) { CLIParserInit(&ctx, "lf search", "Read and search for valid known tag. For offline mode, you can `data load` first then search.", "lf search -> try reading data from tag & search for known tag\n" - "lf search -1 -> use data from the GraphBuffer & search for known tag\n" "lf search -u -> try reading data from tag & search for known and unknown tag\n" - "lf search -1u -> use data from the GraphBuffer & search for known and unknown tag\n" + "lf search -1 -> use data from the GraphBuffer & search for known tag\n" + "lf search -1uc -> use data from the GraphBuffer & search for known and unknown tag\n" ); void *argtable[] = { arg_param_begin, - arg_lit0("1", NULL, "Use data from Graphbuffer to search"), - arg_lit0("c", NULL, "Continue searching even after a first hit"), - arg_lit0("u", NULL, "Search for unknown tags. If not set, reads only known tags"), + arg_lit0("1", NULL, "Use data from Graphbuffer to search (offline mode)"), + arg_lit0("c", NULL, "Continue searching after successful match"), + arg_lit0("u", NULL, "Search for unknown tags"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -1627,13 +1631,11 @@ int CmdLFfind(const char *Cmd) { } if (search_cont) { - PrintAndLogEx(INFO, "Continuous search enabled"); + PrintAndLogEx(INFO, "Continue searching after successful match"); } PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "NOTE: some demods output possible binary"); - PrintAndLogEx(INFO, "if it finds something that looks like a tag"); - PrintAndLogEx(INFO, "False Positives " _YELLOW_("ARE") " possible"); + PrintAndLogEx(INFO, "Note: False Positives " _YELLOW_("ARE") " possible"); PrintAndLogEx(INFO, ""); PrintAndLogEx(INFO, _CYAN_("Checking for known tags...")); PrintAndLogEx(INFO, ""); @@ -1913,6 +1915,15 @@ int CmdLFfind(const char *Cmd) { // test unknown tag formats (raw mode) PrintAndLogEx(INFO, _CYAN_("Checking for unknown tags...") "\n"); + uint8_t ones[] = { + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + }; + // FSK PrintAndLogEx(INFO, "FSK clock.......... " NOLF); int clock = GetFskClock("", false); @@ -1920,12 +1931,7 @@ int CmdLFfind(const char *Cmd) { PrintAndLogEx(NORMAL, _GREEN_("detected")); if (FSKrawDemod(0, 0, 0, 0, true) == PM3_SUCCESS) { check_autocorrelate("FSK", clock); - - if (search_cont) { - found++; - } else { - goto out; - } + found++; } else { PrintAndLogEx(INFO, "FSK demodulation... " _RED_("failed")); } @@ -1944,12 +1950,7 @@ int CmdLFfind(const char *Cmd) { PrintAndLogEx(INFO, _GREEN_("ASK") " modulation / Manchester encoding detected!"); PrintAndLogEx(INFO, " could also be ASK/Biphase - try " _YELLOW_("'data rawdemod --ab'")); check_autocorrelate("ASK", clock); - - if (search_cont) { - found++; - } else { - goto out; - } + found++; } else { PrintAndLogEx(INFO, "ASK demodulation... " _RED_("failed")); } @@ -1960,15 +1961,18 @@ int CmdLFfind(const char *Cmd) { // NZR PrintAndLogEx(INFO, "NRZ clock.......... " NOLF); clock = GetNrzClock("", false); - if (clock) { + if (clock && clock > 8) { PrintAndLogEx(NORMAL, _GREEN_("detected")); if (NRZrawDemod(0, 0, 0, true) == PM3_SUCCESS) { - check_autocorrelate("NRZ", clock); - if (search_cont) { + int min = MIN(g_DemodBufferLen, sizeof(ones)); + // if demodulated binary is only 1, skip autocorrect + if (memcmp(g_DemodBuffer, ones, min) != 0) { + check_autocorrelate("NRZ", clock); found++; } else { - goto out; + PrintAndLogEx(INFO, "NRZ ............... " _RED_("false positive")); + PrintAndLogEx(NORMAL, ""); } } else { PrintAndLogEx(INFO, "NRZ demodulation... " _RED_("failed")); @@ -1988,12 +1992,7 @@ int CmdLFfind(const char *Cmd) { PrintAndLogEx(INFO, " Could also be PSK3 - [currently not supported]"); PrintAndLogEx(INFO, " Could also be NRZ - try " _YELLOW_("'data rawdemod --nr")); check_autocorrelate("PSK", clock); - - if (search_cont) { - found++; - } else { - goto out; - } + found++; } else { PrintAndLogEx(INFO, "PSK demodulation... " _RED_("failed")); } @@ -2002,7 +2001,7 @@ int CmdLFfind(const char *Cmd) { } if (found == 0) { - PrintAndLogEx(FAILED, _RED_("Failed to determine any modulations or patterns")); + PrintAndLogEx(FAILED, _RED_("Failed to demodulated signal")); } } From 8bb74815b775ce1d1dc7631dff2a0f037b002fc9 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 18 Dec 2023 22:14:51 +0100 Subject: [PATCH 0905/1034] adapted some output --- client/src/cmdhftexkom.c | 2 +- client/src/cmdlfparadox.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhftexkom.c b/client/src/cmdhftexkom.c index 6063e807c..0fa08edc7 100644 --- a/client/src/cmdhftexkom.c +++ b/client/src/cmdhftexkom.c @@ -638,7 +638,7 @@ static int CmdHFTexkomReader(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_lit0("1", NULL, "Use data from Graphbuffer"), + arg_lit0("1", NULL, "Use data from Graphbuffer (offline mode)"), arg_lit0("v", "verbose", "Verbose scan and output"), arg_lit0("@", NULL, "optional - continuous reader mode"), arg_param_end diff --git a/client/src/cmdlfparadox.c b/client/src/cmdlfparadox.c index ad6b42bf8..daa8a350c 100644 --- a/client/src/cmdlfparadox.c +++ b/client/src/cmdlfparadox.c @@ -159,7 +159,7 @@ int demodParadox(bool verbose, bool oldChksum) { // not manchester data if (bits[i] == bits[i + 1]) { - PrintAndLogEx(WARNING, "Error Manchester at %u", i); + PrintAndLogEx(DEBUG, "Error Manchester at %u", i); errors++; } @@ -173,7 +173,7 @@ int demodParadox(bool verbose, bool oldChksum) { } if (errors) { - PrintAndLogEx(WARNING, "Total Manchester Errors... %u", errors); + PrintAndLogEx(DEBUG, "Total Manchester Errors... %u", errors); } setDemodBuff(bits, size, idx); From 0a820bbb67db9d790979fe530b632ec9feccb98b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 18 Dec 2023 22:15:54 +0100 Subject: [PATCH 0906/1034] added some easy test for saflok key generation --- client/src/cmdhfmf.c | 17 +++++++++++++++++ client/src/cmdhfmfu.c | 4 +++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 7d180db7b..32ca91191 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3254,6 +3254,7 @@ static int CmdHF14AMfChk_fast(const char *Cmd) { bool firstChunk = true, lastChunk = false; int i = 0; + // time uint64_t t1 = msclock(); @@ -3288,6 +3289,7 @@ static int CmdHF14AMfChk_fast(const char *Cmd) { // all keys, aborted if (res == PM3_SUCCESS || res == 2) goto out; + } // end chunks of keys firstChunk = true; lastChunk = false; @@ -8906,6 +8908,21 @@ static int CmdHF14AMfInfo(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Keys Information")); + /* + 1. fast check for different KDF here + 2. mew command "hf mf keygen" + + " Vingcard algo"); + PrintAndLogEx(INFO, " Saflok algo"); + PrintAndLogEx(INFO, " SALTO algo"); + uint64_t key = 0; + mfc_algo_saflok_one(uid, 1, 0, &key); + PrintAndLogEx(INFO, " Dorma Kaba algo | %012X" PRIX64, key); + PrintAndLogEx(INFO, " STiD algo"); + PrintAndLogEx(INFO, "-------------------------------------"); + */ + + uint8_t fkey[MIFARE_KEY_SIZE] = {0}; uint8_t fKeyType = 0xff; diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 440e05180..a5f6ac86f 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -3700,7 +3700,9 @@ static int CmdHF14AMfUPwdGen(const char *Cmd) { } PrintAndLogEx(INFO, "--------------------+----------+-----"); PrintAndLogEx(INFO, " Vingcard algo"); - PrintAndLogEx(INFO, " Saflok algo"); + uint64_t key = 0; + mfc_algo_saflok_one(uid, 0, 0, &key); + PrintAndLogEx(INFO, " Saflok algo | %012" PRIX64, key); PrintAndLogEx(INFO, " SALTO algo"); PrintAndLogEx(INFO, " Dorma Kaba algo"); PrintAndLogEx(INFO, " STiD algo"); From 0c675df40dd596f945d7f1a7f58ebf489a085385 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 18 Dec 2023 22:16:13 +0100 Subject: [PATCH 0907/1034] use MIX --- client/src/cmdlfem4x50.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index fdcf48a99..cce348166 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -169,15 +169,15 @@ static void em4x50_seteml(uint8_t *src, uint32_t offset, uint32_t numofbytes) { PrintAndLogEx(INFO, "." NOLF); // fast push mode g_conn.block_after_ACK = true; - for (size_t i = offset; i < numofbytes; i += PM3_CMD_DATA_SIZE) { + for (size_t i = offset; i < numofbytes; i += PM3_CMD_DATA_SIZE_MIX) { - size_t len = MIN((numofbytes - i), PM3_CMD_DATA_SIZE); + size_t len = MIN((numofbytes - i), PM3_CMD_DATA_SIZE_MIX); if (len == numofbytes - i) { // Disable fast mode on last packet g_conn.block_after_ACK = false; } clearCommandBuffer(); - SendCommandOLD(CMD_LF_EM4X50_ESET, i, len, 0, src + i, len); + SendCommandMIX(CMD_LF_EM4X50_ESET, i, len, 0, src + i, len); PrintAndLogEx(NORMAL, "." NOLF); fflush(stdout); } From 2c20c0c6474d8c059e1db12c39ac3adc7cf65cd9 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 18 Dec 2023 22:16:51 +0100 Subject: [PATCH 0908/1034] more debug messages --- client/src/cmddata.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 5b179682b..5a6d897e3 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -862,7 +862,8 @@ int AutoCorrelate(const int *in, int *out, size_t len, size_t window, bool SaveG int distance = -1; for (size_t i = 0; i < ARRAYLEN(peaks); ++i) { - if (peaks[i] < 2) { + PrintAndLogEx(DEBUG, "%zu | %d", i, peaks[i]); + if (peaks[i] < 128) { continue; } From 0eea4e31c4141a787e1f172e87cdea00b14237e8 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 18 Dec 2023 22:18:21 +0100 Subject: [PATCH 0909/1034] fiddling with thinfilm, which suffers in simulation --- armsrc/thinfilm.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/armsrc/thinfilm.c b/armsrc/thinfilm.c index 82db7c7cb..bdc4d7d11 100644 --- a/armsrc/thinfilm.c +++ b/armsrc/thinfilm.c @@ -101,7 +101,7 @@ static int EmSendCmdThinfilmRaw(const uint8_t *resp, uint16_t respLen) { } if (AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_RXRDY)) { - b = (uint16_t)(AT91C_BASE_SSC->SSC_RHR); + b = (uint8_t)(AT91C_BASE_SSC->SSC_RHR); (void)b; } if (BUTTON_PRESS()) break; @@ -121,13 +121,12 @@ static int EmSendCmdThinfilmRaw(const uint8_t *resp, uint16_t respLen) { } void SimulateThinFilm(uint8_t *data, size_t len) { - Dbprintf("Simulate %i-bit Thinfilm tag", len * 8); - Dbhexdump(len, data, true); - int16_t status = PM3_SUCCESS; - CodeThinfilmAsTag(data, len); FpgaDownloadAndGo(FPGA_BITSTREAM_HF); + Dbprintf("Simulate " _YELLOW_("%i-bit Thinfilm") " tag", len * 8); + Dbhexdump(len, data, true); + // Set up the synchronous serial port FpgaSetupSsc(FPGA_MAJOR_MODE_HF_READER); @@ -136,29 +135,38 @@ void SimulateThinFilm(uint8_t *data, size_t len) { FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_ISO14443A | FPGA_HF_ISO14443A_TAGSIM_MOD); SpinDelay(100); + // Start the timer + StartCountSspClk(); uint16_t hf_baseline = ReadReaderField(); - tosend_t *ts = get_tosend(); + int16_t status = PM3_SUCCESS; + CodeThinfilmAsTag(data, len); - // Start the timer - StartCountSspClk(); + tosend_t *ts = get_tosend(); bool reader_detected = false; LED_A_ON(); for (;;) { + WDT_HIT(); + if (BUTTON_PRESS() || data_available()) { status = PM3_EOPABORTED; break; } + uint16_t hf_av = ReadReaderField(); - if (hf_av < hf_baseline) + + if (hf_av < hf_baseline) { hf_baseline = hf_av; + } + if (hf_av > hf_baseline + 10) { EmSendCmdThinfilmRaw(ts->buf, ts->max); - if (!reader_detected) { + + if (reader_detected == false) { LED_B_ON(); //Dbprintf("Reader detected, start beaming data"); reader_detected = true; @@ -166,7 +174,7 @@ void SimulateThinFilm(uint8_t *data, size_t len) { } else { if (reader_detected) { LED_B_OFF(); - //Dbprintf("Reader gone, stop beaming data"); + // Dbprintf("Reader gone, stop beaming data"); reader_detected = false; } } From eb673d27b7a51b3611c938e93f518d7f88a7ab94 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 24 Dec 2023 10:41:53 +0100 Subject: [PATCH 0910/1034] hf mfp dump - still a skeleton command. Need some more love. Fix #2212 --- client/src/cmdhfmfp.c | 46 ++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 868f65aab..2a48f462a 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1675,10 +1675,14 @@ static int CmdHFMFPDump(const char *Cmd) { char key_fn[FILE_PATH_SIZE] = {0}; CLIParamStrToBuf(arg_get_str(ctx, 2), (uint8_t *)key_fn, FILE_PATH_SIZE, &keyfnlen); - bool nosave = arg_get_lit(ctx, 3); - bool verbose = arg_get_lit(ctx, 4); +// bool nosave = arg_get_lit(ctx, 3); +// bool verbose = arg_get_lit(ctx, 4); CLIParserFree(ctx); + PrintAndLogEx(INFO, " To be implemented, feel free to contribute!"); + return PM3_ENOTIMPL; + +/* mfpSetVerboseMode(verbose); // read card @@ -1688,14 +1692,14 @@ static int CmdHFMFPDump(const char *Cmd) { return PM3_EMALLOC; } - /* - iso14a_card_select_t card ; - int res = mfp_read_tag(&card, mem, key_fn); - if (res != PM3_SUCCESS) { - free(mem); - return res; - } - */ + +// iso14a_card_select_t card ; +// int res = mfp_read_tag(&card, mem, key_fn); +// if (res != PM3_SUCCESS) { +// free(mem); +// return res; +// } + // Skip saving card data to file if (nosave) { @@ -1703,23 +1707,21 @@ static int CmdHFMFPDump(const char *Cmd) { free(mem); return PM3_SUCCESS; } - /* + // Save to file - if (strlen(data_fn) < 1) { +// if (strlen(data_fn) < 1) { +// char *fptr = calloc(sizeof(char) * (strlen("hf-mfp-") + strlen("-dump")) + card.uidlen * 2 + 1, sizeof(uint8_t)); +// strcpy(fptr, "hf-mfp-"); +// FillFileNameByUID(fptr, card.uid, "-dump", card.uidlen); +// strcpy(data_fn, fptr); +// free(fptr); +// } - char *fptr = calloc(sizeof(char) * (strlen("hf-mfp-") + strlen("-dump")) + card.uidlen * 2 + 1, sizeof(uint8_t)); - strcpy(fptr, "hf-mfp-"); +// pm3_save_mf_dump(filename, dump, MIFARE_4K_MAX_BYTES, jsfCardMemory); - FillFileNameByUID(fptr, card.uid, "-dump", card.uidlen); - - strcpy(data_fn, fptr); - free(fptr); - } - - pm3_save_mf_dump(filename, dump, MIFARE_4K_MAX_BYTES, jsfCardMemory); - */ free(mem); return PM3_SUCCESS; +*/ } From 417abcbb4c5e9ee64aae3625cf5f70094ce24dbc Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 24 Dec 2023 10:44:46 +0100 Subject: [PATCH 0911/1034] use appropriate return code --- client/src/cmdlfdestron.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdlfdestron.c b/client/src/cmdlfdestron.c index aaca79ff8..0f0b782c5 100644 --- a/client/src/cmdlfdestron.c +++ b/client/src/cmdlfdestron.c @@ -231,7 +231,7 @@ static int CmdDestronSim(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, true); CLIParserFree(ctx); PrintAndLogEx(INFO, " To be implemented, feel free to contribute!"); - return PM3_SUCCESS; + return PM3_ENOTIMPL; } static command_t CommandTable[] = { From a2da1c4a9a33471138919be3df4f16928a3a01ce Mon Sep 17 00:00:00 2001 From: unknown10777 <83267603+unknown10777@users.noreply.github.com> Date: Sun, 24 Dec 2023 22:18:31 +0800 Subject: [PATCH 0912/1034] fix usart btfactory not working for HC-04 --- client/src/cmdusart.c | 116 +++++++++++++++++++++++++++++++----------- 1 file changed, 87 insertions(+), 29 deletions(-) diff --git a/client/src/cmdusart.c b/client/src/cmdusart.c index 0d33ef374..84c9a35c2 100644 --- a/client/src/cmdusart.c +++ b/client/src/cmdusart.c @@ -148,6 +148,10 @@ static int CmdUsartConfig(const char *Cmd) { return set_usart_config(baudrate, parity); } +// module command not universal so specific commands needed if anyone DIY'd their own Blueshark. +bool isBluetoothExtensionHC04 = false; +bool isBluetoothExtensionHC05Blueshark = false; + static int usart_bt_testcomm(uint32_t baudrate, uint8_t parity) { int ret = set_usart_config(baudrate, parity); if (ret != PM3_SUCCESS) @@ -161,10 +165,26 @@ static int usart_bt_testcomm(uint32_t baudrate, uint8_t parity) { // 1000, such large timeout needed ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); - if (ret == PM3_SUCCESS) { + if (ret == PM3_SUCCESS) + { PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); - if (str_startswith((char *)data, "hc01.comV2.0") || str_startswith((char *)data, "BT SPP V3.0")) { + if (str_startswith((char *)data, "hc01.comV2.0") || + str_startswith((char *)data, "www.hc01.com") || + str_startswith((char *)data, "BT SPP V4.0")) + { PrintAndLogEx(SUCCESS, "Add-on " _GREEN_("found!")); + // if it fully match HC-04's attribute + if (str_startswith((char *)data, "www.hc01.com V2.5, 2022-04-26")) + { + isBluetoothExtensionHC04 = true; + PrintAndLogEx(INFO, "Bluetooth module identified as HC-04."); + } + + // if it fully match Blueshark HC-05's attribute + if (str_startswith((char *)data, "hc01.comV2.0")){ + isBluetoothExtensionHC05Blueshark = true; + PrintAndLogEx(INFO, "Bluetooth module identified as Blueshark HC-05."); + } return PM3_SUCCESS; } } @@ -236,7 +256,7 @@ static int CmdUsartBtFactory(const char *Cmd) { } if (!found) { - PrintAndLogEx(FAILED, "Sorry, add-on not found. Abort."); + PrintAndLogEx(FAILED, "Sorry, add-on not found. Abort. If you DIY'd your own, please report your model and manual to us."); return PM3_ESOFT; } @@ -246,13 +266,18 @@ static int CmdUsartBtFactory(const char *Cmd) { size_t len = 0; memset(data, 0, sizeof(data)); - string = "AT+NAMEPM3_RDV4.0"; + if (isBluetoothExtensionHC04 == true) { + string = "AT+NAME=PM3_RDV4.0"; + } else { + string = "AT+NAMEPM3_RDV4.0"; + } + PrintAndLogEx(SUCCESS, "TX (%3zu):%.*s", strlen(string), (int)strlen(string), string); int ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); if (ret == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); - if (strcmp((char *)data, "OKsetname") == 0) { + if (strstr((char *)data, "OK")) { PrintAndLogEx(SUCCESS, "Name set to " _GREEN_("PM3_RDV4.0")); } else { PrintAndLogEx(WARNING, "Unexpected response to AT+NAME: " _YELLOW_("%.*s"), (int)len, data); @@ -262,6 +287,8 @@ static int CmdUsartBtFactory(const char *Cmd) { return PM3_ESOFT; } + msleep(500); + memset(data, 0, sizeof(data)); len = 0; string = "AT+ROLE=S"; @@ -270,7 +297,7 @@ static int CmdUsartBtFactory(const char *Cmd) { ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); if (ret == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); - if (strcmp((char *)data, "OK+ROLE:S") == 0) { + if (strstr((char *)data, "OK")) { PrintAndLogEx(SUCCESS, "Role set to " _GREEN_("Slave")); } else { PrintAndLogEx(WARNING, "Unexpected response to AT+ROLE=S: " _YELLOW_("%.*s"), (int)len, data); @@ -280,15 +307,23 @@ static int CmdUsartBtFactory(const char *Cmd) { return PM3_ESOFT; } + msleep(500); + memset(data, 0, sizeof(data)); len = 0; - string = "AT+PIN1234"; + + if (isBluetoothExtensionHC04 == true) { + string = "AT+PIN=1234"; + } else { + string = "AT+PIN1234"; + } + PrintAndLogEx(SUCCESS, "TX (%3zu):%.*s", strlen(string), (int)strlen(string), string); ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); if (ret == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); - if (strcmp((char *)data, "OKsetPIN") == 0) { + if (strcmp((char *)data, "OK")) { PrintAndLogEx(SUCCESS, "PIN set to " _GREEN_("1234")); } else { PrintAndLogEx(WARNING, "Unexpected response to AT+PIN: " _YELLOW_("%.*s"), (int)len, data); @@ -298,38 +333,61 @@ static int CmdUsartBtFactory(const char *Cmd) { return PM3_ESOFT; } - // parity must be changed before baudrate - if (parity != USART_PARITY) { - memset(data, 0, sizeof(data)); - len = 0; - string = "AT+PN"; - PrintAndLogEx(SUCCESS, "TX (%3zu):%.*s", strlen(string), (int)strlen(string), string); + msleep(500); + + if (isBluetoothExtensionHC04 != true) { + // parity must be changed before baudrate + if (parity != USART_PARITY) { + memset(data, 0, sizeof(data)); + len = 0; + string = "AT+PN"; + PrintAndLogEx(SUCCESS, "TX (%3zu):%.*s", strlen(string), (int)strlen(string), string); - ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); - if (ret == PM3_SUCCESS) { - PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); - if (strcmp((char *)data, "OK None") == 0) { - PrintAndLogEx(SUCCESS, "Parity set to " _GREEN_("None")); + ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); + if (ret == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); + if (strcmp((char *)data, "OK None") == 0) { + PrintAndLogEx(SUCCESS, "Parity set to " _GREEN_("None")); + } else { + PrintAndLogEx(WARNING, "Unexpected response to AT+P: " _YELLOW_("%.*s"), (int)len, data); + } } else { - PrintAndLogEx(WARNING, "Unexpected response to AT+P: " _YELLOW_("%.*s"), (int)len, data); + PrintAndLogEx(WARNING, "Lost contact with add-on, please try again"); + return PM3_ESOFT; } - } else { - PrintAndLogEx(WARNING, "Lost contact with add-on, please try again"); - return PM3_ESOFT; } - } - if (baudrate != USART_BAUD_RATE) { + if (baudrate != USART_BAUD_RATE) { + memset(data, 0, sizeof(data)); + len = 0; + string = BTADDON_BAUD_AT; + PrintAndLogEx(SUCCESS, "TX (%3zu):%.*s", strlen(string), (int)strlen(string), string); + + ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); + if (ret == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); + if (strcmp((char *)data, "OK" BTADDON_BAUD_NUM) == 0) { + PrintAndLogEx(SUCCESS, "Baudrate set to " _GREEN_(BTADDON_BAUD_NUM)); + } else { + PrintAndLogEx(WARNING, "Unexpected response to AT+BAUD: " _YELLOW_("%.*s"), (int)len, data); + } + } else { + PrintAndLogEx(WARNING, "Lost contact with add-on, please try again"); + return PM3_ESOFT; + } + } + } else { + memset(data, 0, sizeof(data)); - len = 0; - string = BTADDON_BAUD_AT; + len=0; + string = "AT+BAUD=115200,N"; PrintAndLogEx(SUCCESS, "TX (%3zu):%.*s", strlen(string), (int)strlen(string), string); ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); if (ret == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); - if (strcmp((char *)data, "OK" BTADDON_BAUD_NUM) == 0) { - PrintAndLogEx(SUCCESS, "Baudrate set to " _GREEN_(BTADDON_BAUD_NUM)); + if (strcmp((char *)data, "OK")) { + PrintAndLogEx(SUCCESS, "Parity set to " _GREEN_("None") "and Baudrate set to " _GREEN_("115200")); } else { PrintAndLogEx(WARNING, "Unexpected response to AT+BAUD: " _YELLOW_("%.*s"), (int)len, data); } From f13970ef7446b9a67514e8790cca5e866d065771 Mon Sep 17 00:00:00 2001 From: unknown10777 <83267603+unknown10777@users.noreply.github.com> Date: Sun, 24 Dec 2023 22:24:18 +0800 Subject: [PATCH 0913/1034] typo --- client/src/cmdusart.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdusart.c b/client/src/cmdusart.c index 84c9a35c2..a356834cd 100644 --- a/client/src/cmdusart.c +++ b/client/src/cmdusart.c @@ -334,7 +334,7 @@ static int CmdUsartBtFactory(const char *Cmd) { } msleep(500); - + if (isBluetoothExtensionHC04 != true) { // parity must be changed before baudrate if (parity != USART_PARITY) { @@ -387,7 +387,7 @@ static int CmdUsartBtFactory(const char *Cmd) { if (ret == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); if (strcmp((char *)data, "OK")) { - PrintAndLogEx(SUCCESS, "Parity set to " _GREEN_("None") "and Baudrate set to " _GREEN_("115200")); + PrintAndLogEx(SUCCESS, "Parity set to " _GREEN_("None") " and Baudrate set to " _GREEN_("115200")); } else { PrintAndLogEx(WARNING, "Unexpected response to AT+BAUD: " _YELLOW_("%.*s"), (int)len, data); } From ecce0e65023daf085fcac6eeedc73a852cadf832 Mon Sep 17 00:00:00 2001 From: unknown10777 <83267603+unknown10777@users.noreply.github.com> Date: Mon, 25 Dec 2023 01:31:18 +0800 Subject: [PATCH 0914/1034] some not match original code spacing --- client/src/cmdusart.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/client/src/cmdusart.c b/client/src/cmdusart.c index a356834cd..755205966 100644 --- a/client/src/cmdusart.c +++ b/client/src/cmdusart.c @@ -165,23 +165,22 @@ static int usart_bt_testcomm(uint32_t baudrate, uint8_t parity) { // 1000, such large timeout needed ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); - if (ret == PM3_SUCCESS) - { + if (ret == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); if (str_startswith((char *)data, "hc01.comV2.0") || str_startswith((char *)data, "www.hc01.com") || - str_startswith((char *)data, "BT SPP V4.0")) - { + str_startswith((char *)data, "BT SPP V4.0")) { + PrintAndLogEx(SUCCESS, "Add-on " _GREEN_("found!")); + // if it fully match HC-04's attribute - if (str_startswith((char *)data, "www.hc01.com V2.5, 2022-04-26")) - { + if (str_startswith((char *)data, "www.hc01.com V2.5, 2022-04-26")) { isBluetoothExtensionHC04 = true; PrintAndLogEx(INFO, "Bluetooth module identified as HC-04."); } // if it fully match Blueshark HC-05's attribute - if (str_startswith((char *)data, "hc01.comV2.0")){ + if (str_startswith((char *)data, "hc01.comV2.0")) { isBluetoothExtensionHC05Blueshark = true; PrintAndLogEx(INFO, "Bluetooth module identified as Blueshark HC-05."); } From 5e06656580fde18e7389f762f9838db0d1b2c282 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 25 Dec 2023 15:25:05 +0100 Subject: [PATCH 0915/1034] fixed some overflows when debug printing client side when emrtd dump/info --- client/src/cmdhfemrtd.c | 48 ++++++++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/client/src/cmdhfemrtd.c b/client/src/cmdhfemrtd.c index a4c934e71..5b9482381 100644 --- a/client/src/cmdhfemrtd.c +++ b/client/src/cmdhfemrtd.c @@ -49,6 +49,8 @@ // App IDs #define EMRTD_AID_MRTD {0xA0, 0x00, 0x00, 0x02, 0x47, 0x10, 0x01} +#define EMRTD_KMAC_LEN 16 + // DESKey Types static const uint8_t KENC_type[4] = {0x00, 0x00, 0x00, 0x01}; static const uint8_t KMAC_type[4] = {0x00, 0x00, 0x00, 0x02}; @@ -511,7 +513,7 @@ static bool _emrtd_secure_read_binary(uint8_t *kmac, uint8_t *ssc, int offset, i uint8_t data[21] = { 0x00 }; uint8_t temp[8] = {0x0c, 0xb0}; - PrintAndLogEx(DEBUG, "kmac: %s", sprint_hex_inrow(kmac, 20)); + PrintAndLogEx(DEBUG, "kmac: %s", sprint_hex_inrow(kmac, EMRTD_KMAC_LEN)); // Set p1 and p2 temp[2] = (uint8_t)(offset >> 8); @@ -531,15 +533,15 @@ static bool _emrtd_secure_read_binary(uint8_t *kmac, uint8_t *ssc, int offset, i uint8_t n[19] = { 0x00 }; memcpy(n, ssc, 8); memcpy(n + 8, m, 11); - PrintAndLogEx(DEBUG, "n: %s", sprint_hex_inrow(n, 19)); + PrintAndLogEx(DEBUG, "n: %s", sprint_hex_inrow(n, sizeof(n))); uint8_t cc[8] = { 0x00 }; retail_mac(kmac, n, 19, cc); - PrintAndLogEx(DEBUG, "cc: %s", sprint_hex_inrow(cc, 8)); + PrintAndLogEx(DEBUG, "cc: %s", sprint_hex_inrow(cc, sizeof(cc))); uint8_t do8e[10] = {0x8E, 0x08}; memcpy(do8e + 2, cc, 8); - PrintAndLogEx(DEBUG, "do8e: %s", sprint_hex_inrow(do8e, 10)); + PrintAndLogEx(DEBUG, "do8e: %s", sprint_hex_inrow(do8e, sizeof(do8e))); int lc = 13; PrintAndLogEx(DEBUG, "lc: %i", lc); @@ -1021,8 +1023,8 @@ int dumpHF_EMRTD(char *documentnumber, char *dob, char *expiry, bool BAC_availab uint8_t response[EMRTD_MAX_FILE_SIZE] = { 0x00 }; size_t resplen = 0; uint8_t ssc[8] = { 0x00 }; - uint8_t ks_enc[16] = { 0x00 }; - uint8_t ks_mac[16] = { 0x00 }; + uint8_t ks_enc[EMRTD_KMAC_LEN] = { 0x00 }; + uint8_t ks_mac[EMRTD_KMAC_LEN] = { 0x00 }; bool BAC = false; // Select the eMRTD @@ -1282,18 +1284,40 @@ static void emrtd_print_issuance(char *data, bool ascii) { PrintAndLogEx(SUCCESS, "Date of issue.........: " _YELLOW_("%s"), final_date); } -static void emrtd_print_personalization_timestamp(uint8_t *data) { +static void emrtd_print_personalization_timestamp(uint8_t *data, size_t datalen) { + if (datalen < 7 ) { + return; + } + char str_date[0x0F] = { 0x00 }; strncpy(str_date, sprint_hex_inrow(data, 0x07), sizeof(str_date) - 1); + char final_date[20] = { 0x00 }; - snprintf(final_date, sizeof(final_date), "%.4s-%.2s-%.2s %.2s:%.2s:%.2s", str_date, str_date + 4, str_date + 6, str_date + 8, str_date + 10, str_date + 12); + snprintf(final_date, sizeof(final_date), "%.4s-%.2s-%.2s %.2s:%.2s:%.2s" + , str_date + , str_date + 4 + , str_date + 6 + , str_date + 8 + , str_date + 10 + , str_date + 12 + ); PrintAndLogEx(SUCCESS, "Personalization at....: " _YELLOW_("%s"), final_date); } -static void emrtd_print_unknown_timestamp_5f85(uint8_t *data) { +static void emrtd_print_unknown_timestamp_5f85(uint8_t *data, size_t datalen) { + if (datalen < 14) { + return; + } char final_date[20] = { 0x00 }; - snprintf(final_date, sizeof(final_date), "%.4s-%.2s-%.2s %.2s:%.2s:%.2s", data, data + 4, data + 6, data + 8, data + 10, data + 12); + snprintf(final_date, sizeof(final_date), "%.4s-%.2s-%.2s %.2s:%.2s:%.2s" + , data + , data + 4 + , data + 6 + , data + 8 + , data + 10 + , data + 12 + ); PrintAndLogEx(SUCCESS, "Unknown timestamp 5F85: " _YELLOW_("%s"), final_date); PrintAndLogEx(HINT, "This is very likely the personalization timestamp, but it is using an undocumented tag."); @@ -1588,13 +1612,13 @@ static int emrtd_print_ef_dg12_info(uint8_t *data, size_t datalen) { saveFile("BackOfDocument", tagdata[0] == 0xFF ? ".jpg" : ".jp2", tagdata, tagdatalen); break; case 0x55: - emrtd_print_personalization_timestamp(tagdata); + emrtd_print_personalization_timestamp(tagdata, tagdatalen); break; case 0x56: PrintAndLogEx(SUCCESS, "Serial of Personalization System: " _YELLOW_("%.*s"), (int)tagdatalen, tagdata); break; case 0x85: - emrtd_print_unknown_timestamp_5f85(tagdata); + emrtd_print_unknown_timestamp_5f85(tagdata, tagdatalen); break; default: PrintAndLogEx(SUCCESS, "Unknown Field %02X%02X....: %s", taglist[i], taglist[i + 1], sprint_hex_inrow(tagdata, tagdatalen)); From 8f9f86dfbbcdd72b9675ddfde22d74d065ce322a Mon Sep 17 00:00:00 2001 From: n-hutton <nathan.cameron.hutton@gmail.com> Date: Mon, 25 Dec 2023 22:58:33 +0000 Subject: [PATCH 0916/1034] Add a note on building in a docker image instead --- doc/fpga_arm_notes.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/fpga_arm_notes.md b/doc/fpga_arm_notes.md index 4271f5790..1f00dcfb9 100644 --- a/doc/fpga_arm_notes.md +++ b/doc/fpga_arm_notes.md @@ -69,6 +69,15 @@ There is very rarely changes to the images so there is no need to setup a fpga t Since the FPGA is very old, the Xilinx WebPack ISE 10.1 is the last working tool chain. You can download this legacy development on Xilinx and register for a free product installation id. Or use mine `11LTAJ5ZJK3PXTUBMF0C0J6C4` The package to download is about 7Gb and linux based. Though I recently managed to install it on WSL for Windows 10. +There is a docker image with webpack built in which has been built which you can use to easily compile the images: + +``` +docker pull nhutton/prox-container:webp_image_complete +docker run -v <LOCAL_PATH>/proxmark3:/tmp --rm -it nhutton/prox-container:webp_image_complete bash +$ cd /tmp/proxmark/fpga +$ make all +``` + In order to save space, these fpga images are LZ4 compressed and included in the fullimage.elf file when compiling the ARM SRC. `make armsrc` This means we save some precious space on the ARM but its a bit more complex when flashing to fpga since it has to decompress on the fly. From d04b936e2ff7cd2bd45bb83b72eccb267564809c Mon Sep 17 00:00:00 2001 From: n-hutton <nathan.cameron.hutton@gmail.com> Date: Mon, 25 Dec 2023 23:16:15 +0000 Subject: [PATCH 0917/1034] Update fpga_arm_notes.md Signed-off-by: n-hutton <nathan.cameron.hutton@gmail.com> --- doc/fpga_arm_notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/fpga_arm_notes.md b/doc/fpga_arm_notes.md index 1f00dcfb9..b54472c2b 100644 --- a/doc/fpga_arm_notes.md +++ b/doc/fpga_arm_notes.md @@ -69,7 +69,7 @@ There is very rarely changes to the images so there is no need to setup a fpga t Since the FPGA is very old, the Xilinx WebPack ISE 10.1 is the last working tool chain. You can download this legacy development on Xilinx and register for a free product installation id. Or use mine `11LTAJ5ZJK3PXTUBMF0C0J6C4` The package to download is about 7Gb and linux based. Though I recently managed to install it on WSL for Windows 10. -There is a docker image with webpack built in which has been built which you can use to easily compile the images: +There is a docker image with webpack installed which has been built which you can use to easily compile the images: ``` docker pull nhutton/prox-container:webp_image_complete From ecec001fdd0946d6614751a5401abf920fd183d0 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Mon, 25 Dec 2023 23:50:34 +0800 Subject: [PATCH 0918/1034] Put uart_bind() into uart_common.c --- client/CMakeLists.txt | 1 + client/Makefile | 1 + client/experimental_lib/CMakeLists.txt | 1 + client/src/uart/uart_common.c | 74 ++++++++++++++++++++++++++ client/src/uart/uart_posix.c | 34 +----------- client/src/uart/uart_win32.c | 34 +----------- include/pm3_cmd.h | 2 +- 7 files changed, 81 insertions(+), 66 deletions(-) create mode 100644 client/src/uart/uart_common.c diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index f14b2d50f..d92c15fbe 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -288,6 +288,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/mifare/desfiretest.c ${PM3_ROOT}/client/src/mifare/gallaghercore.c ${PM3_ROOT}/client/src/uart/ringbuffer.c + ${PM3_ROOT}/client/src/uart/uart_common.c ${PM3_ROOT}/client/src/uart/uart_posix.c ${PM3_ROOT}/client/src/uart/uart_win32.c ${PM3_ROOT}/client/src/ui/overlays.ui diff --git a/client/Makefile b/client/Makefile index 6534f27a0..fc0dedb82 100644 --- a/client/Makefile +++ b/client/Makefile @@ -713,6 +713,7 @@ SRCS = mifare/aiddesfire.c \ proxmark3.c \ scandir.c \ uart/ringbuffer.c \ + uart/uart_common.c \ uart/uart_posix.c \ uart/uart_win32.c \ scripting.c \ diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 9dae9d64b..15a74d38c 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -289,6 +289,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/mifare/desfiretest.c ${PM3_ROOT}/client/src/mifare/gallaghercore.c ${PM3_ROOT}/client/src/uart/ringbuffer.c + ${PM3_ROOT}/client/src/uart/uart_common.c ${PM3_ROOT}/client/src/uart/uart_posix.c ${PM3_ROOT}/client/src/uart/uart_win32.c ${PM3_ROOT}/client/src/ui/overlays.ui diff --git a/client/src/uart/uart_common.c b/client/src/uart/uart_common.c new file mode 100644 index 000000000..af439699a --- /dev/null +++ b/client/src/uart/uart_common.c @@ -0,0 +1,74 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// Generic uart / rs232/ serial port library +//----------------------------------------------------------------------------- + +#include "uart.h" + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "comms.h" +#include "ui.h" + +#ifdef _WIN32 +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#include <winsock2.h> +#include <ws2tcpip.h> +#else +#include <netinet/tcp.h> +#include <arpa/inet.h> +#include <netdb.h> +#include <sys/socket.h> +#include <sys/un.h> +#endif + +bool uart_bind(void *socket, char *bindAddrStr, char *bindPortStr, bool isBindingIPv6) { + if (bindAddrStr == NULL && bindPortStr == NULL) + return true; // no need to bind + + struct sockaddr_storage bindSockaddr; + memset(&bindSockaddr, 0, sizeof(bindSockaddr)); + int bindPort = 0; // 0: port unspecified + if (bindPortStr != NULL) + bindPort = atoi(bindPortStr); + + if (!isBindingIPv6) { + struct sockaddr_in *bindSockaddr4 = (struct sockaddr_in *)&bindSockaddr; + bindSockaddr4->sin_family = AF_INET; + bindSockaddr4->sin_port = htons(bindPort); + if (bindAddrStr == NULL) + bindSockaddr4->sin_addr.s_addr = INADDR_ANY; + else + bindSockaddr4->sin_addr.s_addr = inet_addr(bindAddrStr); + } else { + struct sockaddr_in6 *bindSockaddr6 = (struct sockaddr_in6 *)&bindSockaddr; + bindSockaddr6->sin6_family = AF_INET6; + bindSockaddr6->sin6_port = htons(bindPort); + if (bindAddrStr == NULL) + bindSockaddr6->sin6_addr = in6addr_any; + else + inet_pton(AF_INET6, bindAddrStr, &(bindSockaddr6->sin6_addr)); + } +#ifdef _WIN32 + int res = bind(*(SOCKET *)socket, (struct sockaddr *)&bindSockaddr, sizeof(bindSockaddr)); +#else + int res = bind(*(int *)socket, (struct sockaddr *)&bindSockaddr, sizeof(bindSockaddr)); +#endif + return (res >= 0); +} \ No newline at end of file diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index 588e9ae90..267e0fe43 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -106,6 +106,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { free(prefix); if (strlen(pcPortName) <= 4) { + PrintAndLogEx(ERR, "error: tcp port name length too short"); free(sp); return INVALID_SERIAL_PORT; } @@ -297,6 +298,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { free(prefix); if (strlen(pcPortName) <= 4) { + PrintAndLogEx(ERR, "error: udp port name length too short"); free(sp); return INVALID_SERIAL_PORT; } @@ -996,36 +998,4 @@ uint32_t uart_get_speed(const serial_port sp) { return uiPortSpeed; } -bool uart_bind(void *socket, char *bindAddrStr, char *bindPortStr, bool isBindingIPv6) { - if (bindAddrStr == NULL && bindPortStr == NULL) - return true; // no need to bind - - struct sockaddr_storage bindSockaddr; - memset(&bindSockaddr, 0, sizeof(bindSockaddr)); - int bindPort = 0; // 0: port unspecified - if (bindPortStr != NULL) - bindPort = atoi(bindPortStr); - - if (!isBindingIPv6) { - struct sockaddr_in *bindSockaddr4 = (struct sockaddr_in *)&bindSockaddr; - bindSockaddr4->sin_family = AF_INET; - bindSockaddr4->sin_port = htons(bindPort); - if (bindAddrStr == NULL) - bindSockaddr4->sin_addr.s_addr = INADDR_ANY; - else - bindSockaddr4->sin_addr.s_addr = inet_addr(bindAddrStr); - } else { - struct sockaddr_in6 *bindSockaddr6 = (struct sockaddr_in6 *)&bindSockaddr; - bindSockaddr6->sin6_family = AF_INET6; - bindSockaddr6->sin6_port = htons(bindPort); - if (bindAddrStr == NULL) - bindSockaddr6->sin6_addr = in6addr_any; - else - inet_pton(AF_INET6, bindAddrStr, &(bindSockaddr6->sin6_addr)); - } - - int res = bind(*(int *)socket, (struct sockaddr *)&bindSockaddr, sizeof(bindSockaddr)); - return (res >= 0); -} - #endif diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index 43299ca5a..f91a69290 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -314,7 +314,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { free(prefix); if (strlen(pcPortName) <= 4) { - PrintAndLogEx(ERR, "error: tcp port name length too short"); + PrintAndLogEx(ERR, "error: udp port name length too short"); free(sp); return INVALID_SERIAL_PORT; } @@ -780,36 +780,4 @@ int uart_send(const serial_port sp, const uint8_t *p_tx, const uint32_t len) { } } -bool uart_bind(void *socket, char *bindAddrStr, char *bindPortStr, bool isBindingIPv6) { - if (bindAddrStr == NULL && bindPortStr == NULL) - return true; // no need to bind - - struct sockaddr_storage bindSockaddr; - memset(&bindSockaddr, 0, sizeof(bindSockaddr)); - int bindPort = 0; // 0: port unspecified - if (bindPortStr != NULL) - bindPort = atoi(bindPortStr); - - if (!isBindingIPv6) { - struct sockaddr_in *bindSockaddr4 = (struct sockaddr_in *)&bindSockaddr; - bindSockaddr4->sin_family = AF_INET; - bindSockaddr4->sin_port = htons(bindPort); - if (bindAddrStr == NULL) - bindSockaddr4->sin_addr.s_addr = INADDR_ANY; - else - bindSockaddr4->sin_addr.s_addr = inet_addr(bindAddrStr); - } else { - struct sockaddr_in6 *bindSockaddr6 = (struct sockaddr_in6 *)&bindSockaddr; - bindSockaddr6->sin6_family = AF_INET6; - bindSockaddr6->sin6_port = htons(bindPort); - if (bindAddrStr == NULL) - bindSockaddr6->sin6_addr = in6addr_any; - else - inet_pton(AF_INET6, bindAddrStr, &(bindSockaddr6->sin6_addr)); - } - - int res = bind(*(SOCKET *)socket, (struct sockaddr *)&bindSockaddr, sizeof(bindSockaddr)); - return (res >= 0); -} - #endif diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index 33803857d..abee08bb2 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -842,7 +842,7 @@ typedef struct { // all zero's configure: no timeout for read/write used. // took settings from libnfc/buses/uart.c -// uart_windows.c & uart_posix.c +// uart_win32.c & uart_posix.c # define UART_FPC_CLIENT_RX_TIMEOUT_MS 200 # define UART_USB_CLIENT_RX_TIMEOUT_MS 20 # define UART_NET_CLIENT_RX_TIMEOUT_MS 500 From 81780bd1644a612b142e6aae5823612f1dcf59e6 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 26 Dec 2023 12:00:28 +0800 Subject: [PATCH 0919/1034] Add uart_parse_address_port() --- client/src/uart/uart.h | 7 +- client/src/uart/uart_common.c | 62 ++++++++- client/src/uart/uart_posix.c | 233 +++++++++------------------------- client/src/uart/uart_win32.c | 232 +++++++++------------------------ 4 files changed, 183 insertions(+), 351 deletions(-) diff --git a/client/src/uart/uart.h b/client/src/uart/uart.h index 954fa6685..cb67d7482 100644 --- a/client/src/uart/uart.h +++ b/client/src/uart/uart.h @@ -84,6 +84,11 @@ uint32_t uart_get_timeouts(void); /* Specify the outbound address and port for TCP/UDP connections */ -bool uart_bind(void *socket, char *bindAddrStr, char *bindPortStr, bool isBindingIPv6); +bool uart_bind(void *socket, const char *bindAddrStr, const char *bindPortStr, bool isBindingIPv6); + +/* Parse address and port from string. + This could change the addrPortStr + */ +int uart_parse_address_port(char *addrPortStr, const char **addrStr, const char **portStr, bool *isIPv6); #endif // _UART_H_ diff --git a/client/src/uart/uart_common.c b/client/src/uart/uart_common.c index af439699a..3e7fc5fb5 100644 --- a/client/src/uart/uart_common.c +++ b/client/src/uart/uart_common.c @@ -38,7 +38,7 @@ #include <sys/un.h> #endif -bool uart_bind(void *socket, char *bindAddrStr, char *bindPortStr, bool isBindingIPv6) { +bool uart_bind(void *socket, const char *bindAddrStr, const char *bindPortStr, bool isBindingIPv6) { if (bindAddrStr == NULL && bindPortStr == NULL) return true; // no need to bind @@ -71,4 +71,64 @@ bool uart_bind(void *socket, char *bindAddrStr, char *bindPortStr, bool isBindin int res = bind(*(int *)socket, (struct sockaddr *)&bindSockaddr, sizeof(bindSockaddr)); #endif return (res >= 0); +} + +int uart_parse_address_port(char *addrPortStr, const char **addrStr, const char **portStr, bool *isIPv6) { + + if (addrPortStr == NULL || addrStr == NULL || portStr == NULL) { + return PM3_EINVARG; + } + + *addrStr = addrPortStr; + *portStr = NULL; + + // find the start of the address + char *endBracket = strrchr(addrPortStr, ']'); + if (addrPortStr[0] == '[') { + *addrStr += 1; + if (endBracket == NULL) { + // [] unmatched + return PM3_ESOFT; + } + } + + if (isIPv6 != NULL) { + // Assume v4 + *isIPv6 = false; + } + + // find the port + char *lColon = strchr(addrPortStr, ':'); + char *rColon = strrchr(addrPortStr, ':'); + if (rColon == NULL) { + // no colon + // "<ipv4 address>", "[<ipv4 address>]" + *portStr = NULL; + } else if (lColon == rColon) { + // only one colon + // "<ipv4 address>:<port>", "[<ipv4 address>]:<port>" + *portStr = rColon + 1; + } else { + // two or more colon, IPv6 address + // "[<ipv6 address>]:<port>" + // "<ipv6 address>", "[<ipv6 address>]" + if (endBracket != NULL && rColon == endBracket + 1) { + *portStr = rColon + 1; + } else { + *portStr = NULL; + } + + if (isIPv6 != NULL) { + *isIPv6 = true; + } + } + + // handle the end of the address + if (endBracket != NULL) { + *endBracket = '\0'; + } else if (rColon != NULL && lColon == rColon) { + *rColon = '\0'; + } + + return PM3_SUCCESS; } \ No newline at end of file diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index 267e0fe43..ee94fc31f 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -114,8 +114,6 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { struct addrinfo *addr = NULL, *rp; char *addrPortStr = str_dup(pcPortName + 4); - char *addrstr = addrPortStr; - const char *portstr; if (addrPortStr == NULL) { PrintAndLogEx(ERR, "error: string duplication"); free(sp); @@ -126,54 +124,24 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { // find the "bind" option char *bindAddrPortStr = strstr(addrPortStr, ",bind="); - char *bindAddrStr = NULL; - char *bindPortStr = NULL; - bool isBindingIPv6 = false; // Assume v4 + const char *bindAddrStr = NULL; + const char *bindPortStr = NULL; + bool isBindingIPv6 = false; + if (bindAddrPortStr != NULL) { *bindAddrPortStr = '\0'; // as the end of target address (and port) - bindAddrPortStr += 6; - bindAddrStr = bindAddrPortStr; + bindAddrPortStr += 6; // strlen(",bind=") - // find the start of the bind address - char *endBracket = strrchr(bindAddrPortStr, ']'); - if (bindAddrPortStr[0] == '[') { - bindAddrStr += 1; - if (endBracket == NULL) { + int result = uart_parse_address_port(bindAddrPortStr, &bindAddrStr, &bindPortStr, &isBindingIPv6); + if (result != PM3_SUCCESS) { + if (result == PM3_ESOFT) { PrintAndLogEx(ERR, "error: wrong address: [] unmatched in bind option"); - free(addrPortStr); - free(sp); - return INVALID_SERIAL_PORT; - } - } - - // find the bind port - char *lColon = strchr(bindAddrPortStr, ':'); - char *rColon = strrchr(bindAddrPortStr, ':'); - if (rColon == NULL) { - // no colon - // ",bind=<ipv4 address>", ",bind=[<ipv4 address>]" - bindPortStr = NULL; - } else if (lColon == rColon) { - // only one colon - // ",bind=<ipv4 address>:<port>", ",bind=[<ipv4 address>]:<port>" - bindPortStr = rColon + 1; - } else { - // two or more colon, IPv6 address - // ",bind=[<ipv6 address>]:<port>" - // ",bind=<ipv6 address>", ",bind=[<ipv6 address>]" - if (endBracket != NULL && rColon == endBracket + 1) { - bindPortStr = rColon + 1; } else { - bindPortStr = NULL; + PrintAndLogEx(ERR, "error: failed to parse address and port in bind option"); } - isBindingIPv6 = true; - } - - // handle the end of the bind address - if (endBracket != NULL) { - *endBracket = '\0'; - } else if (rColon != NULL && lColon == rColon) { - *rColon = '\0'; + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; } // for bind option, it's possible to only specify address or port @@ -183,51 +151,24 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { bindPortStr = NULL; } - // find the start of the address - char *endBracket = strrchr(addrPortStr, ']'); - if (addrPortStr[0] == '[') { - addrstr += 1; - if (endBracket == NULL) { + const char *addrStr = NULL; + const char *portStr = NULL; + bool isIPv6 = false; + + int result = uart_parse_address_port(addrPortStr, &addrStr, &portStr, &isIPv6); + if (result != PM3_SUCCESS) { + if (result == PM3_ESOFT) { PrintAndLogEx(ERR, "error: wrong address: [] unmatched"); - free(addrPortStr); - free(sp); - return INVALID_SERIAL_PORT; - } - } - - - // assume v4 - g_conn.send_via_ip = PM3_TCPv4; - - // find the port - char *lColon = strchr(addrPortStr, ':'); - char *rColon = strrchr(addrPortStr, ':'); - if (rColon == NULL) { - // no colon - // "tcp:<ipv4 address>", "tcp:[<ipv4 address>]" - portstr = "18888"; - } else if (lColon == rColon) { - // only one colon - // "tcp:<ipv4 address>:<port>", "tcp:[<ipv4 address>]:<port>" - portstr = rColon + 1; - } else { - // two or more colon, IPv6 address - // "tcp:[<ipv6 address>]:<port>" - // "tcp:<ipv6 address>", "tcp:[<ipv6 address>]" - if (endBracket != NULL && rColon == endBracket + 1) { - portstr = rColon + 1; } else { - portstr = "18888"; + PrintAndLogEx(ERR, "error: failed to parse address and port"); } - g_conn.send_via_ip = PM3_TCPv6; + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; } - // handle the end of the address - if (endBracket != NULL) { - *endBracket = '\0'; - } else if (rColon != NULL && lColon == rColon) { - *rColon = '\0'; - } + g_conn.send_via_ip = isIPv6 ? PM3_TCPv6 : PM3_TCPv4; + portStr = (portStr == NULL) ? "18888" : portStr; struct addrinfo info; @@ -236,13 +177,13 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { info.ai_family = PF_UNSPEC; info.ai_socktype = SOCK_STREAM; - if ((strstr(addrstr, "localhost") != NULL) || - (strstr(addrstr, "127.0.0.1") != NULL) || - (strstr(addrstr, "::1") != NULL)) { + if ((strstr(addrStr, "localhost") != NULL) || + (strstr(addrStr, "127.0.0.1") != NULL) || + (strstr(addrStr, "::1") != NULL)) { g_conn.send_via_local_ip = true; } - int s = getaddrinfo(addrstr, portstr, &info, &addr); + int s = getaddrinfo(addrStr, portStr, &info, &addr); if (s != 0) { PrintAndLogEx(ERR, "error: getaddrinfo: %s", gai_strerror(s)); freeaddrinfo(addr); @@ -306,8 +247,6 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { struct addrinfo *addr = NULL, *rp; char *addrPortStr = str_dup(pcPortName + 4); - char *addrstr = addrPortStr; - const char *portstr; if (addrPortStr == NULL) { PrintAndLogEx(ERR, "error: string duplication"); free(sp); @@ -318,54 +257,24 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { // find the "bind" option char *bindAddrPortStr = strstr(addrPortStr, ",bind="); - char *bindAddrStr = NULL; - char *bindPortStr = NULL; - bool isBindingIPv6 = false; // Assume v4 + const char *bindAddrStr = NULL; + const char *bindPortStr = NULL; + bool isBindingIPv6 = false; + if (bindAddrPortStr != NULL) { *bindAddrPortStr = '\0'; // as the end of target address (and port) - bindAddrPortStr += 6; - bindAddrStr = bindAddrPortStr; + bindAddrPortStr += 6; // strlen(",bind=") - // find the start of the bind address - char *endBracket = strrchr(bindAddrPortStr, ']'); - if (bindAddrPortStr[0] == '[') { - bindAddrStr += 1; - if (endBracket == NULL) { + int result = uart_parse_address_port(bindAddrPortStr, &bindAddrStr, &bindPortStr, &isBindingIPv6); + if (result != PM3_SUCCESS) { + if (result == PM3_ESOFT) { PrintAndLogEx(ERR, "error: wrong address: [] unmatched in bind option"); - free(addrPortStr); - free(sp); - return INVALID_SERIAL_PORT; - } - } - - // find the bind port - char *lColon = strchr(bindAddrPortStr, ':'); - char *rColon = strrchr(bindAddrPortStr, ':'); - if (rColon == NULL) { - // no colon - // ",bind=<ipv4 address>", ",bind=[<ipv4 address>]" - bindPortStr = NULL; - } else if (lColon == rColon) { - // only one colon - // ",bind=<ipv4 address>:<port>", ",bind=[<ipv4 address>]:<port>" - bindPortStr = rColon + 1; - } else { - // two or more colon, IPv6 address - // ",bind=[<ipv6 address>]:<port>" - // ",bind=<ipv6 address>", ",bind=[<ipv6 address>]" - if (endBracket != NULL && rColon == endBracket + 1) { - bindPortStr = rColon + 1; } else { - bindPortStr = NULL; + PrintAndLogEx(ERR, "error: failed to parse address and port in bind option"); } - isBindingIPv6 = true; - } - - // handle the end of the bind address - if (endBracket != NULL) { - *endBracket = '\0'; - } else if (rColon != NULL && lColon == rColon) { - *rColon = '\0'; + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; } // for bind option, it's possible to only specify address or port @@ -375,50 +284,24 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { bindPortStr = NULL; } - // find the start of the address - char *endBracket = strrchr(addrPortStr, ']'); - if (addrPortStr[0] == '[') { - addrstr += 1; - if (endBracket == NULL) { + const char *addrStr = NULL; + const char *portStr = NULL; + bool isIPv6 = false; + + int result = uart_parse_address_port(addrPortStr, &addrStr, &portStr, &isIPv6); + if (result != PM3_SUCCESS) { + if (result == PM3_ESOFT) { PrintAndLogEx(ERR, "error: wrong address: [] unmatched"); - free(addrPortStr); - free(sp); - return INVALID_SERIAL_PORT; - } - } - - // Assume v4 - g_conn.send_via_ip = PM3_UDPv4; - - // find the port - char *lColon = strchr(addrPortStr, ':'); - char *rColon = strrchr(addrPortStr, ':'); - if (rColon == NULL) { - // no colon - // "udp:<ipv4 address>", "udp:[<ipv4 address>]" - portstr = "18888"; - } else if (lColon == rColon) { - // only one colon - // "udp:<ipv4 address>:<port>", "udp:[<ipv4 address>]:<port>" - portstr = rColon + 1; - } else { - // two or more colon, IPv6 address - // "udp:[<ipv6 address>]:<port>" - // "udp:<ipv6 address>", "udp:[<ipv6 address>]" - if (endBracket != NULL && rColon == endBracket + 1) { - portstr = rColon + 1; } else { - portstr = "18888"; + PrintAndLogEx(ERR, "error: failed to parse address and port"); } - g_conn.send_via_ip = PM3_UDPv6; + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; } - // handle the end of the address - if (endBracket != NULL) { - *endBracket = '\0'; - } else if (rColon != NULL && lColon == rColon) { - *rColon = '\0'; - } + g_conn.send_via_ip = isIPv6 ? PM3_UDPv6 : PM3_UDPv4; + portStr = (portStr == NULL) ? "18888" : portStr; struct addrinfo info; @@ -427,13 +310,13 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { info.ai_family = PF_UNSPEC; info.ai_socktype = SOCK_DGRAM; - if ((strstr(addrstr, "localhost") != NULL) || - (strstr(addrstr, "127.0.0.1") != NULL) || - (strstr(addrstr, "::1") != NULL)) { + if ((strstr(addrStr, "localhost") != NULL) || + (strstr(addrStr, "127.0.0.1") != NULL) || + (strstr(addrStr, "::1") != NULL)) { g_conn.send_via_local_ip = true; } - int s = getaddrinfo(addrstr, portstr, &info, &addr); + int s = getaddrinfo(addrStr, portStr, &info, &addr); if (s != 0) { PrintAndLogEx(ERR, "error: getaddrinfo: %s", gai_strerror(s)); freeaddrinfo(addr); diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index f91a69290..df6b51f9d 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -115,8 +115,6 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { struct addrinfo *addr = NULL, *rp; char *addrPortStr = str_dup(pcPortName + 4); - char *addrstr = addrPortStr; - const char *portstr; if (addrPortStr == NULL) { PrintAndLogEx(ERR, "error: string duplication"); free(sp); @@ -127,54 +125,24 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { // find the "bind" option char *bindAddrPortStr = strstr(addrPortStr, ",bind="); - char *bindAddrStr = NULL; - char *bindPortStr = NULL; - bool isBindingIPv6 = false; // Assume v4 + const char *bindAddrStr = NULL; + const char *bindPortStr = NULL; + bool isBindingIPv6 = false; + if (bindAddrPortStr != NULL) { *bindAddrPortStr = '\0'; // as the end of target address (and port) - bindAddrPortStr += 6; - bindAddrStr = bindAddrPortStr; + bindAddrPortStr += 6; // strlen(",bind=") - // find the start of the bind address - char *endBracket = strrchr(bindAddrPortStr, ']'); - if (bindAddrPortStr[0] == '[') { - bindAddrStr += 1; - if (endBracket == NULL) { + int result = uart_parse_address_port(bindAddrPortStr, &bindAddrStr, &bindPortStr, &isBindingIPv6); + if (result != PM3_SUCCESS) { + if (result == PM3_ESOFT) { PrintAndLogEx(ERR, "error: wrong address: [] unmatched in bind option"); - free(addrPortStr); - free(sp); - return INVALID_SERIAL_PORT; - } - } - - // find the bind port - char *lColon = strchr(bindAddrPortStr, ':'); - char *rColon = strrchr(bindAddrPortStr, ':'); - if (rColon == NULL) { - // no colon - // ",bind=<ipv4 address>", ",bind=[<ipv4 address>]" - bindPortStr = NULL; - } else if (lColon == rColon) { - // only one colon - // ",bind=<ipv4 address>:<port>", ",bind=[<ipv4 address>]:<port>" - bindPortStr = rColon + 1; - } else { - // two or more colon, IPv6 address - // ",bind=[<ipv6 address>]:<port>" - // ",bind=<ipv6 address>", ",bind=[<ipv6 address>]" - if (endBracket != NULL && rColon == endBracket + 1) { - bindPortStr = rColon + 1; } else { - bindPortStr = NULL; + PrintAndLogEx(ERR, "error: failed to parse address and port in bind option"); } - isBindingIPv6 = true; - } - - // handle the end of the bind address - if (endBracket != NULL) { - *endBracket = '\0'; - } else if (rColon != NULL && lColon == rColon) { - *rColon = '\0'; + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; } // for bind option, it's possible to only specify address or port @@ -184,50 +152,24 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { bindPortStr = NULL; } - // find the start of the address - char *endBracket = strrchr(addrPortStr, ']'); - if (addrPortStr[0] == '[') { - addrstr += 1; - if (endBracket == NULL) { + const char *addrStr = NULL; + const char *portStr = NULL; + bool isIPv6 = false; + + int result = uart_parse_address_port(addrPortStr, &addrStr, &portStr, &isIPv6); + if (result != PM3_SUCCESS) { + if (result == PM3_ESOFT) { PrintAndLogEx(ERR, "error: wrong address: [] unmatched"); - free(addrPortStr); - free(sp); - return INVALID_SERIAL_PORT; - } - } - - // Assume v4 - g_conn.send_via_ip = PM3_TCPv4; - - // find the port - char *lColon = strchr(addrPortStr, ':'); - char *rColon = strrchr(addrPortStr, ':'); - if (rColon == NULL) { - // no colon - // "tcp:<ipv4 address>", "tcp:[<ipv4 address>]" - portstr = "18888"; - } else if (lColon == rColon) { - // only one colon - // "tcp:<ipv4 address>:<port>", "tcp:[<ipv4 address>]:<port>" - portstr = rColon + 1; - } else { - // two or more colon, IPv6 address - // "tcp:[<ipv6 address>]:<port>" - // "tcp:<ipv6 address>", "tcp:[<ipv6 address>]" - if (endBracket != NULL && rColon == endBracket + 1) { - portstr = rColon + 1; } else { - portstr = "18888"; + PrintAndLogEx(ERR, "error: failed to parse address and port"); } - g_conn.send_via_ip = PM3_TCPv6; + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; } - // handle the end of the address - if (endBracket != NULL) { - *endBracket = '\0'; - } else if (rColon != NULL && lColon == rColon) { - *rColon = '\0'; - } + g_conn.send_via_ip = isIPv6 ? PM3_TCPv6 : PM3_TCPv4; + portStr = (portStr == NULL) ? "18888" : portStr; WSADATA wsaData; struct addrinfo info; @@ -246,13 +188,13 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { info.ai_socktype = SOCK_STREAM; info.ai_protocol = IPPROTO_TCP; - if ((strstr(addrstr, "localhost") != NULL) || - (strstr(addrstr, "127.0.0.1") != NULL) || - (strstr(addrstr, "::1") != NULL)) { + if ((strstr(addrStr, "localhost") != NULL) || + (strstr(addrStr, "127.0.0.1") != NULL) || + (strstr(addrStr, "::1") != NULL)) { g_conn.send_via_local_ip = true; } - int s = getaddrinfo(addrstr, portstr, &info, &addr); + int s = getaddrinfo(addrStr, portStr, &info, &addr); if (s != 0) { PrintAndLogEx(ERR, "error: getaddrinfo: %d: %s", s, gai_strerror(s)); freeaddrinfo(addr); @@ -322,8 +264,6 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { struct addrinfo *addr = NULL, *rp; char *addrPortStr = str_dup(pcPortName + 4); - char *addrstr = addrPortStr; - const char *portstr; if (addrPortStr == NULL) { PrintAndLogEx(ERR, "error: string duplication"); free(sp); @@ -334,54 +274,24 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { // find the "bind" option char *bindAddrPortStr = strstr(addrPortStr, ",bind="); - char *bindAddrStr = NULL; - char *bindPortStr = NULL; - bool isBindingIPv6 = false; // Assume v4 + const char *bindAddrStr = NULL; + const char *bindPortStr = NULL; + bool isBindingIPv6 = false; + if (bindAddrPortStr != NULL) { *bindAddrPortStr = '\0'; // as the end of target address (and port) - bindAddrPortStr += 6; - bindAddrStr = bindAddrPortStr; + bindAddrPortStr += 6; // strlen(",bind=") - // find the start of the bind address - char *endBracket = strrchr(bindAddrPortStr, ']'); - if (bindAddrPortStr[0] == '[') { - bindAddrStr += 1; - if (endBracket == NULL) { + int result = uart_parse_address_port(bindAddrPortStr, &bindAddrStr, &bindPortStr, &isBindingIPv6); + if (result != PM3_SUCCESS) { + if (result == PM3_ESOFT) { PrintAndLogEx(ERR, "error: wrong address: [] unmatched in bind option"); - free(addrPortStr); - free(sp); - return INVALID_SERIAL_PORT; - } - } - - // find the bind port - char *lColon = strchr(bindAddrPortStr, ':'); - char *rColon = strrchr(bindAddrPortStr, ':'); - if (rColon == NULL) { - // no colon - // ",bind=<ipv4 address>", ",bind=[<ipv4 address>]" - bindPortStr = NULL; - } else if (lColon == rColon) { - // only one colon - // ",bind=<ipv4 address>:<port>", ",bind=[<ipv4 address>]:<port>" - bindPortStr = rColon + 1; - } else { - // two or more colon, IPv6 address - // ",bind=[<ipv6 address>]:<port>" - // ",bind=<ipv6 address>", ",bind=[<ipv6 address>]" - if (endBracket != NULL && rColon == endBracket + 1) { - bindPortStr = rColon + 1; } else { - bindPortStr = NULL; + PrintAndLogEx(ERR, "error: failed to parse address and port in bind option"); } - isBindingIPv6 = true; - } - - // handle the end of the bind address - if (endBracket != NULL) { - *endBracket = '\0'; - } else if (rColon != NULL && lColon == rColon) { - *rColon = '\0'; + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; } // for bind option, it's possible to only specify address or port @@ -391,50 +301,24 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { bindPortStr = NULL; } - // find the start of the address - char *endBracket = strrchr(addrPortStr, ']'); - if (addrPortStr[0] == '[') { - addrstr += 1; - if (endBracket == NULL) { + const char *addrStr = NULL; + const char *portStr = NULL; + bool isIPv6 = false; + + int result = uart_parse_address_port(addrPortStr, &addrStr, &portStr, &isIPv6); + if (result != PM3_SUCCESS) { + if (result == PM3_ESOFT) { PrintAndLogEx(ERR, "error: wrong address: [] unmatched"); - free(addrPortStr); - free(sp); - return INVALID_SERIAL_PORT; - } - } - - // Assume v4 - g_conn.send_via_ip = PM3_UDPv4; - - // find the port - char *lColon = strchr(addrPortStr, ':'); - char *rColon = strrchr(addrPortStr, ':'); - if (rColon == NULL) { - // no colon - // "udp:<ipv4 address>", "udp:[<ipv4 address>]" - portstr = "18888"; - } else if (lColon == rColon) { - // only one colon - // "udp:<ipv4 address>:<port>", "udp:[<ipv4 address>]:<port>" - portstr = rColon + 1; - } else { - // two or more colon, IPv6 address - // "udp:[<ipv6 address>]:<port>" - // "udp:<ipv6 address>", "udp:[<ipv6 address>]" - if (endBracket != NULL && rColon == endBracket + 1) { - portstr = rColon + 1; } else { - portstr = "18888"; + PrintAndLogEx(ERR, "error: failed to parse address and port"); } - g_conn.send_via_ip = PM3_UDPv6; + free(addrPortStr); + free(sp); + return INVALID_SERIAL_PORT; } - // handle the end of the address - if (endBracket != NULL) { - *endBracket = '\0'; - } else if (rColon != NULL && lColon == rColon) { - *rColon = '\0'; - } + g_conn.send_via_ip = isIPv6 ? PM3_UDPv6 : PM3_UDPv4; + portStr = (portStr == NULL) ? "18888" : portStr; WSADATA wsaData; struct addrinfo info; @@ -453,13 +337,13 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { info.ai_socktype = SOCK_DGRAM; info.ai_protocol = IPPROTO_UDP; - if ((strstr(addrstr, "localhost") != NULL) || - (strstr(addrstr, "127.0.0.1") != NULL) || - (strstr(addrstr, "::1") != NULL)) { + if ((strstr(addrStr, "localhost") != NULL) || + (strstr(addrStr, "127.0.0.1") != NULL) || + (strstr(addrStr, "::1") != NULL)) { g_conn.send_via_local_ip = true; } - int s = getaddrinfo(addrstr, portstr, &info, &addr); + int s = getaddrinfo(addrStr, portStr, &info, &addr); if (s != 0) { PrintAndLogEx(ERR, "error: getaddrinfo: %d: %s", s, gai_strerror(s)); freeaddrinfo(addr); From 39866f9ed2e5a7558cbe0b36d34d0d8b20fc2fd7 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 26 Dec 2023 16:30:36 +0800 Subject: [PATCH 0920/1034] Reuse code for TCP and UDP connection Put prefix length validation before memcmp() to avoid overflow --- client/src/uart/uart_posix.c | 182 +++++++--------------------------- client/src/uart/uart_win32.c | 184 +++++------------------------------ 2 files changed, 58 insertions(+), 308 deletions(-) diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index ee94fc31f..5a2380bc9 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -102,14 +102,25 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } str_lower(prefix); - if (memcmp(prefix, "tcp:", 4) == 0) { - free(prefix); + bool isTCP = false; + bool isUDP = false; + bool isBluetooth = false; + bool isUnixSocket = false; + if (strlen(prefix) > 4) + { + isTCP = (memcmp(prefix, "tcp:", 4) == 0); + isUDP = (memcmp(prefix, "udp:", 4) == 0); + } + if (strlen(prefix) > 3) { + isBluetooth = (memcmp(prefix, "bt:", 3) == 0); + } + if (strlen(prefix) > 7) { + isUnixSocket = (memcmp(prefix, "socket:", 7) == 0); + } - if (strlen(pcPortName) <= 4) { - PrintAndLogEx(ERR, "error: tcp port name length too short"); - free(sp); - return INVALID_SERIAL_PORT; - } + if (isTCP || isUDP) { + + free(prefix); struct addrinfo *addr = NULL, *rp; @@ -167,7 +178,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { return INVALID_SERIAL_PORT; } - g_conn.send_via_ip = isIPv6 ? PM3_TCPv6 : PM3_TCPv4; + g_conn.send_via_ip = isIPv6 ? (isTCP ? PM3_TCPv6 : PM3_UDPv6) : (isTCP ? PM3_TCPv4 : PM3_UDPv4); portStr = (portStr == NULL) ? "18888" : portStr; struct addrinfo info; @@ -175,7 +186,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { memset(&info, 0, sizeof(info)); info.ai_family = PF_UNSPEC; - info.ai_socktype = SOCK_STREAM; + info.ai_socktype = isTCP ? SOCK_STREAM : SOCK_DGRAM; if ((strstr(addrStr, "localhost") != NULL) || (strstr(addrStr, "127.0.0.1") != NULL) || @@ -185,7 +196,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { int s = getaddrinfo(addrStr, portStr, &info, &addr); if (s != 0) { - PrintAndLogEx(ERR, "error: getaddrinfo: %s", gai_strerror(s)); + PrintAndLogEx(ERR, "error: getaddrinfo: %d: %s", s, gai_strerror(s)); freeaddrinfo(addr); free(addrPortStr); free(sp); @@ -225,148 +236,26 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { sp->fd = sfd; - int one = 1; - int res = setsockopt(sp->fd, SOL_TCP, TCP_NODELAY, &one, sizeof(one)); - if (res != 0) { - free(sp); - return INVALID_SERIAL_PORT; + if (isTCP) { + int one = 1; + int res = setsockopt(sp->fd, SOL_TCP, TCP_NODELAY, &one, sizeof(one)); + if (res != 0) { + free(sp); + return INVALID_SERIAL_PORT; + } + } else if (isUDP) { + sp->udpBuffer = RingBuf_create(MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 30); } return sp; } - if (memcmp(prefix, "udp:", 4) == 0) { - free(prefix); - - if (strlen(pcPortName) <= 4) { - PrintAndLogEx(ERR, "error: udp port name length too short"); - free(sp); - return INVALID_SERIAL_PORT; - } - - struct addrinfo *addr = NULL, *rp; - - char *addrPortStr = str_dup(pcPortName + 4); - if (addrPortStr == NULL) { - PrintAndLogEx(ERR, "error: string duplication"); - free(sp); - return INVALID_SERIAL_PORT; - } - - timeout.tv_usec = UART_NET_CLIENT_RX_TIMEOUT_MS * 1000; - - // find the "bind" option - char *bindAddrPortStr = strstr(addrPortStr, ",bind="); - const char *bindAddrStr = NULL; - const char *bindPortStr = NULL; - bool isBindingIPv6 = false; - - if (bindAddrPortStr != NULL) { - *bindAddrPortStr = '\0'; // as the end of target address (and port) - bindAddrPortStr += 6; // strlen(",bind=") - - int result = uart_parse_address_port(bindAddrPortStr, &bindAddrStr, &bindPortStr, &isBindingIPv6); - if (result != PM3_SUCCESS) { - if (result == PM3_ESOFT) { - PrintAndLogEx(ERR, "error: wrong address: [] unmatched in bind option"); - } else { - PrintAndLogEx(ERR, "error: failed to parse address and port in bind option"); - } - free(addrPortStr); - free(sp); - return INVALID_SERIAL_PORT; - } - - // for bind option, it's possible to only specify address or port - if (strlen(bindAddrStr) == 0) - bindAddrStr = NULL; - if (bindPortStr != NULL && strlen(bindPortStr) == 0) - bindPortStr = NULL; - } - - const char *addrStr = NULL; - const char *portStr = NULL; - bool isIPv6 = false; - - int result = uart_parse_address_port(addrPortStr, &addrStr, &portStr, &isIPv6); - if (result != PM3_SUCCESS) { - if (result == PM3_ESOFT) { - PrintAndLogEx(ERR, "error: wrong address: [] unmatched"); - } else { - PrintAndLogEx(ERR, "error: failed to parse address and port"); - } - free(addrPortStr); - free(sp); - return INVALID_SERIAL_PORT; - } - - g_conn.send_via_ip = isIPv6 ? PM3_UDPv6 : PM3_UDPv4; - portStr = (portStr == NULL) ? "18888" : portStr; - - struct addrinfo info; - - memset(&info, 0, sizeof(info)); - - info.ai_family = PF_UNSPEC; - info.ai_socktype = SOCK_DGRAM; - - if ((strstr(addrStr, "localhost") != NULL) || - (strstr(addrStr, "127.0.0.1") != NULL) || - (strstr(addrStr, "::1") != NULL)) { - g_conn.send_via_local_ip = true; - } - - int s = getaddrinfo(addrStr, portStr, &info, &addr); - if (s != 0) { - PrintAndLogEx(ERR, "error: getaddrinfo: %s", gai_strerror(s)); - freeaddrinfo(addr); - free(addrPortStr); - free(sp); - return INVALID_SERIAL_PORT; - } - - int sfd; - for (rp = addr; rp != NULL; rp = rp->ai_next) { - sfd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); - - if (sfd == -1) - continue; - - if (!uart_bind(&sfd, bindAddrStr, bindPortStr, isBindingIPv6)) { - PrintAndLogEx(ERR, "error: Could not bind. errno: %d", errno); - close(sfd); - freeaddrinfo(addr); - free(addrPortStr); - free(sp); - return INVALID_SERIAL_PORT; - } - - if (connect(sfd, rp->ai_addr, rp->ai_addrlen) != -1) - break; - - close(sfd); - } - - freeaddrinfo(addr); - free(addrPortStr); - - if (rp == NULL) { /* No address succeeded */ - PrintAndLogEx(ERR, "error: Could not connect"); - free(sp); - return INVALID_SERIAL_PORT; - } - - sp->fd = sfd; - sp->udpBuffer = RingBuf_create(MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 30); - return sp; - } - - - if (memcmp(prefix, "bt:", 3) == 0) { + if (isBluetooth) { free(prefix); #ifdef HAVE_BLUEZ if (strlen(pcPortName) != 20) { + PrintAndLogEx(ERR, "Error: wrong Bluetooth MAC address length"); free(sp); return INVALID_SERIAL_PORT; } @@ -418,14 +307,9 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { // Is local socket buffer, not a TCP or any net connection! // so, you can't connect with address like: 127.0.0.1, or any IP // see http://man7.org/linux/man-pages/man7/unix.7.html - if (memcmp(prefix, "socket:", 7) == 0) { + if (isUnixSocket) { free(prefix); - if (strlen(pcPortName) <= 7) { - free(sp); - return INVALID_SERIAL_PORT; - } - // we must use max timeout! timeout.tv_usec = UART_NET_CLIENT_RX_TIMEOUT_MS * 1000; diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index df6b51f9d..ede5b55fc 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -103,163 +103,16 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } str_lower(prefix); - if (memcmp(prefix, "tcp:", 4) == 0) { - free(prefix); - - if (strlen(pcPortName) <= 4) { - PrintAndLogEx(ERR, "error: tcp port name length too short"); - free(sp); - return INVALID_SERIAL_PORT; - } - - struct addrinfo *addr = NULL, *rp; - - char *addrPortStr = str_dup(pcPortName + 4); - if (addrPortStr == NULL) { - PrintAndLogEx(ERR, "error: string duplication"); - free(sp); - return INVALID_SERIAL_PORT; - } - - timeout.tv_usec = UART_NET_CLIENT_RX_TIMEOUT_MS * 1000; - - // find the "bind" option - char *bindAddrPortStr = strstr(addrPortStr, ",bind="); - const char *bindAddrStr = NULL; - const char *bindPortStr = NULL; - bool isBindingIPv6 = false; - - if (bindAddrPortStr != NULL) { - *bindAddrPortStr = '\0'; // as the end of target address (and port) - bindAddrPortStr += 6; // strlen(",bind=") - - int result = uart_parse_address_port(bindAddrPortStr, &bindAddrStr, &bindPortStr, &isBindingIPv6); - if (result != PM3_SUCCESS) { - if (result == PM3_ESOFT) { - PrintAndLogEx(ERR, "error: wrong address: [] unmatched in bind option"); - } else { - PrintAndLogEx(ERR, "error: failed to parse address and port in bind option"); - } - free(addrPortStr); - free(sp); - return INVALID_SERIAL_PORT; - } - - // for bind option, it's possible to only specify address or port - if (strlen(bindAddrStr) == 0) - bindAddrStr = NULL; - if (bindPortStr != NULL && strlen(bindPortStr) == 0) - bindPortStr = NULL; - } - - const char *addrStr = NULL; - const char *portStr = NULL; - bool isIPv6 = false; - - int result = uart_parse_address_port(addrPortStr, &addrStr, &portStr, &isIPv6); - if (result != PM3_SUCCESS) { - if (result == PM3_ESOFT) { - PrintAndLogEx(ERR, "error: wrong address: [] unmatched"); - } else { - PrintAndLogEx(ERR, "error: failed to parse address and port"); - } - free(addrPortStr); - free(sp); - return INVALID_SERIAL_PORT; - } - - g_conn.send_via_ip = isIPv6 ? PM3_TCPv6 : PM3_TCPv4; - portStr = (portStr == NULL) ? "18888" : portStr; - - WSADATA wsaData; - struct addrinfo info; - int iResult; - - iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); - if (iResult != 0) { - PrintAndLogEx(ERR, "error: WSAStartup failed with error: %d", iResult); - free(addrPortStr); - free(sp); - return INVALID_SERIAL_PORT; - } - - memset(&info, 0, sizeof(info)); - info.ai_family = AF_UNSPEC; - info.ai_socktype = SOCK_STREAM; - info.ai_protocol = IPPROTO_TCP; - - if ((strstr(addrStr, "localhost") != NULL) || - (strstr(addrStr, "127.0.0.1") != NULL) || - (strstr(addrStr, "::1") != NULL)) { - g_conn.send_via_local_ip = true; - } - - int s = getaddrinfo(addrStr, portStr, &info, &addr); - if (s != 0) { - PrintAndLogEx(ERR, "error: getaddrinfo: %d: %s", s, gai_strerror(s)); - freeaddrinfo(addr); - free(addrPortStr); - free(sp); - WSACleanup(); - return INVALID_SERIAL_PORT; - } - - SOCKET hSocket = INVALID_SOCKET; - for (rp = addr; rp != NULL; rp = rp->ai_next) { - hSocket = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); - - if (hSocket == INVALID_SOCKET) - continue; - - if (!uart_bind(&hSocket, bindAddrStr, bindPortStr, isBindingIPv6)) { - PrintAndLogEx(ERR, "error: Could not bind. error: %u", WSAGetLastError()); - closesocket(hSocket); - hSocket = INVALID_SOCKET; - freeaddrinfo(addr); - free(addrPortStr); - free(sp); - WSACleanup(); - return INVALID_SERIAL_PORT; - } - - if (connect(hSocket, rp->ai_addr, (int)rp->ai_addrlen) != INVALID_SOCKET) - break; - - closesocket(hSocket); - hSocket = INVALID_SOCKET; - } - - freeaddrinfo(addr); - free(addrPortStr); - - if (rp == NULL) { /* No address succeeded */ - PrintAndLogEx(ERR, "error: Could not connect"); - WSACleanup(); - free(sp); - return INVALID_SERIAL_PORT; - } - - sp->hSocket = hSocket; - - int one = 1; - int res = setsockopt(sp->hSocket, IPPROTO_TCP, TCP_NODELAY, (char *)&one, sizeof(one)); - if (res != 0) { - closesocket(hSocket); - WSACleanup(); - free(sp); - return INVALID_SERIAL_PORT; - } - return sp; + bool isTCP = false; + bool isUDP = false; + if (strlen(prefix) > 4) { + isTCP = (memcmp(prefix, "tcp:", 4) == 0); + isUDP = (memcmp(prefix, "udp:", 4) == 0); } - if (memcmp(prefix, "udp:", 4) == 0) { - free(prefix); + if (isTCP || isUDP) { - if (strlen(pcPortName) <= 4) { - PrintAndLogEx(ERR, "error: udp port name length too short"); - free(sp); - return INVALID_SERIAL_PORT; - } + free(prefix); struct addrinfo *addr = NULL, *rp; @@ -277,7 +130,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { const char *bindAddrStr = NULL; const char *bindPortStr = NULL; bool isBindingIPv6 = false; - + if (bindAddrPortStr != NULL) { *bindAddrPortStr = '\0'; // as the end of target address (and port) bindAddrPortStr += 6; // strlen(",bind=") @@ -317,7 +170,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { return INVALID_SERIAL_PORT; } - g_conn.send_via_ip = isIPv6 ? PM3_UDPv6 : PM3_UDPv4; + g_conn.send_via_ip = isIPv6 ? (isTCP ? PM3_TCPv6 : PM3_UDPv6) : (isTCP ? PM3_TCPv4 : PM3_UDPv4); portStr = (portStr == NULL) ? "18888" : portStr; WSADATA wsaData; @@ -334,8 +187,8 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { memset(&info, 0, sizeof(info)); info.ai_family = AF_UNSPEC; - info.ai_socktype = SOCK_DGRAM; - info.ai_protocol = IPPROTO_UDP; + info.ai_socktype = isTCP ? SOCK_STREAM : SOCK_DGRAM; + info.ai_protocol = isTCP ? IPPROTO_TCP : IPPROTO_UDP; if ((strstr(addrStr, "localhost") != NULL) || (strstr(addrStr, "127.0.0.1") != NULL) || @@ -389,7 +242,20 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } sp->hSocket = hSocket; - sp->udpBuffer = RingBuf_create(MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 30); + + if (isTCP) { + int one = 1; + int res = setsockopt(sp->hSocket, IPPROTO_TCP, TCP_NODELAY, (char *)&one, sizeof(one)); + if (res != 0) { + closesocket(hSocket); + WSACleanup(); + free(sp); + return INVALID_SERIAL_PORT; + } + } else if (isUDP) { + sp->udpBuffer = RingBuf_create(MAX(sizeof(PacketResponseNGRaw), sizeof(PacketResponseOLD)) * 30); + } + return sp; } From 3fb45158939557bda5e508af07f814c39d02bb88 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Tue, 26 Dec 2023 20:21:35 +0800 Subject: [PATCH 0921/1034] Check TCP connection state --- CHANGELOG.md | 1 + client/src/uart/uart_posix.c | 17 ++++++++++++++++- client/src/uart/uart_win32.c | 17 ++++++++++++++++- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b4d12182..3877e21f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `uart_receive()` - Check if TCP connection is lost (@wh201906) - Change `data detectclock` - now tries all clocks if called w/o any params (@iceman1001) - Changed `lf search -1u` - improved the autocorrelation detection for unknown signals (@iceman1001) - Fixed `hf emrtd dump` stack smashing on device side (@iceman1001) diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index 588e9ae90..2a74df483 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -69,6 +69,7 @@ struct timeval timeout = { static uint32_t newtimeout_value = 0; static bool newtimeout_pending = false; +static uint8_t rx_empty_counter = 0; int uart_reconfigure_timeouts(uint32_t value) { newtimeout_value = value; @@ -727,7 +728,21 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin // Retrieve the count of the incoming bytes res = ioctl(spu->fd, FIONREAD, &byteCount); // PrintAndLogEx(ERR, "UART:: RX ioctl res %d byteCount %u", res, byteCount); - if (res < 0) return PM3_ENOTTY; + if (res < 0) { + // error occurred (maybe disconnected) + // This happens when USB-CDC connection is lost + return PM3_ENOTTY; + } else if (byteCount == 0) { + // select() > 0 && byteCount > 0 ===> data available + // select() > 0 && byteCount always equals to 0 ===> maybe disconnected + // This happens when TCP connection is lost + rx_empty_counter++; + if (rx_empty_counter > 3) { + return PM3_ENOTTY; + } + } else { + rx_empty_counter = 0; + } // For UDP connection, put the incoming data into the buffer and handle them in the next round if (spu->udpBuffer != NULL) { diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index 43299ca5a..b2e6a0adc 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -49,6 +49,7 @@ struct timeval timeout = { uint32_t newtimeout_value = 0; bool newtimeout_pending = false; +uint8_t rx_empty_counter = 0; int uart_reconfigure_timeouts(uint32_t value) { newtimeout_value = value; @@ -679,7 +680,21 @@ int uart_receive(const serial_port sp, uint8_t *pbtRx, uint32_t pszMaxRxLen, uin // Retrieve the count of the incoming bytes res = ioctlsocket(spw->hSocket, FIONREAD, (u_long *)&byteCount); // PrintAndLogEx(ERR, "UART:: RX ioctl res %d byteCount %u", res, byteCount); - if (res == SOCKET_ERROR) return PM3_ENOTTY; + if (res == SOCKET_ERROR) { + // error occurred (maybe disconnected) + // This happens when USB-CDC connection is lost + return PM3_ENOTTY; + } else if (byteCount == 0) { + // select() > 0 && byteCount > 0 ===> data available + // select() > 0 && byteCount always equals to 0 ===> maybe disconnected + // This happens when TCP connection is lost + rx_empty_counter++; + if (rx_empty_counter > 3) { + return PM3_ENOTTY; + } + } else { + rx_empty_counter = 0; + } // For UDP connection, put the incoming data into the buffer and handle them in the next round if (spw->udpBuffer != NULL) { From c22778d2199404b2634802d437a83522afd53901 Mon Sep 17 00:00:00 2001 From: unknown10777 <83267603+unknown10777@users.noreply.github.com> Date: Tue, 26 Dec 2023 21:37:46 +0800 Subject: [PATCH 0922/1034] detect if module said OK --- client/src/cmdusart.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdusart.c b/client/src/cmdusart.c index 755205966..be52aa7ca 100644 --- a/client/src/cmdusart.c +++ b/client/src/cmdusart.c @@ -322,7 +322,7 @@ static int CmdUsartBtFactory(const char *Cmd) { ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); if (ret == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); - if (strcmp((char *)data, "OK")) { + if (strstr((char *)data, "OK") != NULL) { PrintAndLogEx(SUCCESS, "PIN set to " _GREEN_("1234")); } else { PrintAndLogEx(WARNING, "Unexpected response to AT+PIN: " _YELLOW_("%.*s"), (int)len, data); @@ -385,7 +385,7 @@ static int CmdUsartBtFactory(const char *Cmd) { ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); if (ret == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); - if (strcmp((char *)data, "OK")) { + if (strstr((char *)data, "OK") != NULL) { PrintAndLogEx(SUCCESS, "Parity set to " _GREEN_("None") " and Baudrate set to " _GREEN_("115200")); } else { PrintAndLogEx(WARNING, "Unexpected response to AT+BAUD: " _YELLOW_("%.*s"), (int)len, data); From 49a319de51ed9bd93dadc89b50123fd41ec8815c Mon Sep 17 00:00:00 2001 From: Mykhailo Shevchuk <myte@ukr.net> Date: Tue, 26 Dec 2023 18:24:09 +0200 Subject: [PATCH 0923/1034] FUID --- doc/magic_cards_notes.md | 124 ++++++++++++++++++++++++++------------- 1 file changed, 82 insertions(+), 42 deletions(-) diff --git a/doc/magic_cards_notes.md b/doc/magic_cards_notes.md index 4c71508c8..da25341ed 100644 --- a/doc/magic_cards_notes.md +++ b/doc/magic_cards_notes.md @@ -31,6 +31,7 @@ Useful docs: * [MIFARE Classic DirectWrite, FUID version aka 1-write](#mifare-classic-directwrite-fuid-version-aka-1-write) * [MIFARE Classic Gen3 aka APDU](#mifare-classic-gen3-aka-apdu) * [MIFARE Classic USCUID](#mifare-classic-uscuid) + * [FUID](#fuid) * [MIFARE Classic, other versions](#mifare-classic-other-versions) * [MIFARE Classic Super](#mifare-classic-super) - [MIFARE Ultralight](#mifare-ultralight) @@ -678,29 +679,6 @@ hf 14a config --std hf 14a reader ``` -## MIFARE Classic DirectWrite, FUID version aka 1-write -^[Top](#top) - -Same as MIFARE Classic DirectWrite, but block0 can be written only once. - -* Other names: - - OTP (RU) - -### Characteristics - -* Initial UID is AA55C396 - -### Identify -^[Top](#top) - -Only possible before personalization. *It is also possible after, but unknown how.* - -``` -hf 14a info -... -[+] Magic capabilities : Write Once / FUID -``` - ## MIFARE Classic Gen3 aka APDU ^[Top](#top) @@ -797,7 +775,6 @@ You cannot turn a Classic tag into an Ultralight and vice-versa! * Magic authentication: select, `8000+crc`, `[Crypto1 Auth: 000000000000]` - Backdoor read: `38xx+crc` - Backdoor write: `A8xx+crc`, `[16 bytes data]+crc` - - Read configuration: `E000+crc` - Write configuration: `E100+crc`; `[16 bytes data]+crc` * Magic wakeup (A: 00): `40(7)`, `43` @@ -806,7 +783,6 @@ You cannot turn a Classic tag into an Ultralight and vice-versa! - Backdoor write main block: `A0xx+crc`, `[16 bytes data]+crc` - Read hidden block: `38xx+crc` - Write hidden block: `A8xx+crc`, `[16 bytes data]+crc` - - Read configuration: `E000+crc` - Write configuration: `E100+crc` @@ -878,23 +854,7 @@ Sectors 2-15 [Unused] ``` -### Variations -^[Top](#top) -| Factory configuration | Name | -| --- | --- | -| 850000000000000000005A5A00000008 | GDMIC | -| 850000000000005A0000005A5A5A0008 | UCUID | -| 8500000000005A00005A005A005A0008 | "7 byte hard" | -| 7AFF850102015A00005A005A005A0008 | M1-7B | -| 7AFF85000000000000FF000000000008 | FUID | -| 7AFF000000000000BAFA358500000008 | PFUID | -| 7AFF000000000000BAFA000000000008 | UFUID | - -*Not all tags are the same!* UFUID and PFUID* are not full implementations of Magic85 - they only acknowledge the first 8 (except wakeup command) and last config byte(s). - -*Read and write config commands are flipped - -#### Proxmark3 commands +### Proxmark3 commands ^[Top](#top) ``` Using magic auth: @@ -912,6 +872,86 @@ hf mf gdmsetcfg ^[Top](#top) No implemented commands today +### Variations +^[Top](#top) +| Factory configuration | Name | +| --- | --- | +| 850000000000000000005A5A00000008 | GDMIC | +| 850000000000005A0000005A5A5A0008 | UCUID | +| 8500000000005A00005A005A005A0008 | "7 byte hard" | +| 7AFF850102015A00005A005A005A0008 | M1-7B | +| 7AFF85000000000000FF000000000008 | FUID | +| 7AFF000000000000BAFA358500000008 | PFUID | +| 7AFF000000000000BAFA000000000008 | UFUID | + +*Not all tags are the same!* UFUID and PFUID* are not full implementations of Magic85 - they only acknowledge the first 8 (except wakeup command) and last config byte(s). + +*Read and write config commands are flipped + +Well-known variations are described below. + +## FUID +^[Top](#top) + +Known as "write only once", which is only partially true. + +Allows direct write to block 0 only when UID is default `AA55C396`. But always could be rewritten multiple times with backdoors commands. + +Backdoor commands are available even after the personalization and makes that card detectable. + +That's a key difference from [OTP](#mifare-classic-direct-write-otp)/[OTP 2.0](#mifare-classic-otp-2.0) tags. + +### Characteristics +^[Top](#top) + +* Configuration block value: `7AFF85000000000000FF000000000008` +* Initial UID: `AA55C396` +* Allows direct write to the block 0 (before the personalisation), so is Android compatible +* Responds to magic wakeup `20(7)`, `23` commands + +### Identify +^[Top](#top) +``` +hf 14a info +... +[+] Magic capabilities : Write Once / FUID + +``` + +⚠️ **Current Proxmark3 identification is based on the initial UID. That could lead to the false positives. Also that doesn't allow to detect FUID after the personalization.** + +More correct detection should be based on a backdoor commands and configuration block value: + +``` +[usb] pm3 --> hf 14a raw -k -a -b 7 20 +[+] 0A +[usb] pm3 --> hf 14a raw -k -a 23 +[+] 0A +[usb] pm3 --> hf 14a raw -c -k -a E000 +[+] 7A FF 85 00 00 00 00 00 00 FF 00 00 00 00 00 08 [ 66 92 ] +``` +### Proxmark3 commands +^[Top](#top) + +* Commands described under the corresponding section of USCUID chip +* Example of changing block 0 after the personalization: +``` +[usb] pm3 --> hf 14a raw -k -a -b 7 20 +[+] 0A +[usb] pm3 --> hf 14a raw -k -a 23 +[+] 0A +[usb] pm3 --> hf 14a raw -c -k -a A000 +[+] 0A +[usb] pm3 --> hf 14a raw -c -k -a B502454EBC0804000168AA8947CE4D1D <- Writing 0 block with the backdoor command +[+] 0A +[usb] pm3 --> hf 14a raw -c -a 5000 +[usb] pm3 --> hf mf rdbl --blk 0 + +[=] # | sector 00 / 0x00 | ascii +[=] ----+-------------------------------------------------+----------------- +[=] 0 | B5 02 45 4E BC 08 04 00 01 68 AA 89 47 CE 4D 1D | ..EN.....h..G.M. +``` + ## MIFARE Classic, other versions ^[Top](#top) From 3a811a5872afce0b06ca2a3c55facf0a9f41110f Mon Sep 17 00:00:00 2001 From: Mykhailo Shevchuk <myte@ukr.net> Date: Tue, 26 Dec 2023 20:23:40 +0200 Subject: [PATCH 0924/1034] UFUID --- doc/magic_cards_notes.md | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/doc/magic_cards_notes.md b/doc/magic_cards_notes.md index da25341ed..5e330016c 100644 --- a/doc/magic_cards_notes.md +++ b/doc/magic_cards_notes.md @@ -32,6 +32,7 @@ Useful docs: * [MIFARE Classic Gen3 aka APDU](#mifare-classic-gen3-aka-apdu) * [MIFARE Classic USCUID](#mifare-classic-uscuid) * [FUID](#fuid) + * [UFUID](#ufuid) * [MIFARE Classic, other versions](#mifare-classic-other-versions) * [MIFARE Classic Super](#mifare-classic-super) - [MIFARE Ultralight](#mifare-ultralight) @@ -952,6 +953,53 @@ More correct detection should be based on a backdoor commands and configuration [=] 0 | B5 02 45 4E BC 08 04 00 01 68 AA 89 47 CE 4D 1D | ..EN.....h..G.M. ``` +## UFUID +^[Top](#top) + +The card is positioned as "sealable UID", so that means you could use the same commands, as you could use for UID chip in a default state. But after the sealing (changing the configuration) card will not answer to the backdoor commands and will behave as a normal Mifare Classic card. + +*But at the same time there is some unidentified behavior, which doesn't fully corresponds the protocol and original Mifare Classic cards. So the card could be filtered out with a protocol-based filters (i.e. Iron Logic OTP2 filter).* + +### Characteristics +^[Top](#top) + +* Configuration block value: `7AFF000000000000BAFA000000000008` +* No direct write to block 0 +* Responds to magic wakeup `40(7)`, `43` commands before the sealing +* Acknowledge only the first (except wakeup command) and last config byte(s), so doesn't have the hidden block + +### Identify +^[Top](#top) + +Currently Proxmark3 doesn't identify it as a sepatate card. +Before the sealing could be detected from the config block value: + +``` +[usb] pm3 --> hf 14a raw -k -a -b 7 40 +[+] 0A +[usb] pm3 --> hf 14a raw -k -a 43 +[+] 0A +[usb] pm3 --> hf 14a raw -c -k -a E000 +[+] 7A FF 00 00 00 00 00 00 BA FA 00 00 00 00 00 08 [ F1 69 ] +``` + +### Proxmark3 commands +^[Top](#top) + +All commands are available before sealing. +* Proxmark3 magic Gen1 commands +* Read configuration: `E000+crc` +* Write configuration: `E100+crc` + +Example of the sealing, performed by Chinese copiers in raw commands: + +``` +hf 14a raw -a -k -b 7 40 +hf 14a raw -k 43 +hf 14a raw -k -c e100 +hf 14a raw -c 85000000000000000000000000000008 +``` + ## MIFARE Classic, other versions ^[Top](#top) From bc8004cf8ec7a8a09b57ebc9585eaecc8af01364 Mon Sep 17 00:00:00 2001 From: Mykhailo Shevchuk <myte@ukr.net> Date: Tue, 26 Dec 2023 20:45:02 +0200 Subject: [PATCH 0925/1034] ZUID --- doc/magic_cards_notes.md | 53 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/doc/magic_cards_notes.md b/doc/magic_cards_notes.md index 5e330016c..2a43de28e 100644 --- a/doc/magic_cards_notes.md +++ b/doc/magic_cards_notes.md @@ -33,6 +33,7 @@ Useful docs: * [MIFARE Classic USCUID](#mifare-classic-uscuid) * [FUID](#fuid) * [UFUID](#ufuid) + * [ZUID](#zuid) * [MIFARE Classic, other versions](#mifare-classic-other-versions) * [MIFARE Classic Super](#mifare-classic-super) - [MIFARE Ultralight](#mifare-ultralight) @@ -884,8 +885,9 @@ No implemented commands today | 7AFF85000000000000FF000000000008 | FUID | | 7AFF000000000000BAFA358500000008 | PFUID | | 7AFF000000000000BAFA000000000008 | UFUID | +| 7AFF0000000000000000000000000008 | ZUID | -*Not all tags are the same!* UFUID and PFUID* are not full implementations of Magic85 - they only acknowledge the first 8 (except wakeup command) and last config byte(s). +*Not all tags are the same!* UFUID, ZUID and PFUID* are not full implementations of Magic85 - they only acknowledge the first 8 (except wakeup command) and last config byte(s). *Read and write config commands are flipped @@ -971,6 +973,13 @@ The card is positioned as "sealable UID", so that means you could use the same c ### Identify ^[Top](#top) +``` +hf 14a info +... +[+] Magic capabilities : Gen 1a + +``` + Currently Proxmark3 doesn't identify it as a sepatate card. Before the sealing could be detected from the config block value: @@ -1000,6 +1009,48 @@ hf 14a raw -k -c e100 hf 14a raw -c 85000000000000000000000000000008 ``` +## ZUID +^[Top](#top) + +That card is a UID card, built on USCUID chip. It doesn't sold separately, but could be found on marketplaces under the guise of a UID card. + +### Characteristics +^[Top](#top) + +* Configuration block value: `7AFF0000000000000000000000000008` +* No direct write to block 0 +* Responds to magic wakeup `40(7)`, `43` commands +* Acknowledge only the first (except wakeup command) and last config byte(s), so doesn't have the hidden block + +### Identify +^[Top](#top) + +``` +hf 14a info +... +[+] Magic capabilities : Gen 1a + +``` + +Currently Proxmark3 doesn't identify it as a sepatate card. +Could be detected from the config block value: + +``` +[usb] pm3 --> hf 14a raw -k -a -b 7 40 +[+] 0A +[usb] pm3 --> hf 14a raw -k -a 43 +[+] 0A +[usb] pm3 --> hf 14a raw -c -k -a E000 +[+] 7A FF 00 00 00 00 00 00 00 00 00 00 00 00 00 08 [ 4E 17 ] +``` + +### Proxmark3 commands +^[Top](#top) + +* Proxmark3 magic Gen1 commands +* Read configuration: `E000+crc` +* Write configuration: `E100+crc` + ## MIFARE Classic, other versions ^[Top](#top) From b9572d561e16a4194f9f62ed67b7cc73d26d59c4 Mon Sep 17 00:00:00 2001 From: Mykhailo Shevchuk <myte@ukr.net> Date: Tue, 26 Dec 2023 22:11:04 +0200 Subject: [PATCH 0926/1034] GDM + small refactoring --- doc/magic_cards_notes.md | 64 +++++++++++++++++++++++++++++++++------- 1 file changed, 54 insertions(+), 10 deletions(-) diff --git a/doc/magic_cards_notes.md b/doc/magic_cards_notes.md index 2a43de28e..33b05e0e6 100644 --- a/doc/magic_cards_notes.md +++ b/doc/magic_cards_notes.md @@ -34,6 +34,7 @@ Useful docs: * [FUID](#fuid) * [UFUID](#ufuid) * [ZUID](#zuid) + * [GDM](#gdm) * [MIFARE Classic, other versions](#mifare-classic-other-versions) * [MIFARE Classic Super](#mifare-classic-super) - [MIFARE Ultralight](#mifare-ultralight) @@ -878,7 +879,7 @@ No implemented commands today ^[Top](#top) | Factory configuration | Name | | --- | --- | -| 850000000000000000005A5A00000008 | GDMIC | +| 850000000000000000005A5A00000008 | GDM | | 850000000000005A0000005A5A5A0008 | UCUID | | 8500000000005A00005A005A005A0008 | "7 byte hard" | | 7AFF850102015A00005A005A005A0008 | M1-7B | @@ -900,7 +901,7 @@ Known as "write only once", which is only partially true. Allows direct write to block 0 only when UID is default `AA55C396`. But always could be rewritten multiple times with backdoors commands. -Backdoor commands are available even after the personalization and makes that card detectable. +Backdoor commands are available even after the personalization and makes that tag detectable. That's a key difference from [OTP](#mifare-classic-direct-write-otp)/[OTP 2.0](#mifare-classic-otp-2.0) tags. @@ -933,7 +934,7 @@ More correct detection should be based on a backdoor commands and configuration [usb] pm3 --> hf 14a raw -c -k -a E000 [+] 7A FF 85 00 00 00 00 00 00 FF 00 00 00 00 00 08 [ 66 92 ] ``` -### Proxmark3 commands +### Commands ^[Top](#top) * Commands described under the corresponding section of USCUID chip @@ -958,9 +959,9 @@ More correct detection should be based on a backdoor commands and configuration ## UFUID ^[Top](#top) -The card is positioned as "sealable UID", so that means you could use the same commands, as you could use for UID chip in a default state. But after the sealing (changing the configuration) card will not answer to the backdoor commands and will behave as a normal Mifare Classic card. +The tag is positioned as "sealable UID", so that means you could use the same commands, as you could use for UID chip in a default state. But after the sealing (changing the configuration) tag will not answer to the backdoor commands and will behave as a normal Mifare Classic tag. -*But at the same time there is some unidentified behavior, which doesn't fully corresponds the protocol and original Mifare Classic cards. So the card could be filtered out with a protocol-based filters (i.e. Iron Logic OTP2 filter).* +*But at the same time there is some unidentified behavior, which doesn't fully corresponds the protocol and original Mifare Classic tags. So the tag could be filtered out with a protocol-based filters (i.e. Iron Logic OTP2 filter).* ### Characteristics ^[Top](#top) @@ -980,7 +981,7 @@ hf 14a info ``` -Currently Proxmark3 doesn't identify it as a sepatate card. +Currently Proxmark3 doesn't identify it as a separate tag. Before the sealing could be detected from the config block value: ``` @@ -992,7 +993,7 @@ Before the sealing could be detected from the config block value: [+] 7A FF 00 00 00 00 00 00 BA FA 00 00 00 00 00 08 [ F1 69 ] ``` -### Proxmark3 commands +### Commands ^[Top](#top) All commands are available before sealing. @@ -1012,7 +1013,7 @@ hf 14a raw -c 85000000000000000000000000000008 ## ZUID ^[Top](#top) -That card is a UID card, built on USCUID chip. It doesn't sold separately, but could be found on marketplaces under the guise of a UID card. +That tag is a UID tag, built on USCUID chip. It doesn't sold separately, but could be found on marketplaces under the guise of a UID tag. ### Characteristics ^[Top](#top) @@ -1032,7 +1033,7 @@ hf 14a info ``` -Currently Proxmark3 doesn't identify it as a sepatate card. +Currently Proxmark3 doesn't identify it as a separate tag. Could be detected from the config block value: ``` @@ -1044,13 +1045,56 @@ Could be detected from the config block value: [+] 7A FF 00 00 00 00 00 00 00 00 00 00 00 00 00 08 [ 4E 17 ] ``` -### Proxmark3 commands +### Commands ^[Top](#top) * Proxmark3 magic Gen1 commands * Read configuration: `E000+crc` * Write configuration: `E100+crc` +## GDM +^[Top](#top) + +The tag has a shadow mode, which means that every change to normal MFC memory would be restored back from the persistent memory after being off RFID field. + +### Characteristics +^[Top](#top) + +* Configuration block value: `850000000000000000005A5A00000008` +* No direct write to block 0 +* Responds to magic authentication: select, `8000+crc`, `[Crypto1 Auth: 000000000000]` + +### Identify +^[Top](#top) + +``` +hf 14a info +... +[+] Magic capabilities : Gen 4 GDM + +``` + +Could be manually validated with the configuration block value: + +``` +[usb] pm3 --> hf mf gdmcfg +[+] config... 85 00 00 00 00 00 00 5A 00 FF 00 5A 00 00 00 08 +``` + +### Commands +^[Top](#top) + +* Magic authentication: select, `8000+crc`, `[Crypto1 Auth: 000000000000]` + * Backdoor read: `38xx+crc` + * Backdoor write: `A8xx+crc`, `[16 bytes data]+crc` + * Read configuration: `E000+crc` + * Write configuration: `E100+crc`; `[16 bytes data]+crc` +* Proxmark3 commands (does auth and executes the corresponding command) + * Backdoor write: `gdmsetcfg` + * Read configuration: `gdmcfg` + * Write configuration: `gdmsetcfg` + + ## MIFARE Classic, other versions ^[Top](#top) From 2cd0c04575dadc1b550091b2eb6c02a5cfa0ae11 Mon Sep 17 00:00:00 2001 From: Mykhailo Shevchuk <myte@ukr.net> Date: Tue, 26 Dec 2023 22:39:52 +0200 Subject: [PATCH 0927/1034] GDCUID --- doc/magic_cards_notes.md | 42 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/doc/magic_cards_notes.md b/doc/magic_cards_notes.md index 33b05e0e6..72bb86744 100644 --- a/doc/magic_cards_notes.md +++ b/doc/magic_cards_notes.md @@ -35,6 +35,7 @@ Useful docs: * [UFUID](#ufuid) * [ZUID](#zuid) * [GDM](#gdm) + * [GDCUID](#gdcuid) * [MIFARE Classic, other versions](#mifare-classic-other-versions) * [MIFARE Classic Super](#mifare-classic-super) - [MIFARE Ultralight](#mifare-ultralight) @@ -880,6 +881,7 @@ No implemented commands today | Factory configuration | Name | | --- | --- | | 850000000000000000005A5A00000008 | GDM | +| 850000000000005A00FF005A00000008 | GDCUID | | 850000000000005A0000005A5A5A0008 | UCUID | | 8500000000005A00005A005A005A0008 | "7 byte hard" | | 7AFF850102015A00005A005A005A0008 | M1-7B | @@ -1078,7 +1080,7 @@ Could be manually validated with the configuration block value: ``` [usb] pm3 --> hf mf gdmcfg -[+] config... 85 00 00 00 00 00 00 5A 00 FF 00 5A 00 00 00 08 +[+] config... 85 00 00 00 00 00 00 00 00 00 5A 5A 00 00 00 08 ``` ### Commands @@ -1094,6 +1096,44 @@ Could be manually validated with the configuration block value: * Read configuration: `gdmcfg` * Write configuration: `gdmsetcfg` +## GDCUID +^[Top](#top) + +That tag is a CUID tag, built on USCUID chip. It doesn't sold separately, but could be found on marketplaces under the guise of a CUID tag. + +### Characteristics +^[Top](#top) + +* Configuration block value: `850000000000005A00FF005A00000008` +* Allows direct write to the block 0, so is Android compatible +* Responds to magic authentication: select, `8000+crc`, `[Crypto1 Auth: 000000000000]` + +### Identify +^[Top](#top) + +``` +hf 14a info +... +[+] Magic capabilities : Gen 4 GDM + +``` +Currently Proxmark3 doesn't identify it as a separate tag. +Could be manually validated with the configuration block value: + +``` +[usb] pm3 --> hf mf gdmcfg +[+] config... 85 00 00 00 00 00 00 5A 00 FF 00 5A 00 00 00 08 +``` + +### Commands +^[Top](#top) + +* Magic authentication: select, `8000+crc`, `[Crypto1 Auth: 000000000000]` + * Read configuration: `E000+crc` + * Write configuration: `E100+crc`; `[16 bytes data]+crc` +* Proxmark3 commands (does auth and executes the corresponding command) + * Read configuration: `gdmcfg` + * Write configuration: `gdmsetcfg` ## MIFARE Classic, other versions ^[Top](#top) From 5c69ea75249f2f46d23c0445cb9ad4c0133fc81c Mon Sep 17 00:00:00 2001 From: Mykhailo Shevchuk <myte@ukr.net> Date: Tue, 26 Dec 2023 23:03:09 +0200 Subject: [PATCH 0928/1034] ULtra + UL-5 --- doc/magic_cards_notes.md | 41 +++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/doc/magic_cards_notes.md b/doc/magic_cards_notes.md index 72bb86744..340581bd1 100644 --- a/doc/magic_cards_notes.md +++ b/doc/magic_cards_notes.md @@ -1562,7 +1562,7 @@ script run hf_mfu_magicwrite -h ## UL series (RU) ^[Top](#top) -Custom chips, manufactured by iKey LLC for cloning Ultralight tags. +Custom chips, manufactured by iKey LLC for cloning Ultralight tags used in Visit intercoms. That leads to the non-standard for Ultralight chips tag version. ### UL-Y ^[Top](#top) @@ -1597,16 +1597,44 @@ hf mfu info [=] TAG IC Signature: 0000000000000000000000000000000000000000000000000000000000000000 [=] --- Tag Version [=] Raw bytes: 00 34 21 01 01 00 0E 03 +[=] Vendor ID: 34, Mikron JSC Russia +[=] Product type: 21, unknown ``` -Remember that this is not a reliable method of identification, as it interferes with locked [UL-5](#mifare-ul-5). +#### ULtra flavour 1 +^[Top](#top) + +Could be identified by indirect evidence before writing + +* Initial UID: `34 D7 08 11 AD D7 D0` +* `hf mfu dump --ns` + ``` + [=] 3/0x03 | CF 39 A1 C8 | 1 | .9.. + [=] 4/0x04 | B6 69 26 0D | 1 | .i&. + [=] 5/0x05 | EC A1 73 C4 | 1 | ..s. + [=] 6/0x06 | 81 3D 29 B8 | 1 | .=). + [=] 16/0x10 | 6A F0 2D FF | 0 | j.-. + [=] 20/0x14 | 6A F0 2D FF | 0 | j.-. + [=] 24/0x18 | 6A F0 2D FF | 0 | j.-. + [=] 38/0x26 | 00 E2 00 00 | 0 | .... <- E2, Virtual Card Type Identifier is not default + + ``` + +#### ULtra flavour 2 +^[Top](#top) + +Could be identified by indirect evidence before writing + +* Initial UID: `04 15 4A 23 36 2F 81` +* Values in pages `3, 4, 5, 6, 16, 20, 24, 38` are default for that tag flavour ### UL-5 ^[Top](#top) -Ultralight EV1 magic; 41 page. Recommended for Vizit RF3.1 with 41 page and if [ULtra](#mifare-ultra) has failed. +Ultralight EV1 magic; 41 page. Recommended for Vizit RF3.1 with 41 page. +Created as a response to filters that try to overwrite page 0 (as a detection for [ULtra](#mifare-ultra) tags). -Behavior: similar to Ultra, but after editing page 0, tag becomes original Mifare Ultralight EV1. +Behavior: similar to Ultra, but after editing page 0 become locked and tag becomes the original Mifare Ultralight EV1 (except the tag version, which remains specific). **WARNING!** When using UL-5 to clone, write UID pages in inverse (from 2 to 0) and do NOT make mistakes! This tag does not allow reversing one-way actions (OTP page, lock bits). @@ -1619,11 +1647,14 @@ hf mfu info TAG IC Signature: 0000000000000000000000000000000000000000000000000000000000000000 [=] --- Tag Version [=] Raw bytes: 00 34 21 01 01 00 0E 03 +[=] Vendor ID: 34, Mikron JSC Russia ``` After personalization it is not possible to identify UL-5. -Some chips have UID of `AA 55 C3 A4 30 61 80`. +Usually chips have initial UIDs: + * `AA 55 C3 A4 30 61 80` + * `AA 55 C3 A4 30 61 80` ### UL, other chips From 117aa46e9e80281ffe53c09651b9f274529b8cc8 Mon Sep 17 00:00:00 2001 From: Anonymous <hazardousvoltage312@gmail.com> Date: Wed, 27 Dec 2023 00:00:01 -0500 Subject: [PATCH 0929/1034] cmdflashmemspiffs.c: allow dump from SPIFFS to trace buffer without saving to local fs --- client/src/cmdflashmemspiffs.c | 47 ++++++++++++++++++++++------------ client/src/cmdtrace.c | 19 ++++++++++++++ client/src/cmdtrace.h | 1 + 3 files changed, 51 insertions(+), 16 deletions(-) diff --git a/client/src/cmdflashmemspiffs.c b/client/src/cmdflashmemspiffs.c index 218109755..70efd5db6 100644 --- a/client/src/cmdflashmemspiffs.c +++ b/client/src/cmdflashmemspiffs.c @@ -16,6 +16,7 @@ // Proxmark3 RDV40 Flash memory commands //----------------------------------------------------------------------------- #include "cmdflashmemspiffs.h" +#include "cmdtrace.h" #include <ctype.h> #include "cmdparser.h" // command_t #include "pmflash.h" @@ -369,17 +370,21 @@ static int CmdFlashMemSpiFFSDump(const char *Cmd) { CLIParserInit(&ctx, "mem spiffs dump", "Dumps device SPIFFS file to a local file\n" "Size is handled by first sending a STAT command against file to verify existence", - "mem spiffs dump -s tag.bin --> download binary file from device\n" - "mem spiffs dump -s tag.bin -d a001 -e --> download tag.bin, save as `a001.bin`" + "mem spiffs dump -s tag.bin --> download binary file from device\n" + "mem spiffs dump -s tag.bin -d a001 --> download tag.bin, save as `a001.bin`\n" + "mem spiffs dump -s tag.bin -t --> download tag.bin into client trace buffer" ); void *argtable[] = { arg_param_begin, arg_str1("s", "src", "<fn>", "SPIFFS file to save"), arg_str0("d", "dest", "<fn>", "file name to save to <w/o .bin>"), + arg_lit0("t", "trace", "download into trace buffer, not local file"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); + bool use_buffer = arg_get_lit(ctx, 3); + int slen = 0; char src[32] = {0}; @@ -416,21 +421,31 @@ static int CmdFlashMemSpiFFSDump(const char *Cmd) { return PM3_EFLASH; } - // save to file - char fn[FILE_PATH_SIZE] = {0}; - if (dlen == 0) { - strncpy(fn, src, slen); + if (use_buffer == true) { + // copy to client trace buffer + if (!ImportTraceBuffer(dump, len)) + { + PrintAndLogEx(FAILED, "error, copying to trace buffer"); + free(dump); + return PM3_EMALLOC; + } + PrintAndLogEx(SUCCESS, "Use 'trace list -1 -t ...' to view, 'trace save -f ...' to save"); } else { - strncpy(fn, dest, dlen); + // save to file + char fn[FILE_PATH_SIZE] = {0}; + if (dlen == 0) { + strncpy(fn, src, slen); + } else { + strncpy(fn, dest, dlen); + } + + // set file extension + char *suffix = strchr(fn, '.'); + if (suffix) + saveFile(fn, suffix, dump, len); + else + saveFile(fn, ".bin", dump, len); // default } - - // set file extension - char *suffix = strchr(fn, '.'); - if (suffix) - saveFile(fn, suffix, dump, len); - else - saveFile(fn, ".bin", dump, len); // default - free(dump); return PM3_SUCCESS; } @@ -513,7 +528,7 @@ static int CmdFlashMemSpiFFSView(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "mem spiffs view", - "View a file on flash memory on devicer in console", + "View a file on flash memory on device in console", "mem spiffs view -f tag.bin" ); diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index c4d278c0a..b277c2088 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -91,6 +91,25 @@ static uint8_t calc_pos(const uint8_t *d) { return pos; } +// Copy an existing buffer into client trace buffer +// I think this is cleaner than further globalizing gs_trace, and may lend itself to more modularity later? +bool ImportTraceBuffer(uint8_t *trace_src, uint16_t trace_len) +{ + if (trace_len == 0 || trace_src == NULL) return(false); + if (gs_trace) { + free(gs_trace); + gs_traceLen = 0; + } + gs_trace = calloc(trace_len, sizeof(uint8_t)); + if (gs_trace == NULL) + { + return(false); + } + memcpy(gs_trace, trace_src, trace_len); + gs_traceLen = trace_len; + return(true); +} + static uint8_t extract_uid[10] = {0}; static uint8_t extract_uidlen = 0; static uint8_t extract_epurse[8] = {0}; diff --git a/client/src/cmdtrace.h b/client/src/cmdtrace.h index 6f2967d44..2be583a06 100644 --- a/client/src/cmdtrace.h +++ b/client/src/cmdtrace.h @@ -24,5 +24,6 @@ int CmdTrace(const char *Cmd); int CmdTraceList(const char *Cmd); int CmdTraceListAlias(const char *Cmd, const char *alias, const char *protocol); +bool ImportTraceBuffer(uint8_t *trace_src, uint16_t trace_len); #endif From 3aab9a4d043c7c6ba027eae1c267a8b4a2671e7b Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Wed, 27 Dec 2023 22:12:45 +0800 Subject: [PATCH 0930/1034] Update CLI prompt after switching connection type --- CHANGELOG.md | 1 + client/src/proxmark3.c | 2 ++ client/src/proxmark3.h | 1 + 3 files changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3877e21f7..ab62c38b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed CLI prompt - Update connection type prompt after running `hw connect` (@wh201906) - Changed `uart_receive()` - Check if TCP connection is lost (@wh201906) - Change `data detectclock` - now tries all clocks if called w/o any params (@iceman1001) - Changed `lf search -1u` - improved the autocorrelation detection for unknown signals (@iceman1001) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 0df264d5f..c308360c2 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -281,6 +281,8 @@ main_loop(char *script_cmds_file, char *script_cmd, bool stayInCommandLoop) { prompt_net = PROXPROMPT_NET_UDPV6; break; case PM3_NONE: + prompt_net = PROXPROMPT_NET_NONE; + break; default: break; } diff --git a/client/src/proxmark3.h b/client/src/proxmark3.h index f58c7950e..bc6dcb3e7 100644 --- a/client/src/proxmark3.h +++ b/client/src/proxmark3.h @@ -39,6 +39,7 @@ #define PROXPROMPT_NET_UDPV4 "|" _RL_BOLD_GREEN_("udp") #define PROXPROMPT_NET_TCPV6 "|" _RL_BOLD_GREEN_("tcp v6") #define PROXPROMPT_NET_UDPV6 "|" _RL_BOLD_GREEN_("udp v6") +#define PROXPROMPT_NET_NONE "" #define PROXHISTORY "history.txt" From e5dd9952d78e6b9a7a6e18cb4da8dd71352a1ba1 Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Wed, 27 Dec 2023 22:13:26 +0800 Subject: [PATCH 0931/1034] Misc Change style of if block with single statement Reset rx_empty_counter in uart_open() --- client/src/uart/uart_posix.c | 13 +++++++++---- client/src/uart/uart_win32.c | 13 +++++++++---- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index c29c72826..325d26abd 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -90,6 +90,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } sp->udpBuffer = NULL; + rx_empty_counter = 0; // init timeouts timeout.tv_usec = UART_FPC_CLIENT_RX_TIMEOUT_MS * 1000; g_conn.send_via_local_ip = false; @@ -157,10 +158,12 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } // for bind option, it's possible to only specify address or port - if (strlen(bindAddrStr) == 0) + if (strlen(bindAddrStr) == 0) { bindAddrStr = NULL; - if (bindPortStr != NULL && strlen(bindPortStr) == 0) + } + if (bindPortStr != NULL && strlen(bindPortStr) == 0) { bindPortStr = NULL; + } } const char *addrStr = NULL; @@ -208,8 +211,9 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { for (rp = addr; rp != NULL; rp = rp->ai_next) { sfd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); - if (sfd == -1) + if (sfd == -1) { continue; + } if (!uart_bind(&sfd, bindAddrStr, bindPortStr, isBindingIPv6)) { PrintAndLogEx(ERR, "error: Could not bind. errno: %d", errno); @@ -220,8 +224,9 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { return INVALID_SERIAL_PORT; } - if (connect(sfd, rp->ai_addr, rp->ai_addrlen) != -1) + if (connect(sfd, rp->ai_addr, rp->ai_addrlen) != -1) { break; + } close(sfd); } diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index 97ecd41bd..a343936d2 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -93,6 +93,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } sp->udpBuffer = NULL; + rx_empty_counter = 0; g_conn.send_via_local_ip = false; g_conn.send_via_ip = PM3_NONE; @@ -149,10 +150,12 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } // for bind option, it's possible to only specify address or port - if (strlen(bindAddrStr) == 0) + if (strlen(bindAddrStr) == 0) { bindAddrStr = NULL; - if (bindPortStr != NULL && strlen(bindPortStr) == 0) + } + if (bindPortStr != NULL && strlen(bindPortStr) == 0) { bindPortStr = NULL; + } } const char *addrStr = NULL; @@ -211,8 +214,9 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { for (rp = addr; rp != NULL; rp = rp->ai_next) { hSocket = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); - if (hSocket == INVALID_SOCKET) + if (hSocket == INVALID_SOCKET) { continue; + } if (!uart_bind(&hSocket, bindAddrStr, bindPortStr, isBindingIPv6)) { PrintAndLogEx(ERR, "error: Could not bind. error: %u", WSAGetLastError()); @@ -225,8 +229,9 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { return INVALID_SERIAL_PORT; } - if (connect(hSocket, rp->ai_addr, (int)rp->ai_addrlen) != INVALID_SOCKET) + if (connect(hSocket, rp->ai_addr, (int)rp->ai_addrlen) != INVALID_SOCKET) { break; + } closesocket(hSocket); hSocket = INVALID_SOCKET; From 9163e26e5926548fe92d1c890c8af26e17dcf500 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 28 Dec 2023 10:34:31 +0100 Subject: [PATCH 0932/1034] wrong size, need to verify its history --- client/dictionaries/mfc_default_keys.dic | 3 --- 1 file changed, 3 deletions(-) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 574d6f05c..5a11da8ca 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -149,9 +149,6 @@ AC37E76385F5 1EE38419EF39 26578719DCD9 # -# EuroKEY (KeySECI) -4B657953454349 -# # more Keys from mfc_default_keys.lua 000000000001 000000000002 From 33eaaa535f3379ec8a5afdc04be6d5f9d83dd5ea Mon Sep 17 00:00:00 2001 From: nvx <neovortex@gmail.com> Date: Fri, 29 Dec 2023 22:06:57 +1000 Subject: [PATCH 0933/1034] Changed hf_cardhopper standalone mode to allow running over the internal Proxmark3 USB-CDC serial port. This functionality can be enabled by adding the following to your Makefile.platform: STANDALONE_PLATFORM_DEFS+=-DCARDHOPPER_USB --- CHANGELOG.md | 1 + armsrc/Standalone/hf_cardhopper.c | 38 +++++++++++++++++++++++-------- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab62c38b7..1acd29e49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf_cardhopper` standalone mode to allow running over the internal Proxmark3 USB-CDC serial port (@nvx) - Fixed CLI prompt - Update connection type prompt after running `hw connect` (@wh201906) - Changed `uart_receive()` - Check if TCP connection is lost (@wh201906) - Change `data detectclock` - now tries all clocks if called w/o any params (@iceman1001) diff --git a/armsrc/Standalone/hf_cardhopper.c b/armsrc/Standalone/hf_cardhopper.c index 90742f4cf..b589542c4 100644 --- a/armsrc/Standalone/hf_cardhopper.c +++ b/armsrc/Standalone/hf_cardhopper.c @@ -27,7 +27,18 @@ #include "ticks.h" #include "util.h" #include "usart.h" +#include "cmd.h" +#include "usb_cdc.h" +#ifdef CARDHOPPER_USB +#define cardhopper_write usb_write +#define cardhopper_read usb_read_ng +#define cardhopper_data_available usb_poll_validate_length +#else +#define cardhopper_write usart_writebuffer_sync +#define cardhopper_read usart_read_ng +#define cardhopper_data_available usart_rxdata_available +#endif void ModInfo(void) { DbpString(" HF - Long-range relay 14a over serial<->IP - a.k.a. CardHopper (Sam Haskins)"); @@ -64,6 +75,13 @@ static bool GetIso14443aCommandFromReaderInterruptible(uint8_t *, uint8_t *, int void RunMod(void) { + // Ensure debug logs don't polute stream +#ifdef CARDHOPPER_USB + g_reply_via_usb = false; +#else + g_reply_via_fpc = false; +#endif + StandAloneMode(); DbpString(_CYAN_("[@]") " CardHopper has started - waiting for mode"); FpgaDownloadAndGo(FPGA_BITSTREAM_HF); @@ -191,7 +209,7 @@ static void become_card(void) { WDT_HIT(); if (!GetIso14443aCommandFromReaderInterruptible(fromReaderDat, parity, &fromReaderLen)) { - if (usart_rxdata_available()) { + if (cardhopper_data_available()) { read_packet(rx); if (memcmp(magicRSRT, rx->dat, sizeof(magicRSRT)) == 0) { DbpString(_CYAN_("[@]") " Breaking from reader loop"); @@ -359,23 +377,25 @@ static void reply_with_packet(packet_t *packet) { static void read_packet(packet_t *packet) { - while (!usart_rxdata_available()) { + while (!cardhopper_data_available()) { WDT_HIT(); SpinDelayUs(100); } - uint32_t dataReceived = usart_read_ng((uint8_t *) packet, sizeof(packet_t)) - 1; - while (dataReceived != packet->len) { - while (!usart_rxdata_available()) WDT_HIT(); + cardhopper_read((uint8_t *) &packet->len, 1); - dataReceived += usart_read_ng(packet->dat + dataReceived, 255 - dataReceived); + uint32_t dataReceived = 0; + while (dataReceived != packet->len) { + while (!cardhopper_data_available()) WDT_HIT(); + + dataReceived += cardhopper_read(packet->dat + dataReceived, packet->len - dataReceived); } - usart_writebuffer_sync(magicACK, sizeof(magicACK)); + cardhopper_write(magicACK, sizeof(magicACK)); } static void write_packet(packet_t *packet) { - usart_writebuffer_sync((uint8_t *) packet, packet->len + 1); + cardhopper_write((uint8_t *) packet, packet->len + 1); } @@ -394,7 +414,7 @@ static bool GetIso14443aCommandFromReaderInterruptible(uint8_t *received, uint8_ WDT_HIT(); if (flip == 3) { - if (usart_rxdata_available()) + if (cardhopper_data_available()) return false; flip = 0; From cc5df3447cc90be31bd39841d4e58da4e2ca3ef8 Mon Sep 17 00:00:00 2001 From: ikarus <ikarus4ever@web.de> Date: Fri, 29 Dec 2023 21:20:47 +0100 Subject: [PATCH 0934/1034] Fix communication timing (delay) after PM3 detection. --- client/src/flash.c | 2 +- client/src/proxmark3.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/flash.c b/client/src/flash.c index e4468ad8d..067ad1c7f 100644 --- a/client/src/flash.c +++ b/client/src/flash.c @@ -452,7 +452,7 @@ static int enter_bootloader(char *serial_port_name, bool wait_appear) { SendCommandBL(CMD_HARDWARE_RESET, 0, 0, 0, NULL, 0); PrintAndLogEx(SUCCESS, "Press and hold down button NOW if your bootloader requires it."); } - msleep(100); + msleep(200); CloseProxmark(g_session.current_device); // Let time to OS to make the port disappear msleep(1000); diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index c308360c2..f121017d7 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -671,6 +671,7 @@ static int flash_pm3(char *serial_port_name, uint8_t num_files, const char *file if (OpenProxmark(&g_session.current_device, serial_port_name, true, 60, true, FLASHMODE_SPEED)) { PrintAndLogEx(NORMAL, _GREEN_(" found")); + msleep(200); } else { PrintAndLogEx(ERR, "Could not find Proxmark3 on " _RED_("%s") ".\n", serial_port_name); ret = PM3_ETIMEOUT; From 32b846dbeaf1a5bc8d1f9ed6154b258a203bbfc1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 Dec 2023 22:08:45 +0100 Subject: [PATCH 0935/1034] textual --- client/src/cmdhf15.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 065f4e064..a8172defa 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -99,15 +99,15 @@ static const productName_t uidmapping[] = { //I-Code SLI-L [IC id = 03 + bit36 set to 0] //I-Code SLIX-L [IC id = 03 + bit36 set to 1] { 0xE004000000000000LL, 16, "NXP Semiconductors Germany (Philips)" }, - { 0xE004010000000000LL, 24, "NXP(Philips); IC SL2 ICS20/ICS21(SLI) ICS2002/ICS2102(SLIX) ICS2602(SLIX2)" }, - { 0xE004011800000000LL, 0xFFFFFF1800000000LL, "NXP(Philips); IC NTP53x2/NTP5210/NTA5332(NTAG 5)" }, - { 0xE004010000000000LL, 0xFFFFFF1800000000LL, "NXP(Philips); IC SL2 ICS20/ICS21(SLI)" }, - { 0xE004011000000000LL, 0xFFFFFF1800000000LL, "NXP(Philips); IC SL2 ICS2002/ICS2102(SLIX)" }, - { 0xE004010800000000LL, 0xFFFFFF1800000000LL, "NXP(Philips); IC SL2 ICS2602(SLIX2)" }, - { 0xE004020000000000LL, 0xFFFFFF1000000000LL, "NXP(Philips); IC SL2 ICS53/ICS54(SLI-S)" }, - { 0xE004021000000000LL, 0xFFFFFF1000000000LL, "NXP(Philips); ICS5302/ICS5402(SLIX-S)" }, - { 0xE004030000000000LL, 0xFFFFFF1000000000LL, "NXP(Philips); IC SL2 ICS50/ICS51(SLI-L)" }, - { 0xE004031000000000LL, 0xFFFFFF1000000000LL, "NXP(Philips); ICS5002/ICS5102(SLIX-L)" }, + { 0xE004010000000000LL, 24, "NXP (Philips); IC SL2 ICS20/ICS21 (SLI) ICS2002/ICS2102 (SLIX) ICS2602 (SLIX2)" }, + { 0xE004011800000000LL, 0xFFFFFF1800000000LL, "NXP (Philips); IC NTP53x2/NTP5210/NTA5332 " AEND "( " _CYAN_("NTAG 5") " )" }, + { 0xE004010000000000LL, 0xFFFFFF1800000000LL, "NXP (Philips); IC SL2 ICS20/ICS21 " AEND "( " _CYAN_("SLI") " )" }, + { 0xE004011000000000LL, 0xFFFFFF1800000000LL, "NXP (Philips); IC SL2 ICS2002/ICS2102 " AEND "( " _CYAN_("SLIX") " )" }, + { 0xE004010800000000LL, 0xFFFFFF1800000000LL, "NXP (Philips); IC SL2 ICS2602 " AEND "( " _CYAN_("SLIX2") " )" }, + { 0xE004020000000000LL, 0xFFFFFF1000000000LL, "NXP (Philips); IC SL2 ICS53/ICS54 " AEND "( " _CYAN_("SLI-S") " )" }, + { 0xE004021000000000LL, 0xFFFFFF1000000000LL, "NXP (Philips); ICS5302/ICS5402 " AEND "( " _CYAN_("SLIX-S") " )" }, + { 0xE004030000000000LL, 0xFFFFFF1000000000LL, "NXP (Philips); IC SL2 ICS50/ICS51 " AEND "( " _CYAN_("SLI-L") " )" }, + { 0xE004031000000000LL, 0xFFFFFF1000000000LL, "NXP (Philips); ICS5002/ICS5102 " AEND "( " _CYAN_("SLIX-L") " )" }, // E0 05 XX .. .. .. // 05 = Manufacturer code (Infineon) @@ -115,10 +115,10 @@ static const productName_t uidmapping[] = { { 0xE005000000000000LL, 16, "Infineon Technologies AG Germany" }, { 0xE005A10000000000LL, 24, "Infineon; SRF55V01P [IC id = 161] plain mode 1kBit"}, { 0xE005A80000000000LL, 24, "Infineon; SRF55V01P [IC id = 168] pilot series 1kBit"}, - { 0xE005400000000000LL, 24, "Infineon; SRF55V02P [IC id = 64] plain mode 2kBit"}, - { 0xE005000000000000LL, 24, "Infineon; SRF55V10P [IC id = 00] plain mode 10KBit"}, - { 0xE005500000000000LL, 24, "Infineon; SRF55V02S [IC id = 80] secure mode 2kBit"}, - { 0xE005100000000000LL, 24, "Infineon; SRF55V10S [IC id = 16] secure mode 10KBit"}, + { 0xE005400000000000LL, 24, "Infineon; SRF55V02P [IC id = 64] plain mode 2kBit"}, + { 0xE005000000000000LL, 24, "Infineon; SRF55V10P [IC id = 00] plain mode 10KBit"}, + { 0xE005500000000000LL, 24, "Infineon; SRF55V02S [IC id = 80] secure mode 2kBit"}, + { 0xE005100000000000LL, 24, "Infineon; SRF55V10S [IC id = 16] secure mode 10KBit"}, { 0xE0051E0000000000LL, 23, "Infineon; SLE66r01P [IC id = 3x = My-d Move or My-d move NFC]"}, { 0xE005200000000000LL, 21, "Infineon; SLE66r01P [IC id = 3x = My-d Move or My-d move NFC]"}, From 8f577ad9630752ce2a8237ec55a8d2d221fc180e Mon Sep 17 00:00:00 2001 From: nvx <neovortex@gmail.com> Date: Sat, 30 Dec 2023 19:26:23 +1000 Subject: [PATCH 0936/1034] Improved magic detection Magic detection no longer stops when a single type is found as cards may support multiple types of magic, so all detected types will be reported now. GDM/USCUID chips are now detected when GDM magic auth is disabled but magic WUP (40 or 20) is enabled. Gen2/CUID/DirectWrite is now detected when default keys and ACLs are used by attempting to write to block 0 but aborting before actually completing the write. --- CHANGELOG.md | 1 + armsrc/mifarecmd.c | 198 ++++++++++++++++++++------------- client/src/mifare/mifarehost.c | 89 ++++++++------- include/protocols.h | 6 +- 4 files changed, 173 insertions(+), 121 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1acd29e49..2c447b941 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf 14a info` magic detection to better detect different GDM/USCUID configurations and improved Gen2/CUID detection when default keys are used (@nvx) - Changed `hf_cardhopper` standalone mode to allow running over the internal Proxmark3 USB-CDC serial port (@nvx) - Fixed CLI prompt - Update connection type prompt after running `hw connect` (@wh201906) - Changed `uart_receive()` - Check if TCP connection is lost (@wh201906) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 87b00c6b2..afbe8610a 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -1067,13 +1067,13 @@ void MifareNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8 dmax = MAX(dmax, i); } else { // allow some slack for proper timing - delta_time = auth2_time - auth1_time + 32; + delta_time = auth2_time - auth1_time + 32; } if (g_dbglevel >= DBG_DEBUG) Dbprintf("Nested: calibrating... ntdist=%d", i); } else { unsuccessful_tries++; // card isn't vulnerable to nested attack (random numbers are not predictable) - if (unsuccessful_tries > NESTED_MAX_TRIES) { + if (unsuccessful_tries > NESTED_MAX_TRIES) { isOK = PM3_EFAILED; } } @@ -2208,6 +2208,9 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { static uint8_t wupC1[] = { MIFARE_MAGICWUPC1 }; static uint8_t wupC2[] = { MIFARE_MAGICWUPC2 }; static uint8_t wipeC[] = { MIFARE_MAGICWIPEC }; +// GDM alt magic wakeup +static uint8_t wupGDM1[] = { MIFARE_MAGIC_GDM_WUPC1 }; +//static uint8_t wupGDM2[] = { MIFARE_MAGIC_GDM_WUPC2 }; void MifareCSetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { @@ -2413,15 +2416,17 @@ void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { void MifareCIdent(bool is_mfc) { // variables - uint8_t isGen = 0; uint8_t rec[1] = {0x00}; uint8_t recpar[1] = {0x00}; uint8_t rats[4] = {ISO14443A_CMD_RATS, 0x80, 0x31, 0x73}; uint8_t rdblf0[4] = {ISO14443A_CMD_READBLOCK, 0xF0, 0x8D, 0x5f}; uint8_t rdbl00[4] = {ISO14443A_CMD_READBLOCK, 0x00, 0x02, 0xa8}; - uint8_t gen4gdm[4] = {MIFARE_MAGIC_GDM_AUTH_KEY, 0x00, 0x6C, 0x92}; + uint8_t gen4gdmAuth[4] = {MIFARE_MAGIC_GDM_AUTH_KEY, 0x00, 0x6C, 0x92}; + uint8_t gen4gdmGetConf[4] = {MIFARE_MAGIC_GDM_READ_CFG, 0x00, 0x39, 0xF7}; uint8_t gen4GetConf[8] = {GEN_4GTU_CMD, 0x00, 0x00, 0x00, 0x00, GEN_4GTU_GETCNF, 0, 0}; uint8_t superGen1[9] = {0x0A, 0x00, 0x00, 0xA6, 0xB0, 0x00, 0x10, 0x14, 0x1D}; + bool isGen2 = false; + bool isGen1AGdm = false; uint8_t *par = BigBuf_malloc(MAX_PARITY_SIZE); uint8_t *buf = BigBuf_malloc(PM3_CMD_DATA_SIZE); @@ -2432,20 +2437,27 @@ void MifareCIdent(bool is_mfc) { memset(uid, 0x00, 10); uint32_t cuid = 0; - uint8_t data[1] = {0x00}; + size_t data_off = 0; + uint8_t data[16] = {0x00}; iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); // Generation 1 test ReaderTransmitBitsPar(wupC1, 7, NULL, NULL); if (ReaderReceive(rec, recpar) && (rec[0] == 0x0a)) { + uint8_t isGen = MAGIC_GEN_1A; ReaderTransmit(wupC2, sizeof(wupC2), NULL); if (!ReaderReceive(rec, recpar) || (rec[0] != 0x0a)) { isGen = MAGIC_GEN_1B; - goto OUT; }; - isGen = MAGIC_GEN_1A; - goto OUT; + data[data_off++] = isGen; + + // check for GDM config + ReaderTransmit(gen4gdmGetConf, sizeof(gen4gdmGetConf), NULL); + int res = ReaderReceive(buf, par); + if (res > 1) { + isGen1AGdm = true; + } } // reset card @@ -2453,6 +2465,11 @@ void MifareCIdent(bool is_mfc) { SpinDelay(40); iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + // reset card + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + SpinDelay(40); + iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + int res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); if (res == 2) { // Check for Magic Gen4 GTU with default password: @@ -2461,8 +2478,7 @@ void MifareCIdent(bool is_mfc) { ReaderTransmit(gen4GetConf, sizeof(gen4GetConf), NULL); res = ReaderReceive(buf, par); if (res == 32 || res == 34) { - isGen = MAGIC_GEN_4GTU; - goto OUT; + data[data_off++] = MAGIC_GEN_4GTU; } } @@ -2474,8 +2490,7 @@ void MifareCIdent(bool is_mfc) { res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); if (res == 2) { if (cuid == 0xAA55C396) { - isGen = MAGIC_GEN_UNFUSED; - goto OUT; + data[data_off++] = MAGIC_GEN_UNFUSED; } ReaderTransmit(rats, sizeof(rats), NULL); @@ -2485,7 +2500,7 @@ void MifareCIdent(bool is_mfc) { ReaderTransmit(superGen1, sizeof(superGen1), NULL); res = ReaderReceive(buf, par); if (res == 22) { - isGen = MAGIC_SUPER_GEN1; + uint8_t isGen = MAGIC_SUPER_GEN1; // check for super card gen2 // not available after RATS, reset card before executing @@ -2500,42 +2515,37 @@ void MifareCIdent(bool is_mfc) { isGen = MAGIC_SUPER_GEN2; } - goto OUT; + data[data_off++] = isGen; } - // test for some MFC gen2 + if (memcmp(buf, "\x09\x78\x00\x91\x02\xDA\xBC\x19\x10\xF0\x05", 11) == 0) { - isGen = MAGIC_GEN_2; - goto OUT; - } - // test for some MFC 7b gen2 - if (memcmp(buf, "\x0D\x78\x00\x71\x02\x88\x49\xA1\x30\x20\x15\x06\x08\x56\x3D", 15) == 0) { - isGen = MAGIC_GEN_2; - goto OUT; - } - // test for Ultralight magic gen2 - if (memcmp(buf, "\x0A\x78\x00\x81\x02\xDB\xA0\xC1\x19\x40\x2A\xB5", 12) == 0) { - isGen = MAGIC_GEN_2; - goto OUT; - } - // test for Ultralight EV1 magic gen2 - if (memcmp(buf, "\x85\x00\x00\xA0\x00\x00\x0A\xC3\x00\x04\x03\x01\x01\x00\x0B\x03\x41\xDF", 18) == 0) { - isGen = MAGIC_GEN_2; - goto OUT; - } - // test for some other Ultralight EV1 magic gen2 - if (memcmp(buf, "\x85\x00\x00\xA0\x0A\x00\x0A\xC3\x00\x04\x03\x01\x01\x00\x0B\x03\x16\xD7", 18) == 0) { - isGen = MAGIC_GEN_2; - goto OUT; - } - // test for some other Ultralight magic gen2 - if (memcmp(buf, "\x85\x00\x00\xA0\x0A\x00\x0A\xB0\x00\x00\x00\x00\x00\x00\x00\x00\x18\x4D", 18) == 0) { - isGen = MAGIC_GEN_2; - goto OUT; - } - // test for NTAG213 magic gen2 - if (memcmp(buf, "\x85\x00\x00\xA0\x00\x00\x0A\xA5\x00\x04\x04\x02\x01\x00\x0F\x03\x79\x0C", 18) == 0) { - isGen = MAGIC_GEN_2; - goto OUT; + // test for some MFC gen2 + isGen2 = true; + data[data_off++] = MAGIC_GEN_2; + } else if (memcmp(buf, "\x0D\x78\x00\x71\x02\x88\x49\xA1\x30\x20\x15\x06\x08\x56\x3D", 15) == 0) { + // test for some MFC 7b gen2 + isGen2 = true; + data[data_off++] = MAGIC_GEN_2; + } else if (memcmp(buf, "\x0A\x78\x00\x81\x02\xDB\xA0\xC1\x19\x40\x2A\xB5", 12) == 0) { + // test for Ultralight magic gen2 + isGen2 = true; + data[data_off++] = MAGIC_GEN_2; + } else if (memcmp(buf, "\x85\x00\x00\xA0\x00\x00\x0A\xC3\x00\x04\x03\x01\x01\x00\x0B\x03\x41\xDF", 18) == 0) { + // test for Ultralight EV1 magic gen2 + isGen2 = true; + data[data_off++] = MAGIC_GEN_2; + } else if (memcmp(buf, "\x85\x00\x00\xA0\x0A\x00\x0A\xC3\x00\x04\x03\x01\x01\x00\x0B\x03\x16\xD7", 18) == 0) { + // test for some other Ultralight EV1 magic gen2 + isGen2 = true; + data[data_off++] = MAGIC_GEN_2; + } else if (memcmp(buf, "\x85\x00\x00\xA0\x0A\x00\x0A\xB0\x00\x00\x00\x00\x00\x00\x00\x00\x18\x4D", 18) == 0) { + // test for some other Ultralight magic gen2 + isGen2 = true; + data[data_off++] = MAGIC_GEN_2; + } else if (memcmp(buf, "\x85\x00\x00\xA0\x00\x00\x0A\xA5\x00\x04\x04\x02\x01\x00\x0F\x03\x79\x0C", 18) == 0) { + // test for NTAG213 magic gen2 + isGen2 = true; + data[data_off++] = MAGIC_GEN_2; } } @@ -2549,10 +2559,35 @@ void MifareCIdent(bool is_mfc) { ReaderTransmit(rdblf0, sizeof(rdblf0), NULL); res = ReaderReceive(buf, par); if (res == 18) { - isGen = MAGIC_NTAG21X; + data[data_off++] = MAGIC_NTAG21X; } } } else { + if (!isGen2) { + // CUID (with default sector 0 B key) test + // regular cards will NAK the WRITEBLOCK(0) command, while DirectWrite will ACK it + // if we do get an ACK, we immediately abort to ensure nothing is ever actually written + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + SpinDelay(40); + iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); + if (res == 2) { + struct Crypto1State mpcs = {0, 0}; + struct Crypto1State *pcs; + pcs = &mpcs; + if (mifare_classic_authex(pcs, cuid, 0, MF_KEY_B, 0xFFFFFFFFFFFF, AUTH_FIRST, NULL, NULL) == 0) { + uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0x00}; + uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = {0x00}; + if ((mifare_sendcmd_short(pcs, 1, ISO14443A_CMD_WRITEBLOCK, 0, receivedAnswer, receivedAnswerPar, NULL) == 1) && (receivedAnswer[0] == 0x0A)) { + data[data_off++] = MAGIC_GEN_2; + // turn off immediately to ensure nothing ever accidentally writes to the block + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + } + } + crypto1_deinit(pcs); + } + } + // magic MFC Gen3 test 1 FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); SpinDelay(40); @@ -2562,48 +2597,51 @@ void MifareCIdent(bool is_mfc) { ReaderTransmit(rdbl00, sizeof(rdbl00), NULL); res = ReaderReceive(buf, par); if (res == 18) { - isGen = MAGIC_GEN_3; + data[data_off++] = MAGIC_GEN_3; } } - // magic MFC Gen4 GDM test - if (isGen != MAGIC_GEN_3) { - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - SpinDelay(40); - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); - res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); - if (res == 2) { - ReaderTransmit(gen4gdm, sizeof(gen4gdm), NULL); - res = ReaderReceive(buf, par); - if (res == 4) { - isGen = MAGIC_GEN_4GDM; - } - } - - if (isGen != MAGIC_GEN_4GDM) { - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - SpinDelay(40); - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); - res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); - if (res == 2) { - struct Crypto1State mpcs = {0, 0}; - struct Crypto1State *pcs; - pcs = &mpcs; - if (mifare_classic_authex(pcs, cuid, 68, MF_KEY_B, 0x707B11FC1481, AUTH_FIRST, NULL, NULL) == 0) { - isGen = MAGIC_QL88; - } - crypto1_deinit(pcs); - } + // magic MFC Gen4 GDM magic auth test + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + SpinDelay(40); + iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); + if (res == 2) { + ReaderTransmit(gen4gdmAuth, sizeof(gen4gdmAuth), NULL); + res = ReaderReceive(buf, par); + if (res == 4) { + data[data_off++] = MAGIC_GDM_AUTH; } } + // QL88 test + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + SpinDelay(40); + iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); + if (res == 2) { + struct Crypto1State mpcs = {0, 0}; + struct Crypto1State *pcs; + pcs = &mpcs; + if (mifare_classic_authex(pcs, cuid, 68, MF_KEY_B, 0x707B11FC1481, AUTH_FIRST, NULL, NULL) == 0) { + data[data_off++] = MAGIC_QL88; + } + crypto1_deinit(pcs); + } } }; -OUT: + if (isGen1AGdm == true) { + data[data_off++] = MAGIC_GDM_WUP_40; + } - data[0] = isGen; - reply_ng(CMD_HF_MIFARE_CIDENT, PM3_SUCCESS, data, sizeof(data)); + // GEM alt magic wakeup (20) + ReaderTransmitBitsPar(wupGDM1, 7, NULL, NULL); + if (ReaderReceive(rec, recpar) && (rec[0] == 0x0a)) { + data[data_off++] = MAGIC_GDM_WUP_20; + } + + reply_ng(CMD_HF_MIFARE_CIDENT, PM3_SUCCESS, data, data_off); // turns off OnSuccessMagic(); BigBuf_free(); diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 96f099d8f..a4fa8f13d 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -612,7 +612,7 @@ int mfStaticNested(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBl uint32_t uid; StateList_t statelists[2]; - struct Crypto1State *p1, * p2, * p3, * p4; + struct Crypto1State *p1, *p2, *p3, *p4; struct { uint8_t block; @@ -1392,54 +1392,63 @@ int detect_classic_static_encrypted_nonce(uint8_t block_no, uint8_t key_type, ui /* try to see if card responses to "Chinese magic backdoor" commands. */ int detect_mf_magic(bool is_mfc) { - uint8_t isGeneration = 0; + uint8_t isMagic = 0; PacketResponseNG resp; clearCommandBuffer(); uint8_t payload[] = { is_mfc }; SendCommandNG(CMD_HF_MIFARE_CIDENT, payload, sizeof(payload)); if (WaitForResponseTimeout(CMD_HF_MIFARE_CIDENT, &resp, 1500)) { - if (resp.status == PM3_SUCCESS) { - isGeneration = resp.data.asBytes[0]; + if (resp.status != PM3_SUCCESS) { + return 0; } } - switch (isGeneration) { - case MAGIC_GEN_1A: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 1a")); - break; - case MAGIC_GEN_1B: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 1b")); - break; - case MAGIC_GEN_2: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 2 / CUID")); - break; - case MAGIC_GEN_3: - PrintAndLogEx(SUCCESS, "Magic capabilities : possibly " _GREEN_("Gen 3 / APDU")); - break; - case MAGIC_GEN_4GTU: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 4 GTU")); - break; - case MAGIC_GEN_4GDM: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 4 GDM")); - break; - case MAGIC_GEN_UNFUSED: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Write Once / FUID")); - break; - case MAGIC_SUPER_GEN1: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Super card (") _CYAN_("Gen 1") _GREEN_(")")); - break; - case MAGIC_SUPER_GEN2: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Super card (") _CYAN_("Gen 2") _GREEN_(")")); - break; - case MAGIC_NTAG21X: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("NTAG21x")); - break; - case MAGIC_QL88: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("QL88")); - default: - break; + for (size_t i = 0; i < resp.length; i++) { + isMagic = 1; + switch (resp.data.asBytes[i]) { + case MAGIC_GEN_1A: + PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 1a")); + break; + case MAGIC_GEN_1B: + PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 1b")); + break; + case MAGIC_GEN_2: + PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 2 / CUID")); + break; + case MAGIC_GEN_3: + PrintAndLogEx(SUCCESS, "Magic capabilities : possibly " _GREEN_("Gen 3 / APDU")); + break; + case MAGIC_GEN_4GTU: + PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 4 GTU")); + break; + case MAGIC_GDM_AUTH: + PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 4 GDM / USCUID (Magic Auth)")); + break; + case MAGIC_GDM_WUP_20: + PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 4 GDM / USCUID (Alt Magic Wakeup)")); + break; + case MAGIC_GDM_WUP_40: + PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 4 GDM / USCUID (Gen1 Magic Wakeup)")); + break; + case MAGIC_GEN_UNFUSED: + PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Write Once / FUID")); + break; + case MAGIC_SUPER_GEN1: + PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Super card (") _CYAN_("Gen 1") _GREEN_(")")); + break; + case MAGIC_SUPER_GEN2: + PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Super card (") _CYAN_("Gen 2") _GREEN_(")")); + break; + case MAGIC_NTAG21X: + PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("NTAG21x")); + break; + case MAGIC_QL88: + PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("QL88")); + default: + break; + } } - return isGeneration; + return isMagic; } bool detect_mfc_ev1_signature(void) { diff --git a/include/protocols.h b/include/protocols.h index 1c8dac3de..d17952fa7 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -191,6 +191,8 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define MIFARE_CMD_RESTORE 0xC2 #define MIFARE_CMD_TRANSFER 0xB0 +#define MIFARE_MAGIC_GDM_WUPC1 0x20 +#define MIFARE_MAGIC_GDM_WUPC2 0x23 #define MIFARE_MAGIC_GDM_AUTH_KEY 0x80 #define MIFARE_MAGIC_GDM_READBLOCK 0x38 #define MIFARE_MAGIC_GDM_WRITEBLOCK 0xA8 @@ -264,8 +266,10 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define MAGIC_NTAG21X 8 #define MAGIC_GEN_3 9 #define MAGIC_GEN_4GTU 10 -#define MAGIC_GEN_4GDM 11 +#define MAGIC_GDM_AUTH 11 #define MAGIC_QL88 12 +#define MAGIC_GDM_WUP_20 13 +#define MAGIC_GDM_WUP_40 14 // Commands for configuration of Gen4 GTU cards. From c448205732c6e6c0652871e282ccaf086f037ce7 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 30 Dec 2023 20:11:38 +0100 Subject: [PATCH 0937/1034] spelling --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 32ca91191..9e2aeed36 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8803,7 +8803,7 @@ static int CmdHF14AMfInfo(const char *Cmd) { CLIParserInit(&ctx, "hf mf info", "Information and check vulnerabilities in a MIFARE Classic card\n" "Some cards in order to extract information you need to specify key\n" - "and/or specific keys in the copmmand line", + "and/or specific keys in the command line", "hf mf info\n" "hf mf info -k FFFFFFFFFFFF -n -v\n" ); From 68f63ec739c47f032c712bfd423adb926d221694 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 30 Dec 2023 21:02:16 +0100 Subject: [PATCH 0938/1034] using the same hiding of debug logging when performing the magic tests --- CHANGELOG.md | 5 +++-- client/src/cmdhf14a.c | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c447b941..193b98e0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,9 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Changed `hf 14a info` magic detection to better detect different GDM/USCUID configurations and improved Gen2/CUID detection when default keys are used (@nvx) - - Changed `hf_cardhopper` standalone mode to allow running over the internal Proxmark3 USB-CDC serial port (@nvx) + - Changed `hf 14a info` - disabled debug logging while performing the magic tests @iceman1001 + - Changed `hf 14a info` - magic detection to better detect different GDM/USCUID configurations and improved Gen2/CUID detection when default keys are used (@nvx) + - Changed `hf_cardhopper` - standalone mode to allow running over the internal Proxmark3 USB-CDC serial port (@nvx) - Fixed CLI prompt - Update connection type prompt after running `hw connect` (@wh201906) - Changed `uart_receive()` - Check if TCP connection is lost (@wh201906) - Change `data detectclock` - now tries all clocks if called w/o any params (@iceman1001) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 5fe74d6b9..b4428e01f 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -42,6 +42,7 @@ #include "desfire.h" // desfire enums #include "mifare/desfirecore.h" // desfire context #include "mifare/mifaredefault.h" +#include "preferences.h" // get/set device debug level static bool g_apdu_in_framing_enable = true; bool Get_apdu_in_framing(void) { @@ -1862,6 +1863,12 @@ static void get_compact_tlv(uint8_t *d, uint8_t n) { } int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { + + uint8_t dbg_curr = DBG_NONE; + if (getDeviceDebugLevel(&dbg_curr) != PM3_SUCCESS) { + return PM3_EFAILED; + } + clearCommandBuffer(); SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT, 0, 0, NULL, 0); PacketResponseNG resp; @@ -2397,6 +2404,10 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { select_status = 2; } + if (setDeviceDebugLevel(verbose ? DBG_INFO : DBG_NONE, false) != PM3_SUCCESS) { + return PM3_EFAILED; + } + int isMagic = 0; if (isMifareClassic) { isMagic = detect_mf_magic(true); @@ -2436,6 +2447,10 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mf`") " commands"); } + if (setDeviceDebugLevel(dbg_curr, false) != PM3_SUCCESS) { + return PM3_EFAILED; + } + if (isMifareUltralight) PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("hf mfu info") "`"); From 1f4f5febae04c7411333471e4762edb07437e871 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 30 Dec 2023 23:08:58 +0100 Subject: [PATCH 0939/1034] adapt magic detection and textual output. Hf mf info - now uses found keys to send for magic detection --- armsrc/appmain.c | 10 ++- armsrc/iso14443a.c | 5 +- armsrc/mifarecmd.c | 134 ++++++++++++++++----------------- armsrc/mifarecmd.h | 2 +- client/src/cmdhf14a.c | 14 ++-- client/src/cmdhfmf.c | 40 ++++++---- client/src/mifare/mifarehost.c | 32 ++++---- 7 files changed, 122 insertions(+), 115 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 456d721db..263238ff9 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -1732,8 +1732,14 @@ static void PacketReceived(PacketCommandNG *packet) { break; } case CMD_HF_MIFARE_CIDENT: { - bool is_mfc = packet->data.asBytes[0]; - MifareCIdent(is_mfc); + + + struct p { + uint8_t is_mfc; + uint8_t key[6]; + } PACKED; + struct p *payload = (struct p *) packet->data.asBytes; + MifareCIdent(payload->is_mfc, payload->key); break; } // Gen 3 magic cards diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 6efac56e7..b7b6d3852 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -2827,8 +2827,7 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint // RATS, Request for answer to select if (no_rats == false) { - uint8_t rats[] = { ISO14443A_CMD_RATS, 0x80, 0x00, 0x00 }; // FSD=256, FSDI=8, CID=0 - AddCrc14A(rats, 2); + uint8_t rats[] = { ISO14443A_CMD_RATS, 0x80, 0x31, 0x73 }; // FSD=256, FSDI=8, CID=0 ReaderTransmit(rats, sizeof(rats), NULL); int len = ReaderReceive(resp, parity_array); if (len == 0) { @@ -3055,7 +3054,7 @@ void ReaderIso14443a(PacketCommandNG *c) { uint8_t *cmd = c->data.asBytes; uint32_t arg0; - uint8_t buf[PM3_CMD_DATA_SIZE] = {0x00}; + uint8_t buf[PM3_CMD_DATA_SIZE_MIX] = {0x00}; if ((param & ISO14A_CONNECT)) { iso14_pcb_blocknum = 0; diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index afbe8610a..4174b69ed 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2414,7 +2414,13 @@ void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { iso14a_set_timeout(timeout); } -void MifareCIdent(bool is_mfc) { +static void mf_reset_card(void) { + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + SpinDelay(40); + iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); +} + +void MifareCIdent(bool is_mfc, uint8_t *key) { // variables uint8_t rec[1] = {0x00}; uint8_t recpar[1] = {0x00}; @@ -2428,17 +2434,13 @@ void MifareCIdent(bool is_mfc) { bool isGen2 = false; bool isGen1AGdm = false; - uint8_t *par = BigBuf_malloc(MAX_PARITY_SIZE); - uint8_t *buf = BigBuf_malloc(PM3_CMD_DATA_SIZE); - uint8_t *uid = BigBuf_malloc(10); - - memset(par, 0x00, MAX_PARITY_SIZE); - memset(buf, 0x00, PM3_CMD_DATA_SIZE); - memset(uid, 0x00, 10); + uint8_t *par = BigBuf_calloc(MAX_PARITY_SIZE); + uint8_t *buf = BigBuf_calloc(PM3_CMD_DATA_SIZE); + uint8_t *uid = BigBuf_calloc(10); + uint8_t *data = BigBuf_calloc(16); uint32_t cuid = 0; size_t data_off = 0; - uint8_t data[16] = {0x00}; iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); @@ -2460,18 +2462,10 @@ void MifareCIdent(bool is_mfc) { } } - // reset card - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - SpinDelay(40); - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); - - // reset card - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - SpinDelay(40); - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + mf_reset_card(); int res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); - if (res == 2) { + if (res) { // Check for Magic Gen4 GTU with default password: // Get config should return 30 or 32 bytes AddCrc14A(gen4GetConf, sizeof(gen4GetConf) - 2); @@ -2483,42 +2477,19 @@ void MifareCIdent(bool is_mfc) { } // reset card - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - SpinDelay(40); - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + mf_reset_card(); - res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); - if (res == 2) { + res = iso14443a_select_card(uid, NULL, &cuid, true, 0, false); + if (res) { if (cuid == 0xAA55C396) { data[data_off++] = MAGIC_GEN_UNFUSED; } ReaderTransmit(rats, sizeof(rats), NULL); res = ReaderReceive(buf, par); + if (res) { - // test for super card - ReaderTransmit(superGen1, sizeof(superGen1), NULL); - res = ReaderReceive(buf, par); - if (res == 22) { - uint8_t isGen = MAGIC_SUPER_GEN1; - - // check for super card gen2 - // not available after RATS, reset card before executing - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - SpinDelay(40); - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); - - iso14443a_select_card(uid, NULL, &cuid, true, 0, true); - ReaderTransmit(rdbl00, sizeof(rdbl00), NULL); - res = ReaderReceive(buf, par); - if (res == 18) { - isGen = MAGIC_SUPER_GEN2; - } - - data[data_off++] = isGen; - } - - if (memcmp(buf, "\x09\x78\x00\x91\x02\xDA\xBC\x19\x10\xF0\x05", 11) == 0) { + if (memcmp(buf, "\x09\x78\x00\x91\x02\xDA\xBC\x19\x10", 9) == 0) { // test for some MFC gen2 isGen2 = true; data[data_off++] = MAGIC_GEN_2; @@ -2547,13 +2518,34 @@ void MifareCIdent(bool is_mfc) { isGen2 = true; data[data_off++] = MAGIC_GEN_2; } + + // test for super card + ReaderTransmit(superGen1, sizeof(superGen1), NULL); + res = ReaderReceive(buf, par); + if (res == 22) { + uint8_t isGen = MAGIC_SUPER_GEN1; + + // check for super card gen2 + // not available after RATS, reset card before executing + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + SpinDelay(40); + iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + + iso14443a_select_card(uid, NULL, &cuid, true, 0, true); + ReaderTransmit(rdbl00, sizeof(rdbl00), NULL); + res = ReaderReceive(buf, par); + if (res == 18) { + isGen = MAGIC_SUPER_GEN2; + } + + data[data_off++] = isGen; + } } if (is_mfc == false) { // magic ntag test - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - SpinDelay(40); - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + mf_reset_card(); + res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); if (res == 2) { ReaderTransmit(rdblf0, sizeof(rdblf0), NULL); @@ -2563,19 +2555,22 @@ void MifareCIdent(bool is_mfc) { } } } else { + + // CUID (with default sector 0 B key) test + // regular cards will NAK the WRITEBLOCK(0) command, while DirectWrite will ACK it + // if we do get an ACK, we immediately abort to ensure nothing is ever actually written + // only perform test if we haven't already identified Gen2. No need test if we have a positive identification already if (!isGen2) { - // CUID (with default sector 0 B key) test - // regular cards will NAK the WRITEBLOCK(0) command, while DirectWrite will ACK it - // if we do get an ACK, we immediately abort to ensure nothing is ever actually written - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - SpinDelay(40); - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + mf_reset_card(); + res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); - if (res == 2) { + if (res) { struct Crypto1State mpcs = {0, 0}; struct Crypto1State *pcs; pcs = &mpcs; - if (mifare_classic_authex(pcs, cuid, 0, MF_KEY_B, 0xFFFFFFFFFFFF, AUTH_FIRST, NULL, NULL) == 0) { + + uint64_t tmpkey = bytes_to_num(key, 6); + if (mifare_classic_authex(pcs, cuid, 0, MF_KEY_B, tmpkey, AUTH_FIRST, NULL, NULL) == 0) { uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0x00}; uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = {0x00}; if ((mifare_sendcmd_short(pcs, 1, ISO14443A_CMD_WRITEBLOCK, 0, receivedAnswer, receivedAnswerPar, NULL) == 1) && (receivedAnswer[0] == 0x0A)) { @@ -2589,11 +2584,10 @@ void MifareCIdent(bool is_mfc) { } // magic MFC Gen3 test 1 - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - SpinDelay(40); - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + mf_reset_card(); + res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); - if (res == 2) { + if (res) { ReaderTransmit(rdbl00, sizeof(rdbl00), NULL); res = ReaderReceive(buf, par); if (res == 18) { @@ -2602,11 +2596,10 @@ void MifareCIdent(bool is_mfc) { } // magic MFC Gen4 GDM magic auth test - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - SpinDelay(40); - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + mf_reset_card(); + res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); - if (res == 2) { + if (res) { ReaderTransmit(gen4gdmAuth, sizeof(gen4gdmAuth), NULL); res = ReaderReceive(buf, par); if (res == 4) { @@ -2615,11 +2608,10 @@ void MifareCIdent(bool is_mfc) { } // QL88 test - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - SpinDelay(40); - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + mf_reset_card(); + res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); - if (res == 2) { + if (res) { struct Crypto1State mpcs = {0, 0}; struct Crypto1State *pcs; pcs = &mpcs; @@ -2698,7 +2690,7 @@ void MifareHasStaticNonce(void) { } if (counter) { - Dbprintf("%u static nonce %08x", data[0], nt); + Dbprintf("Static nonce......... " _YELLOW_("%08x"), nt); data[0] = NONCE_STATIC; } else { data[0] = NONCE_NORMAL; diff --git a/armsrc/mifarecmd.h b/armsrc/mifarecmd.h index 64df74f97..5a360e221 100644 --- a/armsrc/mifarecmd.h +++ b/armsrc/mifarecmd.h @@ -47,7 +47,7 @@ int MifareECardLoadExt(uint8_t sectorcnt, uint8_t keytype); // MFC GEN1a /1b void MifareCSetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain); // Work with "magic Chinese" card void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain); -void MifareCIdent(bool is_mfc); // is "magic chinese" card? +void MifareCIdent(bool is_mfc, uint8_t *key); // is "magic chinese" card? void MifareHasStaticNonce(void); // Has the tag a static nonce? void MifareHasStaticEncryptedNonce(uint8_t block_no, uint8_t key_type, uint8_t *key); // Has the tag a static encrypted nonce? diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index b4428e01f..061a4f509 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -2410,29 +2410,29 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { int isMagic = 0; if (isMifareClassic) { - isMagic = detect_mf_magic(true); + isMagic = detect_mf_magic(true, 0); } if (isMifareUltralight) { - isMagic = (detect_mf_magic(false) == MAGIC_NTAG21X); + isMagic = (detect_mf_magic(false, 0) == MAGIC_NTAG21X); } if (isMifareClassic) { int res = detect_classic_static_nonce(); if (res == NONCE_STATIC) - PrintAndLogEx(SUCCESS, "Static nonce: " _YELLOW_("yes")); + PrintAndLogEx(SUCCESS, "Static nonce......... " _YELLOW_("yes")); if (res == NONCE_FAIL && verbose) - PrintAndLogEx(SUCCESS, "Static nonce: " _RED_("read failed")); + PrintAndLogEx(SUCCESS, "Static nonce......... " _RED_("read failed")); if (res == NONCE_NORMAL) { // not static res = detect_classic_prng(); if (res == 1) - PrintAndLogEx(SUCCESS, "Prng detection: " _GREEN_("weak")); + PrintAndLogEx(SUCCESS, "Prng detection....... " _GREEN_("weak")); else if (res == 0) - PrintAndLogEx(SUCCESS, "Prng detection: " _YELLOW_("hard")); + PrintAndLogEx(SUCCESS, "Prng detection....... " _YELLOW_("hard")); else - PrintAndLogEx(FAILED, "Prng detection: " _RED_("fail")); + PrintAndLogEx(FAILED, "Prng detection........ " _RED_("fail")); if (do_nack_test) detect_classic_nackbug(false); diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 9e2aeed36..742db52b0 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8899,12 +8899,6 @@ static int CmdHF14AMfInfo(const char *Cmd) { mfc_ev1_print_signature(card.uid, card.uidlen, signature, sizeof(signature)); } - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "--- " _CYAN_("Magic Tag Information")); - if (detect_mf_magic(true) == 0) { - PrintAndLogEx(INFO, "<N/A>"); - } - PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Keys Information")); @@ -8945,8 +8939,8 @@ static int CmdHF14AMfInfo(const char *Cmd) { if (res == PM3_SUCCESS || res == PM3_EPARTIAL) { uint8_t blockdata[MFBLOCK_SIZE] = {0}; - if (e_sector[0].foundKey[0]) { - PrintAndLogEx(SUCCESS, "Sector 0 key A... " _GREEN_("%12" PRIX64), e_sector[0].Key[0]); + if (e_sector[0].foundKey[MF_KEY_A]) { + PrintAndLogEx(SUCCESS, "Sector 0 key A... " _GREEN_("%12" PRIX64), e_sector[0].Key[MF_KEY_A]); num_to_bytes(e_sector[0].Key[MF_KEY_A], MIFARE_KEY_SIZE, fkey); if (mfReadBlock(0, MF_KEY_A, key, blockdata) == PM3_SUCCESS) { @@ -8954,8 +8948,8 @@ static int CmdHF14AMfInfo(const char *Cmd) { } } - if (e_sector[0].foundKey[1]) { - PrintAndLogEx(SUCCESS, "Sector 0 key B... " _GREEN_("%12" PRIX64), e_sector[0].Key[1]); + if (e_sector[0].foundKey[MF_KEY_B]) { + PrintAndLogEx(SUCCESS, "Sector 0 key B... " _GREEN_("%12" PRIX64), e_sector[0].Key[MF_KEY_B]); if (fKeyType == 0xFF) { num_to_bytes(e_sector[0].Key[MF_KEY_B], MIFARE_KEY_SIZE, fkey); @@ -8968,34 +8962,48 @@ static int CmdHF14AMfInfo(const char *Cmd) { if (fKeyType != 0xFF) { PrintAndLogEx(SUCCESS, "Block 0.......... %s", sprint_hex(blockdata, MFBLOCK_SIZE)); } + + if (memcmp(blockdata + 8, "\x62\x63\x64\x65\x66\x67\x68\x69", 8) == 0) { + PrintAndLogEx(SUCCESS, " indication of Fudan"); + } + } else { PrintAndLogEx(INFO, "<N/A>"); } + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "--- " _CYAN_("Magic Tag Information")); + if (detect_mf_magic(true, e_sector[0].Key[MF_KEY_B]) == 0) { + if (detect_mf_magic(true, e_sector[0].Key[MF_KEY_A]) == 0) { + PrintAndLogEx(INFO, "<N/A>"); + } + } + + free(keyBlock); free(e_sector); PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "--- " _CYAN_("RNG Information")); + PrintAndLogEx(INFO, "--- " _CYAN_("PRNG Information")); res = detect_classic_static_nonce(); if (res == NONCE_STATIC) { - PrintAndLogEx(SUCCESS, "Static nonce... " _YELLOW_("yes")); + PrintAndLogEx(SUCCESS, "Static nonce......... " _YELLOW_("yes")); } if (res == NONCE_FAIL && verbose) { - PrintAndLogEx(SUCCESS, "Static nonce... " _RED_("read failed")); + PrintAndLogEx(SUCCESS, "Static nonce......... " _RED_("read failed")); } if (res == NONCE_NORMAL) { // not static res = detect_classic_prng(); if (res == 1) - PrintAndLogEx(SUCCESS, "Prng... " _GREEN_("weak")); + PrintAndLogEx(SUCCESS, "Prng................. " _GREEN_("weak")); else if (res == 0) - PrintAndLogEx(SUCCESS, "Prng... " _YELLOW_("hard")); + PrintAndLogEx(SUCCESS, "Prng................. " _YELLOW_("hard")); else - PrintAndLogEx(FAILED, "Prng... " _RED_("fail")); + PrintAndLogEx(FAILED, "Prng................. " _RED_("fail")); // detect static encrypted nonce diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index a4fa8f13d..f487f5900 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -1390,12 +1390,14 @@ int detect_classic_static_encrypted_nonce(uint8_t block_no, uint8_t key_type, ui } /* try to see if card responses to "Chinese magic backdoor" commands. */ -int detect_mf_magic(bool is_mfc) { +int detect_mf_magic(bool is_mfc, uint64_t key) { uint8_t isMagic = 0; PacketResponseNG resp; clearCommandBuffer(); - uint8_t payload[] = { is_mfc }; + uint8_t payload[1 + MIFARE_KEY_SIZE] = { is_mfc }; + num_to_bytes(key, MIFARE_KEY_SIZE, payload + 1); + SendCommandNG(CMD_HF_MIFARE_CIDENT, payload, sizeof(payload)); if (WaitForResponseTimeout(CMD_HF_MIFARE_CIDENT, &resp, 1500)) { if (resp.status != PM3_SUCCESS) { @@ -1407,43 +1409,43 @@ int detect_mf_magic(bool is_mfc) { isMagic = 1; switch (resp.data.asBytes[i]) { case MAGIC_GEN_1A: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 1a")); + PrintAndLogEx(SUCCESS, "Magic capabilities... " _GREEN_("Gen 1a")); break; case MAGIC_GEN_1B: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 1b")); + PrintAndLogEx(SUCCESS, "Magic capabilities... " _GREEN_("Gen 1b")); break; case MAGIC_GEN_2: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 2 / CUID")); + PrintAndLogEx(SUCCESS, "Magic capabilities... " _GREEN_("Gen 2 / CUID")); break; case MAGIC_GEN_3: - PrintAndLogEx(SUCCESS, "Magic capabilities : possibly " _GREEN_("Gen 3 / APDU")); + PrintAndLogEx(SUCCESS, "Magic capabilities... " _GREEN_("Gen 3 / APDU") " ( possibly )"); break; case MAGIC_GEN_4GTU: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 4 GTU")); + PrintAndLogEx(SUCCESS, "Magic capabilities... " _GREEN_("Gen 4 GTU")); break; case MAGIC_GDM_AUTH: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 4 GDM / USCUID (Magic Auth)")); + PrintAndLogEx(SUCCESS, "Magic capabilities... " _GREEN_("Gen 4 GDM / USCUID") " ( Magic Auth )"); break; case MAGIC_GDM_WUP_20: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 4 GDM / USCUID (Alt Magic Wakeup)")); + PrintAndLogEx(SUCCESS, "Magic capabilities... " _GREEN_("Gen 4 GDM / USCUID") " ( Alt Magic Wakeup )"); break; case MAGIC_GDM_WUP_40: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Gen 4 GDM / USCUID (Gen1 Magic Wakeup)")); + PrintAndLogEx(SUCCESS, "Magic capabilities... " _GREEN_("Gen 4 GDM / USCUID") " ( Gen1 Magic Wakeup )"); break; case MAGIC_GEN_UNFUSED: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Write Once / FUID")); + PrintAndLogEx(SUCCESS, "Magic capabilities... " _GREEN_("Write Once / FUID")); break; case MAGIC_SUPER_GEN1: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Super card (") _CYAN_("Gen 1") _GREEN_(")")); + PrintAndLogEx(SUCCESS, "Magic capabilities... " _GREEN_("Super card ( ") _CYAN_("Gen 1") _GREEN_(" )")); break; case MAGIC_SUPER_GEN2: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("Super card (") _CYAN_("Gen 2") _GREEN_(")")); + PrintAndLogEx(SUCCESS, "Magic capabilities... " _GREEN_("Super card ( ") _CYAN_("Gen 2") _GREEN_(" )")); break; case MAGIC_NTAG21X: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("NTAG21x")); + PrintAndLogEx(SUCCESS, "Magic capabilities... " _GREEN_("NTAG21x")); break; case MAGIC_QL88: - PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("QL88")); + PrintAndLogEx(SUCCESS, "Magic capabilities... " _GREEN_("QL88")); default: break; } From ade6770ecb8634ffe4a3986f374e59cff8ca9d27 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 30 Dec 2023 23:58:08 +0100 Subject: [PATCH 0940/1034] forgot header --- client/src/mifare/mifarehost.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/mifare/mifarehost.h b/client/src/mifare/mifarehost.h index b30c7a9ae..972353b08 100644 --- a/client/src/mifare/mifarehost.h +++ b/client/src/mifare/mifarehost.h @@ -101,7 +101,7 @@ int tryDecryptWord(uint32_t nt, uint32_t ar_enc, uint32_t at_enc, uint8_t *data, int detect_classic_prng(void); int detect_classic_nackbug(bool verbose); -int detect_mf_magic(bool is_mfc); +int detect_mf_magic(bool is_mfc, uint64_t key); int detect_classic_static_nonce(void); int detect_classic_static_encrypted_nonce(uint8_t block_no, uint8_t key_type, uint8_t *key); bool detect_mfc_ev1_signature(void); From f840dc810b3ce25d33503520d4bf34e9a7b999e7 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 31 Dec 2023 09:35:42 +0100 Subject: [PATCH 0941/1034] made keytype instead of fixed keyB. would help in situations keyB is readable... --- armsrc/appmain.c | 3 ++- armsrc/mifarecmd.c | 4 ++-- armsrc/mifarecmd.h | 2 +- client/src/cmdhfmf.c | 6 +++--- client/src/mifare/mifarehost.c | 8 ++++---- client/src/mifare/mifarehost.h | 2 +- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 263238ff9..be7cb018d 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -1736,10 +1736,11 @@ static void PacketReceived(PacketCommandNG *packet) { struct p { uint8_t is_mfc; + uint8_t keytype; uint8_t key[6]; } PACKED; struct p *payload = (struct p *) packet->data.asBytes; - MifareCIdent(payload->is_mfc, payload->key); + MifareCIdent(payload->is_mfc, payload->keytype, payload->key); break; } // Gen 3 magic cards diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 4174b69ed..9c15e2458 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2420,7 +2420,7 @@ static void mf_reset_card(void) { iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); } -void MifareCIdent(bool is_mfc, uint8_t *key) { +void MifareCIdent(bool is_mfc, uint8_t keytype, uint8_t *key) { // variables uint8_t rec[1] = {0x00}; uint8_t recpar[1] = {0x00}; @@ -2570,7 +2570,7 @@ void MifareCIdent(bool is_mfc, uint8_t *key) { pcs = &mpcs; uint64_t tmpkey = bytes_to_num(key, 6); - if (mifare_classic_authex(pcs, cuid, 0, MF_KEY_B, tmpkey, AUTH_FIRST, NULL, NULL) == 0) { + if (mifare_classic_authex(pcs, cuid, 0, keytype, tmpkey, AUTH_FIRST, NULL, NULL) == 0) { uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0x00}; uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = {0x00}; if ((mifare_sendcmd_short(pcs, 1, ISO14443A_CMD_WRITEBLOCK, 0, receivedAnswer, receivedAnswerPar, NULL) == 1) && (receivedAnswer[0] == 0x0A)) { diff --git a/armsrc/mifarecmd.h b/armsrc/mifarecmd.h index 5a360e221..aefc4e760 100644 --- a/armsrc/mifarecmd.h +++ b/armsrc/mifarecmd.h @@ -47,7 +47,7 @@ int MifareECardLoadExt(uint8_t sectorcnt, uint8_t keytype); // MFC GEN1a /1b void MifareCSetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain); // Work with "magic Chinese" card void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain); -void MifareCIdent(bool is_mfc, uint8_t *key); // is "magic chinese" card? +void MifareCIdent(bool is_mfc, uint8_t keytype, uint8_t *key); // is "magic chinese" card? void MifareHasStaticNonce(void); // Has the tag a static nonce? void MifareHasStaticEncryptedNonce(uint8_t block_no, uint8_t key_type, uint8_t *key); // Has the tag a static encrypted nonce? diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 742db52b0..e0dbac7f5 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8923,7 +8923,7 @@ static int CmdHF14AMfInfo(const char *Cmd) { int sectorsCnt = 1; uint8_t *keyBlock = NULL; uint32_t keycnt = 0; - res = mfLoadKeys(&keyBlock, &keycnt, NULL, 0, NULL, 0); + res = mfLoadKeys(&keyBlock, &keycnt, key, MIFARE_KEY_SIZE, NULL, 0); if (res != PM3_SUCCESS) { return res; } @@ -8973,8 +8973,8 @@ static int CmdHF14AMfInfo(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Magic Tag Information")); - if (detect_mf_magic(true, e_sector[0].Key[MF_KEY_B]) == 0) { - if (detect_mf_magic(true, e_sector[0].Key[MF_KEY_A]) == 0) { + if (detect_mf_magic(true, MF_KEY_B, e_sector[0].Key[MF_KEY_B]) == 0) { + if (detect_mf_magic(true, MF_KEY_A, e_sector[0].Key[MF_KEY_A]) == 0) { PrintAndLogEx(INFO, "<N/A>"); } } diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index f487f5900..56313aa55 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -1373,7 +1373,7 @@ returns: */ int detect_classic_static_encrypted_nonce(uint8_t block_no, uint8_t key_type, uint8_t *key) { clearCommandBuffer(); - uint8_t cdata[1 + 1 + MIFARE_KEY_SIZE] = {0}; + uint8_t cdata[1 + 1 + MIFARE_KEY_SIZE] = { 0 }; cdata[0] = block_no; cdata[1] = key_type; memcpy(&cdata[2], key, MIFARE_KEY_SIZE); @@ -1390,13 +1390,13 @@ int detect_classic_static_encrypted_nonce(uint8_t block_no, uint8_t key_type, ui } /* try to see if card responses to "Chinese magic backdoor" commands. */ -int detect_mf_magic(bool is_mfc, uint64_t key) { +int detect_mf_magic(bool is_mfc, uint8_t key_type, uint64_t key) { uint8_t isMagic = 0; PacketResponseNG resp; clearCommandBuffer(); - uint8_t payload[1 + MIFARE_KEY_SIZE] = { is_mfc }; - num_to_bytes(key, MIFARE_KEY_SIZE, payload + 1); + uint8_t payload[1 + 1 + MIFARE_KEY_SIZE] = { is_mfc, key_type }; + num_to_bytes(key, MIFARE_KEY_SIZE, payload + 2); SendCommandNG(CMD_HF_MIFARE_CIDENT, payload, sizeof(payload)); if (WaitForResponseTimeout(CMD_HF_MIFARE_CIDENT, &resp, 1500)) { diff --git a/client/src/mifare/mifarehost.h b/client/src/mifare/mifarehost.h index 972353b08..f71a9436d 100644 --- a/client/src/mifare/mifarehost.h +++ b/client/src/mifare/mifarehost.h @@ -101,7 +101,7 @@ int tryDecryptWord(uint32_t nt, uint32_t ar_enc, uint32_t at_enc, uint8_t *data, int detect_classic_prng(void); int detect_classic_nackbug(bool verbose); -int detect_mf_magic(bool is_mfc, uint64_t key); +int detect_mf_magic(bool is_mfc, uint8_t key_type, uint64_t key); int detect_classic_static_nonce(void); int detect_classic_static_encrypted_nonce(uint8_t block_no, uint8_t key_type, uint8_t *key); bool detect_mfc_ev1_signature(void); From 873c1e57a3b4089c31b30688555888146a8559a7 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 31 Dec 2023 09:36:25 +0100 Subject: [PATCH 0942/1034] cleaned up and reduced number of arrays used --- armsrc/mifarecmd.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 9c15e2458..318401e3d 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2527,9 +2527,7 @@ void MifareCIdent(bool is_mfc, uint8_t keytype, uint8_t *key) { // check for super card gen2 // not available after RATS, reset card before executing - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - SpinDelay(40); - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + mf_reset_card(); iso14443a_select_card(uid, NULL, &cuid, true, 0, true); ReaderTransmit(rdbl00, sizeof(rdbl00), NULL); @@ -2556,6 +2554,10 @@ void MifareCIdent(bool is_mfc, uint8_t keytype, uint8_t *key) { } } else { + struct Crypto1State mpcs = {0, 0}; + struct Crypto1State *pcs; + pcs = &mpcs; + // CUID (with default sector 0 B key) test // regular cards will NAK the WRITEBLOCK(0) command, while DirectWrite will ACK it // if we do get an ACK, we immediately abort to ensure nothing is ever actually written @@ -2565,15 +2567,11 @@ void MifareCIdent(bool is_mfc, uint8_t keytype, uint8_t *key) { res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); if (res) { - struct Crypto1State mpcs = {0, 0}; - struct Crypto1State *pcs; - pcs = &mpcs; uint64_t tmpkey = bytes_to_num(key, 6); if (mifare_classic_authex(pcs, cuid, 0, keytype, tmpkey, AUTH_FIRST, NULL, NULL) == 0) { - uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0x00}; - uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = {0x00}; - if ((mifare_sendcmd_short(pcs, 1, ISO14443A_CMD_WRITEBLOCK, 0, receivedAnswer, receivedAnswerPar, NULL) == 1) && (receivedAnswer[0] == 0x0A)) { + + if ((mifare_sendcmd_short(pcs, 1, ISO14443A_CMD_WRITEBLOCK, 0, buf, par, NULL) == 1) && (buf[0] == 0x0A)) { data[data_off++] = MAGIC_GEN_2; // turn off immediately to ensure nothing ever accidentally writes to the block FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); @@ -2612,9 +2610,6 @@ void MifareCIdent(bool is_mfc, uint8_t keytype, uint8_t *key) { res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); if (res) { - struct Crypto1State mpcs = {0, 0}; - struct Crypto1State *pcs; - pcs = &mpcs; if (mifare_classic_authex(pcs, cuid, 68, MF_KEY_B, 0x707B11FC1481, AUTH_FIRST, NULL, NULL) == 0) { data[data_off++] = MAGIC_QL88; } From 3df5fb6d400cbcc06f49a65019602b3bf5f6fb80 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 31 Dec 2023 09:43:45 +0100 Subject: [PATCH 0943/1034] cleaned up style --- armsrc/mifarecmd.c | 25 +++++++++++++------------ armsrc/mifareutil.h | 22 ++++++++++++---------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 318401e3d..bd8b660f5 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2710,14 +2710,14 @@ void MifareHasStaticEncryptedNonce(uint8_t block_no, uint8_t key_type, uint8_t * set_tracing(true); int retval = PM3_SUCCESS; - uint8_t *uid = BigBuf_malloc(10); - memset(uid, 0x00, 10); + uint8_t *uid = BigBuf_calloc(10); + uint64_t ui64key = bytes_to_num(key, 6); uint8_t data[1] = { NONCE_FAIL }; + struct Crypto1State mpcs = {0, 0}; struct Crypto1State *pcs; pcs = &mpcs; - uint64_t ui64key = bytes_to_num(key, 6); iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); @@ -2774,6 +2774,7 @@ void OnSuccessMagic(void) { LEDsoff(); set_tracing(false); } + void OnErrorMagic(uint8_t reason) { // ACK, ISOK, reason,0,0,0 reply_mix(CMD_ACK, 0, reason, 0, 0, 0); @@ -2782,8 +2783,8 @@ void OnErrorMagic(uint8_t reason) { int DoGen3Cmd(uint8_t *cmd, uint8_t cmd_len) { int retval = PM3_SUCCESS; - uint8_t *par = BigBuf_malloc(MAX_PARITY_SIZE); - uint8_t *buf = BigBuf_malloc(PM3_CMD_DATA_SIZE); + uint8_t *par = BigBuf_calloc(MAX_PARITY_SIZE); + uint8_t *buf = BigBuf_calloc(PM3_CMD_DATA_SIZE); LED_B_ON(); uint32_t save_iso14a_timeout = iso14a_get_timeout(); @@ -2806,9 +2807,9 @@ int DoGen3Cmd(uint8_t *cmd, uint8_t cmd_len) { void MifareGen3UID(uint8_t uidlen, uint8_t *uid) { int retval = PM3_SUCCESS; uint8_t uid_cmd[5] = { 0x90, 0xfb, 0xcc, 0xcc, 0x07 }; - uint8_t *old_uid = BigBuf_malloc(10); - uint8_t *cmd = BigBuf_malloc(sizeof(uid_cmd) + uidlen + 2); - iso14a_card_select_t *card_info = (iso14a_card_select_t *) BigBuf_malloc(sizeof(iso14a_card_select_t)); + uint8_t *old_uid = BigBuf_calloc(10); + uint8_t *cmd = BigBuf_calloc(sizeof(uid_cmd) + uidlen + 2); + iso14a_card_select_t *card_info = (iso14a_card_select_t *) BigBuf_calloc(sizeof(iso14a_card_select_t)); iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); clear_trace(); @@ -2838,12 +2839,12 @@ OUT: } void MifareGen3Blk(uint8_t block_len, uint8_t *block) { -#define MIFARE_BLOCK_SIZE (MAX_MIFARE_FRAME_SIZE - 2) + int retval = PM3_SUCCESS; uint8_t block_cmd[5] = { 0x90, 0xf0, 0xcc, 0xcc, 0x10 }; - uint8_t *uid = BigBuf_malloc(10); - uint8_t *cmd = BigBuf_malloc(sizeof(block_cmd) + MAX_MIFARE_FRAME_SIZE); - iso14a_card_select_t *card_info = (iso14a_card_select_t *) BigBuf_malloc(sizeof(iso14a_card_select_t)); + uint8_t *uid = BigBuf_calloc(10); + uint8_t *cmd = BigBuf_calloc(sizeof(block_cmd) + MAX_MIFARE_FRAME_SIZE); + iso14a_card_select_t *card_info = (iso14a_card_select_t *) BigBuf_calloc(sizeof(iso14a_card_select_t)); iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); clear_trace(); diff --git a/armsrc/mifareutil.h b/armsrc/mifareutil.h index e7ee0f7f9..fd0749058 100644 --- a/armsrc/mifareutil.h +++ b/armsrc/mifareutil.h @@ -30,22 +30,24 @@ #define AUTH_FIRST 0 #define AUTH_NESTED 2 -#define AUTHENTICATION_TIMEOUT 848 // card times out 1ms after wrong authentication (according to NXP documentation) +#define AUTHENTICATION_TIMEOUT 848 // card times out 1ms after wrong authentication (according to NXP documentation) #define PRE_AUTHENTICATION_LEADTIME 400 // some (non standard) cards need a pause after select before they are ready for first authentication // reader voltage field detector -#define MF_MINFIELDV 4000 +#define MF_MINFIELDV 4000 // Mifare 4k/2k/1k/mini Max Block / Max Sector -#define MIFARE_4K_MAXBLOCK 256 -#define MIFARE_2K_MAXBLOCK 128 -#define MIFARE_1K_MAXBLOCK 64 -#define MIFARE_MINI_MAXBLOCK 20 +#define MIFARE_4K_MAXBLOCK 256 +#define MIFARE_2K_MAXBLOCK 128 +#define MIFARE_1K_MAXBLOCK 64 +#define MIFARE_MINI_MAXBLOCK 20 -#define MIFARE_MINI_MAXSECTOR 5 -#define MIFARE_1K_MAXSECTOR 16 -#define MIFARE_2K_MAXSECTOR 32 -#define MIFARE_4K_MAXSECTOR 40 +#define MIFARE_MINI_MAXSECTOR 5 +#define MIFARE_1K_MAXSECTOR 16 +#define MIFARE_2K_MAXSECTOR 32 +#define MIFARE_4K_MAXSECTOR 40 + +#define MIFARE_BLOCK_SIZE 16 //mifare emulator states #define MFEMUL_NOFIELD 0 From c54f6af925fa476927ea017a05e9548066ce8078 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 31 Dec 2023 09:56:46 +0100 Subject: [PATCH 0944/1034] code style, remove unneeded UID array allocations since we just dont use the UID later in those functions --- armsrc/mifarecmd.c | 94 +++++++++++++++++++++++++++------------------- 1 file changed, 55 insertions(+), 39 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index bd8b660f5..2cf2c19e0 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2811,6 +2811,7 @@ void MifareGen3UID(uint8_t uidlen, uint8_t *uid) { uint8_t *cmd = BigBuf_calloc(sizeof(uid_cmd) + uidlen + 2); iso14a_card_select_t *card_info = (iso14a_card_select_t *) BigBuf_calloc(sizeof(iso14a_card_select_t)); + LEDsoff(); iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); clear_trace(); set_tracing(true); @@ -2842,15 +2843,15 @@ void MifareGen3Blk(uint8_t block_len, uint8_t *block) { int retval = PM3_SUCCESS; uint8_t block_cmd[5] = { 0x90, 0xf0, 0xcc, 0xcc, 0x10 }; - uint8_t *uid = BigBuf_calloc(10); uint8_t *cmd = BigBuf_calloc(sizeof(block_cmd) + MAX_MIFARE_FRAME_SIZE); iso14a_card_select_t *card_info = (iso14a_card_select_t *) BigBuf_calloc(sizeof(iso14a_card_select_t)); + LEDsoff(); iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); clear_trace(); set_tracing(true); - if (iso14443a_select_card(uid, card_info, NULL, true, 0, true) == false) { + if (iso14443a_select_card(NULL, card_info, NULL, true, 0, true) == false) { retval = PM3_ESOFT; goto OUT; } @@ -2885,7 +2886,7 @@ void MifareGen3Blk(uint8_t block_len, uint8_t *block) { AddCrc14A(cmd, sizeof(block_cmd) + MIFARE_BLOCK_SIZE); if (doReselect) { - if (!iso14443a_select_card(uid, NULL, NULL, true, 0, true)) { + if (!iso14443a_select_card(NULL, NULL, NULL, true, 0, true)) { retval = PM3_ESOFT; goto OUT; } @@ -2902,15 +2903,16 @@ OUT: } void MifareGen3Freez(void) { + + LEDsoff(); iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); clear_trace(); set_tracing(true); int retval = PM3_SUCCESS; uint8_t freeze_cmd[7] = { 0x90, 0xfd, 0x11, 0x11, 0x00, 0xe7, 0x91 }; - uint8_t *uid = BigBuf_malloc(10); - if (iso14443a_select_card(uid, NULL, NULL, true, 0, true) == false) { + if (iso14443a_select_card(NULL, NULL, NULL, true, 0, true) == false) { retval = PM3_ESOFT; goto OUT; } @@ -2926,7 +2928,7 @@ OUT: void MifareG4ReadBlk(uint8_t blockno, uint8_t *pwd, uint8_t workFlags) { bool setup = ((workFlags & MAGIC_INIT) == MAGIC_INIT) ; - bool done = ((workFlags & MAGIC_OFF) == MAGIC_OFF) ; + bool done = ((workFlags & MAGIC_OFF) == MAGIC_OFF) ; int res = 0; int retval = PM3_SUCCESS; @@ -2944,16 +2946,12 @@ void MifareG4ReadBlk(uint8_t blockno, uint8_t *pwd, uint8_t workFlags) { } if (setup) { - uint8_t *uid = BigBuf_malloc(10); - if (uid == NULL) { - retval = PM3_EMALLOC; - goto OUT; - } + LEDsoff(); iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); clear_trace(); set_tracing(true); - if (iso14443a_select_card(uid, NULL, NULL, true, 0, true) == false) { + if (iso14443a_select_card(NULL, NULL, NULL, true, 0, true) == false) { retval = PM3_ESOFT; goto OUT; } @@ -2982,21 +2980,31 @@ void MifareG4ReadBlk(uint8_t blockno, uint8_t *pwd, uint8_t workFlags) { retval = PM3_ESOFT; } - if (done || retval != 0) iso14a_set_timeout(save_iso14a_timeout); + if (done || retval != 0) { + iso14a_set_timeout(save_iso14a_timeout); + } + LED_B_OFF(); OUT: reply_ng(CMD_HF_MIFARE_G4_RDBL, retval, buf, res); + // turns off - if (done || retval != 0) FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + if (done || retval != 0) { + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + } + LEDsoff(); - if (done || retval != 0) set_tracing(false); + if (done || retval != 0) { + set_tracing(false); + } + BigBuf_free(); } void MifareG4WriteBlk(uint8_t blockno, uint8_t *pwd, uint8_t *data, uint8_t workFlags) { bool setup = ((workFlags & MAGIC_INIT) == MAGIC_INIT) ; - bool done = ((workFlags & MAGIC_OFF) == MAGIC_OFF) ; + bool done = ((workFlags & MAGIC_OFF) == MAGIC_OFF) ; int res = 0; int retval = PM3_SUCCESS; @@ -3020,16 +3028,12 @@ void MifareG4WriteBlk(uint8_t blockno, uint8_t *pwd, uint8_t *data, uint8_t work } if (setup) { - uint8_t *uid = BigBuf_malloc(10); - if (uid == NULL) { - retval = PM3_EMALLOC; - goto OUT; - } + LEDsoff(); iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); clear_trace(); set_tracing(true); - if (iso14443a_select_card(uid, NULL, NULL, true, 0, true) == false) { + if (iso14443a_select_card(NULL, NULL, NULL, true, 0, true) == false) { retval = PM3_ESOFT; goto OUT; } @@ -3061,15 +3065,23 @@ void MifareG4WriteBlk(uint8_t blockno, uint8_t *pwd, uint8_t *data, uint8_t work retval = PM3_ESOFT; } - if (done || retval != 0) iso14a_set_timeout(save_iso14a_timeout); + if (done || retval != 0) { + iso14a_set_timeout(save_iso14a_timeout); + } LED_B_OFF(); OUT: reply_ng(CMD_HF_MIFARE_G4_WRBL, retval, buf, res); // turns off - if (done || retval != 0) FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + if (done || retval != 0) { + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + } + LEDsoff(); - if (done || retval != 0) set_tracing(false); + if (done || retval != 0) { + set_tracing(false); + } + BigBuf_free(); } @@ -3080,24 +3092,25 @@ void MifareSetMod(uint8_t *datain) { // variables uint16_t isOK = PM3_EUNDEF; - uint8_t uid[10] = {0}; + uint8_t *uid = BigBuf_calloc(10); + uint32_t cuid = 0; struct Crypto1State mpcs = {0, 0}; struct Crypto1State *pcs = &mpcs; - uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0}; - uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = {0}; + uint8_t *buf = BigBuf_calloc(MAX_MIFARE_FRAME_SIZE); + uint8_t *par = BigBuf_calloc(MAX_MIFARE_PARITY_SIZE); + + LEDsoff(); iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); clear_trace(); set_tracing(true); LED_A_ON(); - LED_B_OFF(); - LED_C_OFF(); while (true) { - if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) { + if (iso14443a_select_card(uid, NULL, &cuid, true, 0, true) == false) { if (g_dbglevel >= DBG_ERROR) Dbprintf("Can't select card"); break; } @@ -3108,8 +3121,8 @@ void MifareSetMod(uint8_t *datain) { } int respLen; - if (((respLen = mifare_sendcmd_short(pcs, CRYPT_ALL, MIFARE_EV1_SETMOD, mod, receivedAnswer, receivedAnswerPar, NULL)) != 1) || (receivedAnswer[0] != 0x0a)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("SetMod error; response[0]: %hhX, len: %d", receivedAnswer[0], respLen); + if (((respLen = mifare_sendcmd_short(pcs, CRYPT_ALL, MIFARE_EV1_SETMOD, mod, buf, par, NULL)) != 1) || (buf[0] != 0x0a)) { + if (g_dbglevel >= DBG_ERROR) Dbprintf("SetMod error; response[0]: %hhX, len: %d", buf[0], respLen); break; } @@ -3130,6 +3143,7 @@ void MifareSetMod(uint8_t *datain) { FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); LEDsoff(); + BigBuf_free(); } // @@ -3137,14 +3151,13 @@ void MifareSetMod(uint8_t *datain) { // void Mifare_DES_Auth1(uint8_t arg0, uint8_t *datain) { uint8_t dataout[12] = {0x00}; - uint8_t uid[10] = {0x00}; uint32_t cuid = 0; iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); clear_trace(); set_tracing(true); - int len = iso14443a_select_card(uid, NULL, &cuid, true, 0, false); + int len = iso14443a_select_card(NULL, NULL, &cuid, true, 0, false); if (!len) { if (g_dbglevel >= DBG_ERROR) Dbprintf("Can't select card"); OnError(1); @@ -3193,8 +3206,10 @@ void MifareU_Otp_Tearoff(uint8_t blno, uint32_t tearoff_time, uint8_t *data_test if (g_dbglevel >= DBG_DEBUG) DbpString("Preparing OTP tear-off"); - if (tearoff_time > 43000) + if (tearoff_time > 43000) { tearoff_time = 43000; + } + g_tearoff_delay_us = tearoff_time; g_tearoff_enabled = true; @@ -3213,7 +3228,7 @@ void MifareU_Otp_Tearoff(uint8_t blno, uint32_t tearoff_time, uint8_t *data_test AddCrc14A(cmd, sizeof(cmd) - 2); // anticollision / select card - if (!iso14443a_select_card(NULL, NULL, NULL, true, 0, true)) { + if (iso14443a_select_card(NULL, NULL, NULL, true, 0, true) == false) { if (g_dbglevel >= DBG_ERROR) Dbprintf("Can't select card"); OnError(1); reply_ng(CMD_HF_MFU_OTP_TEAROFF, PM3_EFAILED, NULL, 0); @@ -3230,8 +3245,9 @@ void MifareU_Otp_Tearoff(uint8_t blno, uint32_t tearoff_time, uint8_t *data_test // Tear-off attack against MFU counter void MifareU_Counter_Tearoff(uint8_t counter, uint32_t tearoff_time, uint8_t *datain) { - if (tearoff_time > 43000) + if (tearoff_time > 43000) { tearoff_time = 43000; + } LEDsoff(); iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); @@ -3252,7 +3268,7 @@ void MifareU_Counter_Tearoff(uint8_t counter, uint32_t tearoff_time, uint8_t *da AddCrc14A(cmd, sizeof(cmd) - 2); // anticollision / select card - if (!iso14443a_select_card(NULL, NULL, NULL, true, 0, true)) { + if (iso14443a_select_card(NULL, NULL, NULL, true, 0, true) == false) { if (g_dbglevel >= DBG_ERROR) Dbprintf("Can't select card"); OnError(1); switch_off(); From 379baea093a14bd216b64345c7cfa44764b818c9 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 31 Dec 2023 10:07:13 +0100 Subject: [PATCH 0945/1034] zero padding please --- client/src/cmdhfmf.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index e0dbac7f5..c54edda7f 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8940,7 +8940,7 @@ static int CmdHF14AMfInfo(const char *Cmd) { uint8_t blockdata[MFBLOCK_SIZE] = {0}; if (e_sector[0].foundKey[MF_KEY_A]) { - PrintAndLogEx(SUCCESS, "Sector 0 key A... " _GREEN_("%12" PRIX64), e_sector[0].Key[MF_KEY_A]); + PrintAndLogEx(SUCCESS, "Sector 0 key A... " _GREEN_("%012" PRIX64), e_sector[0].Key[MF_KEY_A]); num_to_bytes(e_sector[0].Key[MF_KEY_A], MIFARE_KEY_SIZE, fkey); if (mfReadBlock(0, MF_KEY_A, key, blockdata) == PM3_SUCCESS) { @@ -8949,7 +8949,7 @@ static int CmdHF14AMfInfo(const char *Cmd) { } if (e_sector[0].foundKey[MF_KEY_B]) { - PrintAndLogEx(SUCCESS, "Sector 0 key B... " _GREEN_("%12" PRIX64), e_sector[0].Key[MF_KEY_B]); + PrintAndLogEx(SUCCESS, "Sector 0 key B... " _GREEN_("%012" PRIX64), e_sector[0].Key[MF_KEY_B]); if (fKeyType == 0xFF) { num_to_bytes(e_sector[0].Key[MF_KEY_B], MIFARE_KEY_SIZE, fkey); @@ -9010,11 +9010,11 @@ static int CmdHF14AMfInfo(const char *Cmd) { if (keylen == MIFARE_KEY_SIZE) { res = detect_classic_static_encrypted_nonce(blockn, keytype, key); if (res == NONCE_STATIC) { - PrintAndLogEx(SUCCESS, "Static nested nonce... " _YELLOW_("yes")); + PrintAndLogEx(SUCCESS, "Static nonce......... " _YELLOW_("yes")); fKeyType = 0xFF; // dont detect twice } if (res == NONCE_STATIC_ENC) { - PrintAndLogEx(SUCCESS, "Static encrypted nonce... " _RED_("yes")); + PrintAndLogEx(SUCCESS, "Static enc nonce..... " _RED_("yes")); fKeyType = 0xFF; // dont detect twice } } @@ -9022,9 +9022,9 @@ static int CmdHF14AMfInfo(const char *Cmd) { if (fKeyType != 0xFF) { res = detect_classic_static_encrypted_nonce(0, fKeyType, fkey); if (res == NONCE_STATIC) - PrintAndLogEx(SUCCESS, "Static nested nonce... " _YELLOW_("yes")); + PrintAndLogEx(SUCCESS, "Static nonce......... " _YELLOW_("yes")); if (res == NONCE_STATIC_ENC) - PrintAndLogEx(SUCCESS, "Static encrypted nonce... " _RED_("yes")); + PrintAndLogEx(SUCCESS, "Static enc nonce..... " _RED_("yes")); } if (do_nack_test) { From 91fad1dfa1a559a86845eb6c02257f27999c6c59 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 31 Dec 2023 10:08:33 +0100 Subject: [PATCH 0946/1034] damn.... thanks @NVX --- client/src/cmdhf14a.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 061a4f509..8d63a98da 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -2410,10 +2410,10 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { int isMagic = 0; if (isMifareClassic) { - isMagic = detect_mf_magic(true, 0); + isMagic = detect_mf_magic(true, MF_KEY_A, 0); } if (isMifareUltralight) { - isMagic = (detect_mf_magic(false, 0) == MAGIC_NTAG21X); + isMagic = (detect_mf_magic(false, MF_KEY_A, 0) == MAGIC_NTAG21X); } if (isMifareClassic) { int res = detect_classic_static_nonce(); From 08f3a105c87b54deba734b0a37511f3bde5a4624 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 31 Dec 2023 10:44:57 +0100 Subject: [PATCH 0947/1034] fix string formatter warning --- client/src/cmddata.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 5a6d897e3..e244a7bf5 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -862,7 +862,7 @@ int AutoCorrelate(const int *in, int *out, size_t len, size_t window, bool SaveG int distance = -1; for (size_t i = 0; i < ARRAYLEN(peaks); ++i) { - PrintAndLogEx(DEBUG, "%zu | %d", i, peaks[i]); + PrintAndLogEx(DEBUG, "%zu | %zu", i, peaks[i]); if (peaks[i] < 128) { continue; } From e9996d081c77f9f62a02d103380b76957dfaf2ab Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 31 Dec 2023 11:00:41 +0100 Subject: [PATCH 0948/1034] the offline detection printing of the prompt looks better now --- CHANGELOG.md | 4 +++- client/src/proxmark3.c | 14 +++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 193b98e0b..0f9d9f545 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,9 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Changed `hf 14a info` - disabled debug logging while performing the magic tests @iceman1001 + - Changed CLI offline prompt - replaces the old prompt when offline is detected (@iceman100) + - Changed `hf mf info` - it now uses found keys to try identify Gen2 cards (@iceman1001) + - Changed `hf 14a info` - disabled debug logging while performing the magic tests (@iceman1001) - Changed `hf 14a info` - magic detection to better detect different GDM/USCUID configurations and improved Gen2/CUID detection when default keys are used (@nvx) - Changed `hf_cardhopper` - standalone mode to allow running over the internal Proxmark3 USB-CDC serial port (@nvx) - Fixed CLI prompt - Update connection type prompt after running `hw connect` (@wh201906) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index f121017d7..98532f810 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -129,8 +129,12 @@ static const char *prompt_dev = ""; static const char *prompt_ctx = ""; static const char *prompt_net = ""; -static void prompt_compose(char *buf, size_t buflen, const char *promptctx, const char *promptdev, const char *promptnet) { - snprintf(buf, buflen - 1, PROXPROMPT_COMPOSE, promptdev, promptnet, promptctx); +static void prompt_compose(char *buf, size_t buflen, const char *promptctx, const char *promptdev, const char *promptnet, bool no_newline) { + if (no_newline) { + snprintf(buf, buflen - 1, PROXPROMPT_COMPOSE, promptdev, promptnet, promptctx); + } else { + snprintf(buf, buflen - 1, "\r" PROXPROMPT_COMPOSE, promptdev, promptnet, promptctx); + } } static int check_comm(void) { @@ -139,7 +143,7 @@ static int check_comm(void) { PrintAndLogEx(INFO, "Running in " _YELLOW_("OFFLINE") " mode. Use "_YELLOW_("\"hw connect\"") " to reconnect\n"); prompt_dev = PROXPROMPT_DEV_OFFLINE; char prompt[PROXPROMPT_MAX_SIZE] = {0}; - prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev, prompt_net); + prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev, prompt_net, false); char prompt_filtered[PROXPROMPT_MAX_SIZE] = {0}; memcpy_filter_ansi(prompt_filtered, prompt, sizeof(prompt_filtered), !g_session.supports_colors); pm3line_update_prompt(prompt_filtered); @@ -364,7 +368,7 @@ check_script: pm3line_check(check_comm); prompt_ctx = PROXPROMPT_CTX_INTERACTIVE; char prompt[PROXPROMPT_MAX_SIZE] = {0}; - prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev, prompt_net); + prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev, prompt_net, true); char prompt_filtered[PROXPROMPT_MAX_SIZE] = {0}; memcpy_filter_ansi(prompt_filtered, prompt, sizeof(prompt_filtered), !g_session.supports_colors); g_pendingPrompt = true; @@ -414,7 +418,7 @@ check_script: g_printAndLog &= PRINTANDLOG_LOG; } char prompt[PROXPROMPT_MAX_SIZE] = {0}; - prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev, prompt_net); + prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev, prompt_net, true); // always filter RL magic separators if not using readline char prompt_filtered[PROXPROMPT_MAX_SIZE] = {0}; memcpy_filter_rlmarkers(prompt_filtered, prompt, sizeof(prompt_filtered)); From 20eddd8250bb8ad94731471736056bd6376036fe Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 31 Dec 2023 15:25:58 +0100 Subject: [PATCH 0949/1034] added a thread that starts when a device is detected to be offline. It runs until it finds a device and reconnects to it. Signals the READLINE hook event and the prompt is updated to match current status. This removes the need to type "hw connect" on clients that has been compiled with READLINE lib. --- CHANGELOG.md | 1 + client/src/comms.c | 98 +++++++++++++++++++++++++++++++++++++++++- client/src/comms.h | 8 ++++ client/src/proxmark3.c | 15 ++++++- 4 files changed, 120 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f9d9f545..e646c72a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added a thread to check when device comes online again. It will connect and update prompt (@iceman1001) - Changed CLI offline prompt - replaces the old prompt when offline is detected (@iceman100) - Changed `hf mf info` - it now uses found keys to try identify Gen2 cards (@iceman1001) - Changed `hf 14a info` - disabled debug logging while performing the magic tests (@iceman1001) diff --git a/client/src/comms.c b/client/src/comms.c index 99413b0df..b05fe2180 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -29,6 +29,7 @@ #include "util.h" // g_pendingPrompt #include "util_posix.h" // msclock #include "util_darwin.h" // en/dis-ableNapp(); +#include "usart_defs.h" // #define COMMS_DEBUG // #define COMMS_DEBUG_RAW @@ -40,6 +41,10 @@ communication_arg_t g_conn; capabilities_t g_pm3_capabilities; static pthread_t communication_thread; +static pthread_t reconnect_thread; + +static bool reconnect_ok = false; + static bool comm_thread_dead = false; static bool comm_raw_mode = false; static uint8_t *comm_raw_data = NULL; @@ -334,6 +339,52 @@ static void PacketResponseReceived(PacketResponseNG *packet) { } } +// The reconnect device thread. +// When communication thread is dead, start up and try to start it again +void *uart_reconnect(void *targ) { + + communication_arg_t *connection = (communication_arg_t *)targ; + +#if defined(__MACH__) && defined(__APPLE__) + disableAppNap("Proxmark3 polling UART"); +#endif + + uint32_t speed = USART_BAUD_RATE; + if (connection->uart_speed) { + speed = connection->uart_speed; + } + + while (1) { + if (OpenProxmarkSilent(&g_session.current_device, connection->serial_port_name, speed) == false) { + continue; + } + + if (g_session.pm3_present && (TestProxmark(g_session.current_device) != PM3_SUCCESS)) { + CloseProxmark(g_session.current_device); + } else { + break; + } + } + + +#if defined(__MACH__) && defined(__APPLE__) + enableAppNap(); +#endif + + __atomic_test_and_set(&reconnect_ok, __ATOMIC_SEQ_CST); + + pthread_exit(NULL); + return NULL; +} + +void StartReconnectProxmark(void) { + pthread_create(&reconnect_thread, NULL, &uart_reconnect, &g_conn); +} + +bool IsReconnectedOk(void) { + bool ret = __atomic_load_n(&reconnect_ok, __ATOMIC_SEQ_CST); + return ret; +} // The communications thread. // signals to main thread when a response is ready to process. @@ -605,6 +656,8 @@ bool IsCommunicationThreadDead(void) { return ret; } + + // To start raw receive mode: // 1. Call SetCommunicationRawReceiveBuffer(...) // 2. Call SetCommunicationReceiveMode(true) @@ -644,6 +697,47 @@ size_t GetCommunicationRawReceiveNum(void) { return __atomic_load_n(&comm_raw_pos, __ATOMIC_SEQ_CST); } +bool OpenProxmarkSilent(pm3_device_t **dev, const char *port, uint32_t speed) { + + sp = uart_open(port, speed); + + // check result of uart opening + if (sp == INVALID_SERIAL_PORT) { + sp = NULL; + return false; + } else if (sp == CLAIMED_SERIAL_PORT) { + sp = NULL; + return false; + } else { + // start the communication thread + if (port != g_conn.serial_port_name) { + uint16_t len = MIN(strlen(port), FILE_PATH_SIZE - 1); + memset(g_conn.serial_port_name, 0, FILE_PATH_SIZE); + memcpy(g_conn.serial_port_name, port, len); + } + g_conn.run = true; + g_conn.block_after_ACK = false; + // Flags to tell where to add CRC on sent replies + g_conn.send_with_crc_on_usb = false; + g_conn.send_with_crc_on_fpc = true; + // "Session" flag, to tell via which interface next msgs should be sent: USB or FPC USART + g_conn.send_via_fpc_usart = false; + + pthread_create(&communication_thread, NULL, &uart_communication, &g_conn); + __atomic_clear(&comm_thread_dead, __ATOMIC_SEQ_CST); + __atomic_clear(&reconnect_ok, __ATOMIC_SEQ_CST); + + g_session.pm3_present = true; // TODO support for multiple devices + + fflush(stdout); + if (*dev == NULL) { + *dev = calloc(sizeof(pm3_device_t), sizeof(uint8_t)); + } + (*dev)->g_conn = &g_conn; // TODO g_conn shouldn't be global + return true; + } +} + bool OpenProxmark(pm3_device_t **dev, const char *port, bool wait_for_port, int timeout, bool flash_mode, uint32_t speed) { if (!wait_for_port) { @@ -817,8 +911,10 @@ void CloseProxmark(pm3_device_t *dev) { // ~ = 12000000 / USART_BAUD_RATE // Let's take 2x (maybe we need more for BT link?) static size_t communication_delay(void) { - if (g_conn.send_via_fpc_usart) // needed also for Windows USB USART?? + // needed also for Windows USB USART?? + if (g_conn.send_via_fpc_usart) { return 2 * (12000000 / g_conn.uart_speed); + } return 0; } diff --git a/client/src/comms.h b/client/src/comms.h index 632f0d29f..63b1af989 100644 --- a/client/src/comms.h +++ b/client/src/comms.h @@ -89,6 +89,9 @@ typedef struct pm3_device { int script_embedded; } pm3_device_t; + +void *uart_reconnect(void *targ); + void *uart_receiver(void *targ); void SendCommandBL(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *data, size_t len); void SendCommandOLD(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *data, size_t len); @@ -97,13 +100,18 @@ void SendCommandMIX(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, v void clearCommandBuffer(void); #define FLASHMODE_SPEED 460800 + +bool IsReconnectedOk(void); bool IsCommunicationThreadDead(void); bool SetCommunicationReceiveMode(bool isRawMode); void SetCommunicationRawReceiveBuffer(uint8_t *buffer, size_t len); size_t GetCommunicationRawReceiveNum(void); + +bool OpenProxmarkSilent(pm3_device_t **dev, const char *port, uint32_t speed); bool OpenProxmark(pm3_device_t **dev, const char *port, bool wait_for_port, int timeout, bool flash_mode, uint32_t speed); int TestProxmark(pm3_device_t *dev); void CloseProxmark(pm3_device_t *dev); +void StartReconnectProxmark(void); size_t WaitForRawDataTimeout(uint8_t *buffer, size_t len, size_t ms_timeout, bool show_process); bool WaitForResponseTimeoutW(uint32_t cmd, PacketResponseNG *response, size_t ms_timeout, bool show_warning); diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 98532f810..3492a4ac1 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -133,10 +133,12 @@ static void prompt_compose(char *buf, size_t buflen, const char *promptctx, cons if (no_newline) { snprintf(buf, buflen - 1, PROXPROMPT_COMPOSE, promptdev, promptnet, promptctx); } else { - snprintf(buf, buflen - 1, "\r" PROXPROMPT_COMPOSE, promptdev, promptnet, promptctx); + + snprintf(buf, buflen - 1, "\r \r" PROXPROMPT_COMPOSE, promptdev, promptnet, promptctx); } } +// This function is hooked via RL_EVENT_HOOK. static int check_comm(void) { // If communications thread goes down. Device disconnected then this should hook up PM3 again. if (IsCommunicationThreadDead() && g_session.pm3_present) { @@ -148,7 +150,18 @@ static int check_comm(void) { memcpy_filter_ansi(prompt_filtered, prompt, sizeof(prompt_filtered), !g_session.supports_colors); pm3line_update_prompt(prompt_filtered); CloseProxmark(g_session.current_device); + StartReconnectProxmark(); + } + // its alive again + if (IsReconnectedOk() && g_session.pm3_present) { + prompt_dev = PROXPROMPT_DEV_USB; + char prompt[PROXPROMPT_MAX_SIZE] = {0}; + prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev, prompt_net, false); + char prompt_filtered[PROXPROMPT_MAX_SIZE] = {0}; + memcpy_filter_ansi(prompt_filtered, prompt, sizeof(prompt_filtered), !g_session.supports_colors); + pm3line_update_prompt(prompt_filtered); } + msleep(10); return 0; } From c250fc1200a06ff3bb19b6d78ad42c50af209ef3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 31 Dec 2023 15:26:24 +0100 Subject: [PATCH 0950/1034] hf mf info - now detects more versions of Fudan --- client/src/cmdhfmf.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index c54edda7f..f878093df 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8963,8 +8963,12 @@ static int CmdHF14AMfInfo(const char *Cmd) { PrintAndLogEx(SUCCESS, "Block 0.......... %s", sprint_hex(blockdata, MFBLOCK_SIZE)); } - if (memcmp(blockdata + 8, "\x62\x63\x64\x65\x66\x67\x68\x69", 8) == 0) { - PrintAndLogEx(SUCCESS, " indication of Fudan"); + if ( + (blockdata[8] == 0x03 && blockdata[15] == 0x90) || + (blockdata[9] == 0x02 && blockdata[14] == 0x1D) || + (memcmp(blockdata + 8, "\x62\x63\x64\x65\x66\x67\x68\x69", 8) == 0) + ) { + PrintAndLogEx(SUCCESS, " Fudan tag detected"); } } else { From 9e039980a7e152652caf12e74a55c7ff0d03e2e0 Mon Sep 17 00:00:00 2001 From: s00se <95649696+s00se@users.noreply.github.com> Date: Sun, 31 Dec 2023 10:00:23 -0700 Subject: [PATCH 0951/1034] Update mfc_default_keys.dic Signed-off-by: s00se <95649696+s00se@users.noreply.github.com> --- client/dictionaries/mfc_default_keys.dic | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 5a11da8ca..e0bc661bd 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -2328,3 +2328,6 @@ EA0CA627FD06 # # Key from evo Montreal (probably diversified) 1064BA5D6DF8 +# Hotel key +CE0F4F15E909 +D60DE9436219 From 7749d22e6920bd908401709268aba7b5c617b205 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 1 Jan 2024 08:48:01 +0100 Subject: [PATCH 0952/1034] maur keys from @PommyGit. Will need to be verifed that its no diversifed keys --- client/dictionaries/mfc_default_keys.dic | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index e0bc661bd..8c6d69471 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -656,6 +656,19 @@ A56C2DF9A26D # # Smart Rider. Western Australian Public Transport Cards 568C9083F71C +117E5C165B10 +2031D1E57A3B +24BB421C7973 +3E3A546650EA +41F262D3AB66 +4B791BEA7BCC +514956AB3142 +568C9083F71C +5C8FF9990DA2 +75CCB59C9BED +863933AE8388 +9189449EA24E +D01AFEEB890A # # Bangkok metro key 97F5DA640B18 From 1eff30ccc1c8f803cb2f93446ac8982d09fa6e9d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 1 Jan 2024 08:51:51 +0100 Subject: [PATCH 0953/1034] fix number of duplicates... --- client/dictionaries/mfc_default_keys.dic | 7 ------- 1 file changed, 7 deletions(-) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 8c6d69471..6616a92ee 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -657,18 +657,11 @@ A56C2DF9A26D # Smart Rider. Western Australian Public Transport Cards 568C9083F71C 117E5C165B10 -2031D1E57A3B 24BB421C7973 3E3A546650EA 41F262D3AB66 -4B791BEA7BCC 514956AB3142 -568C9083F71C -5C8FF9990DA2 -75CCB59C9BED 863933AE8388 -9189449EA24E -D01AFEEB890A # # Bangkok metro key 97F5DA640B18 From 47376c84ea7815ced16d1fa2adbfb04917e5701a Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Mon, 1 Jan 2024 15:55:54 +0800 Subject: [PATCH 0954/1034] Disable print when reconnect --- client/src/comms.c | 6 +++--- client/src/uart/uart.h | 4 +++- client/src/uart/uart_posix.c | 12 ++++++++---- client/src/uart/uart_win32.c | 8 +++++--- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/client/src/comms.c b/client/src/comms.c index b05fe2180..d4915c8f1 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -699,7 +699,7 @@ size_t GetCommunicationRawReceiveNum(void) { bool OpenProxmarkSilent(pm3_device_t **dev, const char *port, uint32_t speed) { - sp = uart_open(port, speed); + sp = uart_open(port, speed, true); // check result of uart opening if (sp == INVALID_SERIAL_PORT) { @@ -742,14 +742,14 @@ bool OpenProxmark(pm3_device_t **dev, const char *port, bool wait_for_port, int if (!wait_for_port) { PrintAndLogEx(INFO, "Using UART port " _YELLOW_("%s"), port); - sp = uart_open(port, speed); + sp = uart_open(port, speed, false); } else { PrintAndLogEx(SUCCESS, "Waiting for Proxmark3 to appear on " _YELLOW_("%s"), port); fflush(stdout); int openCount = 0; PrintAndLogEx(INPLACE, "% 3i", timeout); do { - sp = uart_open(port, speed); + sp = uart_open(port, speed, false); msleep(500); PrintAndLogEx(INPLACE, "% 3i", timeout - openCount - 1); diff --git a/client/src/uart/uart.h b/client/src/uart/uart.h index cb67d7482..22aab5556 100644 --- a/client/src/uart/uart.h +++ b/client/src/uart/uart.h @@ -40,8 +40,10 @@ typedef void *serial_port; * used for future references to that port. * * On errors, this method returns INVALID_SERIAL_PORT or CLAIMED_SERIAL_PORT. + * If slient is set to false, this function will print the error information + * when error occurs. */ -serial_port uart_open(const char *pcPortName, uint32_t speed); +serial_port uart_open(const char *pcPortName, uint32_t speed, bool slient); /* Closes the given port. */ diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index 325d26abd..5b6902a1c 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -81,7 +81,7 @@ uint32_t uart_get_timeouts(void) { return newtimeout_value; } -serial_port uart_open(const char *pcPortName, uint32_t speed) { +serial_port uart_open(const char *pcPortName, uint32_t speed, bool slient) { serial_port_unix_t_t *sp = calloc(sizeof(serial_port_unix_t_t), sizeof(uint8_t)); if (sp == 0) { @@ -98,7 +98,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { char *prefix = str_dup(pcPortName); if (prefix == NULL) { - PrintAndLogEx(ERR, "error: string duplication"); + PrintAndLogEx(ERR, "error: string duplication"); free(sp); return INVALID_SERIAL_PORT; } @@ -235,7 +235,9 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { free(addrPortStr); if (rp == NULL) { /* No address succeeded */ - PrintAndLogEx(ERR, "error: Could not connect"); + if (slient == false) { + PrintAndLogEx(ERR, "error: Could not connect"); + } free(sp); return INVALID_SERIAL_PORT; } @@ -292,7 +294,9 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { } if (connect(sfd, (struct sockaddr *)&addr, sizeof(addr)) == -1) { - PrintAndLogEx(ERR, "Error: cannot connect device " _YELLOW_("%s") " over Bluetooth", addrstr); + if (slient == false) { + PrintAndLogEx(ERR, "Error: cannot connect device " _YELLOW_("%s") " over Bluetooth", addrstr); + } close(sfd); free(addrstr); free(sp); diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index a343936d2..9f8e7bef6 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -82,7 +82,7 @@ static int uart_reconfigure_timeouts_polling(serial_port sp) { return PM3_SUCCESS; } -serial_port uart_open(const char *pcPortName, uint32_t speed) { +serial_port uart_open(const char *pcPortName, uint32_t speed, bool slient) { char acPortName[255] = {0}; serial_port_windows_t *sp = calloc(sizeof(serial_port_windows_t), sizeof(uint8_t)); sp->hSocket = INVALID_SOCKET; // default: serial port @@ -99,7 +99,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { char *prefix = str_dup(pcPortName); if (prefix == NULL) { - PrintAndLogEx(ERR, "error: string duplication"); + PrintAndLogEx(ERR, "error: string duplication"); free(sp); return INVALID_SERIAL_PORT; } @@ -241,7 +241,9 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { free(addrPortStr); if (rp == NULL) { /* No address succeeded */ - PrintAndLogEx(ERR, "error: Could not connect"); + if (slient == false) { + PrintAndLogEx(ERR, "error: Could not connect"); + } WSACleanup(); free(sp); return INVALID_SERIAL_PORT; From b414081e3e4adad47f31a7e14c9ac63a29365e6c Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Mon, 1 Jan 2024 15:58:46 +0800 Subject: [PATCH 0955/1034] Add throttling in reconnecting thread --- client/src/comms.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/comms.c b/client/src/comms.c index d4915c8f1..70dbdff04 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -355,6 +355,8 @@ void *uart_reconnect(void *targ) { } while (1) { + // throttle + msleep(200); if (OpenProxmarkSilent(&g_session.current_device, connection->serial_port_name, speed) == false) { continue; } From 0dedfe9ee8e5b3a916ec6a6ddd8cfe6c53488113 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 1 Jan 2024 10:07:49 +0100 Subject: [PATCH 0956/1034] missing some old output for NVX running on proxspace/mingw. Might need even more spaces for all escape codes. the best would be a escape code to clear the line --- client/src/proxmark3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 3492a4ac1..a41805b18 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -134,7 +134,7 @@ static void prompt_compose(char *buf, size_t buflen, const char *promptctx, cons snprintf(buf, buflen - 1, PROXPROMPT_COMPOSE, promptdev, promptnet, promptctx); } else { - snprintf(buf, buflen - 1, "\r \r" PROXPROMPT_COMPOSE, promptdev, promptnet, promptctx); + snprintf(buf, buflen - 1, "\r \r" PROXPROMPT_COMPOSE, promptdev, promptnet, promptctx); } } From e9972bd060cc25e7c1ca972730e30f1f8f17f17d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 1 Jan 2024 12:05:20 +0100 Subject: [PATCH 0957/1034] minimize output when READLINE lib is used then there is no need for user to manually reconnect. Increased sleep, gives more time for OS to do other things --- client/src/proxmark3.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index a41805b18..82f75a4c7 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -133,7 +133,6 @@ static void prompt_compose(char *buf, size_t buflen, const char *promptctx, cons if (no_newline) { snprintf(buf, buflen - 1, PROXPROMPT_COMPOSE, promptdev, promptnet, promptctx); } else { - snprintf(buf, buflen - 1, "\r \r" PROXPROMPT_COMPOSE, promptdev, promptnet, promptctx); } } @@ -142,7 +141,10 @@ static void prompt_compose(char *buf, size_t buflen, const char *promptctx, cons static int check_comm(void) { // If communications thread goes down. Device disconnected then this should hook up PM3 again. if (IsCommunicationThreadDead() && g_session.pm3_present) { + +#ifndef HAVE_READLINE PrintAndLogEx(INFO, "Running in " _YELLOW_("OFFLINE") " mode. Use "_YELLOW_("\"hw connect\"") " to reconnect\n"); +#endif prompt_dev = PROXPROMPT_DEV_OFFLINE; char prompt[PROXPROMPT_MAX_SIZE] = {0}; prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev, prompt_net, false); @@ -162,7 +164,7 @@ static int check_comm(void) { pm3line_update_prompt(prompt_filtered); } - msleep(10); + msleep(50); return 0; } From d156e48a83c7a8ab051d781d60b1eedb1f49e68f Mon Sep 17 00:00:00 2001 From: nvx <neovortex@gmail.com> Date: Mon, 1 Jan 2024 21:14:32 +1000 Subject: [PATCH 0958/1034] hf 14a apdu now uses the FWI and SGFI values from the ATS to determine an appropriate timeout. This fixes issues when using the command against cards that indicate really slow times, such as card emulation by hf_cardhopper. --- CHANGELOG.md | 1 + client/src/cmdhf14a.c | 56 ++++++++++++++++++++++++++++++++++++------- 2 files changed, 48 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e646c72a3..e3759eeaa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf 14a apdu` - It now uses the FWI and SGFI values from the ATS to determine an appropriate timeout (@nvx) - Added a thread to check when device comes online again. It will connect and update prompt (@iceman1001) - Changed CLI offline prompt - replaces the old prompt when offline is detected (@iceman100) - Changed `hf mf info` - it now uses found keys to try identify Gen2 cards (@iceman1001) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 8d63a98da..361e4deae 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -1006,6 +1006,11 @@ int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card return PM3_ECARDEXCHANGE; } + iso14a_card_select_t *vcard = (iso14a_card_select_t *) resp.data.asBytes; + if (card) { + memcpy(card, vcard, sizeof(iso14a_card_select_t)); + } + if (resp.oldarg[0] == 2) { // 0: couldn't read, 1: OK, with ATS, 2: OK, no ATS, 3: proprietary Anticollision // get ATS uint8_t rats[] = { 0xE0, 0x80 }; // FSDI=8 (FSD=256), CID=0 @@ -1029,19 +1034,19 @@ int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card gs_frame_len = atsFSC[fsci]; } } + + if (card) { + card->ats_len = resp.oldarg[0]; + memcpy(card->ats, resp.data.asBytes, card->ats_len); + } } else { // get frame length from ATS in card data structure - iso14a_card_select_t *vcard = (iso14a_card_select_t *) resp.data.asBytes; if (vcard->ats_len > 1) { uint8_t fsci = vcard->ats[1] & 0x0f; if (fsci < ARRAYLEN(atsFSC)) { gs_frame_len = atsFSC[fsci]; } } - - if (card) { - memcpy(card, vcard, sizeof(iso14a_card_select_t)); - } } SetISODEPState(ISODEP_NFCA); @@ -1060,11 +1065,44 @@ int SelectCard14443A_4(bool disconnect, bool verbose, iso14a_card_select_t *card static int CmdExchangeAPDU(bool chainingin, uint8_t *datain, int datainlen, bool activateField, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, bool *chainingout) { *chainingout = false; + size_t timeout = 1500; if (activateField) { // select with no disconnect and set gs_frame_len - int selres = SelectCard14443A_4(false, true, NULL); - if (selres != PM3_SUCCESS) + iso14a_card_select_t card; + int selres = SelectCard14443A_4(false, true, &card); + if (selres != PM3_SUCCESS) { return selres; + } + + // Extract FWI and SFGI from ATS and increase timeout by the indicated values + // for most cards these values are trivially small so will make no practical + // difference but some "cards" like hf_cardhopper overwrite these to their + // maximum values resulting in ~5 seconds each which can cause timeouts if we + // just ignore it + if (((card.ats[1] & 0x20) == 0x20) && card.ats_len > 2) { + // TB is present in ATS + + uint8_t tb; + if ((card.ats[1] & 0x10) == 0x10 && card.ats_len > 3) { + // TA is also present, so TB at ats[3] + tb = card.ats[3]; + } else { + // TA is not present, so TB is at ats[2] + tb = card.ats[2]; + } + + uint8_t fwi = (tb & 0xF0) >> 4; + if (fwi != 0x0F) { + uint32_t fwt = 256 * 16 * (1 << fwi); + timeout += fwt; + } + + uint8_t sfgi = tb & 0x0F; + if (sfgi != 0x0F) { + uint32_t sgft = 256 * 16 * (1 << sfgi); + timeout += sgft; + } + } } uint16_t cmdc = 0; @@ -1082,7 +1120,7 @@ static int CmdExchangeAPDU(bool chainingin, uint8_t *datain, int datainlen, bool PacketResponseNG resp; - if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { + if (WaitForResponseTimeout(CMD_ACK, &resp, timeout)) { uint8_t *recv = resp.data.asBytes; int iLen = resp.oldarg[0]; uint8_t res = resp.oldarg[1]; @@ -2410,7 +2448,7 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { int isMagic = 0; if (isMifareClassic) { - isMagic = detect_mf_magic(true, MF_KEY_A, 0); + isMagic = detect_mf_magic(true, MF_KEY_B, 0xFFFFFFFFFFFF); } if (isMifareUltralight) { isMagic = (detect_mf_magic(false, MF_KEY_A, 0) == MAGIC_NTAG21X); From 1dee6c07d2867e022a5d0b32ca504e0ba964130a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 1 Jan 2024 12:15:35 -0500 Subject: [PATCH 0959/1034] fixed the correct identification of used communications channel and made sure its only called once --- client/src/proxmark3.c | 74 ++++++++++++++++++++++++------------------ 1 file changed, 43 insertions(+), 31 deletions(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 82f75a4c7..42f1a92c1 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -129,6 +129,40 @@ static const char *prompt_dev = ""; static const char *prompt_ctx = ""; static const char *prompt_net = ""; + +static void prompt_set(void) { + if (g_session.pm3_present) { + + switch (g_conn.send_via_ip) { + case PM3_TCPv4: + prompt_net = PROXPROMPT_NET_TCPV4; + break; + case PM3_TCPv6: + prompt_net = PROXPROMPT_NET_TCPV6; + break; + case PM3_UDPv4: + prompt_net = PROXPROMPT_NET_UDPV4; + break; + case PM3_UDPv6: + prompt_net = PROXPROMPT_NET_UDPV6; + break; + case PM3_NONE: + prompt_net = PROXPROMPT_NET_NONE; + break; + default: + break; + } + + if (g_conn.send_via_fpc_usart) + prompt_dev = PROXPROMPT_DEV_FPC; + else + prompt_dev = PROXPROMPT_DEV_USB; + + } else { + prompt_dev = PROXPROMPT_DEV_OFFLINE; + } +} + static void prompt_compose(char *buf, size_t buflen, const char *promptctx, const char *promptdev, const char *promptnet, bool no_newline) { if (no_newline) { snprintf(buf, buflen - 1, PROXPROMPT_COMPOSE, promptdev, promptnet, promptctx); @@ -137,6 +171,8 @@ static void prompt_compose(char *buf, size_t buflen, const char *promptctx, cons } } +static bool c_update_reconnect_prompt = false; + // This function is hooked via RL_EVENT_HOOK. static int check_comm(void) { // If communications thread goes down. Device disconnected then this should hook up PM3 again. @@ -153,15 +189,19 @@ static int check_comm(void) { pm3line_update_prompt(prompt_filtered); CloseProxmark(g_session.current_device); StartReconnectProxmark(); + c_update_reconnect_prompt = true; } // its alive again - if (IsReconnectedOk() && g_session.pm3_present) { - prompt_dev = PROXPROMPT_DEV_USB; + if (c_update_reconnect_prompt && IsReconnectedOk() && g_session.pm3_present) { + + prompt_set(); + char prompt[PROXPROMPT_MAX_SIZE] = {0}; prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev, prompt_net, false); char prompt_filtered[PROXPROMPT_MAX_SIZE] = {0}; memcpy_filter_ansi(prompt_filtered, prompt, sizeof(prompt_filtered), !g_session.supports_colors); pm3line_update_prompt(prompt_filtered); + c_update_reconnect_prompt = false; } msleep(50); @@ -284,36 +324,8 @@ main_loop(char *script_cmds_file, char *script_cmd, bool stayInCommandLoop) { while (1) { bool printprompt = false; - if (g_session.pm3_present) { - switch (g_conn.send_via_ip) { - case PM3_TCPv4: - prompt_net = PROXPROMPT_NET_TCPV4; - break; - case PM3_TCPv6: - prompt_net = PROXPROMPT_NET_TCPV6; - break; - case PM3_UDPv4: - prompt_net = PROXPROMPT_NET_UDPV4; - break; - case PM3_UDPv6: - prompt_net = PROXPROMPT_NET_UDPV6; - break; - case PM3_NONE: - prompt_net = PROXPROMPT_NET_NONE; - break; - default: - break; - } - - if (g_conn.send_via_fpc_usart) - prompt_dev = PROXPROMPT_DEV_FPC; - else - prompt_dev = PROXPROMPT_DEV_USB; - - } else { - prompt_dev = PROXPROMPT_DEV_OFFLINE; - } + prompt_set(); check_script: // If there is a script file From aa0ea47289607e84c6382be9a3641f6d34f38836 Mon Sep 17 00:00:00 2001 From: Eric Betts <bettse@fastmail.fm> Date: Mon, 1 Jan 2024 09:15:35 -0800 Subject: [PATCH 0960/1034] Add hint for iClass in `hf search` --- client/src/cmdhf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/cmdhf.c b/client/src/cmdhf.c index 366ba219d..c0ae5f3da 100644 --- a/client/src/cmdhf.c +++ b/client/src/cmdhf.c @@ -175,6 +175,7 @@ int CmdHFSearch(const char *Cmd) { if (IfPm3Iclass()) { if (read_iclass_csn(false, false, false) == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("iCLASS tag / PicoPass tag") " found\n"); + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf iclass`") " commands\n"); res = PM3_SUCCESS; } } From dbc0f593048c442a7ff0fe2dbe35577a82f4215e Mon Sep 17 00:00:00 2001 From: Eric Betts <bettse@fastmail.fm> Date: Mon, 1 Jan 2024 09:17:04 -0800 Subject: [PATCH 0961/1034] Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3759eeaa..5264916a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added hint for iClass to `hf search` (@bettse) - Changed `hf 14a apdu` - It now uses the FWI and SGFI values from the ATS to determine an appropriate timeout (@nvx) - Added a thread to check when device comes online again. It will connect and update prompt (@iceman1001) - Changed CLI offline prompt - replaces the old prompt when offline is detected (@iceman100) From 7b0e4e63949d04f9eff86cea9aea9c8bdac8639e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 1 Jan 2024 21:39:46 +0100 Subject: [PATCH 0962/1034] added hints for all HF protocols in "hf search" --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5264916a8..459e9a79c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Added hint for iClass to `hf search` (@bettse) + - Changed `hf search` - added hints for all HF protocols we search for (@iceman1001) + - Changed `hf search` - added hint for iClass (@bettse) - Changed `hf 14a apdu` - It now uses the FWI and SGFI values from the ATS to determine an appropriate timeout (@nvx) - Added a thread to check when device comes online again. It will connect and update prompt (@iceman1001) - Changed CLI offline prompt - replaces the old prompt when offline is detected (@iceman100) From a6c1d90ba8035a666ef340710a7c3a69ecf9ad93 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 1 Jan 2024 21:40:48 +0100 Subject: [PATCH 0963/1034] forgot one --- include/protocols.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/protocols.h b/include/protocols.h index d17952fa7..091c86374 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -434,6 +434,8 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define PROTO_CRYPTORF 15 #define SEOS 16 #define PROTO_MFPLUS 17 +#define PROTO_TEXKOM 18 +#define PROTO_XEROX 19 // Picopass fuses #define FUSE_FPERS 0x80 From 21e54ba9b1f2a58d49309bd861565c142e95b858 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 1 Jan 2024 21:49:32 +0100 Subject: [PATCH 0964/1034] adjust 14b apdu which seems to trigger memory corruption device side --- armsrc/BigBuf.c | 7 ++++-- armsrc/BigBuf.h | 2 ++ armsrc/iso14443b.c | 59 ++++++++++++++++++++++++---------------------- armsrc/iso14443b.h | 2 -- 4 files changed, 38 insertions(+), 32 deletions(-) diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index cce710ffa..4f99ae756 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -69,8 +69,6 @@ static dmabuf8_t dma_8 = { .buf = NULL }; - - // trace related variables static uint32_t trace_len = 0; static bool tracing = true; @@ -99,6 +97,11 @@ uint8_t *BigBuf_get_EM_addr(void) { return emulator_memory; } + +uint32_t BigBuf_get_hi(void) { + return s_bigbuf_hi; +} + /* uint32_t BigBuf_get_EM_size(void) { return CARD_MEMORY_SIZE; diff --git a/armsrc/BigBuf.h b/armsrc/BigBuf.h index 0938bd555..e496ce2f7 100644 --- a/armsrc/BigBuf.h +++ b/armsrc/BigBuf.h @@ -35,6 +35,8 @@ uint8_t *BigBuf_get_addr(void); uint32_t BigBuf_get_size(void); uint8_t *BigBuf_get_EM_addr(void); uint16_t BigBuf_max_traceLen(void); +uint32_t BigBuf_get_hi(void); + void BigBuf_initialize(void); void BigBuf_Clear(void); void BigBuf_Clear_ext(bool verbose); diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index db20119d2..92db20b9e 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -450,8 +450,9 @@ static void iso14b_set_timeout(uint32_t timeout_etu) { uint32_t ssp = HF14_ETU_TO_SSP(timeout_etu); - if (ssp > MAX_14B_TIMEOUT) + if (ssp > MAX_14B_TIMEOUT) { ssp = MAX_14B_TIMEOUT; + } iso14b_timeout = ssp; if (g_dbglevel >= DBG_DEBUG) { @@ -466,8 +467,9 @@ static void iso14b_set_fwt(uint8_t fwt) { } static void iso14b_set_maxframesize(uint16_t size) { - if (size > 256) + if (size > 256) { size = MAX_FRAME_SIZE; + } Uart.byteCntMax = size; if (g_dbglevel >= DBG_DEBUG) Dbprintf("ISO14443B Max frame size set to %d bytes", Uart.byteCntMax); @@ -1309,6 +1311,7 @@ static int Get14443bAnswerFromTag(uint8_t *response, uint16_t max_len, uint32_t // The DMA buffer, used to stream samples from the FPGA dmabuf16_t *dma = get_dma16(); + if (FpgaSetupSscDma((uint8_t *) dma->buf, DMA_BUFFER_SIZE) == false) { if (g_dbglevel > DBG_ERROR) Dbprintf("FpgaSetupSscDma failed. Exiting"); return -1; @@ -1396,6 +1399,8 @@ static int Get14443bAnswerFromTag(uint8_t *response, uint16_t max_len, uint32_t + (10)); // time for EOF transfer LogTrace(Demod.output, Demod.len, sof_time, *eof_time, NULL, false); } + + return Demod.len; } @@ -1661,9 +1666,10 @@ int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void if (len) { // cut frame byte len -= 1; - // memmove(data_bytes, data_bytes + 1, len); - for (int i = 0; i < len; i++) + + for (int i = 0; i < len; i++) { data_bytes[i] = data_bytes[i + 1]; + } } return len; @@ -1825,7 +1831,7 @@ static int iso14443b_select_srx_card(iso14b_card_select_t *card) { // the original chips require all commands in this sequence // 0: OK, 1: select fail, 2: attrib fail, 3: crc fail, 4: password fail -int iso14443b_select_xrx_card(iso14b_card_select_t *card) { +static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { // AFI static const uint8_t x_wup1[] = { 0x0D, 0x37, 0x21, 0x92, 0xf2 }; static const uint8_t x_wup2[] = { 0x5D, 0x37, 0x21, 0x71, 0x71 }; @@ -2396,15 +2402,12 @@ static void iso14b_set_trigger(bool enable) { void SendRawCommand14443B_Ex(iso14b_raw_cmd_t *p) { // receive buffer - uint8_t buf[PM3_CMD_DATA_SIZE]; - memset(buf, 0, sizeof(buf)); - if (g_dbglevel > DBG_DEBUG) { - Dbprintf("14b raw: param, %04x", p->flags); - } + uint8_t buf[PM3_CMD_DATA_SIZE] = {0x00}; // turn on trigger (LED_A) - if ((p->flags & ISO14B_REQUEST_TRIGGER) == ISO14B_REQUEST_TRIGGER) + if ((p->flags & ISO14B_REQUEST_TRIGGER) == ISO14B_REQUEST_TRIGGER) { iso14b_set_trigger(true); + } if ((p->flags & ISO14B_CONNECT) == ISO14B_CONNECT) { iso14443b_setup(); @@ -2420,43 +2423,42 @@ void SendRawCommand14443B_Ex(iso14b_raw_cmd_t *p) { } set_tracing(true); - int status; + int status = 0; uint32_t sendlen = sizeof(iso14b_card_select_t); - iso14b_card_select_t card; - memset((void *)&card, 0x00, sizeof(card)); + iso14b_card_select_t *card = (iso14b_card_select_t *)buf; if ((p->flags & ISO14B_SELECT_STD) == ISO14B_SELECT_STD) { - status = iso14443b_select_card(&card); + status = iso14443b_select_card(card); reply_mix(CMD_HF_ISO14443B_COMMAND, status, sendlen, 0, (uint8_t *)&card, sendlen); // 0: OK -1: attrib fail, -2:crc fail, if (status != 0) goto out; } if ((p->flags & ISO14B_SELECT_SR) == ISO14B_SELECT_SR) { - status = iso14443b_select_srx_card(&card); + status = iso14443b_select_srx_card(card); reply_mix(CMD_HF_ISO14443B_COMMAND, status, sendlen, 0, (uint8_t *)&card, sendlen); // 0: OK 2: demod fail, 3:crc fail, if (status > 0) goto out; } - if ((p->flags & ISO14B_SELECT_CTS) == ISO14B_SELECT_CTS) { - iso14b_cts_card_select_t cts; - sendlen = sizeof(iso14b_cts_card_select_t); - status = iso14443b_select_cts_card(&cts); - reply_mix(CMD_HF_ISO14443B_COMMAND, status, sendlen, 0, (uint8_t *)&cts, sendlen); - // 0: OK 2: demod fail, 3:crc fail, - if (status > 0) goto out; - } - if ((p->flags & ISO14B_SELECT_XRX) == ISO14B_SELECT_XRX) { - status = iso14443b_select_xrx_card(&card); + status = iso14443b_select_xrx_card(card); reply_mix(CMD_HF_ISO14443B_COMMAND, status, sendlen, 0, (uint8_t *)&card, sendlen); // 0: OK, 1: select fail, 2: attrib fail, 3: crc fail, 4: password fail if (status != 0) goto out; } + if ((p->flags & ISO14B_SELECT_CTS) == ISO14B_SELECT_CTS) { + iso14b_cts_card_select_t *cts = (iso14b_cts_card_select_t *)buf; + sendlen = sizeof(iso14b_cts_card_select_t); + status = iso14443b_select_cts_card(cts); + reply_mix(CMD_HF_ISO14443B_COMMAND, status, sendlen, 0, (uint8_t *)&cts, sendlen); + // 0: OK 2: demod fail, 3:crc fail, + if (status > 0) goto out; + } + if ((p->flags & ISO14B_APDU) == ISO14B_APDU) { - uint8_t res; + uint8_t res = 0; status = iso14443b_apdu(p->raw, p->rawlen, (p->flags & ISO14B_SEND_CHAINING), buf, sizeof(buf), &res); sendlen = MIN(Demod.len, PM3_CMD_DATA_SIZE); reply_mix(CMD_HF_ISO14443B_COMMAND, status, res, 0, buf, sendlen); @@ -2488,8 +2490,9 @@ void SendRawCommand14443B_Ex(iso14b_raw_cmd_t *p) { out: // turn off trigger (LED_A) - if ((p->flags & ISO14B_REQUEST_TRIGGER) == ISO14B_REQUEST_TRIGGER) + if ((p->flags & ISO14B_REQUEST_TRIGGER) == ISO14B_REQUEST_TRIGGER) { iso14b_set_trigger(false); + } // turn off antenna et al // we don't send a HALT command. diff --git a/armsrc/iso14443b.h b/armsrc/iso14443b.h index afa21e9d1..9d5c1d374 100644 --- a/armsrc/iso14443b.h +++ b/armsrc/iso14443b.h @@ -38,8 +38,6 @@ void iso14443b_setup(void); int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void *rxdata, uint16_t rxmaxlen, uint8_t *res); int iso14443b_select_card(iso14b_card_select_t *card); -int iso14443b_select_card_srx(iso14b_card_select_t *card); -int iso14443b_select_xrx_card(iso14b_card_select_t *card); void SimulateIso14443bTag(const uint8_t *pupi); void AcquireRawAdcSamplesIso14443b(uint32_t parameter); From 238572c3374f6b4b0e9fa53aaaad0203ab18033e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 1 Jan 2024 21:52:05 +0100 Subject: [PATCH 0965/1034] style --- armsrc/appmain.c | 2 +- armsrc/iso14443a.c | 4 +-- armsrc/mifarecmd.c | 4 +-- client/src/cmddata.c | 4 +-- client/src/cmdhfemrtd.c | 30 ++++++++-------- client/src/cmdhfmf.c | 2 +- client/src/cmdhfmfp.c | 66 +++++++++++++++++------------------ client/src/cmdlf.c | 16 ++++----- client/src/cmdusart.c | 8 ++--- client/src/comms.c | 4 +-- client/src/proxmark3.c | 2 +- client/src/uart/uart_common.c | 2 +- client/src/uart/uart_posix.c | 3 +- doc/commands.json | 16 ++++----- 14 files changed, 81 insertions(+), 82 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index be7cb018d..1256afc9d 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -1734,7 +1734,7 @@ static void PacketReceived(PacketCommandNG *packet) { case CMD_HF_MIFARE_CIDENT: { - struct p { + struct p { uint8_t is_mfc; uint8_t keytype; uint8_t key[6]; diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index b7b6d3852..c06e2af48 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -2695,7 +2695,7 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint uint16_t UIDbit = (resp[i / 8] >> (i % 8)) & 0x01; uid_resp[uid_resp_bits / 8] |= UIDbit << (uid_resp_bits % 8); } - + uid_resp[uid_resp_bits / 8] |= 1 << (uid_resp_bits % 8); // next time select the card(s) with a 1 in the collision position uid_resp_bits++; // construct anticollision command: @@ -3516,7 +3516,7 @@ void ReaderMifare(bool first_try, uint8_t block, uint8_t keytype) { */ void DetectNACKbug(void) { uint8_t mf_auth[4] = { MIFARE_AUTH_KEYA, 0x00, 0xF5, 0x7B }; - uint8_t mf_nr_ar[8]= { 0x00 }; + uint8_t mf_nr_ar[8] = { 0x00 }; uint8_t uid[10] = { 0x00 }; uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = { 0x00 }; uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = { 0x00 }; diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 2cf2c19e0..7fd97ea80 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2477,7 +2477,7 @@ void MifareCIdent(bool is_mfc, uint8_t keytype, uint8_t *key) { } // reset card - mf_reset_card(); + mf_reset_card(); res = iso14443a_select_card(uid, NULL, &cuid, true, 0, false); if (res) { @@ -2557,7 +2557,7 @@ void MifareCIdent(bool is_mfc, uint8_t keytype, uint8_t *key) { struct Crypto1State mpcs = {0, 0}; struct Crypto1State *pcs; pcs = &mpcs; - + // CUID (with default sector 0 B key) test // regular cards will NAK the WRITEBLOCK(0) command, while DirectWrite will ACK it // if we do get an ACK, we immediately abort to ensure nothing is ever actually written diff --git a/client/src/cmddata.c b/client/src/cmddata.c index e244a7bf5..7c0b3947e 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -870,7 +870,7 @@ int AutoCorrelate(const int *in, int *out, size_t len, size_t window, bool SaveG if (distance == -1) { distance = peaks[i]; continue; - } + } if (peaks[i] < distance) { distance = peaks[i]; @@ -3416,7 +3416,7 @@ static int CmdNumCon(const char *Cmd) { continue; } - switch(i) { + switch (i) { case 0: // MBEDTLS_MPI_CHK(mbedtls_mpi_inv_mod(&N, &N, &base)); break; diff --git a/client/src/cmdhfemrtd.c b/client/src/cmdhfemrtd.c index 5b9482381..0933217cd 100644 --- a/client/src/cmdhfemrtd.c +++ b/client/src/cmdhfemrtd.c @@ -1285,7 +1285,7 @@ static void emrtd_print_issuance(char *data, bool ascii) { } static void emrtd_print_personalization_timestamp(uint8_t *data, size_t datalen) { - if (datalen < 7 ) { + if (datalen < 7) { return; } @@ -1294,13 +1294,13 @@ static void emrtd_print_personalization_timestamp(uint8_t *data, size_t datalen) char final_date[20] = { 0x00 }; snprintf(final_date, sizeof(final_date), "%.4s-%.2s-%.2s %.2s:%.2s:%.2s" - , str_date - , str_date + 4 - , str_date + 6 - , str_date + 8 - , str_date + 10 - , str_date + 12 - ); + , str_date + , str_date + 4 + , str_date + 6 + , str_date + 8 + , str_date + 10 + , str_date + 12 + ); PrintAndLogEx(SUCCESS, "Personalization at....: " _YELLOW_("%s"), final_date); } @@ -1311,13 +1311,13 @@ static void emrtd_print_unknown_timestamp_5f85(uint8_t *data, size_t datalen) { } char final_date[20] = { 0x00 }; snprintf(final_date, sizeof(final_date), "%.4s-%.2s-%.2s %.2s:%.2s:%.2s" - , data - , data + 4 - , data + 6 - , data + 8 - , data + 10 - , data + 12 - ); + , data + , data + 4 + , data + 6 + , data + 8 + , data + 10 + , data + 12 + ); PrintAndLogEx(SUCCESS, "Unknown timestamp 5F85: " _YELLOW_("%s"), final_date); PrintAndLogEx(HINT, "This is very likely the personalization timestamp, but it is using an undocumented tag."); diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index f878093df..e9091b3c3 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8965,7 +8965,7 @@ static int CmdHF14AMfInfo(const char *Cmd) { if ( (blockdata[8] == 0x03 && blockdata[15] == 0x90) || - (blockdata[9] == 0x02 && blockdata[14] == 0x1D) || + (blockdata[9] == 0x02 && blockdata[14] == 0x1D) || (memcmp(blockdata + 8, "\x62\x63\x64\x65\x66\x67\x68\x69", 8) == 0) ) { PrintAndLogEx(SUCCESS, " Fudan tag detected"); diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 2a48f462a..15f244141 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1682,46 +1682,46 @@ static int CmdHFMFPDump(const char *Cmd) { PrintAndLogEx(INFO, " To be implemented, feel free to contribute!"); return PM3_ENOTIMPL; -/* - mfpSetVerboseMode(verbose); + /* + mfpSetVerboseMode(verbose); - // read card - uint8_t *mem = calloc(MIFARE_4K_MAXBLOCK * MFBLOCK_SIZE, sizeof(uint8_t)); - if (mem == NULL) { - PrintAndLogEx(ERR, "failed to allocate memory"); - return PM3_EMALLOC; - } + // read card + uint8_t *mem = calloc(MIFARE_4K_MAXBLOCK * MFBLOCK_SIZE, sizeof(uint8_t)); + if (mem == NULL) { + PrintAndLogEx(ERR, "failed to allocate memory"); + return PM3_EMALLOC; + } -// iso14a_card_select_t card ; -// int res = mfp_read_tag(&card, mem, key_fn); -// if (res != PM3_SUCCESS) { -// free(mem); -// return res; -// } + // iso14a_card_select_t card ; + // int res = mfp_read_tag(&card, mem, key_fn); + // if (res != PM3_SUCCESS) { + // free(mem); + // return res; + // } - // Skip saving card data to file - if (nosave) { - PrintAndLogEx(INFO, "Called with no save option"); + // Skip saving card data to file + if (nosave) { + PrintAndLogEx(INFO, "Called with no save option"); + free(mem); + return PM3_SUCCESS; + } + + // Save to file + // if (strlen(data_fn) < 1) { + // char *fptr = calloc(sizeof(char) * (strlen("hf-mfp-") + strlen("-dump")) + card.uidlen * 2 + 1, sizeof(uint8_t)); + // strcpy(fptr, "hf-mfp-"); + // FillFileNameByUID(fptr, card.uid, "-dump", card.uidlen); + // strcpy(data_fn, fptr); + // free(fptr); + // } + + // pm3_save_mf_dump(filename, dump, MIFARE_4K_MAX_BYTES, jsfCardMemory); + free(mem); return PM3_SUCCESS; - } - - // Save to file -// if (strlen(data_fn) < 1) { -// char *fptr = calloc(sizeof(char) * (strlen("hf-mfp-") + strlen("-dump")) + card.uidlen * 2 + 1, sizeof(uint8_t)); -// strcpy(fptr, "hf-mfp-"); -// FillFileNameByUID(fptr, card.uid, "-dump", card.uidlen); -// strcpy(data_fn, fptr); -// free(fptr); -// } - -// pm3_save_mf_dump(filename, dump, MIFARE_4K_MAX_BYTES, jsfCardMemory); - - free(mem); - return PM3_SUCCESS; -*/ + */ } diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index a2024a60a..11b48d6b7 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -1916,13 +1916,13 @@ int CmdLFfind(const char *Cmd) { PrintAndLogEx(INFO, _CYAN_("Checking for unknown tags...") "\n"); uint8_t ones[] = { - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - }; + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }; // FSK PrintAndLogEx(INFO, "FSK clock.......... " NOLF); @@ -1971,7 +1971,7 @@ int CmdLFfind(const char *Cmd) { check_autocorrelate("NRZ", clock); found++; } else { - PrintAndLogEx(INFO, "NRZ ............... " _RED_("false positive")); + PrintAndLogEx(INFO, "NRZ ............... " _RED_("false positive")); PrintAndLogEx(NORMAL, ""); } } else { diff --git a/client/src/cmdusart.c b/client/src/cmdusart.c index be52aa7ca..fded09581 100644 --- a/client/src/cmdusart.c +++ b/client/src/cmdusart.c @@ -168,8 +168,8 @@ static int usart_bt_testcomm(uint32_t baudrate, uint8_t parity) { if (ret == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); if (str_startswith((char *)data, "hc01.comV2.0") || - str_startswith((char *)data, "www.hc01.com") || - str_startswith((char *)data, "BT SPP V4.0")) { + str_startswith((char *)data, "www.hc01.com") || + str_startswith((char *)data, "BT SPP V4.0")) { PrintAndLogEx(SUCCESS, "Add-on " _GREEN_("found!")); @@ -310,7 +310,7 @@ static int CmdUsartBtFactory(const char *Cmd) { memset(data, 0, sizeof(data)); len = 0; - + if (isBluetoothExtensionHC04 == true) { string = "AT+PIN=1234"; } else { @@ -378,7 +378,7 @@ static int CmdUsartBtFactory(const char *Cmd) { } else { memset(data, 0, sizeof(data)); - len=0; + len = 0; string = "AT+BAUD=115200,N"; PrintAndLogEx(SUCCESS, "TX (%3zu):%.*s", strlen(string), (int)strlen(string), string); diff --git a/client/src/comms.c b/client/src/comms.c index 70dbdff04..cdda2ea77 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -362,7 +362,7 @@ void *uart_reconnect(void *targ) { } if (g_session.pm3_present && (TestProxmark(g_session.current_device) != PM3_SUCCESS)) { - CloseProxmark(g_session.current_device); + CloseProxmark(g_session.current_device); } else { break; } @@ -728,7 +728,7 @@ bool OpenProxmarkSilent(pm3_device_t **dev, const char *port, uint32_t speed) { pthread_create(&communication_thread, NULL, &uart_communication, &g_conn); __atomic_clear(&comm_thread_dead, __ATOMIC_SEQ_CST); __atomic_clear(&reconnect_ok, __ATOMIC_SEQ_CST); - + g_session.pm3_present = true; // TODO support for multiple devices fflush(stdout); diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 42f1a92c1..97c82541e 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -190,7 +190,7 @@ static int check_comm(void) { CloseProxmark(g_session.current_device); StartReconnectProxmark(); c_update_reconnect_prompt = true; - } + } // its alive again if (c_update_reconnect_prompt && IsReconnectedOk() && g_session.pm3_present) { diff --git a/client/src/uart/uart_common.c b/client/src/uart/uart_common.c index 3e7fc5fb5..e10897326 100644 --- a/client/src/uart/uart_common.c +++ b/client/src/uart/uart_common.c @@ -131,4 +131,4 @@ int uart_parse_address_port(char *addrPortStr, const char **addrStr, const char } return PM3_SUCCESS; -} \ No newline at end of file +} diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index 5b6902a1c..0863cc9b7 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -108,8 +108,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed, bool slient) { bool isUDP = false; bool isBluetooth = false; bool isUnixSocket = false; - if (strlen(prefix) > 4) - { + if (strlen(prefix) > 4) { isTCP = (memcmp(prefix, "tcp:", 4) == 0); isUDP = (memcmp(prefix, "udp:", 4) == 0); } diff --git a/doc/commands.json b/doc/commands.json index edebe62b9..e35ae8855 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -4709,7 +4709,7 @@ }, "hf mf info": { "command": "hf mf info", - "description": "Information and check vulnerabilities in a MIFARE Classic card Some cards in order to extract information you need to specify key and/or specific keys in the copmmand line", + "description": "Information and check vulnerabilities in a MIFARE Classic card Some cards in order to extract information you need to specify key and/or specific keys in the command line", "notes": [ "hf mf info", "hf mf info -k FFFFFFFFFFFF -n -v" @@ -7257,7 +7257,7 @@ "offline": false, "options": [ "-h, --help This help", - "-1 Use data from Graphbuffer", + "-1 Use data from Graphbuffer (offline mode)", "-v, --verbose Verbose scan and output", "-@ optional - continuous reader mode" ], @@ -10105,16 +10105,16 @@ "description": "Read and search for valid known tag. For offline mode, you can `data load` first then search.", "notes": [ "lf search -> try reading data from tag & search for known tag", - "lf search -1 -> use data from the GraphBuffer & search for known tag", "lf search -u -> try reading data from tag & search for known and unknown tag", - "lf search -1u -> use data from the GraphBuffer & search for known and unknown tag" + "lf search -1 -> use data from the GraphBuffer & search for known tag", + "lf search -1uc -> use data from the GraphBuffer & search for known and unknown tag" ], "offline": true, "options": [ "-h, --help This help", - "-1 Use data from Graphbuffer to search", - "-c Continue searching even after a first hit", - "-u Search for unknown tags. If not set, reads only known tags" + "-1 Use data from Graphbuffer to search (offline mode)", + "-c Continue searching after successful match", + "-u Search for unknown tags" ], "usage": "lf search [-h1cu]" }, @@ -12160,6 +12160,6 @@ "metadata": { "commands_extracted": 703, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-12-18T09:05:00" + "extracted_on": "2024-01-01T20:49:58" } } \ No newline at end of file From 035572798e3ee8692d0cfba11462922e1ca1114c Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jan 2024 21:52:06 +0100 Subject: [PATCH 0966/1034] text and style --- client/src/cmdflashmemspiffs.c | 35 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/client/src/cmdflashmemspiffs.c b/client/src/cmdflashmemspiffs.c index 70efd5db6..2f5c94324 100644 --- a/client/src/cmdflashmemspiffs.c +++ b/client/src/cmdflashmemspiffs.c @@ -370,22 +370,19 @@ static int CmdFlashMemSpiFFSDump(const char *Cmd) { CLIParserInit(&ctx, "mem spiffs dump", "Dumps device SPIFFS file to a local file\n" "Size is handled by first sending a STAT command against file to verify existence", - "mem spiffs dump -s tag.bin --> download binary file from device\n" + "mem spiffs dump -s tag.bin --> download binary file from device, saved as `tag.bin`\n" "mem spiffs dump -s tag.bin -d a001 --> download tag.bin, save as `a001.bin`\n" - "mem spiffs dump -s tag.bin -t --> download tag.bin into client trace buffer" + "mem spiffs dump -s tag.bin -t --> download tag.bin into trace buffer" ); void *argtable[] = { arg_param_begin, arg_str1("s", "src", "<fn>", "SPIFFS file to save"), arg_str0("d", "dest", "<fn>", "file name to save to <w/o .bin>"), - arg_lit0("t", "trace", "download into trace buffer, not local file"), + arg_lit0("t", "trace", "download into trace buffer"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); - bool use_buffer = arg_get_lit(ctx, 3); - - int slen = 0; char src[32] = {0}; CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)src, 32, &slen); @@ -394,6 +391,7 @@ static int CmdFlashMemSpiFFSDump(const char *Cmd) { char dest[FILE_PATH_SIZE] = {0}; CLIParamStrToBuf(arg_get_str(ctx, 2), (uint8_t *)dest, FILE_PATH_SIZE, &dlen); + bool to_trace = arg_get_lit(ctx, 3); CLIParserFree(ctx); // get size from spiffs itself ! @@ -407,7 +405,7 @@ static int CmdFlashMemSpiFFSDump(const char *Cmd) { uint32_t len = resp.data.asDwords[0]; uint8_t *dump = calloc(len, sizeof(uint8_t)); - if (!dump) { + if (dump == NULL) { PrintAndLogEx(ERR, "error, cannot allocate memory "); return PM3_EMALLOC; } @@ -415,36 +413,37 @@ static int CmdFlashMemSpiFFSDump(const char *Cmd) { // download from device uint32_t start_index = 0; PrintAndLogEx(INFO, "downloading "_YELLOW_("%u") " bytes from `" _YELLOW_("%s") "` (spiffs)", len, src); - if (!GetFromDevice(SPIFFS, dump, len, start_index, (uint8_t *)src, slen, NULL, -1, true)) { + if (GetFromDevice(SPIFFS, dump, len, start_index, (uint8_t *)src, slen, NULL, -1, true) == false) { PrintAndLogEx(FAILED, "error, downloading from spiffs"); free(dump); return PM3_EFLASH; } - if (use_buffer == true) { + if (to_trace) { // copy to client trace buffer - if (!ImportTraceBuffer(dump, len)) - { + if (ImportTraceBuffer(dump, len) == false) { PrintAndLogEx(FAILED, "error, copying to trace buffer"); free(dump); return PM3_EMALLOC; } - PrintAndLogEx(SUCCESS, "Use 'trace list -1 -t ...' to view, 'trace save -f ...' to save"); + PrintAndLogEx(HINT, "Use 'trace list -1 -t ...' to view, 'trace save -f ...' to save"); } else { + // save to file char fn[FILE_PATH_SIZE] = {0}; - if (dlen == 0) { - strncpy(fn, src, slen); - } else { + if (dlen) { strncpy(fn, dest, dlen); + } else { + strncpy(fn, src, slen); } // set file extension char *suffix = strchr(fn, '.'); - if (suffix) + if (suffix) { saveFile(fn, suffix, dump, len); - else - saveFile(fn, ".bin", dump, len); // default + } else { + saveFile(fn, ".bin", dump, len); + } } free(dump); return PM3_SUCCESS; From b6a448e391f75618be868f9e48114301ca233ef4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jan 2024 21:55:04 +0100 Subject: [PATCH 0967/1034] style --- client/src/cmdtrace.c | 12 +++++------- doc/commands.json | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index b277c2088..c5565dc75 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -93,21 +93,19 @@ static uint8_t calc_pos(const uint8_t *d) { // Copy an existing buffer into client trace buffer // I think this is cleaner than further globalizing gs_trace, and may lend itself to more modularity later? -bool ImportTraceBuffer(uint8_t *trace_src, uint16_t trace_len) -{ - if (trace_len == 0 || trace_src == NULL) return(false); +bool ImportTraceBuffer(uint8_t *trace_src, uint16_t trace_len) { + if (trace_len == 0 || trace_src == NULL) return (false); if (gs_trace) { free(gs_trace); gs_traceLen = 0; } gs_trace = calloc(trace_len, sizeof(uint8_t)); - if (gs_trace == NULL) - { - return(false); + if (gs_trace == NULL) { + return (false); } memcpy(gs_trace, trace_src, trace_len); gs_traceLen = trace_len; - return(true); + return (true); } static uint8_t extract_uid[10] = {0}; diff --git a/doc/commands.json b/doc/commands.json index e35ae8855..e406bb5fc 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -12160,6 +12160,6 @@ "metadata": { "commands_extracted": 703, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2024-01-01T20:49:58" + "extracted_on": "2024-01-02T20:54:40" } } \ No newline at end of file From fe36bdaca48110016c37d66683bf67628e6fccec Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jan 2024 22:13:00 +0100 Subject: [PATCH 0968/1034] text --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 459e9a79c..00653e1ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `mem spiffs dump -t` - now supports downloading direct into trace buffer (@hazardousvoltage) - Changed `hf search` - added hints for all HF protocols we search for (@iceman1001) - Changed `hf search` - added hint for iClass (@bettse) - Changed `hf 14a apdu` - It now uses the FWI and SGFI values from the ATS to determine an appropriate timeout (@nvx) From fda0968db2da5c0296bf95c0c6b1684294d30910 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jan 2024 23:11:51 +0100 Subject: [PATCH 0969/1034] white space and adding hf_unisniff to buildscript --- client/src/cmdhfmfp.c | 2 +- client/src/cmdsmartcard.c | 2 +- client/src/cmdtrace.c | 2 +- doc/commands.json | 14 ++++++++------ tools/build_all_firmwares.sh | 2 +- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 15f244141..6c047f06c 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -2091,7 +2091,7 @@ static command_t CommandTable[] = { {"rdbl", CmdHFMFPRdbl, IfPm3Iso14443a, "Read blocks from card"}, {"rdsc", CmdHFMFPRdsc, IfPm3Iso14443a, "Read sectors from card"}, {"wrbl", CmdHFMFPWrbl, IfPm3Iso14443a, "Write block to card"}, - {"chkey", CmdHFMFPChKey, IfPm3Iso14443a, "Change key on card"}, + {"chkey", CmdHFMFPChKey, IfPm3Iso14443a, "Change key on card"}, {"chconf", CmdHFMFPChConf, IfPm3Iso14443a, "Change config on card"}, {"-----------", CmdHelp, IfPm3Iso14443a, "---------------- " _CYAN_("personalization") " -------------------"}, {"commitp", CmdHFMFPCommitPerso, IfPm3Iso14443a, "Configure security layer (SL1/SL3 mode)"}, diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index 46a5a9448..b8fbef3a7 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -1313,7 +1313,7 @@ static int CmdRelay(const char *Cmd) { continue; } } else if (cardType == ISODEP_NFCB) { - if (exchange_14b_apdu(cmdbuf + 2, apduLen, !fieldActivated, true, apduRes, sizeof(apduRes), &apduResLen, 0)) { + if (exchange_14b_apdu(cmdbuf + 2, apduLen, !fieldActivated, true, apduRes, sizeof(apduRes), &apduResLen, 0)) { cardType = ISODEP_INACTIVE; mbedtls_net_close(&netCtx); continue; diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index c5565dc75..9ee7b256a 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -1121,7 +1121,7 @@ static int CmdTraceLoad(const char *Cmd) { CLIParserFree(ctx); if (gs_trace) { - free(gs_trace); // maybe better to not clobber this until we have successful load? + free(gs_trace); // maybe better to not clobber this until we have successful load? gs_trace = NULL; gs_traceLen = 0; } diff --git a/doc/commands.json b/doc/commands.json index e406bb5fc..160eb6781 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -10973,16 +10973,18 @@ "command": "mem spiffs dump", "description": "Dumps device SPIFFS file to a local file Size is handled by first sending a STAT command against file to verify existence", "notes": [ - "mem spiffs dump -s tag.bin -> download binary file from device", - "mem spiffs dump -s tag.bin -d a001 -e -> download tag.bin, save as `a001.bin`" + "mem spiffs dump -s tag.bin -> download binary file from device, saved as `tag.bin`", + "mem spiffs dump -s tag.bin -d a001 -> download tag.bin, save as `a001.bin`", + "mem spiffs dump -s tag.bin -t -> download tag.bin into trace buffer" ], "offline": false, "options": [ "-h, --help This help", "-s, --src <fn> SPIFFS file to save", - "-d, --dest <fn> file name to save to <w/o .bin>" + "-d, --dest <fn> file name to save to <w/o .bin>", + "-t, --trace download into trace buffer" ], - "usage": "mem spiffs dump [-h] -s <fn> [-d <fn>]" + "usage": "mem spiffs dump [-ht] -s <fn> [-d <fn>]" }, "mem spiffs info": { "command": "mem spiffs info", @@ -11087,7 +11089,7 @@ }, "mem spiffs view": { "command": "mem spiffs view", - "description": "View a file on flash memory on devicer in console", + "description": "View a file on flash memory on device in console", "notes": [ "mem spiffs view -f tag.bin" ], @@ -12160,6 +12162,6 @@ "metadata": { "commands_extracted": 703, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2024-01-02T20:54:40" + "extracted_on": "2024-01-02T22:09:45" } } \ No newline at end of file diff --git a/tools/build_all_firmwares.sh b/tools/build_all_firmwares.sh index 261d89135..22a3ee60f 100755 --- a/tools/build_all_firmwares.sh +++ b/tools/build_all_firmwares.sh @@ -32,7 +32,7 @@ mv bootrom/obj/bootrom.elf "$DEST/PM3BOOTROM.elf" # cf armsrc/Standalone/Makefile.hal STANDALONE_MODES=(LF_SKELETON) STANDALONE_MODES+=(LF_EM4100EMUL LF_EM4100RSWB LF_EM4100RSWW LF_EM4100RWC LF_HIDBRUTE LF_HIDFCBRUTE LF_ICEHID LF_MULTIHID LF_NEDAP_SIM LF_NEXID LF_PROXBRUTE LF_PROX2BRUTE LF_SAMYRUN LF_THAREXDE) -STANDALONE_MODES+=(HF_14ASNIFF HF_14BSNIFF HF_15SNIFF HF_AVEFUL HF_BOG HF_CARDHOPPER HF_COLIN HF_CRAFTBYTE HF_ICECLASS HF_LEGIC HF_LEGICSIM HF_MATTYRUN HF_MFCSIM HF_MSDSAL HF_REBLAY HF_TCPRST HF_TMUDFORD HF_YOUNG) +STANDALONE_MODES+=(HF_14ASNIFF HF_14BSNIFF HF_15SNIFF HF_AVEFUL HF_BOG HF_CARDHOPPER HF_COLIN HF_CRAFTBYTE HF_ICECLASS HF_LEGIC HF_LEGICSIM HF_MATTYRUN HF_MFCSIM HF_MSDSAL HF_REBLAY HF_TCPRST HF_TMUDFORD HF_UNISNIFF HF_YOUNG) STANDALONE_MODES+=(DANKARMULTI) STANDALONE_MODES_REQ_BT=(HF_CARDHOPPER HF_REBLAY) STANDALONE_MODES_REQ_SMARTCARD=() From fc54e61890d304086ce134e681a33cf6a892b220 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jan 2024 23:23:40 +0100 Subject: [PATCH 0970/1034] fix optarg error --- tools/hitag2crack/crack4/ht2crack4.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/hitag2crack/crack4/ht2crack4.c b/tools/hitag2crack/crack4/ht2crack4.c index 3c2680692..70585ed58 100644 --- a/tools/hitag2crack/crack4/ht2crack4.c +++ b/tools/hitag2crack/crack4/ht2crack4.c @@ -49,6 +49,7 @@ #include <inttypes.h> #include <math.h> #include <pthread.h> +#include <getopt.h> #include "ht2crackutils.h" /* you could have more than 32 traces, but you shouldn't really need @@ -774,7 +775,7 @@ int main(int argc, char *argv[]) { uint64_t revkey; uint64_t foundkey; int tot_nRaR = 0; - char c; + int c; char *uidstr = NULL; char *noncefilestr = NULL; From f0f9656e96b2910a2c55ccd750b39266179410c6 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jan 2024 23:24:07 +0100 Subject: [PATCH 0971/1034] fix getopt return value --- client/deps/amiitool/amiitool.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/deps/amiitool/amiitool.c b/client/deps/amiitool/amiitool.c index 61f4abd81..aa51b44d5 100644 --- a/client/deps/amiitool/amiitool.c +++ b/client/deps/amiitool/amiitool.c @@ -43,7 +43,7 @@ int main(int argc, char **argv) { char op = '\0'; bool lenient = false; - char c; + int c; while ((c = getopt(argc, argv, "edci:s:o:k:l")) != -1) { switch (c) { case 'e': From 0245ea4f7c286fe5057ff877643d13b2ef8d2c86 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jan 2024 01:59:31 +0100 Subject: [PATCH 0972/1034] title --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00653e1ff..06f180baa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + +## [Steamboat Willie][2024-01-03] - Changed `mem spiffs dump -t` - now supports downloading direct into trace buffer (@hazardousvoltage) - Changed `hf search` - added hints for all HF protocols we search for (@iceman1001) - Changed `hf search` - added hint for iClass (@bettse) From 57eeb712fd1dba330c6ed81377b3e074a962f7a7 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jan 2024 01:59:39 +0100 Subject: [PATCH 0973/1034] Release v4.17768 - Steamboat Willie --- Makefile.defs | 4 ++-- armsrc/Makefile | 2 +- bootrom/Makefile | 2 +- client/CMakeLists.txt | 4 ++-- client/Makefile | 4 ++-- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 18 ++++++++-------- client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/experimental_lib/CMakeLists.txt | 2 +- client/src/proxmark3.c | 2 +- common/default_version_pm3.c | 29 +++++++------------------- common_arm/Makefile.common | 2 +- 18 files changed, 35 insertions(+), 50 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index 1ef2aa09d..aadb1a98b 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -112,8 +112,8 @@ ifeq ($(DEBUG),1) DEFCFLAGS = -g -O0 -fstrict-aliasing -pipe DEFLDFLAGS = else - DEFCXXFLAGS = -Wall -Werror -O3 -pipe - DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe + DEFCXXFLAGS = -Wall -O3 -pipe + DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe DEFLDFLAGS = endif diff --git a/armsrc/Makefile b/armsrc/Makefile index 5f641884a..cc786b9a1 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -184,7 +184,7 @@ showinfo: # version_pm3.c should be checked on every time fullimage.stage1.elf should be remade version_pm3.c: default_version_pm3.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) .FORCE $(info [-] CHECK $@) - $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ + $(Q)$(CP) $< $@ fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR) $(info [-] GEN $@) diff --git a/bootrom/Makefile b/bootrom/Makefile index b6825530d..86c785cd1 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -56,7 +56,7 @@ OBJS = $(OBJDIR)/bootrom.s19 # version_pm3.c should be checked on every compilation version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ + $(Q)$(CP) $< $@ all: showinfo $(OBJS) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index d92c15fbe..569a5541a 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -400,7 +400,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) @@ -636,7 +636,7 @@ add_executable(proxmark3 ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) +target_compile_options(proxmark3 PUBLIC -Wall -O3) if (EMBED_READLINE) if (NOT SKIPREADLINE EQUAL 1) add_dependencies(proxmark3 ncurses readline) diff --git a/client/Makefile b/client/Makefile index fc0dedb82..466d9413a 100644 --- a/client/Makefile +++ b/client/Makefile @@ -419,7 +419,7 @@ endif PM3CFLAGS += -DHAVE_SNPRINTF -CXXFLAGS ?= -Wall -Werror +CXXFLAGS ?= -Wall CXXFLAGS += $(MYDEFS) $(MYCXXFLAGS) $(MYINCLUDES) PM3CXXFLAGS = $(CXXFLAGS) @@ -927,7 +927,7 @@ src/pm3_pywrap.c: pm3.i # version_pm3.c should be checked on every compilation src/version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ + $(Q)$(CP) $< $@ # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index c946c0682..8c524c170 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -19,7 +19,7 @@ target_link_libraries(pm3rrg_rdv4_amiibo PRIVATE m pm3rrg_rdv4_mbedtls) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_amiibo PRIVATE amiitool diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index fccae33b7..a85cc2374 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -9,5 +9,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index ec545e2a8..468ee4ef2 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -32,7 +32,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -47,7 +47,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -62,7 +62,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -77,7 +77,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -92,7 +92,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -116,7 +116,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM64_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_neon PRIVATE @@ -134,7 +134,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM32_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_neon BEFORE PRIVATE -mfpu=neon) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -155,7 +155,7 @@ add_library(pm3rrg_rdv4_hardnested STATIC hardnested/hardnested_bruteforce.c $<TARGET_OBJECTS:pm3rrg_rdv4_hardnested_nosimd> ${SIMD_TARGETS}) -target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested PRIVATE ../../common diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index c91a47047..42c701d5e 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -14,5 +14,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 12870342e..5cf33d724 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -52,5 +52,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index c1ab8d880..9d06b1c96 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -48,5 +48,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) target_include_directories(pm3rrg_rdv4_mbedtls INTERFACE ../../common/mbedtls) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index d7e3cfd8a..1040730f1 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index 5a6abda25..c74618149 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index d2d6a5b2a..721873066 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 15a74d38c..94e76ce18 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -401,7 +401,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 97c82541e..d4bd5d770 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -42,7 +42,7 @@ static int mainret = PM3_ESOFT; #ifndef LIBPM3 #define BANNERMSG1 "" #define BANNERMSG2 " [ :coffee: ]" -#define BANNERMSG3 "" +#define BANNERMSG3 "Release v4.17768 - Steamboat Willie" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common/default_version_pm3.c b/common/default_version_pm3.c index d93a7ef15..34614162f 100644 --- a/common/default_version_pm3.c +++ b/common/default_version_pm3.c @@ -1,20 +1,5 @@ -//----------------------------------------------------------------------------- -// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// See LICENSE.txt for the text of the license. -//----------------------------------------------------------------------------- #include "common.h" -/* This is the default version_pm3.c file that Makefile.common falls back to if sh is not available */ +/* Generated file, do not edit */ #ifndef ON_DEVICE #define SECTVERSINFO #else @@ -23,10 +8,10 @@ const struct version_information_t SECTVERSINFO g_version_information = { VERSION_INFORMATION_MAGIC, - 1, /* version 1 */ - 0, /* version information not present */ - 2, /* cleanliness couldn't be determined */ - "Iceman/master/unknown", - "1970-01-01 00:00:00", - "no sha256" + 1, + 1, + 2, + "Iceman/master/v4.17768", + "2024-01-03 01:59:39", + "4aa4f5078" }; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 18d931b46..3c01c9a2e 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -49,7 +49,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits From b1a1ca88278b1674128c11221079052d4161909e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jan 2024 01:59:39 +0100 Subject: [PATCH 0974/1034] Revert "Release v4.17768 - Steamboat Willie" This reverts commit 57eeb712fd1dba330c6ed81377b3e074a962f7a7. --- Makefile.defs | 4 ++-- armsrc/Makefile | 2 +- bootrom/Makefile | 2 +- client/CMakeLists.txt | 4 ++-- client/Makefile | 4 ++-- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 18 ++++++++-------- client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/experimental_lib/CMakeLists.txt | 2 +- client/src/proxmark3.c | 2 +- common/default_version_pm3.c | 29 +++++++++++++++++++------- common_arm/Makefile.common | 2 +- 18 files changed, 50 insertions(+), 35 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index aadb1a98b..1ef2aa09d 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -112,8 +112,8 @@ ifeq ($(DEBUG),1) DEFCFLAGS = -g -O0 -fstrict-aliasing -pipe DEFLDFLAGS = else - DEFCXXFLAGS = -Wall -O3 -pipe - DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe + DEFCXXFLAGS = -Wall -Werror -O3 -pipe + DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe DEFLDFLAGS = endif diff --git a/armsrc/Makefile b/armsrc/Makefile index cc786b9a1..5f641884a 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -184,7 +184,7 @@ showinfo: # version_pm3.c should be checked on every time fullimage.stage1.elf should be remade version_pm3.c: default_version_pm3.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) .FORCE $(info [-] CHECK $@) - $(Q)$(CP) $< $@ + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR) $(info [-] GEN $@) diff --git a/bootrom/Makefile b/bootrom/Makefile index 86c785cd1..b6825530d 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -56,7 +56,7 @@ OBJS = $(OBJDIR)/bootrom.s19 # version_pm3.c should be checked on every compilation version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(CP) $< $@ + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ all: showinfo $(OBJS) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 569a5541a..d92c15fbe 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -400,7 +400,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) @@ -636,7 +636,7 @@ add_executable(proxmark3 ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -O3) +target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) if (EMBED_READLINE) if (NOT SKIPREADLINE EQUAL 1) add_dependencies(proxmark3 ncurses readline) diff --git a/client/Makefile b/client/Makefile index 466d9413a..fc0dedb82 100644 --- a/client/Makefile +++ b/client/Makefile @@ -419,7 +419,7 @@ endif PM3CFLAGS += -DHAVE_SNPRINTF -CXXFLAGS ?= -Wall +CXXFLAGS ?= -Wall -Werror CXXFLAGS += $(MYDEFS) $(MYCXXFLAGS) $(MYINCLUDES) PM3CXXFLAGS = $(CXXFLAGS) @@ -927,7 +927,7 @@ src/pm3_pywrap.c: pm3.i # version_pm3.c should be checked on every compilation src/version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(CP) $< $@ + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index 8c524c170..c946c0682 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -19,7 +19,7 @@ target_link_libraries(pm3rrg_rdv4_amiibo PRIVATE m pm3rrg_rdv4_mbedtls) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_amiibo PRIVATE amiitool diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index a85cc2374..fccae33b7 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -9,5 +9,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index 468ee4ef2..ec545e2a8 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -32,7 +32,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -47,7 +47,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -62,7 +62,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -77,7 +77,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -92,7 +92,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -116,7 +116,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM64_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_neon PRIVATE @@ -134,7 +134,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM32_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_neon BEFORE PRIVATE -mfpu=neon) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -155,7 +155,7 @@ add_library(pm3rrg_rdv4_hardnested STATIC hardnested/hardnested_bruteforce.c $<TARGET_OBJECTS:pm3rrg_rdv4_hardnested_nosimd> ${SIMD_TARGETS}) -target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested PRIVATE ../../common diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index 42c701d5e..c91a47047 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -14,5 +14,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 5cf33d724..12870342e 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -52,5 +52,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 9d06b1c96..c1ab8d880 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -48,5 +48,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) target_include_directories(pm3rrg_rdv4_mbedtls INTERFACE ../../common/mbedtls) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index 1040730f1..d7e3cfd8a 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index c74618149..5a6abda25 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index 721873066..d2d6a5b2a 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 94e76ce18..15a74d38c 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -401,7 +401,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index d4bd5d770..97c82541e 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -42,7 +42,7 @@ static int mainret = PM3_ESOFT; #ifndef LIBPM3 #define BANNERMSG1 "" #define BANNERMSG2 " [ :coffee: ]" -#define BANNERMSG3 "Release v4.17768 - Steamboat Willie" +#define BANNERMSG3 "" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common/default_version_pm3.c b/common/default_version_pm3.c index 34614162f..d93a7ef15 100644 --- a/common/default_version_pm3.c +++ b/common/default_version_pm3.c @@ -1,5 +1,20 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- #include "common.h" -/* Generated file, do not edit */ +/* This is the default version_pm3.c file that Makefile.common falls back to if sh is not available */ #ifndef ON_DEVICE #define SECTVERSINFO #else @@ -8,10 +23,10 @@ const struct version_information_t SECTVERSINFO g_version_information = { VERSION_INFORMATION_MAGIC, - 1, - 1, - 2, - "Iceman/master/v4.17768", - "2024-01-03 01:59:39", - "4aa4f5078" + 1, /* version 1 */ + 0, /* version information not present */ + 2, /* cleanliness couldn't be determined */ + "Iceman/master/unknown", + "1970-01-01 00:00:00", + "no sha256" }; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 3c01c9a2e..18d931b46 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -49,7 +49,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits From 6f49cc022486319c0534f9260ce43ef736326985 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jan 2024 02:01:17 +0100 Subject: [PATCH 0975/1034] title --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 06f180baa..28358328b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac ## [unreleased][unreleased] -## [Steamboat Willie][2024-01-03] +## [Steamboat Willie.4.17768][2024-01-03] - Changed `mem spiffs dump -t` - now supports downloading direct into trace buffer (@hazardousvoltage) - Changed `hf search` - added hints for all HF protocols we search for (@iceman1001) - Changed `hf search` - added hint for iClass (@bettse) From 00686a91d0bf953c1886d40ac7b89f22eca2a53f Mon Sep 17 00:00:00 2001 From: wh201906 <wh201906@yandex.com> Date: Wed, 3 Jan 2024 15:39:50 +0800 Subject: [PATCH 0976/1034] Ignore button jitters in bootloader mode --- CHANGELOG.md | 1 + bootrom/bootrom.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28358328b..eb23959ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed bootloader - Ignore jitters when pressing the button (@wh201906) ## [Steamboat Willie.4.17768][2024-01-03] - Changed `mem spiffs dump -t` - now supports downloading direct into trace buffer (@hazardousvoltage) diff --git a/bootrom/bootrom.c b/bootrom/bootrom.c index c596c7886..e92b86e35 100644 --- a/bootrom/bootrom.c +++ b/bootrom/bootrom.c @@ -252,10 +252,17 @@ static void flash_mode(void) { } } - if (g_common_area.flags.button_pressed && BUTTON_PRESS() == false) { + bool button_state = BUTTON_PRESS(); + // ~10ms, prevent jitter + delay_loop(3333); + if (button_state != BUTTON_PRESS()) { + // in jitter state, ignore + continue; + } + if (g_common_area.flags.button_pressed && button_state == false) { g_common_area.flags.button_pressed = 0; } - if (!g_common_area.flags.button_pressed && BUTTON_PRESS()) { + if (!g_common_area.flags.button_pressed && button_state) { /* Perform a reset to leave flash mode */ g_common_area.flags.button_pressed = 1; usb_disable(); From 6a8f685ceeafb7c3f944ad3de729b6a68cf5a5a5 Mon Sep 17 00:00:00 2001 From: unknown10777 <83267603+unknown10777@users.noreply.github.com> Date: Thu, 4 Jan 2024 04:03:43 +0800 Subject: [PATCH 0977/1034] follow guideline Signed-off-by: unknown10777 <83267603+unknown10777@users.noreply.github.com> --- client/src/cmdusart.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/client/src/cmdusart.c b/client/src/cmdusart.c index fded09581..c5fee5599 100644 --- a/client/src/cmdusart.c +++ b/client/src/cmdusart.c @@ -149,8 +149,8 @@ static int CmdUsartConfig(const char *Cmd) { } // module command not universal so specific commands needed if anyone DIY'd their own Blueshark. -bool isBluetoothExtensionHC04 = false; -bool isBluetoothExtensionHC05Blueshark = false; +bool BT_EXTENSION_HC04 = false; +bool BT_EXTENSION_HC05_BLUESHARK = false; static int usart_bt_testcomm(uint32_t baudrate, uint8_t parity) { int ret = set_usart_config(baudrate, parity); @@ -175,13 +175,13 @@ static int usart_bt_testcomm(uint32_t baudrate, uint8_t parity) { // if it fully match HC-04's attribute if (str_startswith((char *)data, "www.hc01.com V2.5, 2022-04-26")) { - isBluetoothExtensionHC04 = true; + BT_EXTENSION_HC04 = true; PrintAndLogEx(INFO, "Bluetooth module identified as HC-04."); } // if it fully match Blueshark HC-05's attribute if (str_startswith((char *)data, "hc01.comV2.0")) { - isBluetoothExtensionHC05Blueshark = true; + BT_EXTENSION_HC05_BLUESHARK = true; PrintAndLogEx(INFO, "Bluetooth module identified as Blueshark HC-05."); } return PM3_SUCCESS; @@ -265,7 +265,7 @@ static int CmdUsartBtFactory(const char *Cmd) { size_t len = 0; memset(data, 0, sizeof(data)); - if (isBluetoothExtensionHC04 == true) { + if (BT_EXTENSION_HC04 == true) { string = "AT+NAME=PM3_RDV4.0"; } else { string = "AT+NAMEPM3_RDV4.0"; @@ -311,7 +311,7 @@ static int CmdUsartBtFactory(const char *Cmd) { memset(data, 0, sizeof(data)); len = 0; - if (isBluetoothExtensionHC04 == true) { + if (BT_EXTENSION_HC04 == true) { string = "AT+PIN=1234"; } else { string = "AT+PIN1234"; @@ -322,7 +322,7 @@ static int CmdUsartBtFactory(const char *Cmd) { ret = usart_txrx((uint8_t *)string, strlen(string), data, &len, 1000); if (ret == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "RX (%3zu):%.*s", len, (int)len, data); - if (strstr((char *)data, "OK") != NULL) { + if (strstr((char *)data, "OK")) { PrintAndLogEx(SUCCESS, "PIN set to " _GREEN_("1234")); } else { PrintAndLogEx(WARNING, "Unexpected response to AT+PIN: " _YELLOW_("%.*s"), (int)len, data); @@ -334,7 +334,7 @@ static int CmdUsartBtFactory(const char *Cmd) { msleep(500); - if (isBluetoothExtensionHC04 != true) { + if (BT_EXTENSION_HC04 != true) { // parity must be changed before baudrate if (parity != USART_PARITY) { memset(data, 0, sizeof(data)); From 570f0f63e3b29303994706a9fc768542e491b852 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 4 Jan 2024 12:49:47 +0100 Subject: [PATCH 0978/1034] hints... which I forgot to push?!? --- client/src/cmdhf.c | 62 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhf.c b/client/src/cmdhf.c index c0ae5f3da..f80afa67e 100644 --- a/client/src/cmdhf.c +++ b/client/src/cmdhf.c @@ -82,11 +82,14 @@ int CmdHFSearch(const char *Cmd) { int res = PM3_ESOFT; + uint8_t success[20] = {0}; + PROMPT_CLEARLINE; PrintAndLogEx(INPLACE, " Searching for ThinFilm tag..."); if (IfPm3NfcBarcode()) { if (infoThinFilm(false) == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Thinfilm tag") " found\n"); + success[THINFILM] = true; res = PM3_SUCCESS; } } @@ -96,6 +99,7 @@ int CmdHFSearch(const char *Cmd) { if (IfPm3Iso14443a()) { if (reader_lto(false, false) == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("LTO-CM tag") " found\n"); + success[LTO] = true; res = PM3_SUCCESS; } } @@ -106,6 +110,7 @@ int CmdHFSearch(const char *Cmd) { int sel_state = infoHF14A(false, false, false); if (sel_state > 0) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 14443-A tag") " found\n"); + success[ISO_14443A] = true; res = PM3_SUCCESS; if (sel_state == 1) @@ -118,6 +123,7 @@ int CmdHFSearch(const char *Cmd) { if (IfPm3Legicrf()) { if (readLegicUid(false, false) == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("LEGIC Prime tag") " found\n"); + success[LEGIC] = true; res = PM3_SUCCESS; } } @@ -127,6 +133,7 @@ int CmdHFSearch(const char *Cmd) { if (IfPm3Iso14443a()) { if (readTopazUid(false, false) == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Topaz tag") " found\n"); + success[TOPAZ] = true; res = PM3_SUCCESS; } } @@ -136,6 +143,7 @@ int CmdHFSearch(const char *Cmd) { PrintAndLogEx(INPLACE, " Searching for TEXKOM tag..."); if (read_texkom_uid(false, false) == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("TEXKOM tag") " found\n"); + success[PROTO_TEXKOM] = true; res = PM3_SUCCESS; } @@ -145,6 +153,7 @@ int CmdHFSearch(const char *Cmd) { if (IfPm3Iso14443b()) { if (read_xerox_uid(false, false) == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Fuji/Xerox tag") " found\n"); + success[PROTO_XEROX] = true; res = PM3_SUCCESS; } } @@ -155,6 +164,7 @@ int CmdHFSearch(const char *Cmd) { if (IfPm3Iso14443b()) { if (readHF14B(false, false) == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 14443-B tag") " found\n"); + success[ISO_14443B] = true; res = PM3_SUCCESS; } } @@ -166,6 +176,7 @@ int CmdHFSearch(const char *Cmd) { if (IfPm3Iso15693()) { if (readHF15Uid(false, false)) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 15693 tag") " found\n"); + success[ISO_15693] = true; res = PM3_SUCCESS; } } @@ -175,7 +186,7 @@ int CmdHFSearch(const char *Cmd) { if (IfPm3Iclass()) { if (read_iclass_csn(false, false, false) == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("iCLASS tag / PicoPass tag") " found\n"); - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf iclass`") " commands\n"); + success[ICLASS] = true; res = PM3_SUCCESS; } } @@ -187,6 +198,7 @@ int CmdHFSearch(const char *Cmd) { if (IfPm3Felica()) { if (read_felica_uid(false, false) == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 18092 / FeliCa tag") " found\n"); + success[FELICA] = true; res = PM3_SUCCESS; } } @@ -197,6 +209,7 @@ int CmdHFSearch(const char *Cmd) { if (IfPm3Iso14443b()) { if (readHFCryptoRF(false, false) == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("CryptoRF tag") " found\n"); + success[CRYPTORF] = true; res = PM3_SUCCESS; } } @@ -206,6 +219,53 @@ int CmdHFSearch(const char *Cmd) { if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_("No known/supported 13.56 MHz tags found")); res = PM3_ESOFT; + } else { + + // no need to print 14A hints, since it will print itself + + if (success[THINFILM]) { + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf thinfilm`") " commands\n"); + } + + if (success[LTO]) { + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf lto`") " commands\n"); + } + + if (success[LEGIC]) { + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf legic`") " commands\n"); + } + + if (success[TOPAZ]) { + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf topaz`") " commands\n"); + } + + if (success[PROTO_TEXKOM]) { + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf texkom`") " commands\n"); + } + + if (success[PROTO_XEROX]) { + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf xerox`") " commands\n"); + } + + if (success[ISO_14443B]) { + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf 14b`") " commands\n"); + } + + if (success[ISO_15693]) { + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf 15`") " commands\n"); + } + + if (success[ICLASS]) { + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf iclass`") " commands\n"); + } + + if (success[FELICA]) { + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf felica`") " commands\n"); + } + + if (success[PROTO_CRYPTORF]) { + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf cryptorf`") " commands\n"); + } } DropField(); From ef166a103087546b98d668255ce3bc89f8576b56 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 4 Jan 2024 13:09:31 +0100 Subject: [PATCH 0979/1034] fixed wrong parameter handling and helptext --- CHANGELOG.md | 1 + client/src/cmdlfpyramid.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb23959ae..26d4ec3d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `lf pyramid sim` - wrong parameter handling (@iceman1001) - Fixed bootloader - Ignore jitters when pressing the button (@wh201906) ## [Steamboat Willie.4.17768][2024-01-03] diff --git a/client/src/cmdlfpyramid.c b/client/src/cmdlfpyramid.c index 5ed9ef576..2ec65657c 100644 --- a/client/src/cmdlfpyramid.c +++ b/client/src/cmdlfpyramid.c @@ -368,7 +368,7 @@ static int CmdPyramidSim(const char *Cmd) { "The facility-code is 8-bit and the card number is 16-bit. Larger values are truncated.\n" "Currently work only on 26bit", "lf pyramid sim --fc 123 --cn 1337\n" - "lf pyramid clone --raw 0001010101010101010440013223921c" + "lf pyramid sim --raw 0001010101010101010440013223921c" ); void *argtable[] = { @@ -385,7 +385,7 @@ static int CmdPyramidSim(const char *Cmd) { int raw_len = 0; // skip first block, 4*4 = 16 bytes left uint8_t raw[16] = {0}; - int res = CLIParamHexToBuf(arg_get_str(ctx, 5), raw, sizeof raw, &raw_len); + int res = CLIParamHexToBuf(arg_get_str(ctx, 3), raw, sizeof raw, &raw_len); if (res) { CLIParserFree(ctx); return PM3_EINVARG; From dc80ef3713feefa41c312b2da166f77da2e7d3dd Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 4 Jan 2024 13:13:54 +0100 Subject: [PATCH 0980/1034] style --- client/src/cmdhf.c | 4 ++-- doc/commands.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhf.c b/client/src/cmdhf.c index f80afa67e..f3a45d92a 100644 --- a/client/src/cmdhf.c +++ b/client/src/cmdhf.c @@ -133,7 +133,7 @@ int CmdHFSearch(const char *Cmd) { if (IfPm3Iso14443a()) { if (readTopazUid(false, false) == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Topaz tag") " found\n"); - success[TOPAZ] = true; + success[TOPAZ] = true; res = PM3_SUCCESS; } } @@ -209,7 +209,7 @@ int CmdHFSearch(const char *Cmd) { if (IfPm3Iso14443b()) { if (readHFCryptoRF(false, false) == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("CryptoRF tag") " found\n"); - success[CRYPTORF] = true; + success[CRYPTORF] = true; res = PM3_SUCCESS; } } diff --git a/doc/commands.json b/doc/commands.json index 160eb6781..a4c474801 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -10073,7 +10073,7 @@ "description": "Enables simulation of Farpointe/Pyramid card with specified card number. Simulation runs until the button is pressed or another USB command is issued. The facility-code is 8-bit and the card number is 16-bit. Larger values are truncated. Currently work only on 26bit", "notes": [ "lf pyramid sim --fc 123 --cn 1337", - "lf pyramid clone --raw 0001010101010101010440013223921c" + "lf pyramid sim --raw 0001010101010101010440013223921c" ], "offline": false, "options": [ @@ -12162,6 +12162,6 @@ "metadata": { "commands_extracted": 703, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2024-01-02T22:09:45" + "extracted_on": "2024-01-04T12:13:24" } } \ No newline at end of file From 73e8d452af61ae8a5f9240a5b87feee927ddc3ed Mon Sep 17 00:00:00 2001 From: mazodude <mazodude2000@gmail.com> Date: Thu, 4 Jan 2024 22:21:58 +1000 Subject: [PATCH 0981/1034] Add alt Disney AID for desfire --- client/resources/aid_desfire.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/client/resources/aid_desfire.json b/client/resources/aid_desfire.json index f1a0d946a..c90edb126 100644 --- a/client/resources/aid_desfire.json +++ b/client/resources/aid_desfire.json @@ -376,6 +376,14 @@ "Description": "", "Type": "payment system" }, + { + "AID": "78E127", + "Vendor": "Disney", + "Country": "US", + "Name": "Disney MagicBand", + "Description": "", + "Type": "payment system" + }, { "AID": "44434C", "Vendor": "Disney", From 50a1c63470536d96d59403f81711b341f5bf77f5 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 4 Jan 2024 19:49:59 +0100 Subject: [PATCH 0982/1034] improved the SEOS annotation, also added a trace file to look at --- client/src/cmdhflist.c | 37 ++++++++++++++++++++--- client/src/cmdhfseos.c | 2 +- traces/hf_seos_sniff_fc60_cn640001.trace | Bin 0 -> 1374 bytes 3 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 traces/hf_seos_sniff_fc60_cn640001.trace diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index aaecb3e52..2765363fd 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -1685,10 +1685,39 @@ void annotateSeos(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { // it's basically a ISO14443a tag, so try annotation from there if (applyIso14443a(exp, size, cmd, cmdsize, false) != PM3_SUCCESS) { -// switch (cmd[0]) { -// default: -// break; -// }; + int pos = 0; + switch (cmd[0]) { + case 2: + case 3: + pos = 2; + break; + case 0: + pos = 1; + break; + default: + pos = 2; + break; + } + + if (memcmp(cmd + pos, "\x00\xa4\x04\x00\x0a", 5) == 0) { + snprintf(exp, size, "SELECT AID"); + } + + if (memcmp(cmd + pos, "\x80\xA5\x04\x00", 4) == 0) { + snprintf(exp, size, "SELECT ADF / OID"); + } + + if (memcmp(cmd + pos, "\x00\x87\x00\x01\x04\x7c\x02\x81\x00", 9) == 0) { + snprintf(exp, size, "GET CHALLENGE"); + } + + if (memcmp(cmd + pos, "\x00\x87\x00\x01\x2c", 5) == 0) { + snprintf(exp, size, "MUTUAL AUTHENTICATION"); + } + + if (memcmp(cmd + pos, "\x0c\xcb\x3f\xff", 4) == 0) { + snprintf(exp, size, "GET DATA"); + } // apply ISO7816 annotations? // if (annotateIso7816(exp, size, cmd, cmdsize) == 0) { diff --git a/client/src/cmdhfseos.c b/client/src/cmdhfseos.c index 896157be4..4ab7c1b15 100644 --- a/client/src/cmdhfseos.c +++ b/client/src/cmdhfseos.c @@ -112,7 +112,7 @@ static int CmdHfSeosInfo(const char *Cmd) { } static int CmdHfSeosList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf seos", "7816"); + return CmdTraceListAlias(Cmd, "hf seos", "seos -c"); } static command_t CommandTable[] = { diff --git a/traces/hf_seos_sniff_fc60_cn640001.trace b/traces/hf_seos_sniff_fc60_cn640001.trace new file mode 100644 index 0000000000000000000000000000000000000000..78c6d60560e31fc57849615d5708fbf728b166c7 GIT binary patch literal 1374 zcma*leK6a17y$6+8$n(q*2G)SXwI(dyi}yI)>&0*s$<2xg;5o%^kOYH)}dMZ)0C89 zzt(ju$C`=I;po`PtS{Ov4CifbqT5uwW?k)uT)iKQc{$zfdi&>l&-b3^x$pCQ?^CdJ z3)FfD0^ww2>qex<RBuG1GqW2}K_LyT*BzD75RXj25b)&R(vXZyfC3h#YNa7C*T+a> zMVuo%`7{l&Y{^iN^v}KS)>R1IMMpr_!&u8nJgplY$rwaXW1M8D;L}m_E<;Q|^+SwM z>^d<jr6aYOKJ@H>!1B}Pjk+vN59>*mu=*Y{ku2N<C;(+dpvVA-JU|E#2pu$S0!e@g z!op233M3j`-j>B7v2694T5e*FSYj)n0;V7W(_n|a0V1M|F&Bgg$U=7zAb}Y&N@Rtm zTOa^Gj0&9uf<dOsc;QN^tF7G)lI>%vpxQgegLjWVX}Qdf7avymOfjfSEtWMNRR@nz z!fS=a^Mj(LVYZ0;!=Lr}q<|jA;qCxbiG$HSPqM@9{lZ0`d{NK|D<p8IudN{gL=+J+ z0E+YGMG~?#;sr2t^NT1Mq;#gGFs+ngiG#<<f$rwyVjCpW?$=Gf*5n|vyYw2jkaoxa zSH`Jd`aCKQWzC2uvaV#ew)b*eEc%4~VduMEiZO|(uk-f>20JxrjM(nkXh?TJ*zi8x zW^4Ubd-^Uc&_CrritrS>&z6;3X{y^TI4Er$At}GBr*iZBj3lQbhuRc4G-mm}SJ%|t zjcG^NNPx3+qZ@U&ubO3&vK<|h?au}8E`)s2<EDt?zh5s)1E$lYv-5aG97p$!eBC;k zylhTV?K^7655#xROI*1I;%|y)mA&;*Us|&W@kPqYFLL<m=({CycA4GOtNLG`Uc6>| zvE2DVaO*>iJO0<tnwy^yaNPsyv-5q549?3q3`ibSXc}WndkOa9gYqZ+8#F^_`ZsCT zQ&pQZ=XR>rX%2AXGLzo)P;Js&yU&`Iz+9rPV1wo>xUO%Lrs}5ZIhyiG)i#<c^1v3& z0`tKa(L7o{_#&F(SoQy-d7ypxIhtcxmv6_`r<o2OV^yBfM0`JYZbpyqEj94s=4PCj zw{V&E3w_#Q?A4N{NH<tWBL1Od)HoY^<P_(Vn5OSWE=0QR#lcYNDZ6eN7!uZ*lM+-l z@!vH08iZ}pBx-F&M{=!(aEKv2ssioA(|^;XiK->@Z+y;jdwaGacIXJ>En9Y$n_Cb+ zQa+u>*lFBh_EFxXv<qK`W=?7x-6_F0RTB1W8%=Miql)ERc3k;Wk5O>A^oDRbx@A?9 z(&kI*lm&DZT^wH_*4mt<%;3;K_ic^3z)Qfidl!&wJ53HtOA)3<ezHbW6ey7Te|+_I z@V1+@=2TaFwYWtyBtxXQKg3N5^4u5Ip;;M=uX&$=I&I4Z9JX1Xyup4?RRrx&^wdb` zli#R~K0e*CK^EE{Cm3X!;?lE}xX#RVn*CnN{LC}=@8B?3+UXW#k?K@<pd;7mZ{^MX A;s5{u literal 0 HcmV?d00001 From 7c344e22ddc027b10b4c179c8b3e6c2667f42c05 Mon Sep 17 00:00:00 2001 From: Francis <zzvipercorezz@gmail.com> Date: Thu, 4 Jan 2024 21:42:36 +0100 Subject: [PATCH 0983/1034] Update Troubleshooting.md Added error and solution for an ARM issue Signed-off-by: Francis <zzvipercorezz@gmail.com> --- .../Troubleshooting.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/doc/md/Installation_Instructions/Troubleshooting.md b/doc/md/Installation_Instructions/Troubleshooting.md index a978ff8b2..6ef5704a5 100644 --- a/doc/md/Installation_Instructions/Troubleshooting.md +++ b/doc/md/Installation_Instructions/Troubleshooting.md @@ -307,3 +307,28 @@ Try running the client without the SESSION_MANAGER environment variable. ``` env -u SESSION_MANAGER ./pm3 ``` + +## found architecture 'x86_64', required architecture 'arm64' error +^[Top](#top) + +If you get the message + +``` +warning: ignoring file '/usr/local/Cellar/jansson/2.14/lib/libjansson.4.dylib': found architecture 'x86_64', required architecture 'arm64' +``` + +when running +```make clean && make -j``` + +then it likely means you are on an ARM device, possibly an Apple ARM computer. + +Solution: + +``` +brew install jansson +``` +Then run this again + +``` +make clean && make -j +``` From 78174588dd956db7e63cbff8a0558de1cc7b5a23 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 4 Jan 2024 22:11:48 +0100 Subject: [PATCH 0984/1034] modified hw tune output layout --- client/src/cmddata.c | 61 +++++++++++++++++++++++++--------------- client/src/cmdhfmf.c | 2 +- client/src/cmdhfmfu.c | 5 +++- client/src/cmdlfem4x70.c | 8 +++--- 4 files changed, 48 insertions(+), 28 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 7c0b3947e..8654c8476 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1978,16 +1978,16 @@ int CmdTuneSamples(const char *Cmd) { struct p *package = (struct p *)resp.data.asBytes; if (package->v_lf125 > NON_VOLTAGE) - PrintAndLogEx(SUCCESS, "LF antenna: %5.2f V - %.2f kHz", (package->v_lf125 * ANTENNA_ERROR) / 1000.0, LF_DIV2FREQ(LF_DIVISOR_125)); + PrintAndLogEx(SUCCESS, "At %.2f kHz .......... " _YELLOW_("%5.2f") " V", LF_DIV2FREQ(LF_DIVISOR_125), (package->v_lf125 * ANTENNA_ERROR) / 1000.0); if (package->v_lf134 > NON_VOLTAGE) - PrintAndLogEx(SUCCESS, "LF antenna: %5.2f V - %.2f kHz", (package->v_lf134 * ANTENNA_ERROR) / 1000.0, LF_DIV2FREQ(LF_DIVISOR_134)); + PrintAndLogEx(SUCCESS, "At %.2f kHz .......... " _YELLOW_("%5.2f") " V", LF_DIV2FREQ(LF_DIVISOR_134), (package->v_lf134 * ANTENNA_ERROR) / 1000.0); if (package->v_lfconf > NON_VOLTAGE && package->divisor > 0 && package->divisor != LF_DIVISOR_125 && package->divisor != LF_DIVISOR_134) - PrintAndLogEx(SUCCESS, "LF antenna: %5.2f V - %.2f kHz", (package->v_lfconf * ANTENNA_ERROR) / 1000.0, LF_DIV2FREQ(package->divisor)); + PrintAndLogEx(SUCCESS, "At %.2f kHz .......... " _YELLOW_("%5.2f") " V", LF_DIV2FREQ(package->divisor), (package->v_lfconf * ANTENNA_ERROR) / 1000.0); if (package->peak_v > NON_VOLTAGE && package->peak_f > 0) - PrintAndLogEx(SUCCESS, "LF optimal: %5.2f V - %6.2f kHz", (package->peak_v * ANTENNA_ERROR) / 1000.0, LF_DIV2FREQ(package->peak_f)); + PrintAndLogEx(SUCCESS, "At %.2f kHz optimal... " _YELLOW_("%5.2f") " V", LF_DIV2FREQ(package->peak_f), (package->peak_v * ANTENNA_ERROR) / 1000.0); // Empirical measures in mV const double vdd_rdv4 = 9000; @@ -2008,6 +2008,9 @@ int CmdTuneSamples(const char *Cmd) { break; } } + + PrintAndLogEx(SUCCESS, ""); + PrintAndLogEx(SUCCESS, "Approx. Q factor measurement (*)"); double lfq1 = 0; if (s4 != 0) { // we got all our points of interest double a = package->results[s2 - 1]; @@ -2017,12 +2020,12 @@ int CmdTuneSamples(const char *Cmd) { double d = package->results[s4]; double f2 = LF_DIV2FREQ(s4 - 1 + (c - v_3db_scaled) / (c - d)); lfq1 = LF_DIV2FREQ(package->peak_f) / (f1 - f2); - PrintAndLogEx(SUCCESS, "Approx. Q factor (*): %.1lf by frequency bandwidth measurement", lfq1); + PrintAndLogEx(SUCCESS, "Frequency bandwidth..... " _YELLOW_("%.1lf"), lfq1); } // Q measure with Vlr=Q*(2*Vdd/pi) double lfq2 = (double)package->peak_v * 3.14 / 2 / vdd; - PrintAndLogEx(SUCCESS, "Approx. Q factor (*): %.1lf by peak voltage measurement", lfq2); + PrintAndLogEx(SUCCESS, "Peak voltage............ " _YELLOW_("%.1lf") , lfq2); // cross-check results if (lfq1 > 3) { double approx_vdd = (double)package->peak_v * 3.14 / 2 / lfq1; @@ -2047,34 +2050,40 @@ int CmdTuneSamples(const char *Cmd) { memset(judgement, 0, sizeof(judgement)); // LF evaluation if (package->peak_v < LF_UNUSABLE_V) - snprintf(judgement, sizeof(judgement), _RED_("UNUSABLE")); + snprintf(judgement, sizeof(judgement), _RED_("unusable")); else if (package->peak_v < LF_MARGINAL_V) - snprintf(judgement, sizeof(judgement), _YELLOW_("MARGINAL")); + snprintf(judgement, sizeof(judgement), _YELLOW_("marginal")); else - snprintf(judgement, sizeof(judgement), _GREEN_("OK")); + snprintf(judgement, sizeof(judgement), _GREEN_("ok")); - PrintAndLogEx((package->peak_v < LF_UNUSABLE_V) ? WARNING : SUCCESS, "LF antenna is %s", judgement); + PrintAndLogEx((package->peak_v < LF_UNUSABLE_V) ? WARNING : SUCCESS, "LF antenna ( %s )", judgement); + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "---------- " _CYAN_("HF Antenna") " ----------"); // HF evaluation - if (package->v_hf > NON_VOLTAGE) - PrintAndLogEx(SUCCESS, "HF antenna: %5.2f V - 13.56 MHz", (package->v_hf * ANTENNA_ERROR) / 1000.0); + if (package->v_hf > NON_VOLTAGE) { + PrintAndLogEx(SUCCESS, "13.56 MHz............... " _YELLOW_("%5.2f") " V", (package->v_hf * ANTENNA_ERROR) / 1000.0); + } memset(judgement, 0, sizeof(judgement)); + PrintAndLogEx(SUCCESS, ""); + PrintAndLogEx(SUCCESS, "Approx. Q factor measurement (*)"); + if (package->v_hf >= HF_UNUSABLE_V) { // Q measure with Vlr=Q*(2*Vdd/pi) double hfq = (double)package->v_hf * 3.14 / 2 / vdd; - PrintAndLogEx(SUCCESS, "Approx. Q factor (*): %.1lf by peak voltage measurement", hfq); + PrintAndLogEx(SUCCESS, "peak voltage............ " _YELLOW_("%.1lf") , hfq); } - if (package->v_hf < HF_UNUSABLE_V) - snprintf(judgement, sizeof(judgement), _RED_("UNUSABLE")); - else if (package->v_hf < HF_MARGINAL_V) - snprintf(judgement, sizeof(judgement), _YELLOW_("MARGINAL")); - else - snprintf(judgement, sizeof(judgement), _GREEN_("OK")); - PrintAndLogEx((package->v_hf < HF_UNUSABLE_V) ? WARNING : SUCCESS, "HF antenna is %s", judgement); + if (package->v_hf < HF_UNUSABLE_V) + snprintf(judgement, sizeof(judgement), _RED_("unusable")); + else if (package->v_hf < HF_MARGINAL_V) + snprintf(judgement, sizeof(judgement), _YELLOW_("marginal")); + else + snprintf(judgement, sizeof(judgement), _GREEN_("ok")); + + PrintAndLogEx((package->v_hf < HF_UNUSABLE_V) ? WARNING : SUCCESS, "HF antenna ( %s )", judgement); PrintAndLogEx(NORMAL, "\n(*) Q factor must be measured without tag on the antenna"); // graph LF measurements @@ -2086,8 +2095,16 @@ int CmdTuneSamples(const char *Cmd) { } if (test1 > 0) { - PrintAndLogEx(SUCCESS, "\nDisplaying LF tuning graph. Divisor %d (blue) is %.2f kHz, %d (red) is %.2f kHz.\n\n", - LF_DIVISOR_134, LF_DIV2FREQ(LF_DIVISOR_134), LF_DIVISOR_125, LF_DIV2FREQ(LF_DIVISOR_125)); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "-------- " _CYAN_("LF tuning graph") " ---------"); + PrintAndLogEx(SUCCESS, "Blue line Divisor %d / %.2f kHz" + , LF_DIVISOR_134 + , LF_DIV2FREQ(LF_DIVISOR_134) + ); + PrintAndLogEx(SUCCESS, "Red line Divisor %d / %.2f kHz\n\n" + , LF_DIVISOR_125 + , LF_DIV2FREQ(LF_DIVISOR_125) + ); g_GraphTraceLen = 256; g_CursorCPos = LF_DIVISOR_125; g_CursorDPos = LF_DIVISOR_134; diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index e9091b3c3..951130506 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -552,7 +552,7 @@ static int mf_analyse_st_block(uint8_t blockno, uint8_t *block, bool force) { return PM3_EINVARG; } } else { - PrintAndLogEx(SUCCESS, "ST passed checks, continuing..."); + PrintAndLogEx(SUCCESS, "ST checks ( " _GREEN_("ok") " )"); } return PM3_SUCCESS; diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index a5f6ac86f..60a7130fe 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -828,7 +828,10 @@ static int ulev1_print_configuration(uint64_t tagtype, uint8_t *data, uint8_t st default: break; } - PrintAndLogEx(INFO, " mirror start page %02X | byte pos %02X - %s", mirror_page, mirror_byte, (mirror_page >= 0x4 && ((mirror_user_mem_start_byte + bytes_required_for_mirror_data) <= 144)) ? _GREEN_("OK") : _YELLOW_("Invalid value")); + PrintAndLogEx(INFO, " mirror start page %02X | byte pos %02X - %s" + , mirror_page, mirror_byte + , (mirror_page >= 0x4 && ((mirror_user_mem_start_byte + bytes_required_for_mirror_data) <= 144)) ? _GREEN_("ok") : _YELLOW_("Invalid value") + ); } } else if (tagtype & (MFU_TT_NTAG_213_F | MFU_TT_NTAG_216_F)) { diff --git a/client/src/cmdlfem4x70.c b/client/src/cmdlfem4x70.c index 574b30e20..ecead7cf3 100644 --- a/client/src/cmdlfem4x70.c +++ b/client/src/cmdlfem4x70.c @@ -488,11 +488,11 @@ int CmdEM4x70WritePIN(const char *Cmd) { if (resp.status) { print_info_result(resp.data.asBytes); - PrintAndLogEx(INFO, "Writing new PIN: " _GREEN_("SUCCESS")); + PrintAndLogEx(INFO, "Writing new PIN: " _GREEN_("ok")); return PM3_SUCCESS; } - PrintAndLogEx(FAILED, "Writing new PIN: " _RED_("FAILED")); + PrintAndLogEx(FAILED, "Writing new PIN: " _RED_("failed")); return PM3_ESOFT; } @@ -539,11 +539,11 @@ int CmdEM4x70WriteKey(const char *Cmd) { } if (resp.status) { - PrintAndLogEx(INFO, "Writing new crypt key: " _GREEN_("SUCCESS")); + PrintAndLogEx(INFO, "Writing new crypt key: " _GREEN_("ok")); return PM3_SUCCESS; } - PrintAndLogEx(FAILED, "Writing new crypt key: " _RED_("FAILED")); + PrintAndLogEx(FAILED, "Writing new crypt key: " _RED_("failed")); return PM3_ESOFT; } From 010da01779c4e32c118e2331ba7cc030b59dc434 Mon Sep 17 00:00:00 2001 From: Francis <zzvipercorezz@gmail.com> Date: Thu, 4 Jan 2024 22:56:35 +0100 Subject: [PATCH 0985/1034] Update CHANGELOG.md Signed-off-by: Francis <zzvipercorezz@gmail.com> --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26d4ec3d3..8bfb43f25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac ## [unreleased][unreleased] - Fixed `lf pyramid sim` - wrong parameter handling (@iceman1001) - Fixed bootloader - Ignore jitters when pressing the button (@wh201906) + - Added troubleshooting entry - ARM architecture error ## [Steamboat Willie.4.17768][2024-01-03] - Changed `mem spiffs dump -t` - now supports downloading direct into trace buffer (@hazardousvoltage) From d203996c05aaecf1d0ecd0b4e041ce810063253e Mon Sep 17 00:00:00 2001 From: Francis <zzvipercorezz@gmail.com> Date: Thu, 4 Jan 2024 23:13:52 +0100 Subject: [PATCH 0986/1034] Update CHANGELOG.md Moved changelog entry Signed-off-by: Francis <zzvipercorezz@gmail.com> --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8bfb43f25..9db00d9e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,9 +3,9 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added troubleshooting entry - ARM architecture error - Fixed `lf pyramid sim` - wrong parameter handling (@iceman1001) - Fixed bootloader - Ignore jitters when pressing the button (@wh201906) - - Added troubleshooting entry - ARM architecture error ## [Steamboat Willie.4.17768][2024-01-03] - Changed `mem spiffs dump -t` - now supports downloading direct into trace buffer (@hazardousvoltage) From 22085b056833843531bd4bc792267aaf4aadf4dd Mon Sep 17 00:00:00 2001 From: Francis <zzvipercorezz@gmail.com> Date: Thu, 4 Jan 2024 23:14:29 +0100 Subject: [PATCH 0987/1034] Update CHANGELOG.md Signed-off-by: Francis <zzvipercorezz@gmail.com> --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9db00d9e5..c1a8aa6d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Added troubleshooting entry - ARM architecture error + - Added troubleshooting entry - ARM architecture error (@francis2054) - Fixed `lf pyramid sim` - wrong parameter handling (@iceman1001) - Fixed bootloader - Ignore jitters when pressing the button (@wh201906) From 0d5e76a9cafcca4ce28e9b0fcda4eac78b7dc6b0 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 4 Jan 2024 23:30:48 +0100 Subject: [PATCH 0988/1034] text --- CHANGELOG.md | 2 ++ common_arm/flashmem.c | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c1a8aa6d4..f3da0a0ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added trace of sniffed SEOS traffic between reader and card (@iceman1001) + - Change `hf seos list` - print crc and annotate better (@iceman1001) - Added troubleshooting entry - ARM architecture error (@francis2054) - Fixed `lf pyramid sim` - wrong parameter handling (@iceman1001) - Fixed bootloader - Ignore jitters when pressing the button (@wh201906) diff --git a/common_arm/flashmem.c b/common_arm/flashmem.c index f4dde74a0..2cb54ed39 100644 --- a/common_arm/flashmem.c +++ b/common_arm/flashmem.c @@ -339,10 +339,10 @@ void Flashmem_print_status(void) { Dbprintf(" Baudrate................ " _GREEN_("%d MHz"), FLASHMEM_SPIBAUDRATE / 1000000); if (!FlashInit()) { - DbpString(" Init.................... " _RED_("FAILED")); + DbpString(" Init.................... " _RED_("failed")); return; } - DbpString(" Init.................... " _GREEN_("OK")); + DbpString(" Init.................... " _GREEN_("ok")); // NOTE: It would likely be more useful to use JDEC ID command 9F, // as it provides a third byte indicative of capacity. From 1cce7c286aa517ed7fc7e4c82ea6b2c8a9156af9 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 5 Jan 2024 19:12:59 +0100 Subject: [PATCH 0989/1034] text --- client/src/fileutils.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index a17ca625b..c4e915509 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1364,7 +1364,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz json_error_t error; json_t *root = json_load_file(path, 0, &error); if (verbose) { - PrintAndLogEx(SUCCESS, "loaded from JSON file `" _YELLOW_("%s") "`", path); + PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%s"), path); } free(path); @@ -1904,8 +1904,9 @@ int loadFileJSONroot(const char *preferredName, void **proot, bool verbose) { json_error_t error; json_t *root = json_load_file(path, 0, &error); - if (verbose) - PrintAndLogEx(SUCCESS, "loaded from JSON file " _YELLOW_("%s"), path); + if (verbose) { + PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%s"), path); + } free(path); From 0c4a1066c1837d3f4a1b503c9bda59460166cecc Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 5 Jan 2024 19:27:38 +0100 Subject: [PATCH 0990/1034] text --- AUTHORS.md | 2 +- armsrc/Standalone/hf_msdsal.c | 6 +- armsrc/Standalone/hf_reblay.c | 4 +- armsrc/Standalone/hf_tcprst.c | 12 ++-- armsrc/lfops.c | 2 +- client/luascripts/hf_mfp_raw.lua | 2 +- client/src/comms.c | 2 +- client/src/pm3.c | 7 ++- client/src/proxmark3.c | 15 +++-- doc/colors_notes.md | 2 +- doc/fpga_arm_notes.md | 4 +- .../ModemManager-Must-Be-Discarded.md | 2 +- .../Windows-WSL2-Installation-Instructions.md | 2 +- doc/new_frame_format.md | 2 +- doc/path_notes.md | 2 +- doc/termux_notes.md | 58 ++++++++++--------- doc/uart_notes.md | 4 +- fpga/hi_iso14443a.v | 2 +- 18 files changed, 69 insertions(+), 61 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index c1424a8a1..ac8358c20 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -6,7 +6,7 @@ Copyright (C) 2005-2007 Jonathan Westhues Since then, each contribution is under the copyright of its respective author. -A few releases were done by the Proxmark community between 2007 and March 2009 before using version control. +A few releases were done by the Proxmark3 community between 2007 and March 2009 before using version control. The last release which served as basis for version control, under SVN then migrated to Git, was the `20090306_ela` release by Edouard Lafargue. See the first commit of this repository. Therefore, only the following copyright notices are left untouched in the corresponding files: diff --git a/armsrc/Standalone/hf_msdsal.c b/armsrc/Standalone/hf_msdsal.c index b58c36856..56be50db1 100644 --- a/armsrc/Standalone/hf_msdsal.c +++ b/armsrc/Standalone/hf_msdsal.c @@ -37,11 +37,11 @@ void ModInfo(void) { /* This standalone implements two different modes: reading and emulating. * * The initial mode is reading with LED A as guide. -* In this mode, the Proxmark expects a Visa Card, +* In this mode, the Proxmark3 expects a Visa Card, * and will act as card reader. Trying to find track 2. * -* If the Proxmark found a track 2, it will change to emulation mode (LED C) automatically. -* During this mode the Proxmark will behave as card, emulating a Visa MSD transaction +* If the Proxmark3 found a track 2, it will change to emulation mode (LED C) automatically. +* During this mode the Proxmark3 will behave as card, emulating a Visa MSD transaction * using the pre-saved track2 from the previous reading. * * It is possible to jump from mode to another by simply pressing the button. diff --git a/armsrc/Standalone/hf_reblay.c b/armsrc/Standalone/hf_reblay.c index 62fea749e..5bd13ec3b 100644 --- a/armsrc/Standalone/hf_reblay.c +++ b/armsrc/Standalone/hf_reblay.c @@ -46,14 +46,14 @@ void ModInfo(void) { * standalone. * * For the reading mode: -* - Set up and run the other end first, to where the Proxmark will send the data. +* - Set up and run the other end first, to where the Proxmark3 will send the data. * - After the card is detected, Proxmark3 will send a package. The first byte will be the package * length, then, the card data. Use the first length byte to read the whole package. * - Proxmark3 will expect a raw APDU from the other end, then it will be sent to the card. * - The answer of the card will be sent back to the connection, repeating the cycle. * * For the emulation mode: -* - Set up and run the other end first, from where the Proxmark will receive the data. +* - Set up and run the other end first, from where the Proxmark3 will receive the data. * - When the Proxmark3 detected the terminal, it will send the command to the connection. * - The first byte will be the package length, then, the terminal command. Use the first * length byte to read the whole package. diff --git a/armsrc/Standalone/hf_tcprst.c b/armsrc/Standalone/hf_tcprst.c index 8527ba2f1..952815d60 100644 --- a/armsrc/Standalone/hf_tcprst.c +++ b/armsrc/Standalone/hf_tcprst.c @@ -36,19 +36,19 @@ void ModInfo(void) { /* This standalone implements four different modes: reading, simulating, dumping, & emulating. * * The initial mode is reading with LEDs A & D. -* In this mode, the Proxmark is looking for an ST25TA card like those used by the IKEA Rothult, +* In this mode, the Proxmark3 is looking for an ST25TA card like those used by the IKEA Rothult, * it will act as reader, and store the UID for simulation. * -* If the Proxmark gets an ST25TA UID, it will change to simulation mode (LEDs A & C) automatically. -* During this mode the Proxmark will pretend to be the IKEA Rothult ST25TA master key, upon presentation -* to an IKEA Rothult the Proxmark will steal the 16 byte Read Protection key used to authenticate to the card. +* If the Proxmark3 gets an ST25TA UID, it will change to simulation mode (LEDs A & C) automatically. +* During this mode the Proxmark3 will pretend to be the IKEA Rothult ST25TA master key, upon presentation +* to an IKEA Rothult the Proxmark3 will steal the 16 byte Read Protection key used to authenticate to the card. * -* Once it gets the key, it will switch to dump mode (LEDs C & D) automatically. During this mode the Proxmark +* Once it gets the key, it will switch to dump mode (LEDs C & D) automatically. During this mode the Proxmark3 * will act as a reader once again, but now we know the Read Protection key to authenticate to the card to dump * it's contents so we can achieve full emulation. * * Once it dumps the contents of the card, it will switch to emulation mode (LED C) automatically. -* During this mode the Proxmark should function as the original ST25TA IKEA Rothult Master Key +* During this mode the Proxmark3 should function as the original ST25TA IKEA Rothult Master Key * * Keep pressing the button down will quit the standalone cycle. * diff --git a/armsrc/lfops.c b/armsrc/lfops.c index e11a08e4e..9c5990fcc 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -44,7 +44,7 @@ Notes about EM4xxx timings. The timing values differs between cards, we got EM410x, EM43x5, EM445x etc. -We are trying to unify and enable the Proxmark to easily detect and select correct timings automatic. +We are trying to unify and enable the Proxmark3 to easily detect and select correct timings automatic. The measures from datasheets doesn't always match correct the hardware features of RDV4 antenans and we still wanted to let other devices with other custom antennas still benefit from this repo. This is why its configurable and we use to set these dynamic settings in device external flash memory. diff --git a/client/luascripts/hf_mfp_raw.lua b/client/luascripts/hf_mfp_raw.lua index e28c274a8..28fec1474 100644 --- a/client/luascripts/hf_mfp_raw.lua +++ b/client/luascripts/hf_mfp_raw.lua @@ -348,7 +348,7 @@ function main(args) -- commandString = AUTH_FIRST .. "0190" .. "00" -- response = sendRaw(commandString, true, true) - -- Power off the Proxmark + -- Power off the Proxmark3 sendRaw(POWEROFF, false, false) lib14a.disconnect() diff --git a/client/src/comms.c b/client/src/comms.c index cdda2ea77..0409297cf 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -838,7 +838,7 @@ int TestProxmark(pm3_device_t *dev) { if ((resp.length != sizeof(g_pm3_capabilities)) || (resp.data.asBytes[0] != CAPABILITIES_VERSION)) { PrintAndLogEx(ERR, _RED_("Capabilities structure version sent by Proxmark3 is not the same as the one used by the client!")); - PrintAndLogEx(ERR, _RED_("Please flash the Proxmark with the same version as the client.")); + PrintAndLogEx(ERR, _RED_("Please flash the Proxmark3 with the same version as the client.")); return PM3_EDEVNOTSUPP; } diff --git a/client/src/pm3.c b/client/src/pm3.c index 1c0667ff2..7639ecc6d 100644 --- a/client/src/pm3.c +++ b/client/src/pm3.c @@ -31,15 +31,16 @@ pm3_device_t *pm3_open(const char *port) { pm3_init(); OpenProxmark(&g_session.current_device, port, false, 20, false, USART_BAUD_RATE); if (g_session.pm3_present && (TestProxmark(g_session.current_device) != PM3_SUCCESS)) { - PrintAndLogEx(ERR, _RED_("ERROR:") " cannot communicate with the Proxmark\n"); + PrintAndLogEx(ERR, _RED_("ERROR:") " cannot communicate with the Proxmark3\n"); CloseProxmark(g_session.current_device); } if ((port != NULL) && (!g_session.pm3_present)) exit(EXIT_FAILURE); - if (!g_session.pm3_present) - PrintAndLogEx(INFO, "Running in " _YELLOW_("OFFLINE") " mode"); + if (!g_session.pm3_present) { + PrintAndLogEx(INFO, _RED_("OFFLINE") " mode"); + } // For now, there is no real device context: return g_session.current_device; } diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 97c82541e..476b900a0 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -179,7 +179,7 @@ static int check_comm(void) { if (IsCommunicationThreadDead() && g_session.pm3_present) { #ifndef HAVE_READLINE - PrintAndLogEx(INFO, "Running in " _YELLOW_("OFFLINE") " mode. Use "_YELLOW_("\"hw connect\"") " to reconnect\n"); + PrintAndLogEx(INFO, _YELLOW_("OFFLINE") " mode. Use "_YELLOW_("\"hw connect\"") " to reconnect\n"); #endif prompt_dev = PROXPROMPT_DEV_OFFLINE; char prompt[PROXPROMPT_MAX_SIZE] = {0}; @@ -1135,19 +1135,22 @@ int main(int argc, char *argv[]) { } if (g_session.pm3_present && (TestProxmark(g_session.current_device) != PM3_SUCCESS)) { - PrintAndLogEx(ERR, _RED_("ERROR:") " cannot communicate with the Proxmark\n"); + PrintAndLogEx(ERR, _RED_("ERROR:") " cannot communicate with the Proxmark3\n"); CloseProxmark(g_session.current_device); } - if ((port != NULL) && (!g_session.pm3_present)) + if ((port != NULL) && (!g_session.pm3_present)) { exit(EXIT_FAILURE); + } - if (!g_session.pm3_present) - PrintAndLogEx(INFO, "Running in " _YELLOW_("OFFLINE") " mode. Check " _YELLOW_("\"%s -h\"") " if it's not what you want.\n", exec_name); + if (!g_session.pm3_present) { + PrintAndLogEx(INFO, _YELLOW_("OFFLINE") " mode. Check " _YELLOW_("\"%s -h\"") " if it's not what you want.\n", exec_name); + } // ascii art only in interactive client - if (!script_cmds_file && !script_cmd && g_session.stdinOnTTY && g_session.stdoutOnTTY && !flash_mode && !reboot_bootloader_mode) + if (!script_cmds_file && !script_cmd && g_session.stdinOnTTY && g_session.stdoutOnTTY && !flash_mode && !reboot_bootloader_mode) { showBanner(); + } // Save settings if not loaded from settings json file. // Doing this here will ensure other checks and updates are saved to over rule default diff --git a/doc/colors_notes.md b/doc/colors_notes.md index b25a7d7c9..06df0d224 100644 --- a/doc/colors_notes.md +++ b/doc/colors_notes.md @@ -16,7 +16,7 @@ The client should autodetect color support when starting. You can also use the command `pref show` to see and set your personal setting. -Why use colors in the Proxmark client? When everything is white it is hard to extract the important information fast. You also need new-lines for extra space to be easier to read. +Why use colors in the Proxmark3 client? When everything is white it is hard to extract the important information fast. You also need new-lines for extra space to be easier to read. We have gradually been introducing this color scheme into the client since we got decent color support on all systems: OSX, Linux, WSL, Proxspace. diff --git a/doc/fpga_arm_notes.md b/doc/fpga_arm_notes.md index b54472c2b..4cc47b88a 100644 --- a/doc/fpga_arm_notes.md +++ b/doc/fpga_arm_notes.md @@ -2,7 +2,7 @@ <a id="top"></a> # Table of Contents -- [Notes on ARM & FPGA communications](#notes-on-arm--fpga-communications) +- [Notes on ARM \& FPGA communications](#notes-on-arm--fpga-communications) - [Table of Contents](#table-of-contents) - [INTERFACE FROM THE ARM TO THE FPGA](#interface-from-the-arm-to-the-fpga) - [FPGA](#fpga) @@ -194,7 +194,7 @@ communicating this to the FPGA. The microcontroller (ARM) implements the transport layer. First it decodes the samples received from the FPGA. These samples are stored in a Direct Memory Access (DMA) buffer. The samples are binary sequences that represent whether the signal was high or low. The software on the ARM tries to decode -these samples. When the Proxmark is in sniffing mode this is done for both the Manchester and Modified +these samples. When the Proxmark3 is in sniffing mode this is done for both the Manchester and Modified Miller at the same time. Whenever one of the decoding procedures returns a valid message, this message is stored in another buffer (BigBuf) and both decoding procedures are set to an un-synced state. The BigBuf is limited to the available memory on the ARM. The current firmware has 2 KB of memory diff --git a/doc/md/Installation_Instructions/ModemManager-Must-Be-Discarded.md b/doc/md/Installation_Instructions/ModemManager-Must-Be-Discarded.md index 17bce5cbf..5c9149826 100644 --- a/doc/md/Installation_Instructions/ModemManager-Must-Be-Discarded.md +++ b/doc/md/Installation_Instructions/ModemManager-Must-Be-Discarded.md @@ -141,7 +141,7 @@ Now there are two possibilities: ## Only the fullimage is damaged ^[Top](#top) -If the flashing of the fullimage failed, you can still force the Proxmark to start in bootloader mode by keeping the button pressed while you're plugging it in and while you're attempting to flash it again. +If the flashing of the fullimage failed, you can still force the Proxmark3 to start in bootloader mode by keeping the button pressed while you're plugging it in and while you're attempting to flash it again. In short: diff --git a/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md b/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md index 0869ab04e..0c720b62e 100644 --- a/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md @@ -56,7 +56,7 @@ This is *NOT* intended to be a full description of how to use USBIPD. Rather, this is intended only to give a starting point, as ***the values shown here are extremely likely to differ per machine***. -It's presumed that you've already installed USBIPD. Plug the Proxmark +It's presumed that you've already installed USBIPD. Plug the Proxmark3 device into a USB port. Then, from a `cmd.exe` or `wt.exe` ***launched with administrative permissions***: diff --git a/doc/new_frame_format.md b/doc/new_frame_format.md index 061dcd929..30143a145 100644 --- a/doc/new_frame_format.md +++ b/doc/new_frame_format.md @@ -66,7 +66,7 @@ For commands being sent to the Proxmark3: * `data`: variable length payload * `crc`: either an actual CRC (crc14a) or a Magic placeholder (`a3`) -For responses from the Proxmark: +For responses from the Proxmark3: uint32_t magic; uint16_t length : 15; diff --git a/doc/path_notes.md b/doc/path_notes.md index 1225f7a33..2dbe03661 100644 --- a/doc/path_notes.md +++ b/doc/path_notes.md @@ -27,7 +27,7 @@ With the recent (2019-09-01) changes and creation of `make install` command it is easy to get lost. -If you install the Proxmark tools with `make install`, they will go under the prefix `/usr/local/` but if you install the tools from your distro, there are chances the path is `/usr` so you'll have to adapt the paths presented here. +If you install the Proxmark3 tools with `make install`, they will go under the prefix `/usr/local/` but if you install the tools from your distro, there are chances the path is `/usr` so you'll have to adapt the paths presented here. # Installed elements ^[Top](#top) diff --git a/doc/termux_notes.md b/doc/termux_notes.md index 812719a75..2e19cebbd 100644 --- a/doc/termux_notes.md +++ b/doc/termux_notes.md @@ -2,32 +2,36 @@ <a id="top"></a> ## Table of Contents - * [ Requirements ](#requirements) - * [ Notes ](#notes) - * [ Setup ](#setup) - * [ Setting up Termux ](#setting-up-termux) - * [ Install Proxmark3 package ](#install-proxmark3-package) - * [ PC-like method ](#pc-like-method) - * [ Specific requirements ](#specific-requirements) - * [ USB_ACM ](#usb_acm) - * [ Enable the driver ](#enable-the-driver) - * [ Building the kernel ](#building-the-kernel) - * [ Flashing the kernel ](#flashing-the-kernel) - * [ Testing ](#testing) - * [ Troubleshooting ](#troubleshooting) - * [ TCP/UDP bridge method ](#tcpudp-bridge-method) - * [ USB connection ](#usb-connection) - * [ USB-UART bridge application for TCP to USB bridging](#usb-uart-bridge-application-for-tcp-to-usb-bridging) - * [ USB-UART Bridge Application for UDP to USB bridging](#usb-uart-bridge-application-for-udp-to-usb-bridging) - * [ Bluetooth connection ](#bluetooth-connection) - * [ BT-UART bridge application for TCP to BT bridging](#bt-uart-bridge-application-for-tcp-to-bt-bridging) - * [ TCP connection ](#tcp-connection) - * [ UDP connection ](#udp-connection) - * [Troubleshooting](#troubleshooting-1) - * [BTADDON Missing in Firmware of PM3](#btaddon-missing-in-firmware-of-pm3) - * [Compiling and Flashing a Proxmark3 Firmware from non-root Android](#compiling-and-flashing-a-proxmark3-firmware-from-non-root-android) - * [Compiling the Proxmark3 Firmware](#compiling-the-proxmark3-firmware) - * [Flashing the Proxmark3 Firmware](#flashing-the-proxmark3-firmware) +- [Proxmark 3 on Android](#proxmark-3-on-android) + - [Table of Contents](#table-of-contents) + - [Requirements](#requirements) + - [Notes](#notes) + - [Setup](#setup) + - [Setting up Termux](#setting-up-termux) + - [Install Proxmark3 package which follows tagged releases](#install-proxmark3-package-which-follows-tagged-releases) + - [Optional: Install Proxmark3 package which offers a more up to date version from git `master` branch](#optional-install-proxmark3-package-which-offers-a-more-up-to-date-version-from-git-master-branch) + - [Optional: Building Proxmark3 client from source](#optional-building-proxmark3-client-from-source) + - [PC-like method](#pc-like-method) + - [Specific requirements](#specific-requirements) + - [USB\_ACM](#usb_acm) + - [Enable the driver](#enable-the-driver) + - [Building the kernel](#building-the-kernel) + - [Flashing the kernel](#flashing-the-kernel) + - [Testing](#testing) + - [Troubleshooting](#troubleshooting) + - [TCP/UDP bridge method](#tcpudp-bridge-method) + - [USB connection](#usb-connection) + - [USB-UART Bridge Application for TCP to USB bridging](#usb-uart-bridge-application-for-tcp-to-usb-bridging) + - [USB-UART Bridge Application for UDP to USB bridging](#usb-uart-bridge-application-for-udp-to-usb-bridging) + - [Bluetooth connection](#bluetooth-connection) + - [BT-UART Bridge Application for TCP to BT bridging](#bt-uart-bridge-application-for-tcp-to-bt-bridging) + - [TCP connection](#tcp-connection) + - [UDP connection](#udp-connection) + - [Troubleshooting](#troubleshooting-1) + - [BTADDON Missing in Firmware of PM3](#btaddon-missing-in-firmware-of-pm3) + - [Compiling and Flashing a Proxmark3 Firmware from non-root Android](#compiling-and-flashing-a-proxmark3-firmware-from-non-root-android) + - [Compiling the Proxmark3 Firmware](#compiling-the-proxmark3-firmware) + - [Flashing the Proxmark3 Firmware](#flashing-the-proxmark3-firmware) ## Requirements ^[Top](#top) @@ -249,7 +253,7 @@ $ proxmark3 tcp:localhost:4321 Using UART port tcp:localhost:4321 -[!!] ERROR: cannot communicate with the Proxmark +[!!] ERROR: cannot communicate with the Proxmark3 ``` Solution: diff --git a/doc/uart_notes.md b/doc/uart_notes.md index eeee8a1d0..f7cd83083 100644 --- a/doc/uart_notes.md +++ b/doc/uart_notes.md @@ -29,7 +29,7 @@ USB CDC (Communications Device Class) ACM (Abstract Control Model) is a way to e On the host, it appears as a virtual serial port, e.g. `/dev/ttyACM0`. This is the basic way to communicate with all versions of Proxmark3 (with fairly recent FW, it used to be USB-HID-based long time ago). -On the Proxmark side, USB-CDC is provided by `common/usb_cdc.c`. +On the Proxmark3 side, USB-CDC is provided by `common/usb_cdc.c`. In the USB CDC ACM descriptors, the Proxmark3 advertises a baudrate (USART_BAUD_RATE) but this is purely informative and has no real meaning. The real communication speed relates only to the USB link and is roughly about 7Mbps. @@ -72,7 +72,7 @@ Some specific commands are available when you add `BTADDON` to `PLATFORM_EXTRAS` * `usart btpin`, to change the BT add-on PIN * `usart btfactory`, to guess the current BT add-on UART settings and to reset its configuration. -`usart btfactory` changes several times the Proxmark3 USART baudrate and parity till it matches the BT add-on settings, then changes the baudrate and parity of the add-on to a default value, then changes the Proxmark USART to the same default values, so everything should be back in order. (`btfactory` does more but we're only interested in baudrate in this discussion) +`usart btfactory` changes several times the Proxmark3 USART baudrate and parity till it matches the BT add-on settings, then changes the baudrate and parity of the add-on to a default value, then changes the Proxmark3 USART to the same default values, so everything should be back in order. (`btfactory` does more but we're only interested in baudrate in this discussion) Manual configuration is also possible with `usart txrx -d "AT+Px"` and `usart txrx -d "AT+BAUDx"`. diff --git a/fpga/hi_iso14443a.v b/fpga/hi_iso14443a.v index 0ceac6d95..771950ac2 100644 --- a/fpga/hi_iso14443a.v +++ b/fpga/hi_iso14443a.v @@ -13,7 +13,7 @@ // // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- -// ISO14443-A support for the Proxmark III +// ISO14443-A support for the Proxmark3 module hi_iso14443a( input ck_1356meg, From d906f23a0a0f5c33ed784f6daecf3c82c8f01a5f Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 5 Jan 2024 19:34:42 +0100 Subject: [PATCH 0991/1034] text --- client/src/comms.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/client/src/comms.c b/client/src/comms.c index 0409297cf..efd395917 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -742,8 +742,8 @@ bool OpenProxmarkSilent(pm3_device_t **dev, const char *port, uint32_t speed) { bool OpenProxmark(pm3_device_t **dev, const char *port, bool wait_for_port, int timeout, bool flash_mode, uint32_t speed) { - if (!wait_for_port) { - PrintAndLogEx(INFO, "Using UART port " _YELLOW_("%s"), port); + if (wait_for_port == false) { + PrintAndLogEx(SUCCESS, "Using UART port " _GREEN_("%s"), port); sp = uart_open(port, speed, false); } else { PrintAndLogEx(SUCCESS, "Waiting for Proxmark3 to appear on " _YELLOW_("%s"), port); @@ -803,8 +803,9 @@ int TestProxmark(pm3_device_t *dev) { uint16_t len = 32; uint8_t data[len]; - for (uint16_t i = 0; i < len; i++) + for (uint16_t i = 0; i < len; i++) { data[i] = i & 0xFF; + } __atomic_store_n(&last_packet_time, msclock(), __ATOMIC_SEQ_CST); clearCommandBuffer(); @@ -850,14 +851,14 @@ int TestProxmark(pm3_device_t *dev) { bool is_bt_conn = (memcmp(g_conn.serial_port_name, "bt:", 3) == 0); bool is_udp_conn = (g_conn.send_via_ip == PM3_UDPv4 || g_conn.send_via_ip == PM3_UDPv6); - PrintAndLogEx(INFO, "Communicating with PM3 over %s%s%s%s", - (g_conn.send_via_fpc_usart) ? _YELLOW_("FPC UART") : _YELLOW_("USB-CDC"), - (is_tcp_conn) ? " over " _YELLOW_("TCP") : "", - (is_bt_conn) ? " over " _YELLOW_("BT") : "", - (is_udp_conn) ? " over " _YELLOW_("UDP") : "" + PrintAndLogEx(SUCCESS, "Communicating with PM3 over %s%s%s%s", + (g_conn.send_via_fpc_usart) ? _GREEN_("FPC UART") : _GREEN_("USB-CDC"), + (is_tcp_conn) ? " over " _GREEN_("TCP") : "", + (is_bt_conn) ? " over " _GREEN_("BT") : "", + (is_udp_conn) ? " over " _GREEN_("UDP") : "" ); if (g_conn.send_via_fpc_usart) { - PrintAndLogEx(INFO, "PM3 UART serial baudrate: " _YELLOW_("%u") "\n", g_conn.uart_speed); + PrintAndLogEx(SUCCESS, "PM3 UART serial baudrate: " _GREEN_("%u") "\n", g_conn.uart_speed); } else { int res; if (g_conn.send_via_local_ip) { From 778a129f52e4c2cc97034e4b9c94c9859b6b8724 Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sat, 6 Jan 2024 18:53:47 +0100 Subject: [PATCH 0992/1034] Use GDlib in Waveshare ePapers command --- client/Makefile | 28 +- client/src/cmdhfwaveshare.c | 590 +++++------------------------------- client/src/imgutils.c | 156 ++++++++++ client/src/imgutils.h | 25 ++ 4 files changed, 290 insertions(+), 509 deletions(-) create mode 100644 client/src/imgutils.c create mode 100644 client/src/imgutils.h diff --git a/client/Makefile b/client/Makefile index fc0dedb82..4f74cd86c 100644 --- a/client/Makefile +++ b/client/Makefile @@ -332,6 +332,17 @@ endif LDLIBS += $(QTLDLIBS) CXXINCLUDES += $(QTINCLUDES) +## GD (optional) +ifneq ($(SKIPGD),1) + GDINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags gdlib 2>/dev/null) + GDLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs gdlib 2>/dev/null) + ifneq ($(GDLDLIBS),) + LDLIBS += $(GDLDLIBS) + PM3INCLUDES += $(GDINCLUDES) + GD_FOUND = 1 + endif +endif + ## Readline ifneq ($(SKIPREADLINE),1) ifeq ($(USE_BREW),1) @@ -510,6 +521,16 @@ else endif endif +ifeq ($(SKIPGD),1) + $(info GD library: skipped) +else + ifeq ($(GD_FOUND),1) + $(info GD library: GD v$(shell $(PKG_CONFIG_ENV) pkg-config --modversion gdlib) found, enabled) + else + $(info GD library: GD not found, disabled) + endif +endif + ifeq ($(SKIPREADLINE),1) $(info Readline library: skipped) else @@ -605,7 +626,6 @@ SRCS = mifare/aiddesfire.c \ cmdhftopaz.c \ cmdhftexkom.c \ cmdhfvas.c \ - cmdhfwaveshare.c \ cmdhfxerox.c \ cmdhw.c \ cmdlf.c \ @@ -738,6 +758,12 @@ SRCS += bucketsort.c \ lfdemod.c \ util_posix.c +ifeq ($(GD_FOUND),1) + # electronic shelf labels + SRCS += imgutils.c \ + cmdhfwaveshare.c +endif + # swig SWIGSRCS = diff --git a/client/src/cmdhfwaveshare.c b/client/src/cmdhfwaveshare.c index 8bb9eadc8..0dc997556 100644 --- a/client/src/cmdhfwaveshare.c +++ b/client/src/cmdhfwaveshare.c @@ -28,31 +28,7 @@ #include "fileutils.h" #include "util_posix.h" // msleep #include "cliparser.h" - -// Currently the largest pixel 880*528 only needs 58.08K bytes -#define WSMAPSIZE 60000 - -typedef struct { - uint8_t B; - uint8_t M; - uint32_t fsize; - uint16_t res1; - uint16_t res2; - uint32_t offset; - uint32_t Bit_Pixel; - uint32_t BMP_Width; - uint32_t BMP_Height; - uint16_t planes; - uint16_t bpp; - uint32_t ctype; - uint32_t dsize; - uint32_t hppm; - uint32_t vppm; - uint32_t colorsused; - uint32_t colorreq; - uint32_t Color_1; //Color palette - uint32_t Color_2; -} PACKED bmp_header_t; +#include "imgutils.h" #define EPD_1IN54B 0 #define EPD_1IN54C 1 @@ -105,254 +81,24 @@ static model_t models[] = { static int CmdHelp(const char *Cmd); -static int picture_bit_depth(const uint8_t *bmp, const size_t bmpsize, const uint8_t model_nr) { - if (bmpsize < sizeof(bmp_header_t)) { - return PM3_ESOFT; +static uint8_t * map8to1(gdImagePtr img, int color) { + // Calculate width rounding up + uint16_t width8 = (gdImageSX(img) + 7) / 8; + + uint8_t * colormap8 = malloc(width8 * gdImageSY(img)); + if (!colormap8) { + return NULL; } - bmp_header_t *pbmpheader = (bmp_header_t *)bmp; - PrintAndLogEx(DEBUG, "colorsused = %d", pbmpheader->colorsused); - PrintAndLogEx(DEBUG, "pbmpheader->bpp = %d", pbmpheader->bpp); - if ((pbmpheader->BMP_Width != models[model_nr].width) || (pbmpheader->BMP_Height != models[model_nr].height)) { - PrintAndLogEx(WARNING, "Invalid BMP size, expected %ix%i, got %ix%i", models[model_nr].width, models[model_nr].height, pbmpheader->BMP_Width, pbmpheader->BMP_Height); - } - return pbmpheader->bpp; -} - -static int read_bmp_bitmap(const uint8_t *bmp, const size_t bmpsize, uint8_t model_nr, uint8_t **black, uint8_t **red) { - bmp_header_t *pbmpheader = (bmp_header_t *)bmp; - // check file is bitmap - if (pbmpheader->bpp != 1) { - return PM3_ESOFT; - } - if (pbmpheader->B == 'M' || pbmpheader->M == 'B') { //0x4d42 - PrintAndLogEx(WARNING, "The file is not a BMP!"); - return PM3_ESOFT; - } - PrintAndLogEx(DEBUG, "file size = %d", pbmpheader->fsize); - PrintAndLogEx(DEBUG, "file offset = %d", pbmpheader->offset); - if (pbmpheader->fsize > bmpsize) { - PrintAndLogEx(WARNING, "The file is truncated!"); - return PM3_ESOFT; - } - uint8_t color_flag = pbmpheader->Color_1; - // Get BMP file data pointer - uint32_t offset = pbmpheader->offset; - uint16_t width = pbmpheader->BMP_Width; - uint16_t height = pbmpheader->BMP_Height; - if ((width + 8) * height > WSMAPSIZE * 8) { - PrintAndLogEx(WARNING, "The file is too large, aborting!"); - return PM3_ESOFT; - } - - uint16_t X, Y; - uint16_t Image_Width_Byte = (width % 8 == 0) ? (width / 8) : (width / 8 + 1); - uint16_t Bmp_Width_Byte = (Image_Width_Byte % 4 == 0) ? Image_Width_Byte : ((Image_Width_Byte / 4 + 1) * 4); - - *black = calloc(WSMAPSIZE, sizeof(uint8_t)); - if (*black == NULL) { - return PM3_EMALLOC; - } - // Write data into RAM - for (Y = 0; Y < height; Y++) { // columns - for (X = 0; X < Bmp_Width_Byte; X++) { // lines - if ((X < Image_Width_Byte) && ((X + (height - Y - 1) * Image_Width_Byte) < WSMAPSIZE)) { - (*black)[X + (height - Y - 1) * Image_Width_Byte] = color_flag ? bmp[offset] : ~bmp[offset]; - } - offset++; - } - } - if ((model_nr == M1in54B) || (model_nr == M2in13B)) { - // for BW+Red screens: - *red = calloc(WSMAPSIZE, sizeof(uint8_t)); - if (*red == NULL) { - free(*black); - return PM3_EMALLOC; - } - } - return PM3_SUCCESS; -} - -static void rgb_to_gray(const int16_t *chanR, const int16_t *chanG, const int16_t *chanB, - uint16_t width, uint16_t height, int16_t *chanGrey) { - for (uint16_t Y = 0; Y < height; Y++) { - for (uint16_t X = 0; X < width; X++) { - // greyscale conversion - float Clinear = 0.2126 * chanR[X + Y * width] + 0.7152 * chanG[X + Y * width] + 0.0722 * chanB[X + Y * width]; - // Csrgb = 12.92 Clinear when Clinear <= 0.0031308 - // Csrgb = 1.055 Clinear1/2.4 - 0.055 when Clinear > 0.0031308 - chanGrey[X + Y * width] = Clinear; - } - } -} - -// Floyd-Steinberg dithering -static void dither_chan_inplace(int16_t *chan, uint16_t width, uint16_t height) { - for (uint16_t Y = 0; Y < height; Y++) { - for (uint16_t X = 0; X < width; X++) { - int16_t oldp = chan[X + Y * width]; - int16_t newp = oldp > 127 ? 255 : 0; - chan[X + Y * width] = newp; - int16_t err = oldp - newp; - const float m[] = {7, 3, 5, 1}; - if (X < width - 1) { - chan[X + 1 + Y * width] = chan[X + 1 + Y * width] + m[0] / 16 * err; - } - if (Y < height - 1) { - chan[X - 1 + (Y + 1) * width] = chan[X - 1 + (Y + 1) * width] + m[1] / 16 * err; - chan[X + (Y + 1) * width] = chan[X + (Y + 1) * width] + m[2] / 16 * err; - } - if ((X < width - 1) && (Y < height - 1)) { - chan[X + 1 + (Y + 1) * width] = chan[X + 1 + (Y + 1) * width] + m[3] / 16 * err; - } - } - } -} - -static uint32_t color_compare(int16_t r1, int16_t g1, int16_t b1, int16_t r2, int16_t g2, int16_t b2) { - // Compute (square of) distance from oldR/G/B to this color - int16_t inR = r1 - r2; - int16_t inG = g1 - g2; - int16_t inB = b1 - b2; - // use RGB-to-grey weighting - float dist = 0.2126 * inR * inR + 0.7152 * inG * inG + 0.0722 * inB * inB; - return dist; -} - -static void nearest_color(int16_t oldR, int16_t oldG, int16_t oldB, const uint8_t *palette, - uint16_t palettelen, uint8_t *newR, uint8_t *newG, uint8_t *newB) { - uint32_t bestdist = 0x7FFFFFFF; - for (uint16_t i = 0; i < palettelen; i++) { - uint8_t R = palette[i * 3 + 0]; - uint8_t G = palette[i * 3 + 1]; - uint8_t B = palette[i * 3 + 2]; - uint32_t dist = color_compare(oldR, oldG, oldB, R, G, B); - if (dist < bestdist) { - bestdist = dist; - *newR = R; - *newG = G; - *newB = B; - } - } -} - -static void dither_rgb_inplace(int16_t *chanR, int16_t *chanG, int16_t *chanB, uint16_t width, uint16_t height, uint8_t *palette, uint16_t palettelen) { - for (uint16_t Y = 0; Y < height; Y++) { - for (uint16_t X = 0; X < width; X++) { - // scan odd lines in the opposite direction - uint16_t XX = X; - if (Y % 2) { - XX = width - X - 1; - } - int16_t oldR = chanR[XX + Y * width]; - int16_t oldG = chanG[XX + Y * width]; - int16_t oldB = chanB[XX + Y * width]; - uint8_t newR = 0, newG = 0, newB = 0; - nearest_color(oldR, oldG, oldB, palette, palettelen, &newR, &newG, &newB); - chanR[XX + Y * width] = newR; - chanG[XX + Y * width] = newG; - chanB[XX + Y * width] = newB; - int16_t errR = oldR - newR; - int16_t errG = oldG - newG; - int16_t errB = oldB - newB; - const float m[] = {7, 3, 5, 1}; - if (Y % 2) { - if (XX > 0) { - chanR[XX - 1 + Y * width] = (chanR[XX - 1 + Y * width] + m[0] / 16 * errR); - chanG[XX - 1 + Y * width] = (chanG[XX - 1 + Y * width] + m[0] / 16 * errG); - chanB[XX - 1 + Y * width] = (chanB[XX - 1 + Y * width] + m[0] / 16 * errB); - } - if (Y < height - 1) { - chanR[XX - 1 + (Y + 1) * width] = (chanR[XX - 1 + (Y + 1) * width] + m[3] / 16 * errR); - chanG[XX - 1 + (Y + 1) * width] = (chanG[XX - 1 + (Y + 1) * width] + m[3] / 16 * errG); - chanB[XX - 1 + (Y + 1) * width] = (chanB[XX - 1 + (Y + 1) * width] + m[3] / 16 * errB); - chanR[XX + (Y + 1) * width] = (chanR[XX + (Y + 1) * width] + m[2] / 16 * errR); - chanG[XX + (Y + 1) * width] = (chanG[XX + (Y + 1) * width] + m[2] / 16 * errG); - chanB[XX + (Y + 1) * width] = (chanB[XX + (Y + 1) * width] + m[2] / 16 * errB); - } - if ((XX < width - 1) && (Y < height - 1)) { - chanR[XX + 1 + (Y + 1) * width] = (chanR[XX + 1 + (Y + 1) * width] + m[1] / 16 * errR); - chanG[XX + 1 + (Y + 1) * width] = (chanG[XX + 1 + (Y + 1) * width] + m[1] / 16 * errG); - chanB[XX + 1 + (Y + 1) * width] = (chanB[XX + 1 + (Y + 1) * width] + m[1] / 16 * errB); - } - } else { - if (XX < width - 1) { - chanR[XX + 1 + Y * width] = (chanR[XX + 1 + Y * width] + m[0] / 16 * errR); - chanG[XX + 1 + Y * width] = (chanG[XX + 1 + Y * width] + m[0] / 16 * errG); - chanB[XX + 1 + Y * width] = (chanB[XX + 1 + Y * width] + m[0] / 16 * errB); - } - if (Y < height - 1) { - chanR[XX - 1 + (Y + 1) * width] = (chanR[XX - 1 + (Y + 1) * width] + m[1] / 16 * errR); - chanG[XX - 1 + (Y + 1) * width] = (chanG[XX - 1 + (Y + 1) * width] + m[1] / 16 * errG); - chanB[XX - 1 + (Y + 1) * width] = (chanB[XX - 1 + (Y + 1) * width] + m[1] / 16 * errB); - chanR[XX + (Y + 1) * width] = (chanR[XX + (Y + 1) * width] + m[2] / 16 * errR); - chanG[XX + (Y + 1) * width] = (chanG[XX + (Y + 1) * width] + m[2] / 16 * errG); - chanB[XX + (Y + 1) * width] = (chanB[XX + (Y + 1) * width] + m[2] / 16 * errB); - } - if ((XX < width - 1) && (Y < height - 1)) { - chanR[XX + 1 + (Y + 1) * width] = (chanR[XX + 1 + (Y + 1) * width] + m[3] / 16 * errR); - chanG[XX + 1 + (Y + 1) * width] = (chanG[XX + 1 + (Y + 1) * width] + m[3] / 16 * errG); - chanB[XX + 1 + (Y + 1) * width] = (chanB[XX + 1 + (Y + 1) * width] + m[3] / 16 * errB); - } - } - } - } -} - -static void rgb_to_gray_red_inplace(int16_t *chanR, int16_t *chanG, int16_t *chanB, uint16_t width, uint16_t height) { - for (uint16_t Y = 0; Y < height; Y++) { - for (uint16_t X = 0; X < width; X++) { - float Clinear = 0.2126 * chanR[X + Y * width] + 0.7152 * chanG[X + Y * width] + 0.0722 * chanB[X + Y * width]; - if ((chanR[X + Y * width] < chanG[X + Y * width] && chanR[X + Y * width] < chanB[X + Y * width])) { - chanR[X + Y * width] = Clinear; - chanG[X + Y * width] = Clinear; - chanB[X + Y * width] = Clinear; - } - } - } -} - -static void threshold_chan(const int16_t *colorchan, uint16_t width, uint16_t height, uint8_t threshold, uint8_t *colormap) { - for (uint16_t Y = 0; Y < height; Y++) { - for (uint16_t X = 0; X < width; X++) { - colormap[X + Y * width] = colorchan[X + Y * width] < threshold; - } - } -} - -static void threshold_rgb_black_red(const int16_t *chanR, const int16_t *chanG, const int16_t *chanB, - uint16_t width, uint16_t height, uint8_t threshold_black, - uint8_t threshold_red, uint8_t *blackmap, uint8_t *redmap) { - for (uint16_t Y = 0; Y < height; Y++) { - for (uint16_t X = 0; X < width; X++) { - if ((chanR[X + Y * width] < threshold_black) && (chanG[X + Y * width] < threshold_black) && (chanB[X + Y * width] < threshold_black)) { - blackmap[X + Y * width] = 1; - redmap[X + Y * width] = 0; - } else if ((chanR[X + Y * width] > threshold_red) && (chanG[X + Y * width] < threshold_black) && (chanB[X + Y * width] < threshold_black)) { - blackmap[X + Y * width] = 0; - redmap[X + Y * width] = 1; - } else { - blackmap[X + Y * width] = 0; - redmap[X + Y * width] = 0; - } - } - } -} - -static void map8to1(const uint8_t *colormap, uint16_t width, uint16_t height, uint8_t *colormap8) { - uint16_t width8; - if (width % 8 == 0) { - width8 = width / 8; - } else { - width8 = width / 8 + 1; - } uint8_t data = 0; uint8_t count = 0; - for (uint16_t Y = 0; Y < height; Y++) { - for (uint16_t X = 0; X < width; X++) { - data = data | colormap[X + Y * width]; + for (uint16_t Y = 0; Y < gdImageSY(img); Y++) { + for (uint16_t X = 0; X < gdImageSX(img); X++) { + if (gdImageGetPixel(img, X, Y) == color) { + data |= 1; + } count += 1; - if ((count >= 8) || (X == width - 1)) { + if ((count >= 8) || (X == gdImageSX(img) - 1)) { colormap8[X / 8 + Y * width8] = (~data) & 0xFF; count = 0; data = 0; @@ -360,194 +106,8 @@ static void map8to1(const uint8_t *colormap, uint16_t width, uint16_t height, ui data = (data << 1) & 0xFF; } } -} -static int read_bmp_rgb(uint8_t *bmp, const size_t bmpsize, uint8_t model_nr, uint8_t **black, uint8_t **red, char *filename, bool save_conversions) { - bmp_header_t *pbmpheader = (bmp_header_t *)bmp; - // check file is full color - if ((pbmpheader->bpp != 24) && (pbmpheader->bpp != 32)) { - return PM3_ESOFT; - } - - if (pbmpheader->B == 'M' || pbmpheader->M == 'B') { //0x4d42 - PrintAndLogEx(WARNING, "The file is not a BMP!"); - return PM3_ESOFT; - } - - PrintAndLogEx(DEBUG, "file size = %d", pbmpheader->fsize); - PrintAndLogEx(DEBUG, "file offset = %d", pbmpheader->offset); - if (pbmpheader->fsize > bmpsize) { - PrintAndLogEx(WARNING, "The file is truncated!"); - return PM3_ESOFT; - } - - // Get BMP file data pointer - uint32_t offset = pbmpheader->offset; - uint16_t width = pbmpheader->BMP_Width; - uint16_t height = pbmpheader->BMP_Height; - if ((width + 8) * height > WSMAPSIZE * 8) { - PrintAndLogEx(WARNING, "The file is too large, aborting!"); - return PM3_ESOFT; - } - - int16_t *chanR = calloc(((size_t)width) * height, sizeof(int16_t)); - if (chanR == NULL) { - return PM3_EMALLOC; - } - - int16_t *chanG = calloc(((size_t)width) * height, sizeof(int16_t)); - if (chanG == NULL) { - free(chanR); - return PM3_EMALLOC; - } - - int16_t *chanB = calloc(((size_t)width) * height, sizeof(int16_t)); - if (chanB == NULL) { - free(chanR); - free(chanG); - return PM3_EMALLOC; - } - - // Extracting BMP chans - for (uint16_t Y = 0; Y < height; Y++) { - for (uint16_t X = 0; X < width; X++) { - chanB[X + (height - Y - 1) * width] = bmp[offset++]; - chanG[X + (height - Y - 1) * width] = bmp[offset++]; - chanR[X + (height - Y - 1) * width] = bmp[offset++]; - if (pbmpheader->bpp == 32) // Skip Alpha chan - offset++; - } - // Skip line padding - offset += width % 4; - } - - if ((model_nr == M1in54B) || (model_nr == M2in13B)) { - // for BW+Red screens: - uint8_t *mapBlack = calloc(((size_t)width) * height, sizeof(uint8_t)); - if (mapBlack == NULL) { - free(chanR); - free(chanG); - free(chanB); - return PM3_EMALLOC; - } - uint8_t *mapRed = calloc(((size_t)width) * height, sizeof(uint8_t)); - if (mapRed == NULL) { - free(chanR); - free(chanG); - free(chanB); - free(mapBlack); - return PM3_EMALLOC; - } - rgb_to_gray_red_inplace(chanR, chanG, chanB, width, height); - - uint8_t palette[] = {0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00}; // black, white, red - dither_rgb_inplace(chanR, chanG, chanB, width, height, palette, sizeof(palette) / 3); - - threshold_rgb_black_red(chanR, chanG, chanB, width, height, 128, 128, mapBlack, mapRed); - if (save_conversions) { - // fill BMP chans - offset = pbmpheader->offset; - for (uint16_t Y = 0; Y < height; Y++) { - for (uint16_t X = 0; X < width; X++) { - bmp[offset++] = chanB[X + (height - Y - 1) * width] & 0xFF; - bmp[offset++] = chanG[X + (height - Y - 1) * width] & 0xFF; - bmp[offset++] = chanR[X + (height - Y - 1) * width] & 0xFF; - if (pbmpheader->bpp == 32) // Fill Alpha chan - bmp[offset++] = 0xFF; - } - // Skip line padding - offset += width % 4; - } - PrintAndLogEx(INFO, "Saving red+black dithered version..."); - if (saveFile(filename, ".bmp", bmp, offset) != PM3_SUCCESS) { - PrintAndLogEx(WARNING, "Could not save file " _YELLOW_("%s"), filename); - free(chanR); - free(chanG); - free(chanB); - free(mapBlack); - free(mapRed); - return PM3_EIO; - } - } - free(chanR); - free(chanG); - free(chanB); - *black = calloc(WSMAPSIZE, sizeof(uint8_t)); - if (*black == NULL) { - free(mapBlack); - free(mapRed); - return PM3_EMALLOC; - } - map8to1(mapBlack, width, height, *black); - free(mapBlack); - *red = calloc(WSMAPSIZE, sizeof(uint8_t)); - if (*red == NULL) { - free(mapRed); - free(*black); - return PM3_EMALLOC; - } - map8to1(mapRed, width, height, *red); - free(mapRed); - } else { - // for BW-only screens: - int16_t *chanGrey = calloc(((size_t)width) * height, sizeof(int16_t)); - if (chanGrey == NULL) { - free(chanR); - free(chanG); - free(chanB); - return PM3_EMALLOC; - } - rgb_to_gray(chanR, chanG, chanB, width, height, chanGrey); - dither_chan_inplace(chanGrey, width, height); - - uint8_t *mapBlack = calloc(((size_t)width) * height, sizeof(uint8_t)); - if (mapBlack == NULL) { - free(chanR); - free(chanG); - free(chanB); - free(chanGrey); - return PM3_EMALLOC; - } - threshold_chan(chanGrey, width, height, 128, mapBlack); - - if (save_conversions) { - // fill BMP chans - offset = pbmpheader->offset; - for (uint16_t Y = 0; Y < height; Y++) { - for (uint16_t X = 0; X < width; X++) { - bmp[offset++] = chanGrey[X + (height - Y - 1) * width] & 0xFF; - bmp[offset++] = chanGrey[X + (height - Y - 1) * width] & 0xFF; - bmp[offset++] = chanGrey[X + (height - Y - 1) * width] & 0xFF; - if (pbmpheader->bpp == 32) // Fill Alpha chan - bmp[offset++] = 0xFF; - } - // Skip line padding - offset += width % 4; - } - PrintAndLogEx(INFO, "Saving black dithered version..."); - if (saveFile(filename, ".bmp", bmp, offset) != PM3_SUCCESS) { - PrintAndLogEx(WARNING, "Could not save file " _YELLOW_("%s"), filename); - free(chanGrey); - free(chanR); - free(chanG); - free(chanB); - free(mapBlack); - return PM3_EIO; - } - } - free(chanGrey); - free(chanR); - free(chanG); - free(chanB); - *black = calloc(WSMAPSIZE, sizeof(uint8_t)); - if (*black == NULL) { - free(mapBlack); - return PM3_EMALLOC; - } - map8to1(mapBlack, width, height, *black); - free(mapBlack); - } - return PM3_SUCCESS; + return colormap8; } static void read_black(uint32_t i, uint8_t *l, uint8_t model_nr, const uint8_t *black) { @@ -1003,7 +563,7 @@ static int start_drawing(uint8_t model_nr, uint8_t *black, uint8_t *red) { return PM3_SUCCESS; } -static int CmdHF14AWSLoadBmp(const char *Cmd) { +static int CmdHF14AWSLoad(const char *Cmd) { char desc[800] = {0}; for (uint8_t i = 0; i < MEND; i++) { @@ -1029,24 +589,25 @@ static int CmdHF14AWSLoadBmp(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_int1("m", NULL, "<nr>", modeldesc), - arg_lit0("s", "save", "save dithered version in filename-[n].bmp, only for RGB BMP"), - arg_str1("f", "file", "<fn>", "specify filename[.bmp] to upload to tag"), + arg_str1("f", "file", "<fn>", "specify image to upload to tag"), + arg_str0("s", "save", "<fn>", "save paletized version in file"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); int model_nr = arg_get_int_def(ctx, 1, -1); - bool save_conversions = arg_get_lit(ctx, 2); - int fnlen = 0; - char filename[FILE_PATH_SIZE] = {0}; - CLIParamStrToBuf(arg_get_str(ctx, 3), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); + int infilelen, outfilelen; + char infile[FILE_PATH_SIZE]; + char outfile[FILE_PATH_SIZE]; + CLIParamStrToBuf(arg_get_str(ctx, 2), (uint8_t *)infile, FILE_PATH_SIZE, &infilelen); + CLIParamStrToBuf(arg_get_str(ctx, 3), (uint8_t *)outfile, FILE_PATH_SIZE, &outfilelen); CLIParserFree(ctx); //Validations - if (fnlen < 1) { - PrintAndLogEx(WARNING, "Missing filename"); + if (infilelen < 1) { + PrintAndLogEx(WARNING, "Missing input file"); return PM3_EINVARG; } if (model_nr == -1) { @@ -1058,63 +619,76 @@ static int CmdHF14AWSLoadBmp(const char *Cmd) { return PM3_EINVARG; } - uint8_t *bmp = NULL; - uint8_t *black = NULL; - uint8_t *red = NULL; - size_t bytes_read = 0; - if (loadFile_safe(filename, ".bmp", (void **)&bmp, &bytes_read) != PM3_SUCCESS) { - PrintAndLogEx(WARNING, "Could not find file " _YELLOW_("%s"), filename); + bool model_has_red = model_nr == M1in54B || model_nr == M2in13B; + + gdImagePtr rgb_img = gdImageCreateFromFile(infile); + if (!rgb_img) { + PrintAndLogEx(WARNING, "Could not load image from " _YELLOW_("%s"), infile); return PM3_EFILE; } - if (bmp == NULL) { + + if ( + gdImageSX(rgb_img) != models[model_nr].width || + gdImageSY(rgb_img) != models[model_nr].height + ) { + PrintAndLogEx(WARNING, "Image size does not match panel size"); + gdImageDestroy(rgb_img); + return PM3_EFILE; + } + + int pal_len = 2; + int pal[3]; + pal[0] = gdTrueColorAlpha(0xFF, 0xFF, 0xFF, 0); // White + pal[1] = gdTrueColorAlpha(0x00, 0x00, 0x00, 0); // Black + if (model_has_red) { + pal_len = 3; + pal[2] = gdTrueColorAlpha(0xFF, 0x00, 0x00, 0); // Red + } + + gdImagePtr pal_img = img_palettize(rgb_img, pal, pal_len); + gdImageDestroy(rgb_img); + + if (!pal_img) { + PrintAndLogEx(WARNING, "Could not convert image"); return PM3_EMALLOC; } - if (bytes_read < sizeof(bmp_header_t)) { - free(bmp); - return PM3_ESOFT; + + if (outfilelen && !gdImageFile(pal_img, outfile)) { + PrintAndLogEx(WARNING, "Could not save converted image"); } - int depth = picture_bit_depth(bmp, bytes_read, model_nr); - if (depth == PM3_ESOFT) { - PrintAndLogEx(ERR, "Error, BMP file is too small"); - free(bmp); - return PM3_ESOFT; - } else if (depth == 1) { - PrintAndLogEx(DEBUG, "BMP file is a bitmap"); - if (read_bmp_bitmap(bmp, bytes_read, model_nr, &black, &red) != PM3_SUCCESS) { - free(bmp); - return PM3_ESOFT; - } - } else if (depth == 24) { - PrintAndLogEx(DEBUG, "BMP file is a RGB"); - if (read_bmp_rgb(bmp, bytes_read, model_nr, &black, &red, filename, save_conversions) != PM3_SUCCESS) { - free(bmp); - return PM3_ESOFT; - } - } else if (depth == 32) { - PrintAndLogEx(DEBUG, "BMP file is a RGBA, we will ignore the Alpha channel"); - if (read_bmp_rgb(bmp, bytes_read, model_nr, &black, &red, filename, save_conversions) != PM3_SUCCESS) { - free(bmp); - return PM3_ESOFT; - } - } else { - PrintAndLogEx(ERR, "Error, BMP color depth %i not supported. Must be 1 (BW), 24 (RGB) or 32 (RGBA)", depth); - free(bmp); - return PM3_ESOFT; + uint8_t * black_plane = map8to1(pal_img, 1); + if (!black_plane) { + PrintAndLogEx(WARNING, "Could not convert image to bit plane"); + gdImageDestroy(pal_img); + return PM3_EMALLOC; } - free(bmp); - start_drawing(model_nr, black, red); - free(black); - if ((model_nr == M1in54B) || (model_nr == M2in13B)) { - free(red); + uint8_t * red_plane = NULL; + if (model_has_red) { + red_plane = map8to1(pal_img, 2); + if (!red_plane) { + PrintAndLogEx(WARNING, "Could not convert image to bit plane"); + free(black_plane); + gdImageDestroy(pal_img); + return PM3_EMALLOC; + } } - return PM3_SUCCESS; + + gdImageDestroy(pal_img); + int res = start_drawing(model_nr, black_plane, red_plane); + + free(black_plane); + if (red_plane) { + free(red_plane); + } + + return res; } static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, - {"loadbmp", CmdHF14AWSLoadBmp, IfPm3Iso14443a, "Load BMP file to Waveshare NFC ePaper"}, + {"load", CmdHF14AWSLoad, IfPm3Iso14443a, "Load image file to Waveshare NFC ePaper"}, {NULL, NULL, NULL, NULL} }; diff --git a/client/src/imgutils.c b/client/src/imgutils.c new file mode 100644 index 000000000..a51f2cd5e --- /dev/null +++ b/client/src/imgutils.c @@ -0,0 +1,156 @@ + +#include <assert.h> +#include "imgutils.h" + +struct ycbcr_t { + int y; + int cb; + int cr; +}; + +static void rgb_to_ycbcr(int rgb, struct ycbcr_t * ycbcr) { + int r = gdTrueColorGetRed(rgb); + int g = gdTrueColorGetGreen(rgb); + int b = gdTrueColorGetBlue(rgb); + + /* + * Below is a fixed-point version of the following code: + * ycbcr->y = r * 0.29900 + g * 0.58700 + b * 0.11400; + * ycbcr->cb = r * -0.16874 + g * -0.33126 + b * 0.50000 + 128; + * ycbcr->cr = r * 0.50000 + g * -0.41869 + b * -0.08131 + 128; + */ + + ycbcr->y = (r * 19595 + g * 38470 + b * 7471) / 65536; + ycbcr->cb = (r * -11059 + g * -21709 + b * 32768) / 65536 + 128; + ycbcr->cr = (r * 32768 + g * -27439 + b * -5329) / 65536 + 128; +} + +static inline void cap_comp(int * x) { + if (*x < 0) { + *x = 0; + } else if (*x > 255) { + *x = 255; + } +} + +/* + * The following function implements a Floyd-Steinberg in YCbCr color space. + * + * Using this colorspace, the Euclidean distance between colors is closer to human perception than + * in sRGB, which results in a more accurate color rendering. + * + * A comparison can be found at https://twitter.com/Socram4x8/status/1733157380097995205/photo/1. + */ +gdImagePtr img_palettize(gdImagePtr rgb, int * palette, int palette_size) { + assert(rgb != NULL); + assert(palette != NULL); + assert(palette_size >= 2 && palette_size < 256); + + // Create paletized image + gdImagePtr res = gdImageCreate(gdImageSX(rgb), gdImageSY(rgb)); + if (!res) { + return NULL; + } + + // Allocate space for palette in YCbCr + struct ycbcr_t * pal_ycbcr = malloc(palette_size * sizeof(struct ycbcr_t)); + if (!pal_ycbcr) { + gdImageDestroy(res); + return NULL; + } + + /* + * Initialize the column's error array. + * + * Note that we are storing two extra values so we don't have to do boundary checking at + * the left and right edges of the image. + */ + struct ycbcr_t * forward = malloc((gdImageSX(rgb) + 2) * sizeof(struct ycbcr_t)); + if (!forward) { + free(pal_ycbcr); + gdImageDestroy(res); + return NULL; + } + + // Convert palette to YCbCr and allocate in image + for (int i = 0; i < palette_size; i++) { + int c = palette[i]; + rgb_to_ycbcr(c, pal_ycbcr + i); + gdImageColorAllocate(res, gdTrueColorGetRed(c), gdTrueColorGetGreen(c), gdTrueColorGetBlue(c)); + } + + for (int y = 0; y < gdImageSY(rgb); y++) { + // Load current row error and reset its storage + struct ycbcr_t row_err = forward[1]; + forward[1].y = forward[1].cb = forward[1].cr = 0; + + for (int x = 0; x < gdImageSX(rgb); x++) { + struct ycbcr_t pix; + rgb_to_ycbcr(gdImageGetTrueColorPixel(rgb, x, y), &pix); + + // Add error for current pixel + pix.y += row_err.y; + pix.cb += row_err.cb; + pix.cr += row_err.cr; + + // Cap in case it went to imaginary color territory + cap_comp(&pix.y); + cap_comp(&pix.cb); + cap_comp(&pix.cr); + + /* + * Iterate through all candidate colors and find the nearest one using the + * squared Euclidean distance. + */ + int best_idx = 0; + struct ycbcr_t best_err = { 0 }; + int best_score = 0x7FFFFFFF; + for (int can_idx = 0; can_idx < palette_size; can_idx++) { + struct ycbcr_t can_err = { + .y = pix.y - pal_ycbcr[can_idx].y, + .cb = pix.cb - pal_ycbcr[can_idx].cb, + .cr = pix.cr - pal_ycbcr[can_idx].cr, + }; + + int can_score = ( + can_err.y * can_err.y + + can_err.cb * can_err.cb + + can_err.cr * can_err.cr + ); + + if (can_score < best_score) { + best_idx = can_idx; + best_score = can_score; + best_err = can_err; + } + } + + // Set current pixel + gdImageSetPixel(res, x, y, best_idx); + + // Propagate error within the current row, to the pixel to the right + row_err.y = best_err.y * 7 / 16 + forward[x + 2].y; + row_err.cb = best_err.cb * 7 / 16 + forward[x + 2].cb; + row_err.cr = best_err.cr * 7 / 16 + forward[x + 2].cr; + + // Add error to bottom left + forward[x + 0].y += best_err.y * 3 / 16; + forward[x + 0].cb += best_err.cb * 3 / 16; + forward[x + 0].cr += best_err.cr * 3 / 16; + + // Add error to bottom center + forward[x + 1].y += best_err.y * 5 / 16; + forward[x + 1].cb += best_err.cb * 5 / 16; + forward[x + 1].cr += best_err.cr * 5 / 16; + + // Set error to bottom right + forward[x + 2].y = best_err.y * 1 / 16; + forward[x + 2].cb = best_err.cb * 1 / 16; + forward[x + 2].cr = best_err.cr * 1 / 16; + } + } + + free(forward); + free(pal_ycbcr); + return res; +} diff --git a/client/src/imgutils.h b/client/src/imgutils.h new file mode 100644 index 000000000..1ffa07833 --- /dev/null +++ b/client/src/imgutils.h @@ -0,0 +1,25 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// Image utilities +//----------------------------------------------------------------------------- +#ifndef IMGUTILS_H__ +#define IMGUTILS_H__ + +#include <gd.h> + +gdImagePtr img_palettize(gdImagePtr rgb, int * palette, int palette_size); + +#endif From cdcfa63cba479f4130cc260f67ff2a63ca7d62f2 Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sat, 6 Jan 2024 20:47:24 +0100 Subject: [PATCH 0993/1034] Fix corruption in first line of Waveshare image --- client/src/imgutils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/imgutils.c b/client/src/imgutils.c index a51f2cd5e..67facd183 100644 --- a/client/src/imgutils.c +++ b/client/src/imgutils.c @@ -65,7 +65,7 @@ gdImagePtr img_palettize(gdImagePtr rgb, int * palette, int palette_size) { * Note that we are storing two extra values so we don't have to do boundary checking at * the left and right edges of the image. */ - struct ycbcr_t * forward = malloc((gdImageSX(rgb) + 2) * sizeof(struct ycbcr_t)); + struct ycbcr_t * forward = calloc(gdImageSX(rgb) + 2, sizeof(struct ycbcr_t)); if (!forward) { free(pal_ycbcr); gdImageDestroy(res); From 1e9a9f2838b476ed56f9710faf1f276e7c47a8f9 Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sat, 6 Jan 2024 21:05:45 +0100 Subject: [PATCH 0994/1034] Fix compilation failure when GD is not available --- client/src/cmdhf.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/cmdhf.c b/client/src/cmdhf.c index f3a45d92a..2de94680e 100644 --- a/client/src/cmdhf.c +++ b/client/src/cmdhf.c @@ -566,7 +566,9 @@ static command_t CommandTable[] = { {"thinfilm", CmdHFThinfilm, AlwaysAvailable, "{ Thinfilm RFIDs... }"}, {"topaz", CmdHFTopaz, AlwaysAvailable, "{ TOPAZ (NFC Type 1) RFIDs... }"}, {"vas", CmdHFVAS, AlwaysAvailable, "{ Apple Value Added Service }"}, +#ifdef HAVE_GD {"waveshare", CmdHFWaveshare, AlwaysAvailable, "{ Waveshare NFC ePaper... }"}, +#endif {"xerox", CmdHFXerox, AlwaysAvailable, "{ Fuji/Xerox cartridge RFIDs... }"}, {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("General") " ---------------------"}, {"help", CmdHelp, AlwaysAvailable, "This help"}, From b050ebc2b9b1195dee67123411b3df9202ca558f Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sun, 7 Jan 2024 00:58:13 +0100 Subject: [PATCH 0995/1034] malloc -> calloc --- client/src/cmdhfwaveshare.c | 8 ++------ client/src/imgutils.c | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/client/src/cmdhfwaveshare.c b/client/src/cmdhfwaveshare.c index 0dc997556..2f4c835b4 100644 --- a/client/src/cmdhfwaveshare.c +++ b/client/src/cmdhfwaveshare.c @@ -674,15 +674,11 @@ static int CmdHF14AWSLoad(const char *Cmd) { return PM3_EMALLOC; } } - gdImageDestroy(pal_img); + int res = start_drawing(model_nr, black_plane, red_plane); - free(black_plane); - if (red_plane) { - free(red_plane); - } - + free(red_plane); return res; } diff --git a/client/src/imgutils.c b/client/src/imgutils.c index 67facd183..1ebcddbb6 100644 --- a/client/src/imgutils.c +++ b/client/src/imgutils.c @@ -53,7 +53,7 @@ gdImagePtr img_palettize(gdImagePtr rgb, int * palette, int palette_size) { } // Allocate space for palette in YCbCr - struct ycbcr_t * pal_ycbcr = malloc(palette_size * sizeof(struct ycbcr_t)); + struct ycbcr_t * pal_ycbcr = calloc(palette_size, sizeof(struct ycbcr_t)); if (!pal_ycbcr) { gdImageDestroy(res); return NULL; From c94c6f90a136c18c01dd154183f690c070e691d1 Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sun, 7 Jan 2024 00:59:48 +0100 Subject: [PATCH 0996/1034] Install GD in CI pipelines --- .github/workflows/macos.yml | 6 +++--- .github/workflows/ubuntu.yml | 6 +++--- .github/workflows/windows.yml | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 37d628655..d7726f6e0 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -35,7 +35,7 @@ jobs: run: brew tap RfidResearchGroup/proxmark3 - name: Install dependencies - run: brew install readline coreutils qt5 RfidResearchGroup/proxmark3/arm-none-eabi-gcc openssl + run: brew install readline coreutils qt5 RfidResearchGroup/proxmark3/arm-none-eabi-gcc openssl gd continue-on-error: true - name: Install Python dependencies @@ -75,7 +75,7 @@ jobs: run: brew tap RfidResearchGroup/proxmark3 - name: Install dependencies - run: brew install readline coreutils qt5 RfidResearchGroup/proxmark3/arm-none-eabi-gcc openssl + run: brew install readline coreutils qt5 RfidResearchGroup/proxmark3/arm-none-eabi-gcc openssl gd continue-on-error: true - name: Install Python dependencies @@ -116,7 +116,7 @@ jobs: run: brew tap RfidResearchGroup/proxmark3 - name: Install dependencies - run: brew install readline coreutils qt5 RfidResearchGroup/proxmark3/arm-none-eabi-gcc openssl + run: brew install readline coreutils qt5 RfidResearchGroup/proxmark3/arm-none-eabi-gcc openssl gd continue-on-error: true - name: Install Python dependencies diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index d81ea5db2..969fe2335 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -26,7 +26,7 @@ jobs: run: sudo apt-get update - name: Install dependencies - run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev + run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev libgd-dev - name: Install Python dependencies run: | @@ -56,7 +56,7 @@ jobs: run: sudo apt-get update - name: Install dependencies - run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev + run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev libgd-dev - name: Install Python dependencies run: | @@ -87,7 +87,7 @@ jobs: run: sudo apt-get update - name: Install dependencies - run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev + run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev libgd-dev - name: Install Python dependencies run: | diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index d913a35fc..77b160edf 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -119,6 +119,7 @@ jobs: python3-dev libpython3-all-dev libssl-dev + libgd-dev - name: Install Python dependencies run: | From d6ab23bf5a03a188242519e67e90c88001b175b2 Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sun, 7 Jan 2024 12:43:43 +0100 Subject: [PATCH 0997/1034] Add GD support to CMake --- client/CMakeLists.txt | 53 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index d92c15fbe..4b4616201 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -97,11 +97,12 @@ if (CMAKE_TOOLCHAIN_FILE) set(EMBED_READLINE ON) set(EMBED_BZIP2 ON) set(EMBED_LZ4 ON) + set(EMBED_GD ON) endif (CMAKE_TOOLCHAIN_FILE) -if (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4) +if (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4 OR EMBED_GD) include(ExternalProject) -endif (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4) +endif (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4 OR EMBED_GD) if (NOT SKIPREADLINE EQUAL 1) if (APPLE) @@ -213,6 +214,32 @@ if (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) set(LZ4_FOUND ON) endif (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) +if (NOT SKIPGD EQUAL 1) + if (EMBED_GD) + cmake_policy(SET CMP0114 NEW) + set(GD_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/gd/build) + set(GD_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/gd/install) + # Specify SOURCE_DIR will cause some errors + ExternalProject_Add(gd + URL https://github.com/libgd/libgd/releases/download/gd-2.3.3/libgd-2.3.3.tar.gz + URL_HASH SHA256=dd3f1f0bb016edcc0b2d082e8229c822ad1d02223511997c80461481759b1ed2 + PREFIX deps/gd + DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/gd + CONFIGURE_COMMAND cd ${GD_BUILD_DIR} && cmake ../src/gd -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON -DCMAKE_INSTALL_PREFIX=${GD_INSTALL_DIR} + BUILD_IN_SOURCE ON + BUILD_COMMAND make -C ${GD_BUILD_DIR} -j4 CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} + INSTALL_COMMAND make -C ${GD_BUILD_DIR} install + LOG_DOWNLOAD ON + ) + ExternalProject_Add_StepTargets(gd configure build install) + set(GD_INCLUDE_DIRS ${GD_INSTALL_DIR}/include) + set(GD_LIBRARIES ${GD_INSTALL_DIR}/lib/libgd.a) + set(GD_FOUND ON) + else (EMBED_GD) + find_package(GD 2.2.0...<3.0.0 QUIET) + endif (EMBED_GD) +endif (NOT SKIPGD EQUAL 1) + if (NOT SKIPWHEREAMISYSTEM EQUAL 1) find_path(WHEREAMI_INCLUDE_DIRS whereami.h) find_library(WHEREAMI_LIBRARIES whereami) @@ -495,6 +522,16 @@ if (LZ4_FOUND) set(ADDITIONAL_LNK ${LZ4_LIBRARIES} ${ADDITIONAL_LNK}) endif (LZ4_FOUND) +if (GD_FOUND) + set(ADDITIONAL_DIRS ${GD_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${GD_LIBRARIES} ${ADDITIONAL_LNK}) + set(TARGET_SOURCES + ${PM3_ROOT}/client/src/imgutils.c + ${PM3_ROOT}/client/src/cmdhfwaveshare.c + ${TARGET_SOURCES}) + add_definitions("-DHAVE_GD") +endif (GD_FOUND) + if (WHEREAMI_FOUND) set(ADDITIONAL_DIRS ${WHEREAMI_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) set(ADDITIONAL_LNK ${WHEREAMI_LIBRARIES} ${ADDITIONAL_LNK}) @@ -547,6 +584,18 @@ else (LZ4_FOUND) message(SEND_ERROR "LZ4 library: LZ4 not found") endif (LZ4_FOUND) +if (SKIPGD EQUAL 1) + message(STATUS "GD library: skipped") +elseif (GD_FOUND) + if (EMBED_GD) + message(STATUS "GD library: embedded") + else (EMBED_GD) + message(STATUS "GD library: system library found") + endif (EMBED_GD) +else (SKIPGD EQUAL 1) + message(STATUS "GD library: GD not found, disabled") +endif (SKIPGD EQUAL 1) + if (SKIPJANSSONSYSTEM EQUAL 1) message(STATUS "Jansson library: local library forced") else (SKIPJANSSONSYSTEM EQUAL 1) From bda35149c6065224b7176e1d9830d9607916a2db Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sun, 7 Jan 2024 13:26:53 +0100 Subject: [PATCH 0998/1034] Fix CMake GD --- client/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 4b4616201..73ac55adc 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -236,7 +236,7 @@ if (NOT SKIPGD EQUAL 1) set(GD_LIBRARIES ${GD_INSTALL_DIR}/lib/libgd.a) set(GD_FOUND ON) else (EMBED_GD) - find_package(GD 2.2.0...<3.0.0 QUIET) + pkg_search_module(GD QUIET gdlib) endif (EMBED_GD) endif (NOT SKIPGD EQUAL 1) From f7d0bf7e4f5596d096c4aa50a414d5f18c09e6b6 Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sun, 7 Jan 2024 13:33:17 +0100 Subject: [PATCH 0999/1034] Add HAVE_GD flag --- client/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/Makefile b/client/Makefile index 4f74cd86c..adbd2c0ce 100644 --- a/client/Makefile +++ b/client/Makefile @@ -421,6 +421,10 @@ ifeq ($(PYTHON_FOUND),1) PM3CFLAGS += -DHAVE_PYTHON endif +ifeq ($(GD_FOUND),1) + PM3CFLAGS += -DHAVE_GD +endif + ifeq ($(SWIG_LUA_FOUND),1) PM3CFLAGS += -DHAVE_LUA_SWIG endif From ddc582d56ab89284170a3ff56e60b01377421d0f Mon Sep 17 00:00:00 2001 From: netvader <5840601+netvader@users.noreply.github.com> Date: Sun, 7 Jan 2024 14:36:11 +0100 Subject: [PATCH 1000/1034] typo help description for slixprivacydisable and slixprivacyenable corrected --- client/src/cmdhf15.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index a8172defa..6072c57b7 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -2527,7 +2527,7 @@ static int CmdHF15SlixDisable(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf 15 slixprivacydisable", "Disable privacy mode on SLIX ISO-15693 tag", - "hf 15 slixdisable -p 0F0F0F0F"); + "hf 15 slixprivacydisable -p 0F0F0F0F"); void *argtable[] = { arg_param_begin, @@ -2577,7 +2577,7 @@ static int CmdHF15SlixEnable(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf 15 slixprivacyenable", "Enable privacy mode on SLIX ISO-15693 tag", - "hf 15 slixenable -p 0F0F0F0F"); + "hf 15 slixprivacyenable -p 0F0F0F0F"); void *argtable[] = { arg_param_begin, From 3596951e849b090c0f4f58d68cfb3b03d48dc0d7 Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sun, 7 Jan 2024 14:15:44 +0100 Subject: [PATCH 1001/1034] (Hopefully) fix MacOS CMake compilation --- client/CMakeLists.txt | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 73ac55adc..81ef02b65 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -359,7 +359,6 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/cmdhfthinfilm.c ${PM3_ROOT}/client/src/cmdhftopaz.c ${PM3_ROOT}/client/src/cmdhfvas.c - ${PM3_ROOT}/client/src/cmdhfwaveshare.c ${PM3_ROOT}/client/src/cmdhfxerox.c ${PM3_ROOT}/client/src/cmdhw.c ${PM3_ROOT}/client/src/cmdlf.c @@ -522,15 +521,18 @@ if (LZ4_FOUND) set(ADDITIONAL_LNK ${LZ4_LIBRARIES} ${ADDITIONAL_LNK}) endif (LZ4_FOUND) -if (GD_FOUND) - set(ADDITIONAL_DIRS ${GD_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) - set(ADDITIONAL_LNK ${GD_LIBRARIES} ${ADDITIONAL_LNK}) - set(TARGET_SOURCES - ${PM3_ROOT}/client/src/imgutils.c - ${PM3_ROOT}/client/src/cmdhfwaveshare.c - ${TARGET_SOURCES}) - add_definitions("-DHAVE_GD") -endif (GD_FOUND) +if (NOT SKIPGD EQUAL 1) + if (GD_FOUND) + set(ADDITIONAL_DIRS ${GD_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${GD_LIBRARIES} ${ADDITIONAL_LNK}) + set(ADDITIONAL_LNKDIRS ${GD_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) + set(TARGET_SOURCES + ${PM3_ROOT}/client/src/imgutils.c + ${PM3_ROOT}/client/src/cmdhfwaveshare.c + ${TARGET_SOURCES}) + add_definitions("-DHAVE_GD") + endif (GD_FOUND) +endif(NOT SKIPGD EQUAL 1) if (WHEREAMI_FOUND) set(ADDITIONAL_DIRS ${WHEREAMI_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) @@ -770,14 +772,14 @@ endif (NOT SKIPPTHREAD EQUAL 1) if (NOT SKIPPYTHON EQUAL 1) # OSX have a hard time compiling python3 dependency with older cmake. if (PYTHON3EMBED_FOUND OR PYTHON3_FOUND) - if (NOT CMAKE_VERSION VERSION_LESS 3.13) - target_link_directories(proxmark3 PRIVATE ${ADDITIONAL_LNKDIRS}) - elseif (APPLE) - message( SEND_ERROR "Your CMAKE version is too old for Apple platform, please update to a version >=3.13" ) - endif (NOT CMAKE_VERSION VERSION_LESS 3.13) + if (CMAKE_VERSION VERSION_LESS 3.13) + message( SEND_ERROR "Your CMAKE version is too old for Apple platform, please update to a version >=3.13" ) + endif (CMAKE_VERSION VERSION_LESS 3.13) endif (PYTHON3EMBED_FOUND OR PYTHON3_FOUND) endif (NOT SKIPPYTHON EQUAL 1) +target_link_directories(proxmark3 PRIVATE ${ADDITIONAL_LNKDIRS}) + install(TARGETS proxmark3 DESTINATION "bin") install(DIRECTORY cmdscripts lualibs luascripts pyscripts resources dictionaries DESTINATION "share/proxmark3") From e1d81f6fafc3db00b056fccb52f06a870ac09aaa Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sun, 7 Jan 2024 17:00:52 +0100 Subject: [PATCH 1002/1034] Fix embedding GD under MinGW --- client/CMakeLists.txt | 15 +++++---------- client/deps/gd-static.patch | 11 +++++++++++ 2 files changed, 16 insertions(+), 10 deletions(-) create mode 100644 client/deps/gd-static.patch diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 81ef02b65..c3ae713ec 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -217,23 +217,18 @@ endif (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) if (NOT SKIPGD EQUAL 1) if (EMBED_GD) cmake_policy(SET CMP0114 NEW) - set(GD_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/gd/build) - set(GD_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/gd/install) + set(GD_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/gd) # Specify SOURCE_DIR will cause some errors ExternalProject_Add(gd URL https://github.com/libgd/libgd/releases/download/gd-2.3.3/libgd-2.3.3.tar.gz URL_HASH SHA256=dd3f1f0bb016edcc0b2d082e8229c822ad1d02223511997c80461481759b1ed2 PREFIX deps/gd - DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/gd - CONFIGURE_COMMAND cd ${GD_BUILD_DIR} && cmake ../src/gd -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON -DCMAKE_INSTALL_PREFIX=${GD_INSTALL_DIR} - BUILD_IN_SOURCE ON - BUILD_COMMAND make -C ${GD_BUILD_DIR} -j4 CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} - INSTALL_COMMAND make -C ${GD_BUILD_DIR} install - LOG_DOWNLOAD ON + CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON -DENABLE_CPP=0 -DCMAKE_INSTALL_PREFIX=. + PATCH_COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/deps/gd-static.patch | patch -p1 ) ExternalProject_Add_StepTargets(gd configure build install) - set(GD_INCLUDE_DIRS ${GD_INSTALL_DIR}/include) - set(GD_LIBRARIES ${GD_INSTALL_DIR}/lib/libgd.a) + set(GD_INCLUDE_DIRS ${GD_BUILD_DIR}/src/gd-build/include) + set(GD_LIBRARIES ${GD_BUILD_DIR}/src/gd-build/lib/libgd.a) set(GD_FOUND ON) else (EMBED_GD) pkg_search_module(GD QUIET gdlib) diff --git a/client/deps/gd-static.patch b/client/deps/gd-static.patch new file mode 100644 index 000000000..c8447c845 --- /dev/null +++ b/client/deps/gd-static.patch @@ -0,0 +1,11 @@ +--- a/src/gd.h 2024-01-07 16:51:43.749223000 +0100 ++++ b/src/gd.h 2024-01-07 16:52:34.162291600 +0100 +@@ -45,7 +45,7 @@ + the gd sources in a project. */ + + /* http://gcc.gnu.org/wiki/Visibility */ +-#if defined(_WIN32) || defined(CYGWIN) || defined(_WIN32_WCE) ++#if 0 // Disable DLL annotations when building statically. Needed for embedding under MinGW. + # ifdef BGDWIN32 + # ifdef NONDLL + # define BGD_EXPORT_DATA_PROT From 572bdbf727a9faed8befc12e1603d7b25834e05b Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sun, 7 Jan 2024 17:12:05 +0100 Subject: [PATCH 1003/1034] Document dependency on GD for ePaper devices --- CHANGELOG.md | 1 + .../Linux-Installation-Instructions.md | 19 ++++++++++++++++--- .../Windows-Installation-Instructions.md | 3 ++- .../Windows-WSL2-Installation-Instructions.md | 4 +++- ...acOS-Homebrew-Installation-Instructions.md | 2 +- ...acOS-MacPorts-Installation-Instructions.md | 2 +- 6 files changed, 24 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f3da0a0ff..e41c2e35c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Added troubleshooting entry - ARM architecture error (@francis2054) - Fixed `lf pyramid sim` - wrong parameter handling (@iceman1001) - Fixed bootloader - Ignore jitters when pressing the button (@wh201906) + - Changed `hf waveshare` - image loading and processing is now done using [GDlib](https://github.com/libgd/libgd) (@socram8888) ## [Steamboat Willie.4.17768][2024-01-03] - Changed `mem spiffs dump -t` - now supports downloading direct into trace buffer (@hazardousvoltage) diff --git a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md index 496e14be2..c7f10b26a 100644 --- a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md @@ -72,6 +72,9 @@ you can skip the installation of `qtbase5-dev`. 👉 If you don't need support for Python3 scripts in the Proxmark3 client, you can skip the installation of `libpython3-dev`. +👉 If you don't need support for NFC ePaper devices, +you can skip the installation of `libgd-dev`. + ### Failed to load module... ⚠️ If you get some (non blocking) error at runtime such as _Gtk-Message: Failed to load module "canberra-gtk-module"_ you may have to install `libcanberra-gtk-module`. @@ -82,7 +85,7 @@ you may have to install `libcanberra-gtk-module`. ```sh sudo pacman -Syu git base-devel readline bzip2 lz4 arm-none-eabi-gcc \ -arm-none-eabi-newlib qt5-base bluez python --needed +arm-none-eabi-newlib qt5-base bluez python gd --needed ``` ### If you don't need... @@ -95,6 +98,9 @@ you can skip the installation of `qt5-base`. 👉 If you don't need support for Python3 scripts in the Proxmark3 client, you can skip the installation of `python`. +👉 If you don't need support for NFC ePaper devices, +you can skip the installation of `gd`. + ## On Fedora ^[Top](#top) @@ -102,7 +108,7 @@ you can skip the installation of `python`. ```sh sudo dnf install git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib \ readline-devel bzip2-devel lz4-devel qt5-qtbase-devel bluez-libs-devel \ -python3-devel libatomic openssl-devel +python3-devel libatomic openssl-devel gd-devel ``` ### If you don't need... @@ -115,6 +121,9 @@ you can skip the installation of `qt5-qtbase-devel`. 👉 If you don't need support for Python3 scripts in the Proxmark3 client, you can skip the installation of `python3-devel`. +👉 If you don't need support for NFC ePaper devices, +you can skip the installation of `gd-devel`. + ## On openSUSE ^[Top](#top) @@ -122,7 +131,8 @@ you can skip the installation of `python3-devel`. ```sh sudo zypper install git patterns-devel-base-devel_basis gcc-c++ \ readline-devel libbz2-devel liblz4-devel cross-arm-none-gcc9 \ -cross-arm-none-newlib-devel python3-devel libqt5-qtbase-devel libopenssl-devel +cross-arm-none-newlib-devel python3-devel libqt5-qtbase-devel \ +libopenssl-devel gd-devel ``` Note that Bluez is not available on openSUSE so the native Bluetooth support won't be available in the client. @@ -134,6 +144,9 @@ you can skip the installation of `libqt5-qtbase-devel`. 👉 If you don't need support for Python3 scripts in the Proxmark3 client, you can skip the installation of `python3-devel`. +👉 If you don't need support for NFC ePaper devices, +you can skip the installation of `gd-devel`. + # Clone the repository ^[Top](#top) diff --git a/doc/md/Installation_Instructions/Windows-Installation-Instructions.md b/doc/md/Installation_Instructions/Windows-Installation-Instructions.md index f14f772aa..d3056ee5c 100644 --- a/doc/md/Installation_Instructions/Windows-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Windows-Installation-Instructions.md @@ -169,11 +169,12 @@ Install dependencies: ```sh sudo apt-get install --no-install-recommends git ca-certificates build-essential pkg-config \ libreadline-dev gcc-arm-none-eabi libnewlib-dev \ -libbz2-dev liblz4-dev libpython3-dev qtbase5-dev libssl-dev +libbz2-dev liblz4-dev libpython3-dev qtbase5-dev libssl-dev libgd-dev ``` _note_ If you don't need the graphical components of the Proxmark3 client, you can skip the installation of `qtbase5-dev`. If you don't need support for Python3 scripts in the Proxmark3 client, you can skip the installation of `libpython3-dev`. +If you don't need support for NFC ePaper devices, you can skip the installation of `libgd-dev`. ## Clone the Iceman repository ^[Top](#top) diff --git a/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md b/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md index 0c720b62e..ca889aa00 100644 --- a/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md @@ -108,12 +108,14 @@ then, install proxmark dependencies: sudo apt-get install --no-install-recommends \ git ca-certificates build-essential pkg-config \ libreadline-dev gcc-arm-none-eabi libnewlib-dev \ - libbz2-dev liblz4-dev libpython3-dev qtbase5-dev libssl-dev + libbz2-dev liblz4-dev libpython3-dev qtbase5-dev \ + libssl-dev libgd-dev ``` _note_ If you don't need the graphical components of the Proxmark3 client, you can skip the installation of `qtbase5-dev`. If you don't need support for Python3 scripts in the Proxmark3 client, you can skip the installation of `libpython3-dev`. +If you don't need support for NFC ePaper devices, you can skip the installation of `libgd-dev`. ## X Server Installation ^[Top](#top) diff --git a/doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md b/doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md index c4622641a..6c1ac3eca 100644 --- a/doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md @@ -161,7 +161,7 @@ These instructions will show how to setup the environment on OSX to the point wh 2. Install dependencies: ``` -brew install readline qt5 pkgconfig coreutils +brew install readline qt5 gd pkgconfig coreutils brew install RfidResearchGroup/proxmark3/arm-none-eabi-gcc ``` 3. (optional) Install makefile dependencies: diff --git a/doc/md/Installation_Instructions/macOS-MacPorts-Installation-Instructions.md b/doc/md/Installation_Instructions/macOS-MacPorts-Installation-Instructions.md index 2c36d1371..c86615085 100644 --- a/doc/md/Installation_Instructions/macOS-MacPorts-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/macOS-MacPorts-Installation-Instructions.md @@ -61,7 +61,7 @@ These instructions will show how to setup the environment on OSX to the point wh 2. Install dependencies: ```bash - sudo port install readline jansson lua52 python311 bzip2 lz4 openssl11 arm-none-eabi-gcc arm-none-eabi-binutils coreutils qt5 qt5-qtbase pkgconfig + sudo port install readline jansson lua52 python311 bzip2 lz4 openssl11 arm-none-eabi-gcc arm-none-eabi-binutils coreutils qt5 qt5-qtbase gd2 pkgconfig ``` 3. Clamp Python version for pkg-config From d27669f22cd6a90f17889b7d357027dead51fa76 Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sun, 7 Jan 2024 18:05:48 +0100 Subject: [PATCH 1004/1034] Allow image conversion when offline --- .gitignore | 1 + client/src/cmdhfwaveshare.c | 18 +++++++++++++++--- tools/lena.bmp | Bin 0 -> 120054 bytes tools/pm3_tests.sh | 1 + 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 tools/lena.bmp diff --git a/.gitignore b/.gitignore index 90e9858f8..9c42779fa 100644 --- a/.gitignore +++ b/.gitignore @@ -80,6 +80,7 @@ tools/jtag_openocd/openocd_configuration tools/mfd_aes_brute/mfd_aes_brute tools/mfd_aes_brute/mfd_multi_brute tools/mfd_aes_brute/brute_key +!tools/lena.bmp fpga/__build* diff --git a/client/src/cmdhfwaveshare.c b/client/src/cmdhfwaveshare.c index 2f4c835b4..f3906bed2 100644 --- a/client/src/cmdhfwaveshare.c +++ b/client/src/cmdhfwaveshare.c @@ -618,6 +618,10 @@ static int CmdHF14AWSLoad(const char *Cmd) { PrintAndLogEx(WARNING, "Unknown model"); return PM3_EINVARG; } + if (!g_session.pm3_present && !outfilelen) { + PrintAndLogEx(WARNING, "Offline - can only perform image conversion"); + return PM3_ENOTTY; + } bool model_has_red = model_nr == M1in54B || model_nr == M2in13B; @@ -653,8 +657,16 @@ static int CmdHF14AWSLoad(const char *Cmd) { return PM3_EMALLOC; } - if (outfilelen && !gdImageFile(pal_img, outfile)) { - PrintAndLogEx(WARNING, "Could not save converted image"); + if (outfilelen) { + if (gdImageFile(pal_img, outfile)) { + PrintAndLogEx(INFO, "Save converted image to " _YELLOW_("%s"), outfile); + gdImageDestroy(pal_img); + return PM3_SUCCESS; + } else { + PrintAndLogEx(WARNING, "Could not save converted image", outfile); + gdImageDestroy(pal_img); + return PM3_EFILE; + } } uint8_t * black_plane = map8to1(pal_img, 1); @@ -684,7 +696,7 @@ static int CmdHF14AWSLoad(const char *Cmd) { static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, - {"load", CmdHF14AWSLoad, IfPm3Iso14443a, "Load image file to Waveshare NFC ePaper"}, + {"load", CmdHF14AWSLoad, AlwaysAvailable, "Load image file to Waveshare NFC ePaper"}, {NULL, NULL, NULL, NULL} }; diff --git a/tools/lena.bmp b/tools/lena.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d03cf850946ff79b007fe6f52f6c31346a5a206c GIT binary patch literal 120054 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 literal 0 HcmV?d00001 diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index e56ce5d25..2e32b39bb 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -535,6 +535,7 @@ while true; do if ! CheckExecute "emv test" "$CLIENTBIN -c 'emv test'" "Test\(s\) \[ ok"; then break; fi if ! CheckExecute "hf cipurse test" "$CLIENTBIN -c 'hf cipurse test'" "Tests \[ ok"; then break; fi if ! CheckExecute "hf mfdes test" "$CLIENTBIN -c 'hf mfdes test'" "Tests \[ ok"; then break; fi + if ! CheckExecute "hf waveshare load" "$CLIENTBIN -c 'hf waveshare load -m 6 -f tools/lena.bmp -s dither.bmp' && echo '9cee7dcc285f59f88c7cbc9de1dc02b4 dither.bmp' | md5sum -c" "dither.bmp: OK"; then break; fi fi echo -e "\n------------------------------------------------------------" echo -e "Tests [ ${C_GREEN}OK${C_NC} ] ${C_OK}\n" From dccb404329ba294d0cedce7a4733dfb9e6741ebd Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sun, 7 Jan 2024 19:29:32 +0100 Subject: [PATCH 1005/1034] Update cmdhfwaveshare help --- client/src/cmdhfwaveshare.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhfwaveshare.c b/client/src/cmdhfwaveshare.c index f3906bed2..7dfef808c 100644 --- a/client/src/cmdhfwaveshare.c +++ b/client/src/cmdhfwaveshare.c @@ -569,7 +569,7 @@ static int CmdHF14AWSLoad(const char *Cmd) { for (uint8_t i = 0; i < MEND; i++) { snprintf(desc + strlen(desc), sizeof(desc) - strlen(desc), - "hf waveshare loadbmp -f myfile -m %2u -> %s ( %u, %u )\n", + "hf waveshare load -f myfile -m %2u -> %s ( %u, %u )\n", i, models[i].desc, models[i].width, @@ -578,8 +578,8 @@ static int CmdHF14AWSLoad(const char *Cmd) { } CLIParserContext *ctx; - CLIParserInit(&ctx, "hf waveshare loadbmp", - "Load BMP file to Waveshare NFC ePaper.", + CLIParserInit(&ctx, "hf waveshare load", + "Load image file to Waveshare NFC ePaper", desc ); From 48afba02cfa36e763f1f05a64187622735596dd9 Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sun, 7 Jan 2024 19:46:47 +0100 Subject: [PATCH 1006/1034] Add GD to experimental lib CMakeLists.txt --- client/CMakeLists.txt | 22 +++++----- client/experimental_lib/CMakeLists.txt | 60 ++++++++++++++++++++++---- 2 files changed, 62 insertions(+), 20 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index c3ae713ec..88bbb9ead 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -516,18 +516,16 @@ if (LZ4_FOUND) set(ADDITIONAL_LNK ${LZ4_LIBRARIES} ${ADDITIONAL_LNK}) endif (LZ4_FOUND) -if (NOT SKIPGD EQUAL 1) - if (GD_FOUND) - set(ADDITIONAL_DIRS ${GD_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) - set(ADDITIONAL_LNK ${GD_LIBRARIES} ${ADDITIONAL_LNK}) - set(ADDITIONAL_LNKDIRS ${GD_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) - set(TARGET_SOURCES - ${PM3_ROOT}/client/src/imgutils.c - ${PM3_ROOT}/client/src/cmdhfwaveshare.c - ${TARGET_SOURCES}) - add_definitions("-DHAVE_GD") - endif (GD_FOUND) -endif(NOT SKIPGD EQUAL 1) +if (NOT SKIPGD EQUAL 1 AND GD_FOUND) + set(ADDITIONAL_DIRS ${GD_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${GD_LIBRARIES} ${ADDITIONAL_LNK}) + set(ADDITIONAL_LNKDIRS ${GD_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) + set(TARGET_SOURCES + ${PM3_ROOT}/client/src/imgutils.c + ${PM3_ROOT}/client/src/cmdhfwaveshare.c + ${TARGET_SOURCES}) + add_definitions("-DHAVE_GD") +endif (NOT SKIPGD EQUAL 1 AND GD_FOUND) if (WHEREAMI_FOUND) set(ADDITIONAL_DIRS ${WHEREAMI_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 15a74d38c..efa334216 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -98,11 +98,12 @@ if (CMAKE_TOOLCHAIN_FILE) set(EMBED_READLINE ON) set(EMBED_BZIP2 ON) set(EMBED_LZ4 ON) + set(EMBED_GD ON) endif (CMAKE_TOOLCHAIN_FILE) -if (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4) +if (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4 OR EMBED_GD) include(ExternalProject) -endif (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4) +endif (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4 OR EMBED_GD) if (NOT SKIPREADLINE EQUAL 1) if (APPLE) @@ -214,6 +215,27 @@ if (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) set(LZ4_FOUND ON) endif (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) +if (NOT SKIPGD EQUAL 1) + if (EMBED_GD) + cmake_policy(SET CMP0114 NEW) + set(GD_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/gd) + # Specify SOURCE_DIR will cause some errors + ExternalProject_Add(gd + URL https://github.com/libgd/libgd/releases/download/gd-2.3.3/libgd-2.3.3.tar.gz + URL_HASH SHA256=dd3f1f0bb016edcc0b2d082e8229c822ad1d02223511997c80461481759b1ed2 + PREFIX deps/gd + CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON -DENABLE_CPP=0 -DCMAKE_INSTALL_PREFIX=. + PATCH_COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/deps/gd-static.patch | patch -p1 + ) + ExternalProject_Add_StepTargets(gd configure build install) + set(GD_INCLUDE_DIRS ${GD_BUILD_DIR}/src/gd-build/include) + set(GD_LIBRARIES ${GD_BUILD_DIR}/src/gd-build/lib/libgd.a) + set(GD_FOUND ON) + else (EMBED_GD) + pkg_search_module(GD QUIET gdlib) + endif (EMBED_GD) +endif (NOT SKIPGD EQUAL 1) + if (NOT SKIPWHEREAMISYSTEM EQUAL 1) find_path(WHEREAMI_INCLUDE_DIRS whereami.h) find_library(WHEREAMI_LIBRARIES whereami) @@ -333,7 +355,6 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/cmdhfthinfilm.c ${PM3_ROOT}/client/src/cmdhftopaz.c ${PM3_ROOT}/client/src/cmdhfvas.c - ${PM3_ROOT}/client/src/cmdhfwaveshare.c ${PM3_ROOT}/client/src/cmdhfxerox.c ${PM3_ROOT}/client/src/cmdhw.c ${PM3_ROOT}/client/src/cmdlf.c @@ -496,6 +517,17 @@ if (LZ4_FOUND) set(ADDITIONAL_LNK ${LZ4_LIBRARIES} ${ADDITIONAL_LNK}) endif (LZ4_FOUND) +if (NOT SKIPGD EQUAL 1 AND GD_FOUND) + set(ADDITIONAL_DIRS ${GD_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${GD_LIBRARIES} ${ADDITIONAL_LNK}) + set(ADDITIONAL_LNKDIRS ${GD_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) + set(TARGET_SOURCES + ${PM3_ROOT}/client/src/imgutils.c + ${PM3_ROOT}/client/src/cmdhfwaveshare.c + ${TARGET_SOURCES}) + add_definitions("-DHAVE_GD") +endif (NOT SKIPGD EQUAL 1 AND GD_FOUND) + if (WHEREAMI_FOUND) set(ADDITIONAL_DIRS ${WHEREAMI_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) set(ADDITIONAL_LNK ${WHEREAMI_LIBRARIES} ${ADDITIONAL_LNK}) @@ -548,6 +580,18 @@ else (LZ4_FOUND) message(SEND_ERROR "LZ4 library: LZ4 not found") endif (LZ4_FOUND) +if (SKIPGD EQUAL 1) + message(STATUS "GD library: skipped") +elseif (GD_FOUND) + if (EMBED_GD) + message(STATUS "GD library: embedded") + else (EMBED_GD) + message(STATUS "GD library: system library found") + endif (EMBED_GD) +else (SKIPGD EQUAL 1) + message(STATUS "GD library: GD not found, disabled") +endif (SKIPGD EQUAL 1) + if (SKIPJANSSONSYSTEM EQUAL 1) message(STATUS "Jansson library: local library forced") else (SKIPJANSSONSYSTEM EQUAL 1) @@ -722,10 +766,10 @@ endif (NOT SKIPPTHREAD EQUAL 1) if (NOT SKIPPYTHON EQUAL 1) # OSX have a hard time compiling python3 dependency with older cmake. if (PYTHON3EMBED_FOUND OR PYTHON3_FOUND) - if (NOT CMAKE_VERSION VERSION_LESS 3.13) - target_link_directories(pm3rrg_rdv4 PRIVATE ${ADDITIONAL_LNKDIRS}) - elseif (APPLE) - message( SEND_ERROR "Your CMAKE version is too old for Apple platform, please update to a version >=3.13" ) - endif (NOT CMAKE_VERSION VERSION_LESS 3.13) + if (CMAKE_VERSION VERSION_LESS 3.13) + message( SEND_ERROR "Your CMAKE version is too old for Apple platform, please update to a version >=3.13" ) + endif (CMAKE_VERSION VERSION_LESS 3.13) endif (PYTHON3EMBED_FOUND OR PYTHON3_FOUND) endif (NOT SKIPPYTHON EQUAL 1) + +target_link_directories(pm3rrg_rdv4 PRIVATE ${ADDITIONAL_LNKDIRS}) From 760e4ebc9d89edb274cf6578f152a04ae4fb0566 Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sun, 7 Jan 2024 20:32:31 +0100 Subject: [PATCH 1007/1034] Increase precision in color matching --- client/src/imgutils.c | 33 ++++++++++++++++++--------------- tools/pm3_tests.sh | 2 +- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/client/src/imgutils.c b/client/src/imgutils.c index 1ebcddbb6..a58a5b29a 100644 --- a/client/src/imgutils.c +++ b/client/src/imgutils.c @@ -64,6 +64,9 @@ gdImagePtr img_palettize(gdImagePtr rgb, int * palette, int palette_size) { * * Note that we are storing two extra values so we don't have to do boundary checking at * the left and right edges of the image. + * + * To reduce shifts and increase accuracy, each entry is stored with 16x times the error, + * and gets divided by that amount when it is read. */ struct ycbcr_t * forward = calloc(gdImageSX(rgb) + 2, sizeof(struct ycbcr_t)); if (!forward) { @@ -89,9 +92,9 @@ gdImagePtr img_palettize(gdImagePtr rgb, int * palette, int palette_size) { rgb_to_ycbcr(gdImageGetTrueColorPixel(rgb, x, y), &pix); // Add error for current pixel - pix.y += row_err.y; - pix.cb += row_err.cb; - pix.cr += row_err.cr; + pix.y += row_err.y / 16; + pix.cb += row_err.cb / 16; + pix.cr += row_err.cr / 16; // Cap in case it went to imaginary color territory cap_comp(&pix.y); @@ -129,24 +132,24 @@ gdImagePtr img_palettize(gdImagePtr rgb, int * palette, int palette_size) { gdImageSetPixel(res, x, y, best_idx); // Propagate error within the current row, to the pixel to the right - row_err.y = best_err.y * 7 / 16 + forward[x + 2].y; - row_err.cb = best_err.cb * 7 / 16 + forward[x + 2].cb; - row_err.cr = best_err.cr * 7 / 16 + forward[x + 2].cr; + row_err.y = best_err.y * 7 + forward[x + 2].y; + row_err.cb = best_err.cb * 7 + forward[x + 2].cb; + row_err.cr = best_err.cr * 7 + forward[x + 2].cr; // Add error to bottom left - forward[x + 0].y += best_err.y * 3 / 16; - forward[x + 0].cb += best_err.cb * 3 / 16; - forward[x + 0].cr += best_err.cr * 3 / 16; + forward[x + 0].y += best_err.y * 3; + forward[x + 0].cb += best_err.cb * 3; + forward[x + 0].cr += best_err.cr * 3; // Add error to bottom center - forward[x + 1].y += best_err.y * 5 / 16; - forward[x + 1].cb += best_err.cb * 5 / 16; - forward[x + 1].cr += best_err.cr * 5 / 16; + forward[x + 1].y += best_err.y * 5; + forward[x + 1].cb += best_err.cb * 5; + forward[x + 1].cr += best_err.cr * 5; // Set error to bottom right - forward[x + 2].y = best_err.y * 1 / 16; - forward[x + 2].cb = best_err.cb * 1 / 16; - forward[x + 2].cr = best_err.cr * 1 / 16; + forward[x + 2].y = best_err.y * 1; + forward[x + 2].cb = best_err.cb * 1; + forward[x + 2].cr = best_err.cr * 1; } } diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 2e32b39bb..e1d574738 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -535,7 +535,7 @@ while true; do if ! CheckExecute "emv test" "$CLIENTBIN -c 'emv test'" "Test\(s\) \[ ok"; then break; fi if ! CheckExecute "hf cipurse test" "$CLIENTBIN -c 'hf cipurse test'" "Tests \[ ok"; then break; fi if ! CheckExecute "hf mfdes test" "$CLIENTBIN -c 'hf mfdes test'" "Tests \[ ok"; then break; fi - if ! CheckExecute "hf waveshare load" "$CLIENTBIN -c 'hf waveshare load -m 6 -f tools/lena.bmp -s dither.bmp' && echo '9cee7dcc285f59f88c7cbc9de1dc02b4 dither.bmp' | md5sum -c" "dither.bmp: OK"; then break; fi + if ! CheckExecute "hf waveshare load" "$CLIENTBIN -c 'hf waveshare load -m 6 -f tools/lena.bmp -s dither.bmp' && echo '34ff55fe7257876acf30dae00eb0e439 dither.bmp' | md5sum -c" "dither.bmp: OK"; then break; fi fi echo -e "\n------------------------------------------------------------" echo -e "Tests [ ${C_GREEN}OK${C_NC} ] ${C_OK}\n" From 482a6464a259b32adc2bf19f417b3b9c7d3a4eed Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jan 2024 20:47:07 +0100 Subject: [PATCH 1008/1034] style. we use calloc --- client/src/cmdhfmfhard.c | 2 +- client/src/cmdhfntag424.c | 2 +- client/src/loclass/elite_crack.c | 2 +- client/src/uart/ringbuffer.c | 2 +- tools/hitag2crack/crack2/ht2crack2buildtable.c | 2 +- tools/hitag2crack/crack3/ht2crack3.c | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index 713a658e9..f8f894e3c 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -1930,7 +1930,7 @@ static void add_matching_states(statelist_t *cands, uint8_t part_sum_a0, uint8_t const uint32_t worstcase_size = 1 << 20; - cands->states[odd_even] = (uint32_t *)malloc(sizeof(uint32_t) * worstcase_size); + cands->states[odd_even] = (uint32_t *)calloc(sizeof(uint32_t) * worstcase_size, sizeof(uint8_t)); if (cands->states[odd_even] == NULL) { PrintAndLogEx(ERR, "Out of memory error in add_matching_states() - statelist.\n"); exit(4); diff --git a/client/src/cmdhfntag424.c b/client/src/cmdhfntag424.c index 277b2ec18..e1593500b 100644 --- a/client/src/cmdhfntag424.c +++ b/client/src/cmdhfntag424.c @@ -288,7 +288,7 @@ static void ntag424_calc_mac(ntag424_session_keys_t *session_keys, uint8_t comma int mac_input_len = sizeof(mac_input_header) + datalen; - uint8_t *mac_input = (uint8_t *)malloc(mac_input_len); + uint8_t *mac_input = (uint8_t *)calloc(mac_input_len, sizeof(uint8_t)); memcpy(mac_input, mac_input_header, sizeof(mac_input_header)); memcpy(&mac_input[sizeof(mac_input_header)], data, datalen); uint8_t mac[16] = {0}; diff --git a/client/src/loclass/elite_crack.c b/client/src/loclass/elite_crack.c index 5d2be50e6..c5fd2c534 100644 --- a/client/src/loclass/elite_crack.c +++ b/client/src/loclass/elite_crack.c @@ -365,7 +365,7 @@ static void *bf_thread(void *thread_arg) { // success if (memcmp(calculated_MAC, mac, 4) == 0) { - loclass_thread_ret_t *r = (loclass_thread_ret_t *)malloc(sizeof(loclass_thread_ret_t)); + loclass_thread_ret_t *r = (loclass_thread_ret_t *)calloc(sizeof(loclass_thread_ret_t), sizeof(uint8_t)); for (uint8_t i = 0 ; i < numbytes_to_recover; i++) { r->values[i] = keytable[bytes_to_recover[i]] & 0xFF; diff --git a/client/src/uart/ringbuffer.c b/client/src/uart/ringbuffer.c index 345abdf5a..b0ed173e3 100644 --- a/client/src/uart/ringbuffer.c +++ b/client/src/uart/ringbuffer.c @@ -2,7 +2,7 @@ #include <stdlib.h> RingBuffer *RingBuf_create(int capacity) { - RingBuffer *buffer = (RingBuffer *)malloc(sizeof(RingBuffer)); + RingBuffer *buffer = (RingBuffer *)calloc(sizeof(RingBuffer), sizeof(uint8_t)); if (!buffer) { return NULL; } diff --git a/tools/hitag2crack/crack2/ht2crack2buildtable.c b/tools/hitag2crack/crack2/ht2crack2buildtable.c index 15f1cb192..29d8987d0 100644 --- a/tools/hitag2crack/crack2/ht2crack2buildtable.c +++ b/tools/hitag2crack/crack2/ht2crack2buildtable.c @@ -452,7 +452,7 @@ int main(int argc, char *argv[]) { void *status; // make the table of tables - t = (struct table *)malloc(sizeof(struct table) * 65536); + t = (struct table *)calloc(sizeof(struct table) * 65536, sizeof(uint8_t)); if (!t) { printf("malloc failed\n"); exit(1); diff --git a/tools/hitag2crack/crack3/ht2crack3.c b/tools/hitag2crack/crack3/ht2crack3.c index f50ea6af4..3a185f9a4 100644 --- a/tools/hitag2crack/crack3/ht2crack3.c +++ b/tools/hitag2crack/crack3/ht2crack3.c @@ -196,7 +196,7 @@ static void *crack(void *d) { numnrar = data->numnrar; // create space for tables - Tk = (struct Tklower *)malloc(sizeof(struct Tklower) * 0x40000); + Tk = (struct Tklower *)calloc(sizeof(struct Tklower) * 0x40000, sizeof(uint8_t)); if (!Tk) { printf("Failed to allocate memory (Tk)\n"); exit(1); @@ -314,7 +314,7 @@ int main(int argc, char *argv[]) { } // create table of nR aR pairs - TnRaR = (struct nRaR *)malloc(sizeof(struct nRaR) * NUM_NRAR); + TnRaR = (struct nRaR *)calloc(sizeof(struct nRaR) * NUM_NRAR, sizeof(uint8_t)); // open file fp = fopen(argv[2], "r"); From d6a01789e24fd569581af5f605bbf3f7a33dd516 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jan 2024 21:54:00 +0100 Subject: [PATCH 1009/1034] calloc --- client/src/cmdhfwaveshare.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfwaveshare.c b/client/src/cmdhfwaveshare.c index 7dfef808c..c45f19f8a 100644 --- a/client/src/cmdhfwaveshare.c +++ b/client/src/cmdhfwaveshare.c @@ -85,7 +85,7 @@ static uint8_t * map8to1(gdImagePtr img, int color) { // Calculate width rounding up uint16_t width8 = (gdImageSX(img) + 7) / 8; - uint8_t * colormap8 = malloc(width8 * gdImageSY(img)); + uint8_t * colormap8 = calloc(width8 * gdImageSY(img), sizeof(uint8_t)); if (!colormap8) { return NULL; } From 786ddf3de80a2e21b8eb64642d819252123883e1 Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sun, 7 Jan 2024 22:25:47 +0100 Subject: [PATCH 1010/1034] Add image cropping and scaling --- client/src/cmdhfwaveshare.c | 15 +++++---- client/src/imgutils.c | 63 ++++++++++++++++++++++++++++++++----- client/src/imgutils.h | 14 +++++++++ 3 files changed, 76 insertions(+), 16 deletions(-) diff --git a/client/src/cmdhfwaveshare.c b/client/src/cmdhfwaveshare.c index c45f19f8a..d3d5fff78 100644 --- a/client/src/cmdhfwaveshare.c +++ b/client/src/cmdhfwaveshare.c @@ -631,14 +631,13 @@ static int CmdHF14AWSLoad(const char *Cmd) { return PM3_EFILE; } - if ( - gdImageSX(rgb_img) != models[model_nr].width || - gdImageSY(rgb_img) != models[model_nr].height - ) { - PrintAndLogEx(WARNING, "Image size does not match panel size"); + gdImagePtr scaled_img = img_crop_to_fit(rgb_img, models[model_nr].width, models[model_nr].height); + if (scaled_img == NULL) { + PrintAndLogEx(WARNING, "Failed to scale input image"); gdImageDestroy(rgb_img); return PM3_EFILE; } + gdImageDestroy(rgb_img); int pal_len = 2; int pal[3]; @@ -649,8 +648,8 @@ static int CmdHF14AWSLoad(const char *Cmd) { pal[2] = gdTrueColorAlpha(0xFF, 0x00, 0x00, 0); // Red } - gdImagePtr pal_img = img_palettize(rgb_img, pal, pal_len); - gdImageDestroy(rgb_img); + gdImagePtr pal_img = img_palettize(scaled_img, pal, pal_len); + gdImageDestroy(scaled_img); if (!pal_img) { PrintAndLogEx(WARNING, "Could not convert image"); @@ -662,7 +661,7 @@ static int CmdHF14AWSLoad(const char *Cmd) { PrintAndLogEx(INFO, "Save converted image to " _YELLOW_("%s"), outfile); gdImageDestroy(pal_img); return PM3_SUCCESS; - } else { + } else { PrintAndLogEx(WARNING, "Could not save converted image", outfile); gdImageDestroy(pal_img); return PM3_EFILE; diff --git a/client/src/imgutils.c b/client/src/imgutils.c index a58a5b29a..4b396c0ac 100644 --- a/client/src/imgutils.c +++ b/client/src/imgutils.c @@ -33,14 +33,6 @@ static inline void cap_comp(int * x) { } } -/* - * The following function implements a Floyd-Steinberg in YCbCr color space. - * - * Using this colorspace, the Euclidean distance between colors is closer to human perception than - * in sRGB, which results in a more accurate color rendering. - * - * A comparison can be found at https://twitter.com/Socram4x8/status/1733157380097995205/photo/1. - */ gdImagePtr img_palettize(gdImagePtr rgb, int * palette, int palette_size) { assert(rgb != NULL); assert(palette != NULL); @@ -157,3 +149,58 @@ gdImagePtr img_palettize(gdImagePtr rgb, int * palette, int palette_size) { free(pal_ycbcr); return res; } + +gdImagePtr img_crop_to_fit(gdImagePtr orig, int width, int height) { + assert(orig != NULL); + assert(width >= 1); + assert(height >= 1); + + gdImagePtr res; + if (gdImageTrueColor(orig)) { + res = gdImageCreateTrueColor(width, height); + } else { + res = gdImageCreate(width, height); + } + + if (!res) { + return NULL; + } + + if (gdImageSY(orig) * width <= gdImageSX(orig) * height) { + // Image is wider than expected, so we will crop the left and right sides + + int crop_width = gdImageSY(orig) * width / height; + int crop_sx = gdImageSX(orig) / 2 - crop_width / 2; + gdImageCopyResampled( + res, // Dest img + orig, // Src image + 0, // Dest X + 0, // Dest Y + crop_sx, // Src X + 0, // Src Y + width, // Dest width + height, // Dest height + crop_width, // Src width + gdImageSY(orig) // Src height + ); + } else { + // Image is taller than expected, so we will crop the top and bottom sides + + int crop_height = gdImageSX(orig) * height / width; + int crop_sy = gdImageSY(orig) / 2 - crop_height / 2; + gdImageCopyResampled( + res, // Dest img + orig, // Src image + 0, // Dest X + 0, // Dest Y + 0, // Src X + crop_sy, // Src Y + width, // Dest width + height, // Dest height + gdImageSX(orig), // Src width + crop_height // Src height + ); + } + + return res; +} diff --git a/client/src/imgutils.h b/client/src/imgutils.h index 1ffa07833..ff619a5e1 100644 --- a/client/src/imgutils.h +++ b/client/src/imgutils.h @@ -20,6 +20,20 @@ #include <gd.h> +/* + * Converts a true color image to a palette image, using Floyd-Steinberg dithering. + * + * For color matching, this function uses the Euclidean distance between colors in the + * YCbCr color space, which yields to better results than using sRGB directly. + * + * A comparison can be found at https://twitter.com/Socram4x8/status/1733157380097995205/photo/1. + */ gdImagePtr img_palettize(gdImagePtr rgb, int * palette, int palette_size); +/* + * This function scales and crops the image to the given size. + * Think of "background-size: cover" in CSS. + */ +gdImagePtr img_crop_to_fit(gdImagePtr orig, int width, int height); + #endif From 38cf64c19647f6da20a8f8251446bf65d2e1a030 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jan 2024 22:31:00 +0100 Subject: [PATCH 1011/1034] text --- client/src/cmdhf14b.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index a5b0ed00d..784f8bd2a 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -1348,20 +1348,20 @@ static int CmdHF14BWriteSri(const char *Cmd) { // special block at end of memory if (special) { blockno = 0xFF; - PrintAndLogEx(SUCCESS, "[%s] Write special block %02X [ " _YELLOW_("%s")" ]", + PrintAndLogEx(SUCCESS, _YELLOW_("%s") " Write special block %02X - " _YELLOW_("%s"), (use_srix4k) ? "SRIX4K" : "SRI512", blockno, sprint_hex(data, sizeof(data)) ); } else { - PrintAndLogEx(SUCCESS, "[%s] Write block %02X [ " _YELLOW_("%s")" ]", + PrintAndLogEx(SUCCESS, _YELLOW_("%s") " Write block %02X - " _YELLOW_("%s"), (use_srix4k) ? "SRIX4K" : "SRI512", blockno, sprint_hex(data, sizeof(data)) ); } - char str[36]; + char str[36] = {0x00}; memset(str, 0x00, sizeof(str)); snprintf(str, sizeof(str), "--sr -c --data %02x%02x%02x%02x%02x%02x", ISO14443B_WRITE_BLK, blockno, data[0], data[1], data[2], data[3]); return CmdHF14BCmdRaw(str); From 398803d9302ed0a84a310edfe25d45e8e3a95221 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jan 2024 22:34:08 +0100 Subject: [PATCH 1012/1034] adapt size of return messages in 14b --- armsrc/iso14443b.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index 92db20b9e..7bb470e66 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -1575,9 +1575,11 @@ int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void if (msg_len) { // ISO 14443 APDU frame: PCB [CID] [NAD] APDU CRC PCB=0x02 real_cmd[0] = 0x02; // bnr, nad, cid, chn=0; i-block(0x00) + if (send_chaining) { real_cmd[0] |= 0x10; } + // put block number into the PCB real_cmd[0] |= iso14b_pcb_blocknum; memcpy(real_cmd + 1, msg, msg_len); @@ -1912,7 +1914,6 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { } if (x_atqb[0] != 0x50) { -// DbpString("aqtb bad"); return 1; } @@ -1922,8 +1923,6 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { memcpy(card->atqb, x_atqb + 9, 7); } -// DbpString("aqtb ok"); - // send ATTRIB command uint8_t txbuf[18]; @@ -1945,7 +1944,6 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { FpgaDisableTracing(); if (retlen < 3) { -// DbpString("attrib failed"); return 2; } @@ -1954,12 +1952,9 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { } if (x_atqb[0] != 0) { -// DbpString("attrib failed"); return 2; } -// DbpString("attrib ok"); - // apply PASSWORD command txbuf[0] = 2; @@ -1980,7 +1975,6 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { retlen = Get14443bAnswerFromTag(x_atqb, sizeof(x_atqb), iso14b_timeout, &eof_time); if (retlen < 4) { -// DbpString("passwd failed"); return 4; } @@ -1989,12 +1983,9 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { } if (x_atqb[0] != 2 || x_atqb[1] != 0) { -// DbpString("passwd failed"); return 4; } -// DbpString("passwd ok"); - return 0; } @@ -2101,8 +2092,8 @@ void iso14443b_setup(void) { BigBuf_free(); // Initialize Demod and Uart structs - Demod14bInit(BigBuf_malloc(MAX_FRAME_SIZE), MAX_FRAME_SIZE); - Uart14bInit(BigBuf_malloc(MAX_FRAME_SIZE)); + Demod14bInit(BigBuf_calloc(MAX_FRAME_SIZE), MAX_FRAME_SIZE); + Uart14bInit(BigBuf_calloc(MAX_FRAME_SIZE)); // connect Demodulated Signal to ADC: SetAdcMuxFor(GPIO_MUXSEL_HIPKD); @@ -2460,7 +2451,7 @@ void SendRawCommand14443B_Ex(iso14b_raw_cmd_t *p) { if ((p->flags & ISO14B_APDU) == ISO14B_APDU) { uint8_t res = 0; status = iso14443b_apdu(p->raw, p->rawlen, (p->flags & ISO14B_SEND_CHAINING), buf, sizeof(buf), &res); - sendlen = MIN(Demod.len, PM3_CMD_DATA_SIZE); + sendlen = MIN(Demod.len, PM3_CMD_DATA_SIZE_MIX); reply_mix(CMD_HF_ISO14443B_COMMAND, status, res, 0, buf, sendlen); } @@ -2483,7 +2474,7 @@ void SendRawCommand14443B_Ex(iso14b_raw_cmd_t *p) { status = Get14443bAnswerFromTag(buf, sizeof(buf), iso14b_timeout, &eof_time); // raw FpgaDisableTracing(); - sendlen = MIN(Demod.len, PM3_CMD_DATA_SIZE); + sendlen = MIN(Demod.len, PM3_CMD_DATA_SIZE_MIX); reply_mix(CMD_HF_ISO14443B_COMMAND, status, sendlen, 0, Demod.output, sendlen); } } From 442df4aaffc0cdd445f6ba45e4abab1823246bb3 Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Sun, 7 Jan 2024 22:34:40 +0100 Subject: [PATCH 1013/1034] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e41c2e35c..df18b8f79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Fixed `lf pyramid sim` - wrong parameter handling (@iceman1001) - Fixed bootloader - Ignore jitters when pressing the button (@wh201906) - Changed `hf waveshare` - image loading and processing is now done using [GDlib](https://github.com/libgd/libgd) (@socram8888) + - Changed `hf waveshare` - image is automatically scaled and cropped to match panel size (@socram8888) ## [Steamboat Willie.4.17768][2024-01-03] - Changed `mem spiffs dump -t` - now supports downloading direct into trace buffer (@hazardousvoltage) From e82c554dfc6f2f0f880c3e00a1cb1934c72c3e29 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jan 2024 23:07:49 +0100 Subject: [PATCH 1014/1034] text --- client/src/cmdhfepa.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfepa.c b/client/src/cmdhfepa.c index 939fa999f..4c6c67f72 100644 --- a/client/src/cmdhfepa.c +++ b/client/src/cmdhfepa.c @@ -148,7 +148,7 @@ static int CmdHFEPAPACEReplay(const char *Cmd) { // Proxmark response PacketResponseNG resp; - // transfer the APDUs to the Proxmark + // transfer the APDUs to the Proxmark3 uint8_t data[PM3_CMD_DATA_SIZE]; // fast push mode g_conn.block_after_ACK = true; From 5733f48d2a04112902e460bd0caa464c6cc3171b Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives <marcos@orca.pet> Date: Mon, 8 Jan 2024 18:14:02 +0100 Subject: [PATCH 1015/1034] Fix incorrect Waveshare command --- client/src/cmdhfwaveshare.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfwaveshare.c b/client/src/cmdhfwaveshare.c index d3d5fff78..cc220b55d 100644 --- a/client/src/cmdhfwaveshare.c +++ b/client/src/cmdhfwaveshare.c @@ -231,7 +231,7 @@ static int start_drawing(uint8_t model_nr, uint8_t *black, uint8_t *red) { uint8_t step4[2] = {0xcd, 0x03}; // e-paper power on uint8_t step5[2] = {0xcd, 0x05}; // e-paper config2 uint8_t step6[2] = {0xcd, 0x06}; // EDP load to main - uint8_t step7[2] = {0xcd, 0x07}; // Data preparation + uint8_t step7[3] = {0xcd, 0x07, 0}; // Data preparation uint8_t step8[123] = {0xcd, 0x08, 0x64}; // Data start command // 2.13inch(0x10:Send 16 data at a time) @@ -385,7 +385,7 @@ static int start_drawing(uint8_t model_nr, uint8_t *black, uint8_t *red) { } msleep(100); PrintAndLogEx(DEBUG, "Step7: Data preparation"); - ret = transceive_blocking(step7, 2, rx, 20, actrxlen, true); // cd 07 + ret = transceive_blocking(step7, 3, rx, 20, actrxlen, true); // cd 07 if (ret != PM3_SUCCESS) { return ret; } From 82aa6ac08c35e14fbab755dfb1eccc2a8b351610 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 8 Jan 2024 21:17:42 +0100 Subject: [PATCH 1016/1034] gave 14b commands some serious love and overhaul. package handling for APDU and different selects is improved. return codes now consequent --- armsrc/appmain.c | 2 +- armsrc/epa.c | 2 +- armsrc/iso14443b.c | 267 +++++++++++----------- armsrc/iso14443b.h | 4 +- client/luascripts/hf_14b_calypso.lua | 15 +- client/luascripts/hf_14b_mobib.lua | 3 +- client/src/cmdhf14b.c | 317 +++++++++++++-------------- client/src/cmdhfcryptorf.c | 46 ++-- client/src/cmdhfxerox.c | 23 +- include/iso14b.h | 5 + include/pm3_cmd.h | 3 + 11 files changed, 350 insertions(+), 337 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 1256afc9d..520b445d6 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -1429,7 +1429,7 @@ static void PacketReceived(PacketCommandNG *packet) { uint8_t blockno; } PACKED; struct p *payload = (struct p *) packet->data.asBytes; - ReadSTBlock(payload->blockno); + read_14b_st_block(payload->blockno); break; } case CMD_HF_ISO14443B_SNIFF: { diff --git a/armsrc/epa.c b/armsrc/epa.c index 4e4113d45..8406f6168 100644 --- a/armsrc/epa.c +++ b/armsrc/epa.c @@ -155,7 +155,7 @@ static int EPA_APDU(uint8_t *apdu, size_t length, uint8_t *response, uint16_t re #endif case 'b': #ifdef WITH_ISO14443b - return iso14443b_apdu(apdu, length, false, response, respmaxlen, NULL); + return iso14443b_apdu(apdu, length, false, response, respmaxlen, NULL, NULL); #else (void) apdu; (void) length; diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index 7bb470e66..332fc1da7 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -183,6 +183,10 @@ # define ISO14B_TR2 HF14_ETU_TO_SSP(14) #endif +#ifndef ISO14B_BLOCK_SIZE +# define ISO14B_BLOCK_SIZE 4 +#endif + // 4sample #define SEND4STUFFBIT(x) tosend_stuffbit(x);tosend_stuffbit(x);tosend_stuffbit(x);tosend_stuffbit(x); @@ -472,7 +476,9 @@ static void iso14b_set_maxframesize(uint16_t size) { } Uart.byteCntMax = size; - if (g_dbglevel >= DBG_DEBUG) Dbprintf("ISO14443B Max frame size set to %d bytes", Uart.byteCntMax); + if (g_dbglevel >= DBG_DEBUG) { + Dbprintf("ISO14443B Max frame size set to %d bytes", Uart.byteCntMax); + } } //----------------------------------------------------------------------------- @@ -662,7 +668,7 @@ static RAMFUNC int Handle14443bSampleFromReader(uint8_t bit) { // Assume that we're called with the SSC (to the FPGA) and ADC path set // correctly. //----------------------------------------------------------------------------- -static int GetIso14443bCommandFromReader(uint8_t *received, uint16_t *len) { +static bool GetIso14443bCommandFromReader(uint8_t *received, uint16_t *len) { // Set FPGA mode to "simulated ISO 14443B tag", no modulation (listen // only, since we are receiving, not transmitting). // Signal field is off with the appropriate LED @@ -764,7 +770,7 @@ void SimulateIso14443bTag(const uint8_t *pupi) { tosend_t *ts = get_tosend(); - uint8_t *receivedCmd = BigBuf_malloc(MAX_FRAME_SIZE); + uint8_t *receivedCmd = BigBuf_calloc(MAX_FRAME_SIZE); // prepare "ATQB" tag answer (encoded): CodeIso14443bAsTag(respATQB, sizeof(respATQB)); @@ -797,10 +803,13 @@ void SimulateIso14443bTag(const uint8_t *pupi) { LED_A_ON(); } } - if (cardSTATE == SIM_NOFIELD) continue; + + if (cardSTATE == SIM_NOFIELD) { + continue; + } // Get reader command - if (!GetIso14443bCommandFromReader(receivedCmd, &len)) { + if (GetIso14443bCommandFromReader(receivedCmd, &len) == false) { Dbprintf("button pressed, received %d commands", cmdsReceived); break; } @@ -810,9 +819,11 @@ void SimulateIso14443bTag(const uint8_t *pupi) { // WUP in HALTED state if (len == 5) { if ((receivedCmd[0] == ISO14443B_REQB && (receivedCmd[2] & 0x8) == 0x8 && cardSTATE == SIM_HALTED) || - receivedCmd[0] == ISO14443B_REQB) { + receivedCmd[0] == ISO14443B_REQB) { + LogTrace(receivedCmd, len, 0, 0, NULL, true); cardSTATE = SIM_SELECTING; + } } @@ -861,13 +872,14 @@ void SimulateIso14443bTag(const uint8_t *pupi) { // - SLOT MARKER // - ISO7816 // - emulate with a memory dump - if (g_dbglevel >= DBG_DEBUG) + if (g_dbglevel >= DBG_DEBUG) { Dbprintf("new cmd from reader: len=%d, cmdsRecvd=%d", len, cmdsReceived); + } - // CRC Check - if (len >= 3) { // if crc exists + // CRC Check, if long enough + if (len >= 3) { - if (!check_crc(CRC_14443_B, receivedCmd, len)) { + if (check_crc(CRC_14443_B, receivedCmd, len) == false) { if (g_dbglevel >= DBG_DEBUG) { DbpString("CRC fail"); } @@ -1000,7 +1012,7 @@ void Simulate_iso14443b_srx_tag(uint8_t *uid) { if (cardSTATE == SIM_NOFIELD) continue; // Get reader command - if (!GetIso14443bCommandFromReader(receivedCmd, &len)) { + if (GetIso14443bCommandFromReader(receivedCmd, &len) == false) { Dbprintf("button pressed, received %d commands", cmdsReceived); break; } @@ -1067,7 +1079,7 @@ void Simulate_iso14443b_srx_tag(uint8_t *uid) { // CRC Check if (len >= 3) { // if crc exists - if (!check_crc(CRC_14443_B, receivedCmd, len)) { + if (check_crc(CRC_14443_B, receivedCmd, len) == false) { if (g_dbglevel >= DBG_DEBUG) { DbpString("CRC fail"); } @@ -1314,7 +1326,7 @@ static int Get14443bAnswerFromTag(uint8_t *response, uint16_t max_len, uint32_t if (FpgaSetupSscDma((uint8_t *) dma->buf, DMA_BUFFER_SIZE) == false) { if (g_dbglevel > DBG_ERROR) Dbprintf("FpgaSetupSscDma failed. Exiting"); - return -1; + return PM3_EMALLOC; } uint32_t dma_start_time = 0; @@ -1328,8 +1340,9 @@ static int Get14443bAnswerFromTag(uint8_t *response, uint16_t max_len, uint32_t for (;;) { volatile uint16_t behindBy = ((uint16_t *)AT91C_BASE_PDC_SSC->PDC_RPR - upTo) & (DMA_BUFFER_SIZE - 1); - if (behindBy == 0) + if (behindBy == 0) { continue; + } samples++; @@ -1375,13 +1388,13 @@ static int Get14443bAnswerFromTag(uint8_t *response, uint16_t max_len, uint32_t *eof_time = GetCountSspClkDelta(dma_start_time) - DELAY_TAG_TO_ARM; // end of EOF if (Demod.len > Demod.max_len) { - ret = -2; // overflow + ret = PM3_EOVFLOW; // overflow } break; } if (((GetCountSspClkDelta(dma_start_time)) > timeout) && Demod.state < DEMOD_PHASE_REF_TRAINING) { - ret = -1; + ret = PM3_ETIMEOUT; break; } } @@ -1399,8 +1412,6 @@ static int Get14443bAnswerFromTag(uint8_t *response, uint16_t max_len, uint32_t + (10)); // time for EOF transfer LogTrace(Demod.output, Demod.len, sof_time, *eof_time, NULL, false); } - - return Demod.len; } @@ -1568,7 +1579,7 @@ static void CodeAndTransmit14443bAsReader(const uint8_t *cmd, int len, uint32_t /* Sends an APDU to the tag * TODO: check CRC and preamble */ -int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void *rxdata, uint16_t rxmaxlen, uint8_t *res) { +int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void *rxdata, uint16_t rxmaxlen, uint8_t *res, int *reponselen) { uint8_t real_cmd[msg_len + 4]; @@ -1598,10 +1609,9 @@ int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; -// Activation frame waiting time -// 65536/fc == 4833 µS -// SSP_CLK = 4833 µS * 3.39 = 16384 - + // Activation frame waiting time + // 65536/fc == 4833 µS + // SSP_CLK = 4833 µS * 3.39 = 16384 int len = Get14443bAnswerFromTag(rxdata, rxmaxlen, iso14b_timeout, &eof_time); FpgaDisableTracing(); @@ -1609,7 +1619,8 @@ int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void uint8_t *data_bytes = (uint8_t *) rxdata; if (len <= 0) { - return 0; //DATA LINK ERROR + // DATA LINK ERROR + return PM3_ECARDEXCHANGE; } else { // S-Block WTX while (len && ((data_bytes[0] & 0xF2) == 0xF2)) { @@ -1648,20 +1659,23 @@ int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void // if we received an I- or R(ACK)-Block with a block number equal to the // current block number, toggle the current block number - if (len >= 3 // PCB + CRC = 3 bytes - && ((data_bytes[0] & 0xC0) == 0 // I-Block - || (data_bytes[0] & 0xD0) == 0x80) // R-Block with ACK bit set to 0 - && (data_bytes[0] & 0x01) == iso14b_pcb_blocknum) { // equal block numbers + + if ((len >= 3) && // PCB + CRC = 3 bytes + (((data_bytes[0] & 0xC0) == 0) || (data_bytes[0] & 0xD0) == 0x80) && // I-Block OR R-Block with ACK bit set to 0 + ((data_bytes[0] & 0x01) == iso14b_pcb_blocknum)) { // equal block numbers + iso14b_pcb_blocknum ^= 1; + } // if we received I-block with chaining we need to send ACK and receive another block of data - if (res) + if (res) { *res = data_bytes[0]; + } // crc check - if (len >= 3 && !check_crc(CRC_14443_B, data_bytes, len)) { - return -1; + if (len >= 3 && (check_crc(CRC_14443_B, data_bytes, len) == false)) { + return PM3_ECRC; } } @@ -1674,7 +1688,10 @@ int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void } } - return len; + if (reponselen) { + *reponselen = len; + } + return PM3_SUCCESS; } /** @@ -1686,10 +1703,11 @@ static int iso14443b_select_cts_card(iso14b_cts_card_select_t *card) { uint8_t cmdMSBUID[] = {ASK_SELECT, 0xFF, 0xFF, 0x00, 0x00}; uint8_t cmdLSBUID[] = {0xC4, 0x00, 0x00}; +// iceman: todo static crc AddCrc14B(cmdMSBUID, 3); AddCrc14B(cmdLSBUID, 1); - uint8_t r[8]; + uint8_t r[8] = { 0x00 }; uint32_t start_time = 0; uint32_t eof_time = 0; @@ -1700,10 +1718,10 @@ static int iso14443b_select_cts_card(iso14b_cts_card_select_t *card) { FpgaDisableTracing(); if (retlen != 4) { - return -1; + return PM3_ELENGTH; } if (check_crc(CRC_14443_B, r, retlen) == false) { - return -2; + return PM3_ECRC; } if (card) { @@ -1720,10 +1738,10 @@ static int iso14443b_select_cts_card(iso14b_cts_card_select_t *card) { FpgaDisableTracing(); if (retlen != 4) { - return -1; + return PM3_ELENGTH; } if (check_crc(CRC_14443_B, r, retlen) == false) { - return -2; + return PM3_ECRC; } if (card) { @@ -1738,17 +1756,17 @@ static int iso14443b_select_cts_card(iso14b_cts_card_select_t *card) { FpgaDisableTracing(); if (retlen != 4) { - return -1; + return PM3_ELENGTH; } if (check_crc(CRC_14443_B, r, retlen) == false) { - return -2; + return PM3_ECRC; } if (card) { memcpy(card->uid + 2, r, 2); } - return 0; + return PM3_SUCCESS; } /** * SRx Initialise. @@ -1756,9 +1774,9 @@ static int iso14443b_select_cts_card(iso14b_cts_card_select_t *card) { static int iso14443b_select_srx_card(iso14b_card_select_t *card) { // INITIATE command: wake up the tag using the INITIATE static const uint8_t init_srx[] = { ISO14443B_INITIATE, 0x00, 0x97, 0x5b }; - uint8_t r_init[3] = {0x0}; - uint8_t r_select[3] = {0x0}; - uint8_t r_papid[10] = {0x0}; + uint8_t r_init[3] = { 0x00 }; + uint8_t r_select[3] = { 0x00 }; + uint8_t r_papid[10] = { 0x00 }; uint32_t start_time = 0; uint32_t eof_time = 0; @@ -1769,7 +1787,7 @@ static int iso14443b_select_srx_card(iso14b_card_select_t *card) { FpgaDisableTracing(); if (retlen <= 0) { - return -1; + return PM3_ECARDEXCHANGE; } // Randomly generated Chip ID @@ -1791,42 +1809,43 @@ static int iso14443b_select_srx_card(iso14b_card_select_t *card) { FpgaDisableTracing(); if (retlen != 3) { - return -1; + return PM3_ELENGTH; } if (check_crc(CRC_14443_B, r_select, retlen) == false) { - return -2; + return PM3_ECRC; } // Check response from the tag: should be the same UID as the command we just sent: if (select_srx[1] != r_select[0]) { - return -3; + return PM3_EWRONGANSWER; } // First get the tag's UID: select_srx[0] = ISO14443B_GET_UID; - - AddCrc14B(select_srx, 1); + select_srx[1] = 0xAB; + select_srx[2] = 0x4E; start_time = eof_time + ISO14B_TR2; CodeAndTransmit14443bAsReader(select_srx, 3, &start_time, &eof_time, true); // Only first three bytes for this one eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; retlen = Get14443bAnswerFromTag(r_papid, sizeof(r_papid), iso14b_timeout, &eof_time); + FpgaDisableTracing(); if (retlen != 10) { - return -1; + return PM3_ELENGTH; } - if (!check_crc(CRC_14443_B, r_papid, retlen)) { - return -2; + + if (check_crc(CRC_14443_B, r_papid, retlen) == false) { + return PM3_ECRC; } if (card) { card->uidlen = 8; memcpy(card->uid, r_papid, 8); } - - return 0; + return PM3_SUCCESS; } // Xerox tag connect function: wup, anticoll, attrib, password @@ -1837,9 +1856,8 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { // AFI static const uint8_t x_wup1[] = { 0x0D, 0x37, 0x21, 0x92, 0xf2 }; static const uint8_t x_wup2[] = { 0x5D, 0x37, 0x21, 0x71, 0x71 }; - uint8_t slot_mark[1]; - - uint8_t x_atqb[24] = {0x0}; // ATQB len = 18 + uint8_t slot_mark[1] = { 0x00 }; + uint8_t x_atqb[24] = { 0x00 }; // ATQB len = 18 uint32_t start_time = 0; uint32_t eof_time = 0; @@ -1870,7 +1888,7 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { Dbprintf("unexpected data %d", retlen); Dbprintf("crc %s", check_crc(CRC_14443_B, x_atqb, retlen) ? "OK" : "BAD"); - return 1; + return PM3_ECARDEXCHANGE; } // tx unframed slot-marker @@ -1893,7 +1911,7 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { if (g_dbglevel >= DBG_DEBUG) { DbpString("no answer to anticollision"); } - return 1; + return PM3_ESOFT; } } @@ -1905,16 +1923,16 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { // ATQB too short? if (retlen < 18) { - return 1; + return PM3_ELENGTH; } // VALIDATE CRC if (check_crc(CRC_14443_B, x_atqb, 18) == false) { // use fixed len because unstable EOF catch - return 3; + return PM3_ECRC; } if (x_atqb[0] != 0x50) { - return 1; + return PM3_EWRONGANSWER; } if (card) { @@ -1944,15 +1962,15 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { FpgaDisableTracing(); if (retlen < 3) { - return 2; + return PM3_ELENGTH; } if (check_crc(CRC_14443_B, x_atqb, 3) == false) { - return 3; + return PM3_ECRC; } if (x_atqb[0] != 0) { - return 2; + return PM3_EWRONGANSWER; } // apply PASSWORD command @@ -1975,18 +1993,18 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { retlen = Get14443bAnswerFromTag(x_atqb, sizeof(x_atqb), iso14b_timeout, &eof_time); if (retlen < 4) { - return 4; + return PM3_ELENGTH; } if (check_crc(CRC_14443_B, x_atqb, 4) == false) { - return 3; + return PM3_ECRC; } if (x_atqb[0] != 2 || x_atqb[1] != 0) { - return 4; + return PM3_EWRONGANSWER; } - return 0; + return PM3_SUCCESS; } /* Perform the ISO 14443 B Card Selection procedure @@ -2003,10 +2021,9 @@ int iso14443b_select_card(iso14b_card_select_t *card) { static const uint8_t wupb[] = { ISO14443B_REQB, 0x00, 0x00, 0x71, 0xff }; // ATTRIB command (with space for CRC) - uint8_t attrib[] = { ISO14443B_ATTRIB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; - - uint8_t r_pupid[14] = {0x0}; - uint8_t r_attrib[3] = {0x0}; + uint8_t attrib[11] = { ISO14443B_ATTRIB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; + uint8_t r_pupid[14] = { 0x00 }; + uint8_t r_attrib[3] = { 0x00 }; // first, wake up the tag uint32_t start_time = 0; @@ -2019,12 +2036,12 @@ int iso14443b_select_card(iso14b_card_select_t *card) { // ATQB too short? if (retlen < 14) { - return -1; + return PM3_ELENGTH; } // VALIDATE CRC if (check_crc(CRC_14443_B, r_pupid, retlen) == false) { - return -2; + return PM3_ECRC; } if (card) { @@ -2048,12 +2065,12 @@ int iso14443b_select_card(iso14b_card_select_t *card) { // Answer to ATTRIB too short? if (retlen < 3) { - return -1; + return PM3_ELENGTH; } // VALIDATE CRC if (check_crc(CRC_14443_B, r_attrib, retlen) == false) { - return -2; + return PM3_ECRC; } if (card) { @@ -2079,7 +2096,7 @@ int iso14443b_select_card(iso14b_card_select_t *card) { } // reset PCB block number iso14b_pcb_blocknum = 0; - return 0; + return PM3_SUCCESS; } // Set up ISO 14443 Type B communication (similar to iso14443a_setup) @@ -2128,8 +2145,9 @@ void iso14443b_setup(void) { // // I tried to be systematic and check every answer of the tag, every CRC, etc... //----------------------------------------------------------------------------- -static int read_srx_block(uint8_t blocknr, uint8_t *block) { +static int read_14b_srx_block(uint8_t blocknr, uint8_t *block) { +// iceman: todo add static CRC uint8_t cmd[] = {ISO14443B_READ_BLK, blocknr, 0x00, 0x00}; AddCrc14B(cmd, 2); @@ -2155,7 +2173,7 @@ static int read_srx_block(uint8_t blocknr, uint8_t *block) { } if (block) { - memcpy(block, r_block, 4); + memcpy(block, r_block, ISO14B_BLOCK_SIZE); } if (g_dbglevel >= DBG_DEBUG) { @@ -2169,25 +2187,25 @@ static int read_srx_block(uint8_t blocknr, uint8_t *block) { return PM3_SUCCESS; } -void ReadSTBlock(uint8_t blocknr) { +void read_14b_st_block(uint8_t blocknr) { iso14443b_setup(); - iso14b_card_select_t card; - int res = iso14443b_select_srx_card(&card); + + uint8_t *data = BigBuf_calloc(ISO14B_BLOCK_SIZE); + iso14b_card_select_t *card = (iso14b_card_select_t *) BigBuf_calloc(sizeof(iso14b_card_select_t)); + + int res = iso14443b_select_srx_card(card); // 0: OK -1 wrong len, -2: attrib fail, -3:crc fail, switch (res) { - case -1: - case -3: { - reply_ng(CMD_HF_SRI_READ, PM3_EWRONGANSWER, NULL, 0); - goto out; - } - case -2: { - reply_ng(CMD_HF_SRI_READ, PM3_ECRC, NULL, 0); + case PM3_ELENGTH: + case PM3_EWRONGANSWER: + case PM3_ECRC: { + reply_ng(CMD_HF_SRI_READ, res, NULL, 0); goto out; } } - uint8_t *data = BigBuf_malloc(4); - res = read_srx_block(blocknr, data); - reply_ng(CMD_HF_SRI_READ, res, data, 4); + + res = read_14b_srx_block(blocknr, data); + reply_ng(CMD_HF_SRI_READ, res, data, ISO14B_BLOCK_SIZE); out: BigBuf_free(); @@ -2392,9 +2410,6 @@ static void iso14b_set_trigger(bool enable) { void SendRawCommand14443B_Ex(iso14b_raw_cmd_t *p) { - // receive buffer - uint8_t buf[PM3_CMD_DATA_SIZE] = {0x00}; - // turn on trigger (LED_A) if ((p->flags & ISO14B_REQUEST_TRIGGER) == ISO14B_REQUEST_TRIGGER) { iso14b_set_trigger(true); @@ -2414,68 +2429,76 @@ void SendRawCommand14443B_Ex(iso14b_raw_cmd_t *p) { } set_tracing(true); + // receive buffer + uint8_t buf[PM3_CMD_DATA_SIZE] = {0x00}; + int status = 0; uint32_t sendlen = sizeof(iso14b_card_select_t); iso14b_card_select_t *card = (iso14b_card_select_t *)buf; if ((p->flags & ISO14B_SELECT_STD) == ISO14B_SELECT_STD) { status = iso14443b_select_card(card); - reply_mix(CMD_HF_ISO14443B_COMMAND, status, sendlen, 0, (uint8_t *)&card, sendlen); - // 0: OK -1: attrib fail, -2:crc fail, - if (status != 0) goto out; + reply_ng(CMD_HF_ISO14443B_COMMAND, status, (uint8_t *)card, sendlen); + if (status != PM3_SUCCESS) goto out; } if ((p->flags & ISO14B_SELECT_SR) == ISO14B_SELECT_SR) { + memset(card, 0, sizeof(iso14b_card_select_t)); status = iso14443b_select_srx_card(card); - reply_mix(CMD_HF_ISO14443B_COMMAND, status, sendlen, 0, (uint8_t *)&card, sendlen); - // 0: OK 2: demod fail, 3:crc fail, - if (status > 0) goto out; + reply_ng(CMD_HF_ISO14443B_COMMAND, status, (uint8_t *)card, sendlen); + if (status != PM3_SUCCESS) goto out; } if ((p->flags & ISO14B_SELECT_XRX) == ISO14B_SELECT_XRX) { + memset(card, 0, sizeof(iso14b_card_select_t)); status = iso14443b_select_xrx_card(card); - reply_mix(CMD_HF_ISO14443B_COMMAND, status, sendlen, 0, (uint8_t *)&card, sendlen); + reply_ng(CMD_HF_ISO14443B_COMMAND, status, (uint8_t *)card, sendlen); // 0: OK, 1: select fail, 2: attrib fail, 3: crc fail, 4: password fail - if (status != 0) goto out; + if (status != PM3_SUCCESS) goto out; } if ((p->flags & ISO14B_SELECT_CTS) == ISO14B_SELECT_CTS) { iso14b_cts_card_select_t *cts = (iso14b_cts_card_select_t *)buf; + memset(cts, 0, sizeof(iso14b_cts_card_select_t)); sendlen = sizeof(iso14b_cts_card_select_t); status = iso14443b_select_cts_card(cts); - reply_mix(CMD_HF_ISO14443B_COMMAND, status, sendlen, 0, (uint8_t *)&cts, sendlen); - // 0: OK 2: demod fail, 3:crc fail, - if (status > 0) goto out; + reply_ng(CMD_HF_ISO14443B_COMMAND, status, (uint8_t *)cts, sendlen); + if (status > PM3_SUCCESS) goto out; } if ((p->flags & ISO14B_APDU) == ISO14B_APDU) { - uint8_t res = 0; - status = iso14443b_apdu(p->raw, p->rawlen, (p->flags & ISO14B_SEND_CHAINING), buf, sizeof(buf), &res); - sendlen = MIN(Demod.len, PM3_CMD_DATA_SIZE_MIX); - reply_mix(CMD_HF_ISO14443B_COMMAND, status, res, 0, buf, sendlen); + + iso14b_raw_apdu_response_t packet = { + .response_byte = 0, + .datalen = 0, + }; + + int responselen = 0; + status = iso14443b_apdu(p->raw, p->rawlen, (p->flags & ISO14B_SEND_CHAINING), buf, sizeof(buf), &packet.response_byte, &responselen); + packet.datalen = MIN(responselen, PM3_CMD_DATA_SIZE); + memcpy(packet.data, buf, packet.datalen); + reply_ng(CMD_HF_ISO14443B_COMMAND, status, (uint8_t*)&packet, sizeof(iso14b_raw_apdu_response_t) + packet.datalen); } if ((p->flags & ISO14B_RAW) == ISO14B_RAW) { - if ((p->flags & ISO14B_APPEND_CRC) == ISO14B_APPEND_CRC) { - if (p->rawlen > 0) { - AddCrc14B(p->raw, p->rawlen); - p->rawlen += 2; - } + if ( + ((p->flags & ISO14B_APPEND_CRC) == ISO14B_APPEND_CRC) && (p->rawlen)) { + AddCrc14B(p->raw, p->rawlen); + p->rawlen += 2; } + uint32_t start_time = 0; uint32_t eof_time = 0; CodeAndTransmit14443bAsReader(p->raw, p->rawlen, &start_time, &eof_time, true); + FpgaDisableTracing(); if (tearoff_hook() == PM3_ETEAROFF) { // tearoff occurred - FpgaDisableTracing(); - reply_mix(CMD_HF_ISO14443B_COMMAND, -2, 0, 0, NULL, 0); + reply_ng(CMD_HF_ISO14443B_COMMAND, PM3_ETEAROFF, NULL, 0); } else { eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; status = Get14443bAnswerFromTag(buf, sizeof(buf), iso14b_timeout, &eof_time); // raw - FpgaDisableTracing(); - - sendlen = MIN(Demod.len, PM3_CMD_DATA_SIZE_MIX); - reply_mix(CMD_HF_ISO14443B_COMMAND, status, sendlen, 0, Demod.output, sendlen); + sendlen = MIN(Demod.len, PM3_CMD_DATA_SIZE); + reply_ng(CMD_HF_ISO14443B_COMMAND, status, Demod.output, sendlen); } } diff --git a/armsrc/iso14443b.h b/armsrc/iso14443b.h index 9d5c1d374..14da377d3 100644 --- a/armsrc/iso14443b.h +++ b/armsrc/iso14443b.h @@ -35,13 +35,13 @@ #endif void iso14443b_setup(void); -int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void *rxdata, uint16_t rxmaxlen, uint8_t *res); +int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void *rxdata, uint16_t rxmaxlen, uint8_t *res, int * responselen); int iso14443b_select_card(iso14b_card_select_t *card); void SimulateIso14443bTag(const uint8_t *pupi); void AcquireRawAdcSamplesIso14443b(uint32_t parameter); -void ReadSTBlock(uint8_t blocknr); +void read_14b_st_block(uint8_t blocknr); void SniffIso14443b(void); void SendRawCommand14443B(uint32_t, uint32_t, uint8_t, uint8_t[]); void SendRawCommand14443B_Ex(iso14b_raw_cmd_t *p); diff --git a/client/luascripts/hf_14b_calypso.lua b/client/luascripts/hf_14b_calypso.lua index 61aa92dde..e9cc8c8f5 100644 --- a/client/luascripts/hf_14b_calypso.lua +++ b/client/luascripts/hf_14b_calypso.lua @@ -29,6 +29,9 @@ Check there for details about data format and how commands are interpreted on th device-side. ]] +local PM3_SUCCESS = 0 + +-- iceman, todo: return payload from ISO14b APDU is a struct now. iso14b_raw_apdu_response_t local function calypso_parse(result) if result.Oldarg0 >= 0 then local len = result.Oldarg0 * 2 @@ -112,9 +115,7 @@ end local function calypso_send_cmd_raw(data, ignoreresponse ) local flags = lib14b.ISO14B_COMMAND.ISO14B_APDU --- flags = lib14b.ISO14B_COMMAND.ISO14B_RAW + --- lib14b.ISO14B_COMMAND.ISO14B_APPEND_CRC - local flags = lib14b.ISO14B_COMMAND.ISO14B_APDU + data = data or "" -- LEN of data, half the length of the ASCII-string hex string -- 2 bytes flags @@ -129,7 +130,7 @@ local function calypso_send_cmd_raw(data, ignoreresponse ) local c = Command:newNG{cmd = cmds.CMD_HF_ISO14443B_COMMAND, data = senddata} local result, err = c:sendNG(ignoreresponse, 2000) if result then - if result.Oldarg0 >= 0 then + if result.status == PM3_SUCCESS then return calypso_parse(result) else err = 'card response failed' @@ -144,7 +145,7 @@ end -- writes it in the tree in decimal format. local function calypso_card_num(card) if not card then return end - local card_num = tonumber( card.uid:sub(1,8),16 ) + local card_num = tonumber( card.uid:sub(1, 8), 16) print('') print('Card UID ' ..ansicolors.green..card.uid:format('%x')..ansicolors.reset) print('Card Number ' ..ansicolors.green..string.format('%u', card_num)..ansicolors.reset) @@ -156,7 +157,7 @@ local function calypso_apdu_status(apdu) -- last two is CRC -- next two is APDU status bytes. local mess = 'FAIL' - local sw = apdu:sub( #apdu-7, #apdu-4) + local sw = apdu:sub( #apdu - 7 , #apdu - 4) desc, err = iso7816.tostring(sw) --print ('SW', sw, desc, err ) local status = ( sw == '9000' ) @@ -250,7 +251,7 @@ function main(args) for i, apdu in spairs(_calypso_cmds) do print('>> '..ansicolors.yellow..i..ansicolors.reset) apdu = apdu:gsub('%s+', '') - data, err = calypso_send_cmd_raw(apdu , false) + data, err = calypso_send_cmd_raw(apdu, false) if err then print('<< '..err) else diff --git a/client/luascripts/hf_14b_mobib.lua b/client/luascripts/hf_14b_mobib.lua index 85cd832a8..e267e7412 100644 --- a/client/luascripts/hf_14b_mobib.lua +++ b/client/luascripts/hf_14b_mobib.lua @@ -30,6 +30,7 @@ Check there for details about data format and how commands are interpreted on th device-side. ]] +-- iceman, todo: return payload from ISO14b APDU is a struct now. iso14b_raw_apdu_response_t local function mobib_parse(result) if result.Oldarg0 >= 0 then local len = result.Oldarg0 * 2 @@ -126,7 +127,7 @@ local function mobib_send_cmd_raw(data, ignoreresponse ) local result, err = c:sendNG(ignoreresponse, 2000) if result then - if result.Oldarg0 >= 0 then + if result.status == PM3_SUCCESS then return mobib_parse(result) else err = 'card response failed' diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 784f8bd2a..67c1c04a0 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -86,8 +86,10 @@ static void hf14b_aid_search(bool verbose) { json_t *data = AIDSearchGetElm(root, elmindx); uint8_t vaid[200] = {0}; int vaidlen = 0; - if (!AIDGetFromElm(data, vaid, sizeof(vaid), &vaidlen) || !vaidlen) + + if ((AIDGetFromElm(data, vaid, sizeof(vaid), &vaidlen) == false) || (vaidlen == 0 )) { continue; + } // COMPUTE APDU @@ -96,7 +98,7 @@ static void hf14b_aid_search(bool verbose) { sAPDU_t apdu = (sAPDU_t) {0x00, 0xa4, 0x04, 0x00, vaidlen, vaid}; if (APDUEncodeS(&apdu, false, 0x00, apdu_data, &apdu_len)) { - PrintAndLogEx(ERR, "APDU encoding error."); + PrintAndLogEx(ERR, "APDU encoding error"); return; } @@ -106,8 +108,9 @@ static void hf14b_aid_search(bool verbose) { uint8_t result[1024] = {0}; int res = exchange_14b_apdu(apdu_data, apdu_len, activate_field, leave_signal_on, result, sizeof(result), &resultlen, -1); activate_field = false; - if (res) + if (res) { continue; + } uint16_t sw = get_sw(result, resultlen); @@ -128,9 +131,13 @@ static void hf14b_aid_search(bool verbose) { if (sw == ISO7816_OK || sw == ISO7816_INVALID_DF || sw == ISO7816_FILE_TERMINATED) { if (sw == ISO7816_OK) { - if (verbose) PrintAndLogEx(SUCCESS, "Application ( " _GREEN_("ok") " )"); + if (verbose) { + PrintAndLogEx(SUCCESS, "Application ( " _GREEN_("ok") " )"); + } } else { - if (verbose) PrintAndLogEx(WARNING, "Application ( " _RED_("blocked") " )"); + if (verbose) { + PrintAndLogEx(WARNING, "Application ( " _RED_("blocked") " )"); + } } PrintAIDDescriptionBuf(root, vaid, vaidlen, verbose); @@ -138,7 +145,9 @@ static void hf14b_aid_search(bool verbose) { if (dfnamelen) { if (dfnamelen == vaidlen) { if (memcmp(dfname, vaid, vaidlen) == 0) { - if (verbose) PrintAndLogEx(INFO, "(DF) Name found and equal to AID"); + if (verbose) { + PrintAndLogEx(INFO, "(DF) Name found and equal to AID"); + } } else { PrintAndLogEx(INFO, "(DF) Name not equal to AID: %s :", sprint_hex(dfname, dfnamelen)); PrintAIDDescriptionBuf(root, dfname, dfnamelen, verbose); @@ -148,16 +157,21 @@ static void hf14b_aid_search(bool verbose) { PrintAIDDescriptionBuf(root, dfname, dfnamelen, verbose); } } else { - if (verbose) PrintAndLogEx(INFO, "(DF) Name not found"); + if (verbose) { + PrintAndLogEx(INFO, "(DF) Name not found"); + } } - if (verbose) PrintAndLogEx(SUCCESS, "----------------------------------------------------"); + if (verbose) { + PrintAndLogEx(SUCCESS, "----------------------------------------------------"); + } found = true; } } switch_off_field_14b(); - if (verbose == false && found) + if (verbose == false && found) { PrintAndLogEx(INFO, "----------------------------------------------------"); + } } static bool wait_cmd_14b(bool verbose, bool is_select, uint32_t timeout) { @@ -168,15 +182,21 @@ static bool wait_cmd_14b(bool verbose, bool is_select, uint32_t timeout) { return false; } - uint16_t len = (resp.oldarg[1] & 0xFFFF); + if (resp.status == PM3_ETEAROFF) { + if (verbose) { + PrintAndLogEx(INFO, "Writing tear off triggered"); + } + return true; + } + + uint16_t len = resp.length; uint8_t *data = resp.data.asBytes; // handle select responses if (is_select) { // 0: OK; -1: attrib fail; -2:crc fail - int status = (int)resp.oldarg[0]; - if (status == 0) { + if (resp.status == PM3_SUCCESS) { if (verbose) { PrintAndLogEx(SUCCESS, "received " _YELLOW_("%u") " bytes", len); @@ -210,7 +230,7 @@ static bool wait_cmd_14b(bool verbose, bool is_select, uint32_t timeout) { } static int CmdHF14BList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf 14b", "14b"); + return CmdTraceListAlias(Cmd, "hf 14b", "14b -c"); } static int CmdHF14BSim(const char *Cmd) { @@ -306,29 +326,6 @@ static int CmdHF14BCmdRaw(const char *Cmd) { int user_timeout = arg_get_int_def(ctx, 8, -1); bool verbose = arg_get_lit(ctx, 9); - uint32_t flags = ISO14B_CONNECT; - if (add_crc) { - flags |= ISO14B_APPEND_CRC; - } - - if (select_std) { - flags |= (ISO14B_SELECT_STD | ISO14B_CLEARTRACE); - if (verbose) - PrintAndLogEx(INFO, "using ISO14443-B select"); - } else if (select_sr) { - flags |= (ISO14B_SELECT_SR | ISO14B_CLEARTRACE); - if (verbose) - PrintAndLogEx(INFO, "using ST/SRx select"); - } else if (select_cts) { - flags |= (ISO14B_SELECT_CTS | ISO14B_CLEARTRACE); - if (verbose) - PrintAndLogEx(INFO, "using ASK/C-ticket select"); - } else if (select_xrx) { - flags |= (ISO14B_SELECT_XRX | ISO14B_CLEARTRACE); - if (verbose) - PrintAndLogEx(INFO, "using Fuji/Xerox select"); - } - uint8_t data[PM3_CMD_DATA_SIZE] = {0x00}; int datalen = 0; int res = CLIParamHexToBuf(arg_get_str(ctx, 10), data, sizeof(data), &datalen); @@ -337,6 +334,33 @@ static int CmdHF14BCmdRaw(const char *Cmd) { } CLIParserFree(ctx); + // FLAGS for device side + uint32_t flags = ISO14B_CONNECT; + if (add_crc) { + flags |= ISO14B_APPEND_CRC; + } + + if (select_std) { + flags |= (ISO14B_SELECT_STD | ISO14B_CLEARTRACE); + if (verbose) { + PrintAndLogEx(INFO, "using ISO14443-B select"); + } + } else if (select_sr) { + flags |= (ISO14B_SELECT_SR | ISO14B_CLEARTRACE); + if (verbose) { + PrintAndLogEx(INFO, "using ST/SRx select"); + } + } else if (select_cts) { + flags |= (ISO14B_SELECT_CTS | ISO14B_CLEARTRACE); + if (verbose) { + PrintAndLogEx(INFO, "using ASK/C-ticket select"); + } + } else if (select_xrx) { + flags |= (ISO14B_SELECT_XRX | ISO14B_CLEARTRACE); + if (verbose) { + PrintAndLogEx(INFO, "using Fuji/Xerox select"); + } + } uint32_t time_wait = 0; if (user_timeout > 0) { @@ -354,11 +378,13 @@ static int CmdHF14BCmdRaw(const char *Cmd) { PrintAndLogEx(INFO, " new raw timeout : %u ETU ( %u ms )", time_wait, user_timeout); } - if (keep_field_on == 0) + if (keep_field_on == false) { flags |= ISO14B_DISCONNECT; + } - if (datalen > 0) + if (datalen > 0) { flags |= ISO14B_RAW; + } // Max buffer is PM3_CMD_DATA_SIZE datalen = (datalen > PM3_CMD_DATA_SIZE) ? PM3_CMD_DATA_SIZE : datalen; @@ -369,6 +395,7 @@ static int CmdHF14BCmdRaw(const char *Cmd) { PrintAndLogEx(FAILED, "failed to allocate memory"); return PM3_EMALLOC; } + packet->flags = flags; packet->timeout = time_wait; packet->rawlen = datalen; @@ -388,26 +415,30 @@ static int CmdHF14BCmdRaw(const char *Cmd) { // Select, device will send back iso14b_card_select_t, don't print it. if (select_std) { success = wait_cmd_14b(verbose, true, user_timeout); - if (verbose && success) + if (verbose && success) { PrintAndLogEx(SUCCESS, "Got response for standard select"); + } } if (select_sr) { success = wait_cmd_14b(verbose, true, user_timeout); - if (verbose && success) + if (verbose && success) { PrintAndLogEx(SUCCESS, "Got response for ST/SRx select"); + } } if (select_cts) { success = wait_cmd_14b(verbose, true, user_timeout); - if (verbose && success) + if (verbose && success) { PrintAndLogEx(SUCCESS, "Got response for ASK/C-ticket select"); + } } if (select_xrx) { success = wait_cmd_14b(verbose, true, user_timeout); - if (verbose && success) + if (verbose && success) { PrintAndLogEx(SUCCESS, "Got response for Fuji/Xerox select"); + } } // get back response from the raw bytes you sent. @@ -438,7 +469,7 @@ static bool get_14b_UID(uint8_t *d, iso14b_type_t *found_type) { SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)&packet, sizeof(iso14b_raw_cmd_t)); if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, TIMEOUT)) { - if (resp.oldarg[0] == 0) { + if (resp.status == PM3_SUCCESS) { memcpy(d, resp.data.asBytes, sizeof(iso14b_card_select_t)); iso14b_card_select_t *card = (iso14b_card_select_t *)d; @@ -457,7 +488,7 @@ static bool get_14b_UID(uint8_t *d, iso14b_type_t *found_type) { SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)&packet, sizeof(iso14b_raw_cmd_t)); if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, TIMEOUT)) { - if (resp.oldarg[0] == 0) { + if (resp.status == PM3_SUCCESS) { memcpy(d, resp.data.asBytes, sizeof(iso14b_card_select_t)); *found_type = ISO14B_STANDARD; return true; @@ -470,7 +501,7 @@ static bool get_14b_UID(uint8_t *d, iso14b_type_t *found_type) { SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)&packet, sizeof(iso14b_raw_cmd_t)); if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, TIMEOUT)) { - if (resp.oldarg[0] == 0) { + if (resp.status == PM3_SUCCESS) { memcpy(d, resp.data.asBytes, sizeof(iso14b_cts_card_select_t)); *found_type = ISO14B_CT; return true; @@ -860,12 +891,12 @@ static bool HF14B_Std_Info(bool verbose, bool do_aid_search) { return false; } - iso14b_card_select_t card; - memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); + switch (resp.status) { + case PM3_SUCCESS: { + + iso14b_card_select_t card; + memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); - int status = resp.oldarg[0]; - switch (status) { - case 0: { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ---------------------------"); PrintAndLogEx(SUCCESS, " UID : " _GREEN_("%s"), sprint_hex(card.uid, card.uidlen)); @@ -879,10 +910,10 @@ static bool HF14B_Std_Info(bool verbose, bool do_aid_search) { return true; } - case -1: + case PM3_ELENGTH: if (verbose) PrintAndLogEx(FAILED, "ISO 14443-3 STD ATTRIB fail"); break; - case -2: + case PM3_ECRC: if (verbose) PrintAndLogEx(FAILED, "ISO 14443-3 STD CRC fail"); break; default: @@ -912,15 +943,15 @@ static bool HF14B_ST_Info(bool verbose, bool do_aid_search) { return false; } + if (resp.status != PM3_SUCCESS) { + return false; + } + iso14b_card_select_t card; memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); - int status = resp.oldarg[0]; - if (status < 0) - return false; - uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - if ((card.uidlen < 8) || (memcmp(card.uid, empty, card.uidlen) == 0)) { + if ((card.uidlen != 8) || (memcmp(card.uid, empty, card.uidlen) == 0)) { return false; } @@ -972,26 +1003,25 @@ static bool HF14B_st_reader(bool verbose) { return false; } - iso14b_card_select_t card; - memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); + switch (resp.status) { + case PM3_SUCCESS:{ + iso14b_card_select_t card; + memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); - uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - if ((card.uidlen < 8) || (memcmp(card.uid, empty, card.uidlen) == 0)) { - return false; - } - - int status = resp.oldarg[0]; - switch (status) { - case 0: + uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + if ((card.uidlen != 8) || (memcmp(card.uid, empty, card.uidlen) == 0)) { + return false; + } print_st_general_info(card.uid, card.uidlen); return true; - case -1: + } + case PM3_ELENGTH: if (verbose) PrintAndLogEx(FAILED, "ISO 14443-3 ST ATTRIB fail"); break; - case -2: + case PM3_ECRC: if (verbose) PrintAndLogEx(FAILED, "ISO 14443-3 ST CRC fail"); break; - case -3: + case PM3_EWRONGANSWER: if (verbose) PrintAndLogEx(FAILED, "ISO 14443-3 ST random chip id fail"); break; default: @@ -1018,18 +1048,16 @@ static bool HF14B_std_reader(bool verbose) { } return false; } - int status = resp.oldarg[0]; - iso14b_card_select_t card; - memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); + switch (resp.status) { + case PM3_SUCCESS: { + iso14b_card_select_t card; + memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); - uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - if (memcmp(card.uid, empty, card.uidlen) == 0) { - return false; - } - - switch (status) { - case 0: { + uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + if (memcmp(card.uid, empty, card.uidlen) == 0) { + return false; + } PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, " UID : " _GREEN_("%s"), sprint_hex(card.uid, card.uidlen)); PrintAndLogEx(SUCCESS, " ATQB : %s", sprint_hex(card.atqb, sizeof(card.atqb))); @@ -1037,11 +1065,11 @@ static bool HF14B_std_reader(bool verbose) { print_atqb_resp(card.atqb, card.cid); return true; } - case -1: { + case PM3_ELENGTH: { if (verbose) PrintAndLogEx(FAILED, "ISO 14443-3 ATTRIB fail"); break; } - case -2: { + case PM3_ECRC: { if (verbose) PrintAndLogEx(FAILED, "ISO 14443-3 CRC fail"); break; } @@ -1070,10 +1098,8 @@ static bool HF14B_ask_ct_reader(bool verbose) { return false; } - int status = resp.oldarg[0]; - - switch (status) { - case 0: { + switch (resp.status) { + case PM3_SUCCESS: { print_ct_general_info(resp.data.asBytes); return true; } @@ -1109,29 +1135,11 @@ static bool HF14B_other_reader(bool verbose) { // 14b get and print UID only (general info) clearCommandBuffer(); - PacketResponseNG resp; SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)packet, sizeof(iso14b_raw_cmd_t) + packet->rawlen); - if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, TIMEOUT) == false) { - if (verbose) { - PrintAndLogEx(WARNING, "timeout while waiting for reply"); - } - free(packet); - switch_off_field_14b(); - return false; - } - int status = resp.oldarg[0]; - PrintAndLogEx(DEBUG, "status %d", status); - if (status == 0) { + if (wait_cmd_14b(verbose, true, -1)) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x000b3f80") " command ans:"); - switch_off_field_14b(); - free(packet); - return true; - } else if (status > 0) { - PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x000b3f80") " command ans:"); - PrintAndLogEx(SUCCESS, "%s", sprint_hex(resp.data.asBytes, status)); + PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x000b3f80") " command"); switch_off_field_14b(); free(packet); return true; @@ -1141,27 +1149,10 @@ static bool HF14B_other_reader(bool verbose) { packet->raw[0] = ISO14443B_AUTHENTICATE; clearCommandBuffer(); SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)packet, sizeof(iso14b_raw_cmd_t) + packet->rawlen); - if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, TIMEOUT) == false) { - if (verbose) { - PrintAndLogEx(WARNING, "timeout while waiting for reply"); - } - switch_off_field_14b(); - free(packet); - return false; - } - status = resp.oldarg[0]; - PrintAndLogEx(DEBUG, "status %d", status); - if (status == 0) { + if (wait_cmd_14b(verbose, false, -1)) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "Unknown tag type answered to a " _YELLOW_("0x0A") " command ans:"); - switch_off_field_14b(); - free(packet); - return true; - } else if (status > 0) { - PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x0A") " command ans:"); - PrintAndLogEx(SUCCESS, "%s", sprint_hex(resp.data.asBytes, status)); + PrintAndLogEx(SUCCESS, "Unknown tag type answered to a " _YELLOW_("0x0A") " command"); switch_off_field_14b(); free(packet); return true; @@ -1171,25 +1162,9 @@ static bool HF14B_other_reader(bool verbose) { clearCommandBuffer(); SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)packet, sizeof(iso14b_raw_cmd_t) + packet->rawlen); free(packet); - if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, TIMEOUT) == false) { - if (verbose) { - PrintAndLogEx(WARNING, "timeout while waiting for reply"); - } - switch_off_field_14b(); - return false; - } - status = resp.oldarg[0]; - PrintAndLogEx(DEBUG, "status %d", status); - - if (status == 0) { + if (wait_cmd_14b(verbose, false, -1)) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "Unknown tag type answered to a " _YELLOW_("0x0C") " command ans:"); - switch_off_field_14b(); - return true; - } else if (status > 0) { - PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x0C") " command ans:"); - PrintAndLogEx(SUCCESS, "%s", sprint_hex(resp.data.asBytes, status)); + PrintAndLogEx(SUCCESS, "Unknown tag type answered to a " _YELLOW_("0x0C") " command"); switch_off_field_14b(); return true; } @@ -1362,7 +1337,6 @@ static int CmdHF14BWriteSri(const char *Cmd) { } char str[36] = {0x00}; - memset(str, 0x00, sizeof(str)); snprintf(str, sizeof(str), "--sr -c --data %02x%02x%02x%02x%02x%02x", ISO14443B_WRITE_BLK, blockno, data[0], data[1], data[2], data[3]); return CmdHF14BCmdRaw(str); } @@ -1449,6 +1423,7 @@ static int CmdHF14BDump(const char *Cmd) { // detect blocksize from card :) PrintAndLogEx(INFO, "reading tag memory from UID " _GREEN_("%s"), sprint_hex_inrow(SwapEndian64(card.uid, card.uidlen, 8), card.uidlen)); + iso14b_raw_cmd_t *packet = (iso14b_raw_cmd_t *)calloc(1, sizeof(iso14b_raw_cmd_t) + 2); if (packet == NULL) { PrintAndLogEx(FAILED, "failed to allocate memory"); @@ -1465,8 +1440,8 @@ static int CmdHF14BDump(const char *Cmd) { // select SR tag int status; if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, 2000)) { - status = resp.oldarg[0]; - if (status < 0) { + status = resp.status; + if (status != PM3_SUCCESS) { PrintAndLogEx(FAILED, "failed to select arg0[%" PRId64 "]", resp.oldarg[0]); free(packet); return switch_off_field_14b(); @@ -1491,8 +1466,8 @@ static int CmdHF14BDump(const char *Cmd) { SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)packet, sizeof(iso14b_raw_cmd_t) + 2); if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, 2000)) { - status = resp.oldarg[0]; - if (status < 0) { + status = resp.status; + if (status != PM3_SUCCESS) { PrintAndLogEx(FAILED, "retrying one more time"); continue; } @@ -1665,8 +1640,9 @@ static int srix4kValid(const char *Cmd) { */ int select_card_14443b_4(bool disconnect, iso14b_card_select_t *card) { - if (card) + if (card) { memset(card, 0, sizeof(iso14b_card_select_t)); + } switch_off_field_14b(); @@ -1699,12 +1675,12 @@ int select_card_14443b_4(bool disconnect, iso14b_card_select_t *card) { } // check result - int status = resp.oldarg[0]; - if (status < 0) { + if (resp.status != PM3_SUCCESS) { PrintAndLogEx(WARNING, "No ISO14443-B Card in field"); switch_off_field_14b(); return PM3_ESOFT; } + SetISODEPState(ISODEP_NFCB); apdu_frame_length = 0; // get frame length from ATS in card data structure @@ -1733,8 +1709,9 @@ static int handle_14b_apdu(bool chainingin, uint8_t *datain, int datainlen, if (activateField) { // select with no disconnect and set frameLength int selres = select_card_14443b_4(false, NULL); - if (selres != PM3_SUCCESS) + if (selres != PM3_SUCCESS) { return selres; + } } iso14b_raw_cmd_t *packet = (iso14b_raw_cmd_t *)calloc(1, sizeof(iso14b_raw_cmd_t) + datainlen); @@ -1746,8 +1723,9 @@ static int handle_14b_apdu(bool chainingin, uint8_t *datain, int datainlen, packet->timeout = 0; packet->rawlen = 0; - if (chainingin) + if (chainingin) { packet->flags = (ISO14B_SEND_CHAINING | ISO14B_APDU); + } if (user_timeout > 0) { packet->flags |= ISO14B_SET_TIMEOUT; @@ -1777,8 +1755,15 @@ static int handle_14b_apdu(bool chainingin, uint8_t *datain, int datainlen, return PM3_ETIMEOUT; } - int rlen = resp.oldarg[0]; - int dlen = rlen - 2; + if ( resp.status != PM3_SUCCESS) { + PrintAndLogEx(ERR, "APDU: no APDU response"); + return resp.status; + } + + iso14b_raw_apdu_response_t *apdu = (iso14b_raw_apdu_response_t *)resp.data.asBytes; + + // remove crc bytes + int dlen = apdu->datalen - 2; if (dlen < 0) { dlen = 0; } @@ -1786,33 +1771,28 @@ static int handle_14b_apdu(bool chainingin, uint8_t *datain, int datainlen, *dataoutlen += dlen; if (maxdataoutlen && *dataoutlen > maxdataoutlen) { - PrintAndLogEx(ERR, "APDU: buffer too small(%d), needs %d bytes", maxdataoutlen, *dataoutlen); + PrintAndLogEx(ERR, "APDU: buffer too small ( " _RED_("%d") " ), needs " _YELLOW_("%d") " bytes", maxdataoutlen, *dataoutlen); return PM3_ESOFT; } // I-block ACK - uint8_t res = resp.oldarg[1]; - if ((res & 0xF2) == 0xA2) { + if ((apdu->response_byte & 0xF2) == 0xA2) { *dataoutlen = 0; *chainingout = true; return PM3_SUCCESS; } - if (rlen < 0) { - PrintAndLogEx(ERR, "APDU: no APDU response"); - return PM3_ESOFT; - } - // check apdu length - if (rlen == 0 || rlen == 1) { - PrintAndLogEx(ERR, "APDU: small APDU response, len %d", rlen); + if (apdu->datalen < 2) { + PrintAndLogEx(ERR, "APDU: small APDU response, len " _RED_("%d"), apdu->datalen); return PM3_ESOFT; } - - memcpy(dataout, resp.data.asBytes, dlen); + + // copy to output array + memcpy(dataout, apdu->data, dlen); // chaining - if ((res & 0x10) != 0) { + if ((apdu->response_byte & 0x10) != 0) { *chainingout = true; } return PM3_SUCCESS; @@ -2208,7 +2188,6 @@ static int CmdHF14BView(const char *Cmd) { return PM3_SUCCESS; } - static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, {"apdu", CmdHF14BAPDU, IfPm3Iso14443b, "Send ISO 14443-4 APDU to tag"}, diff --git a/client/src/cmdhfcryptorf.c b/client/src/cmdhfcryptorf.c index ef0979182..55a9802be 100644 --- a/client/src/cmdhfcryptorf.c +++ b/client/src/cmdhfcryptorf.c @@ -116,15 +116,16 @@ static bool get_14b_UID(iso14b_card_select_t *card) { SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)&packet, sizeof(iso14b_raw_cmd_t)); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, TIMEOUT)) { - if (resp.oldarg[0] == 0) { + if (resp.status == PM3_SUCCESS) { memcpy(card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); return true; } } } // retry - if (retry <= 0) + if (retry <= 0) { PrintAndLogEx(FAILED, "command execution timeout"); + } return false; } @@ -148,22 +149,20 @@ static int infoHFCryptoRF(bool verbose) { return false; } - iso14b_card_select_t card; - memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); - - uint64_t status = resp.oldarg[0]; - - switch (status) { - case 0: + switch (resp.status) { + case PM3_SUCCESS: { + iso14b_card_select_t card; + memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, " UID : %s", sprint_hex(card.uid, card.uidlen)); PrintAndLogEx(SUCCESS, " ATQB : %s", sprint_hex(card.atqb, sizeof(card.atqb))); PrintAndLogEx(SUCCESS, " CHIPID : %02X", card.chipid); return PM3_SUCCESS; - case 2: + } + case PM3_ELENGTH: if (verbose) PrintAndLogEx(FAILED, "ISO 14443-3 ATTRIB fail"); break; - case 3: + case PM3_ECRC: if (verbose) PrintAndLogEx(FAILED, "ISO 14443-3 CRC fail"); break; default: @@ -209,16 +208,16 @@ int readHFCryptoRF(bool loop, bool verbose) { PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 2000)) { - uint8_t status = resp.oldarg[0] & 0xFF; - if (loop) { - if (status != 0) { + if (resp.status != PM3_SUCCESS) { continue; } } else { // when not in continuous mode - if (status != 0) { - if (verbose) PrintAndLogEx(WARNING, "cryptoRF / ISO14443-b card select failed"); + if (resp.status != PM3_SUCCESS) { + if (verbose) { + PrintAndLogEx(WARNING, "cryptoRF / ISO14443-b card select failed"); + } res = PM3_EOPABORTED; break; } @@ -322,11 +321,9 @@ static int CmdHFCryptoRFDump(const char *Cmd) { PacketResponseNG resp; // select - int status; if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, 2000)) { - status = resp.oldarg[0]; - if (status < 0) { - PrintAndLogEx(FAILED, "failed to select %" PRId64 "]", resp.oldarg[0]); + if (resp.status != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "failed to select %" PRId64 "]", resp.status); free(packet); return switch_off_field_cryptorf(); } @@ -350,13 +347,12 @@ static int CmdHFCryptoRFDump(const char *Cmd) { SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)&packet, sizeof(iso14b_raw_cmd_t) + 2); if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, 2000)) { - status = resp.oldarg[0]; - if (status < 0) { + if (resp.status != PM3_SUCCESS) { PrintAndLogEx(FAILED, "retrying one more time"); continue; } - uint16_t len = (resp.oldarg[1] & 0xFFFF); + uint16_t len = resp.length; uint8_t *recv = resp.data.asBytes; if (check_crc(CRC_14443_B, recv, len) == false) { @@ -446,7 +442,7 @@ static int CmdHFCryptoRFELoad(const char *Cmd) { size_t datalen = CRYPTORF_MEM_SIZE; // set up buffer uint8_t *data = calloc(datalen, sizeof(uint8_t)); - if (!data) { + if (data == NULL) { PrintAndLogEx(WARNING, "Fail, cannot allocate memory"); return PM3_EMALLOC; } @@ -477,7 +473,7 @@ static int CmdHFCryptoRFELoad(const char *Cmd) { } */ free(data); - PrintAndLogEx(SUCCESS, "sent %d bytes of data to device emulator memory", bytes_sent); + PrintAndLogEx(SUCCESS, "sent " _YELLOW_("%d") " bytes of data to device emulator memory", bytes_sent); return PM3_SUCCESS; } diff --git a/client/src/cmdhfxerox.c b/client/src/cmdhfxerox.c index 5f6f1e11c..88f910dfa 100644 --- a/client/src/cmdhfxerox.c +++ b/client/src/cmdhfxerox.c @@ -383,8 +383,9 @@ static int switch_off_field(void) { static int findXerox(iso14b_card_select_t *card, bool disconnect) { - if (card == NULL) + if (card == NULL) { return PM3_EINVARG; + } int8_t retry = 3; while (retry--) { @@ -399,10 +400,10 @@ static int findXerox(iso14b_card_select_t *card, bool disconnect) { PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, TIMEOUT)) { - if (resp.oldarg[0] == 0) { + if (resp.status == PM3_SUCCESS) { memcpy(card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); } - return resp.oldarg[0]; + return resp.length; } } // retry @@ -513,7 +514,7 @@ static int CmdHFXeroxInfo(const char *Cmd) { if (verbose) { PrintAndLogEx(FAILED, "Fuji/Xerox tag select failed"); } - return PM3_ERFTRANS; + return status; } PrintAndLogEx(NORMAL, ""); @@ -551,7 +552,7 @@ static int CmdHFXeroxInfo(const char *Cmd) { */ // 14b raw command send data_len instead of status - if (/*resp.status != 0 ||*/ resp.length < 7) { + if (resp.length < 7) { PrintAndLogEx(FAILED, "retrying one more time"); continue; } @@ -655,7 +656,8 @@ static int CmdHFXeroxDump(const char *Cmd) { resp.cmd, resp.length, resp.magic, resp.status, resp.crc, resp.oldarg[0], resp.oldarg[1], resp.oldarg[2], resp.data.asBytes[0], resp.data.asBytes[1], resp.data.asBytes[2], resp.ng ? 't' : 'f'); */ - if (/*resp.status != 0 ||*/ resp.length < 7) { // 14b raw command send data_len instead of status + + if (resp.length < 7) { PrintAndLogEx(FAILED, "retrying one more time"); continue; } @@ -689,8 +691,9 @@ static int CmdHFXeroxDump(const char *Cmd) { PrintAndLogEx(NORMAL, ""); - if (blocknum != 0x100) + if (blocknum != 0x100) { PrintAndLogEx(FAILED, "dump failed at block %d", blocknum); + } if (decrypt) { PrintAndLogEx(INFO, "Decrypting secret blocks..."); @@ -744,12 +747,14 @@ static int CmdHFXeroxDump(const char *Cmd) { uint16_t cs, csd; // calc checksum - for (b = 0, cs = 0; b < sizeof(decr) - 2; b += 2) cs += decr[b] | (decr[b + 1] << 8); + for (b = 0, cs = 0; b < sizeof(decr) - 2; b += 2) { + cs += decr[b] | (decr[b + 1] << 8); + } cs = ~cs; csd = (decr[7] << 8) | decr[6]; if (cs != csd) { - PrintAndLogEx(FAILED, "secret block %02X checksum failed.", dadr); + PrintAndLogEx(FAILED, "Secret block %02X checksum " _RED_("failed"), dadr); } } } diff --git a/include/iso14b.h b/include/iso14b.h index e809ef2c0..9089cd3d3 100644 --- a/include/iso14b.h +++ b/include/iso14b.h @@ -64,6 +64,11 @@ typedef struct { uint8_t raw[]; } PACKED iso14b_raw_cmd_t; +typedef struct { + uint8_t response_byte; + uint16_t datalen; + uint8_t data[]; +} PACKED iso14b_raw_apdu_response_t; #define US_TO_SSP(x) ( (int32_t) ((x) * 3.39) ) #define SSP_TO_US(x) ( (int32_t)((x) / 3.39) ) diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index abee08bb2..06dbe057a 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -820,6 +820,9 @@ typedef struct { // No PACS data pm3: when using HID SAM to retried PACS data #define PM3_ENOPACS -26 +// Got wrong length error pm3: when received wrong length of data +#define PM3_ELENGTH -27 + // No data pm3: no data available, no host frame available (not really an error) #define PM3_ENODATA -98 // Quit program client: reserved, order to quit the program From f8c9c10c22d9d8449f084dce224c982419af754e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 8 Jan 2024 21:18:01 +0100 Subject: [PATCH 1017/1034] text --- CHANGELOG.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index df18b8f79..85e23a2e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,13 +3,14 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `hf 14b` commands got some serious overhaul and love. Better return values and packet handling (@iceman1001) + - Changed `hf waveshare` - image is automatically scaled and cropped to match panel size (@socram8888) + - Changed `hf waveshare` - image loading and processing is now done using [GDlib](https://github.com/libgd/libgd) (@socram8888) - Added trace of sniffed SEOS traffic between reader and card (@iceman1001) - Change `hf seos list` - print crc and annotate better (@iceman1001) - Added troubleshooting entry - ARM architecture error (@francis2054) - Fixed `lf pyramid sim` - wrong parameter handling (@iceman1001) - Fixed bootloader - Ignore jitters when pressing the button (@wh201906) - - Changed `hf waveshare` - image loading and processing is now done using [GDlib](https://github.com/libgd/libgd) (@socram8888) - - Changed `hf waveshare` - image is automatically scaled and cropped to match panel size (@socram8888) ## [Steamboat Willie.4.17768][2024-01-03] - Changed `mem spiffs dump -t` - now supports downloading direct into trace buffer (@hazardousvoltage) From 69ec1c6c042e1dc05fe25751bbadd7ec51338ac1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 8 Jan 2024 22:17:50 +0100 Subject: [PATCH 1018/1034] remove some repeating 14b select calls --- client/src/cmdhf14b.c | 107 +++++++++++++++++++++++++++++++++--------- 1 file changed, 84 insertions(+), 23 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 67c1c04a0..7f9639dab 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -174,6 +174,62 @@ static void hf14b_aid_search(bool verbose) { } } +static bool wait_14b_response(bool only_first, uint32_t timeout, uint8_t *datalen, uint8_t *data) { + + /* We have scenarios. + A - only select + B - only normal respose + C - both select and response + */ + + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, MIN(TIMEOUT, timeout)) == false) { + PrintAndLogEx(WARNING, "timeout while waiting for reply"); + return false; + } + + if (resp.status == PM3_ETEAROFF) { + PrintAndLogEx(INFO, "Writing tear off triggered"); + return true; + } + + if (resp.status != PM3_SUCCESS) { + return false; + } + + // treat first reponse as same. + if (only_first) { + + if (datalen) { + *datalen = resp.length; + } + + if (data) { + memcpy(data, resp.data.asBytes, resp.length); + } + return true; + } + + // wait a second time. + if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, MIN(TIMEOUT, timeout)) == false) { + PrintAndLogEx(WARNING, "timeout while waiting for reply"); + return false; + } + + if (resp.status != PM3_SUCCESS) { + return false; + } + + if (datalen) { + *datalen = resp.length; + } + if (data) { + memcpy(data, resp.data.asBytes, resp.length); + } + + return true; +} + static bool wait_cmd_14b(bool verbose, bool is_select, uint32_t timeout) { PacketResponseNG resp; @@ -183,29 +239,25 @@ static bool wait_cmd_14b(bool verbose, bool is_select, uint32_t timeout) { } if (resp.status == PM3_ETEAROFF) { - if (verbose) { - PrintAndLogEx(INFO, "Writing tear off triggered"); - } + PrintAndLogEx(INFO, "Writing tear off triggered"); return true; } + if (is_select) { + if (resp.status != PM3_SUCCESS) { + PrintAndLogEx(INFO, "failed status value... %d", resp.status); + return false; + } + } + uint16_t len = resp.length; uint8_t *data = resp.data.asBytes; - // handle select responses - if (is_select) { - - // 0: OK; -1: attrib fail; -2:crc fail - if (resp.status == PM3_SUCCESS) { - - if (verbose) { - PrintAndLogEx(SUCCESS, "received " _YELLOW_("%u") " bytes", len); - PrintAndLogEx(SUCCESS, "%s", sprint_hex(data, len)); - } - return true; - } else { - return false; - } + // handle select responses OK + if (is_select && verbose) { + PrintAndLogEx(SUCCESS, "received " _YELLOW_("%u") " bytes", len); + PrintAndLogEx(SUCCESS, "%s", sprint_hex(data, len)); + return true; } // handle raw bytes responses @@ -214,7 +266,7 @@ static bool wait_cmd_14b(bool verbose, bool is_select, uint32_t timeout) { bool crc = check_crc(CRC_14443_B, data, len); PrintAndLogEx(SUCCESS, "received " _YELLOW_("%u") " bytes", len); - PrintAndLogEx(SUCCESS, "%s[%02X %02X] ( %s )", + PrintAndLogEx(SUCCESS, "%s[ " _YELLOW_("%02X %02X") " ] ( %s )", sprint_hex(data, len - 2), data[len - 2], data[len - 1], @@ -1103,11 +1155,11 @@ static bool HF14B_ask_ct_reader(bool verbose) { print_ct_general_info(resp.data.asBytes); return true; } - case -1: { + case PM3_ELENGTH: { if (verbose) PrintAndLogEx(FAILED, "ISO 14443-3 CTS wrong length"); break; } - case -2: { + case PM3_ECRC: { if (verbose) PrintAndLogEx(FAILED, "ISO 14443-3 CTS CRC fail"); break; } @@ -1137,7 +1189,8 @@ static bool HF14B_other_reader(bool verbose) { clearCommandBuffer(); SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)packet, sizeof(iso14b_raw_cmd_t) + packet->rawlen); - if (wait_cmd_14b(verbose, true, -1)) { + // wait for the select message and wait for response + if (wait_14b_response(false, 400, NULL, NULL) ) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x000b3f80") " command"); switch_off_field_14b(); @@ -1150,7 +1203,7 @@ static bool HF14B_other_reader(bool verbose) { clearCommandBuffer(); SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)packet, sizeof(iso14b_raw_cmd_t) + packet->rawlen); - if (wait_cmd_14b(verbose, false, -1)) { + if (wait_14b_response(false, 400, NULL, NULL)) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); PrintAndLogEx(SUCCESS, "Unknown tag type answered to a " _YELLOW_("0x0A") " command"); switch_off_field_14b(); @@ -1162,7 +1215,7 @@ static bool HF14B_other_reader(bool verbose) { clearCommandBuffer(); SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)packet, sizeof(iso14b_raw_cmd_t) + packet->rawlen); free(packet); - if (wait_cmd_14b(verbose, false, -1)) { + if (wait_14b_response(false, 400, NULL, NULL)) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); PrintAndLogEx(SUCCESS, "Unknown tag type answered to a " _YELLOW_("0x0C") " command"); switch_off_field_14b(); @@ -2245,22 +2298,30 @@ int readHF14B(bool loop, bool verbose) { found |= HF14B_std_reader(verbose); if (found && loop) continue; + else if (found) + return PM3_SUCCESS; // try ST Microelectronics 14b found |= HF14B_st_reader(verbose); if (found && loop) continue; + else if (found) + return PM3_SUCCESS; // try ASK CT 14b found |= HF14B_ask_ct_reader(verbose); if (found && loop) continue; + else if (found) + return PM3_SUCCESS; // try unknown 14b read commands (to be identified later) // could be read of calypso, CEPAS, moneo, or pico pass. found |= HF14B_other_reader(verbose); if (found && loop) continue; + else if (found) + return PM3_SUCCESS; } while (loop && kbd_enter_pressed() == false); From 562faa84891d79f42f6cb07bd0ffb527f819e471 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 8 Jan 2024 23:40:45 +0100 Subject: [PATCH 1019/1034] removed the inconsistency of both being a status value and length value --- armsrc/iso14443b.c | 126 ++++++++++++++++++++++++++++++------------ client/src/cmdhf14b.c | 12 ++-- 2 files changed, 95 insertions(+), 43 deletions(-) diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index 332fc1da7..65b465397 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -1316,7 +1316,7 @@ static RAMFUNC int Handle14443bSamplesFromTag(int ci, int cq) { /* * Demodulate the samples we received from the tag, also log to tracebuffer */ -static int Get14443bAnswerFromTag(uint8_t *response, uint16_t max_len, uint32_t timeout, uint32_t *eof_time) { +static int Get14443bAnswerFromTag(uint8_t *response, uint16_t max_len, uint32_t timeout, uint32_t *eof_time, uint16_t *retlen) { // Set up the demodulator for tag -> reader responses. Demod14bInit(response, max_len); @@ -1412,7 +1412,11 @@ static int Get14443bAnswerFromTag(uint8_t *response, uint16_t max_len, uint32_t + (10)); // time for EOF transfer LogTrace(Demod.output, Demod.len, sof_time, *eof_time, NULL, false); } - return Demod.len; + + if (retlen) { + *retlen = Demod.len; + } + return PM3_SUCCESS; } //----------------------------------------------------------------------------- @@ -1613,15 +1617,16 @@ int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void // 65536/fc == 4833 µS // SSP_CLK = 4833 µS * 3.39 = 16384 - int len = Get14443bAnswerFromTag(rxdata, rxmaxlen, iso14b_timeout, &eof_time); + uint16_t len = 0; + if (Get14443bAnswerFromTag(rxdata, rxmaxlen, iso14b_timeout, &eof_time, &len) != PM3_SUCCESS) { + return PM3_ECARDEXCHANGE; + } + FpgaDisableTracing(); uint8_t *data_bytes = (uint8_t *) rxdata; - if (len <= 0) { - // DATA LINK ERROR - return PM3_ECARDEXCHANGE; - } else { + if (len) { // S-Block WTX while (len && ((data_bytes[0] & 0xF2) == 0xF2)) { @@ -1648,7 +1653,11 @@ int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void // retrieve the result again (with increased timeout) eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - len = Get14443bAnswerFromTag(rxdata, rxmaxlen, iso14b_timeout, &eof_time); + + if (Get14443bAnswerFromTag(rxdata, rxmaxlen, iso14b_timeout, &eof_time, &len) != PM3_SUCCESS) { + FpgaDisableTracing(); + return PM3_ECARDEXCHANGE; + } FpgaDisableTracing(); data_bytes = rxdata; @@ -1714,7 +1723,11 @@ static int iso14443b_select_cts_card(iso14b_cts_card_select_t *card) { CodeAndTransmit14443bAsReader(cmdINIT, sizeof(cmdINIT), &start_time, &eof_time, true); eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - int retlen = Get14443bAnswerFromTag(r, sizeof(r), iso14b_timeout, &eof_time); + uint16_t retlen = 0; + if (Get14443bAnswerFromTag(r, sizeof(r), iso14b_timeout, &eof_time, &retlen) != PM3_SUCCESS) { + goto out; + } + FpgaDisableTracing(); if (retlen != 4) { @@ -1734,7 +1747,9 @@ static int iso14443b_select_cts_card(iso14b_cts_card_select_t *card) { CodeAndTransmit14443bAsReader(cmdMSBUID, sizeof(cmdMSBUID), &start_time, &eof_time, true); eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - retlen = Get14443bAnswerFromTag(r, sizeof(r), iso14b_timeout, &eof_time); + if (Get14443bAnswerFromTag(r, sizeof(r), iso14b_timeout, &eof_time, &retlen) != PM3_SUCCESS) { + goto out; + } FpgaDisableTracing(); if (retlen != 4) { @@ -1752,7 +1767,9 @@ static int iso14443b_select_cts_card(iso14b_cts_card_select_t *card) { CodeAndTransmit14443bAsReader(cmdLSBUID, sizeof(cmdLSBUID), &start_time, &eof_time, true); eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - retlen = Get14443bAnswerFromTag(r, sizeof(r), iso14b_timeout, &eof_time); + if (Get14443bAnswerFromTag(r, sizeof(r), iso14b_timeout, &eof_time, &retlen) != PM3_SUCCESS) { + goto out; + } FpgaDisableTracing(); if (retlen != 4) { @@ -1767,6 +1784,9 @@ static int iso14443b_select_cts_card(iso14b_cts_card_select_t *card) { } return PM3_SUCCESS; +out: + FpgaDisableTracing(); + return PM3_ECARDEXCHANGE; } /** * SRx Initialise. @@ -1783,12 +1803,12 @@ static int iso14443b_select_srx_card(iso14b_card_select_t *card) { CodeAndTransmit14443bAsReader(init_srx, sizeof(init_srx), &start_time, &eof_time, true); eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - int retlen = Get14443bAnswerFromTag(r_init, sizeof(r_init), iso14b_timeout, &eof_time); - FpgaDisableTracing(); - - if (retlen <= 0) { + uint16_t retlen = 0; + if (Get14443bAnswerFromTag(r_init, sizeof(r_init), iso14b_timeout, &eof_time, &retlen) != PM3_SUCCESS) { + FpgaDisableTracing(); return PM3_ECARDEXCHANGE; } + FpgaDisableTracing(); // Randomly generated Chip ID if (card) { @@ -1805,7 +1825,10 @@ static int iso14443b_select_srx_card(iso14b_card_select_t *card) { CodeAndTransmit14443bAsReader(select_srx, sizeof(select_srx), &start_time, &eof_time, true); eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - retlen = Get14443bAnswerFromTag(r_select, sizeof(r_select), iso14b_timeout, &eof_time); + if (Get14443bAnswerFromTag(r_select, sizeof(r_select), iso14b_timeout, &eof_time, &retlen) != PM3_SUCCESS) { + goto out; + } + FpgaDisableTracing(); if (retlen != 3) { @@ -1829,7 +1852,9 @@ static int iso14443b_select_srx_card(iso14b_card_select_t *card) { CodeAndTransmit14443bAsReader(select_srx, 3, &start_time, &eof_time, true); // Only first three bytes for this one eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - retlen = Get14443bAnswerFromTag(r_papid, sizeof(r_papid), iso14b_timeout, &eof_time); + if (Get14443bAnswerFromTag(r_papid, sizeof(r_papid), iso14b_timeout, &eof_time, & retlen) != PM3_SUCCESS) { + goto out; + } FpgaDisableTracing(); @@ -1846,6 +1871,9 @@ static int iso14443b_select_srx_card(iso14b_card_select_t *card) { memcpy(card->uid, r_papid, 8); } return PM3_SUCCESS; +out: + FpgaDisableTracing(); + return PM3_ECARDEXCHANGE; } // Xerox tag connect function: wup, anticoll, attrib, password @@ -1873,7 +1901,7 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { CodeAndTransmit14443bAsReader(x_wup2, sizeof(x_wup2), &start_time, &eof_time, true); uint64_t uid = 0; - int retlen; + uint16_t retlen = 0; for (int uid_pos = 0; uid_pos < 64; uid_pos += 2) { int slot; @@ -1881,14 +1909,12 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { for (slot = 0; slot < 4; slot++) { start_time = eof_time + HF14_ETU_TO_SSP(30); //(24); // next slot after 24 ETU - retlen = Get14443bAnswerFromTag(x_atqb, sizeof(x_atqb), iso14b_timeout, &eof_time); - - if (retlen > 0) { - FpgaDisableTracing(); - - Dbprintf("unexpected data %d", retlen); - Dbprintf("crc %s", check_crc(CRC_14443_B, x_atqb, retlen) ? "OK" : "BAD"); - return PM3_ECARDEXCHANGE; + if (Get14443bAnswerFromTag(x_atqb, sizeof(x_atqb), iso14b_timeout, &eof_time, &retlen) != PM3_SUCCESS) { + if (retlen > 0) { + Dbprintf("unexpected data %d", retlen); + Dbprintf("crc %s", check_crc(CRC_14443_B, x_atqb, retlen) ? "OK" : "BAD"); + } + goto out; } // tx unframed slot-marker @@ -1915,7 +1941,9 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { } } - retlen = Get14443bAnswerFromTag(x_atqb, sizeof(x_atqb), iso14b_timeout, &eof_time); + if (Get14443bAnswerFromTag(x_atqb, sizeof(x_atqb), iso14b_timeout, &eof_time, &retlen) != PM3_SUCCESS) { + goto out; + } if (g_dbglevel >= DBG_DEBUG) { Dbprintf("anticollision uid %llx", uid); @@ -1958,7 +1986,9 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { CodeAndTransmit14443bAsReader(txbuf + 1, 15, &start_time, &eof_time, true); eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - retlen = Get14443bAnswerFromTag(x_atqb, sizeof(x_atqb), iso14b_timeout, &eof_time); + if (Get14443bAnswerFromTag(x_atqb, sizeof(x_atqb), iso14b_timeout, &eof_time, &retlen) != PM3_SUCCESS) { + goto out; + } FpgaDisableTracing(); if (retlen < 3) { @@ -1990,7 +2020,9 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { CodeAndTransmit14443bAsReader(txbuf, 17, &start_time, &eof_time, true); eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - retlen = Get14443bAnswerFromTag(x_atqb, sizeof(x_atqb), iso14b_timeout, &eof_time); + if (Get14443bAnswerFromTag(x_atqb, sizeof(x_atqb), iso14b_timeout, &eof_time, &retlen) != PM3_SUCCESS) { + goto out; + } if (retlen < 4) { return PM3_ELENGTH; @@ -2005,6 +2037,10 @@ static int iso14443b_select_xrx_card(iso14b_card_select_t *card) { } return PM3_SUCCESS; + +out: + FpgaDisableTracing(); + return PM3_ECARDEXCHANGE; } /* Perform the ISO 14443 B Card Selection procedure @@ -2031,7 +2067,11 @@ int iso14443b_select_card(iso14b_card_select_t *card) { CodeAndTransmit14443bAsReader(wupb, sizeof(wupb), &start_time, &eof_time, true); eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - int retlen = Get14443bAnswerFromTag(r_pupid, sizeof(r_pupid), iso14b_timeout, &eof_time); + uint16_t retlen = 0; + if (Get14443bAnswerFromTag(r_pupid, sizeof(r_pupid), iso14b_timeout, &eof_time) != PM3_SUCCESS) { + goto out; + } + FpgaDisableTracing(); // ATQB too short? @@ -2060,7 +2100,9 @@ int iso14443b_select_card(iso14b_card_select_t *card) { CodeAndTransmit14443bAsReader(attrib, sizeof(attrib), &start_time, &eof_time, true); eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - retlen = Get14443bAnswerFromTag(r_attrib, sizeof(r_attrib), iso14b_timeout, &eof_time); + if (Get14443bAnswerFromTag(r_attrib, sizeof(r_attrib), iso14b_timeout, &eof_time, &retlen) != PM3_SUCCESS) { + goto out; + } FpgaDisableTracing(); // Answer to ATTRIB too short? @@ -2097,6 +2139,10 @@ int iso14443b_select_card(iso14b_card_select_t *card) { // reset PCB block number iso14b_pcb_blocknum = 0; return PM3_SUCCESS; + +out: + FpgaDisableTracing(); + return PM3_ECARDEXCHANGE; } // Set up ISO 14443 Type B communication (similar to iso14443a_setup) @@ -2158,7 +2204,12 @@ static int read_14b_srx_block(uint8_t blocknr, uint8_t *block) { CodeAndTransmit14443bAsReader(cmd, sizeof(cmd), &start_time, &eof_time, true); eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - int retlen = Get14443bAnswerFromTag(r_block, sizeof(r_block), iso14b_timeout, &eof_time); + uint16_t retlen = 0; + if (Get14443bAnswerFromTag(r_block, sizeof(r_block), iso14b_timeout, &eof_time, &retlen) != PM3_SUCCESS) { + FpgaDisableTracing(); + return PM3_ECARDEXCHANGE; + + } FpgaDisableTracing(); // Check if we got an answer from the tag @@ -2496,9 +2547,14 @@ void SendRawCommand14443B_Ex(iso14b_raw_cmd_t *p) { reply_ng(CMD_HF_ISO14443B_COMMAND, PM3_ETEAROFF, NULL, 0); } else { eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - status = Get14443bAnswerFromTag(buf, sizeof(buf), iso14b_timeout, &eof_time); // raw - sendlen = MIN(Demod.len, PM3_CMD_DATA_SIZE); - reply_ng(CMD_HF_ISO14443B_COMMAND, status, Demod.output, sendlen); + uint16_t retlen = 0; + status = Get14443bAnswerFromTag(buf, sizeof(buf), iso14b_timeout, &eof_time, &retlen); + if (status == PM3_SUCCESS) { + sendlen = MIN(retlen, PM3_CMD_DATA_SIZE); + reply_ng(CMD_HF_ISO14443B_COMMAND, status, Demod.output, sendlen); + } else { + reply_ng(CMD_HF_ISO14443B_COMMAND, status, NULL, 0); + } } } diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 7f9639dab..4a8d6c1af 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -1491,10 +1491,8 @@ static int CmdHF14BDump(const char *Cmd) { PacketResponseNG resp; // select SR tag - int status; if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, 2000)) { - status = resp.status; - if (status != PM3_SUCCESS) { + if (resp.status != PM3_SUCCESS) { PrintAndLogEx(FAILED, "failed to select arg0[%" PRId64 "]", resp.oldarg[0]); free(packet); return switch_off_field_14b(); @@ -1507,7 +1505,7 @@ static int CmdHF14BDump(const char *Cmd) { memset(data, 0, sizeof(data)); uint16_t blocknum = 0; - for (int retry = 0; retry < 5; retry++) { + for (int retry = 0; retry < 3; retry++) { // set up the read command packet->flags = (ISO14B_APPEND_CRC | ISO14B_RAW); @@ -1519,16 +1517,14 @@ static int CmdHF14BDump(const char *Cmd) { SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)packet, sizeof(iso14b_raw_cmd_t) + 2); if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, 2000)) { - status = resp.status; - if (status != PM3_SUCCESS) { + if (resp.status != PM3_SUCCESS) { PrintAndLogEx(FAILED, "retrying one more time"); continue; } - uint16_t len = (resp.oldarg[1] & 0xFFFF); uint8_t *recv = resp.data.asBytes; - if (check_crc(CRC_14443_B, recv, len) == false) { + if (check_crc(CRC_14443_B, recv, resp.length) == false) { PrintAndLogEx(FAILED, "crc fail, retrying one more time"); continue; } From dae8f4ac4b035392b775c69a6e83198ba793fa14 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 8 Jan 2024 23:48:45 +0100 Subject: [PATCH 1020/1034] forgot one --- armsrc/iso14443b.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index 65b465397..7549b6b7d 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -2068,7 +2068,7 @@ int iso14443b_select_card(iso14b_card_select_t *card) { eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; uint16_t retlen = 0; - if (Get14443bAnswerFromTag(r_pupid, sizeof(r_pupid), iso14b_timeout, &eof_time) != PM3_SUCCESS) { + if (Get14443bAnswerFromTag(r_pupid, sizeof(r_pupid), iso14b_timeout, &eof_time, &retlen) != PM3_SUCCESS) { goto out; } @@ -2208,13 +2208,12 @@ static int read_14b_srx_block(uint8_t blocknr, uint8_t *block) { if (Get14443bAnswerFromTag(r_block, sizeof(r_block), iso14b_timeout, &eof_time, &retlen) != PM3_SUCCESS) { FpgaDisableTracing(); return PM3_ECARDEXCHANGE; - } FpgaDisableTracing(); // Check if we got an answer from the tag if (retlen != 6) { - DbpString("[!] expected 6 bytes from tag, got less..."); + Dbprintf("expected 6 bytes from tag, got %u", retlen); return PM3_EWRONGANSWER; } // The check the CRC of the answer @@ -2247,6 +2246,7 @@ void read_14b_st_block(uint8_t blocknr) { int res = iso14443b_select_srx_card(card); // 0: OK -1 wrong len, -2: attrib fail, -3:crc fail, switch (res) { + case PM3_ECARDEXCHANGE: case PM3_ELENGTH: case PM3_EWRONGANSWER: case PM3_ECRC: { From a2af356ee3f350dc416f34314cc3c21522b7e4a2 Mon Sep 17 00:00:00 2001 From: Francis <zzvipercorezz@gmail.com> Date: Tue, 9 Jan 2024 01:51:07 +0100 Subject: [PATCH 1021/1034] Update Troubleshooting.md Signed-off-by: Francis <zzvipercorezz@gmail.com> --- doc/md/Installation_Instructions/Troubleshooting.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/md/Installation_Instructions/Troubleshooting.md b/doc/md/Installation_Instructions/Troubleshooting.md index 6ef5704a5..7dab8ca03 100644 --- a/doc/md/Installation_Instructions/Troubleshooting.md +++ b/doc/md/Installation_Instructions/Troubleshooting.md @@ -27,6 +27,7 @@ Always use the latest repository commits from *master* branch. There are always - [bzlib.h: No such file or directory](#bzlibh-no-such-file-or-directory) - [target attribute is not supported on this machine](#target-attribute-is-not-supported-on-this-machine) - [Qt Session management error](#qt-session-management-error) + - [found architecture x86_64 required architecture arm64 error](#found-architecture-x86_64-required-architecture-arm64-error) ## `pm3` or `pm3-flash*` doesn't see my Proxmark @@ -308,7 +309,7 @@ Try running the client without the SESSION_MANAGER environment variable. env -u SESSION_MANAGER ./pm3 ``` -## found architecture 'x86_64', required architecture 'arm64' error +## found architecture 'x86_64' required architecture 'arm64' error ^[Top](#top) If you get the message From 131721c94a3f931c406c634df82ee21be1d09adc Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jan 2024 10:01:35 +0100 Subject: [PATCH 1022/1034] fix hf 14b dump - now always turn off the field even when called with --ns --- client/src/cmdhf14b.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 4a8d6c1af..b534e18d4 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -536,6 +536,7 @@ static bool get_14b_UID(uint8_t *d, iso14b_type_t *found_type) { // test 14b standard packet.flags = (ISO14B_CONNECT | ISO14B_SELECT_STD | ISO14B_DISCONNECT); + clearCommandBuffer(); SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)&packet, sizeof(iso14b_raw_cmd_t)); if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, TIMEOUT)) { @@ -1493,7 +1494,7 @@ static int CmdHF14BDump(const char *Cmd) { // select SR tag if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, 2000)) { if (resp.status != PM3_SUCCESS) { - PrintAndLogEx(FAILED, "failed to select arg0[%" PRId64 "]", resp.oldarg[0]); + PrintAndLogEx(FAILED, "failed to select ( " _RED_("%d") " )", resp.status); free(packet); return switch_off_field_14b(); } @@ -1553,10 +1554,11 @@ static int CmdHF14BDump(const char *Cmd) { free(packet); PrintAndLogEx(NORMAL, ""); + switch_off_field_14b(); if (blocknum != 0xFF) { PrintAndLogEx(FAILED, "dump failed"); - return switch_off_field_14b(); + return PM3_ESOFT; } print_sr_blocks(data, cardsize, card.uid); @@ -1578,7 +1580,7 @@ static int CmdHF14BDump(const char *Cmd) { pm3_save_dump(filename, data, datalen, jsf14b_v2); } - return switch_off_field_14b(); + return PM3_ESOFT; } /* From 1efb38ba98beac949b5efc93551b203d16087b2a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jan 2024 10:22:27 +0100 Subject: [PATCH 1023/1034] fix hf 14b dump command not lock up every other call and modified the output. --- armsrc/iso14443b.c | 7 ++++--- client/src/cmdhf14b.c | 15 ++++++++------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index 7549b6b7d..51ec78eab 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -1686,9 +1686,7 @@ int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void if (len >= 3 && (check_crc(CRC_14443_B, data_bytes, len) == false)) { return PM3_ECRC; } - } - if (len) { // cut frame byte len -= 1; @@ -2148,7 +2146,10 @@ out: // Set up ISO 14443 Type B communication (similar to iso14443a_setup) // field is setup for "Sending as Reader" void iso14443b_setup(void) { - LEDsoff(); + + switch_off(); // disconnect raw + SpinDelay(20); + FpgaDownloadAndGo(FPGA_BITSTREAM_HF); // allocate command receive buffer diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index b534e18d4..5141b216b 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -847,12 +847,13 @@ static void print_ct_general_info(void *vcard) { } static void print_hdr(void) { + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, " block# | data |lck| ascii"); - PrintAndLogEx(INFO, "---------+--------------+---+----------"); + PrintAndLogEx(INFO, "---------+--------------+---+------"); } static void print_footer(void) { - PrintAndLogEx(INFO, "---------+--------------+---+----------"); + PrintAndLogEx(INFO, "---------+--------------+---+------"); PrintAndLogEx(NORMAL, ""); } @@ -882,10 +883,11 @@ static void print_sr_blocks(uint8_t *data, size_t len, const uint8_t *uid) { size_t blocks = (len / ST25TB_SR_BLOCK_SIZE) - 1 ; uint8_t *systemblock = data + blocks * ST25TB_SR_BLOCK_SIZE ; uint8_t chipid = get_st_chipid(uid); - PrintAndLogEx(SUCCESS, _GREEN_("%s") " tag", get_st_chip_model(chipid)); - PrintAndLogEx(DEBUG, "systemblock : %s", sprint_hex(systemblock, ST25TB_SR_BLOCK_SIZE)); - PrintAndLogEx(DEBUG, " otp lock : %02x %02x", *systemblock, *(systemblock + 1)); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "-------- " _CYAN_("%s tag memory") " ---------", get_st_chip_model(chipid)); + PrintAndLogEx(DEBUG, "systemblock... " _YELLOW_("%s"), sprint_hex(systemblock, ST25TB_SR_BLOCK_SIZE)); + PrintAndLogEx(DEBUG, " otp lock... " _YELLOW_("%02x %02x"), *systemblock, *(systemblock + 1)); print_hdr(); @@ -1476,7 +1478,7 @@ static int CmdHF14BDump(const char *Cmd) { PrintAndLogEx(SUCCESS, "found a " _GREEN_("%s") " tag", get_st_chip_model(chipid)); // detect blocksize from card :) - PrintAndLogEx(INFO, "reading tag memory from UID " _GREEN_("%s"), sprint_hex_inrow(SwapEndian64(card.uid, card.uidlen, 8), card.uidlen)); + PrintAndLogEx(INFO, "reading tag memory"); iso14b_raw_cmd_t *packet = (iso14b_raw_cmd_t *)calloc(1, sizeof(iso14b_raw_cmd_t) + 2); if (packet == NULL) { @@ -1530,7 +1532,6 @@ static int CmdHF14BDump(const char *Cmd) { continue; } - // last read if (blocknum == 0xFF) { // we reserved space for this block after 0x0F and 0x7F, ie 0x10, 0x80 From fd08617dfe8595862365c67c3d59a7421ce9d039 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jan 2024 10:36:54 +0100 Subject: [PATCH 1024/1034] text --- client/src/cmdhf14b.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 5141b216b..65f07cca8 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -848,12 +848,12 @@ static void print_ct_general_info(void *vcard) { static void print_hdr(void) { PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, " block# | data |lck| ascii"); - PrintAndLogEx(INFO, "---------+--------------+---+------"); + PrintAndLogEx(INFO, " block# | data |lck| ascii"); + PrintAndLogEx(INFO, "---------+-------------+---+------"); } static void print_footer(void) { - PrintAndLogEx(INFO, "---------+--------------+---+------"); + PrintAndLogEx(INFO, "---------+-------------+---+------"); PrintAndLogEx(NORMAL, ""); } @@ -893,7 +893,7 @@ static void print_sr_blocks(uint8_t *data, size_t len, const uint8_t *uid) { for (int i = 0; i < blocks; i++) { PrintAndLogEx(INFO, - "%3d/0x%02X | %s | %s | %s", + "%3d/0x%02X | %s| %s | %s", i, i, sprint_hex(data + (i * ST25TB_SR_BLOCK_SIZE), ST25TB_SR_BLOCK_SIZE), @@ -903,7 +903,7 @@ static void print_sr_blocks(uint8_t *data, size_t len, const uint8_t *uid) { } PrintAndLogEx(INFO, - "%3d/0x%02X | %s | %s | %s", + "%3d/0x%02X | %s| %s | %s", 0xFF, 0xFF, sprint_hex(systemblock, ST25TB_SR_BLOCK_SIZE), @@ -2199,7 +2199,10 @@ static int CmdHF14BView(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf 14b view", - "Print a ISO14443-B dump file (bin/eml/json)", + "Print a ISO14443-B dump file (bin/eml/json)\n" + "note:\n" + " - command expects the filename to contain a UID\n" + " which is needed to determine card memory type", "hf 14b view -f hf-14b-01020304-dump.bin" ); void *argtable[] = { From e69b46f6f66afa034751042654457828f22791ac Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jan 2024 13:07:43 +0100 Subject: [PATCH 1025/1034] logging enabled for 14b readblock.\nsupport for tearoff in 14b adpu\nfixed a bug in 14b raw when adding crc\n raw command should now not touch reserved emulator memory when freed --- armsrc/iso14443b.c | 50 +++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index 51ec78eab..512976d30 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -2241,26 +2241,23 @@ static int read_14b_srx_block(uint8_t blocknr, uint8_t *block) { void read_14b_st_block(uint8_t blocknr) { iso14443b_setup(); + set_tracing(true); + uint8_t *data = BigBuf_calloc(ISO14B_BLOCK_SIZE); iso14b_card_select_t *card = (iso14b_card_select_t *) BigBuf_calloc(sizeof(iso14b_card_select_t)); int res = iso14443b_select_srx_card(card); - // 0: OK -1 wrong len, -2: attrib fail, -3:crc fail, - switch (res) { - case PM3_ECARDEXCHANGE: - case PM3_ELENGTH: - case PM3_EWRONGANSWER: - case PM3_ECRC: { - reply_ng(CMD_HF_SRI_READ, res, NULL, 0); - goto out; - } + if (res != PM3_SUCCESS) { + reply_ng(CMD_HF_SRI_READ, res, NULL, 0); + goto out; } res = read_14b_srx_block(blocknr, data); reply_ng(CMD_HF_SRI_READ, res, data, ISO14B_BLOCK_SIZE); out: - BigBuf_free(); + set_tracing(false); + BigBuf_free_keep_EM(); switch_off(); } @@ -2520,28 +2517,38 @@ void SendRawCommand14443B_Ex(iso14b_raw_cmd_t *p) { if ((p->flags & ISO14B_APDU) == ISO14B_APDU) { - iso14b_raw_apdu_response_t packet = { - .response_byte = 0, - .datalen = 0, - }; - int responselen = 0; - status = iso14443b_apdu(p->raw, p->rawlen, (p->flags & ISO14B_SEND_CHAINING), buf, sizeof(buf), &packet.response_byte, &responselen); - packet.datalen = MIN(responselen, PM3_CMD_DATA_SIZE); - memcpy(packet.data, buf, packet.datalen); - reply_ng(CMD_HF_ISO14443B_COMMAND, status, (uint8_t*)&packet, sizeof(iso14b_raw_apdu_response_t) + packet.datalen); + uint8_t response_byte = 0; + status = iso14443b_apdu(p->raw, p->rawlen, (p->flags & ISO14B_SEND_CHAINING), buf, sizeof(buf), &response_byte, &responselen); + + if (tearoff_hook() == PM3_ETEAROFF) { // tearoff occurred + reply_ng(CMD_HF_ISO14443B_COMMAND, PM3_ETEAROFF, NULL, 0); + } else { + responselen = MIN(responselen, PM3_CMD_DATA_SIZE); + + iso14b_raw_apdu_response_t *payload = (iso14b_raw_apdu_response_t *)BigBuf_calloc( sizeof(iso14b_raw_apdu_response_t) + responselen); + payload->response_byte = response_byte; + payload->datalen = responselen; + memcpy(payload->data, buf, payload->datalen); + + reply_ng(CMD_HF_ISO14443B_COMMAND, status, (uint8_t*)payload, sizeof(iso14b_raw_apdu_response_t) + responselen); + BigBuf_free_keep_EM(); + } } if ((p->flags & ISO14B_RAW) == ISO14B_RAW) { + + uint8_t *raw = BigBuf_calloc(p->rawlen + 2); + memcpy(raw, p->raw, p->rawlen); if ( ((p->flags & ISO14B_APPEND_CRC) == ISO14B_APPEND_CRC) && (p->rawlen)) { - AddCrc14B(p->raw, p->rawlen); + AddCrc14B(raw, p->rawlen); p->rawlen += 2; } uint32_t start_time = 0; uint32_t eof_time = 0; - CodeAndTransmit14443bAsReader(p->raw, p->rawlen, &start_time, &eof_time, true); + CodeAndTransmit14443bAsReader(raw, p->rawlen, &start_time, &eof_time, true); FpgaDisableTracing(); if (tearoff_hook() == PM3_ETEAROFF) { // tearoff occurred @@ -2570,5 +2577,6 @@ out: if ((p->flags & ISO14B_DISCONNECT) == ISO14B_DISCONNECT) { switch_off(); // disconnect raw SpinDelay(20); + BigBuf_free_keep_EM(); } } From 17f4b95bdda6d13f37ef217c0b69023b7f9dfde1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jan 2024 13:09:38 +0100 Subject: [PATCH 1026/1034] removed user side timeout and improved debug messages --- client/src/cmdhf14b.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 65f07cca8..53d7431a6 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -174,7 +174,7 @@ static void hf14b_aid_search(bool verbose) { } } -static bool wait_14b_response(bool only_first, uint32_t timeout, uint8_t *datalen, uint8_t *data) { +static bool wait_14b_response(bool only_first, uint8_t *datalen, uint8_t *data) { /* We have scenarios. A - only select @@ -183,8 +183,8 @@ static bool wait_14b_response(bool only_first, uint32_t timeout, uint8_t *datale */ PacketResponseNG resp; - if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, MIN(TIMEOUT, timeout)) == false) { - PrintAndLogEx(WARNING, "timeout while waiting for reply"); + if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, TIMEOUT) == false) { + PrintAndLogEx(WARNING, "timeout while waiting for reply (first)"); return false; } @@ -194,6 +194,7 @@ static bool wait_14b_response(bool only_first, uint32_t timeout, uint8_t *datale } if (resp.status != PM3_SUCCESS) { + PrintAndLogEx(DEBUG, "first response failed... %d", resp.status); return false; } @@ -211,12 +212,13 @@ static bool wait_14b_response(bool only_first, uint32_t timeout, uint8_t *datale } // wait a second time. - if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, MIN(TIMEOUT, timeout)) == false) { + if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, TIMEOUT) == false) { PrintAndLogEx(WARNING, "timeout while waiting for reply"); return false; } if (resp.status != PM3_SUCCESS) { + PrintAndLogEx(DEBUG, "second response failed... %d", resp.status); return false; } @@ -1193,7 +1195,7 @@ static bool HF14B_other_reader(bool verbose) { SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)packet, sizeof(iso14b_raw_cmd_t) + packet->rawlen); // wait for the select message and wait for response - if (wait_14b_response(false, 400, NULL, NULL) ) { + if (wait_14b_response(false, NULL, NULL) ) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x000b3f80") " command"); switch_off_field_14b(); @@ -1206,7 +1208,7 @@ static bool HF14B_other_reader(bool verbose) { clearCommandBuffer(); SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)packet, sizeof(iso14b_raw_cmd_t) + packet->rawlen); - if (wait_14b_response(false, 400, NULL, NULL)) { + if (wait_14b_response(false, NULL, NULL)) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); PrintAndLogEx(SUCCESS, "Unknown tag type answered to a " _YELLOW_("0x0A") " command"); switch_off_field_14b(); @@ -1218,7 +1220,7 @@ static bool HF14B_other_reader(bool verbose) { clearCommandBuffer(); SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)packet, sizeof(iso14b_raw_cmd_t) + packet->rawlen); free(packet); - if (wait_14b_response(false, 400, NULL, NULL)) { + if (wait_14b_response(false, NULL, NULL)) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); PrintAndLogEx(SUCCESS, "Unknown tag type answered to a " _YELLOW_("0x0C") " command"); switch_off_field_14b(); From e5b4cbedb6401087b8afccb6cf48eb64afc6e96a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jan 2024 13:10:43 +0100 Subject: [PATCH 1027/1034] refactored 14b read and 14b write. Write now also tries to verify that block has changed --- client/src/cmdhf14b.c | 89 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 72 insertions(+), 17 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 53d7431a6..43e1c3bde 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -1041,6 +1041,57 @@ static int CmdHF14Binfo(const char *Cmd) { return infoHF14B(verbose, do_aid_search); } +static int read_sr_block(uint8_t blockno, uint8_t *out) { + struct { + uint8_t blockno; + } PACKED payload; + + payload.blockno = blockno; + + PacketResponseNG resp; + clearCommandBuffer(); + SendCommandNG(CMD_HF_SRI_READ, (uint8_t *)&payload, sizeof(payload)); + if (WaitForResponseTimeout(CMD_HF_SRI_READ, &resp, TIMEOUT) == false) { + return PM3_ETIMEOUT; + } + + if (resp.status == PM3_SUCCESS && out) { + memcpy(out, resp.data.asBytes, resp.length); + } + return resp.status; +} + +static int write_sr_block(uint8_t blockno, uint8_t datalen, uint8_t *data) { + + uint8_t psize = sizeof(iso14b_raw_cmd_t) + datalen + 2; + iso14b_raw_cmd_t *packet = (iso14b_raw_cmd_t *)calloc(1, psize); + if (packet == NULL) { + PrintAndLogEx(FAILED, "failed to allocate memory"); + return PM3_EMALLOC; + } + + packet->flags = (ISO14B_CONNECT | ISO14B_SELECT_SR | ISO14B_RAW | ISO14B_APPEND_CRC | ISO14B_DISCONNECT); + packet->timeout = 0; + packet->rawlen = 6; + packet->raw[0] = ISO14443B_WRITE_BLK; + packet->raw[1] = blockno; + packet->raw[2] = data[0]; + packet->raw[3] = data[1]; + packet->raw[4] = data[2]; + packet->raw[5] = data[3]; + + // SRx get and print general info about SRx chip from UID + clearCommandBuffer(); + SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)packet, psize); + free(packet); + + if (wait_14b_response(true, NULL, NULL) == false) { + PrintAndLogEx(FAILED, "SRx write block ( " _RED_("failed") " )" ); + return PM3_ESOFT; + } + return PM3_SUCCESS; +} + static bool HF14B_st_reader(bool verbose) { iso14b_raw_cmd_t packet = { @@ -1294,22 +1345,13 @@ static int CmdHF14BSriRdBl(const char *Cmd) { uint8_t cardtype = get_st_cardsize(card.uid); uint8_t blocks = (cardtype == 1) ? 0x7F : 0x0F; */ - struct { - uint8_t blockno; - } PACKED payload; - payload.blockno = blockno; - - PacketResponseNG resp; - clearCommandBuffer(); - SendCommandNG(CMD_HF_SRI_READ, (uint8_t *)&payload, sizeof(payload)); - if (WaitForResponseTimeout(CMD_HF_SRI_READ, &resp, TIMEOUT) == false) { - return PM3_ETIMEOUT; + uint8_t out[4] = {0}; + int status = read_sr_block(blockno, out); + if (status == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "block %02u... " _GREEN_("%s") " | " _GREEN_("%s"), blockno, sprint_hex(out, sizeof(out)), sprint_ascii(out, sizeof(out))); } - if (resp.status == PM3_SUCCESS) { - PrintAndLogEx(SUCCESS, "block %02u : " _GREEN_("%s") " | " _GREEN_("%s"), blockno, sprint_hex(resp.data.asBytes, resp.length), sprint_ascii(resp.data.asBytes, resp.length)); - } - return resp.status; + return status; } // New command to write a SRI512/SRIX4K tag. @@ -1394,9 +1436,22 @@ static int CmdHF14BWriteSri(const char *Cmd) { ); } - char str[36] = {0x00}; - snprintf(str, sizeof(str), "--sr -c --data %02x%02x%02x%02x%02x%02x", ISO14443B_WRITE_BLK, blockno, data[0], data[1], data[2], data[3]); - return CmdHF14BCmdRaw(str); + int status = write_sr_block(blockno, 4, data); + if (status != PM3_SUCCESS) { + return status; + } + + // verify + uint8_t out[4] = {0}; + status = read_sr_block(blockno, out); + if (status == PM3_SUCCESS) { + if (memcmp(data, out, 4) == 0) { + PrintAndLogEx(SUCCESS, "SRx write block ( " _GREEN_("ok") " )" ); + } + } else { + PrintAndLogEx(INFO, "Verifying block ( " _RED_("failed") " )"); + } + return status; } // need to write to file From 814dc8652dc60fa5a2717b7cc710e36bfd63f4f5 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jan 2024 13:11:47 +0100 Subject: [PATCH 1028/1034] change 14b sriwrite, now supports a force option to override block checks. Good for devices like Gentilkiwis... --- client/src/cmdhf14b.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 43e1c3bde..2f131df2f 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -1369,7 +1369,8 @@ static int CmdHF14BWriteSri(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf 14b sriwrite", - "Write data to a SRI512 or SRIX4K block", + "Write data to a SRI512 or SRIX4K block\n" + "If writing to a block out-of-range, use --force to override checks", "hf 14b sriwrite --4k -b 100 -d 11223344\n" "hf 14b sriwrite --4k --sb -d 11223344 --> special block write\n" "hf 14b sriwrite --512 -b 15 -d 11223344\n" @@ -1383,6 +1384,7 @@ static int CmdHF14BWriteSri(const char *Cmd) { arg_lit0(NULL, "512", "target SRI 512 tag"), arg_lit0(NULL, "4k", "target SRIX 4k tag"), arg_lit0(NULL, "sb", "special block write at end of memory (0xFF)"), + arg_lit0(NULL, "force", "overrides block range checks"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -1398,6 +1400,7 @@ static int CmdHF14BWriteSri(const char *Cmd) { bool use_sri512 = arg_get_lit(ctx, 3); bool use_srix4k = arg_get_lit(ctx, 4); bool special = arg_get_lit(ctx, 5); + bool override = arg_get_lit(ctx, 6); CLIParserFree(ctx); if (dlen != sizeof(data)) { @@ -1411,13 +1414,21 @@ static int CmdHF14BWriteSri(const char *Cmd) { } if (use_srix4k && blockno > 0x7F) { - PrintAndLogEx(FAILED, "block number out of range, max 127 (0x7F)"); - return PM3_EINVARG; + PrintAndLogEx(FAILED, "block number out of range, max 127 (0x7F), got " _RED_("%u"), blockno); + if (override) { + PrintAndLogEx(INFO, "overriding block check"); + } else { + return PM3_EINVARG; + } } if (use_sri512 && blockno > 0x0F) { - PrintAndLogEx(FAILED, "block number out of range, max 15 (0x0F)"); - return PM3_EINVARG; + PrintAndLogEx(FAILED, "block number out of range, max 15 (0x0F), got " _RED_("%u"), blockno); + if (override) { + PrintAndLogEx(INFO, "overriding block check"); + } else { + return PM3_EINVARG; + } } // special block at end of memory From 42cd0e37e0ef87fb9df199a5fcb157875ab3dbfd Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jan 2024 13:14:53 +0100 Subject: [PATCH 1029/1034] text --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85e23a2e5..8cadedcca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf 14b sriwrbl` - now supports --force to override block checks. Thanks @gentilkiwi for the idea! (@iceman1001) + - Changed `hf 14b sriwrbl` - now tries to verify the write (@iceman1001) + - Changed `hf 14b apdu` - now supports tearoff (@iceman1001) + - Fixed `hf 14b raw` - fixed a potential write out of bounds. (@iceman1001) - Fixed `hf 14b` commands got some serious overhaul and love. Better return values and packet handling (@iceman1001) - Changed `hf waveshare` - image is automatically scaled and cropped to match panel size (@socram8888) - Changed `hf waveshare` - image loading and processing is now done using [GDlib](https://github.com/libgd/libgd) (@socram8888) From 8b61e28081d4a3aa99a26780238be8a7377e86e5 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jan 2024 15:40:40 +0100 Subject: [PATCH 1030/1034] changed to defines and prepped to identify st25B... --- client/src/cmdhf14b.c | 82 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 68 insertions(+), 14 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 2f131df2f..7c416fb86 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -45,6 +45,18 @@ // for static arrays #define ST25TB_SR_BLOCK_SIZE 4 + +// SR memory sizes +#define SR_SIZE_512 1 +#define SR_SIZE_4K 2 +// ST235 memory sizes +#define ST25_SIZE_512 3 +#define ST25_SIZE_2K 4 +#define ST25_SIZE_4K 5 + + + + // iso14b apdu input frame length static uint16_t apdu_frame_length = 0; //static uint16_t ats_fsc[] = {16, 24, 32, 40, 48, 64, 96, 128, 256}; @@ -619,8 +631,8 @@ static int print_atqb_resp(uint8_t *data, uint8_t cid) { } // get SRx chip model (from UID) // from ST Microelectronics -static const char *get_st_chip_model(uint8_t data) { - switch (data) { +static const char *get_st_chip_model(uint8_t id) { + switch (id) { case 0x0: return "SRIX4K (Special)"; case 0x2: @@ -636,10 +648,27 @@ static const char *get_st_chip_model(uint8_t data) { case 0xC: return "SRT512"; default : - return "Unknown"; + return ""; } } +/* +static const char *get_st25_chip_model(uint8_t id) { + switch (id) { + case 0x1B: + return "ST25TB512-AC"; + case 0x33: + return "ST25TB512-AT"; + case 0x3F: + return "ST25TB02K"; + case 0x1F: + return "ST25TB04K"; + default: + return ""; + } +} +*/ + #define ST_LOCK_INFO_EMPTY " " static const char *get_st_lock_info(uint8_t model, const uint8_t *lockbytes, uint8_t blk) { if (blk > 15) { @@ -806,23 +835,45 @@ static uint8_t get_st_chipid(const uint8_t *uid) { return uid[5] >> 2; } +/* +static uint8_t get_st25_chipid(const uint8_t *uid) { + return uid[5]; +} +*/ + static uint8_t get_st_cardsize(const uint8_t *uid) { uint8_t chipid = get_st_chipid(uid); switch (chipid) { case 0x0: case 0x3: - case 0x7: - return 1; + case 0x7: + return SR_SIZE_4K; case 0x4: case 0x6: case 0xC: - return 2; + return SR_SIZE_512; default: return 0; } - return 0; } +/* +static uint8_t get_st25_cardsize(const uint8_t *uid) { + uint8_t chipid = get_st25_chipid(uid); + switch (chipid) { + case 0x1B: + case 0x33: + return ST25_SIZE_512; + case 0x1F: + return ST25_SIZE_4K; + case 0x3F: + return ST25_SIZE_2K; + default: + return 0; + } +} +*/ + // print UID info from SRx chips (ST Microelectronics) static void print_st_general_info(uint8_t *data, uint8_t len) { //uid = first 8 bytes in data @@ -1531,11 +1582,11 @@ static int CmdHF14BDump(const char *Cmd) { uint16_t cardsize = 0; switch (cardtype) { - case 2: + case SR_SIZE_512: cardsize = (512 / 8) + ST25TB_SR_BLOCK_SIZE; lastblock = 0x0F; break; - case 1: + case SR_SIZE_4K: default: cardsize = (4096 / 8) + ST25TB_SR_BLOCK_SIZE; lastblock = 0x7F; @@ -1764,10 +1815,11 @@ int select_card_14443b_4(bool disconnect, iso14b_card_select_t *card) { memset(card, 0, sizeof(iso14b_card_select_t)); } + SetAPDULogging(true); switch_off_field_14b(); iso14b_raw_cmd_t packet = { - .flags = (ISO14B_CONNECT | ISO14B_SELECT_STD), + .flags = (ISO14B_CONNECT | ISO14B_SELECT_STD | ISO14B_CLEARTRACE), .timeout = 0, .rawlen = 0, }; @@ -1778,13 +1830,13 @@ int select_card_14443b_4(bool disconnect, iso14b_card_select_t *card) { PrintAndLogEx(INFO, "Trying 14B Select SRx"); // Anticollision + SELECT SR card - packet.flags = (ISO14B_CONNECT | ISO14B_SELECT_SR); + packet.flags = (ISO14B_CONNECT | ISO14B_SELECT_SR | ISO14B_CLEARTRACE); SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)&packet, sizeof(iso14b_raw_cmd_t)); if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, TIMEOUT) == false) { PrintAndLogEx(INFO, "Trying 14B Select CTS"); // Anticollision + SELECT ASK C-Ticket card - packet.flags = (ISO14B_CONNECT | ISO14B_SELECT_CTS); + packet.flags = (ISO14B_CONNECT | ISO14B_SELECT_CTS | ISO14B_CLEARTRACE); SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)&packet, sizeof(iso14b_raw_cmd_t)); if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, TIMEOUT) == false) { PrintAndLogEx(ERR, "connection timeout"); @@ -1940,8 +1992,9 @@ int exchange_14b_apdu(uint8_t *datain, int datainlen, bool activate_field, *dataoutlen = 0; res = handle_14b_apdu(chainBlockNotLast, &datain[clen], vlen, v_activate_field, dataout, maxdataoutlen, dataoutlen, &chaining, user_timeout); if (res) { - if (leave_signal_on == false) + if (leave_signal_on == false) { switch_off_field_14b(); + } return 200; } @@ -1959,8 +2012,9 @@ int exchange_14b_apdu(uint8_t *datain, int datainlen, bool activate_field, clen += vlen; v_activate_field = false; if (*dataoutlen) { - if (clen != datainlen) + if (clen != datainlen) { PrintAndLogEx(ERR, "APDU: I-block/R-block sequence error. Data len=%d, Sent=%d, Last packet len=%d", datainlen, clen, *dataoutlen); + } break; } } while (clen < datainlen); From 0d24e8252f4892fa19656a893f77e321839857fb Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jan 2024 21:37:29 +0100 Subject: [PATCH 1031/1034] wrong format string --- client/src/cmdhfcryptorf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfcryptorf.c b/client/src/cmdhfcryptorf.c index 55a9802be..1f2a18229 100644 --- a/client/src/cmdhfcryptorf.c +++ b/client/src/cmdhfcryptorf.c @@ -323,7 +323,7 @@ static int CmdHFCryptoRFDump(const char *Cmd) { // select if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, 2000)) { if (resp.status != PM3_SUCCESS) { - PrintAndLogEx(FAILED, "failed to select %" PRId64 "]", resp.status); + PrintAndLogEx(FAILED, "failed to select %d]", resp.status); free(packet); return switch_off_field_cryptorf(); } From 641308e29cec2fd1429a0abc5495efd5c26a84c5 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 10 Jan 2024 09:24:52 +0100 Subject: [PATCH 1032/1034] detection --- client/src/cmdhfmf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 951130506..8a158f3b8 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8966,6 +8966,7 @@ static int CmdHF14AMfInfo(const char *Cmd) { if ( (blockdata[8] == 0x03 && blockdata[15] == 0x90) || (blockdata[9] == 0x02 && blockdata[14] == 0x1D) || + (blockdata[8] == 0x04 && blockdata[15] == 0x90) || (memcmp(blockdata + 8, "\x62\x63\x64\x65\x66\x67\x68\x69", 8) == 0) ) { PrintAndLogEx(SUCCESS, " Fudan tag detected"); From 0b9191185b61f6f968b2eac7dee75d0fa3f324cd Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 10 Jan 2024 15:04:23 +0100 Subject: [PATCH 1033/1034] "emv reader" - make apdu logging based on verbose flag and honor previous set value. In case we ever do this in Preferences --- client/src/emv/cmdemv.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 56a07386f..af7255575 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -2719,6 +2719,9 @@ static int CmdEMVReader(const char *Cmd) { PrintAndLogEx(INFO, "Press " _GREEN_("<Enter>") " to exit"); } + bool old_logging = GetAPDULogging(); + SetAPDULogging(verbose); + uint8_t AID[APDU_AID_LEN] = {0}; size_t AIDlen = 0; uint8_t buf[APDU_RES_LEN] = {0}; @@ -2887,6 +2890,8 @@ static int CmdEMVReader(const char *Cmd) { } while (continuous); DropFieldEx(channel); + + SetAPDULogging(old_logging); return PM3_SUCCESS; } From 261760e903573144bd2cf08479fa2b914d2f23dc Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 10 Jan 2024 22:04:38 +0100 Subject: [PATCH 1034/1034] adapted the colors when setting and getting preference values.\n`prefs set client.debug` - now toggles client side APDY logging --- CHANGELOG.md | 1 + client/src/preferences.c | 124 +++++++++++++++++++++++++++------------ 2 files changed, 89 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8cadedcca..ceaea4f56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `prefs set client.debug` - now also toggles the client side APDU logging (@iceman1001) - Changed `hf 14b sriwrbl` - now supports --force to override block checks. Thanks @gentilkiwi for the idea! (@iceman1001) - Changed `hf 14b sriwrbl` - now tries to verify the write (@iceman1001) - Changed `hf 14b apdu` - now supports tearoff (@iceman1001) diff --git a/client/src/preferences.c b/client/src/preferences.c index 8ceab2bb5..09521cab4 100644 --- a/client/src/preferences.c +++ b/client/src/preferences.c @@ -122,7 +122,7 @@ int preferences_save(void) { PrintAndLogEx(INFO, "No preferences file will be saved"); return PM3_SUCCESS; } - PrintAndLogEx(INFO, "Saving preferences..."); + PrintAndLogEx(DEBUG, "Saving preferences..."); char *fn = prefGetFilename(); int fn_len = strlen(fn) + 5; // .bak\0 @@ -279,6 +279,12 @@ void preferences_load_callback(json_t *root) { if (strncmp(tempStr, "off", 3) == 0) g_session.client_debug_level = cdbOFF; if (strncmp(tempStr, "simple", 6) == 0) g_session.client_debug_level = cdbSIMPLE; if (strncmp(tempStr, "full", 4) == 0) g_session.client_debug_level = cdbFULL; + + if (g_session.client_debug_level == cdbOFF) { + SetAPDULogging(false); + } else { + SetAPDULogging(true); + } } // default save path @@ -368,62 +374,97 @@ void preferences_load_callback(json_t *root) { // Preference Processing Functions // typedef enum preferenceId {prefNONE,prefHELP,prefEMOJI,prefCOLOR,prefPLOT,prefOVERLAY,prefHINTS,prefCLIENTDEBUG} preferenceId_t; -typedef enum prefShowOpt {prefShowNone, prefShowOLD, prefShowNEW} prefShowOpt_t; +typedef enum prefShowOpt {prefShowNone, prefShowOLD, prefShowNEW, prefShowOff, prefShowUnknown} prefShowOpt_t; -static const char *prefShowMsg(prefShowOpt_t Opt) { - switch (Opt) { +static const char *pref_show_status_msg(prefShowOpt_t opt) { + switch (opt) { case prefShowOLD: - return "( " _YELLOW_("old") " )"; + return "( " _CYAN_("old") " )"; case prefShowNEW: return "( " _GREEN_("new") " )"; case prefShowNone: + case prefShowOff: + case prefShowUnknown: + default: + return ""; + + } +} + +static const char *pref_show_value(prefShowOpt_t opt, const char* msg) { + + static char s[128] = {0}; + switch (opt) { + case prefShowOLD: + sprintf(s, _CYAN_("%s"), msg); + return s; + + case prefShowNEW: + sprintf(s, _GREEN_("%s"), msg); + return s; + case prefShowNone: + if ((strncmp(msg, "off", 3) == 0) || (strncmp(msg, "normal", 6) ==0)) { + sprintf(s, _WHITE_("%s"), msg); + } else { + sprintf(s, _GREEN_("%s"), msg); + } + return s; + + case prefShowOff: + sprintf(s, _WHITE_("%s"), msg); + return s; + + case prefShowUnknown: + sprintf(s, _RED_("%s"), msg); + return s; + + default: return ""; } - return ""; } + static void showEmojiState(prefShowOpt_t opt) { switch (g_session.emoji_mode) { case EMO_ALIAS: - PrintAndLogEx(INFO, " %s emoji................... "_GREEN_("alias"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s emoji................... %s", pref_show_status_msg(opt), pref_show_value(opt, "alias")); break; case EMO_EMOJI: - PrintAndLogEx(INFO, " %s emoji................... "_GREEN_("emoji"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s emoji................... %s", pref_show_status_msg(opt), pref_show_value(opt, "emoji")); break; case EMO_ALTTEXT: - PrintAndLogEx(INFO, " %s emoji................... "_GREEN_("alttext"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s emoji................... %s", pref_show_status_msg(opt), pref_show_value(opt, "alttext")); break; case EMO_NONE: - PrintAndLogEx(INFO, " %s emoji................... "_GREEN_("none"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s emoji................... %s", pref_show_status_msg(opt), pref_show_value(opt, "none")); break; default: - PrintAndLogEx(INFO, " %s emoji................... "_RED_("unknown"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s emoji................... %s", pref_show_status_msg(opt), pref_show_value(prefShowUnknown, "unknown")); } } static void showColorState(prefShowOpt_t opt) { - - if (g_session.supports_colors) - PrintAndLogEx(INFO, " %s color................... "_GREEN_("ansi"), prefShowMsg(opt)); - else - PrintAndLogEx(INFO, " %s color................... "_WHITE_("off"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s color................... %s " + , pref_show_status_msg(opt) + , (g_session.supports_colors) ? pref_show_value(opt, "ansi") : pref_show_value(opt, "off") + ); } static void showClientDebugState(prefShowOpt_t opt) { switch (g_session.client_debug_level) { case cdbOFF: - PrintAndLogEx(INFO, " %s client debug............ "_WHITE_("off"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s client debug............ %s", pref_show_status_msg(opt), pref_show_value(opt, "off")); break; case cdbSIMPLE: - PrintAndLogEx(INFO, " %s client debug............ "_GREEN_("simple"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s client debug............ %s", pref_show_status_msg(opt), pref_show_value(opt, "simple")); break; case cdbFULL: - PrintAndLogEx(INFO, " %s client debug............ "_GREEN_("full"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s client debug............ %s", pref_show_status_msg(opt), pref_show_value(opt,"full")); break; default: - PrintAndLogEx(INFO, " %s client debug............ "_RED_("unknown"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s client debug............ %s", pref_show_status_msg(opt), pref_show_value(prefShowUnknown, "unknown")); } } /* @@ -471,12 +512,12 @@ static void showSavePathState(savePaths_t path_index, prefShowOpt_t opt) { if (path_index < spItemCount) { if ((g_session.defaultPaths[path_index] == NULL) || (strcmp(g_session.defaultPaths[path_index], "") == 0)) { PrintAndLogEx(INFO, " %s %s "_WHITE_("not set"), - prefShowMsg(opt), + pref_show_status_msg(opt), s ); } else { PrintAndLogEx(INFO, " %s %s "_GREEN_("%s"), - prefShowMsg(opt), + pref_show_status_msg(opt), s, g_session.defaultPaths[path_index] ); @@ -503,39 +544,41 @@ static void showOverlayPosState(void) { } static void showHintsState(prefShowOpt_t opt) { - if (g_session.show_hints) - PrintAndLogEx(INFO, " %s hints................... "_GREEN_("on"), prefShowMsg(opt)); - else - PrintAndLogEx(INFO, " %s hints................... "_WHITE_("off"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s hints................... %s" + , pref_show_status_msg(opt) + , (g_session.show_hints) ? pref_show_value(opt,"on") : pref_show_value(opt,"off") + ); } static void showPlotSliderState(prefShowOpt_t opt) { - if (g_session.overlay_sliders) - PrintAndLogEx(INFO, " %s show plot sliders....... "_GREEN_("on"), prefShowMsg(opt)); - else - PrintAndLogEx(INFO, " %s show plot sliders....... "_WHITE_("off"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s show plot sliders....... %s" + , pref_show_status_msg(opt) + , (g_session.overlay_sliders) ? pref_show_value(opt,"on") : pref_show_value(opt,"off") + ); } static void showBarModeState(prefShowOpt_t opt) { switch (g_session.bar_mode) { case STYLE_BAR: - PrintAndLogEx(INFO, " %s barmode................. "_GREEN_("bar"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s barmode................. %s", pref_show_status_msg(opt), pref_show_value(opt,"bar")); break; case STYLE_MIXED: - PrintAndLogEx(INFO, " %s barmode................. "_GREEN_("mixed"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s barmode................. %s", pref_show_status_msg(opt), pref_show_value(opt,"mixed")); break; case STYLE_VALUE: - PrintAndLogEx(INFO, " %s barmode................. "_GREEN_("value"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s barmode................. %s", pref_show_status_msg(opt), pref_show_value(opt,"value")); break; default: - PrintAndLogEx(INFO, " %s barmode................ "_RED_("unknown"), prefShowMsg(opt)); + PrintAndLogEx(INFO, " %s barmode................. %s", pref_show_status_msg(opt), pref_show_value(prefShowUnknown,"unknown")); } } static void showOutputState(prefShowOpt_t opt) { - PrintAndLogEx(INFO, " %s output.................. %s", prefShowMsg(opt), - g_session.dense_output ? _GREEN_("dense") : _WHITE_("normal")); + PrintAndLogEx(INFO, " %s output.................. %s" + , pref_show_status_msg(opt) + , (g_session.dense_output) ? pref_show_value(opt,"dense") : pref_show_value(opt,"normal") + ); } static void showClientExeDelayState(void) { @@ -674,9 +717,11 @@ static int setCmdDebug(const char *Cmd) { if (use_off) { new_value = cdbOFF; } + if (use_simple) { new_value = cdbSIMPLE; } + if (use_full) { new_value = cdbFULL; } @@ -685,6 +730,13 @@ static int setCmdDebug(const char *Cmd) { showClientDebugState(prefShowOLD); g_session.client_debug_level = new_value; g_debugMode = new_value; + + if (new_value == cdbOFF) { + SetAPDULogging(false); + } else { + SetAPDULogging(true); + } + showClientDebugState(prefShowNEW); preferences_save(); } else {

        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 b`uX+iKd&!;K0V?oKRw>O`Skm5Pmliqaj6pA literal 0 HcmV?d00001 From 6781dadc303b4850a96b5011f9880a8ca8487cd4 Mon Sep 17 00:00:00 2001 From: Anton Todorov Date: Sun, 6 Aug 2023 14:27:58 +0300 Subject: [PATCH 0365/1034] emv: display the transaction time as HH:MM:SS in the transaction log Signed-off-by: Anton Todorov --- client/src/emv/cmdemv.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 2282698d5..c322f6406 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -233,6 +233,11 @@ static int emv_parse_log(struct tlvdb *ttdb, const uint8_t *d, size_t n) { PrintAndLogEx(INFO, "%-30s... " _YELLOW_("20%02x-%02x-%02x"), s, d[pos], d[pos + 1], d[pos + 2]); } break; + case 0x9F21: + if (tpitem->len == 3) { + PrintAndLogEx(INFO, "%-30s... " _YELLOW_("%02x:%02x:%02x"), s, d[pos], d[pos + 1], d[pos + 2]); + } + break; default: PrintAndLogEx(INFO, "%-30s... " _YELLOW_("%s"), s, sprint_hex_inrow(d + pos, tpitem->len)); break; From 5e71621c692784ec99abd0612b8ac9db1d9cc46c Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 20:52:21 -0700 Subject: [PATCH 0366/1034] `const` improvement for BigBuf.h --- armsrc/BigBuf.c | 6 +++--- armsrc/BigBuf.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index 29f270b80..b622e013b 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -233,7 +233,7 @@ uint32_t BigBuf_get_traceLen(void) { by 'hf list -t raw', alternatively 'hf list -t ' for protocol-specific annotation of commands/responses. **/ -bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_start, uint32_t timestamp_end, uint8_t *parity, bool reader2tag) { +bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_start, uint32_t timestamp_end, const uint8_t *parity, bool reader2tag) { if (tracing == false) { return false; } @@ -290,7 +290,7 @@ bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_ } // specific LogTrace function for ISO15693: the duration needs to be scaled because otherwise it won't fit into a uint16_t -bool LogTrace_ISO15693(const uint8_t *bytes, uint16_t len, uint32_t ts_start, uint32_t ts_end, uint8_t *parity, bool reader2tag) { +bool LogTrace_ISO15693(const uint8_t *bytes, uint16_t len, uint32_t ts_start, uint32_t ts_end, const uint8_t *parity, bool reader2tag) { uint32_t duration = ts_end - ts_start; duration /= 32; ts_end = ts_start + duration; @@ -306,7 +306,7 @@ bool RAMFUNC LogTraceBits(const uint8_t *btBytes, uint16_t bitLen, uint32_t time } // Emulator memory -uint8_t emlSet(uint8_t *data, uint32_t offset, uint32_t length) { +uint8_t emlSet(const uint8_t *data, uint32_t offset, uint32_t length) { uint8_t *mem = BigBuf_get_EM_addr(); if (offset + length <= CARD_MEMORY_SIZE) { memcpy(mem + offset, data, length); diff --git a/armsrc/BigBuf.h b/armsrc/BigBuf.h index 81c2fbdfc..0938bd555 100644 --- a/armsrc/BigBuf.h +++ b/armsrc/BigBuf.h @@ -51,11 +51,11 @@ void set_tracing(bool enable); void set_tracelen(uint32_t value); bool get_tracing(void); -bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_start, uint32_t timestamp_end, uint8_t *parity, bool reader2tag); +bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_start, uint32_t timestamp_end, const uint8_t *parity, bool reader2tag); bool RAMFUNC LogTraceBits(const uint8_t *btBytes, uint16_t bitLen, uint32_t timestamp_start, uint32_t timestamp_end, bool reader2tag); -bool LogTrace_ISO15693(const uint8_t *bytes, uint16_t len, uint32_t ts_start, uint32_t ts_end, uint8_t *parity, bool reader2tag); +bool LogTrace_ISO15693(const uint8_t *bytes, uint16_t len, uint32_t ts_start, uint32_t ts_end, const uint8_t *parity, bool reader2tag); -uint8_t emlSet(uint8_t *data, uint32_t offset, uint32_t length); +uint8_t emlSet(const uint8_t *data, uint32_t offset, uint32_t length); uint8_t emlGet(uint8_t *out, uint32_t offset, uint32_t length); typedef struct { From 5bd8058113dcc9f9b701f029fe35853f937a7274 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 21:03:36 -0700 Subject: [PATCH 0367/1034] More `const` enabled --- armsrc/cmd.c | 6 +++--- armsrc/cmd.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/armsrc/cmd.c b/armsrc/cmd.c index c179ed2a9..f2b432d33 100644 --- a/armsrc/cmd.c +++ b/armsrc/cmd.c @@ -26,7 +26,7 @@ bool g_reply_with_crc_on_fpc = true; bool g_reply_via_fpc = false; bool g_reply_via_usb = false; -int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *data, size_t len) { +int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, const void *data, size_t len) { PacketResponseOLD txcmd = {CMD_UNKNOWN, {0, 0, 0}, {{0}}}; // for (size_t i = 0; i < sizeof(PacketResponseOLD); i++) @@ -42,7 +42,7 @@ int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *d if (data && len) { len = MIN(len, PM3_CMD_DATA_SIZE); for (size_t i = 0; i < len; i++) { - txcmd.d.asBytes[i] = ((uint8_t *)data)[i]; + txcmd.d.asBytes[i] = ((const uint8_t *)data)[i]; } } @@ -135,7 +135,7 @@ int reply_ng(uint16_t cmd, int16_t status, const uint8_t *data, size_t len) { return reply_ng_internal(cmd, status, data, len, true); } -int reply_mix(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *data, size_t len) { +int reply_mix(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, const void *data, size_t len) { int16_t status = PM3_SUCCESS; uint64_t arg[3] = {arg0, arg1, arg2}; if (len > PM3_CMD_DATA_SIZE - sizeof(arg)) { diff --git a/armsrc/cmd.h b/armsrc/cmd.h index b578db8e8..22a79ce16 100644 --- a/armsrc/cmd.h +++ b/armsrc/cmd.h @@ -27,9 +27,9 @@ extern bool g_reply_with_crc_on_fpc; extern bool g_reply_via_fpc; extern bool g_reply_via_usb; -int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *data, size_t len); +int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, const void *data, size_t len); int reply_ng(uint16_t cmd, int16_t status, const uint8_t *data, size_t len); -int reply_mix(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *data, size_t len); +int reply_mix(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, const void *data, size_t len); int receive_ng(PacketCommandNG *rx); #endif // _PROXMARK_CMD_H_ From 7801abf7a5dd119ae722677850947140d1a9b438 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 21:06:17 -0700 Subject: [PATCH 0368/1034] Localize effect of unused macro --- armsrc/dbprint.h | 28 ---------------------------- armsrc/usart.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/armsrc/dbprint.h b/armsrc/dbprint.h index b1a7753da..f22f965c5 100644 --- a/armsrc/dbprint.h +++ b/armsrc/dbprint.h @@ -22,34 +22,6 @@ #include "common.h" #include "ansi.h" -#define Dbprintf_usb(...) {\ - bool tmpfpc = g_reply_via_fpc;\ - bool tmpusb = g_reply_via_usb;\ - g_reply_via_fpc = false;\ - g_reply_via_usb = true;\ - Dbprintf(__VA_ARGS__);\ - g_reply_via_fpc = tmpfpc;\ - g_reply_via_usb = tmpusb;} - -#define Dbprintf_fpc(...) {\ - bool tmpfpc = g_reply_via_fpc;\ - bool tmpusb = g_reply_via_usb;\ - g_reply_via_fpc = true;\ - g_reply_via_usb = false;\ - Dbprintf(__VA_ARGS__);\ - g_reply_via_fpc = tmpfpc;\ - g_reply_via_usb = tmpusb;} - -#define Dbprintf_all(...) {\ - bool tmpfpc = g_reply_via_fpc;\ - bool tmpusb = g_reply_via_usb;\ - g_reply_via_fpc = true;\ - g_reply_via_usb = true;\ - Dbprintf(__VA_ARGS__);\ - g_reply_via_fpc = tmpfpc;\ - g_reply_via_usb = tmpusb;} - - void DbpString(const char *str); void DbpStringEx(uint32_t flags, const char *src, size_t srclen); void Dbprintf(const char *fmt, ...); diff --git a/armsrc/usart.c b/armsrc/usart.c index 915d4a445..a205acb03 100644 --- a/armsrc/usart.c +++ b/armsrc/usart.c @@ -18,6 +18,34 @@ #include "usart.h" #include "proxmark3_arm.h" +#define Dbprintf_usb(...) {\ + bool tmpfpc = g_reply_via_fpc;\ + bool tmpusb = g_reply_via_usb;\ + g_reply_via_fpc = false;\ + g_reply_via_usb = true;\ + Dbprintf(__VA_ARGS__);\ + g_reply_via_fpc = tmpfpc;\ + g_reply_via_usb = tmpusb;} + +#define Dbprintf_fpc(...) {\ + bool tmpfpc = g_reply_via_fpc;\ + bool tmpusb = g_reply_via_usb;\ + g_reply_via_fpc = true;\ + g_reply_via_usb = false;\ + Dbprintf(__VA_ARGS__);\ + g_reply_via_fpc = tmpfpc;\ + g_reply_via_usb = tmpusb;} + +#define Dbprintf_all(...) {\ + bool tmpfpc = g_reply_via_fpc;\ + bool tmpusb = g_reply_via_usb;\ + g_reply_via_fpc = true;\ + g_reply_via_usb = true;\ + Dbprintf(__VA_ARGS__);\ + g_reply_via_fpc = tmpfpc;\ + g_reply_via_usb = tmpusb;} + + static volatile AT91PS_USART pUS1 = AT91C_BASE_US1; static volatile AT91PS_PIO pPIO = AT91C_BASE_PIOA; static volatile AT91PS_PDC pPDC = AT91C_BASE_PDC_US1; From 31645c56b0f226b1cf29ad52282a59b64bd99f5f Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 21:09:31 -0700 Subject: [PATCH 0369/1034] more use of `const` --- armsrc/dbprint.c | 6 +++--- armsrc/dbprint.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/armsrc/dbprint.c b/armsrc/dbprint.c index 7be7bba4c..218223231 100644 --- a/armsrc/dbprint.c +++ b/armsrc/dbprint.c @@ -74,7 +74,7 @@ void Dbprintf(const char *fmt, ...) { } // prints HEX & ASCII -void Dbhexdump(int len, uint8_t *d, bool bAsci) { +void Dbhexdump(int len, const uint8_t *d, bool bAsci) { #if DEBUG char ascii[9]; @@ -103,9 +103,9 @@ void Dbhexdump(int len, uint8_t *d, bool bAsci) { #endif } -void print_result(const char *name, uint8_t *buf, size_t len) { +void print_result(const char *name, const uint8_t *buf, size_t len) { - uint8_t *p = buf; + const uint8_t *p = buf; uint16_t tmp = len & 0xFFF0; for (; p - buf < tmp; p += 16) { diff --git a/armsrc/dbprint.h b/armsrc/dbprint.h index f22f965c5..0795db274 100644 --- a/armsrc/dbprint.h +++ b/armsrc/dbprint.h @@ -26,8 +26,8 @@ void DbpString(const char *str); void DbpStringEx(uint32_t flags, const char *src, size_t srclen); void Dbprintf(const char *fmt, ...); void DbprintfEx(uint32_t flags, const char *fmt, ...); -void Dbhexdump(int len, uint8_t *d, bool bAsci); -void print_result(const char *name, uint8_t *buf, size_t len); +void Dbhexdump(int len, const uint8_t *d, bool bAsci); +void print_result(const char *name, const uint8_t *buf, size_t len); //void PrintToSendBuffer(void); #endif From b279df2d46ea116707873cea213b6c5a243a2d4c Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 22:50:34 -0700 Subject: [PATCH 0370/1034] more const - spiffs --- armsrc/spiffs.c | 40 ++++++++++++++++++++-------------------- armsrc/spiffs.h | 22 +++++++++++----------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/armsrc/spiffs.c b/armsrc/spiffs.c index e243b8ed1..9659dc77b 100644 --- a/armsrc/spiffs.c +++ b/armsrc/spiffs.c @@ -196,7 +196,7 @@ int rdv40_spiffs_check(void) { ///// Base RDV40_SPIFFS_SAFETY_NORMAL operations//////////////////////////////// -void write_to_spiffs(const char *filename, uint8_t *src, uint32_t size) { +void write_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { spiffs_file fd = SPIFFS_open(&fs, filename, SPIFFS_CREAT | SPIFFS_TRUNC | SPIFFS_RDWR, 0); if (SPIFFS_write(&fs, fd, src, size) < 0) { Dbprintf("wr errno %i\n", SPIFFS_errno(&fs)); @@ -204,7 +204,7 @@ void write_to_spiffs(const char *filename, uint8_t *src, uint32_t size) { SPIFFS_close(&fs, fd); } -void append_to_spiffs(const char *filename, uint8_t *src, uint32_t size) { +void append_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { spiffs_file fd = SPIFFS_open(&fs, filename, SPIFFS_APPEND | SPIFFS_RDWR, 0); if (SPIFFS_write(&fs, fd, src, size) < 0) { Dbprintf("errno %i\n", SPIFFS_errno(&fs)); @@ -310,10 +310,10 @@ static int is_valid_filename(const char *filename) { } */ static void copy_in_spiffs(const char *src, const char *dst) { - uint32_t size = size_in_spiffs((char *)src); + uint32_t size = size_in_spiffs(src); uint8_t *mem = BigBuf_malloc(size); - read_from_spiffs((char *)src, (uint8_t *)mem, size); - write_to_spiffs((char *)dst, (uint8_t *)mem, size); + read_from_spiffs(src, (uint8_t *)mem, size); + write_to_spiffs(dst, (uint8_t *)mem, size); } //////////////////////////////////////////////////////////////////////////////// @@ -434,7 +434,7 @@ int rdv40_spiffs_lazy_mount_rollback(int changed) { // TODO : forbid writing to a filename which already exists as lnk ! // TODO : forbid writing to a filename.lnk which already exists without lnk ! // Note: Writing in SPIFFS_WRITE_CHUNK_SIZE (8192) byte chucks helps to ensure "free space" has been erased by GC (Garbage collection) -int rdv40_spiffs_write(const char *filename, uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_write(const char *filename, const uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( uint32_t idx; if (size <= SPIFFS_WRITE_CHUNK_SIZE) { @@ -457,7 +457,7 @@ int rdv40_spiffs_write(const char *filename, uint8_t *src, uint32_t size, RDV40S ) } -int rdv40_spiffs_append(const char *filename, uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_append(const char *filename, const uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( uint32_t idx; // Append any SPIFFS_WRITE_CHUNK_SIZE byte chunks @@ -480,26 +480,26 @@ int rdv40_spiffs_read(const char *filename, uint8_t *dst, uint32_t size, RDV40Sp // TODO : forbid writing to a filename which already exists as lnk ! // TODO : forbid writing to a filename.lnk which already exists without lnk ! -int rdv40_spiffs_rename(char *old_filename, char *new_filename, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_rename(const char *old_filename, const char *new_filename, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( // rename_in_spiffs(old_filename, new_filename); // ) } -int rdv40_spiffs_remove(char *filename, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_remove(const char *filename, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( // remove_from_spiffs(filename); // ) } -int rdv40_spiffs_copy(char *src, char *dst, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_copy(const char *src_filename, const char *dst_filename, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( // - copy_in_spiffs(src, dst); // + copy_in_spiffs(src_filename, dst_filename); // ) } -int rdv40_spiffs_stat(char *filename, uint32_t *buf, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_stat(const char *filename, uint32_t *size_in_bytes, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( // - *buf = size_in_spiffs(filename); // + *size_in_bytes = size_in_spiffs(filename); // ) } @@ -530,7 +530,7 @@ int rdv40_spiffs_is_symlink(const char *s) { // symlink ?") // ATTENTION : you must NOT provide the whole filename (so please do not include the .lnk extension) // TODO : integrate in read_function -int rdv40_spiffs_read_as_symlink(char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_read_as_symlink(const char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( char linkdest[SPIFFS_OBJ_NAME_LEN]; @@ -538,7 +538,7 @@ int rdv40_spiffs_read_as_symlink(char *filename, uint8_t *dst, uint32_t size, RD sprintf(linkfilename, "%s.lnk", filename); if (g_dbglevel >= DBG_DEBUG) - Dbprintf("Linkk real filename is " _YELLOW_("%s"), linkfilename); + Dbprintf("Link real filename is " _YELLOW_("%s"), linkfilename); read_from_spiffs((char *)linkfilename, (uint8_t *)linkdest, SPIFFS_OBJ_NAME_LEN); @@ -561,11 +561,11 @@ int rdv40_spiffs_read_as_symlink(char *filename, uint8_t *dst, uint32_t size, RD // which you can then read back with : // rdv40_spiffs_read_as_symlink((uint8_t *)"world",(uint8_t *) buffer, orig_file_size, RDV40_SPIFFS_SAFETY_SAFE); // TODO : FORBID creating a symlink with a basename (before.lnk) which already exists as a file ! -int rdv40_spiffs_make_symlink(char *linkdest, char *filename, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_make_symlink(const char *linkdest, const char *filename, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( char linkfilename[SPIFFS_OBJ_NAME_LEN]; sprintf(linkfilename, "%s.lnk", filename); - write_to_spiffs((char *)linkfilename, (uint8_t *)linkdest, SPIFFS_OBJ_NAME_LEN); + write_to_spiffs(linkfilename, (const uint8_t *)linkdest, SPIFFS_OBJ_NAME_LEN); ) } @@ -575,15 +575,15 @@ int rdv40_spiffs_make_symlink(char *linkdest, char *filename, RDV40SpiFFSSafetyL // Still, this case won't happen when the write(s) functions will check for both symlink and real file // preexistence, avoiding a link being created if filename exists, or avoiding a file being created if // symlink exists with same name -int rdv40_spiffs_read_as_filetype(char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_read_as_filetype(const char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( RDV40SpiFFSFileType filetype = filetype_in_spiffs((char *)filename); switch (filetype) { case RDV40_SPIFFS_FILETYPE_REAL: - rdv40_spiffs_read((char *)filename, (uint8_t *)dst, size, level); + rdv40_spiffs_read(filename, dst, size, level); break; case RDV40_SPIFFS_FILETYPE_SYMLINK: - rdv40_spiffs_read_as_symlink(filename, (uint8_t *)dst, size, level); + rdv40_spiffs_read_as_symlink(filename, dst, size, level); break; case RDV40_SPIFFS_FILETYPE_BOTH: case RDV40_SPIFFS_FILETYPE_UNKNOWN: diff --git a/armsrc/spiffs.h b/armsrc/spiffs.h index 5958e559b..7bbfb794b 100644 --- a/armsrc/spiffs.h +++ b/armsrc/spiffs.h @@ -46,18 +46,18 @@ typedef struct rdv40_spiffs_fsinfo { uint32_t usedPercent, freePercent; } rdv40_spiffs_fsinfo; -int rdv40_spiffs_read_as_filetype(char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level); +int rdv40_spiffs_read_as_filetype(const char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level); int rdv40_spiffs_check(void); int rdv40_spiffs_lazy_unmount(void); int rdv40_spiffs_lazy_mount(void); int rdv40_spiffs_lazy_mount_rollback(int changed); -int rdv40_spiffs_write(const char *filename, uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level); +int rdv40_spiffs_write(const char *filename, const uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level); int rdv40_spiffs_read(const char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level); -int rdv40_spiffs_rename(char *old_filename, char *new_filename, RDV40SpiFFSSafetyLevel level); -int rdv40_spiffs_remove(char *filename, RDV40SpiFFSSafetyLevel level); -int rdv40_spiffs_read_as_symlink(char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level); -void write_to_spiffs(const char *filename, uint8_t *src, uint32_t size); +int rdv40_spiffs_rename(const char *old_filename, const char *new_filename, RDV40SpiFFSSafetyLevel level); +int rdv40_spiffs_remove(const char *filename, RDV40SpiFFSSafetyLevel level); +int rdv40_spiffs_read_as_symlink(const char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level); +void write_to_spiffs(const char *filename, const uint8_t *src, uint32_t size); void read_from_spiffs(const char *filename, uint8_t *dst, uint32_t size); void test_spiffs(void); void rdv40_spiffs_safe_print_tree(void); @@ -65,11 +65,11 @@ int rdv40_spiffs_unmount(void); int rdv40_spiffs_mount(void); int rdv40_spiffs_is_symlink(const char *s); void rdv40_spiffs_safe_print_fsinfo(void); -int rdv40_spiffs_make_symlink(char *linkdest, char *filename, RDV40SpiFFSSafetyLevel level); -void append_to_spiffs(const char *filename, uint8_t *src, uint32_t size); -int rdv40_spiffs_copy(char *src, char *dst, RDV40SpiFFSSafetyLevel level); -int rdv40_spiffs_append(const char *filename, uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level); -int rdv40_spiffs_stat(char *filename, uint32_t *buf, RDV40SpiFFSSafetyLevel level); +int rdv40_spiffs_make_symlink(const char *linkdest, const char *filename, RDV40SpiFFSSafetyLevel level); +void append_to_spiffs(const char *filename, const uint8_t *src, uint32_t size); +int rdv40_spiffs_copy(const char *src_filename, const char *dst_filename, RDV40SpiFFSSafetyLevel level); +int rdv40_spiffs_append(const char *filename, const uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level); +int rdv40_spiffs_stat(const char *filename, uint32_t *size_in_bytes, RDV40SpiFFSSafetyLevel level); uint32_t size_in_spiffs(const char *filename); int exists_in_spiffs(const char *filename); From e973aebae6960708d22826fc2c6963f8f6fe1d70 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 22:56:51 -0700 Subject: [PATCH 0371/1034] Workaround SPIFFS lack of `const` --- armsrc/spiffs.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/armsrc/spiffs.c b/armsrc/spiffs.c index 9659dc77b..359f2f07c 100644 --- a/armsrc/spiffs.c +++ b/armsrc/spiffs.c @@ -198,7 +198,8 @@ int rdv40_spiffs_check(void) { void write_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { spiffs_file fd = SPIFFS_open(&fs, filename, SPIFFS_CREAT | SPIFFS_TRUNC | SPIFFS_RDWR, 0); - if (SPIFFS_write(&fs, fd, src, size) < 0) { + // Note: SPIFFS_write() doesn't declare third parameter as const (but should) + if (SPIFFS_write(&fs, fd, (void*)src, size) < 0) { Dbprintf("wr errno %i\n", SPIFFS_errno(&fs)); } SPIFFS_close(&fs, fd); @@ -206,7 +207,8 @@ void write_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { void append_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { spiffs_file fd = SPIFFS_open(&fs, filename, SPIFFS_APPEND | SPIFFS_RDWR, 0); - if (SPIFFS_write(&fs, fd, src, size) < 0) { + // Note: SPIFFS_write() doesn't declare third parameter as const (but should) + if (SPIFFS_write(&fs, fd, (void*)src, size) < 0) { Dbprintf("errno %i\n", SPIFFS_errno(&fs)); } SPIFFS_close(&fs, fd); From 1a8ef489c8990ac052a6a544462da1dc5925d76d Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 23:03:34 -0700 Subject: [PATCH 0372/1034] const for em4x50 --- armsrc/appmain.c | 16 ++++++++-------- armsrc/em4x50.c | 34 +++++++++++++++++----------------- armsrc/em4x50.h | 19 ++++++++++--------- 3 files changed, 35 insertions(+), 34 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 3c471191f..5908ed855 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -1154,27 +1154,27 @@ static void PacketReceived(PacketCommandNG *packet) { #ifdef WITH_EM4x50 case CMD_LF_EM4X50_INFO: { - em4x50_info((em4x50_data_t *)packet->data.asBytes, true); + em4x50_info((const em4x50_data_t *)packet->data.asBytes, true); break; } case CMD_LF_EM4X50_WRITE: { - em4x50_write((em4x50_data_t *)packet->data.asBytes, true); + em4x50_write((const em4x50_data_t *)packet->data.asBytes, true); break; } case CMD_LF_EM4X50_WRITEPWD: { - em4x50_writepwd((em4x50_data_t *)packet->data.asBytes, true); + em4x50_writepwd((const em4x50_data_t *)packet->data.asBytes, true); break; } case CMD_LF_EM4X50_READ: { - em4x50_read((em4x50_data_t *)packet->data.asBytes, true); + em4x50_read((const em4x50_data_t *)packet->data.asBytes, true); break; } case CMD_LF_EM4X50_BRUTE: { - em4x50_brute((em4x50_data_t *)packet->data.asBytes, true); + em4x50_brute((const em4x50_data_t *)packet->data.asBytes, true); break; } case CMD_LF_EM4X50_LOGIN: { - em4x50_login((uint32_t *)packet->data.asBytes, true); + em4x50_login((const uint32_t *)packet->data.asBytes, true); break; } case CMD_LF_EM4X50_SIM: { @@ -1184,7 +1184,7 @@ static void PacketReceived(PacketCommandNG *packet) { // destroy the Emulator Memory. //----------------------------------------------------------------------------- FpgaDownloadAndGo(FPGA_BITSTREAM_LF); - em4x50_sim((uint32_t *)packet->data.asBytes, true); + em4x50_sim((const uint32_t *)packet->data.asBytes, true); break; } case CMD_LF_EM4X50_READER: { @@ -1208,7 +1208,7 @@ static void PacketReceived(PacketCommandNG *packet) { // destroy the Emulator Memory. //----------------------------------------------------------------------------- FpgaDownloadAndGo(FPGA_BITSTREAM_LF); - em4x50_chk((uint8_t *)packet->data.asBytes, true); + em4x50_chk((const char *)packet->data.asBytes, true); break; } #endif diff --git a/armsrc/em4x50.c b/armsrc/em4x50.c index d43a6a15f..4910caa31 100644 --- a/armsrc/em4x50.c +++ b/armsrc/em4x50.c @@ -634,7 +634,7 @@ static int login(uint32_t password) { } // searching for password using chosen bruteforce algorithm -static bool brute(em4x50_data_t *etd, uint32_t *pwd) { +static bool brute(const em4x50_data_t *etd, uint32_t *pwd) { generator_context_t ctx; bool pwd_found = false; @@ -694,7 +694,7 @@ static bool brute(em4x50_data_t *etd, uint32_t *pwd) { } // login into EM4x50 -void em4x50_login(uint32_t *password, bool ledcontrol) { +void em4x50_login(const uint32_t *password, bool ledcontrol) { em4x50_setup_read(); int status = PM3_EFAILED; @@ -713,7 +713,7 @@ void em4x50_login(uint32_t *password, bool ledcontrol) { } // invoke password search -void em4x50_brute(em4x50_data_t *etd, bool ledcontrol) { +void em4x50_brute(const em4x50_data_t *etd, bool ledcontrol) { em4x50_setup_read(); bool bsuccess = false; @@ -733,7 +733,7 @@ void em4x50_brute(em4x50_data_t *etd, bool ledcontrol) { } // check passwords from dictionary content in flash memory -void em4x50_chk(uint8_t *filename, bool ledcontrol) { +void em4x50_chk(const char *filename, bool ledcontrol) { int status = PM3_EFAILED; uint32_t pwd = 0x0; @@ -743,11 +743,11 @@ void em4x50_chk(uint8_t *filename, bool ledcontrol) { int changed = rdv40_spiffs_lazy_mount(); uint16_t pwd_count = 0; - uint32_t size = size_in_spiffs((char *)filename); + uint32_t size = size_in_spiffs(filename); pwd_count = size / 4; uint8_t *pwds = BigBuf_malloc(size); - rdv40_spiffs_read_as_filetype((char *)filename, pwds, size, RDV40_SPIFFS_SAFETY_SAFE); + rdv40_spiffs_read_as_filetype(filename, pwds, size, RDV40_SPIFFS_SAFETY_SAFE); if (changed) rdv40_spiffs_lazy_unmount(); @@ -873,7 +873,7 @@ static int selective_read(uint32_t addresses, uint32_t *words) { } // reads by using "selective read mode" -> bidirectional communication -void em4x50_read(em4x50_data_t *etd, bool ledcontrol) { +void em4x50_read(const em4x50_data_t *etd, bool ledcontrol) { int status = PM3_EFAILED; uint32_t words[EM4X50_NO_WORDS] = {0x0}; @@ -906,7 +906,7 @@ void em4x50_read(em4x50_data_t *etd, bool ledcontrol) { } // collects as much information as possible via selective read mode -void em4x50_info(em4x50_data_t *etd, bool ledcontrol) { +void em4x50_info(const em4x50_data_t *etd, bool ledcontrol) { int status = PM3_EFAILED; uint32_t words[EM4X50_NO_WORDS] = {0x0}; @@ -1053,7 +1053,7 @@ static int write_password(uint32_t password, uint32_t new_password) { // write operation process for EM4x50 tag, // single word is written to given address, verified by selective read operation // wrong password -> return with PM3_EFAILED -void em4x50_write(em4x50_data_t *etd, bool ledcontrol) { +void em4x50_write(const em4x50_data_t *etd, bool ledcontrol) { int status = PM3_EFAILED; uint32_t words[EM4X50_NO_WORDS] = {0x0}; @@ -1113,7 +1113,7 @@ void em4x50_write(em4x50_data_t *etd, bool ledcontrol) { } // simple change of password -void em4x50_writepwd(em4x50_data_t *etd, bool ledcontrol) { +void em4x50_writepwd(const em4x50_data_t *etd, bool ledcontrol) { int status = PM3_EFAILED; em4x50_setup_read(); @@ -1358,7 +1358,7 @@ static bool em4x50_sim_read_word(uint32_t *word) { } // check if reader requests receive mode (rm) by sending two zeros -static int check_rm_request(uint32_t *tag, bool ledcontrol) { +static int check_rm_request(const uint32_t *tag, bool ledcontrol) { // look for first zero int bit = em4x50_sim_read_bit(); @@ -1387,7 +1387,7 @@ static int check_rm_request(uint32_t *tag, bool ledcontrol) { } // send single listen window in simulation mode -static int em4x50_sim_send_listen_window(uint32_t *tag, bool ledcontrol) { +static int em4x50_sim_send_listen_window(const uint32_t *tag, bool ledcontrol) { SHORT_COIL(); wait_cycles(EM4X50_T_TAG_HALF_PERIOD); @@ -1460,7 +1460,7 @@ static void em4x50_sim_send_nak(void) { } // standard read mode process (simulation mode) -static int em4x50_sim_handle_standard_read_command(uint32_t *tag, bool ledcontrol) { +static int em4x50_sim_handle_standard_read_command(const uint32_t *tag, bool ledcontrol) { // extract control data int fwr = reflect32(tag[EM4X50_CONTROL]) & 0xFF; // first word read @@ -1500,7 +1500,7 @@ static int em4x50_sim_handle_standard_read_command(uint32_t *tag, bool ledcontro } // selective read mode process (simulation mode) -static int em4x50_sim_handle_selective_read_command(uint32_t *tag, bool ledcontrol) { +static int em4x50_sim_handle_selective_read_command(const uint32_t *tag, bool ledcontrol) { // read password uint32_t address = 0; @@ -1555,7 +1555,7 @@ static int em4x50_sim_handle_selective_read_command(uint32_t *tag, bool ledcontr } // login process (simulation mode) -static int em4x50_sim_handle_login_command(uint32_t *tag, bool ledcontrol) { +static int em4x50_sim_handle_login_command(const uint32_t *tag, bool ledcontrol) { // read password uint32_t password = 0; @@ -1581,7 +1581,7 @@ static int em4x50_sim_handle_login_command(uint32_t *tag, bool ledcontrol) { } // reset process (simulation mode) -static int em4x50_sim_handle_reset_command(uint32_t *tag, bool ledcontrol) { +static int em4x50_sim_handle_reset_command(const uint32_t *tag, bool ledcontrol) { // processing pause time (corresponds to a "1" bit) em4x50_sim_send_bit(1); @@ -1806,7 +1806,7 @@ void em4x50_handle_commands(int *command, uint32_t *tag, bool ledcontrol) { // simulate uploaded data in emulator memory // LED C -> reader command has been detected // LED D -> operations that require authentication are possible -void em4x50_sim(uint32_t *password, bool ledcontrol) { +void em4x50_sim(const uint32_t *password, bool ledcontrol) { int command = PM3_ENODATA; diff --git a/armsrc/em4x50.h b/armsrc/em4x50.h index af3a7a8db..eb52c36e5 100644 --- a/armsrc/em4x50.h +++ b/armsrc/em4x50.h @@ -21,20 +21,21 @@ #include "../include/em4x50.h" +// used by standalone mode void em4x50_setup_read(void); int standard_read(int *now, uint32_t *words); - void em4x50_setup_sim(void); void em4x50_handle_commands(int *command, uint32_t *tag, bool ledcontrol); -void em4x50_info(em4x50_data_t *etd, bool ledcontrol); -void em4x50_write(em4x50_data_t *etd, bool ledcontrol); -void em4x50_writepwd(em4x50_data_t *etd, bool ledcontrol); -void em4x50_read(em4x50_data_t *etd, bool ledcontrol); -void em4x50_brute(em4x50_data_t *etd, bool ledcontrol); -void em4x50_login(uint32_t *password, bool ledcontrol); -void em4x50_sim(uint32_t *password, bool ledcontrol); +// dispatch functions (appmain.c) +void em4x50_info(const em4x50_data_t *etd, bool ledcontrol); +void em4x50_write(const em4x50_data_t *etd, bool ledcontrol); +void em4x50_writepwd(const em4x50_data_t *etd, bool ledcontrol); +void em4x50_read(const em4x50_data_t *etd, bool ledcontrol); +void em4x50_brute(const em4x50_data_t *etd, bool ledcontrol); +void em4x50_login(const uint32_t *password, bool ledcontrol); +void em4x50_sim(const uint32_t *password, bool ledcontrol); void em4x50_reader(bool ledcontrol); -void em4x50_chk(uint8_t *filename, bool ledcontrol); +void em4x50_chk(const char *filename, bool ledcontrol); #endif /* EM4X50_H */ From 0af484fdee48ee76f7d2eed8ef82f5be82f9601d Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 23:24:10 -0700 Subject: [PATCH 0373/1034] const for em4x70 --- armsrc/em4x70.c | 43 +++++++++++++++++++++++-------------------- armsrc/em4x70.h | 14 +++++++------- 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/armsrc/em4x70.c b/armsrc/em4x70.c index 806442f7f..ab73bd153 100644 --- a/armsrc/em4x70.c +++ b/armsrc/em4x70.c @@ -310,6 +310,7 @@ static bool check_ack(void) { return false; } +// TODO: define and use structs for rnd, frnd, response static int authenticate(const uint8_t *rnd, const uint8_t *frnd, uint8_t *response) { if (find_listen_window(true)) { @@ -350,8 +351,10 @@ static int authenticate(const uint8_t *rnd, const uint8_t *frnd, uint8_t *respon return PM3_ESOFT; } -static int set_byte(uint8_t *target, int value) { - int c = value > 0xFF; +// Sets one (reflected) byte and returns carry bit +// (1 if `value` parameter was greater than 0xFF) +static int set_byte(uint8_t *target, uint16_t value) { + int c = value > 0xFF ? 1 : 0; // be explicit about carry bit values *target = reflect8(value); return c; } @@ -373,27 +376,27 @@ static int bruteforce(const uint8_t address, const uint8_t *rnd, const uint8_t * uint16_t rev_k = reflect16(k); switch (address) { case 9: - c = set_byte(&temp_rnd[0], rev_rnd[0] + (rev_k & 0xFF)); - c = set_byte(&temp_rnd[1], rev_rnd[1] + c + ((rev_k >> 8) & 0xFF)); + c = set_byte(&temp_rnd[0], rev_rnd[0] + ((rev_k ) & 0xFFu)); + c = set_byte(&temp_rnd[1], rev_rnd[1] + c + ((rev_k >> 8) & 0xFFu)); c = set_byte(&temp_rnd[2], rev_rnd[2] + c); c = set_byte(&temp_rnd[3], rev_rnd[3] + c); c = set_byte(&temp_rnd[4], rev_rnd[4] + c); c = set_byte(&temp_rnd[5], rev_rnd[5] + c); - set_byte(&temp_rnd[6], rev_rnd[6] + c); + set_byte( &temp_rnd[6], rev_rnd[6] + c); break; case 8: - c = set_byte(&temp_rnd[2], rev_rnd[2] + (rev_k & 0xFF)); - c = set_byte(&temp_rnd[3], rev_rnd[3] + c + ((rev_k >> 8) & 0xFF)); + c = set_byte(&temp_rnd[2], rev_rnd[2] + ((rev_k ) & 0xFFu)); + c = set_byte(&temp_rnd[3], rev_rnd[3] + c + ((rev_k >> 8) & 0xFFu)); c = set_byte(&temp_rnd[4], rev_rnd[4] + c); c = set_byte(&temp_rnd[5], rev_rnd[5] + c); - set_byte(&temp_rnd[6], rev_rnd[6] + c); + set_byte( &temp_rnd[6], rev_rnd[6] + c); break; case 7: - c = set_byte(&temp_rnd[4], rev_rnd[4] + (rev_k & 0xFF)); - c = set_byte(&temp_rnd[5], rev_rnd[5] + c + ((rev_k >> 8) & 0xFF)); - set_byte(&temp_rnd[6], rev_rnd[6] + c); + c = set_byte(&temp_rnd[4], rev_rnd[4] + ((rev_k ) & 0xFFu)); + c = set_byte(&temp_rnd[5], rev_rnd[5] + c + ((rev_k >> 8) & 0xFFu)); + set_byte( &temp_rnd[6], rev_rnd[6] + c); break; default: @@ -707,7 +710,7 @@ static int em4x70_receive(uint8_t *bits, size_t length) { return bit_pos; } -void em4x70_info(em4x70_data_t *etd, bool ledcontrol) { +void em4x70_info(const em4x70_data_t *etd, bool ledcontrol) { uint8_t status = 0; @@ -728,7 +731,7 @@ void em4x70_info(em4x70_data_t *etd, bool ledcontrol) { reply_ng(CMD_LF_EM4X70_INFO, status, tag.data, sizeof(tag.data)); } -void em4x70_write(em4x70_data_t *etd, bool ledcontrol) { +void em4x70_write(const em4x70_data_t *etd, bool ledcontrol) { uint8_t status = 0; @@ -758,7 +761,7 @@ void em4x70_write(em4x70_data_t *etd, bool ledcontrol) { reply_ng(CMD_LF_EM4X70_WRITE, status, tag.data, sizeof(tag.data)); } -void em4x70_unlock(em4x70_data_t *etd, bool ledcontrol) { +void em4x70_unlock(const em4x70_data_t *etd, bool ledcontrol) { uint8_t status = 0; @@ -791,7 +794,7 @@ void em4x70_unlock(em4x70_data_t *etd, bool ledcontrol) { reply_ng(CMD_LF_EM4X70_UNLOCK, status, tag.data, sizeof(tag.data)); } -void em4x70_auth(em4x70_data_t *etd, bool ledcontrol) { +void em4x70_auth(const em4x70_data_t *etd, bool ledcontrol) { uint8_t status = 0; uint8_t response[3] = {0}; @@ -813,7 +816,7 @@ void em4x70_auth(em4x70_data_t *etd, bool ledcontrol) { reply_ng(CMD_LF_EM4X70_AUTH, status, response, sizeof(response)); } -void em4x70_brute(em4x70_data_t *etd, bool ledcontrol) { +void em4x70_brute(const em4x70_data_t *etd, bool ledcontrol) { uint8_t status = 0; uint8_t response[2] = {0}; @@ -834,7 +837,7 @@ void em4x70_brute(em4x70_data_t *etd, bool ledcontrol) { reply_ng(CMD_LF_EM4X70_BRUTE, status, response, sizeof(response)); } -void em4x70_write_pin(em4x70_data_t *etd, bool ledcontrol) { +void em4x70_write_pin(const em4x70_data_t *etd, bool ledcontrol) { uint8_t status = 0; @@ -850,8 +853,8 @@ void em4x70_write_pin(em4x70_data_t *etd, bool ledcontrol) { if (em4x70_read_id()) { // Write new PIN - if ((write(etd->pin & 0xFFFF, EM4X70_PIN_WORD_UPPER) == PM3_SUCCESS) && - (write((etd->pin >> 16) & 0xFFFF, EM4X70_PIN_WORD_LOWER) == PM3_SUCCESS)) { + if ((write((etd->pin ) & 0xFFFF, EM4X70_PIN_WORD_UPPER) == PM3_SUCCESS) && + (write((etd->pin >> 16) & 0xFFFF, EM4X70_PIN_WORD_LOWER) == PM3_SUCCESS)) { // Now Try to authenticate using the new PIN @@ -874,7 +877,7 @@ void em4x70_write_pin(em4x70_data_t *etd, bool ledcontrol) { reply_ng(CMD_LF_EM4X70_WRITEPIN, status, tag.data, sizeof(tag.data)); } -void em4x70_write_key(em4x70_data_t *etd, bool ledcontrol) { +void em4x70_write_key(const em4x70_data_t *etd, bool ledcontrol) { uint8_t status = 0; diff --git a/armsrc/em4x70.h b/armsrc/em4x70.h index 0fd640f86..83a8237d7 100644 --- a/armsrc/em4x70.h +++ b/armsrc/em4x70.h @@ -30,12 +30,12 @@ typedef enum { FALLING_EDGE } edge_detection_t; -void em4x70_info(em4x70_data_t *etd, bool ledcontrol); -void em4x70_write(em4x70_data_t *etd, bool ledcontrol); -void em4x70_brute(em4x70_data_t *etd, bool ledcontrol); -void em4x70_unlock(em4x70_data_t *etd, bool ledcontrol); -void em4x70_auth(em4x70_data_t *etd, bool ledcontrol); -void em4x70_write_pin(em4x70_data_t *etd, bool ledcontrol); -void em4x70_write_key(em4x70_data_t *etd, bool ledcontrol); +void em4x70_info(const em4x70_data_t *etd, bool ledcontrol); +void em4x70_write(const em4x70_data_t *etd, bool ledcontrol); +void em4x70_brute(const em4x70_data_t *etd, bool ledcontrol); +void em4x70_unlock(const em4x70_data_t *etd, bool ledcontrol); +void em4x70_auth(const em4x70_data_t *etd, bool ledcontrol); +void em4x70_write_pin(const em4x70_data_t *etd, bool ledcontrol); +void em4x70_write_key(const em4x70_data_t *etd, bool ledcontrol); #endif /* EM4x70_H */ From 63a457c27fd99fe9181030ca95bdf86c7b00845e Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 23:38:26 -0700 Subject: [PATCH 0374/1034] const and static functions for epa --- armsrc/epa.c | 38 ++++++++++++++++++++++++++++---------- armsrc/epa.h | 24 +++--------------------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/armsrc/epa.c b/armsrc/epa.c index 7bd563676..4e4113d45 100644 --- a/armsrc/epa.c +++ b/armsrc/epa.c @@ -37,6 +37,24 @@ static const uint8_t pps[] = {0xD0, 0x11, 0x00, 0x52, 0xA6}; #endif +// this struct is used by EPA_Parse_CardAccess and contains info about the +// PACE protocol supported by the chip +typedef struct { + uint8_t oid[10]; + uint8_t version; + uint8_t parameter_id; +} pace_version_info_t; + +// general functions +static void EPA_Finish(void); +static size_t EPA_Parse_CardAccess(const uint8_t *data, size_t length, pace_version_info_t *pace_info); +static int EPA_Read_CardAccess(uint8_t *buffer, size_t max_length); +static int EPA_Setup(void); + +// PACE related functions +static int EPA_PACE_MSE_Set_AT(const pace_version_info_t pace_version_info, uint8_t password); +static int EPA_PACE_Get_Nonce(uint8_t requested_length, uint8_t *nonce); + // APDUs for communication with German Identification Card // General Authenticate (request encrypted nonce) WITHOUT the Le at the end @@ -153,7 +171,7 @@ static int EPA_APDU(uint8_t *apdu, size_t length, uint8_t *response, uint16_t re //----------------------------------------------------------------------------- // Closes the communication channel and turns off the field //----------------------------------------------------------------------------- -void EPA_Finish(void) { +static void EPA_Finish(void) { FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); LEDsoff(); iso_type = 0; @@ -172,7 +190,7 @@ void EPA_Finish(void) { // TODO: Support elements with long tags (tag is longer than 1 byte) // TODO: Support proprietary PACE domain parameters //----------------------------------------------------------------------------- -size_t EPA_Parse_CardAccess(uint8_t *data, size_t length, pace_version_info_t *pace_info) { +static size_t EPA_Parse_CardAccess(const uint8_t *data, size_t length, pace_version_info_t *pace_info) { size_t index = 0; @@ -243,7 +261,7 @@ size_t EPA_Parse_CardAccess(uint8_t *data, size_t length, pace_version_info_t *p // Returns -1 on failure or the length of the data on success // TODO: for the moment this sends only 1 APDU regardless of the requested length //----------------------------------------------------------------------------- -int EPA_Read_CardAccess(uint8_t *buffer, size_t max_length) { +static int EPA_Read_CardAccess(uint8_t *buffer, size_t max_length) { // the response APDU of the card // since the card doesn't always care for the expected length we send it, // we reserve 262 bytes here just to be safe (256-byte APDU + SW + ISO frame) @@ -300,7 +318,7 @@ static void EPA_PACE_Collect_Nonce_Abort(uint32_t cmd, uint8_t step, int func_re //----------------------------------------------------------------------------- // Acquire one encrypted PACE nonce //----------------------------------------------------------------------------- -void EPA_PACE_Collect_Nonce(PacketCommandNG *c) { +void EPA_PACE_Collect_Nonce(const PacketCommandNG *c) { /* * ack layout: * arg: @@ -354,7 +372,7 @@ void EPA_PACE_Collect_Nonce(PacketCommandNG *c) { struct p { uint32_t m; } PACKED; - struct p *packet = (struct p *)c->data.asBytes; + const struct p *packet = (const struct p *)c->data.asBytes; func_return = EPA_PACE_Get_Nonce(packet->m, nonce); // check if the command succeeded @@ -377,7 +395,7 @@ void EPA_PACE_Collect_Nonce(PacketCommandNG *c) { // Returns the actual size of the nonce on success or a less-than-zero error // code on failure. //----------------------------------------------------------------------------- -int EPA_PACE_Get_Nonce(uint8_t requested_length, uint8_t *nonce) { +static int EPA_PACE_Get_Nonce(uint8_t requested_length, uint8_t *nonce) { // build the APDU uint8_t apdu[sizeof(apdu_general_authenticate_pace_get_nonce) + 1]; @@ -416,7 +434,7 @@ int EPA_PACE_Get_Nonce(uint8_t requested_length, uint8_t *nonce) { // Initializes the PACE protocol by performing the "MSE: Set AT" step // Returns 0 on success or a non-zero error code on failure //----------------------------------------------------------------------------- -int EPA_PACE_MSE_Set_AT(pace_version_info_t pace_version_info, uint8_t password) { +static int EPA_PACE_MSE_Set_AT(const pace_version_info_t pace_version_info, uint8_t password) { // create the MSE: Set AT APDU uint8_t apdu[23]; @@ -479,7 +497,7 @@ int EPA_PACE_MSE_Set_AT(pace_version_info_t pace_version_info, uint8_t password) //----------------------------------------------------------------------------- // Perform the PACE protocol by replaying given APDUs //----------------------------------------------------------------------------- -void EPA_PACE_Replay(PacketCommandNG *c) { +void EPA_PACE_Replay(const PacketCommandNG *c) { uint32_t timings[ARRAYLEN(apdu_lengths_replay)] = {0}; @@ -547,7 +565,7 @@ void EPA_PACE_Replay(PacketCommandNG *c) { // Set up a communication channel (Card Select, PPS) // Returns 0 on success or a non-zero error code on failure //----------------------------------------------------------------------------- -int EPA_Setup(void) { +static int EPA_Setup(void) { #ifdef WITH_ISO14443a { @@ -593,7 +611,7 @@ int EPA_Setup(void) { return 1; } -void EPA_PACE_Simulate(PacketCommandNG *c) { +void EPA_PACE_Simulate(const PacketCommandNG *c) { //---------Initializing--------- diff --git a/armsrc/epa.h b/armsrc/epa.h index 72524f836..62880eca3 100644 --- a/armsrc/epa.h +++ b/armsrc/epa.h @@ -22,26 +22,8 @@ #include "common.h" #include "pm3_cmd.h" -// this struct is used by EPA_Parse_CardAccess and contains info about the -// PACE protocol supported by the chip -typedef struct { - uint8_t oid[10]; - uint8_t version; - uint8_t parameter_id; -} pace_version_info_t; - -// general functions -void EPA_Finish(void); -size_t EPA_Parse_CardAccess(uint8_t *data, size_t length, pace_version_info_t *pace_info); -int EPA_Read_CardAccess(uint8_t *buffer, size_t max_length); -int EPA_Setup(void); - -// PACE related functions -int EPA_PACE_MSE_Set_AT(pace_version_info_t pace_version_info, uint8_t password); -int EPA_PACE_Get_Nonce(uint8_t requested_length, uint8_t *nonce); - -void EPA_PACE_Collect_Nonce(PacketCommandNG *c); -void EPA_PACE_Replay(PacketCommandNG *c); -void EPA_PACE_Simulate(PacketCommandNG *c); +void EPA_PACE_Collect_Nonce(const PacketCommandNG *c); +void EPA_PACE_Replay(const PacketCommandNG *c); +void EPA_PACE_Simulate(const PacketCommandNG *c); #endif /* __EPA_H */ From 6804e719e55556472a7dc13361a04aa2e14003dc Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 23:55:20 -0700 Subject: [PATCH 0375/1034] const for felica --- armsrc/felica.c | 25 +++++++++++++++---------- armsrc/felica.h | 4 ++-- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/armsrc/felica.c b/armsrc/felica.c index 0a74a30cc..b575ad9c4 100644 --- a/armsrc/felica.c +++ b/armsrc/felica.c @@ -49,7 +49,7 @@ static uint32_t felica_lasttime_prox2air_start; static void iso18092_setup(uint8_t fpga_minor_mode); static uint8_t felica_select_card(felica_card_select_t *card); -static void TransmitFor18092_AsReader(uint8_t *frame, uint16_t len, uint32_t *timing, uint8_t power, uint8_t highspeed); +static void TransmitFor18092_AsReader(const uint8_t *frame, uint16_t len, const uint32_t *NYI_timing_NYI, uint8_t power, uint8_t highspeed); static bool WaitForFelicaReply(uint16_t maxbytes); static void iso18092_set_timeout(uint32_t timeout) { @@ -269,13 +269,13 @@ static uint8_t felica_select_card(felica_card_select_t *card) { // copy UID // idm 8 if (card) { - memcpy(card->IDm, FelicaFrame.framebytes + 4, 8); + memcpy(card->IDm, FelicaFrame.framebytes + 4, 8); memcpy(card->PMm, FelicaFrame.framebytes + 4 + 8, 8); //memcpy(card->servicecode, FelicaFrame.framebytes + 4 + 8 + 8, 2); - memcpy(card->code, card->IDm, 2); - memcpy(card->uid, card->IDm + 2, 6); - memcpy(card->iccode, card->PMm, 2); - memcpy(card->mrt, card->PMm + 2, 6); + memcpy(card->code, card->IDm, 2); + memcpy(card->uid, card->IDm + 2, 6); + memcpy(card->iccode, card->PMm, 2); + memcpy(card->mrt, card->PMm + 2, 6); if (g_dbglevel >= DBG_DEBUG) { Dbprintf("Received Frame: "); Dbhexdump(FelicaFrame.len, FelicaFrame.framebytes, 0); @@ -350,7 +350,12 @@ static void BuildFliteRdblk(const uint8_t *idm, uint8_t blocknum, const uint16_t AddCrc(frameSpace + 2, c - 2); } -static void TransmitFor18092_AsReader(uint8_t *frame, uint16_t len, uint32_t *timing, uint8_t power, uint8_t highspeed) { +static void TransmitFor18092_AsReader(const uint8_t *frame, uint16_t len, const uint32_t *NYI_timing_NYI, uint8_t power, uint8_t highspeed) { + if (NYI_timing_NYI != NULL) { + Dbprintf("Error: TransmitFor18092_AsReader does not check or set parameter NYI_timing_NYI"); + return; + } + uint16_t flags = FPGA_MAJOR_MODE_HF_ISO18092; if (power) flags |= FPGA_HF_ISO18092_FLAG_READER; @@ -512,12 +517,12 @@ static void felica_reset_frame_mode(void) { // arg0 FeliCa flags // arg1 len of commandbytes // d.asBytes command bytes to send -void felica_sendraw(PacketCommandNG *c) { +void felica_sendraw(const PacketCommandNG *c) { if (g_dbglevel >= DBG_DEBUG) Dbprintf("FeliCa_sendraw Enter"); felica_command_t param = c->oldarg[0]; size_t len = c->oldarg[1] & 0xffff; - uint8_t *cmd = c->data.asBytes; + const uint8_t *cmd = c->data.asBytes; uint32_t arg0; felica_card_select_t card; @@ -675,7 +680,7 @@ void felica_sniff(uint32_t samplesToSkip, uint32_t triggersToSkip) { #define R_READBLK_LEN 0x21 //simulate NFC Tag3 card - for now only poll response works // second half (4 bytes) of NDEF2 goes into nfcid2_0, first into nfcid2_1 -void felica_sim_lite(uint8_t *uid) { +void felica_sim_lite(const uint8_t *uid) { // prepare our 3 responses... uint8_t resp_poll0[R_POLL0_LEN] = { 0xb2, 0x4d, 0x12, FELICA_POLL_ACK, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x01, 0x43, 0x00, 0xb3, 0x7f}; diff --git a/armsrc/felica.h b/armsrc/felica.h index 8f232b3e4..2677dbfb9 100644 --- a/armsrc/felica.h +++ b/armsrc/felica.h @@ -21,9 +21,9 @@ #include "common.h" #include "cmd.h" -void felica_sendraw(PacketCommandNG *c); +void felica_sendraw(const PacketCommandNG *c); void felica_sniff(uint32_t samplesToSkip, uint32_t triggersToSkip); -void felica_sim_lite(uint8_t *uid); +void felica_sim_lite(const uint8_t *uid); void felica_dump_lite_s(void); #endif From 6f38c814a7ee3cd6c898a7c8cf8b3b8cba68b435 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 23:59:42 -0700 Subject: [PATCH 0376/1034] Note inconsistency in FPGA frame layout docs. --- armsrc/fpgaloader.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/armsrc/fpgaloader.h b/armsrc/fpgaloader.h index 6069d3257..3359643f1 100644 --- a/armsrc/fpgaloader.h +++ b/armsrc/fpgaloader.h @@ -34,6 +34,9 @@ /* Communication between ARM / FPGA is done inside armsrc/fpgaloader.c (function FpgaSendCommand) Send 16 bit command / data pair to FPGA + + BUGBUG -- Conflicts with information in ../fpga/define.v + The bit format is: C3 C2 C1 C0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 where C is 4bit command From 890ea0d32113a3991dc6e80af3a1054d5db65a99 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Wed, 9 Aug 2023 00:03:48 -0700 Subject: [PATCH 0377/1034] const for hfops --- armsrc/hfops.c | 2 +- armsrc/hfops.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/armsrc/hfops.c b/armsrc/hfops.c index 6a97be76a..df42c8685 100644 --- a/armsrc/hfops.c +++ b/armsrc/hfops.c @@ -200,7 +200,7 @@ static uint32_t HfEncodeTkm(const uint8_t *uid, uint8_t modulation, uint8_t *dat return len; } -int HfSimulateTkm(uint8_t *uid, uint8_t modulation, uint32_t timeout) { +int HfSimulateTkm(const uint8_t *uid, uint8_t modulation, uint32_t timeout) { // free eventually allocated BigBuf memory BigBuf_free_keep_EM(); diff --git a/armsrc/hfops.h b/armsrc/hfops.h index 352f9d2bc..c738887b4 100644 --- a/armsrc/hfops.h +++ b/armsrc/hfops.h @@ -22,6 +22,6 @@ #include "common.h" int HfReadADC(uint32_t samplesCount, bool ledcontrol); -int HfSimulateTkm(uint8_t *uid, uint8_t modulation, uint32_t timeout); +int HfSimulateTkm(const uint8_t *uid, uint8_t modulation, uint32_t timeout); #endif From 282c0904a529a5684d1281009cb086e2d48193c0 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Wed, 9 Aug 2023 00:08:13 -0700 Subject: [PATCH 0378/1034] visual alignment only .. no code change --- armsrc/hitag2_crypto.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/armsrc/hitag2_crypto.c b/armsrc/hitag2_crypto.c index a8a01dae4..9b59b5521 100644 --- a/armsrc/hitag2_crypto.c +++ b/armsrc/hitag2_crypto.c @@ -90,18 +90,18 @@ uint32_t _hitag2_byte(uint64_t *x) { } void hitag2_cipher_reset(struct hitag2_tag *tag, const uint8_t *iv) { - uint64_t key = ((uint64_t)tag->sectors[2][2]) | - ((uint64_t)tag->sectors[2][3] << 8) | + uint64_t key = ((uint64_t)tag->sectors[2][2] ) | + ((uint64_t)tag->sectors[2][3] << 8) | ((uint64_t)tag->sectors[1][0] << 16) | ((uint64_t)tag->sectors[1][1] << 24) | ((uint64_t)tag->sectors[1][2] << 32) | ((uint64_t)tag->sectors[1][3] << 40); - uint32_t uid = ((uint32_t)tag->sectors[0][0]) | - ((uint32_t)tag->sectors[0][1] << 8) | + uint32_t uid = ((uint32_t)tag->sectors[0][0] ) | + ((uint32_t)tag->sectors[0][1] << 8) | ((uint32_t)tag->sectors[0][2] << 16) | ((uint32_t)tag->sectors[0][3] << 24); - uint32_t iv_ = (((uint32_t)(iv[0]))) | - (((uint32_t)(iv[1])) << 8) | + uint32_t iv_ = (((uint32_t)(iv[0])) ) | + (((uint32_t)(iv[1])) << 8) | (((uint32_t)(iv[2])) << 16) | (((uint32_t)(iv[3])) << 24); tag->cs = _hitag2_init(REV64(key), REV32(uid), REV32(iv_)); From 47ea4d6566feff2e27f1bd94750f84fabb47c17b Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Wed, 9 Aug 2023 00:11:52 -0700 Subject: [PATCH 0379/1034] const for hitag2 --- armsrc/hitag2.c | 6 +++--- armsrc/hitag2.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/armsrc/hitag2.c b/armsrc/hitag2.c index 7206b735c..d4abe9ff1 100644 --- a/armsrc/hitag2.c +++ b/armsrc/hitag2.c @@ -979,7 +979,7 @@ static bool hitag2_read_uid(uint8_t *rx, const size_t rxlen, uint8_t *tx, size_t return true; } -void EloadHitag(uint8_t *data, uint16_t len) { +void EloadHitag(const uint8_t *data, uint16_t len) { memcpy(tag.sectors, data, sizeof(tag.sectors)); } @@ -1532,7 +1532,7 @@ void SimulateHitag2(bool ledcontrol) { // reply_ng(CMD_LF_HITAG_SIMULATE, (checked == -1) ? PM3_EOPABORTED : PM3_SUCCESS, (uint8_t *)tag.sectors, tag_size); } -void ReaderHitag(hitag_function htf, hitag_data *htd, bool ledcontrol) { +void ReaderHitag(hitag_function htf, const hitag_data *htd, bool ledcontrol) { uint32_t command_start = 0, command_duration = 0; uint32_t response_start = 0, response_duration = 0; @@ -1928,7 +1928,7 @@ out: reply_mix(CMD_ACK, bSuccessful, 0, 0, 0, 0); } -void WriterHitag(hitag_function htf, hitag_data *htd, int page, bool ledcontrol) { +void WriterHitag(hitag_function htf, const hitag_data *htd, int page, bool ledcontrol) { uint32_t command_start = 0; uint32_t command_duration = 0; diff --git a/armsrc/hitag2.h b/armsrc/hitag2.h index dcad3b417..90aa8132b 100644 --- a/armsrc/hitag2.h +++ b/armsrc/hitag2.h @@ -24,7 +24,7 @@ void SniffHitag2(bool ledcontrol); void SimulateHitag2(bool ledcontrol); -void ReaderHitag(hitag_function htf, hitag_data *htd, bool ledcontrol); -void WriterHitag(hitag_function htf, hitag_data *htd, int page, bool ledcontrol); -void EloadHitag(uint8_t *data, uint16_t len); +void ReaderHitag(hitag_function htf, const hitag_data *htd, bool ledcontrol); +void WriterHitag(hitag_function htf, const hitag_data *htd, int page, bool ledcontrol); +void EloadHitag(const uint8_t *data, uint16_t len); #endif From c26583ebfd3da2934f51b7f167056474a6234813 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 9 Aug 2023 13:37:38 +0200 Subject: [PATCH 0380/1034] Bugfix to keyboard scrolling At zoom levels above x16 the left and right keys only scroll the graph buffer to the left, even if right key is pressed. Mouse wheel behaves correctly. Enabled mouse wheel to zoom when control is pressed since that is the more standard UI convention (but left shift scrolling in place). Minor changes to zooming, using more intuitive constants. --- client/src/proxguiqt.cpp | 72 +++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 37 deletions(-) diff --git a/client/src/proxguiqt.cpp b/client/src/proxguiqt.cpp index ff88bce1e..e7dfe1018 100644 --- a/client/src/proxguiqt.cpp +++ b/client/src/proxguiqt.cpp @@ -794,7 +794,7 @@ void Plot::paintEvent(QPaintEvent *event) { snprintf(scalestr, sizeof(scalestr), "[%2.2f %s] ", ((int32_t)(CursorBPos - CursorAPos)) / g_CursorScaleFactor, g_CursorScaleFactorUnit); } } - snprintf(str, sizeof(str), "@%u..%u dt=%i %szoom=%2.2f CursorAPos=%u CursorBPos=%u GridX=%lf GridY=%lf (%s) GridXoffset=%lf", + snprintf(str, sizeof(str), "@%u..%u dt=%i %szoom=%2.3f CursorAPos=%u CursorBPos=%u GridX=%lf GridY=%lf (%s) GridXoffset=%lf", g_GraphStart, g_GraphStop, CursorBPos - CursorAPos, @@ -838,17 +838,25 @@ void Plot::closeEvent(QCloseEvent *event) { gs_useOverlays = false; } +// every 4 steps the zoom doubles (or halves) +#define ZOOM_STEP (1.189207) +// limit zoom to 32 times in either direction +#define ZOOM_LIMIT (32) + void Plot::Zoom(double factor, uint32_t refX) { + double g_GraphPixelsPerPointNew = g_GraphPixelsPerPoint * factor; + if (factor >= 1) { // Zoom in - if (g_GraphPixelsPerPoint <= 25 * factor) { - g_GraphPixelsPerPoint *= factor; + if (g_GraphPixelsPerPointNew <= ZOOM_LIMIT) { + g_GraphPixelsPerPoint = g_GraphPixelsPerPointNew; if (refX > g_GraphStart) { g_GraphStart += (refX - g_GraphStart) - ((refX - g_GraphStart) / factor); } } } else { // Zoom out - if (g_GraphPixelsPerPoint >= 0.01 / factor) { - g_GraphPixelsPerPoint *= factor; + if (g_GraphPixelsPerPointNew >= (1.0 / ZOOM_LIMIT) ) { + g_GraphPixelsPerPoint = g_GraphPixelsPerPointNew; + // shift graph towards refX when zooming out if (refX > g_GraphStart) { if (g_GraphStart >= ((refX - g_GraphStart) / factor) - (refX - g_GraphStart)) { g_GraphStart -= ((refX - g_GraphStart) / factor) - (refX - g_GraphStart); @@ -885,7 +893,6 @@ void Plot::Move(int offset) { void Plot::Trim(void) { uint32_t lref, rref; - const double zoom_offset = 1.148698354997035; // 2**(1/5) if ((CursorAPos == 0) || (CursorBPos == 0)) { // if we don't have both cursors set lref = g_GraphStart; rref = g_GraphStop; @@ -902,12 +909,12 @@ void Plot::Trim(void) { } else { lref = CursorAPos < CursorBPos ? CursorAPos : CursorBPos; rref = CursorAPos < CursorBPos ? CursorBPos : CursorAPos; - // g_GraphPixelsPerPoint mush remain a power of zoom_offset + // g_GraphPixelsPerPoint must remain a power of ZOOM_STEP double GPPPtarget = g_GraphPixelsPerPoint * (g_GraphStop - g_GraphStart) / (rref - lref); while (g_GraphPixelsPerPoint < GPPPtarget) { - g_GraphPixelsPerPoint *= zoom_offset; + g_GraphPixelsPerPoint *= ZOOM_STEP; } - g_GraphPixelsPerPoint /= zoom_offset; + g_GraphPixelsPerPoint /= ZOOM_STEP; CursorAPos -= lref; CursorBPos -= lref; } @@ -925,34 +932,26 @@ void Plot::wheelEvent(QWheelEvent *event) { const float move_offset = 0.05; // -120+shift => zoom in (5 times = *2) // 120+shift => zoom out (5 times = /2) - const double zoom_offset = 1.148698354997035; // 2**(1/5) - if (event->modifiers() & Qt::ShiftModifier) { -// event->position doesn't exist in QT5.12.8, both exist in 5.14.2 and event->x doesn't exist in 5.15.0 #if QT_VERSION >= 0x050d00 - uint32_t x = event->position().x(); + // event->position doesn't exist in QT5.12.8, both exist in 5.14.2 and event->x doesn't exist in 5.15.0 + uint32_t x = event->position().x(); + // event->angleDelta doesn't exist in QT4, both exist in 5.12.8 and 5.14.2 and event->delta doesn't exist in 5.15.0 + float delta = -event->angleDelta().y(); #else - uint32_t x = event->x(); + uint32_t x = event->x(); + float delta = -event->delta(); #endif + if (event->modifiers() & (Qt::ShiftModifier | Qt::ControlModifier)) { x -= WIDTH_AXES; x = (int)(x / g_GraphPixelsPerPoint); x += g_GraphStart; -// event->angleDelta doesn't exist in QT4, both exist in 5.12.8 and 5.14.2 and event->delta doesn't exist in 5.15.0 -#if QT_VERSION >= 0x050d00 - float delta = event->angleDelta().y(); -#else - float delta = event->delta(); -#endif if (delta < 0) { - Zoom(zoom_offset, x); + Zoom(ZOOM_STEP, x); } else { - Zoom(1.0 / zoom_offset, x); + Zoom(1.0 / ZOOM_STEP, x); } } else { -#if QT_VERSION >= 0x050d00 - Move(PageWidth * (-(float)event->angleDelta().y() / (120 / move_offset))); -#else - Move(PageWidth * (-(float)event->delta() / (120 / move_offset))); -#endif + Move(PageWidth * delta * move_offset / 120 ); } this->update(); } @@ -972,7 +971,6 @@ void Plot::mouseMoveEvent(QMouseEvent *event) { void Plot::keyPressEvent(QKeyEvent *event) { uint32_t offset; // Left/right movement offset (in sample size) - const double zoom_offset = 1.148698354997035; // 2**(1/5) if (event->modifiers() & Qt::ShiftModifier) { if (g_PlotGridX) @@ -983,22 +981,22 @@ void Plot::keyPressEvent(QKeyEvent *event) { if (event->modifiers() & Qt::ControlModifier) offset = 1; else - offset = (int)(20 / g_GraphPixelsPerPoint); + offset = int(ZOOM_LIMIT/g_GraphPixelsPerPoint); } switch (event->key()) { case Qt::Key_Down: if (event->modifiers() & Qt::ShiftModifier) { if (event->modifiers() & Qt::ControlModifier) { - Zoom(zoom_offset, CursorBPos); + Zoom(ZOOM_STEP, CursorBPos); } else { - Zoom(2, CursorBPos); + Zoom(ZOOM_STEP*2, CursorBPos); } } else { if (event->modifiers() & Qt::ControlModifier) { - Zoom(zoom_offset, CursorAPos); + Zoom(ZOOM_STEP, CursorAPos); } else { - Zoom(2, CursorAPos); + Zoom(ZOOM_STEP*2, CursorAPos); } } break; @@ -1006,15 +1004,15 @@ void Plot::keyPressEvent(QKeyEvent *event) { case Qt::Key_Up: if (event->modifiers() & Qt::ShiftModifier) { if (event->modifiers() & Qt::ControlModifier) { - Zoom(1.0 / zoom_offset, CursorBPos); + Zoom(1.0 / ZOOM_STEP, CursorBPos); } else { - Zoom(0.5, CursorBPos); + Zoom(1.0 / (ZOOM_STEP*2), CursorBPos); } } else { if (event->modifiers() & Qt::ControlModifier) { - Zoom(1.0 / zoom_offset, CursorAPos); + Zoom(1.0 / ZOOM_STEP, CursorAPos); } else { - Zoom(0.5, CursorAPos); + Zoom(1.0 / (ZOOM_STEP*2), CursorAPos); } } break; From 6947a61d982f80cc91fec4c0789f32f70ef639c0 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 9 Aug 2023 14:30:07 +0200 Subject: [PATCH 0381/1034] Whitespace --- .vscode/setup.sh | 12 ++--- armsrc/fpgaloader.c | 50 +++++++++---------- armsrc/ldscript | 2 +- client/CMakeLists.txt | 6 +-- client/deps/mbedtls.cmake | 4 +- client/dictionaries/iclass_default_keys.dic | 2 +- client/dictionaries/mfc_default_keys.dic | 12 ++--- client/dictionaries/mfdes_default_keys.dic | 2 +- client/experimental_lib/CMakeLists.txt | 8 +-- client/resources/ecplist.json | 1 - client/src/cmdhw.c | 2 +- client/src/cmdlfem4x50.c | 6 +-- common/crapto1/readme | 4 +- tools/fpga_compress/fpga_compress.c | 14 +++--- tools/hitag2crack/crack2/.gitignore | 6 +-- .../crack5opencl/ht2crack5opencl_kernel.cl | 2 +- tools/mfd_aes_brute/readme.txt | 16 +++--- tools/mfkey/example_trace.txt | 8 +-- tools/nonce2key/readme.txt | 2 +- tools/pm3_tests.sh | 2 +- traces/lf_ATA5577.txt | 4 +- 21 files changed, 82 insertions(+), 83 deletions(-) diff --git a/.vscode/setup.sh b/.vscode/setup.sh index 70672b924..a319ab056 100755 --- a/.vscode/setup.sh +++ b/.vscode/setup.sh @@ -39,7 +39,7 @@ function print_config { function setup_serial_port { if [ -z "$SerialPort" ]; then pm3list=$($VSCODEPATH/../pm3 --list 2>/dev/null) - #Use first port listed + #Use first port listed export SerialPort=$(echo $pm3list | head -n 1 | cut -c 4-) if [ -z "$SerialPort" ]; then echo >&2 "[!!] No serial port found, please set SerialPort manually" @@ -129,17 +129,17 @@ fi HOSTOS=$(uname | awk '{print toupper($0)}') if [ "$HOSTOS" = "LINUX" ]; then - if uname -a|grep -q Microsoft; then + if uname -a|grep -q Microsoft; then setup_wsl - else + else setup_linux - fi + fi elif [ "$HOSTOS" = "DARWIN" ]; then echo >&2 "[!!] MacOS not supported, sorry!" exit 1 elif [[ "$HOSTOS" =~ MINGW(32|64)_NT* ]]; then setup_ps else - echo >&2 "[!!] Host OS not recognized, abort: $HOSTOS" - exit 1 + echo >&2 "[!!] Host OS not recognized, abort: $HOSTOS" + exit 1 fi \ No newline at end of file diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index 5c5b6f8c5..2d3f8caab 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -95,43 +95,43 @@ void SetupSpi(int mode) { case SPI_FPGA_MODE: AT91C_BASE_SPI->SPI_MR = (0 << 24) | // Delay between chip selects (take default: 6 MCK periods) - (0xE << 16) | // Peripheral Chip Select (selects FPGA SPI_NCS0 or PA11) + (0xE << 16) | // Peripheral Chip Select (selects FPGA SPI_NCS0 or PA11) (0 << 7) | // Local Loopback Disabled - AT91C_SPI_MODFDIS | // Mode Fault Detection disabled + AT91C_SPI_MODFDIS | // Mode Fault Detection disabled (0 << 2) | // Chip selects connected directly to peripheral - AT91C_SPI_PS_FIXED | // Fixed Peripheral Select + AT91C_SPI_PS_FIXED | // Fixed Peripheral Select AT91C_SPI_MSTR; // Master Mode AT91C_BASE_SPI->SPI_CSR[0] = (1 << 24) | // Delay between Consecutive Transfers (32 MCK periods) (1 << 16) | // Delay Before SPCK (1 MCK period) (6 << 8) | // Serial Clock Baud Rate (baudrate = MCK/6 = 24MHz/6 = 4M baud - AT91C_SPI_BITS_16 | // Bits per Transfer (16 bits) + AT91C_SPI_BITS_16 | // Bits per Transfer (16 bits) (0 << 3) | // Chip Select inactive after transfer - AT91C_SPI_NCPHA | // Clock Phase data captured on leading edge, changes on following edge + AT91C_SPI_NCPHA | // Clock Phase data captured on leading edge, changes on following edge (0 << 0); // Clock Polarity inactive state is logic 0 break; - /* - case SPI_LCD_MODE: - AT91C_BASE_SPI->SPI_MR = - ( 0 << 24) | // Delay between chip selects (take default: 6 MCK periods) - (0xB << 16) | // Peripheral Chip Select (selects LCD SPI_NCS2 or PA10) - ( 0 << 7) | // Local Loopback Disabled - ( 1 << 4) | // Mode Fault Detection disabled - ( 0 << 2) | // Chip selects connected directly to peripheral - ( 0 << 1) | // Fixed Peripheral Select - ( 1 << 0); // Master Mode +/* + case SPI_LCD_MODE: + AT91C_BASE_SPI->SPI_MR = + ( 0 << 24) | // Delay between chip selects (take default: 6 MCK periods) + (0xB << 16) | // Peripheral Chip Select (selects LCD SPI_NCS2 or PA10) + ( 0 << 7) | // Local Loopback Disabled + ( 1 << 4) | // Mode Fault Detection disabled + ( 0 << 2) | // Chip selects connected directly to peripheral + ( 0 << 1) | // Fixed Peripheral Select + ( 1 << 0); // Master Mode - AT91C_BASE_SPI->SPI_CSR[2] = - ( 1 << 24) | // Delay between Consecutive Transfers (32 MCK periods) - ( 1 << 16) | // Delay Before SPCK (1 MCK period) - ( 6 << 8) | // Serial Clock Baud Rate (baudrate = MCK/6 = 24MHz/6 = 4M baud - AT91C_SPI_BITS_9 | // Bits per Transfer (9 bits) - ( 0 << 3) | // Chip Select inactive after transfer - ( 1 << 1) | // Clock Phase data captured on leading edge, changes on following edge - ( 0 << 0); // Clock Polarity inactive state is logic 0 - break; - */ + AT91C_BASE_SPI->SPI_CSR[2] = + ( 1 << 24) | // Delay between Consecutive Transfers (32 MCK periods) + ( 1 << 16) | // Delay Before SPCK (1 MCK period) + ( 6 << 8) | // Serial Clock Baud Rate (baudrate = MCK/6 = 24MHz/6 = 4M baud + AT91C_SPI_BITS_9 | // Bits per Transfer (9 bits) + ( 0 << 3) | // Chip Select inactive after transfer + ( 1 << 1) | // Clock Phase data captured on leading edge, changes on following edge + ( 0 << 0); // Clock Polarity inactive state is logic 0 + break; +*/ default: DisableSpi(); break; diff --git a/armsrc/ldscript b/armsrc/ldscript index 1dd09e937..0824205a2 100644 --- a/armsrc/ldscript +++ b/armsrc/ldscript @@ -53,7 +53,7 @@ SECTIONS .bss : { __bss_start__ = .; *(.bss) - *(.bss.*) + *(.bss.*) . = ALIGN(4); __bss_end__ = .; } >ram AT>ram :bss diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index cbbedef73..5090dab63 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -379,7 +379,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/fileutils.c ${PM3_ROOT}/client/src/flash.c ${PM3_ROOT}/client/src/graph.c - ${PM3_ROOT}/client/src/iso4217.c + ${PM3_ROOT}/client/src/iso4217.c ${PM3_ROOT}/client/src/jansson_path.c ${PM3_ROOT}/client/src/preferences.c ${PM3_ROOT}/client/src/pm3.c @@ -656,14 +656,14 @@ if (MINGW) set(CMAKE_C_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_CXX_FLAGS}") - # GCC 10 has issues with false positives on stringop-overflow, + # GCC 10 has issues with false positives on stringop-overflow, # let's disable them for now (cf https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92955, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94335) # beware these flags didn't exist for GCC < 7 if(CMAKE_COMPILER_IS_GNUCXX) execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) if (GCC_VERSION VERSION_GREATER 10.0 OR GCC_VERSION VERSION_EQUAL 10.0) set(CMAKE_C_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_C_FLAGS}") - set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") endif() endif(CMAKE_COMPILER_IS_GNUCXX) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 2d212d9c2..58b9aae23 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -10,8 +10,8 @@ add_library(pm3rrg_rdv4_mbedtls STATIC ../../common/mbedtls/error.c ../../common/mbedtls/ecp.c ../../common/mbedtls/ecdh.c - ../../common/mbedtls/ecc_point_compression.c - ../../common/mbedtls/gcm.c + ../../common/mbedtls/ecc_point_compression.c + ../../common/mbedtls/gcm.c ../../common/mbedtls/ecp_curves.c ../../common/mbedtls/certs.c ../../common/mbedtls/camellia.c diff --git a/client/dictionaries/iclass_default_keys.dic b/client/dictionaries/iclass_default_keys.dic index d2d6489b2..c717cd88f 100644 --- a/client/dictionaries/iclass_default_keys.dic +++ b/client/dictionaries/iclass_default_keys.dic @@ -37,5 +37,5 @@ F41DAF58B20C8B91 66584C91EE80D5E5 C1B74D7478053AE2 # -# default iCLASS RFIDeas +# default iCLASS RFIDeas 6B65797374726B72 diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 345d1a702..a2ae9655e 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -36,7 +36,7 @@ D01AFEEB890A 2612C6DE84CA 707B11FC1481 # -# QL88 diversifed +# QL88 diversifed 03F9067646AE 2352C5B56D85 # @@ -71,8 +71,8 @@ B27CCAB30DBD D2ECE8B9395E # NSCP default key 1494E81663D7 -# -# NFC tools +# +# NFC tools 7c9fb8474242 # # Kiev keys @@ -299,7 +299,7 @@ AAFB06045877 25094DF6F148 # # -# https://mattionline.de/fitnessstudio-armband-reverse-engineering/ +# https://mattionline.de/fitnessstudio-armband-reverse-engineering/ # https://mattionline.de/milazycracker/ # gym wistband A, same as Fysiken A # gym wistband B @@ -310,7 +310,7 @@ AAFB06045877 A05DBD98E0FC # # GoFit -AA4DDA458EBB +AA4DDA458EBB EAB8066C7479 # # Nordic Wellness A, same as Fysiken A @@ -871,7 +871,7 @@ AD4FB33388BF # # HID MIFARE Classic 1k Key 484944204953 -204752454154 +204752454154 # HID MIFARE SO 3B7E4FD575AD 11496F97752A diff --git a/client/dictionaries/mfdes_default_keys.dic b/client/dictionaries/mfdes_default_keys.dic index fbf3a459f..3989054f9 100644 --- a/client/dictionaries/mfdes_default_keys.dic +++ b/client/dictionaries/mfdes_default_keys.dic @@ -15,7 +15,7 @@ ffffffffffffffffffffffffffffffffffffffffffffffff 6AC292FAA1315B4D858AB3A3D7D5933A 404142434445464748494a4b4c4d4e4f 3112B738D8862CCD34302EB299AAB456 # Gallagher AES (https://pastebin.com/GkbGLz8r) -47454D5850524553534F53414D504C45 # Gemalto +47454D5850524553534F53414D504C45 # Gemalto 2b7e151628aed2a6abf7158809cf4f3c fbeed618357133667c85e08f7236a8de f7ddac306ae266ccf90bc11ee46d513b diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 73ec65aad..f08ccdd6c 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -379,7 +379,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/fileutils.c ${PM3_ROOT}/client/src/flash.c ${PM3_ROOT}/client/src/graph.c - ${PM3_ROOT}/client/src/iso4217.c + ${PM3_ROOT}/client/src/iso4217.c ${PM3_ROOT}/client/src/jansson_path.c ${PM3_ROOT}/client/src/preferences.c ${PM3_ROOT}/client/src/pm3.c @@ -632,7 +632,7 @@ add_library(pm3rrg_rdv4 SHARED ) target_compile_definitions(pm3rrg_rdv4 PRIVATE LIBPM3) - + target_compile_options(pm3rrg_rdv4 PUBLIC -Wall -Werror -O3) if (EMBED_READLINE) if (NOT SKIPREADLINE EQUAL 1) @@ -656,14 +656,14 @@ if (MINGW) set(CMAKE_C_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_CXX_FLAGS}") - # GCC 10 has issues with false positives on stringop-overflow, + # GCC 10 has issues with false positives on stringop-overflow, # let's disable them for now (cf https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92955, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94335) # beware these flags didn't exist for GCC < 7 if(CMAKE_COMPILER_IS_GNUCXX) execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) if (GCC_VERSION VERSION_GREATER 10.0 OR GCC_VERSION VERSION_EQUAL 10.0) set(CMAKE_C_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_C_FLAGS}") - set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") endif() endif(CMAKE_COMPILER_IS_GNUCXX) diff --git a/client/resources/ecplist.json b/client/resources/ecplist.json index 991f79f2b..27db827f1 100644 --- a/client/resources/ecplist.json +++ b/client/resources/ecplist.json @@ -25,7 +25,6 @@ "description": "iPhones before IOS17 emit this frame so that other Apple devices don't react to the field during background reading. Also emitted during NFCReaderSession subtypes" }, - { "value": "6a02c801000300000000000000", "name": "Transit: Ventra", diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index aae539c34..ec3ab4867 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -690,7 +690,7 @@ static int CmdSetDivisor(const char *Cmd) { CLIParserFree(ctx); if (arg < 19) { - PrintAndLogEx(ERR, "Divisor must be between" _YELLOW_("19") " and " _YELLOW_("255")); + PrintAndLogEx(ERR, "Divisor must be between " _YELLOW_("19") " and " _YELLOW_("255")); return PM3_EINVARG; } // 12 000 000 (12MHz) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index c81767c7a..a304a84fe 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -1230,9 +1230,9 @@ int CmdEM4x50Sim(const char *Cmd) { clearCommandBuffer(); SendCommandNG(CMD_LF_EM4X50_SIM, (uint8_t *)&password, sizeof(password)); - + PrintAndLogEx(INFO, "Press " _GREEN_("") " or pm3-button to abort simulation"); - + PacketResponseNG resp; // init to ZERO resp.cmd = 0, @@ -1245,7 +1245,7 @@ int CmdEM4x50Sim(const char *Cmd) { resp.oldarg[1] = 0; resp.oldarg[2] = 0; memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); - + bool keypress; do { keypress = kbd_enter_pressed(); diff --git a/common/crapto1/readme b/common/crapto1/readme index d57fa3e08..3a979efad 100644 --- a/common/crapto1/readme +++ b/common/crapto1/readme @@ -3,10 +3,10 @@ CRAPTO1 Provides a set of library functions which aid the verification of crypto1 weaknesses. - In short a partial implementation of: + In short a partial implementation of: Dismantling MIFARE Classic URL: http://www.sos.cs.ru.nl/applications/rfid/2008-esorics.pdf - Flavio D. Garcia, Gerhard de Koning Gans, Ruben Muijrers, + Flavio D. Garcia, Gerhard de Koning Gans, Ruben Muijrers, Peter van Rossum, Roel Verdult, Ronny Wichers Schreur, Bart Jacobs Institute for Computing and Information Sciences, Radboud University Nijmegen, The Netherlands diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 5cb34e54b..152c8627e 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -83,7 +83,7 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { if (num_infiles == 1) { // 1M bytes for now - buffer_size = 1024 * 1024; + buffer_size = 1024 * 1024; } uint32_t outsize_max = LZ4_compressBound(buffer_size); @@ -92,7 +92,7 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { if (outbuf == NULL) { fprintf(stderr, "failed to allocate memory"); free(fpga_config); - return (EXIT_FAILURE); + return (EXIT_FAILURE); } char *ring_buffer = calloc(buffer_size, sizeof(char)); @@ -100,7 +100,7 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { fprintf(stderr, "failed to allocate memory"); free(outbuf); free(fpga_config); - return (EXIT_FAILURE); + return (EXIT_FAILURE); } LZ4_streamHC_t *lz4_streamhc = LZ4_createStreamHC(); @@ -108,7 +108,7 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { int current_in = 0; int current_out = 0; - + while (current_in < total_size) { int bytes_to_copy = MIN(FPGA_RING_BUFFER_BYTES, (total_size - current_in)); @@ -261,7 +261,7 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, for (long k = 0; k < *outsize / (FPGA_INTERLEAVE_SIZE * num_outfiles); k++) { for (uint16_t j = 0; j < num_outfiles; j++) { if (k * FPGA_INTERLEAVE_SIZE < outfilesizes[j]) { - uint16_t chunk = (outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) < FPGA_INTERLEAVE_SIZE) ? + uint16_t chunk = (outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) < FPGA_INTERLEAVE_SIZE) ? outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) : FPGA_INTERLEAVE_SIZE; fwrite(outbufall + offset, chunk, sizeof(char), outfiles[j]); @@ -534,7 +534,7 @@ int main(int argc, char **argv) { for (uint16_t j = 0; j < num_input_files; j++) { fclose(infiles[j]); } - + free(infile_names); free(infiles); return (EXIT_FAILURE); @@ -546,7 +546,7 @@ int main(int argc, char **argv) { } else { ret = zlib_compress(infiles, num_input_files, outfile); } - + // close file handlers fclose(outfile); for (uint16_t j = 0; j < num_input_files; j++) { diff --git a/tools/hitag2crack/crack2/.gitignore b/tools/hitag2crack/crack2/.gitignore index 71494d126..7cf31896d 100644 --- a/tools/hitag2crack/crack2/.gitignore +++ b/tools/hitag2crack/crack2/.gitignore @@ -1,6 +1,6 @@ -ht2crack2buildtable -ht2crack2search -ht2crack2gentest +ht2crack2buildtable +ht2crack2search +ht2crack2gentest ht2crack2buildtable.exe ht2crack2search.exe diff --git a/tools/hitag2crack/crack5opencl/ht2crack5opencl_kernel.cl b/tools/hitag2crack/crack5opencl/ht2crack5opencl_kernel.cl index 1d4bd9653..f914b229c 100644 --- a/tools/hitag2crack/crack5opencl/ht2crack5opencl_kernel.cl +++ b/tools/hitag2crack/crack5opencl/ht2crack5opencl_kernel.cl @@ -603,7 +603,7 @@ void find_state(const uint candidate_index_base, const bitslice_t filter9_3 = f_b_bs(state[-2 + 37], state[-2 + 38], state[-2 + 40], state[-2 + 42]); const bitslice_t filter9 = f_c_bs(filter9_0, filter9_1, filter9_2, filter9_3, filter9_4); - + results8 &= (filter9 ^ keystream[9]); if (!results8) continue; diff --git a/tools/mfd_aes_brute/readme.txt b/tools/mfd_aes_brute/readme.txt index c69835609..4d0ac2ec3 100644 --- a/tools/mfd_aes_brute/readme.txt +++ b/tools/mfd_aes_brute/readme.txt @@ -42,10 +42,10 @@ expected result: 261c07a23f2bc8262f69f10a5bdf3764 -Bruteforce using 8 threads -Found timestamp........ 1631100305 ( '2021-09-08 13:25:05' ) -key.................... 261c07a23f2bc8262f69f10a5bdf3764 -execution time 1.00 sec +Bruteforce using 8 threads +Found timestamp........ 1631100305 ( '2021-09-08 13:25:05' ) +key.................... 261c07a23f2bc8262f69f10a5bdf3764 +execution time 1.00 sec # # complex @@ -55,8 +55,8 @@ expected result: e757178e13516a4f3171bc6ea85e165a -Bruteforce using 8 threads -Found timestamp........ 1606834416 ( '2020-12-01 15:53:36' ) -key.................... e757178e13516a4f3171bc6ea85e165a -execution time 18.54 sec +Bruteforce using 8 threads +Found timestamp........ 1606834416 ( '2020-12-01 15:53:36' ) +key.................... e757178e13516a4f3171bc6ea85e165a +execution time 18.54 sec diff --git a/tools/mfkey/example_trace.txt b/tools/mfkey/example_trace.txt index 3705cebd1..b068c0577 100644 --- a/tools/mfkey/example_trace.txt +++ b/tools/mfkey/example_trace.txt @@ -10,20 +10,20 @@ + 1287: : a1 e4 58 ce 6e ea 41 e0 + 64: 0: TAG 5c ad f4 39 -:: Sample of trace above, +:: Sample of trace above, ./mfkey64 9c599b32 82a4166c a1e458ce 6eea41e0 5cadf439 ----------------------------------------------------------------------------------------------------- :: For mfkey32, you want to get two different NR_0/NR_1 values. :: -./mfkey32 52B0F519 5417D1F8 4D545EA7 E15AC8C2 DAC1A7F4 5AE5C37F +./mfkey32 52B0F519 5417D1F8 4D545EA7 E15AC8C2 DAC1A7F4 5AE5C37F :: For mfkey32v2 (moebius), you want to get two different NT/NT1 values. (like in the SIM commands) :: ./mfkey32v2 12345678 1AD8DF2B 1D316024 620EF048 30D6CB07 C52077E2 837AC61A -./mfkey32v2 52B0F519 5417D1F8 4D545EA7 E15AC8C2 A1BA88C6 DAC1A7F4 5AE5C37F +./mfkey32v2 52B0F519 5417D1F8 4D545EA7 E15AC8C2 A1BA88C6 DAC1A7F4 5AE5C37F :: for mfkey64, you want to have the AT response from tag. @@ -32,7 +32,7 @@ ./mfkey64 52B0F519 5417D1F8 4D545EA7 E15AC8C2 5056E41B ----------------------------------------------------------------------------------------------------- -New functionality from @zhovner, +New functionality from @zhovner, ----------------------------------------------------------------------------------------------------- ### Communication decryption RDR 26 diff --git a/tools/nonce2key/readme.txt b/tools/nonce2key/readme.txt index 39ef9ae6b..d28e57434 100644 --- a/tools/nonce2key/readme.txt +++ b/tools/nonce2key/readme.txt @@ -1,7 +1,7 @@ To test the nonce2key tool. :: tip -You can use the output from "hf mf mifare" to use with this tool. +You can use the output from "hf mf mifare" to use with this tool. :: sample ./nonce2key e9cadd9c a8bf4a12 a020a8285858b090 050f010607060e07 5693be6c00000000 diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 434468147..0957fd386 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -288,7 +288,7 @@ while true; do if ! CheckFileExist "mf_nonce_brute exists" "$MFNONCEBRUTEBIN"; then break; fi if ! CheckExecute slow "mf_nonce_brute test 1/2" "$MFNONCEBRUTEBIN 9c599b32 5a920d85 1011 98d76b77 d6c6e870 0000 ca7e0b63 0111 3e709c8a" "Key found \[.*ffffffffffff.*\]"; then break; fi if ! CheckExecute slow "mf_nonce_brute test 2/2" "$MFNONCEBRUTEBIN 96519578 d7e3c6ac 0011 cd311951 9da49e49 0010 2bb22e00 0100 a4f7f398" "Key found \[.*3b7e4fd575ad.*\]"; then break; fi - fi + fi if $TESTALL || $TESTMFDAESBRUTE; then echo -e "\n${C_BLUE}Testing mfd_aes_brute:${C_NC} ${MFDASEBRUTEBIN:=./tools/mfd_aes_brute/mfd_aes_brute}" if ! CheckFileExist "mfd_aes_brute exists" "$MFDASEBRUTEBIN"; then break; fi diff --git a/traces/lf_ATA5577.txt b/traces/lf_ATA5577.txt index 7d9ac4561..0ae92af08 100644 --- a/traces/lf_ATA5577.txt +++ b/traces/lf_ATA5577.txt @@ -44,7 +44,7 @@ lf indala clone --fc 123 --cn 1337 lf read s 10000 data save f lf_ATA5577_indala -lf indala clone -l -r 80000001b23523a6c2e31eba3cbee4afb3c6ad1fcf649393928c14e5 +lf indala clone -l -r 80000001b23523a6c2e31eba3cbee4afb3c6ad1fcf649393928c14e5 lf read s 10000 data save f lf_ATA5577_indala_224 @@ -92,7 +92,7 @@ lf noralsy clone 112233 lf read s 10000 data save f lf_ATA5577_noralsy -lf pac clone c CD4F5552 +lf pac clone c CD4F5552 lf read s 10000 data save f lf_ATA5577_pac From 4b1090c8c75e4d619e9ae319cad986e380fbdccd Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 9 Aug 2023 19:49:55 +0200 Subject: [PATCH 0382/1034] Rename "vocabulory" to "vocabulary" --- Makefile | 2 +- client/pyscripts/pm3_help2list.py | 12 +- client/src/pm3line.c | 10 +- client/src/pm3line_vocabulary.h | 1627 +++++++++++++++++++++++++++++ client/src/pm3line_vocabulory.h | 814 --------------- 5 files changed, 1639 insertions(+), 826 deletions(-) create mode 100644 client/src/pm3line_vocabulary.h delete mode 100644 client/src/pm3line_vocabulory.h diff --git a/Makefile b/Makefile index 9a3ae0611..c548646bf 100644 --- a/Makefile +++ b/Makefile @@ -321,7 +321,7 @@ style: [ -x client/proxmark3 ] && client/proxmark3 --fulltext | sed 's#com[0-9]#/dev/ttyacm0#'|python3 client/pyscripts/pm3_help2json.py - doc/commands.json # Update the readline autocomplete autogenerated code - [ -x client/proxmark3 ] && client/proxmark3 --fulltext | python3 client/pyscripts/pm3_help2list.py - client/src/pm3line_vocabulory.h + [ -x client/proxmark3 ] && client/proxmark3 --fulltext | python3 client/pyscripts/pm3_help2list.py - client/src/pm3line_vocabulary.h # Detecting weird codepages and tabs. diff --git a/client/pyscripts/pm3_help2list.py b/client/pyscripts/pm3_help2list.py index 7c27d23fe..7355bca46 100755 --- a/client/pyscripts/pm3_help2list.py +++ b/client/pyscripts/pm3_help2list.py @@ -12,7 +12,7 @@ This version - Iceman Note: - This script is used as a helper script to generate the pm3line_vocabulory.h file. + This script is used as a helper script to generate the pm3line_vocabulary.h file. It need a working proxmark3 client to extract the help text. Ie: this script can't be used inside the normal build sequence. @@ -65,8 +65,8 @@ def main(): // readline auto complete utilities //----------------------------------------------------------------------------- -#ifndef PM3LINE_VOCABULORY_H__ -#define PM3LINE_VOCABULORY_H__ +#ifndef PM3LINE_VOCABULARY_H__ +#define PM3LINE_VOCABULARY_H__ #ifdef __cplusplus extern "C" { @@ -74,12 +74,12 @@ extern "C" { #include -typedef struct vocabulory_s { +typedef struct vocabulary_s { bool offline; const char *name; -} vocabulory_t; +} vocabulary_t; -const static vocabulory_t vocabulory[] = {\n""") +const static vocabulary_t vocabulary[] = {\n""") for key, values in command_data.items(): offline = 0 diff --git a/client/src/pm3line.c b/client/src/pm3line.c index 1bf4476e0..5c09c6135 100644 --- a/client/src/pm3line.c +++ b/client/src/pm3line.c @@ -27,7 +27,7 @@ #elif defined(HAVE_LINENOISE) #include "linenoise.h" #endif -#include "pm3line_vocabulory.h" +#include "pm3line_vocabulary.h" #include "pm3_cmd.h" #include "ui.h" // g_session #include "util.h" // str_ndup @@ -45,12 +45,12 @@ static char *rl_command_generator(const char *text, int state) { len = strlen(text); } - while ((command = vocabulory[index].name)) { + while ((command = vocabulary[index].name)) { // When no pm3 device present // and the command is not available offline, // we skip it. - if ((g_session.pm3_present == false) && (vocabulory[index].offline == false)) { + if ((g_session.pm3_present == false) && (vocabulary[index].offline == false)) { index++; continue; } @@ -82,12 +82,12 @@ static void ln_command_completion(const char *text, linenoiseCompletions *lc) { size_t prev_match_len = 0; size_t len = strlen(text); const char *command; - while ((command = vocabulory[index].name)) { + while ((command = vocabulary[index].name)) { // When no pm3 device present // and the command is not available offline, // we skip it. - if ((g_session.pm3_present == false) && (vocabulory[index].offline == false)) { + if ((g_session.pm3_present == false) && (vocabulary[index].offline == false)) { index++; continue; } diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h new file mode 100644 index 000000000..96fb95dc5 --- /dev/null +++ b/client/src/pm3line_vocabulary.h @@ -0,0 +1,1627 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// readline auto complete utilities +//----------------------------------------------------------------------------- + +#ifndef PM3LINE_VOCABULARY_H__ +#define PM3LINE_VOCABULARY_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef struct vocabulary_s { + bool offline; + const char *name; +} vocabulary_t; + +const static vocabulary_t vocabulary[] = { + { 1, "help" }, + { 0, "auto" }, + { 1, "clear" }, + { 1, "hints" }, + { 1, "msleep" }, + { 1, "rem" }, + { 1, "quit" }, + { 1, "exit" }, + { 1, "prefs help" }, + { 1, "prefs show" }, + { 1, "prefs get barmode" }, + { 1, "prefs get clientdebug" }, + { 1, "prefs get clientdelay" }, + { 1, "prefs get color" }, + { 1, "prefs get savepaths" }, + { 1, "prefs get emoji" }, + { 1, "prefs get hints" }, + { 1, "prefs get output" }, + { 1, "prefs get plotsliders" }, + { 1, "prefs set help" }, + { 1, "prefs set barmode" }, + { 1, "prefs set clientdebug" }, + { 1, "prefs set clientdelay" }, + { 1, "prefs set color" }, + { 1, "prefs set emoji" }, + { 1, "prefs set hints" }, + { 1, "prefs set savepaths" }, + { 1, "prefs set output" }, + { 1, "prefs set plotsliders" }, + { 1, "analyse help" }, + { 1, "analyse lcr" }, + { 1, "analyse crc" }, + { 1, "analyse chksum" }, + { 1, "analyse dates" }, + { 1, "analyse lfsr" }, + { 1, "analyse a" }, + { 1, "analyse nuid" }, + { 1, "analyse demodbuff" }, + { 1, "analyse freq" }, + { 1, "analyse foo" }, + { 1, "analyse units" }, + { 1, "data help" }, + { 1, "data biphaserawdecode" }, + { 1, "data detectclock" }, + { 1, "data fsktonrz" }, + { 1, "data manrawdecode" }, + { 1, "data modulation" }, + { 1, "data rawdemod" }, + { 1, "data askedgedetect" }, + { 1, "data autocorr" }, + { 1, "data dirthreshold" }, + { 1, "data decimate" }, + { 1, "data envelope" }, + { 1, "data undecimate" }, + { 1, "data hide" }, + { 1, "data hpf" }, + { 1, "data iir" }, + { 1, "data grid" }, + { 1, "data ltrim" }, + { 1, "data mtrim" }, + { 1, "data norm" }, + { 1, "data plot" }, + { 1, "data cthreshold" }, + { 1, "data rtrim" }, + { 1, "data setgraphmarkers" }, + { 1, "data shiftgraphzero" }, + { 1, "data timescale" }, + { 1, "data zerocrossings" }, + { 1, "data convertbitstream" }, + { 1, "data getbitstream" }, + { 1, "data asn1" }, + { 1, "data atr" }, + { 1, "data bin2hex" }, + { 0, "data bitsamples" }, + { 1, "data clear" }, + { 1, "data diff" }, + { 0, "data hexsamples" }, + { 1, "data hex2bin" }, + { 1, "data load" }, + { 1, "data num" }, + { 1, "data print" }, + { 0, "data samples" }, + { 1, "data save" }, + { 1, "data setdebugmode" }, + { 0, "data tune" }, + { 1, "emv help" }, + { 1, "emv list" }, + { 1, "emv test" }, + { 0, "emv challenge" }, + { 0, "emv exec" }, + { 0, "emv genac" }, + { 0, "emv gpo" }, + { 0, "emv intauth" }, + { 0, "emv pse" }, + { 0, "emv reader" }, + { 0, "emv readrec" }, + { 0, "emv roca" }, + { 0, "emv scan" }, + { 0, "emv search" }, + { 0, "emv select" }, + { 1, "hf help" }, + { 1, "hf list" }, + { 0, "hf plot" }, + { 0, "hf tune" }, + { 1, "hf search" }, + { 0, "hf sniff" }, + { 1, "hf 14a help" }, + { 1, "hf 14a list" }, + { 0, "hf 14a antifuzz" }, + { 0, "hf 14a config" }, + { 0, "hf 14a cuids" }, + { 0, "hf 14a info" }, + { 0, "hf 14a sim" }, + { 0, "hf 14a sniff" }, + { 0, "hf 14a raw" }, + { 0, "hf 14a reader" }, + { 0, "hf 14a apdu" }, + { 0, "hf 14a apdufind" }, + { 0, "hf 14a chaining" }, + { 0, "hf 14a ndefformat" }, + { 0, "hf 14a ndefread" }, + { 0, "hf 14a ndefwrite" }, + { 1, "hf 14b help" }, + { 0, "hf 14b apdu" }, + { 0, "hf 14b dump" }, + { 0, "hf 14b info" }, + { 1, "hf 14b list" }, + { 0, "hf 14b ndefread" }, + { 0, "hf 14b raw" }, + { 0, "hf 14b reader" }, + { 0, "hf 14b sim" }, + { 0, "hf 14b sniff" }, + { 0, "hf 14b rdbl" }, + { 0, "hf 14b sriwrite" }, + { 1, "hf 14b view" }, + { 1, "hf 15 help" }, + { 1, "hf 15 list" }, + { 1, "hf 15 demod" }, + { 0, "hf 15 dump" }, + { 0, "hf 15 info" }, + { 0, "hf 15 sniff" }, + { 0, "hf 15 raw" }, + { 0, "hf 15 rdbl" }, + { 0, "hf 15 rdmulti" }, + { 0, "hf 15 reader" }, + { 0, "hf 15 restore" }, + { 0, "hf 15 samples" }, + { 1, "hf 15 view" }, + { 0, "hf 15 wrbl" }, + { 0, "hf 15 sim" }, + { 0, "hf 15 eload" }, + { 0, "hf 15 esave" }, + { 0, "hf 15 eview" }, + { 0, "hf 15 slixwritepwd" }, + { 0, "hf 15 slixeasdisable" }, + { 0, "hf 15 slixeasenable" }, + { 0, "hf 15 slixprivacydisable" }, + { 0, "hf 15 slixprivacyenable" }, + { 0, "hf 15 passprotectafi" }, + { 0, "hf 15 passprotecteas" }, + { 0, "hf 15 findafi" }, + { 0, "hf 15 writeafi" }, + { 0, "hf 15 writedsfid" }, + { 0, "hf 15 csetuid" }, + { 1, "hf cipurse help" }, + { 0, "hf cipurse info" }, + { 0, "hf cipurse select" }, + { 0, "hf cipurse auth" }, + { 0, "hf cipurse read" }, + { 0, "hf cipurse write" }, + { 0, "hf cipurse aread" }, + { 0, "hf cipurse awrite" }, + { 0, "hf cipurse formatall" }, + { 0, "hf cipurse create" }, + { 0, "hf cipurse delete" }, + { 0, "hf cipurse updkey" }, + { 0, "hf cipurse updakey" }, + { 0, "hf cipurse default" }, + { 1, "hf cipurse test" }, + { 1, "hf epa help" }, + { 0, "hf epa cnonces" }, + { 0, "hf epa replay" }, + { 0, "hf epa sim" }, + { 1, "hf emrtd help" }, + { 0, "hf emrtd dump" }, + { 1, "hf emrtd info" }, + { 1, "hf emrtd list" }, + { 1, "hf felica help" }, + { 1, "hf felica list" }, + { 0, "hf felica reader" }, + { 0, "hf felica info" }, + { 0, "hf felica sniff" }, + { 0, "hf felica raw" }, + { 0, "hf felica rdbl" }, + { 0, "hf felica wrbl" }, + { 0, "hf felica rqservice" }, + { 0, "hf felica rqresponse" }, + { 0, "hf felica scsvcode" }, + { 0, "hf felica rqsyscode" }, + { 0, "hf felica auth1" }, + { 0, "hf felica auth2" }, + { 0, "hf felica rqspecver" }, + { 0, "hf felica resetmode" }, + { 0, "hf felica litesim" }, + { 0, "hf felica litedump" }, + { 1, "hf fido help" }, + { 1, "hf fido list" }, + { 0, "hf fido info" }, + { 0, "hf fido reg" }, + { 0, "hf fido auth" }, + { 0, "hf fido make" }, + { 0, "hf fido assert" }, + { 1, "hf fudan help" }, + { 0, "hf fudan reader" }, + { 0, "hf fudan dump" }, + { 0, "hf fudan rdbl" }, + { 1, "hf fudan view" }, + { 0, "hf fudan wrbl" }, + { 1, "hf gallagher help" }, + { 0, "hf gallagher reader" }, + { 0, "hf gallagher clone" }, + { 0, "hf gallagher delete" }, + { 1, "hf gallagher diversifykey" }, + { 1, "hf gallagher decode" }, + { 1, "hf ksx6924 help" }, + { 0, "hf ksx6924 select" }, + { 0, "hf ksx6924 info" }, + { 0, "hf ksx6924 balance" }, + { 0, "hf ksx6924 init" }, + { 0, "hf ksx6924 prec" }, + { 1, "hf jooki help" }, + { 0, "hf jooki clone" }, + { 1, "hf jooki decode" }, + { 1, "hf jooki encode" }, + { 0, "hf jooki sim" }, + { 1, "hf iclass help" }, + { 1, "hf iclass list" }, + { 0, "hf iclass dump" }, + { 1, "hf iclass info" }, + { 0, "hf iclass rdbl" }, + { 0, "hf iclass reader" }, + { 0, "hf iclass restore" }, + { 0, "hf iclass sniff" }, + { 1, "hf iclass view" }, + { 0, "hf iclass wrbl" }, + { 0, "hf iclass chk" }, + { 1, "hf iclass loclass" }, + { 1, "hf iclass lookup" }, + { 0, "hf iclass sim" }, + { 0, "hf iclass eload" }, + { 0, "hf iclass esave" }, + { 0, "hf iclass eview" }, + { 1, "hf iclass configcard" }, + { 1, "hf iclass calcnewkey" }, + { 1, "hf iclass encode" }, + { 1, "hf iclass encrypt" }, + { 1, "hf iclass decrypt" }, + { 1, "hf iclass managekeys" }, + { 1, "hf iclass permutekey" }, + { 0, "hf iclass sam" }, + { 1, "hf legic help" }, + { 0, "hf legic dump" }, + { 0, "hf legic info" }, + { 1, "hf legic list" }, + { 0, "hf legic rdbl" }, + { 0, "hf legic reader" }, + { 0, "hf legic restore" }, + { 0, "hf legic wipe" }, + { 0, "hf legic wrbl" }, + { 0, "hf legic sim" }, + { 0, "hf legic eload" }, + { 0, "hf legic esave" }, + { 0, "hf legic eview" }, + { 0, "hf legic einfo" }, + { 1, "hf legic crc" }, + { 1, "hf legic view" }, + { 1, "hf lto help" }, + { 0, "hf lto dump" }, + { 0, "hf lto info" }, + { 1, "hf lto list" }, + { 0, "hf lto rdbl" }, + { 0, "hf lto reader" }, + { 0, "hf lto restore" }, + { 0, "hf lto wrbl" }, + { 1, "hf mf help" }, + { 1, "hf mf list" }, + { 0, "hf mf darkside" }, + { 0, "hf mf nested" }, + { 1, "hf mf hardnested" }, + { 0, "hf mf staticnested" }, + { 0, "hf mf autopwn" }, + { 0, "hf mf nack" }, + { 0, "hf mf chk" }, + { 0, "hf mf fchk" }, + { 1, "hf mf decrypt" }, + { 0, "hf mf supercard" }, + { 0, "hf mf auth4" }, + { 1, "hf mf acl" }, + { 0, "hf mf dump" }, + { 1, "hf mf mad" }, + { 0, "hf mf personalize" }, + { 0, "hf mf rdbl" }, + { 0, "hf mf rdsc" }, + { 0, "hf mf restore" }, + { 0, "hf mf setmod" }, + { 1, "hf mf value" }, + { 1, "hf mf view" }, + { 0, "hf mf wipe" }, + { 0, "hf mf wrbl" }, + { 0, "hf mf sim" }, + { 0, "hf mf ecfill" }, + { 0, "hf mf eclr" }, + { 0, "hf mf egetblk" }, + { 0, "hf mf egetsc" }, + { 0, "hf mf ekeyprn" }, + { 0, "hf mf eload" }, + { 0, "hf mf esave" }, + { 0, "hf mf esetblk" }, + { 0, "hf mf eview" }, + { 0, "hf mf cgetblk" }, + { 0, "hf mf cgetsc" }, + { 0, "hf mf cload" }, + { 0, "hf mf csave" }, + { 0, "hf mf csetblk" }, + { 0, "hf mf csetuid" }, + { 0, "hf mf cview" }, + { 0, "hf mf cwipe" }, + { 0, "hf mf gen3uid" }, + { 0, "hf mf gen3blk" }, + { 0, "hf mf gen3freeze" }, + { 0, "hf mf ggetblk" }, + { 0, "hf mf gload" }, + { 0, "hf mf gsave" }, + { 0, "hf mf gsetblk" }, + { 0, "hf mf gview" }, + { 0, "hf mf gdmcfg" }, + { 0, "hf mf gdmsetcfg" }, + { 0, "hf mf gdmsetblk" }, + { 0, "hf mf ndefformat" }, + { 0, "hf mf ndefread" }, + { 0, "hf mf ndefwrite" }, + { 1, "hf mfp help" }, + { 1, "hf mfp list" }, + { 0, "hf mfp auth" }, + { 0, "hf mfp chk" }, + { 0, "hf mfp dump" }, + { 0, "hf mfp info" }, + { 0, "hf mfp mad" }, + { 0, "hf mfp rdbl" }, + { 0, "hf mfp rdsc" }, + { 0, "hf mfp wrbl" }, + { 0, "hf mfp commitp" }, + { 0, "hf mfp initp" }, + { 0, "hf mfp wrp" }, + { 0, "hf mfp ndefformat" }, + { 0, "hf mfp ndefread" }, + { 0, "hf mfp ndefwrite" }, + { 1, "hf mfu help" }, + { 1, "hf mfu list" }, + { 1, "hf mfu keygen" }, + { 1, "hf mfu pwdgen" }, + { 0, "hf mfu otptear" }, + { 0, "hf mfu cauth" }, + { 0, "hf mfu dump" }, + { 0, "hf mfu info" }, + { 0, "hf mfu ndefread" }, + { 0, "hf mfu rdbl" }, + { 0, "hf mfu restore" }, + { 1, "hf mfu view" }, + { 0, "hf mfu wrbl" }, + { 0, "hf mfu tamper" }, + { 0, "hf mfu eload" }, + { 0, "hf mfu esave" }, + { 0, "hf mfu eview" }, + { 0, "hf mfu sim" }, + { 0, "hf mfu setpwd" }, + { 0, "hf mfu setuid" }, + { 1, "hf mfdes help" }, + { 0, "hf mfdes info" }, + { 0, "hf mfdes getuid" }, + { 0, "hf mfdes default" }, + { 0, "hf mfdes auth" }, + { 0, "hf mfdes chk" }, + { 0, "hf mfdes detect" }, + { 0, "hf mfdes freemem" }, + { 0, "hf mfdes setconfig" }, + { 0, "hf mfdes formatpicc" }, + { 1, "hf mfdes list" }, + { 0, "hf mfdes mad" }, + { 0, "hf mfdes lsapp" }, + { 0, "hf mfdes getaids" }, + { 0, "hf mfdes getappnames" }, + { 0, "hf mfdes bruteaid" }, + { 0, "hf mfdes createapp" }, + { 0, "hf mfdes deleteapp" }, + { 0, "hf mfdes selectapp" }, + { 0, "hf mfdes changekey" }, + { 0, "hf mfdes chkeysettings" }, + { 0, "hf mfdes getkeysettings" }, + { 0, "hf mfdes getkeyversions" }, + { 0, "hf mfdes getfileids" }, + { 0, "hf mfdes getfileisoids" }, + { 0, "hf mfdes lsfiles" }, + { 0, "hf mfdes dump" }, + { 0, "hf mfdes createfile" }, + { 0, "hf mfdes createvaluefile" }, + { 0, "hf mfdes createrecordfile" }, + { 0, "hf mfdes createmacfile" }, + { 0, "hf mfdes deletefile" }, + { 0, "hf mfdes getfilesettings" }, + { 0, "hf mfdes chfilesettings" }, + { 0, "hf mfdes read" }, + { 0, "hf mfdes write" }, + { 0, "hf mfdes value" }, + { 0, "hf mfdes clearrecfile" }, + { 1, "hf mfdes test" }, + { 1, "hf ntag424 help" }, + { 0, "hf ntag424 info" }, + { 0, "hf ntag424 sdm" }, + { 1, "hf ntag424 view" }, + { 1, "hf seos help" }, + { 0, "hf seos info" }, + { 1, "hf seos list" }, + { 1, "hf st25ta help" }, + { 0, "hf st25ta info" }, + { 1, "hf st25ta list" }, + { 1, "hf st25ta ndefread" }, + { 0, "hf st25ta protect" }, + { 0, "hf st25ta pwd" }, + { 0, "hf st25ta sim" }, + { 1, "hf tesla help" }, + { 0, "hf tesla info" }, + { 1, "hf tesla list" }, + { 1, "hf texkom help" }, + { 0, "hf texkom reader" }, + { 0, "hf texkom sim" }, + { 1, "hf thinfilm help" }, + { 0, "hf thinfilm info" }, + { 1, "hf thinfilm list" }, + { 0, "hf thinfilm sim" }, + { 1, "hf topaz help" }, + { 1, "hf topaz list" }, + { 0, "hf topaz dump" }, + { 0, "hf topaz info" }, + { 0, "hf topaz raw" }, + { 0, "hf topaz rdbl" }, + { 0, "hf topaz reader" }, + { 0, "hf topaz sim" }, + { 0, "hf topaz sniff" }, + { 1, "hf topaz view" }, + { 0, "hf topaz wrbl" }, + { 1, "hf vas help" }, + { 0, "hf vas reader" }, + { 1, "hf vas decrypt" }, + { 1, "hf waveshare help" }, + { 0, "hf waveshare loadbmp" }, + { 1, "hf xerox help" }, + { 0, "hf xerox info" }, + { 0, "hf xerox reader" }, + { 0, "hf xerox dump" }, + { 1, "hw help" }, + { 0, "hw break" }, + { 1, "hw connect" }, + { 0, "hw dbg" }, + { 0, "hw detectreader" }, + { 0, "hw fpgaoff" }, + { 0, "hw lcd" }, + { 0, "hw lcdreset" }, + { 0, "hw ping" }, + { 0, "hw readmem" }, + { 0, "hw reset" }, + { 0, "hw setlfdivisor" }, + { 0, "hw setmux" }, + { 0, "hw standalone" }, + { 0, "hw status" }, + { 0, "hw tearoff" }, + { 0, "hw tia" }, + { 1, "hw timeout" }, + { 0, "hw tune" }, + { 1, "hw version" }, + { 1, "lf help" }, + { 0, "lf config" }, + { 0, "lf cmdread" }, + { 0, "lf read" }, + { 1, "lf search" }, + { 0, "lf sim" }, + { 0, "lf simask" }, + { 0, "lf simfsk" }, + { 0, "lf simpsk" }, + { 0, "lf simbidir" }, + { 0, "lf sniff" }, + { 0, "lf tune" }, + { 1, "lf awid help" }, + { 1, "lf awid demod" }, + { 0, "lf awid reader" }, + { 0, "lf awid clone" }, + { 0, "lf awid sim" }, + { 0, "lf awid brute" }, + { 0, "lf awid watch" }, + { 1, "lf cotag help" }, + { 1, "lf cotag demod" }, + { 0, "lf cotag reader" }, + { 1, "lf destron help" }, + { 1, "lf destron demod" }, + { 0, "lf destron reader" }, + { 0, "lf destron clone" }, + { 0, "lf destron sim" }, + { 1, "lf em help" }, + { 1, "lf em 410x help" }, + { 1, "lf em 410x demod" }, + { 0, "lf em 410x reader" }, + { 0, "lf em 410x sim" }, + { 0, "lf em 410x brute" }, + { 0, "lf em 410x watch" }, + { 0, "lf em 410x spoof" }, + { 0, "lf em 410x clone" }, + { 1, "lf em 4x05 help" }, + { 0, "lf em 4x05 brute" }, + { 0, "lf em 4x05 chk" }, + { 1, "lf em 4x05 demod" }, + { 0, "lf em 4x05 dump" }, + { 0, "lf em 4x05 info" }, + { 0, "lf em 4x05 read" }, + { 1, "lf em 4x05 sniff" }, + { 0, "lf em 4x05 unlock" }, + { 0, "lf em 4x05 wipe" }, + { 0, "lf em 4x05 write" }, + { 1, "lf em 4x50 help" }, + { 0, "lf em 4x50 brute" }, + { 0, "lf em 4x50 chk" }, + { 0, "lf em 4x50 dump" }, + { 0, "lf em 4x50 info" }, + { 0, "lf em 4x50 login" }, + { 0, "lf em 4x50 rdbl" }, + { 0, "lf em 4x50 reader" }, + { 0, "lf em 4x50 restore" }, + { 0, "lf em 4x50 wrbl" }, + { 0, "lf em 4x50 wrpwd" }, + { 0, "lf em 4x50 wipe" }, + { 0, "lf em 4x50 eload" }, + { 0, "lf em 4x50 esave" }, + { 0, "lf em 4x50 eview" }, + { 0, "lf em 4x50 sim" }, + { 1, "lf em 4x70 help" }, + { 0, "lf em 4x70 brute" }, + { 0, "lf em 4x70 info" }, + { 0, "lf em 4x70 write" }, + { 0, "lf em 4x70 unlock" }, + { 0, "lf em 4x70 auth" }, + { 0, "lf em 4x70 writepin" }, + { 0, "lf em 4x70 writekey" }, + { 1, "lf fdxb help" }, + { 1, "lf fdxb demod" }, + { 0, "lf fdxb reader" }, + { 0, "lf fdxb clone" }, + { 0, "lf fdxb sim" }, + { 1, "lf gallagher help" }, + { 1, "lf gallagher demod" }, + { 0, "lf gallagher reader" }, + { 0, "lf gallagher clone" }, + { 0, "lf gallagher sim" }, + { 1, "lf gproxii help" }, + { 1, "lf gproxii demod" }, + { 0, "lf gproxii reader" }, + { 0, "lf gproxii clone" }, + { 0, "lf gproxii sim" }, + { 1, "lf hid help" }, + { 1, "lf hid demod" }, + { 0, "lf hid reader" }, + { 0, "lf hid clone" }, + { 0, "lf hid sim" }, + { 0, "lf hid brute" }, + { 0, "lf hid watch" }, + { 1, "lf hitag help" }, + { 1, "lf hitag list" }, + { 0, "lf hitag info" }, + { 0, "lf hitag dump" }, + { 0, "lf hitag read" }, + { 0, "lf hitag wrbl" }, + { 0, "lf hitag sniff" }, + { 0, "lf hitag cc" }, + { 0, "lf hitag ta" }, + { 0, "lf hitag eload" }, + { 0, "lf hitag sim" }, + { 1, "lf idteck help" }, + { 1, "lf idteck demod" }, + { 0, "lf idteck reader" }, + { 0, "lf idteck clone" }, + { 0, "lf idteck sim" }, + { 1, "lf indala help" }, + { 0, "lf indala brute" }, + { 1, "lf indala demod" }, + { 1, "lf indala altdemod" }, + { 0, "lf indala reader" }, + { 0, "lf indala clone" }, + { 0, "lf indala sim" }, + { 1, "lf io help" }, + { 1, "lf io demod" }, + { 0, "lf io reader" }, + { 0, "lf io clone" }, + { 0, "lf io sim" }, + { 0, "lf io watch" }, + { 1, "lf jablotron help" }, + { 1, "lf jablotron demod" }, + { 0, "lf jablotron reader" }, + { 0, "lf jablotron clone" }, + { 0, "lf jablotron sim" }, + { 1, "lf keri help" }, + { 1, "lf keri demod" }, + { 0, "lf keri reader" }, + { 0, "lf keri clone" }, + { 0, "lf keri sim" }, + { 1, "lf motorola help" }, + { 1, "lf motorola demod" }, + { 0, "lf motorola reader" }, + { 0, "lf motorola clone" }, + { 0, "lf motorola sim" }, + { 1, "lf nedap help" }, + { 1, "lf nedap demod" }, + { 0, "lf nedap reader" }, + { 0, "lf nedap clone" }, + { 0, "lf nedap sim" }, + { 1, "lf nexwatch help" }, + { 1, "lf nexwatch demod" }, + { 0, "lf nexwatch reader" }, + { 0, "lf nexwatch clone" }, + { 0, "lf nexwatch sim" }, + { 1, "lf noralsy help" }, + { 1, "lf noralsy demod" }, + { 0, "lf noralsy reader" }, + { 0, "lf noralsy clone" }, + { 0, "lf noralsy sim" }, + { 1, "lf pac help" }, + { 1, "lf pac demod" }, + { 0, "lf pac reader" }, + { 0, "lf pac clone" }, + { 0, "lf pac sim" }, + { 1, "lf paradox help" }, + { 1, "lf paradox demod" }, + { 0, "lf paradox reader" }, + { 0, "lf paradox clone" }, + { 0, "lf paradox sim" }, + { 1, "lf pcf7931 help" }, + { 0, "lf pcf7931 reader" }, + { 0, "lf pcf7931 write" }, + { 1, "lf pcf7931 config" }, + { 1, "lf presco help" }, + { 1, "lf presco demod" }, + { 0, "lf presco reader" }, + { 0, "lf presco clone" }, + { 0, "lf presco sim" }, + { 1, "lf pyramid help" }, + { 1, "lf pyramid demod" }, + { 0, "lf pyramid reader" }, + { 0, "lf pyramid clone" }, + { 0, "lf pyramid sim" }, + { 1, "lf securakey help" }, + { 1, "lf securakey demod" }, + { 0, "lf securakey reader" }, + { 0, "lf securakey clone" }, + { 0, "lf securakey sim" }, + { 1, "lf ti help" }, + { 1, "lf ti demod" }, + { 0, "lf ti reader" }, + { 0, "lf ti write" }, + { 1, "lf t55xx help" }, + { 0, "lf t55xx clonehelp" }, + { 1, "lf t55xx config" }, + { 0, "lf t55xx dangerraw" }, + { 1, "lf t55xx detect" }, + { 0, "lf t55xx deviceconfig" }, + { 0, "lf t55xx dump" }, + { 1, "lf t55xx info" }, + { 0, "lf t55xx p1detect" }, + { 0, "lf t55xx read" }, + { 0, "lf t55xx resetread" }, + { 0, "lf t55xx restore" }, + { 1, "lf t55xx trace" }, + { 0, "lf t55xx wakeup" }, + { 0, "lf t55xx write" }, + { 0, "lf t55xx bruteforce" }, + { 0, "lf t55xx chk" }, + { 0, "lf t55xx protect" }, + { 0, "lf t55xx recoverpw" }, + { 1, "lf t55xx sniff" }, + { 0, "lf t55xx special" }, + { 0, "lf t55xx wipe" }, + { 1, "lf viking help" }, + { 1, "lf viking demod" }, + { 0, "lf viking reader" }, + { 0, "lf viking clone" }, + { 0, "lf viking sim" }, + { 1, "lf visa2000 help" }, + { 1, "lf visa2000 demod" }, + { 0, "lf visa2000 reader" }, + { 0, "lf visa2000 clone" }, + { 0, "lf visa2000 sim" }, + { 1, "mem help" }, + { 0, "mem baudrate" }, + { 0, "mem dump" }, + { 0, "mem info" }, + { 0, "mem load" }, + { 0, "mem wipe" }, + { 1, "mem spiffs help" }, + { 0, "mem spiffs copy" }, + { 0, "mem spiffs check" }, + { 0, "mem spiffs dump" }, + { 0, "mem spiffs info" }, + { 0, "mem spiffs mount" }, + { 0, "mem spiffs remove" }, + { 0, "mem spiffs rename" }, + { 0, "mem spiffs test" }, + { 0, "mem spiffs tree" }, + { 0, "mem spiffs unmount" }, + { 0, "mem spiffs upload" }, + { 0, "mem spiffs view" }, + { 0, "mem spiffs wipe" }, + { 1, "nfc help" }, + { 1, "nfc decode" }, + { 0, "nfc type1 read" }, + { 1, "nfc type1 help" }, + { 0, "nfc type2 read" }, + { 1, "nfc type2 help" }, + { 0, "nfc type4a format" }, + { 0, "nfc type4a read" }, + { 0, "nfc type4a write" }, + { 0, "nfc type4a st25taread" }, + { 1, "nfc type4a help" }, + { 0, "nfc type4b read" }, + { 1, "nfc type4b help" }, + { 0, "nfc mf cformat" }, + { 0, "nfc mf cread" }, + { 0, "nfc mf cwrite" }, + { 0, "nfc mf pread" }, + { 1, "nfc mf help" }, + { 0, "nfc barcode read" }, + { 0, "nfc barcode sim" }, + { 1, "nfc barcode help" }, + { 1, "piv help" }, + { 0, "piv select" }, + { 0, "piv getdata" }, + { 0, "piv authsign" }, + { 0, "piv scan" }, + { 1, "piv list" }, + { 1, "smart help" }, + { 1, "smart list" }, + { 0, "smart info" }, + { 0, "smart reader" }, + { 0, "smart raw" }, + { 1, "smart upgrade" }, + { 0, "smart setclock" }, + { 0, "smart brute" }, + { 1, "script help" }, + { 1, "script list" }, + { 1, "script run" }, + { 1, "trace help" }, + { 1, "trace extract" }, + { 1, "trace list" }, + { 1, "trace load" }, + { 1, "trace save" }, + { 1, "usart help" }, + { 0, "usart btpin" }, + { 0, "usart btfactory" }, + { 0, "usart tx" }, + { 0, "usart rx" }, + { 0, "usart txrx" }, + { 0, "usart txhex" }, + { 0, "usart rxhex" }, + { 0, "usart config" }, + { 1, "wiegand help" }, + { 1, "wiegand list" }, + { 1, "wiegand encode" }, + { 1, "wiegand decode" }, + {0, NULL} +}; + +#ifdef __cplusplus +} +#endif + +#endif//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// readline auto complete utilities +//----------------------------------------------------------------------------- + +#ifndef PM3LINE_VOCABULORY_H__ +#define PM3LINE_VOCABULORY_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef struct vocabulory_s { + bool offline; + const char *name; +} vocabulory_t; + +const static vocabulory_t vocabulory[] = { + { 1, "help" }, + { 0, "auto" }, + { 1, "clear" }, + { 1, "hints" }, + { 1, "msleep" }, + { 1, "rem" }, + { 1, "quit" }, + { 1, "exit" }, + { 1, "prefs help" }, + { 1, "prefs show" }, + { 1, "prefs get barmode" }, + { 1, "prefs get clientdebug" }, + { 1, "prefs get clientdelay" }, + { 1, "prefs get color" }, + { 1, "prefs get savepaths" }, + { 1, "prefs get emoji" }, + { 1, "prefs get hints" }, + { 1, "prefs get output" }, + { 1, "prefs get plotsliders" }, + { 1, "prefs set help" }, + { 1, "prefs set barmode" }, + { 1, "prefs set clientdebug" }, + { 1, "prefs set clientdelay" }, + { 1, "prefs set color" }, + { 1, "prefs set emoji" }, + { 1, "prefs set hints" }, + { 1, "prefs set savepaths" }, + { 1, "prefs set output" }, + { 1, "prefs set plotsliders" }, + { 1, "analyse help" }, + { 1, "analyse lcr" }, + { 1, "analyse crc" }, + { 1, "analyse chksum" }, + { 1, "analyse dates" }, + { 1, "analyse lfsr" }, + { 1, "analyse a" }, + { 1, "analyse nuid" }, + { 1, "analyse demodbuff" }, + { 1, "analyse freq" }, + { 1, "analyse foo" }, + { 1, "analyse units" }, + { 1, "data help" }, + { 1, "data biphaserawdecode" }, + { 1, "data detectclock" }, + { 1, "data fsktonrz" }, + { 1, "data manrawdecode" }, + { 1, "data modulation" }, + { 1, "data rawdemod" }, + { 1, "data askedgedetect" }, + { 1, "data autocorr" }, + { 1, "data dirthreshold" }, + { 1, "data decimate" }, + { 1, "data envelope" }, + { 1, "data undecimate" }, + { 1, "data hide" }, + { 1, "data hpf" }, + { 1, "data iir" }, + { 1, "data grid" }, + { 1, "data ltrim" }, + { 1, "data mtrim" }, + { 1, "data norm" }, + { 1, "data plot" }, + { 1, "data cthreshold" }, + { 1, "data rtrim" }, + { 1, "data setgraphmarkers" }, + { 1, "data shiftgraphzero" }, + { 1, "data timescale" }, + { 1, "data zerocrossings" }, + { 1, "data convertbitstream" }, + { 1, "data getbitstream" }, + { 1, "data asn1" }, + { 1, "data atr" }, + { 1, "data bin2hex" }, + { 0, "data bitsamples" }, + { 1, "data clear" }, + { 1, "data diff" }, + { 0, "data hexsamples" }, + { 1, "data hex2bin" }, + { 1, "data load" }, + { 1, "data num" }, + { 1, "data print" }, + { 0, "data samples" }, + { 1, "data save" }, + { 1, "data setdebugmode" }, + { 0, "data tune" }, + { 1, "emv help" }, + { 1, "emv list" }, + { 1, "emv test" }, + { 0, "emv challenge" }, + { 0, "emv exec" }, + { 0, "emv genac" }, + { 0, "emv gpo" }, + { 0, "emv intauth" }, + { 0, "emv pse" }, + { 0, "emv reader" }, + { 0, "emv readrec" }, + { 0, "emv roca" }, + { 0, "emv scan" }, + { 0, "emv search" }, + { 0, "emv select" }, + { 1, "hf help" }, + { 1, "hf list" }, + { 0, "hf plot" }, + { 0, "hf tune" }, + { 1, "hf search" }, + { 0, "hf sniff" }, + { 1, "hf 14a help" }, + { 1, "hf 14a list" }, + { 0, "hf 14a antifuzz" }, + { 0, "hf 14a config" }, + { 0, "hf 14a cuids" }, + { 0, "hf 14a info" }, + { 0, "hf 14a sim" }, + { 0, "hf 14a sniff" }, + { 0, "hf 14a raw" }, + { 0, "hf 14a reader" }, + { 0, "hf 14a apdu" }, + { 0, "hf 14a apdufind" }, + { 0, "hf 14a chaining" }, + { 0, "hf 14a ndefformat" }, + { 0, "hf 14a ndefread" }, + { 0, "hf 14a ndefwrite" }, + { 1, "hf 14b help" }, + { 0, "hf 14b apdu" }, + { 0, "hf 14b dump" }, + { 0, "hf 14b info" }, + { 1, "hf 14b list" }, + { 0, "hf 14b ndefread" }, + { 0, "hf 14b raw" }, + { 0, "hf 14b reader" }, + { 0, "hf 14b sim" }, + { 0, "hf 14b sniff" }, + { 0, "hf 14b rdbl" }, + { 0, "hf 14b sriwrite" }, + { 1, "hf 14b view" }, + { 1, "hf 15 help" }, + { 1, "hf 15 list" }, + { 1, "hf 15 demod" }, + { 0, "hf 15 dump" }, + { 0, "hf 15 info" }, + { 0, "hf 15 sniff" }, + { 0, "hf 15 raw" }, + { 0, "hf 15 rdbl" }, + { 0, "hf 15 rdmulti" }, + { 0, "hf 15 reader" }, + { 0, "hf 15 restore" }, + { 0, "hf 15 samples" }, + { 1, "hf 15 view" }, + { 0, "hf 15 wrbl" }, + { 0, "hf 15 sim" }, + { 0, "hf 15 eload" }, + { 0, "hf 15 esave" }, + { 0, "hf 15 eview" }, + { 0, "hf 15 slixwritepwd" }, + { 0, "hf 15 slixeasdisable" }, + { 0, "hf 15 slixeasenable" }, + { 0, "hf 15 slixprivacydisable" }, + { 0, "hf 15 slixprivacyenable" }, + { 0, "hf 15 passprotectafi" }, + { 0, "hf 15 passprotecteas" }, + { 0, "hf 15 findafi" }, + { 0, "hf 15 writeafi" }, + { 0, "hf 15 writedsfid" }, + { 0, "hf 15 csetuid" }, + { 1, "hf cipurse help" }, + { 0, "hf cipurse info" }, + { 0, "hf cipurse select" }, + { 0, "hf cipurse auth" }, + { 0, "hf cipurse read" }, + { 0, "hf cipurse write" }, + { 0, "hf cipurse aread" }, + { 0, "hf cipurse awrite" }, + { 0, "hf cipurse formatall" }, + { 0, "hf cipurse create" }, + { 0, "hf cipurse delete" }, + { 0, "hf cipurse updkey" }, + { 0, "hf cipurse updakey" }, + { 0, "hf cipurse default" }, + { 1, "hf cipurse test" }, + { 1, "hf epa help" }, + { 0, "hf epa cnonces" }, + { 0, "hf epa replay" }, + { 0, "hf epa sim" }, + { 1, "hf emrtd help" }, + { 0, "hf emrtd dump" }, + { 1, "hf emrtd info" }, + { 1, "hf emrtd list" }, + { 1, "hf felica help" }, + { 1, "hf felica list" }, + { 0, "hf felica reader" }, + { 0, "hf felica info" }, + { 0, "hf felica sniff" }, + { 0, "hf felica raw" }, + { 0, "hf felica rdbl" }, + { 0, "hf felica wrbl" }, + { 0, "hf felica rqservice" }, + { 0, "hf felica rqresponse" }, + { 0, "hf felica scsvcode" }, + { 0, "hf felica rqsyscode" }, + { 0, "hf felica auth1" }, + { 0, "hf felica auth2" }, + { 0, "hf felica rqspecver" }, + { 0, "hf felica resetmode" }, + { 0, "hf felica litesim" }, + { 0, "hf felica litedump" }, + { 1, "hf fido help" }, + { 1, "hf fido list" }, + { 0, "hf fido info" }, + { 0, "hf fido reg" }, + { 0, "hf fido auth" }, + { 0, "hf fido make" }, + { 0, "hf fido assert" }, + { 1, "hf fudan help" }, + { 0, "hf fudan reader" }, + { 0, "hf fudan dump" }, + { 0, "hf fudan rdbl" }, + { 1, "hf fudan view" }, + { 0, "hf fudan wrbl" }, + { 1, "hf gallagher help" }, + { 0, "hf gallagher reader" }, + { 0, "hf gallagher clone" }, + { 0, "hf gallagher delete" }, + { 1, "hf gallagher diversifykey" }, + { 1, "hf gallagher decode" }, + { 1, "hf ksx6924 help" }, + { 0, "hf ksx6924 select" }, + { 0, "hf ksx6924 info" }, + { 0, "hf ksx6924 balance" }, + { 0, "hf ksx6924 init" }, + { 0, "hf ksx6924 prec" }, + { 1, "hf jooki help" }, + { 0, "hf jooki clone" }, + { 1, "hf jooki decode" }, + { 1, "hf jooki encode" }, + { 0, "hf jooki sim" }, + { 1, "hf iclass help" }, + { 1, "hf iclass list" }, + { 0, "hf iclass dump" }, + { 1, "hf iclass info" }, + { 0, "hf iclass rdbl" }, + { 0, "hf iclass reader" }, + { 0, "hf iclass restore" }, + { 0, "hf iclass sniff" }, + { 1, "hf iclass view" }, + { 0, "hf iclass wrbl" }, + { 0, "hf iclass chk" }, + { 1, "hf iclass loclass" }, + { 1, "hf iclass lookup" }, + { 0, "hf iclass sim" }, + { 0, "hf iclass eload" }, + { 0, "hf iclass esave" }, + { 0, "hf iclass eview" }, + { 1, "hf iclass configcard" }, + { 1, "hf iclass calcnewkey" }, + { 1, "hf iclass encode" }, + { 1, "hf iclass encrypt" }, + { 1, "hf iclass decrypt" }, + { 1, "hf iclass managekeys" }, + { 1, "hf iclass permutekey" }, + { 0, "hf iclass sam" }, + { 1, "hf legic help" }, + { 0, "hf legic dump" }, + { 0, "hf legic info" }, + { 1, "hf legic list" }, + { 0, "hf legic rdbl" }, + { 0, "hf legic reader" }, + { 0, "hf legic restore" }, + { 0, "hf legic wipe" }, + { 0, "hf legic wrbl" }, + { 0, "hf legic sim" }, + { 0, "hf legic eload" }, + { 0, "hf legic esave" }, + { 0, "hf legic eview" }, + { 0, "hf legic einfo" }, + { 1, "hf legic crc" }, + { 1, "hf legic view" }, + { 1, "hf lto help" }, + { 0, "hf lto dump" }, + { 0, "hf lto info" }, + { 1, "hf lto list" }, + { 0, "hf lto rdbl" }, + { 0, "hf lto reader" }, + { 0, "hf lto restore" }, + { 0, "hf lto wrbl" }, + { 1, "hf mf help" }, + { 1, "hf mf list" }, + { 0, "hf mf darkside" }, + { 0, "hf mf nested" }, + { 1, "hf mf hardnested" }, + { 0, "hf mf staticnested" }, + { 0, "hf mf autopwn" }, + { 0, "hf mf nack" }, + { 0, "hf mf chk" }, + { 0, "hf mf fchk" }, + { 1, "hf mf decrypt" }, + { 0, "hf mf supercard" }, + { 0, "hf mf auth4" }, + { 1, "hf mf acl" }, + { 0, "hf mf dump" }, + { 1, "hf mf mad" }, + { 0, "hf mf personalize" }, + { 0, "hf mf rdbl" }, + { 0, "hf mf rdsc" }, + { 0, "hf mf restore" }, + { 0, "hf mf setmod" }, + { 1, "hf mf value" }, + { 1, "hf mf view" }, + { 0, "hf mf wipe" }, + { 0, "hf mf wrbl" }, + { 0, "hf mf sim" }, + { 0, "hf mf ecfill" }, + { 0, "hf mf eclr" }, + { 0, "hf mf egetblk" }, + { 0, "hf mf egetsc" }, + { 0, "hf mf ekeyprn" }, + { 0, "hf mf eload" }, + { 0, "hf mf esave" }, + { 0, "hf mf esetblk" }, + { 0, "hf mf eview" }, + { 0, "hf mf cgetblk" }, + { 0, "hf mf cgetsc" }, + { 0, "hf mf cload" }, + { 0, "hf mf csave" }, + { 0, "hf mf csetblk" }, + { 0, "hf mf csetuid" }, + { 0, "hf mf cview" }, + { 0, "hf mf cwipe" }, + { 0, "hf mf gen3uid" }, + { 0, "hf mf gen3blk" }, + { 0, "hf mf gen3freeze" }, + { 0, "hf mf ggetblk" }, + { 0, "hf mf gload" }, + { 0, "hf mf gsave" }, + { 0, "hf mf gsetblk" }, + { 0, "hf mf gview" }, + { 0, "hf mf gdmcfg" }, + { 0, "hf mf gdmsetcfg" }, + { 0, "hf mf gdmsetblk" }, + { 0, "hf mf ndefformat" }, + { 0, "hf mf ndefread" }, + { 0, "hf mf ndefwrite" }, + { 1, "hf mfp help" }, + { 1, "hf mfp list" }, + { 0, "hf mfp auth" }, + { 0, "hf mfp chk" }, + { 0, "hf mfp dump" }, + { 0, "hf mfp info" }, + { 0, "hf mfp mad" }, + { 0, "hf mfp rdbl" }, + { 0, "hf mfp rdsc" }, + { 0, "hf mfp wrbl" }, + { 0, "hf mfp commitp" }, + { 0, "hf mfp initp" }, + { 0, "hf mfp wrp" }, + { 0, "hf mfp ndefformat" }, + { 0, "hf mfp ndefread" }, + { 0, "hf mfp ndefwrite" }, + { 1, "hf mfu help" }, + { 1, "hf mfu list" }, + { 1, "hf mfu keygen" }, + { 1, "hf mfu pwdgen" }, + { 0, "hf mfu otptear" }, + { 0, "hf mfu cauth" }, + { 0, "hf mfu dump" }, + { 0, "hf mfu info" }, + { 0, "hf mfu ndefread" }, + { 0, "hf mfu rdbl" }, + { 0, "hf mfu restore" }, + { 1, "hf mfu view" }, + { 0, "hf mfu wrbl" }, + { 0, "hf mfu tamper" }, + { 0, "hf mfu eload" }, + { 0, "hf mfu esave" }, + { 0, "hf mfu eview" }, + { 0, "hf mfu sim" }, + { 0, "hf mfu setpwd" }, + { 0, "hf mfu setuid" }, + { 1, "hf mfdes help" }, + { 0, "hf mfdes info" }, + { 0, "hf mfdes getuid" }, + { 0, "hf mfdes default" }, + { 0, "hf mfdes auth" }, + { 0, "hf mfdes chk" }, + { 0, "hf mfdes detect" }, + { 0, "hf mfdes freemem" }, + { 0, "hf mfdes setconfig" }, + { 0, "hf mfdes formatpicc" }, + { 1, "hf mfdes list" }, + { 0, "hf mfdes mad" }, + { 0, "hf mfdes lsapp" }, + { 0, "hf mfdes getaids" }, + { 0, "hf mfdes getappnames" }, + { 0, "hf mfdes bruteaid" }, + { 0, "hf mfdes createapp" }, + { 0, "hf mfdes deleteapp" }, + { 0, "hf mfdes selectapp" }, + { 0, "hf mfdes changekey" }, + { 0, "hf mfdes chkeysettings" }, + { 0, "hf mfdes getkeysettings" }, + { 0, "hf mfdes getkeyversions" }, + { 0, "hf mfdes getfileids" }, + { 0, "hf mfdes getfileisoids" }, + { 0, "hf mfdes lsfiles" }, + { 0, "hf mfdes dump" }, + { 0, "hf mfdes createfile" }, + { 0, "hf mfdes createvaluefile" }, + { 0, "hf mfdes createrecordfile" }, + { 0, "hf mfdes createmacfile" }, + { 0, "hf mfdes deletefile" }, + { 0, "hf mfdes getfilesettings" }, + { 0, "hf mfdes chfilesettings" }, + { 0, "hf mfdes read" }, + { 0, "hf mfdes write" }, + { 0, "hf mfdes value" }, + { 0, "hf mfdes clearrecfile" }, + { 1, "hf mfdes test" }, + { 1, "hf ntag424 help" }, + { 0, "hf ntag424 info" }, + { 0, "hf ntag424 sdm" }, + { 1, "hf ntag424 view" }, + { 1, "hf seos help" }, + { 0, "hf seos info" }, + { 1, "hf seos list" }, + { 1, "hf st25ta help" }, + { 0, "hf st25ta info" }, + { 1, "hf st25ta list" }, + { 1, "hf st25ta ndefread" }, + { 0, "hf st25ta protect" }, + { 0, "hf st25ta pwd" }, + { 0, "hf st25ta sim" }, + { 1, "hf tesla help" }, + { 0, "hf tesla info" }, + { 1, "hf tesla list" }, + { 1, "hf texkom help" }, + { 0, "hf texkom reader" }, + { 0, "hf texkom sim" }, + { 1, "hf thinfilm help" }, + { 0, "hf thinfilm info" }, + { 1, "hf thinfilm list" }, + { 0, "hf thinfilm sim" }, + { 1, "hf topaz help" }, + { 1, "hf topaz list" }, + { 0, "hf topaz dump" }, + { 0, "hf topaz info" }, + { 0, "hf topaz raw" }, + { 0, "hf topaz rdbl" }, + { 0, "hf topaz reader" }, + { 0, "hf topaz sim" }, + { 0, "hf topaz sniff" }, + { 1, "hf topaz view" }, + { 0, "hf topaz wrbl" }, + { 1, "hf vas help" }, + { 0, "hf vas reader" }, + { 1, "hf vas decrypt" }, + { 1, "hf waveshare help" }, + { 0, "hf waveshare loadbmp" }, + { 1, "hf xerox help" }, + { 0, "hf xerox info" }, + { 0, "hf xerox reader" }, + { 0, "hf xerox dump" }, + { 1, "hw help" }, + { 0, "hw break" }, + { 1, "hw connect" }, + { 0, "hw dbg" }, + { 0, "hw detectreader" }, + { 0, "hw fpgaoff" }, + { 0, "hw lcd" }, + { 0, "hw lcdreset" }, + { 0, "hw ping" }, + { 0, "hw readmem" }, + { 0, "hw reset" }, + { 0, "hw setlfdivisor" }, + { 0, "hw setmux" }, + { 0, "hw standalone" }, + { 0, "hw status" }, + { 0, "hw tearoff" }, + { 0, "hw tia" }, + { 1, "hw timeout" }, + { 0, "hw tune" }, + { 1, "hw version" }, + { 1, "lf help" }, + { 0, "lf config" }, + { 0, "lf cmdread" }, + { 0, "lf read" }, + { 1, "lf search" }, + { 0, "lf sim" }, + { 0, "lf simask" }, + { 0, "lf simfsk" }, + { 0, "lf simpsk" }, + { 0, "lf simbidir" }, + { 0, "lf sniff" }, + { 0, "lf tune" }, + { 1, "lf awid help" }, + { 1, "lf awid demod" }, + { 0, "lf awid reader" }, + { 0, "lf awid clone" }, + { 0, "lf awid sim" }, + { 0, "lf awid brute" }, + { 0, "lf awid watch" }, + { 1, "lf cotag help" }, + { 1, "lf cotag demod" }, + { 0, "lf cotag reader" }, + { 1, "lf destron help" }, + { 1, "lf destron demod" }, + { 0, "lf destron reader" }, + { 0, "lf destron clone" }, + { 0, "lf destron sim" }, + { 1, "lf em help" }, + { 1, "lf em 410x help" }, + { 1, "lf em 410x demod" }, + { 0, "lf em 410x reader" }, + { 0, "lf em 410x sim" }, + { 0, "lf em 410x brute" }, + { 0, "lf em 410x watch" }, + { 0, "lf em 410x spoof" }, + { 0, "lf em 410x clone" }, + { 1, "lf em 4x05 help" }, + { 0, "lf em 4x05 brute" }, + { 0, "lf em 4x05 chk" }, + { 1, "lf em 4x05 demod" }, + { 0, "lf em 4x05 dump" }, + { 0, "lf em 4x05 info" }, + { 0, "lf em 4x05 read" }, + { 1, "lf em 4x05 sniff" }, + { 0, "lf em 4x05 unlock" }, + { 0, "lf em 4x05 wipe" }, + { 0, "lf em 4x05 write" }, + { 1, "lf em 4x50 help" }, + { 0, "lf em 4x50 brute" }, + { 0, "lf em 4x50 chk" }, + { 0, "lf em 4x50 dump" }, + { 0, "lf em 4x50 info" }, + { 0, "lf em 4x50 login" }, + { 0, "lf em 4x50 rdbl" }, + { 0, "lf em 4x50 reader" }, + { 0, "lf em 4x50 restore" }, + { 0, "lf em 4x50 wrbl" }, + { 0, "lf em 4x50 wrpwd" }, + { 0, "lf em 4x50 wipe" }, + { 0, "lf em 4x50 eload" }, + { 0, "lf em 4x50 esave" }, + { 0, "lf em 4x50 eview" }, + { 0, "lf em 4x50 sim" }, + { 1, "lf em 4x70 help" }, + { 0, "lf em 4x70 brute" }, + { 0, "lf em 4x70 info" }, + { 0, "lf em 4x70 write" }, + { 0, "lf em 4x70 unlock" }, + { 0, "lf em 4x70 auth" }, + { 0, "lf em 4x70 writepin" }, + { 0, "lf em 4x70 writekey" }, + { 1, "lf fdxb help" }, + { 1, "lf fdxb demod" }, + { 0, "lf fdxb reader" }, + { 0, "lf fdxb clone" }, + { 0, "lf fdxb sim" }, + { 1, "lf gallagher help" }, + { 1, "lf gallagher demod" }, + { 0, "lf gallagher reader" }, + { 0, "lf gallagher clone" }, + { 0, "lf gallagher sim" }, + { 1, "lf gproxii help" }, + { 1, "lf gproxii demod" }, + { 0, "lf gproxii reader" }, + { 0, "lf gproxii clone" }, + { 0, "lf gproxii sim" }, + { 1, "lf hid help" }, + { 1, "lf hid demod" }, + { 0, "lf hid reader" }, + { 0, "lf hid clone" }, + { 0, "lf hid sim" }, + { 0, "lf hid brute" }, + { 0, "lf hid watch" }, + { 1, "lf hitag help" }, + { 1, "lf hitag list" }, + { 0, "lf hitag info" }, + { 0, "lf hitag dump" }, + { 0, "lf hitag read" }, + { 0, "lf hitag wrbl" }, + { 0, "lf hitag sniff" }, + { 0, "lf hitag cc" }, + { 0, "lf hitag ta" }, + { 0, "lf hitag eload" }, + { 0, "lf hitag sim" }, + { 1, "lf idteck help" }, + { 1, "lf idteck demod" }, + { 0, "lf idteck reader" }, + { 0, "lf idteck clone" }, + { 0, "lf idteck sim" }, + { 1, "lf indala help" }, + { 0, "lf indala brute" }, + { 1, "lf indala demod" }, + { 1, "lf indala altdemod" }, + { 0, "lf indala reader" }, + { 0, "lf indala clone" }, + { 0, "lf indala sim" }, + { 1, "lf io help" }, + { 1, "lf io demod" }, + { 0, "lf io reader" }, + { 0, "lf io clone" }, + { 0, "lf io sim" }, + { 0, "lf io watch" }, + { 1, "lf jablotron help" }, + { 1, "lf jablotron demod" }, + { 0, "lf jablotron reader" }, + { 0, "lf jablotron clone" }, + { 0, "lf jablotron sim" }, + { 1, "lf keri help" }, + { 1, "lf keri demod" }, + { 0, "lf keri reader" }, + { 0, "lf keri clone" }, + { 0, "lf keri sim" }, + { 1, "lf motorola help" }, + { 1, "lf motorola demod" }, + { 0, "lf motorola reader" }, + { 0, "lf motorola clone" }, + { 0, "lf motorola sim" }, + { 1, "lf nedap help" }, + { 1, "lf nedap demod" }, + { 0, "lf nedap reader" }, + { 0, "lf nedap clone" }, + { 0, "lf nedap sim" }, + { 1, "lf nexwatch help" }, + { 1, "lf nexwatch demod" }, + { 0, "lf nexwatch reader" }, + { 0, "lf nexwatch clone" }, + { 0, "lf nexwatch sim" }, + { 1, "lf noralsy help" }, + { 1, "lf noralsy demod" }, + { 0, "lf noralsy reader" }, + { 0, "lf noralsy clone" }, + { 0, "lf noralsy sim" }, + { 1, "lf pac help" }, + { 1, "lf pac demod" }, + { 0, "lf pac reader" }, + { 0, "lf pac clone" }, + { 0, "lf pac sim" }, + { 1, "lf paradox help" }, + { 1, "lf paradox demod" }, + { 0, "lf paradox reader" }, + { 0, "lf paradox clone" }, + { 0, "lf paradox sim" }, + { 1, "lf pcf7931 help" }, + { 0, "lf pcf7931 reader" }, + { 0, "lf pcf7931 write" }, + { 1, "lf pcf7931 config" }, + { 1, "lf presco help" }, + { 1, "lf presco demod" }, + { 0, "lf presco reader" }, + { 0, "lf presco clone" }, + { 0, "lf presco sim" }, + { 1, "lf pyramid help" }, + { 1, "lf pyramid demod" }, + { 0, "lf pyramid reader" }, + { 0, "lf pyramid clone" }, + { 0, "lf pyramid sim" }, + { 1, "lf securakey help" }, + { 1, "lf securakey demod" }, + { 0, "lf securakey reader" }, + { 0, "lf securakey clone" }, + { 0, "lf securakey sim" }, + { 1, "lf ti help" }, + { 1, "lf ti demod" }, + { 0, "lf ti reader" }, + { 0, "lf ti write" }, + { 1, "lf t55xx help" }, + { 0, "lf t55xx clonehelp" }, + { 1, "lf t55xx config" }, + { 0, "lf t55xx dangerraw" }, + { 1, "lf t55xx detect" }, + { 0, "lf t55xx deviceconfig" }, + { 0, "lf t55xx dump" }, + { 1, "lf t55xx info" }, + { 0, "lf t55xx p1detect" }, + { 0, "lf t55xx read" }, + { 0, "lf t55xx resetread" }, + { 0, "lf t55xx restore" }, + { 1, "lf t55xx trace" }, + { 0, "lf t55xx wakeup" }, + { 0, "lf t55xx write" }, + { 0, "lf t55xx bruteforce" }, + { 0, "lf t55xx chk" }, + { 0, "lf t55xx protect" }, + { 0, "lf t55xx recoverpw" }, + { 1, "lf t55xx sniff" }, + { 0, "lf t55xx special" }, + { 0, "lf t55xx wipe" }, + { 1, "lf viking help" }, + { 1, "lf viking demod" }, + { 0, "lf viking reader" }, + { 0, "lf viking clone" }, + { 0, "lf viking sim" }, + { 1, "lf visa2000 help" }, + { 1, "lf visa2000 demod" }, + { 0, "lf visa2000 reader" }, + { 0, "lf visa2000 clone" }, + { 0, "lf visa2000 sim" }, + { 1, "mem help" }, + { 0, "mem baudrate" }, + { 0, "mem dump" }, + { 0, "mem info" }, + { 0, "mem load" }, + { 0, "mem wipe" }, + { 1, "mem spiffs help" }, + { 0, "mem spiffs copy" }, + { 0, "mem spiffs check" }, + { 0, "mem spiffs dump" }, + { 0, "mem spiffs info" }, + { 0, "mem spiffs mount" }, + { 0, "mem spiffs remove" }, + { 0, "mem spiffs rename" }, + { 0, "mem spiffs test" }, + { 0, "mem spiffs tree" }, + { 0, "mem spiffs unmount" }, + { 0, "mem spiffs upload" }, + { 0, "mem spiffs view" }, + { 0, "mem spiffs wipe" }, + { 1, "nfc help" }, + { 1, "nfc decode" }, + { 0, "nfc type1 read" }, + { 1, "nfc type1 help" }, + { 0, "nfc type2 read" }, + { 1, "nfc type2 help" }, + { 0, "nfc type4a format" }, + { 0, "nfc type4a read" }, + { 0, "nfc type4a write" }, + { 0, "nfc type4a st25taread" }, + { 1, "nfc type4a help" }, + { 0, "nfc type4b read" }, + { 1, "nfc type4b help" }, + { 0, "nfc mf cformat" }, + { 0, "nfc mf cread" }, + { 0, "nfc mf cwrite" }, + { 0, "nfc mf pread" }, + { 1, "nfc mf help" }, + { 0, "nfc barcode read" }, + { 0, "nfc barcode sim" }, + { 1, "nfc barcode help" }, + { 1, "piv help" }, + { 0, "piv select" }, + { 0, "piv getdata" }, + { 0, "piv authsign" }, + { 0, "piv scan" }, + { 1, "piv list" }, + { 1, "smart help" }, + { 1, "smart list" }, + { 0, "smart info" }, + { 0, "smart reader" }, + { 0, "smart raw" }, + { 1, "smart upgrade" }, + { 0, "smart setclock" }, + { 0, "smart brute" }, + { 1, "script help" }, + { 1, "script list" }, + { 1, "script run" }, + { 1, "trace help" }, + { 1, "trace extract" }, + { 1, "trace list" }, + { 1, "trace load" }, + { 1, "trace save" }, + { 1, "usart help" }, + { 0, "usart btpin" }, + { 0, "usart btfactory" }, + { 0, "usart tx" }, + { 0, "usart rx" }, + { 0, "usart txrx" }, + { 0, "usart txhex" }, + { 0, "usart rxhex" }, + { 0, "usart config" }, + { 1, "wiegand help" }, + { 1, "wiegand list" }, + { 1, "wiegand encode" }, + { 1, "wiegand decode" }, + {0, NULL} +}; + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h deleted file mode 100644 index 40d2bcc29..000000000 --- a/client/src/pm3line_vocabulory.h +++ /dev/null @@ -1,814 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// See LICENSE.txt for the text of the license. -//----------------------------------------------------------------------------- -// readline auto complete utilities -//----------------------------------------------------------------------------- - -#ifndef PM3LINE_VOCABULORY_H__ -#define PM3LINE_VOCABULORY_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -typedef struct vocabulory_s { - bool offline; - const char *name; -} vocabulory_t; - -const static vocabulory_t vocabulory[] = { - { 1, "help" }, - { 0, "auto" }, - { 1, "clear" }, - { 1, "hints" }, - { 1, "msleep" }, - { 1, "rem" }, - { 1, "quit" }, - { 1, "exit" }, - { 1, "prefs help" }, - { 1, "prefs show" }, - { 1, "prefs get barmode" }, - { 1, "prefs get clientdebug" }, - { 1, "prefs get clientdelay" }, - { 1, "prefs get color" }, - { 1, "prefs get savepaths" }, - { 1, "prefs get emoji" }, - { 1, "prefs get hints" }, - { 1, "prefs get output" }, - { 1, "prefs get plotsliders" }, - { 1, "prefs set help" }, - { 1, "prefs set barmode" }, - { 1, "prefs set clientdebug" }, - { 1, "prefs set clientdelay" }, - { 1, "prefs set color" }, - { 1, "prefs set emoji" }, - { 1, "prefs set hints" }, - { 1, "prefs set savepaths" }, - { 1, "prefs set output" }, - { 1, "prefs set plotsliders" }, - { 1, "analyse help" }, - { 1, "analyse lcr" }, - { 1, "analyse crc" }, - { 1, "analyse chksum" }, - { 1, "analyse dates" }, - { 1, "analyse lfsr" }, - { 1, "analyse a" }, - { 1, "analyse nuid" }, - { 1, "analyse demodbuff" }, - { 1, "analyse freq" }, - { 1, "analyse foo" }, - { 1, "analyse units" }, - { 1, "data help" }, - { 1, "data biphaserawdecode" }, - { 1, "data detectclock" }, - { 1, "data fsktonrz" }, - { 1, "data manrawdecode" }, - { 1, "data modulation" }, - { 1, "data rawdemod" }, - { 1, "data askedgedetect" }, - { 1, "data autocorr" }, - { 1, "data dirthreshold" }, - { 1, "data decimate" }, - { 1, "data envelope" }, - { 1, "data undecimate" }, - { 1, "data hide" }, - { 1, "data hpf" }, - { 1, "data iir" }, - { 1, "data grid" }, - { 1, "data ltrim" }, - { 1, "data mtrim" }, - { 1, "data norm" }, - { 1, "data plot" }, - { 1, "data cthreshold" }, - { 1, "data rtrim" }, - { 1, "data setgraphmarkers" }, - { 1, "data shiftgraphzero" }, - { 1, "data timescale" }, - { 1, "data zerocrossings" }, - { 1, "data convertbitstream" }, - { 1, "data getbitstream" }, - { 1, "data asn1" }, - { 1, "data atr" }, - { 1, "data bin2hex" }, - { 0, "data bitsamples" }, - { 1, "data clear" }, - { 1, "data diff" }, - { 0, "data hexsamples" }, - { 1, "data hex2bin" }, - { 1, "data load" }, - { 1, "data num" }, - { 1, "data print" }, - { 0, "data samples" }, - { 1, "data save" }, - { 1, "data setdebugmode" }, - { 0, "data tune" }, - { 1, "emv help" }, - { 1, "emv list" }, - { 1, "emv test" }, - { 0, "emv challenge" }, - { 0, "emv exec" }, - { 0, "emv genac" }, - { 0, "emv gpo" }, - { 0, "emv intauth" }, - { 0, "emv pse" }, - { 0, "emv reader" }, - { 0, "emv readrec" }, - { 0, "emv roca" }, - { 0, "emv scan" }, - { 0, "emv search" }, - { 0, "emv select" }, - { 1, "hf help" }, - { 1, "hf list" }, - { 0, "hf plot" }, - { 0, "hf tune" }, - { 1, "hf search" }, - { 0, "hf sniff" }, - { 1, "hf 14a help" }, - { 1, "hf 14a list" }, - { 0, "hf 14a antifuzz" }, - { 0, "hf 14a config" }, - { 0, "hf 14a cuids" }, - { 0, "hf 14a info" }, - { 0, "hf 14a sim" }, - { 0, "hf 14a sniff" }, - { 0, "hf 14a raw" }, - { 0, "hf 14a reader" }, - { 0, "hf 14a apdu" }, - { 0, "hf 14a apdufind" }, - { 0, "hf 14a chaining" }, - { 0, "hf 14a ndefformat" }, - { 0, "hf 14a ndefread" }, - { 0, "hf 14a ndefwrite" }, - { 1, "hf 14b help" }, - { 0, "hf 14b apdu" }, - { 0, "hf 14b dump" }, - { 0, "hf 14b info" }, - { 1, "hf 14b list" }, - { 0, "hf 14b ndefread" }, - { 0, "hf 14b raw" }, - { 0, "hf 14b reader" }, - { 0, "hf 14b sim" }, - { 0, "hf 14b sniff" }, - { 0, "hf 14b rdbl" }, - { 0, "hf 14b sriwrite" }, - { 1, "hf 14b view" }, - { 1, "hf 15 help" }, - { 1, "hf 15 list" }, - { 1, "hf 15 demod" }, - { 0, "hf 15 dump" }, - { 0, "hf 15 info" }, - { 0, "hf 15 sniff" }, - { 0, "hf 15 raw" }, - { 0, "hf 15 rdbl" }, - { 0, "hf 15 rdmulti" }, - { 0, "hf 15 reader" }, - { 0, "hf 15 restore" }, - { 0, "hf 15 samples" }, - { 1, "hf 15 view" }, - { 0, "hf 15 wrbl" }, - { 0, "hf 15 sim" }, - { 0, "hf 15 eload" }, - { 0, "hf 15 esave" }, - { 0, "hf 15 eview" }, - { 0, "hf 15 slixwritepwd" }, - { 0, "hf 15 slixeasdisable" }, - { 0, "hf 15 slixeasenable" }, - { 0, "hf 15 slixprivacydisable" }, - { 0, "hf 15 slixprivacyenable" }, - { 0, "hf 15 passprotectafi" }, - { 0, "hf 15 passprotecteas" }, - { 0, "hf 15 findafi" }, - { 0, "hf 15 writeafi" }, - { 0, "hf 15 writedsfid" }, - { 0, "hf 15 csetuid" }, - { 1, "hf cipurse help" }, - { 0, "hf cipurse info" }, - { 0, "hf cipurse select" }, - { 0, "hf cipurse auth" }, - { 0, "hf cipurse read" }, - { 0, "hf cipurse write" }, - { 0, "hf cipurse aread" }, - { 0, "hf cipurse awrite" }, - { 0, "hf cipurse formatall" }, - { 0, "hf cipurse create" }, - { 0, "hf cipurse delete" }, - { 0, "hf cipurse updkey" }, - { 0, "hf cipurse updakey" }, - { 0, "hf cipurse default" }, - { 1, "hf cipurse test" }, - { 1, "hf epa help" }, - { 0, "hf epa cnonces" }, - { 0, "hf epa replay" }, - { 0, "hf epa sim" }, - { 1, "hf emrtd help" }, - { 0, "hf emrtd dump" }, - { 1, "hf emrtd info" }, - { 1, "hf emrtd list" }, - { 1, "hf felica help" }, - { 1, "hf felica list" }, - { 0, "hf felica reader" }, - { 0, "hf felica info" }, - { 0, "hf felica sniff" }, - { 0, "hf felica raw" }, - { 0, "hf felica rdbl" }, - { 0, "hf felica wrbl" }, - { 0, "hf felica rqservice" }, - { 0, "hf felica rqresponse" }, - { 0, "hf felica scsvcode" }, - { 0, "hf felica rqsyscode" }, - { 0, "hf felica auth1" }, - { 0, "hf felica auth2" }, - { 0, "hf felica rqspecver" }, - { 0, "hf felica resetmode" }, - { 0, "hf felica litesim" }, - { 0, "hf felica litedump" }, - { 1, "hf fido help" }, - { 1, "hf fido list" }, - { 0, "hf fido info" }, - { 0, "hf fido reg" }, - { 0, "hf fido auth" }, - { 0, "hf fido make" }, - { 0, "hf fido assert" }, - { 1, "hf fudan help" }, - { 0, "hf fudan reader" }, - { 0, "hf fudan dump" }, - { 0, "hf fudan rdbl" }, - { 1, "hf fudan view" }, - { 0, "hf fudan wrbl" }, - { 1, "hf gallagher help" }, - { 0, "hf gallagher reader" }, - { 0, "hf gallagher clone" }, - { 0, "hf gallagher delete" }, - { 1, "hf gallagher diversifykey" }, - { 1, "hf gallagher decode" }, - { 1, "hf ksx6924 help" }, - { 0, "hf ksx6924 select" }, - { 0, "hf ksx6924 info" }, - { 0, "hf ksx6924 balance" }, - { 0, "hf ksx6924 init" }, - { 0, "hf ksx6924 prec" }, - { 1, "hf jooki help" }, - { 0, "hf jooki clone" }, - { 1, "hf jooki decode" }, - { 1, "hf jooki encode" }, - { 0, "hf jooki sim" }, - { 1, "hf iclass help" }, - { 1, "hf iclass list" }, - { 0, "hf iclass dump" }, - { 1, "hf iclass info" }, - { 0, "hf iclass rdbl" }, - { 0, "hf iclass reader" }, - { 0, "hf iclass restore" }, - { 0, "hf iclass sniff" }, - { 1, "hf iclass view" }, - { 0, "hf iclass wrbl" }, - { 0, "hf iclass chk" }, - { 1, "hf iclass loclass" }, - { 1, "hf iclass lookup" }, - { 0, "hf iclass sim" }, - { 0, "hf iclass eload" }, - { 0, "hf iclass esave" }, - { 0, "hf iclass eview" }, - { 1, "hf iclass configcard" }, - { 1, "hf iclass calcnewkey" }, - { 1, "hf iclass encode" }, - { 1, "hf iclass encrypt" }, - { 1, "hf iclass decrypt" }, - { 1, "hf iclass managekeys" }, - { 1, "hf iclass permutekey" }, - { 0, "hf iclass sam" }, - { 1, "hf legic help" }, - { 0, "hf legic dump" }, - { 0, "hf legic info" }, - { 1, "hf legic list" }, - { 0, "hf legic rdbl" }, - { 0, "hf legic reader" }, - { 0, "hf legic restore" }, - { 0, "hf legic wipe" }, - { 0, "hf legic wrbl" }, - { 0, "hf legic sim" }, - { 0, "hf legic eload" }, - { 0, "hf legic esave" }, - { 0, "hf legic eview" }, - { 0, "hf legic einfo" }, - { 1, "hf legic crc" }, - { 1, "hf legic view" }, - { 1, "hf lto help" }, - { 0, "hf lto dump" }, - { 0, "hf lto info" }, - { 1, "hf lto list" }, - { 0, "hf lto rdbl" }, - { 0, "hf lto reader" }, - { 0, "hf lto restore" }, - { 0, "hf lto wrbl" }, - { 1, "hf mf help" }, - { 1, "hf mf list" }, - { 0, "hf mf darkside" }, - { 0, "hf mf nested" }, - { 1, "hf mf hardnested" }, - { 0, "hf mf staticnested" }, - { 0, "hf mf autopwn" }, - { 0, "hf mf nack" }, - { 0, "hf mf chk" }, - { 0, "hf mf fchk" }, - { 1, "hf mf decrypt" }, - { 0, "hf mf supercard" }, - { 0, "hf mf auth4" }, - { 1, "hf mf acl" }, - { 0, "hf mf dump" }, - { 1, "hf mf mad" }, - { 0, "hf mf personalize" }, - { 0, "hf mf rdbl" }, - { 0, "hf mf rdsc" }, - { 0, "hf mf restore" }, - { 0, "hf mf setmod" }, - { 1, "hf mf value" }, - { 1, "hf mf view" }, - { 0, "hf mf wipe" }, - { 0, "hf mf wrbl" }, - { 0, "hf mf sim" }, - { 0, "hf mf ecfill" }, - { 0, "hf mf eclr" }, - { 0, "hf mf egetblk" }, - { 0, "hf mf egetsc" }, - { 0, "hf mf ekeyprn" }, - { 0, "hf mf eload" }, - { 0, "hf mf esave" }, - { 0, "hf mf esetblk" }, - { 0, "hf mf eview" }, - { 0, "hf mf cgetblk" }, - { 0, "hf mf cgetsc" }, - { 0, "hf mf cload" }, - { 0, "hf mf csave" }, - { 0, "hf mf csetblk" }, - { 0, "hf mf csetuid" }, - { 0, "hf mf cview" }, - { 0, "hf mf cwipe" }, - { 0, "hf mf gen3uid" }, - { 0, "hf mf gen3blk" }, - { 0, "hf mf gen3freeze" }, - { 0, "hf mf ggetblk" }, - { 0, "hf mf gload" }, - { 0, "hf mf gsave" }, - { 0, "hf mf gsetblk" }, - { 0, "hf mf gview" }, - { 0, "hf mf gdmcfg" }, - { 0, "hf mf gdmsetcfg" }, - { 0, "hf mf gdmsetblk" }, - { 0, "hf mf ndefformat" }, - { 0, "hf mf ndefread" }, - { 0, "hf mf ndefwrite" }, - { 1, "hf mfp help" }, - { 1, "hf mfp list" }, - { 0, "hf mfp auth" }, - { 0, "hf mfp chk" }, - { 0, "hf mfp dump" }, - { 0, "hf mfp info" }, - { 0, "hf mfp mad" }, - { 0, "hf mfp rdbl" }, - { 0, "hf mfp rdsc" }, - { 0, "hf mfp wrbl" }, - { 0, "hf mfp commitp" }, - { 0, "hf mfp initp" }, - { 0, "hf mfp wrp" }, - { 0, "hf mfp ndefformat" }, - { 0, "hf mfp ndefread" }, - { 0, "hf mfp ndefwrite" }, - { 1, "hf mfu help" }, - { 1, "hf mfu list" }, - { 1, "hf mfu keygen" }, - { 1, "hf mfu pwdgen" }, - { 0, "hf mfu otptear" }, - { 0, "hf mfu cauth" }, - { 0, "hf mfu dump" }, - { 0, "hf mfu info" }, - { 0, "hf mfu ndefread" }, - { 0, "hf mfu rdbl" }, - { 0, "hf mfu restore" }, - { 1, "hf mfu view" }, - { 0, "hf mfu wrbl" }, - { 0, "hf mfu tamper" }, - { 0, "hf mfu eload" }, - { 0, "hf mfu esave" }, - { 0, "hf mfu eview" }, - { 0, "hf mfu sim" }, - { 0, "hf mfu setpwd" }, - { 0, "hf mfu setuid" }, - { 1, "hf mfdes help" }, - { 0, "hf mfdes info" }, - { 0, "hf mfdes getuid" }, - { 0, "hf mfdes default" }, - { 0, "hf mfdes auth" }, - { 0, "hf mfdes chk" }, - { 0, "hf mfdes detect" }, - { 0, "hf mfdes freemem" }, - { 0, "hf mfdes setconfig" }, - { 0, "hf mfdes formatpicc" }, - { 1, "hf mfdes list" }, - { 0, "hf mfdes mad" }, - { 0, "hf mfdes lsapp" }, - { 0, "hf mfdes getaids" }, - { 0, "hf mfdes getappnames" }, - { 0, "hf mfdes bruteaid" }, - { 0, "hf mfdes createapp" }, - { 0, "hf mfdes deleteapp" }, - { 0, "hf mfdes selectapp" }, - { 0, "hf mfdes changekey" }, - { 0, "hf mfdes chkeysettings" }, - { 0, "hf mfdes getkeysettings" }, - { 0, "hf mfdes getkeyversions" }, - { 0, "hf mfdes getfileids" }, - { 0, "hf mfdes getfileisoids" }, - { 0, "hf mfdes lsfiles" }, - { 0, "hf mfdes dump" }, - { 0, "hf mfdes createfile" }, - { 0, "hf mfdes createvaluefile" }, - { 0, "hf mfdes createrecordfile" }, - { 0, "hf mfdes createmacfile" }, - { 0, "hf mfdes deletefile" }, - { 0, "hf mfdes getfilesettings" }, - { 0, "hf mfdes chfilesettings" }, - { 0, "hf mfdes read" }, - { 0, "hf mfdes write" }, - { 0, "hf mfdes value" }, - { 0, "hf mfdes clearrecfile" }, - { 1, "hf mfdes test" }, - { 1, "hf ntag424 help" }, - { 0, "hf ntag424 info" }, - { 0, "hf ntag424 sdm" }, - { 1, "hf ntag424 view" }, - { 1, "hf seos help" }, - { 0, "hf seos info" }, - { 1, "hf seos list" }, - { 1, "hf st25ta help" }, - { 0, "hf st25ta info" }, - { 1, "hf st25ta list" }, - { 1, "hf st25ta ndefread" }, - { 0, "hf st25ta protect" }, - { 0, "hf st25ta pwd" }, - { 0, "hf st25ta sim" }, - { 1, "hf tesla help" }, - { 0, "hf tesla info" }, - { 1, "hf tesla list" }, - { 1, "hf texkom help" }, - { 0, "hf texkom reader" }, - { 0, "hf texkom sim" }, - { 1, "hf thinfilm help" }, - { 0, "hf thinfilm info" }, - { 1, "hf thinfilm list" }, - { 0, "hf thinfilm sim" }, - { 1, "hf topaz help" }, - { 1, "hf topaz list" }, - { 0, "hf topaz dump" }, - { 0, "hf topaz info" }, - { 0, "hf topaz raw" }, - { 0, "hf topaz rdbl" }, - { 0, "hf topaz reader" }, - { 0, "hf topaz sim" }, - { 0, "hf topaz sniff" }, - { 1, "hf topaz view" }, - { 0, "hf topaz wrbl" }, - { 1, "hf vas help" }, - { 0, "hf vas reader" }, - { 1, "hf vas decrypt" }, - { 1, "hf waveshare help" }, - { 0, "hf waveshare loadbmp" }, - { 1, "hf xerox help" }, - { 0, "hf xerox info" }, - { 0, "hf xerox reader" }, - { 0, "hf xerox dump" }, - { 1, "hw help" }, - { 0, "hw break" }, - { 1, "hw connect" }, - { 0, "hw dbg" }, - { 0, "hw detectreader" }, - { 0, "hw fpgaoff" }, - { 0, "hw lcd" }, - { 0, "hw lcdreset" }, - { 0, "hw ping" }, - { 0, "hw readmem" }, - { 0, "hw reset" }, - { 0, "hw setlfdivisor" }, - { 0, "hw setmux" }, - { 0, "hw standalone" }, - { 0, "hw status" }, - { 0, "hw tearoff" }, - { 0, "hw tia" }, - { 1, "hw timeout" }, - { 0, "hw tune" }, - { 1, "hw version" }, - { 1, "lf help" }, - { 0, "lf config" }, - { 0, "lf cmdread" }, - { 0, "lf read" }, - { 1, "lf search" }, - { 0, "lf sim" }, - { 0, "lf simask" }, - { 0, "lf simfsk" }, - { 0, "lf simpsk" }, - { 0, "lf simbidir" }, - { 0, "lf sniff" }, - { 0, "lf tune" }, - { 1, "lf awid help" }, - { 1, "lf awid demod" }, - { 0, "lf awid reader" }, - { 0, "lf awid clone" }, - { 0, "lf awid sim" }, - { 0, "lf awid brute" }, - { 0, "lf awid watch" }, - { 1, "lf cotag help" }, - { 1, "lf cotag demod" }, - { 0, "lf cotag reader" }, - { 1, "lf destron help" }, - { 1, "lf destron demod" }, - { 0, "lf destron reader" }, - { 0, "lf destron clone" }, - { 0, "lf destron sim" }, - { 1, "lf em help" }, - { 1, "lf em 410x help" }, - { 1, "lf em 410x demod" }, - { 0, "lf em 410x reader" }, - { 0, "lf em 410x sim" }, - { 0, "lf em 410x brute" }, - { 0, "lf em 410x watch" }, - { 0, "lf em 410x spoof" }, - { 0, "lf em 410x clone" }, - { 1, "lf em 4x05 help" }, - { 0, "lf em 4x05 brute" }, - { 0, "lf em 4x05 chk" }, - { 1, "lf em 4x05 demod" }, - { 0, "lf em 4x05 dump" }, - { 0, "lf em 4x05 info" }, - { 0, "lf em 4x05 read" }, - { 1, "lf em 4x05 sniff" }, - { 0, "lf em 4x05 unlock" }, - { 0, "lf em 4x05 wipe" }, - { 0, "lf em 4x05 write" }, - { 1, "lf em 4x50 help" }, - { 0, "lf em 4x50 brute" }, - { 0, "lf em 4x50 chk" }, - { 0, "lf em 4x50 dump" }, - { 0, "lf em 4x50 info" }, - { 0, "lf em 4x50 login" }, - { 0, "lf em 4x50 rdbl" }, - { 0, "lf em 4x50 reader" }, - { 0, "lf em 4x50 restore" }, - { 0, "lf em 4x50 wrbl" }, - { 0, "lf em 4x50 wrpwd" }, - { 0, "lf em 4x50 wipe" }, - { 0, "lf em 4x50 eload" }, - { 0, "lf em 4x50 esave" }, - { 0, "lf em 4x50 eview" }, - { 0, "lf em 4x50 sim" }, - { 1, "lf em 4x70 help" }, - { 0, "lf em 4x70 brute" }, - { 0, "lf em 4x70 info" }, - { 0, "lf em 4x70 write" }, - { 0, "lf em 4x70 unlock" }, - { 0, "lf em 4x70 auth" }, - { 0, "lf em 4x70 writepin" }, - { 0, "lf em 4x70 writekey" }, - { 1, "lf fdxb help" }, - { 1, "lf fdxb demod" }, - { 0, "lf fdxb reader" }, - { 0, "lf fdxb clone" }, - { 0, "lf fdxb sim" }, - { 1, "lf gallagher help" }, - { 1, "lf gallagher demod" }, - { 0, "lf gallagher reader" }, - { 0, "lf gallagher clone" }, - { 0, "lf gallagher sim" }, - { 1, "lf gproxii help" }, - { 1, "lf gproxii demod" }, - { 0, "lf gproxii reader" }, - { 0, "lf gproxii clone" }, - { 0, "lf gproxii sim" }, - { 1, "lf hid help" }, - { 1, "lf hid demod" }, - { 0, "lf hid reader" }, - { 0, "lf hid clone" }, - { 0, "lf hid sim" }, - { 0, "lf hid brute" }, - { 0, "lf hid watch" }, - { 1, "lf hitag help" }, - { 1, "lf hitag list" }, - { 0, "lf hitag info" }, - { 0, "lf hitag dump" }, - { 0, "lf hitag read" }, - { 0, "lf hitag wrbl" }, - { 0, "lf hitag sniff" }, - { 0, "lf hitag cc" }, - { 0, "lf hitag ta" }, - { 0, "lf hitag eload" }, - { 0, "lf hitag sim" }, - { 1, "lf idteck help" }, - { 1, "lf idteck demod" }, - { 0, "lf idteck reader" }, - { 0, "lf idteck clone" }, - { 0, "lf idteck sim" }, - { 1, "lf indala help" }, - { 0, "lf indala brute" }, - { 1, "lf indala demod" }, - { 1, "lf indala altdemod" }, - { 0, "lf indala reader" }, - { 0, "lf indala clone" }, - { 0, "lf indala sim" }, - { 1, "lf io help" }, - { 1, "lf io demod" }, - { 0, "lf io reader" }, - { 0, "lf io clone" }, - { 0, "lf io sim" }, - { 0, "lf io watch" }, - { 1, "lf jablotron help" }, - { 1, "lf jablotron demod" }, - { 0, "lf jablotron reader" }, - { 0, "lf jablotron clone" }, - { 0, "lf jablotron sim" }, - { 1, "lf keri help" }, - { 1, "lf keri demod" }, - { 0, "lf keri reader" }, - { 0, "lf keri clone" }, - { 0, "lf keri sim" }, - { 1, "lf motorola help" }, - { 1, "lf motorola demod" }, - { 0, "lf motorola reader" }, - { 0, "lf motorola clone" }, - { 0, "lf motorola sim" }, - { 1, "lf nedap help" }, - { 1, "lf nedap demod" }, - { 0, "lf nedap reader" }, - { 0, "lf nedap clone" }, - { 0, "lf nedap sim" }, - { 1, "lf nexwatch help" }, - { 1, "lf nexwatch demod" }, - { 0, "lf nexwatch reader" }, - { 0, "lf nexwatch clone" }, - { 0, "lf nexwatch sim" }, - { 1, "lf noralsy help" }, - { 1, "lf noralsy demod" }, - { 0, "lf noralsy reader" }, - { 0, "lf noralsy clone" }, - { 0, "lf noralsy sim" }, - { 1, "lf pac help" }, - { 1, "lf pac demod" }, - { 0, "lf pac reader" }, - { 0, "lf pac clone" }, - { 0, "lf pac sim" }, - { 1, "lf paradox help" }, - { 1, "lf paradox demod" }, - { 0, "lf paradox reader" }, - { 0, "lf paradox clone" }, - { 0, "lf paradox sim" }, - { 1, "lf pcf7931 help" }, - { 0, "lf pcf7931 reader" }, - { 0, "lf pcf7931 write" }, - { 1, "lf pcf7931 config" }, - { 1, "lf presco help" }, - { 1, "lf presco demod" }, - { 0, "lf presco reader" }, - { 0, "lf presco clone" }, - { 0, "lf presco sim" }, - { 1, "lf pyramid help" }, - { 1, "lf pyramid demod" }, - { 0, "lf pyramid reader" }, - { 0, "lf pyramid clone" }, - { 0, "lf pyramid sim" }, - { 1, "lf securakey help" }, - { 1, "lf securakey demod" }, - { 0, "lf securakey reader" }, - { 0, "lf securakey clone" }, - { 0, "lf securakey sim" }, - { 1, "lf ti help" }, - { 1, "lf ti demod" }, - { 0, "lf ti reader" }, - { 0, "lf ti write" }, - { 1, "lf t55xx help" }, - { 0, "lf t55xx clonehelp" }, - { 1, "lf t55xx config" }, - { 0, "lf t55xx dangerraw" }, - { 1, "lf t55xx detect" }, - { 0, "lf t55xx deviceconfig" }, - { 0, "lf t55xx dump" }, - { 1, "lf t55xx info" }, - { 0, "lf t55xx p1detect" }, - { 0, "lf t55xx read" }, - { 0, "lf t55xx resetread" }, - { 0, "lf t55xx restore" }, - { 1, "lf t55xx trace" }, - { 0, "lf t55xx wakeup" }, - { 0, "lf t55xx write" }, - { 0, "lf t55xx bruteforce" }, - { 0, "lf t55xx chk" }, - { 0, "lf t55xx protect" }, - { 0, "lf t55xx recoverpw" }, - { 1, "lf t55xx sniff" }, - { 0, "lf t55xx special" }, - { 0, "lf t55xx wipe" }, - { 1, "lf viking help" }, - { 1, "lf viking demod" }, - { 0, "lf viking reader" }, - { 0, "lf viking clone" }, - { 0, "lf viking sim" }, - { 1, "lf visa2000 help" }, - { 1, "lf visa2000 demod" }, - { 0, "lf visa2000 reader" }, - { 0, "lf visa2000 clone" }, - { 0, "lf visa2000 sim" }, - { 1, "mem help" }, - { 0, "mem baudrate" }, - { 0, "mem dump" }, - { 0, "mem info" }, - { 0, "mem load" }, - { 0, "mem wipe" }, - { 1, "mem spiffs help" }, - { 0, "mem spiffs copy" }, - { 0, "mem spiffs check" }, - { 0, "mem spiffs dump" }, - { 0, "mem spiffs info" }, - { 0, "mem spiffs mount" }, - { 0, "mem spiffs remove" }, - { 0, "mem spiffs rename" }, - { 0, "mem spiffs test" }, - { 0, "mem spiffs tree" }, - { 0, "mem spiffs unmount" }, - { 0, "mem spiffs upload" }, - { 0, "mem spiffs view" }, - { 0, "mem spiffs wipe" }, - { 1, "nfc help" }, - { 1, "nfc decode" }, - { 0, "nfc type1 read" }, - { 1, "nfc type1 help" }, - { 0, "nfc type2 read" }, - { 1, "nfc type2 help" }, - { 0, "nfc type4a format" }, - { 0, "nfc type4a read" }, - { 0, "nfc type4a write" }, - { 0, "nfc type4a st25taread" }, - { 1, "nfc type4a help" }, - { 0, "nfc type4b read" }, - { 1, "nfc type4b help" }, - { 0, "nfc mf cformat" }, - { 0, "nfc mf cread" }, - { 0, "nfc mf cwrite" }, - { 0, "nfc mf pread" }, - { 1, "nfc mf help" }, - { 0, "nfc barcode read" }, - { 0, "nfc barcode sim" }, - { 1, "nfc barcode help" }, - { 1, "piv help" }, - { 0, "piv select" }, - { 0, "piv getdata" }, - { 0, "piv authsign" }, - { 0, "piv scan" }, - { 1, "piv list" }, - { 1, "smart help" }, - { 1, "smart list" }, - { 0, "smart info" }, - { 0, "smart reader" }, - { 0, "smart raw" }, - { 1, "smart upgrade" }, - { 0, "smart setclock" }, - { 0, "smart brute" }, - { 1, "script help" }, - { 1, "script list" }, - { 1, "script run" }, - { 1, "trace help" }, - { 1, "trace extract" }, - { 1, "trace list" }, - { 1, "trace load" }, - { 1, "trace save" }, - { 1, "usart help" }, - { 0, "usart btpin" }, - { 0, "usart btfactory" }, - { 0, "usart tx" }, - { 0, "usart rx" }, - { 0, "usart txrx" }, - { 0, "usart txhex" }, - { 0, "usart rxhex" }, - { 0, "usart config" }, - { 1, "wiegand help" }, - { 1, "wiegand list" }, - { 1, "wiegand encode" }, - { 1, "wiegand decode" }, - {0, NULL} -}; - -#ifdef __cplusplus -} -#endif - -#endif \ No newline at end of file From 0b143e5bcd02dd9598eb03406149691d36cde0e4 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 18:57:36 -0700 Subject: [PATCH 0383/1034] Add 5..8 byte versions for LE/BE conversions --- common/commonutil.c | 252 +++++++++++++++++++++++++++++++++++++------- common/commonutil.h | 19 ++++ 2 files changed, 235 insertions(+), 36 deletions(-) diff --git a/common/commonutil.c b/common/commonutil.c index 07b55f1f9..2e850fb39 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -161,75 +161,255 @@ uint64_t bytes_to_num(uint8_t *src, size_t len) { } uint16_t MemLeToUint2byte(const uint8_t *data) { - return (uint16_t)((uint16_t) - (data[1] << 8) + data[0] - ); + return (uint16_t)( + (((uint16_t)(data[1])) << (8*1)) + + (((uint16_t)(data[0])) << (8*0)) + ); } uint32_t MemLeToUint3byte(const uint8_t *data) { - return (uint32_t)((uint32_t) - (data[2] << 16) + (data[1] << 8) + data[0] - ); + return (uint32_t)( + (((uint32_t)(data[2])) << (8*2)) + + (((uint32_t)(data[1])) << (8*1)) + + (((uint32_t)(data[0])) << (8*0)) + ); } uint32_t MemLeToUint4byte(const uint8_t *data) { - return (uint32_t)((uint32_t) - (data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0] - ); + return (uint32_t)( + (((uint32_t)(data[3])) << (8*3)) + + (((uint32_t)(data[2])) << (8*2)) + + (((uint32_t)(data[1])) << (8*1)) + + (((uint32_t)(data[0])) << (8*0)) + ); +} + +uint64_t MemLeToUint5byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[4])) << (8*4)) + + (((uint64_t)(data[3])) << (8*3)) + + (((uint64_t)(data[2])) << (8*2)) + + (((uint64_t)(data[1])) << (8*1)) + + (((uint64_t)(data[0])) << (8*0)) + ); +} + +uint64_t MemLeToUint6byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[5])) << (8*5)) + + (((uint64_t)(data[4])) << (8*4)) + + (((uint64_t)(data[3])) << (8*3)) + + (((uint64_t)(data[2])) << (8*2)) + + (((uint64_t)(data[1])) << (8*1)) + + (((uint64_t)(data[0])) << (8*0)) + ); +} + +uint64_t MemLeToUint7byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[6])) << (8*6)) + + (((uint64_t)(data[5])) << (8*5)) + + (((uint64_t)(data[4])) << (8*4)) + + (((uint64_t)(data[3])) << (8*3)) + + (((uint64_t)(data[2])) << (8*2)) + + (((uint64_t)(data[1])) << (8*1)) + + (((uint64_t)(data[0])) << (8*0)) + ); +} + +uint64_t MemLeToUint8byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[7])) << (8*7)) + + (((uint64_t)(data[6])) << (8*6)) + + (((uint64_t)(data[5])) << (8*5)) + + (((uint64_t)(data[4])) << (8*4)) + + (((uint64_t)(data[3])) << (8*3)) + + (((uint64_t)(data[2])) << (8*2)) + + (((uint64_t)(data[1])) << (8*1)) + + (((uint64_t)(data[0])) << (8*0)) + ); } uint16_t MemBeToUint2byte(const uint8_t *data) { - return (uint16_t)((uint16_t) - (data[0] << 8) + data[1] - ); + return (uint16_t)( + (((uint16_t)(data[0])) << (8*1)) + + (((uint16_t)(data[1])) << (8*0)) + ); } uint32_t MemBeToUint3byte(const uint8_t *data) { - return (uint32_t)((uint32_t) - (data[0] << 16) + (data[1] << 8) + data[2] - ); + return (uint32_t)( + (((uint32_t)(data[0])) << (8*2)) + + (((uint32_t)(data[1])) << (8*1)) + + (((uint32_t)(data[2])) << (8*0)) + ); } -inline uint32_t MemBeToUint4byte(const uint8_t *data) { +uint32_t MemBeToUint4byte(const uint8_t *data) { return (uint32_t)( - (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3] - ); + (((uint32_t)(data[0])) << (8*3)) + + (((uint32_t)(data[1])) << (8*2)) + + (((uint32_t)(data[2])) << (8*1)) + + (((uint32_t)(data[3])) << (8*0)) + ); +} + +uint64_t MemBeToUint5byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[0])) << (8*4)) + + (((uint64_t)(data[1])) << (8*3)) + + (((uint64_t)(data[2])) << (8*2)) + + (((uint64_t)(data[3])) << (8*1)) + + (((uint64_t)(data[4])) << (8*0)) + ); +} + +uint64_t MemBeToUint6byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[0])) << (8*5)) + + (((uint64_t)(data[1])) << (8*4)) + + (((uint64_t)(data[2])) << (8*3)) + + (((uint64_t)(data[3])) << (8*2)) + + (((uint64_t)(data[4])) << (8*1)) + + (((uint64_t)(data[5])) << (8*0)) + ); +} + +uint64_t MemBeToUint7byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[0])) << (8*6)) + + (((uint64_t)(data[1])) << (8*5)) + + (((uint64_t)(data[2])) << (8*4)) + + (((uint64_t)(data[3])) << (8*3)) + + (((uint64_t)(data[4])) << (8*2)) + + (((uint64_t)(data[5])) << (8*1)) + + (((uint64_t)(data[6])) << (8*0)) + ); +} + +uint64_t MemBeToUint8byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[0])) << (8*7)) + + (((uint64_t)(data[1])) << (8*6)) + + (((uint64_t)(data[2])) << (8*5)) + + (((uint64_t)(data[3])) << (8*4)) + + (((uint64_t)(data[4])) << (8*3)) + + (((uint64_t)(data[5])) << (8*2)) + + (((uint64_t)(data[6])) << (8*1)) + + (((uint64_t)(data[7])) << (8*0)) + ); } void Uint2byteToMemLe(uint8_t *data, uint16_t value) { - data[1] = (value >> 8) & 0xff; - data[0] = value & 0xff; + data[0] = (uint8_t)((value >> (8*0)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); } void Uint3byteToMemLe(uint8_t *data, uint32_t value) { - data[2] = (value >> 16) & 0xff; - data[1] = (value >> 8) & 0xff; - data[0] = value & 0xff; + data[0] = (uint8_t)((value >> (8*0)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[2] = (uint8_t)((value >> (8*2)) & 0xffu); } void Uint4byteToMemLe(uint8_t *data, uint32_t value) { - data[3] = (value >> 24) & 0xff; - data[2] = (value >> 16) & 0xff; - data[1] = (value >> 8) & 0xff; - data[0] = value & 0xff; + data[0] = (uint8_t)((value >> (8*0)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[2] = (uint8_t)((value >> (8*2)) & 0xffu); + data[3] = (uint8_t)((value >> (8*3)) & 0xffu); +} + +void Uint5byteToMemLe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*0)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[2] = (uint8_t)((value >> (8*2)) & 0xffu); + data[3] = (uint8_t)((value >> (8*3)) & 0xffu); + data[4] = (uint8_t)((value >> (8*4)) & 0xffu); +} + +void Uint6byteToMemLe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*0)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[2] = (uint8_t)((value >> (8*2)) & 0xffu); + data[3] = (uint8_t)((value >> (8*3)) & 0xffu); + data[4] = (uint8_t)((value >> (8*4)) & 0xffu); + data[5] = (uint8_t)((value >> (8*5)) & 0xffu); +} + +void Uint7byteToMemLe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*0)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[2] = (uint8_t)((value >> (8*2)) & 0xffu); + data[3] = (uint8_t)((value >> (8*3)) & 0xffu); + data[4] = (uint8_t)((value >> (8*4)) & 0xffu); + data[5] = (uint8_t)((value >> (8*5)) & 0xffu); + data[6] = (uint8_t)((value >> (8*6)) & 0xffu); +} + +void Uint8byteToMemLe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*0)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[2] = (uint8_t)((value >> (8*2)) & 0xffu); + data[3] = (uint8_t)((value >> (8*3)) & 0xffu); + data[4] = (uint8_t)((value >> (8*4)) & 0xffu); + data[5] = (uint8_t)((value >> (8*5)) & 0xffu); + data[6] = (uint8_t)((value >> (8*6)) & 0xffu); + data[7] = (uint8_t)((value >> (8*7)) & 0xffu); } void Uint2byteToMemBe(uint8_t *data, uint16_t value) { - data[0] = (value >> 8) & 0xff; - data[1] = value & 0xff; + data[0] = (uint8_t)((value >> (8*1)) & 0xffu); + data[1] = (uint8_t)((value >> (8*0)) & 0xffu); } void Uint3byteToMemBe(uint8_t *data, uint32_t value) { - data[0] = (value >> 16) & 0xff; - data[1] = (value >> 8) & 0xff; - data[2] = value & 0xff; + data[0] = (uint8_t)((value >> (8*2)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[2] = (uint8_t)((value >> (8*0)) & 0xffu); } void Uint4byteToMemBe(uint8_t *data, uint32_t value) { - data[0] = (value >> 24) & 0xff; - data[1] = (value >> 16) & 0xff; - data[2] = (value >> 8) & 0xff; - data[3] = value & 0xff; + data[0] = (uint8_t)((value >> (8*3)) & 0xffu); + data[1] = (uint8_t)((value >> (8*2)) & 0xffu); + data[2] = (uint8_t)((value >> (8*1)) & 0xffu); + data[3] = (uint8_t)((value >> (8*0)) & 0xffu); +} + +void Uint5byteToMemBe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*4)) & 0xffu); + data[1] = (uint8_t)((value >> (8*3)) & 0xffu); + data[2] = (uint8_t)((value >> (8*2)) & 0xffu); + data[3] = (uint8_t)((value >> (8*1)) & 0xffu); + data[4] = (uint8_t)((value >> (8*0)) & 0xffu); +} + +void Uint6byteToMemBe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*5)) & 0xffu); + data[1] = (uint8_t)((value >> (8*4)) & 0xffu); + data[2] = (uint8_t)((value >> (8*3)) & 0xffu); + data[3] = (uint8_t)((value >> (8*2)) & 0xffu); + data[4] = (uint8_t)((value >> (8*1)) & 0xffu); + data[5] = (uint8_t)((value >> (8*0)) & 0xffu); +} + +void Uint7byteToMemBe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*6)) & 0xffu); + data[1] = (uint8_t)((value >> (8*5)) & 0xffu); + data[2] = (uint8_t)((value >> (8*4)) & 0xffu); + data[3] = (uint8_t)((value >> (8*3)) & 0xffu); + data[4] = (uint8_t)((value >> (8*2)) & 0xffu); + data[5] = (uint8_t)((value >> (8*1)) & 0xffu); + data[6] = (uint8_t)((value >> (8*0)) & 0xffu); +} + +void Uint8byteToMemBe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*7)) & 0xffu); + data[1] = (uint8_t)((value >> (8*6)) & 0xffu); + data[2] = (uint8_t)((value >> (8*5)) & 0xffu); + data[3] = (uint8_t)((value >> (8*4)) & 0xffu); + data[4] = (uint8_t)((value >> (8*3)) & 0xffu); + data[5] = (uint8_t)((value >> (8*2)) & 0xffu); + data[6] = (uint8_t)((value >> (8*1)) & 0xffu); + data[7] = (uint8_t)((value >> (8*0)) & 0xffu); } // RotateLeft - Ultralight, Desfire diff --git a/common/commonutil.h b/common/commonutil.h index 7beb95355..23dd27f85 100644 --- a/common/commonutil.h +++ b/common/commonutil.h @@ -65,15 +65,34 @@ uint64_t bytes_to_num(uint8_t *src, size_t len); uint16_t MemLeToUint2byte(const uint8_t *data); uint32_t MemLeToUint3byte(const uint8_t *data); uint32_t MemLeToUint4byte(const uint8_t *data); +uint64_t MemLeToUint5byte(const uint8_t *data); +uint64_t MemLeToUint6byte(const uint8_t *data); +uint64_t MemLeToUint7byte(const uint8_t *data); +uint64_t MemLeToUint8byte(const uint8_t *data); + uint16_t MemBeToUint2byte(const uint8_t *data); uint32_t MemBeToUint3byte(const uint8_t *data); uint32_t MemBeToUint4byte(const uint8_t *data); +uint64_t MemBeToUint5byte(const uint8_t *data); +uint64_t MemBeToUint6byte(const uint8_t *data); +uint64_t MemBeToUint7byte(const uint8_t *data); +uint64_t MemBeToUint8byte(const uint8_t *data); + void Uint2byteToMemLe(uint8_t *data, uint16_t value); void Uint3byteToMemLe(uint8_t *data, uint32_t value); void Uint4byteToMemLe(uint8_t *data, uint32_t value); +void Uint5byteToMemLe(uint8_t *data, uint64_t value); +void Uint6byteToMemLe(uint8_t *data, uint64_t value); +void Uint7byteToMemLe(uint8_t *data, uint64_t value); +void Uint8byteToMemLe(uint8_t *data, uint64_t value); + void Uint2byteToMemBe(uint8_t *data, uint16_t value); void Uint3byteToMemBe(uint8_t *data, uint32_t value); void Uint4byteToMemBe(uint8_t *data, uint32_t value); +void Uint5byteToMemBe(uint8_t *data, uint64_t value); +void Uint6byteToMemBe(uint8_t *data, uint64_t value); +void Uint7byteToMemBe(uint8_t *data, uint64_t value); +void Uint8byteToMemBe(uint8_t *data, uint64_t value); // rotate left byte array void rol(uint8_t *data, const size_t len); From c858d6fdc7c5afbcea377dddce44ec15356f36b2 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 19:07:35 -0700 Subject: [PATCH 0384/1034] Minor update to WSL2 instructions --- .../Windows-WSL2-Installation-Instructions.md | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md b/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md index 21cb8048c..0869ab04e 100644 --- a/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md @@ -156,27 +156,18 @@ However, it may be necessary to give the `udev` service a kind reminder: ## Inform udev that it really, really should work -The following workaround appears to work to get udev to apply the permissions -appropriately. Note that this may need to be run again, such as when the WSL2 -distributions have been restarted. I don't know why ... but it's a small hiccup. +As of August 2023, the following needs to be done anytime the WSL2 subsystem +has been restarted (e.g., host machine reboot, first WSL2 console window, etc.). +Otherwise, it appears that `udev` service will not see the arrival of devices, +and therefore won't modify permissions on `/dev/ttyACM*` devices. -```sh -sudo udevadm trigger --action=change -``` - -General instructions suggested to use `sudo udevadm control --reload-rules`. However, -this may simply result in the following cryptic error message: - -```sh -$ sudo udevadm control --reload-rules -[sudo] password for root: -Failed to send reload request: No such file or directory -``` - -_Note that the following should **NOT** be required:_ +After this is run once, `udev` appears to work correctly (at least until the +host machine reboots or the last WSL console window is closed for a while). +One workaround is to simply ensure you keep at least one WSL2 console open. ```sh sudo service udev restart +sudo udevadm trigger --action=change ``` ## Verify Device Exists From db8f91d7e1625f5c56a5c17aff08ebb77fbd5582 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 20:01:20 -0700 Subject: [PATCH 0385/1034] make logfile more unique (per client run) --- client/src/proxmark3.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/proxmark3.h b/client/src/proxmark3.h index a9f80ae91..71072422a 100644 --- a/client/src/proxmark3.h +++ b/client/src/proxmark3.h @@ -36,7 +36,7 @@ #define PROXPROMPT_DEV_OFFLINE _RL_BOLD_RED_("offline") #define PROXHISTORY "history.txt" -#define PROXLOG "log_%Y%m%d.txt" +#define PROXLOG "log_%Y%m%d%H%M%S.txt" #define MAX_NESTED_CMDSCRIPT 10 #define MAX_NESTED_LUASCRIPT 10 From 6eae62edecbaddab5a305b6f74337b272183bbe3 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 20:34:13 -0700 Subject: [PATCH 0386/1034] const for `hitagS` --- armsrc/hitagS.c | 10 +++++----- armsrc/hitagS.h | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/armsrc/hitagS.c b/armsrc/hitagS.c index db219bcf2..d304cb6b3 100644 --- a/armsrc/hitagS.c +++ b/armsrc/hitagS.c @@ -635,7 +635,7 @@ static void hitagS_handle_reader_command(uint8_t *rx, const size_t rxlen, /* * Emulates a Hitag S Tag with the given data from the .hts file */ -void SimulateHitagSTag(bool tag_mem_supplied, uint8_t *data, bool ledcontrol) { +void SimulateHitagSTag(bool tag_mem_supplied, const uint8_t *data, bool ledcontrol) { StopTicks(); @@ -1052,7 +1052,7 @@ static size_t concatbits(uint8_t *dstbuf, size_t dstbufskip, const uint8_t *srcb return dstbufskip + srcbuflen; } -static int selectHitagS(hitag_function htf, hitag_data *htd, uint8_t *tx, size_t sizeoftx, uint8_t *rx, size_t sizeofrx, int t_wait, bool ledcontrol) { +static int selectHitagS(hitag_function htf, const hitag_data *htd, uint8_t *tx, size_t sizeoftx, uint8_t *rx, size_t sizeofrx, int t_wait, bool ledcontrol) { StopTicks(); FpgaDownloadAndGo(FPGA_BITSTREAM_LF); @@ -1263,7 +1263,7 @@ static int selectHitagS(hitag_function htf, hitag_data *htd, uint8_t *tx, size_t * If the key was given the password will be decrypted. * Reads every page of a hitag S transpoder. */ -void ReadHitagS(hitag_function htf, hitag_data *htd, bool ledcontrol) { +void ReadHitagS(hitag_function htf, const hitag_data *htd, bool ledcontrol) { uint8_t rx[HITAG_FRAME_LEN]; size_t rxlen = 0; @@ -1356,7 +1356,7 @@ void ReadHitagS(hitag_function htf, hitag_data *htd, bool ledcontrol) { * Authenticates to the Tag with the given Key or Challenge. * Writes the given 32Bit data into page_ */ -void WritePageHitagS(hitag_function htf, hitag_data *htd, int page, bool ledcontrol) { +void WritePageHitagS(hitag_function htf, const hitag_data *htd, int page, bool ledcontrol) { bool bSuccessful = false; //check for valid input @@ -1443,7 +1443,7 @@ write_end: * is not received correctly due to Antenna problems. This function * detects these challenges. */ -void Hitag_check_challenges(uint8_t *data, uint32_t datalen, bool ledcontrol) { +void Hitag_check_challenges(const uint8_t *data, uint32_t datalen, bool ledcontrol) { //check for valid input if (datalen < 8) { Dbprintf("Error, need chals"); diff --git a/armsrc/hitagS.h b/armsrc/hitagS.h index 49a4f358f..cbb87722f 100644 --- a/armsrc/hitagS.h +++ b/armsrc/hitagS.h @@ -25,8 +25,8 @@ #include "hitag.h" -void SimulateHitagSTag(bool tag_mem_supplied, uint8_t *data, bool ledcontrol); -void ReadHitagS(hitag_function htf, hitag_data *htd, bool ledcontrol); -void WritePageHitagS(hitag_function htf, hitag_data *htd, int page, bool ledcontrol); -void Hitag_check_challenges(uint8_t *data, uint32_t datalen, bool ledcontrol); +void SimulateHitagSTag(bool tag_mem_supplied, const uint8_t *data, bool ledcontrol); +void ReadHitagS(hitag_function htf, const hitag_data *htd, bool ledcontrol); +void WritePageHitagS(hitag_function htf, const hitag_data *htd, int page, bool ledcontrol); +void Hitag_check_challenges(const uint8_t *data, uint32_t datalen, bool ledcontrol); #endif From 8af8723528847596b0f3979cf4f1c0a36216bee7 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 21:45:21 -0700 Subject: [PATCH 0387/1034] const for `i2c` --- armsrc/i2c.c | 6 +++--- armsrc/i2c.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/armsrc/i2c.c b/armsrc/i2c.c index ca3cb46fd..016ae2f13 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -407,7 +407,7 @@ bool I2C_WriteByte(uint8_t data, uint8_t device_cmd, uint8_t device_address) { //Sends array of data (Array, length, command to be written , SlaveDevice address ). // len = uint16 because we need to write up to 256 bytes -bool I2C_BufferWrite(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t device_address) { +bool I2C_BufferWrite(const uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t device_address) { bool bBreak = true; do { if (!I2C_Start()) @@ -602,7 +602,7 @@ int16_t I2C_ReadFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t return readcount; } -bool I2C_WriteFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address) { +bool I2C_WriteFW(const uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address) { //START, 0xB0, 0x00, 0x00, xx, yy, zz, ......, STOP bool bBreak = true; @@ -772,7 +772,7 @@ void SmartCardAtr(void) { // StopTicks(); } -void SmartCardRaw(smart_card_raw_t *p) { +void SmartCardRaw(const smart_card_raw_t *p) { LED_D_ON(); uint16_t len = 0; diff --git a/armsrc/i2c.h b/armsrc/i2c.h index 972704c1b..6fa8b8809 100644 --- a/armsrc/i2c.h +++ b/armsrc/i2c.h @@ -41,12 +41,12 @@ void I2C_Reset_EnterBootloader(void); bool I2C_WriteCmd(uint8_t device_cmd, uint8_t device_address); bool I2C_WriteByte(uint8_t data, uint8_t device_cmd, uint8_t device_address); -bool I2C_BufferWrite(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t device_address); +bool I2C_BufferWrite(const uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t device_address); int16_t I2C_BufferRead(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t device_address); // for firmware int16_t I2C_ReadFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address); -bool I2C_WriteFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address); +bool I2C_WriteFW(const uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address); bool sc_rx_bytes(uint8_t *dest, uint16_t *destlen); // @@ -54,7 +54,7 @@ bool GetATR(smart_card_atr_t *card_ptr, bool verbose); // generice functions void SmartCardAtr(void); -void SmartCardRaw(smart_card_raw_t *p); +void SmartCardRaw(const smart_card_raw_t *p); void SmartCardUpgrade(uint64_t arg0); void SmartCardSetBaud(uint64_t arg0); void SmartCardSetClock(uint64_t arg0); From efce76db53db4e71a64807c4c731714791faa76a Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 22:07:04 -0700 Subject: [PATCH 0388/1034] more const for `iso14443a` --- armsrc/iso14443a.c | 4 ++-- armsrc/iso14443a.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 45f61f4ce..c3ee6f050 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -188,7 +188,7 @@ void printHf14aConfig(void) { * @brief setSamplingConfig * @param sc */ -void setHf14aConfig(hf14a_config *hc) { +void setHf14aConfig(const hf14a_config *hc) { if ((hc->forceanticol >= 0) && (hc->forceanticol <= 2)) hf14aconfig.forceanticol = hc->forceanticol; @@ -564,7 +564,7 @@ RAMFUNC int ManchesterDecoding(uint8_t bit, uint16_t offset, uint32_t non_real_t } -// Thinfilm, Kovio mangels ISO14443A in the way that they don't use start bit nor parity bits. +// Thinfilm, Kovio mangles ISO14443A in the way that they don't use start bit nor parity bits. static RAMFUNC int ManchesterDecoding_Thinfilm(uint8_t bit) { Demod.twoBits = (Demod.twoBits << 8) | bit; diff --git a/armsrc/iso14443a.h b/armsrc/iso14443a.h index a6f68067b..7957e6f48 100644 --- a/armsrc/iso14443a.h +++ b/armsrc/iso14443a.h @@ -121,7 +121,7 @@ typedef enum { #endif void printHf14aConfig(void); -void setHf14aConfig(hf14a_config *hc); +void setHf14aConfig(const hf14a_config *hc); hf14a_config *getHf14aConfig(void); void iso14a_set_timeout(uint32_t timeout); uint32_t iso14a_get_timeout(void); From a8d84b2f132e021071d635ba68edc468a5e4842e Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 22:16:11 -0700 Subject: [PATCH 0389/1034] more const for `iso14443b` --- armsrc/iso14443b.c | 2 +- armsrc/iso14443b.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index e4f1e4e93..8fe502833 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -701,7 +701,7 @@ static void TransmitFor14443b_AsTag(const uint8_t *response, uint16_t len) { // Main loop of simulated tag: receive commands from reader, decide what // response to send, and send it. //----------------------------------------------------------------------------- -void SimulateIso14443bTag(uint8_t *pupi) { +void SimulateIso14443bTag(const uint8_t *pupi) { LED_A_ON(); // the only commands we understand is WUPB, AFI=0, Select All, N=1: diff --git a/armsrc/iso14443b.h b/armsrc/iso14443b.h index 2579e6f1c..afa21e9d1 100644 --- a/armsrc/iso14443b.h +++ b/armsrc/iso14443b.h @@ -41,7 +41,7 @@ int iso14443b_select_card(iso14b_card_select_t *card); int iso14443b_select_card_srx(iso14b_card_select_t *card); int iso14443b_select_xrx_card(iso14b_card_select_t *card); -void SimulateIso14443bTag(uint8_t *pupi); +void SimulateIso14443bTag(const uint8_t *pupi); void AcquireRawAdcSamplesIso14443b(uint32_t parameter); void ReadSTBlock(uint8_t blocknr); void SniffIso14443b(void); From db46e2ce110b4c91a6e49b1b902fd3260095d1a3 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 22:45:48 -0700 Subject: [PATCH 0390/1034] more const for `iso15693` --- armsrc/iso15693.c | 40 ++++++++++++++++++++-------------------- armsrc/iso15693.h | 16 ++++++++-------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index e0c3e4436..0c5e7c7ab 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -2656,7 +2656,7 @@ void SetTag15693Uid(const uint8_t *uid) { switch_off(); } -static void init_password_15693_Slix(uint8_t *buffer, uint8_t *pwd, const uint8_t *rnd) { +static void init_password_15693_Slix(uint8_t *buffer, const uint8_t *pwd, const uint8_t *rnd) { memcpy(buffer, pwd, 4); if (rnd) { buffer[0] ^= rnd[0]; @@ -2684,7 +2684,7 @@ static bool get_rnd_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t return true; } -static uint32_t disable_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t pass_id, uint8_t *password) { +static uint32_t disable_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t pass_id, const uint8_t *password) { uint8_t rnd[2]; if (get_rnd_15693_Slix(start_time, eof_time, rnd) == false) { @@ -2706,7 +2706,7 @@ static uint32_t disable_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_ti return PM3_SUCCESS; } -static uint32_t set_pass_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t pass_id, uint8_t *password, uint8_t *uid) { +static uint32_t set_pass_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t pass_id, const uint8_t *password, uint8_t *uid) { uint8_t rnd[2]; @@ -2733,7 +2733,7 @@ static uint32_t set_pass_15693_Slix(uint32_t start_time, uint32_t *eof_time, uin return PM3_SUCCESS; } -static uint32_t set_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *password) { +static uint32_t set_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_time, const uint8_t *password) { uint8_t rnd[2]; if (get_rnd_15693_Slix(start_time, eof_time, rnd) == false) { return PM3_ETIMEOUT; @@ -2754,7 +2754,7 @@ static uint32_t set_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_time, return PM3_SUCCESS; } -static uint32_t disable_eas_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *password, bool usepwd) { +static uint32_t disable_eas_15693_Slix(uint32_t start_time, uint32_t *eof_time, const uint8_t *password, bool usepwd) { uint8_t uid[8]; get_uid_slix(start_time, eof_time, uid); @@ -2788,7 +2788,7 @@ static uint32_t disable_eas_15693_Slix(uint32_t start_time, uint32_t *eof_time, } -static uint32_t enable_eas_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *password, bool usepwd) { +static uint32_t enable_eas_15693_Slix(uint32_t start_time, uint32_t *eof_time, const uint8_t *password, bool usepwd) { uint8_t uid[8]; get_uid_slix(start_time, eof_time, uid); @@ -2820,7 +2820,7 @@ static uint32_t enable_eas_15693_Slix(uint32_t start_time, uint32_t *eof_time, u return PM3_SUCCESS; } -static uint32_t write_password_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t pwd_id, uint8_t *password, uint8_t *uid) { +static uint32_t write_password_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t pwd_id, const uint8_t *password, uint8_t *uid) { uint8_t new_pwd_cmd[] = { (ISO15_REQ_DATARATE_HIGH | ISO15_REQ_ADDRESS), ISO15693_WRITE_PASSWORD, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, pwd_id, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; @@ -2841,7 +2841,7 @@ static uint32_t write_password_15693_Slix(uint32_t start_time, uint32_t *eof_tim return PM3_SUCCESS; } -static uint32_t pass_protect_EASAFI_15693_Slix(uint32_t start_time, uint32_t *eof_time, bool set_option_flag, uint8_t *password) { +static uint32_t pass_protect_EASAFI_15693_Slix(uint32_t start_time, uint32_t *eof_time, bool set_option_flag, const uint8_t *password) { uint8_t flags; @@ -2880,7 +2880,7 @@ static uint32_t pass_protect_EASAFI_15693_Slix(uint32_t start_time, uint32_t *eo return PM3_SUCCESS; } -static uint32_t write_afi_15693(uint32_t start_time, uint32_t *eof_time, uint8_t *password, bool usepwd, uint8_t *uid, bool use_uid, uint8_t afi) { +static uint32_t write_afi_15693(uint32_t start_time, uint32_t *eof_time, const uint8_t *password, bool usepwd, uint8_t *uid, bool use_uid, uint8_t afi) { if (!use_uid) { int res_getuid = get_uid_slix(start_time, eof_time, uid); @@ -2917,7 +2917,7 @@ static uint32_t write_afi_15693(uint32_t start_time, uint32_t *eof_time, uint8_t } /* -static uint32_t enable_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *uid, uint8_t pass_id, uint8_t *password) { +static uint32_t enable_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *uid, uint8_t pass_id, const uint8_t *password) { uint8_t rnd[2]; if (get_rnd_15693_Slix(start_time, eof_time, rnd) == false) { return PM3_ETIMEOUT; @@ -2938,7 +2938,7 @@ static uint32_t enable_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_tim return PM3_SUCCESS; } -static uint32_t write_password_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *uid, uint8_t pass_id, uint8_t *password) { +static uint32_t write_password_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *uid, uint8_t pass_id, const uint8_t *password) { uint8_t rnd[2]; if (get_rnd_15693_Slix(start_time, eof_time, rnd) == false) { return PM3_ETIMEOUT; @@ -2961,7 +2961,7 @@ static uint32_t write_password_15693_Slix(uint32_t start_time, uint32_t *eof_tim return PM3_SUCCESS; } -static uint32_t destroy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *uid, uint8_t *password) { +static uint32_t destroy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *uid, const uint8_t *password) { uint8_t rnd[2]; if (get_rnd_15693_Slix(start_time, eof_time, rnd) == false) { @@ -2985,7 +2985,7 @@ static uint32_t destroy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint */ -void WritePasswordSlixIso15693(uint8_t *old_password, uint8_t *new_password, uint8_t pwd_id) { +void WritePasswordSlixIso15693(const uint8_t *old_password, const uint8_t *new_password, uint8_t pwd_id) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); @@ -3010,7 +3010,7 @@ void WritePasswordSlixIso15693(uint8_t *old_password, uint8_t *new_password, uin } -void DisablePrivacySlixIso15693(uint8_t *password) { +void DisablePrivacySlixIso15693(const uint8_t *password) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); @@ -3025,7 +3025,7 @@ void DisablePrivacySlixIso15693(uint8_t *password) { switch_off(); } -void EnablePrivacySlixIso15693(uint8_t *password) { +void EnablePrivacySlixIso15693(const uint8_t *password) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); @@ -3041,7 +3041,7 @@ void EnablePrivacySlixIso15693(uint8_t *password) { } -void DisableEAS_AFISlixIso15693(uint8_t *password, bool usepwd) { +void DisableEAS_AFISlixIso15693(const uint8_t *password, bool usepwd) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); @@ -3059,7 +3059,7 @@ void DisableEAS_AFISlixIso15693(uint8_t *password, bool usepwd) { switch_off(); } -void EnableEAS_AFISlixIso15693(uint8_t *password, bool usepwd) { +void EnableEAS_AFISlixIso15693(const uint8_t *password, bool usepwd) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); @@ -3074,7 +3074,7 @@ void EnableEAS_AFISlixIso15693(uint8_t *password, bool usepwd) { switch_off(); } -void PassProtextEASSlixIso15693(uint8_t *password) { +void PassProtextEASSlixIso15693(const uint8_t *password) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); @@ -3083,7 +3083,7 @@ void PassProtextEASSlixIso15693(uint8_t *password) { reply_ng(CMD_HF_ISO15693_SLIX_PASS_PROTECT_EAS, res, NULL, 0); switch_off(); } -void PassProtectAFISlixIso15693(uint8_t *password) { +void PassProtectAFISlixIso15693(const uint8_t *password) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); @@ -3093,7 +3093,7 @@ void PassProtectAFISlixIso15693(uint8_t *password) { switch_off(); } -void WriteAFIIso15693(uint8_t *password, bool use_pwd, uint8_t *uid, bool use_uid, uint8_t afi) { +void WriteAFIIso15693(const uint8_t *password, bool use_pwd, uint8_t *uid, bool use_uid, uint8_t afi) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); diff --git a/armsrc/iso15693.h b/armsrc/iso15693.h index 4644adea9..8a9e2fe82 100644 --- a/armsrc/iso15693.h +++ b/armsrc/iso15693.h @@ -60,12 +60,12 @@ int SendDataTagEOF(uint8_t *recv, uint16_t max_recv_len, uint32_t start_time, ui void SetTag15693Uid(const uint8_t *uid); -void WritePasswordSlixIso15693(uint8_t *old_password, uint8_t *new_password, uint8_t pwd_id); -void DisablePrivacySlixIso15693(uint8_t *password); -void EnablePrivacySlixIso15693(uint8_t *password); -void DisableEAS_AFISlixIso15693(uint8_t *password, bool usepwd); -void EnableEAS_AFISlixIso15693(uint8_t *password, bool usepwd); -void PassProtextEASSlixIso15693(uint8_t *password); -void PassProtectAFISlixIso15693(uint8_t *password); -void WriteAFIIso15693(uint8_t *password, bool usepwd, uint8_t *uid, bool use_uid, uint8_t afi); +void WritePasswordSlixIso15693(const uint8_t *old_password, const uint8_t *new_password, uint8_t pwd_id); +void DisablePrivacySlixIso15693(const uint8_t *password); +void EnablePrivacySlixIso15693(const uint8_t *password); +void DisableEAS_AFISlixIso15693(const uint8_t *password, bool usepwd); +void EnableEAS_AFISlixIso15693(const uint8_t *password, bool usepwd); +void PassProtextEASSlixIso15693(const uint8_t *password); +void PassProtectAFISlixIso15693(const uint8_t *password); +void WriteAFIIso15693(const uint8_t *password, bool usepwd, uint8_t *uid, bool use_uid, uint8_t afi); #endif From d78dae5904e0f4d59b69c466ef9ea01fb9898997 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 22:50:25 -0700 Subject: [PATCH 0391/1034] more const for `legicrf` and the disabled LCD code --- armsrc/LCD_disabled.c | 2 +- armsrc/LCD_disabled.h | 2 +- armsrc/legicrf.c | 2 +- armsrc/legicrf.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/armsrc/LCD_disabled.c b/armsrc/LCD_disabled.c index 1a4b253e2..67b0f3de9 100644 --- a/armsrc/LCD_disabled.c +++ b/armsrc/LCD_disabled.c @@ -53,7 +53,7 @@ void LCDFill(unsigned char xs, unsigned char ys, unsigned char width, unsigned c } } -void LCDString(char *lcd_string, const char *font_style, unsigned char x, unsigned char y, unsigned char fcolor, unsigned char bcolor) { +void LCDString(const char *lcd_string, const char *font_style, unsigned char x, unsigned char y, unsigned char fcolor, unsigned char bcolor) { unsigned int i; unsigned char mask = 0, px, py, xme, yme, offset; const char *data; diff --git a/armsrc/LCD_disabled.h b/armsrc/LCD_disabled.h index e2f57e02c..26900531a 100644 --- a/armsrc/LCD_disabled.h +++ b/armsrc/LCD_disabled.h @@ -130,7 +130,7 @@ void LCDInit(void); void LCDReset(void); void LCDSetXY(unsigned char x, unsigned char y); void LCDSetPixel(unsigned char x, unsigned char y, unsigned char color); -void LCDString(char *lcd_string, const char *font_style, unsigned char x, unsigned char y, unsigned char fcolor, unsigned char bcolor); +void LCDString(const char *lcd_string, const char *font_style, unsigned char x, unsigned char y, unsigned char fcolor, unsigned char bcolor); void LCDFill(unsigned char xs, unsigned char ys, unsigned char width, unsigned char height, unsigned char color); #endif diff --git a/armsrc/legicrf.c b/armsrc/legicrf.c index c6af0dace..42d511875 100644 --- a/armsrc/legicrf.c +++ b/armsrc/legicrf.c @@ -528,7 +528,7 @@ OUT: StopTicks(); } -void LegicRfWriter(uint16_t offset, uint16_t len, uint8_t iv, uint8_t *data) { +void LegicRfWriter(uint16_t offset, uint16_t len, uint8_t iv, const uint8_t *data) { // configure ARM and FPGA init_reader(); diff --git a/armsrc/legicrf.h b/armsrc/legicrf.h index 670688aab..02f20b536 100644 --- a/armsrc/legicrf.h +++ b/armsrc/legicrf.h @@ -25,7 +25,7 @@ void LegicRfInfo(void); int LegicRfReaderEx(uint16_t offset, uint16_t len, uint8_t iv); void LegicRfReader(uint16_t offset, uint16_t len, uint8_t iv); -void LegicRfWriter(uint16_t offset, uint16_t len, uint8_t iv, uint8_t *data); +void LegicRfWriter(uint16_t offset, uint16_t len, uint8_t iv, const uint8_t *data); legic_card_select_t *getLegicCardInfo(void); #endif /* __LEGICRF_H */ From 665cf3254b8fc1e21dc6da8e80d17ef17432cbda Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 23:02:09 -0700 Subject: [PATCH 0392/1034] more const for `lfops` and some `commonutil` --- armsrc/lfops.c | 12 ++++++------ armsrc/lfops.h | 10 +++++----- common/commonutil.c | 10 +++++----- common/commonutil.h | 6 +++--- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/armsrc/lfops.c b/armsrc/lfops.c index c130d78e8..ed2a29378 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -287,7 +287,7 @@ void printT55xxConfig(void) { DbpString(""); } -void setT55xxConfig(uint8_t arg0, t55xx_configurations_t *c) { +void setT55xxConfig(uint8_t arg0, const t55xx_configurations_t *c) { for (uint8_t i = 0; i < 4; i++) { if (c->m[i].start_gap != 0) T55xx_Timing.m[i].start_gap = c->m[i].start_gap; @@ -1009,7 +1009,7 @@ void CmdHIDsimTAG(uint32_t hi2, uint32_t hi, uint32_t lo, uint8_t longFMT, bool // prepare a waveform pattern in the buffer based on the ID given then // simulate a FSK tag until the button is pressed // arg1 contains fcHigh and fcLow, arg2 contains STT marker and clock -void CmdFSKsimTAGEx(uint8_t fchigh, uint8_t fclow, uint8_t separator, uint8_t clk, uint16_t bitslen, uint8_t *bits, bool ledcontrol, int numcycles) { +void CmdFSKsimTAGEx(uint8_t fchigh, uint8_t fclow, uint8_t separator, uint8_t clk, uint16_t bitslen, const uint8_t *bits, bool ledcontrol, int numcycles) { FpgaDownloadAndGo(FPGA_BITSTREAM_LF); @@ -1045,7 +1045,7 @@ void CmdFSKsimTAGEx(uint8_t fchigh, uint8_t fclow, uint8_t separator, uint8_t cl // prepare a waveform pattern in the buffer based on the ID given then // simulate a FSK tag until the button is pressed // arg1 contains fcHigh and fcLow, arg2 contains STT marker and clock -void CmdFSKsimTAG(uint8_t fchigh, uint8_t fclow, uint8_t separator, uint8_t clk, uint16_t bitslen, uint8_t *bits, bool ledcontrol) { +void CmdFSKsimTAG(uint8_t fchigh, uint8_t fclow, uint8_t separator, uint8_t clk, uint16_t bitslen, const uint8_t *bits, bool ledcontrol) { CmdFSKsimTAGEx(fchigh, fclow, separator, clk, bitslen, bits, ledcontrol, -1); reply_ng(CMD_LF_FSK_SIMULATE, PM3_EOPABORTED, NULL, 0); } @@ -1866,9 +1866,9 @@ void T55xxResetRead(uint8_t flags, bool ledcontrol) { if (ledcontrol) LED_A_OFF(); } -void T55xxDangerousRawTest(uint8_t *data, bool ledcontrol) { +void T55xxDangerousRawTest(const uint8_t *data, bool ledcontrol) { // supports only default downlink mode - t55xx_test_block_t *c = (t55xx_test_block_t *)data; + const t55xx_test_block_t *c = (const t55xx_test_block_t *)data; uint8_t start_wait = 4; uint8_t bs[128 / 8]; @@ -2320,7 +2320,7 @@ void CopyHIDtoT55x7(uint32_t hi2, uint32_t hi, uint32_t lo, uint8_t longFMT, boo } // clone viking tag to T55xx -void CopyVikingtoT55xx(uint8_t *blocks, bool q5, bool em, bool ledcontrol) { +void CopyVikingtoT55xx(const uint8_t *blocks, bool q5, bool em, bool ledcontrol) { uint32_t data[] = {T55x7_BITRATE_RF_32 | T55x7_MODULATION_MANCHESTER | (2 << T55x7_MAXBLOCK_SHIFT), 0, 0}; if (q5) { diff --git a/armsrc/lfops.h b/armsrc/lfops.h index f1bc88b64..755afa88f 100644 --- a/armsrc/lfops.h +++ b/armsrc/lfops.h @@ -38,9 +38,9 @@ void CmdHIDsimTAGEx(uint32_t hi2, uint32_t hi, uint32_t lo, uint8_t longFMT, boo void CmdHIDsimTAG(uint32_t hi2, uint32_t hi, uint32_t lo, uint8_t longFMT, bool ledcontrol); void CmdFSKsimTAGEx(uint8_t fchigh, uint8_t fclow, uint8_t separator, uint8_t clk, uint16_t bitslen, - uint8_t *bits, bool ledcontrol, int numcycles); + const uint8_t *bits, bool ledcontrol, int numcycles); void CmdFSKsimTAG(uint8_t fchigh, uint8_t fclow, uint8_t separator, uint8_t clk, uint16_t bitslen, - uint8_t *bits, bool ledcontrol); + const uint8_t *bits, bool ledcontrol); void CmdASKsimTAG(uint8_t encoding, uint8_t invert, uint8_t separator, uint8_t clk, uint16_t size, const uint8_t *bits, bool ledcontrol); void CmdPSKsimTAG(uint8_t carrier, uint8_t invert, uint8_t clk, uint16_t size, @@ -54,7 +54,7 @@ int lf_em410x_watch(int findone, uint32_t *high, uint64_t *low, bool ledcontrol) int lf_io_watch(int findone, uint32_t *high, uint32_t *low, bool ledcontrol); void CopyHIDtoT55x7(uint32_t hi2, uint32_t hi, uint32_t lo, uint8_t longFMT, bool q5, bool em, bool ledcontrol); // Clone an HID card to T5557/T5567 -void CopyVikingtoT55xx(uint8_t *blocks, bool q5, bool em, bool ledcontrol); +void CopyVikingtoT55xx(const uint8_t *blocks, bool q5, bool em, bool ledcontrol); int copy_em410x_to_t55xx(uint8_t card, uint8_t clock, uint32_t id_hi, uint32_t id_lo, bool ledcontrol); @@ -66,7 +66,7 @@ void T55xxReadBlock(uint8_t page, bool pwd_mode, bool brute_mem, uint8_t block, uint8_t downlink_mode, bool ledcontrol); void T55xxWakeUp(uint32_t pwd, uint8_t flags, bool ledcontrol); void T55xx_ChkPwds(uint8_t flags, bool ledcontrol); -void T55xxDangerousRawTest(uint8_t *data, bool ledcontrol); +void T55xxDangerousRawTest(const uint8_t *data, bool ledcontrol); void turn_read_lf_on(uint32_t delay); void turn_read_lf_off(uint32_t delay); @@ -78,7 +78,7 @@ void EM4xWriteWord(uint8_t addr, uint32_t data, uint32_t pwd, uint8_t usepwd, bo void EM4xProtectWord(uint32_t data, uint32_t pwd, uint8_t usepwd, bool ledcontrol); void Cotag(uint32_t arg0, bool ledcontrol); -void setT55xxConfig(uint8_t arg0, t55xx_configurations_t *c); +void setT55xxConfig(uint8_t arg0, const t55xx_configurations_t *c); t55xx_configurations_t *getT55xxConfig(void); void printT55xxConfig(void); void loadT55xxConfig(void); diff --git a/common/commonutil.c b/common/commonutil.c index 07b55f1f9..6d57d90a9 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -23,8 +23,8 @@ * verifies the magic properties, then stores a formatted string, prefixed by * prefix in dst. */ -void FormatVersionInformation(char *dst, int len, const char *prefix, void *version_info) { - struct version_information_t *v = (struct version_information_t *)version_info; +void FormatVersionInformation(char *dst, int len, const char *prefix, const void *version_info) { + const struct version_information_t *v = (const struct version_information_t *)version_info; dst[0] = 0; strncat(dst, prefix, len - 1); if (v->magic != VERSION_INFORMATION_MAGIC) { @@ -53,8 +53,8 @@ void FormatVersionInformation(char *dst, int len, const char *prefix, void *vers strncat(dst, v->armsrc, len - strlen(dst) - 1); } -void format_version_information_short(char *dst, int len, void *version_info) { - struct version_information_t *v = (struct version_information_t *)version_info; +void format_version_information_short(char *dst, int len, const void *version_info) { + const struct version_information_t *v = (const struct version_information_t *)version_info; dst[0] = 0; if (v->magic != VERSION_INFORMATION_MAGIC) { strncat(dst, "Missing/Invalid version information", len - strlen(dst) - 1); @@ -151,7 +151,7 @@ void num_to_bytes(uint64_t n, size_t len, uint8_t *dest) { } } -uint64_t bytes_to_num(uint8_t *src, size_t len) { +uint64_t bytes_to_num(const uint8_t *src, size_t len) { uint64_t num = 0; while (len--) { num = (num << 8) | (*src); diff --git a/common/commonutil.h b/common/commonutil.h index 7beb95355..34daf65d2 100644 --- a/common/commonutil.h +++ b/common/commonutil.h @@ -50,8 +50,8 @@ #endif extern struct version_information_t g_version_information; -void FormatVersionInformation(char *dst, int len, const char *prefix, void *version_info); -void format_version_information_short(char *dst, int len, void *version_info); +void FormatVersionInformation(char *dst, int len, const char *prefix, const void *version_info); +void format_version_information_short(char *dst, int len, const void *version_info); uint32_t reflect(uint32_t v, int b); // used in crc.c ... uint8_t reflect8(uint8_t b); // dedicated 8bit reversal @@ -59,7 +59,7 @@ uint16_t reflect16(uint16_t b); // dedicated 16bit reversal uint32_t reflect32(uint32_t b); // dedicated 32bit reversal void num_to_bytes(uint64_t n, size_t len, uint8_t *dest); -uint64_t bytes_to_num(uint8_t *src, size_t len); +uint64_t bytes_to_num(const uint8_t *src, size_t len); // LE and BE to/from memory uint16_t MemLeToUint2byte(const uint8_t *data); From 78262139ece75b6fb0f29a0302f500f848830b1f Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 23:07:19 -0700 Subject: [PATCH 0393/1034] more const for `lfsampling` and `lfzx` --- armsrc/lfsampling.c | 2 +- armsrc/lfsampling.h | 2 +- armsrc/lfzx.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/armsrc/lfsampling.c b/armsrc/lfsampling.c index a56e013ee..6c131e7f3 100644 --- a/armsrc/lfsampling.c +++ b/armsrc/lfsampling.c @@ -94,7 +94,7 @@ void setDefaultSamplingConfig(void) { * @brief setSamplingConfig * @param sc */ -void setSamplingConfig(sample_config *sc) { +void setSamplingConfig(const sample_config *sc) { // decimation (1-8) how many bits of adc sample value to save if (sc->decimation > 0 && sc->decimation < 9) diff --git a/armsrc/lfsampling.h b/armsrc/lfsampling.h index 11c03ca74..8a8e40868 100644 --- a/armsrc/lfsampling.h +++ b/armsrc/lfsampling.h @@ -110,7 +110,7 @@ void LFSetupFPGAForADC(int divisor, bool reader_field); * @brief setSamplingConfig * @param sc */ -void setSamplingConfig(sample_config *sc); +void setSamplingConfig(const sample_config *sc); void setDefaultSamplingConfig(void); sample_config *getSamplingConfig(void); diff --git a/armsrc/lfzx.c b/armsrc/lfzx.c index be09247ca..f086c2d71 100644 --- a/armsrc/lfzx.c +++ b/armsrc/lfzx.c @@ -115,7 +115,7 @@ static void zx8211_setup_read(void) { WDT_HIT(); } -static void zx_send(uint8_t *cmd, uint8_t clen) { +static void zx_send(const uint8_t *cmd, uint8_t clen) { if (clen == 0) return; From 8ae97d10944a1fb5b50e78dfe4f5c9a80ae2f23b Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 15 Aug 2023 09:31:00 +0200 Subject: [PATCH 0394/1034] Vocabulary file became appended to itself Remove duplicated data --- client/src/pm3line_vocabulary.h | 813 -------------------------------- 1 file changed, 813 deletions(-) diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index 96fb95dc5..0f617ef0d 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -811,817 +811,4 @@ const static vocabulary_t vocabulary[] = { } #endif -#endif//----------------------------------------------------------------------------- -// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// See LICENSE.txt for the text of the license. -//----------------------------------------------------------------------------- -// readline auto complete utilities -//----------------------------------------------------------------------------- - -#ifndef PM3LINE_VOCABULORY_H__ -#define PM3LINE_VOCABULORY_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -typedef struct vocabulory_s { - bool offline; - const char *name; -} vocabulory_t; - -const static vocabulory_t vocabulory[] = { - { 1, "help" }, - { 0, "auto" }, - { 1, "clear" }, - { 1, "hints" }, - { 1, "msleep" }, - { 1, "rem" }, - { 1, "quit" }, - { 1, "exit" }, - { 1, "prefs help" }, - { 1, "prefs show" }, - { 1, "prefs get barmode" }, - { 1, "prefs get clientdebug" }, - { 1, "prefs get clientdelay" }, - { 1, "prefs get color" }, - { 1, "prefs get savepaths" }, - { 1, "prefs get emoji" }, - { 1, "prefs get hints" }, - { 1, "prefs get output" }, - { 1, "prefs get plotsliders" }, - { 1, "prefs set help" }, - { 1, "prefs set barmode" }, - { 1, "prefs set clientdebug" }, - { 1, "prefs set clientdelay" }, - { 1, "prefs set color" }, - { 1, "prefs set emoji" }, - { 1, "prefs set hints" }, - { 1, "prefs set savepaths" }, - { 1, "prefs set output" }, - { 1, "prefs set plotsliders" }, - { 1, "analyse help" }, - { 1, "analyse lcr" }, - { 1, "analyse crc" }, - { 1, "analyse chksum" }, - { 1, "analyse dates" }, - { 1, "analyse lfsr" }, - { 1, "analyse a" }, - { 1, "analyse nuid" }, - { 1, "analyse demodbuff" }, - { 1, "analyse freq" }, - { 1, "analyse foo" }, - { 1, "analyse units" }, - { 1, "data help" }, - { 1, "data biphaserawdecode" }, - { 1, "data detectclock" }, - { 1, "data fsktonrz" }, - { 1, "data manrawdecode" }, - { 1, "data modulation" }, - { 1, "data rawdemod" }, - { 1, "data askedgedetect" }, - { 1, "data autocorr" }, - { 1, "data dirthreshold" }, - { 1, "data decimate" }, - { 1, "data envelope" }, - { 1, "data undecimate" }, - { 1, "data hide" }, - { 1, "data hpf" }, - { 1, "data iir" }, - { 1, "data grid" }, - { 1, "data ltrim" }, - { 1, "data mtrim" }, - { 1, "data norm" }, - { 1, "data plot" }, - { 1, "data cthreshold" }, - { 1, "data rtrim" }, - { 1, "data setgraphmarkers" }, - { 1, "data shiftgraphzero" }, - { 1, "data timescale" }, - { 1, "data zerocrossings" }, - { 1, "data convertbitstream" }, - { 1, "data getbitstream" }, - { 1, "data asn1" }, - { 1, "data atr" }, - { 1, "data bin2hex" }, - { 0, "data bitsamples" }, - { 1, "data clear" }, - { 1, "data diff" }, - { 0, "data hexsamples" }, - { 1, "data hex2bin" }, - { 1, "data load" }, - { 1, "data num" }, - { 1, "data print" }, - { 0, "data samples" }, - { 1, "data save" }, - { 1, "data setdebugmode" }, - { 0, "data tune" }, - { 1, "emv help" }, - { 1, "emv list" }, - { 1, "emv test" }, - { 0, "emv challenge" }, - { 0, "emv exec" }, - { 0, "emv genac" }, - { 0, "emv gpo" }, - { 0, "emv intauth" }, - { 0, "emv pse" }, - { 0, "emv reader" }, - { 0, "emv readrec" }, - { 0, "emv roca" }, - { 0, "emv scan" }, - { 0, "emv search" }, - { 0, "emv select" }, - { 1, "hf help" }, - { 1, "hf list" }, - { 0, "hf plot" }, - { 0, "hf tune" }, - { 1, "hf search" }, - { 0, "hf sniff" }, - { 1, "hf 14a help" }, - { 1, "hf 14a list" }, - { 0, "hf 14a antifuzz" }, - { 0, "hf 14a config" }, - { 0, "hf 14a cuids" }, - { 0, "hf 14a info" }, - { 0, "hf 14a sim" }, - { 0, "hf 14a sniff" }, - { 0, "hf 14a raw" }, - { 0, "hf 14a reader" }, - { 0, "hf 14a apdu" }, - { 0, "hf 14a apdufind" }, - { 0, "hf 14a chaining" }, - { 0, "hf 14a ndefformat" }, - { 0, "hf 14a ndefread" }, - { 0, "hf 14a ndefwrite" }, - { 1, "hf 14b help" }, - { 0, "hf 14b apdu" }, - { 0, "hf 14b dump" }, - { 0, "hf 14b info" }, - { 1, "hf 14b list" }, - { 0, "hf 14b ndefread" }, - { 0, "hf 14b raw" }, - { 0, "hf 14b reader" }, - { 0, "hf 14b sim" }, - { 0, "hf 14b sniff" }, - { 0, "hf 14b rdbl" }, - { 0, "hf 14b sriwrite" }, - { 1, "hf 14b view" }, - { 1, "hf 15 help" }, - { 1, "hf 15 list" }, - { 1, "hf 15 demod" }, - { 0, "hf 15 dump" }, - { 0, "hf 15 info" }, - { 0, "hf 15 sniff" }, - { 0, "hf 15 raw" }, - { 0, "hf 15 rdbl" }, - { 0, "hf 15 rdmulti" }, - { 0, "hf 15 reader" }, - { 0, "hf 15 restore" }, - { 0, "hf 15 samples" }, - { 1, "hf 15 view" }, - { 0, "hf 15 wrbl" }, - { 0, "hf 15 sim" }, - { 0, "hf 15 eload" }, - { 0, "hf 15 esave" }, - { 0, "hf 15 eview" }, - { 0, "hf 15 slixwritepwd" }, - { 0, "hf 15 slixeasdisable" }, - { 0, "hf 15 slixeasenable" }, - { 0, "hf 15 slixprivacydisable" }, - { 0, "hf 15 slixprivacyenable" }, - { 0, "hf 15 passprotectafi" }, - { 0, "hf 15 passprotecteas" }, - { 0, "hf 15 findafi" }, - { 0, "hf 15 writeafi" }, - { 0, "hf 15 writedsfid" }, - { 0, "hf 15 csetuid" }, - { 1, "hf cipurse help" }, - { 0, "hf cipurse info" }, - { 0, "hf cipurse select" }, - { 0, "hf cipurse auth" }, - { 0, "hf cipurse read" }, - { 0, "hf cipurse write" }, - { 0, "hf cipurse aread" }, - { 0, "hf cipurse awrite" }, - { 0, "hf cipurse formatall" }, - { 0, "hf cipurse create" }, - { 0, "hf cipurse delete" }, - { 0, "hf cipurse updkey" }, - { 0, "hf cipurse updakey" }, - { 0, "hf cipurse default" }, - { 1, "hf cipurse test" }, - { 1, "hf epa help" }, - { 0, "hf epa cnonces" }, - { 0, "hf epa replay" }, - { 0, "hf epa sim" }, - { 1, "hf emrtd help" }, - { 0, "hf emrtd dump" }, - { 1, "hf emrtd info" }, - { 1, "hf emrtd list" }, - { 1, "hf felica help" }, - { 1, "hf felica list" }, - { 0, "hf felica reader" }, - { 0, "hf felica info" }, - { 0, "hf felica sniff" }, - { 0, "hf felica raw" }, - { 0, "hf felica rdbl" }, - { 0, "hf felica wrbl" }, - { 0, "hf felica rqservice" }, - { 0, "hf felica rqresponse" }, - { 0, "hf felica scsvcode" }, - { 0, "hf felica rqsyscode" }, - { 0, "hf felica auth1" }, - { 0, "hf felica auth2" }, - { 0, "hf felica rqspecver" }, - { 0, "hf felica resetmode" }, - { 0, "hf felica litesim" }, - { 0, "hf felica litedump" }, - { 1, "hf fido help" }, - { 1, "hf fido list" }, - { 0, "hf fido info" }, - { 0, "hf fido reg" }, - { 0, "hf fido auth" }, - { 0, "hf fido make" }, - { 0, "hf fido assert" }, - { 1, "hf fudan help" }, - { 0, "hf fudan reader" }, - { 0, "hf fudan dump" }, - { 0, "hf fudan rdbl" }, - { 1, "hf fudan view" }, - { 0, "hf fudan wrbl" }, - { 1, "hf gallagher help" }, - { 0, "hf gallagher reader" }, - { 0, "hf gallagher clone" }, - { 0, "hf gallagher delete" }, - { 1, "hf gallagher diversifykey" }, - { 1, "hf gallagher decode" }, - { 1, "hf ksx6924 help" }, - { 0, "hf ksx6924 select" }, - { 0, "hf ksx6924 info" }, - { 0, "hf ksx6924 balance" }, - { 0, "hf ksx6924 init" }, - { 0, "hf ksx6924 prec" }, - { 1, "hf jooki help" }, - { 0, "hf jooki clone" }, - { 1, "hf jooki decode" }, - { 1, "hf jooki encode" }, - { 0, "hf jooki sim" }, - { 1, "hf iclass help" }, - { 1, "hf iclass list" }, - { 0, "hf iclass dump" }, - { 1, "hf iclass info" }, - { 0, "hf iclass rdbl" }, - { 0, "hf iclass reader" }, - { 0, "hf iclass restore" }, - { 0, "hf iclass sniff" }, - { 1, "hf iclass view" }, - { 0, "hf iclass wrbl" }, - { 0, "hf iclass chk" }, - { 1, "hf iclass loclass" }, - { 1, "hf iclass lookup" }, - { 0, "hf iclass sim" }, - { 0, "hf iclass eload" }, - { 0, "hf iclass esave" }, - { 0, "hf iclass eview" }, - { 1, "hf iclass configcard" }, - { 1, "hf iclass calcnewkey" }, - { 1, "hf iclass encode" }, - { 1, "hf iclass encrypt" }, - { 1, "hf iclass decrypt" }, - { 1, "hf iclass managekeys" }, - { 1, "hf iclass permutekey" }, - { 0, "hf iclass sam" }, - { 1, "hf legic help" }, - { 0, "hf legic dump" }, - { 0, "hf legic info" }, - { 1, "hf legic list" }, - { 0, "hf legic rdbl" }, - { 0, "hf legic reader" }, - { 0, "hf legic restore" }, - { 0, "hf legic wipe" }, - { 0, "hf legic wrbl" }, - { 0, "hf legic sim" }, - { 0, "hf legic eload" }, - { 0, "hf legic esave" }, - { 0, "hf legic eview" }, - { 0, "hf legic einfo" }, - { 1, "hf legic crc" }, - { 1, "hf legic view" }, - { 1, "hf lto help" }, - { 0, "hf lto dump" }, - { 0, "hf lto info" }, - { 1, "hf lto list" }, - { 0, "hf lto rdbl" }, - { 0, "hf lto reader" }, - { 0, "hf lto restore" }, - { 0, "hf lto wrbl" }, - { 1, "hf mf help" }, - { 1, "hf mf list" }, - { 0, "hf mf darkside" }, - { 0, "hf mf nested" }, - { 1, "hf mf hardnested" }, - { 0, "hf mf staticnested" }, - { 0, "hf mf autopwn" }, - { 0, "hf mf nack" }, - { 0, "hf mf chk" }, - { 0, "hf mf fchk" }, - { 1, "hf mf decrypt" }, - { 0, "hf mf supercard" }, - { 0, "hf mf auth4" }, - { 1, "hf mf acl" }, - { 0, "hf mf dump" }, - { 1, "hf mf mad" }, - { 0, "hf mf personalize" }, - { 0, "hf mf rdbl" }, - { 0, "hf mf rdsc" }, - { 0, "hf mf restore" }, - { 0, "hf mf setmod" }, - { 1, "hf mf value" }, - { 1, "hf mf view" }, - { 0, "hf mf wipe" }, - { 0, "hf mf wrbl" }, - { 0, "hf mf sim" }, - { 0, "hf mf ecfill" }, - { 0, "hf mf eclr" }, - { 0, "hf mf egetblk" }, - { 0, "hf mf egetsc" }, - { 0, "hf mf ekeyprn" }, - { 0, "hf mf eload" }, - { 0, "hf mf esave" }, - { 0, "hf mf esetblk" }, - { 0, "hf mf eview" }, - { 0, "hf mf cgetblk" }, - { 0, "hf mf cgetsc" }, - { 0, "hf mf cload" }, - { 0, "hf mf csave" }, - { 0, "hf mf csetblk" }, - { 0, "hf mf csetuid" }, - { 0, "hf mf cview" }, - { 0, "hf mf cwipe" }, - { 0, "hf mf gen3uid" }, - { 0, "hf mf gen3blk" }, - { 0, "hf mf gen3freeze" }, - { 0, "hf mf ggetblk" }, - { 0, "hf mf gload" }, - { 0, "hf mf gsave" }, - { 0, "hf mf gsetblk" }, - { 0, "hf mf gview" }, - { 0, "hf mf gdmcfg" }, - { 0, "hf mf gdmsetcfg" }, - { 0, "hf mf gdmsetblk" }, - { 0, "hf mf ndefformat" }, - { 0, "hf mf ndefread" }, - { 0, "hf mf ndefwrite" }, - { 1, "hf mfp help" }, - { 1, "hf mfp list" }, - { 0, "hf mfp auth" }, - { 0, "hf mfp chk" }, - { 0, "hf mfp dump" }, - { 0, "hf mfp info" }, - { 0, "hf mfp mad" }, - { 0, "hf mfp rdbl" }, - { 0, "hf mfp rdsc" }, - { 0, "hf mfp wrbl" }, - { 0, "hf mfp commitp" }, - { 0, "hf mfp initp" }, - { 0, "hf mfp wrp" }, - { 0, "hf mfp ndefformat" }, - { 0, "hf mfp ndefread" }, - { 0, "hf mfp ndefwrite" }, - { 1, "hf mfu help" }, - { 1, "hf mfu list" }, - { 1, "hf mfu keygen" }, - { 1, "hf mfu pwdgen" }, - { 0, "hf mfu otptear" }, - { 0, "hf mfu cauth" }, - { 0, "hf mfu dump" }, - { 0, "hf mfu info" }, - { 0, "hf mfu ndefread" }, - { 0, "hf mfu rdbl" }, - { 0, "hf mfu restore" }, - { 1, "hf mfu view" }, - { 0, "hf mfu wrbl" }, - { 0, "hf mfu tamper" }, - { 0, "hf mfu eload" }, - { 0, "hf mfu esave" }, - { 0, "hf mfu eview" }, - { 0, "hf mfu sim" }, - { 0, "hf mfu setpwd" }, - { 0, "hf mfu setuid" }, - { 1, "hf mfdes help" }, - { 0, "hf mfdes info" }, - { 0, "hf mfdes getuid" }, - { 0, "hf mfdes default" }, - { 0, "hf mfdes auth" }, - { 0, "hf mfdes chk" }, - { 0, "hf mfdes detect" }, - { 0, "hf mfdes freemem" }, - { 0, "hf mfdes setconfig" }, - { 0, "hf mfdes formatpicc" }, - { 1, "hf mfdes list" }, - { 0, "hf mfdes mad" }, - { 0, "hf mfdes lsapp" }, - { 0, "hf mfdes getaids" }, - { 0, "hf mfdes getappnames" }, - { 0, "hf mfdes bruteaid" }, - { 0, "hf mfdes createapp" }, - { 0, "hf mfdes deleteapp" }, - { 0, "hf mfdes selectapp" }, - { 0, "hf mfdes changekey" }, - { 0, "hf mfdes chkeysettings" }, - { 0, "hf mfdes getkeysettings" }, - { 0, "hf mfdes getkeyversions" }, - { 0, "hf mfdes getfileids" }, - { 0, "hf mfdes getfileisoids" }, - { 0, "hf mfdes lsfiles" }, - { 0, "hf mfdes dump" }, - { 0, "hf mfdes createfile" }, - { 0, "hf mfdes createvaluefile" }, - { 0, "hf mfdes createrecordfile" }, - { 0, "hf mfdes createmacfile" }, - { 0, "hf mfdes deletefile" }, - { 0, "hf mfdes getfilesettings" }, - { 0, "hf mfdes chfilesettings" }, - { 0, "hf mfdes read" }, - { 0, "hf mfdes write" }, - { 0, "hf mfdes value" }, - { 0, "hf mfdes clearrecfile" }, - { 1, "hf mfdes test" }, - { 1, "hf ntag424 help" }, - { 0, "hf ntag424 info" }, - { 0, "hf ntag424 sdm" }, - { 1, "hf ntag424 view" }, - { 1, "hf seos help" }, - { 0, "hf seos info" }, - { 1, "hf seos list" }, - { 1, "hf st25ta help" }, - { 0, "hf st25ta info" }, - { 1, "hf st25ta list" }, - { 1, "hf st25ta ndefread" }, - { 0, "hf st25ta protect" }, - { 0, "hf st25ta pwd" }, - { 0, "hf st25ta sim" }, - { 1, "hf tesla help" }, - { 0, "hf tesla info" }, - { 1, "hf tesla list" }, - { 1, "hf texkom help" }, - { 0, "hf texkom reader" }, - { 0, "hf texkom sim" }, - { 1, "hf thinfilm help" }, - { 0, "hf thinfilm info" }, - { 1, "hf thinfilm list" }, - { 0, "hf thinfilm sim" }, - { 1, "hf topaz help" }, - { 1, "hf topaz list" }, - { 0, "hf topaz dump" }, - { 0, "hf topaz info" }, - { 0, "hf topaz raw" }, - { 0, "hf topaz rdbl" }, - { 0, "hf topaz reader" }, - { 0, "hf topaz sim" }, - { 0, "hf topaz sniff" }, - { 1, "hf topaz view" }, - { 0, "hf topaz wrbl" }, - { 1, "hf vas help" }, - { 0, "hf vas reader" }, - { 1, "hf vas decrypt" }, - { 1, "hf waveshare help" }, - { 0, "hf waveshare loadbmp" }, - { 1, "hf xerox help" }, - { 0, "hf xerox info" }, - { 0, "hf xerox reader" }, - { 0, "hf xerox dump" }, - { 1, "hw help" }, - { 0, "hw break" }, - { 1, "hw connect" }, - { 0, "hw dbg" }, - { 0, "hw detectreader" }, - { 0, "hw fpgaoff" }, - { 0, "hw lcd" }, - { 0, "hw lcdreset" }, - { 0, "hw ping" }, - { 0, "hw readmem" }, - { 0, "hw reset" }, - { 0, "hw setlfdivisor" }, - { 0, "hw setmux" }, - { 0, "hw standalone" }, - { 0, "hw status" }, - { 0, "hw tearoff" }, - { 0, "hw tia" }, - { 1, "hw timeout" }, - { 0, "hw tune" }, - { 1, "hw version" }, - { 1, "lf help" }, - { 0, "lf config" }, - { 0, "lf cmdread" }, - { 0, "lf read" }, - { 1, "lf search" }, - { 0, "lf sim" }, - { 0, "lf simask" }, - { 0, "lf simfsk" }, - { 0, "lf simpsk" }, - { 0, "lf simbidir" }, - { 0, "lf sniff" }, - { 0, "lf tune" }, - { 1, "lf awid help" }, - { 1, "lf awid demod" }, - { 0, "lf awid reader" }, - { 0, "lf awid clone" }, - { 0, "lf awid sim" }, - { 0, "lf awid brute" }, - { 0, "lf awid watch" }, - { 1, "lf cotag help" }, - { 1, "lf cotag demod" }, - { 0, "lf cotag reader" }, - { 1, "lf destron help" }, - { 1, "lf destron demod" }, - { 0, "lf destron reader" }, - { 0, "lf destron clone" }, - { 0, "lf destron sim" }, - { 1, "lf em help" }, - { 1, "lf em 410x help" }, - { 1, "lf em 410x demod" }, - { 0, "lf em 410x reader" }, - { 0, "lf em 410x sim" }, - { 0, "lf em 410x brute" }, - { 0, "lf em 410x watch" }, - { 0, "lf em 410x spoof" }, - { 0, "lf em 410x clone" }, - { 1, "lf em 4x05 help" }, - { 0, "lf em 4x05 brute" }, - { 0, "lf em 4x05 chk" }, - { 1, "lf em 4x05 demod" }, - { 0, "lf em 4x05 dump" }, - { 0, "lf em 4x05 info" }, - { 0, "lf em 4x05 read" }, - { 1, "lf em 4x05 sniff" }, - { 0, "lf em 4x05 unlock" }, - { 0, "lf em 4x05 wipe" }, - { 0, "lf em 4x05 write" }, - { 1, "lf em 4x50 help" }, - { 0, "lf em 4x50 brute" }, - { 0, "lf em 4x50 chk" }, - { 0, "lf em 4x50 dump" }, - { 0, "lf em 4x50 info" }, - { 0, "lf em 4x50 login" }, - { 0, "lf em 4x50 rdbl" }, - { 0, "lf em 4x50 reader" }, - { 0, "lf em 4x50 restore" }, - { 0, "lf em 4x50 wrbl" }, - { 0, "lf em 4x50 wrpwd" }, - { 0, "lf em 4x50 wipe" }, - { 0, "lf em 4x50 eload" }, - { 0, "lf em 4x50 esave" }, - { 0, "lf em 4x50 eview" }, - { 0, "lf em 4x50 sim" }, - { 1, "lf em 4x70 help" }, - { 0, "lf em 4x70 brute" }, - { 0, "lf em 4x70 info" }, - { 0, "lf em 4x70 write" }, - { 0, "lf em 4x70 unlock" }, - { 0, "lf em 4x70 auth" }, - { 0, "lf em 4x70 writepin" }, - { 0, "lf em 4x70 writekey" }, - { 1, "lf fdxb help" }, - { 1, "lf fdxb demod" }, - { 0, "lf fdxb reader" }, - { 0, "lf fdxb clone" }, - { 0, "lf fdxb sim" }, - { 1, "lf gallagher help" }, - { 1, "lf gallagher demod" }, - { 0, "lf gallagher reader" }, - { 0, "lf gallagher clone" }, - { 0, "lf gallagher sim" }, - { 1, "lf gproxii help" }, - { 1, "lf gproxii demod" }, - { 0, "lf gproxii reader" }, - { 0, "lf gproxii clone" }, - { 0, "lf gproxii sim" }, - { 1, "lf hid help" }, - { 1, "lf hid demod" }, - { 0, "lf hid reader" }, - { 0, "lf hid clone" }, - { 0, "lf hid sim" }, - { 0, "lf hid brute" }, - { 0, "lf hid watch" }, - { 1, "lf hitag help" }, - { 1, "lf hitag list" }, - { 0, "lf hitag info" }, - { 0, "lf hitag dump" }, - { 0, "lf hitag read" }, - { 0, "lf hitag wrbl" }, - { 0, "lf hitag sniff" }, - { 0, "lf hitag cc" }, - { 0, "lf hitag ta" }, - { 0, "lf hitag eload" }, - { 0, "lf hitag sim" }, - { 1, "lf idteck help" }, - { 1, "lf idteck demod" }, - { 0, "lf idteck reader" }, - { 0, "lf idteck clone" }, - { 0, "lf idteck sim" }, - { 1, "lf indala help" }, - { 0, "lf indala brute" }, - { 1, "lf indala demod" }, - { 1, "lf indala altdemod" }, - { 0, "lf indala reader" }, - { 0, "lf indala clone" }, - { 0, "lf indala sim" }, - { 1, "lf io help" }, - { 1, "lf io demod" }, - { 0, "lf io reader" }, - { 0, "lf io clone" }, - { 0, "lf io sim" }, - { 0, "lf io watch" }, - { 1, "lf jablotron help" }, - { 1, "lf jablotron demod" }, - { 0, "lf jablotron reader" }, - { 0, "lf jablotron clone" }, - { 0, "lf jablotron sim" }, - { 1, "lf keri help" }, - { 1, "lf keri demod" }, - { 0, "lf keri reader" }, - { 0, "lf keri clone" }, - { 0, "lf keri sim" }, - { 1, "lf motorola help" }, - { 1, "lf motorola demod" }, - { 0, "lf motorola reader" }, - { 0, "lf motorola clone" }, - { 0, "lf motorola sim" }, - { 1, "lf nedap help" }, - { 1, "lf nedap demod" }, - { 0, "lf nedap reader" }, - { 0, "lf nedap clone" }, - { 0, "lf nedap sim" }, - { 1, "lf nexwatch help" }, - { 1, "lf nexwatch demod" }, - { 0, "lf nexwatch reader" }, - { 0, "lf nexwatch clone" }, - { 0, "lf nexwatch sim" }, - { 1, "lf noralsy help" }, - { 1, "lf noralsy demod" }, - { 0, "lf noralsy reader" }, - { 0, "lf noralsy clone" }, - { 0, "lf noralsy sim" }, - { 1, "lf pac help" }, - { 1, "lf pac demod" }, - { 0, "lf pac reader" }, - { 0, "lf pac clone" }, - { 0, "lf pac sim" }, - { 1, "lf paradox help" }, - { 1, "lf paradox demod" }, - { 0, "lf paradox reader" }, - { 0, "lf paradox clone" }, - { 0, "lf paradox sim" }, - { 1, "lf pcf7931 help" }, - { 0, "lf pcf7931 reader" }, - { 0, "lf pcf7931 write" }, - { 1, "lf pcf7931 config" }, - { 1, "lf presco help" }, - { 1, "lf presco demod" }, - { 0, "lf presco reader" }, - { 0, "lf presco clone" }, - { 0, "lf presco sim" }, - { 1, "lf pyramid help" }, - { 1, "lf pyramid demod" }, - { 0, "lf pyramid reader" }, - { 0, "lf pyramid clone" }, - { 0, "lf pyramid sim" }, - { 1, "lf securakey help" }, - { 1, "lf securakey demod" }, - { 0, "lf securakey reader" }, - { 0, "lf securakey clone" }, - { 0, "lf securakey sim" }, - { 1, "lf ti help" }, - { 1, "lf ti demod" }, - { 0, "lf ti reader" }, - { 0, "lf ti write" }, - { 1, "lf t55xx help" }, - { 0, "lf t55xx clonehelp" }, - { 1, "lf t55xx config" }, - { 0, "lf t55xx dangerraw" }, - { 1, "lf t55xx detect" }, - { 0, "lf t55xx deviceconfig" }, - { 0, "lf t55xx dump" }, - { 1, "lf t55xx info" }, - { 0, "lf t55xx p1detect" }, - { 0, "lf t55xx read" }, - { 0, "lf t55xx resetread" }, - { 0, "lf t55xx restore" }, - { 1, "lf t55xx trace" }, - { 0, "lf t55xx wakeup" }, - { 0, "lf t55xx write" }, - { 0, "lf t55xx bruteforce" }, - { 0, "lf t55xx chk" }, - { 0, "lf t55xx protect" }, - { 0, "lf t55xx recoverpw" }, - { 1, "lf t55xx sniff" }, - { 0, "lf t55xx special" }, - { 0, "lf t55xx wipe" }, - { 1, "lf viking help" }, - { 1, "lf viking demod" }, - { 0, "lf viking reader" }, - { 0, "lf viking clone" }, - { 0, "lf viking sim" }, - { 1, "lf visa2000 help" }, - { 1, "lf visa2000 demod" }, - { 0, "lf visa2000 reader" }, - { 0, "lf visa2000 clone" }, - { 0, "lf visa2000 sim" }, - { 1, "mem help" }, - { 0, "mem baudrate" }, - { 0, "mem dump" }, - { 0, "mem info" }, - { 0, "mem load" }, - { 0, "mem wipe" }, - { 1, "mem spiffs help" }, - { 0, "mem spiffs copy" }, - { 0, "mem spiffs check" }, - { 0, "mem spiffs dump" }, - { 0, "mem spiffs info" }, - { 0, "mem spiffs mount" }, - { 0, "mem spiffs remove" }, - { 0, "mem spiffs rename" }, - { 0, "mem spiffs test" }, - { 0, "mem spiffs tree" }, - { 0, "mem spiffs unmount" }, - { 0, "mem spiffs upload" }, - { 0, "mem spiffs view" }, - { 0, "mem spiffs wipe" }, - { 1, "nfc help" }, - { 1, "nfc decode" }, - { 0, "nfc type1 read" }, - { 1, "nfc type1 help" }, - { 0, "nfc type2 read" }, - { 1, "nfc type2 help" }, - { 0, "nfc type4a format" }, - { 0, "nfc type4a read" }, - { 0, "nfc type4a write" }, - { 0, "nfc type4a st25taread" }, - { 1, "nfc type4a help" }, - { 0, "nfc type4b read" }, - { 1, "nfc type4b help" }, - { 0, "nfc mf cformat" }, - { 0, "nfc mf cread" }, - { 0, "nfc mf cwrite" }, - { 0, "nfc mf pread" }, - { 1, "nfc mf help" }, - { 0, "nfc barcode read" }, - { 0, "nfc barcode sim" }, - { 1, "nfc barcode help" }, - { 1, "piv help" }, - { 0, "piv select" }, - { 0, "piv getdata" }, - { 0, "piv authsign" }, - { 0, "piv scan" }, - { 1, "piv list" }, - { 1, "smart help" }, - { 1, "smart list" }, - { 0, "smart info" }, - { 0, "smart reader" }, - { 0, "smart raw" }, - { 1, "smart upgrade" }, - { 0, "smart setclock" }, - { 0, "smart brute" }, - { 1, "script help" }, - { 1, "script list" }, - { 1, "script run" }, - { 1, "trace help" }, - { 1, "trace extract" }, - { 1, "trace list" }, - { 1, "trace load" }, - { 1, "trace save" }, - { 1, "usart help" }, - { 0, "usart btpin" }, - { 0, "usart btfactory" }, - { 0, "usart tx" }, - { 0, "usart rx" }, - { 0, "usart txrx" }, - { 0, "usart txhex" }, - { 0, "usart rxhex" }, - { 0, "usart config" }, - { 1, "wiegand help" }, - { 1, "wiegand list" }, - { 1, "wiegand encode" }, - { 1, "wiegand decode" }, - {0, NULL} -}; - -#ifdef __cplusplus -} -#endif - #endif \ No newline at end of file From 9a70bf1aecc9c7780a0e757442bd81eff40363e7 Mon Sep 17 00:00:00 2001 From: coderxian Date: Tue, 15 Aug 2023 17:16:17 -0500 Subject: [PATCH 0395/1034] Fixes issue 2076 --- client/src/cmdanalyse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdanalyse.c b/client/src/cmdanalyse.c index bab54f3da..d1e14d694 100644 --- a/client/src/cmdanalyse.c +++ b/client/src/cmdanalyse.c @@ -1117,7 +1117,7 @@ static int CmdAnalyseUnits(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "ETU to US conversions"); - float test_us = ETU_TO_US(1); + double test_us = ETU_TO_US(1); PrintAndLogEx(INFO, " 1 ETU = %3.2f US (expect 9.44) %s", test_us, (test_us == 9.44) ? _GREEN_("ok") : _RED_("fail")); test_us = ETU_TO_US(10); PrintAndLogEx(INFO, " 10 ETU = %4.2f US (expect 94.40) %s", test_us, (test_us == 94.40) ? _GREEN_("ok") : _RED_("fail")); From dfabad37d95dbd4c1a82fefbf41358380cf94c0d Mon Sep 17 00:00:00 2001 From: Roman D Date: Thu, 17 Aug 2023 12:41:34 +0200 Subject: [PATCH 0396/1034] Configurable number of CPU cores. --- client/src/proxmark3.c | 17 +++++++++++++++++ client/src/util.c | 6 ++++++ client/src/util.h | 1 + 3 files changed, 24 insertions(+) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index f6c25a9eb..26f4a5698 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -581,6 +581,7 @@ static void show_help(bool showFullHelp, char *exec_name) { PrintAndLogEx(NORMAL, " --unlock-bootloader Enable flashing of bootloader area *DANGEROUS* (need --flash)"); PrintAndLogEx(NORMAL, " --force Enable flashing even if firmware seems to not match client version"); PrintAndLogEx(NORMAL, " --image image to flash. Can be specified several times."); + PrintAndLogEx(NORMAL, " --ncpu override number of CPU cores"); PrintAndLogEx(NORMAL, "\nExamples:"); PrintAndLogEx(NORMAL, "\n to run Proxmark3 client:\n"); PrintAndLogEx(NORMAL, " %s "SERIAL_PORT_EXAMPLE_H" -- runs the pm3 client", exec_name); @@ -996,6 +997,22 @@ int main(int argc, char *argv[]) { continue; } + if (strcmp(argv[i], "--ncpu") == 0) { + if (i + 1 == argc) { + PrintAndLogEx(ERR, _RED_("ERROR:") " missing CPU number specification after --ncpu\n"); + show_help(false, exec_name); + return 1; + } + long int ncpus = strtol(argv[i + 1], NULL, 10); + if (ncpus < 0 || ncpus >= INT_MAX) { + PrintAndLogEx(ERR, _RED_("ERROR:") " invalid number of CPU cores: --ncpu " _YELLOW_("%s") "\n", argv[i + 1]); + return 1; + } + g_numCPUs = ncpus; + i++; + continue; + } + // We got an unknown parameter PrintAndLogEx(ERR, _RED_("ERROR:") " invalid parameter: " _YELLOW_("%s") "\n", argv[i]); show_help(false, exec_name); diff --git a/client/src/util.c b/client/src/util.c index 51408a524..150b042a5 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -40,6 +40,8 @@ uint8_t g_debugMode = 0; uint8_t g_printAndLog = PRINTANDLOG_PRINT | PRINTANDLOG_LOG; // global client tell if a pending prompt is present bool g_pendingPrompt = false; +// global CPU core count override +int g_numCPUs = 0; #ifdef _WIN32 #include @@ -1079,6 +1081,10 @@ uint64_t HornerScheme(uint64_t num, uint64_t divider, uint64_t factor) { // determine number of logical CPU cores (use for multithreaded functions) int num_CPUs(void) { + if (g_numCPUs > 0) { + return g_numCPUs; + } + #if defined(_WIN32) #include SYSTEM_INFO sysinfo; diff --git a/client/src/util.h b/client/src/util.h index 4dab9ae06..0712d8d18 100644 --- a/client/src/util.h +++ b/client/src/util.h @@ -32,6 +32,7 @@ extern uint8_t g_debugMode; extern uint8_t g_printAndLog; extern bool g_pendingPrompt; +extern int g_numCPUs; #define PRINTANDLOG_PRINT 1 #define PRINTANDLOG_LOG 2 From 20f89013683c923da331296481acb00022dedcec Mon Sep 17 00:00:00 2001 From: Roman D Date: Thu, 17 Aug 2023 12:43:08 +0200 Subject: [PATCH 0397/1034] Fix macports Makefile configuration. --- client/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/Makefile b/client/Makefile index 0444b5932..b63fdf329 100644 --- a/client/Makefile +++ b/client/Makefile @@ -40,7 +40,7 @@ ifeq ($(USE_BREW),1) PKG_CONFIG_ENV := PKG_CONFIG_PATH=$(BREW_PREFIX)/lib/pkgconfig:$(BREW_PREFIX)/opt/qt/lib/pkgconfig:$(BREW_PREFIX)/opt/qt5/lib/pkgconfig endif -ifdef ($(USE_MACPORTS),1) +ifeq ($(USE_MACPORTS),1) INCLUDES += -I$(MACPORTS_PREFIX)/include LDLIBS += -L$(MACPORTS_PREFIX)/lib PKG_CONFIG_ENV := PKG_CONFIG_PATH=$(MACPORTS_PREFIX)/lib/pkgconfig From 44888f601555fb36851e3fdb2cf285b757c9d52a Mon Sep 17 00:00:00 2001 From: Adam Jon Foster Date: Fri, 18 Aug 2023 12:55:56 +0800 Subject: [PATCH 0398/1034] Update mfc_default_keys.dic Added 4 keys extracted from old dumps on Edith Cowan University Smart rider cards Signed-off-by: Adam Jon Foster --- client/dictionaries/mfc_default_keys.dic | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index a2ae9655e..2e9be89f3 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -2179,4 +2179,8 @@ D201DBB6AB6E # # Data from Discord, seems to be related to ASSA 427553754D47 - +# Keys found on Edith Cowan University Smart Riders +9A677289564D +186C59E6AFC9 +DDDAA35A9749 +9D0D0A829F49 From b17a733bdb185bd664028afcc22a669f406fa225 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 21 Aug 2023 12:36:02 +0200 Subject: [PATCH 0399/1034] modified some output and made sure a local state is used for multithreaded. Also added the mod fix from Doegox in sma.cpp --- CHANGELOG.md | 1 + tools/cryptorf/sma.cpp | 18 +++++++++++------- tools/cryptorf/sma_multi.cpp | 33 ++++++++++++++++++++++----------- 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30854d631..0080cf27a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `cryptorf/sma_multi` - local state used in multithread (@iceman1001) - Changed `fpga_compress` - better deallocation of memory and closing of file handles (@iceman1001) - Changed `hf search` - less swaps of fpga images on device side (@iceman1001) - Changed `mkversion.sh` - now regenerates version_pm3.c (and consequently the binaries) only when needed (@doegox) diff --git a/tools/cryptorf/sma.cpp b/tools/cryptorf/sma.cpp index d15b0e6a2..2c0044388 100644 --- a/tools/cryptorf/sma.cpp +++ b/tools/cryptorf/sma.cpp @@ -159,6 +159,10 @@ void print_cs(const char *text, pcs s) { } static inline uint8_t mod(uint8_t a, uint8_t m) { + if (m == 0) { + return 0; // Actually, divide by zero error + } + // Just return the input when this is less or equal than the modular value if (a < m) return a; @@ -754,7 +758,7 @@ int main(int argc, const char *argv[]) { Q[pos] = rand(); } sm_auth(Gc, Ci, Q, Ch, Ci_1, &ostate); - printf(" Gc: "); + printf(" Gc... "); print_bytes(Gc, 8); } else { sscanf(argv[1], "%016" SCNx64, &nCi); @@ -765,7 +769,7 @@ int main(int argc, const char *argv[]) { num_to_bytes(nCh, 8, Ch); sscanf(argv[4], "%016" SCNx64, &nCi_1); num_to_bytes(nCi_1, 8, Ci_1); - printf(" Gc: unknown\n"); + printf(" Gc... unknown\n"); } for (pos = 0; pos < 8; pos++) { @@ -773,16 +777,16 @@ int main(int argc, const char *argv[]) { ks[(2 * pos) + 1] = Ch[pos]; } - printf(" Ci: "); + printf(" Ci... "); print_bytes(Ci, 8); - printf(" Q: "); + printf(" Q... "); print_bytes(Q, 8); - printf(" Ch: "); + printf(" Ch... "); print_bytes(Ch, 8); - printf("Ci+1: "); + printf("Ci+1... "); print_bytes(Ci_1, 8); printf("\n"); - printf(" Ks: "); + printf(" Ks... "); print_bytes(ks, 16); printf("\n"); diff --git a/tools/cryptorf/sma_multi.cpp b/tools/cryptorf/sma_multi.cpp index 50b962248..b57f85ef9 100644 --- a/tools/cryptorf/sma_multi.cpp +++ b/tools/cryptorf/sma_multi.cpp @@ -168,6 +168,7 @@ static inline uint8_t mod(uint8_t a, uint8_t m) { if (m == 0) { return 0; // Actually, divide by zero error } + // Just return the input when this is less or equal than the modular value if (a < m) return a; @@ -935,9 +936,19 @@ static void ice_compare( uint8_t *Ch, uint8_t *Ci_1 ) { - uint8_t Gc_chk[8]; - uint8_t Ch_chk[ 8]; - uint8_t Ci_1_chk[ 8]; + uint8_t Gc_chk[8] = {0}; + uint8_t Ch_chk[8] = {0}; + uint8_t Ci_1_chk[8] = {0}; + + crypto_state_t ls; + ls.b0 = ostate->b0; + ls.b1 = ostate->b1; + ls.b1l = ostate->b1l; + ls.b1r = ostate->b1r; + ls.b1s = ostate->b1s; + ls.l = ostate->l; + ls.m = ostate->m; + ls.r = ostate->r; for (std::size_t i = offset; i < candidates->size(); i += skips) { if (key_found.load(std::memory_order_relaxed)) @@ -946,7 +957,7 @@ static void ice_compare( uint64_t tkey = candidates->at(i); num_to_bytes(tkey, 8, Gc_chk); - sm_auth(Gc_chk, Ci, Q, Ch_chk, Ci_1_chk, ostate); + sm_auth(Gc_chk, Ci, Q, Ch_chk, Ci_1_chk, &ls); if ((memcmp(Ch_chk, Ch, 8) == 0) && (memcmp(Ci_1_chk, Ci_1, 8) == 0)) { g_ice_mtx.lock(); key_found = true; @@ -1008,7 +1019,7 @@ int main(int argc, const char *argv[]) { Q[pos] = rand(); } sm_auth(Gc, Ci, Q, Ch, Ci_1, &ostate); - printf(" Gc: "); + printf(" Gc... "); print_bytes(Gc, 8); } else { sscanf(argv[1], "%016" SCNx64, &nCi); @@ -1019,7 +1030,7 @@ int main(int argc, const char *argv[]) { num_to_bytes(nCh, 8, Ch); sscanf(argv[4], "%016" SCNx64, &nCi_1); num_to_bytes(nCi_1, 8, Ci_1); - printf(" Gc: unknown\n"); + printf(" Gc... unknown\n"); } for (pos = 0; pos < 8; pos++) { @@ -1027,16 +1038,16 @@ int main(int argc, const char *argv[]) { ks[(2 * pos) + 1] = Ch[pos]; } - printf(" Ci: "); + printf(" Ci... "); print_bytes(Ci, 8); - printf(" Q: "); + printf(" Q... "); print_bytes(Q, 8); - printf(" Ch: "); + printf(" Ch... "); print_bytes(Ch, 8); - printf("Ci+1: "); + printf("Ci+1... "); print_bytes(Ci_1, 8); printf("\n"); - printf(" Ks: "); + printf(" Ks... "); print_bytes(ks, 16); printf("\n"); From 5ecdd673ba898d5b7a1e0f528ae2d8d976c52e08 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 21 Aug 2023 12:37:05 +0200 Subject: [PATCH 0400/1034] added the possibility to compile cryptoRF solvers in the main makefile. Will add tests in regression script next --- Makefile | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c548646bf..8ca441faf 100644 --- a/Makefile +++ b/Makefile @@ -29,7 +29,7 @@ ifneq (,$(DESTDIR)) endif endif -all clean install uninstall check: %: client/% bootrom/% armsrc/% recovery/% mfkey/% nonce2key/% mf_nonce_brute/% mfd_aes_brute/% fpga_compress/% +all clean install uninstall check: %: client/% bootrom/% armsrc/% recovery/% mfkey/% nonce2key/% mf_nonce_brute/% mfd_aes_brute/% fpga_compress/% cryptorf/% # hitag2crack toolsuite is not yet integrated in "all", it must be called explicitly: "make hitag2crack" #all clean install uninstall check: %: hitag2crack/% @@ -109,6 +109,9 @@ endif $(Q)-$(INSTALLSUDO) $(RMDIR_SOFT) $(DESTDIR)$(PREFIX)$(PATHSEP)$(INSTALLSHARERELPATH) # tests +cryptorf/check: FORCE + $(info [*] CHECK $(patsubst %/check,%,$@)) + $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) mfkey/check: FORCE $(info [*] CHECK $(patsubst %/check,%,$@)) $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) @@ -145,6 +148,9 @@ common/check: FORCE check: common/check $(info [*] ALL CHECKS DONE) +cryptorf/%: FORCE + $(info [*] MAKE $@) + $(Q)$(MAKE) --no-print-directory -C tools/cryptorf $(patsubst cryptorf/%,%,$@) DESTDIR=$(MYDESTDIR) mfkey/%: FORCE $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C tools/mfkey $(patsubst mfkey/%,%,$@) DESTDIR=$(MYDESTDIR) @@ -196,6 +202,7 @@ help: @echo "+ recovery - Make bootrom and fullimage files for JTAG flashing" @echo @echo "+ client - Make only the OS-specific host client" + @echo "+ cryptorf - Make tools/cryptorf" @echo "+ mfkey - Make tools/mfkey" @echo "+ nonce2key - Make tools/nonce2key" @echo "+ mf_nonce_brute - Make tools/mf_nonce_brute" @@ -232,6 +239,8 @@ fullimage/uninstall: armsrc/uninstall recovery: recovery/all +cryptorf: cryptorf/all + mfkey: mfkey/all nonce2key: nonce2key/all From 0d1b86cc46e51f1e57b7930b05fda6e738afc964 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 21 Aug 2023 13:08:08 +0200 Subject: [PATCH 0401/1034] added regressiontests for cryptoRF SMA code part --- CHANGELOG.md | 1 + tools/cryptorf/sma.cpp | 2 +- tools/cryptorf/sma_multi.cpp | 2 +- tools/pm3_tests.sh | 16 +++++++++++++++- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0080cf27a..e773482db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added cryptorf regressiontests (@iceman1001) - Fixed `cryptorf/sma_multi` - local state used in multithread (@iceman1001) - Changed `fpga_compress` - better deallocation of memory and closing of file handles (@iceman1001) - Changed `hf search` - less swaps of fpga images on device side (@iceman1001) diff --git a/tools/cryptorf/sma.cpp b/tools/cryptorf/sma.cpp index 2c0044388..c1c9b54e3 100644 --- a/tools/cryptorf/sma.cpp +++ b/tools/cryptorf/sma.cpp @@ -844,7 +844,7 @@ int main(int argc, const char *argv[]) { num_to_bytes(*itgc, 8, Gc_chk); sm_auth(Gc_chk, Ci, Q, Ch_chk, Ci_1_chk, &ostate); if ((memcmp(Ch_chk, Ch, 8) == 0) && (memcmp(Ci_1_chk, Ci_1, 8) == 0)) { - printf("\nFound valid key: " _GREEN_("%016" PRIx64)"\n\n", *itgc); + printf("\nValid key found [ " _GREEN_("%016" PRIx64)" ]\n\n", *itgc); return 0; } } diff --git a/tools/cryptorf/sma_multi.cpp b/tools/cryptorf/sma_multi.cpp index b57f85ef9..cacaa31d1 100644 --- a/tools/cryptorf/sma_multi.cpp +++ b/tools/cryptorf/sma_multi.cpp @@ -1128,7 +1128,7 @@ int main(int argc, const char *argv[]) { } if (key_found) { - printf("\nFound valid key: " _GREEN_("%016lX")"\n\n", key.load()); + printf("\nValid key found [ " _GREEN_("%016" PRIx64)" ]\n\n", key.load()); break; } diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 0957fd386..0c34360c6 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -14,6 +14,7 @@ TESTNONCE2KEY=false TESTMFNONCEBRUTE=false TESTMFDAESBRUTE=false TESTHITAG2CRACK=false +TESTCRYPTORF=false TESTFPGACOMPRESS=false TESTBOOTROM=false TESTARMSRC=false @@ -27,7 +28,7 @@ while (( "$#" )); do case "$1" in -h|--help) echo """ -Usage: $0 [--long] [--opencl] [--clientbin /path/to/proxmark3] [mfkey|nonce2key|mf_nonce_brute|mfd_aes_brute|fpga_compress|bootrom|armsrc|client|recovery|common] +Usage: $0 [--long] [--opencl] [--clientbin /path/to/proxmark3] [mfkey|nonce2key|mf_nonce_brute|mfd_aes_brute|cryptorf|fpga_compress|bootrom|armsrc|client|recovery|common] --long: Enable slow tests --opencl: Enable tests requiring OpenCL (preferably a Nvidia GPU) --clientbin ...: Specify path to proxmark3 binary to test @@ -52,6 +53,11 @@ Usage: $0 [--long] [--opencl] [--clientbin /path/to/proxmark3] [mfkey|nonce2key| exit 1 fi ;; + cryptorf) + TESTALL=false + TESTCRYPTORF=true + shift + ;; mfkey) TESTALL=false TESTMFKEY=true @@ -295,6 +301,14 @@ while true; do if ! CheckExecute "mfd_aes_brute test 1/2" "$MFDASEBRUTEBIN 1605394800 bb6aea729414a5b1eff7b16328ce37fd 82f5f498dbc29f7570102397a2e5ef2b6dc14a864f665b3c54d11765af81e95c" "key.................... .*261C07A23F2BC8262F69F10A5BDF3764"; then break; fi if ! CheckExecute slow "mfd_aes_brute test 2/2" "$MFDASEBRUTEBIN 1546300800 3fda933e2953ca5e6cfbbf95d1b51ddf 97fe4b5de24188458d102959b888938c988e96fb98469ce7426f50f108eaa583" "key.................... .*E757178E13516A4F3171BC6EA85E165A"; then break; fi fi + + if $TESTALL || $TESTCRYPTORF; then + echo -e "\n${C_BLUE}Testing CryptoRF sma:${C_NC} ${CRYPTRFBRUTEBIN:=./tools/cryptorf/sma} ${CRYPTRF_MULTI_BRUTEBIN:=./tools/cryptorf/sma_multi}" + if ! CheckFileExist "sma exists" "$CRYPTRFBRUTEBIN"; then break; fi + if ! CheckFileExist "sma_multi exists" "$CRYPTRF_MULTI_BRUTEBIN"; then break; fi + if ! CheckExecute slow "sma test" "$CRYPTRFBRUTEBIN ffffffffffffffff 1234567812345678 88c9d4466a501a87 dec2ee1b1c9276e9" "key found \[.*4f794a463ff81d81.*\]"; then break; fi + if ! CheckExecute slow "sma_multi test" "$CRYPTRF_MULTI_BRUTEBIN ffffffffffffffff 1234567812345678 88c9d4466a501a87 dec2ee1b1c9276e9" "key found \[.*4f794a463ff81d81.*\]"; then break; fi + fi # hitag2crack not yet part of "all" # if $TESTALL || $TESTHITAG2CRACK; then if $TESTHITAG2CRACK; then From 456af75b78ee7a20d4e5c02b623f110075cdda04 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 21 Aug 2023 16:10:26 +0200 Subject: [PATCH 0402/1034] lets see if this makes osx happy by guarding the cpp code with defines --- tools/cryptorf/sma.cpp | 8 ++++++++ tools/cryptorf/sma_multi.cpp | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/tools/cryptorf/sma.cpp b/tools/cryptorf/sma.cpp index c1c9b54e3..3fb1da343 100644 --- a/tools/cryptorf/sma.cpp +++ b/tools/cryptorf/sma.cpp @@ -32,6 +32,10 @@ #include "cryptolib.h" #include "util.h" +#ifdef __cplusplus +extern "C" { +#endif + using namespace std; #ifdef _MSC_VER @@ -852,3 +856,7 @@ int main(int argc, const char *argv[]) { } return 0; } + +#if defined(__cplusplus) +} +#endif \ No newline at end of file diff --git a/tools/cryptorf/sma_multi.cpp b/tools/cryptorf/sma_multi.cpp index cacaa31d1..91cf97d7c 100644 --- a/tools/cryptorf/sma_multi.cpp +++ b/tools/cryptorf/sma_multi.cpp @@ -35,6 +35,10 @@ #include "cryptolib.h" #include "util.h" +#ifdef __cplusplus +extern "C" { +#endif + using namespace std; #ifdef _MSC_VER @@ -1136,3 +1140,7 @@ int main(int argc, const char *argv[]) { } return 0; } + +#if defined(__cplusplus) +} +#endif \ No newline at end of file From 908b8ca0b3bf2af143a19d94814c1882b9165b8c Mon Sep 17 00:00:00 2001 From: Roman D Date: Mon, 21 Aug 2023 22:24:13 +0200 Subject: [PATCH 0403/1034] Limit configurable CPU count to the number of detected CPU cores. --- client/src/proxmark3.c | 5 +++-- client/src/util.c | 6 +++++- client/src/util.h | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 26f4a5698..3e924a1c7 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -1004,8 +1004,9 @@ int main(int argc, char *argv[]) { return 1; } long int ncpus = strtol(argv[i + 1], NULL, 10); - if (ncpus < 0 || ncpus >= INT_MAX) { - PrintAndLogEx(ERR, _RED_("ERROR:") " invalid number of CPU cores: --ncpu " _YELLOW_("%s") "\n", argv[i + 1]); + const int detected_cpus = detect_num_CPUs(); + if (ncpus < 0 || ncpus >= detected_cpus) { + PrintAndLogEx(ERR, _RED_("ERROR:") " invalid number of CPU cores: --ncpu " _YELLOW_("%s") " (available: %d)\n", argv[i + 1], detected_cpus); return 1; } g_numCPUs = ncpus; diff --git a/client/src/util.c b/client/src/util.c index 150b042a5..f1e58abe0 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -1079,12 +1079,16 @@ uint64_t HornerScheme(uint64_t num, uint64_t divider, uint64_t factor) { return result; } -// determine number of logical CPU cores (use for multithreaded functions) int num_CPUs(void) { if (g_numCPUs > 0) { return g_numCPUs; } + return detect_num_CPUs(); +} + +// determine number of logical CPU cores (use for multithreaded functions) +int detect_num_CPUs(void) { #if defined(_WIN32) #include SYSTEM_INFO sysinfo; diff --git a/client/src/util.h b/client/src/util.h index 0712d8d18..fa636ce9b 100644 --- a/client/src/util.h +++ b/client/src/util.h @@ -131,7 +131,8 @@ void wiegand_add_parity_swapped(uint8_t *target, uint8_t *source, uint8_t length uint32_t PackBits(uint8_t start, uint8_t len, const uint8_t *bits); uint64_t HornerScheme(uint64_t num, uint64_t divider, uint64_t factor); -int num_CPUs(void); // number of logical CPUs +int num_CPUs(void); +int detect_num_CPUs(void); // number of logical CPUs void str_lower(char *s); // converts string to lower case void str_upper(char *s); // converts string to UPPER case From 210d2847aeb2019d15ae69eadff68771a4b656ef Mon Sep 17 00:00:00 2001 From: nvx Date: Tue, 22 Aug 2023 07:32:07 +1000 Subject: [PATCH 0404/1034] Adds `hf iclass esetblk`, equivalent to `hf mf esetblk` Also some minor tweaks to make commands.json and commands.md properly on Windows. --- Makefile | 2 +- client/pyscripts/pm3_help2list.py | 2 +- client/src/cmdhficlass.c | 55 ++++++++++++++++++++++++++++--- client/src/cmdhftexkom.c | 8 ++--- client/src/pm3line_vocabulary.h | 1 + doc/commands.json | 28 ++++++++++++---- doc/commands.md | 1 + 7 files changed, 81 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index 8ca441faf..64b0aa6ab 100644 --- a/Makefile +++ b/Makefile @@ -327,7 +327,7 @@ style: # Make sure python3 is installed @command -v python3 >/dev/null || ( echo "Please install 'python3' package first" ; exit 1 ) # Update commands.json, patch port in case it was run under Windows - [ -x client/proxmark3 ] && client/proxmark3 --fulltext | sed 's#com[0-9]#/dev/ttyacm0#'|python3 client/pyscripts/pm3_help2json.py - doc/commands.json + [ -x client/proxmark3 ] && client/proxmark3 --fulltext | sed 's#com[0-9]#/dev/ttyACM0#'|python3 client/pyscripts/pm3_help2json.py - doc/commands.json # Update the readline autocomplete autogenerated code [ -x client/proxmark3 ] && client/proxmark3 --fulltext | python3 client/pyscripts/pm3_help2list.py - client/src/pm3line_vocabulary.h diff --git a/client/pyscripts/pm3_help2list.py b/client/pyscripts/pm3_help2list.py index 7355bca46..a896e5546 100755 --- a/client/pyscripts/pm3_help2list.py +++ b/client/pyscripts/pm3_help2list.py @@ -88,7 +88,7 @@ const static vocabulary_t vocabulary[] = {\n""") cmd = values['command'] - args.output_file.write(' {{ {}, "{}" }}, \n'.format(offline, cmd)) + args.output_file.write(' {{ {}, "{}" }},\n'.format(offline, cmd)) args.output_file.write(""" {0, NULL}\n}; diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 131944f6e..4a4ac3289 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -129,7 +129,7 @@ static inline uint32_t leadingzeros(uint64_t a) { #endif } -static void iclass_upload_emul(uint8_t *d, uint16_t n, uint16_t *bytes_sent) { +static void iclass_upload_emul(uint8_t *d, uint16_t n, uint16_t offset, uint16_t *bytes_sent) { struct p { uint16_t offset; @@ -155,7 +155,7 @@ static void iclass_upload_emul(uint8_t *d, uint16_t n, uint16_t *bytes_sent) { } struct p *payload = calloc(4 + bytes_in_packet, sizeof(uint8_t)); - payload->offset = *bytes_sent; + payload->offset = offset + *bytes_sent; payload->len = bytes_in_packet; memcpy(payload->data, d + *bytes_sent, bytes_in_packet); @@ -424,7 +424,7 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke //Send to device PrintAndLogEx(INFO, "Uploading to device... "); uint16_t bytes_sent = 0; - iclass_upload_emul(data, tot_bytes, &bytes_sent); + iclass_upload_emul(data, tot_bytes, 0, &bytes_sent); free(data); PrintAndLogEx(NORMAL, ""); @@ -1092,7 +1092,7 @@ static int CmdHFiClassELoad(const char *Cmd) { //Send to device uint16_t bytes_sent = 0; - iclass_upload_emul(dump, bytes_read, &bytes_sent); + iclass_upload_emul(dump, bytes_read, 0, &bytes_sent); free(dump); PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", bytes_sent); PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`hf iclass sim -h`")); @@ -1222,6 +1222,52 @@ static int CmdHFiClassEView(const char *Cmd) { return PM3_SUCCESS; } +static int CmdHFiClassESetBlk(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf iclass esetblk", + "Display emulator memory.\n" + "Number of bytes to download defaults to 256. Other value is 2048.", + "hf iclass eview\n" + "hf iclass eview -s 2048\n" + "hf iclass eview -s 2048 -v"); + + void *argtable[] = { + arg_param_begin, + arg_int1("b", "blk", "", "block number"), + arg_str0("d", "data", "", "bytes to write, 16 hex bytes"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + + int blk = arg_get_int_def(ctx, 1, 0); + + if (blk > 255) { + PrintAndLogEx(WARNING, "block number must be between 0 and 255. Got %i", blk); + return PM3_EINVARG; + } + + uint8_t data[PICOPASS_BLOCK_SIZE] = {0x00}; + int datalen = 0; + int res = CLIParamHexToBuf(arg_get_str(ctx, 2), data, sizeof(data), &datalen); + CLIParserFree(ctx); + if (res) { + PrintAndLogEx(FAILED, "Error parsing bytes"); + return PM3_EINVARG; + } + + if (datalen != sizeof(data)) { + PrintAndLogEx(WARNING, "block data must include 8 HEX bytes. Got %i", datalen); + return PM3_EINVARG; + } + + CLIParserFree(ctx); + + uint16_t bytes_sent = 0; + iclass_upload_emul(data, sizeof(data), blk * PICOPASS_BLOCK_SIZE, &bytes_sent); + + return PM3_SUCCESS; +} + static void iclass_decode_credentials(uint8_t *data) { BLOCK79ENCRYPTION encryption = (data[(6 * 8) + 7] & 0x03); bool has_values = (memcmp(data + (8 * 7), empty, 8) != 0) && (memcmp(data + (8 * 7), zeros, 8) != 0); @@ -4226,6 +4272,7 @@ static command_t CommandTable[] = { {"sim", CmdHFiClassSim, IfPm3Iclass, "Simulate iCLASS tag"}, {"eload", CmdHFiClassELoad, IfPm3Iclass, "Load Picopass / iCLASS dump file into emulator memory"}, {"esave", CmdHFiClassESave, IfPm3Iclass, "Save emulator memory to file"}, + {"esetblk", CmdHFiClassESetBlk, IfPm3Iclass, "Set emulator memory block data"}, {"eview", CmdHFiClassEView, IfPm3Iclass, "View emulator memory"}, {"-----------", CmdHelp, AlwaysAvailable, "---------------------- " _CYAN_("utils") " ----------------------"}, {"configcard", CmdHFiClassConfigCard, AlwaysAvailable, "Reader configuration card"}, diff --git a/client/src/cmdhftexkom.c b/client/src/cmdhftexkom.c index 4164060f7..6cb77a54e 100644 --- a/client/src/cmdhftexkom.c +++ b/client/src/cmdhftexkom.c @@ -850,10 +850,10 @@ static int CmdHFTexkomSim(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf texkom sim", "Simulate a texkom tag", - "hf texkom sim \r\n" - "hf texkom sim --raw FFFF638C7DC45553 -> simulate TK13 tag with id 8C7DC455\r\n" - "hf texkom sim --tk17 --raw FFFFCA17F31EC512 -> simulate TK17 tag with id 17F31EC5\r\n" - "hf texkom sim --id 8C7DC455 -> simulate TK13 tag with id 8C7DC455\r\n" + "hf texkom sim \n" + "hf texkom sim --raw FFFF638C7DC45553 -> simulate TK13 tag with id 8C7DC455\n" + "hf texkom sim --tk17 --raw FFFFCA17F31EC512 -> simulate TK17 tag with id 17F31EC5\n" + "hf texkom sim --id 8C7DC455 -> simulate TK13 tag with id 8C7DC455\n" "hf texkom sim --id 8C7DC455 --tk17 -> simulate TK17 tag with id 17F31EC5"); void *argtable[] = { diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index 0f617ef0d..8926ffb94 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -282,6 +282,7 @@ const static vocabulary_t vocabulary[] = { { 0, "hf iclass sim" }, { 0, "hf iclass eload" }, { 0, "hf iclass esave" }, + { 0, "hf iclass esetblk" }, { 0, "hf iclass eview" }, { 1, "hf iclass configcard" }, { 1, "hf iclass calcnewkey" }, diff --git a/doc/commands.json b/doc/commands.json index 858cc02cd..f92263843 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -215,10 +215,9 @@ "offline": true, "options": [ "-h, --help This help", - "-d ASN1 encoded byte array", - "-t, --test perform selftest" + "-d ASN1 encoded byte array" ], - "usage": "data atr [-ht] [-d ]" + "usage": "data atr [-h] [-d ]" }, "data autocorr": { "command": "data autocorr", @@ -3150,6 +3149,22 @@ ], "usage": "hf iclass esave [-h] [-f ] [-s <256|2048>]" }, + "hf iclass esetblk": { + "command": "hf iclass esetblk", + "description": "Display emulator memory. Number of bytes to download defaults to 256. Other value is 2048.", + "notes": [ + "hf iclass eview", + "hf iclass eview -s 2048", + "hf iclass eview -s 2048 -v" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-b, --blk block number", + "-d, --data bytes to write, 16 hex bytes" + ], + "usage": "hf iclass esetblk [-h] -b [-d ]" + }, "hf iclass eview": { "command": "hf iclass eview", "description": "Display emulator memory. Number of bytes to download defaults to 256. Other value is 2048.", @@ -6986,6 +7001,7 @@ "description": "Simulate a texkom tag", "notes": [ "hf texkom sim", + "", "hf texkom sim --raw FFFF638C7DC45553 -> simulate TK13 tag with id 8C7DC455", "hf texkom sim --tk17 --raw FFFFCA17F31EC512 -> simulate TK17 tag with id 17F31EC5", "hf texkom sim --id 8C7DC455 -> simulate TK13 tag with id 8C7DC455", @@ -8770,7 +8786,7 @@ "-1, --ht1 Card type Hitag 1", "-2, --ht2 Card type Hitag 2", "-s, --hts Card type Hitag S", - "-m, --htm Card type Hitag \u03bc" + "-m, --htm Card type Hitag \u00ce\u00bc" ], "usage": "lf hitag eload [-h12sm] -f " }, @@ -11819,8 +11835,8 @@ } }, "metadata": { - "commands_extracted": 685, + "commands_extracted": 686, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-08-02T20:39:48" + "extracted_on": "2023-08-21T21:25:03" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 27d6a05b4..919ce3f8e 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -421,6 +421,7 @@ Check column "offline" for their availability. |`hf iclass sim `|N |`Simulate iCLASS tag` |`hf iclass eload `|N |`Load Picopass / iCLASS dump file into emulator memory` |`hf iclass esave `|N |`Save emulator memory to file` +|`hf iclass esetblk `|N |`Set emulator memory block data` |`hf iclass eview `|N |`View emulator memory` |`hf iclass configcard `|Y |`Reader configuration card` |`hf iclass calcnewkey `|Y |`Calc diversified keys (blocks 3 & 4) to write new keys` From d183944bb16b9bb0a4a7702c5723084c0de635b2 Mon Sep 17 00:00:00 2001 From: nvx Date: Tue, 22 Aug 2023 07:53:57 +1000 Subject: [PATCH 0405/1034] Add CHANGELOG entry for hf iclass esetblk command --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e773482db..cf9c6f192 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `hf iclass esetblk` - set iClass emulator memory block data (@nvx) - Added cryptorf regressiontests (@iceman1001) - Fixed `cryptorf/sma_multi` - local state used in multithread (@iceman1001) - Changed `fpga_compress` - better deallocation of memory and closing of file handles (@iceman1001) From 0d442d7f190b4c2827122abd515ca592c3e0f2d1 Mon Sep 17 00:00:00 2001 From: startrekdude Date: Tue, 22 Aug 2023 01:10:21 -0400 Subject: [PATCH 0406/1034] Add hf_cardhopper standalone mode Adds the hf_cardhopper standalone mode, as one component of my (Sam Haskins) and Trevor Stevado's long-range relay attack on ISO 14443-4 Type A protocols, as presented at DEF CON 31. --- CHANGELOG.md | 1 + armsrc/Standalone/Makefile.hal | 7 +- armsrc/Standalone/Makefile.inc | 4 + armsrc/Standalone/hf_cardhopper.c | 408 ++++++++++++++++++ .../4_Advanced-compilation-parameters.md | 1 + tools/build_all_firmwares.sh | 4 +- 6 files changed, 421 insertions(+), 4 deletions(-) create mode 100644 armsrc/Standalone/hf_cardhopper.c diff --git a/CHANGELOG.md b/CHANGELOG.md index e773482db..eec2ac775 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `hf_mf_luxeo_dump.lua` - now have list of keys to iterate (@iceman1001) - Fixed the timeout of TCP connections (@wh201906) - Changed the connection timeout configurable (@wh201906) + - Add hf_cardhopper standalone mode for long-distance relay attacks (@startrekdude) ## [Seven.4.16717][2023-06-25] - Change `hf 14a info` - now identifes QL88 tags (@iceman1001) diff --git a/armsrc/Standalone/Makefile.hal b/armsrc/Standalone/Makefile.hal index da204eaca..1a903a0ac 100644 --- a/armsrc/Standalone/Makefile.hal +++ b/armsrc/Standalone/Makefile.hal @@ -86,6 +86,9 @@ define KNOWN_STANDALONE_DEFINITIONS | HF_BOG | 14a sniff with ULC/ULEV1/NTAG auth | | (RDV4 only) | storing in flashmem - Bogito | +----------------------------------------------------------+ +| HF_CARDHOPPER | Relay 14a protocols over long distances| +| (RDV4 only) | (w/ IP backbone) - Sam Haskins | ++----------------------------------------------------------+ | HF_COLIN | Mifare ultra fast sniff/sim/clone | | (RDV4 only) | - Colin Brigato | +----------------------------------------------------------+ @@ -130,9 +133,9 @@ endef STANDALONE_MODES := LF_SKELETON STANDALONE_MODES += LF_EM4100EMUL LF_EM4100RSWB LF_EM4100RSWW LF_EM4100RWC LF_HIDBRUTE LF_HIDFCBRUTE LF_ICEHID LF_MULTIHID LF_NEDAP_SIM LF_NEXID LF_PROXBRUTE LF_PROX2BRUTE LF_SAMYRUN LF_THAREXDE -STANDALONE_MODES += HF_14ASNIFF HF_14BSNIFF HF_15SNIFF HF_AVEFUL HF_BOG HF_COLIN HF_CRAFTBYTE HF_ICECLASS HF_LEGIC HF_LEGICSIM HF_MATTYRUN HF_MFCSIM HF_MSDSAL HF_REBLAY HF_TCPRST HF_TMUDFORD HF_YOUNG +STANDALONE_MODES += HF_14ASNIFF HF_14BSNIFF HF_15SNIFF HF_AVEFUL HF_BOG HF_CARDHOPPER HF_COLIN HF_CRAFTBYTE HF_ICECLASS HF_LEGIC HF_LEGICSIM HF_MATTYRUN HF_MFCSIM HF_MSDSAL HF_REBLAY HF_TCPRST HF_TMUDFORD HF_YOUNG STANDALONE_MODES += DANKARMULTI -STANDALONE_MODES_REQ_BT := HF_REBLAY +STANDALONE_MODES_REQ_BT := HF_CARDHOPPER HF_REBLAY STANDALONE_MODES_REQ_SMARTCARD := STANDALONE_MODES_REQ_FLASH := LF_HIDFCBRUTE LF_ICEHID LF_NEXID LF_THAREXDE HF_BOG HF_COLIN HF_ICECLASS HF_LEGICSIM HF_MFCSIM ifneq ($(filter $(STANDALONE),$(STANDALONE_MODES)),) diff --git a/armsrc/Standalone/Makefile.inc b/armsrc/Standalone/Makefile.inc index 6aeb163bb..19e3645ff 100644 --- a/armsrc/Standalone/Makefile.inc +++ b/armsrc/Standalone/Makefile.inc @@ -97,6 +97,10 @@ endif ifneq (,$(findstring WITH_STANDALONE_HF_BOG,$(APP_CFLAGS))) SRC_STANDALONE = hf_bog.c endif +# WITH_STANDALONE_HF_CARDHOPPER +ifneq (,$(findstring WITH_STANDALONE_HF_CARDHOPPER,$(APP_CFLAGS))) + SRC_STANDALONE = hf_cardhopper.c +endif # WITH_STANDALONE_HF_COLIN ifneq (,$(findstring WITH_STANDALONE_HF_COLIN,$(APP_CFLAGS))) SRC_STANDALONE = vtsend.c hf_colin.c frozen.c nprintf.c diff --git a/armsrc/Standalone/hf_cardhopper.c b/armsrc/Standalone/hf_cardhopper.c new file mode 100644 index 000000000..7101b5ae7 --- /dev/null +++ b/armsrc/Standalone/hf_cardhopper.c @@ -0,0 +1,408 @@ +/* + * hf_cardhopper standalone mode by Sam Haskins + * + * A component of our (me + Trevor Stevado) research on long-range relay + * attacks against 14a-based protocols (as presented at DEF CON '31). + * Works with a CardHopper (recommended) or BlueShark add-on. + * + * If you're reading this, you're clearly a very interesting person--- + * do reach out if you get any fun results? [ sam AT loudmouth DOT io ] + * Good luck, and may the odds be ever in your favour! + * + * The companion Android app is available on our gitlab: gitlab.com/loudmouth-security + * + * For more information, see: https://media.defcon.org/DEF%20CON%2031/DEF%20CON%2031%20presentations/Trevor%20Stevado%20Sam%20Haskins%20-%20Unlocking%20Doors%20from%20Half%20a%20Continent%20Away.pdf + */ + +#include + +#include "appmain.h" +#include "BigBuf.h" +#include "dbprint.h" +#include "fpgaloader.h" +#include "iso14443a.h" +#include "protocols.h" +#include "proxmark3_arm.h" +#include "standalone.h" +#include "ticks.h" +#include "util.h" +#include "usart.h" + + +void ModInfo(void) { + DbpString(" HF - Long-range relay 14a over serial<->IP - a.k.a. CardHopper (Sam Haskins)"); +} + + +typedef struct PACKED { + uint8_t len; + uint8_t dat[255]; +} packet_t; + +// Magic numbers +static const uint8_t magicREAD[4] = "READ"; +static const uint8_t magicCARD[4] = "CARD"; +static const uint8_t magicEND [4] = "\xff" "END"; +static const uint8_t magicRSRT[7] = "RESTART"; +static const uint8_t magicERR [4] = "\xff" "ERR"; +static uint8_t magicACK [1] = "\xfe"; // is constant, but must be passed to API that doesn't like that + +// Forward declarations +static void become_reader(void); +static void select_card(void); + +static void become_card(void); +static void prepare_emulation(uint8_t*, uint16_t*, uint8_t*, packet_t*); +static void cook_ats(packet_t*, uint8_t, uint8_t); +static bool try_use_canned_response(uint8_t*, int, tag_response_info_t*); +static void reply_with_packet(packet_t*); + +static void read_packet(packet_t*); +static void write_packet(packet_t*); + +static bool GetIso14443aCommandFromReaderInterruptible(uint8_t*, uint8_t*, int*); + + +void RunMod(void) { + StandAloneMode(); + DbpString(_CYAN_("[@]") " CardHopper has started - waiting for mode"); + FpgaDownloadAndGo(FPGA_BITSTREAM_HF); + + clear_trace(); + set_tracing(true); + + // Indicate we are alive and in CardHopper + LEDsoff(); + LED_A_ON(); + LED_D_ON(); + + while (1) { + WDT_HIT(); + + packet_t modeRx = { 0 }; + read_packet(&modeRx); + + if (memcmp(magicREAD, modeRx.dat, sizeof(magicREAD)) == 0) { + DbpString(_CYAN_("[@]") " I am a READER. I talk to a CARD."); + become_reader(); + } else if (memcmp(magicCARD, modeRx.dat, sizeof(magicCARD)) == 0) { + DbpString(_CYAN_("[@]") " I am a CARD. I talk to a READER."); + become_card(); + } else if (memcmp(magicEND, modeRx.dat, sizeof(magicEND)) == 0) { + break; + } else { + DbpString(_YELLOW_("[!]") " unknown mode!"); + Dbhexdump(modeRx.len, modeRx.dat, true); + } + } + + DbpString(_CYAN_("[@]") " exiting ..."); + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + LEDsoff(); +} + + +static void become_reader(void) { + iso14443a_setup(FPGA_HF_ISO14443A_READER_MOD); + select_card(); // also sends UID, ATS + + DbpString(_CYAN_("[@]") " entering reader main loop ..."); + packet_t packet = { 0 }; + packet_t *rx = &packet; + packet_t *tx = &packet; + uint8_t toCard[256] = { 0 }; + uint8_t parity[MAX_PARITY_SIZE] = { 0 }; + + while(1) { + WDT_HIT(); + + read_packet(rx); + if (memcmp(magicRSRT, rx->dat, sizeof(magicRSRT)) == 0) break; + + memcpy(toCard, rx->dat, rx->len); + AddCrc14A(toCard, rx->len); + ReaderTransmit(toCard, rx->len + 2, NULL); + + tx->len = ReaderReceive(tx->dat, parity); + if (tx->len == 0) { + tx->len = sizeof(magicERR); + memcpy(tx->dat, magicERR, sizeof(magicERR)); + } else tx->len -= 2; // cut off the CRC + + write_packet(tx); + } +} + + +static void select_card(void) { + iso14a_card_select_t card = { 0 }; + while(1) { + WDT_HIT(); + + int ret = iso14443a_select_card(NULL, &card, NULL, true, 0, false); + if (ret && ret != 1) + Dbprintf(_RED_("[!]") " Error selecting card: %d", ret); + if (ret == 1) break; + + SpinDelay(20); + } + + DbpString(_CYAN_("[@]") " UID:"); + Dbhexdump(card.uidlen, card.uid, false); + DbpString(_CYAN_("[@]") " ATS:"); + Dbhexdump(card.ats_len - 2 /* no CRC */, card.ats, false); + + packet_t tx = { 0 }; + tx.len = card.uidlen; + memcpy(tx.dat, card.uid, tx.len); + write_packet(&tx); + + tx.len = card.ats_len - 2; + memcpy(tx.dat, card.ats, tx.len); + write_packet(&tx); +} + + +static void become_card(void) { + iso14443a_setup(FPGA_HF_ISO14443A_TAGSIM_LISTEN); + + uint8_t tagType; + uint16_t flags; + uint8_t data[PM3_CMD_DATA_SIZE] = { 0 }; + packet_t ats = { 0 }; + prepare_emulation(&tagType, &flags, data, &ats); + + tag_response_info_t *canned; + uint32_t cuid; + uint32_t counters[3] = { 0 }; + uint8_t tearings[3] = { 0xbd, 0xbd, 0xbd }; + uint8_t pages; + SimulateIso14443aInit(tagType, flags, data, &canned, &cuid, counters, tearings, &pages); + + DbpString(_CYAN_("[@]") " Setup done - entering emulation loop"); + int fromReaderLen; + uint8_t fromReaderDat[256] = { 0 }; + uint8_t parity[MAX_PARITY_SIZE] = { 0 }; + packet_t packet = { 0 }; + packet_t *tx = &packet; + packet_t *rx = &packet; + + while (1) { + WDT_HIT(); + + if (!GetIso14443aCommandFromReaderInterruptible(fromReaderDat, parity, &fromReaderLen)) { + if (usart_rxdata_available()) { + read_packet(rx); + if (memcmp(magicRSRT, rx->dat, sizeof(magicRSRT)) == 0) { + DbpString(_CYAN_("[@]") " Breaking from reader loop"); + break; + } + } + continue; + } + + // Option 1: Use a canned response + if (try_use_canned_response(fromReaderDat, fromReaderLen, canned)) continue; + + // Option 2: Reply with our cooked ATS + if (fromReaderDat[0] == ISO14443A_CMD_RATS && fromReaderLen == 4) { + reply_with_packet(&ats); + continue; + } + + // Option 3: Relay the message + tx->len = fromReaderLen - 2; // cut off the crc + memcpy(tx->dat, fromReaderDat, tx->len); + write_packet(tx); + + read_packet(rx); + reply_with_packet(rx); + } +} + + +static void prepare_emulation(uint8_t *tagType, uint16_t *flags, uint8_t *data, packet_t *ats) { + packet_t tagTypeRx = { 0 }; read_packet(&tagTypeRx); + packet_t timeModeRx = { 0 }; read_packet(&timeModeRx); + packet_t uidRx = { 0 }; read_packet(&uidRx); + read_packet(ats); + + *tagType = tagTypeRx.dat[0]; + Dbprintf(_CYAN_("[@]") " Using tag type: %hhu", *tagType); + + DbpString(_CYAN_("[@]") " Time control parameters:"); + Dbhexdump(timeModeRx.len, timeModeRx.dat, false); + uint8_t fwi = timeModeRx.dat[0] & 0x0f; + uint8_t sfgi = timeModeRx.dat[1] & 0x0f; + Dbprintf(_CYAN_("[@]") " Parsed as fwi = %hhu, sfgi = %hhu", fwi, sfgi); + + if (fwi == 0xf) { + DbpString(_YELLOW_("[!]") " Refusing to use 15 as FWI - will use 14"); + fwi = 0xe; + } + if (sfgi == 0xf) { + DbpString(_YELLOW_("[!]") " Refusing to use 15 as SFGI - will use 14"); + sfgi = 0xe; + } + + memcpy(data, uidRx.dat, uidRx.len); + *flags = (uidRx.len == 10 ? FLAG_10B_UID_IN_DATA : (uidRx.len == 7 ? FLAG_7B_UID_IN_DATA : FLAG_4B_UID_IN_DATA)); + DbpString(_CYAN_("[@]") " UID:"); + Dbhexdump(uidRx.len, data, false); + Dbprintf(_CYAN_("[@]") " Flags: %hu", *flags); + + DbpString(_CYAN_("[@]") " Original ATS:"); + Dbhexdump(ats->len, ats->dat, false); + cook_ats(ats, fwi, sfgi); + DbpString(_CYAN_("[@]") " Cooked ATS:"); + Dbhexdump(ats->len, ats->dat, false); +} + + +static void cook_ats(packet_t *ats, uint8_t fwi, uint8_t sfgi) { + if (ats->len != ats->dat[0]) { + DbpString(_RED_("[!]") " Malformed ATS - unable to cook; things may go wrong!"); + return; + } + + // If the ATS is too short (unusual), pad it to length with hopefully-sensible data + // Might be better for the phone side to do this tbh + if (ats->len == 1) { + ats->len = 4; + ats->dat[0] = 0x04; ats->dat[1] = 0x78; ats->dat[2] = 0x77; ats->dat[3] = 0x80; + } else if (ats->len == 2) { + ats->len = 4; + ats->dat[0] = 0x04; ats->dat[2] = 0x77; ats->dat[3] = 0x80; + } else if (ats->len == 3) { + ats->len = 4; + ats->dat[0] = 0x04; ats->dat[3] = 0x80; + } + + // Set the SFGI as well as the FWI - needed for some older readers (firmware revs?) + uint8_t cookedTB0 = (fwi << 4) | sfgi; + ats->dat[3] = cookedTB0; +} + + +static bool try_use_canned_response(uint8_t *dat, int len, tag_response_info_t *canned) { + if ((dat[0] == ISO14443A_CMD_REQA || dat[0] == ISO14443A_CMD_WUPA) && len == 1) { + EmSendPrecompiledCmd(canned + RESP_INDEX_ATQA); + return true; + } + + if (dat[1] == 0x20 && len == 2) { + if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT) { + EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC1); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_2) { + EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC2); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_3) { + EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC3); + return true; + } + } + + if (dat[1] == 0x70 && len == 9) { + if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT) { + EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC1); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_2) { + EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC2); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_3) { + EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC3); + return true; + } + } + + if (dat[0] == ISO14443A_CMD_PPS) { + EmSendPrecompiledCmd(canned + RESP_INDEX_PPS); + return true; + } + + // No response is expected to these 14a commands + if ((dat[0] == 0xf2 && len == 4) || dat[0] == 0xfa) return true; + if (dat[0] == ISO14443A_CMD_HALT && len == 4) return true; + + // Ignore Apple ECP2 polling + if (dat[0] == 0x6a) return true; + + return false; +} + + +static uint8_t g_responseBuffer [512 ] = { 0 }; +static uint8_t g_modulationBuffer[1024] = { 0 }; + +static void reply_with_packet(packet_t *packet) { + tag_response_info_t response = { 0 }; + response.response = g_responseBuffer; + response.modulation = g_modulationBuffer; + + memcpy(response.response, packet->dat, packet->len); + AddCrc14A(response.response, packet->len); + response.response_n = packet->len + 2; + + prepare_tag_modulation(&response, sizeof(g_modulationBuffer)); + EmSendPrecompiledCmd(&response); +} + + +static void read_packet(packet_t *packet) { + while(!usart_rxdata_available()) { + WDT_HIT(); + SpinDelayUs(100); + } + + uint32_t dataReceived = usart_read_ng((uint8_t*) packet, sizeof(packet_t)) - 1; + while(dataReceived != packet->len) { + while(!usart_rxdata_available()) WDT_HIT(); + + dataReceived += usart_read_ng(packet->dat + dataReceived, 255 - dataReceived); + } + usart_writebuffer_sync(magicACK, sizeof(magicACK)); +} + + +static void write_packet(packet_t *packet) { + usart_writebuffer_sync((uint8_t*) packet, packet->len + 1); +} + + +static bool GetIso14443aCommandFromReaderInterruptible(uint8_t *received, uint8_t *par, int *len) { + LED_D_OFF(); + FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_ISO14443A | FPGA_HF_ISO14443A_TAGSIM_LISTEN); + + Uart14aInit(received, par); + + uint8_t b = (uint8_t)AT91C_BASE_SSC->SSC_RHR; + (void)b; + + uint8_t flip = 0; + uint16_t checker = 4000; + for (;;) { + WDT_HIT(); + + if (flip == 3) { + if (usart_rxdata_available()) + return false; + + flip = 0; + } + + if (checker-- == 0) { + flip++; + checker = 4000; + } + + if (AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_RXRDY)) { + b = (uint8_t)AT91C_BASE_SSC->SSC_RHR; + if (MillerDecoding(b, 0)) { + *len = GetUart14a()->len; + return true; + } + } + } + return false; +} diff --git a/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md b/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md index 53726b9dd..823e527da 100644 --- a/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md +++ b/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md @@ -121,6 +121,7 @@ Here are the supported values you can assign to `STANDALONE` in `Makefile.platfo | HF_15SNIFF | 15693 sniff storing to flashmem - Glaser | HF_AVEFUL | MIFARE Ultralight read/simulation - Ave Ozkal | HF_BOG | 14a sniff with ULC/ULEV1/NTAG auth storing in flashmem - Bogito +| HF_CARDHOPPER | Long distance (over IP) relay of 14a protocols - Sam Haskins | HF_COLIN | Mifare ultra fast sniff/sim/clone - Colin Brigato | HF_CRAFTBYTE | UID stealer - Emulates scanned 14a UID - Anze Jensterle | HF_ICECLASS | iCLASS 4-1 mode sim/read & dump/loclass/glitch & config to flashmem - Iceman1001 diff --git a/tools/build_all_firmwares.sh b/tools/build_all_firmwares.sh index 4a0fe5947..261d89135 100755 --- a/tools/build_all_firmwares.sh +++ b/tools/build_all_firmwares.sh @@ -32,9 +32,9 @@ mv bootrom/obj/bootrom.elf "$DEST/PM3BOOTROM.elf" # cf armsrc/Standalone/Makefile.hal STANDALONE_MODES=(LF_SKELETON) STANDALONE_MODES+=(LF_EM4100EMUL LF_EM4100RSWB LF_EM4100RSWW LF_EM4100RWC LF_HIDBRUTE LF_HIDFCBRUTE LF_ICEHID LF_MULTIHID LF_NEDAP_SIM LF_NEXID LF_PROXBRUTE LF_PROX2BRUTE LF_SAMYRUN LF_THAREXDE) -STANDALONE_MODES+=(HF_14ASNIFF HF_14BSNIFF HF_15SNIFF HF_AVEFUL HF_BOG HF_COLIN HF_CRAFTBYTE HF_ICECLASS HF_LEGIC HF_LEGICSIM HF_MATTYRUN HF_MFCSIM HF_MSDSAL HF_REBLAY HF_TCPRST HF_TMUDFORD HF_YOUNG) +STANDALONE_MODES+=(HF_14ASNIFF HF_14BSNIFF HF_15SNIFF HF_AVEFUL HF_BOG HF_CARDHOPPER HF_COLIN HF_CRAFTBYTE HF_ICECLASS HF_LEGIC HF_LEGICSIM HF_MATTYRUN HF_MFCSIM HF_MSDSAL HF_REBLAY HF_TCPRST HF_TMUDFORD HF_YOUNG) STANDALONE_MODES+=(DANKARMULTI) -STANDALONE_MODES_REQ_BT=(HF_REBLAY) +STANDALONE_MODES_REQ_BT=(HF_CARDHOPPER HF_REBLAY) STANDALONE_MODES_REQ_SMARTCARD=() STANDALONE_MODES_REQ_FLASH=(LF_HIDFCBRUTE LF_ICEHID LF_NEXID LF_THAREXDE HF_BOG HF_COLIN HF_ICECLASS HF_LEGICSIM HF_MFCSIM) From bc8761500885f5c1a644712392b376dd5ea2a49a Mon Sep 17 00:00:00 2001 From: nvx Date: Wed, 23 Aug 2023 02:43:18 +1000 Subject: [PATCH 0407/1034] Fix help text for hf iclass esetblk --- client/src/cmdhficlass.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 4a4ac3289..92df71046 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1225,16 +1225,13 @@ static int CmdHFiClassEView(const char *Cmd) { static int CmdHFiClassESetBlk(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf iclass esetblk", - "Display emulator memory.\n" - "Number of bytes to download defaults to 256. Other value is 2048.", - "hf iclass eview\n" - "hf iclass eview -s 2048\n" - "hf iclass eview -s 2048 -v"); + "Sets an individual block in emulator memory.", + "hf iclass esetblk -b 7 -d 0000000000000000"); void *argtable[] = { arg_param_begin, arg_int1("b", "blk", "", "block number"), - arg_str0("d", "data", "", "bytes to write, 16 hex bytes"), + arg_str0("d", "data", "", "bytes to write, 8 hex bytes"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); From 9fdf314347778511ff2323670e440f805fad6220 Mon Sep 17 00:00:00 2001 From: nvx Date: Wed, 23 Aug 2023 03:15:21 +1000 Subject: [PATCH 0408/1034] regenerate doc/commands.json --- doc/commands.json | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/doc/commands.json b/doc/commands.json index f92263843..12509b1e7 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3151,17 +3151,15 @@ }, "hf iclass esetblk": { "command": "hf iclass esetblk", - "description": "Display emulator memory. Number of bytes to download defaults to 256. Other value is 2048.", + "description": "Sets an individual block in emulator memory.", "notes": [ - "hf iclass eview", - "hf iclass eview -s 2048", - "hf iclass eview -s 2048 -v" + "hf iclass esetblk -b 7 -d 0000000000000000" ], "offline": false, "options": [ "-h, --help This help", "-b, --blk block number", - "-d, --data bytes to write, 16 hex bytes" + "-d, --data bytes to write, 8 hex bytes" ], "usage": "hf iclass esetblk [-h] -b [-d ]" }, @@ -7001,7 +6999,6 @@ "description": "Simulate a texkom tag", "notes": [ "hf texkom sim", - "", "hf texkom sim --raw FFFF638C7DC45553 -> simulate TK13 tag with id 8C7DC455", "hf texkom sim --tk17 --raw FFFFCA17F31EC512 -> simulate TK17 tag with id 17F31EC5", "hf texkom sim --id 8C7DC455 -> simulate TK13 tag with id 8C7DC455", @@ -11837,6 +11834,6 @@ "metadata": { "commands_extracted": 686, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-08-21T21:25:03" + "extracted_on": "2023-08-22T17:13:49" } } \ No newline at end of file From a2a31423555aa5d74a869404005d1ddeb6783fa3 Mon Sep 17 00:00:00 2001 From: nvx Date: Wed, 23 Aug 2023 09:27:05 +1000 Subject: [PATCH 0409/1034] Improve iClass SIO and legacy credential detection to improve reliability. Now relies on the legacy config block for SR detection and the end-of-SIO detection no longer partially cuts off the SIO for any dumps I have. --- CHANGELOG.md | 1 + client/src/cmdhficlass.c | 107 +++++++++++++++++++++++---------------- client/src/util.c | 19 +++++++ client/src/util.h | 1 + doc/commands.json | 4 +- 5 files changed, 85 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 06254cec2..b1bd9deb5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed iClass SIO and Legacy credential detection to be more reliable (@nvx) - Added `hf iclass esetblk` - set iClass emulator memory block data (@nvx) - Added cryptorf regressiontests (@iceman1001) - Fixed `cryptorf/sma_multi` - local state used in multithread (@iceman1001) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 92df71046..5204fc488 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1266,6 +1266,11 @@ static int CmdHFiClassESetBlk(const char *Cmd) { } static void iclass_decode_credentials(uint8_t *data) { + if (memcmp(data + (5 * PICOPASS_BLOCK_SIZE), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { + // Not a Legacy or SR card, nothing to do here. + return; + } + BLOCK79ENCRYPTION encryption = (data[(6 * 8) + 7] & 0x03); bool has_values = (memcmp(data + (8 * 7), empty, 8) != 0) && (memcmp(data + (8 * 7), zeros, 8) != 0); if (has_values && encryption == None) { @@ -1290,7 +1295,7 @@ static void iclass_decode_credentials(uint8_t *data) { wiegand_message_t packed = initialize_message_object(top, mid, bot, 0); HIDTryUnpack(&packed); } else { - PrintAndLogEx(INFO, "No credential found"); + PrintAndLogEx(INFO, "No unencrypted legacy credential found"); } } @@ -1515,23 +1520,19 @@ static int CmdHFiClassDecrypt(const char *Cmd) { // decode block 9 has_values = (memcmp(decrypted + (8 * 9), empty, 8) != 0) && (memcmp(decrypted + (8 * 9), zeros, 8) != 0); - if (has_values) { - + if (has_values && use_sc) { uint8_t usr_blk_len = GetNumberBlocksForUserId(decrypted + (8 * 6)); if (usr_blk_len < 3) { - if (use_sc) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "Block 9 decoder"); - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "Block 9 decoder"); + uint8_t pinsize = GetPinSize(decrypted + (8 * 6)); + if (pinsize > 0) { - uint8_t pinsize = GetPinSize(decrypted + (8 * 6)); - if (pinsize > 0) { - - uint64_t pin = bytes_to_num(decrypted + (8 * 9), 5); - char tmp[17] = {0}; - snprintf(tmp, sizeof(tmp), "%."PRIu64, BCD2DEC(pin)); - PrintAndLogEx(INFO, "PIN........................ " _GREEN_("%.*s"), pinsize, tmp); - } + uint64_t pin = bytes_to_num(decrypted + (8 * 9), 5); + char tmp[17] = {0}; + snprintf(tmp, sizeof(tmp), "%."PRIu64, BCD2DEC(pin)); + PrintAndLogEx(INFO, "PIN........................ " _GREEN_("%.*s"), pinsize, tmp); } } } @@ -2628,50 +2629,60 @@ static int CmdHFiClass_loclass(const char *Cmd) { } static void detect_credential(uint8_t *data, bool *legacy, bool *se, bool *sr) { - bool r1 = !memcmp(data + (5 * 8), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", 8); + *legacy = false; + *sr = false; + *se = false; - uint8_t pattern_se[] = {0x05, 0x00}; - bool r2 = byte_strstr(data + (6 * 8), 6 * 8, pattern_se, sizeof(pattern_se)) != -1; + // Legacy AIA + if (!memcmp(data + (5 * PICOPASS_BLOCK_SIZE), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { + *legacy = true; - uint8_t pattern_sr[] = {0x05, 0x00, 0x05, 0x00}; - bool r3 = byte_strstr(data + (11 * 8), 6 * 8, pattern_sr, sizeof(pattern_sr)) != -1; + // SR bit set in legacy config block + if ((data[6 * PICOPASS_BLOCK_SIZE] & 0xA0) == 0xA0) { + // If the card is blank (all FF's) then we'll reach here too, so check for an empty block 10 + // to avoid false positivies + if (memcmp(data + (10 * PICOPASS_BLOCK_SIZE), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { + *sr = true; + } + } - *legacy = (r1) && (data[6 * 8] != 0x30); - *se = (r2) && (data[6 * 8] == 0x30); - *sr = (r3) && (data[10 * 8] == 0x30); - r1 = NULL, r2 = NULL, r3 = NULL; + return; + } + + // SE AIA + if (!memcmp(data + (5 * PICOPASS_BLOCK_SIZE), "\xFF\xFF\xFF\x00\x06\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { + *se = true; + return; + } } // print ASN1 decoded array in TLV view static void printIclassSIO(uint8_t *iclass_dump) { - bool isLegacy, isSE, isSR; detect_credential(iclass_dump, &isLegacy, &isSE, &isSR); - int dlen = 0; uint8_t *sio_start; if (isSE) { - - sio_start = iclass_dump + (6 * 8); - uint8_t pattern_se[] = {0x05, 0x00}; - dlen = byte_strstr(sio_start, 8 * 8, pattern_se, sizeof(pattern_se)); - if (dlen == -1) { - return; - } - dlen += sizeof(pattern_se); + // SE SIO starts at block 6 + sio_start = iclass_dump + (6 * PICOPASS_BLOCK_SIZE); } else if (isSR) { - - sio_start = iclass_dump + (10 * 8); - uint8_t pattern_sr[] = {0x05, 0x00, 0x05, 0x00}; - dlen = byte_strstr(sio_start, 8 * 8, pattern_sr, sizeof(pattern_sr)); - if (dlen == -1) { - return; - } - dlen += sizeof(pattern_sr); + // SR SIO starts at block 10 + sio_start = iclass_dump + (10 * PICOPASS_BLOCK_SIZE); } else { + // No SIO on Legacy credentials return; } + // Readers assume the SIO always fits within 7 blocks (they don't read any further blocks) + // Search backwards to find the last 0x05 0x00 seen at the end of the SIO + const uint8_t pattern_sio_end[] = {0x05, 0x00}; + int dlen = byte_strrstr(sio_start, 7 * PICOPASS_BLOCK_SIZE, pattern_sio_end, 2); + if (dlen == -1) { + return; + } + + dlen += sizeof(pattern_sio_end); + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "---------------------------- " _CYAN_("SIO - RAW") " ----------------------------"); print_hex_noascii_break(sio_start, dlen, 32); @@ -2702,8 +2713,15 @@ void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t e else maxmemcount = 31; - if (startblock == 0) - startblock = 6; + uint8_t pagemap = get_pagemap(hdr); + + if (startblock == 0) { + if (pagemap == PICOPASS_NON_SECURE_PAGEMODE) { + startblock = 3; + } else { + startblock = 6; + } + } if ((endblock > maxmemcount) || (endblock == 0)) endblock = maxmemcount; @@ -2721,7 +2739,6 @@ void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t e , filemaxblock ); */ - uint8_t pagemap = get_pagemap(hdr); bool isLegacy = false, isSE = false, isSR = false; if (filemaxblock >= 17) { @@ -2886,7 +2903,7 @@ static int CmdHFiClassView(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_str1("f", "file", "", "filename of dump (bin/eml/json)"), - arg_int0(NULL, "first", "", "Begin printing from this block (default block 6)"), + arg_int0(NULL, "first", "", "Begin printing from this block (default first user block - 6 or 3 on non secured chips)"), arg_int0(NULL, "last", "", "End printing at this block (default 0, ALL)"), arg_lit0("v", "verbose", "verbose output"), arg_lit0("z", "dense", "dense dump output style"), diff --git a/client/src/util.c b/client/src/util.c index f1e58abe0..30a96a3dc 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -1289,6 +1289,25 @@ int byte_strstr(const uint8_t *src, size_t srclen, const uint8_t *pattern, size_ return -1; } +int byte_strrstr(const uint8_t *src, size_t srclen, const uint8_t *pattern, size_t plen) { + for (int i = srclen - plen; i >= 0; i--) { + // compare only first byte + if (src[i] != pattern[0]) + continue; + + // try to match rest of the pattern + for (int j = plen - 1; j >= 1; j--) { + + if (src[i + j] != pattern[j]) + break; + + if (j == 1) + return i; + } + } + return -1; +} + void sb_append_char(smartbuf *sb, unsigned char c) { if (sb->idx >= sb->size) { sb->size *= 2; diff --git a/client/src/util.h b/client/src/util.h index fa636ce9b..cfaf97167 100644 --- a/client/src/util.h +++ b/client/src/util.h @@ -155,6 +155,7 @@ uint32_t leadingzeros32(uint32_t a); uint64_t leadingzeros64(uint64_t a); int byte_strstr(const uint8_t *src, size_t srclen, const uint8_t *pattern, size_t plen); +int byte_strrstr(const uint8_t *src, size_t srclen, const uint8_t *pattern, size_t plen); struct smartbuf { char *ptr; diff --git a/doc/commands.json b/doc/commands.json index 12509b1e7..cf96b6895 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3403,7 +3403,7 @@ "options": [ "-h, --help This help", "-f, --file filename of dump (bin/eml/json)", - "--first Begin printing from this block (default block 6)", + "--first Begin printing from this block (default first user block - 6 or 3 on non secured chips)", "--last End printing at this block (default 0, ALL)", "-v, --verbose verbose output", "-z, --dense dense dump output style" @@ -11834,6 +11834,6 @@ "metadata": { "commands_extracted": 686, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-08-22T17:13:49" + "extracted_on": "2023-08-22T23:15:58" } } \ No newline at end of file From 760bfbb39901d42df3892bb03e0d999fcde5bb27 Mon Sep 17 00:00:00 2001 From: David Driscoll Date: Wed, 23 Aug 2023 22:05:00 -0400 Subject: [PATCH 0410/1034] Fix macOS errors while building after cryptoRF solvers was added. --- tools/cryptorf/Makefile | 6 ++++++ tools/cryptorf/sma.cpp | 4 +--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/cryptorf/Makefile b/tools/cryptorf/Makefile index 5ff3250e6..32c2c5ab4 100644 --- a/tools/cryptorf/Makefile +++ b/tools/cryptorf/Makefile @@ -8,6 +8,12 @@ MYLDLIBS = -lpthread BINS = cm sm sma sma_multi INSTALLTOOLS = $(BINS) +platform = $(shell uname) + +ifeq ($(platform),Darwin) +CXXFLAGS = -std=c++14 +endif + include ../../Makefile.host # checking platform can be done only after Makefile.host diff --git a/tools/cryptorf/sma.cpp b/tools/cryptorf/sma.cpp index 3fb1da343..9cf5caf40 100644 --- a/tools/cryptorf/sma.cpp +++ b/tools/cryptorf/sma.cpp @@ -671,13 +671,12 @@ static inline void search_gc_candidates_left(const uint64_t lstate_before_gc, co void combine_valid_left_right_states(vector *plcstates, vector *prcstates, vector *pgc_candidates) { vector::iterator itl, itr; - size_t pos, count; + size_t pos; uint64_t gc; bool valid; // Clean up the candidate list pgc_candidates->clear(); - count = 0; for (itl = plcstates->begin(); itl != plcstates->end(); ++itl) { for (itr = prcstates->begin(); itr != prcstates->end(); ++itr) { valid = true; @@ -700,7 +699,6 @@ void combine_valid_left_right_states(vector *plcstates, vector *prcs // printf("%09llx - ",itl->l); // printf("%07llx\n",itr->r); } - count++; } } printf("Found a total of " _YELLOW_("%llu")" combinations, ", ((unsigned long long)plcstates->size()) * prcstates->size()); From 42330fc5ed535b095acd6a320aedab832a265eb8 Mon Sep 17 00:00:00 2001 From: nvx Date: Thu, 24 Aug 2023 15:08:11 +1000 Subject: [PATCH 0411/1034] Misc tidyups replacing magic numbers with defines, better help text, and some added comments --- client/src/cmdhficlass.c | 46 +++++++++++++++++++++------------------- client/src/util.c | 5 +++++ 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 5204fc488..5e271a743 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -42,8 +42,10 @@ #define PICOPASS_BLOCK_SIZE 8 #define NUM_CSNS 9 +#define MAC_ITEM_SIZE 24 // csn(8) + epurse(8) + nr(4) + mac(4) = 24 bytes #define ICLASS_KEYS_MAX 8 #define ICLASS_AUTH_RETRY 10 +#define ICLASS_CFG_BLK_SR_BIT 0xA0 // indicates SIO present when set in block6[0] (legacy tags) #define ICLASS_DECRYPTION_BIN "iclass_decryptionkey.bin" static void print_picopass_info(const picopass_hdr_t *hdr); @@ -54,13 +56,13 @@ static void iclass_set_last_known_card(picopass_hdr_t *card) { memcpy(&iclass_last_known_card, card, sizeof(picopass_hdr_t)); } -static uint8_t empty[8] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; -static uint8_t zeros[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; +static uint8_t empty[PICOPASS_BLOCK_SIZE] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; +static uint8_t zeros[PICOPASS_BLOCK_SIZE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; static int CmdHelp(const char *Cmd); static void printIclassSIO(uint8_t *iclass_dump); -static uint8_t iClass_Key_Table[ICLASS_KEYS_MAX][8] = { +static uint8_t iClass_Key_Table[ICLASS_KEYS_MAX][PICOPASS_BLOCK_SIZE] = { { 0xAE, 0xA6, 0x84, 0xA6, 0xDA, 0xB2, 0x32, 0x78 }, { 0xFD, 0xCB, 0x5A, 0x52, 0xEA, 0x8F, 0x30, 0x90 }, { 0xF0, 0xE1, 0xD2, 0xC3, 0xB4, 0xA5, 0x96, 0x87 }, @@ -747,7 +749,7 @@ static int CmdHFiClassSim(const char *Cmd) { // remember to change the define NUM_CSNS to match. // pre-defined 9 CSN by iceman - uint8_t csns[8 * NUM_CSNS] = { + uint8_t csns[NUM_CSNS * PICOPASS_BLOCK_SIZE] = { 0x01, 0x0A, 0x0F, 0xFF, 0xF7, 0xFF, 0x12, 0xE0, 0x0C, 0x06, 0x0C, 0xFE, 0xF7, 0xFF, 0x12, 0xE0, 0x10, 0x97, 0x83, 0x7B, 0xF7, 0xFF, 0x12, 0xE0, @@ -779,7 +781,7 @@ static int CmdHFiClassSim(const char *Cmd) { PrintAndLogEx(INFO, "press " _YELLOW_("`enter`") " to cancel"); PacketResponseNG resp; clearCommandBuffer(); - SendCommandMIX(CMD_HF_ICLASS_SIMULATE, sim_type, NUM_CSNS, 1, csns, 8 * NUM_CSNS); + SendCommandMIX(CMD_HF_ICLASS_SIMULATE, sim_type, NUM_CSNS, 1, csns, NUM_CSNS * PICOPASS_BLOCK_SIZE); while (WaitForResponseTimeout(CMD_ACK, &resp, 2000) == false) { tries++; @@ -799,7 +801,7 @@ static int CmdHFiClassSim(const char *Cmd) { if (num_mac == 0) break; - size_t datalen = NUM_CSNS * 24; + size_t datalen = NUM_CSNS * MAC_ITEM_SIZE; uint8_t *dump = calloc(datalen, sizeof(uint8_t)); if (!dump) { PrintAndLogEx(WARNING, "Failed to allocate memory"); @@ -811,11 +813,11 @@ static int CmdHFiClassSim(const char *Cmd) { uint8_t i = 0; for (i = 0 ; i < NUM_CSNS ; i++) { //copy CSN - memcpy(dump + i * 24, csns + i * 8, 8); + memcpy(dump + (i * MAC_ITEM_SIZE), csns + i * 8, 8); //copy epurse - memcpy(dump + i * 24 + 8, resp.data.asBytes + i * 16, 8); + memcpy(dump + (i * MAC_ITEM_SIZE) + 8, resp.data.asBytes + i * 16, 8); // NR_MAC (eight bytes from the response) ( 8b csn + 8b epurse == 16) - memcpy(dump + i * 24 + 16, resp.data.asBytes + i * 16 + 8, 8); + memcpy(dump + (i * MAC_ITEM_SIZE) + 16, resp.data.asBytes + i * 16 + 8, 8); } /** Now, save to dumpfile **/ saveFile("iclass_mac_attack", ".bin", dump, datalen); @@ -830,7 +832,7 @@ static int CmdHFiClassSim(const char *Cmd) { PrintAndLogEx(INFO, "press Enter to cancel"); PacketResponseNG resp; clearCommandBuffer(); - SendCommandMIX(CMD_HF_ICLASS_SIMULATE, sim_type, NUM_CSNS, 1, csns, 8 * NUM_CSNS); + SendCommandMIX(CMD_HF_ICLASS_SIMULATE, sim_type, NUM_CSNS, 1, csns, NUM_CSNS * PICOPASS_BLOCK_SIZE); while (WaitForResponseTimeout(CMD_ACK, &resp, 2000) == false) { tries++; @@ -850,25 +852,23 @@ static int CmdHFiClassSim(const char *Cmd) { if (num_mac == 0) break; - size_t datalen = NUM_CSNS * 24; + size_t datalen = NUM_CSNS * MAC_ITEM_SIZE; uint8_t *dump = calloc(datalen, sizeof(uint8_t)); if (!dump) { PrintAndLogEx(WARNING, "Failed to allocate memory"); return PM3_EMALLOC; } -#define MAC_ITEM_SIZE 24 - //KEYROLL 1 //Need zeroes for the CC-field memset(dump, 0, datalen); for (uint8_t i = 0; i < NUM_CSNS ; i++) { // copy CSN - memcpy(dump + i * MAC_ITEM_SIZE, csns + i * 8, 8); //CSN + memcpy(dump + (i * MAC_ITEM_SIZE), csns + i * 8, 8); //CSN // copy EPURSE - memcpy(dump + i * MAC_ITEM_SIZE + 8, resp.data.asBytes + i * 16, 8); + memcpy(dump + (i * MAC_ITEM_SIZE) + 8, resp.data.asBytes + i * 16, 8); // copy NR_MAC (eight bytes from the response) ( 8b csn + 8b epurse == 16) - memcpy(dump + i * MAC_ITEM_SIZE + 16, resp.data.asBytes + i * 16 + 8, 8); + memcpy(dump + (i * MAC_ITEM_SIZE) + 16, resp.data.asBytes + i * 16 + 8, 8); } saveFile("iclass_mac_attack_keyroll_A", ".bin", dump, datalen); @@ -877,11 +877,11 @@ static int CmdHFiClassSim(const char *Cmd) { for (uint8_t i = 0; i < NUM_CSNS; i++) { uint8_t resp_index = (i + NUM_CSNS) * 16; // Copy CSN - memcpy(dump + i * MAC_ITEM_SIZE, csns + i * 8, 8); + memcpy(dump + (i * MAC_ITEM_SIZE), csns + i * 8, 8); // copy EPURSE - memcpy(dump + i * MAC_ITEM_SIZE + 8, resp.data.asBytes + resp_index, 8); + memcpy(dump + (i * MAC_ITEM_SIZE) + 8, resp.data.asBytes + resp_index, 8); // copy NR_MAC (eight bytes from the response) ( 8b csn + 8 epurse == 16) - memcpy(dump + i * MAC_ITEM_SIZE + 16, resp.data.asBytes + resp_index + 8, 8); + memcpy(dump + (i * MAC_ITEM_SIZE) + 16, resp.data.asBytes + resp_index + 8, 8); resp_index++; } saveFile("iclass_mac_attack_keyroll_B", ".bin", dump, datalen); @@ -2638,7 +2638,7 @@ static void detect_credential(uint8_t *data, bool *legacy, bool *se, bool *sr) { *legacy = true; // SR bit set in legacy config block - if ((data[6 * PICOPASS_BLOCK_SIZE] & 0xA0) == 0xA0) { + if ((data[6 * PICOPASS_BLOCK_SIZE] & ICLASS_CFG_BLK_SR_BIT) == ICLASS_CFG_BLK_SR_BIT) { // If the card is blank (all FF's) then we'll reach here too, so check for an empty block 10 // to avoid false positivies if (memcmp(data + (10 * PICOPASS_BLOCK_SIZE), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { @@ -2898,12 +2898,14 @@ static int CmdHFiClassView(const char *Cmd) { CLIParserInit(&ctx, "hf iclass view", "Print a iCLASS tag dump file (bin/eml/json)", "hf iclass view -f hf-iclass-AA162D30F8FF12F1-dump.bin\n" - "hf iclass view --first 1 -f hf-iclass-AA162D30F8FF12F1-dump.bin\n"); + "hf iclass view --first 1 -f hf-iclass-AA162D30F8FF12F1-dump.bin\n\n" + "If --first is not specified it will default to the first user block\n" + "which is block 6 for secured chips or block 3 for non-secured chips"); void *argtable[] = { arg_param_begin, arg_str1("f", "file", "", "filename of dump (bin/eml/json)"), - arg_int0(NULL, "first", "", "Begin printing from this block (default first user block - 6 or 3 on non secured chips)"), + arg_int0(NULL, "first", "", "Begin printing from this block (default first user block)"), arg_int0(NULL, "last", "", "End printing at this block (default 0, ALL)"), arg_lit0("v", "verbose", "verbose output"), arg_lit0("z", "dense", "dense dump output style"), diff --git a/client/src/util.c b/client/src/util.c index 30a96a3dc..e531b51ea 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -1266,6 +1266,8 @@ inline uint64_t leadingzeros64(uint64_t a) { } +// byte_strstr searches for the first occurrence of pattern in src +// returns the byte offset the pattern is found at, or -1 if not found int byte_strstr(const uint8_t *src, size_t srclen, const uint8_t *pattern, size_t plen) { size_t max = srclen - plen + 1; @@ -1289,6 +1291,9 @@ int byte_strstr(const uint8_t *src, size_t srclen, const uint8_t *pattern, size_ return -1; } +// byte_strrstr is like byte_strstr except searches in reverse +// ie it returns the last occurrence of the pattern in src instead of the first +// returns the byte offset the pattern is found at, or -1 if not found int byte_strrstr(const uint8_t *src, size_t srclen, const uint8_t *pattern, size_t plen) { for (int i = srclen - plen; i >= 0; i--) { // compare only first byte From 8dd963d305a31429bba4ae1418b65142fa39cd24 Mon Sep 17 00:00:00 2001 From: nvx Date: Thu, 24 Aug 2023 15:18:39 +1000 Subject: [PATCH 0412/1034] make style --- armsrc/Standalone/hf_cardhopper.c | 527 ++++++++++++++-------------- armsrc/em4x70.c | 16 +- armsrc/fpgaloader.c | 40 +-- armsrc/hitag2_crypto.c | 6 +- armsrc/spiffs.c | 4 +- client/src/proxguiqt.cpp | 14 +- common/commonutil.c | 308 ++++++++-------- doc/commands.json | 9 +- tools/cryptorf/sma.cpp | 2 +- tools/cryptorf/sma_multi.cpp | 2 +- tools/fpga_compress/fpga_compress.c | 2 +- 11 files changed, 471 insertions(+), 459 deletions(-) diff --git a/armsrc/Standalone/hf_cardhopper.c b/armsrc/Standalone/hf_cardhopper.c index 7101b5ae7..cfad35605 100644 --- a/armsrc/Standalone/hf_cardhopper.c +++ b/armsrc/Standalone/hf_cardhopper.c @@ -30,13 +30,13 @@ void ModInfo(void) { - DbpString(" HF - Long-range relay 14a over serial<->IP - a.k.a. CardHopper (Sam Haskins)"); + DbpString(" HF - Long-range relay 14a over serial<->IP - a.k.a. CardHopper (Sam Haskins)"); } typedef struct PACKED { - uint8_t len; - uint8_t dat[255]; + uint8_t len; + uint8_t dat[255]; } packet_t; // Magic numbers @@ -52,283 +52,292 @@ static void become_reader(void); static void select_card(void); static void become_card(void); -static void prepare_emulation(uint8_t*, uint16_t*, uint8_t*, packet_t*); -static void cook_ats(packet_t*, uint8_t, uint8_t); -static bool try_use_canned_response(uint8_t*, int, tag_response_info_t*); -static void reply_with_packet(packet_t*); +static void prepare_emulation(uint8_t *, uint16_t *, uint8_t *, packet_t *); +static void cook_ats(packet_t *, uint8_t, uint8_t); +static bool try_use_canned_response(uint8_t *, int, tag_response_info_t *); +static void reply_with_packet(packet_t *); -static void read_packet(packet_t*); -static void write_packet(packet_t*); +static void read_packet(packet_t *); +static void write_packet(packet_t *); -static bool GetIso14443aCommandFromReaderInterruptible(uint8_t*, uint8_t*, int*); +static bool GetIso14443aCommandFromReaderInterruptible(uint8_t *, uint8_t *, int *); void RunMod(void) { - StandAloneMode(); - DbpString(_CYAN_("[@]") " CardHopper has started - waiting for mode"); - FpgaDownloadAndGo(FPGA_BITSTREAM_HF); + StandAloneMode(); + DbpString(_CYAN_("[@]") " CardHopper has started - waiting for mode"); + FpgaDownloadAndGo(FPGA_BITSTREAM_HF); - clear_trace(); - set_tracing(true); + clear_trace(); + set_tracing(true); - // Indicate we are alive and in CardHopper - LEDsoff(); - LED_A_ON(); - LED_D_ON(); + // Indicate we are alive and in CardHopper + LEDsoff(); + LED_A_ON(); + LED_D_ON(); - while (1) { - WDT_HIT(); + while (1) { + WDT_HIT(); - packet_t modeRx = { 0 }; - read_packet(&modeRx); + packet_t modeRx = { 0 }; + read_packet(&modeRx); - if (memcmp(magicREAD, modeRx.dat, sizeof(magicREAD)) == 0) { - DbpString(_CYAN_("[@]") " I am a READER. I talk to a CARD."); - become_reader(); - } else if (memcmp(magicCARD, modeRx.dat, sizeof(magicCARD)) == 0) { - DbpString(_CYAN_("[@]") " I am a CARD. I talk to a READER."); - become_card(); - } else if (memcmp(magicEND, modeRx.dat, sizeof(magicEND)) == 0) { - break; - } else { - DbpString(_YELLOW_("[!]") " unknown mode!"); - Dbhexdump(modeRx.len, modeRx.dat, true); + if (memcmp(magicREAD, modeRx.dat, sizeof(magicREAD)) == 0) { + DbpString(_CYAN_("[@]") " I am a READER. I talk to a CARD."); + become_reader(); + } else if (memcmp(magicCARD, modeRx.dat, sizeof(magicCARD)) == 0) { + DbpString(_CYAN_("[@]") " I am a CARD. I talk to a READER."); + become_card(); + } else if (memcmp(magicEND, modeRx.dat, sizeof(magicEND)) == 0) { + break; + } else { + DbpString(_YELLOW_("[!]") " unknown mode!"); + Dbhexdump(modeRx.len, modeRx.dat, true); + } } - } - DbpString(_CYAN_("[@]") " exiting ..."); - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - LEDsoff(); + DbpString(_CYAN_("[@]") " exiting ..."); + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + LEDsoff(); } static void become_reader(void) { - iso14443a_setup(FPGA_HF_ISO14443A_READER_MOD); - select_card(); // also sends UID, ATS + iso14443a_setup(FPGA_HF_ISO14443A_READER_MOD); + select_card(); // also sends UID, ATS - DbpString(_CYAN_("[@]") " entering reader main loop ..."); - packet_t packet = { 0 }; - packet_t *rx = &packet; - packet_t *tx = &packet; - uint8_t toCard[256] = { 0 }; - uint8_t parity[MAX_PARITY_SIZE] = { 0 }; + DbpString(_CYAN_("[@]") " entering reader main loop ..."); + packet_t packet = { 0 }; + packet_t *rx = &packet; + packet_t *tx = &packet; + uint8_t toCard[256] = { 0 }; + uint8_t parity[MAX_PARITY_SIZE] = { 0 }; - while(1) { - WDT_HIT(); + while (1) { + WDT_HIT(); - read_packet(rx); - if (memcmp(magicRSRT, rx->dat, sizeof(magicRSRT)) == 0) break; + read_packet(rx); + if (memcmp(magicRSRT, rx->dat, sizeof(magicRSRT)) == 0) break; - memcpy(toCard, rx->dat, rx->len); - AddCrc14A(toCard, rx->len); - ReaderTransmit(toCard, rx->len + 2, NULL); + memcpy(toCard, rx->dat, rx->len); + AddCrc14A(toCard, rx->len); + ReaderTransmit(toCard, rx->len + 2, NULL); - tx->len = ReaderReceive(tx->dat, parity); - if (tx->len == 0) { - tx->len = sizeof(magicERR); - memcpy(tx->dat, magicERR, sizeof(magicERR)); - } else tx->len -= 2; // cut off the CRC + tx->len = ReaderReceive(tx->dat, parity); + if (tx->len == 0) { + tx->len = sizeof(magicERR); + memcpy(tx->dat, magicERR, sizeof(magicERR)); + } else tx->len -= 2; // cut off the CRC - write_packet(tx); - } + write_packet(tx); + } } static void select_card(void) { - iso14a_card_select_t card = { 0 }; - while(1) { - WDT_HIT(); + iso14a_card_select_t card = { 0 }; + while (1) { + WDT_HIT(); - int ret = iso14443a_select_card(NULL, &card, NULL, true, 0, false); - if (ret && ret != 1) - Dbprintf(_RED_("[!]") " Error selecting card: %d", ret); - if (ret == 1) break; + int ret = iso14443a_select_card(NULL, &card, NULL, true, 0, false); + if (ret && ret != 1) + Dbprintf(_RED_("[!]") " Error selecting card: %d", ret); + if (ret == 1) break; - SpinDelay(20); - } + SpinDelay(20); + } - DbpString(_CYAN_("[@]") " UID:"); - Dbhexdump(card.uidlen, card.uid, false); - DbpString(_CYAN_("[@]") " ATS:"); - Dbhexdump(card.ats_len - 2 /* no CRC */, card.ats, false); + DbpString(_CYAN_("[@]") " UID:"); + Dbhexdump(card.uidlen, card.uid, false); + DbpString(_CYAN_("[@]") " ATS:"); + Dbhexdump(card.ats_len - 2 /* no CRC */, card.ats, false); - packet_t tx = { 0 }; - tx.len = card.uidlen; - memcpy(tx.dat, card.uid, tx.len); - write_packet(&tx); + packet_t tx = { 0 }; + tx.len = card.uidlen; + memcpy(tx.dat, card.uid, tx.len); + write_packet(&tx); - tx.len = card.ats_len - 2; - memcpy(tx.dat, card.ats, tx.len); - write_packet(&tx); + tx.len = card.ats_len - 2; + memcpy(tx.dat, card.ats, tx.len); + write_packet(&tx); } static void become_card(void) { - iso14443a_setup(FPGA_HF_ISO14443A_TAGSIM_LISTEN); + iso14443a_setup(FPGA_HF_ISO14443A_TAGSIM_LISTEN); - uint8_t tagType; - uint16_t flags; - uint8_t data[PM3_CMD_DATA_SIZE] = { 0 }; - packet_t ats = { 0 }; - prepare_emulation(&tagType, &flags, data, &ats); + uint8_t tagType; + uint16_t flags; + uint8_t data[PM3_CMD_DATA_SIZE] = { 0 }; + packet_t ats = { 0 }; + prepare_emulation(&tagType, &flags, data, &ats); - tag_response_info_t *canned; - uint32_t cuid; - uint32_t counters[3] = { 0 }; - uint8_t tearings[3] = { 0xbd, 0xbd, 0xbd }; - uint8_t pages; - SimulateIso14443aInit(tagType, flags, data, &canned, &cuid, counters, tearings, &pages); + tag_response_info_t *canned; + uint32_t cuid; + uint32_t counters[3] = { 0 }; + uint8_t tearings[3] = { 0xbd, 0xbd, 0xbd }; + uint8_t pages; + SimulateIso14443aInit(tagType, flags, data, &canned, &cuid, counters, tearings, &pages); - DbpString(_CYAN_("[@]") " Setup done - entering emulation loop"); - int fromReaderLen; - uint8_t fromReaderDat[256] = { 0 }; - uint8_t parity[MAX_PARITY_SIZE] = { 0 }; - packet_t packet = { 0 }; - packet_t *tx = &packet; - packet_t *rx = &packet; + DbpString(_CYAN_("[@]") " Setup done - entering emulation loop"); + int fromReaderLen; + uint8_t fromReaderDat[256] = { 0 }; + uint8_t parity[MAX_PARITY_SIZE] = { 0 }; + packet_t packet = { 0 }; + packet_t *tx = &packet; + packet_t *rx = &packet; - while (1) { - WDT_HIT(); + while (1) { + WDT_HIT(); - if (!GetIso14443aCommandFromReaderInterruptible(fromReaderDat, parity, &fromReaderLen)) { - if (usart_rxdata_available()) { - read_packet(rx); - if (memcmp(magicRSRT, rx->dat, sizeof(magicRSRT)) == 0) { - DbpString(_CYAN_("[@]") " Breaking from reader loop"); - break; + if (!GetIso14443aCommandFromReaderInterruptible(fromReaderDat, parity, &fromReaderLen)) { + if (usart_rxdata_available()) { + read_packet(rx); + if (memcmp(magicRSRT, rx->dat, sizeof(magicRSRT)) == 0) { + DbpString(_CYAN_("[@]") " Breaking from reader loop"); + break; + } + } + continue; } - } - continue; + + // Option 1: Use a canned response + if (try_use_canned_response(fromReaderDat, fromReaderLen, canned)) continue; + + // Option 2: Reply with our cooked ATS + if (fromReaderDat[0] == ISO14443A_CMD_RATS && fromReaderLen == 4) { + reply_with_packet(&ats); + continue; + } + + // Option 3: Relay the message + tx->len = fromReaderLen - 2; // cut off the crc + memcpy(tx->dat, fromReaderDat, tx->len); + write_packet(tx); + + read_packet(rx); + reply_with_packet(rx); } - - // Option 1: Use a canned response - if (try_use_canned_response(fromReaderDat, fromReaderLen, canned)) continue; - - // Option 2: Reply with our cooked ATS - if (fromReaderDat[0] == ISO14443A_CMD_RATS && fromReaderLen == 4) { - reply_with_packet(&ats); - continue; - } - - // Option 3: Relay the message - tx->len = fromReaderLen - 2; // cut off the crc - memcpy(tx->dat, fromReaderDat, tx->len); - write_packet(tx); - - read_packet(rx); - reply_with_packet(rx); - } } static void prepare_emulation(uint8_t *tagType, uint16_t *flags, uint8_t *data, packet_t *ats) { - packet_t tagTypeRx = { 0 }; read_packet(&tagTypeRx); - packet_t timeModeRx = { 0 }; read_packet(&timeModeRx); - packet_t uidRx = { 0 }; read_packet(&uidRx); - read_packet(ats); + packet_t tagTypeRx = { 0 }; + read_packet(&tagTypeRx); + packet_t timeModeRx = { 0 }; + read_packet(&timeModeRx); + packet_t uidRx = { 0 }; + read_packet(&uidRx); + read_packet(ats); - *tagType = tagTypeRx.dat[0]; - Dbprintf(_CYAN_("[@]") " Using tag type: %hhu", *tagType); + *tagType = tagTypeRx.dat[0]; + Dbprintf(_CYAN_("[@]") " Using tag type: %hhu", *tagType); - DbpString(_CYAN_("[@]") " Time control parameters:"); - Dbhexdump(timeModeRx.len, timeModeRx.dat, false); - uint8_t fwi = timeModeRx.dat[0] & 0x0f; - uint8_t sfgi = timeModeRx.dat[1] & 0x0f; - Dbprintf(_CYAN_("[@]") " Parsed as fwi = %hhu, sfgi = %hhu", fwi, sfgi); + DbpString(_CYAN_("[@]") " Time control parameters:"); + Dbhexdump(timeModeRx.len, timeModeRx.dat, false); + uint8_t fwi = timeModeRx.dat[0] & 0x0f; + uint8_t sfgi = timeModeRx.dat[1] & 0x0f; + Dbprintf(_CYAN_("[@]") " Parsed as fwi = %hhu, sfgi = %hhu", fwi, sfgi); - if (fwi == 0xf) { - DbpString(_YELLOW_("[!]") " Refusing to use 15 as FWI - will use 14"); - fwi = 0xe; - } - if (sfgi == 0xf) { - DbpString(_YELLOW_("[!]") " Refusing to use 15 as SFGI - will use 14"); - sfgi = 0xe; - } + if (fwi == 0xf) { + DbpString(_YELLOW_("[!]") " Refusing to use 15 as FWI - will use 14"); + fwi = 0xe; + } + if (sfgi == 0xf) { + DbpString(_YELLOW_("[!]") " Refusing to use 15 as SFGI - will use 14"); + sfgi = 0xe; + } - memcpy(data, uidRx.dat, uidRx.len); - *flags = (uidRx.len == 10 ? FLAG_10B_UID_IN_DATA : (uidRx.len == 7 ? FLAG_7B_UID_IN_DATA : FLAG_4B_UID_IN_DATA)); - DbpString(_CYAN_("[@]") " UID:"); - Dbhexdump(uidRx.len, data, false); - Dbprintf(_CYAN_("[@]") " Flags: %hu", *flags); + memcpy(data, uidRx.dat, uidRx.len); + *flags = (uidRx.len == 10 ? FLAG_10B_UID_IN_DATA : (uidRx.len == 7 ? FLAG_7B_UID_IN_DATA : FLAG_4B_UID_IN_DATA)); + DbpString(_CYAN_("[@]") " UID:"); + Dbhexdump(uidRx.len, data, false); + Dbprintf(_CYAN_("[@]") " Flags: %hu", *flags); - DbpString(_CYAN_("[@]") " Original ATS:"); - Dbhexdump(ats->len, ats->dat, false); - cook_ats(ats, fwi, sfgi); - DbpString(_CYAN_("[@]") " Cooked ATS:"); - Dbhexdump(ats->len, ats->dat, false); + DbpString(_CYAN_("[@]") " Original ATS:"); + Dbhexdump(ats->len, ats->dat, false); + cook_ats(ats, fwi, sfgi); + DbpString(_CYAN_("[@]") " Cooked ATS:"); + Dbhexdump(ats->len, ats->dat, false); } static void cook_ats(packet_t *ats, uint8_t fwi, uint8_t sfgi) { - if (ats->len != ats->dat[0]) { - DbpString(_RED_("[!]") " Malformed ATS - unable to cook; things may go wrong!"); - return; - } + if (ats->len != ats->dat[0]) { + DbpString(_RED_("[!]") " Malformed ATS - unable to cook; things may go wrong!"); + return; + } - // If the ATS is too short (unusual), pad it to length with hopefully-sensible data - // Might be better for the phone side to do this tbh - if (ats->len == 1) { - ats->len = 4; - ats->dat[0] = 0x04; ats->dat[1] = 0x78; ats->dat[2] = 0x77; ats->dat[3] = 0x80; - } else if (ats->len == 2) { - ats->len = 4; - ats->dat[0] = 0x04; ats->dat[2] = 0x77; ats->dat[3] = 0x80; - } else if (ats->len == 3) { - ats->len = 4; - ats->dat[0] = 0x04; ats->dat[3] = 0x80; - } + // If the ATS is too short (unusual), pad it to length with hopefully-sensible data + // Might be better for the phone side to do this tbh + if (ats->len == 1) { + ats->len = 4; + ats->dat[0] = 0x04; + ats->dat[1] = 0x78; + ats->dat[2] = 0x77; + ats->dat[3] = 0x80; + } else if (ats->len == 2) { + ats->len = 4; + ats->dat[0] = 0x04; + ats->dat[2] = 0x77; + ats->dat[3] = 0x80; + } else if (ats->len == 3) { + ats->len = 4; + ats->dat[0] = 0x04; + ats->dat[3] = 0x80; + } - // Set the SFGI as well as the FWI - needed for some older readers (firmware revs?) - uint8_t cookedTB0 = (fwi << 4) | sfgi; - ats->dat[3] = cookedTB0; + // Set the SFGI as well as the FWI - needed for some older readers (firmware revs?) + uint8_t cookedTB0 = (fwi << 4) | sfgi; + ats->dat[3] = cookedTB0; } static bool try_use_canned_response(uint8_t *dat, int len, tag_response_info_t *canned) { - if ((dat[0] == ISO14443A_CMD_REQA || dat[0] == ISO14443A_CMD_WUPA) && len == 1) { - EmSendPrecompiledCmd(canned + RESP_INDEX_ATQA); - return true; - } - - if (dat[1] == 0x20 && len == 2) { - if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT) { - EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC1); - return true; - } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_2) { - EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC2); - return true; - } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_3) { - EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC3); - return true; + if ((dat[0] == ISO14443A_CMD_REQA || dat[0] == ISO14443A_CMD_WUPA) && len == 1) { + EmSendPrecompiledCmd(canned + RESP_INDEX_ATQA); + return true; } - } - if (dat[1] == 0x70 && len == 9) { - if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT) { - EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC1); - return true; - } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_2) { - EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC2); - return true; - } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_3) { - EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC3); - return true; + if (dat[1] == 0x20 && len == 2) { + if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT) { + EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC1); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_2) { + EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC2); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_3) { + EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC3); + return true; + } } - } - if (dat[0] == ISO14443A_CMD_PPS) { - EmSendPrecompiledCmd(canned + RESP_INDEX_PPS); - return true; - } + if (dat[1] == 0x70 && len == 9) { + if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT) { + EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC1); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_2) { + EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC2); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_3) { + EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC3); + return true; + } + } - // No response is expected to these 14a commands - if ((dat[0] == 0xf2 && len == 4) || dat[0] == 0xfa) return true; - if (dat[0] == ISO14443A_CMD_HALT && len == 4) return true; + if (dat[0] == ISO14443A_CMD_PPS) { + EmSendPrecompiledCmd(canned + RESP_INDEX_PPS); + return true; + } - // Ignore Apple ECP2 polling - if (dat[0] == 0x6a) return true; + // No response is expected to these 14a commands + if ((dat[0] == 0xf2 && len == 4) || dat[0] == 0xfa) return true; + if (dat[0] == ISO14443A_CMD_HALT && len == 4) return true; - return false; + // Ignore Apple ECP2 polling + if (dat[0] == 0x6a) return true; + + return false; } @@ -336,73 +345,73 @@ static uint8_t g_responseBuffer [512 ] = { 0 }; static uint8_t g_modulationBuffer[1024] = { 0 }; static void reply_with_packet(packet_t *packet) { - tag_response_info_t response = { 0 }; - response.response = g_responseBuffer; - response.modulation = g_modulationBuffer; + tag_response_info_t response = { 0 }; + response.response = g_responseBuffer; + response.modulation = g_modulationBuffer; - memcpy(response.response, packet->dat, packet->len); - AddCrc14A(response.response, packet->len); - response.response_n = packet->len + 2; + memcpy(response.response, packet->dat, packet->len); + AddCrc14A(response.response, packet->len); + response.response_n = packet->len + 2; - prepare_tag_modulation(&response, sizeof(g_modulationBuffer)); - EmSendPrecompiledCmd(&response); + prepare_tag_modulation(&response, sizeof(g_modulationBuffer)); + EmSendPrecompiledCmd(&response); } static void read_packet(packet_t *packet) { - while(!usart_rxdata_available()) { - WDT_HIT(); - SpinDelayUs(100); - } + while (!usart_rxdata_available()) { + WDT_HIT(); + SpinDelayUs(100); + } - uint32_t dataReceived = usart_read_ng((uint8_t*) packet, sizeof(packet_t)) - 1; - while(dataReceived != packet->len) { - while(!usart_rxdata_available()) WDT_HIT(); + uint32_t dataReceived = usart_read_ng((uint8_t *) packet, sizeof(packet_t)) - 1; + while (dataReceived != packet->len) { + while (!usart_rxdata_available()) WDT_HIT(); - dataReceived += usart_read_ng(packet->dat + dataReceived, 255 - dataReceived); - } - usart_writebuffer_sync(magicACK, sizeof(magicACK)); + dataReceived += usart_read_ng(packet->dat + dataReceived, 255 - dataReceived); + } + usart_writebuffer_sync(magicACK, sizeof(magicACK)); } static void write_packet(packet_t *packet) { - usart_writebuffer_sync((uint8_t*) packet, packet->len + 1); + usart_writebuffer_sync((uint8_t *) packet, packet->len + 1); } static bool GetIso14443aCommandFromReaderInterruptible(uint8_t *received, uint8_t *par, int *len) { - LED_D_OFF(); - FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_ISO14443A | FPGA_HF_ISO14443A_TAGSIM_LISTEN); + LED_D_OFF(); + FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_ISO14443A | FPGA_HF_ISO14443A_TAGSIM_LISTEN); - Uart14aInit(received, par); + Uart14aInit(received, par); - uint8_t b = (uint8_t)AT91C_BASE_SSC->SSC_RHR; - (void)b; + uint8_t b = (uint8_t)AT91C_BASE_SSC->SSC_RHR; + (void)b; - uint8_t flip = 0; - uint16_t checker = 4000; - for (;;) { - WDT_HIT(); + uint8_t flip = 0; + uint16_t checker = 4000; + for (;;) { + WDT_HIT(); - if (flip == 3) { - if (usart_rxdata_available()) - return false; + if (flip == 3) { + if (usart_rxdata_available()) + return false; - flip = 0; + flip = 0; + } + + if (checker-- == 0) { + flip++; + checker = 4000; + } + + if (AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_RXRDY)) { + b = (uint8_t)AT91C_BASE_SSC->SSC_RHR; + if (MillerDecoding(b, 0)) { + *len = GetUart14a()->len; + return true; + } + } } - - if (checker-- == 0) { - flip++; - checker = 4000; - } - - if (AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_RXRDY)) { - b = (uint8_t)AT91C_BASE_SSC->SSC_RHR; - if (MillerDecoding(b, 0)) { - *len = GetUart14a()->len; - return true; - } - } - } - return false; + return false; } diff --git a/armsrc/em4x70.c b/armsrc/em4x70.c index ab73bd153..40eadb890 100644 --- a/armsrc/em4x70.c +++ b/armsrc/em4x70.c @@ -376,27 +376,27 @@ static int bruteforce(const uint8_t address, const uint8_t *rnd, const uint8_t * uint16_t rev_k = reflect16(k); switch (address) { case 9: - c = set_byte(&temp_rnd[0], rev_rnd[0] + ((rev_k ) & 0xFFu)); + c = set_byte(&temp_rnd[0], rev_rnd[0] + ((rev_k) & 0xFFu)); c = set_byte(&temp_rnd[1], rev_rnd[1] + c + ((rev_k >> 8) & 0xFFu)); c = set_byte(&temp_rnd[2], rev_rnd[2] + c); c = set_byte(&temp_rnd[3], rev_rnd[3] + c); c = set_byte(&temp_rnd[4], rev_rnd[4] + c); c = set_byte(&temp_rnd[5], rev_rnd[5] + c); - set_byte( &temp_rnd[6], rev_rnd[6] + c); + set_byte(&temp_rnd[6], rev_rnd[6] + c); break; case 8: - c = set_byte(&temp_rnd[2], rev_rnd[2] + ((rev_k ) & 0xFFu)); + c = set_byte(&temp_rnd[2], rev_rnd[2] + ((rev_k) & 0xFFu)); c = set_byte(&temp_rnd[3], rev_rnd[3] + c + ((rev_k >> 8) & 0xFFu)); c = set_byte(&temp_rnd[4], rev_rnd[4] + c); c = set_byte(&temp_rnd[5], rev_rnd[5] + c); - set_byte( &temp_rnd[6], rev_rnd[6] + c); + set_byte(&temp_rnd[6], rev_rnd[6] + c); break; case 7: - c = set_byte(&temp_rnd[4], rev_rnd[4] + ((rev_k ) & 0xFFu)); + c = set_byte(&temp_rnd[4], rev_rnd[4] + ((rev_k) & 0xFFu)); c = set_byte(&temp_rnd[5], rev_rnd[5] + c + ((rev_k >> 8) & 0xFFu)); - set_byte( &temp_rnd[6], rev_rnd[6] + c); + set_byte(&temp_rnd[6], rev_rnd[6] + c); break; default: @@ -853,8 +853,8 @@ void em4x70_write_pin(const em4x70_data_t *etd, bool ledcontrol) { if (em4x70_read_id()) { // Write new PIN - if ((write((etd->pin ) & 0xFFFF, EM4X70_PIN_WORD_UPPER) == PM3_SUCCESS) && - (write((etd->pin >> 16) & 0xFFFF, EM4X70_PIN_WORD_LOWER) == PM3_SUCCESS)) { + if ((write((etd->pin) & 0xFFFF, EM4X70_PIN_WORD_UPPER) == PM3_SUCCESS) && + (write((etd->pin >> 16) & 0xFFFF, EM4X70_PIN_WORD_LOWER) == PM3_SUCCESS)) { // Now Try to authenticate using the new PIN diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index 2d3f8caab..4d687f338 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -111,27 +111,27 @@ void SetupSpi(int mode) { AT91C_SPI_NCPHA | // Clock Phase data captured on leading edge, changes on following edge (0 << 0); // Clock Polarity inactive state is logic 0 break; -/* - case SPI_LCD_MODE: - AT91C_BASE_SPI->SPI_MR = - ( 0 << 24) | // Delay between chip selects (take default: 6 MCK periods) - (0xB << 16) | // Peripheral Chip Select (selects LCD SPI_NCS2 or PA10) - ( 0 << 7) | // Local Loopback Disabled - ( 1 << 4) | // Mode Fault Detection disabled - ( 0 << 2) | // Chip selects connected directly to peripheral - ( 0 << 1) | // Fixed Peripheral Select - ( 1 << 0); // Master Mode + /* + case SPI_LCD_MODE: + AT91C_BASE_SPI->SPI_MR = + ( 0 << 24) | // Delay between chip selects (take default: 6 MCK periods) + (0xB << 16) | // Peripheral Chip Select (selects LCD SPI_NCS2 or PA10) + ( 0 << 7) | // Local Loopback Disabled + ( 1 << 4) | // Mode Fault Detection disabled + ( 0 << 2) | // Chip selects connected directly to peripheral + ( 0 << 1) | // Fixed Peripheral Select + ( 1 << 0); // Master Mode - AT91C_BASE_SPI->SPI_CSR[2] = - ( 1 << 24) | // Delay between Consecutive Transfers (32 MCK periods) - ( 1 << 16) | // Delay Before SPCK (1 MCK period) - ( 6 << 8) | // Serial Clock Baud Rate (baudrate = MCK/6 = 24MHz/6 = 4M baud - AT91C_SPI_BITS_9 | // Bits per Transfer (9 bits) - ( 0 << 3) | // Chip Select inactive after transfer - ( 1 << 1) | // Clock Phase data captured on leading edge, changes on following edge - ( 0 << 0); // Clock Polarity inactive state is logic 0 - break; -*/ + AT91C_BASE_SPI->SPI_CSR[2] = + ( 1 << 24) | // Delay between Consecutive Transfers (32 MCK periods) + ( 1 << 16) | // Delay Before SPCK (1 MCK period) + ( 6 << 8) | // Serial Clock Baud Rate (baudrate = MCK/6 = 24MHz/6 = 4M baud + AT91C_SPI_BITS_9 | // Bits per Transfer (9 bits) + ( 0 << 3) | // Chip Select inactive after transfer + ( 1 << 1) | // Clock Phase data captured on leading edge, changes on following edge + ( 0 << 0); // Clock Polarity inactive state is logic 0 + break; + */ default: DisableSpi(); break; diff --git a/armsrc/hitag2_crypto.c b/armsrc/hitag2_crypto.c index 9b59b5521..931c17fa8 100644 --- a/armsrc/hitag2_crypto.c +++ b/armsrc/hitag2_crypto.c @@ -90,17 +90,17 @@ uint32_t _hitag2_byte(uint64_t *x) { } void hitag2_cipher_reset(struct hitag2_tag *tag, const uint8_t *iv) { - uint64_t key = ((uint64_t)tag->sectors[2][2] ) | + uint64_t key = ((uint64_t)tag->sectors[2][2]) | ((uint64_t)tag->sectors[2][3] << 8) | ((uint64_t)tag->sectors[1][0] << 16) | ((uint64_t)tag->sectors[1][1] << 24) | ((uint64_t)tag->sectors[1][2] << 32) | ((uint64_t)tag->sectors[1][3] << 40); - uint32_t uid = ((uint32_t)tag->sectors[0][0] ) | + uint32_t uid = ((uint32_t)tag->sectors[0][0]) | ((uint32_t)tag->sectors[0][1] << 8) | ((uint32_t)tag->sectors[0][2] << 16) | ((uint32_t)tag->sectors[0][3] << 24); - uint32_t iv_ = (((uint32_t)(iv[0])) ) | + uint32_t iv_ = (((uint32_t)(iv[0]))) | (((uint32_t)(iv[1])) << 8) | (((uint32_t)(iv[2])) << 16) | (((uint32_t)(iv[3])) << 24); diff --git a/armsrc/spiffs.c b/armsrc/spiffs.c index 359f2f07c..3154bfc0f 100644 --- a/armsrc/spiffs.c +++ b/armsrc/spiffs.c @@ -199,7 +199,7 @@ int rdv40_spiffs_check(void) { void write_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { spiffs_file fd = SPIFFS_open(&fs, filename, SPIFFS_CREAT | SPIFFS_TRUNC | SPIFFS_RDWR, 0); // Note: SPIFFS_write() doesn't declare third parameter as const (but should) - if (SPIFFS_write(&fs, fd, (void*)src, size) < 0) { + if (SPIFFS_write(&fs, fd, (void *)src, size) < 0) { Dbprintf("wr errno %i\n", SPIFFS_errno(&fs)); } SPIFFS_close(&fs, fd); @@ -208,7 +208,7 @@ void write_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { void append_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { spiffs_file fd = SPIFFS_open(&fs, filename, SPIFFS_APPEND | SPIFFS_RDWR, 0); // Note: SPIFFS_write() doesn't declare third parameter as const (but should) - if (SPIFFS_write(&fs, fd, (void*)src, size) < 0) { + if (SPIFFS_write(&fs, fd, (void *)src, size) < 0) { Dbprintf("errno %i\n", SPIFFS_errno(&fs)); } SPIFFS_close(&fs, fd); diff --git a/client/src/proxguiqt.cpp b/client/src/proxguiqt.cpp index e7dfe1018..1c9a05d11 100644 --- a/client/src/proxguiqt.cpp +++ b/client/src/proxguiqt.cpp @@ -854,7 +854,7 @@ void Plot::Zoom(double factor, uint32_t refX) { } } } else { // Zoom out - if (g_GraphPixelsPerPointNew >= (1.0 / ZOOM_LIMIT) ) { + if (g_GraphPixelsPerPointNew >= (1.0 / ZOOM_LIMIT)) { g_GraphPixelsPerPoint = g_GraphPixelsPerPointNew; // shift graph towards refX when zooming out if (refX > g_GraphStart) { @@ -951,7 +951,7 @@ void Plot::wheelEvent(QWheelEvent *event) { Zoom(1.0 / ZOOM_STEP, x); } } else { - Move(PageWidth * delta * move_offset / 120 ); + Move(PageWidth * delta * move_offset / 120); } this->update(); } @@ -981,7 +981,7 @@ void Plot::keyPressEvent(QKeyEvent *event) { if (event->modifiers() & Qt::ControlModifier) offset = 1; else - offset = int(ZOOM_LIMIT/g_GraphPixelsPerPoint); + offset = int(ZOOM_LIMIT / g_GraphPixelsPerPoint); } switch (event->key()) { @@ -990,13 +990,13 @@ void Plot::keyPressEvent(QKeyEvent *event) { if (event->modifiers() & Qt::ControlModifier) { Zoom(ZOOM_STEP, CursorBPos); } else { - Zoom(ZOOM_STEP*2, CursorBPos); + Zoom(ZOOM_STEP * 2, CursorBPos); } } else { if (event->modifiers() & Qt::ControlModifier) { Zoom(ZOOM_STEP, CursorAPos); } else { - Zoom(ZOOM_STEP*2, CursorAPos); + Zoom(ZOOM_STEP * 2, CursorAPos); } } break; @@ -1006,13 +1006,13 @@ void Plot::keyPressEvent(QKeyEvent *event) { if (event->modifiers() & Qt::ControlModifier) { Zoom(1.0 / ZOOM_STEP, CursorBPos); } else { - Zoom(1.0 / (ZOOM_STEP*2), CursorBPos); + Zoom(1.0 / (ZOOM_STEP * 2), CursorBPos); } } else { if (event->modifiers() & Qt::ControlModifier) { Zoom(1.0 / ZOOM_STEP, CursorAPos); } else { - Zoom(1.0 / (ZOOM_STEP*2), CursorAPos); + Zoom(1.0 / (ZOOM_STEP * 2), CursorAPos); } } break; diff --git a/common/commonutil.c b/common/commonutil.c index 11037c2f7..58e694d76 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -162,254 +162,254 @@ uint64_t bytes_to_num(const uint8_t *src, size_t len) { uint16_t MemLeToUint2byte(const uint8_t *data) { return (uint16_t)( - (((uint16_t)(data[1])) << (8*1)) + - (((uint16_t)(data[0])) << (8*0)) - ); + (((uint16_t)(data[1])) << (8 * 1)) + + (((uint16_t)(data[0])) << (8 * 0)) + ); } uint32_t MemLeToUint3byte(const uint8_t *data) { return (uint32_t)( - (((uint32_t)(data[2])) << (8*2)) + - (((uint32_t)(data[1])) << (8*1)) + - (((uint32_t)(data[0])) << (8*0)) - ); + (((uint32_t)(data[2])) << (8 * 2)) + + (((uint32_t)(data[1])) << (8 * 1)) + + (((uint32_t)(data[0])) << (8 * 0)) + ); } uint32_t MemLeToUint4byte(const uint8_t *data) { return (uint32_t)( - (((uint32_t)(data[3])) << (8*3)) + - (((uint32_t)(data[2])) << (8*2)) + - (((uint32_t)(data[1])) << (8*1)) + - (((uint32_t)(data[0])) << (8*0)) - ); + (((uint32_t)(data[3])) << (8 * 3)) + + (((uint32_t)(data[2])) << (8 * 2)) + + (((uint32_t)(data[1])) << (8 * 1)) + + (((uint32_t)(data[0])) << (8 * 0)) + ); } uint64_t MemLeToUint5byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[4])) << (8*4)) + - (((uint64_t)(data[3])) << (8*3)) + - (((uint64_t)(data[2])) << (8*2)) + - (((uint64_t)(data[1])) << (8*1)) + - (((uint64_t)(data[0])) << (8*0)) - ); + (((uint64_t)(data[4])) << (8 * 4)) + + (((uint64_t)(data[3])) << (8 * 3)) + + (((uint64_t)(data[2])) << (8 * 2)) + + (((uint64_t)(data[1])) << (8 * 1)) + + (((uint64_t)(data[0])) << (8 * 0)) + ); } uint64_t MemLeToUint6byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[5])) << (8*5)) + - (((uint64_t)(data[4])) << (8*4)) + - (((uint64_t)(data[3])) << (8*3)) + - (((uint64_t)(data[2])) << (8*2)) + - (((uint64_t)(data[1])) << (8*1)) + - (((uint64_t)(data[0])) << (8*0)) - ); + (((uint64_t)(data[5])) << (8 * 5)) + + (((uint64_t)(data[4])) << (8 * 4)) + + (((uint64_t)(data[3])) << (8 * 3)) + + (((uint64_t)(data[2])) << (8 * 2)) + + (((uint64_t)(data[1])) << (8 * 1)) + + (((uint64_t)(data[0])) << (8 * 0)) + ); } uint64_t MemLeToUint7byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[6])) << (8*6)) + - (((uint64_t)(data[5])) << (8*5)) + - (((uint64_t)(data[4])) << (8*4)) + - (((uint64_t)(data[3])) << (8*3)) + - (((uint64_t)(data[2])) << (8*2)) + - (((uint64_t)(data[1])) << (8*1)) + - (((uint64_t)(data[0])) << (8*0)) - ); + (((uint64_t)(data[6])) << (8 * 6)) + + (((uint64_t)(data[5])) << (8 * 5)) + + (((uint64_t)(data[4])) << (8 * 4)) + + (((uint64_t)(data[3])) << (8 * 3)) + + (((uint64_t)(data[2])) << (8 * 2)) + + (((uint64_t)(data[1])) << (8 * 1)) + + (((uint64_t)(data[0])) << (8 * 0)) + ); } uint64_t MemLeToUint8byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[7])) << (8*7)) + - (((uint64_t)(data[6])) << (8*6)) + - (((uint64_t)(data[5])) << (8*5)) + - (((uint64_t)(data[4])) << (8*4)) + - (((uint64_t)(data[3])) << (8*3)) + - (((uint64_t)(data[2])) << (8*2)) + - (((uint64_t)(data[1])) << (8*1)) + - (((uint64_t)(data[0])) << (8*0)) - ); + (((uint64_t)(data[7])) << (8 * 7)) + + (((uint64_t)(data[6])) << (8 * 6)) + + (((uint64_t)(data[5])) << (8 * 5)) + + (((uint64_t)(data[4])) << (8 * 4)) + + (((uint64_t)(data[3])) << (8 * 3)) + + (((uint64_t)(data[2])) << (8 * 2)) + + (((uint64_t)(data[1])) << (8 * 1)) + + (((uint64_t)(data[0])) << (8 * 0)) + ); } uint16_t MemBeToUint2byte(const uint8_t *data) { return (uint16_t)( - (((uint16_t)(data[0])) << (8*1)) + - (((uint16_t)(data[1])) << (8*0)) - ); + (((uint16_t)(data[0])) << (8 * 1)) + + (((uint16_t)(data[1])) << (8 * 0)) + ); } uint32_t MemBeToUint3byte(const uint8_t *data) { return (uint32_t)( - (((uint32_t)(data[0])) << (8*2)) + - (((uint32_t)(data[1])) << (8*1)) + - (((uint32_t)(data[2])) << (8*0)) - ); + (((uint32_t)(data[0])) << (8 * 2)) + + (((uint32_t)(data[1])) << (8 * 1)) + + (((uint32_t)(data[2])) << (8 * 0)) + ); } uint32_t MemBeToUint4byte(const uint8_t *data) { return (uint32_t)( - (((uint32_t)(data[0])) << (8*3)) + - (((uint32_t)(data[1])) << (8*2)) + - (((uint32_t)(data[2])) << (8*1)) + - (((uint32_t)(data[3])) << (8*0)) - ); + (((uint32_t)(data[0])) << (8 * 3)) + + (((uint32_t)(data[1])) << (8 * 2)) + + (((uint32_t)(data[2])) << (8 * 1)) + + (((uint32_t)(data[3])) << (8 * 0)) + ); } uint64_t MemBeToUint5byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[0])) << (8*4)) + - (((uint64_t)(data[1])) << (8*3)) + - (((uint64_t)(data[2])) << (8*2)) + - (((uint64_t)(data[3])) << (8*1)) + - (((uint64_t)(data[4])) << (8*0)) - ); + (((uint64_t)(data[0])) << (8 * 4)) + + (((uint64_t)(data[1])) << (8 * 3)) + + (((uint64_t)(data[2])) << (8 * 2)) + + (((uint64_t)(data[3])) << (8 * 1)) + + (((uint64_t)(data[4])) << (8 * 0)) + ); } uint64_t MemBeToUint6byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[0])) << (8*5)) + - (((uint64_t)(data[1])) << (8*4)) + - (((uint64_t)(data[2])) << (8*3)) + - (((uint64_t)(data[3])) << (8*2)) + - (((uint64_t)(data[4])) << (8*1)) + - (((uint64_t)(data[5])) << (8*0)) - ); + (((uint64_t)(data[0])) << (8 * 5)) + + (((uint64_t)(data[1])) << (8 * 4)) + + (((uint64_t)(data[2])) << (8 * 3)) + + (((uint64_t)(data[3])) << (8 * 2)) + + (((uint64_t)(data[4])) << (8 * 1)) + + (((uint64_t)(data[5])) << (8 * 0)) + ); } uint64_t MemBeToUint7byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[0])) << (8*6)) + - (((uint64_t)(data[1])) << (8*5)) + - (((uint64_t)(data[2])) << (8*4)) + - (((uint64_t)(data[3])) << (8*3)) + - (((uint64_t)(data[4])) << (8*2)) + - (((uint64_t)(data[5])) << (8*1)) + - (((uint64_t)(data[6])) << (8*0)) - ); + (((uint64_t)(data[0])) << (8 * 6)) + + (((uint64_t)(data[1])) << (8 * 5)) + + (((uint64_t)(data[2])) << (8 * 4)) + + (((uint64_t)(data[3])) << (8 * 3)) + + (((uint64_t)(data[4])) << (8 * 2)) + + (((uint64_t)(data[5])) << (8 * 1)) + + (((uint64_t)(data[6])) << (8 * 0)) + ); } uint64_t MemBeToUint8byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[0])) << (8*7)) + - (((uint64_t)(data[1])) << (8*6)) + - (((uint64_t)(data[2])) << (8*5)) + - (((uint64_t)(data[3])) << (8*4)) + - (((uint64_t)(data[4])) << (8*3)) + - (((uint64_t)(data[5])) << (8*2)) + - (((uint64_t)(data[6])) << (8*1)) + - (((uint64_t)(data[7])) << (8*0)) - ); + (((uint64_t)(data[0])) << (8 * 7)) + + (((uint64_t)(data[1])) << (8 * 6)) + + (((uint64_t)(data[2])) << (8 * 5)) + + (((uint64_t)(data[3])) << (8 * 4)) + + (((uint64_t)(data[4])) << (8 * 3)) + + (((uint64_t)(data[5])) << (8 * 2)) + + (((uint64_t)(data[6])) << (8 * 1)) + + (((uint64_t)(data[7])) << (8 * 0)) + ); } void Uint2byteToMemLe(uint8_t *data, uint16_t value) { - data[0] = (uint8_t)((value >> (8*0)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 0)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); } void Uint3byteToMemLe(uint8_t *data, uint32_t value) { - data[0] = (uint8_t)((value >> (8*0)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); - data[2] = (uint8_t)((value >> (8*2)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 0)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 2)) & 0xffu); } void Uint4byteToMemLe(uint8_t *data, uint32_t value) { - data[0] = (uint8_t)((value >> (8*0)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); - data[2] = (uint8_t)((value >> (8*2)) & 0xffu); - data[3] = (uint8_t)((value >> (8*3)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 0)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 3)) & 0xffu); } void Uint5byteToMemLe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*0)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); - data[2] = (uint8_t)((value >> (8*2)) & 0xffu); - data[3] = (uint8_t)((value >> (8*3)) & 0xffu); - data[4] = (uint8_t)((value >> (8*4)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 0)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 4)) & 0xffu); } void Uint6byteToMemLe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*0)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); - data[2] = (uint8_t)((value >> (8*2)) & 0xffu); - data[3] = (uint8_t)((value >> (8*3)) & 0xffu); - data[4] = (uint8_t)((value >> (8*4)) & 0xffu); - data[5] = (uint8_t)((value >> (8*5)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 0)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 4)) & 0xffu); + data[5] = (uint8_t)((value >> (8 * 5)) & 0xffu); } void Uint7byteToMemLe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*0)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); - data[2] = (uint8_t)((value >> (8*2)) & 0xffu); - data[3] = (uint8_t)((value >> (8*3)) & 0xffu); - data[4] = (uint8_t)((value >> (8*4)) & 0xffu); - data[5] = (uint8_t)((value >> (8*5)) & 0xffu); - data[6] = (uint8_t)((value >> (8*6)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 0)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 4)) & 0xffu); + data[5] = (uint8_t)((value >> (8 * 5)) & 0xffu); + data[6] = (uint8_t)((value >> (8 * 6)) & 0xffu); } void Uint8byteToMemLe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*0)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); - data[2] = (uint8_t)((value >> (8*2)) & 0xffu); - data[3] = (uint8_t)((value >> (8*3)) & 0xffu); - data[4] = (uint8_t)((value >> (8*4)) & 0xffu); - data[5] = (uint8_t)((value >> (8*5)) & 0xffu); - data[6] = (uint8_t)((value >> (8*6)) & 0xffu); - data[7] = (uint8_t)((value >> (8*7)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 0)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 4)) & 0xffu); + data[5] = (uint8_t)((value >> (8 * 5)) & 0xffu); + data[6] = (uint8_t)((value >> (8 * 6)) & 0xffu); + data[7] = (uint8_t)((value >> (8 * 7)) & 0xffu); } void Uint2byteToMemBe(uint8_t *data, uint16_t value) { - data[0] = (uint8_t)((value >> (8*1)) & 0xffu); - data[1] = (uint8_t)((value >> (8*0)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 0)) & 0xffu); } void Uint3byteToMemBe(uint8_t *data, uint32_t value) { - data[0] = (uint8_t)((value >> (8*2)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); - data[2] = (uint8_t)((value >> (8*0)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 0)) & 0xffu); } void Uint4byteToMemBe(uint8_t *data, uint32_t value) { - data[0] = (uint8_t)((value >> (8*3)) & 0xffu); - data[1] = (uint8_t)((value >> (8*2)) & 0xffu); - data[2] = (uint8_t)((value >> (8*1)) & 0xffu); - data[3] = (uint8_t)((value >> (8*0)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 0)) & 0xffu); } void Uint5byteToMemBe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*4)) & 0xffu); - data[1] = (uint8_t)((value >> (8*3)) & 0xffu); - data[2] = (uint8_t)((value >> (8*2)) & 0xffu); - data[3] = (uint8_t)((value >> (8*1)) & 0xffu); - data[4] = (uint8_t)((value >> (8*0)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 4)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 0)) & 0xffu); } void Uint6byteToMemBe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*5)) & 0xffu); - data[1] = (uint8_t)((value >> (8*4)) & 0xffu); - data[2] = (uint8_t)((value >> (8*3)) & 0xffu); - data[3] = (uint8_t)((value >> (8*2)) & 0xffu); - data[4] = (uint8_t)((value >> (8*1)) & 0xffu); - data[5] = (uint8_t)((value >> (8*0)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 5)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 4)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[5] = (uint8_t)((value >> (8 * 0)) & 0xffu); } void Uint7byteToMemBe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*6)) & 0xffu); - data[1] = (uint8_t)((value >> (8*5)) & 0xffu); - data[2] = (uint8_t)((value >> (8*4)) & 0xffu); - data[3] = (uint8_t)((value >> (8*3)) & 0xffu); - data[4] = (uint8_t)((value >> (8*2)) & 0xffu); - data[5] = (uint8_t)((value >> (8*1)) & 0xffu); - data[6] = (uint8_t)((value >> (8*0)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 6)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 5)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 4)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[5] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[6] = (uint8_t)((value >> (8 * 0)) & 0xffu); } void Uint8byteToMemBe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*7)) & 0xffu); - data[1] = (uint8_t)((value >> (8*6)) & 0xffu); - data[2] = (uint8_t)((value >> (8*5)) & 0xffu); - data[3] = (uint8_t)((value >> (8*4)) & 0xffu); - data[4] = (uint8_t)((value >> (8*3)) & 0xffu); - data[5] = (uint8_t)((value >> (8*2)) & 0xffu); - data[6] = (uint8_t)((value >> (8*1)) & 0xffu); - data[7] = (uint8_t)((value >> (8*0)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 7)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 6)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 5)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 4)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[5] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[6] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[7] = (uint8_t)((value >> (8 * 0)) & 0xffu); } // RotateLeft - Ultralight, Desfire diff --git a/doc/commands.json b/doc/commands.json index cf96b6895..895998486 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3397,13 +3397,16 @@ "description": "Print a iCLASS tag dump file (bin/eml/json)", "notes": [ "hf iclass view -f hf-iclass-AA162D30F8FF12F1-dump.bin", - "hf iclass view --first 1 -f hf-iclass-AA162D30F8FF12F1-dump.bin" + "hf iclass view --first 1 -f hf-iclass-AA162D30F8FF12F1-dump.bin", + "", + "If --first is not specified it will default to the first user block", + "which is block 6 for secured chips or block 3 for non-secured chips" ], "offline": true, "options": [ "-h, --help This help", "-f, --file filename of dump (bin/eml/json)", - "--first Begin printing from this block (default first user block - 6 or 3 on non secured chips)", + "--first Begin printing from this block (default first user block)", "--last End printing at this block (default 0, ALL)", "-v, --verbose verbose output", "-z, --dense dense dump output style" @@ -11834,6 +11837,6 @@ "metadata": { "commands_extracted": 686, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-08-22T23:15:58" + "extracted_on": "2023-08-24T05:14:06" } } \ No newline at end of file diff --git a/tools/cryptorf/sma.cpp b/tools/cryptorf/sma.cpp index 3fb1da343..06f1729f3 100644 --- a/tools/cryptorf/sma.cpp +++ b/tools/cryptorf/sma.cpp @@ -859,4 +859,4 @@ int main(int argc, const char *argv[]) { #if defined(__cplusplus) } -#endif \ No newline at end of file +#endif diff --git a/tools/cryptorf/sma_multi.cpp b/tools/cryptorf/sma_multi.cpp index 91cf97d7c..c8f6ec0ec 100644 --- a/tools/cryptorf/sma_multi.cpp +++ b/tools/cryptorf/sma_multi.cpp @@ -1143,4 +1143,4 @@ int main(int argc, const char *argv[]) { #if defined(__cplusplus) } -#endif \ No newline at end of file +#endif diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 152c8627e..ab1d93243 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -262,7 +262,7 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, for (uint16_t j = 0; j < num_outfiles; j++) { if (k * FPGA_INTERLEAVE_SIZE < outfilesizes[j]) { uint16_t chunk = (outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) < FPGA_INTERLEAVE_SIZE) ? - outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) : FPGA_INTERLEAVE_SIZE; + outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) : FPGA_INTERLEAVE_SIZE; fwrite(outbufall + offset, chunk, sizeof(char), outfiles[j]); } From 424e68dff65946bee3d15a041caaea614534a553 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 24 Aug 2023 10:20:01 +0200 Subject: [PATCH 0413/1034] fixing the wrong calculations --- armsrc/iso14443b.c | 53 +++++++++++++++++++++++++---------------- client/src/cmdanalyse.c | 46 +++++++++++++++++------------------ include/iso14b.h | 15 ++++++------ 3 files changed, 63 insertions(+), 51 deletions(-) diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index 8fe502833..7d28255e1 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -39,9 +39,14 @@ * Current timing issues with ISO14443-b implementation * Proxmark3 * Carrier Frequency 13.56MHz +* 1 / 13 560 000 = 73.74 nano seconds ( 0.07374 µs ) + * SSP_CLK runs at 13.56MHz / 4 = 3,39MHz +* 1 / 3 390 000 = 294.98 nano seconds ( 0.2949 µs ) * -* +* 1 ETU = 9.4395 µs = 32 SSP_CLK = 128 FC +* 1 SSP_CLK = 4 FC +* 1 µs 3 SSP_CLK about 14 FC * PROBLEM 1. * ---------- * one way of calculating time, that relates both to PM3 ssp_clk 3.39MHz, ISO freq of 13.56Mhz and ETUs @@ -106,6 +111,9 @@ * */ + + + #ifndef MAX_14B_TIMEOUT // FWT(max) = 4949 ms or 4.95 seconds. // SSP_CLK = 4949000 * 3.39 = 16777120 @@ -122,8 +130,8 @@ // ETU 14 * 9.4395 µS = 132 µS == 0.132ms // TR2, counting from start of PICC EOF 14 ETU. -#define DELAY_ISO14443B_PICC_TO_PCD_READER ETU_TO_SSP(14) -#define DELAY_ISO14443B_PCD_TO_PICC_READER ETU_TO_SSP(15) +#define DELAY_ISO14443B_PICC_TO_PCD_READER HF14_ETU_TO_SSP(14) +#define DELAY_ISO14443B_PCD_TO_PICC_READER HF14_ETU_TO_SSP(15) /* Guard Time (per 14443-2) in ETU * @@ -138,41 +146,41 @@ * TR0 */ #ifndef ISO14B_TR0 -# define ISO14B_TR0 ETU_TO_SSP(32) +# define ISO14B_TR0 HF14_ETU_TO_SSP(16) #endif #ifndef ISO14B_TR0_MAX -# define ISO14B_TR0_MAX ETU_TO_SSP(32) +# define ISO14B_TR0_MAX HF14_ETU_TO_SSP(32) // * TR0 - 32 ETU's maximum for ATQB only // * TR0 - FWT for all other commands -// TR0 max is 151/fsc = 151/848kHz = 302us or 64 samples from FPGA -// 32 ETU * 9.4395 µS == 302 µS -// 32 * 8 = 256 sub carrier cycles, -// 256 / 4 = 64 I/Q pairs. +// TR0 max is 159 µS or 32 samples from FPGA +// 16 ETU * 9.4395 µS == 151 µS +// 16 * 8 = 128 sub carrier cycles, +// 128 / 4 = 32 I/Q pairs. // since 1 I/Q pair after 4 subcarrier cycles at 848kHz subcarrier #endif // 8 ETU = 75 µS == 256 SSP_CLK #ifndef ISO14B_TR0_MIN -# define ISO14B_TR0_MIN ETU_TO_SSP(8) +# define ISO14B_TR0_MIN HF14_ETU_TO_SSP(8) #endif // Synchronization time (per 14443-2) in ETU -// 10 ETU = 94,39 µS == 320 SSP_CLK +// 16 ETU = 151 µS == 512 SSP_CLK #ifndef ISO14B_TR1_MIN -# define ISO14B_TR1_MIN ETU_TO_SSP(10) +# define ISO14B_TR1_MIN HF14_ETU_TO_SSP(16) #endif // Synchronization time (per 14443-2) in ETU // 25 ETU == 236 µS == 800 SSP_CLK #ifndef ISO14B_TR1_MAX -# define ISO14B_TR1 ETU_TO_SSP(25) +# define ISO14B_TR1 HF14_ETU_TO_SSP(25) #endif // Frame Delay Time PICC to PCD (per 14443-3 Amendment 1) in ETU // 14 ETU == 132 µS == 448 SSP_CLK #ifndef ISO14B_TR2 -# define ISO14B_TR2 ETU_TO_SSP(14) +# define ISO14B_TR2 HF14_ETU_TO_SSP(14) #endif // 4sample @@ -440,7 +448,7 @@ static void Uart14bInit(uint8_t *data) { // param timeout accepts ETU static void iso14b_set_timeout(uint32_t timeout_etu) { - uint32_t ssp = ETU_TO_SSP(timeout_etu); + uint32_t ssp = HF14_ETU_TO_SSP(timeout_etu); if (ssp > MAX_14B_TIMEOUT) ssp = MAX_14B_TIMEOUT; @@ -1381,7 +1389,7 @@ static int Get14443bAnswerFromTag(uint8_t *response, uint16_t max_len, uint32_t } if (Demod.len > 0) { - uint32_t sof_time = *eof_time - ETU_TO_SSP( + uint32_t sof_time = *eof_time - HF14_ETU_TO_SSP( (Demod.len * (8 + 2)) // time for byte transfers // + (10) // time for TR1 + (10 + 2) // time for SOF transfer @@ -1401,7 +1409,6 @@ static void TransmitFor14443b_AsReader(uint32_t *start_time) { FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD); - // TR2 minimum 14 ETUs if (*start_time < ISO14B_TR0) { // *start_time = DELAY_ARM_TO_TAG; @@ -1544,7 +1551,7 @@ static void CodeAndTransmit14443bAsReader(const uint8_t *cmd, int len, uint32_t // eof_time in ssp clocks, but bits was added here! // *eof_time = *start_time + (10 * ts->max) + 10 + 2 + 10; - *eof_time = *start_time + ETU_TO_SSP(8 * ts->max); + *eof_time = *start_time + HF14_ETU_TO_SSP(8 * ts->max); LogTrace(cmd, len, *start_time, *eof_time, NULL, true); } @@ -1579,7 +1586,13 @@ int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void CodeAndTransmit14443bAsReader(real_cmd, msg_len + 3, &start_time, &eof_time, true); eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - int len = Get14443bAnswerFromTag(rxdata, rxmaxlen, iso14b_timeout, &eof_time); + +// Activation frame waiting time +// 65536/fc == 4833 µS +// SSP_CLK = 4833 µS * 3.39 = 16384 + + + int len = Get14443bAnswerFromTag(rxdata, rxmaxlen, iso14b_timeout , &eof_time); FpgaDisableTracing(); uint8_t *data_bytes = (uint8_t *) rxdata; @@ -1836,7 +1849,7 @@ int iso14443b_select_xrx_card(iso14b_card_select_t *card) { int slot; for (slot = 0; slot < 4; slot++) { - start_time = eof_time + ETU_TO_SSP(30); //(24); // next slot after 24 ETU + start_time = eof_time + HF14_ETU_TO_SSP(30); //(24); // next slot after 24 ETU retlen = Get14443bAnswerFromTag(x_atqb, sizeof(x_atqb), iso14b_timeout, &eof_time); diff --git a/client/src/cmdanalyse.c b/client/src/cmdanalyse.c index d1e14d694..e8b925292 100644 --- a/client/src/cmdanalyse.c +++ b/client/src/cmdanalyse.c @@ -1116,25 +1116,24 @@ static int CmdAnalyseUnits(const char *Cmd) { PrintAndLogEx(INFO, " 302 US = %i ETU (expect 32) %s", test, (test == 10) ? _GREEN_("ok") : _RED_("fail")); PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "ETU to US conversions"); - double test_us = ETU_TO_US(1); + PrintAndLogEx(INFO, "ETU to Micro seconds (µS) conversions"); + double test_us = HF14_ETU_TO_US(1); PrintAndLogEx(INFO, " 1 ETU = %3.2f US (expect 9.44) %s", test_us, (test_us == 9.44) ? _GREEN_("ok") : _RED_("fail")); - test_us = ETU_TO_US(10); + test_us = HF14_ETU_TO_US(10); PrintAndLogEx(INFO, " 10 ETU = %4.2f US (expect 94.40) %s", test_us, (test_us == 94.40) ? _GREEN_("ok") : _RED_("fail")); - test_us = ETU_TO_US(32); + test_us = HF14_ETU_TO_US(32); PrintAndLogEx(INFO, " 32 ETU = %5.2f US (expect 302.06) %s", test_us, (test_us == 320.06) ? _GREEN_("ok") : _RED_("fail")); - PrintAndLogEx(INFO, "ETU in %f us", ONE_ETU_IN_US); PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "US to SSP CLK 3.39MHz conversions"); - PrintAndLogEx(INFO, " 9 US = %i SSP (expect 32) ", US_TO_SSP(9)); - PrintAndLogEx(INFO, " 10 US = %i SSP (expect 32 or 48) ", US_TO_SSP(10)); - PrintAndLogEx(INFO, " 94 US = %i SSP (expect 320) ", US_TO_SSP(94)); - PrintAndLogEx(INFO, " 95 US = %i SSP (expect 320 or 336) ", US_TO_SSP(95)); - PrintAndLogEx(INFO, " 302 US = %i SSP (expect 1024) ", US_TO_SSP(302)); + PrintAndLogEx(INFO, "Microseconds (µS) to SSP CLK 3.39MHz conversions"); + PrintAndLogEx(INFO, " 9 µS = %i SSP (expect 32) ", US_TO_SSP(9)); + PrintAndLogEx(INFO, " 10 µS = %i SSP (expect 32 or 48) ", US_TO_SSP(10)); + PrintAndLogEx(INFO, " 94 µS = %i SSP (expect 320) ", US_TO_SSP(94)); + PrintAndLogEx(INFO, " 95 µS = %i SSP (expect 320 or 336) ", US_TO_SSP(95)); + PrintAndLogEx(INFO, " 302 µS = %i SSP (expect 1024) ", US_TO_SSP(302)); - PrintAndLogEx(INFO, " 4949000 US = %i SSP ", US_TO_SSP(4949000)); + PrintAndLogEx(INFO, " 4949000 µS = %i SSP ", US_TO_SSP(4949000)); PrintAndLogEx(NORMAL, ""); @@ -1145,22 +1144,21 @@ static int CmdAnalyseUnits(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "ETU to SSP CLK 3.39MHz conversions"); - PrintAndLogEx(INFO, " 1 ETU = %i SSP (expect 32) " _GREEN_("ok"), ETU_TO_SSP(1)); - PrintAndLogEx(INFO, " 10 ETU = %i SSP (expect 320) " _GREEN_("ok"), ETU_TO_SSP(10)); - PrintAndLogEx(INFO, " 32 ETU = %i SSP (expect 1024) " _GREEN_("ok"), ETU_TO_SSP(32)); + PrintAndLogEx(INFO, " 1 ETU = %i SSP (expect 32) " _GREEN_("ok"), HF14_ETU_TO_SSP(1)); + PrintAndLogEx(INFO, " 10 ETU = %i SSP (expect 320) " _GREEN_("ok"), HF14_ETU_TO_SSP(10)); + PrintAndLogEx(INFO, " 32 ETU = %i SSP (expect 1024) " _GREEN_("ok"), HF14_ETU_TO_SSP(32)); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "SSP CLK 3.39MHz to ETU conversions"); - PrintAndLogEx(INFO, "1024 SSP = %i ETU (expect 32) " _GREEN_("ok"), SSP_TO_ETU(1024)); - PrintAndLogEx(INFO, " 320 SSP = %i ETU (expect 10) " _GREEN_("ok"), SSP_TO_ETU(320)); - PrintAndLogEx(INFO, " 32 SSP = %i ETU (expect 1) " _GREEN_("ok"), SSP_TO_ETU(32)); - } else if (etu) { + PrintAndLogEx(INFO, "1024 SSP = %i ETU (expect 32) " _GREEN_("ok"), HF14_SSP_TO_ETU(1024)); + PrintAndLogEx(INFO, " 320 SSP = %i ETU (expect 10) " _GREEN_("ok"), HF14_SSP_TO_ETU(320)); + PrintAndLogEx(INFO, " 32 SSP = %i ETU (expect 1) " _GREEN_("ok"), HF14_SSP_TO_ETU(32)); + } else if (etu > -1) { - PrintAndLogEx(INFO, " %3.2f ETU = %u us ", ETU_TO_US(etu), 0); - PrintAndLogEx(INFO, " %i ETU = %u SSP ", ETU_TO_SSP(etu), 0); - } else if (us) { - PrintAndLogEx(INFO, " %i us = %u ETU ", US_TO_ETU(us), 0); - PrintAndLogEx(INFO, " %i us = %u SSP ", US_TO_SSP(us), 0); + PrintAndLogEx(INFO, " %i ETU = %3.2f µS", etu, HF14_ETU_TO_US(etu)); + PrintAndLogEx(INFO, " %i ETU = %i SSP", etu, HF14_ETU_TO_SSP(etu)); + } else if (us > -1) { + PrintAndLogEx(INFO, " %i µS = %3.2f ETU = %u SSP", us, US_TO_ETU(us), US_TO_SSP(us)); } return PM3_SUCCESS; diff --git a/include/iso14b.h b/include/iso14b.h index a9b55e69c..10995eba0 100644 --- a/include/iso14b.h +++ b/include/iso14b.h @@ -65,17 +65,18 @@ typedef struct { } PACKED iso14b_raw_cmd_t; -#define US_TO_SSP(x) ( (int32_t)((x) * 3.39) ) +#define US_TO_SSP(x) ( (int32_t) ((x) * 3.39) ) #define SSP_TO_US(x) ( (int32_t)((x) / 3.39) ) -#define ETU_TO_SSP(x) ( (int32_t)((x) * 32) ) -#define SSP_TO_ETU(x) ( (int32_t)((x) / 32) ) +#define HF14_ETU_TO_SSP(x) ((x) << 5) // 1 ETU = 32 SSP +#define HF14_SSP_TO_ETU(x) ((x) >> 5) // -#define ONE_ETU_IN_US (12800000.0 / 1356000.0) -#define ETU_TO_US(x) (float)(ONE_ETU_IN_US * (x)) +#define HF14_ETU_TO_US(x) ( (float)((x) * 9.4396) ) +#define HF14_ETU_TO_US_2(x) ( (int32_t)( ((x) * 9439600) / 1000000) ) -// #define ETU_TO_US(x) ( (int32_t)( ((x) * 9440000) / 1000000) ) -#define US_TO_ETU(x) ( (int32_t)( ((x) * 1000000) / 9440000) ) +// #define US_TO_ETU(x) ( (int32_t)( ((x) * 1000000) / 9439600) ) + +#define US_TO_ETU(x) ( (float)((x) / 9.4396) ) #endif // _ISO14B_H_ From 9659bc85fee49011e5648156125ca86525a0a34b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 24 Aug 2023 10:20:28 +0200 Subject: [PATCH 0414/1034] maur keys --- client/dictionaries/mfc_default_keys.dic | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 2e9be89f3..20f20f0bc 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -136,6 +136,11 @@ F1D83F964314 199404281970 199404281998 # +# Data from http://www.proxmark.org/forum/viewtopic.php?pid=25925#p25925 +# Tengo Cards Key A +FFF011223358 +FF9F11223358 +# # more Keys from mfc_default_keys.lua 000000000001 000000000002 @@ -600,6 +605,7 @@ BFB6796A11DB # Data from Salto A/B 6A1987C40A21 7F33625BC129 +6BE9314930D8 # # Data from forum 2338B4913111 From 5e9e7c6b902e005a4d88adc92512d6f08faa08bb Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 24 Aug 2023 10:21:11 +0200 Subject: [PATCH 0415/1034] added missing ISO14443a command WTX --- include/protocols.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/protocols.h b/include/protocols.h index 58b992717..516cdf7d3 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -178,6 +178,7 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define ISO14443A_CMD_RATS 0xE0 #define ISO14443A_CMD_PPS 0xD0 #define ISO14443A_CMD_NXP_DESELECT 0xC2 +#define ISO14443A_CMD_WTX 0xF2 #define MIFARE_SELECT_CT 0x88 #define MIFARE_AUTH_KEYA 0x60 From 279d6486c1d89ab29c3e71fc34dcca58845d776c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 24 Aug 2023 10:22:18 +0200 Subject: [PATCH 0416/1034] stylish --- client/src/cmdlft55xx.c | 61 ++++++++++++++++++++++++++++++++--------- client/src/cmdlft55xx.h | 19 +++++++------ 2 files changed, 58 insertions(+), 22 deletions(-) diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index ffb90513b..75475d161 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -4139,8 +4139,9 @@ static int CmdT55xxSniff(const char *Cmd) { blockAddr = 0; for (uint8_t i = 3; i < 6; i++) { blockAddr <<= 1; - if (data[i] == '1') + if (data[i] == '1') { blockAddr |= 1; + } } blockData = 0; have_data = true; @@ -4155,21 +4156,26 @@ static int CmdT55xxSniff(const char *Cmd) { usedPassword = 0; for (uint8_t i = 2; i <= 33; i++) { usedPassword <<= 1; - if (data[i] == '1') + if (data[i] == '1') { usedPassword |= 1; } + } + // Lock bit 34 blockData = 0; for (uint8_t i = 35; i <= 66; i++) { blockData <<= 1; - if (data[i] == '1') + if (data[i] == '1') { blockData |= 1; } + } + blockAddr = 0; for (uint8_t i = 67; i <= 69; i++) { blockAddr <<= 1; - if (data[i] == '1') + if (data[i] == '1') { blockAddr |= 1; + } } have_data = true; modeText = "Default pwd write"; @@ -4190,20 +4196,24 @@ static int CmdT55xxSniff(const char *Cmd) { blockData = 0; for (uint8_t i = 3; i <= 34; i++) { blockData <<= 1; - if (data[i] == '1') + if (data[i] == '1') { blockData |= 1; } + } + for (uint8_t i = 2; i <= 33; i++) { usedPassword <<= 1; if (data[i] == '1') { usedPassword |= 1; } } + blockAddr = 0; for (uint8_t i = 35; i <= 37; i++) { blockAddr <<= 1; - if (data[i] == '1') + if (data[i] == '1') { blockAddr |= 1; + } } have_data = true; modeText = "Default write/pwd read"; @@ -4227,21 +4237,27 @@ static int CmdT55xxSniff(const char *Cmd) { usedPassword = 0; for (uint8_t i = 5; i <= 36; i++) { usedPassword <<= 1; - if (data[i] == '1') + if (data[i] == '1') { usedPassword |= 1; } + } + blockData = 0; for (uint8_t i = 38; i <= 69; i++) { blockData <<= 1; - if (data[i] == '1') + if (data[i] == '1') { blockData |= 1; } + } + blockAddr = 0; for (uint8_t i = 70; i <= 72; i++) { blockAddr <<= 1; - if (data[i] == '1') + if (data[i] == '1') { blockAddr |= 1; } + } + have_data = true; modeText = "Leading 0 pwd write"; snprintf(pwdText, sizeof(pwdText), " %08X", usedPassword); @@ -4253,10 +4269,29 @@ static int CmdT55xxSniff(const char *Cmd) { // Print results if (have_data) { - if (blockAddr == 7) - PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_YELLOW_("%8s")" | "_YELLOW_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s", modeText, pwdText, dataText, blockAddr, page, minWidth, maxWidth, data); - else - PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_GREEN_("%8s")" | "_GREEN_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s", modeText, pwdText, dataText, blockAddr, page, minWidth, maxWidth, data); + if (blockAddr == 7) { + PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_YELLOW_("%8s")" | "_YELLOW_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s" + , modeText + , pwdText + , dataText + , blockAddr + , page + , minWidth + , maxWidth + , data + ); + } else { + PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_GREEN_("%8s")" | "_GREEN_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s" + , modeText + , pwdText + , dataText + , blockAddr + , page + , minWidth + , maxWidth + , data + ); + } } } diff --git a/client/src/cmdlft55xx.h b/client/src/cmdlft55xx.h index def6a5be6..6dbab378c 100644 --- a/client/src/cmdlft55xx.h +++ b/client/src/cmdlft55xx.h @@ -21,15 +21,15 @@ #include "common.h" -#define T55x7_CONFIGURATION_BLOCK 0x00 -#define T55x7_PWD_BLOCK 0x07 -#define T55x7_TRACE_BLOCK1 0x01 -#define T55x7_TRACE_BLOCK2 0x02 -#define T55x7_PAGE0 0x00 -#define T55x7_PAGE1 0x01 -#define T55x7_PWD 0x00000010 -#define REGULAR_READ_MODE_BLOCK 0xFF -#define T55x7_BLOCK_COUNT 12 +#define T55x7_CONFIGURATION_BLOCK 0x00 +#define T55x7_PWD_BLOCK 0x07 +#define T55x7_TRACE_BLOCK1 0x01 +#define T55x7_TRACE_BLOCK2 0x02 +#define T55x7_PAGE0 0x00 +#define T55x7_PAGE1 0x01 +#define T55x7_PWD 0x00000010 +#define REGULAR_READ_MODE_BLOCK 0xFF +#define T55x7_BLOCK_COUNT 12 // config blocks #define T55X7_DEFAULT_CONFIG_BLOCK 0x000880E8 // ASK, compat mode, data rate 32, manchester, STT, 7 data blocks @@ -70,6 +70,7 @@ #define T55X7_PAC_CONFIG_BLOCK 0x00080080 // NRZ, data rate 32, 4 data blocks #define T55X7_VERICHIP_CONFIG_BLOCK 0x000C0080 // NRZ, data rate 40, 4 data blocks + #define T55X7_bin 0b0010 // Q5 / Termic / T5555 From 62da4017a0c92d02ea8e512d2541b8d1adbb6c75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?An=C5=BEe=20Jen=C5=A1terle?= Date: Thu, 24 Aug 2023 15:26:48 +0200 Subject: [PATCH 0417/1034] Add Slovenian Mercator Pika keys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Anže Jenšterle --- client/dictionaries/mfc_default_keys.dic | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 20f20f0bc..b2d656969 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -2190,3 +2190,6 @@ D201DBB6AB6E 186C59E6AFC9 DDDAA35A9749 9D0D0A829F49 +# Mercator Pika Card, Slovenia +97D77FAE77D3 +5AF445D2B87A From c41c6858073c12f2948a5cc791190cf3f20bf688 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 24 Aug 2023 17:52:12 +0200 Subject: [PATCH 0418/1034] Merged hi_reader and hi_reader_15 into one file hi_reader_15 was a superset of hi_reader, now uses conditional compile from Makefile like the other files to select compilations options --- fpga/Makefile | 1 - fpga/fpga_pm3_top.v | 8 - fpga/hi_reader.v | 170 +++++++++++++--- fpga/hi_reader_15.v | 459 -------------------------------------------- 4 files changed, 139 insertions(+), 499 deletions(-) delete mode 100644 fpga/hi_reader_15.v diff --git a/fpga/Makefile b/fpga/Makefile index 068b75255..1731d4869 100644 --- a/fpga/Makefile +++ b/fpga/Makefile @@ -104,7 +104,6 @@ TARGET_COMMON_FILES += hi_flite.v TARGET_COMMON_FILES += hi_get_trace.v TARGET_COMMON_FILES += hi_iso14443a.v TARGET_COMMON_FILES += hi_reader.v -TARGET_COMMON_FILES += hi_reader_15.v TARGET_COMMON_FILES += hi_simulate.v TARGET_COMMON_FILES += hi_sniffer.v TARGET_COMMON_FILES += lf_edge_detect.v diff --git a/fpga/fpga_pm3_top.v b/fpga/fpga_pm3_top.v index 89bd2e56b..f200bf498 100644 --- a/fpga/fpga_pm3_top.v +++ b/fpga/fpga_pm3_top.v @@ -73,11 +73,7 @@ multiple outputs connected together therefore leading to a failed compilation //`ifdef WITH_LF2 `include "lo_passthru.v" `endif //`ifdef WITH_LF3 `include "lo_adc.v" `endif // -//`ifdef WITH_HF_15 -//`ifdef WITH_HF0 `include "hi_reader_15.v" `endif -//`else //`ifdef WITH_HF0 `include "hi_reader.v" `endif -//`endif //`ifdef WITH_HF1 `include "hi_simulate.v" `endif //`ifdef WITH_HF2 `include "hi_iso14443a.v" `endif //`ifdef WITH_HF3 `include "hi_sniffer.v" `endif @@ -277,11 +273,7 @@ assign mux6_pwr_lo = 1'b1; // HF reader `ifdef WITH_HF0 -`ifdef WITH_HF_15 -hi_reader_15 hr( -`else hi_reader hr( -`endif .ck_1356meg (ck_1356megb), .adc_d (adc_d), .subcarrier_frequency (conf_word[5:4]), diff --git a/fpga/hi_reader.v b/fpga/hi_reader.v index ffa2634d8..434215457 100644 --- a/fpga/hi_reader.v +++ b/fpga/hi_reader.v @@ -13,7 +13,7 @@ // // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- -//`include "define.v" +// with optional support for iso15 2sc mode slected with compiler define WITH_HF_15 module hi_reader( input ck_1356meg, @@ -63,7 +63,6 @@ begin end end - // Let us report a correlation every 64 samples. I.e. // one Q/I pair after 4 subcarrier cycles for the 848kHz subcarrier, // one Q/I pair after 2 subcarrier cycles for the 424kHz subcarriers, @@ -71,10 +70,105 @@ end // We need a 6-bit counter for the timing. reg [5:0] corr_i_cnt; always @(negedge adc_clk) -begin corr_i_cnt <= corr_i_cnt + 1; -end +`ifdef WITH_HF_15 +reg [1:0] fskout = 2'd0; +reg last0 = 1'b0; + +reg [7:0] avg = 8'd0; +reg [127:0] avg128 = 128'd0; +reg [7:0] diff16 = 8'd0; +reg [7:0] diff28 = 8'd0; +reg [7:0] diff32 = 8'd0; + +reg [11:0] match16 = 12'd0; +reg [11:0] match32 = 12'd0; +reg [11:0] match28 = 12'd0; + +always @(negedge adc_clk) +begin + if (corr_i_cnt[0] == 1'b0) // every 2 clock + avg = adc_d[7:1]; + else + begin + avg = avg + adc_d[7:1]; + if (corr_i_cnt[0] == 1'b1) // every 2 clock + begin + if (avg > avg128[63:56]) + diff16 = avg - avg128[63:56]; + else + diff16 = avg128[63:56] - avg; + + if (avg > avg128[111:104]) + diff28 = avg - avg128[111:104]; + else + diff28 = avg128[111:104] - avg; + + if (avg > avg128[127:120]) + diff32 = avg - avg128[127:120]; + else + diff32 = avg128[127:120] - avg; + + avg128[127:8] = avg128[119:0]; + avg128[7:0] = avg; + + if (corr_i_cnt[4:1] == 4'b0000) // every 32 clock (8*4) + begin + match16 = diff16; + match28 = diff28; + match32 = diff32; + end + else + begin + match16 = match16 + diff16; + match28 = match28 + diff28; + match32 = match32 + diff32; + + if (corr_i_cnt[4:1] == 4'b1111) // every 32 clock (8*4) + begin + last0 = (fskout == 2'b0); + if (match16 < 12'd64 && last0) + fskout = 2'b00; // not yet started + else if ((match16 | match28 | match32) == 12'b0) + fskout = 2'b00; // signal likely ended + else if (((match16 <= match28 + 12'd16) && (match16 <= match32+ 12'd16)) || + (match28 <= 12'd16 && match32 <= 12'd16)) + begin + if (!last0) + fskout = 2'b11; // 16 match better than 28 or 32 but already started + end + else + begin + if (match28 < match32) + begin + diff28 = match32 - match28; + diff16 = match16 - match28; + if (diff28*2 > diff16) + fskout = 2'b01; + else if (!last0) + begin + fskout = 2'b01; + end + end + else //if (match32 <= match28) + begin + diff32 = match28 - match32; + diff16 = match16 - match32; + if (diff32*2 > diff16) + fskout = 2'b10; + else if (!last0) + begin + fskout = 2'b10; + end + end + end + end + end + end + end +end +`endif // A couple of registers in which to accumulate the correlations. From the 64 samples // we would add at most 32 times the difference between unmodulated and modulated signal. It should @@ -89,7 +183,6 @@ reg signed [13:0] corr_q_accum; reg signed [7:0] corr_i_out; reg signed [7:0] corr_q_out; - // the amplitude of the subcarrier is sqrt(ci^2 + cq^2). // approximate by amplitude = max(|ci|,|cq|) + 1/2*min(|ci|,|cq|) reg [13:0] corr_amplitude, abs_ci, abs_cq, max_ci_cq; @@ -122,7 +215,6 @@ begin end - // The subcarrier reference signals reg subcarrier_I; reg subcarrier_Q; @@ -130,23 +222,22 @@ reg subcarrier_Q; always @(*) begin if (subcarrier_frequency == `FPGA_HF_READER_SUBCARRIER_848_KHZ) - begin - subcarrier_I = ~corr_i_cnt[3]; - subcarrier_Q = ~(corr_i_cnt[3] ^ corr_i_cnt[2]); - end + begin + subcarrier_I = ~corr_i_cnt[3]; + subcarrier_Q = ~(corr_i_cnt[3] ^ corr_i_cnt[2]); + end else if (subcarrier_frequency == `FPGA_HF_READER_SUBCARRIER_212_KHZ) - begin - subcarrier_I = ~corr_i_cnt[5]; - subcarrier_Q = ~(corr_i_cnt[5] ^ corr_i_cnt[4]); - end + begin + subcarrier_I = ~corr_i_cnt[5]; + subcarrier_Q = ~(corr_i_cnt[5] ^ corr_i_cnt[4]); + end else - begin // 424 kHz - subcarrier_I = ~corr_i_cnt[4]; - subcarrier_Q = ~(corr_i_cnt[4] ^ corr_i_cnt[3]); - end + begin // 424 kHz + subcarrier_I = ~corr_i_cnt[4]; + subcarrier_Q = ~(corr_i_cnt[4] ^ corr_i_cnt[3]); + end end - // ADC data appears on the rising edge, so sample it on the falling edge always @(negedge adc_clk) begin @@ -157,9 +248,20 @@ begin begin if (minor_mode == `FPGA_HF_READER_MODE_SNIFF_AMPLITUDE) begin - // send amplitude plus 2 bits reader signal - corr_i_out <= corr_amplitude[13:6]; - corr_q_out <= {corr_amplitude[5:0], after_hysteresis_prev_prev, after_hysteresis_prev}; +`ifdef WITH_HF_15 + if (subcarrier_frequency == `FPGA_HF_READER_2SUBCARRIERS_424_484_KHZ) + begin + // send amplitude + 2 bits fsk (2sc) signal + 2 bits reader signal + corr_i_out <= corr_amplitude[13:6]; + corr_q_out <= {corr_amplitude[5:2], fskout, after_hysteresis_prev_prev, after_hysteresis_prev}; + end + else +`endif + begin + // send amplitude plus 2 bits reader signal + corr_i_out <= corr_amplitude[13:6]; + corr_q_out <= {corr_amplitude[5:0], after_hysteresis_prev_prev, after_hysteresis_prev}; + end end else if (minor_mode == `FPGA_HF_READER_MODE_SNIFF_IQ) begin @@ -183,13 +285,23 @@ begin end else if (minor_mode == `FPGA_HF_READER_MODE_RECEIVE_AMPLITUDE) begin - // send amplitude - corr_i_out <= {2'b00, corr_amplitude[13:8]}; - corr_q_out <= corr_amplitude[7:0]; +`ifdef WITH_HF_15 + if (subcarrier_frequency == `FPGA_HF_READER_2SUBCARRIERS_424_484_KHZ) + begin + // send 2 bits fsk (2sc) signal + amplitude + corr_i_out <= {fskout, corr_amplitude[13:8]}; + corr_q_out <= corr_amplitude[7:0]; + end + else +`endif + begin + // send amplitude + corr_i_out <= {2'b00, corr_amplitude[13:8]}; + corr_q_out <= corr_amplitude[7:0]; + end end else if (minor_mode == `FPGA_HF_READER_MODE_RECEIVE_IQ) begin - // Send 8 bits of in phase tag signal if (corr_i_accum[13:11] == 3'b000 || corr_i_accum[13:11] == 3'b111) corr_i_out <= corr_i_accum[11:4]; @@ -251,7 +363,6 @@ begin end - // ssp clock and frame signal for communication to and from ARM // _____ _____ _____ _ // ssp_clk | |_____| |_____| |_____| @@ -262,7 +373,6 @@ end // // corr_i_cnt 0 1 2 3 4 5 6 7 8 9 10 11 12 ... // - always @(negedge adc_clk) begin if (corr_i_cnt[1:0] == 2'b00) @@ -280,10 +390,8 @@ begin ssp_frame <= 1'b0; end - assign ssp_din = corr_i_out[7]; - // a jamming signal reg jam_signal; reg [3:0] jam_counter; @@ -333,7 +441,7 @@ assign pwr_oe1 = 1'b0; assign pwr_oe3 = 1'b0; // Unused. -assign pwr_lo = 1'b0; +assign pwr_lo = 1'b0; assign pwr_oe2 = 1'b0; // Debug Output diff --git a/fpga/hi_reader_15.v b/fpga/hi_reader_15.v deleted file mode 100644 index ad41e771c..000000000 --- a/fpga/hi_reader_15.v +++ /dev/null @@ -1,459 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// See LICENSE.txt for the text of the license. -//----------------------------------------------------------------------------- -// modified to add support for iso15 2sc mode - -module hi_reader_15( - input ck_1356meg, - input [7:0] adc_d, - input [1:0] subcarrier_frequency, - input [3:0] minor_mode, - input ssp_dout, - - output ssp_din, - output reg ssp_frame, - output reg ssp_clk, - output adc_clk, - output pwr_lo, - output reg pwr_hi, - output pwr_oe1, - output pwr_oe2, - output pwr_oe3, - output reg pwr_oe4, - output debug -); - -assign adc_clk = ck_1356meg; // sample frequency is 13,56 MHz - -// When we're a reader, we just need to do the BPSK demod; but when we're an -// eavesdropper, we also need to pick out the commands sent by the reader, -// using AM. Do this the same way that we do it for the simulated tag. -reg after_hysteresis, after_hysteresis_prev, after_hysteresis_prev_prev; -reg [11:0] has_been_low_for; -always @(negedge adc_clk) -begin - if (& adc_d[7:0]) after_hysteresis <= 1'b1; - else if (~(| adc_d[7:0])) after_hysteresis <= 1'b0; - - if (after_hysteresis) - begin - has_been_low_for <= 12'd0; - end - else - begin - if (has_been_low_for == 12'd4095) - begin - has_been_low_for <= 12'd0; - after_hysteresis <= 1'b1; - end - else - has_been_low_for <= has_been_low_for + 1; - end -end - - -// Let us report a correlation every 64 samples. I.e. -// one Q/I pair after 4 subcarrier cycles for the 848kHz subcarrier, -// one Q/I pair after 2 subcarrier cycles for the 424kHz subcarriers, -// one Q/I pair for each subcarrier cyle for the 212kHz subcarrier. -// We need a 6-bit counter for the timing. -reg [5:0] corr_i_cnt; -always @(negedge adc_clk) -begin - corr_i_cnt <= corr_i_cnt + 1; -end - - -reg [1:0] fskout = 2'd0; -reg last0 = 1'b0; - -reg [7:0] avg = 8'd0; -reg [127:0] avg128 = 128'd0; -reg [7:0] diff16 = 8'd0; -reg [7:0] diff28 = 8'd0; -reg [7:0] diff32 = 8'd0; - -reg [11:0] match16 = 12'd0; -reg [11:0] match32 = 12'd0; -reg [11:0] match28 = 12'd0; - -always @(negedge adc_clk) -begin - if (corr_i_cnt[0] == 1'b0) // every 2 clock - begin - avg = adc_d[7:1]; - end - else - begin - avg = avg + adc_d[7:1]; - if (corr_i_cnt[0] == 1'b1) // every 2 clock - begin - if (avg > avg128[63:56]) - diff16 = avg - avg128[63:56]; - else - diff16 = avg128[63:56] - avg; - - if (avg > avg128[111:104]) - diff28 = avg - avg128[111:104]; - else - diff28 = avg128[111:104] - avg; - - if (avg > avg128[127:120]) - diff32 = avg - avg128[127:120]; - else - diff32 = avg128[127:120] - avg; - - avg128[127:8] = avg128[119:0]; - avg128[7:0] = avg; - - - if (corr_i_cnt[4:1] == 4'b0000) // every 32 clock (8*4) - begin - match16 = diff16; - match28 = diff28; - match32 = diff32; - end - else - begin - match16 = match16 + diff16; - match28 = match28 + diff28; - match32 = match32 + diff32; - - if (corr_i_cnt[4:1] == 4'b1111) // every 32 clock (8*4) - begin - last0 = (fskout == 2'b0); - if (match16 < 12'd64 && last0) - fskout = 2'b00; // not yet started - else if ((match16 | match28 | match32) == 12'b0) - fskout = 2'b00; // signal likely ended - else if (((match16 <= match28 + 12'd16) && (match16 <= match32+ 12'd16)) || - (match28 <= 12'd16 && match32 <= 12'd16)) - begin - if (!last0) - fskout = 2'b11; // 16 match better than 28 or 32 but already started - end - else - begin - if (match28 < match32) - begin - diff28 = match32 - match28; - diff16 = match16 - match28; - if (diff28*2 > diff16) - fskout = 2'b01; - else if (!last0) - begin - fskout = 2'b01; - end - end - else //if (match32 <= match28) - begin - diff32 = match28 - match32; - diff16 = match16 - match32; - if (diff32*2 > diff16) - fskout = 2'b10; - else if (!last0) - begin - fskout = 2'b10; - end - end - end - end - end - end - end -end - - -// A couple of registers in which to accumulate the correlations. From the 64 samples -// we would add at most 32 times the difference between unmodulated and modulated signal. It should -// be safe to assume that a tag will not be able to modulate the carrier signal by more than 25%. -// 32 * 255 * 0,25 = 2040, which can be held in 11 bits. Add 1 bit for sign. -// Temporary we might need more bits. For the 212kHz subcarrier we could possible add 32 times the -// maximum signal value before a first subtraction would occur. 32 * 255 = 8160 can be held in 13 bits. -// Add one bit for sign -> need 14 bit registers but final result will fit into 12 bits. -reg signed [13:0] corr_i_accum; -reg signed [13:0] corr_q_accum; -// we will report maximum 8 significant bits -reg signed [7:0] corr_i_out; -reg signed [7:0] corr_q_out; - - -// the amplitude of the subcarrier is sqrt(ci^2 + cq^2). -// approximate by amplitude = max(|ci|,|cq|) + 1/2*min(|ci|,|cq|) -reg [13:0] corr_amplitude, abs_ci, abs_cq, max_ci_cq; -reg [12:0] min_ci_cq_2; // min_ci_cq / 2 - -always @(*) -begin - if (corr_i_accum[13] == 1'b0) - abs_ci <= corr_i_accum; - else - abs_ci <= -corr_i_accum; - - if (corr_q_accum[13] == 1'b0) - abs_cq <= corr_q_accum; - else - abs_cq <= -corr_q_accum; - - if (abs_ci > abs_cq) - begin - max_ci_cq <= abs_ci; - min_ci_cq_2 <= abs_cq / 2; - end - else - begin - max_ci_cq <= abs_cq; - min_ci_cq_2 <= abs_ci / 2; - end - - corr_amplitude <= max_ci_cq + min_ci_cq_2; - -end - - -// The subcarrier reference signals -reg subcarrier_I; -reg subcarrier_Q; - -always @(*) -begin - if (subcarrier_frequency == `FPGA_HF_READER_SUBCARRIER_848_KHZ) - begin - subcarrier_I = ~corr_i_cnt[3]; - subcarrier_Q = ~(corr_i_cnt[3] ^ corr_i_cnt[2]); - end - else if (subcarrier_frequency == `FPGA_HF_READER_SUBCARRIER_212_KHZ) - begin - subcarrier_I = ~corr_i_cnt[5]; - subcarrier_Q = ~(corr_i_cnt[5] ^ corr_i_cnt[4]); - end - else - begin // 424 kHz - subcarrier_I = ~corr_i_cnt[4]; - subcarrier_Q = ~(corr_i_cnt[4] ^ corr_i_cnt[3]); - end -end - - -// ADC data appears on the rising edge, so sample it on the falling edge -always @(negedge adc_clk) -begin - // These are the correlators: we correlate against in-phase and quadrature - // versions of our reference signal, and keep the (signed) results or the - // resulting amplitude to send out later over the SSP. - if (corr_i_cnt == 6'd0) - begin - if (minor_mode == `FPGA_HF_READER_MODE_SNIFF_AMPLITUDE) - begin - if (subcarrier_frequency == `FPGA_HF_READER_2SUBCARRIERS_424_484_KHZ) - begin - // send amplitude + 2 bits fsk (2sc) signal + 2 bits reader signal - corr_i_out <= corr_amplitude[13:6]; - corr_q_out <= {corr_amplitude[5:2], fskout, after_hysteresis_prev_prev, after_hysteresis_prev}; - end - else - begin - // send amplitude plus 2 bits reader signal - corr_i_out <= corr_amplitude[13:6]; - corr_q_out <= {corr_amplitude[5:0], after_hysteresis_prev_prev, after_hysteresis_prev}; - end - end - else if (minor_mode == `FPGA_HF_READER_MODE_SNIFF_IQ) - begin - // Send 7 most significant bits of in phase tag signal (signed), plus 1 bit reader signal - if (corr_i_accum[13:11] == 3'b000 || corr_i_accum[13:11] == 3'b111) - corr_i_out <= {corr_i_accum[11:5], after_hysteresis_prev_prev}; - else // truncate to maximum value - if (corr_i_accum[13] == 1'b0) - corr_i_out <= {7'b0111111, after_hysteresis_prev_prev}; - else - corr_i_out <= {7'b1000000, after_hysteresis_prev_prev}; - - // Send 7 most significant bits of quadrature phase tag signal (signed), plus 1 bit reader signal - if (corr_q_accum[13:11] == 3'b000 || corr_q_accum[13:11] == 3'b111) - corr_q_out <= {corr_q_accum[11:5], after_hysteresis_prev}; - else // truncate to maximum value - if (corr_q_accum[13] == 1'b0) - corr_q_out <= {7'b0111111, after_hysteresis_prev}; - else - corr_q_out <= {7'b1000000, after_hysteresis_prev}; - end - else if (minor_mode == `FPGA_HF_READER_MODE_RECEIVE_AMPLITUDE) - begin - if (subcarrier_frequency == `FPGA_HF_READER_2SUBCARRIERS_424_484_KHZ) - begin - // send 2 bits fsk (2sc) signal + amplitude - corr_i_out <= {fskout, corr_amplitude[13:8]}; - corr_q_out <= corr_amplitude[7:0]; - end - else - begin - // send amplitude - corr_i_out <= {2'b00, corr_amplitude[13:8]}; - corr_q_out <= corr_amplitude[7:0]; - end - end - else if (minor_mode == `FPGA_HF_READER_MODE_RECEIVE_IQ) - begin - // Send 8 bits of in phase tag signal - if (corr_i_accum[13:11] == 3'b000 || corr_i_accum[13:11] == 3'b111) - corr_i_out <= corr_i_accum[11:4]; - else // truncate to maximum value - if (corr_i_accum[13] == 1'b0) - corr_i_out <= 8'b01111111; - else - corr_i_out <= 8'b10000000; - - // Send 8 bits of quadrature phase tag signal - if (corr_q_accum[13:11] == 3'b000 || corr_q_accum[13:11] == 3'b111) - corr_q_out <= corr_q_accum[11:4]; - else // truncate to maximum value - if (corr_q_accum[13] == 1'b0) - corr_q_out <= 8'b01111111; - else - corr_q_out <= 8'b10000000; - end - - // for each Q/I pair report two reader signal samples when sniffing. Store the 1st. - after_hysteresis_prev_prev <= after_hysteresis; - - // Initialize next correlation. - // Both I and Q reference signals are high when corr_i_nct == 0. Therefore need to accumulate. - corr_i_accum <= $signed({1'b0, adc_d}); - corr_q_accum <= $signed({1'b0, adc_d}); - end - else - begin - if (subcarrier_I) - corr_i_accum <= corr_i_accum + $signed({1'b0, adc_d}); - else - corr_i_accum <= corr_i_accum - $signed({1'b0, adc_d}); - - if (subcarrier_Q) - corr_q_accum <= corr_q_accum + $signed({1'b0, adc_d}); - else - corr_q_accum <= corr_q_accum - $signed({1'b0, adc_d}); - end - - // for each Q/I pair report two reader signal samples when sniffing. Store the 2nd. - if (corr_i_cnt == 6'd32) - after_hysteresis_prev <= after_hysteresis; - - // Then the result from last time is serialized and send out to the ARM. - // We get one report each cycle, and each report is 16 bits, so the - // ssp_clk should be the adc_clk divided by 64/16 = 4. - // ssp_clk frequency = 13,56MHz / 4 = 3.39MHz - - if (corr_i_cnt[1:0] == 2'b00) - begin - // Don't shift if we just loaded new data, obviously. - if (corr_i_cnt != 6'd0) - begin - corr_i_out[7:0] <= {corr_i_out[6:0], corr_q_out[7]}; - corr_q_out[7:1] <= corr_q_out[6:0]; - end - end - -end - - -// ssp clock and frame signal for communication to and from ARM -// _____ _____ _____ _ -// ssp_clk | |_____| |_____| |_____| -// _____ -// ssp_frame ___| |____________________________ -// ___________ ___________ ___________ _ -// ssp_d_in X___________X___________X___________X_ -// -// corr_i_cnt 0 1 2 3 4 5 6 7 8 9 10 11 12 ... -// - -always @(negedge adc_clk) -begin - if (corr_i_cnt[1:0] == 2'b00) - ssp_clk <= 1'b1; - - if (corr_i_cnt[1:0] == 2'b10) - ssp_clk <= 1'b0; - - // set ssp_frame signal for corr_i_cnt = 1..3 - // (send one frame with 16 Bits) - if (corr_i_cnt == 6'd1) - ssp_frame <= 1'b1; - - if (corr_i_cnt == 6'd3) - ssp_frame <= 1'b0; -end - - -assign ssp_din = corr_i_out[7]; - - -// a jamming signal -reg jam_signal; -reg [3:0] jam_counter; - -always @(negedge adc_clk) -begin - if (corr_i_cnt == 6'd0) - begin - jam_counter <= jam_counter + 1; - jam_signal <= jam_counter[1] ^ jam_counter[3]; - end -end - -always @(*) -begin - if (minor_mode == `FPGA_HF_READER_MODE_SEND_SHALLOW_MOD) - begin - pwr_hi = ck_1356meg; - pwr_oe4 = ssp_dout; - end - else if (minor_mode == `FPGA_HF_READER_MODE_SEND_FULL_MOD) - begin - pwr_hi = ck_1356meg & ~ssp_dout; - pwr_oe4 = 1'b0; - end - else if (minor_mode == `FPGA_HF_READER_MODE_SEND_JAM) - begin - pwr_hi = ck_1356meg & jam_signal; - pwr_oe4 = 1'b0; - end - else if (minor_mode == `FPGA_HF_READER_MODE_SNIFF_IQ - || minor_mode == `FPGA_HF_READER_MODE_SNIFF_AMPLITUDE - || minor_mode == `FPGA_HF_READER_MODE_SNIFF_PHASE) - begin // all off - pwr_hi = 1'b0; - pwr_oe4 = 1'b0; - end - else // receiving from tag - begin - pwr_hi = ck_1356meg; - pwr_oe4 = 1'b0; - end -end - -// always on -assign pwr_oe1 = 1'b0; -assign pwr_oe3 = 1'b0; - -// Unused. -assign pwr_lo = 1'b0; -assign pwr_oe2 = 1'b0; - -// Debug Output -assign debug = corr_i_cnt[3]; - -endmodule From 66b1758278170df8b66c645a163f32eb16988003 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 24 Aug 2023 18:06:44 +0200 Subject: [PATCH 0419/1034] Removed commented out includes Include statements in individual files are not required when compiling the code the correct way as a project with an explicitly defined work library. The Makefile exactly replicates the compilation process of the ISE environment and generates the required project files. --- fpga/fpga_icopyx_hf.v | 8 -------- fpga/fpga_icopyx_lf.v | 7 ------- fpga/fpga_icopyx_top.v | 5 ----- fpga/fpga_pm3_top.v | 15 +-------------- fpga/hi_get_trace.v | 1 - fpga/hi_iso14443a.v | 1 - fpga/hi_simulate.v | 1 - fpga/lf_edge_detect.v | 3 --- fpga/lo_edge_detect.v | 3 --- fpga/mux16.v | 3 --- fpga/mux2_onein.v | 15 +++++++++++++-- fpga/mux2_oneout.v | 15 +++++++++++++-- fpga/mux8.v | 3 --- 13 files changed, 27 insertions(+), 53 deletions(-) diff --git a/fpga/fpga_icopyx_hf.v b/fpga/fpga_icopyx_hf.v index b7730875d..233c1aeab 100644 --- a/fpga/fpga_icopyx_hf.v +++ b/fpga/fpga_icopyx_hf.v @@ -20,14 +20,6 @@ // frequency modes, the FPGA might perform some demodulation first, to // reduce the amount of data that we must send to the ARM. //----------------------------------------------------------------------------- -//`include "define.v" - -//`include "hi_reader.v" -//`include "hi_simulate.v" -//`include "hi_iso14443a.v" -//`include "hi_flite.v" -//`include "hi_sniffer.v" -//`include "hi_get_trace.v" module fpga_hf( input spck, diff --git a/fpga/fpga_icopyx_lf.v b/fpga/fpga_icopyx_lf.v index 0ca4739b7..b1b890b79 100644 --- a/fpga/fpga_icopyx_lf.v +++ b/fpga/fpga_icopyx_lf.v @@ -20,13 +20,6 @@ // frequency modes, the FPGA might perform some demodulation first, to // reduce the amount of data that we must send to the ARM. //----------------------------------------------------------------------------- -//`include "define.v" - -//`include "lo_read.v" -//`include "lo_passthru.v" -//`include "lo_edge_detect.v" -//`include "lo_adc.v" -//`include "clk_divider.v" module fpga_lf( input spck, diff --git a/fpga/fpga_icopyx_top.v b/fpga/fpga_icopyx_top.v index 81aacb73c..39981e6cf 100644 --- a/fpga/fpga_icopyx_top.v +++ b/fpga/fpga_icopyx_top.v @@ -20,11 +20,6 @@ // frequency modes, the FPGA might perform some demodulation first, to // reduce the amount of data that we must send to the ARM. //----------------------------------------------------------------------------- -//`include "fpga_lf.v" -//`include "fpga_hf.v" -//`include "mux2_onein.v" -//`include "mux2_oneout.v" -//`include "util.v" module fpga_top( input spck, diff --git a/fpga/fpga_pm3_top.v b/fpga/fpga_pm3_top.v index f200bf498..89b03d3ad 100644 --- a/fpga/fpga_pm3_top.v +++ b/fpga/fpga_pm3_top.v @@ -20,18 +20,8 @@ // frequency modes, the FPGA might perform some demodulation first, to // reduce the amount of data that we must send to the ARM. //----------------------------------------------------------------------------- -/* -Once upon a time the FPGA had a 16 input mux so we could have all LF and HF modules enabled and selectable -As the functionality grew, we run out of space in the FPGA and we had to split into an "LF only" and an "HF only" FPGA bitstream -But even then after a while it was not possible to fit all the HF functions at the same time so now we have multiple "HF only" bitstreams -For example "Felica but without ISO14443", or "ISO14443 but without Felica" or "HF_15 but without Felica and ISO14443" -Because of all of the above, you can not enable both HF and LF modes at the same time, because some LF modules outputs -map to the same mux inputs as some HF modules outputs (thanks to reducing the mux from 16 to 8 inputs) and you can not have -multiple outputs connected together therefore leading to a failed compilation -*/ - -// These defines are meant to be passed by the Makefile so do not uncomment them here +// These defines are for reference only, they are passed by the Makefile so do not uncomment them here // Proxmark3 RDV4 target //`define PM3RDV4 // Proxmark3 generic target @@ -64,9 +54,6 @@ multiple outputs connected together therefore leading to a failed compilation // WITH_HF5 enables module get trace //`define WITH_HF5 -//`include "define.v" -//`include "util.v" -// //`ifdef WITH_LF `include "clk_divider.v" `endif //`ifdef WITH_LF0 `include "lo_read.v" `endif //`ifdef WITH_LF1 `include "lo_edge_detect.v" `endif diff --git a/fpga/hi_get_trace.v b/fpga/hi_get_trace.v index 9bf32bc64..cd33173b2 100644 --- a/fpga/hi_get_trace.v +++ b/fpga/hi_get_trace.v @@ -13,7 +13,6 @@ // // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- -//`include "define.v" module hi_get_trace( input ck_1356megb, diff --git a/fpga/hi_iso14443a.v b/fpga/hi_iso14443a.v index 6fd450528..182b66f7e 100644 --- a/fpga/hi_iso14443a.v +++ b/fpga/hi_iso14443a.v @@ -14,7 +14,6 @@ // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- // ISO14443-A support for the Proxmark III -//`include "define.v" module hi_iso14443a( input ck_1356meg, diff --git a/fpga/hi_simulate.v b/fpga/hi_simulate.v index 97346eb9b..2d8ff2771 100644 --- a/fpga/hi_simulate.v +++ b/fpga/hi_simulate.v @@ -30,7 +30,6 @@ // // Jonathan Westhues, October 2006 //----------------------------------------------------------------------------- -//`include "define.v" module hi_simulate( input ck_1356meg, diff --git a/fpga/lf_edge_detect.v b/fpga/lf_edge_detect.v index 2a58331d1..1e4cd0cce 100644 --- a/fpga/lf_edge_detect.v +++ b/fpga/lf_edge_detect.v @@ -15,9 +15,6 @@ // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- -// input clk is 24MHz -//`include "min_max_tracker.v" - module lf_edge_detect( input clk, input [7:0] adc_d, diff --git a/fpga/lo_edge_detect.v b/fpga/lo_edge_detect.v index c820466f7..9bf408cc7 100644 --- a/fpga/lo_edge_detect.v +++ b/fpga/lo_edge_detect.v @@ -25,9 +25,6 @@ // - ssp_frame (wired to TIOA1 on the arm) for the edge detection/state // - ssp_clk: cross_lo -//`include "lp20khz_1MSa_iir_filter.v" -//`include "lf_edge_detect.v" - module lo_edge_detect( input pck0, input pck_divclk, diff --git a/fpga/mux16.v b/fpga/mux16.v index 1d9777706..b22ee6bf7 100644 --- a/fpga/mux16.v +++ b/fpga/mux16.v @@ -13,9 +13,6 @@ // // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- -// -// General-purpose miscellany. -// // 16 inputs to 1 output multiplexer module mux16( diff --git a/fpga/mux2_onein.v b/fpga/mux2_onein.v index baefa72c8..24a53bbe4 100644 --- a/fpga/mux2_onein.v +++ b/fpga/mux2_onein.v @@ -1,9 +1,20 @@ //----------------------------------------------------------------------------- -// Two way MUX. +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. // -// kombi, 2020.05 +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- +// 2 inputs to 1 output multiplexer module mux2_one( input [1:0] sel, output reg y, diff --git a/fpga/mux2_oneout.v b/fpga/mux2_oneout.v index fa61205a2..d312b68c6 100644 --- a/fpga/mux2_oneout.v +++ b/fpga/mux2_oneout.v @@ -1,9 +1,20 @@ //----------------------------------------------------------------------------- -// Two way MUX. +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. // -// kombi, 2020.05 +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- +// 1 input to 2 outputs multiplexer module mux2_oneout( input [1:0] sel, input y, diff --git a/fpga/mux8.v b/fpga/mux8.v index d9118d243..1918db2d8 100644 --- a/fpga/mux8.v +++ b/fpga/mux8.v @@ -13,9 +13,6 @@ // // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- -// -// General-purpose miscellany. -// // 8 inputs to 1 output multiplexer module mux8( From 3e4b7d07ff0a4effbc06b114a373bc3b4fa97764 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 24 Aug 2023 18:21:07 +0200 Subject: [PATCH 0420/1034] Whitespace, formatting --- fpga/clk_divider.v | 2 +- fpga/fpga_icopyx_lf.v | 8 +- fpga/hi_flite.v | 378 ++++++++++++++++++++--------------------- fpga/hi_get_trace.v | 16 +- fpga/hi_iso14443a.v | 49 ++---- fpga/hi_simulate.v | 19 +-- fpga/lf_edge_detect.v | 120 ++++++------- fpga/lo_edge_detect.v | 4 +- fpga/lo_read.v | 7 +- fpga/min_max_tracker.v | 82 ++++----- 10 files changed, 332 insertions(+), 353 deletions(-) diff --git a/fpga/clk_divider.v b/fpga/clk_divider.v index 0bcc2e608..7cb9925f3 100644 --- a/fpga/clk_divider.v +++ b/fpga/clk_divider.v @@ -22,7 +22,7 @@ module clk_divider( ); reg [7:0] div_cnt_ = 0; - reg div_clk_; + reg div_clk_ = 0; assign div_cnt = div_cnt_; assign div_clk = div_clk_; diff --git a/fpga/fpga_icopyx_lf.v b/fpga/fpga_icopyx_lf.v index b1b890b79..d1495498a 100644 --- a/fpga/fpga_icopyx_lf.v +++ b/fpga/fpga_icopyx_lf.v @@ -71,7 +71,13 @@ reg [7:0] lf_ed_threshold; wire [7:0] pck_cnt; wire pck_divclk; reg [7:0] divisor; -clk_divider div_clk(pck0, divisor, pck_cnt, pck_divclk); + +clk_divider div_clk( + .clk (pck0), + .divisor (divisor), + .div_cnt (pck_cnt), + .div_clk (pck_divclk) +); // We switch modes between transmitting to the 13.56 MHz tag and receiving // from it, which means that we must make sure that we can do so without diff --git a/fpga/hi_flite.v b/fpga/hi_flite.v index ac9e7e069..d93d67d21 100644 --- a/fpga/hi_flite.v +++ b/fpga/hi_flite.v @@ -66,7 +66,7 @@ assign adc_clk = ck_1356meg; `define min_bitdelay_212 8 //minimum values and corresponding thresholds -reg [8:0] curmin=`imin; +reg [8:0] curmin=`imin; reg [8:0] curminthres=`ithrmin; reg [8:0] curmaxthres=`ithrmax; reg [8:0] curmax=`imax; @@ -75,10 +75,10 @@ reg [8:0] curmax=`imax; reg after_hysteresis = 1'b1; //state machine for envelope tracking -reg [1:0] state=1'd0; +reg [1:0] state = 1'd0; //lower edge detected, trying to detect first bit of SYNC (b24d, 1011001001001101) -reg try_sync=1'b0; +reg try_sync = 1'b0; //detected first sync bit, phase frozen reg did_sync=0; @@ -105,32 +105,32 @@ reg zero = 1'b0; // Manchester first halfbit low second high corresponds to this reg [8:0] ssp_cnt = 9'd0; always @(posedge adc_clk) - ssp_cnt <= (ssp_cnt + 1); + ssp_cnt <= (ssp_cnt + 1); //maybe change it so that ARM sends preamble as well. //then: ready bits sent to ARM, 8 bits sent from ARM (all ones), then preamble (all zeros, presumably) - which starts modulation always @(negedge adc_clk) begin - //count fc/64 - transfer bits to ARM at the rate they are received - if( ((~speed) && (ssp_cnt[5:0] == 6'b000000)) || (speed && (ssp_cnt[4:0] == 5'b00000))) - begin - ssp_clk <= 1'b1; - //send current bit (detected in SNIFF mode or the one being modulated in MOD mode, 0 otherwise) - ssp_din <= curbit; - end - if( ( (~speed) && (ssp_cnt[5:0] == 6'b100000)) ||(speed && ssp_cnt[4:0] == 5'b10000)) - ssp_clk <= 1'b0; + //count fc/64 - transfer bits to ARM at the rate they are received + if( ((~speed) && (ssp_cnt[5:0] == 6'b000000) ) || (speed && (ssp_cnt[4:0] == 5'b00000)) ) + begin + ssp_clk <= 1'b1; + //send current bit (detected in SNIFF mode or the one being modulated in MOD mode, 0 otherwise) + ssp_din <= curbit; + end + if( ( (~speed) && (ssp_cnt[5:0] == 6'b100000)) ||(speed && ssp_cnt[4:0] == 5'b10000)) + ssp_clk <= 1'b0; //create frame pulses. TBH, I still don't know what they do exactly, but they are crucial for ARM->FPGA transfer. If the frame is in the beginning of the byte, transfer slows to a crawl for some reason // took me a day to figure THAT out. - if(( (~speed) && (ssp_cnt[8:0] == 9'd31)) || (speed && ssp_cnt[7:0] == 8'd15)) - begin - ssp_frame <= 1'b1; - end - if(( (~speed) && (ssp_cnt[8:0] == 9'b1011111)) || (speed &&ssp_cnt[7:0] == 8'b101111) ) - begin - ssp_frame <= 1'b0; - end + if(( (~speed) && (ssp_cnt[8:0] == 9'd31)) || (speed && ssp_cnt[7:0] == 8'd15)) + begin + ssp_frame <= 1'b1; + end + if(( (~speed) && (ssp_cnt[8:0] == 9'b1011111)) || (speed &&ssp_cnt[7:0] == 8'b101111) ) + begin + ssp_frame <= 1'b0; + end end //previous signal value, mostly to detect SYNC @@ -144,206 +144,200 @@ reg[7:0] mid = 8'd128; // reg sending = 1'b0; // are we actively modulating? reg [11:0] bit_counts = 12'd0; // for timeslots. only support ts=0 for now, at 212 speed -512 fullbits from end of frame. One hopes. might remove those? - //we need some way to flush bit_counts triggers on mod_type changes don't compile reg dlay; always @(negedge adc_clk) // every data ping? begin - //envelope follow code... + //envelope follow code... //////////// - if (fccount == bitmlen) - begin + if (fccount == bitmlen) + begin if ((~try_sync) && (adc_d < curminthres) && disabl ) begin - fccount <= 1; - end - else - begin - fccount <= 0; - end - dlay <= ssp_dout; - if (bit_counts > 768) // should be over ts0 now, without ARM interference... stop counting... - begin - bit_counts <= 0; - end - else - if (power) - bit_counts <= 0; - else - bit_counts <= bit_counts + 1; + fccount <= 1; end else begin + fccount <= 0; + end + dlay <= ssp_dout; + if (bit_counts > 768) // should be over ts0 now, without ARM interference... stop counting... + begin + bit_counts <= 0; + end + else + if (power) + bit_counts <= 0; + else + bit_counts <= bit_counts + 1; + end + else + begin if((~try_sync) && (adc_d < curminthres) && disabl) begin - fccount <= 1; - end - else - begin - fccount <= fccount + 1; - end + fccount <= 1; end + else + begin + fccount <= fccount + 1; + end + end - // rising edge - if (adc_d > curmaxthres) - begin + // rising edge + if (adc_d > curmaxthres) + begin case (state) - 0: begin - curmax <= adc_d > `imax? adc_d : `imax; - state <= 2; + 0: begin + curmax <= adc_d > `imax? adc_d : `imax; + state <= 2; end - 1: begin - curminthres <= ((curmin >> 1) + (curmin >> 2) + (curmin >> 4) + (curmax >> 3) + (curmax >> 4)); //threshold: 0.1875 max + 0.8125 min - curmaxthres <= ((curmax >> 1) + (curmax >> 2) + (curmax >> 4) + (curmin >> 3) + (curmin >> 4)); - curmax <= adc_d > 155 ? adc_d : 155; // to hopefully prevent overflow from spikes going up to 255 - state <= 2; + 1: begin + curminthres <= ((curmin >> 1) + (curmin >> 2) + (curmin >> 4) + (curmax >> 3) + (curmax >> 4)); //threshold: 0.1875 max + 0.8125 min + curmaxthres <= ((curmax >> 1) + (curmax >> 2) + (curmax >> 4) + (curmin >> 3) + (curmin >> 4)); + curmax <= adc_d > 155 ? adc_d : 155; // to hopefully prevent overflow from spikes going up to 255 + state <= 2; end - 2: begin - if (adc_d > curmax) - curmax <= adc_d; - end - default: + 2: begin + if (adc_d > curmax) + curmax <= adc_d; + end + default: begin end endcase after_hysteresis <= 1'b1; if(try_sync) - tsinceedge <= 0; - end - else if (adc_d> 1) + (curmin >> 2) + (curmin >> 4) + (curmax >> 3) + (curmax >> 4)); curmaxthres <= ( (curmax >> 1) + (curmax >> 2) + (curmax >> 4) + (curmin >> 3) + (curmin >> 4)); curmin <= adc_d < `imin ? adc_d : `imin; state <= 1; - end - default: - begin - end - endcase - after_hysteresis <= 0; - if (~try_sync ) //begin modulation, lower edge... - begin - try_sync <= 1; - fccount <= 1; - did_sync <= 0; - curbit <= 0; - mid <= 8'd127; - tsinceedge <= 0; - prv <= 1; - end - else - begin - tsinceedge <= 0; - end - end - else //stable state, low or high - begin - curminthres <= ( (curmin >> 1) + (curmin >> 2) + (curmin >> 4) + (curmax >> 3) + (curmax >> 4)); - curmaxthres <= ( (curmax >> 1) + (curmax >> 2) + (curmax >> 4) + (curmin >> 3) + (curmin >> 4)); - state <= 0; - - if (try_sync ) - begin - if (tsinceedge >= (128)) - begin - //we might need to start counting... assuming ARM wants to reply to the frame. - bit_counts <= 1;// i think? 128 is about 2 bits passed... but 1 also works - try_sync <= 0; - did_sync <= 0;//desync - curmin <= `imin; //reset envelope - curmax <= `imax; - curminthres <= `ithrmin; - curmaxthres <= `ithrmax; - prv <= 1; - tsinceedge <= 0; - after_hysteresis <= 1'b1; - curbit <= 0; - mid <= 8'd128; - end - else - tsinceedge <= (tsinceedge + 1); - end - end - - - if (try_sync && tsinceedge < 128) + end + default: begin - //detect bits in their middle ssp sampling is in sync, so it would sample all bits in order - if (fccount == bithalf) - begin - if ((~did_sync) && ((prv == 1 && (mid > 128))||(prv == 0 && (mid <= 128)))) - begin - //sync the Zero, and set curbit roperly - did_sync <= 1'b1; - zero <= ~prv;// 1-prv - curbit <= 1; - end + end + endcase + after_hysteresis <= 0; + if (~try_sync ) //begin modulation, lower edge... + begin + try_sync <= 1; + fccount <= 1; + did_sync <= 0; + curbit <= 0; + mid <= 8'd127; + tsinceedge <= 0; + prv <= 1; + end + else + begin + tsinceedge <= 0; + end + end + else //stable state, low or high + begin + curminthres <= ( (curmin >> 1) + (curmin >> 2) + (curmin >> 4) + (curmax >> 3) + (curmax >> 4)); + curmaxthres <= ( (curmax >> 1) + (curmax >> 2) + (curmax >> 4) + (curmin >> 3) + (curmin >> 4)); + state <= 0; + + if (try_sync ) + begin + if (tsinceedge >= (128)) + begin + //we might need to start counting... assuming ARM wants to reply to the frame. + bit_counts <= 1;// i think? 128 is about 2 bits passed... but 1 also works + try_sync <= 0; + did_sync <= 0;//desync + curmin <= `imin; //reset envelope + curmax <= `imax; + curminthres <= `ithrmin; + curmaxthres <= `ithrmax; + prv <= 1; + tsinceedge <= 0; + after_hysteresis <= 1'b1; + curbit <= 0; + mid <= 8'd128; + end + else + tsinceedge <= (tsinceedge + 1); + end + end + + if (try_sync && tsinceedge < 128) + begin + //detect bits in their middle ssp sampling is in sync, so it would sample all bits in order + if (fccount == bithalf) + begin + if ((~did_sync) && ((prv == 1 && (mid > 128))||(prv == 0 && (mid <= 128)))) + begin + //sync the Zero, and set curbit roperly + did_sync <= 1'b1; + zero <= ~prv;// 1-prv + curbit <= 1; + end + else + curbit <= (mid > 128) ? (~zero) : zero; + + prv <= (mid > 128) ? 1 : 0; + + if (adc_d > curmaxthres) + mid <= 8'd129; + else if (adc_d < curminthres) + mid <= 8'd127; + else + begin + if (after_hysteresis) + begin + mid <= 8'd129; + end else - curbit <= (mid > 128) ? (~zero) : zero; - - prv <= (mid > 128) ? 1 : 0; - - if (adc_d > curmaxthres) - mid <= 8'd129; - else if (adc_d < curminthres) - mid <= 8'd127; - else - begin - if (after_hysteresis) - begin - mid <= 8'd129; - end - else - begin - mid <= 8'd127; - end - end - - end - else - begin - if (fccount==bitmlen) - begin - // fccount <= 0; - prv <= (mid > 128) ? 1 : 0; - mid <= 128; - end - else - begin + begin + mid <= 8'd127; + end + end + end + else + begin + if (fccount==bitmlen) + begin + // fccount <= 0; + prv <= (mid > 128) ? 1 : 0; + mid <= 128; + end + else + begin // minimum-maximum calc - if(adc_d > curmaxthres) - mid <= mid + 1; - else if (adc_d < curminthres) + if(adc_d > curmaxthres) + mid <= mid + 1; + else if (adc_d < curminthres) mid <= mid - 1; - else + else begin - if (after_hysteresis) - begin - mid <= mid + 1; - end - else - begin - mid <= mid - 1; - end + if (after_hysteresis) + begin + mid <= mid + 1; + end + else + begin + mid <= mid - 1; + end end - end - end end - else - begin - end -// sending <= 0; + end + end +// sending <= 0; end //put modulation here to maintain the correct clock. Seems that some readers are sensitive to that @@ -353,23 +347,23 @@ wire mod = ((fccount >= bithalf) ^ dlay) & (~disabl); always @(ck_1356meg or ssp_dout or power or disabl or mod) begin if (power) - begin + begin pwr_hi <= ck_1356meg; pwr_lo <= 1'b0; pwr_oe1 <= 1'b0;//mod; pwr_oe2 <= 1'b0;//mod; pwr_oe3 <= 1'b0;//mod; pwr_oe4 <= mod;//1'b0; - end + end else - begin + begin pwr_hi <= 1'b0; pwr_lo <= 1'b0; pwr_oe1 <= 1'b0; pwr_oe2 <= 1'b0; pwr_oe3 <= 1'b0; pwr_oe4 <= mod; - end + end end endmodule diff --git a/fpga/hi_get_trace.v b/fpga/hi_get_trace.v index cd33173b2..b577ff6be 100644 --- a/fpga/hi_get_trace.v +++ b/fpga/hi_get_trace.v @@ -105,13 +105,12 @@ begin write_enable1 <= 1'b0; write_enable2 <= 1'b0; if (previous_major_mode != `FPGA_MAJOR_MODE_OFF && previous_major_mode != `FPGA_MAJOR_MODE_HF_GET_TRACE) // just switched off - begin + begin start_addr <= addr; - end + end end end - // (2+1)k RAM reg [7:0] D_out1, D_out2; reg [7:0] ram1 [2047:0]; // 2048 u8 @@ -127,7 +126,7 @@ begin else D_out1 <= ram1[addr[10:0]]; if (write_enable2) -begin + begin ram2[addr[9:0]] <= adc_d; D_out2 <= adc_d; end @@ -135,7 +134,6 @@ begin D_out2 <= ram2[addr[9:0]]; end - reg [7:0] shift_out; always @(negedge ck_1356megb) @@ -150,10 +148,10 @@ begin shift_out <= D_out2; end else - begin - // or shift left - shift_out[7:1] <= shift_out[6:0]; - end + begin + // or shift left + shift_out[7:1] <= shift_out[6:0]; + end end ssp_clk <= ~clock_cnt[3]; // ssp_clk frequency = 13,56MHz / 16 = 847,5 kHz diff --git a/fpga/hi_iso14443a.v b/fpga/hi_iso14443a.v index 182b66f7e..0ceac6d95 100644 --- a/fpga/hi_iso14443a.v +++ b/fpga/hi_iso14443a.v @@ -104,8 +104,6 @@ begin end end - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Tag -> PM3 // filter the input for a tag's signal. The filter box needs the 4 previous input values and is a gaussian derivative filter @@ -132,7 +130,6 @@ wire [9:0] tmp2 = adc_d_times_2 + input_prev_1; // convert intermediate signals to signed and calculate the filter output wire signed [10:0] adc_d_filtered = {1'b0, tmp1} - {1'b0, tmp2}; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // internal FPGA timing. Maximum required period is 128 carrier clock cycles for a full 8 Bit transfer to ARM. (i.e. we need a // 7 bit counter). Adjust its frequency to external reader's clock when simulating a tag or sniffing. @@ -176,7 +173,6 @@ begin end end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Tag -> PM3: // determine best possible time for starting/resetting the modulation detector. @@ -208,7 +204,6 @@ begin end end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Tag -> PM3: // modulation detector. Looks for the steepest falling and rising edges within a 16 clock period. If there is both a significant @@ -228,27 +223,27 @@ always @(negedge adc_clk) begin if(negedge_cnt[3:0] == mod_detect_reset_time) begin - if (mod_type == `FPGA_HF_ISO14443A_SNIFFER) - begin - // detect modulation signal: if modulating, there must have been a falling AND a rising edge - if ((rx_mod_falling_edge_max > `EDGE_DETECT_THRESHOLDHIGH) && (rx_mod_rising_edge_max < -`EDGE_DETECT_THRESHOLDHIGH)) - curbit <= 1'b1; // modulation - else - curbit <= 1'b0; // no modulation - end - else - begin - // detect modulation signal: if modulating, there must have been a falling AND a rising edge - if ((rx_mod_falling_edge_max > `EDGE_DETECT_THRESHOLD) && (rx_mod_rising_edge_max < -`EDGE_DETECT_THRESHOLD)) - curbit <= 1'b1; // modulation - else - curbit <= 1'b0; // no modulation - end + if (mod_type == `FPGA_HF_ISO14443A_SNIFFER) + begin + // detect modulation signal: if modulating, there must have been a falling AND a rising edge + if ((rx_mod_falling_edge_max > `EDGE_DETECT_THRESHOLDHIGH) && (rx_mod_rising_edge_max < -`EDGE_DETECT_THRESHOLDHIGH)) + curbit <= 1'b1; // modulation + else + curbit <= 1'b0; // no modulation + end + else + begin + // detect modulation signal: if modulating, there must have been a falling AND a rising edge + if ((rx_mod_falling_edge_max > `EDGE_DETECT_THRESHOLD) && (rx_mod_rising_edge_max < -`EDGE_DETECT_THRESHOLD)) + curbit <= 1'b1; // modulation + else + curbit <= 1'b0; // no modulation + end // reset modulation detector rx_mod_rising_edge_max <= 0; rx_mod_falling_edge_max <= 0; end - else // look for steepest edges (slopes) + else // look for steepest edges (slopes) begin if (adc_d_filtered > 0) begin @@ -264,7 +259,6 @@ begin end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Tag+Reader -> PM3 // sample 4 bits reader data and 4 bits tag data for sniffing @@ -280,7 +274,6 @@ begin end end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // PM3 -> Reader: // a delay line to ensure that we send the (emulated) tag's answer at the correct time according to ISO14443-3 @@ -303,7 +296,6 @@ begin end end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // PM3 -> Reader, internal timing: // a timer for the 1172 cycles fdt (Frame Delay Time). Start the timer with a rising edge of the reader's signal. @@ -366,7 +358,6 @@ begin if(fdt_counter == `FDT_INDICATOR_COUNT) fdt_indicator <= 1'b1; end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // PM3 -> Reader or Tag // assign a modulation signal to the antenna. This signal is either a delayed signal (to achieve fdt when sending to a reader) @@ -395,7 +386,6 @@ begin end end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // PM3 -> Reader // determine the required delay in the mod_sig_buf (set mod_sig_ptr). @@ -438,7 +428,6 @@ begin end end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // FPGA -> ARM communication: // buffer 8 bits data to be sent to ARM. Shift them out bit by bit. @@ -482,10 +471,8 @@ begin to_arm[7:1] <= to_arm[6:0]; end end - end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // FPGA <-> ARM communication: // generate a ssp clock and ssp frame signal for the synchronous transfer from/to the ARM @@ -520,7 +507,6 @@ begin end end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // FPGA -> ARM communication: // select the data to be sent to ARM @@ -565,7 +551,6 @@ assign sub_carrier = ~sub_carrier_cnt[3]; // in FPGA_HF_ISO14443A_READER_LISTEN: carrier always on; in other modes: carrier always off assign pwr_hi = (ck_1356meg & (((mod_type == `FPGA_HF_ISO14443A_READER_MOD) & ~mod_sig_coil) || (mod_type == `FPGA_HF_ISO14443A_READER_LISTEN))); - // Enable HF antenna drivers: assign pwr_oe1 = 1'b0; assign pwr_oe3 = 1'b0; diff --git a/fpga/hi_simulate.v b/fpga/hi_simulate.v index 2d8ff2771..77b9a44ed 100644 --- a/fpga/hi_simulate.v +++ b/fpga/hi_simulate.v @@ -88,7 +88,6 @@ begin end end - // Divide 13.56 MHz to produce various frequencies for SSP_CLK // and modulation. reg [8:0] ssp_clk_divider; @@ -99,17 +98,16 @@ always @(negedge adc_clk) always @(negedge adc_clk) begin if (mod_type == `FPGA_HF_SIMULATOR_MODULATE_424K_8BIT) - // Get bit every at 53KHz (every 8th carrier bit of 424kHz) - ssp_clk <= ~ssp_clk_divider[7]; + // Get bit every at 53KHz (every 8th carrier bit of 424kHz) + ssp_clk <= ~ssp_clk_divider[7]; else if (mod_type == `FPGA_HF_SIMULATOR_MODULATE_212K) - // Get next bit at 212kHz - ssp_clk <= ~ssp_clk_divider[5]; + // Get next bit at 212kHz + ssp_clk <= ~ssp_clk_divider[5]; else - // Get next bit at 424kHz - ssp_clk <= ~ssp_clk_divider[4]; + // Get next bit at 424kHz + ssp_clk <= ~ssp_clk_divider[4]; end - // Produce the byte framing signal; the phase of this signal // is arbitrary, because it's just a bit stream in this module. always @(negedge adc_clk) @@ -130,7 +128,6 @@ begin end end - // Synchronize up the after-hysteresis signal, to produce DIN. always @(posedge ssp_clk) ssp_din = after_hysteresis; @@ -147,9 +144,7 @@ always @(*) else if(mod_type == `FPGA_HF_SIMULATOR_MODULATE_424K || mod_type == `FPGA_HF_SIMULATOR_MODULATE_424K_8BIT) modulating_carrier <= ssp_dout & ssp_clk_divider[4]; // switch 424kHz modulation on/off else - modulating_carrier <= 1'b0; // yet unused - - + modulating_carrier <= 1'b0; // yet unused // Load modulation. Toggle only one of these, since we are already producing much deeper // modulation than a real tag would. diff --git a/fpga/lf_edge_detect.v b/fpga/lf_edge_detect.v index 1e4cd0cce..27d7f6901 100644 --- a/fpga/lf_edge_detect.v +++ b/fpga/lf_edge_detect.v @@ -1,4 +1,3 @@ - //----------------------------------------------------------------------------- // Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. // @@ -30,73 +29,74 @@ module lf_edge_detect( output edge_toggle ); - min_max_tracker tracker( - .clk (clk), - .adc_d (adc_d), - .threshold (lf_ed_threshold), - .min (min), - .max (max) +min_max_tracker tracker( + .clk (clk), + .adc_d (adc_d), + .threshold (lf_ed_threshold), + .min (min), + .max (max) ); - // auto-tune - assign high_threshold = (max + min) / 2 + (max - min) / 4; - assign highz_threshold = (max + min) / 2 + (max - min) / 8; - assign lowz_threshold = (max + min) / 2 - (max - min) / 8; - assign low_threshold = (max + min) / 2 - (max - min) / 4; +// auto-tune +assign high_threshold = (max + min) / 2 + (max - min) / 4; +assign highz_threshold = (max + min) / 2 + (max - min) / 8; +assign lowz_threshold = (max + min) / 2 - (max - min) / 8; +assign low_threshold = (max + min) / 2 - (max - min) / 4; - // heuristic to see if it makes sense to try to detect an edge - wire enabled = - (high_threshold > highz_threshold) - & (highz_threshold > lowz_threshold) - & (lowz_threshold > low_threshold) - & ((high_threshold - highz_threshold) > 8) - & ((highz_threshold - lowz_threshold) > 16) - & ((lowz_threshold - low_threshold) > 8); +// heuristic to see if it makes sense to try to detect an edge +wire enabled = + (high_threshold > highz_threshold) + & (highz_threshold > lowz_threshold) + & (lowz_threshold > low_threshold) + & ((high_threshold - highz_threshold) > 8) + & ((highz_threshold - lowz_threshold) > 16) + & ((lowz_threshold - low_threshold) > 8); - // Toggle the output with hysteresis - // Set to high if the ADC value is above the threshold - // Set to low if the ADC value is below the threshold - reg is_high = 0; - reg is_low = 0; - reg is_zero = 0; - reg trigger_enabled = 1; - reg output_edge = 0; - reg output_state; +// Toggle the output with hysteresis +// Set to high if the ADC value is above the threshold +// Set to low if the ADC value is below the threshold +reg is_high = 0; +reg is_low = 0; +reg is_zero = 0; +reg trigger_enabled = 1; +reg output_edge = 0; +reg output_state; - always @(posedge clk) +always @(posedge clk) +begin + is_high <= (adc_d >= high_threshold); + is_low <= (adc_d <= low_threshold); + is_zero <= ((adc_d > lowz_threshold) & (adc_d < highz_threshold)); +end + +// all edges detection +always @(posedge clk) +if (enabled) +begin + // To enable detecting two consecutive peaks at the same level + // (low or high) we check whether or not we went back near 0 in-between. + // This extra check is necessary to prevent from noise artifacts + // around the threshold values. + if (trigger_enabled & (is_high | is_low)) begin - is_high <= (adc_d >= high_threshold); - is_low <= (adc_d <= low_threshold); - is_zero <= ((adc_d > lowz_threshold) & (adc_d < highz_threshold)); + output_edge <= ~output_edge; + trigger_enabled <= 0; end + else + trigger_enabled <= trigger_enabled | is_zero; +end - // all edges detection - always @(posedge clk) - if (enabled) - begin - // To enable detecting two consecutive peaks at the same level - // (low or high) we check whether or not we went back near 0 in-between. - // This extra check is necessary to prevent from noise artifacts - // around the threshold values. - if (trigger_enabled & (is_high | is_low)) - begin - output_edge <= ~output_edge; - trigger_enabled <= 0; - end else - trigger_enabled <= trigger_enabled | is_zero; - end +// edge states +always @(posedge clk) +if (enabled) +begin + if (is_high) + output_state <= 1'd1; + else if (is_low) + output_state <= 1'd0; +end - // edge states - always @(posedge clk) - if (enabled) - begin - if (is_high) - output_state <= 1'd1; - else if (is_low) - output_state <= 1'd0; - end - - assign edge_state = output_state; - assign edge_toggle = output_edge; +assign edge_state = output_state; +assign edge_toggle = output_edge; endmodule diff --git a/fpga/lo_edge_detect.v b/fpga/lo_edge_detect.v index 9bf408cc7..c29fdccb3 100644 --- a/fpga/lo_edge_detect.v +++ b/fpga/lo_edge_detect.v @@ -51,8 +51,8 @@ wire tag_modulation = ssp_dout & !lf_field; wire reader_modulation = !ssp_dout & lf_field & pck_divclk; // No logic, straight through. -assign pwr_oe1 = 1'b0; // not used in LF mode -assign pwr_oe3 = 1'b0; // base antenna load = 33 Ohms +assign pwr_oe1 = 1'b0; // not used in LF mode +assign pwr_oe3 = 1'b0; // base antenna load = 33 Ohms // when modulating, add another 33 Ohms and 10k Ohms in parallel: assign pwr_oe2 = tag_modulation; assign pwr_oe4 = tag_modulation; diff --git a/fpga/lo_read.v b/fpga/lo_read.v index 06bd0ae5a..c51857eb4 100644 --- a/fpga/lo_read.v +++ b/fpga/lo_read.v @@ -51,7 +51,7 @@ reg [7:0] to_arm_shiftreg; // we read the ADC value when pck_cnt=7 and shift it out on counts 8..15 always @(posedge pck0) begin - if((pck_cnt == 8'd7) && !pck_divclk) + if ((pck_cnt == 8'd7) && !pck_divclk) to_arm_shiftreg <= adc_d; else begin @@ -73,14 +73,15 @@ end // _ _ _ _ _ _ _ _ _ _ // ssp_clk |_| |_| |_| |_| |_| |_| |_| |_| |_| |_ -// serialized SSP data is gated by ant_lo to suppress unwanted signal +// serialized SSP data is gated by pck_divclk to suppress unwanted signal assign ssp_din = to_arm_shiftreg[7] && !pck_divclk; // SSP clock always runs at 24MHz assign ssp_clk = pck0; -// SSP frame is gated by ant_lo and goes high when pck_divider=8..15 +// SSP frame is gated by pck_divclk and goes high when pck_cnt=8..15 assign ssp_frame = (pck_cnt[7:3] == 5'd1) && !pck_divclk; // unused signals tied low assign pwr_hi = 1'b0; +// always on outputs, unused assign pwr_oe1 = 1'b0; assign pwr_oe2 = 1'b0; assign pwr_oe3 = 1'b0; diff --git a/fpga/min_max_tracker.v b/fpga/min_max_tracker.v index 2f6e06017..2aaab66bb 100644 --- a/fpga/min_max_tracker.v +++ b/fpga/min_max_tracker.v @@ -31,50 +31,50 @@ module min_max_tracker( output [7:0] max ); - reg [7:0] min_val = 255; - reg [7:0] max_val = 0; - reg [7:0] cur_min_val = 255; - reg [7:0] cur_max_val = 0; - reg [1:0] state = 0; +reg [7:0] min_val = 255; +reg [7:0] max_val = 0; +reg [7:0] cur_min_val = 255; +reg [7:0] cur_max_val = 0; +reg [1:0] state = 0; - always @(posedge clk) - begin - case (state) - 0: // initialize - begin - if (cur_max_val >= ({1'b0, adc_d} + threshold)) - state <= 2; - else if (adc_d >= ({1'b0, cur_min_val} + threshold)) - state <= 1; - if (cur_max_val <= adc_d) - cur_max_val <= adc_d; - else if (adc_d <= cur_min_val) - cur_min_val <= adc_d; +always @(posedge clk) +begin + case (state) + 0: // initialize + begin + if (cur_max_val >= ({1'b0, adc_d} + threshold)) + state <= 2; + else if (adc_d >= ({1'b0, cur_min_val} + threshold)) + state <= 1; + if (cur_max_val <= adc_d) + cur_max_val <= adc_d; + else if (adc_d <= cur_min_val) + cur_min_val <= adc_d; + end + 1: // high phase + begin + if (cur_max_val <= adc_d) + cur_max_val <= adc_d; + else if (({1'b0, adc_d} + threshold) <= cur_max_val) begin + state <= 2; + cur_min_val <= adc_d; + max_val <= cur_max_val; end - 1: // high phase - begin - if (cur_max_val <= adc_d) - cur_max_val <= adc_d; - else if (({1'b0, adc_d} + threshold) <= cur_max_val) begin - state <= 2; - cur_min_val <= adc_d; - max_val <= cur_max_val; - end + end + 2: // low phase + begin + if (adc_d <= cur_min_val) + cur_min_val <= adc_d; + else if (adc_d >= ({1'b0, cur_min_val} + threshold)) begin + state <= 1; + cur_max_val <= adc_d; + min_val <= cur_min_val; end - 2: // low phase - begin - if (adc_d <= cur_min_val) - cur_min_val <= adc_d; - else if (adc_d >= ({1'b0, cur_min_val} + threshold)) begin - state <= 1; - cur_max_val <= adc_d; - min_val <= cur_min_val; - end - end - endcase - end + end + endcase +end - assign min = min_val; - assign max = max_val; +assign min = min_val; +assign max = max_val; endmodule From f47e4ed115176d76ee4caaf6246d344300818126 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 24 Aug 2023 18:22:50 +0200 Subject: [PATCH 0421/1034] Move hardcoded value where it belongs Keep FPGA parameters together in the same place --- client/src/cmdhw.c | 3 ++- common_fpga/fpga.h | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index ec3ab4867..1b2cd5459 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -27,6 +27,7 @@ #include "comms.h" #include "usart_defs.h" #include "ui.h" +#include "fpga.h" #include "cmdhw.h" #include "cmddata.h" #include "commonutil.h" @@ -1392,7 +1393,7 @@ void pm3_version(bool verbose, bool oneliner) { } } PrintAndLogEx(NORMAL, payload->versionstr); - if (strstr(payload->versionstr, "2s30vq100") == NULL) { + if (strstr(payload->versionstr, FPGA_TYPE) == NULL) { PrintAndLogEx(NORMAL, " FPGA firmware... %s", _RED_("chip mismatch")); } diff --git a/common_fpga/fpga.h b/common_fpga/fpga.h index b7e017d68..35143ec6f 100644 --- a/common_fpga/fpga.h +++ b/common_fpga/fpga.h @@ -23,9 +23,11 @@ #define FPGA_BITSTREAM_FIXED_HEADER_SIZE sizeof(bitparse_fixed_header) #define FPGA_INTERLEAVE_SIZE 288 #if defined XC3 -#define FPGA_CONFIG_SIZE 72864L // our current fpga_[lh]f.bit files are 72742 bytes. Rounded up to next multiple of FPGA_INTERLEAVE_SIZE +#define FPGA_TYPE "3s100evq100" +#define FPGA_CONFIG_SIZE 72864L // FPGA .bit file rounded up to next multiple of FPGA_INTERLEAVE_SIZE #else -#define FPGA_CONFIG_SIZE 42336L // our current fpga_[lh]f.bit files are 42175 bytes. Rounded up to next multiple of FPGA_INTERLEAVE_SIZE +#define FPGA_TYPE "2s30vq100" +#define FPGA_CONFIG_SIZE 42336L // FPGA .bit file rounded up to next multiple of FPGA_INTERLEAVE_SIZE #endif #define FPGA_RING_BUFFER_BYTES (1024 * 30) #define FPGA_TRACE_SIZE 3072 From 15ee28c7be1ce06946c71b090bed5dce75236ec1 Mon Sep 17 00:00:00 2001 From: kormax <3392860+kormax@users.noreply.github.com> Date: Thu, 24 Aug 2023 21:39:59 +0300 Subject: [PATCH 0422/1034] Add SEOS AIDs --- client/resources/aidlist.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/client/resources/aidlist.json b/client/resources/aidlist.json index 9173d0a10..6eeba5e28 100644 --- a/client/resources/aidlist.json +++ b/client/resources/aidlist.json @@ -2406,5 +2406,21 @@ "Name": "AirDrop connection negotiation", "Description": "Used by NFC-based AirDrop negotiation added in IOS17", "Type": "" + }, + { + "AID": "a0000004400001010001", + "Vendor": "HID Global", + "Country": "", + "Name": "SEOS", + "Description": "Used by both by physical cards and mobile implementations", + "Type": "access" + }, + { + "AID": "A00000054000060100010000FF", + "Vendor": "HID Global", + "Country": "", + "Name": "SEOS Mobile", + "Description": "Declared by some SEOS-compatible applications for HCE", + "Type": "access" } ] From 96eededb8c40006ef682255845d489f7075ff63e Mon Sep 17 00:00:00 2001 From: kormax <3392860+kormax@users.noreply.github.com> Date: Thu, 24 Aug 2023 21:40:53 +0300 Subject: [PATCH 0423/1034] Remove duplicate MFP command definitions --- include/protocols.h | 51 --------------------------------------------- 1 file changed, 51 deletions(-) diff --git a/include/protocols.h b/include/protocols.h index 516cdf7d3..b4de7da1a 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -624,57 +624,6 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define MFDES_E_FILE_NOT_FOUND 0xF0 #define MFDES_E_FILE_INTEGRITY 0xF1 -// MIFARE PLus EV2 Command set -// source: https://www.nxp.com/docs/en/data-sheet/MF1P(H)x2.pdf in Look-Up Tables - -#define MFP_READ_SIG 0x3C // same as DESFIRE -#define MFP_WRITEPERSO 0xA8 -#define MFP_COMMITPERSO 0xAA - -#define MFP_AUTHENTICATEFIRST 0x70 -#define MFP_AUTHENTICATEFIRST_VARIANT 0x73 -#define MFP_AUTHENTICATENONFIRST 0x76 -#define MFP_AUTHENTICATECONTINUE 0x72 -#define MFP_AUTHENTICATESECTORSWITCH 0x7A -#define MFP_RESETAUTH 0x78 - -#define MFP_VCSUPPORTLASTISOL3 0x4B -#define MFP_ISOSELECT 0xA4 - -#define MFP_GETVERSION 0x60 // same as DESFIRE -#define MFP_ADDITIONALFRAME 0xAF -#define MFP_SETCONFIGSL1 0x44 -#define MFP_MF_PERSONALIZEUIDUSAGE 0x40 - -// read commands -#define MFP_READENCRYPTEDNOMAC_MACED 0X30 -#define MFP_READENCRYPTEDMAC_MACED 0x31 -#define MFP_READPLAINNOMAC_MACED 0x32 -#define MFP_READPLAINMAC_MACED 0x33 -#define MFP_READENCRYPTEDNOMAC_UNMACED 0x34 -#define MFP_READENCRYPTEDMAC_UNMACED 0X35 -#define MFP_READPLAINNOMAC_UNMACED 0x36 -#define MFP_READPLAINMAC_UNMACED 0x37 - -// write commands -#define MFP_WRITEENCRYPTEDNOMAC 0xA0 -#define MFP_WRITEENCRYPTEDMAC 0xA1 -#define MFP_WRITEPLAINNOMAC 0xA2 -#define MFP_WRITEPLAINMAC 0xA3 - -// value commands -#define MFP_INCREMENTNOMAC 0xB0 -#define MFP_INCREMENTMAC 0xB1 -#define MFP_DECREMENTNOMAC 0xB2 -#define MFP_DECREMENTMAC 0xB3 -#define MFP_TRANSFERNOMAC 0xB4 -#define MFP_TRANSFERMAC 0xB5 -#define MFP_INCREMENTTRANSFERNOMAC 0xB6 -#define MFP_INCREMENTTRANSFERMAC 0xB7 -#define MFP_DECREMENTTRANSFERNOMAC 0xB8 -#define MFP_DECREMENTTRANSFERMAC 0xB9 -#define MFP_RESTORENOMAC 0xC2 -#define MFP_RESTOREMAC 0xC3 // MIFARE PLus EV2 Command set // source: https://www.nxp.com/docs/en/data-sheet/MF1P(H)x2.pdf in Look-Up Tables From 923be3f54d1424b8f4819fbc55f5b4feea078f17 Mon Sep 17 00:00:00 2001 From: Simon Van Mello <90702729+SimonVanMello@users.noreply.github.com> Date: Fri, 25 Aug 2023 23:20:55 +0200 Subject: [PATCH 0424/1034] fix typo Signed-off-by: Simon Van Mello <90702729+SimonVanMello@users.noreply.github.com> --- doc/T5577_Guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/T5577_Guide.md b/doc/T5577_Guide.md index 6c4eceaf5..ded308676 100644 --- a/doc/T5577_Guide.md +++ b/doc/T5577_Guide.md @@ -142,7 +142,7 @@ developers have done a great job and gave us commands. What we need to know is that with the T5577, data is read/written one complete block at a time. Each block holds 32 bits of data (hence the binary output shown) -Since we know that the card has data and configuration blocks, lets say +Since we know that the card has data and configuration blocks, lets stay away from those while we learn how to read and write. I suggest you follow along and perform each command and check the results as we go. From 007e8b9e5af4caab06c2768c58c95ee08ba50836 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 26 Aug 2023 12:01:55 +0200 Subject: [PATCH 0425/1034] added a section about time units --- doc/clocks.md | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/doc/clocks.md b/doc/clocks.md index 161d680fb..b2ba3c995 100644 --- a/doc/clocks.md +++ b/doc/clocks.md @@ -7,6 +7,7 @@ The device side firmware uses a range of different clocks. Here is an attempt t # Table of Contents - [Notes on device side clocks](#notes-on-device-side-clocks) - [Table of Contents](#table-of-contents) + - [Units](#units) - [Slow clock](#slow-clock) - [Main Oscillator / MAINCK](#main-oscillator--mainck) - [PLL clock](#pll-clock) @@ -15,9 +16,48 @@ The device side firmware uses a range of different clocks. Here is an attempt t - [1 kHz RTC: TickCount functions](#1-khz-rtc-tickcount-functions) - [Occasional PWM timer](#occasional-pwm-timer) - [Occasional TC0+TC1 / CountUS functions](#occasional-tc0tc1--countus-functions) - - [Occasional TC0+TC1+TC2 SSP_CLK from FPGA / CountSspClk functions](#occasional-tc0tc1tc2-ssp_clk-from-fpga--countsspclk-functions) + - [Occasional TC0+TC1+TC2 SSP\_CLK from FPGA / CountSspClk functions](#occasional-tc0tc1tc2-ssp_clk-from-fpga--countsspclk-functions) - [Occasional TC0+TC1 / Ticks functions](#occasional-tc0tc1--ticks-functions) + +## Units +^[Top](#top) + +Good calculator +https://www.unitjuggler.com/convert-frequency-from-MHz-to-ns(p).html?val=3.39 + +Basic units of time measurment or how long in time is a Hertz? + +``` +1 hertz = 1 second = 1000 milli seconds +10 Hertz = 1 / 10 = 0,1 = 100 milli seconds +100 Hertz = 1 / 100 = 0,01 = 10 milli seconds +1 kHz = 1 / 1000 = 0,001 = 1 milli seconds +10 kHz = 1 / 10 000 = 0,000 1 = 100 micro seconds +100 kHz = 1 / 100 000 = 0,000 01 = 10 micro seconds +1 MHZ = 1 / 1 000 000 = 0,000 001 = 1 micro seconds +``` + +- kHz, Kilo Hertz, 1000 Hertz +- MHz, Mega Hertz, 1000 000 Hertz + + +Basic units of time you will run into in the RFID world. + +``` +13.56 MHz = 1 / 13 560 000 = 73,74 nano seconds = 0,07374 micro seconds +125 kHz = 1/ 125 000 = 8 micro seconds +``` + +Given these units the following clocks used by Proxmark3 wil make more sense. + +Like the SSP Clock running at 3.39 MHz. +3.39 MHz = 1 / 3 390 000 = 294,98 nano seconds = 0,2949 micro seconds + +1 tick at 3.39 MHz is 294.98 nano seconds. + + + ## Slow clock ^[Top](#top) From 8a861aea5734e4d960ee00f5c0531ed98744b2bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pa=C4=BEo?= Date: Sun, 27 Aug 2023 19:23:38 +0200 Subject: [PATCH 0426/1034] Change "Mac OS X" to "macOS" in documentation --- README.md | 8 ++++---- doc/md/Installation_Instructions/Troubleshooting.md | 2 +- ...tions.md => macOS-Compile-From-Source-Instructions.md} | 6 +++--- ...ons.md => macOS-Homebrew-Installation-Instructions.md} | 8 ++++---- ...ons.md => macOS-MacPorts-Installation-Instructions.md} | 4 ++-- 5 files changed, 14 insertions(+), 14 deletions(-) rename doc/md/Installation_Instructions/{Mac-OS-X-Compile-From-Source-Instructions.md => macOS-Compile-From-Source-Instructions.md} (82%) rename doc/md/Installation_Instructions/{Mac-OS-X-Homebrew-Installation-Instructions.md => macOS-Homebrew-Installation-Instructions.md} (96%) rename doc/md/Installation_Instructions/{Mac-OS-X-MacPorts-Installation-Instructions.md => macOS-MacPorts-Installation-Instructions.md} (97%) diff --git a/README.md b/README.md index 9096c9559..d65262674 100644 --- a/README.md +++ b/README.md @@ -35,9 +35,9 @@ The Proxmark3 is the swiss-army tool of RFID, allowing for interactions with the | :------------------: | :------------------: | | [Linux - Setup and Build](/doc/md/Installation_Instructions/Linux-Installation-Instructions.md) | [Compilation Instructions](/doc/md/Use_of_Proxmark/0_Compilation-Instructions.md)| | [Linux - Important notes on ModemManager](/doc/md/Installation_Instructions/ModemManager-Must-Be-Discarded.md) | [Validating Proxmark3 Client Functionality](/doc/md/Use_of_Proxmark/1_Validation.md)| -| [Mac OS X - Homebrew & Upgrading HomeBrew Tap Formula](/doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md) | [First Use and Verification](/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md)| -| [Mac OS X - MacPorts](/doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md) | [Commands & Features](/doc/md/Use_of_Proxmark/3_Commands-and-Features.md)| -| [Mac OS X - Setup and Build](/doc/md/Installation_Instructions/Mac-OS-X-Compile-From-Source-Instructions.md) || +| [macOS - Homebrew & Upgrading HomeBrew Tap Formula](/doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md) | [First Use and Verification](/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md)| +| [macOS - MacPorts](/doc/md/Installation_Instructions/macOS-MacPorts-Installation-Instructions.md) | [Commands & Features](/doc/md/Use_of_Proxmark/3_Commands-and-Features.md)| +| [macOS - Setup and Build](/doc/md/Installation_Instructions/macOS-Compile-From-Source-Instructions.md) || | [Windows - Setup and Build](/doc/md/Installation_Instructions/Windows-Installation-Instructions.md) || | [Termux / Android - Setup and Build](/doc/termux_notes.md) || | [Blue Shark Manual](/doc/bt_manual_v10.md) | [Command Cheat Sheet](/doc/cheatsheet.md)| @@ -184,7 +184,7 @@ This repo compiles nicely on - Windows/MinGW environment - Ubuntu, ParrotOS, Gentoo, Pentoo, Kali, NetHunter, Arch Linux, Fedora, Debian, Raspbian - Android / Termux - - Mac OS X / Homebrew (or MacPorts, experimental) / Apple Silicon M1 + - macOS / Homebrew (or MacPorts, experimental) / Apple Silicon M1 - Docker container - [ Iceman repo based ubuntu 18.04 container ](https://hub.docker.com/r/secopsconsult/proxmark3) - [ Iceman fork based container v1.7 ](https://hub.docker.com/r/iceman1001/proxmark3/) diff --git a/doc/md/Installation_Instructions/Troubleshooting.md b/doc/md/Installation_Instructions/Troubleshooting.md index d3fbab571..d63e49b75 100644 --- a/doc/md/Installation_Instructions/Troubleshooting.md +++ b/doc/md/Installation_Instructions/Troubleshooting.md @@ -38,7 +38,7 @@ client/proxmark3 ... Refer to the installation guide specific to your OS for details about ports. * [Linux](/doc/md/Installation_Instructions/Linux-Installation-Instructions.md) -* [Mac OSX](/doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md) +* [macOS](/doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md) * [Windows](/doc/md/Installation_Instructions/Windows-Installation-Instructions.md) Note that with the Bluetooth adapter, you *have to* use directly the client, and flasher over Bluetooth is not possible. diff --git a/doc/md/Installation_Instructions/Mac-OS-X-Compile-From-Source-Instructions.md b/doc/md/Installation_Instructions/macOS-Compile-From-Source-Instructions.md similarity index 82% rename from doc/md/Installation_Instructions/Mac-OS-X-Compile-From-Source-Instructions.md rename to doc/md/Installation_Instructions/macOS-Compile-From-Source-Instructions.md index 049ddb31d..c9f101a40 100644 --- a/doc/md/Installation_Instructions/Mac-OS-X-Compile-From-Source-Instructions.md +++ b/doc/md/Installation_Instructions/macOS-Compile-From-Source-Instructions.md @@ -1,9 +1,9 @@ -# Mac OS X - Compilation from source instructions +# macOS - Compilation from source instructions # Table of Contents -- [Mac OS X - Compilation from source instructions](x#mac-os-x---compilation-from-source-instructions) +- [macOS - Compilation from source instructions](#macos---compilation-from-source-instructions) - [Table of Contents](#table-of-contents) - [Follow Homebrew developer instructions](#follow-homebrew-developer-instructions) - [(optional) Running without sudo](#optional-running-without-sudo) @@ -12,7 +12,7 @@ ## Follow Homebrew developer instructions ^[Top](#top) -Follow the instructions here [developer instructions](/doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md#homebrew-mac-os-x-developer-installation) and you are done. +Follow the instructions here [developer instructions](/doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md#homebrew-macos-developer-installation) and you are done. ## (optional) Running without sudo ^[Top](#top) diff --git a/doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md b/doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md similarity index 96% rename from doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md rename to doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md index 3b2e31530..c4622641a 100644 --- a/doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md @@ -1,11 +1,11 @@ -# Mac OS X - Homebrew automatic installation +# macOS - Homebrew automatic installation # Table of Contents -- [Mac OS X - Homebrew automatic installation](#mac-os-x---homebrew-automatic-installation) +- [macOS - Homebrew automatic installation](#macos---homebrew-automatic-installation) - [Table of Contents](#table-of-contents) - [macOS Ventura Beta users](#macos-ventura-beta-users) - [Apple Silicon (M1) Notes](#apple-silicon-m1-notes) @@ -14,7 +14,7 @@ - [Flash the BOOTROM & FULLIMAGE](#flash-the-bootrom--fullimage) - [Run the client](#run-the-client) - [Next steps](#next-steps) -- [Homebrew (Mac OS X), developer installation](#homebrew-mac-os-x-developer-installation) +- [Homebrew (macOS), developer installation](#homebrew-macos-developer-installation) - [Clone the Iceman repository](#clone-the-iceman-repository) - [Compile the project](#compile-the-project) - [the button trick](#the-button-trick) @@ -151,7 +151,7 @@ For the next steps, please read the following pages: -# Homebrew (Mac OS X), developer installation +# Homebrew (macOS), developer installation ^[Top](#top) These instructions will show how to setup the environment on OSX to the point where you'll be able to clone and compile the repo by yourself, as on Linux, Windows, etc. diff --git a/doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md b/doc/md/Installation_Instructions/macOS-MacPorts-Installation-Instructions.md similarity index 97% rename from doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md rename to doc/md/Installation_Instructions/macOS-MacPorts-Installation-Instructions.md index 2f05f3b98..2c36d1371 100644 --- a/doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/macOS-MacPorts-Installation-Instructions.md @@ -1,10 +1,10 @@ -# Mac OS X - MacPorts automatic installation +# macOS - MacPorts automatic installation # Table of Contents -- [Mac OS X - MacPorts automatic installation](#mac-os-x---macports-automatic-installation) +- [macOS - MacPorts automatic installation](#macOS---macports-automatic-installation) - [Table of Contents](#table-of-contents) - [Main prerequisite](#main-prerequisite) - [Installing latest releases](#installing-latest-releases) From 114dda158290a8b57d000507b1efb0ea3b51a941 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 28 Aug 2023 12:00:44 +0200 Subject: [PATCH 0427/1034] After testing and verification its found that the SHALLOW MODULATION in HF is not working well in RDV4. Swapping from PWR_OE4 to PWR_OE1 makes it much better. Thanks to @d18c7db for solution and @gentlekiwi for testing and never giving up on finding the bug --- CHANGELOG.md | 1 + armsrc/fpgaloader.h | 1 + armsrc/iso14443b.c | 9 +++++++++ armsrc/iso15693.c | 5 +++++ fpga/define.v | 1 + fpga/fpga_icopyx_hf.bit | Bin 72749 -> 72749 bytes fpga/fpga_pm3_felica.bit | Bin 42176 -> 42176 bytes fpga/fpga_pm3_hf.bit | Bin 42172 -> 42172 bytes fpga/fpga_pm3_hf_15.bit | Bin 42175 -> 42175 bytes fpga/fpga_pm3_lf.bit | Bin 42172 -> 42172 bytes fpga/hi_reader.v | 9 +++++++-- 11 files changed, 24 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1bd9deb5..637917d1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Swapped to OE1 for Shallow modulation on RDV4. Thanks to @gentlekiwi for testing (@d18c7db) - Changed iClass SIO and Legacy credential detection to be more reliable (@nvx) - Added `hf iclass esetblk` - set iClass emulator memory block data (@nvx) - Added cryptorf regressiontests (@iceman1001) diff --git a/armsrc/fpgaloader.h b/armsrc/fpgaloader.h index 3359643f1..a1869d5da 100644 --- a/armsrc/fpgaloader.h +++ b/armsrc/fpgaloader.h @@ -105,6 +105,7 @@ thres| x x x x x x x x #define FPGA_HF_READER_MODE_SNIFF_AMPLITUDE (6<<0) #define FPGA_HF_READER_MODE_SNIFF_PHASE (7<<0) #define FPGA_HF_READER_MODE_SEND_JAM (8<<0) +#define FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4 (9<<0) #define FPGA_HF_READER_SUBCARRIER_848_KHZ (0<<4) #define FPGA_HF_READER_SUBCARRIER_424_KHZ (1<<4) diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index 7d28255e1..adfd52491 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -1407,7 +1407,11 @@ static void TransmitFor14443b_AsReader(uint32_t *start_time) { tosend_t *ts = get_tosend(); +#ifdef RDV4 + FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4); +#else FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD); +#endif // TR2 minimum 14 ETUs if (*start_time < ISO14B_TR0) { @@ -2102,7 +2106,12 @@ void iso14443b_setup(void) { FpgaSetupSsc(FPGA_MAJOR_MODE_HF_READER); // Signal field is on with the appropriate LED +#ifdef RDV4 + FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4); +#else FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD); +#endif + SpinDelay(100); // Start the timer diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index 0c5e7c7ab..9a1f5be49 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -294,7 +294,12 @@ void CodeIso15693AsTag(const uint8_t *cmd, size_t len) { // Transmit the command (to the tag) that was placed in cmd[]. void TransmitTo15693Tag(const uint8_t *cmd, int len, uint32_t *start_time, bool shallow_mod) { +#ifdef RDV4 + FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | (shallow_mod ? FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4 : FPGA_HF_READER_MODE_SEND_FULL_MOD)); +#else FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | (shallow_mod ? FPGA_HF_READER_MODE_SEND_SHALLOW_MOD : FPGA_HF_READER_MODE_SEND_FULL_MOD)); +#endif + if (*start_time < DELAY_ARM_TO_TAG) { *start_time = DELAY_ARM_TO_TAG; diff --git a/fpga/define.v b/fpga/define.v index b7423278b..05cbd6d7e 100644 --- a/fpga/define.v +++ b/fpga/define.v @@ -129,6 +129,7 @@ `define FPGA_HF_READER_MODE_SNIFF_AMPLITUDE 6 `define FPGA_HF_READER_MODE_SNIFF_PHASE 7 `define FPGA_HF_READER_MODE_SEND_JAM 8 +`define FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4 9 `define FPGA_HF_READER_SUBCARRIER_848_KHZ 0 `define FPGA_HF_READER_SUBCARRIER_424_KHZ 1 diff --git a/fpga/fpga_icopyx_hf.bit b/fpga/fpga_icopyx_hf.bit index 053f5cce888de824b6e65a7b2e8f8d9de4be3b8c..07a1a0bbd39a3dd1a2b84a58bad4b2779de19fc5 100644 GIT binary patch literal 72749 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

      kL3X#zAJ(Xizc3 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 literal 0 HcmV?d00001 diff --git a/doc/datasheets/XILINX Spartan-II FPGA Family.pdf b/doc/datasheets/XILINX Spartan-II FPGA Family.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1b1eb4d231ebfc56961f27fda52f3f63a7ffec40 GIT binary patch literal 1013818 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

    yo=`LE9 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0d2_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0d2_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..db3b33de46636d2f467e808a135d05a73219cb26 GIT binary patch literal 36987 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 AE&u=k literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0d6_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0d6_states.bin.bz2 deleted file mode 100644 index d6b2059730a6fd116687dc3b57a7c93b8859772c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2083 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0d8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0d8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..d52ee181d3a7a71d92797c72d5d72f616ac2e58e GIT binary patch literal 20720 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 SBnh`I_fd{;J^shvtoRQgK|*E# literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0da_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0da_states.bin.bz2 deleted file mode 100644 index f59ffec93c62099d44b48d2da86e76bfc82a7797..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2316 zcmZY5X;cyj0>E+eB88O{xmtuN2TbK5U~eA_c#V^eMVJu^GkI~8GqVTmvRxYI@AH3!kOkv64}V@e zG-e~>E|CHwQ!e-*#A@87J#CD%H2DGP??&1W`oPDk)E_ST!+sw5FbNdY#z?6hEA$CO z35MH}izY*_wA2K0!1gnXXU$hCXewe-$w_4d9@ap6a_%lF{?OdMC z^R6c7!ZLfMTlDx+MH{};kyliK2FoDzviewD)J=;!H-Q;H?J0}6kzt)%mXy*^OgaD! zG>R4t=`wFKZ4>OS#BT$hW8#0-mrsrxWPo)frDwt=G20DmEwkh2G?dXzQuUhD^HkBW zybM*6@F?mfO5*WWqhRYk$uBARcWMJ$;s)A9y(0sMPQl{M(UcqEvEcNUI$@zKI-=Af#8{6D@R zt@lN)(x0>58iIcf%)}+iroDyD1?vreN;r#oRGB`_C+=iAsX4!@O?~{82Y1m=eptHy zWGxQ*w&LPD=Wp2jltO&@lV{~qL(ZMlHL!Fs5!m)3KgP4oy0;MrU4MY|xa9dMW3Ey| zThCieJW~CJE}M_8_#%%#pQ|bTJ~6~@pBSZ)X0_fb)spLJ38?w=oiAr9rOTC%8mb=( zwdf97pP$0h2l>g{?dN^ynoTlp|L6IGEkixI0*)zNnDkI6BQq5a@P`XgTg_Y4^Qpg- zp>nR5Hec9``Y|!babIQFbR`{J%lvGr^j5+b^X*>2NDZW=p|)YbrW9PZ@rHM&8m3K3 zA^$@Mw;rw7a-3K2beiaylO=4#5@%?R)lowJm4V08VwP~xG;Q!OL_ueZuW_;&j5LRw!^{G3eDEme8^h6d z0X@^#)mR2x*PIwdsu6<1#`=Kj(z=Zn#vP;KbMOyLU|sJ)7lo`7sUmCqiS8bmu>^_# zChxQEgZT{>*}c3I-39W2aWH?gF))?oawu;WAj16Ns{o0EIhu2 z!6}qODD9&+PKx3<{S|(%=+FsmYIViY1)wZIo+C)|ykFah@8l12^HOb9Sk4GSlO3~` zGspYhk90;<;`jDWg_9KH&atHdj`n^c-n$Zh4&KE_^rEtnnMaDr0#P@KQW-hdr0ypU zIk+rvK>EFNIroGUOPyUjRBY=yaX1so znh6szKM(~~7s?tAs6&<69PX7_6>(JA)7YrzEZ*XB8EKKxR~oN0z6M@chyb<=>|70! z)iObioKJ_uMlEq@N>;sz%DhMv&yGp>Ep{<;9>xOBK<6q5v>I0V91bVhP*(wXh;r16i`8QyTxQT zmz!JPR&D)#gEwYLRH!s1IN*F3ECR770>Q-Pj$BO43 zlGgi%HH&V~;yza18CGOxrR^!WX1JWZVwNLNwba22=N$3*exX@p^d(d4xg? h0cFX;dLvMgZ6Po?Af(}a{k?-X4t-L3>|T-2{{V5PHJJba diff --git a/client/resources/hardnested_tables/bitflip_1_0da_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0da_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..255006b82cc9cae2b31add153061c624d0307c81 GIT binary patch literal 23063 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 rw>!QmIRgb5_n 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0e0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0e0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a8232844ac5b716fec48988b8c22a57c3b107161 GIT binary patch literal 17302 zcmeHO&1)4`6hAYW_jtzS9U%eZL)xJcql=85f_T~j66CQ>C4xmAd$ z6jG_1I$~PeL7dP5PN^UJF{V)DY$2xJ^3*PhO2jd}%M|>;N$?d%w1p|!&4WaE;1G^Q z=5Y0ACUhk7h^Zv<3sbkqIrl0(JHf8oSvidMv;4!f z#T{VtnR}C*a2<)9VO8zLt&;=Qah9u{eNd=cP9t<*;-q{KKM$)=K{*K^{(eqE=vx%I z%xS37e2acg`seYAPgSDdy#(6lLltxQshDz&sUq(;A{6Rmmzys z_&L2+OX>A`tUBD`Pz^>$AnbvLb53(I3WLBKNpPFf(OwAuCesP10&hIVmAl>>v(6bJ zbxxxZXm>y75cmH3oL>D97bf78UcCQpRpyv`>M>qA!b#gurtbNiQ$F#^ooYDcsllT$ z0HcrN!Wbt7h!m<*2cgIWZaw}Yy8?3}JC?T44A6)>=bT1K0n!yAO`=aP-mWvv=#_Dv zjy3}W15k4x(+7HP0y=KWynZGx-S7ghiyUYAOCQp9iRmYQq~KTJ<0=sE8?I*RIMmn^#+Cx!+Jlk zT||sq0$C*qBx&E&M8F`NhwMiHsg^yi-fTly4j`&lQtvW^v{-^@@D9Ra+2!YaFd3m% zL|Q94p~3))#6Ij%23+2aJvI@mC|RyJOKs6Cw-$t1!BBuHmPcpyeq^tW}hLWH;^y{ViUgteJw_<|v(GpoxweRxr z-=cRdKdh4c;KIQOhKLc2*150|46UQD_CFLO7>*+}{{|Vskj4mx5sX(pKN!KV5sa7S z!bUKRU>LzLg7Mrb5+fK!Ffe3hQzV#7v=Iy&!EmJ_zp**iyfqd%p1~xUO_9JbHiF^M zF>eiq5ey?3Mlfs*#>*}jvJng$!7zg1DytC;BN(>G(_tXLu|=M?$a4kjk&R#&!7zeh z1jD9C>?@Kyt!N$_!7zeh1fv-b^N(zbWWGh_{kAER%pf*`;S6C@B>0NaK2vRE2_qOr lFpOX{!ePOI5sU>UdG>@6jLaUZf?(V`?4%{MZ`%I5_CGjI2`m5r literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0e8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0e8_states.bin.bz2 deleted file mode 100644 index e969ed97c342339ef592226b4f52b10d8770ba8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4522 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0e8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0e8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f99bdf117fe3da43e3fc79333960090482da031f GIT binary patch literal 29435 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0f8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0f8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..2c9de9e5d21a9bacae6696345f7d97999a5612a6 GIT binary patch literal 23792 zcmeI4e~eVs701t;ogIc{_MKIBVOU{j16$aH1rgMmpzXv~vu$wuBS2}o>c&!`jrgNg zBn>}qQE5tW{ZV6#RZH4h+f)gE&;|_FX|T49bn741*eq1is;C8*q_iR`x1W38%O$^JbA;nO57XAZ%Z)ZQDSHv4+??)-3InZ@%0Q_oKUIls{e=Fd zl53So`F4R+i%M=oPNKL(i)gk=&B{sno?2~{c`Dg;T9QUuJ;rzYrb=d&n%em)jbCy% zY_DVXh)Ui*nas&Hs5CQt^Ca4C;0pQ7c$JCv4cCg#y=rO}snlA#nl3+4GXYMe-955) zKa{zAq1<+(O3~l9_MpnSjCEH@zM@9wGMiYXVP+2TNka#M{~A5`hjc_sX&Pjl3|7Vx(LIff&!*2myaZM-nN5JUzqsA-$(X`5QiEW2`@* zoTZL&Zb6stxohGhdY?4qmPYX3;|E@+W+gL-oT)BQnU2*(T|7ky8*k)$8`tH~PwO6O zLCE~Bf%!CjYJb7=$GE2e#7!vbZvWn+rxg@UccUFC7^ciXF>_qfPHLp%0vG*~lQ4?4D*xoXcY94P_vv#2q*@MgziA6tF*<;th zC3pAW8|PY^S2>J8owcCt6h7*eTqaYm=8FXF1{Wf)CHzI(U8XQS5Ube_9Za;kdG+A# z`*=08v4{)o?M?XxQb_^k&zqz&Ws47*o62$@-mOJVV;4`L|GfPjmi{nPz~IKwDN3su z-^6c-M;Vl(Hm|;3y}-zaBNKF-Qwu-dkESZ!WQCl+Uvp zoj;}~74ovtK7j`zlG-O2_`wre<8V1E8^iZZd#Uj)MpBnb_5 z4Z;Bw>H@sA*nI6vDx>zp0yoKKU-t~SXY18`whc0UDqD6k(kUaJteV#@A}o>1-Z$J) z+4UmK&V@g+&q;tA^ze=c9u-uxBC)&!b(@JwZB4QHG*VySv*Kmd#%Hn!!NGwOWDzHp z<9+s($EoC9a^9mJ*W5=0hjekjmgbQ&ia)GCQSusEctNGp)AVWX@ zD6nuoGV$32UvI^N2#`-YW3d*8e;m``n=_1*gVY{>49RB#0Tp$;cR=;&r`6sL85c<} zfW*e5s5!a~YSu4A03^j;mvr_KYRBQjuY)A>B<6j8PZ$CWnHGYKOQrkvy0r6#OOF=7 z@fI9q-B1TXU|C|ei7_xd$R`on5Qa!e9#b&4BziIQE#6lL(7-}9qj9FXWnNV@&olK# z=lc!BjCzK>739_?Ub0b5YK8)@BqBtJWJDd%^ED7pp zJ|ErOq_VvYQB3>r;B9jUY9E=>0@g-J0c#&K>;SpV)HhjDu)~gs^t7c2Z8C14Sad5|%q0F`zP`kt%XD>5;4(z~^ zu(T{Tg2G&}H5Aa_qkyjFs@l3)e=EnuK5+I@{w^vZ5$zl z+BiZ8webwWHPpsKZJat`sEt=63->+L#zSp9)W%18#j$>e+W5#tS*VS(pbE9|P#Yhy z7bVoj!#>D2r7HrtdavJusjF7Q=iGsg_&(yGQeE173Vc&SzH$Joro=vbrFU56*ed9!t zSE@G9tYh;`*f;JsJ%xSa>K|e-qQ@V@lYENwee6JXR~?M{-0h93j4;( zYpV^_Xy_QP-G_bS{`I=BZ#?W9e_sc$gni?cS4P8`D&b5O{)9q7A~`|lkb58H4c>GK zXR5e&Gs2lF;Y^j0_3l&o9cts@OqFn^$|=1R7i#0-Oci&)TsTvO*PwXeI-IEz&Q$3G ymGftzaDE|YDTVV3IhbMafPs(j`GsNMc-S`{YU3ZpGgVf8-mk%hPwIx(GXDYg{i9L< literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_108_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_108_states.bin.bz2 deleted file mode 100644 index 2b87ca8f29cea5c6c95f1c9805c1934ee622f802..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3508 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 diff --git a/client/resources/hardnested_tables/bitflip_1_111_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_111_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_113_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_113_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 zcmeHNZ-`V?6hE^wvu(Nij+(BME<1~m3F*3uyR3vYLB@i+>k=VSX+jo4xGJHTS@Vc2 z`;ZI$F%b-j+#*yqvr<3Ad=N8A*^dPUeX#$v?pmu-=IM9tdo%Oi{+StbGJ<MV`$LbdlJ^aZJLK30%$+Sx%axs}cMeWHnMf9fvHS-t^o0I9j z=>6P9@npI!HkT>3m)!|yl`Wj2UIyg{Ox622qZAZ9!VT2O6g>d8k%LTCBD?rf%`B$L zn@s7XcIjbC{KYgy`N({3avY|}FHDt{+S<(hRp608+uL9zw`t`7lOvm%W}|jXwySn; zX1Zw|Q~kY=t%GTy)`|SYl)_&>y9>Z-hV12uWo4$@xg#FXh?J0{!XTe$nIcj@=5;$1Jus)i}>q-(g#Lz%r}cX z$J8aVK}QZG=s)GN$G|Em(q}rwTBa3V(fnRwas$P1b|up!k=;yd!}TalHCn>3x~3SS zdlZFML~?U^0!B0dV^ULV3DQCUM_QoGb0V_~O%$D8U}{8vUF0#gIXRu`g?8<_?} z1lx)X9wN>a_Nw}?aGOlU6!xLIwU9z{-HK=WFo`@BwDe8BR4{ilG_3?MMgR>~$W@*9 z7wlsicV;aVYn3&~U@wJ!Ewv6gTA zn%!y}oqmWLJ8P`?dk--#V#|Mv>~b@Yoq)dWoQgXN1dF+f>d|x$x5XBtpToN&H9*Wc zScB*iQ~>Sbosi;S4u+<)YXA{wQYnYD3A6@}-tl2=5-Mt>#^8(F6ojKQobhexd|@mC zb2l*G@v{lDrTTNb1C%f2`)*^}rs(R)2SZJb&neJy3)6hlO;J3YM()-*;bxTJFdh*3 zi0L@I$uw<-<*dRV?D=C<86RQvrEQvE4iRaDW%V*W;#H0L3%h7V10~Zoz?1I|*RAD#O`TT8`B zH5i_NcF${?k_Y{ROlxujHXG~*o5Qe5pz28s@|EAZklkr2LD&M0fnv`I{3Kpus#ARh zR_6*+O%2+-s!uWc1+(=A0F;g{|MN`WDPoUu2)R*nqUAGjra3y*fYoefdI*Yw{|2+w zAcfEIX6o-eISVmX+ils$AIDeDg9i)FLX-_yQ`rHxQ41C=v-#k5XQf) zf#b+19TlkXoC6Gh-&7p6E^`}UGW$fZCBjxxfJeCLO(0~8T7B>Jw|ZEJIq?AF8NizH zB*UJ0F)ZU&16sruvSW&HGro^k8O z>4!7x`EDO_#=#uyn~0uqMjY$LVOVlCK(GVE8;jTiloiyY$RC(f0F8(8A%;r__~>y5 zj&Yq2*Z{y?SgBf6t>N8jeTXo;lcFDCII<*}&Q!uatASFf2;6D(EfZ$AxiAAr0S{1l zC%f^Lz>TNPF?y#C0RT$?{yiv}kCPeTrBczZ5?;7M4~ccF_*AsnSOmOoH6(C8=gegA zihd0zEsrT=Lq?tBiYzD9;aqTuNvAKZ$jb^D%M5^fX92_=%W)2XWYv(UQEtWLKpx*; zvfnog8j3;^;p)RQw^l6jY8Oce7Wa|N{d5=9omD%cy%mal<9S{ zwia|nnLbn}b70IFuSUpw^SFL9m0K5jpOVIK2?EpUs+<2FaL{Jgx$1%?kOc2 z8Lm%%fg91pD`OpdiiF^&p{B%{avuH>qTDA~jHTSvJ_UJPO}FESg*XLq;XjU3p4IsN ze-NkOeZf6;5K7Izf_M>1CL5vP`p~?A^w~F%Y{-d=Mf(OqVfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_115_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_115_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_117_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_117_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 Spd{heWj@Lgu0I^#cJe>3AxA<0 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_11a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_11a_states.bin.bz2 deleted file mode 100644 index f7e2d1674d4fce897625e0221dabbd6710bbdf9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1788 zcmVPBX_M5%+Mc8JMus4IhDM*N0+N(X0ux3; zpQ)71Pef=8o}g$l0qQglQ%90!r`o7rZV@DLi5TjWfVf61m=g0}T94duei7uqZF}qG zaXu&PFJXBk=(;8tcf5?uUkKuH;=I@8ALKfhq2^v?*>zqCGr?b+!>fn-jyUMJ%HhX= z?1b#g++lHyyOHEEdJkIeF~#(l`+|3l<%hzngDdJ^O8QsOy{UMQu#}Q`#)UUZM?taB zyvQ#l6Eax$nv|9vl3+5W3W=q(gFni$;Gv;EI=vEZGD*nEum$EbZ{!1_Pq52>kIM?3iM_my?9>bU2gTA0Zr4!I0o~A2|5mDEAH>#ootP^bF%2%ZHG9n9lbH7Y7R-XL9{P zM*4YDk=RW}(*QFZujI3RPu#gEq+-NkQf?%i37tBO$Lwc1#C@qzkGfdM%Di4iKO5_P zZ_M{U0oh$C(y}*HXf-mZQ>11$lx8gQmmK5eN**T=xhI(!5`Rw%1fvE8>AIh?yVt(< zm*OksRbOzA;ws@}P7sulLM&!XTf?q7OD8%`1e*t(SnC~>xYV5q<~5uLi8xZpz&lDQ zNbfreaIAX`1;>!eUYg7e!Ek)V?gybu`4$wor}3+ym(*cladlGYKYdr>6BM6#yTLDz zedXk{!I|^AuR|RdRhWDXcQWw&*Rc!5>FhlzkjRXP>xUz1^C?Y%*-w2vsQ+IYX)>m_ z5!`(ZiHWhaVvp4HHmvr$gq&naHMtU$j@nt>E?oEvJl97TwEL!Bw8`S6`|A21Gr;1w zoW~k*qeE;drM(g9b3TS4Jh`E5R{51eeUK;6j-$3#iMfmzls`D~!dJ78x+e9!ccvxU$A9 zQsXh1aIxHU98dgIANr-hyO2kMQ1E23WCum!nM=}~EWALwA(U5gMDr8W7X&g>C0FSa ztE!HLl66lL2N_2|OQ@;XML1MA1}h1`#|c+)eTeia=vi4$P~pXoTcF_J;&F6YVquuh zr7u{~9S!P|8a9zrD zEOceZ7Z*oF%Pg62;;DP%)IB8i6g^2#1y3@2#XAfbWn&ob4&_gIWirUi(ho^^4?*Z2 zki(;)#dLKiLg2E*c^8p-6?rQMnvMc{>hVR;9TM+6PQ}o@Cu6X>7YCZWmt^X$e%T@j0had9$mvEV$%Q?shOiQ?m_V+?g?R7qd2BuDe)tMw|T z7>Y59NU4=dsrvG&kv`DM%En_R6$qV(Q!2^|GARh+tN@1zRJd6xR#>T7Vx>kh2+E9w zm?&42r`7i!d3IDq$=!Fp~+AnHE&Yu`x1>77;SCmJF;IF=ZGm%(DfV z45(o+%Cjp7$g)NTOc^p|Qw*aPQpJ^4GA1&qVP#BMl^9}HRzoaVGRn-WBPoU~A&HS< z$r!*HSea%POv@u6tTM5cWU|ItVv7t#mMpO`WmYVOjFik}kja6Q6qYbc3@XM7!GG3M15n3ejiR@T z$P^#d`hY4DwQ5HPr3`8WA8TjYGJ^zaOHC22qEs!UD)>a;^!v}aAZpujdhbkf z&%NjMzt4C6dp4)Ew&2`Lp1ENP(Ter<0jl0py+>PAti};rG$deCMfDz=&SSE){uE`h zF5<;jAxi5li{G^ps7bI*HB14mZ)O$BLtULU+_c@m6duO5RmClVLE(BCY*jE{s&cB7 zP3RlplX42xDim|H-j5esm=gMMKFP{c^&x(M4pT|O_$RCKFq6_Mez=T6fq_i%$9R1> zPo;?4tf0IM-WFC;TSC2}Wu#IeRYKfA7E^QyhGwSFBv3QHLhELEit2qJZ~@z)ig-9! zjuApk{Z5w(umXk-Fcs*xA&GpDpm#AHHV@!uQ|o2WxYiLcL<3$CvbGAb z8m0nHaNR39NM9d91Tc-zGN^row7pK$7Qj3)QB#3lX!@dcZ;T3J%Qi6;jb}=_Bgp+} zXz2H8{h9X=9|Z7GhJGW1QRp^8p9vXFFC!j1JRBeEG;S&X0c$GLz(H}j0YCRnDz5p?z=8h+f z2a7Fk1bbH+$}!4lt=qvkT8z#W2DV|!2N{;uarI*wKesah9o1SdU^)&88L4l|k`d^$ zD&!4bk9(7;0eu#`5`&Ee;V3!!ac>{^^VJxspPtH8FYaf1=gBIgG9Tt)ZDKmpTk&_M z_2A3+mDbmbot$MfBPKc5+cI6Y**^XPwvRQBAnWW)nJ(0NUfLY)^K^NX*W|+1F-k2r z?Sjlsg?abZHQSfZF&66?JgeA8DFmvu=G|W7tGI5t2~N%WCbd}e zDxE9ws98S?6;5M1Wq*tUu;Qb*vJz%glr=!+VYaK!t>-xWeyy#2Du`xN}2tR1kQd)&Fx4X%)$ zIWljVUW?cY$H#cMM9c6a7?RhA^c1$ApCeUS#+o(TB8;_DeYO?1Elk4^cdZ57vJH`T zQAfK;@XzNI0yD*5G#=f{5VD+U68zY)`tK_WqV64u9{N3|+(C!~7$Suzx&uW-MUc8A zt`z!~&}`mLAuO)Ngn&3nNwnB^4w`|0{e$A0HAe}{0@lvy0tgD#FNhn1GC^K^sU@p> zk_zLEtrB~K7vVKL2TP1?EyMjSvGS)7a3&ffZdWP@#cc#-Unp3NpcOkXoLjISQ85?@ z>wki{oeE&UCfGv^bPBcir%kt#lZT^e!d+Hi2K`5&0si{zP_1#c`^sXi^~apbfp@se z%841%Z}KcFh!bdvD{8FC4kMHTTEL)XDf?Nbk2Ha%tLA6Dk++@;QSd}WGz)6^k#6;> z|L07@t`ue9El`vOl>~(uWub>zHZub$k=RGPJ=gLE#!Pj(up6z=VDwJWe&E&Y7>Gc( zI4cAq$iKp=#d(+u;qmg$gJ}&5KLc+onVwq7bk|t6??m*z`w3|ALFoVuo`rgw>G_$W z4hZ9fj!{k%9=7oe%h^$#WH5W0ZJaMzA{#%MZbrU{Hqkz8GLWz#$OY{8OUncWLLY8}dBwkwt2_-lNEKX%mH+U*UX(I%)(hv`SfCYh(82XPsMp&H7 z^p7{0_PXQXe&<1)V=qYR0wTo0Ll#89l9Cn1^k2M=Z~zG5V*v+HR`v?wAw|EzseH!L z{MwfyF1Y9h9(>p}JizXwY6aW(C$2TF~R3dN4^8Fa9>Z_?4qCZ>U^fUDo)mo<4zH+8{QV7?Jbl4{y7qTKgEej= z-3z`BlV79n;MEJ#zHVQ8CHJ)k2@%=5f-3cTFx%&88cZXFfNWP?=E}t#djX6Fn*ZvX zf<%pqTD*SjAZ~=^$=c*PK9(yuAp$I{2F8-TKlt_6vJIEYPInl@zL`u-`kL5kOD(S9 zRW%`Q`4jk<@hUg%$9;a$fr>u20z>d^+2A%;{Ju5I|Cf zgtujxfcq98tzl6os=nFdFtr;Sm>wMXV?~g(yLdU16^r`I(-S{y(9!MY=?%8m0E-EU zDHX-emG0q|wTLYQwgkv2^&FV`Gu9{B)vr@+FW~Wqs0Tu@21|aXF#t0X=n=&mpg|}7 zAQ<)%5&&uP9Z24&rIM$yEyVcv&2e(j9Xe3(){)hF8bVw`h~h}r0QF(2l_Em8o=MTv z!ekH6Mj4j zA^0_w1e`Rv7=1wSt=<1`A{k^JPR9E@UKFcv0%w`*e{7( zEBFE=IoafA=An_O2(%2e3U|FC=Q*KmKoJqg+tPQQ! z(*=|j1Cznf4k2q3Z`;Uz&PFuq=WM*@@0J%Kl=(RuKWF3TY+R4XzR$)QWMU7Sbi{>IjbyiXY=ymfTyCe^iy5~v*xsX*T$L3Ks8f!8+U9}nT^V$`Mw9n|2;>6zj5RzQKQNu=mbHE=Mnf9@=ysmyy}@BDrHvMGj;BA=!&b z(Y=GjC;r^*iN|DYknfrd%)Zku?Hh1mx(-I_a){a6b~n-{MMzfO;;k0(V{4en>%izR zhLhM?i)}j+J2}{G$q|pF*sF!K$TRCQ-@oL{j#6ODq<3(C79Y$cV-ct@=`y5sQnhTS zu=h%5dS38kdbS{|@$H<|!50z93^hpF#Xqa#pVjft>U2)ar(vCcR>vFt(&f_bvp(H? zjPuXxe67_BDL?wc9 f^VI@`e^$p68NOWn*3arZIo(V`xE`52^V5F=3T-z- literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_11b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_11b_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_11b_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_11b_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_120_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_120_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..746496cf34cf93c8f933542b8385cc8c14e7ca93 GIT binary patch literal 17302 zcmeHO&2Lmy6hH6v&14+gIVNplnGk%jgyO;|ffy4LGl`1=p$gO$x|qZg+Cup#U=;~@ z0pmxPE{IDK-MG+hNQfpR?+@tGg<;bs#!o;CDVu^Ee&^oD^f4W1$F3UAUCev)?tS;3 zkKZ}>H}~F&UL5QlKK|o{w}>v)xBpDji?d~sh-xC!<&Zkcv|~}Ehbl33&z9&Fks67} zAfX9`757GmmKoPC|55^+rLFaEb|joab6sKNPA}(g?$sIH~N$*S#uKP)P!azmt;? z`W8jba~i5N-(#Gk{(W@ukxKNZmq5o{R53>$iYcElRpq^g{MrKL6DR#&OK+)7dQtKB zDrD~tzoJdkDZNmRRflUFs=;UI@Sl_UuHUjT6p6gYUaE* z=AAP{?sFQALc5zehq(T4a{B29sF;LP`q2Mts?0(6);)AO%1Os?rtX=XQ$F;{9cwt{ zp~0hZ0HdGd!Z;@dh!m<*>riA8O%FZEuE3ngwv{b312m%Lg3~A|K)NENN%Za3<#VPP zt(o9U(H3A}2x<;6y|2$Eq2uPv>nHNkjV$xJ$RVa1`jVD&OuzU$1-}9xwLrWtsLj-I zsK4w{zoDP$z$u`93)e<#oK`ik_Ms^p9A*yA(0CSd9e`XDu-XqkbmUD=%6Jx}aC+=~ za#qccNYmJJV*_XKzx?4fxwC>XpYe|U4(cu>`^3>4`s$XXw)U*SyB4UxuLyw z&$bl|Tfx9upRHiDzu0Cg82Ur~=}sULzLf{|ktxmzO`Mlg(ET9M^2B!|7%hyFe`EwB zvxX52X9y!0_!p!7O|_9CYz4zsFl+^*5f004j9@G?$)gX9U}W}K7X;(_UMDS~49tD= F?gJho;<^9; literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_122_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_122_states.bin.bz2 deleted file mode 100644 index 0e406a01950d17b502e7f64c8e7f804e77cc0190..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7248 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 diff --git a/client/resources/hardnested_tables/bitflip_1_122_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_122_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7b1d7eee7e1f0363faae30799aaa4a000e9a3527 GIT binary patch literal 41970 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 Q^BTJbDZJL7c>XW{FJ4B!S^xk5 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_128_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_128_states.bin.bz2 deleted file mode 100644 index e02d0729ae55fe61b4c4435644cad4731c825ac5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6269 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 X7(V!C|F7=9D)waN?s_?Tz5Txc9Vytx diff --git a/client/resources/hardnested_tables/bitflip_1_128_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_128_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..4c620265df601e69079361babdf8e49199e74f53 GIT binary patch literal 30841 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_131_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_131_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_131_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_131_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_135_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_135_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 MHkiz_%fH|FFJzo{(*OVf diff --git a/client/resources/hardnested_tables/bitflip_1_138_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_138_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..87e96276102372a10a05ec0d04175f575de5a102 GIT binary patch literal 24606 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 LgpbKA`1!v8!YRQN literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_145_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_145_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_145_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_145_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_147_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_147_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_148_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_148_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..eeac62486ef1a972d110d971f66c234af4e04ec7 GIT binary patch literal 25815 zcmeI4YiwM_701tA-(9cc-5uk!opq=_-Xd64i@Ma9yF62Ru^qELdg5y9c%q#+3* zJc_SSn}#%{1-_(|s+LMoRY?1R6hef`BB9m-N+VUJw6v1xgF+|}ppOs()8Co9-d!ie z5K&hk&6VuCd+$8Xob#Xan6oqC%%0X2YaV%Gg-B`f);%&}hc;U~WCOWyWMIUOOp?WR zq}#U0i~&1K5*bP4W%5v`oNjqskoL_5X*u4G3>0M1=8=KCm`JR(>lTi552Yn2NTN?> zjC8lk5u0<8&WPmY*lwy*tj9=@4MH&`$%c6en`H7pLSOV7Nzgb*&=Pf?SlOfjdkTJf4)gbXvkvA`?oEwk157vfP6s%r*&fJH@n8RYGgu;^9;i zCG0trxFIY`uuw92sgHz~?=zCK*<`EC)sdtnL*pGrGF$5DJx=fma#n)TesgK(pLnjw^Vrk%D{9znqa1K5yixjruNY(lVLe=pq9F zr|^D{j?3DA$28dYw58>aHf>>@2~=czP2tE6`aC^X3gJaPZS^v|6!*E5{icabme-6f z!Lz1$Fp*KFti9Dxflp86;F6@4#Ldwn6z8Tx#ltWIvMI`yfnWk2X4id_ml$Of4`dVs~C;#NlGzJCxV~$hQm2cHbU0VLzv`K57wAMvy z6_)9{ZLsZ`n5+8LjyQzaH)V?)Jt9HtKuP9|49Lv-;g(4NyCB*6vlWCCy|H2EiZCth z05(*_MRKm9xfX4aIO^@SrZ9gom5-!A!YFQ{t7ZbMc}4~w=04j<|8?}7FvHSDxdu}N zcv5#I&yZj8Udn9e&WKcqP#Gov1~=eH`W463>vh!by52-Bb@cHo6Ey*ZC_q|uc8w`* zyMmJRa`#;LF_Sx7+?=O{1%U4w6$9;-!cM9vZni>8&Y?Z3qu;Exn`6M+YdozD(sL14LxC^JSS<+z3l&(b&%1Fv=)(QDv;mj3H#0 zh7dO^_QT0*;3Si-nXy+n=_Wpvj}}$`PRZsalMx_-;AN31wPoq^0ve!r;sQ#Y#U1?=E;rGINUDiBnnLNUMhvO- zCMx!$Gi<{~uUv?aMRJQ>0`En9jT?!8~Rx7H!uHXa%s! zHyEB^29`n!BrqeG(I~Bw(P3O@N-I`C{swH$EZ&`1Yjf5ij!T`*iRcLWDkI(yvkr_a z`|Wi|YDSEXN9pr&bO=(~0%_=Fw%vCwALH-LM?NeGZE7ZF(qzi0{D|RCSU8mMzwxc6^Y<8gFuH1&j7`Qhvk8kKA`Aby@06 zzR>}y0fEl^cE-sl-m?~J6ZSF{Dw54>&D)t2ZIt`L`&f`ISdbU1@EWxsZv-C>407~r z6V2~3@?98x7h@i1YRE{iOxlNJ5H$Bg(@v!U+$uZ3g0h2K%JQnL^w%4C(EiEDL)Hqk z9tZJ&dKc6BZkk5ia`y(14c1b#5&JC;EpIBE^jclzhE;Kcl3`Gi0wp<6QbjoU>Zkmh zph^)GD|Kn8RqAVbPq*R9+6h>n0)rvk|B#A33aW~|3)S3-@G;%d^H6rGHSIPpPaA32 zmqQt)v8v8up|6K!cGY5`T0myz_hO=Hq8s#l@eY~LEnuG3}_ldXSLj4;q=;Whs9sFYPs(Fwx6XKeBr!@2phO zLxWRpWh=DTM2km7pEJ^TpAz@lxQ0@>eCX@`7$>xQNI#)SZM1k8qS$a~rq8QDi)lQb zZbwC#Fnn7ke;e@c1{%8%_Px%gO86OkJcR{alw*=l ztKL7IX3wwc{fjSwQl@K3CutJUJO((@vEFAq&0lff7(xPbgQR{QQ)N$dy+m!;G8bg1 z_F7b{@HNPwAA*dCDol9;#dHC02AQ-1cw|3TTm;%u{HhvU`a3l6KO@V#V|9N#F$oB zPpZpR_!t{ZX$u70em}-^O^q)SHLEYO!#NERt7g$;T#AZMLNI>N0?W7P1cv<1l%80n zD~OH6F2=}9JezOic)ToKEjg~qEI5tD(11>LA+(F=yRvE`8JuQ<7GW7dZTy(@DJAhlWeT5r)6qGN&snp;=2-96D5o}L zck37%E~9lER2RrR%$+vJ1TyNcf`kJC8R@2boN^s77w*&3(;4HF@%r&uHN2I5x>{3V z=Aj)tmdH$Dag75RFSy{MImvzSazRYWf&XX5w6HWDuEJ$M#^jSkqRF}C8D6CPY8ISo z;V^DcawBdL;#@-bakaWgztO0K5iT9=IQAOdH>M*&xD;6{f@5p0Q>|0tL$LA|b2eo$VdVQ>n%>64cfsfkx?%fu%| z2)A>QhJ^JWIpY4fCq&vuRvATWemM_J`3WrAi5msvmibTqDISSLDu*z$ml|s z&w{vYCDVchOP>YtSrF&eANZG;L3|d3G>2wMxqKGH{j8AG z3_pvUfUO}u3o=pLLVOm)?*)lvj{ z1@U`9{9cfS{K}PIIey%?ock<@&w}`E=j`Y5+s?=MIX(+A_M{S@1@T#sD5;y;{az4V z?Dtua|JMOoJ`3WrAbK2$KM||ypd9H>#Hu~*;SRPY=Hktp!^$Lf@cI+6{E1kao%bhV z`4h3w2>wK@o7uwcPsHNDuaz*upNLgufj<$;pNPc)1MZ|Pw-#JIbl0DVHQtdX{zNQy zgoQtRm&1Y%Ivd6xzUvR)EywEzoW=MFJbagU+MkG}=e7GRh|hxfEQr%<`zI(1vi5w} Myl|zK-SeIQ0twPW(f|Me literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_158_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_158_states.bin.bz2 deleted file mode 100644 index ceb8298d87e5e8a14ca8c7e0e36695c0e11db33d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1263 zcmYk4UrZBs0LKfqUH@E!LVNsXQ0!{UpI-2OhKEkWM35qQ8ilqw7a(`Pnka9Vg-p#B zr9f-1Z7daBPU93YB4C5pmxV35+_iULmLKAJRqMuJGPI!4qSb5#CxMBHTXoX(_{PUo>2*x*EmXAN3QnlS-G{BwVI%_MS7})v8fN-MGDc=}f9yx7hgp_HcM_Y8gI%6n>3$ z4dlC$(#N?M%Vp@p_rJ|=Ca*h}%N{*GisQA>zl~`iikSpmJGjKK{r@H>){D+=6cxS( z1RTJ2mTEV1rZ=^5OZYjO`)clGcjKF~p^fBFZecICmRdId;oAs5rAI0suKG)7Cd85S zZs4zc*|2#CB9xS<8jzqsDk>j0WIFl<8+329*w8tdQO0d^nC=fHTp9&- z=;F8&MhF+kkSZhPFk{4tg2sM9@W)F8uMyf}-;rn*B4*afqYMmGv+XKFLVZn(?g*o! zuZ5kwKkJh_Js?XeS9D=IVO5To+?k(JZliVEKUkBM?J|9B5UyT3M^GnG!Qkt|r9WsJ z>W@sl!|W^$hTmrW<#wuA5gB+wqSM4tOPfj#(aspi86#w?LzA6E6oFR{GNe~;#!GSB z5|sepLwuX02C6AXvFz3p?MxGEWCG@6~{56jKrJ%G$$I7TOMV*jCtQq9=q{v1{q>HvMnYhN8W=@Q_3prtuk%n<2%{Ji<90#eGyydJxN)RXlGmaY> zl^!R6hy>_Uk^P`FUN{|N8AVa8+)UM6fwR|2TOSPO?+x^G^xZJ)oL8gS2WD-~%E&R{ zCost~!nN4lG0OfFwk=Mm^CHWVvu2&Ap_jYqgqV*C*!vX}C=nz?=#V0^IB5n0Sckqi ZXXT(f9F;=@ALBoMcC+e8!w$dF_a8p+0U7`R diff --git a/client/resources/hardnested_tables/bitflip_1_158_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_158_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8ee5757b940026e29af614968f2c4d022ed109a3 GIT binary patch literal 20720 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 SkR;*OWj@LguF~hXKmH%Ck}&T8 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_160_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_160_states.bin.bz2 deleted file mode 100644 index 6264a1abb57b3e7d7bc2b28e66bbd36d36f706b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1300 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_161_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_161_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_161_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_161_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_163_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_163_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_165_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_165_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_168_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_168_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..151d6c198a5e735f5f3a14f13ca538481f673916 GIT binary patch literal 29435 zcmeI5dyG`|701t=xiieHGxJ+u1M7(HAd4)x3yAm#HSxCffyi1FAE?{7wiHnT5q!X^ zc(oR5Yuhw6t+AUR1>m!=fSAB%F@x4H?Vnt;6^>gl>ogE%htr~6p zO|pAu@8kD7zwddUbMIY$|MtdN3s%3eP-Ii8_0YdcpY3b0Yx}IVYo%{ppRJQ$Tg%Sg zwPM#c$SLbM*pd^kBn@j@(*RI5D9x#zm9*diyfs1(KL8 zBl~(AIb4uTPNXEo-WENp-H4a>d@*IoGlX9+L)Rtrz+58#=hN1!RFJAvhO-}Nsh4(Fp|4rka$p=G=VqCNb>Sb zkV*$)N;1tzW*J9@a^gLFxBoPfzQ%;9Q;ams(;aqEv?$+5qkY;)35fcP6q`&~9M8F3 zY@68feT3bpC-GTo!sMAo_O*5iG@fUqMfd7w3B$4hsOZFtj0Dkseie*No?+yWIeIK_ zGBSkO#wzhf4(Ir@x-@Gy#WdLMI?_22Z92lDp>}E(jI*BjjnZZ#E3a4I0aDBY$q224_eMLp=o1P{763U zORfxW>RVyMxm*+hwb_*Y15B7c7&I;~M0lscdpuWxOUl|yxOOXJogHx?BTZ|=x*-s8 zEc-{QT)<*rE--3AnRW^AZ-wQYpL&4vZe`0z1@<+7D=Z4rkUXSC*|ed8=ua6e0xN8W z7=f6~dEL%`iJqf#-#0G(#)68xx00t7KghD)9r zU_xTieyV&aRY9S^QE`5YK|7WPh)x zp-@sr)eo9h(aEmts#!jOp=G{mM<^#SY`#`Al%Go7LK9xWH&2E8OcS100=NlA7XH|j zm#UCA8|m(1dNDn+PXu}=S|UkS=`RA{-*65%qyR>x&29teS7Nv_y%F`7Mf2#f%fKzk zJdc~O9*GS-7Mrvenet7u!0u8bH@BfFB_j{7LRetwhzlZ(`oNU;`*tMQJyM8NG7^!z zwclrH3{q8>#mx9!C^#Kfvyz6xYFWL|c*^QcCRDlOx&Vodcu~Ouew_s4y*nXorIER# zSmSsjod^W1e~%-t#;Y96B9Oe?GZ1ql(;Z{N+3g&@iwp13DgVWK)Jy<-EDIYIgbl3D zT1Fl_hWQ}{?fw%>Zvn{G*LM(wVMaRasZ3#KLx6&}Ef$4&6}kOEJi-e=pEVErn7Z^q z3=d#wmJ#X|yZ>C*kAkdOz{NgP*6Qy#mV_zwMk@iFkhXR)iaLtv4&<*Th=E$g6XH>H z1s$+vj{OP9C?xmSkgJ?frE5m%Cf0IdNw(wn>>t)7fx@sV+w;fd#%8aZ0n(|xf)tY- z3tjDOS+6Q$7VGOvCm64RxbA$*ss9enW)*>@gN0@ znr=P~3a>TNW9PGUXkYiFl7(s9`V#OWsn~DeOW5ZkRvpP0(6@%E$1>DG+2v>W2^n

    +qH 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 QdU$Psfp871`sw2T0zXs6;s5{u literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_059_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_059_states.bin.bz2 deleted file mode 100644 index fea5cf3e8286222bb847d6e2c392d72fb2853361..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1820 zcmV+%2jlocT4*^jL0KkKS;op;8~_r1|KI;retZ#CFw_@ea4}E-7hs0g5kLS0HXr~3 z6j6P8;0*r&000000000000000aL~!7hM5`~WMml`8W{nJqb7hdWMUZMp_5GwGBh;E z$TBiCG6NGvO#o!b#4*D|CYl;#XlapOKr?n@vDg6}-`eKx!{Bazp%GreE@FzVs^2OM-j^>$Z$Ikx<1q6 zA8c^*4>HMzI*!Wb936)l(bTZ$8IBhi9>kB(vW#V8B*s~b9tU%&{_ZE?9CUO%o|E#Q zNbX*ye^Brr_c|%!XVm+r&~zR{(Eg$6bWhAP^%g0KVxH9%*~RWXZZ9((Uz}$c?p!=W z(#Cn599$eMdCukb20i8Z)=y&oNAo>EdJm!h(~o(d?sQnm>w3qm%e_~=y({+~gZ7@2 zu|LIBW9BSmWnK>xABpw8xA;C6-a9MmUsH+T$F%!TCK>e)LE^`tADr?#m(Y5S@z6gBd%*Hi`c@RU zr{h;cFWzBcadlGYKebo&iHc8@yug>lK2_qgy_xr2SCbtVRhWAi?q&WS9nV;I4(0Wq zv2{A9RP%?-{!Zh_&(a?P_*eWV*!#=!o=fjOQ|Emz(!FQteh?mkm5T4eB2eG2@KxbHZwFQEBX%AVu?XQe*k{0a8gx%m`5 zsrgnYsnwI#x(_6}ELiCCr*d{5#oTr}zXC)rfqoMt;;8+_ z+*xIV_zan0h87sGoeP3u#JGnHEKUm?E)1AvD+R${?Ceq4=nL_k6RV*^gD4q+9ZZGt zs^cdDeC8FHvBaRl;&6sTz~Zj*=w)4n@D^Tn6AUa}oD9i~GBC>E;dm!Og9b3TS4Jh^ zE4?v0#FyMv>_V9?3#iMfmz>})1;%2^iwu}#4;1lsTv=llDRG$0xLEEw4ky;AKjBM( zcOZ`Rq29@4$PSCaGMAw^S$F|C0E!dS5+MgBoIGZ~y59370Vi;FB>9SN2gGB9GYWZ=r;%QEb%g6>nHW1}uOxVkzfS!BzH6-(Y8 zk?1F+q3KF@s(H!kDcE4cD;URccPe_8Q!I?V0Q47l@;ry2FzD!UT^&i#xGb?ACE{L6 zyj6qFqkx|Byb*K>>~+u>gA)v^!92sF z=!{%5i;0tkj`8OmPR^?CCxecqj4{=nO8#X`87#zMkxW?vRWPYk{&<3-{(+U1jK)kV z5jv2jRg@HDQW3>jDyp0%QsHE&Sz@JSij^41BPuc$U@WX4#wbjdN*PS7GAj%UEWl<+ zsf4h^!b~PgWLZ-p#Kg)hSVYRoSTe9+#gt&PGRziaGNFXSD$J}SBFPvTFl5P$l~}SCGE*^@Lna1HQdq$(Fsm3V1{ldOz%a;RV#XDQ7{ZebN@Es3{x0N- KaG@cMl)5;~NPPPM diff --git a/client/resources/hardnested_tables/bitflip_0_059_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_059_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..3fb7f1f6094e9c7dd3fe6357ca49315d835891e1 GIT binary patch literal 18328 zcmeHO3vg7`8UF8XcC*>+o*$5yKtc$yKoCffhr|YCQ7bwj0coqz5edE~J^*zr)+l;w z5t-tnS|3nFqE_wbpp-$4;A81bTV{|zZK)}ORg|iQR73HF#MAFTckkwIAVJi&wll`{P%2DX-&a}S3H076rvR))^||*zV?0EqGC0c*rLG!n=0D(*>n+;rS&H$ zlXV#{whB?&U|Ia06-P~+ZK`GpXnh;2P#)@Ptzo9^MyBvkwyi2|4h#&}$zZF3`BIft zrEEgqY(6ckP_05SOY082*vb^wNAqb`o~jG+!*rBN5XL`Um4}&>R zU^zwzG4(xLD!>XD`huxIzXM6+g9N>Y>8N=aN1w>lzfhHAvmNivcE5bS%bFzfTjP}7 zA0r;c#F#KJnC-wU^=gC@)Eo77U=AwpM=3!oQPQR0CeZVm z`XuI>gz|M@6{OhFLJ)382Q%deJN?je9jXeM%Je@Wz%~>f2an@1tv(49=Yt!KYcd8K z!?jjih%CMYO)p~_tMxCK`kXEdX??p?4bioZ8e0JBfHrXZkSTvCQyyMhH*=Em_~Fnnrrx^0s)c5IRfv4`XDXS+ zRG5v2^=c=KEL`Sv#|TRyd@&+uB65~#jh90}5TrJ8im`$5sX4V?290Z-4Th-yYeLpG zAy&gwzzMDgL9U_2fgqA_=!=>#_qP76$iHe#E^g`1Yt$Sfq5L>pHsc0Ni!W}{G z&p|`KOX<(Nhxj0XeQElQ3`U~caD6UhG?7cs2tkQktQxlGoyAnDPk|Phj?-gdC~>AA zjs#(#!l8Hu(=^n^K)OBtQqQPnvLAu6d{DI!;)PEXY~@wrFhzgx@Tv7M%=Q>`Dwa7KEc@>8HGX;Lq1%q`rD8Q=Pbv<`2c+k`330{*6TgNCh z+_(oaI}_&JOP4dvda5S@VTkEb8UXE|b_erKMU&XRdXBMJ&)^xw-bx`*tu^odB5~EZ zhN$DS9YJc{3?}>GVZ2cy{E(vUtVU-HlYV%PsX>2m7#h>9GYS_oO|9bE08xe z&8u{-#G@wt0#rDS>5Psj1z^R;ab+dUs3>EA^uugdpWCE!rfNThpCFb-^n-4rbhmWj z71y};Dl7zc2(fIHQPgP1Z_^D?*x&syPBU0_K))x1G<*AHln*HQKUuqAKli(Hry5)% zJ+oxqGQAeD6^@VbaEX@TM=&I>59ujvzcfdxGK@82wnZ3gxB7G&Zd;j#A?{iWxOqDw z?V`?hli{B)DgV+dK!G#P&ESp9bu1yT2|L=XKwQ|>^-0Su8u6y1d)q9RCL z5>pC&OK3Llq!1R@VnRTitRz|-xB$&SK*zw?7R?dDvVgU7x&VSg^>gBepiGb#TWZPb zo}j{5LyN@T;AMCX&%qL7Tgz~NTde$91e}S+h})D3LUEfw+2;xtBWT4A4C7|3M^p?3 z!ulT|Znpv$unG1M1)W0eLn+g( zvT|zL^cy|P3gQHs;))n+vcm|afEF-lS;~Hr?jud0>8kk|Z{)4#LKHj|5zT^HexO^t z>i-$j&}&5*cncJzK_x+9Mp@`#md*4)N+h2^D2?k|o?}Gv60~`XOopcNfP%u{?rY6Ye-fT|X zSIyLtdTEDhP@zADZnHTlrUt8wV|Xw+!s!XKFAE9bZ=`26>nbn@228C*XzE}D#JVP@ zAO53TIR+bvVIKfdqjN(k1if0n!ig~hm?}_pj8@P^O(sA9EEcN*wuu}RHK)Kp5IKrA z#v&YBIs{~GIP4RC~bmZRvO~r53nFG5=H+}CkTsk zng0G3(|&gx-0wMzbLs@bl`<|C*P za1M_SVy!oV)W)JXA78P83tov!6zKNKL9|v+!ct8ONW!(?wNNAsNge<(W343-8&5cS#y9HD)Q;gq2`HcN>GEPKQ@iCjS1WOrE-6K!^5sK!Y`I zBb@_Zhsm$eck}86DPOm5yq5b|1BHmpT|t$4Bbe#)G!3SaL_oHyu5#t#j=caz1I>T= zO+ma`MJ(PhW*|4f@?>pt9UsdToDcyPRs&M&|UW^)B24Ji0c!!2c6CK-E%ru3Ivd( zA>kcaCg8pWNNZTsg{rUjI8^P$2BrrG{zwrd?Ji!&tljKI(xGtU;2WX$ZiK1bRg9258Vp zKM01sf&@UCd>3S0<(MxvVldyX8OJuPss+XWCYX1$Y4ZE@8VrLR1*D@Ga;t6q-F5 zO>OHK(9)1SKwSksw!hEk6L^mfhd*F$LBIvrCYD;ENEzx)zG)e_gTbibijYio2C6psjKc59;-vtg^Dxt3BUTS+&Xa);1)56) zDp+mCM!E;haDr?dRx_}0hlO$nI8(`_R8+dfG3*cji=Y|OxXze`M|%DVU|Ps-QbAHy`s1;_w_VDnK1{f2e%S zr;Z3r_dS4GP=P?L;d%sgH<2GM4n^LB`CR_ABxIn~3N$!8*y<85CWBGn<^L4ex*qE$ zynBdY!uf~YYu}!8GHNfxW(iChu^A4(97Z{MdfYn-xU~TJP4;-|TP8l70I0AItsz_o zg8}EI(=>IS`E@qabkHPA21Z80QrQq=-RDf-ahkz#O7w&-N)qjMm$hldYU51$jc09W zwVp1ZtQeRKhIRy5n^@~6_H#C(Q9oznHGj9f2%*f++4wmdKWF25MCN@q))+r$v(iOA zGqAe^)cl|3Y>pI0Jm$j)W7ALYw-ZKae4f7;sMf+J@vEkFqV{N|mg7TEHa-Lm62RA_ z7h*@~CT^Y74&K|x142r2C-fZlJ4hz>ut`T;IMYaWXXjSfo5#gY9h=FEWG{oFo8CEB z*+`*8FOa#NmW16#+sAG@x~t-9|@ejt6Ud zNH};SwVjdy+PX{fAgOzyG>{8fg>q~jWuvhsozqoY06%YBaYXx!E-6mzy^k=d8!JPS ztn4Af6EY4xCv~rv&uUcgThErs;pc1o#|C@MW$-wNp?9#pl7pChVq%H@Wy=`|RZB~S2AVh% z4r4fpoweAuBe9c(-Ig5jNQk{!NQ*qbF8%#W&g>`!woG~l_ZRTNOfnXM3X?8FS|?e< zb`pE9RHo-;Po`%pvKrsaSsi>4k<3uNq+R^8I{sN5|Ex~ew0sKI`Db;!(Jxgl?LO<% z&Br+ZtjzWmSsnkZ4kX|ljP}p!WULtG;fQ`=_3iw~ zhHqK^@2fI2Z$7X2zpwItUnN%I|GvuqeU+B8sQ&M(zTBty)bFeOvpSwN<^KRi_-A$e fvpQccK=@~MJdxqx;x~R)=b7nd62hf+44v?A^j4Ym literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_05b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_05b_states.bin.bz2 deleted file mode 100644 index 4dd885ec3ec6446a721dc82f6a42858f71069e03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1077 zcmbWr?K7JP008iZ2sg=vA{V*y*6Ag;lS`9_%}XkVq26^$JzW!t$k7_h1wkxS4U^@H z#!KSRx~S3WI$XPOXFQTrB9WSExt?=T)_NJKMlnP7VgJE?AAb>7bAzej5Fr)vc~f2m zAPJS$e_rNGs{(DB!|{L|a0c9M@!`%k&Ncwx;Vcv5x0NP)D*zk;DF9#_q?0C6D6&?{!da13>ROY^MzX^XB{E;_$#jd2>>4x{cm1<#1! z4Uv9MXX)_5DB342!(%0KA;U0{+|!!+->F#J9!EL=6qzrx$5 z-d=t3nzxp%Y4ddgcS=3E)&hszL#HD=6S42NuM|9{?Ad$sw?xL5qQ}T>CSq@d?20b! zQf;`_d>HosRew+Dl`uAC4!f>BM3*N+FrTt@0fq%_fzS3sygyqS*JT?6(`($uGU$Svm6Oy%^6#Hi?|$9w_RMXYowg6Z6@ zwr8f37@w85$rmj&$@dRW7PNP>cop$SqfM_nzmx5EHY{y048Qao1k+&Yps*E8%Gt|| zmFp%dBa!oEm>j4TY!>n>q;=oa%<`dzN9AavRB9Y@p^vS`^~iQ{>H_sUR<~4VK%OoU9!h zlhbb&p$|s&-2#lX(L!5VTB_xZkM_sScl$kzs|g+ubI^lawl7J1tAa~N#e&%i(q&Bw z(UF=Kb^XfodfnH0XZ7TzS`-3>a+C}ckg`VASy`W^1uf534`h=hm&9yvNO7hGOsJ`6 z1q?LhRueKbV7394;Yp+k_4JVJkvR9kjEg!q#h@o?xw+aKV!a=@*bcervGVljC=v^z zWU$ma0ys1s&2DvL-;q-jK&+&XdTRhg!;%(`iwcF$m`sqhLJ-)a`%$9qrKEG?(Ngz; hNr-#d5GAu``#bhhI7t6G-15PRVV zAp%1D0R}-f5y6Cq_(+V3f?A_Sz}82iD25=B7=%73K_WPQbMEfl-NG(Zs^Q1IKX&Jw zGc#vq&di*-JDXKrUo@}zy_*6=Gxu*55+Buc_2BaulTYMabyp9*>+~x_WHlFLH|RnU zCW16Ok1{cOgDFcy$^m}BlrPhGt*@FRzDg!b!c|>8{u~Yu_zcU;VVcO4xt@3XK$-Cv z=6nZx^u*(O=U!_+r{$%wHA(H z8o5v@OW(BuIc#Ul<$zU&2|J?^jJH|-VH~8LOhcuDZOBIhR&ppS9~eR37!GD)so)l- zGLfYgB&F+RAO|v;iMMk>7IyZ5&jb;CW}O6d((sl#hyO!Bx`t;LL~PMv$f7C^7q3@wtHclV*-TS`v5cvBWK_pGv5caa4qyrb`mY~k1cwVY>(VG_D00E_!_X6;b0~+Rs3JB_2FQ7vVC2(g~J;PpRF)s*^qt6NYe})4cYc(cGE8gpZU~s%$%8dkB!LG(~bBBsGWu zrkgvMO6%kHF!S4(CIj8r&rFOp0(85wiga_Zx*FuNo2g~6RnP)+)U(}G!&EK{m?lEI zjf>zuj&w4F0|UTvxqO|##PGfgDjE0sLh`T;n683vi^SCt8OOAt-GY78segy2O;F*2 zk#Gi6Km>=Md$S7p7Snjc*7-Qod$)u&ku0X^bD1jiTw)FZgr_Zfm}#~;_2k=_!iMG# z#~z)Q2`@Pc(m1anOwU5|LaAbUNQ2Iful0h)a&taB>vMTdBQfDQ8#j2NI-#C;8`Gi$ z6c>d1^q9flOtsM9PLVZCqvaseD=rcM@NAS>%B@;frZokSbGWU2G}9=AN=YJcp#HtTi~sbva@ z6l2gf6%JpTjO>mk#SW%i{VVy5{?tfAWMTGersrImi-0psyBc-d-6C+q6&h2HJuX7M zVGzUFT>%bgU>h3QDu<)`tS_22=Nh- zwORp0n0C0daQ#kq-~fkU%V8Q#2a_DIOSi316dXTniR2g1V}H08dFo*gAGr}ZFqnX` z6$uw{7uKmR$Mt&jCP?{=(GY6y7cZ+|x?My6j+C3FSQyEXb}c#5mJGV$Yi|W7m=tC1?+xU9k4 z5=u5k#b^-R>C>VL;^_nk0ikC&sd?XL3s z2DVSbBhwTV-|JbpLYeI*;EIgy+lspl^e^JNJ>et^%{{F_YAR0%C2@+8yI_}1UT9PyDt=a8VF;;N)K2n4%s ze~B#bB(pe+AJQiNLEsW7L6!5B`~lFWMs9rpQ90ga5Y&Bqct5r22?Y^MQljNqww8}h z+y|io?wW^OA^;eNhDBqq;Os))*gexZc||JM<7j4b4%8*P8>iX9bjY1h0C_f=UBC{O zYG-;X2_ZHhrr`$0tzX;JUq!bSSpvU0oHj(fn%k?nV_v9^kF@61+^#|X2jH5mxf3$G zF~b#Rwf^gOcYlgIH?jE%;Q-Dq+_$&j zB9v+%u9W?t-QpW;`EgC=xiTJ8zHPm0Q0oG}ulcprT6fga8 zi_9ApR?X|3{stTcyk3CU3-EdYGQ+%~o%DJEUN6Aw1$e!H{IoCCUN6Aw1zcQcdA$H* z6R#Iw%&-_41iuQFdcA;)Bc<;%UN4~UHghPvUVzsNi29D#3-EdYZW{4=0p9;_-2dNr hy?|@JFYEOJyk3BtydB`GdjZEoh7sYp|JhMB{{UWj(Ww9c literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_05d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_05d_states.bin.bz2 deleted file mode 100644 index 7ea71a9c6a21618fc2cf146b821a0502248669bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2472 zcmZXWYg1YW0){bK42HoN6%QG6u_}t3Q8=_6)_6%`)T(E_aq-a6CdZf4sfA z!#bwDI*wn$5%C&@>@dFO!wwwdICPwN`nXqL4Q}ev+$BcMCH$v2FIwL95<)jlc6jQK z3>qzHuJ7<-(DFCC@BKBfvd<9sdNB7ZM0NU!{wO1qQE0ET#I+x5>kgD?eXnIzO>Hx42dfZ^W9&x)(Q;8?}Q=MTECZq-JaQyw={{) z7fD|RD*t((VB1_yivG$&LpqthmhPGn0@_bt$NCLNtU(q`0y_;0pWGf;@0scgtCz}` zSwyk~lPf>!t1#|{#;0^_{>M;enOWS?B%biM7Ia-M^6k1>@16u-wO{#}JwD!kY1v$}uGaX$|O7^mL}(35I6(rTpHXFHk*X2#>1)%Fic2R)kcd&^t? z#-DROeKl;~OPUS2ZvC<9`?Qvy=ASnpFnV{Rlb3g=w?Dn{` zHj`WmNCTv)&}EufzyZf1a|R0O;S>%j5@n2e8Cf87lhdG?k6CbPx|x#Xt}-VD1H}SN zA6$`F;45LOqn&MkT5yYns1xH09EFrJwqX?=$CLq@ab!xw@=eS6Eia-FjCM8~L`NNA z`tzdbJ~1Cwb{Z{;I;@H!LI4E9)h z)#NljQ%wi#Tq{OIkmxyp0zoEPvs@*pae{n&jHOqFXh90h0-0*CkDsStn8ow7lHhu6 zOr#3V7iKg^Hn6$30yJj*IYp#`iIUMFXdw+`GUj8do#^M&CimxMy*40oO5C#1Y9h7iJ^dL5XI(f1URn$RGW8Ez>g<;w5&52+h!RMMfc`c2>ss*Ni z55^3Nc{Q@B1hwmmK!iu^hA%!fVp?#F#flH9U0*QKnX2bL9^wFF)EJO-JIk4gWr+Ft zBkSt#2U;No*GvTknC*tk(0O%fj||>R-6Mx0Qj?5UHl78>x#74uadPc`DEGxlK1IP; zVoR*on5KV=USJwl~#?UM9)VMyjgNP4QrALpK@77D8poA_5QY9=)&vmV-J zNX%!6p=9BA^e;oR!L|5g&cSE%Pbyv(!owgm>$mo3lYP-dv$k$CWo(B?B>~EXHc6a# z^H+=Kr{sd>mFH#H6}TWRtz0CFn!J{7Z>pa-lij|#J6IL_ZP)nSwXHb&{?JgEbuwqmTrp90)p4=kJ;J*jRjX-AvA)h$y-ezKyT`{%y#eX(WS{ar zxtIM&dVhJAI4ddr^Ub1De@_^B_^kNCeHB*OzqEBPOZjx7;;v_xpbQ~J1vb1IDzH|D zNXm^bvQMo$1V2@MYfnyDKlSeRWdC64qw1e~_M_(Zm2;|5)w?PeM^2cNNgB8tLBn>gm8 zL%-kHtA6I+aZ5FfAF!#wb8SJ~>z!t!{jQ4ce*7ORX7TI?E)fzp<(Od&N=7B}OIKo$}Hx?$s@ublL~ z=1hE^3{bT{I?J^m_za})SfiVsM{wV;TVjegQ_tVY2x?v#h#3v~&6c|w(-))mVM@SG zwI8hTJ)D=<5Opk#YvD;i46#hRW*|&~7*HcZMOZ|eJq4deVG4u_ctFDm2LXet_+NpK zY($ADSOtNUk~xxzhf{Ai5gviyW% zija0-D-UX9I3iFBD_Fu1s##P4;>3&?s6A@e;V}gdV=!&9+mTwTAbO`{!NIKmn(e`w zjXEPDUVt2^zGMLr83m1ygcTCXW>JMRjj{P>xVLImn2exPkqEYMz%MpD!d^Do;~H+D zl5Eacd%m!_02QWq`&l}s9nh$mfwIiOj|G64PsPAN7dmRQVU07YZp9J&`wlqDyDQ|Q z{EZ5eZ>H3!^->2bPH!CB=1n*1w17|#%m>J2ASqyR0zw>uvfSxy^Wt{4#utsOv(jXT t#?(|_zfFcRRhX(nC*VUKVNoN)In7Z7)=e==$o_9a{*ubhz45;?`!78MV5a~8 diff --git a/client/resources/hardnested_tables/bitflip_0_05d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_05d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f149660c50691ca3c904fe8a81901c030414b83b GIT binary patch literal 24131 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 SIOX0k&zVDbeK33I#{UHqqRZ|8 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_05f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_05f_states.bin.bz2 deleted file mode 100644 index bda71a64e2f95bb8fa9d600b29c13fa68e27ec6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1448 zcmV;Z1y}k)T4*^jL0KkKS(fx@)Bqz{|Nr$@L9>bUK@`9d5D)+mL;!)90r6lFKm-&y z0Dy=91K!{ZKL7v#00000000009MO{#022{`8el<)!7^YGhcslwzy!o#Mwk#{Fie;P zVa*vaFaa?b5vBwfj1wjS7;{EUOaM$q1ZjZ=BLvBSMjX+T695wtff`^zh`};o5rIic z5RFDgnomU3^l3j*JwwT<>VBpuVt6U$si*f;LV8Z&eJ(zs=Reu|k4kr`#bGk)eapFc z2Z7j*50vP~(m3dHtMxyltK40mg7&Z2p40L_(C{x&9;3># zy(#BElKK`udg`m%`rJeLK4+Bjh`t5#od*|-51nKB40#qW75Y9Ff9vOXyOS7U;<$U` z^gYq|A2alKj`e+y$@#mTPrdM};{OGg2ZH>Lr&qOlj?1I5kEv7l36b|NnTq^N9Akxp zqB@|)MU=5j6lGRiI=Y-PW-}P*oke8ItYTuAGF3cDkxLU9PXJ7(aX!Nliz#K3EU}8r zF_pxfS3|LsGQeXMmRV&(p&q5xVUr<&KJu3ngE5sd2MA<8vRPGOWUBBfb_(J^${&h5 z2YSOMTmj@}V&QaHjs?)H%ZrM`BMhmGI2mPwj4Uv?Sz{fMaI3*MJBif071-crCkumt zj9p523B_C&R~ea^oy_QrWn|3koEK#1%ZrT3oktu-XGRDguX*;KXNll(!=d%Or*Sx9 zn0$-4y=%bF;$4XHI|6~9t{g2S-tFY{4!|)%1?_WZHQ^nqQyDv%ftJps=-mh7D$G(T9;#Z09 z2kknX9};#rkIc(2FnlY}zSPIw?4JAo59V}FLE^l}pg(!<1v-bwF=dR(#vX%*yqym7 zxU-4p`}leo`X0macsnO$$L(KY{a^BSd7gH8oenSJ^(^~G#JCwa zUi0E#z;SgQlb-5spe$Q_Za>H@-J}9&^`cooy_d&x;h+B74jVy=6tVt zbUiH0nVFZ7`nB;uV_&>c&mJ36NnaCUK7Fra&K zqN4o)N?z4cmBc-{RFx>=7!DIGqlCCr<0@H(GA1lc z#b!v%GRaJsqmn}u;g&}!Ck4YQ##wPLCRH%FF@=;I6yalwhFNkPM-wZQlPShW2+Fll zg{o5q31%ZQq-6_YH%#ubdNF(l!Xrx{#-_`8xR!i0pkqeh_b Cx1gs0 diff --git a/client/resources/hardnested_tables/bitflip_0_05f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_05f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..472f2b8540df66a0e094c68abe108ba988957cc6 GIT binary patch literal 15388 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 diff --git a/client/resources/hardnested_tables/bitflip_0_064_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_064_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a596bd59c6c831cde67bce2900309055f6a7f26f GIT binary patch literal 21807 zcmeHPeT)@X6+iRd%-h-Bd2?Xdz~k-0zHYbMEek9KY!R_L#zNP!AX#Ze!S+c3YhjV3 zq(v-nZ8oh~QvIV%2>+A>nrI9*##n)N&BTw!#8=bQe`sROR$Dc-Af*^BrCxvM&imSB z(MX6kdMDZWxbM!n=l;&;oSD0B=c?SM9VgoFAbRoCt>;PW(g6OnLygm@uQV`=GE++t zbqqw*-Y|t&p@+VIeyP+&w2qt&)ErRCw6AA!vf&7YG5JTSqoin&tZ=^W8c2lpId<@^`~eRAVe;8NH_OzzDX2}h@e4-$pPiF1@jv)1R)m}8aF zE79Z2;VKF-dPLu13N?Ed(9F9RKa(bE4BYmY(f$n5#d>pN5bUM!D z>vx$lUuESDGPQ1%2EA7}e~l@p-%4hz!At&nR{0+ERX9$;@ph(mt-mDQv_8u!y^hJ# z`XStM7gG-!%{BtEIQe|iPd~v_z~$>q-TKoBLadq`E)aUOfkaL-`!o&Rx@8KO6PV56 z@)*++t$!^u#dguq0T~bn*Fajfee8&Yz)dyGCa31B;A0Z;{@jMgKJJ8e!~oUtHM*u`m(x4UT+tnqFwp;i zX)gLihDLdJh-vXJ6Rb_k`w1sss7^pei~2g5diCd+wiS)GG>5beDs=;^tsn>mgJiD- zEY2|q6N4vwPD|7y(A&Y-nL3JQq%_9|ufb@T%}f5r5*7Ez96wb@lUeN&JqPaLe)S3^f zgF%|Ap4^1<^Bm9U05+o{vL0axbo$r{ov$P!Oa+`{v(>S?uPl} zmQi*IOwL>w6t@KNXFxB7A97*51yh)g%La_!%WA*WN^(#H}oUMXX+ClTMD z#o9L~lXo!r-5J&1T`G-&#lQ<^!4bQv>Zhur|B4I*@s(lL?^h6h z#~`rV7$G?@LjQLhwdJ9EP+tKOs+kgB^)sP>4L+t~Z}1hAxd)Eo0oX6}F0)FI#dO4- zy?yDna zdZjqt1UrPmsJw5y=xud;nJ(BpVkZ2$83dP*MN^?7YXlQ;ytSfIdNOz{H1R?k}57%Yqs=UJjSvUCq ztKq|VFT>j2WIAs%-D|GTHHdS)yd_TL(NebT%-D?+fEOOdU%@+Q;#I*$z!dj|s+@ z=7+8Y4&P01sK`@!a3_i5yHt>Aa8&Vp5M=IUXkS4DI=?n2gOTjS^C6yQVAa03CgHHQ zK?7mT;`vr^Gl#8dH#6Jg*)Un8-45ANqLG3dMAwN@78P z6Kac1G^&UJak>XQ6~}2*lDG7gbb&U8NBuB+3v}xfOc!7CkvjO)fw31ca-hajD?vMO zyF~dszd#`(Ho56a;6`ImKte?6Z=!h+=pMzbfZY3AowkiJHNZ>wm=<`fDcc7npr0Ej z5XEYaWGFux*J?nm?I5Ph8wI*G*2_zW;aSKls@*=}Y>eX_Z-#`-W1)tlYkzJM4bx46 zo;NNET|g4k1<8QiXfOuDTEP(cdZ^4TI1YhT_)}X`fkJABq7MC zxk~7tg%^Tp=AUJ1!o8R^!p6d3UqM;ha)KLjZapF#XbDF1Fz|<2&6o|GSF?5=&XebzCKbvq#e+x}rQJ2nf$UZ@cwK1Yzk^qPs@%-n5d;No`MBBJ& z3#;aT1^lgo=Sk#x1ptpJ45x~zNC^|1m zqKb^R{X3IHVUwuJvrtBo!BTl7SgDI5!jtk41o7?(=>$j1rG~ej)d@)WB0)cto-VQ(G{#1=Fgl*ZN^Nd026|l4lF1wqR-t zrgi3FPHn+7K}4R_ZNU`Dsx6org|G!vTQD_m=WW5%7EC7w&E(p?v$yZ;MHB2h`|+<) z|J`@?wqR;LXG-2D*@CGpn40i{O0_MRUga-LZNaqq5(RJZ?H8uo@kYRYVVY#KvbP0O zcnG`_oaFN!^8uax!qk3YY73@`zpw>UxC(s2W(%f?KG=e(EtuMZseF5Gzc5Wa!XT1wKc1b?gOW7s)CKWY1yCmN($+t`L#T07)3d%0YAODY7uufRjJjNww pwqR-trlJ(KU}_7dwqUBt|B}ou$^YM6l7D`U34ny{+>Kk`_y^*6cRc_A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_06c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_06c_states.bin.bz2 deleted file mode 100644 index ff80c223390f495eab4e1d2c27f54dcffb92dea8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 926 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 W0a0eiJAeC!O&3x!W;R^n)c+4N`g(x? diff --git a/client/resources/hardnested_tables/bitflip_0_071_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_071_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..15ebf5ea034f20e2247a5fde6836f37957554be0 GIT binary patch literal 45965 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 Fe*t=46y^W` diff --git a/client/resources/hardnested_tables/bitflip_0_073_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_073_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..bb38d5cb46f358f78b73896fd35b3553e8e8928a GIT binary patch literal 22696 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_077_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_077_states.bin.bz2 deleted file mode 100644 index acaf1e210cf5da1b8b11e7e23d53fe909c4cc29d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2916 zcmaKu>rYb&!p7^k6oIoM0_B`dUlB@6FK40W@P434Bd@xM(vxwxw481TZBKh}ce9&N z=EKm0f`~2Bo&|d4G-2tiN>yl-)-RF}MtY@}jLzz2Gs$LSfyy}9Oj^`TUqoI1f_?si zCwcOF@;mq2-${_ON?wn0;@2;IjDIwaF~2`CaiZw^q7z3dj-5Dn^#%hkeeplvF#cPP z{22i+&9J@(;Q^y63W)*7t>m+bv#vro@o^WF@3%wjqcW3gpaC+8gF)Egx#XPd+lDpT4y{@pp}VdX1}_H^PJ8u2Soz;}uA9ZT3KOX_sO;-40~D;oleig!iU`h>e{ zQb?p=p6GPoP#kN5!7z*k^oNq#M7;Fl#D}TU!ssic5V?TVs$PG6JrWcGeHw$;U@49*)(OQO2!(# z`NgiGantrDZc|N_ByI2ICxg!S*L;=L>WFq*m~YUGg}grnK6UCc7Yk>j!pKaiRGjV( zm)ZZCZ8x^#$@t+nQ-{*@8X4a=jNm~$hP(yRP+K{>Ut_@h-b8M7d-t_BF@uv+^tz_) zEAP={Ym9huYYG90aBAvVIoekGD5}4{JDkgW3#z7O@7UgXYMJGsae3YQ6a7VFTmEaC zy7Na5^W)r6ft7u3*ri8f?PhM0f7q!I49#-NfVH|2W|`|$`^-stc}>$lAzgM0lBYP0 z+>UA0*Mdl4MYu3fU05B)qtljkLLrH@{ndP?ssG9wBsU29(88Mb|7*8C%!~&LjyLq> z&3D4ZK2tKe!mIfqns8$avrl*Pm(5@Pm`K&H8=~4&+@&Yopc3|zN=o}GZy@8djgC-m zRJs964FbGm_7dvH3}7-rM+d=4BgmbiC|MZp?eU>tJl^rG!Cb7HYa2yNl#^h0sbu0Cu zxrLFBsXzzVcZlccAKWgyY5kM)Y>??b{#PYlC*L1->Z0{BMTp{de_( zw!-8GJe|Jz5!jO~3_HyIEg$F(H%XKq)O@r$SEACTfvWxa>VdA^ne(PIEg7S}U#yuf z2gBedfZ@<7|z(WhmmnUCDYAc*Cdra5#_J>wetbA6G z?x-o6G-=G@1$V2YPY~HO^FUZ^Xryv+foH@&qwH|@EbMs}hlUcUF5x24M+v

  • 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 literal 0 HcmV?d00001 diff --git a/fpga/fpga_pm3_top.v b/fpga/fpga_pm3_top.v new file mode 100644 index 000000000..89bd2e56b --- /dev/null +++ b/fpga/fpga_pm3_top.v @@ -0,0 +1,438 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// +// The FPGA is responsible for interfacing between the A/D, the coil drivers, +// and the ARM. In the low-frequency modes it passes the data straight +// through, so that the ARM gets raw A/D samples over the SSP. In the high- +// frequency modes, the FPGA might perform some demodulation first, to +// reduce the amount of data that we must send to the ARM. +//----------------------------------------------------------------------------- +/* +Once upon a time the FPGA had a 16 input mux so we could have all LF and HF modules enabled and selectable +As the functionality grew, we run out of space in the FPGA and we had to split into an "LF only" and an "HF only" FPGA bitstream +But even then after a while it was not possible to fit all the HF functions at the same time so now we have multiple "HF only" bitstreams +For example "Felica but without ISO14443", or "ISO14443 but without Felica" or "HF_15 but without Felica and ISO14443" + +Because of all of the above, you can not enable both HF and LF modes at the same time, because some LF modules outputs +map to the same mux inputs as some HF modules outputs (thanks to reducing the mux from 16 to 8 inputs) and you can not have +multiple outputs connected together therefore leading to a failed compilation +*/ + +// These defines are meant to be passed by the Makefile so do not uncomment them here +// Proxmark3 RDV4 target +//`define PM3RDV4 +// Proxmark3 generic target +//`define PM3GENERIC +// iCopy-X with XC3S100E +//`define PM3ICOPYX + +// Pass desired defines to compiler to enable required modules +// WITH_LF enables Low Frequency mode when defined else HF is enabled +//`define WITH_LF +// WITH_LF0 enables module reader +//`define WITH_LF0 +// WITH_LF1 enables module edge detect +//`define WITH_LF1 +// WITH_LF2 enables module passthrough +//`define WITH_LF2 +// WITH_LF3 enables module ADC +//`define WITH_LF3 + +// WITH_HF0 enables module HF reader +//`define WITH_HF0 +// WITH_HF1 enables module simulated tag +//`define WITH_HF1 +// WITH_HF2 enables module ISO14443-A +//`define WITH_HF2 +// WITH_HF3 enables module sniff +//`define WITH_HF3 +// WITH_HF4 enables module ISO18092 FeliCa +//`define WITH_HF4 +// WITH_HF5 enables module get trace +//`define WITH_HF5 + +//`include "define.v" +//`include "util.v" +// +//`ifdef WITH_LF `include "clk_divider.v" `endif +//`ifdef WITH_LF0 `include "lo_read.v" `endif +//`ifdef WITH_LF1 `include "lo_edge_detect.v" `endif +//`ifdef WITH_LF2 `include "lo_passthru.v" `endif +//`ifdef WITH_LF3 `include "lo_adc.v" `endif +// +//`ifdef WITH_HF_15 +//`ifdef WITH_HF0 `include "hi_reader_15.v" `endif +//`else +//`ifdef WITH_HF0 `include "hi_reader.v" `endif +//`endif +//`ifdef WITH_HF1 `include "hi_simulate.v" `endif +//`ifdef WITH_HF2 `include "hi_iso14443a.v" `endif +//`ifdef WITH_HF3 `include "hi_sniffer.v" `endif +//`ifdef WITH_HF4 `include "hi_flite.v" `endif +//`ifdef WITH_HF5 `include "hi_get_trace.v" `endif + +module fpga_top( + input ck_1356meg, + input ck_1356megb, + input spck, + input pck0, + input ncs, + input [7:0] adc_d, + input cross_hi, + input cross_lo, + input mosi, + input ssp_dout, + + output ssp_din, + output ssp_frame, + output ssp_clk, + output adc_clk, + output adc_noe, + output miso, + output pwr_lo, + output pwr_hi, + output pwr_oe1, + output pwr_oe2, + output pwr_oe3, + output pwr_oe4, + output dbg +); + +// In all modes, let the ADC's outputs be enabled. +assign adc_noe = 1'b0; + +//----------------------------------------------------------------------------- +// The SPI receiver. This sets up the configuration word, which the rest of +// the logic looks at to determine how to connect the A/D and the coil +// drivers (i.e., which section gets it). Also assign some symbolic names +// to the configuration bits, for use below. +//----------------------------------------------------------------------------- + +// Receive 16bits of data from ARM here. +reg [15:0] shift_reg; +always @(posedge spck) if (~ncs) shift_reg <= {shift_reg[14:0], mosi}; + +reg trace_enable; + +reg [7:0] lf_ed_threshold; + +// adjustable frequency clock +wire [7:0] pck_cnt; +wire pck_divclk; +reg [7:0] divisor; +clk_divider div_clk(pck0, divisor, pck_cnt, pck_divclk); + +`ifdef WITH_LF +reg [11:0] conf_word; +`else +reg [8:0] conf_word; +`endif + +// We switch modes between transmitting to the 13.56 MHz tag and receiving +// from it, which means that we must make sure that we can do so without +// glitching, or else we will glitch the transmitted carrier. +always @(posedge ncs) +begin + // 4 bit command + case (shift_reg[15:12]) +`ifdef WITH_LF + `FPGA_CMD_SET_CONFREG: + begin + // 12 bit data + conf_word <= shift_reg[11:0]; + if (shift_reg[8:6] == `FPGA_MAJOR_MODE_LF_EDGE_DETECT) lf_ed_threshold <= 127; // default threshold + end + + `FPGA_CMD_SET_DIVISOR: + divisor <= shift_reg[7:0]; // 8bits + + `FPGA_CMD_SET_EDGE_DETECT_THRESHOLD: + lf_ed_threshold <= shift_reg[7:0]; // 8 bits +`else + `FPGA_CMD_SET_CONFREG: conf_word <= shift_reg[8:0]; + `FPGA_CMD_TRACE_ENABLE: trace_enable <= shift_reg[0]; +`endif + endcase +end + +//----------------------------------------------------------------------------- +// And then we instantiate the modules corresponding to each of the FPGA's +// major modes, and use muxes to connect the outputs of the active mode to +// the output pins. +//----------------------------------------------------------------------------- + +// ############################################################################ +// # Enable Low Frequency Modules +`ifdef WITH_LF + +// LF reader (generic) +`ifdef WITH_LF0 +lo_read lr( + .pck0 (pck0), + .pck_divclk (pck_divclk), + .pck_cnt (pck_cnt), + .adc_d (adc_d), + .lf_field (conf_word[0]), + + .ssp_din (mux0_ssp_din), + .ssp_frame (mux0_ssp_frame), + .ssp_clk (mux0_ssp_clk), + .adc_clk (mux0_adc_clk), + .pwr_lo (mux0_pwr_lo), + .pwr_hi (mux0_pwr_hi), + .pwr_oe1 (mux0_pwr_oe1), + .pwr_oe2 (mux0_pwr_oe2), + .pwr_oe3 (mux0_pwr_oe3), + .pwr_oe4 (mux0_pwr_oe4), + .debug (mux0_debug) +); +`endif + +// LF edge detect (generic) +`ifdef WITH_LF1 +lo_edge_detect le( + .pck0 (pck0), + .pck_divclk (pck_divclk), + .adc_d (adc_d), + .cross_lo (cross_lo), + .lf_field (conf_word[0]), + .lf_ed_toggle_mode (conf_word[1]), + .lf_ed_threshold (lf_ed_threshold), + .ssp_dout (ssp_dout), + + .ssp_frame (mux1_ssp_frame), + .ssp_clk (mux1_ssp_clk), + .adc_clk (mux1_adc_clk), + .pwr_lo (mux1_pwr_lo), + .pwr_hi (mux1_pwr_hi), + .pwr_oe1 (mux1_pwr_oe1), + .pwr_oe2 (mux1_pwr_oe2), + .pwr_oe3 (mux1_pwr_oe3), + .pwr_oe4 (mux1_pwr_oe4), + .debug (mux1_debug) +); +`endif + +// LF passthrough +`ifdef WITH_LF2 +lo_passthru lp( + .pck_divclk (pck_divclk), + .cross_lo (cross_lo), + .ssp_dout (ssp_dout), + + .ssp_din (mux2_ssp_din), + .adc_clk (mux2_adc_clk), + .pwr_lo (mux2_pwr_lo), + .pwr_hi (mux2_pwr_hi), + .pwr_oe1 (mux2_pwr_oe1), + .pwr_oe2 (mux2_pwr_oe2), + .pwr_oe3 (mux2_pwr_oe3), + .pwr_oe4 (mux2_pwr_oe4), + .debug (mux2_debug) +); +`endif + +// LF ADC (read/write) +`ifdef WITH_LF3 +lo_adc la( + .pck0 (pck0), + .adc_d (adc_d), + .divisor (divisor), + .lf_field (conf_word[0]), + .ssp_dout (ssp_dout), + + .ssp_din (mux3_ssp_din), + .ssp_frame (mux3_ssp_frame), + .ssp_clk (mux3_ssp_clk), + .adc_clk (mux3_adc_clk), + .pwr_lo (mux3_pwr_lo ), + .pwr_hi (mux3_pwr_hi ), + .pwr_oe1 (mux3_pwr_oe1), + .pwr_oe2 (mux3_pwr_oe2), + .pwr_oe3 (mux3_pwr_oe3), + .pwr_oe4 (mux3_pwr_oe4), + .debug (mux3_debug) +); +`endif // WITH_LF3 + +assign mux6_pwr_lo = 1'b1; +// 7 -- SPARE + +`else // if WITH_LF not defined +// ############################################################################ +// # Enable High Frequency Modules + +// HF reader +`ifdef WITH_HF0 +`ifdef WITH_HF_15 +hi_reader_15 hr( +`else +hi_reader hr( +`endif + .ck_1356meg (ck_1356megb), + .adc_d (adc_d), + .subcarrier_frequency (conf_word[5:4]), + .minor_mode (conf_word[3:0]), + .ssp_dout (ssp_dout), + + .ssp_din (mux0_ssp_din), + .ssp_frame (mux0_ssp_frame), + .ssp_clk (mux0_ssp_clk), + .adc_clk (mux0_adc_clk), + .pwr_lo (mux0_pwr_lo), + .pwr_hi (mux0_pwr_hi), + .pwr_oe1 (mux0_pwr_oe1), + .pwr_oe2 (mux0_pwr_oe2), + .pwr_oe3 (mux0_pwr_oe3), + .pwr_oe4 (mux0_pwr_oe4), + .debug (mux0_debug) +); +`endif // WITH_HF0 + +// HF simulated tag +`ifdef WITH_HF1 +hi_simulate hs( + .ck_1356meg (ck_1356meg), + .adc_d (adc_d), + .mod_type (conf_word[3:0]), + .ssp_dout (ssp_dout), + + .ssp_din (mux1_ssp_din), + .ssp_frame (mux1_ssp_frame), + .ssp_clk (mux1_ssp_clk), + .adc_clk (mux1_adc_clk), + .pwr_lo (mux1_pwr_lo), + .pwr_hi (mux1_pwr_hi), + .pwr_oe1 (mux1_pwr_oe1), + .pwr_oe2 (mux1_pwr_oe2), + .pwr_oe3 (mux1_pwr_oe3), + .pwr_oe4 (mux1_pwr_oe4), + .debug (mux1_debug) +); +`endif // WITH_HF1 + +// HF ISO14443-A +`ifdef WITH_HF2 +hi_iso14443a hisn( + .ck_1356meg (ck_1356meg), + .adc_d (adc_d), + .mod_type (conf_word[3:0]), + .ssp_dout (ssp_dout), + + .ssp_din (mux2_ssp_din), + .ssp_frame (mux2_ssp_frame), + .ssp_clk (mux2_ssp_clk), + .adc_clk (mux2_adc_clk), + .pwr_lo (mux2_pwr_lo), + .pwr_hi (mux2_pwr_hi), + .pwr_oe1 (mux2_pwr_oe1), + .pwr_oe2 (mux2_pwr_oe2), + .pwr_oe3 (mux2_pwr_oe3), + .pwr_oe4 (mux2_pwr_oe4), + .debug (mux2_debug) +); +`endif // WITH_HF2 + +// HF sniff +`ifdef WITH_HF3 +hi_sniffer he( + .ck_1356meg (ck_1356megb), + .adc_d (adc_d), + + .ssp_din (mux3_ssp_din), + .ssp_frame (mux3_ssp_frame), + .ssp_clk (mux3_ssp_clk), + .adc_clk (mux3_adc_clk), + .pwr_lo (mux3_pwr_lo), + .pwr_hi (mux3_pwr_hi), + .pwr_oe1 (mux3_pwr_oe1), + .pwr_oe2 (mux3_pwr_oe2), + .pwr_oe3 (mux3_pwr_oe3), + .pwr_oe4 (mux3_pwr_oe4) +); +`endif //WITH_HF3 + +// HF ISO18092 FeliCa +`ifdef WITH_HF4 +hi_flite hfl( + .ck_1356meg (ck_1356megb), + .adc_d (adc_d), + .mod_type (conf_word[3:0]), + .ssp_dout (ssp_dout), + + .ssp_din (mux4_ssp_din), + .ssp_frame (mux4_ssp_frame), + .ssp_clk (mux4_ssp_clk), + .adc_clk (mux4_adc_clk), + .pwr_lo (mux4_pwr_lo), + .pwr_hi (mux4_pwr_hi), + .pwr_oe1 (mux4_pwr_oe1), + .pwr_oe2 (mux4_pwr_oe2), + .pwr_oe3 (mux4_pwr_oe3), + .pwr_oe4 (mux4_pwr_oe4), + .debug (mux4_debug) +); +`endif // WITH_HF4 + +// HF get trace +`ifdef WITH_HF5 +hi_get_trace gt( + .ck_1356megb (ck_1356megb), + .adc_d (adc_d), + .trace_enable (trace_enable), + .major_mode (conf_word[8:6]), + .ssp_din (mux5_ssp_din), + .ssp_frame (mux5_ssp_frame), + .ssp_clk (mux5_ssp_clk) +); +`endif // WITH_HF5 + +`endif // WITH_LF + +// These assignments must agree with the defines in fpgaloader.h +// Major modes Low Frequency +// mux0 = LF reader (generic) +// mux1 = LF edge detect (generic) +// mux2 = LF passthrough +// mux3 = LF ADC (read/write) +// mux4 = SPARE +// mux5 = SPARE +// mux6 = SPARE +// mux7 = FPGA_MAJOR_MODE_OFF + +// Major modes High Frequency +// mux0 = HF reader +// mux1 = HF simulated tag +// mux2 = HF ISO14443-A +// mux3 = HF sniff +// mux4 = HF ISO18092 FeliCa +// mux5 = HF get trace +// mux6 = unused +// mux7 = FPGA_MAJOR_MODE_OFF + +mux8 mux_ssp_clk (.sel(conf_word[8:6]), .y(ssp_clk ), .x0(mux0_ssp_clk ), .x1(mux1_ssp_clk ), .x2(mux2_ssp_clk ), .x3(mux3_ssp_clk ), .x4(mux4_ssp_clk ), .x5(mux5_ssp_clk ), .x6(mux6_ssp_clk ), .x7(mux7_ssp_clk ) ); +mux8 mux_ssp_din (.sel(conf_word[8:6]), .y(ssp_din ), .x0(mux0_ssp_din ), .x1(mux1_ssp_din ), .x2(mux2_ssp_din ), .x3(mux3_ssp_din ), .x4(mux4_ssp_din ), .x5(mux5_ssp_din ), .x6(mux6_ssp_din ), .x7(mux7_ssp_din ) ); +mux8 mux_ssp_frame (.sel(conf_word[8:6]), .y(ssp_frame), .x0(mux0_ssp_frame), .x1(mux1_ssp_frame), .x2(mux2_ssp_frame), .x3(mux3_ssp_frame), .x4(mux4_ssp_frame), .x5(mux5_ssp_frame), .x6(mux6_ssp_frame), .x7(mux7_ssp_frame) ); +mux8 mux_pwr_oe1 (.sel(conf_word[8:6]), .y(pwr_oe1 ), .x0(mux0_pwr_oe1 ), .x1(mux1_pwr_oe1 ), .x2(mux2_pwr_oe1 ), .x3(mux3_pwr_oe1 ), .x4(mux4_pwr_oe1 ), .x5(mux5_pwr_oe1 ), .x6(mux6_pwr_oe1 ), .x7(mux7_pwr_oe1 ) ); +mux8 mux_pwr_oe2 (.sel(conf_word[8:6]), .y(pwr_oe2 ), .x0(mux0_pwr_oe2 ), .x1(mux1_pwr_oe2 ), .x2(mux2_pwr_oe2 ), .x3(mux3_pwr_oe2 ), .x4(mux4_pwr_oe2 ), .x5(mux5_pwr_oe2 ), .x6(mux6_pwr_oe2 ), .x7(mux7_pwr_oe2 ) ); +mux8 mux_pwr_oe3 (.sel(conf_word[8:6]), .y(pwr_oe3 ), .x0(mux0_pwr_oe3 ), .x1(mux1_pwr_oe3 ), .x2(mux2_pwr_oe3 ), .x3(mux3_pwr_oe3 ), .x4(mux4_pwr_oe3 ), .x5(mux5_pwr_oe3 ), .x6(mux6_pwr_oe3 ), .x7(mux7_pwr_oe3 ) ); +mux8 mux_pwr_oe4 (.sel(conf_word[8:6]), .y(pwr_oe4 ), .x0(mux0_pwr_oe4 ), .x1(mux1_pwr_oe4 ), .x2(mux2_pwr_oe4 ), .x3(mux3_pwr_oe4 ), .x4(mux4_pwr_oe4 ), .x5(mux5_pwr_oe4 ), .x6(mux6_pwr_oe4 ), .x7(mux7_pwr_oe4 ) ); +mux8 mux_pwr_lo (.sel(conf_word[8:6]), .y(pwr_lo ), .x0(mux0_pwr_lo ), .x1(mux1_pwr_lo ), .x2(mux2_pwr_lo ), .x3(mux3_pwr_lo ), .x4(mux4_pwr_lo ), .x5(mux5_pwr_lo ), .x6(mux6_pwr_lo ), .x7(mux7_pwr_lo ) ); +mux8 mux_pwr_hi (.sel(conf_word[8:6]), .y(pwr_hi ), .x0(mux0_pwr_hi ), .x1(mux1_pwr_hi ), .x2(mux2_pwr_hi ), .x3(mux3_pwr_hi ), .x4(mux4_pwr_hi ), .x5(mux5_pwr_hi ), .x6(mux6_pwr_hi ), .x7(mux7_pwr_hi ) ); +mux8 mux_adc_clk (.sel(conf_word[8:6]), .y(adc_clk ), .x0(mux0_adc_clk ), .x1(mux1_adc_clk ), .x2(mux2_adc_clk ), .x3(mux3_adc_clk ), .x4(mux4_adc_clk ), .x5(mux5_adc_clk ), .x6(mux6_adc_clk ), .x7(mux7_adc_clk ) ); +mux8 mux_dbg (.sel(conf_word[8:6]), .y(dbg ), .x0(mux0_debug ), .x1(mux1_debug ), .x2(mux2_debug ), .x3(mux3_debug ), .x4(mux4_debug ), .x5(mux5_debug ), .x6(mux6_debug ), .x7(mux7_debug ) ); + +endmodule diff --git a/fpga-xc2s30/hi_flite.v b/fpga/hi_flite.v similarity index 92% rename from fpga-xc2s30/hi_flite.v rename to fpga/hi_flite.v index 75ffbc9e5..ac9e7e069 100644 --- a/fpga-xc2s30/hi_flite.v +++ b/fpga/hi_flite.v @@ -30,33 +30,30 @@ */ module hi_flite( - ck_1356meg, - pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4, - adc_d, adc_clk, - ssp_frame, ssp_din, ssp_dout, ssp_clk, - dbg, - mod_type + input ck_1356meg, + input [7:0] adc_d, + input [3:0] mod_type, + input ssp_dout, + + output reg ssp_din, + output reg ssp_frame, + output reg ssp_clk, + output adc_clk, + output reg pwr_lo, + output reg pwr_hi, + output reg pwr_oe1, + output reg pwr_oe2, + output reg pwr_oe3, + output reg pwr_oe4, + output debug ); - input ck_1356meg; - output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; - input [7:0] adc_d; - output adc_clk; - input ssp_dout; - output ssp_frame, ssp_din, ssp_clk; - output dbg; - input [3:0] mod_type; -assign dbg = 0; +assign debug = 0; -wire power = mod_type[2]; -wire speed = mod_type[1]; +wire power = mod_type[2]; +wire speed = mod_type[1]; wire disabl = mod_type[0]; -// Most off, oe4 for modulation; -// Trying reader emulation (would presumably just require switching power on, but I am not sure) -assign pwr_lo = 1'b0; -assign pwr_oe2 = 1'b0; - // 512x64/fc -wait before ts0, 32768 ticks // tslot: 256*64/fc assign adc_clk = ck_1356meg; @@ -95,10 +92,6 @@ reg did_sync=0; wire [7:0] bithalf = speed ? `bithalf_424 : `bithalf_212; wire [7:0] bitmlen = speed ? `bitmlen_424 : `bitmlen_212; - -//ssp clock and current values -reg ssp_clk; -reg ssp_frame; reg curbit = 1'b0; reg [7:0] fccount = 8'd0; // in-bit tick counter. Counts carrier cycles from the first lower edge detected, reset on every manchester bit detected @@ -107,6 +100,7 @@ reg [7:0] tsinceedge = 8'd0;// ticks from last edge, desync if the valye is too reg zero = 1'b0; // Manchester first halfbit low second high corresponds to this value. It has been known to change. SYNC is used to set it +//ssp clock and current values //ssp counter for transfer and framing reg [8:0] ssp_cnt = 9'd0; @@ -122,6 +116,7 @@ begin if( ((~speed) && (ssp_cnt[5:0] == 6'b000000)) || (speed && (ssp_cnt[4:0] == 5'b00000))) begin ssp_clk <= 1'b1; + //send current bit (detected in SNIFF mode or the one being modulated in MOD mode, 0 otherwise) ssp_din <= curbit; end if( ( (~speed) && (ssp_cnt[5:0] == 6'b100000)) ||(speed && ssp_cnt[4:0] == 5'b10000)) @@ -138,9 +133,6 @@ begin end end -//send current bit (detected in SNIFF mode or the one being modulated in MOD mode, 0 otherwise) -reg ssp_din; - //previous signal value, mostly to detect SYNC reg prv = 1'b1; @@ -353,11 +345,8 @@ begin end // sending <= 0; end + //put modulation here to maintain the correct clock. Seems that some readers are sensitive to that -reg pwr_hi; -reg pwr_oe1; -reg pwr_oe3; -reg pwr_oe4; wire mod = ((fccount >= bithalf) ^ dlay) & (~disabl); @@ -365,21 +354,22 @@ always @(ck_1356meg or ssp_dout or power or disabl or mod) begin if (power) begin - pwr_hi <= ck_1356meg; + pwr_hi <= ck_1356meg; + pwr_lo <= 1'b0; pwr_oe1 <= 1'b0;//mod; + pwr_oe2 <= 1'b0;//mod; pwr_oe3 <= 1'b0;//mod; pwr_oe4 <= mod;//1'b0; end else begin - pwr_hi <= 1'b0; + pwr_hi <= 1'b0; + pwr_lo <= 1'b0; pwr_oe1 <= 1'b0; + pwr_oe2 <= 1'b0; pwr_oe3 <= 1'b0; pwr_oe4 <= mod; end end - - - endmodule diff --git a/fpga-xc2s30/hi_get_trace.v b/fpga/hi_get_trace.v similarity index 86% rename from fpga-xc2s30/hi_get_trace.v rename to fpga/hi_get_trace.v index 6e4369e14..9bf32bc64 100644 --- a/fpga-xc2s30/hi_get_trace.v +++ b/fpga/hi_get_trace.v @@ -13,17 +13,18 @@ // // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- +//`include "define.v" module hi_get_trace( - ck_1356megb, - adc_d, trace_enable, major_mode, - ssp_frame, ssp_din, ssp_clk + input ck_1356megb, + input [7:0] adc_d, + input trace_enable, + input [2:0] major_mode, + + output ssp_din, + output reg ssp_frame, + output reg ssp_clk ); - input ck_1356megb; - input [7:0] adc_d; - input trace_enable; - input [2:0] major_mode; - output ssp_frame, ssp_din, ssp_clk; // clock divider reg [6:0] clock_cnt; @@ -88,9 +89,9 @@ begin write_enable2 <= 1'b0; end else - begin + begin addr <= addr + 1; - end + end end end else @@ -136,9 +137,6 @@ begin end -// SSC communication to ARM -reg ssp_clk; -reg ssp_frame; reg [7:0] shift_out; always @(negedge ck_1356megb) @@ -147,16 +145,16 @@ begin begin if (clock_cnt[6:4] == 3'd0) // either load new value begin - if (addr[11] == 1'b0) - shift_out <= D_out1; - else - shift_out <= D_out2; + if (addr[11] == 1'b0) + shift_out <= D_out1; + else + shift_out <= D_out2; end else - begin - // or shift left - shift_out[7:1] <= shift_out[6:0]; - end + begin + // or shift left + shift_out[7:1] <= shift_out[6:0]; + end end ssp_clk <= ~clock_cnt[3]; // ssp_clk frequency = 13,56MHz / 16 = 847,5 kHz diff --git a/fpga-xc2s30/hi_iso14443a.v b/fpga/hi_iso14443a.v similarity index 97% rename from fpga-xc2s30/hi_iso14443a.v rename to fpga/hi_iso14443a.v index d52ab4000..7ccd7f610 100644 --- a/fpga-xc2s30/hi_iso14443a.v +++ b/fpga/hi_iso14443a.v @@ -14,29 +14,28 @@ // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- // ISO14443-A support for the Proxmark III -// +//`include "define.v" module hi_iso14443a( - ck_1356meg, - pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4, - adc_d, adc_clk, - ssp_frame, ssp_din, ssp_dout, ssp_clk, - dbg, - mod_type + input ck_1356meg, + input [7:0] adc_d, + input [3:0] mod_type, + input ssp_dout, + + output ssp_din, + output reg ssp_frame, + output reg ssp_clk, + output adc_clk, + output pwr_lo, + output pwr_hi, + output pwr_oe1, + output pwr_oe2, + output pwr_oe3, + output pwr_oe4, + output debug ); - input ck_1356meg; - output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; - input [7:0] adc_d; - output adc_clk; - input ssp_dout; - output ssp_frame, ssp_din, ssp_clk; - output dbg; - input [3:0] mod_type; - - -wire adc_clk = ck_1356meg; - +assign adc_clk = ck_1356meg; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Reader -> PM3: @@ -76,8 +75,6 @@ begin end - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Reader -> PM3 // detect when a reader is active (modulating). We assume that the reader is active, if we see the carrier off for at least 8 @@ -137,7 +134,6 @@ wire [9:0] tmp2 = adc_d_times_2 + input_prev_1; wire signed [10:0] adc_d_filtered = {1'b0, tmp1} - {1'b0, tmp2}; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // internal FPGA timing. Maximum required period is 128 carrier clock cycles for a full 8 Bit transfer to ARM. (i.e. we need a // 7 bit counter). Adjust its frequency to external reader's clock when simulating a tag or sniffing. @@ -222,7 +218,11 @@ reg signed [10:0] rx_mod_falling_edge_max; reg signed [10:0] rx_mod_rising_edge_max; reg curbit; +`ifdef PM3ICOPYX +`define EDGE_DETECT_THRESHOLD 3 +`else `define EDGE_DETECT_THRESHOLD 5 +`endif `define EDGE_DETECT_THRESHOLDHIGH 20 always @(negedge adc_clk) @@ -266,7 +266,6 @@ begin end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Tag+Reader -> PM3 // sample 4 bits reader data and 4 bits tag data for sniffing @@ -283,7 +282,6 @@ begin end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // PM3 -> Reader: // a delay line to ensure that we send the (emulated) tag's answer at the correct time according to ISO14443-3 @@ -307,7 +305,6 @@ begin end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // PM3 -> Reader, internal timing: // a timer for the 1172 cycles fdt (Frame Delay Time). Start the timer with a rising edge of the reader's signal. @@ -400,7 +397,6 @@ begin end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // PM3 -> Reader // determine the required delay in the mod_sig_buf (set mod_sig_ptr). @@ -444,7 +440,6 @@ begin end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // FPGA -> ARM communication: // buffer 8 bits data to be sent to ARM. Shift them out bit by bit. @@ -495,8 +490,6 @@ end //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // FPGA <-> ARM communication: // generate a ssp clock and ssp frame signal for the synchronous transfer from/to the ARM -reg ssp_clk; -reg ssp_frame; always @(negedge adc_clk) begin @@ -529,7 +522,6 @@ begin end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // FPGA -> ARM communication: // select the data to be sent to ARM @@ -553,7 +545,6 @@ begin sendbit = 1'b0; end - if(mod_type == `FPGA_HF_ISO14443A_SNIFFER) // send sampled reader and tag data: bit_to_arm = to_arm[7]; @@ -589,6 +580,6 @@ assign pwr_oe4 = mod_sig_coil & sub_carrier & (mod_type == `FPGA_HF_ISO14443A_TA assign pwr_oe2 = 1'b0; assign pwr_lo = 1'b0; -assign dbg = negedge_cnt[3]; +assign debug = negedge_cnt[3]; endmodule diff --git a/fpga-xc2s30/hi_reader.v b/fpga/hi_reader.v similarity index 95% rename from fpga-xc2s30/hi_reader.v rename to fpga/hi_reader.v index dbc38a8a7..ffa2634d8 100644 --- a/fpga-xc2s30/hi_reader.v +++ b/fpga/hi_reader.v @@ -13,24 +13,27 @@ // // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- +//`include "define.v" module hi_reader( - ck_1356meg, - pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4, - adc_d, adc_clk, - ssp_frame, ssp_din, ssp_dout, ssp_clk, - dbg, - subcarrier_frequency, minor_mode + input ck_1356meg, + input [7:0] adc_d, + input [1:0] subcarrier_frequency, + input [3:0] minor_mode, + input ssp_dout, + + output ssp_din, + output reg ssp_frame, + output reg ssp_clk, + output adc_clk, + output pwr_lo, + output reg pwr_hi, + output pwr_oe1, + output pwr_oe2, + output pwr_oe3, + output reg pwr_oe4, + output debug ); - input ck_1356meg; - output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; - input [7:0] adc_d; - output adc_clk; - input ssp_dout; - output ssp_frame, ssp_din, ssp_clk; - output dbg; - input [1:0] subcarrier_frequency; - input [3:0] minor_mode; assign adc_clk = ck_1356meg; // sample frequency is 13,56 MHz @@ -160,7 +163,6 @@ begin end else if (minor_mode == `FPGA_HF_READER_MODE_SNIFF_IQ) begin - // Send 7 most significant bits of in phase tag signal (signed), plus 1 bit reader signal if (corr_i_accum[13:11] == 3'b000 || corr_i_accum[13:11] == 3'b111) corr_i_out <= {corr_i_accum[11:5], after_hysteresis_prev_prev}; @@ -261,9 +263,6 @@ end // corr_i_cnt 0 1 2 3 4 5 6 7 8 9 10 11 12 ... // -reg ssp_clk; -reg ssp_frame; - always @(negedge adc_clk) begin if (corr_i_cnt[1:0] == 2'b00) @@ -298,9 +297,6 @@ begin end end -// Antenna drivers -reg pwr_hi, pwr_oe4; - always @(*) begin if (minor_mode == `FPGA_HF_READER_MODE_SEND_SHALLOW_MOD) @@ -341,6 +337,6 @@ assign pwr_lo = 1'b0; assign pwr_oe2 = 1'b0; // Debug Output -assign dbg = corr_i_cnt[3]; +assign debug = corr_i_cnt[3]; endmodule diff --git a/fpga-xc2s30/hi_reader_15.v b/fpga/hi_reader_15.v similarity index 96% rename from fpga-xc2s30/hi_reader_15.v rename to fpga/hi_reader_15.v index 0db4fe2a3..ad41e771c 100644 --- a/fpga-xc2s30/hi_reader_15.v +++ b/fpga/hi_reader_15.v @@ -14,25 +14,26 @@ // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- // modified to add support for iso15 2sc mode -// -module hi_15_reader( - ck_1356meg, - pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4, - adc_d, adc_clk, - ssp_frame, ssp_din, ssp_dout, ssp_clk, - dbg, - subcarrier_frequency, minor_mode +module hi_reader_15( + input ck_1356meg, + input [7:0] adc_d, + input [1:0] subcarrier_frequency, + input [3:0] minor_mode, + input ssp_dout, + + output ssp_din, + output reg ssp_frame, + output reg ssp_clk, + output adc_clk, + output pwr_lo, + output reg pwr_hi, + output pwr_oe1, + output pwr_oe2, + output pwr_oe3, + output reg pwr_oe4, + output debug ); - input ck_1356meg; - output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; - input [7:0] adc_d; - output adc_clk; - input ssp_dout; - output ssp_frame, ssp_din, ssp_clk; - output dbg; - input [1:0] subcarrier_frequency; - input [3:0] minor_mode; assign adc_clk = ck_1356meg; // sample frequency is 13,56 MHz @@ -379,9 +380,6 @@ end // corr_i_cnt 0 1 2 3 4 5 6 7 8 9 10 11 12 ... // -reg ssp_clk; -reg ssp_frame; - always @(negedge adc_clk) begin if (corr_i_cnt[1:0] == 2'b00) @@ -416,9 +414,6 @@ begin end end -// Antenna drivers -reg pwr_hi, pwr_oe4; - always @(*) begin if (minor_mode == `FPGA_HF_READER_MODE_SEND_SHALLOW_MOD) @@ -459,6 +454,6 @@ assign pwr_lo = 1'b0; assign pwr_oe2 = 1'b0; // Debug Output -assign dbg = corr_i_cnt[3]; +assign debug = corr_i_cnt[3]; endmodule diff --git a/fpga-xc2s30/hi_simulate.v b/fpga/hi_simulate.v similarity index 91% rename from fpga-xc2s30/hi_simulate.v rename to fpga/hi_simulate.v index 2232aedd9..97346eb9b 100644 --- a/fpga-xc2s30/hi_simulate.v +++ b/fpga/hi_simulate.v @@ -30,23 +30,26 @@ // // Jonathan Westhues, October 2006 //----------------------------------------------------------------------------- +//`include "define.v" module hi_simulate( - ck_1356meg, - pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4, - adc_d, adc_clk, - ssp_frame, ssp_din, ssp_dout, ssp_clk, - dbg, - mod_type + input ck_1356meg, + input [7:0] adc_d, + input [3:0] mod_type, + input ssp_dout, + + output reg ssp_din, + output reg ssp_frame, + output reg ssp_clk, + output adc_clk, + output pwr_lo, + output pwr_hi, + output pwr_oe1, + output pwr_oe2, + output pwr_oe3, + output pwr_oe4, + output debug ); - input ck_1356meg; - output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; - input [7:0] adc_d; - output adc_clk; - input ssp_dout; - output ssp_frame, ssp_din, ssp_clk; - output dbg; - input [3:0] mod_type; // Power amp goes between LOW and tri-state, so pwr_hi (and pwr_lo) can // always be low. @@ -57,7 +60,7 @@ assign pwr_lo = 1'b0; // LF antenna connected to GND assign pwr_oe2 = 1'b0; assign adc_clk = ck_1356meg; -assign dbg = ssp_frame; +assign debug = ssp_frame; // The comparator with hysteresis on the output from the peak detector. reg after_hysteresis; @@ -94,8 +97,6 @@ reg [8:0] ssp_clk_divider; always @(negedge adc_clk) ssp_clk_divider <= (ssp_clk_divider + 1); -reg ssp_clk; - always @(negedge adc_clk) begin if (mod_type == `FPGA_HF_SIMULATOR_MODULATE_424K_8BIT) @@ -112,7 +113,6 @@ end // Produce the byte framing signal; the phase of this signal // is arbitrary, because it's just a bit stream in this module. -reg ssp_frame; always @(negedge adc_clk) begin if (mod_type == `FPGA_HF_SIMULATOR_MODULATE_212K) @@ -133,7 +133,6 @@ end // Synchronize up the after-hysteresis signal, to produce DIN. -reg ssp_din; always @(posedge ssp_clk) ssp_din = after_hysteresis; diff --git a/fpga-xc2s30/hi_sniffer.v b/fpga/hi_sniffer.v similarity index 69% rename from fpga-xc2s30/hi_sniffer.v rename to fpga/hi_sniffer.v index ed62191f1..11781ca5a 100644 --- a/fpga-xc2s30/hi_sniffer.v +++ b/fpga/hi_sniffer.v @@ -15,16 +15,20 @@ //----------------------------------------------------------------------------- module hi_sniffer( - ck_1356meg, - pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4, - adc_d, adc_clk, - ssp_frame, ssp_din, ssp_clk + input ck_1356meg, + input [7:0] adc_d, + + output ssp_din, + output reg ssp_frame, + output ssp_clk, + output adc_clk, + output pwr_lo, + output pwr_hi, + output pwr_oe1, + output pwr_oe2, + output pwr_oe3, + output pwr_oe4 ); - input ck_1356meg; - output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; - input [7:0] adc_d; - output adc_clk; - output ssp_frame, ssp_din, ssp_clk; // We are only snooping, all off. assign pwr_hi = 1'b0; @@ -34,12 +38,13 @@ assign pwr_oe2 = 1'b0; assign pwr_oe3 = 1'b0; assign pwr_oe4 = 1'b0; -reg ssp_frame; +//reg ssp_frame; reg [7:0] adc_d_out = 8'd0; -reg [2:0] ssp_cnt = 3'd0; +reg [2:0] ssp_cnt = 3'd0; -assign adc_clk = ck_1356meg; +assign adc_clk = ck_1356meg; assign ssp_clk = ~ck_1356meg; +assign ssp_din = adc_d_out[0]; always @(posedge ssp_clk) begin @@ -49,18 +54,16 @@ begin ssp_cnt <= ssp_cnt + 1; if(ssp_cnt[2:0] == 3'b000) // set frame length - begin - adc_d_out[7:0] <= adc_d; - ssp_frame <= 1'b1; - end + begin + adc_d_out[7:0] <= adc_d; + ssp_frame <= 1'b1; + end else - begin - adc_d_out[7:0] <= {1'b0, adc_d_out[7:1]}; - ssp_frame <= 1'b0; - end + begin + // shift value right one bit + adc_d_out[7:0] <= {1'b0, adc_d_out[7:1]}; + ssp_frame <= 1'b0; + end end - -assign ssp_din = adc_d_out[0]; - endmodule diff --git a/fpga-xc2s30/lf_edge_detect.v b/fpga/lf_edge_detect.v similarity index 72% rename from fpga-xc2s30/lf_edge_detect.v rename to fpga/lf_edge_detect.v index 4b6c0ac01..2a58331d1 100644 --- a/fpga-xc2s30/lf_edge_detect.v +++ b/fpga/lf_edge_detect.v @@ -15,23 +15,37 @@ // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- - // input clk is 24MHz -`include "min_max_tracker.v" +//`include "min_max_tracker.v" -module lf_edge_detect(input clk, input [7:0] adc_d, input [7:0] lf_ed_threshold, - output [7:0] max, output [7:0] min, - output [7:0] high_threshold, output [7:0] highz_threshold, - output [7:0] lowz_threshold, output [7:0] low_threshold, - output edge_state, output edge_toggle); +module lf_edge_detect( + input clk, + input [7:0] adc_d, + input [7:0] lf_ed_threshold, - min_max_tracker tracker(clk, adc_d, lf_ed_threshold, min, max); + output [7:0] max, + output [7:0] min, + output [7:0] low_threshold, + output [7:0] high_threshold, + output [7:0] lowz_threshold, + output [7:0] highz_threshold, + output edge_state, + output edge_toggle +); + + min_max_tracker tracker( + .clk (clk), + .adc_d (adc_d), + .threshold (lf_ed_threshold), + .min (min), + .max (max) +); // auto-tune - assign high_threshold = (max + min) / 2 + (max - min) / 4; + assign high_threshold = (max + min) / 2 + (max - min) / 4; assign highz_threshold = (max + min) / 2 + (max - min) / 8; - assign lowz_threshold = (max + min) / 2 - (max - min) / 8; - assign low_threshold = (max + min) / 2 - (max - min) / 4; + assign lowz_threshold = (max + min) / 2 - (max - min) / 8; + assign low_threshold = (max + min) / 2 - (max - min) / 4; // heuristic to see if it makes sense to try to detect an edge wire enabled = @@ -55,18 +69,20 @@ module lf_edge_detect(input clk, input [7:0] adc_d, input [7:0] lf_ed_threshold, always @(posedge clk) begin is_high <= (adc_d >= high_threshold); - is_low <= (adc_d <= low_threshold); + is_low <= (adc_d <= low_threshold); is_zero <= ((adc_d > lowz_threshold) & (adc_d < highz_threshold)); end // all edges detection always @(posedge clk) - if (enabled) begin + if (enabled) + begin // To enable detecting two consecutive peaks at the same level // (low or high) we check whether or not we went back near 0 in-between. // This extra check is necessary to prevent from noise artifacts // around the threshold values. - if (trigger_enabled & (is_high | is_low)) begin + if (trigger_enabled & (is_high | is_low)) + begin output_edge <= ~output_edge; trigger_enabled <= 0; end else @@ -75,14 +91,15 @@ module lf_edge_detect(input clk, input [7:0] adc_d, input [7:0] lf_ed_threshold, // edge states always @(posedge clk) - if (enabled) begin + if (enabled) + begin if (is_high) output_state <= 1'd1; else if (is_low) output_state <= 1'd0; end - assign edge_state = output_state; + assign edge_state = output_state; assign edge_toggle = output_edge; endmodule diff --git a/fpga-xc2s30/lo_adc.v b/fpga/lo_adc.v similarity index 74% rename from fpga-xc2s30/lo_adc.v rename to fpga/lo_adc.v index 808ec96ed..475cc869f 100644 --- a/fpga-xc2s30/lo_adc.v +++ b/fpga/lo_adc.v @@ -22,22 +22,24 @@ //----------------------------------------------------------------------------- module lo_adc( - pck0, - pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4, - adc_d, adc_clk, - ssp_frame, ssp_din, ssp_dout, ssp_clk, - dbg, divisor, - lf_field + input pck0, + input [7:0] adc_d, + input [7:0] divisor, + input lf_field, + input ssp_dout, + + output ssp_din, + output ssp_frame, + output ssp_clk, + output adc_clk, + output pwr_lo, + output pwr_hi, + output pwr_oe1, + output pwr_oe2, + output pwr_oe3, + output pwr_oe4, + output debug ); - input pck0; - output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; - input [7:0] adc_d; - output adc_clk; - input ssp_dout; - output ssp_frame, ssp_din, ssp_clk; - output dbg; - input [7:0] divisor; - input lf_field; reg [7:0] to_arm_shiftreg; reg [7:0] pck_divider; @@ -49,16 +51,16 @@ wire reader_modulation = !ssp_dout & lf_field & clk_state; // always on (High Frequency outputs, unused) assign pwr_oe1 = 1'b0; -assign pwr_hi = 1'b0; +assign pwr_hi = 1'b0; // low frequency outputs -assign pwr_lo = reader_modulation; +assign pwr_lo = reader_modulation; assign pwr_oe2 = 1'b0; // 33 Ohms assign pwr_oe3 = tag_modulation; // base antenna load = 33 Ohms assign pwr_oe4 = 1'b0; // 10k Ohms // Debug Output ADC clock -assign dbg = adc_clk; +assign debug = adc_clk; // ADC clock out of phase with antenna driver assign adc_clk = ~clk_state; @@ -76,10 +78,10 @@ assign ssp_frame = (pck_divider[7:3] == 5'd1) && !clk_state; always @(posedge pck0) begin if (pck_divider == divisor[7:0]) - begin + begin pck_divider <= 8'd0; clk_state = !clk_state; - end + end else begin pck_divider <= pck_divider + 1; @@ -92,13 +94,9 @@ always @(posedge pck0) begin if ((pck_divider == 8'd7) && !clk_state) to_arm_shiftreg <= adc_d; - else begin + else + begin to_arm_shiftreg[7:1] <= to_arm_shiftreg[6:0]; - // simulation showed a glitch occurring due to the LSB of the shifter - // not being set as we shift bits out - // this ensures the ssp_din remains low after a transfer and suppresses - // the glitch that would occur when the last data shifted out ended in - // a 1 bit and the next data shifted out started with a 0 bit to_arm_shiftreg[0] <= 1'b0; end end diff --git a/fpga-xc2s30/lo_edge_detect.v b/fpga/lo_edge_detect.v similarity index 67% rename from fpga-xc2s30/lo_edge_detect.v rename to fpga/lo_edge_detect.v index 462dfcc46..c820466f7 100644 --- a/fpga-xc2s30/lo_edge_detect.v +++ b/fpga/lo_edge_detect.v @@ -25,19 +25,29 @@ // - ssp_frame (wired to TIOA1 on the arm) for the edge detection/state // - ssp_clk: cross_lo -`include "lp20khz_1MSa_iir_filter.v" -`include "lf_edge_detect.v" +//`include "lp20khz_1MSa_iir_filter.v" +//`include "lf_edge_detect.v" module lo_edge_detect( - input pck0, input pck_divclk, - output pwr_lo, output pwr_hi, - output pwr_oe1, output pwr_oe2, output pwr_oe3, output pwr_oe4, - input [7:0] adc_d, output adc_clk, - output ssp_frame, input ssp_dout, output ssp_clk, + input pck0, + input pck_divclk, + input [7:0] adc_d, input cross_lo, - output dbg, input lf_field, - input lf_ed_toggle_mode, input [7:0] lf_ed_threshold + input lf_ed_toggle_mode, + input [7:0] lf_ed_threshold, + input ssp_dout, + + output ssp_frame, + output ssp_clk, + output adc_clk, + output pwr_lo, + output pwr_hi, + output pwr_oe1, + output pwr_oe2, + output pwr_oe3, + output pwr_oe4, + output debug ); wire tag_modulation = ssp_dout & !lf_field; @@ -58,18 +68,34 @@ assign pwr_hi = 1'b0; wire data_rdy; wire [7:0] adc_filtered; assign adc_clk = pck0; -lp20khz_1MSa_iir_filter adc_filter(pck0, adc_d, data_rdy, adc_filtered); + +lp20khz_1MSa_iir_filter adc_filter( + .clk (pck0), + .adc_d (adc_d), + .rdy (data_rdy), + .out (adc_filtered) +); // detect edges wire [7:0] high_threshold, highz_threshold, lowz_threshold, low_threshold; wire [7:0] max, min; wire edge_state, edge_toggle; -lf_edge_detect lf_ed(pck0, adc_filtered, lf_ed_threshold, - max, min, - high_threshold, highz_threshold, lowz_threshold, low_threshold, - edge_state, edge_toggle); -assign dbg = lf_ed_toggle_mode ? edge_toggle : edge_state; +lf_edge_detect lf_ed( + .clk (pck0), + .adc_d (adc_filtered), + .lf_ed_threshold (lf_ed_threshold), + .max (max), + .min (min), + .high_threshold (high_threshold), + .highz_threshold (highz_threshold), + .lowz_threshold (lowz_threshold), + .low_threshold (low_threshold), + .edge_state (edge_state), + .edge_toggle (edge_toggle) +); + +assign debug = lf_ed_toggle_mode ? edge_toggle : edge_state; assign ssp_frame = lf_ed_toggle_mode ? edge_toggle : edge_state; diff --git a/fpga-xc2s30/lo_passthru.v b/fpga/lo_passthru.v similarity index 82% rename from fpga-xc2s30/lo_passthru.v rename to fpga/lo_passthru.v index 52e56d4c5..a5ae1d4e2 100644 --- a/fpga-xc2s30/lo_passthru.v +++ b/fpga/lo_passthru.v @@ -17,27 +17,32 @@ // For reading TI tags, we need to place the FPGA in pass through mode // and pass everything through to the ARM - module lo_passthru( input pck_divclk, - output pwr_lo, output pwr_hi, - output pwr_oe1, output pwr_oe2, output pwr_oe3, output pwr_oe4, - output adc_clk, - output ssp_din, input ssp_dout, input cross_lo, - output dbg + input ssp_dout, + + output ssp_din, + output adc_clk, + output pwr_lo, + output pwr_hi, + output pwr_oe1, + output pwr_oe2, + output pwr_oe3, + output pwr_oe4, + output debug ); // the antenna is modulated when ssp_dout = 1, when 0 the // antenna drivers stop modulating and go into listen mode -assign pwr_oe3 = 1'b0; +assign ssp_din = cross_lo; +assign adc_clk = 1'b0; +assign pwr_lo = pck_divclk && ssp_dout; +assign pwr_hi = 1'b0; assign pwr_oe1 = ssp_dout; assign pwr_oe2 = ssp_dout; +assign pwr_oe3 = 1'b0; assign pwr_oe4 = ssp_dout; -assign pwr_lo = pck_divclk && ssp_dout; -assign pwr_hi = 1'b0; -assign adc_clk = 1'b0; -assign ssp_din = cross_lo; -assign dbg = cross_lo; +assign debug = cross_lo; endmodule diff --git a/fpga-xc2s30/lo_read.v b/fpga/lo_read.v similarity index 80% rename from fpga-xc2s30/lo_read.v rename to fpga/lo_read.v index a7e481654..06bd0ae5a 100644 --- a/fpga-xc2s30/lo_read.v +++ b/fpga/lo_read.v @@ -22,13 +22,23 @@ //----------------------------------------------------------------------------- module lo_read( - input pck0, input [7:0] pck_cnt, input pck_divclk, - output pwr_lo, output pwr_hi, - output pwr_oe1, output pwr_oe2, output pwr_oe3, output pwr_oe4, - input [7:0] adc_d, output adc_clk, - output ssp_frame, output ssp_din, output ssp_clk, - output dbg, - input lf_field + input pck0, + input pck_divclk, + input [7:0] pck_cnt, + input [7:0] adc_d, + input lf_field, + + output ssp_din, + output ssp_frame, + output ssp_clk, + output adc_clk, + output pwr_lo, + output pwr_hi, + output pwr_oe1, + output pwr_oe2, + output pwr_oe3, + output pwr_oe4, + output debug ); reg [7:0] to_arm_shiftreg; @@ -43,13 +53,9 @@ always @(posedge pck0) begin if((pck_cnt == 8'd7) && !pck_divclk) to_arm_shiftreg <= adc_d; - else begin + else + begin to_arm_shiftreg[7:1] <= to_arm_shiftreg[6:0]; - // simulation showed a glitch occurring due to the LSB of the shifter - // not being set as we shift bits out - // this ensures the ssp_din remains low after a transfer and suppresses - // the glitch that would occur when the last data shifted out ended in - // a 1 bit and the next data shifted out started with a 0 bit to_arm_shiftreg[0] <= 1'b0; end end @@ -74,7 +80,7 @@ assign ssp_clk = pck0; // SSP frame is gated by ant_lo and goes high when pck_divider=8..15 assign ssp_frame = (pck_cnt[7:3] == 5'd1) && !pck_divclk; // unused signals tied low -assign pwr_hi = 1'b0; +assign pwr_hi = 1'b0; assign pwr_oe1 = 1'b0; assign pwr_oe2 = 1'b0; assign pwr_oe3 = 1'b0; @@ -84,5 +90,5 @@ assign pwr_lo = lf_field & pck_divclk; // ADC clock out of phase with antenna driver assign adc_clk = ~pck_divclk; // ADC clock also routed to debug pin -assign dbg = adc_clk; +assign debug = adc_clk; endmodule diff --git a/fpga-xc2s30/lo_simulate.v b/fpga/lo_simulate.v similarity index 79% rename from fpga-xc2s30/lo_simulate.v rename to fpga/lo_simulate.v index 89b548c73..c3f819cd7 100644 --- a/fpga-xc2s30/lo_simulate.v +++ b/fpga/lo_simulate.v @@ -22,23 +22,27 @@ //----------------------------------------------------------------------------- module lo_simulate( - pck0, ck_1356meg, ck_1356megb, - pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4, - adc_d, adc_clk, - ssp_frame, ssp_din, ssp_dout, ssp_clk, - cross_hi, cross_lo, - dbg, - divisor + input pck0, + input ck_1356meg, + input ck_1356megb, + input [7:0] adc_d, + input [7:0] divisor, + input cross_hi, + input cross_lo, + input ssp_dout, + + output ssp_din, + output ssp_frame, + output ssp_clk, + output adc_clk, + output pwr_lo, + output pwr_hi, + output pwr_oe1, + output pwr_oe2, + output pwr_oe3, + output pwr_oe4, + output debug ); - input pck0, ck_1356meg, ck_1356megb; - output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; - input [7:0] adc_d; - output adc_clk; - input ssp_dout; - output ssp_frame, ssp_din, ssp_clk; - input cross_hi, cross_lo; - output dbg; - input [7:0] divisor; // No logic, straight through. assign pwr_oe3 = 1'b0; @@ -46,9 +50,9 @@ assign pwr_oe1 = ssp_dout; assign pwr_oe2 = ssp_dout; assign pwr_oe4 = ssp_dout; assign ssp_clk = cross_lo; -assign pwr_lo = 1'b0; -assign pwr_hi = 1'b0; -assign dbg = ssp_frame; +assign pwr_lo = 1'b0; +assign pwr_hi = 1'b0; +assign debug = ssp_frame; // Divide the clock to be used for the ADC reg [7:0] pck_divider; diff --git a/fpga-xc2s30/lp20khz_1MSa_iir_filter.v b/fpga/lp20khz_1MSa_iir_filter.v similarity index 96% rename from fpga-xc2s30/lp20khz_1MSa_iir_filter.v rename to fpga/lp20khz_1MSa_iir_filter.v index 8bc6cca4f..d4a16cde1 100644 --- a/fpga-xc2s30/lp20khz_1MSa_iir_filter.v +++ b/fpga/lp20khz_1MSa_iir_filter.v @@ -36,7 +36,12 @@ // See details about its design see // https://fail0verflow.com/blog/2014/proxmark3-fpga-iir-filter.html -module lp20khz_1MSa_iir_filter(input clk, input [7:0] adc_d, output rdy, output [7:0] out); +module lp20khz_1MSa_iir_filter( + input clk, + input [7:0] adc_d, + output rdy, + output [7:0] out +); // clk is 24MHz, the IIR filter is designed for 1MS/s // hence we need to divide it by 24 diff --git a/fpga-xc2s30/min_max_tracker.v b/fpga/min_max_tracker.v similarity index 95% rename from fpga-xc2s30/min_max_tracker.v rename to fpga/min_max_tracker.v index 210d3c666..2f6e06017 100644 --- a/fpga-xc2s30/min_max_tracker.v +++ b/fpga/min_max_tracker.v @@ -23,8 +23,13 @@ // This algorithm therefore can't be used directly for realtime peak detections, // but it can be used as a simple envelope follower. -module min_max_tracker(input clk, input [7:0] adc_d, input [7:0] threshold, - output [7:0] min, output [7:0] max); +module min_max_tracker( + input clk, + input [7:0] adc_d, + input [7:0] threshold, + output [7:0] min, + output [7:0] max +); reg [7:0] min_val = 255; reg [7:0] max_val = 0; diff --git a/fpga/mux16.v b/fpga/mux16.v new file mode 100644 index 000000000..1d9777706 --- /dev/null +++ b/fpga/mux16.v @@ -0,0 +1,50 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// +// General-purpose miscellany. +// + +// 16 inputs to 1 output multiplexer +module mux16( + input [3:0] sel, + output reg y, + input x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 +); + +always @(*) +begin + // y = x[sel]; + case (sel) + 4'd0: y = x0; + 4'd1: y = x1; + 4'd2: y = x2; + 4'd3: y = x3; + 4'd4: y = x4; + 4'd5: y = x5; + 4'd6: y = x6; + 4'd7: y = x7; + 4'd8: y = x8; + 4'd9: y = x9; + 4'd10: y = x10; + 4'd11: y = x11; + 4'd12: y = x12; + 4'd13: y = x13; + 4'd14: y = x14; + 4'd15: y = x15; + endcase +end + +endmodule diff --git a/fpga-xc3s100e/mux2_onein.v b/fpga/mux2_onein.v similarity index 70% rename from fpga-xc3s100e/mux2_onein.v rename to fpga/mux2_onein.v index 86f17a553..baefa72c8 100644 --- a/fpga-xc3s100e/mux2_onein.v +++ b/fpga/mux2_onein.v @@ -4,13 +4,14 @@ // kombi, 2020.05 //----------------------------------------------------------------------------- -module mux2_one(sel, y, x0, x1); - input [1:0] sel; - input x0, x1; - output y; - reg y; +module mux2_one( + input [1:0] sel, + output reg y, + input x0, + input x1 +); -always @(x0 or x1 or sel) +always @(*) begin case (sel) 1'b0: y = x1; diff --git a/fpga-xc3s100e/mux2_oneout.v b/fpga/mux2_oneout.v similarity index 68% rename from fpga-xc3s100e/mux2_oneout.v rename to fpga/mux2_oneout.v index 3cbc0fd6b..fa61205a2 100644 --- a/fpga-xc3s100e/mux2_oneout.v +++ b/fpga/mux2_oneout.v @@ -4,13 +4,14 @@ // kombi, 2020.05 //----------------------------------------------------------------------------- -module mux2_oneout(sel, y, x0, x1); - input [1:0] sel; - output x0, x1; - input y; - reg x0, x1; +module mux2_oneout( + input [1:0] sel, + input y, + output reg x0, + output reg x1 +); -always @(x0 or x1 or sel) +always @(*) begin case (sel) 1'b0: x1 = y; diff --git a/fpga-xc2s30/util.v b/fpga/mux8.v similarity index 68% rename from fpga-xc2s30/util.v rename to fpga/mux8.v index 66361ca59..d9118d243 100644 --- a/fpga-xc2s30/util.v +++ b/fpga/mux8.v @@ -17,23 +17,25 @@ // General-purpose miscellany. // -module mux8(sel, y, x0, x1, x2, x3, x4, x5, x6, x7); - input [2:0] sel; - input x0, x1, x2, x3, x4, x5, x6, x7; - output y; - reg y; +// 8 inputs to 1 output multiplexer +module mux8( + input [2:0] sel, + output reg y, + input x0, x1, x2, x3, x4, x5, x6, x7 +); -always @(x0 or x1 or x2 or x3 or x4 or x5 or x6 or x7 or sel) +always @(*) begin + // y = x[sel]; case (sel) - 3'b000: y = x0; - 3'b001: y = x1; - 3'b010: y = x2; - 3'b011: y = x3; - 3'b100: y = x4; - 3'b101: y = x5; - 3'b110: y = x6; - 3'b111: y = x7; + 3'd0: y = x0; + 3'd1: y = x1; + 3'd2: y = x2; + 3'd3: y = x3; + 3'd4: y = x4; + 3'd5: y = x5; + 3'd6: y = x6; + 3'd7: y = x7; endcase end diff --git a/fpga-xc2s30/tests/Makefile b/fpga/tests/Makefile similarity index 100% rename from fpga-xc2s30/tests/Makefile rename to fpga/tests/Makefile diff --git a/fpga-xc2s30/tests/plot_edgedetect.py b/fpga/tests/plot_edgedetect.py old mode 100755 new mode 100644 similarity index 100% rename from fpga-xc2s30/tests/plot_edgedetect.py rename to fpga/tests/plot_edgedetect.py diff --git a/fpga-xc2s30/sim.tcl b/fpga/tests/sim.tcl similarity index 100% rename from fpga-xc2s30/sim.tcl rename to fpga/tests/sim.tcl diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.filtered.gold b/fpga/tests/tb_data/pcf7931_read_1MSA_data.filtered.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.filtered.gold rename to fpga/tests/tb_data/pcf7931_read_1MSA_data.filtered.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.high.gold b/fpga/tests/tb_data/pcf7931_read_1MSA_data.high.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.high.gold rename to fpga/tests/tb_data/pcf7931_read_1MSA_data.high.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.highz.gold b/fpga/tests/tb_data/pcf7931_read_1MSA_data.highz.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.highz.gold rename to fpga/tests/tb_data/pcf7931_read_1MSA_data.highz.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.in b/fpga/tests/tb_data/pcf7931_read_1MSA_data.in similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.in rename to fpga/tests/tb_data/pcf7931_read_1MSA_data.in diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.low.gold b/fpga/tests/tb_data/pcf7931_read_1MSA_data.low.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.low.gold rename to fpga/tests/tb_data/pcf7931_read_1MSA_data.low.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.lowz.gold b/fpga/tests/tb_data/pcf7931_read_1MSA_data.lowz.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.lowz.gold rename to fpga/tests/tb_data/pcf7931_read_1MSA_data.lowz.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.max.gold b/fpga/tests/tb_data/pcf7931_read_1MSA_data.max.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.max.gold rename to fpga/tests/tb_data/pcf7931_read_1MSA_data.max.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.min.gold b/fpga/tests/tb_data/pcf7931_read_1MSA_data.min.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.min.gold rename to fpga/tests/tb_data/pcf7931_read_1MSA_data.min.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.state.gold b/fpga/tests/tb_data/pcf7931_read_1MSA_data.state.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.state.gold rename to fpga/tests/tb_data/pcf7931_read_1MSA_data.state.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.time b/fpga/tests/tb_data/pcf7931_read_1MSA_data.time similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.time rename to fpga/tests/tb_data/pcf7931_read_1MSA_data.time diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.toggle.gold b/fpga/tests/tb_data/pcf7931_read_1MSA_data.toggle.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_read_1MSA_data.toggle.gold rename to fpga/tests/tb_data/pcf7931_read_1MSA_data.toggle.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.filtered.gold b/fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.filtered.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.filtered.gold rename to fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.filtered.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.high.gold b/fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.high.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.high.gold rename to fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.high.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.highz.gold b/fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.highz.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.highz.gold rename to fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.highz.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.in b/fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.in similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.in rename to fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.in diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.low.gold b/fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.low.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.low.gold rename to fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.low.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.lowz.gold b/fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.lowz.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.lowz.gold rename to fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.lowz.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.max.gold b/fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.max.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.max.gold rename to fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.max.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.min.gold b/fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.min.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.min.gold rename to fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.min.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.state.gold b/fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.state.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.state.gold rename to fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.state.gold diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.time b/fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.time similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.time rename to fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.time diff --git a/fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.toggle.gold b/fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.toggle.gold similarity index 100% rename from fpga-xc2s30/tests/tb_data/pcf7931_write1byte_1MSA_data.toggle.gold rename to fpga/tests/tb_data/pcf7931_write1byte_1MSA_data.toggle.gold diff --git a/fpga-xc2s30/tests/tb_lf_edge_detect.v b/fpga/tests/tb_lf_edge_detect.v similarity index 100% rename from fpga-xc2s30/tests/tb_lf_edge_detect.v rename to fpga/tests/tb_lf_edge_detect.v diff --git a/fpga-xc2s30/tests/tb_lp20khz_1MSa_iir_filter.v b/fpga/tests/tb_lp20khz_1MSa_iir_filter.v similarity index 100% rename from fpga-xc2s30/tests/tb_lp20khz_1MSa_iir_filter.v rename to fpga/tests/tb_lp20khz_1MSa_iir_filter.v diff --git a/fpga-xc2s30/tests/tb_min_max_tracker.v b/fpga/tests/tb_min_max_tracker.v similarity index 100% rename from fpga-xc2s30/tests/tb_min_max_tracker.v rename to fpga/tests/tb_min_max_tracker.v diff --git a/fpga-xc2s30/testbed_fpga.v b/fpga/tests/testbed_fpga.v similarity index 100% rename from fpga-xc2s30/testbed_fpga.v rename to fpga/tests/testbed_fpga.v diff --git a/fpga-xc2s30/testbed_hi_read_tx.v b/fpga/tests/testbed_hi_read_tx.v similarity index 100% rename from fpga-xc2s30/testbed_hi_read_tx.v rename to fpga/tests/testbed_hi_read_tx.v diff --git a/fpga-xc2s30/testbed_hi_simulate.v b/fpga/tests/testbed_hi_simulate.v similarity index 100% rename from fpga-xc2s30/testbed_hi_simulate.v rename to fpga/tests/testbed_hi_simulate.v diff --git a/fpga-xc2s30/testbed_lo_read.v b/fpga/tests/testbed_lo_read.v similarity index 100% rename from fpga-xc2s30/testbed_lo_read.v rename to fpga/tests/testbed_lo_read.v diff --git a/fpga-xc2s30/testbed_lo_simulate.v b/fpga/tests/testbed_lo_simulate.v similarity index 100% rename from fpga-xc2s30/testbed_lo_simulate.v rename to fpga/tests/testbed_lo_simulate.v diff --git a/fpga/xc2s30-5-vq100.ucf b/fpga/xc2s30-5-vq100.ucf new file mode 100644 index 000000000..e42ce0d88 --- /dev/null +++ b/fpga/xc2s30-5-vq100.ucf @@ -0,0 +1,45 @@ +# See the schematic for the pin assignment. + +NET "adc_d<0>" LOC = "P62" ; +NET "adc_d<1>" LOC = "P60" ; +NET "adc_d<2>" LOC = "P58" ; +NET "adc_d<3>" LOC = "P57" ; +NET "adc_d<4>" LOC = "P56" ; +NET "adc_d<5>" LOC = "P55" ; +NET "adc_d<6>" LOC = "P54" ; +NET "adc_d<7>" LOC = "P53" ; +#NET "cross_hi" LOC = "P88" ; +#NET "miso" LOC = "P40" ; +NET "adc_clk" LOC = "P46" ; +NET "adc_noe" LOC = "P47" ; +NET "ck_1356meg" LOC = "P91" ; +NET "ck_1356megb" LOC = "P93" ; +NET "cross_lo" LOC = "P87" ; +NET "dbg" LOC = "P22" ; +NET "mosi" LOC = "P43" ; +NET "ncs" LOC = "P44" ; +NET "pck0" LOC = "P36" ; +NET "pwr_hi" LOC = "P80" ; +NET "pwr_lo" LOC = "P81" ; +NET "pwr_oe1" LOC = "P82" ; +NET "pwr_oe2" LOC = "P83" ; +NET "pwr_oe3" LOC = "P84" ; +NET "pwr_oe4" LOC = "P86" ; +NET "spck" LOC = "P39" ; +NET "ssp_clk" LOC = "P71" ; +NET "ssp_din" LOC = "P32" ; +NET "ssp_dout" LOC = "P34" ; +NET "ssp_frame" LOC = "P31" ; + +# definition of Clock nets: +NET "ck_1356meg" TNM_NET = "clk_net_1356" ; +NET "ck_1356megb" TNM_NET = "clk_net_1356b"; +NET "pck0" TNM_NET = "clk_net_pck0" ; +NET "spck" TNM_NET = "clk_net_spck" ; + +# Timing specs of clock nets: +TIMEGRP "clk_net_1356_all" = "clk_net_1356" "clk_net_1356b" ; +TIMESPEC "TS_1356MHz" = PERIOD "clk_net_1356_all" 74 ns HIGH 37 ns ; +TIMESPEC "TS_24MHz" = PERIOD "clk_net_pck0" 42 ns HIGH 21 ns ; +TIMESPEC "TS_4MHz" = PERIOD "clk_net_spck" 250 ns HIGH 125 ns ; + diff --git a/fpga/xc3s100e-4-vq100.ucf b/fpga/xc3s100e-4-vq100.ucf new file mode 100644 index 000000000..b259af2ed --- /dev/null +++ b/fpga/xc3s100e-4-vq100.ucf @@ -0,0 +1,48 @@ +# See the schematic for the pin assignment. + +NET "adc_d<0>" LOC = "P79" ; +NET "adc_d<1>" LOC = "P78" ; +NET "adc_d<2>" LOC = "P71" ; +NET "adc_d<3>" LOC = "P70" ; +NET "adc_d<4>" LOC = "P69" ; +NET "adc_d<5>" LOC = "P68" ; +NET "adc_d<6>" LOC = "P67" ; +NET "adc_d<7>" LOC = "P66" ; +#NET "cross_hi" LOC = "P88" ; +#NET "miso" LOC = "P40" ; +NET "adc_clk" LOC = "P65" ; +NET "adc_noe" LOC = "P62" ; +NET "ck_1356meg" LOC = "P88" ; +NET "ck_1356megb" LOC = "P89" ; +NET "cross_lo" LOC = "P90" ; +NET "dbg" LOC = "P22" ; +NET "mosi" LOC = "P43" ; +NET "ncs" LOC = "P40" ; +NET "pck0" LOC = "P36" ; +NET "pwr_hi" LOC = "P85" ; +NET "pwr_lo" LOC = "P83" ; +NET "pwr_oe1" LOC = "P84" ; +NET "pwr_oe2" LOC = "P91" ; +NET "pwr_oe3" LOC = "P92" ; +NET "pwr_oe4" LOC = "P86" ; +NET "spck" LOC = "P39" ; +NET "ssp_clk" LOC = "P33" ; +NET "ssp_din" LOC = "P32" ; +NET "ssp_dout" LOC = "P34" ; +NET "ssp_frame" LOC = "P27" ; +NET "FPGA_SWITCH" LOC = "P38" ; +NET "PWR_LO_EN" LOC = "P94" ; + +# definition of Clock nets: +NET "ck_1356meg" TNM_NET = "clk_net_1356" ; +NET "ck_1356megb" TNM_NET = "clk_net_1356b"; +NET "pck0" TNM_NET = "clk_net_pck0" ; +NET "spck" TNM_NET = "clk_net_spck" ; +NET "FPGA_SWITCH" CLOCK_DEDICATED_ROUTE = FALSE ; + +# Timing specs of clock nets: +TIMEGRP "clk_net_1356_all" = "clk_net_1356" "clk_net_1356b" ; +TIMESPEC "TS_1356MHz" = PERIOD "clk_net_1356_all" 74 ns HIGH 37 ns ; +TIMESPEC "TS_24MHz" = PERIOD "clk_net_pck0" 42 ns HIGH 21 ns ; +TIMESPEC "TS_4MHz" = PERIOD "clk_net_spck" 250 ns HIGH 125 ns ; + diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 58b3a2162..0a66142ac 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -282,7 +282,8 @@ static int bitparse_find_section(FILE *infile, char section_name, unsigned int * /* Four byte length field */ for (int i = 0; i < 4; i++) { tmp = fgetc(infile); - if (tmp < 0) { + /* image length sanity check, should be under 300KB */ + if ( (tmp < 0) || (tmp > 300*1024) ) { break; } current_length += tmp << (24 - (i * 8)); @@ -292,7 +293,8 @@ static int bitparse_find_section(FILE *infile, char section_name, unsigned int * default: /* Fall through, two byte length field */ for (int i = 0; i < 2; i++) { tmp = fgetc(infile); - if (tmp < 0) { + /* if name, date or time fields are too long, we probably shouldn't parse them */ + if ( (tmp < 0) || (tmp > 64) ){ break; } current_length += tmp << (8 - (i * 8)); @@ -334,14 +336,16 @@ static int FpgaGatherVersion(FILE *infile, char *infile_name, char *dst, int len } } - if (!memcmp("fpga_lf", basename(infile_name), 7)) - strncat(dst, "LF", len - strlen(dst) - 1); - else if (!memcmp("fpga_hf_15", basename(infile_name), 10)) - strncat(dst, "HF 15", len - strlen(dst) - 1); - else if (!memcmp("fpga_hf.", basename(infile_name), 8)) - strncat(dst, "HF", len - strlen(dst) - 1); - else if (!memcmp("fpga_felica", basename(infile_name), 7)) - strncat(dst, "HF FeliCa", len - strlen(dst) - 1); + if (bitparse_find_section(infile, 'a', &fpga_info_len)) { + for (uint32_t i = 0; i < fpga_info_len; i++) { + char c = (char)fgetc(infile); + if (i < sizeof(tempstr)) { + tempstr[i] = c; + } + } + + strncat(dst, tempstr, len - strlen(dst) - 1); + } strncat(dst, " image ", len - strlen(dst) - 1); if (bitparse_find_section(infile, 'b', &fpga_info_len)) { From 97eb0238b101bc9fd79802b39b62e28c6e8e4d89 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 2 Jun 2023 10:45:04 +0200 Subject: [PATCH 0032/1034] style --- armsrc/Standalone/hf_msdsal.c | 8 +- armsrc/appmain.c | 2 +- armsrc/iso14443a.c | 10 +- armsrc/mifarecmd.c | 4 +- client/luascripts/hf_mf_ultimatecard.lua | 10 +- client/src/cmdhfmf.c | 148 +++++++++++------------ client/src/cmdhfmfhard.c | 2 +- client/src/cmdhfmfp.c | 6 +- client/src/cmdlfhitag.c | 2 +- client/src/cmdlft55xx.c | 2 +- client/src/fileutils.c | 12 +- client/src/mifare/mad.c | 8 +- client/src/nfc/ndef.c | 22 ++-- client/src/pm3line_vocabulory.h | 3 +- client/update_amiibo_tools_lua.py | 14 +-- doc/commands.json | 91 +++++++++----- doc/commands.md | 7 +- 17 files changed, 191 insertions(+), 160 deletions(-) diff --git a/armsrc/Standalone/hf_msdsal.c b/armsrc/Standalone/hf_msdsal.c index b0d81ff79..f97a2e57f 100644 --- a/armsrc/Standalone/hf_msdsal.c +++ b/armsrc/Standalone/hf_msdsal.c @@ -376,7 +376,7 @@ void RunMod(void) { // dynamic_response_info will be in charge of responses dynamic_response_info.response_n = 0; - + //Dbprintf("receivedCmd: %02x\n", receivedCmd); // received a REQUEST if (receivedCmd[0] == ISO14443A_CMD_REQA && len == 1) { @@ -399,12 +399,12 @@ void RunMod(void) { // received request for UID (cascade 1) } else if (receivedCmd[1] == 0x20 && receivedCmd[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT && len == 2) { //DbpString(_YELLOW_("+") "Request for UID C1"); - p_response = &responses[RESP_INDEX_UIDC1]; + p_response = &responses[RESP_INDEX_UIDC1]; // received a SELECT (cascade 1) } else if (receivedCmd[1] == 0x70 && receivedCmd[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT && len == 9) { //DbpString(_YELLOW_("+") "Request for SELECT S1"); - p_response = &responses[RESP_INDEX_SAKC1]; + p_response = &responses[RESP_INDEX_SAKC1]; // received a RATS request } else if (receivedCmd[0] == ISO14443A_CMD_RATS && len == 4) { @@ -412,7 +412,7 @@ void RunMod(void) { prevCmd = 0; //p_response = &responses[RESP_INDEX_RATS]; - static uint8_t rRATS[] = { 0x13, 0x78, 0x80, 0x72, 0x02, 0x80, 0x31, 0x80, 0x66, 0xb1, 0x84, 0x0c, 0x01, 0x6e, 0x01, 0x83, 0x00, 0x90, 0x00 }; + static uint8_t rRATS[] = { 0x13, 0x78, 0x80, 0x72, 0x02, 0x80, 0x31, 0x80, 0x66, 0xb1, 0x84, 0x0c, 0x01, 0x6e, 0x01, 0x83, 0x00, 0x90, 0x00 }; memcpy(&dynamic_response_info.response[0], rRATS, sizeof(rRATS)); dynamic_response_info.response_n = sizeof(rRATS); diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 38c680050..184307042 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -2045,7 +2045,7 @@ static void PacketReceived(PacketCommandNG *packet) { reply_ng(CMD_USART_RX, PM3_ENODATA, NULL, 0); } - StopTicks(); + StopTicks(); BigBuf_free(); LED_B_OFF(); break; diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index b4730b62d..01eed12c1 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1189,12 +1189,12 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r // Configure the ATQA and SAK accordingly rATQA[0] &= 0xBF; - if(tagType == 11){ - rSAKc1[0] = sak & 0xFC & 0X70; - }else{ - rSAKc1[0] = sak & 0xFB; + if (tagType == 11) { + rSAKc1[0] = sak & 0xFC & 0X70; + } else { + rSAKc1[0] = sak & 0xFB; } - + AddCrc14A(rSAKc1, sizeof(rSAKc1) - 2); *cuid = bytes_to_num(data, 4); diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 30558541d..5dd5dfcf6 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -1300,7 +1300,7 @@ void MifareNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8 break; } */ - + uint32_t nttmp = prng_successor(nt1, 100); //NXP Mifare is typical around 840,but for some unlicensed/compatible mifare card this can be 160 for (i = 101; i < 1200; i++) { nttmp = prng_successor(nttmp, 1); @@ -1354,7 +1354,7 @@ void MifareNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8 LED_C_ON(); // get crypted nonces for target sector - for (i = 0; ((i < 2) && (isOK == PM3_SUCCESS)); i++) { + for (i = 0; ((i < 2) && (isOK == PM3_SUCCESS)); i++) { // look for exactly two different nonces diff --git a/client/luascripts/hf_mf_ultimatecard.lua b/client/luascripts/hf_mf_ultimatecard.lua index 09b53937f..4bb6034ee 100644 --- a/client/luascripts/hf_mf_ultimatecard.lua +++ b/client/luascripts/hf_mf_ultimatecard.lua @@ -50,20 +50,20 @@ arguments = [[ -c read magic configuration -u UID (8-20 hexsymbols), set UID on tag -t tag type to impersonate - 1 = Mifare Mini S20 4-byte + 1 = Mifare Mini S20 4-byte 2 = Mifare Mini S20 7-byte 15 = NTAG 210 3 = Mifare Mini S20 10-byte 16 = NTAG 212 4 = Mifare 1k S50 4-byte 17 = NTAG 213 5 = Mifare 1k S50 7-byte 18 = NTAG 215 - 6 = Mifare 1k S50 10-byte 19 = NTAG 216 + 6 = Mifare 1k S50 10-byte 19 = NTAG 216 7 = Mifare 4k S70 4-byte 20 = NTAG I2C 1K 8 = Mifare 4k S70 7-byte 21 = NTAG I2C 2K 9 = Mifare 4k S70 10-byte 22 = NTAG I2C 1K PLUS *** 10 = UL - NOT WORKING FULLY 23 = NTAG I2C 2K PLUS *** 11 = UL-C - NOT WORKING FULLY 24 = NTAG 213F 12 = UL EV1 48b 25 = NTAG 216F - 13 = UL EV1 128b - *** 14 = UL Plus - NOT WORKING YET + 13 = UL EV1 128b + *** 14 = UL Plus - NOT WORKING YET -p NTAG password (8 hexsymbols), set NTAG password on tag. -a NTAG pack ( 4 hexsymbols), set NTAG pack on tag. @@ -297,7 +297,7 @@ return true, 'Ok' end --- -- calculate block0 -local function calculate_block0(useruid) +local function calculate_block0(useruid) local uidbytes = utils.ConvertHexToBytes(useruid) local i = 1 local bcc = bxor(uidbytes[i], uidbytes[i+1]); diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index afadc9e78..3dee09d3b 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -349,13 +349,13 @@ static int mf_save_keys_from_arr(uint16_t n, uint8_t *d) { uint8_t sector = 0; for (uint16_t i = 0; i < n; i++) { if (mfIsSectorTrailer(i)) { - // key A offset in ST block - memcpy(keys + (MIFARE_KEY_SIZE * sector), d + (i * MFBLOCK_SIZE), MIFARE_KEY_SIZE); + // key A offset in ST block + memcpy(keys + (MIFARE_KEY_SIZE * sector), d + (i * MFBLOCK_SIZE), MIFARE_KEY_SIZE); - // key B offset in ST block - memcpy(keys + (MIFARE_KEY_SIZE * sectors) + (MIFARE_KEY_SIZE * sector), d + (i * MFBLOCK_SIZE) + 10, MIFARE_KEY_SIZE); + // key B offset in ST block + memcpy(keys + (MIFARE_KEY_SIZE * sectors) + (MIFARE_KEY_SIZE * sector), d + (i * MFBLOCK_SIZE) + 10, MIFARE_KEY_SIZE); - sector++; + sector++; } } @@ -484,7 +484,7 @@ static int mf_analyse_st_block(uint8_t blockno, uint8_t *block, bool force) { * @param numSectors: size of the card * @param keyFileName: filename containing keys or NULL. */ -static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t numSectors, char *keyfn){ +static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t numSectors, char *keyfn) { // Select card to get UID/UIDLEN/ATQA/SAK information clearCommandBuffer(); @@ -517,7 +517,7 @@ static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t n size_t alen = 0, blen = 0; uint8_t *keyA, *keyB; - if (loadFileBinaryKey(keyfn, "", (void**)&keyA, (void**)&keyB, &alen, &blen) != PM3_SUCCESS) { + if (loadFileBinaryKey(keyfn, "", (void **)&keyA, (void **)&keyB, &alen, &blen) != PM3_SUCCESS) { if (keyA) { free(keyA); } @@ -607,7 +607,7 @@ static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t n received = WaitForResponseTimeout(CMD_HF_MIFARE_READBL, &resp, 1500); } else { // data block. Check if it can be read with key A or key B - if ((rights[sectorNo][data_area] == 0x03) || (rights[sectorNo][data_area] == 0x05)) { + if ((rights[sectorNo][data_area] == 0x03) || (rights[sectorNo][data_area] == 0x05)) { // only key B would work payload.blockno = mfFirstBlockOfSector(sectorNo) + blockNo; payload.keytype = MF_KEY_B; @@ -617,7 +617,7 @@ static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t n SendCommandNG(CMD_HF_MIFARE_READBL, (uint8_t *)&payload, sizeof(mf_readblock_t)); received = WaitForResponseTimeout(CMD_HF_MIFARE_READBL, &resp, 1500); } else { - // key A would work + // key A would work payload.blockno = mfFirstBlockOfSector(sectorNo) + blockNo; payload.keytype = current_key; memcpy(payload.key, (current_key == MF_KEY_A) ? keyA + (sectorNo * MIFARE_KEY_SIZE) : keyB + (sectorNo * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); @@ -649,9 +649,9 @@ static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t n uint8_t *data = resp.data.asBytes; - if (mfIsSectorTrailer(blockNo)) { + if (mfIsSectorTrailer(blockNo)) { // sector trailer. Fill in the keys. - memcpy(data , keyA + (sectorNo * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); + memcpy(data, keyA + (sectorNo * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); memcpy(data + 10, keyB + (sectorNo * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); } @@ -1096,7 +1096,7 @@ static int CmdHF14AMfDump(const char *Cmd) { } else if (m2) { numSectors = MIFARE_2K_MAXSECTOR; bytes = MIFARE_2K_MAX_BYTES; - } else if (m4) { + } else if (m4) { numSectors = MIFARE_4K_MAXSECTOR; bytes = MIFARE_4K_MAX_BYTES; } else { @@ -1259,7 +1259,7 @@ static int CmdHF14AMfRestore(const char *Cmd) { // size_t alen = 0, blen = 0; uint8_t *keyA, *keyB; - if (loadFileBinaryKey(keyfilename, "", (void**)&keyA, (void**)&keyB, &alen, &blen) != PM3_SUCCESS) { + if (loadFileBinaryKey(keyfilename, "", (void **)&keyA, (void **)&keyB, &alen, &blen) != PM3_SUCCESS) { if (keyA) { free(keyA); } @@ -1354,7 +1354,7 @@ static int CmdHF14AMfRestore(const char *Cmd) { if (kt == MF_KEY_A) memcpy(wdata, keyA + (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); else - memcpy(wdata, keyB+ (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); + memcpy(wdata, keyB + (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); } else { // use default key to authenticate for the write command memcpy(wdata, default_key, MIFARE_KEY_SIZE); @@ -2518,16 +2518,16 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { sectorno = i; keytype = j; PrintAndLogEx(SUCCESS, "target sector %3u key type %c -- found valid key [ " _GREEN_("%s") " ] (used for nested / hardnested attack)", - i, - (j == MF_KEY_B) ? 'B' : 'A', - sprint_hex_inrow(key, sizeof(key)) - ); + i, + (j == MF_KEY_B) ? 'B' : 'A', + sprint_hex_inrow(key, sizeof(key)) + ); } else { PrintAndLogEx(SUCCESS, "target sector %3u key type %c -- found valid key [ " _GREEN_("%s") " ]", - i, - (j == MF_KEY_B) ? 'B' : 'A', - sprint_hex_inrow(key, sizeof(key)) - ); + i, + (j == MF_KEY_B) ? 'B' : 'A', + sprint_hex_inrow(key, sizeof(key)) + ); } ++num_found_keys; } @@ -2645,16 +2645,16 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { sectorno = i; keytype = j; PrintAndLogEx(SUCCESS, "target sector %3u key type %c -- found valid key [ " _GREEN_("%s") " ] (used for nested / hardnested attack)", - i, - (j == MF_KEY_B) ? 'B' : 'A', - sprint_hex_inrow(tmp_key, sizeof(tmp_key)) - ); + i, + (j == MF_KEY_B) ? 'B' : 'A', + sprint_hex_inrow(tmp_key, sizeof(tmp_key)) + ); } else { PrintAndLogEx(SUCCESS, "target sector %3u key type %c -- found valid key [ " _GREEN_("%s") " ]", - i, - (j == MF_KEY_B) ? 'B' : 'A', - sprint_hex_inrow(tmp_key, sizeof(tmp_key)) - ); + i, + (j == MF_KEY_B) ? 'B' : 'A', + sprint_hex_inrow(tmp_key, sizeof(tmp_key)) + ); } } } @@ -3839,7 +3839,7 @@ static int CmdHF14AMfSim(const char *Cmd) { if ((flags & FLAG_NR_AR_ATTACK) != FLAG_NR_AR_ATTACK) break; - + if ((resp.oldarg[0] & 0xffff) != CMD_HF_MIFARE_SIMULATE) break; @@ -3949,11 +3949,11 @@ void printKeyTableEx(size_t sectorscnt, sector_t *e_sector, uint8_t start_sector } PrintAndLogEx(SUCCESS, " " _YELLOW_("%03d") " | %03d | %s | %s | %s | %s" - , s - , mfSectorTrailerOfSector(s) - , strA, resA - , strB, resB - ); + , s + , mfSectorTrailerOfSector(s) + , strA, resA + , strB, resB + ); } PrintAndLogEx(SUCCESS, "-----+-----+--------------+---+--------------+----"); @@ -4424,7 +4424,7 @@ static int CmdHF14AMfEView(const char *Cmd) { arg_lit0(NULL, "2k", "MIFARE Classic/Plus 2k"), arg_lit0(NULL, "4k", "MIFARE Classic 4k / S70"), arg_lit0("v", "verbose", "verbose output"), - arg_lit0(NULL, "sk", "Save extracted keys to file"), + arg_lit0(NULL, "sk", "Save extracted keys to file"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -5901,7 +5901,7 @@ int CmdHFMFNDEFRead(const char *Cmd) { CLIParserFree(ctx); uint16_t ndef_aid = NDEF_MFC_AID; - if (aidlen == 2){ + if (aidlen == 2) { ndef_aid = (aid[0] << 8) + aid[1]; } @@ -6123,7 +6123,7 @@ int CmdHFMFNDEFFormat(const char *Cmd) { // size_t alen = 0, blen = 0; uint8_t *tmpA, *tmpB; - if (loadFileBinaryKey(keyFilename, "", (void**)&tmpA, (void**)&tmpB, &alen, &blen) != PM3_SUCCESS) { + if (loadFileBinaryKey(keyFilename, "", (void **)&tmpA, (void **)&tmpB, &alen, &blen) != PM3_SUCCESS) { if (tmpA) { free(tmpA); } @@ -6131,13 +6131,13 @@ int CmdHFMFNDEFFormat(const char *Cmd) { } PrintAndLogEx(INFO, "Using `" _YELLOW_("%s") "`", keyFilename); - - for (int i=0; i < numSectors; i++) { - memcpy(keyA[i], tmpA + (i *MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); - memcpy(keyB[i], tmpB + (i *MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); + + for (int i = 0; i < numSectors; i++) { + memcpy(keyA[i], tmpA + (i * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); + memcpy(keyB[i], tmpB + (i * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); } free(tmpA); - free(tmpB); + free(tmpB); } skipfile: @@ -6680,7 +6680,7 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { return PM3_EINVARG; } - #define SUPER_MAX_TRACES 7 +#define SUPER_MAX_TRACES 7 uint8_t trace = 0; uint8_t traces[SUPER_MAX_TRACES][16]; @@ -7056,7 +7056,7 @@ static int CmdHF14AMfView(const char *Cmd) { arg_param_begin, arg_str1("f", "file", "", "filename of dump"), arg_lit0("v", "verbose", "verbose output"), - arg_lit0(NULL, "sk", "Save extracted keys to file"), + arg_lit0(NULL, "sk", "Save extracted keys to file"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -7964,24 +7964,24 @@ static int CmdHF14AMfValue(const char *Cmd) { "hf mf value --blk 16 -k FFFFFFFFFFFF -b --get\n" "hf mf value --blk 16 -k FFFFFFFFFFFF --res --transfer 30 --tk FFFFFFFFFFFF --> transfer block 16 value to block 30 (even if block can't be incremented by ACL)\n" "hf mf value --get -d 87D612007829EDFF87D6120011EE11EE\n" - ); + ); void *argtable[] = { - arg_param_begin, - arg_str0("k", "key", "", "key, 6 hex bytes"), - arg_lit0("a", NULL, "input key type is key A (def)"), - arg_lit0("b", NULL, "input key type is key B"), - arg_u64_0(NULL, "inc", "", "Increment value by X (0 - 2147483647)"), - arg_u64_0(NULL, "dec", "", "Decrement value by X (0 - 2147483647)"), - arg_u64_0(NULL, "set", "", "Set value to X (-2147483647 - 2147483647)"), - arg_u64_0(NULL, "transfer", "", "Transfer value to other block (after inc/dec/restore)"), - arg_str0(NULL, "tkey", "", "transfer key, 6 hex bytes (if transfer is preformed to other sector)"), - arg_lit0(NULL, "ta", "transfer key type is key A (def)"), - arg_lit0(NULL, "tb", "transfer key type is key B"), - arg_lit0(NULL, "get", "Get value from block"), - arg_lit0(NULL, "res", "Restore (copy value to card buffer, should be used with --transfer)"), - arg_int0(NULL, "blk", "", "block number"), - arg_str0("d", "data", "", "block data to extract values from (16 hex bytes)"), - arg_param_end + arg_param_begin, + arg_str0("k", "key", "", "key, 6 hex bytes"), + arg_lit0("a", NULL, "input key type is key A (def)"), + arg_lit0("b", NULL, "input key type is key B"), + arg_u64_0(NULL, "inc", "", "Increment value by X (0 - 2147483647)"), + arg_u64_0(NULL, "dec", "", "Decrement value by X (0 - 2147483647)"), + arg_u64_0(NULL, "set", "", "Set value to X (-2147483647 - 2147483647)"), + arg_u64_0(NULL, "transfer", "", "Transfer value to other block (after inc/dec/restore)"), + arg_str0(NULL, "tkey", "", "transfer key, 6 hex bytes (if transfer is preformed to other sector)"), + arg_lit0(NULL, "ta", "transfer key type is key A (def)"), + arg_lit0(NULL, "tb", "transfer key type is key B"), + arg_lit0(NULL, "get", "Get value from block"), + arg_lit0(NULL, "res", "Restore (copy value to card buffer, should be used with --transfer)"), + arg_int0(NULL, "blk", "", "block number"), + arg_str0("d", "data", "", "block data to extract values from (16 hex bytes)"), + arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -8038,7 +8038,7 @@ static int CmdHF14AMfValue(const char *Cmd) { // Action: 0 Increment, 1 - Decrement, 2 - Restore, 3 - Set, 4 - Get, 5 - Decode from data // iceman: TODO - should be enum - uint8_t action = 4; + uint8_t action = 4; uint32_t value = 0; // Need to check we only have 1 of inc/dec/set and get the value from the selected option @@ -8109,10 +8109,10 @@ static int CmdHF14AMfValue(const char *Cmd) { } // don't want to write value data and break something - if ((blockno == 0) || - (mfIsSectorTrailer(blockno)) || - (trnval == 0) || - (trnval != -1 && mfIsSectorTrailer(trnval))) { + if ((blockno == 0) || + (mfIsSectorTrailer(blockno)) || + (trnval == 0) || + (trnval != -1 && mfIsSectorTrailer(trnval))) { PrintAndLogEx(WARNING, "invalid block number, should be a data block"); return PM3_EINVARG; } @@ -8130,7 +8130,7 @@ static int CmdHF14AMfValue(const char *Cmd) { memcpy(block, (uint8_t *)&value, 4); uint8_t cmddata[34]; - memcpy(cmddata, key, sizeof(key)); + memcpy(cmddata, key, sizeof(key)); // Key == 6 data went to 10, so lets offset 9 for inc/dec if (action == 0) { @@ -8141,13 +8141,13 @@ static int CmdHF14AMfValue(const char *Cmd) { } // 00 if increment, 01 if decrement, 02 if restore - cmddata[9] = action; - + cmddata[9] = action; + if (trnval != -1) { // transfer to block - cmddata[10] = trnval; - + cmddata[10] = trnval; + memcpy(cmddata + 27, transferkey, sizeof(transferkey)); if (mfSectorNum(trnval) != mfSectorNum(blockno)) { cmddata[33] = 1; // should send nested auth @@ -8200,7 +8200,7 @@ static int CmdHF14AMfValue(const char *Cmd) { if (isok) { PrintAndLogEx(SUCCESS, "Update ... : " _GREEN_("success")); - getval = true; + getval = true; // all ok so set flag to read current value } else { PrintAndLogEx(FAILED, "Update ... : " _RED_("failed")); diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index acbf32ea5..c885e41c9 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -510,7 +510,7 @@ static char failstr[250] = ""; #endif // the probability that a random nonce has a Sum Property K -static const float p_K0[NUM_SUMS] = { +static const float p_K0[NUM_SUMS] = { 0.0290, 0.0083, 0.0006, 0.0339, 0.0048, 0.0934, 0.0119, 0.0489, 0.0602, 0.4180, 0.0602, 0.0489, 0.0119, 0.0934, 0.0048, 0.0339, 0.0006, 0.0083, 0.0290 diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index b079e15c1..4f956d3af 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1006,7 +1006,7 @@ static int MFPKeyCheck(uint8_t startSector, uint8_t endSector, uint8_t startKeyA for (uint8_t keyAB = startKeyAB; keyAB <= endKeyAB; keyAB++) { // main cycle with key check for (int i = 0; i < keyListLen; i++) { - + // allow client abort every iteration if (kbd_enter_pressed()) { PrintAndLogEx(WARNING, "\naborted via keyboard!\n"); @@ -1052,14 +1052,14 @@ static int MFPKeyCheck(uint8_t startSector, uint8_t endSector, uint8_t startKeyA selectCard = true; msleep(50); - // break out from keylist check loop, + // break out from keylist check loop, break; } if (verbose) PrintAndLogEx(WARNING, "\nsector %02d key %d [%s] res: %d", sector, keyAB, sprint_hex_inrow(keyList[i], 16), res); - // RES can be: + // RES can be: // PM3_ERFTRANS -7 // PM3_EWRONGANSWER -16 if (res == PM3_ERFTRANS) { diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 23b8ac235..8cd28b842 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -338,7 +338,7 @@ static void printHitag2PaxtonDowngrade(const uint8_t *data) { bytes = (bytes * 0x100) + data[i]; } - for (int j = 0; j< 8; j++) { + for (int j = 0; j < 8; j++) { num = bytes & mask; skip -= 5; mask = mask >> 5; diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index 554658c9f..ffb90513b 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -4028,7 +4028,7 @@ static int CmdT55xxSniff(const char *Cmd) { if (use_graphbuf == false) { // make loop to call sniff with skip samples.. - // then build it up by adding + // then build it up by adding CmdLFSniff(""); } diff --git a/client/src/fileutils.c b/client/src/fileutils.c index d26470ed5..8fd06456e 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -316,9 +316,9 @@ int saveFileJSON(const char *preferredName, JSONFileType ftype, uint8_t *data, s int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, size_t datalen, bool verbose, void (*callback)(json_t *), savePaths_t e_save_path) { if (ftype != jsfCustom) { - if (data == NULL || datalen == 0) { - return PM3_EINVARG; - } + if (data == NULL || datalen == 0) { + return PM3_EINVARG; + } } char *fileName = newfilenamemcopyEx(preferredName, ".json", e_save_path); @@ -2032,8 +2032,8 @@ int searchFile(char **foundpath, const char *pm3dir, const char *searchname, con PrintAndLogEx(FAILED, "Error - can't find `" _YELLOW_("%s") "`", filename); } } - free(filename); - return res; + free(filename); + return res; } int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumplen) { @@ -2067,7 +2067,7 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl } case MCT: { res = loadFileMCT_safe(fn, pdump, dumplen); - break; + break; } } diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index 49d3de065..328c2e63c 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -424,8 +424,8 @@ int DetectHID(uint8_t *d, uint16_t manufacture) { int convert_mad_to_arr(uint8_t *in, uint16_t ilen, uint8_t *out, uint16_t *olen) { - if (in == NULL || out == NULL || ilen == 0 ) { - return PM3_EINVARG; + if (in == NULL || out == NULL || ilen == 0) { + return PM3_EINVARG; } // MAD detection @@ -464,8 +464,8 @@ int convert_mad_to_arr(uint8_t *in, uint16_t ilen, uint8_t *out, uint16_t *olen) // copy to out (skip ST) memcpy(out, tmp, sizeof(tmp) - MFBLOCK_SIZE); out += sizeof(tmp) - MFBLOCK_SIZE; - *olen += sizeof(tmp) -MFBLOCK_SIZE; + *olen += sizeof(tmp) - MFBLOCK_SIZE; } } return PM3_SUCCESS; -} \ No newline at end of file +} diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index 311615c2a..09ff31945 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -313,7 +313,7 @@ static int ndefDecodeSig1(uint8_t *sig, size_t siglen) { if (sigType == stECDSA_P256) { slen = 32; } - + PrintAndLogEx(SUCCESS, "\tSignature [%u]...", intsiglen); print_hex_noascii_break(&sig[indx], intsiglen, 32); @@ -508,7 +508,7 @@ static int ndefDecodePayloadHandoverRequest(uint8_t *payload, size_t len) { PrintAndLogEx(INFO, _CYAN_("Handover Request")); uint8_t *p = payload; uint8_t major = (*(p) >> 4) & 0x0F; - uint8_t minor = *(p) & 0x0F; + uint8_t minor = *(p) & 0x0F; p++; PrintAndLogEx(INFO, "Version....... " _YELLOW_("%u.%u"), major, minor); @@ -866,7 +866,7 @@ static int ndefDecodeMime_bt(NDEFHeader_t *ndef) { uint8_t rev[6] = {0}; reverse_array_copy(ndef->Payload + 2, 6, rev); PrintAndLogEx(INFO, "BT MAC.......... " _YELLOW_("%s"), sprint_hex(rev, sizeof(rev))); - + // Let's check payload[8]. Tells us a bit about the UUID's. If 0x07 then it tells us a service UUID is 128bit switch (ndef->Payload[8]) { case 0x02: @@ -903,29 +903,29 @@ static int ndefDecodeMime_bt(NDEFHeader_t *ndef) { return PM3_SUCCESS; } -// https://raw.githubusercontent.com/haldean/ndef/master/docs/NFCForum-TS-RTD_1.0.pdf +// https://raw.githubusercontent.com/haldean/ndef/master/docs/NFCForum-TS-RTD_1.0.pdf static int ndefDecodeExternal_record(NDEFHeader_t *ndef) { - + if (ndef->TypeLen == 0) { PrintAndLogEx(INFO, "no type"); return PM3_SUCCESS; } - + if (ndef->PayloadLen == 0) { PrintAndLogEx(INFO, "no payload"); return PM3_SUCCESS; } PrintAndLogEx(INFO - , " URN... " _GREEN_("urn:nfc:ext:%.*s") - , (int)ndef->TypeLen - , ndef->Type - ); + , " URN... " _GREEN_("urn:nfc:ext:%.*s") + , (int)ndef->TypeLen + , ndef->Type + ); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "Payload [%zu]...", ndef->PayloadLen); print_hex_noascii_break(ndef->Payload, ndef->PayloadLen, 32); - + // do a character check? if (!strncmp((char *)ndef->Type, "pilet.ee:ekaart:2", ndef->TypeLen)) { PrintAndLogEx(NORMAL, ""); diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index e6d6dc438..ffe9c66ff 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -360,7 +360,8 @@ const static vocabulory_t vocabulory[] = { { 0, "hf mf gsave" }, { 0, "hf mf gsetblk" }, { 0, "hf mf gview" }, - { 0, "hf mf gdmconfig" }, + { 0, "hf mf gdmcfg" }, + { 0, "hf mf gdmsetcfg" }, { 0, "hf mf gdmsetblk" }, { 0, "hf mf ndefformat" }, { 0, "hf mf ndefread" }, diff --git a/client/update_amiibo_tools_lua.py b/client/update_amiibo_tools_lua.py index 873a6e18d..8a31b9d60 100644 --- a/client/update_amiibo_tools_lua.py +++ b/client/update_amiibo_tools_lua.py @@ -8,15 +8,15 @@ Author: Cory Solovewicz Description: This is a python script to automate what the updating of the amiibo_tools.lua -file which holds a lua table of all known amiibos. Previously updating the +file which holds a lua table of all known amiibos. Previously updating the amiibo_tools.lua was a very manual process. -This script automates the following original command: +This script automates the following original command: curl https://raw.githubusercontent.com/N3evin/AmiiboAPI/master/database/amiibo.json | jq 'del(.amiibos[].release)' | jq 'del(.characters)' | pbcopy --> transform to table -And outputs the formatted file as amiibo_tools.lua -If everything goes well, this should be an updated copy of amiibo_tools.lua -which can then be placed in the /lualibs/ directory. -The temporary amiibo.json file is then deleted +And outputs the formatted file as amiibo_tools.lua +If everything goes well, this should be an updated copy of amiibo_tools.lua +which can then be placed in the /lualibs/ directory. +The temporary amiibo.json file is then deleted Dependencies: python3 -m pip install jq @@ -25,7 +25,7 @@ How to run: python update_amiibo_tools_lua.py The script will create the file amiibo_tools.lua -After running, manually backup the original /lualibs/amiibo_tools.lua and move the +After running, manually backup the original /lualibs/amiibo_tools.lua and move the updated amiibo_tools.lua to the /lualibs/ directory. ----------------------------------------------------------------------------- """ diff --git a/doc/commands.json b/doc/commands.json index f8712fc47..70b10c521 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -1354,9 +1354,10 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file (optional) filename, if no UID will be used as filename" + "-f, --file (optional) filename, if no UID will be used as filename", + "--ns no save to file" ], - "usage": "hf 14b dump [-h] [-f ]" + "usage": "hf 14b dump [-h] [-f ] [--ns]" }, "hf 14b help": { "command": "hf 14b help", @@ -4218,9 +4219,10 @@ "--mini MIFARE Classic Mini / S20", "--1k MIFARE Classic 1k / S50 (def)", "--2k MIFARE Classic/Plus 2k", - "--4k MIFARE Classic 4k / S70" + "--4k MIFARE Classic 4k / S70", + "--ns no save to file" ], - "usage": "hf mf dump [-h] [-f ] [-k ] [--mini] [--1k] [--2k] [--4k]" + "usage": "hf mf dump [-h] [-f ] [-k ] [--mini] [--1k] [--2k] [--4k] [--ns]" }, "hf mf ecfill": { "command": "hf mf ecfill", @@ -4368,9 +4370,10 @@ "--1k MIFARE Classic 1k / S50 (def)", "--2k MIFARE Classic/Plus 2k", "--4k MIFARE Classic 4k / S70", - "-v, --verbose verbose output" + "-v, --verbose verbose output", + "--sk Save extracted keys to file" ], - "usage": "hf mf eview [-hv] [--mini] [--1k] [--2k] [--4k]" + "usage": "hf mf eview [-hv] [--mini] [--1k] [--2k] [--4k] [--sk]" }, "hf mf fchk": { "command": "hf mf fchk", @@ -4400,18 +4403,18 @@ ], "usage": "hf mf fchk [-h] [-k ]... [--mini] [--1k] [--2k] [--4k] [--emu] [--dump] [--mem] [-f ]" }, - "hf mf gdmconfig": { - "command": "hf mf gdmconfig", + "hf mf gdmcfg": { + "command": "hf mf gdmcfg", "description": "Get configuration data from magic gen4 GDM card.", "notes": [ - "hf mf gdmconfig" + "hf mf gdmcfg" ], "offline": false, "options": [ "-h, --help This help", "-k, --key key 6 bytes" ], - "usage": "hf mf gdmconfig [-h] [-k ]" + "usage": "hf mf gdmcfg [-h] [-k ]" }, "hf mf gdmsetblk": { "command": "hf mf gdmsetblk", @@ -4431,6 +4434,19 @@ ], "usage": "hf mf gdmsetblk [-hab] --blk [-d ] [-k ] [--force]" }, + "hf mf gdmsetcfg": { + "command": "hf mf gdmsetcfg", + "description": "Set configuration data on a magic gen4 GDM card", + "notes": [ + "hf mf gdmsetcfg -d 850000000000000000005A5A00000008" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-d, --data bytes to write, 16 hex bytes" + ], + "usage": "hf mf gdmsetcfg [-h] -d " + }, "hf mf gen3blk": { "command": "hf mf gen3blk", "description": "Overwrite full manufacturer block for magic Gen3 card - You can specify part of manufacturer block as 4/7-bytes for UID change only", @@ -4902,6 +4918,7 @@ "hf mf value --blk 16 -k FFFFFFFFFFFF --inc 10", "hf mf value --blk 16 -k FFFFFFFFFFFF -b --dec 10", "hf mf value --blk 16 -k FFFFFFFFFFFF -b --get", + "hf mf value --blk 16 -k FFFFFFFFFFFF --res --transfer 30 --tk FFFFFFFFFFFF -> transfer block 16 value to block 30 (even if block can't be incremented by ACL)", "hf mf value --get -d 87D612007829EDFF87D6120011EE11EE" ], "offline": true, @@ -4910,14 +4927,19 @@ "-k, --key key, 6 hex bytes", "-a input key type is key A (def)", "-b input key type is key B", - "--inc Incremenet value by X (0 - 2147483647)", - "--dec Dcrement value by X (0 - 2147483647)", + "--inc Increment value by X (0 - 2147483647)", + "--dec Decrement value by X (0 - 2147483647)", "--set Set value to X (-2147483647 - 2147483647)", + "--transfer Transfer value to other block (after inc/dec/restore)", + "--tkey transfer key, 6 hex bytes (if transfer is preformed to other sector)", + "--ta transfer key type is key A (def)", + "--tb transfer key type is key B", "--get Get value from block", + "--res Restore (copy value to card buffer, should be used with --transfer)", "--blk block number", "-d, --data block data to extract values from (16 hex bytes)" ], - "usage": "hf mf value [-hab] [-k ] [--inc ] [--dec ] [--set ] [--get] [--blk ] [-d ]" + "usage": "hf mf value [-hab] [-k ] [--inc ] [--dec ] [--set ] [--transfer ] [--tkey ] [--ta] [--tb] [--get] [--res] [--blk ] [-d ]" }, "hf mf view": { "command": "hf mf view", @@ -4929,9 +4951,10 @@ "options": [ "-h, --help This help", "-f, --file filename of dump", - "-v, --verbose verbose output" + "-v, --verbose verbose output", + "--sk Save extracted keys to file" ], - "usage": "hf mf view [-hv] -f " + "usage": "hf mf view [-hv] -f [--sk]" }, "hf mf wipe": { "command": "hf mf wipe", @@ -6146,7 +6169,7 @@ }, "hf mfp commitp": { "command": "hf mfp commitp", - "description": "Executes Commit Perso command. Can be used in SL0 mode only.", + "description": "Executes Commit Perso command. Can be used in SL0 mode only. OBS! This command will not be executed if CardConfigKey, CardMasterKey and L3SwitchKey AES keys are not written.", "notes": [ "hf mfp commitp" ], @@ -6246,9 +6269,9 @@ "-b, --keyb Use key B (def: keyA)", "-p, --plain Plain communication mode between reader and card", "--blk <0..255> Block number", - "--key Key, 16 hex bytes" + "-k, --key Key, 16 hex bytes" ], - "usage": "hf mfp rdbl [-hvbp] [-n ] --blk <0..255> [--key ]" + "usage": "hf mfp rdbl [-hvbp] [-n ] --blk <0..255> [-k ]" }, "hf mfp rdsc": { "command": "hf mfp rdsc", @@ -6335,9 +6358,10 @@ "-k, --key Key for authentication (UL-C 16 bytes, EV1/NTAG 4 bytes)", "-l Swap entered key's endianness", "-p, --page Manually set start page number to start from", - "-q, --qty Manually set number of pages to dump" + "-q, --qty Manually set number of pages to dump", + "--ns no save to file" ], - "usage": "hf mfu dump [-hl] [-f ] [-k ] [-p ] [-q ]" + "usage": "hf mfu dump [-hl] [-f ] [-k ] [-p ] [-q ] [--ns]" }, "hf mfu eload": { "command": "hf mfu eload", @@ -6565,7 +6589,7 @@ }, "hf mfu tamper": { "command": "hf mfu tamper", - "description": "Set the congiguration of the NTAG 213TT tamper feature Supports: NTAG 213TT", + "description": "Set the configuration of the NTAG 213TT tamper feature Supports: NTAG 213TT", "notes": [ "hf mfu tamper -e -> enable tamper feature", "hf mfu tamper -d -> disable tamper feature", @@ -8039,15 +8063,19 @@ "command": "lf em 4x50 brute", "description": "Tries to bruteforce the password of a EM4x50 card. Function can be stopped by pressing pm3 button.", "notes": [ - "lf em 4x50 brute --first 12330000 --last 12340000 -> tries pwds from 0x12330000 to 0x1234000000" + "lf em 4x50 brute --mode range --begin 12330000 --end 12340000 -> tries pwds from 0x12330000 to 0x12340000", + "lf em 4x50 brute --mode charset --digits --uppercase -> tries all combinations of ASCII codes for digits and uppercase letters" ], "offline": false, "options": [ "-h, --help This help", - "--first first password (start), 4 bytes, lsb", - "--last last password (stop), 4 bytes, lsb" + "--mode Bruteforce mode (range|charset)", + "--begin Range mode - start of the key range", + "--end Range mode - end of the key range", + "--digits Charset mode - include ASCII codes for digits", + "--uppercase Charset mode - include ASCII codes for uppercase letters" ], - "usage": "lf em 4x50 brute [-h] --first --last " + "usage": "lf em 4x50 brute [-h] --mode [--begin ] [--end ] [--digits] [--uppercase]" }, "lf em 4x50 chk": { "command": "lf em 4x50 chk", @@ -10199,12 +10227,13 @@ "-f, --file filename (default is generated on blk 0)", "-o, --override override, force pwd read despite danger to card", "-p, --pwd password (4 hex bytes)", + "--ns no save", "--r0 downlink - fixed bit length", "--r1 downlink - long leading reference", "--r2 downlink - leading zero", "--r3 downlink - 1 of 4 coding reference" ], - "usage": "lf t55xx dump [-ho] [-f ] [-p ] [--r0] [--r1] [--r2] [--r3]" + "usage": "lf t55xx dump [-ho] [-f ] [-p ] [--ns] [--r0] [--r1] [--r2] [--r3]" }, "lf t55xx help": { "command": "lf t55xx help", @@ -10867,7 +10896,7 @@ "options": [ "-h, --help This help", "-f, --file SPIFFS file to view", - "-c, --cols column breaks (def 32)" + "-c, --cols column breaks (def 16)" ], "usage": "mem spiffs view [-h] -f [-c ]" }, @@ -11592,7 +11621,7 @@ }, "script help": { "command": "script help", - "description": "This is a feature to run Lua/Cmd/Python scripts. You can place scripts within the luascripts/cmdscripts/pyscripts folders. --------------------------------------------------------------------------------------- script list available offline: yes", + "description": "This is a feature to run Lua/Cmd scripts. You can place scripts within the luascripts/cmdscripts folders. --------------------------------------------------------------------------------------- script list available offline: yes", "notes": [], "offline": true, "options": [], @@ -11987,8 +12016,8 @@ } }, "metadata": { - "commands_extracted": 754, + "commands_extracted": 755, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-03-26T15:04:49" + "extracted_on": "2023-06-02T08:44:26" } -} +} \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 487cea0c9..938413fa8 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -523,7 +523,8 @@ Check column "offline" for their availability. |`hf mf gsave `|N |`Save dump from card into file or emulator` |`hf mf gsetblk `|N |`Write block to card` |`hf mf gview `|N |`View card` -|`hf mf gdmconfig `|N |`Read config block from card` +|`hf mf gdmcfg `|N |`Read config block from card` +|`hf mf gdmsetcfg `|N |`Write config block to card` |`hf mf gdmsetblk `|N |`Write block to card` |`hf mf ndefformat `|N |`Format MIFARE Classic Tag as NFC Tag` |`hf mf ndefread `|N |`Read and print NDEF records from card` @@ -568,7 +569,7 @@ Check column "offline" for their availability. |`hf mfu restore `|N |`Restore a dump onto a MFU MAGIC tag` |`hf mfu view `|Y |`Display content from tag dump file` |`hf mfu wrbl `|N |`Write block` -|`hf mfu tamper `|N |`Cofigure the tamper feature on an NTAG 213TT` +|`hf mfu tamper `|N |`Configure the tamper feature on an NTAG 213TT` |`hf mfu eload `|N |`Load Ultralight dump file into emulator memory` |`hf mfu esave `|N |`Save Ultralight dump file from emulator memory` |`hf mfu eview `|N |`View emulator memory` @@ -874,7 +875,7 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`lf em 4x50 help `|Y |`This help` -|`lf em 4x50 brute `|N |`Simple bruteforce attack to find password` +|`lf em 4x50 brute `|N |`Bruteforce attack to find password` |`lf em 4x50 chk `|N |`Check passwords from dictionary` |`lf em 4x50 dump `|N |`Dump EM4x50 tag` |`lf em 4x50 info `|N |`Tag information` From dc1a0936da34c8d004819ee307f1e97f28dc750a Mon Sep 17 00:00:00 2001 From: Angel Date: Sun, 4 Jun 2023 11:38:13 -0400 Subject: [PATCH 0033/1034] Re-added old checksum under command parameter for demod and read. --- client/src/cmdlf.c | 2 +- client/src/cmdlfparadox.c | 48 +++++++++++++++++++++++++++++++++------ client/src/cmdlfparadox.h | 2 +- doc/commands.json | 23 +++++++++++-------- 4 files changed, 56 insertions(+), 19 deletions(-) diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 848f6cab0..e6585d334 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -1680,7 +1680,7 @@ int CmdLFfind(const char *Cmd) { goto out; } } - if (demodParadox(true) == PM3_SUCCESS) { + if (demodParadox(true, false) == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Paradox ID") " found!"); if (search_cont) { found++; diff --git a/client/src/cmdlfparadox.c b/client/src/cmdlfparadox.c index 650a8c5c4..d750efa51 100644 --- a/client/src/cmdlfparadox.c +++ b/client/src/cmdlfparadox.c @@ -35,6 +35,13 @@ #include "cliparser.h" static int CmdHelp(const char *Cmd); + +static const uint8_t paradox_lut[] = { + 0xDB, 0xFC, 0x3F, 0xC5, 0x50, 0x14, 0x05, 0x47, + 0x9F, 0xED, 0x7D, 0x59, 0x22, 0x84, 0x21, 0x4E, + 0x39, 0x48, 0x12, 0x88, 0x53, 0xDE, 0xBB, 0xE4, + 0xB4, 0x2D, 0x4D, 0x55, 0xCA, 0xBE, 0xA3, 0xE2 +}; // FC:108, Card01827 // 00000000 01101100 00000111 00100011 // hex(0xED xor 0x7D xor 0x22 xor 0x84 xor 0xDE xor 0xBB xor 0xE4 xor 0x4D xor 0xA3 xor 0xE2 xor 0x47) 0xFC @@ -93,7 +100,7 @@ static uint8_t GetParadoxBits(const uint32_t fc, const uint32_t cn, unsigned int return crc; } -int demodParadox(bool verbose) { +int demodParadox(bool verbose, bool oldChksum) { (void) verbose; // unused so far //raw fsk demod no manchester decoding no start bit finding just get binary from wave uint8_t bits[MAX_GRAPH_TRACE_LEN] = {0}; @@ -174,7 +181,29 @@ int demodParadox(bool verbose) { uint32_t fc = ((hi & 0x3) << 6) | (lo >> 26); uint32_t cardnum = (lo >> 10) & 0xFFFF; uint8_t chksum = (lo >> 2) & 0xFF; + if (oldChksum) { + // Calc CRC & Checksum + // 000088f0b - FC: 8 - Card: 36619 - Checksum: 05 - RAW: 0f55555559595aa559a5566a + // checksum? + uint8_t calc_chksum = 0x47; + uint8_t pos = 0; + for (uint8_t i = 0; i < 8; i++) { + uint8_t ice = rawhex[i + 1]; + for (uint8_t j = 0x80; j > 0; j >>= 2) { + + if (ice & j) { + calc_chksum ^= paradox_lut[pos]; + } + pos++; + } + } + uint32_t crc = CRC8Maxim(rawhex + 1, 8); + PrintAndLogEx(INFO, " FSK/MAN raw : %s", sprint_hex(rawhex, sizeof(rawhex))); + PrintAndLogEx(INFO, " raw : %s = (maxim crc8) %02x == %02x", sprint_hex(rawhex + 1, 8), crc, + calc_chksum); + // PrintAndLogEx(DEBUG, " OTHER sample CRC-8/MAXIM : 55 55 69 A5 55 6A 59 5A = FC"); + } uint32_t rawLo = bytebits_to_byte(bits + idx + 64, 32); uint32_t rawHi = bytebits_to_byte(bits + idx + 32, 32); uint32_t rawHi2 = bytebits_to_byte(bits + idx, 32); @@ -208,32 +237,37 @@ static int CmdParadoxDemod(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf paradox demod", "Try to find Paradox preamble, if found decode / descramble data", - "lf paradox demod" + "lf paradox demod --old -> Display previous checksum version" ); void *argtable[] = { arg_param_begin, + arg_lit0(NULL, "old", "optional - Display previous checksum version"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); + bool old = arg_get_lit(ctx, 1); CLIParserFree(ctx); - return demodParadox(true); + return demodParadox(true, old); } static int CmdParadoxReader(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf paradox reader", "read a Paradox tag", - "lf Paradox reader -@ -> continuous reader mode" + "lf paradox reader -@ -> continuous reader mode\n" + "lf paradox reader --old -> Display previous checksum version" ); void *argtable[] = { arg_param_begin, arg_lit0("@", NULL, "optional - continuous reader mode"), + arg_lit0(NULL, "old", "optional - Display previous checksum version"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); bool cm = arg_get_lit(ctx, 1); + bool old = arg_get_lit(ctx, 2); CLIParserFree(ctx); if (cm) { @@ -242,7 +276,7 @@ static int CmdParadoxReader(const char *Cmd) { do { lf_read(false, 10000); - demodParadox(!cm); + demodParadox(!cm, old); } while (cm && !kbd_enter_pressed()); return PM3_SUCCESS; @@ -253,7 +287,7 @@ static int CmdParadoxClone(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf paradox clone", "clone a paradox tag to a T55x7, Q5/T5555 or EM4305/4469 tag.", - "lf paradox clone --fc 96 --cn 40426 [--q5|--em] -> encode for T55x7 tag with fc and cn\n" + "lf paradox clone --fc 96 --cn 40426 -> encode for T55x7 tag with fc and cn\n" "lf paradox clone --raw 0f55555695596a6a9999a59a -> encode for T55x7 tag\n" "lf paradox clone --raw 0f55555695596a6a9999a59a --q5 -> encode for Q5/T5555 tag\n" "lf paradox clone --raw 0f55555695596a6a9999a59a --em -> encode for EM4305/4469" @@ -353,7 +387,7 @@ static int CmdParadoxSim(const char *Cmd) { "Enables simulation of paradox card with specified card number.\n" "Simulation runs until the button is pressed or another USB command is issued.", "lf paradox sim --raw 0f55555695596a6a9999a59a -> simulate tag\n" - "lf paradox clone --fc 96 --cn 40426 -> simulate tag with fc and cn\n" + "lf paradox sim --fc 96 --cn 40426 -> simulate tag with fc and cn\n" ); void *argtable[] = { diff --git a/client/src/cmdlfparadox.h b/client/src/cmdlfparadox.h index 010f08301..142ee19a7 100644 --- a/client/src/cmdlfparadox.h +++ b/client/src/cmdlfparadox.h @@ -22,6 +22,6 @@ int CmdLFParadox(const char *Cmd); -int demodParadox(bool verbose); +int demodParadox(bool verbose, bool oldChksum); int detectParadox(uint8_t *dest, size_t *size, int *wave_start_idx); #endif diff --git a/doc/commands.json b/doc/commands.json index 4e8f0fd90..5fc6d2285 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -9632,7 +9632,7 @@ "command": "lf paradox clone", "description": "clone a paradox tag to a T55x7, Q5/T5555 or EM4305/4469 tag.", "notes": [ - "lf paradox clone --fc 96 --cn 40426 [--q5|--em] -> encode for T55x7 tag with fc and cn", + "lf paradox clone --fc 96 --cn 40426 -> encode for T55x7 tag with fc and cn", "lf paradox clone --raw 0f55555695596a6a9999a59a -> encode for T55x7 tag", "lf paradox clone --raw 0f55555695596a6a9999a59a --q5 -> encode for Q5/T5555 tag", "lf paradox clone --raw 0f55555695596a6a9999a59a --em -> encode for EM4305/4469" @@ -9652,13 +9652,14 @@ "command": "lf paradox demod", "description": "Try to find Paradox preamble, if found decode / descramble data", "notes": [ - "lf paradox demod" + "lf paradox demod --old -> Display previous checksum version" ], "offline": true, "options": [ - "-h, --help This help" + "-h, --help This help", + "--old optional - Display previous checksum version" ], - "usage": "lf paradox demod [-h]" + "usage": "lf paradox demod [-h] [--old]" }, "lf paradox help": { "command": "lf paradox help", @@ -9672,21 +9673,23 @@ "command": "lf paradox reader", "description": "read a Paradox tag", "notes": [ - "lf Paradox reader -@ -> continuous reader mode" + "lf paradox reader -@ -> continuous reader mode", + "lf paradox reader --old -> Display previous checksum version" ], "offline": false, "options": [ "-h, --help This help", - "-@ optional - continuous reader mode" + "-@ optional - continuous reader mode", + "--old optional - Display previous checksum version" ], - "usage": "lf paradox reader [-h@]" + "usage": "lf paradox reader [-h@] [--old]" }, "lf paradox sim": { "command": "lf paradox sim", "description": "Enables simulation of paradox card with specified card number. Simulation runs until the button is pressed or another USB command is issued.", "notes": [ "lf paradox sim --raw 0f55555695596a6a9999a59a -> simulate tag", - "lf paradox clone --fc 96 --cn 40426 -> simulate tag with fc and cn" + "lf paradox sim --fc 96 --cn 40426 -> simulate tag with fc and cn" ], "offline": false, "options": [ @@ -11618,7 +11621,7 @@ }, "script help": { "command": "script help", - "description": "This is a feature to run Lua/Cmd/Python scripts. You can place scripts within the luascripts/cmdscripts/pyscripts folders. --------------------------------------------------------------------------------------- script list available offline: yes", + "description": "This is a feature to run Lua/Cmd scripts. You can place scripts within the luascripts/cmdscripts folders. --------------------------------------------------------------------------------------- script list available offline: yes", "notes": [], "offline": true, "options": [], @@ -12015,6 +12018,6 @@ "metadata": { "commands_extracted": 755, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-05-25T01:54:13" + "extracted_on": "2023-06-04T15:36:56" } } \ No newline at end of file From d5f820228479fa4ef482e98ebac10da95fb7a3f5 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 10 Jun 2023 12:03:39 +0200 Subject: [PATCH 0034/1034] textual --- client/src/nfc/ndef.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index 09ff31945..40cfe7113 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -1075,10 +1075,11 @@ static int ndefRecordDecodeAndPrint(uint8_t *ndefRecord, size_t ndefRecordLen, b return res; ndefPrintHeader(&NDEFHeader, verbose); - PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, _CYAN_("Payload info")); if (verbose) { + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, _CYAN_("Payload info")); + if (NDEFHeader.TypeLen) { PrintAndLogEx(INFO, "Type data"); print_buffer(NDEFHeader.Type, NDEFHeader.TypeLen, 1); @@ -1229,7 +1230,9 @@ int NDEFDecodeAndPrint(uint8_t *ndef, size_t ndefLen, bool verbose) { break; } case 0xFE: { - PrintAndLogEx(SUCCESS, "NDEF Terminator detected"); + if (verbose) { + PrintAndLogEx(SUCCESS, "NDEF Terminator detected"); + } return PM3_SUCCESS; } default: { From f1d78c4e7c1675325a58eefbb5be4f20f1f06110 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 10 Jun 2023 12:17:56 +0200 Subject: [PATCH 0035/1034] new crc16 option used with Philips toothbrushes. different init value 0x49a3. Should be reported to the CRC catalog https://reveng.sourceforge.io/crc-catalogue/16.htm --- common/crc16.c | 23 ++++++++++++++--------- common/crc16.h | 4 ++++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/common/crc16.c b/common/crc16.c index f78fab5b4..d402977b9 100644 --- a/common/crc16.c +++ b/common/crc16.c @@ -42,10 +42,14 @@ void init_table(CrcType_t crctype) { case CRC_15693: case CRC_ICLASS: case CRC_CRYPTORF: + case CRC_KERMIT: generate_table(CRC16_POLY_CCITT, true); break; case CRC_FELICA: case CRC_XMODEM: + case CRC_CCITT: + case CRC_11784: + case CRC_PHILIPS: generate_table(CRC16_POLY_CCITT, false); break; case CRC_LEGIC: @@ -54,15 +58,6 @@ void init_table(CrcType_t crctype) { case CRC_LEGIC_16: generate_table(CRC16_POLY_LEGIC_16, true); break; - case CRC_CCITT: - generate_table(CRC16_POLY_CCITT, false); - break; - case CRC_KERMIT: - generate_table(CRC16_POLY_CCITT, true); - break; - case CRC_11784: - generate_table(CRC16_POLY_CCITT, false); - break; case CRC_NONE: crc_table_init = false; current_crc_type = CRC_NONE; @@ -210,6 +205,9 @@ void compute_crc(CrcType_t ct, const uint8_t *d, size_t n, uint8_t *first, uint8 case CRC_LEGIC_16: // TODO return; + case CRC_PHILIPS: + crc = crc16_philips(d, n); + break; case CRC_NONE: return; } @@ -244,6 +242,8 @@ uint16_t Crc16ex(CrcType_t ct, const uint8_t *d, size_t n) { case CRC_LEGIC_16: // TODO return 0; + case CRC_PHILIPS: + return crc16_philips(d, n); case CRC_NONE: default: break; @@ -290,6 +290,8 @@ bool check_crc(CrcType_t ct, const uint8_t *d, size_t n) { case CRC_LEGIC_16: // TODO return false; + case CRC_PHILIPS: + return (crc16_philips(d, n) == 0); case CRC_NONE: default: break; @@ -350,3 +352,6 @@ uint16_t crc16_legic(uint8_t const *d, size_t n, uint8_t uidcrc) { return crc16_fast(d, n, initial, true, false); } +uint16_t crc16_philips(uint8_t const *d, size_t n) { + return crc16_fast(d, n, 0x49A3, false, false); +} \ No newline at end of file diff --git a/common/crc16.h b/common/crc16.h index d9631c43c..80758d95b 100644 --- a/common/crc16.h +++ b/common/crc16.h @@ -42,6 +42,7 @@ typedef enum { CRC_KERMIT, CRC_XMODEM, CRC_CRYPTORF, + CRC_PHILIPS, } CrcType_t; uint16_t update_crc16_ex(uint16_t crc, uint8_t c, uint16_t polynomial); @@ -78,6 +79,9 @@ uint16_t crc16_iclass(uint8_t const *d, size_t n); // ie: uidcrc = 0x78 then initial_value == 0x7878 uint16_t crc16_legic(uint8_t const *d, size_t n, uint8_t uidcrc); +// Calculate CRC-16/ Philips. +uint16_t crc16_philips(uint8_t const *d, size_t n); + // table implementation void init_table(CrcType_t crctype); void reset_table(void); From dfc338c384fab4f3578b2181bedf9da388626ff9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 11 Jun 2023 20:04:26 +0200 Subject: [PATCH 0036/1034] philips pwd/pack gen algo --- common/generator.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/common/generator.c b/common/generator.c index 852ea2b61..a83935780 100644 --- a/common/generator.c +++ b/common/generator.c @@ -195,6 +195,20 @@ uint32_t ul_ev1_pwdgenF(const uint8_t *uid) { return pwd; } +// Solution from @atc1441 +// https://gist.github.com/atc1441/41af75048e4c22af1f5f0d4c1d94bb56 +// Philips Sonicare toothbrush NFC head +uint32_t ul_ev1_pwdgenG(const uint8_t *uid, const uint8_t *mfg) { + + init_table(CRC_PHILIPS); + // UID + uint32_t crc1 = crc16_philips(uid, 7); + // MFG string + uint32_t crc2 = crc16_fast(mfg, 10, crc1, false, false); + + return (BSWAP_16(crc2) << 16 | BSWAP_16(crc1)); +} + // pack generation for algo 1-3 uint16_t ul_ev1_packgenA(const uint8_t *uid) { uint16_t pack = (uid[0] ^ uid[1] ^ uid[2]) << 8 | (uid[2] ^ 8); @@ -224,13 +238,26 @@ uint16_t ul_ev1_packgenD(const uint8_t *uid) { p ^= 0x5555; return BSWAP_16(p & 0xFFFF); } - uint16_t ul_ev1_packgenE(const uint8_t *uid) { uint32_t pwd = ul_ev1_pwdgenE(uid); return (0xAD << 8 | ((pwd >> 24) & 0xFF)); } +uint16_t ul_ev1_packgenG(const uint8_t *uid, const uint8_t *mfg) { + init_table(CRC_PHILIPS); + // UID + uint32_t crc1 = crc16_philips(uid, 7); + // MFG string + uint32_t crc2 = crc16_fast(mfg, 10, crc1, false, false); + // PWD + uint32_t pwd = (BSWAP_16(crc2) << 16 | BSWAP_16(crc1)); + + uint8_t pb[4]; + num_to_bytes(pwd, 4, pb); + return BSWAP_16(crc16_fast(pb, 4, crc2, false, false)); +} + // default shims uint32_t ul_ev1_pwdgen_def(const uint8_t *uid) { From 5df82c537c4172432ebfeda28e32312fe291d39a Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 11 Jun 2023 21:33:04 +0200 Subject: [PATCH 0037/1034] missed one file --- common/generator.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/generator.h b/common/generator.h index 1008d01fa..ce2601f26 100644 --- a/common/generator.h +++ b/common/generator.h @@ -28,6 +28,7 @@ uint32_t ul_ev1_pwdgenC(const uint8_t *uid); uint32_t ul_ev1_pwdgenD(const uint8_t *uid); uint32_t ul_ev1_pwdgenE(const uint8_t *uid); uint32_t ul_ev1_pwdgenF(const uint8_t *uid); +uint32_t ul_ev1_pwdgenG(const uint8_t *uid, const uint8_t *mfg); uint16_t ul_ev1_packgen_def(const uint8_t *uid); uint16_t ul_ev1_packgenA(const uint8_t *uid); @@ -35,6 +36,7 @@ uint16_t ul_ev1_packgenB(const uint8_t *uid); uint16_t ul_ev1_packgenC(const uint8_t *uid); uint16_t ul_ev1_packgenD(const uint8_t *uid); uint16_t ul_ev1_packgenE(const uint8_t *uid); +uint16_t ul_ev1_packgenG(const uint8_t *uid, const uint8_t *mfg); uint32_t ul_c_otpgenA(const uint8_t *uid); From 4180f6bfe26e1c961ff759fa7523b4f81e4760e6 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 11 Jun 2023 21:52:42 +0200 Subject: [PATCH 0038/1034] added philips toothbrush detection in `hf mfu info` and generator in `hf mfu pwdgen -r` --- client/src/cmdhfmfu.c | 51 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index f720d8599..94494ac3f 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -1391,6 +1391,18 @@ static mfu_identify_t mfu_ident_table[] = { "hf mfu dump -k %08x" }, */ + { + "Philips Toothbrush", "0004040201010F03", + 16, 20, "0310D1010C55027068696C6970732E636F6DFE00", + ul_ev1_pwdgen_def, ul_ev1_packgen_def, + "hf mfu pwdgen -r" + }, + { + "Philips Toothbrush", "0004040201010F03", + 16, 36, "0320D1011C55027068696C6970732E636F6D2F6E6663627275736868656164746170FE00", + ul_ev1_pwdgen_def, ul_ev1_packgen_def, + "hf mfu pwdgen -r" + }, {NULL, NULL, 0, 0, NULL, NULL, NULL, NULL} }; @@ -1412,7 +1424,7 @@ static mfu_identify_t *mfu_match_fingerprint(uint8_t *version, uint8_t *data) { uint8_t mtmp[40] = {0}; param_gethex_to_eol(mfu_ident_table[i].match, 0, mtmp, sizeof(mtmp), &ml); - bool m2 = (memcmp(mtmp, data + mfu_ident_table[i].mpos, mfu_ident_table[i].mlen) == 0); + bool m2 = (memcmp(mtmp, data + mfu_ident_table[i].mpos, mfu_ident_table[i].mlen) == 0); if (m2) { PrintAndLogEx(DEBUG, "(fingerprint) found %s", mfu_ident_table[i].desc); return &mfu_ident_table[i]; @@ -3581,6 +3593,8 @@ static int CmdHF14AMfUPwdGen(const char *Cmd) { if (selftest) return generator_selftest(); + uint8_t philips_mfg[10] = {0}; + if (use_tag) { // read uid from tag int res = ul_read_uid(uid); @@ -3588,6 +3602,19 @@ static int CmdHF14AMfUPwdGen(const char *Cmd) { return res; } + iso14a_card_select_t card; + if (ul_select(&card)) { + // Philips toothbrush needs page 0x21-0x23 + uint8_t data[16] = {0x00}; + int status = ul_read(0x21, data, sizeof(data)); + if (status == -1) { + PrintAndLogEx(DEBUG, "Error: tag didn't answer to READ"); + } else if (status == 16) { + memcpy(philips_mfg, data + 2, sizeof(philips_mfg)); + } + DropField(); + } + } else { if (u_len != 7) { PrintAndLogEx(WARNING, "Key must be 7 hex bytes"); @@ -3599,19 +3626,23 @@ static int CmdHF14AMfUPwdGen(const char *Cmd) { PrintAndLogEx(INFO, " Using UID 4b: " _YELLOW_("%s"), sprint_hex(uid, 4)); PrintAndLogEx(INFO, " Using UID 7b: " _YELLOW_("%s"), sprint_hex(uid, 7)); PrintAndLogEx(INFO, "----------------------------------"); - PrintAndLogEx(INFO, " algo | pwd | pack"); - PrintAndLogEx(INFO, "-----------------+----------+-----"); - PrintAndLogEx(INFO, " Transport EV1 | %08X | %04X", ul_ev1_pwdgenA(uid), ul_ev1_packgenA(uid)); - PrintAndLogEx(INFO, " Amiibo | %08X | %04X", ul_ev1_pwdgenB(uid), ul_ev1_packgenB(uid)); - PrintAndLogEx(INFO, " Lego Dimension | %08X | %04X", ul_ev1_pwdgenC(uid), ul_ev1_packgenC(uid)); - PrintAndLogEx(INFO, " XYZ 3D printer | %08X | %04X", ul_ev1_pwdgenD(uid), ul_ev1_packgenD(uid)); - PrintAndLogEx(INFO, " Xiaomi purifier | %08X | %04X", ul_ev1_pwdgenE(uid), ul_ev1_packgenE(uid)); - PrintAndLogEx(INFO, " NTAG tools | %08X | %04X", ul_ev1_pwdgenF(uid), ul_ev1_packgen_def(uid)); - PrintAndLogEx(INFO, "-----------------+----------+-----"); + PrintAndLogEx(INFO, " algo | pwd | pack"); + PrintAndLogEx(INFO, "--------------------+----------+-----"); + PrintAndLogEx(INFO, " Transport EV1 | %08X | %04X", ul_ev1_pwdgenA(uid), ul_ev1_packgenA(uid)); + PrintAndLogEx(INFO, " Amiibo | %08X | %04X", ul_ev1_pwdgenB(uid), ul_ev1_packgenB(uid)); + PrintAndLogEx(INFO, " Lego Dimension | %08X | %04X", ul_ev1_pwdgenC(uid), ul_ev1_packgenC(uid)); + PrintAndLogEx(INFO, " XYZ 3D printer | %08X | %04X", ul_ev1_pwdgenD(uid), ul_ev1_packgenD(uid)); + PrintAndLogEx(INFO, " Xiaomi purifier | %08X | %04X", ul_ev1_pwdgenE(uid), ul_ev1_packgenE(uid)); + PrintAndLogEx(INFO, " NTAG tools | %08X | %04X", ul_ev1_pwdgenF(uid), ul_ev1_packgen_def(uid)); + if (philips_mfg[0] != 0) { + PrintAndLogEx(INFO, " Philips Toothbrush | %08X | %04X", ul_ev1_pwdgenG(uid, philips_mfg), ul_ev1_packgenG(uid, philips_mfg)); + } + PrintAndLogEx(INFO, "--------------------+----------+-----"); PrintAndLogEx(INFO, " Vingcard algo"); PrintAndLogEx(INFO, " Saflok algo"); PrintAndLogEx(INFO, " SALTO algo"); PrintAndLogEx(INFO, " Dorma Kaba algo"); + PrintAndLogEx(INFO, " STiD algo"); PrintAndLogEx(INFO, "----------------------------------"); return PM3_SUCCESS; } From 219d38e0faf2d1b5b73d818ce629f978d14befb1 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 11 Jun 2023 21:53:42 +0200 Subject: [PATCH 0039/1034] added test for philips in the selftest --- common/generator.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/common/generator.c b/common/generator.c index a83935780..7cf5498e1 100644 --- a/common/generator.c +++ b/common/generator.c @@ -583,7 +583,7 @@ int mfc_algo_touch_one(uint8_t *uid, uint8_t sector, uint8_t keytype, uint64_t * int generator_selftest(void) { #ifndef ON_DEVICE -#define NUM_OF_TEST 8 +#define NUM_OF_TEST 9 PrintAndLogEx(INFO, "PWD / KEY generator selftest"); PrintAndLogEx(INFO, "----------------------------"); @@ -633,18 +633,27 @@ int generator_selftest(void) { testresult++; PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid6, 7), pwd6, success ? "OK" : "->A9C4C3C0<--"); + uint8_t uid7[] = {0x04, 0x0D, 0x4B, 0x5A, 0xC5, 0x71, 0x81}; + uint8_t mfg[] = {0x32, 0x31, 0x30, 0x36, 0x32, 0x38, 0x20, 0x35, 0x32, 0x4D}; + uint32_t pwd7 = ul_ev1_pwdgenG(uid7, mfg); + success = (pwd7 == 0xFBCFACC1); + if (success) + testresult++; + PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid7, 7), pwd7, success ? "OK" : "->FBCFACC1<--"); + + // uint8_t uid5[] = {0x11, 0x22, 0x33, 0x44}; // uint64_t key1 = mfc_algo_a(uid5); // success = (key1 == 0xD1E2AA68E39A); // PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %"PRIx64" - %s", sprint_hex(uid5, 4), key1, success ? "OK" : "->D1E2AA68E39A<--"); - uint8_t uid7[] = {0x74, 0x57, 0xCA, 0xA9}; - uint64_t key7 = 0; - mfc_algo_sky_one(uid7, 15, 0, &key7); - success = (key7 == 0x82c7e64bc565); + uint8_t uid8[] = {0x74, 0x57, 0xCA, 0xA9}; + uint64_t key8 = 0; + mfc_algo_sky_one(uid8, 15, 0, &key8); + success = (key8 == 0x82c7e64bc565); if (success) testresult++; - PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %"PRIx64" - %s", sprint_hex(uid7, 4), key7, success ? "OK" : "->82C7E64BC565<--"); + PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %"PRIx64" - %s", sprint_hex(uid8, 4), key8, success ? "OK" : "->82C7E64BC565<--"); uint32_t lf_id = lf_t55xx_white_pwdgen(0x00000080); From 1caf4ad1d2c8703fef7a49d7b6526f5a2d793e87 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 11 Jun 2023 22:30:09 +0200 Subject: [PATCH 0040/1034] text --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21c43c33c..dfa5e9510 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf mfu pwdgen -r` - now generates pwd/pack for Philips Sonicare, thanks @ckuenzi, @atc1441 (@iceman1001) + - Changed `hf mfu info` - now detects Philips Sonicare devices (@iceman1001) - Fixed truncated FPGA upload due to incorrect integer size variable (@d18c7db) - Changed `usart btfactory` - handles the new BT board with version "BT SPP V3.0" (@iceman1001) - Changed `hf mf eview --sk` - now can extract keys and save to file (@iceman1001) From 5505096483960cf3d4502916d2353ca3b6f9cfc1 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 11 Jun 2023 22:41:52 +0200 Subject: [PATCH 0041/1034] text --- client/dictionaries/mfulc_default_keys.dic | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/dictionaries/mfulc_default_keys.dic b/client/dictionaries/mfulc_default_keys.dic index 51b4b9365..09dea8caf 100644 --- a/client/dictionaries/mfulc_default_keys.dic +++ b/client/dictionaries/mfulc_default_keys.dic @@ -1,5 +1,5 @@ # -# Mifare Ultralight Default Keys +# Mifare Ultralight C Default Keys # -- iceman fork version -- # -- contribute to this list, sharing is caring -- # From 3de4f5225b36e3754c920651cc9af82441f1cb96 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 11 Jun 2023 22:59:10 +0200 Subject: [PATCH 0042/1034] enable fingerprint for UL-C tags too --- client/src/cmdhfmfu.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 94494ac3f..e17032507 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -1305,10 +1305,10 @@ typedef struct { } mfu_otp_identify_t; static mfu_otp_identify_t mfu_otp_ident_table[] = { - { "SALTO", 12, 4, "534C544F", ul_c_otpgenA, NULL }, -// { "SAFLOK", 12, 4, NULL, ul_c_otpgenB, NULL }, -// { "VINGCARD", 12, 4, NULL, ul_c_otpgenC, NULL }, -// { "DORMA KABA", 12, 4, NULL, ul_c_otpgenD, NULL }, + { "SALTO tag", 12, 4, "534C544F", ul_c_otpgenA, NULL }, +// { "SAFLOK tag", 12, 4, NULL, ul_c_otpgenB, NULL }, +// { "VINGCARD tag", 12, 4, NULL, ul_c_otpgenC, NULL }, +// { "DORMA KABA tag", 12, 4, NULL, ul_c_otpgenD, NULL }, { NULL, 0, 0, NULL, NULL, NULL } }; @@ -1827,6 +1827,8 @@ static int CmdHF14AMfUInfo(const char *Cmd) { else locked = true; + mfu_fingerprint(tagtype, has_auth_key, authkeyptr, ak_len); + if ((tagtype & MAGIC)) { //just read key uint8_t ulc_deskey[16] = {0x00}; @@ -3622,10 +3624,10 @@ static int CmdHF14AMfUPwdGen(const char *Cmd) { } } - PrintAndLogEx(INFO, "------------------.---------------"); + PrintAndLogEx(INFO, "------------------.------------------"); PrintAndLogEx(INFO, " Using UID 4b: " _YELLOW_("%s"), sprint_hex(uid, 4)); PrintAndLogEx(INFO, " Using UID 7b: " _YELLOW_("%s"), sprint_hex(uid, 7)); - PrintAndLogEx(INFO, "----------------------------------"); + PrintAndLogEx(INFO, "-------------------------------------"); PrintAndLogEx(INFO, " algo | pwd | pack"); PrintAndLogEx(INFO, "--------------------+----------+-----"); PrintAndLogEx(INFO, " Transport EV1 | %08X | %04X", ul_ev1_pwdgenA(uid), ul_ev1_packgenA(uid)); @@ -3643,7 +3645,7 @@ static int CmdHF14AMfUPwdGen(const char *Cmd) { PrintAndLogEx(INFO, " SALTO algo"); PrintAndLogEx(INFO, " Dorma Kaba algo"); PrintAndLogEx(INFO, " STiD algo"); - PrintAndLogEx(INFO, "----------------------------------"); + PrintAndLogEx(INFO, "-------------------------------------"); return PM3_SUCCESS; } From 383c52c1bddae636a055c8ce720535ba8f372062 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 12 Jun 2023 19:54:05 +0200 Subject: [PATCH 0043/1034] added colors and show all sectors in range for `hf mf chk` --- client/src/cmdhfmfp.c | 54 ++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 19 deletions(-) diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 4f956d3af..f3b53ed3e 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1097,10 +1097,6 @@ static void Fill2bPattern(uint8_t keyList[MAX_KEYS_LIST_LEN][AES_KEY_LEN], uint3 } static int CmdHFMFPChk(const char *Cmd) { - int res; - uint8_t keyList[MAX_KEYS_LIST_LEN][AES_KEY_LEN] = {{0}}; - uint32_t keyListLen = 0; - uint8_t foundKeys[2][64][AES_KEY_LEN + 1] = {{{0}}}; CLIParserContext *ctx; CLIParserInit(&ctx, "hf mfp chk", @@ -1133,6 +1129,10 @@ static int CmdHFMFPChk(const char *Cmd) { uint8_t startSector = arg_get_int_def(ctx, 3, 0); uint8_t endSector = arg_get_int_def(ctx, 4, 0); + uint8_t keyList[MAX_KEYS_LIST_LEN][AES_KEY_LEN] = {{0}}; + uint32_t keyListLen = 0; + uint8_t foundKeys[2][64][AES_KEY_LEN + 1] = {{{0}}}; + uint8_t vkey[16] = {0}; int vkeylen = 0; CLIGetHexWithReturn(ctx, 5, vkey, &vkeylen); @@ -1222,6 +1222,8 @@ static int CmdHFMFPChk(const char *Cmd) { if (pattern2b) Fill2bPattern(keyList, &keyListLen, &startPattern); + int res = PM3_SUCCESS; + // dictionary mode size_t endFilePosition = 0; if (dict_filenamelen) { @@ -1265,6 +1267,7 @@ static int CmdHFMFPChk(const char *Cmd) { Fill2bPattern(keyList, &keyListLen, &startPattern); continue; } + if (dict_filenamelen && endFilePosition) { if (verbose == false) PrintAndLogEx(NORMAL, "d" NOLF); @@ -1274,6 +1277,7 @@ static int CmdHFMFPChk(const char *Cmd) { if (res == PM3_SUCCESS && endFilePosition) { keyListLen = keycnt; } + continue; } break; @@ -1282,26 +1286,38 @@ static int CmdHFMFPChk(const char *Cmd) { PrintAndLogEx(NORMAL, ""); // print result + char strA[46 + 1] = {0}; + char strB[46 + 1] = {0}; + bool printedHeader = false; - for (uint8_t sector = startSector; sector <= endSector; sector++) { - if (foundKeys[0][sector][0] || foundKeys[1][sector][0]) { - if (!printedHeader) { - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "-------+--------------------------------+---------------------------------"); - PrintAndLogEx(INFO, "|sector| key A | key B |"); - PrintAndLogEx(INFO, "|------+--------------------------------+--------------------------------|"); - printedHeader = true; - } - PrintAndLogEx(INFO, "| %02d |%32s|%32s|", - sector, - (foundKeys[0][sector][0] == 0) ? "------ " : sprint_hex_inrow(&foundKeys[0][sector][1], AES_KEY_LEN), - (foundKeys[1][sector][0] == 0) ? "------ " : sprint_hex_inrow(&foundKeys[1][sector][1], AES_KEY_LEN)); + for (uint8_t s = startSector; s <= endSector; s++) { + if (printedHeader == false) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "-----+----------------------------------+----------------------------------"); + PrintAndLogEx(INFO, " Sec | key A | key B"); + PrintAndLogEx(INFO, "-----+----------------------------------+----------------------------------"); + printedHeader = true; } + + if (foundKeys[0][s][0]) { + snprintf(strA, sizeof(strA), _GREEN_("%s"), sprint_hex_inrow(&foundKeys[0][s][1], AES_KEY_LEN)); + } else { + snprintf(strA, sizeof(strA), _RED_("%s"), "--------------------------------"); + } + + if (foundKeys[1][s][0]) { + snprintf(strB, sizeof(strB), _GREEN_("%s"), sprint_hex_inrow(&foundKeys[1][s][1], AES_KEY_LEN)); + } else { + snprintf(strB, sizeof(strB), _RED_("%s"), "--------------------------------"); + } + + PrintAndLogEx(INFO, " " _YELLOW_("%03d") " | %s | %s", s, strA, strB); } - if (!printedHeader) + + if (printedHeader == false) PrintAndLogEx(INFO, "No keys found("); else - PrintAndLogEx(INFO, "'------+--------------------------------+--------------------------------'\n"); + PrintAndLogEx(INFO, "-----+----------------------------------+----------------------------------\n"); // save keys to json if ((jsonnamelen > 0) && printedHeader) { From f462e6bd02d76114f2314b80cc71af168f215cb9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 12 Jun 2023 20:14:12 +0200 Subject: [PATCH 0044/1034] hf mfp rdsc - style similar to MF commands --- client/src/cmdhfmfp.c | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index f3b53ed3e..d1cd0a8ac 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -172,7 +172,7 @@ static int plus_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signature const ecdsa_publickey_t nxp_plus_public_keys[] = { {"MIFARE Plus EV1", "044409ADC42F91A8394066BA83D872FB1D16803734E911170412DDF8BAD1A4DADFD0416291AFE1C748253925DA39A5F39A1C557FFACD34C62E"}, {"MIFARE Plus Ev_x", "04BB49AE4447E6B1B6D21C098C1538B594A11A4A1DBF3D5E673DEACDEB3CC512D1C08AFA1A2768CE20A200BACD2DC7804CD7523A0131ABF607"}, - {"MIFARE Plus Trojka", "040F732E0EA7DF2B38F791BF89425BF7DCDF3EE4D976669E3831F324FF15751BD52AFF1782F72FF2731EEAD5F63ABE7D126E03C856FFB942AF"} + {"MIFARE Plus Troika", "040F732E0EA7DF2B38F791BF89425BF7DCDF3EE4D976669E3831F324FF15751BD52AFF1782F72FF2731EEAD5F63ABE7D126E03C856FFB942AF"} }; uint8_t i; @@ -849,8 +849,14 @@ static int CmdHFMFPRdsc(const char *Cmd) { uint8_t data[250] = {0}; int datalen = 0; uint8_t mac[8] = {0}; - for (int n = mfFirstBlockOfSector(sectorNum); n < mfFirstBlockOfSector(sectorNum) + mfNumBlocksPerSector(sectorNum); n++) { - res = MFPReadBlock(&mf4session, plain, n & 0xff, 1, false, true, data, sizeof(data), &datalen, mac); + + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, " # | sector " _GREEN_("%02d") " / " _GREEN_("0x%02X") " | ascii", sectorNum, sectorNum); + PrintAndLogEx(INFO, "----+-------------------------------------------------+-----------------"); + + for (int blockno = mfFirstBlockOfSector(sectorNum); blockno < mfFirstBlockOfSector(sectorNum) + mfNumBlocksPerSector(sectorNum); blockno++) { + + res = MFPReadBlock(&mf4session, plain, blockno & 0xff, 1, false, true, data, sizeof(data), &datalen, mac); if (res) { PrintAndLogEx(ERR, "Read error: %d", res); DropField(); @@ -862,25 +868,32 @@ static int CmdHFMFPRdsc(const char *Cmd) { DropField(); return PM3_ESOFT; } - if (datalen != 1 + 16 + 8 + 2) { + + if (datalen != 1 + MFBLOCK_SIZE + 8 + 2) { PrintAndLogEx(ERR, "Error return length:%d", datalen); DropField(); return PM3_ESOFT; } - PrintAndLogEx(INFO, "data[%03d]: %s", n, sprint_hex(&data[1], 16)); + // PrintAndLogEx(INFO, "data[%03d]: %s", n, sprint_hex(&data[1], 16)); + if (blockno == 0) { + PrintAndLogEx(INFO, "%3d | " _RED_("%s"), blockno, sprint_hex_ascii(data + 1, MFBLOCK_SIZE)); + } else { + PrintAndLogEx(INFO, "%3d | %s ", blockno, sprint_hex_ascii(data + 1, MFBLOCK_SIZE)); + } if (memcmp(&data[1 + 16], mac, 8)) { - PrintAndLogEx(WARNING, "WARNING: mac on block %d not equal...", n); - PrintAndLogEx(WARNING, "MAC card: %s", sprint_hex(&data[1 + 16], 8)); - PrintAndLogEx(WARNING, "MAC reader: %s", sprint_hex(mac, 8)); + PrintAndLogEx(WARNING, "WARNING: mac on block %d not equal...", blockno); + PrintAndLogEx(WARNING, "MAC card... " _YELLOW_("%s"), sprint_hex_inrow(&data[1 + MFBLOCK_SIZE], 8)); + PrintAndLogEx(WARNING, "MAC reader... " _YELLOW_("%s"), sprint_hex_inrow(mac, sizeof(mac))); } else { - if (verbose) - PrintAndLogEx(INFO, "MAC: %s", sprint_hex(&data[1 + 16], 8)); + if (verbose) { + PrintAndLogEx(INFO, "MAC... " _YELLOW_("%s"), sprint_hex_inrow(&data[1 + MFBLOCK_SIZE], 8)); + } } } + PrintAndLogEx(NORMAL, ""); DropField(); - return PM3_SUCCESS; } From 8ac04b2d210b16521a842755346e00f80c949cbf Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 12 Jun 2023 20:34:06 +0200 Subject: [PATCH 0045/1034] style on hf mf rdsc , hf mf rdbl, to match the MF commands --- client/src/cmdhfmf.c | 6 +++--- client/src/cmdhfmf.h | 6 +++++- client/src/cmdhfmfp.c | 40 +++++++++++++++++----------------------- 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 3dee09d3b..6aac4677c 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -207,7 +207,7 @@ static char GetFormatFromSector(uint8_t sectors) { } } -static bool mfc_value(const uint8_t *d, int32_t *val) { +bool mfc_value(const uint8_t *d, int32_t *val) { // values int32_t a = (int32_t)MemLeToUint4byte(d); uint32_t a_inv = MemLeToUint4byte(d + 4); @@ -225,7 +225,7 @@ static bool mfc_value(const uint8_t *d, int32_t *val) { return val_checks; } -static void mf_print_block_one(uint8_t blockno, uint8_t *d, bool verbose) { +void mf_print_block_one(uint8_t blockno, uint8_t *d, bool verbose) { if (blockno == 0) { PrintAndLogEx(INFO, "%3d | " _RED_("%s"), blockno, sprint_hex_ascii(d, MFBLOCK_SIZE)); } else if (mfIsSectorTrailer(blockno)) { @@ -389,7 +389,7 @@ static void mf_print_values(uint16_t n, uint8_t *d) { } */ -static void mf_print_sector_hdr(uint8_t sector) { +void mf_print_sector_hdr(uint8_t sector) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, " # | sector " _GREEN_("%02d") " / " _GREEN_("0x%02X") " | ascii", sector, sector); PrintAndLogEx(INFO, "----+-------------------------------------------------+-----------------"); diff --git a/client/src/cmdhfmf.h b/client/src/cmdhfmf.h index 5c21c7fb3..96a8f9079 100644 --- a/client/src/cmdhfmf.h +++ b/client/src/cmdhfmf.h @@ -33,7 +33,11 @@ int CmdHFMFNDEFWrite(const char *Cmd); // used by "nfc mf cwrite" void showSectorTable(sector_t *k_sector, size_t k_sectors_cnt); void readerAttack(sector_t *k_sector, size_t k_sectors_cnt, nonces_t data, bool setEmulatorMem, bool verbose); void printKeyTable(size_t sectorscnt, sector_t *e_sector); -void printKeyTableEx(size_t sectorscnt, sector_t *e_sector, uint8_t start_sector); +void printKeyTableEx(size_t sectorscnt, sector_t *e_sector, uint8_t start_sector, bool singel_sector); + +bool mfc_value(const uint8_t *d, int32_t *val); +void mf_print_sector_hdr(uint8_t sector); +void mf_print_block_one(uint8_t blockno, uint8_t *d, bool verbose); int mfc_ev1_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signature, int signature_len); #endif diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index d1cd0a8ac..a48dd45c7 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -33,6 +33,7 @@ #include "fileutils.h" #include "protocols.h" #include "crypto/libpcrypto.h" +#include "cmdhfmf.h" // printblock, header static const uint8_t DefaultKey[16] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; static uint16_t CardAddresses[] = {0x9000, 0x9001, 0x9002, 0x9003, 0x9004, 0xA000, 0xA001, 0xA080, 0xA081, 0xC000, 0xC001}; @@ -766,25 +767,25 @@ static int CmdHFMFPRdbl(const char *Cmd) { return PM3_ESOFT; } + uint8_t sector = mfSectorNum(blockn); + mf_print_sector_hdr(sector); + int indx = blockn; for (int i = 0; i < blocksCount; i++) { - PrintAndLogEx(INFO, "data[%03d]: %s", indx, sprint_hex(&data[1 + i * 16], 16)); + mf_print_block_one(indx, data + 1 + (i * MFBLOCK_SIZE), verbose); indx++; - if (mfIsSectorTrailer(indx) && i != blocksCount - 1) { - PrintAndLogEx(INFO, "data[%03d]: ------------------- trailer -------------------", indx); - indx++; + } + + if (memcmp(&data[(blocksCount * 16) + 1], mac, 8)) { + PrintAndLogEx(WARNING, "WARNING: mac not equal..."); + PrintAndLogEx(WARNING, "MAC card... " _YELLOW_("%s"), sprint_hex_inrow(&data[1 + (blocksCount * MFBLOCK_SIZE)], 8)); + PrintAndLogEx(WARNING, "MAC reader... " _YELLOW_("%s"), sprint_hex_inrow(mac, sizeof(mac))); + } else { + if (verbose) { + PrintAndLogEx(INFO, "MAC... " _YELLOW_("%s"), sprint_hex_inrow(&data[1 + (blocksCount * MFBLOCK_SIZE)], 8)); } } - - if (memcmp(&data[blocksCount * 16 + 1], mac, 8)) { - PrintAndLogEx(WARNING, "WARNING: mac not equal..."); - PrintAndLogEx(WARNING, "MAC card: %s", sprint_hex(&data[blocksCount * 16 + 1], 8)); - PrintAndLogEx(WARNING, "MAC reader: %s", sprint_hex(mac, 8)); - } else { - if (verbose) - PrintAndLogEx(INFO, "MAC: %s", sprint_hex(&data[blocksCount * 16 + 1], 8)); - } - + PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } @@ -850,9 +851,7 @@ static int CmdHFMFPRdsc(const char *Cmd) { int datalen = 0; uint8_t mac[8] = {0}; - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, " # | sector " _GREEN_("%02d") " / " _GREEN_("0x%02X") " | ascii", sectorNum, sectorNum); - PrintAndLogEx(INFO, "----+-------------------------------------------------+-----------------"); + mf_print_sector_hdr(sectorNum); for (int blockno = mfFirstBlockOfSector(sectorNum); blockno < mfFirstBlockOfSector(sectorNum) + mfNumBlocksPerSector(sectorNum); blockno++) { @@ -875,12 +874,7 @@ static int CmdHFMFPRdsc(const char *Cmd) { return PM3_ESOFT; } - // PrintAndLogEx(INFO, "data[%03d]: %s", n, sprint_hex(&data[1], 16)); - if (blockno == 0) { - PrintAndLogEx(INFO, "%3d | " _RED_("%s"), blockno, sprint_hex_ascii(data + 1, MFBLOCK_SIZE)); - } else { - PrintAndLogEx(INFO, "%3d | %s ", blockno, sprint_hex_ascii(data + 1, MFBLOCK_SIZE)); - } + mf_print_block_one(blockno, data + 1, verbose); if (memcmp(&data[1 + 16], mac, 8)) { PrintAndLogEx(WARNING, "WARNING: mac on block %d not equal...", blockno); From f370e0df71e7e2575c99477bb4ce1b65022213d0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 12 Jun 2023 21:12:24 +0200 Subject: [PATCH 0046/1034] revert --- client/src/cmdhfmf.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.h b/client/src/cmdhfmf.h index 96a8f9079..4e92bca70 100644 --- a/client/src/cmdhfmf.h +++ b/client/src/cmdhfmf.h @@ -33,7 +33,8 @@ int CmdHFMFNDEFWrite(const char *Cmd); // used by "nfc mf cwrite" void showSectorTable(sector_t *k_sector, size_t k_sectors_cnt); void readerAttack(sector_t *k_sector, size_t k_sectors_cnt, nonces_t data, bool setEmulatorMem, bool verbose); void printKeyTable(size_t sectorscnt, sector_t *e_sector); -void printKeyTableEx(size_t sectorscnt, sector_t *e_sector, uint8_t start_sector, bool singel_sector); +void printKeyTableEx(size_t sectorscnt, sector_t *e_sector, uint8_t start_sector); +// void printKeyTableEx(size_t sectorscnt, sector_t *e_sector, uint8_t start_sector, bool singel_sector); bool mfc_value(const uint8_t *d, int32_t *val); void mf_print_sector_hdr(uint8_t sector); From 6fd0d93647a9fb7b9179e6833d480b83e1797586 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 14 Jun 2023 14:24:41 +0200 Subject: [PATCH 0047/1034] fixed the trace list output when marking crcbytes in color mode. Some odd cases exists. --- CHANGELOG.md | 1 + client/src/cmdhflist.c | 2 +- client/src/cmdtrace.c | 133 +++++++++++++++++++++++++++++------------ 3 files changed, 98 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dfa5e9510..700f906bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `trace list` - now handles marking of crc bytes w color a bit better (@iceman1001) - Changed `hf mfu pwdgen -r` - now generates pwd/pack for Philips Sonicare, thanks @ckuenzi, @atc1441 (@iceman1001) - Changed `hf mfu info` - now detects Philips Sonicare devices (@iceman1001) - Fixed truncated FPGA upload due to incorrect integer size variable (@d18c7db) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index 7207e50f9..fe0ee46b0 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -70,7 +70,7 @@ static uint8_t *gs_mfuc_key = NULL; uint8_t iso14443A_CRC_check(bool isResponse, uint8_t *d, uint8_t n) { if (n < 3) return 2; - if (isResponse && (n < 6)) return 2; + if (isResponse && (n == 5)) return 2; if (d[1] == 0x50 && d[0] >= ISO14443A_CMD_ANTICOLL_OR_SELECT && d[0] <= ISO14443A_CMD_ANTICOLL_OR_SELECT_3) { diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index d3096307a..ad4847e35 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -570,8 +570,12 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr //1 CRC-command, CRC ok //2 Not crc-command - //--- Draw the data column - char line[18][160] = {{0}}; + // Draw the data column + #define TRACE_MAX_LINES 36 + // number of hex bytes to be printed per row (16 data + 2 crc) + #define TRACE_MAX_HEX_BYTES 18 + + char line[TRACE_MAX_LINES][160] = {{0}}; if (data_len == 0) { if (protocol == ICLASS && duration == 2048) { @@ -582,9 +586,10 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr snprintf(line[0], sizeof(line[0]), ""); } } + uint8_t partialbytebuff = 0; uint8_t offset = 0; - for (int j = 0; j < data_len && j / 18 < 18; j++) { + for (int j = 0; j < data_len && (j / TRACE_MAX_HEX_BYTES) < TRACE_MAX_HEX_BYTES; j++) { uint8_t parityBits = parityBytes[j >> 3]; if (protocol != LEGIC && protocol != ISO_14443B @@ -602,11 +607,14 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr && (oddparity8(frame[j]) != ((parityBits >> (7 - (j & 0x0007))) & 0x01))) { snprintf(line[j / 18] + ((j % 18) * 4), 120, "%02x! ", frame[j]); + } else if (protocol == ICLASS && hdr->isResponse == false) { + uint8_t parity = 0; for (int i = 0; i < 6; i++) { parity ^= ((frame[0] >> i) & 1); } + if (parity == ((frame[0] >> 7) & 1)) { snprintf(line[j / 18] + ((j % 18) * 4), 120, "%02x ", frame[j]); } else { @@ -631,10 +639,8 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr } - - uint8_t crc_format_string_offset = 0; if (markCRCBytes && data_len > 2) { - //CRC-command + // CRC-command if (((protocol == PROTO_HITAG1) || (protocol == PROTO_HITAGS)) && (data_len > 1)) { // Note that UID REQUEST response has no CRC, but we don't know // if the response we see is a UID @@ -647,8 +653,8 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr if (crcStatus == 0 || crcStatus == 1) { - char *pos1 = line[(data_len - 2) / 18]; - pos1 += (((data_len - 2) % 18) * 4) - 1; + char *pos1 = line[(data_len - 2) / TRACE_MAX_HEX_BYTES]; + pos1 += (((data_len - 2) % TRACE_MAX_HEX_BYTES) * 4) - 1; (*(pos1 + 6 + 1)) = '\0'; @@ -657,26 +663,56 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr if (hdr->isResponse) { if (g_session.supports_colors) { if (crcStatus == 0) { - snprintf(pos1, 24, " " _RED_("%s") " ", cb_str); + snprintf(pos1, 24, AEND " " _RED_("%s"), cb_str); } else { - snprintf(pos1, 24, " " _GREEN_("%s") " ", cb_str); + snprintf(pos1, 24, AEND " " _GREEN_("%s"), cb_str); } - crc_format_string_offset = 9; } else { snprintf(pos1, 9, "[%s]", cb_str); } } else { if (g_session.supports_colors) { if (crcStatus == 0) { - snprintf(pos1, 24, AEND " " _RED_("%s") " ", cb_str); + snprintf(pos1, 24, AEND " " _RED_("%s"), cb_str); } else { - snprintf(pos1, 24, AEND " " _GREEN_("%s") " ", cb_str); + snprintf(pos1, 24, AEND " " _GREEN_("%s"), cb_str); } - crc_format_string_offset = 13; } else { snprintf(pos1, 9, "[%s]", cb_str); } } + + // odd case of second crc byte is alone in a new line + if (strlen(cb_str) < 5) { + + free(cb_str); + + pos1 = line[((data_len - 2) / TRACE_MAX_HEX_BYTES) + 1]; + cb_str = str_dup(pos1); + + if (hdr->isResponse) { + if (g_session.supports_colors) { + if (crcStatus == 0) { + snprintf(pos1, 24, _RED_("%s"), cb_str); + } else { + snprintf(pos1, 24, _GREEN_("%s"), cb_str); + } + } else { + snprintf(pos1, 9, "[%s]", cb_str); + } + } else { + if (g_session.supports_colors) { + if (crcStatus == 0) { + snprintf(pos1, 24, _RED_("%s"), cb_str); + } else { + snprintf(pos1, 24, _GREEN_("%s"), cb_str); + } + } else { + snprintf(pos1, 9, "[%s]", cb_str); + } + } + } + free(cb_str); } } @@ -688,8 +724,8 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr // mark short bytes (less than 8 Bit + Parity) if (protocol == ISO_14443A || - protocol == PROTO_MIFARE || - protocol == THINFILM) { + protocol == PROTO_MIFARE || + protocol == THINFILM) { // approximated with 128 * (9 * data_len); uint16_t bitime = 1056 + 32; @@ -791,8 +827,14 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr } } - int num_lines = MIN((data_len - 1) / 18 + 1, 18); + int str_padder = 72; + int num_lines = MIN((data_len - 1) / TRACE_MAX_HEX_BYTES + 1, TRACE_MAX_HEX_BYTES); + for (int j = 0; j < num_lines ; j++) { + + bool last_line = (j == num_lines - 1); + str_padder = 72; + if (j == 0) { uint32_t time1 = hdr->timestamp - first_hdr->timestamp; @@ -802,25 +844,30 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr time2 = duration; } + // ansi codes addes extra chars that needs to be taken in consideration. + if (last_line && (memcmp(crc, "\x20\x20\x20\x20", 4) != 0) && g_session.supports_colors && markCRCBytes) { + str_padder = 85; + } + if (hdr->isResponse) { // tag row if (use_us) { PrintAndLogEx(NORMAL, " %10.1f | %10.1f | Tag |%-*s | %s| %s", (float)time1 / 13.56, (float)time2 / 13.56, - 72 + crc_format_string_offset, + str_padder, line[j], - (j == num_lines - 1) ? crc : " ", - (j == num_lines - 1) ? explanation : "" + (last_line) ? crc : " ", + (last_line) ? explanation : "" ); } else { PrintAndLogEx(NORMAL, " %10u | %10u | Tag |%-*s | %s| %s", time1, time2, - 72 + crc_format_string_offset, + str_padder, line[j], - (j == num_lines - 1) ? crc : " ", - (j == num_lines - 1) ? explanation : "" + (last_line) ? crc : " ", + (last_line) ? explanation : "" ); } } else { @@ -830,41 +877,51 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr _YELLOW_(" %10.1f") " | " _YELLOW_("%10.1f") " | " _YELLOW_("Rdr") " |" _YELLOW_("%-*s")" | " _YELLOW_("%s") "| " _YELLOW_("%s"), (float)time1 / 13.56, (float)time2 / 13.56, - 72 + crc_format_string_offset, + str_padder, line[j], - (j == num_lines - 1) ? crc : " ", - (j == num_lines - 1) ? explanation : "" + (last_line) ? crc : " ", + (last_line) ? explanation : "" ); } else { PrintAndLogEx(NORMAL, _YELLOW_(" %10u") " | " _YELLOW_("%10u") " | " _YELLOW_("Rdr") " |" _YELLOW_("%-*s")" | " _YELLOW_("%s") "| " _YELLOW_("%s"), time1, time2, - 72 + crc_format_string_offset, + str_padder, line[j], - (j == num_lines - 1) ? crc : " ", - (j == num_lines - 1) ? explanation : "" + (last_line) ? crc : " ", + (last_line) ? explanation : "" ); } - } } else { + + + if (last_line && (memcmp(crc, "\x20\x20\x20\x20", 4) != 0) && g_session.supports_colors && markCRCBytes) { + str_padder = 85; + // odd case of multiline, and last single byte on empty row has been colorised... + if (strlen(line[j]) < 14) { + str_padder = 81; + } + } + if (hdr->isResponse) { PrintAndLogEx(NORMAL, " | | |%-*s | %s| %s", - 72 + crc_format_string_offset, + str_padder, line[j], - (j == num_lines - 1) ? crc : " ", - (j == num_lines - 1) ? explanation : "" + last_line ? crc : " ", + last_line ? explanation : "" ); } else { PrintAndLogEx(NORMAL, " | | |" _YELLOW_("%-*s")" | " _YELLOW_("%s") "| " _YELLOW_("%s"), - 72 + crc_format_string_offset, + str_padder, line[j], - (j == num_lines - 1) ? crc : " ", - (j == num_lines - 1) ? explanation : "" + last_line ? crc : " ", + last_line ? explanation : "" ); } + } } @@ -875,8 +932,10 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr memset(explanation, 0x00, sizeof(explanation)); annotateIso14443a(explanation, sizeof(explanation), mfData, mfDataLen, hdr->isResponse); uint8_t crcc = iso14443A_CRC_check(hdr->isResponse, mfData, mfDataLen); + + //iceman: colorise crc bytes here will need a refactor of code from above. PrintAndLogEx(NORMAL, " | | * |%-*s | %-4s| %s", - 72 + crc_format_string_offset, + str_padder, sprint_hex_inrow_spaces(mfData, mfDataLen, 2), (crcc == 0 ? _RED_(" !! ") : (crcc == 1 ? _GREEN_(" ok ") : " ")), explanation); From fdd85d7e1e1e4afccbb580bf129fc8d6dc5a118a Mon Sep 17 00:00:00 2001 From: Jean-Michel Picod Date: Wed, 14 Jun 2023 16:32:10 +0200 Subject: [PATCH 0048/1034] Fix LegicCash segment CRC computation --- client/luascripts/hf_legic.lua | 47 +++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/client/luascripts/hf_legic.lua b/client/luascripts/hf_legic.lua index d6260ac88..cad71f270 100644 --- a/client/luascripts/hf_legic.lua +++ b/client/luascripts/hf_legic.lua @@ -221,7 +221,7 @@ end --- -- curency-codes for Legic-Cash-Segments (ISO 4217) local currency = { - ["03d2"]="EUR", + ["03D2"]="EUR", ["0348"]="USD", ["033A"]="GBP", ["02F4"]="CHF" @@ -1447,7 +1447,10 @@ function dumpLegicCash(tag, x) print("--------------------------------\n\tLegic-Cash Values\n--------------------------------") local limit, curr, balance, rid, tcv -- currency of balance & limit - curr=currency[tag.SEG[x].data[8]..tag.SEG[x].data[9]] + curr=string.upper(tag.SEG[x].data[8]..tag.SEG[x].data[9]) + if currency[curr] ~= nil then + curr = currency[curr] + end -- maximum balance limit=string.format("%4.2f", tonumber(tag.SEG[x].data[10]..tag.SEG[x].data[11]..tag.SEG[x].data[12], 16)/100) -- current balance @@ -1784,17 +1787,17 @@ end --- -- edit Segment Data -function editSegmentData(data) +function editSegmentData(data, uid) io.write("\n") if istable(data) == false then print("no Segment-Data found") end - local lc = check4LegicCash(data) + local lc = check4LegicCash(data, uid) for i=0, #data-1 do data[i]=input(accyan.."Data"..i..acoff..": ", data[i]) end if (lc) then - data = fixLegicCash(data) + data = fixLegicCash(data, uid) end return data end @@ -1917,7 +1920,7 @@ function autoSelectSegment(tag, s) repeat io.write(". ") x=x-1 - res=check4LegicCash(tag.SEG[x].data) + res=check4LegicCash(tag.SEG[x].data, uid) until ( res or x==0 ) end --- @@ -2011,7 +2014,7 @@ end --- -- edit Legic Cash -function editLegicCash(data) +function editLegicCash(data, uid) local limit, curr, balance, rid, tcv -- currency of balance & limit curr=currency[data[8]..data[9]] @@ -2064,12 +2067,12 @@ function editLegicCash(data) data[20]=string.sub(rid, 5, 6) end - return fixLegicCash(data) + return fixLegicCash(data, uid) end --- -- chack for signature of a 'Legic-Cash-Segment' -function check4LegicCash(data) +function check4LegicCash(data, uid) if(#data==32) then local stamp_len=(#data-25) local stamp="" @@ -2077,9 +2080,9 @@ function check4LegicCash(data) stamp=stamp..data[i].." " end if (data[7]=="01") then - if (("%04x"):format(utils.Crc16(dumpTable(data, "", 0, 12))) == data[13]..data[14]) then - if (("%04x"):format(utils.Crc16(dumpTable(data, "", 15, 20))) == data[21]..data[22]) then - if (("%04x"):format(utils.Crc16(dumpTable(data, "", 23, 29))) == data[30]..data[31]) then + if (("%04x"):format(utils.Crc16Legic(dumpTable(data, "", 0, 12), uid)) == data[13]..data[14]) then + if (("%04x"):format(utils.Crc16Legic(dumpTable(data, "", 15, 20), uid)) == data[21]..data[22]) then + if (("%04x"):format(utils.Crc16Legic(dumpTable(data, "", 23, 29), uid)) == data[30]..data[31]) then io.write(accyan.."Legic-Cash Segment detected "..acoff) return true end @@ -2156,7 +2159,7 @@ end --- -- repair / fix crc's of a 'Legic-Cash-Segment' -function fixLegicCash(data) +function fixLegicCash(data, uid) if(#data==32 and data[7]=="01") then local crc1, crc2, crc3 -- set shadow-balance equal to balance @@ -2168,9 +2171,9 @@ function fixLegicCash(data) data[27]=data[19] data[28]=data[20] -- calculate all crc's - crc1=("%04x"):format(utils.Crc16(dumpTable(data, "", 0, 12))) - crc2=("%04x"):format(utils.Crc16(dumpTable(data, "", 15, 20))) - crc3=("%04x"):format(utils.Crc16(dumpTable(data, "", 23, 29))) + crc1=("%04x"):format(utils.Crc16Legic(dumpTable(data, "", 0, 12), uid)) + crc2=("%04x"):format(utils.Crc16Legic(dumpTable(data, "", 15, 20), uid)) + crc3=("%04x"):format(utils.Crc16Legic(dumpTable(data, "", 23, 29), uid)) -- set crc's data[13]=string.sub(crc1, 1, 2) data[14]=string.sub(crc1, 3, 4) @@ -2413,7 +2416,7 @@ function modifyMode() for i=0, #inTAG.SEG do if(check43rdPartyCash1(uid, inTAG.SEG[i].data)) then io.write(accyan.."in Segment index: "..inTAG.SEG[i].index ..acoff.. "\n") - elseif(check4LegicCash(inTAG.SEG[i].data)) then + elseif(check4LegicCash(inTAG.SEG[i].data, uid)) then io.write(accyan.."in Segment index: "..inTAG.SEG[i].index..acoff.."\n") lc=true; lci=inTAG.SEG[i].index; @@ -2520,7 +2523,7 @@ function modifyMode() if (type(x)=="string" and string.len(x)>0) then sel=tonumber(x,10) else sel=selectSegment(inTAG) end if (istable(inTAG.SEG[sel])) then - inTAG.SEG[sel].data=editSegmentData(inTAG.SEG[sel].data) + inTAG.SEG[sel].data=editSegmentData(inTAG.SEG[sel].data, inTAG.MCC) end end, --- @@ -2587,13 +2590,15 @@ function modifyMode() else x = selectSegment(inTAG) end - inTAG.SEG[x].data=fixLegicCash(inTAG.SEG[x].data) + local uid=inTAG.MCD..inTAG.MSN0..inTAG.MSN1..inTAG.MSN2 + inTAG.SEG[x].data=fixLegicCash(inTAG.SEG[x].data, uid) end, --- - -- edit legic-cash values fixLegicCash(data) + -- edit legic-cash values fixLegicCash(data, mcc) ["elc"] = function(x) x=autoSelectSegment(inTAG, "legiccash") - inTAG.SEG[x].data=editLegicCash(inTAG.SEG[x].data) + local uid=inTAG.MCD..inTAG.MSN0..inTAG.MSN1..inTAG.MSN2 + inTAG.SEG[x].data=editLegicCash(inTAG.SEG[x].data, uid) end, --- -- dump legic-cash human-readable From d9ed07c77ceed7be281d4c3f0d0b1b50ad70e596 Mon Sep 17 00:00:00 2001 From: Jean-Michel Picod Date: Wed, 14 Jun 2023 16:37:29 +0200 Subject: [PATCH 0049/1034] Missed one line for LegicCash uid --- client/luascripts/hf_legic.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/luascripts/hf_legic.lua b/client/luascripts/hf_legic.lua index cad71f270..21684b6fb 100644 --- a/client/luascripts/hf_legic.lua +++ b/client/luascripts/hf_legic.lua @@ -2523,7 +2523,8 @@ function modifyMode() if (type(x)=="string" and string.len(x)>0) then sel=tonumber(x,10) else sel=selectSegment(inTAG) end if (istable(inTAG.SEG[sel])) then - inTAG.SEG[sel].data=editSegmentData(inTAG.SEG[sel].data, inTAG.MCC) + local uid = inTAG.MCD..inTAG.MSN0..inTAG.MSN1..inTAG.MSN2 + inTAG.SEG[sel].data=editSegmentData(inTAG.SEG[sel].data, uid) end end, --- @@ -2594,7 +2595,7 @@ function modifyMode() inTAG.SEG[x].data=fixLegicCash(inTAG.SEG[x].data, uid) end, --- - -- edit legic-cash values fixLegicCash(data, mcc) + -- edit legic-cash values fixLegicCash(data, uid) ["elc"] = function(x) x=autoSelectSegment(inTAG, "legiccash") local uid=inTAG.MCD..inTAG.MSN0..inTAG.MSN1..inTAG.MSN2 From 45b710dc0a9bb930508c613a51ae24d0ee4d5576 Mon Sep 17 00:00:00 2001 From: Jean-Michel Picod Date: Wed, 14 Jun 2023 16:42:11 +0200 Subject: [PATCH 0050/1034] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 700f906bc..4f8a2d225 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fix LegicCash segment handling in `hf_legic.lua` script (@jmichelp) - Fixed `trace list` - now handles marking of crc bytes w color a bit better (@iceman1001) - Changed `hf mfu pwdgen -r` - now generates pwd/pack for Philips Sonicare, thanks @ckuenzi, @atc1441 (@iceman1001) - Changed `hf mfu info` - now detects Philips Sonicare devices (@iceman1001) From 5c9c360977cc1bca88142bd8dcd41a4aef2918d4 Mon Sep 17 00:00:00 2001 From: nvx Date: Thu, 15 Jun 2023 22:19:02 +1000 Subject: [PATCH 0051/1034] Fix hf iclass/15693 sniff trace timings. Previously reader durations would be reported to be twice as long in the trace vs reality, and as a result the start time would be earlier than it should have been as well. Also fixes a minor sniff trace timing with card dual subcarrier responses. --- armsrc/iso15693.c | 68 +++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 38 deletions(-) diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index daa84f886..703f1288f 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -1736,14 +1736,19 @@ void SniffIso15693(uint8_t jam_search_len, uint8_t *jam_search_string, bool icla // no need to try decoding reader data if the tag is sending if (!tag_is_active) { - if (Handle15693SampleFromReader((sniffdata & 0x02) >> 1, &dreader)) { + int extra_8s = 1; + if (Handle15693SampleFromReader((sniffdata & 0x02) >> 1, &dreader) || + (++extra_8s && Handle15693SampleFromReader(sniffdata & 0x01, &dreader))) { - uint32_t eof_time = dma_start_time + (samples * 16) + 8 - DELAY_READER_TO_ARM_SNIFF; // end of EOF if (dreader.byteCount > 0) { + // sof/eof_times are in ssp_clk, which is 13.56MHz / 4 + // not sure where the extra +8's on the EOF time comes from though, if someone knows update this comment + uint32_t eof_time = dma_start_time + (samples * 16) + (extra_8s * 8) - DELAY_READER_TO_ARM_SNIFF; // end of EOF uint32_t sof_time = eof_time - - dreader.byteCount * (dreader.Coding == CODING_1_OUT_OF_4 ? 128 * 16 : 2048 * 16) // time for byte transfers - - 32 * 16 // time for SOF transfer - - 16 * 16; // time for EOF transfer + - dreader.byteCount * (dreader.Coding == CODING_1_OUT_OF_4 ? 1024 : 16384) // time for byte transfers + - 256 // time for SOF transfer (1024/fc / 4) + - 128; // time for EOF transfer (512/fc / 4) + // sof/eof_times * 4 here to bring from ssp_clk freq to RF carrier freq LogTrace_ISO15693(dreader.output, dreader.byteCount, (sof_time * 4), (eof_time * 4), NULL, true); if (!iclass) { // Those flags don't exist in iClass @@ -1751,52 +1756,38 @@ void SniffIso15693(uint8_t jam_search_len, uint8_t *jam_search_string, bool icla expect_fast_answer = dreader.output[0] & ISO15_REQ_DATARATE_HIGH; } } + // And ready to receive another command. //DecodeReaderReset(&dreader); // already reseted DecodeTagReset(&dtag); DecodeTagFSKReset(&dtagfsk); reader_is_active = false; expect_tag_answer = true; - } else if (Handle15693SampleFromReader(sniffdata & 0x01, &dreader)) { - - uint32_t eof_time = dma_start_time + (samples * 16) + 16 - DELAY_READER_TO_ARM_SNIFF; // end of EOF - if (dreader.byteCount > 0) { - uint32_t sof_time = eof_time - - dreader.byteCount * (dreader.Coding == CODING_1_OUT_OF_4 ? 128 * 16 : 2048 * 16) // time for byte transfers - - 32 * 16 // time for SOF transfer - - 16 * 16; // time for EOF transfer - LogTrace_ISO15693(dreader.output, dreader.byteCount, (sof_time * 4), (eof_time * 4), NULL, true); - if (!iclass) { // Those flags don't exist in iClass - expect_fsk_answer = dreader.output[0] & ISO15_REQ_SUBCARRIER_TWO; - expect_fast_answer = dreader.output[0] & ISO15_REQ_DATARATE_HIGH; - } - } - // And ready to receive another command - //DecodeReaderReset(&dreader); // already reseted - DecodeTagReset(&dtag); - DecodeTagFSKReset(&dtagfsk); - reader_is_active = false; - expect_tag_answer = true; } else { reader_is_active = (dreader.state >= STATE_READER_RECEIVE_DATA_1_OUT_OF_4); } } - if (!reader_is_active && expect_tag_answer) { // no need to try decoding tag data if the reader is currently sending or no answer expected yet + // no need to try decoding tag data if the reader is currently sending or no answer expected yet + if (!reader_is_active && expect_tag_answer) { if (!expect_fsk_answer) { + // single subcarrier tag response if (Handle15693SamplesFromTag((sniffdata >> 4) << 2, &dtag, expect_fast_answer)) { + // sof/eof_times are in ssp_clk, which is 13.56MHz / 4 uint32_t eof_time = dma_start_time + (samples * 16) - DELAY_TAG_TO_ARM_SNIFF; // end of EOF if (dtag.lastBit == SOF_PART2) { eof_time -= (8 * 16); // needed 8 additional samples to confirm single SOF (iCLASS) } uint32_t sof_time = eof_time - - dtag.len * 8 * 8 * 16 // time for byte transfers - - (32 * 16) // time for SOF transfer - - (dtag.lastBit != SOF_PART2 ? (32 * 16) : 0); // time for EOF transfer + - dtag.len * 1024 // time for byte transfers (4096/fc / 4) + - 512 // time for SOF transfer (2048/fc / 4) + - (dtag.lastBit != SOF_PART2 ? 512 : 0); // time for EOF transfer (2048/fc / 4) + // sof/eof_times * 4 here to bring from ssp_clk freq to RF carrier freq LogTrace_ISO15693(dtag.output, dtag.len, (sof_time * 4), (eof_time * 4), NULL, false); + // And ready to receive another response. DecodeTagReset(&dtag); DecodeTagFSKReset(&dtagfsk); @@ -1807,26 +1798,23 @@ void SniffIso15693(uint8_t jam_search_len, uint8_t *jam_search_string, bool icla tag_is_active = (dtag.state >= STATE_TAG_RECEIVING_DATA); } } else { + // dual subcarrier tag response if (FREQ_IS_0((sniffdata >> 2) & 0x3)) // tolerate 1 00 sniffdata = sniffdata_prev; if (Handle15693FSKSamplesFromTag((sniffdata >> 2) & 0x3, &dtagfsk, expect_fast_answer)) { - expect_fsk_answer = false; - } else { - tag_is_active = (dtagfsk.state >= STATE_FSK_RECEIVING_DATA_484); - } - if (!expect_fsk_answer) { - // FSK answer no more expected: switch back to ASK if (dtagfsk.len > 0) { + // sof/eof_times are in ssp_clk, which is 13.56MHz / 4 uint32_t eof_time = dma_start_time + (samples * 16) - DELAY_TAG_TO_ARM_SNIFF; // end of EOF if (dtagfsk.lastBit == SOF) { eof_time -= (8 * 16); // needed 8 additional samples to confirm single SOF (iCLASS) } uint32_t sof_time = eof_time - - dtagfsk.len * 8 * 8 * 16 // time for byte transfers - - (32 * 16) // time for SOF transfer - - (dtagfsk.lastBit != SOF ? (32 * 16) : 0); // time for EOF transfer + - dtagfsk.len * 1016 // time for byte transfers (4064/fc / 4) - FSK is slightly different + - 512 // time for SOF transfer (2048/fc / 4) + - (dtagfsk.lastBit != SOF ? 512 : 0); // time for EOF transfer (2048/fc / 4) + // sof/eof_times * 4 here to bring from ssp_clk freq to RF carrier freq LogTrace_ISO15693(dtagfsk.output, dtagfsk.len, (sof_time * 4), (eof_time * 4), NULL, false); } @@ -1834,6 +1822,10 @@ void SniffIso15693(uint8_t jam_search_len, uint8_t *jam_search_string, bool icla DecodeReaderReset(&dreader); expect_tag_answer = false; tag_is_active = false; + // FSK answer no more expected: switch back to ASK + expect_fsk_answer = false; + } else { + tag_is_active = (dtagfsk.state >= STATE_FSK_RECEIVING_DATA_484); } } } From 6d48b1a5dd4afabec6e6d764687cc0ad6cdc42c2 Mon Sep 17 00:00:00 2001 From: nvx Date: Thu, 15 Jun 2023 22:23:46 +1000 Subject: [PATCH 0052/1034] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 700f906bc..e427cf587 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `hf 15693/iclass sniff` trace timings (@nvx) - Fixed `trace list` - now handles marking of crc bytes w color a bit better (@iceman1001) - Changed `hf mfu pwdgen -r` - now generates pwd/pack for Philips Sonicare, thanks @ckuenzi, @atc1441 (@iceman1001) - Changed `hf mfu info` - now detects Philips Sonicare devices (@iceman1001) From be507e166293d763003c90426ec628ebb1175045 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 15 Jun 2023 16:09:15 +0200 Subject: [PATCH 0053/1034] Avoid spurious 'No history will be recorded' error on fresh install --- client/src/proxmark3.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 378b9f0dc..162bc7776 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -250,16 +250,13 @@ main_loop(char *script_cmds_file, char *script_cmd, bool stayInCommandLoop) { if (g_session.incognito) { PrintAndLogEx(INFO, "No history will be recorded"); } else { - bool loaded_history = false; if (searchHomeFilePath(&g_session.history_path, NULL, PROXHISTORY, true) != PM3_SUCCESS) { g_session.history_path = NULL; - } else { - loaded_history = (pm3line_load_history(g_session.history_path) == PM3_SUCCESS); - } - if (loaded_history) { - pm3line_install_signals(); - } else { PrintAndLogEx(ERR, "No history will be recorded"); + } else { + if (pm3line_load_history(g_session.history_path) != PM3_SUCCESS) { + PrintAndLogEx(INFO, "No previous history could be loaded"); + } } } From 620e5f49512c7539c689ee7b95efdf9b998c52fd Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 15 Jun 2023 22:47:21 +0200 Subject: [PATCH 0054/1034] simplify logic --- client/src/cmdtrace.c | 44 ++++++++++--------------------------------- 1 file changed, 10 insertions(+), 34 deletions(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index ad4847e35..c2e750623 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -660,26 +660,14 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr char *cb_str = str_dup(pos1 + 1); - if (hdr->isResponse) { - if (g_session.supports_colors) { - if (crcStatus == 0) { - snprintf(pos1, 24, AEND " " _RED_("%s"), cb_str); - } else { - snprintf(pos1, 24, AEND " " _GREEN_("%s"), cb_str); - } + if (g_session.supports_colors) { + if (crcStatus == 0) { + snprintf(pos1, 24, AEND " " _RED_("%s"), cb_str); } else { - snprintf(pos1, 9, "[%s]", cb_str); + snprintf(pos1, 24, AEND " " _GREEN_("%s"), cb_str); } } else { - if (g_session.supports_colors) { - if (crcStatus == 0) { - snprintf(pos1, 24, AEND " " _RED_("%s"), cb_str); - } else { - snprintf(pos1, 24, AEND " " _GREEN_("%s"), cb_str); - } - } else { - snprintf(pos1, 9, "[%s]", cb_str); - } + snprintf(pos1, 9, "[%s]", cb_str); } // odd case of second crc byte is alone in a new line @@ -690,26 +678,14 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr pos1 = line[((data_len - 2) / TRACE_MAX_HEX_BYTES) + 1]; cb_str = str_dup(pos1); - if (hdr->isResponse) { - if (g_session.supports_colors) { - if (crcStatus == 0) { - snprintf(pos1, 24, _RED_("%s"), cb_str); - } else { - snprintf(pos1, 24, _GREEN_("%s"), cb_str); - } + if (g_session.supports_colors) { + if (crcStatus == 0) { + snprintf(pos1, 24, _RED_("%s"), cb_str); } else { - snprintf(pos1, 9, "[%s]", cb_str); + snprintf(pos1, 24, _GREEN_("%s"), cb_str); } } else { - if (g_session.supports_colors) { - if (crcStatus == 0) { - snprintf(pos1, 24, _RED_("%s"), cb_str); - } else { - snprintf(pos1, 24, _GREEN_("%s"), cb_str); - } - } else { - snprintf(pos1, 9, "[%s]", cb_str); - } + snprintf(pos1, 9, "[%s]", cb_str); } } From 28fa53170ee5092bf81697dadbc3ca091b1dbf72 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 16 Jun 2023 04:34:26 +0200 Subject: [PATCH 0055/1034] hf mfp mad now has same checks as mf mad cmd --- client/src/cmdhfmfp.c | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index a48dd45c7..ccf2e8f78 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1109,7 +1109,7 @@ static int CmdHFMFPChk(const char *Cmd) { CLIParserInit(&ctx, "hf mfp chk", "Checks keys on MIFARE Plus card", "hf mfp chk -k 000102030405060708090a0b0c0d0e0f -> check key on sector 0 as key A and B\n" - "hf mfp chk -s 2 -a -> check default key list on sector 2, key A\n" + "hf mfp chk -s 2 -a -> check default key list on sector 2, only key A\n" "hf mfp chk -d mfp_default_keys -s0 -e6 -> check keys from dictionary against sectors 0-6\n" "hf mfp chk --pattern1b -j keys -> check all 1-byte keys pattern and save found keys to json\n" "hf mfp chk --pattern2b --startp2b FA00 -> check all 2-byte keys pattern. Start from key FA00FA00...FA00"); @@ -1208,10 +1208,10 @@ static int CmdHFMFPChk(const char *Cmd) { uint8_t startKeyAB = 0; uint8_t endKeyAB = 1; - if (keyA && !keyB) + if (keyA && (keyB == false)) endKeyAB = 0; - if (!keyA && keyB) + if ((keyA == false) && keyB) startKeyAB = 1; if (endSector < startSector) @@ -1219,8 +1219,9 @@ static int CmdHFMFPChk(const char *Cmd) { // 1-byte pattern search mode if (pattern1b) { - for (int i = 0; i < 0x100; i++) + for (int i = 0; i < 0x100; i++) { memset(keyList[i], i, 16); + } keyListLen = 0x100; } @@ -1245,8 +1246,9 @@ static int CmdHFMFPChk(const char *Cmd) { if (keyListLen == 0) { for (int i = 0; i < g_mifare_plus_default_keys_len; i++) { - if (hex_to_bytes(g_mifare_plus_default_keys[i], keyList[keyListLen], 16) != 16) + if (hex_to_bytes(g_mifare_plus_default_keys[i], keyList[keyListLen], 16) != 16) { break; + } keyListLen++; } @@ -1259,16 +1261,20 @@ static int CmdHFMFPChk(const char *Cmd) { PrintAndLogEx(INFO, "Loaded " _YELLOW_("%"PRIu32) " keys", keyListLen); } - if (verbose == false) + if (verbose == false) { PrintAndLogEx(INFO, "Search keys"); + } while (true) { - res = MFPKeyCheck(startSector, endSector, startKeyAB, endKeyAB, keyList, keyListLen, foundKeys, verbose); - if (res == PM3_EOPABORTED) + res = plus_key_check(startSector, endSector, startKeyAB, endKeyAB, keyList, keyListLen, foundKeys, verbose); + if (res == PM3_EOPABORTED) { break; + } + if (pattern2b && startPattern < 0x10000) { - if (verbose == false) + if (verbose == false) { PrintAndLogEx(NORMAL, "p" NOLF); + } keyListLen = 0; Fill2bPattern(keyList, &keyListLen, &startPattern); @@ -1604,7 +1610,7 @@ int CmdHFMFPNDEFRead(const char *Cmd) { } PrintAndLogEx(NORMAL, ""); - if (!datalen) { + if (datalen == 0) { PrintAndLogEx(ERR, "no NDEF data"); return PM3_SUCCESS; } @@ -1618,8 +1624,20 @@ int CmdHFMFPNDEFRead(const char *Cmd) { if (fnlen != 0) { saveFile(filename, ".bin", data, datalen); } - NDEFDecodeAndPrint(data, datalen, verbose); - PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mfp ndefread -vv`") " for more details"); + + res = NDEFDecodeAndPrint(data, datalen, verbose); + if (res != PM3_SUCCESS) { + PrintAndLogEx(INFO, "Trying to parse NDEF records w/o NDEF header"); + res = NDEFRecordsDecodeAndPrint(data, datalen, verbose); + } + + if (verbose == false) { + PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mfp ndefread -v`") " for more details"); + } else { + if (verbose2 == false) { + PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mfp ndefread -vv`") " for more details"); + } + } return PM3_SUCCESS; } From d861354344391d7454fd252a6211743c65374bfe Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 16 Jun 2023 05:33:35 +0200 Subject: [PATCH 0056/1034] fix pm3-flash-all script, where the identification of outdated bootloader failed because of the comparision didnt match any longer --- CHANGELOG.md | 1 + pm3 | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84668aa29..94d492c41 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `pm3-flash-all` shell script now correctly identify the if running on outdated bootloader (@iceman1001) - Fixed `hf 15693/iclass sniff` trace timings (@nvx) - Fix LegicCash segment handling in `hf_legic.lua` script (@jmichelp) - Fixed `trace list` - now handles marking of crc bytes w color a bit better (@iceman1001) diff --git a/pm3 b/pm3 index d59d10ea6..b011c8ed5 100755 --- a/pm3 +++ b/pm3 @@ -144,7 +144,8 @@ function get_pm3_list_Windows { DEV=${DEV/ */} #prevent soft bricking when using pm3-flash-all on an outdated bootloader if [ $(basename -- "$0") = "pm3-flash-all" ]; then - if [ ! $(wmic /locale:ms_409 path Win32_SerialPort Where "DeviceID='$DEV'" Get PNPDeviceID 2>/dev/null | awk -b '/^USB/{print $1}') = "USB\VID_9AC4&PID_4B8F\ICEMAN" ]; then + line=$(wmic /locale:ms_409 path Win32_SerialPort Where "DeviceID='$DEV'" Get PNPDeviceID 2>/dev/null | awk -b '/^USB/{print $1}'); + if [[ ! $line =~ ^"USB\VID_9AC4&PID_4B8F\ICEMAN" ]]; then echo -e "\033[0;31m[!] Using pm3-flash-all on an oudated bootloader, use pm3-flash-bootrom first!" exit 1 fi @@ -189,9 +190,11 @@ function get_pm3_list_WSL { DEV=$(echo $DEV | sed -nr 's#^COM([0-9]+)\b#/dev/ttyS\1#p') # ttyS counterpart takes some more time to appear if [ -e "$DEV" ]; then + #prevent soft bricking when using pm3-flash-all on an outdated bootloader if [ $(basename -- "$0") = "pm3-flash-all" ]; then - if [ ! $($PSHEXE -command "Get-CimInstance -ClassName Win32_serialport | Where-Object {\$_.DeviceID -eq '$_comport'} | Select -expandproperty PNPDeviceID" 2>/dev/null | tr -dc '[:print:]') = "USB\VID_9AC4&PID_4B8F\ICEMAN" ]; then + line=$($PSHEXE -command "Get-CimInstance -ClassName Win32_serialport | Where-Object {\$_.DeviceID -eq '$_comport'} | Select -expandproperty PNPDeviceID" 2>/dev/null | tr -dc '[:print:]'); + if [[ ! $line =~ ^"USB\VID_9AC4&PID_4B8F\ICEMAN" ]]; then echo -e "\033[0;31m[!] Using pm3-flash-all on an oudated bootloader, use pm3-flash-bootrom first!" exit 1 fi From 2010d10f81b0b07d30413222415c2364523da5d5 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 16 Jun 2023 05:34:52 +0200 Subject: [PATCH 0057/1034] forgot to push function rename --- client/src/cmdhfmfp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index ccf2e8f78..9434d88ed 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1000,7 +1000,7 @@ static int CmdHFMFPWrbl(const char *Cmd) { #define AES_KEY_LEN 16 #define MAX_KEYS_LIST_LEN 1024 -static int MFPKeyCheck(uint8_t startSector, uint8_t endSector, uint8_t startKeyAB, uint8_t endKeyAB, +static int plus_key_check(uint8_t startSector, uint8_t endSector, uint8_t startKeyAB, uint8_t endKeyAB, uint8_t keyList[MAX_KEYS_LIST_LEN][AES_KEY_LEN], size_t keyListLen, uint8_t foundKeys[2][64][AES_KEY_LEN + 1], bool verbose) { int res; From d65094b7e0900c7470a26863fe4d636f61d0b39f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 19 Jun 2023 15:01:40 +0200 Subject: [PATCH 0058/1034] fixed some color to mad directory printings and fixed a sector issue in when saving keyfiles to Mifare Plus cards --- client/src/fileutils.c | 8 ++++---- client/src/mifare/mad.c | 18 ++++++++++++++---- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 8fd06456e..3411215c6 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -551,19 +551,19 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, if (atslen > 0) JsonSaveBufAsHexCompact(root, "$.Card.ATS", &data[14], atslen); - uint8_t vdata[2][64][16 + 1] = {{{0}}}; - memcpy(vdata, &data[14 + atslen], 2 * 64 * 17); + uint8_t vdata[2][64][17] = {{{0}}}; + memcpy(vdata, data + (14 + atslen), 2 * 64 * 17); for (size_t i = 0; i < datalen; i++) { char path[PATH_MAX_LENGTH] = {0}; if (vdata[0][i][0]) { - snprintf(path, sizeof(path), "$.SectorKeys.%d.KeyA", mfSectorNum(i)); + snprintf(path, sizeof(path), "$.SectorKeys.%zu.KeyA", i); JsonSaveBufAsHexCompact(root, path, &vdata[0][i][1], 16); } if (vdata[1][i][0]) { - snprintf(path, sizeof(path), "$.SectorKeys.%d.KeyB", mfSectorNum(i)); + snprintf(path, sizeof(path), "$.SectorKeys.%zu.KeyB", i); JsonSaveBufAsHexCompact(root, path, &vdata[1][i][1], 16); } } diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index 328c2e63c..c870dbb28 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -331,12 +331,22 @@ int MAD1DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose, bool *haveMA for (int i = 1; i < 16; i++) { uint16_t aid = madGetAID(sector, swapmad, 1, i); if (aid < 6) { - PrintAndLogEx(INFO, (ibs == i) ? _MAGENTA_(" %02d [%04X] (%s)") : " %02d [%04X] (%s)", i, aid, aid_admin[aid]); + PrintAndLogEx(INFO, + (ibs == i) ? _MAGENTA_(" %02d [%04X] %s") : " %02d [" _GREEN_("%04X") "] %s", + i, + aid, + aid_admin[aid] + ); + } else if (prev_aid == aid) { - PrintAndLogEx(INFO, (ibs == i) ? _MAGENTA_(" %02d [%04X] (continuation)") : " %02d [%04X] (continuation)", i, aid); + PrintAndLogEx(INFO, + (ibs == i) ? _MAGENTA_(" %02d [%04X] continuation") : " %02d [" _YELLOW_("%04X") "] continuation", + i, + aid + ); } else { - char fmt[30]; - snprintf(fmt, sizeof(fmt), (ibs == i) ? _MAGENTA_(" %02d [%04X]%s") : " %02d [%04X]%s", i, aid, "%s"); + char fmt[60]; + snprintf(fmt, sizeof(fmt), (ibs == i) ? _MAGENTA_(" %02d [%04X]%s") : " %02d [" _GREEN_("%04X") "]%s", i, aid, "%s"); print_aid_description(mad_known_aids, aid, fmt, verbose); prev_aid = aid; } From a4a7033b2385ff679101e8febcb3ce8c259d6dd6 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 21 Jun 2023 18:43:21 +0200 Subject: [PATCH 0059/1034] adapt comparision of text --- client/src/nfc/ndef.c | 2 +- client/src/wiegand_formats.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index 40cfe7113..e03913fbc 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -927,7 +927,7 @@ static int ndefDecodeExternal_record(NDEFHeader_t *ndef) { print_hex_noascii_break(ndef->Payload, ndef->PayloadLen, 32); // do a character check? - if (!strncmp((char *)ndef->Type, "pilet.ee:ekaart:2", ndef->TypeLen)) { + if (!strncmp((char *)ndef->Type, "pilet.ee:ekaart:", ndef->TypeLen - 1)) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, _GREEN_("Ekaart detected") " - Trying ASN1 decode..."); asn1_print(ndef->Payload, ndef->PayloadLen, " "); diff --git a/client/src/wiegand_formats.c b/client/src/wiegand_formats.c index e63040a19..f88c8f759 100644 --- a/client/src/wiegand_formats.c +++ b/client/src/wiegand_formats.c @@ -730,7 +730,9 @@ static bool Pack_C15001(wiegand_card_t *card, wiegand_message_t *packed, bool pr static bool Unpack_C15001(wiegand_message_t *packed, wiegand_card_t *card) { memset(card, 0, sizeof(wiegand_card_t)); - if (packed->Length != 36) return false; // Wrong length? Stop here. + + if (packed->Length != 36) + return false; // Wrong length? Stop here. card->OEM = get_linear_field(packed, 1, 10); card->FacilityCode = get_linear_field(packed, 11, 8); @@ -976,8 +978,10 @@ static bool Pack_C1k48s(wiegand_card_t *card, wiegand_message_t *packed, bool pr packed->Mid |= (evenparity32((packed->Mid & 0x00001B6D) ^ (packed->Bot & 0xB6DB6DB6))) << 14; packed->Bot |= (oddparity32((packed->Mid & 0x000036DB) ^ (packed->Bot & 0x6DB6DB6C))); packed->Mid |= (oddparity32((packed->Mid & 0x00007FFF) ^ (packed->Bot & 0xFFFFFFFF))) << 15; + if (preamble) return add_HID_header(packed); + return true; } From 681382e0cc429d786317f4858a51ae8d07d01c27 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 21 Jun 2023 18:45:25 +0200 Subject: [PATCH 0060/1034] new AID for Kiev metro card --- client/resources/mad.json | 14 ++++++++++++++ client/src/cmdhfmfp.h | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/client/resources/mad.json b/client/resources/mad.json index cfa6294d3..38cdf2636 100644 --- a/client/resources/mad.json +++ b/client/resources/mad.json @@ -4073,6 +4073,20 @@ "service_provider": "HID Corporation", "system_integrator": "HID Corporation" }, + { + "application": "City transport, prepaid ticket, cardholder, servicespass", + "company": "Ridango AS", + "mad": "0x3C56", + "service_provider": "Pilet.ee ekaart", + "system_integrator": "Pilet.ee ekaart" + }, + { + "application": "City transport, prepaid ticket, cardholder, servicespass", + "company": "Ridango AS", + "mad": "0x3D56", + "service_provider": "Pilet.ee ekaart", + "system_integrator": "Pilet.ee ekaart" + }, { "application": "City transport bus, ferry, administration", "company": "VFJ Technology Pty Ltd", diff --git a/client/src/cmdhfmfp.h b/client/src/cmdhfmfp.h index 7381f87a2..2a4d7cd2c 100644 --- a/client/src/cmdhfmfp.h +++ b/client/src/cmdhfmfp.h @@ -20,6 +20,10 @@ #include "common.h" + +#define AES_KEY_LEN 16 +#define MAX_AES_KEYS_LIST_LEN 1024 + int CmdHFMFP(const char *Cmd); int CmdHFMFPNDEFRead(const char *Cmd); From cdb906cd23ac66106eaca1f474207220f30c71e0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 21 Jun 2023 18:45:59 +0200 Subject: [PATCH 0061/1034] style --- client/luascripts/lf_ident_json.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/luascripts/lf_ident_json.lua b/client/luascripts/lf_ident_json.lua index 73794547c..11657910d 100644 --- a/client/luascripts/lf_ident_json.lua +++ b/client/luascripts/lf_ident_json.lua @@ -113,7 +113,7 @@ local function getDefault(block0) block0 = block0:upper() - local T55X7_DEFAULT_CONFIG_BLOCK = '000880E8' --// compat mode, RF/32, manchester, STT, 7 data blocks + local T55X7_DEFAULT_CONFIG_BLOCK = '000880E8' --// compat mode, RF/32, manchester, STT, 7 data blocks local T55X7_RAW_CONFIG_BLOCK = '000880E0' --// compat mode, RF/32, manchester, 7 data blocks local T55X7_EM_UNIQUE_CONFIG_BLOCK = '00148040' --// emulate em4x02/unique - compat mode, manchester, RF/64, 2 data blocks -- FDXB requires data inversion and BiPhase 57 is simply BipHase 50 inverted, so we can either do it using the modulation scheme or the inversion flag From d3792c0853272545282ba6cbde781849415711ee Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 21 Jun 2023 18:48:04 +0200 Subject: [PATCH 0062/1034] adapt mifare plus key files to be loaded/saved in json. WIP , will need a typedef struct in order to work properly --- client/src/fileutils.c | 44 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 3411215c6..aad9b9cce 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -29,6 +29,7 @@ #include "cmdhficlass.h" // pagemap #include "protocols.h" // iclass defines #include "cmdhftopaz.h" // TOPAZ defines +#include "cmdhfmfp.h" // MFP / AES defines #ifdef _WIN32 #include "scandir.h" @@ -543,13 +544,14 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, break; } case jsfMfPlusKeys: { - JsonSaveStr(root, "FileType", "mfp"); + JsonSaveStr(root, "FileType", "mfpkeys"); JsonSaveBufAsHexCompact(root, "$.Card.UID", &data[0], 7); JsonSaveBufAsHexCompact(root, "$.Card.SAK", &data[10], 1); JsonSaveBufAsHexCompact(root, "$.Card.ATQA", &data[11], 2); uint8_t atslen = data[13]; - if (atslen > 0) + if (atslen > 0) { JsonSaveBufAsHexCompact(root, "$.Card.ATS", &data[14], atslen); + } uint8_t vdata[2][64][17] = {{{0}}}; memcpy(vdata, data + (14 + atslen), 2 * 64 * 17); @@ -559,12 +561,12 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, if (vdata[0][i][0]) { snprintf(path, sizeof(path), "$.SectorKeys.%zu.KeyA", i); - JsonSaveBufAsHexCompact(root, path, &vdata[0][i][1], 16); + JsonSaveBufAsHexCompact(root, path, &vdata[0][i][1], AES_KEY_LEN); } if (vdata[1][i][0]) { snprintf(path, sizeof(path), "$.SectorKeys.%zu.KeyB", i); - JsonSaveBufAsHexCompact(root, path, &vdata[1][i][1], 16); + JsonSaveBufAsHexCompact(root, path, &vdata[1][i][1], AES_KEY_LEN); } } break; @@ -1296,6 +1298,40 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz *datalen += sptr; } + + if (!strcmp(ctype, "mfpkeys")) { + + JsonLoadBufAsHex(root, "$.Card.UID", udata.bytes, 7, datalen); + JsonLoadBufAsHex(root, "$.Card.SAK", udata.bytes + 10, 1, datalen); + JsonLoadBufAsHex(root, "$.Card.ATQA", udata.bytes + 11, 2, datalen); + uint8_t atslen = udata.bytes[13]; + if (atslen > 0) { + JsonLoadBufAsHex(root, "$.Card.ATS", udata.bytes + 14, atslen, datalen); + } + + size_t sptr = (14 + atslen); + + // memcpy(vdata, udata.bytes + (14 + atslen), 2 * 64 * 17); + for (size_t i = 0; i < 64; i++) { + + if ((sptr + (AES_KEY_LEN * 2)) > maxdatalen) { + break; + } + + size_t offset = (14 + atslen) + (i * 2 * AES_KEY_LEN); + + char blocks[40] = {0}; + snprintf(blocks, sizeof(blocks), "$.SectorKeys.%zu.KeyA", i); + JsonLoadBufAsHex(root, blocks, udata.bytes + offset, AES_KEY_LEN, datalen); + + snprintf(blocks, sizeof(blocks), "$.SectorKeys.%zu.KeyB", i); + JsonLoadBufAsHex(root, blocks, udata.bytes + offset + AES_KEY_LEN, AES_KEY_LEN, datalen); + + sptr += (2 * AES_KEY_LEN); + } + *datalen += sptr; + } + out: if (callback != NULL) { From c7af7169426b656c556715cbab8b3cacfdbc3e29 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 21 Jun 2023 18:49:12 +0200 Subject: [PATCH 0063/1034] style --- client/src/uart/uart_posix.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index 86d76317b..c64d85db6 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -189,6 +189,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { free(sp); return INVALID_SERIAL_PORT; } + int sfd = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM); if (sfd == -1) { PrintAndLogEx(ERR, "Error opening Bluetooth socket"); @@ -196,6 +197,7 @@ serial_port uart_open(const char *pcPortName, uint32_t speed) { free(sp); return INVALID_SERIAL_PORT; } + if (connect(sfd, (struct sockaddr *)&addr, sizeof(addr)) == -1) { PrintAndLogEx(ERR, "Error: cannot connect device " _YELLOW_("%s") " over Bluetooth", addrstr); close(sfd); From 1bd389bdd0c408e732f4b6c6b3cc89c7e41a53fb Mon Sep 17 00:00:00 2001 From: kormax Date: Thu, 22 Jun 2023 18:06:23 +0300 Subject: [PATCH 0064/1034] Add annotation for AirDrop ECP frame --- client/src/cmdhflist.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index fe0ee46b0..b38d7fea4 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -189,7 +189,7 @@ int applyIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool i if (cmd[1] == 0x01 && cmdsize == 7) { snprintf(exp, size, "ECP1"); return PM3_SUCCESS; - } else if (cmd[1] == 0x02 && cmdsize == (cmd[2] & 0x0f) + 7) { + } else if (cmd[1] == 0x02 && cmdsize == (cmd[2] & 0x0F) + 7) { // Byte 3 is the reader type switch (cmd[3]) { case 0x01: @@ -201,6 +201,9 @@ int applyIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool i case 0x03: snprintf(exp, size, "ECP2 (Identity)"); break; + case 0x05: + snprintf(exp, size, "ECP2 (AirDrop)"); + break; default: snprintf(exp, size, "ECP2"); break; From 57b827613b91266376a1a463c294036355f9fb95 Mon Sep 17 00:00:00 2001 From: kormax Date: Thu, 22 Jun 2023 18:30:52 +0300 Subject: [PATCH 0065/1034] Update aidlist.json --- client/resources/aidlist.json | 106 +++++++++++++++++++++++++++++----- 1 file changed, 93 insertions(+), 13 deletions(-) diff --git a/client/resources/aidlist.json b/client/resources/aidlist.json index ff574dd6a..9173d0a10 100644 --- a/client/resources/aidlist.json +++ b/client/resources/aidlist.json @@ -2255,13 +2255,21 @@ "Description": "Student ID cards", "Type": "identity" }, + { + "AID": "D2760000254D010200", + "Vendor": "Zentraler Kreditausschuss (ZKA)", + "Country": "Germany", + "Name": "Girocard Jugendschutz", + "Description": "Age verification", + "Type": "identity" + }, { "AID": "A000000809434343444B467631", "Vendor": "Car Connectivity Consortium (CCC)", "Country": "", "Name": "Digital Car Key Framework", "Description": "Used during key provisioning and configuration", - "Type": "access" + "Type": "" }, { "AID": "A000000809434343444B417631", @@ -2295,13 +2303,69 @@ "Description": "AID prefix used by MIFARE 2GO-based cards", "Type": "" }, + { + "AID": "A00000039656434103F1216000000000", + "Vendor": "LV Monorail", + "Country": "United States", + "Name": "Las Vegas Monorail", + "Description": "", + "Type": "transport" + }, + { + "AID": "A00000039656434103F8852200000000", + "Vendor": "Ubian", + "Country": "Slovakia", + "Name": "Ubian digital transit card", + "Description": "DESFire-based virtual transit card", + "Type": "transport" + }, + { + "AID": "DE5C0D1F1CADA5", + "Vendor": "CRTM", + "Country": "Spain", + "Name": "Madrid transit card", + "Description": "DESFire-based transit card", + "Type": "transport" + }, + { + "AID": "A00000F21100", + "Vendor": "PTV", + "Country": "Australia", + "Name": "Myki transit card", + "Description": "DESFire-based transit card", + "Type": "transport" + }, + { + "AID": "637001ff4c41", + "Vendor": "Cubic", + "Country": "United States", + "Name": "LA Tap", + "Description": "DESFire-based transit card (ASCII cp\\x01\\xffLA)", + "Type": "transport" + }, + { + "AID": "637001ff574d415441", + "Vendor": "Cubic", + "Country": "United States", + "Name": "Smart Trip", + "Description": "DESFire-based transit card (ASCII cp\\x01\\xffWMATA)", + "Type": "transport" + }, + { + "AID": "637001ff434c4950504552", + "Vendor": "Cubic", + "Country": "United States", + "Name": "Clipper", + "Description": "DESFire-based transit card (ASCII cp\\x01\\xffCLIPPER)", + "Type": "transport" + }, { "AID": "A0000002164954534F2D31", "Vendor": "ITSO", "Country": "United Kingdom", "Name": "ITSO CMD2", "Description": "AID used by ITSO for smartcard/phone-based transit cards", - "Type": "transit" + "Type": "transport" }, { "AID": "A000000632010105", @@ -2309,22 +2373,38 @@ "Country": "China", "Name": "China T-Union", "Description": "Universal transit card used by many big public transit operators", - "Type": "transit" - }, - { - "AID": "D2760000254D010200", - "Vendor": "Zentraler Kreditausschuss (ZKA)", - "Country": "Germany", - "Name": "Girocard Jugendschutz", - "Description": "Age verification", - "Type": "" + "Type": "transport" }, { "AID": "A00000000491", "Vendor": "MasterCard International", "Country": "", "Name": "Mastercard Private Label Transit", - "Description": "AID prefix used by transit cards that use private label mastercards (E.g. Ventra and HOP)", - "Type": "transit" + "Description": "AID prefix used by transit cards that use private label mastercard", + "Type": "transport" + }, + { + "AID": "A0000000049100", + "Vendor": "MasterCard International", + "Country": "United States", + "Name": "HOP Fastpass", + "Description": "", + "Type": "transport" + }, + { + "AID": "A0000000049101", + "Vendor": "MasterCard International", + "Country": "United States", + "Name": "Ventra", + "Description": "", + "Type": "transport" + }, + { + "AID": "A000000858044F53452E4348", + "Vendor": "Apple", + "Country": "", + "Name": "AirDrop connection negotiation", + "Description": "Used by NFC-based AirDrop negotiation added in IOS17", + "Type": "" } ] From f138e54db6289ea936b3da112d740b23f0f61a06 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 22 Jun 2023 22:34:49 +0200 Subject: [PATCH 0066/1034] fix: missing includes when building with "gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9)" --- tools/mfd_aes_brute/mfd_aes_brute.c | 1 + tools/mfd_aes_brute/mfd_multi_brute.c | 1 + 2 files changed, 2 insertions(+) diff --git a/tools/mfd_aes_brute/mfd_aes_brute.c b/tools/mfd_aes_brute/mfd_aes_brute.c index 19bb54ce5..53a984421 100644 --- a/tools/mfd_aes_brute/mfd_aes_brute.c +++ b/tools/mfd_aes_brute/mfd_aes_brute.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "util_posix.h" #define AEND "\x1b[0m" diff --git a/tools/mfd_aes_brute/mfd_multi_brute.c b/tools/mfd_aes_brute/mfd_multi_brute.c index 226fd9f7f..b097c77d7 100644 --- a/tools/mfd_aes_brute/mfd_multi_brute.c +++ b/tools/mfd_aes_brute/mfd_multi_brute.c @@ -35,6 +35,7 @@ #include #include #include +#include //#include #include "util_posix.h" #include "randoms.h" From 492a09f5ccd6300df003233a96cbfb34dcea1632 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 22 Jun 2023 22:51:16 +0200 Subject: [PATCH 0067/1034] correct LEGIC 16bit CRC calculation "hf legic crc", use init_table(CRC_LEGIC_16) to be consistent with l_crc16legic in client/src/scripting.c --- client/src/cmdhflegic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 02a43e0aa..b842ddf54 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -682,7 +682,7 @@ static int CmdLegicCalcCrc(const char *Cmd) { switch (type) { case 16: - init_table(CRC_LEGIC); + init_table(CRC_LEGIC_16); PrintAndLogEx(SUCCESS, "Legic crc16: %X", crc16_legic(data, data_len, mcc[0])); break; default: From 59a2b63d6be3138f6d60d06c0ac5fc074a2842bd Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 06:56:05 +0200 Subject: [PATCH 0068/1034] thanks to user Hawkeye which tested on old conference badges on a NTAG216 --- client/dictionaries/t55xx_default_pwds.dic | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/dictionaries/t55xx_default_pwds.dic b/client/dictionaries/t55xx_default_pwds.dic index e56904ea4..9231b9314 100644 --- a/client/dictionaries/t55xx_default_pwds.dic +++ b/client/dictionaries/t55xx_default_pwds.dic @@ -52,6 +52,8 @@ C0F5009A # prefered pwds of members in the community FEEDBEEF DEADC0DE +# derived from BCARD key B +A9EF2AFC # Default pwd, simple: 00000000 11111111 From db4086718d43a6679afcdb052bed1dcce0cfdd17 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 13:37:37 +0200 Subject: [PATCH 0069/1034] kety length checks for hf mf rdbl, rdsc, wrbl, and some textual changes to hf mf mad --- client/src/cmdhfmf.c | 66 ++++++++++++++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 21 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 6aac4677c..066e1bdfd 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -785,7 +785,8 @@ static int CmdHF14AMfWrBl(const char *Cmd) { " \n" "`--force` param is used to override warnings like bad ACL and BLOCK 0 writes.\n" " if not specified, it will exit if detected", - "hf mf wrbl --blk 1 -k FFFFFFFFFFFF -d 000102030405060708090a0b0c0d0e0f" + "hf mf wrbl --blk 1 -d 000102030405060708090a0b0c0d0e0f\n" + "hf mf wrbl --blk 1 -k A0A1A2A3A4A5 -d 000102030405060708090a0b0c0d0e0f\n" ); void *argtable[] = { arg_param_begin, @@ -813,7 +814,7 @@ static int CmdHF14AMfWrBl(const char *Cmd) { bool force = arg_get_lit(ctx, 4); int keylen = 0; - uint8_t key[6] = {0}; + uint8_t key[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; CLIGetHexWithReturn(ctx, 5, key, &keylen); uint8_t block[MFBLOCK_SIZE] = {0x00}; @@ -821,6 +822,11 @@ static int CmdHF14AMfWrBl(const char *Cmd) { CLIGetHexWithReturn(ctx, 6, block, &blen); CLIParserFree(ctx); + if (keylen && keylen != 6) { + PrintAndLogEx(WARNING, "Key must be 12 hex digits. Got %d", keylen); + return PM3_EINVARG; + } + if (blen != MFBLOCK_SIZE) { PrintAndLogEx(WARNING, "block data must include 16 HEX bytes. Got %i", blen); return PM3_EINVARG; @@ -879,7 +885,8 @@ static int CmdHF14AMfRdBl(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf rdbl", "Read MIFARE Classic block", - "hf mf rdbl --blk 0 -k FFFFFFFFFFFF\n" + "hf mf rdbl --blk 0\n" + "hf mf rdbl --blk 0 -k A0A1A2A3A4A5\n" "hf mf rdbl --blk 3 -v -> get block 3, decode sector trailer\n" ); void *argtable[] = { @@ -904,11 +911,16 @@ static int CmdHF14AMfRdBl(const char *Cmd) { } int keylen = 0; - uint8_t key[6] = {0}; + uint8_t key[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; CLIGetHexWithReturn(ctx, 4, key, &keylen); bool verbose = arg_get_lit(ctx, 5); CLIParserFree(ctx); + if (keylen && keylen != 6) { + PrintAndLogEx(WARNING, "Key must be 12 hex digits. Got %d", keylen); + return PM3_EINVARG; + } + if (b > 255) { return PM3_EINVARG; } @@ -934,7 +946,8 @@ static int CmdHF14AMfRdSc(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf rdsc", "Read MIFARE Classic sector", - "hf mf rdsc -s 0 -k FFFFFFFFFFFF\n" + "hf mf rdsc -s 0\n" + "hf mf rdsc -s 0 -k A0A1A2A3A4A5\n" ); void *argtable[] = { arg_param_begin, @@ -956,17 +969,23 @@ static int CmdHF14AMfRdSc(const char *Cmd) { } int keylen = 0; - uint8_t key[6] = {0}; + uint8_t key[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; CLIGetHexWithReturn(ctx, 3, key, &keylen); int s = arg_get_int_def(ctx, 4, 0); bool verbose = arg_get_lit(ctx, 5); CLIParserFree(ctx); + if (keylen && keylen != 6) { + PrintAndLogEx(WARNING, "Key must be 12 hex digits. Got %d", keylen); + return PM3_EINVARG; + } + if (s > MIFARE_4K_MAXSECTOR) { PrintAndLogEx(WARNING, "Sector number must be less then 40"); return PM3_EINVARG; } + uint8_t sector = (uint8_t)s; uint16_t sc_size = mfNumBlocksPerSector(sector) * MFBLOCK_SIZE; @@ -1266,7 +1285,7 @@ static int CmdHF14AMfRestore(const char *Cmd) { return PM3_ESOFT; } - PrintAndLogEx(INFO, "Using `" _YELLOW_("%s") "`", keyfilename); + PrintAndLogEx(INFO, "Using key file... `" _YELLOW_("%s") "`", keyfilename); // try reading card uid and create filename if (datafnlen == 0) { @@ -5679,7 +5698,6 @@ static int CmdHF14AMfMAD(const char *Cmd) { block_cnt = MIFARE_4K_MAXBLOCK; if (verbose) { - PrintAndLogEx(INFO, "File: " _YELLOW_("%s"), filename); PrintAndLogEx(INFO, "File size %zu bytes, file blocks %d (0x%x)", bytes_read, block_cnt, block_cnt); } @@ -5733,6 +5751,11 @@ static int CmdHF14AMfMAD(const char *Cmd) { PrintAndLogEx(INFO, ""); PrintAndLogEx(INFO, _CYAN_("VIGIK PACS detected")); } + + if (haveMAD2) { + MAD2DecodeAndPrint(dump + (MIFARE_1K_MAXBLOCK * MF_MAD2_SECTOR), swapmad, verbose); + } + free(dump); return PM3_SUCCESS; } @@ -5916,8 +5939,9 @@ int CmdHFMFNDEFRead(const char *Cmd) { uint8_t data[4096] = {0}; int datalen = 0; - if (verbose) + if (verbose) { PrintAndLogEx(INFO, "reading MAD v1 sector"); + } if (mfReadSector(MF_MAD1_SECTOR, MF_KEY_A, g_mifare_mad_key, sector0)) { PrintAndLogEx(ERR, "error, read sector 0. card doesn't have MAD or doesn't have MAD on default keys"); @@ -5925,24 +5949,24 @@ int CmdHFMFNDEFRead(const char *Cmd) { return PM3_ESOFT; } + if (verbose) { + PrintAndLogEx(INFO, "reading MAD v2 sector"); + } + + if (mfReadSector(MF_MAD2_SECTOR, MF_KEY_A, g_mifare_mad_key, sector10)) { + if (verbose) { + PrintAndLogEx(ERR, "error, read sector 0x10. card doesn't have MAD 2 or doesn't have MAD 2 on default keys"); + PrintAndLogEx(INFO, "Skipping MAD 2"); + } + } + bool haveMAD2 = false; - int res = MADCheck(sector0, NULL, verbose, &haveMAD2); + int res = MADCheck(sector0, sector10, verbose, &haveMAD2); if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "MAD error %d", res); return res; } - if (haveMAD2) { - if (verbose) - PrintAndLogEx(INFO, "reading MAD v2 sector"); - - if (mfReadSector(MF_MAD2_SECTOR, MF_KEY_A, g_mifare_mad_key, sector10)) { - PrintAndLogEx(ERR, "error, read sector 0x10. card doesn't have MAD or doesn't have MAD on default keys"); - PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mf ndefread -k `") " with your custom key"); - return PM3_ESOFT; - } - } - uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen, false); From 7fe02233d82cc8fb49d2ca144348924d2016b595 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 13:56:59 +0200 Subject: [PATCH 0070/1034] textual changes to MAD output --- client/src/mifare/mad.c | 47 +++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index c870dbb28..42a05c5a2 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -190,7 +190,7 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) uint8_t GPB = sector0[(3 * 16) + 9]; if (verbose) - PrintAndLogEx(SUCCESS, "%14s " _GREEN_("0x%02x"), "GPB", GPB); + PrintAndLogEx(SUCCESS, "GPB....... " _GREEN_("0x%02X"), GPB); // DA (MAD available) if (!(GPB & 0x80)) { @@ -200,21 +200,22 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) uint8_t mad_ver = GPB & 0x03; if (verbose) - PrintAndLogEx(SUCCESS, "%14s " _GREEN_("%d"), "MAD version", mad_ver); + PrintAndLogEx(SUCCESS, "Version... " _GREEN_("%d"), mad_ver); // MAD version if ((mad_ver != 0x01) && (mad_ver != 0x02)) { - PrintAndLogEx(ERR, "Wrong MAD version " _RED_("0x%02x"), mad_ver); + PrintAndLogEx(ERR, "Wrong MAD version " _RED_("0x%02X"), mad_ver); return PM3_ESOFT; }; - if (haveMAD2) + if (haveMAD2) { *haveMAD2 = (mad_ver == 2); + } int res = madCRCCheck(sector0, true, 1); - - if (verbose && res == PM3_SUCCESS) - PrintAndLogEx(SUCCESS, "%14s " _GREEN_("0x%02x") " ( %s )", "CRC8", sector0[16], _GREEN_("ok")); + if (verbose && res == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "CRC8...... 0x%02X ( %s )", sector0[16], _GREEN_("ok")); + } if (mad_ver == 2 && sector10) { int res2 = madCRCCheck(sector10, true, 2); @@ -222,7 +223,7 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) res = res2; if (verbose && !res2) - PrintAndLogEx(SUCCESS, "%14s " _GREEN_("0x%02x") " ( %s )", "CRC8", sector10[0], _GREEN_("ok")); + PrintAndLogEx(SUCCESS, "CRC8...... 0x%02X ( %s )", sector10[0], _GREEN_("ok")); } // MA (multi-application card) @@ -284,9 +285,10 @@ static int MADInfoByteDecode(const uint8_t *sector, bool swapmad, int mad_ver, b info = sector[16 + 1] & 0x3f; if (info >= 0xF) { PrintAndLogEx(WARNING, "Invalid Info byte (MAD1) value " _YELLOW_("0x%02x"), info); - if (verbose) + if (verbose) { // I understand the spec in a way that MAD1 InfoByte should not point into MAD2 sectors, @lukaskuzmiak PrintAndLogEx(WARNING, "MAD1 Info byte points outside of MAD1 sector space (0x%02x), report a bug?", info); + } return PM3_ESOFT; } } else { @@ -318,7 +320,7 @@ int MAD1DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose, bool *haveMA int ibs = MADInfoByteDecode(sector, swapmad, 1, verbose); if (ibs > 0) { - PrintAndLogEx(SUCCESS, "Card publisher sector " _MAGENTA_("0x%02x"), ibs); + PrintAndLogEx(SUCCESS, "Card publisher sector " _MAGENTA_("0x%02X"), ibs); } else { PrintAndLogEx(WARNING, "Card publisher " _RED_("not") " present " _YELLOW_("0x%02x"), ibs); } @@ -356,7 +358,7 @@ int MAD1DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose, bool *haveMA } int MAD2DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose) { - open_mad_file(&mad_known_aids, verbose); + open_mad_file(&mad_known_aids, false); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "------------ " _CYAN_("MAD v2 details") " -------------"); @@ -364,14 +366,14 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose) { int res = madCRCCheck(sector, true, 2); if (verbose) { if (res == PM3_SUCCESS) - PrintAndLogEx(SUCCESS, "CRC8 ( %s )", _GREEN_("ok")); + PrintAndLogEx(SUCCESS, "CRC8...... 0x%02X ( " _GREEN_("%s") " )", sector[0], "ok"); else - PrintAndLogEx(WARNING, "CRC8 ( %s )", _RED_("fail")); + PrintAndLogEx(SUCCESS, "CRC8...... 0x%02X ( " _RED_("%s") " )", sector[0], "fail"); } int ibs = MADInfoByteDecode(sector, swapmad, 2, verbose); if (ibs > 0) { - PrintAndLogEx(SUCCESS, "Card publisher sector " _MAGENTA_("0x%02x"), ibs); + PrintAndLogEx(SUCCESS, "Card publisher sector " _MAGENTA_("0x%02X"), ibs); } else { PrintAndLogEx(WARNING, "Card publisher " _RED_("not") " present " _YELLOW_("0x%02x"), ibs); } @@ -385,12 +387,21 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose) { for (int i = 1; i < 8 + 8 + 7 + 1; i++) { uint16_t aid = madGetAID(sector, swapmad, 2, i); if (aid < 6) { - PrintAndLogEx(INFO, (ibs == i) ? _MAGENTA_(" %02d [%04X] (%s)") : " %02d [%04X] (%s)", i + 16, aid, aid_admin[aid]); + PrintAndLogEx(INFO, + (ibs == i) ? _MAGENTA_(" %02d [%04X] %s") : " %02d [" _GREEN_("%04X") "] %s", + i + 16, + aid, + aid_admin[aid] + ); } else if (prev_aid == aid) { - PrintAndLogEx(INFO, (ibs == i) ? _MAGENTA_(" %02d [%04X] (continuation)") : " %02d [%04X] (continuation)", i + 16, aid); + PrintAndLogEx(INFO, + (ibs == i) ? _MAGENTA_(" %02d [%04X] continuation") : " %02d [" _YELLOW_("%04X") "] continuation", + i + 16, + aid + ); } else { - char fmt[30]; - snprintf(fmt, sizeof(fmt), (ibs == i) ? _MAGENTA_(" %02d [%04X]%s") : " %02d [%04X]%s", i + 16, aid, "%s"); + char fmt[60]; + snprintf(fmt, sizeof(fmt), (ibs == i) ? _MAGENTA_(" %02d [%04X]%s") : " %02d [" _GREEN_("%04X") "]%s", i + 16, aid, "%s"); print_aid_description(mad_known_aids, aid, fmt, verbose); prev_aid = aid; } From 673f15c247eb1c7875790a712f19d847b734097d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 14:19:50 +0200 Subject: [PATCH 0071/1034] text --- client/dictionaries/t55xx_default_pwds.dic | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/dictionaries/t55xx_default_pwds.dic b/client/dictionaries/t55xx_default_pwds.dic index 9231b9314..fc9c6bb8b 100644 --- a/client/dictionaries/t55xx_default_pwds.dic +++ b/client/dictionaries/t55xx_default_pwds.dic @@ -37,7 +37,7 @@ A5B4C3D2 E9920427 # paxton bullit? 575F4F4B -# +# Hotel system 50520901 # iCopy-X 20206666 From 419d0c1f5b793d1c8d66d516e6235c99c764445c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 16:25:43 +0200 Subject: [PATCH 0072/1034] adapt return codes for some mifare commands and their debug logging. this will reduce debug message on the client side --- armsrc/mifarecmd.c | 39 +++++++++++++++++--------------- armsrc/mifareutil.c | 45 +++++++++++++++++++------------------ client/src/mifare/mifare4.c | 16 ++++++------- 3 files changed, 52 insertions(+), 48 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 5dd5dfcf6..4d57ef0ce 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -484,8 +484,8 @@ void MifareWriteBlock(uint8_t arg0, uint8_t arg1, uint8_t *datain) { if (res == PM3_ETEAROFF) { retval = PM3_ETEAROFF; goto OUT; - } else if (res) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Write block error"); + } else if (res != PM3_SUCCESS) { + if (g_dbglevel >= DBG_INFO) Dbprintf("Write block error"); retval = PM3_ESOFT; goto OUT; } @@ -554,7 +554,7 @@ void MifareWriteBlockGDM(uint8_t blockno, uint8_t keytype, uint8_t *key, uint8_t if (res == PM3_ETEAROFF) { retval = PM3_ETEAROFF; goto OUT; - } else if (res) { + } else if (res != PM3_SUCCESS) { retval = PM3_ESOFT; goto OUT; } @@ -688,8 +688,8 @@ void MifareValue(uint8_t arg0, uint8_t arg1, uint8_t arg2, uint8_t *datain) { break; }; - if (mifare_classic_value(pcs, cuid, blockNo, blockdata, action)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Write block error"); + if (mifare_classic_value(pcs, cuid, blockNo, blockdata, action) != PM3_SUCCESS) { + if (g_dbglevel >= DBG_INFO) Dbprintf("Write block error"); break; }; @@ -777,8 +777,8 @@ static void MifareUWriteBlockEx(uint8_t arg0, uint8_t arg1, uint8_t *datain, boo } } - if (mifare_ultra_writeblock(blockNo, blockdata)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Write block error"); + if (mifare_ultra_writeblock(blockNo, blockdata) != PM3_SUCCESS) { + if (g_dbglevel >= DBG_INFO) Dbprintf("Write block error"); OnError(0); return; }; @@ -851,8 +851,8 @@ void MifareUWriteBlockCompat(uint8_t arg0, uint8_t arg1, uint8_t *datain) { } } - if (mifare_ultra_writeblock_compat(blockNo, blockdata)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Write block error"); + if (mifare_ultra_writeblock_compat(blockNo, blockdata) != PM3_SUCCESS) { + if (g_dbglevel >= DBG_INFO) Dbprintf("Write block error"); OnError(0); return; }; @@ -896,8 +896,8 @@ void MifareUSetPwd(uint8_t arg0, uint8_t *datain) { blockdata[1] = pwd[6]; blockdata[2] = pwd[5]; blockdata[3] = pwd[4]; - if (mifare_ultra_writeblock(44, blockdata)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Write block error"); + if (mifare_ultra_writeblock(44, blockdata) != PM3_SUCCESS) { + if (g_dbglevel >= DBG_INFO) Dbprintf("Write block error"); OnError(44); return; }; @@ -906,8 +906,8 @@ void MifareUSetPwd(uint8_t arg0, uint8_t *datain) { blockdata[1] = pwd[2]; blockdata[2] = pwd[1]; blockdata[3] = pwd[0]; - if (mifare_ultra_writeblock(45, blockdata)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Write block error"); + if (mifare_ultra_writeblock(45, blockdata) != PM3_SUCCESS) { + if (g_dbglevel >= DBG_INFO) Dbprintf("Write block error"); OnError(45); return; }; @@ -916,8 +916,8 @@ void MifareUSetPwd(uint8_t arg0, uint8_t *datain) { blockdata[1] = pwd[14]; blockdata[2] = pwd[13]; blockdata[3] = pwd[12]; - if (mifare_ultra_writeblock(46, blockdata)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Write block error"); + if (mifare_ultra_writeblock(46, blockdata) != PM3_SUCCESS) { + if (g_dbglevel >= DBG_INFO) Dbprintf("Write block error"); OnError(46); return; }; @@ -926,8 +926,8 @@ void MifareUSetPwd(uint8_t arg0, uint8_t *datain) { blockdata[1] = pwd[10]; blockdata[2] = pwd[9]; blockdata[3] = pwd[8]; - if (mifare_ultra_writeblock(47, blockdata)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Write block error"); + if (mifare_ultra_writeblock(47, blockdata) != PM3_SUCCESS) { + if (g_dbglevel >= DBG_INFO) Dbprintf("Write block error"); OnError(47); return; }; @@ -1522,7 +1522,6 @@ void MifareStaticNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, target_ks[0] = nt2 ^ target_nt[0]; // second collection - if (mifare_classic_halt(pcs, cuid)) { continue; } @@ -2836,6 +2835,10 @@ OUT: crypto1_deinit(pcs); } +// FUDAN card w static encrypted nonces +// 2B F9 1C 1B D5 08 48 48 03 A4 B1 B1 75 FF 2D 90 +// ^^ ^^ + void OnSuccessMagic(void) { FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); LEDsoff(); diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c index 472c2616f..7296f1abe 100644 --- a/armsrc/mifareutil.c +++ b/armsrc/mifareutil.c @@ -434,7 +434,7 @@ int mifare_classic_writeblock_ex(struct Crypto1State *pcs, uint32_t uid, uint8_t if ((len != 1) || (receivedAnswer[0] != 0x0A)) { // 0x0a - ACK if (g_dbglevel >= DBG_ERROR) Dbprintf("Cmd Error: %02x", receivedAnswer[0]); - return 1; + return PM3_EFAILED; } uint8_t d_block[18], d_block_enc[18]; @@ -465,11 +465,11 @@ int mifare_classic_writeblock_ex(struct Crypto1State *pcs, uint32_t uid, uint8_t res |= (crypto1_bit(pcs, 0, 0) ^ BIT(receivedAnswer[0], 3)) << 3; if ((len != 1) || (res != 0x0A)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Cmd send data2 Error: %02x", res); - return 2; + if (g_dbglevel >= DBG_INFO) Dbprintf("Cmd send data2 Error: %02x", res); + return PM3_EFAILED; } } - return 0; + return PM3_SUCCESS; } int mifare_classic_write_cfg_block_gdm(struct Crypto1State *pcs, uint32_t uid, uint8_t *blockData) { @@ -480,7 +480,7 @@ int mifare_classic_write_cfg_block_gdm(struct Crypto1State *pcs, uint32_t uid, u uint16_t len = mifare_sendcmd_short(pcs, 1, MIFARE_MAGIC_GDM_WRITE_CFG, 0, receivedAnswer, receivedAnswerPar, NULL); if ((len != 1) || (receivedAnswer[0] != 0x0A)) { - return 1; + return PM3_EFAILED; } uint8_t d_block[18], d_block_enc[18]; @@ -511,14 +511,12 @@ int mifare_classic_write_cfg_block_gdm(struct Crypto1State *pcs, uint32_t uid, u res |= (crypto1_bit(pcs, 0, 0) ^ BIT(receivedAnswer[0], 3)) << 3; if ((len != 1) || (res != 0x0A)) { - return 2; + return PM3_EFAILED; } } - return 0; + return PM3_SUCCESS; } - - int mifare_classic_value(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t *blockData, uint8_t action) { // variables uint16_t len = 0; @@ -540,8 +538,8 @@ int mifare_classic_value(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo len = mifare_sendcmd_short(pcs, 1, command, blockNo, receivedAnswer, receivedAnswerPar, NULL); if ((len != 1) || (receivedAnswer[0] != 0x0A)) { // 0x0a - ACK - if (g_dbglevel >= DBG_ERROR) Dbprintf("Cmd Error: %02x", receivedAnswer[0]); - return 1; + if (g_dbglevel >= DBG_INFO) Dbprintf("Cmd Error: %02x", receivedAnswer[0]); + return PM3_EFAILED; } memcpy(d_block, blockData, 4); @@ -566,12 +564,12 @@ int mifare_classic_value(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo res |= (crypto1_bit(pcs, 0, 0) ^ BIT(receivedAnswer[0], 3)) << 3; if ((len != 1) || (res != 0x0A)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Cmd send data2 Error: %02x", res); - return 2; + if (g_dbglevel >= DBG_INFO) Dbprintf("Cmd send data2 Error: %02x", res); + return PM3_EFAILED; } } - return 0; + return PM3_SUCCESS; } int mifare_ultra_writeblock_compat(uint8_t blockNo, uint8_t *blockData) { @@ -585,9 +583,10 @@ int mifare_ultra_writeblock_compat(uint8_t blockNo, uint8_t *blockData) { len = mifare_sendcmd_short(NULL, CRYPT_NONE, ISO14443A_CMD_WRITEBLOCK, blockNo, receivedAnswer, receivedAnswerPar, NULL); if (receivedAnswer[0] != 0x0A) { // 0x0a - ACK - if (g_dbglevel >= DBG_ERROR) + if (g_dbglevel >= DBG_INFO) { Dbprintf("Cmd Send Error: %02x %d", receivedAnswer[0], len); - return 1; + } + return PM3_EFAILED; } memcpy(d_block, blockData, 16); @@ -599,11 +598,12 @@ int mifare_ultra_writeblock_compat(uint8_t blockNo, uint8_t *blockData) { len = ReaderReceive(receivedAnswer, receivedAnswerPar); if (receivedAnswer[0] != 0x0A) { // 0x0a - ACK - if (g_dbglevel >= DBG_ERROR) + if (g_dbglevel >= DBG_INFO) { Dbprintf("Cmd Send Data Error: %02x %d", receivedAnswer[0], len); - return 2; + } + return PM3_EFAILED; } - return 0; + return PM3_SUCCESS; } int mifare_ultra_writeblock(uint8_t blockNo, uint8_t *blockData) { @@ -618,11 +618,12 @@ int mifare_ultra_writeblock(uint8_t blockNo, uint8_t *blockData) { len = mifare_sendcmd(MIFARE_ULC_WRITE, block, sizeof(block), receivedAnswer, receivedAnswerPar, NULL); if (receivedAnswer[0] != 0x0A) { // 0x0a - ACK - if (g_dbglevel >= DBG_ERROR) + if (g_dbglevel >= DBG_INFO) { Dbprintf("Cmd Send Error: %02x %d", receivedAnswer[0], len); - return 1; + } + return PM3_EFAILED; } - return 0; + return PM3_SUCCESS; } int mifare_classic_halt_ex(struct Crypto1State *pcs) { uint8_t receivedAnswer[4] = {0x00, 0x00, 0x00, 0x00}; diff --git a/client/src/mifare/mifare4.c b/client/src/mifare/mifare4.c index ec8d1a6bf..52a5a8465 100644 --- a/client/src/mifare/mifare4.c +++ b/client/src/mifare/mifare4.c @@ -24,9 +24,9 @@ #include "ui.h" #include "crypto/libpcrypto.h" -static bool VerboseMode = false; +static bool g_verbose_mode = false; void mfpSetVerboseMode(bool verbose) { - VerboseMode = verbose; + g_verbose_mode = verbose; } static const PlusErrorsElm_t PlusErrors[] = { @@ -340,12 +340,12 @@ int MifareAuth4(mf4Session_t *mf4session, uint8_t *keyn, uint8_t *key, bool acti } static int intExchangeRAW14aPlus(uint8_t *datain, int datainlen, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen) { - if (VerboseMode) + if (g_verbose_mode) PrintAndLogEx(INFO, ">>> %s", sprint_hex(datain, datainlen)); int res = ExchangeRAW14a(datain, datainlen, activateField, leaveSignalON, dataout, maxdataoutlen, dataoutlen, false); - if (VerboseMode) + if (g_verbose_mode) PrintAndLogEx(INFO, "<<< %s", sprint_hex(dataout, *dataoutlen)); return res; @@ -367,7 +367,7 @@ int MFPCommitPerso(bool activateField, bool leaveSignalON, uint8_t *dataout, int int MFPReadBlock(mf4Session_t *mf4session, bool plain, uint8_t blockNum, uint8_t blockCount, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, uint8_t *mac) { uint8_t rcmd[4 + 8] = {(plain ? (0x37) : (0x33)), blockNum, 0x00, blockCount}; if (!plain && mf4session) - CalculateMAC(mf4session, mtypReadCmd, blockNum, blockCount, rcmd, 4, &rcmd[4], VerboseMode); + CalculateMAC(mf4session, mtypReadCmd, blockNum, blockCount, rcmd, 4, &rcmd[4], g_verbose_mode); int res = intExchangeRAW14aPlus(rcmd, plain ? 4 : sizeof(rcmd), activateField, leaveSignalON, dataout, maxdataoutlen, dataoutlen); if (res) @@ -377,7 +377,7 @@ int MFPReadBlock(mf4Session_t *mf4session, bool plain, uint8_t blockNum, uint8_t mf4session->R_Ctr++; if (mf4session && mac && *dataoutlen > 11) - CalculateMAC(mf4session, mtypReadResp, blockNum, blockCount, dataout, *dataoutlen - 8 - 2, mac, VerboseMode); + CalculateMAC(mf4session, mtypReadResp, blockNum, blockCount, dataout, *dataoutlen - 8 - 2, mac, g_verbose_mode); return 0; } @@ -386,7 +386,7 @@ int MFPWriteBlock(mf4Session_t *mf4session, uint8_t blockNum, uint8_t *data, boo uint8_t rcmd[1 + 2 + 16 + 8] = {0xA3, blockNum, 0x00}; memmove(&rcmd[3], data, 16); if (mf4session) - CalculateMAC(mf4session, mtypWriteCmd, blockNum, 1, rcmd, 19, &rcmd[19], VerboseMode); + CalculateMAC(mf4session, mtypWriteCmd, blockNum, 1, rcmd, 19, &rcmd[19], g_verbose_mode); int res = intExchangeRAW14aPlus(rcmd, sizeof(rcmd), activateField, leaveSignalON, dataout, maxdataoutlen, dataoutlen); if (res) @@ -396,7 +396,7 @@ int MFPWriteBlock(mf4Session_t *mf4session, uint8_t blockNum, uint8_t *data, boo mf4session->W_Ctr++; if (mf4session && mac && *dataoutlen > 3) - CalculateMAC(mf4session, mtypWriteResp, blockNum, 1, dataout, *dataoutlen, mac, VerboseMode); + CalculateMAC(mf4session, mtypWriteResp, blockNum, 1, dataout, *dataoutlen, mac, g_verbose_mode); return 0; } From ed34453461c59c3037980684da86f66e7058952f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 16:27:30 +0200 Subject: [PATCH 0073/1034] maur --- client/dictionaries/mfc_default_keys.dic | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 63598f78b..0d34541ff 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -145,6 +145,9 @@ F1D83F964314 222222222222 27DD91F1FCF1 # +# Hotel system +505209016A1F +# # Directory and eventlog KeyB 2BA9621E0A36 # From 88e2618131f8c754b08dea86da2ce594433b5adf Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 17:08:32 +0200 Subject: [PATCH 0074/1034] function to support figuring out if block 0-3 , 0-15 is sectortrailer. The previous function uses 0-255.. --- client/src/mifare/mifare4.c | 10 +++++++++- client/src/mifare/mifare4.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/client/src/mifare/mifare4.c b/client/src/mifare/mifare4.c index 52a5a8465..7a3ec9f77 100644 --- a/client/src/mifare/mifare4.c +++ b/client/src/mifare/mifare4.c @@ -534,7 +534,7 @@ uint8_t mfSectorTrailer(uint16_t blockNo) { if (blockNo < 32 * 4) { return (blockNo | 0x03); } else { - return (blockNo | 0x0f); + return (blockNo | 0x0F); } } @@ -551,3 +551,11 @@ uint8_t mfSectorNum(uint16_t blockNo) { return (32 + (blockNo - 32 * 4) / 16); } + +bool mfIsSectorTrailerBasedOnBlocks(uint8_t sectorno, uint16_t blockno) { + if (sectorno < 32) { + return ((blockno | 0x03) == blockno); + } else { + return ((blockno | 0x0F) == blockno); + } +} diff --git a/client/src/mifare/mifare4.h b/client/src/mifare/mifare4.h index 80d55db7b..fee12ef6e 100644 --- a/client/src/mifare/mifare4.h +++ b/client/src/mifare/mifare4.h @@ -79,6 +79,7 @@ uint8_t mfFirstBlockOfSector(uint8_t sectorNo); uint8_t mfSectorTrailerOfSector(uint8_t sectorNo); uint8_t mfSectorTrailer(uint16_t blockNo); bool mfIsSectorTrailer(uint16_t blockNo); +bool mfIsSectorTrailerBasedOnBlocks(uint8_t sectorno, uint16_t blockno); uint8_t mfSectorNum(uint16_t blockNo); From a508ed76464aef461dce708151dc280f957fa329 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 17:10:04 +0200 Subject: [PATCH 0075/1034] fix hf mf dump --- client/src/cmdhfmf.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 066e1bdfd..398705074 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -590,12 +590,13 @@ static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t n current_key = MF_KEY_A; uint8_t data_area = (sectorNo < 32) ? blockNo : blockNo / 5; if (rights[sectorNo][data_area] == 0x07) { // no key would work - PrintAndLogEx(WARNING, "access rights do not allow reading of sector %2d block %3d, skipping", sectorNo, blockNo); + PrintAndLogEx(WARNING, "access rights do not allow reading of sector " _YELLOW_("%2d") " block " _YELLOW_("%3d") ", skipping", sectorNo, blockNo); continue; } for (uint8_t tries = 0; tries < MIFARE_SECTOR_RETRY; tries++) { - if (mfIsSectorTrailer(blockNo)) { + + if (mfIsSectorTrailerBasedOnBlocks(sectorNo, blockNo)) { // sector trailer. At least the Access Conditions can always be read with key A. payload.blockno = mfFirstBlockOfSector(sectorNo) + blockNo; @@ -649,16 +650,16 @@ static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t n uint8_t *data = resp.data.asBytes; - if (mfIsSectorTrailer(blockNo)) { + if (mfIsSectorTrailerBasedOnBlocks(sectorNo, blockNo)) { // sector trailer. Fill in the keys. memcpy(data, keyA + (sectorNo * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); memcpy(data + 10, keyB + (sectorNo * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); } memcpy(carddata + (MFBLOCK_SIZE * (mfFirstBlockOfSector(sectorNo) + blockNo)), data, MFBLOCK_SIZE); - PrintAndLogEx(SUCCESS, "successfully read block %2d of sector %2d.", blockNo, sectorNo); + PrintAndLogEx(INPLACE, "successfully read block " _YELLOW_("%2d") " of sector " _YELLOW_("%2d"), blockNo, sectorNo); } else { - PrintAndLogEx(FAILED, "could not read block %2d of sector %2d", blockNo, sectorNo); + PrintAndLogEx(FAILED, "\ncould not read block %2d of sector %2d", blockNo, sectorNo); } } else { PrintAndLogEx(WARNING, "command execute timeout when trying to read block %2d of sector %2d.", blockNo, sectorNo); @@ -1125,7 +1126,7 @@ static int CmdHF14AMfDump(const char *Cmd) { // read card iso14a_card_select_t card ; - uint8_t *mem = calloc(MIFARE_4K_MAXBLOCK * MFBLOCK_SIZE, sizeof(uint8_t)); + uint8_t *mem = calloc(MIFARE_4K_MAX_BYTES, sizeof(uint8_t)); if (mem == NULL) { PrintAndLogEx(ERR, "failed to allocate memory"); return PM3_EMALLOC; From 4b12d67632fbbedfebb986811a988d1939a054ca Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 17:12:29 +0200 Subject: [PATCH 0076/1034] text and fixes for MAD v2 --- client/src/cmdhfmf.c | 72 ++++++++++++++++++++++++++------------------ 1 file changed, 43 insertions(+), 29 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 398705074..031341c71 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3446,6 +3446,7 @@ static int CmdHF14AMfChk(const char *Cmd) { PrintAndLogEx(WARNING, "Provided block out of possible MIFARE Type memory map"); return PM3_EINVARG; } + if (sectors_cnt == 1) { sectors_cnt = min_sectors_cnt; } else if (sectors_cnt < min_sectors_cnt) { @@ -3453,6 +3454,7 @@ static int CmdHF14AMfChk(const char *Cmd) { return PM3_EINVARG; } } + if (sectors_cnt == 1) { sectors_cnt = MIFARE_1K_MAXSECTOR; } @@ -3520,6 +3522,7 @@ static int CmdHF14AMfChk(const char *Cmd) { } if (singleSector) break; + b < 127 ? (b += 4) : (b += 16); } } @@ -3974,6 +3977,7 @@ void printKeyTableEx(size_t sectorscnt, sector_t *e_sector, uint8_t start_sector , strA, resA , strB, resB ); + } PrintAndLogEx(SUCCESS, "-----+-----+--------------+---+--------------+----"); @@ -5614,28 +5618,27 @@ static int CmdHF14AMfAuth4(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf auth4", "Executes AES authentication command in ISO14443-4", - "hf mf auth4 4000 000102030405060708090a0b0c0d0e0f -> executes authentication\n" - "hf mf auth4 9003 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> executes authentication\n"); + "hf mf auth4 -n 4000 -k 000102030405060708090a0b0c0d0e0f -> executes authentication\n" + "hf mf auth4 -n 9003 -k FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> executes authentication\n"); void *argtable[] = { arg_param_begin, - arg_str1(NULL, NULL, "", NULL), - arg_str1(NULL, NULL, "", NULL), + arg_str1("n", NULL, "", "key num, 2 hex bytes"), + arg_str1("k", "key", "", "key, 16 hex bytes"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); - CLIGetHexWithReturn(ctx, 1, keyn, &keynlen); CLIGetHexWithReturn(ctx, 2, key, &keylen); CLIParserFree(ctx); if (keynlen != 2) { - PrintAndLogEx(ERR, " must be 2 bytes long instead of: %d", keynlen); + PrintAndLogEx(ERR, "Key number must be 2 bytes. Got... %d", keynlen); return PM3_ESOFT; } if (keylen != 16) { - PrintAndLogEx(ERR, " must be 16 bytes long instead of: %d", keylen); + PrintAndLogEx(ERR, "Key must be 16 bytes. Got... %d", keylen); return PM3_ESOFT; } @@ -5655,12 +5658,12 @@ static int CmdHF14AMfMAD(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_lit0("v", "verbose", "show technical data"), - arg_str0(NULL, "aid", "", "print all sectors with specified aid"), - arg_str0("k", "key", "", "key for printing sectors"), + arg_str0(NULL, "aid", "", "print all sectors with specified aid"), + arg_str0("k", "key", "", "key for printing sectors"), arg_lit0("b", "keyb", "use key B for access printing sectors (by default: key A)"), arg_lit0(NULL, "be", "(optional, BigEndian)"), arg_lit0(NULL, "dch", "decode Card Holder information"), - arg_str0("f", "file", "", "load dump file and decode MAD"), + arg_str0("f", "file", "", "load dump file and decode MAD"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -5685,17 +5688,17 @@ static int CmdHF14AMfMAD(const char *Cmd) { // read dump file uint8_t *dump = NULL; size_t bytes_read = 0; - int res = pm3_load_dump(filename, (void **)&dump, &bytes_read, (MFBLOCK_SIZE * MIFARE_4K_MAXBLOCK)); + int res = pm3_load_dump(filename, (void **)&dump, &bytes_read, MIFARE_4K_MAX_BYTES); if (res != PM3_SUCCESS) { return res; } uint16_t block_cnt = MIN(MIFARE_1K_MAXBLOCK, (bytes_read / MFBLOCK_SIZE)); - if (bytes_read == 320) + if (bytes_read == MIFARE_MINI_MAX_BYTES) block_cnt = MIFARE_MINI_MAXBLOCK; - else if (bytes_read == 2048) + else if (bytes_read == MIFARE_2K_MAX_BYTES) block_cnt = MIFARE_2K_MAXBLOCK; - else if (bytes_read == 4096) + else if (bytes_read == MIFARE_4K_MAX_BYTES) block_cnt = MIFARE_4K_MAXBLOCK; if (verbose) { @@ -5765,8 +5768,8 @@ static int CmdHF14AMfMAD(const char *Cmd) { return PM3_ENOTTY; - uint8_t sector0[16 * 4] = {0}; - uint8_t sector10[16 * 4] = {0}; + uint8_t sector0[MFBLOCK_SIZE * 4] = {0}; + uint8_t sector10[MFBLOCK_SIZE * 4] = {0}; bool got_first = true; if (mfReadSector(MF_MAD1_SECTOR, MF_KEY_A, (uint8_t *)g_mifare_mad_key, sector0) != PM3_SUCCESS) { @@ -5820,7 +5823,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { // user specified key if (keylen == 6) { - memcpy(akey, userkey, 6); + memcpy(akey, userkey, sizeof(akey)); } uint16_t aaid = 0x0004; @@ -5833,7 +5836,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { for (int i = 0; i < madlen; i++) { if (aaid == mad[i]) { - uint8_t vsector[16 * 4] = {0}; + uint8_t vsector[MFBLOCK_SIZE * 4] = {0}; if (mfReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, akey, vsector)) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(ERR, "error, read sector %d", i + 1); @@ -5841,7 +5844,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { } for (int j = 0; j < (verbose ? 4 : 3); j ++) - PrintAndLogEx(NORMAL, " [%03d] %s", (i + 1) * 4 + j, sprint_hex(&vsector[j * 16], 16)); + PrintAndLogEx(NORMAL, " [%03d] %s", (i + 1) * 4 + j, sprint_hex(&vsector[j * MFBLOCK_SIZE], MFBLOCK_SIZE)); } } } @@ -5851,21 +5854,22 @@ static int CmdHF14AMfMAD(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "-------- " _CYAN_("Card Holder Info 0x%04x") " --------", aaid); - uint8_t data[4096] = {0}; + uint8_t data[MIFARE_4K_MAX_BYTES] = {0}; int datalen = 0; for (int i = 0; i < madlen; i++) { if (aaid == mad[i]) { - uint8_t vsector[16 * 4] = {0}; + uint8_t vsector[MFBLOCK_SIZE * 4] = {0}; if (mfReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, akey, vsector)) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(ERR, "error, read sector %d", i + 1); return PM3_ESOFT; } - memcpy(&data[datalen], vsector, 16 * 3); - datalen += 16 * 3; + // skip ST block hence only 3 blocks copy + memcpy(&data[datalen], vsector, MFBLOCK_SIZE * 3); + datalen += MFBLOCK_SIZE * 3; } } @@ -5879,9 +5883,16 @@ static int CmdHF14AMfMAD(const char *Cmd) { if (verbose) { PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "------------ " _CYAN_("MAD sector raw") " -------------"); - for (int i = 0; i < 4; i ++) - PrintAndLogEx(INFO, "[%d] %s", i, sprint_hex(§or0[i * 16], 16)); + PrintAndLogEx(INFO, "------------ " _CYAN_("MAD v1 sector raw") " -------------"); + for (int i = 0; i < 4; i ++) { + PrintAndLogEx(INFO, "[%d] %s", i, sprint_hex(§or0[i * MFBLOCK_SIZE], MFBLOCK_SIZE)); + } + + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "------------ " _CYAN_("MAD v2 sector raw") " -------------"); + for (int i = 0; i < 4; i ++) { + PrintAndLogEx(INFO, "[%d] %s", i, sprint_hex(§or10[i * MFBLOCK_SIZE], MFBLOCK_SIZE)); + } } return PM3_SUCCESS; @@ -5912,12 +5923,15 @@ int CmdHFMFNDEFRead(const char *Cmd) { bool verbose = arg_get_lit(ctx, 1); bool verbose2 = arg_get_lit(ctx, 1) > 1; uint8_t aid[2] = {0}; + int aidlen; CLIGetHexWithReturn(ctx, 2, aid, &aidlen); uint8_t key[6] = {0}; + int keylen; CLIGetHexWithReturn(ctx, 3, key, &keylen); bool keyB = arg_get_lit(ctx, 4); + int fnlen = 0; char filename[FILE_PATH_SIZE] = {0}; CLIParamStrToBuf(arg_get_str(ctx, 5), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); @@ -5970,7 +5984,7 @@ int CmdHFMFNDEFRead(const char *Cmd) { uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; - res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen, false); + res = MADDecode(sector0, sector10, mad, &madlen, false); if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "can't decode MAD"); return res; @@ -6386,7 +6400,7 @@ int CmdHFMFNDEFWrite(const char *Cmd) { return PM3_ESOFT; } - // decode MAD + // decode MAD v1 uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; res = MADDecode(sector0, NULL, mad, &madlen, false); @@ -7130,7 +7144,7 @@ static int CmdHF14AMfView(const char *Cmd) { PrintAndLogEx(INFO, ""); PrintAndLogEx(INFO, _CYAN_("VIGIK PACS detected")); - // decode MAD + // decode MAD v1 uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; res = MADDecode(dump, NULL, mad, &madlen, false); From 8700b1e75451fe650b3807e2590895f1a3b91202 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 17:14:58 +0200 Subject: [PATCH 0077/1034] fix hf mf mad loading mad v2 sector --- client/src/cmdhfmf.c | 61 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 11 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 031341c71..9bc763624 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3407,8 +3407,9 @@ static int CmdHF14AMfChk(const char *Cmd) { CLIParamStrToBuf(arg_get_str(ctx, 12), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); CLIParserFree(ctx); - bool singleSector = blockNo > -1; - if (! singleSector) { + + bool singleSector = (blockNo > -1); + if (singleSector == false) { // start from first trailer block blockNo = 3; } @@ -3431,9 +3432,11 @@ static int CmdHF14AMfChk(const char *Cmd) { } if (singleSector) { - size_t min_sectors_cnt = 0; + // find a MIFARE type that can accommodate the provided block number + size_t min_sectors_cnt = 0; uint8_t s = mfSectorNum(blockNo); + if (s < MIFARE_MINI_MAXSECTOR) { min_sectors_cnt = MIFARE_MINI_MAXSECTOR; } else if (s < MIFARE_1K_MAXSECTOR) { @@ -3578,9 +3581,9 @@ out: PrintAndLogEx(SUCCESS, _GREEN_("found keys:")); //print keys - if (singleSector) - printKeyTableEx(1, e_sector, mfSectorNum(blockNo)); - else +// if (singleSector) +// printKeyTableEx(1, e_sector, mfSectorNum(blockNo)); +// else printKeyTable(sectors_cnt, e_sector); if (transferToEml) { @@ -5760,6 +5763,25 @@ static int CmdHF14AMfMAD(const char *Cmd) { MAD2DecodeAndPrint(dump + (MIFARE_1K_MAXBLOCK * MF_MAD2_SECTOR), swapmad, verbose); } + if (aidlen == 2 || decodeholder) { + uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; + size_t madlen = 0; + if (MADDecode(dump, dump + (0x10 * MIFARE_1K_MAXBLOCK), mad, &madlen, swapmad)) { + PrintAndLogEx(ERR, "can't decode MAD"); + free(dump); + return PM3_ESOFT; + } + + uint16_t aaid = 0x0004; + if (aidlen == 2) { + aaid = (aid[0] << 8) + aid[1]; + } + + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "-------- " _CYAN_("Card Holder Info 0x%04x") " --------", aaid); + + MADCardHolderInfoDecode(dump, bytes_read, verbose); + } free(dump); return PM3_SUCCESS; } @@ -5795,17 +5817,34 @@ static int CmdHF14AMfMAD(const char *Cmd) { return PM3_ESOFT; } + got_first = true; + if (mfReadSector(MF_MAD2_SECTOR, MF_KEY_A, (uint8_t *)g_mifare_mad_key, sector10) != PM3_SUCCESS) { + if (verbose) { + PrintAndLogEx(ERR, "error, read sector 0x10. card doesn't have MAD 2 or doesn't have MAD 2 on default keys"); + } + got_first = false; + } else { + PrintAndLogEx(INFO, "Authentication ( " _GREEN_("ok") " )"); + } + + // User supplied key + if (got_first == false && keylen == 6) { + PrintAndLogEx(INFO, "Trying user specified key..."); + if (mfReadSector(MF_MAD2_SECTOR, MF_KEY_A, userkey, sector10) != PM3_SUCCESS) { + if (verbose) { + PrintAndLogEx(ERR, "error, read sector 10. card doesn't have MAD 2 or the custom key is wrong"); + } + } else { + PrintAndLogEx(INFO, "Authentication ( " _GREEN_("ok") " )"); + } + } + MADPrintHeader(); bool haveMAD2 = false; MAD1DecodeAndPrint(sector0, swapmad, verbose, &haveMAD2); if (haveMAD2) { - if (mfReadSector(MF_MAD2_SECTOR, MF_KEY_A, (uint8_t *)g_mifare_mad_key, sector10)) { - PrintAndLogEx(ERR, "error, read sector 0x10. card doesn't have MAD or doesn't have MAD on default keys"); - return PM3_ESOFT; - } - MAD2DecodeAndPrint(sector10, swapmad, verbose); } From 25f84bcb8e6171e0c71e72ec813890b0f7868c88 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 17:21:47 +0200 Subject: [PATCH 0078/1034] fix 14b detection in hf search --- client/src/cmdhf14b.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index d0083fbb5..77378fda2 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -2229,33 +2229,34 @@ int infoHF14B(bool verbose, bool do_aid_search) { // get and print general info about all known 14b chips int readHF14B(bool loop, bool verbose) { + bool found = false; do { // try std 14b (atqb) - if (HF14B_std_reader(verbose)) - if (loop) - continue; + found = HF14B_std_reader(verbose); + if (found && loop) + continue; // try ST Microelectronics 14b - if (HF14B_st_reader(verbose)) - if (loop) - continue; + found = HF14B_st_reader(verbose); + if (found && loop) + continue; // try ASK CT 14b - if (HF14B_ask_ct_reader(verbose)) - if (loop) - continue; + found = HF14B_ask_ct_reader(verbose); + if (found && loop) + continue; // try unknown 14b read commands (to be identified later) // could be read of calypso, CEPAS, moneo, or pico pass. - if (HF14B_other_reader(verbose)) - if (loop) - continue; - + found = HF14B_other_reader(verbose); + if (found && loop) + continue; } while (loop && kbd_enter_pressed() == false); - if (verbose) { + + if (verbose && found == false) { PrintAndLogEx(FAILED, "no ISO 14443-B tag found"); } - return PM3_EOPABORTED; + return (found) ? PM3_SUCCESS : PM3_EOPABORTED; } From d1b62a5fc21e755723b71d5b8f047b8c38f73a28 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 17:44:15 +0200 Subject: [PATCH 0079/1034] fix wrong sector trailer detection --- client/src/cmdhfmf.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 9bc763624..130654caf 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -280,8 +280,8 @@ static void mf_print_blocks(uint16_t n, uint8_t *d, bool verbose) { PrintAndLogEx(NORMAL, ""); } +// assumes n is in number of blocks 0..255 static int mf_print_keys(uint16_t n, uint8_t *d) { - uint8_t sectors = 0; switch (n) { case MIFARE_MINI_MAXBLOCK: @@ -321,6 +321,7 @@ static int mf_print_keys(uint16_t n, uint8_t *d) { } // MFC dump , extract and save the keys to key file +// assumes n is in number of blocks 0..255 static int mf_save_keys_from_arr(uint16_t n, uint8_t *d) { uint8_t sectors = 0; switch (n) { @@ -412,6 +413,7 @@ static bool mf_write_block(const uint8_t *key, uint8_t keytype, uint8_t blockno, return (resp.oldarg[0] & 0xff); } +// assumes n is in number of blocks 0..255 static void mf_analyse_acl(uint16_t n, uint8_t *d) { for (uint16_t b = 3; b < n; b++) { @@ -6252,7 +6254,7 @@ skipfile: memcpy(block, firstblocks[b], MFBLOCK_SIZE); break; default: { - if (mfIsSectorTrailer(j)) { + if (mfIsSectorTrailerBasedOnBlocks(i,j)) { // ST NDEF memcpy(block, firstblocks[7], MFBLOCK_SIZE); } @@ -7078,7 +7080,7 @@ static int CmdHF14AMfWipe(const char *Cmd) { uint8_t data[26]; memset(data, 0, sizeof(data)); - if (mfIsSectorTrailer(b)) { + if (mfIsSectorTrailerBasedOnBlocks(s, b)) { memcpy(data + 10, st, sizeof(st)); } else { memcpy(data + 10, zeros, sizeof(zeros)); From 85d4e99ae9f552fb6632c7e693a0ced30bb3953e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 17:51:39 +0200 Subject: [PATCH 0080/1034] mfp changes... --- client/src/cmdhfmfp.c | 278 ++++++++++++++++++++++++++++-------------- client/src/cmdhfmfp.h | 20 +++ 2 files changed, 204 insertions(+), 94 deletions(-) diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 9434d88ed..2368e0f74 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -34,19 +34,12 @@ #include "protocols.h" #include "crypto/libpcrypto.h" #include "cmdhfmf.h" // printblock, header +#include "cmdtrace.h" -static const uint8_t DefaultKey[16] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; -static uint16_t CardAddresses[] = {0x9000, 0x9001, 0x9002, 0x9003, 0x9004, 0xA000, 0xA001, 0xA080, 0xA081, 0xC000, 0xC001}; +static const uint8_t mfp_default_key[16] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; +static uint16_t mfp_card_adresses[] = {0x9000, 0x9001, 0x9002, 0x9003, 0x9004, 0xA000, 0xA001, 0xA080, 0xA081, 0xC000, 0xC001}; -typedef enum { - MFP_UNKNOWN = 0, - DESFIRE_MF3ICD40, - DESFIRE_EV1, - DESFIRE_EV2, - DESFIRE_EV3, - DESFIRE_LIGHT, - PLUS_EV1, -} nxp_cardtype_t; +#define MFP_KEY_FILE_SIZE 14 + (2 * 64 * (AES_KEY_LEN + 1)) static int CmdHelp(const char *Cmd); @@ -233,9 +226,10 @@ static int get_plus_signature(uint8_t *signature, int *signature_len) { *signature_len = 0; retval = PM3_ESOFT; } - mfpSetVerboseMode(false); + return retval; } + // GET VERSION static int plus_print_version(uint8_t *version) { PrintAndLogEx(SUCCESS, " UID: " _GREEN_("%s"), sprint_hex(version + 14, 7)); @@ -261,12 +255,12 @@ static int plus_print_version(uint8_t *version) { PrintAndLogEx(INFO, " Protocol: %s", getProtocolStr(version[13], false)); return PM3_SUCCESS; } + static int get_plus_version(uint8_t *version, int *version_len) { int resplen = 0, retval = PM3_SUCCESS; mfpSetVerboseMode(false); MFPGetVersion(true, false, version, *version_len, &resplen); - mfpSetVerboseMode(false); *version_len = resplen; if (resplen != 28) { @@ -484,16 +478,16 @@ static int CmdHFMFPWritePerso(const char *Cmd) { mfpSetVerboseMode(verbose); if (!keyLen) { - memmove(key, DefaultKey, 16); + memmove(key, mfp_default_key, 16); keyLen = 16; } if (keyNumLen != 2) { - PrintAndLogEx(ERR, "Key number length must be 2 bytes instead of: %d", keyNumLen); + PrintAndLogEx(ERR, "Key number length must be 2 bytes. Got %d", keyNumLen); return PM3_EINVARG; } if (keyLen != 16) { - PrintAndLogEx(ERR, "Key length must be 16 bytes instead of: %d", keyLen); + PrintAndLogEx(ERR, "Key length must be 16 bytes. Got %d", keyLen); return PM3_EINVARG; } @@ -507,7 +501,7 @@ static int CmdHFMFPWritePerso(const char *Cmd) { } if (datalen != 3) { - PrintAndLogEx(ERR, "Command must return 3 bytes instead of: %d", datalen); + PrintAndLogEx(ERR, "Command must return 3 bytes. Got %d", datalen); return PM3_ESOFT; } @@ -539,17 +533,18 @@ static int CmdHFMFPInitPerso(const char *Cmd) { bool verbose2 = arg_get_lit(ctx, 1) > 1; uint8_t key[256] = {0}; - int keyLen = 0; - CLIGetHexWithReturn(ctx, 2, key, &keyLen); + int keylen = 0; + CLIGetHexWithReturn(ctx, 2, key, &keylen); CLIParserFree(ctx); - if (keyLen && keyLen != 16) { - PrintAndLogEx(ERR, "Key length must be 16 bytes instead of: %d", keyLen); + if (keylen && keylen != 16) { + PrintAndLogEx(FAILED, "Key length must be 16 bytes. Got %d", keylen); return PM3_EINVARG; } - if (!keyLen) - memmove(key, DefaultKey, 16); + if (keylen == 0) { + memmove(key, mfp_default_key, sizeof(mfp_default_key)); + } uint8_t keyNum[2] = {0}; uint8_t data[250] = {0}; @@ -572,15 +567,15 @@ static int CmdHFMFPInitPerso(const char *Cmd) { } mfpSetVerboseMode(verbose); - for (int i = 0; i < ARRAYLEN(CardAddresses); i++) { - keyNum[0] = CardAddresses[i] >> 8; - keyNum[1] = CardAddresses[i] & 0xff; + for (int i = 0; i < ARRAYLEN(mfp_card_adresses); i++) { + keyNum[0] = mfp_card_adresses[i] >> 8; + keyNum[1] = mfp_card_adresses[i] & 0xff; res = MFPWritePerso(keyNum, key, false, true, data, sizeof(data), &datalen); if (!res && (datalen == 3) && data[0] == 0x09) { - PrintAndLogEx(WARNING, "Skipped[%04x]...", CardAddresses[i]); + PrintAndLogEx(WARNING, "Skipped[%04x]...", mfp_card_adresses[i]); } else { if (res || (datalen != 3) || data[0] != 0x90) { - PrintAndLogEx(ERR, "Write error on address %04x", CardAddresses[i]); + PrintAndLogEx(ERR, "Write error on address %04x", mfp_card_adresses[i]); break; } } @@ -597,7 +592,9 @@ static int CmdHFMFPInitPerso(const char *Cmd) { static int CmdHFMFPCommitPerso(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mfp commitp", - "Executes Commit Perso command. Can be used in SL0 mode only.\nOBS! This command will not be executed if CardConfigKey, CardMasterKey and L3SwitchKey AES keys are not written.", + "Executes Commit Perso command. Can be used in SL0 mode only.\n" + "OBS! This command will not be executed if \n" + "CardConfigKey, CardMasterKey and L3SwitchKey AES keys are not written.", "hf mfp commitp\n" // "hf mfp commitp --sl 1" ); @@ -625,7 +622,7 @@ static int CmdHFMFPCommitPerso(const char *Cmd) { } if (datalen != 3) { - PrintAndLogEx(ERR, "Command must return 3 bytes instead of: %d", datalen); + PrintAndLogEx(ERR, "Command must return 3 bytes. Got %d", datalen); return PM3_EINVARG; } @@ -633,7 +630,7 @@ static int CmdHFMFPCommitPerso(const char *Cmd) { PrintAndLogEx(ERR, "Command error: %02x %s", data[0], mfpGetErrorDescription(data[0])); return PM3_EINVARG; } - PrintAndLogEx(INFO, "Switch level ( " _GREEN_("ok") " )"); + PrintAndLogEx(INFO, "Switched security level ( " _GREEN_("ok") " )"); return PM3_SUCCESS; } @@ -645,7 +642,7 @@ static int CmdHFMFPAuth(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mfp auth", - "Executes AES authentication command for Mifare Plus card", + "Executes AES authentication command for MIFARE Plus card", "hf mfp auth --ki 4000 --key 000102030405060708090a0b0c0d0e0f -> executes authentication\n" "hf mfp auth --ki 9003 --key FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -v -> executes authentication and shows all the system data"); @@ -664,12 +661,12 @@ static int CmdHFMFPAuth(const char *Cmd) { CLIParserFree(ctx); if (keynlen != 2) { - PrintAndLogEx(ERR, "ERROR: must be 2 bytes long instead of: %d", keynlen); + PrintAndLogEx(ERR, "ERROR: must be 2 bytes. Got %d", keynlen); return PM3_EINVARG; } if (keylen != 16) { - PrintAndLogEx(ERR, "ERROR: must be 16 bytes long instead of: %d", keylen); + PrintAndLogEx(ERR, "ERROR: must be 16 bytes. Got %d", keylen); return PM3_EINVARG; } @@ -679,7 +676,7 @@ static int CmdHFMFPAuth(const char *Cmd) { static int CmdHFMFPRdbl(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mfp rdbl", - "Reads several blocks from Mifare Plus card", + "Reads blocks from MIFARE Plus card", "hf mfp rdbl --blk 0 --key 000102030405060708090a0b0c0d0e0f -> executes authentication and read block 0 data\n" "hf mfp rdbl --blk 1 -v -> executes authentication and shows sector 1 data with default key 0xFF..0xFF"); @@ -710,23 +707,23 @@ static int CmdHFMFPRdbl(const char *Cmd) { mfpSetVerboseMode(verbose); if (!keylen) { - memmove(key, DefaultKey, 16); + memmove(key, mfp_default_key, 16); keylen = 16; } if (blockn > 255) { - PrintAndLogEx(ERR, " must be in range [0..255] got: %d", blockn); + PrintAndLogEx(ERR, " must be in range [0..255]. got %d", blockn); return PM3_EINVARG; } if (keylen != 16) { - PrintAndLogEx(ERR, " must be 16 bytes long. got: %d", keylen); + PrintAndLogEx(ERR, " must be 16 bytes. Got %d", keylen); return PM3_EINVARG; } // 3 blocks - wo iso14443-4 chaining if (blocksCount > 3) { - PrintAndLogEx(ERR, "blocks count must be less than 3. got: %d", blocksCount); + PrintAndLogEx(ERR, "blocks count must be less than 3. Got %d", blocksCount); return PM3_EINVARG; } @@ -763,7 +760,7 @@ static int CmdHFMFPRdbl(const char *Cmd) { } if (datalen != 1 + blocksCount * 16 + 8 + 2) { - PrintAndLogEx(ERR, "Error return length:%d", datalen); + PrintAndLogEx(ERR, "Error return length: %d", datalen); return PM3_ESOFT; } @@ -820,17 +817,17 @@ static int CmdHFMFPRdsc(const char *Cmd) { mfpSetVerboseMode(verbose); if (!keylen) { - memmove(key, DefaultKey, 16); + memmove(key, mfp_default_key, 16); keylen = 16; } if (sectorNum > 39) { - PrintAndLogEx(ERR, " must be in range [0..39] got: %d", sectorNum); + PrintAndLogEx(ERR, " must be in range [0..39]. Got %d", sectorNum); return PM3_EINVARG; } if (keylen != 16) { - PrintAndLogEx(ERR, " must be 16 bytes long. got: %d", keylen); + PrintAndLogEx(ERR, " must be 16 bytes. Got %d", keylen); return PM3_EINVARG; } @@ -894,7 +891,7 @@ static int CmdHFMFPRdsc(const char *Cmd) { static int CmdHFMFPWrbl(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mfp wrbl", - "Writes one block to Mifare Plus card", + "Writes one block to MIFARE Plus card", "hf mfp wrbl --blk 1 -d ff0000000000000000000000000000ff --key 000102030405060708090a0b0c0d0e0f -> write block 1 data\n" "hf mfp wrbl --blk 2 -d ff0000000000000000000000000000ff -v -> write block 2 data with default key 0xFF..0xFF" ); @@ -928,22 +925,22 @@ static int CmdHFMFPWrbl(const char *Cmd) { mfpSetVerboseMode(verbose); if (!keylen) { - memmove(key, DefaultKey, 16); + memmove(key, mfp_default_key, 16); keylen = 16; } if (blockNum > 255) { - PrintAndLogEx(ERR, " must be in range [0..255] got: %d", blockNum); + PrintAndLogEx(ERR, " must be in range [0..255]. Got %d", blockNum); return PM3_EINVARG; } if (keylen != 16) { - PrintAndLogEx(ERR, " must be 16 bytes long. got: %d", keylen); + PrintAndLogEx(ERR, " must be 16 bytes. Got %d", keylen); return PM3_EINVARG; } if (datainlen != 16) { - PrintAndLogEx(ERR, " must be 16 bytes long. got: %d", datainlen); + PrintAndLogEx(ERR, " must be 16 bytes. Got %d", datainlen); return PM3_EINVARG; } @@ -997,11 +994,8 @@ static int CmdHFMFPWrbl(const char *Cmd) { return PM3_SUCCESS; } -#define AES_KEY_LEN 16 -#define MAX_KEYS_LIST_LEN 1024 - static int plus_key_check(uint8_t startSector, uint8_t endSector, uint8_t startKeyAB, uint8_t endKeyAB, - uint8_t keyList[MAX_KEYS_LIST_LEN][AES_KEY_LEN], size_t keyListLen, uint8_t foundKeys[2][64][AES_KEY_LEN + 1], + uint8_t keyList[MAX_AES_KEYS_LIST_LEN][AES_KEY_LEN], size_t keyListLen, uint8_t foundKeys[2][64][AES_KEY_LEN + 1], bool verbose) { int res; bool selectCard = true; @@ -1088,7 +1082,7 @@ static int plus_key_check(uint8_t startSector, uint8_t endSector, uint8_t startK return PM3_SUCCESS; } -static void Fill2bPattern(uint8_t keyList[MAX_KEYS_LIST_LEN][AES_KEY_LEN], uint32_t *keyListLen, uint32_t *startPattern) { +static void Fill2bPattern(uint8_t keyList[MAX_AES_KEYS_LIST_LEN][AES_KEY_LEN], uint32_t *keyListLen, uint32_t *startPattern) { for (uint32_t pt = *startPattern; pt < 0x10000; pt++) { keyList[*keyListLen][0] = (pt >> 8) & 0xff; keyList[*keyListLen][1] = pt & 0xff; @@ -1097,7 +1091,7 @@ static void Fill2bPattern(uint8_t keyList[MAX_KEYS_LIST_LEN][AES_KEY_LEN], uint3 memcpy(&keyList[*keyListLen][8], &keyList[*keyListLen][0], 8); (*keyListLen)++; *startPattern = pt; - if (*keyListLen == MAX_KEYS_LIST_LEN) + if (*keyListLen == MAX_AES_KEYS_LIST_LEN) break; } (*startPattern)++; @@ -1111,7 +1105,7 @@ static int CmdHFMFPChk(const char *Cmd) { "hf mfp chk -k 000102030405060708090a0b0c0d0e0f -> check key on sector 0 as key A and B\n" "hf mfp chk -s 2 -a -> check default key list on sector 2, only key A\n" "hf mfp chk -d mfp_default_keys -s0 -e6 -> check keys from dictionary against sectors 0-6\n" - "hf mfp chk --pattern1b -j keys -> check all 1-byte keys pattern and save found keys to json\n" + "hf mfp chk --pattern1b --dump -> check all 1-byte keys pattern and save found keys to file\n" "hf mfp chk --pattern2b --startp2b FA00 -> check all 2-byte keys pattern. Start from key FA00FA00...FA00"); void *argtable[] = { @@ -1125,7 +1119,7 @@ static int CmdHFMFPChk(const char *Cmd) { arg_lit0(NULL, "pattern1b", "Check all 1-byte combinations of key (0000...0000, 0101...0101, 0202...0202, ...)"), arg_lit0(NULL, "pattern2b", "Check all 2-byte combinations of key (0000...0000, 0001...0001, 0002...0002, ...)"), arg_str0(NULL, "startp2b", "", "Start key (2-byte HEX) for 2-byte search (use with `--pattern2b`)"), - arg_str0("j", "json", "", "Json filename to save keys"), + arg_lit0(NULL, "dump", "Dump found keys to JSON file"), arg_lit0("v", "verbose", "Verbose mode"), arg_param_end }; @@ -1136,7 +1130,7 @@ static int CmdHFMFPChk(const char *Cmd) { uint8_t startSector = arg_get_int_def(ctx, 3, 0); uint8_t endSector = arg_get_int_def(ctx, 4, 0); - uint8_t keyList[MAX_KEYS_LIST_LEN][AES_KEY_LEN] = {{0}}; + uint8_t keyList[MAX_AES_KEYS_LIST_LEN][AES_KEY_LEN] = {{0}}; uint32_t keyListLen = 0; uint8_t foundKeys[2][64][AES_KEY_LEN + 1] = {{{0}}}; @@ -1148,7 +1142,7 @@ static int CmdHFMFPChk(const char *Cmd) { memcpy(&keyList[keyListLen], vkey, 16); keyListLen++; } else { - PrintAndLogEx(ERR, "Specified key must have 16 bytes length."); + PrintAndLogEx(ERR, "Specified key must have 16 bytes. Got %d", vkeylen); CLIParserFree(ctx); return PM3_EINVARG; } @@ -1185,7 +1179,7 @@ static int CmdHFMFPChk(const char *Cmd) { if (vpatternlen <= 2) { startPattern = (vpattern[0] << 8) + vpattern[1]; } else { - PrintAndLogEx(ERR, "Pattern must be 2-byte length."); + PrintAndLogEx(ERR, "Pattern must be 2-bytes. Got %d", vpatternlen); CLIParserFree(ctx); return PM3_EINVARG; } @@ -1193,17 +1187,8 @@ static int CmdHFMFPChk(const char *Cmd) { PrintAndLogEx(WARNING, "Pattern entered, but search mode not is 2-byte search."); } - uint8_t jsonname[250] = {0}; - int jsonnamelen = 0; - if (CLIParamStrToBuf(arg_get_str(ctx, 10), jsonname, sizeof(jsonname), &jsonnamelen)) { - PrintAndLogEx(ERR, "Invalid json name."); - CLIParserFree(ctx); - return PM3_EINVARG; - } - jsonname[jsonnamelen] = 0; - + bool create_dumpfile = arg_get_lit(ctx, 10); bool verbose = arg_get_lit(ctx, 11); - CLIParserFree(ctx); uint8_t startKeyAB = 0; @@ -1227,8 +1212,9 @@ static int CmdHFMFPChk(const char *Cmd) { } // 2-byte pattern search mode - if (pattern2b) + if (pattern2b) { Fill2bPattern(keyList, &keyListLen, &startPattern); + } int res = PM3_SUCCESS; @@ -1291,19 +1277,30 @@ static int CmdHFMFPChk(const char *Cmd) { keyListLen = keycnt; } + PrintAndLogEx(INFO, "ICE pos... %zu - %zu", old_pos, endFilePosition); continue; } break; } - if (verbose == false) + + if (verbose == false) { PrintAndLogEx(NORMAL, ""); + } // print result char strA[46 + 1] = {0}; char strB[46 + 1] = {0}; + uint8_t ndef_key[] = {0xD3, 0xF7, 0xD3, 0xF7, 0xD3, 0xF7, 0xD3, 0xF7, 0xD3, 0xF7, 0xD3, 0xF7, 0xD3, 0xF7, 0xD3, 0xF7}; + bool has_ndef_key = false; bool printedHeader = false; for (uint8_t s = startSector; s <= endSector; s++) { + + if ((memcmp(&foundKeys[0][s][1], ndef_key, AES_KEY_LEN) == 0) || + (memcmp(&foundKeys[1][s][1], ndef_key, AES_KEY_LEN) == 0)) { + has_ndef_key = true; + } + if (printedHeader == false) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "-----+----------------------------------+----------------------------------"); @@ -1333,7 +1330,13 @@ static int CmdHFMFPChk(const char *Cmd) { PrintAndLogEx(INFO, "-----+----------------------------------+----------------------------------\n"); // save keys to json - if ((jsonnamelen > 0) && printedHeader) { + if (create_dumpfile && printedHeader) { + + size_t keys_len = (2 * 64 * (AES_KEY_LEN + 1)); + + uint8_t data[10 + 1 + 2 + 1 + 256 + keys_len]; + memset(data, 0, sizeof(data)); + // Mifare Plus info SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); @@ -1344,8 +1347,6 @@ static int CmdHFMFPChk(const char *Cmd) { memcpy(&card, (iso14a_card_select_t *)resp.data.asBytes, sizeof(iso14a_card_select_t)); uint64_t select_status = resp.oldarg[0]; // 0: couldn't read, 1: OK, with ATS, 2: OK, no ATS, 3: proprietary Anticollision - - uint8_t data[10 + 1 + 2 + 1 + 256 + 2 * 64 * (AES_KEY_LEN + 1)] = {0}; uint8_t atslen = 0; if (select_status == 1 || select_status == 2) { memcpy(data, card.uid, card.uidlen); @@ -1357,9 +1358,16 @@ static int CmdHFMFPChk(const char *Cmd) { memcpy(&data[14], card.ats, atslen); } + char *fptr = calloc(sizeof(char) * (strlen("hf-mfp-") + strlen("-key")) + card.uidlen * 2 + 1, sizeof(uint8_t)); + strcpy(fptr, "hf-mfp-"); + + FillFileNameByUID(fptr, card.uid, "-key", card.uidlen); + // length: UID(10b)+SAK(1b)+ATQA(2b)+ATSlen(1b)+ATS(atslen)+foundKeys[2][64][AES_KEY_LEN + 1] - memcpy(&data[14 + atslen], foundKeys, 2 * 64 * (AES_KEY_LEN + 1)); - saveFileJSON((char *)jsonname, jsfMfPlusKeys, data, 64, NULL); + memcpy(&data[14 + atslen], foundKeys, keys_len); + // 64 here is for how many "rows" there is in the data array. A bit confusing + saveFileJSON(fptr, jsfMfPlusKeys, data, 64, NULL); + free(fptr); } return PM3_SUCCESS; @@ -1369,7 +1377,7 @@ static int CmdHFMFPMAD(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mfp mad", - "Checks and prints Mifare Application Directory (MAD)", + "Checks and prints MIFARE Application Directory (MAD)", "hf mfp mad\n" "hf mfp mad --aid e103 -k d3f7d3f7d3f7d3f7d3f7d3f7d3f7d3f7 -> read and print NDEF data from MAD aid"); @@ -1411,9 +1419,7 @@ static int CmdHFMFPMAD(const char *Cmd) { return PM3_ESOFT; } - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "--- " _CYAN_("Mifare App Directory Information") " ----------------"); - PrintAndLogEx(INFO, "-----------------------------------------------------"); + MADPrintHeader(); if (verbose) { PrintAndLogEx(SUCCESS, "Raw:"); @@ -1427,7 +1433,7 @@ static int CmdHFMFPMAD(const char *Cmd) { if (haveMAD2) { if (mfpReadSector(MF_MAD2_SECTOR, MF_KEY_A, (uint8_t *)g_mifarep_mad_key, sector10, verbose)) { PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(ERR, "error, read sector 0x10. card doesn't have MAD or doesn't have MAD on default keys"); + PrintAndLogEx(ERR, "error, read sector " _YELLOW_("0x10") ". Card doesn't have MAD or doesn't have MAD on default keys"); return PM3_ESOFT; } @@ -1505,6 +1511,36 @@ static int CmdHFMFPMAD(const char *Cmd) { return PM3_SUCCESS; } +static int CmdHFMFPNDEFFormat(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfp ndefformat", + "format MIFARE Plus Tag as a NFC tag with Data Exchange Format (NDEF)\n" + "If no given, UID will be used as filename. \n" + "It will try default keys and MAD keys to detect if tag is already formatted in order to write.\n" + "\n" + "If not, it will try finding a key file based on your UID. ie, if you ran autopwn before", + "hf mfp ndefformat\n" + "hf mfp ndefformat --keys hf-mf-01020304-key.bin --> with keys from specified file\n" + ); + + void *argtable[] = { + arg_param_begin, + arg_str0("k", "keys", "", "filename of keys"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + + int keyfnlen = 0; + char keyFilename[FILE_PATH_SIZE] = {0}; + CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)keyFilename, FILE_PATH_SIZE, &keyfnlen); + + CLIParserFree(ctx); + + PrintAndLogEx(SUCCESS, "Not implemented yet. Feel free to contribute!"); + PrintAndLogEx(NORMAL, ""); + return PM3_SUCCESS; +} + int CmdHFMFPNDEFRead(const char *Cmd) { CLIParserContext *ctx; @@ -1641,20 +1677,74 @@ int CmdHFMFPNDEFRead(const char *Cmd) { return PM3_SUCCESS; } +static int CmdHFMFPNDEFWrite(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfp ndefwrite", + "Write raw NDEF hex bytes to tag. This commands assumes tag already been NFC/NDEF formatted.\n", + "hf mfp ndefwrite -d 0300FE -> write empty record to tag\n" + "hf mfp ndefwrite -f myfilename\n" + "hf mfp ndefwrite -d 033fd1023a53709101195405656e2d55534963656d616e2054776974746572206c696e6b5101195502747769747465722e636f6d2f686572726d616e6e31303031\n" + ); + + void *argtable[] = { + arg_param_begin, + arg_str0("d", NULL, "", "raw NDEF hex bytes"), + arg_str0("f", "file", "", "write raw NDEF file to tag"), + arg_lit0("p", NULL, "fix NDEF record headers / terminator block if missing"), + arg_lit0("v", "verbose", "verbose output"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + + uint8_t raw[4096] = {0}; + int rawlen; + CLIGetHexWithReturn(ctx, 1, raw, &rawlen); + + int fnlen = 0; + char filename[FILE_PATH_SIZE] = {0}; + CLIParamStrToBuf(arg_get_str(ctx, 2), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); + + bool fix_msg = arg_get_lit(ctx, 3); + bool verbose = arg_get_lit(ctx, 4); + CLIParserFree(ctx); + + if (fix_msg) { + PrintAndLogEx(NORMAL, "called with fix NDEF message param"); + } + + if (verbose) { + PrintAndLogEx(NORMAL, ""); + } + PrintAndLogEx(SUCCESS, "Not implemented yet. Feel free to contribute!"); + PrintAndLogEx(NORMAL, ""); + return PM3_SUCCESS; +} + +static int CmdHFMFPList(const char *Cmd) { + return CmdTraceListAlias(Cmd, "hf mf", "mf"); +} + static command_t CommandTable[] = { - {"help", CmdHelp, AlwaysAvailable, "This help"}, - {"info", CmdHFMFPInfo, IfPm3Iso14443a, "Info about Mifare Plus tag"}, - {"wrp", CmdHFMFPWritePerso, IfPm3Iso14443a, "Write Perso command"}, - {"initp", CmdHFMFPInitPerso, IfPm3Iso14443a, "Fill all the card's keys in SL0 mode"}, - {"commitp", CmdHFMFPCommitPerso, IfPm3Iso14443a, "Move card to SL1 or SL3 mode"}, - {"auth", CmdHFMFPAuth, IfPm3Iso14443a, "Authentication"}, - {"rdbl", CmdHFMFPRdbl, IfPm3Iso14443a, "Read blocks"}, - {"rdsc", CmdHFMFPRdsc, IfPm3Iso14443a, "Read sectors"}, - {"wrbl", CmdHFMFPWrbl, IfPm3Iso14443a, "Write blocks"}, - {"chk", CmdHFMFPChk, IfPm3Iso14443a, "Check keys"}, - {"mad", CmdHFMFPMAD, IfPm3Iso14443a, "Check and print MAD"}, - {"ndefread", CmdHFMFPNDEFRead, IfPm3Iso14443a, "Read and print NDEF records from card"}, - {NULL, NULL, 0, NULL} + {"help", CmdHelp, AlwaysAvailable, "This help"}, + {"list", CmdHFMFPList, AlwaysAvailable, "List MIFARE Plus history"}, + {"-----------", CmdHelp, IfPm3Iso14443a, "------------------- " _CYAN_("operations") " ---------------------"}, + {"auth", CmdHFMFPAuth, IfPm3Iso14443a, "Authentication"}, + {"chk", CmdHFMFPChk, IfPm3Iso14443a, "Check keys"}, + {"dump", CmdHFMFPDump, IfPm3Iso14443a, "Dump MIFARE Classic tag to binary file"}, + {"info", CmdHFMFPInfo, IfPm3Iso14443a, "Info about MIFARE Plus tag"}, + {"mad", CmdHFMFPMAD, IfPm3Iso14443a, "Check and print MAD"}, + {"rdbl", CmdHFMFPRdbl, IfPm3Iso14443a, "Read blocks from card"}, + {"rdsc", CmdHFMFPRdsc, IfPm3Iso14443a, "Read sectors from card"}, + {"wrbl", CmdHFMFPWrbl, IfPm3Iso14443a, "Write block to card"}, + {"-----------", CmdHelp, IfPm3Iso14443a, "---------------- " _CYAN_("personalization") " -------------------"}, + {"commitp", CmdHFMFPCommitPerso, IfPm3Iso14443a, "Move card to SL1 or SL3 mode"}, + {"initp", CmdHFMFPInitPerso, IfPm3Iso14443a, "Fill all the card's keys in SL0 mode"}, + {"wrp", CmdHFMFPWritePerso, IfPm3Iso14443a, "Write Perso command"}, + {"-----------", CmdHelp, IfPm3Iso14443a, "---------------------- " _CYAN_("ndef") " ------------------------"}, + {"ndefformat", CmdHFMFPNDEFFormat, IfPm3Iso14443a, "Format MIFARE Plus Tag as NFC Tag"}, + {"ndefread", CmdHFMFPNDEFRead, IfPm3Iso14443a, "Read and print NDEF records from card"}, + {"ndefwrite", CmdHFMFPNDEFWrite, IfPm3Iso14443a, "Write NDEF records to card"}, + {NULL, NULL, 0, NULL} }; static int CmdHelp(const char *Cmd) { diff --git a/client/src/cmdhfmfp.h b/client/src/cmdhfmfp.h index 2a4d7cd2c..29723b204 100644 --- a/client/src/cmdhfmfp.h +++ b/client/src/cmdhfmfp.h @@ -24,6 +24,26 @@ #define AES_KEY_LEN 16 #define MAX_AES_KEYS_LIST_LEN 1024 +typedef enum { + MFP_UNKNOWN = 0, + DESFIRE_MF3ICD40, + DESFIRE_EV1, + DESFIRE_EV2, + DESFIRE_EV3, + DESFIRE_LIGHT, + PLUS_EV1, +} nxp_cardtype_t; + +typedef struct mfp_key_item { + uint8_t a[16]; + uint8_t b[16]; +} mfp_key_item_t; + +typedef struct mfp_keys { + uint8_t success; + mfp_key_item_t *keys; +} mfp_keys_t; + int CmdHFMFP(const char *Cmd); int CmdHFMFPNDEFRead(const char *Cmd); From bf8ac54c38c43aadd695c62a3ac1b43689c75751 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 17:58:22 +0200 Subject: [PATCH 0081/1034] fix loop logic. thanks @jump --- client/src/cmdhf14b.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 77378fda2..29a985b29 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -2231,30 +2231,31 @@ int infoHF14B(bool verbose, bool do_aid_search) { int readHF14B(bool loop, bool verbose) { bool found = false; do { + found = false; + // try std 14b (atqb) - found = HF14B_std_reader(verbose); + found |= HF14B_std_reader(verbose); if (found && loop) continue; // try ST Microelectronics 14b - found = HF14B_st_reader(verbose); + found |= HF14B_st_reader(verbose); if (found && loop) continue; // try ASK CT 14b - found = HF14B_ask_ct_reader(verbose); + found |= HF14B_ask_ct_reader(verbose); if (found && loop) continue; // try unknown 14b read commands (to be identified later) // could be read of calypso, CEPAS, moneo, or pico pass. - found = HF14B_other_reader(verbose); + found |= HF14B_other_reader(verbose); if (found && loop) continue; } while (loop && kbd_enter_pressed() == false); - if (verbose && found == false) { PrintAndLogEx(FAILED, "no ISO 14443-B tag found"); } From b8d3b281ad8fefe4e00302def714f4392a2c53b3 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 18:07:56 +0200 Subject: [PATCH 0082/1034] adapt non commit functions yet --- client/src/cmdhfmfp.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 2368e0f74..61f39e9c2 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1277,7 +1277,6 @@ static int CmdHFMFPChk(const char *Cmd) { keyListLen = keycnt; } - PrintAndLogEx(INFO, "ICE pos... %zu - %zu", old_pos, endFilePosition); continue; } break; @@ -1730,14 +1729,14 @@ static command_t CommandTable[] = { {"-----------", CmdHelp, IfPm3Iso14443a, "------------------- " _CYAN_("operations") " ---------------------"}, {"auth", CmdHFMFPAuth, IfPm3Iso14443a, "Authentication"}, {"chk", CmdHFMFPChk, IfPm3Iso14443a, "Check keys"}, - {"dump", CmdHFMFPDump, IfPm3Iso14443a, "Dump MIFARE Classic tag to binary file"}, +// {"dump", CmdHFMFPDump, IfPm3Iso14443a, "Dump MIFARE Plus tag to binary file"}, {"info", CmdHFMFPInfo, IfPm3Iso14443a, "Info about MIFARE Plus tag"}, {"mad", CmdHFMFPMAD, IfPm3Iso14443a, "Check and print MAD"}, {"rdbl", CmdHFMFPRdbl, IfPm3Iso14443a, "Read blocks from card"}, {"rdsc", CmdHFMFPRdsc, IfPm3Iso14443a, "Read sectors from card"}, {"wrbl", CmdHFMFPWrbl, IfPm3Iso14443a, "Write block to card"}, {"-----------", CmdHelp, IfPm3Iso14443a, "---------------- " _CYAN_("personalization") " -------------------"}, - {"commitp", CmdHFMFPCommitPerso, IfPm3Iso14443a, "Move card to SL1 or SL3 mode"}, + {"commitp", CmdHFMFPCommitPerso, IfPm3Iso14443a, "Configure security layer (SL1/SL3 mode)"}, {"initp", CmdHFMFPInitPerso, IfPm3Iso14443a, "Fill all the card's keys in SL0 mode"}, {"wrp", CmdHFMFPWritePerso, IfPm3Iso14443a, "Write Perso command"}, {"-----------", CmdHelp, IfPm3Iso14443a, "---------------------- " _CYAN_("ndef") " ------------------------"}, From 3fbd53ac2f3d500344ec210881357c7889669cf5 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 18:27:33 +0200 Subject: [PATCH 0083/1034] hf mf wipe - text --- client/src/cmdhfmf.c | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 130654caf..98ac30b98 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7015,33 +7015,33 @@ static int CmdHF14AMfWipe(const char *Cmd) { return PM3_ESOFT; } - uint8_t keyA[MIFARE_4K_MAXSECTOR * 6]; - uint8_t keyB[MIFARE_4K_MAXSECTOR * 6]; + uint8_t keyA[MIFARE_4K_MAXSECTOR * MIFARE_KEY_SIZE]; + uint8_t keyB[MIFARE_4K_MAXSECTOR * MIFARE_KEY_SIZE]; uint8_t num_sectors = 0; uint8_t mf[MFBLOCK_SIZE]; switch (keyslen) { - case (MIFARE_MINI_MAXSECTOR * 2 * 6): { + case (MIFARE_MINI_MAXSECTOR * 2 * MIFARE_KEY_SIZE): { PrintAndLogEx(INFO, "Loaded keys matching MIFARE Classic Mini 320b"); - memcpy(keyA, keys, (MIFARE_MINI_MAXSECTOR * 6)); - memcpy(keyB, keys + (MIFARE_MINI_MAXSECTOR * 6), (MIFARE_MINI_MAXSECTOR * 6)); + memcpy(keyA, keys, (MIFARE_MINI_MAXSECTOR * MIFARE_KEY_SIZE)); + memcpy(keyB, keys + (MIFARE_MINI_MAXSECTOR * MIFARE_KEY_SIZE), (MIFARE_MINI_MAXSECTOR * MIFARE_KEY_SIZE)); num_sectors = NumOfSectors('0'); memcpy(mf, "\x11\x22\x33\x44\x44\x09\x04\x00\x62\x63\x64\x65\x66\x67\x68\x69", MFBLOCK_SIZE); break; } - case (MIFARE_1K_MAXSECTOR * 2 * 6): { + case (MIFARE_1K_MAXSECTOR * 2 * MIFARE_KEY_SIZE): { PrintAndLogEx(INFO, "Loaded keys matching MIFARE Classic 1K"); - memcpy(keyA, keys, (MIFARE_1K_MAXSECTOR * 6)); - memcpy(keyB, keys + (MIFARE_1K_MAXSECTOR * 6), (MIFARE_1K_MAXSECTOR * 6)); + memcpy(keyA, keys, (MIFARE_1K_MAXSECTOR * MIFARE_KEY_SIZE)); + memcpy(keyB, keys + (MIFARE_1K_MAXSECTOR * MIFARE_KEY_SIZE), (MIFARE_1K_MAXSECTOR * MIFARE_KEY_SIZE)); num_sectors = NumOfSectors('1'); memcpy(mf, "\x11\x22\x33\x44\x44\x08\x04\x00\x62\x63\x64\x65\x66\x67\x68\x69", MFBLOCK_SIZE); break; } - case (MIFARE_4K_MAXSECTOR * 2 * 6): { + case (MIFARE_4K_MAXSECTOR * 2 * MIFARE_KEY_SIZE): { PrintAndLogEx(INFO, "Loaded keys matching MIFARE Classic 4K"); - memcpy(keyA, keys, (MIFARE_4K_MAXSECTOR * 6)); - memcpy(keyB, keys + (MIFARE_4K_MAXSECTOR * 6), (MIFARE_4K_MAXSECTOR * 6)); + memcpy(keyA, keys, (MIFARE_4K_MAXSECTOR * MIFARE_KEY_SIZE)); + memcpy(keyB, keys + (MIFARE_4K_MAXSECTOR * MIFARE_KEY_SIZE), (MIFARE_4K_MAXSECTOR * MIFARE_KEY_SIZE)); num_sectors = NumOfSectors('4'); memcpy(mf, "\x11\x22\x33\x44\x44\x18\x02\x00\x62\x63\x64\x65\x66\x67\x68\x69", MFBLOCK_SIZE); break; @@ -7063,6 +7063,8 @@ static int CmdHF14AMfWipe(const char *Cmd) { memset(zeros, 0x00, sizeof(zeros)); uint8_t st[MFBLOCK_SIZE] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x80, 0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; + PrintAndLogEx(INFO, " blk | "); + PrintAndLogEx(INFO, "-----+------------------------------------------------------------"); // time to wipe card for (uint8_t s = 0; s < num_sectors; s++) { @@ -7095,11 +7097,11 @@ static int CmdHF14AMfWipe(const char *Cmd) { for (int8_t kt = MF_KEY_B; kt > -1; kt--) { if (kt == MF_KEY_A) - memcpy(data, keyA + (s * 6), 6); + memcpy(data, keyA + (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); else - memcpy(data, keyB + (s * 6), 6); + memcpy(data, keyB + (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); - PrintAndLogEx(INFO, "block %3d: %s" NOLF, mfFirstBlockOfSector(s) + b, sprint_hex(data + 10, MFBLOCK_SIZE)); + PrintAndLogEx(INFO, " %3d | %s" NOLF, mfFirstBlockOfSector(s) + b, sprint_hex(data + 10, MFBLOCK_SIZE)); clearCommandBuffer(); SendCommandMIX(CMD_HF_MIFARE_WRITEBL, mfFirstBlockOfSector(s) + b, kt, 0, data, sizeof(data)); PacketResponseNG resp; @@ -7118,6 +7120,7 @@ static int CmdHF14AMfWipe(const char *Cmd) { } } + PrintAndLogEx(INFO, "-----+------------------------------------------------------------"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "Done!"); out: From a4e22416b94620ad943d55f533b95d28eb2975fd Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 18:28:44 +0200 Subject: [PATCH 0084/1034] less debug output when an auth fails --- armsrc/mifarecmd.c | 4 ++-- armsrc/mifareutil.c | 20 +++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 4d57ef0ce..7a5abf2c8 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -3221,7 +3221,7 @@ void Mifare_DES_Auth1(uint8_t arg0, uint8_t *datain) { return; }; - if (mifare_desfire_des_auth1(cuid, dataout)) { + if (mifare_desfire_des_auth1(cuid, dataout) != PM3_SUCCESS) { if (g_dbglevel >= DBG_ERROR) Dbprintf("Authentication part1: Fail."); OnError(4); return; @@ -3241,7 +3241,7 @@ void Mifare_DES_Auth2(uint32_t arg0, uint8_t *datain) { isOK = mifare_desfire_des_auth2(cuid, key, dataout); - if (isOK) { + if (isOK != PM3_SUCCESS) { if (g_dbglevel >= DBG_EXTENDED) Dbprintf("Authentication part2: Failed"); OnError(4); return; diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c index 7296f1abe..487c71706 100644 --- a/armsrc/mifareutil.c +++ b/armsrc/mifareutil.c @@ -433,7 +433,7 @@ int mifare_classic_writeblock_ex(struct Crypto1State *pcs, uint32_t uid, uint8_t } if ((len != 1) || (receivedAnswer[0] != 0x0A)) { // 0x0a - ACK - if (g_dbglevel >= DBG_ERROR) Dbprintf("Cmd Error: %02x", receivedAnswer[0]); + if (g_dbglevel >= DBG_INFO) Dbprintf("Cmd Error: %02x", receivedAnswer[0]); return PM3_EFAILED; } @@ -805,9 +805,10 @@ int mifare_desfire_des_auth1(uint32_t uid, uint8_t *blockData) { len = mifare_sendcmd_special(NULL, 1, 0x02, data, receivedAnswer, receivedAnswerPar, NULL); if (len == 1) { - if (g_dbglevel >= DBG_ERROR) + if (g_dbglevel >= DBG_INFO) { Dbprintf("Cmd Error: %02x", receivedAnswer[0]); - return 1; + } + return PM3_EFAILED; } if (len == 12) { @@ -818,9 +819,9 @@ int mifare_desfire_des_auth1(uint32_t uid, uint8_t *blockData) { receivedAnswer[10], receivedAnswer[11]); } memcpy(blockData, receivedAnswer, 12); - return 0; + return PM3_SUCCESS; } - return 1; + return PM3_EFAILED; } int mifare_desfire_des_auth2(uint32_t uid, uint8_t *key, uint8_t *blockData) { @@ -835,9 +836,10 @@ int mifare_desfire_des_auth2(uint32_t uid, uint8_t *key, uint8_t *blockData) { len = mifare_sendcmd_special2(NULL, 1, 0x03, data, receivedAnswer, receivedAnswerPar, NULL); if ((receivedAnswer[0] == 0x03) && (receivedAnswer[1] == 0xae)) { - if (g_dbglevel >= DBG_ERROR) + if (g_dbglevel >= DBG_ERROR) { Dbprintf("Auth Error: %02x %02x", receivedAnswer[0], receivedAnswer[1]); - return 1; + } + return PM3_EFAILED; } if (len == 12) { @@ -848,7 +850,7 @@ int mifare_desfire_des_auth2(uint32_t uid, uint8_t *key, uint8_t *blockData) { receivedAnswer[10], receivedAnswer[11]); } memcpy(blockData, receivedAnswer, 12); - return 0; + return PM3_SUCCESS; } - return 1; + return PM3_EFAILED; } From 2d70ff5085d7ccf11019fc97da5f68915b724bca Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 18:33:16 +0200 Subject: [PATCH 0085/1034] fix compilation by adding the WIP func --- client/src/cmdhfmfp.c | 93 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 92 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 61f39e9c2..089e041d3 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1369,9 +1369,100 @@ static int CmdHFMFPChk(const char *Cmd) { free(fptr); } + // MAD detection + if ((memcmp(&foundKeys[0][0][1], "\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7", AES_KEY_LEN) == 0)) { + PrintAndLogEx(HINT, "MAD key detected. Try " _YELLOW_("`hf mfp mad`") " for more details"); + } + + // NDEF detection + if (has_ndef_key) { + PrintAndLogEx(HINT, "NDEF key detected. Try " _YELLOW_("`hf mfp ndefread -h`") " for more details"); + } + PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } +static int CmdHFMFPDump(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfp dump", + "Dump MIFARE Plus tag to binary file\n" + "If no given, UID will be used as filename", + "hf mfp dump\n" + "hf mfp dump --keys hf-mf-066C8B78-key.bin --> MIFARE Plus with keys from specified file\n"); + + void *argtable[] = { + arg_param_begin, + arg_str0("f", "file", "", "filename of dump"), + arg_str0("k", "keys", "", "filename of keys"), + arg_lit0(NULL, "ns", "no save to file"), + arg_lit0("v", "verbose", "Verbose mode"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + + int datafnlen = 0; + char data_fn[FILE_PATH_SIZE] = {0}; + CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)data_fn, FILE_PATH_SIZE, &datafnlen); + + int keyfnlen = 0; + char key_fn[FILE_PATH_SIZE] = {0}; + CLIParamStrToBuf(arg_get_str(ctx, 2), (uint8_t *)key_fn, FILE_PATH_SIZE, &keyfnlen); + + bool nosave = arg_get_lit(ctx, 3); + bool verbose = arg_get_lit(ctx, 4); + CLIParserFree(ctx); + + mfpSetVerboseMode(verbose); + + // read card + uint8_t *mem = calloc(MIFARE_4K_MAXBLOCK * MFBLOCK_SIZE, sizeof(uint8_t)); + if (mem == NULL) { + PrintAndLogEx(ERR, "failed to allocate memory"); + return PM3_EMALLOC; + } + +/* + iso14a_card_select_t card ; + int res = mfp_read_tag(&card, mem, key_fn); + if (res != PM3_SUCCESS) { + free(mem); + return res; + } +*/ + + // Skip saving card data to file + if (nosave) { + PrintAndLogEx(INFO, "Called with no save option"); + free(mem); + return PM3_SUCCESS; + } +/* + // Save to file + if (strlen(data_fn) < 1) { + + char *fptr = calloc(sizeof(char) * (strlen("hf-mfp-") + strlen("-dump")) + card.uidlen * 2 + 1, sizeof(uint8_t)); + strcpy(fptr, "hf-mfp-"); + + FillFileNameByUID(fptr, card.uid, "-dump", card.uidlen); + + strcpy(data_fn, fptr); + free(fptr); + } + + saveFile(data_fn, ".bin", mem, MIFARE_4K_MAX_BYTES); + saveFileEML(data_fn, mem, MIFARE_4K_MAX_BYTES, MFBLOCK_SIZE); + + iso14a_mf_extdump_t xdump; + xdump.card_info = card; + xdump.dump = mem; + xdump.dumplen = MIFARE_4K_MAX_BYTES; + saveFileJSON(data_fn, jsfCardMemory, (uint8_t *)&xdump, sizeof(xdump), NULL); +*/ + free(mem); + return PM3_SUCCESS; +} + + static int CmdHFMFPMAD(const char *Cmd) { CLIParserContext *ctx; @@ -1729,7 +1820,7 @@ static command_t CommandTable[] = { {"-----------", CmdHelp, IfPm3Iso14443a, "------------------- " _CYAN_("operations") " ---------------------"}, {"auth", CmdHFMFPAuth, IfPm3Iso14443a, "Authentication"}, {"chk", CmdHFMFPChk, IfPm3Iso14443a, "Check keys"}, -// {"dump", CmdHFMFPDump, IfPm3Iso14443a, "Dump MIFARE Plus tag to binary file"}, + {"dump", CmdHFMFPDump, IfPm3Iso14443a, "Dump MIFARE Plus tag to binary file"}, {"info", CmdHFMFPInfo, IfPm3Iso14443a, "Info about MIFARE Plus tag"}, {"mad", CmdHFMFPMAD, IfPm3Iso14443a, "Check and print MAD"}, {"rdbl", CmdHFMFPRdbl, IfPm3Iso14443a, "Read blocks from card"}, From 55b780074fed9b169124bdfae134fbe60284d846 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 18:59:16 +0200 Subject: [PATCH 0086/1034] move defines --- client/src/fileutils.c | 2 +- client/src/mifare/mifaredefault.h | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index aad9b9cce..917a7ee77 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -29,7 +29,7 @@ #include "cmdhficlass.h" // pagemap #include "protocols.h" // iclass defines #include "cmdhftopaz.h" // TOPAZ defines -#include "cmdhfmfp.h" // MFP / AES defines +#include "mifare/mifaredefault.h" // MFP / AES defines #ifdef _WIN32 #include "scandir.h" diff --git a/client/src/mifare/mifaredefault.h b/client/src/mifare/mifaredefault.h index e3590329d..7bb7e144a 100644 --- a/client/src/mifare/mifaredefault.h +++ b/client/src/mifare/mifaredefault.h @@ -21,6 +21,9 @@ #include "common.h" +#define AES_KEY_LEN 16 +#define MAX_AES_KEYS_LIST_LEN 1024 + #define MFKEY_SIZE 6 #define MFBLOCK_SIZE 16 @@ -41,6 +44,12 @@ #define MIFARE_KEY_SIZE 6 +#define MIFARE_MINI_MAX_KEY_SIZE (MIFARE_MINI_MAXSECTOR * 2 * MIFARE_KEY_SIZE) +#define MIFARE_1K_MAX_KEY_SIZE (MIFARE_1K_MAXSECTOR * 2 * MIFARE_KEY_SIZE) +#define MIFARE_2K_MAX_KEY_SIZE (MIFARE_2K_MAXSECTOR * 2 * MIFARE_KEY_SIZE) +#define MIFARE_4K_MAX_KEY_SIZE (MIFARE_4K_MAXSECTOR * 2 * MIFARE_KEY_SIZE) + + static const uint64_t g_mifare_default_keys[] = { 0xffffffffffff, // Default key (first key used by program if no user defined key) 0xa0a1a2a3a4a5, // NFCForum MAD key From 5087581a509839a9fe9ceffa399ea1e5ba38c602 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 19:58:33 +0200 Subject: [PATCH 0087/1034] fix some wrong sector comparisions. And return value for restore command when sending wrbl. --- client/src/cmdhfmf.c | 55 ++++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 98ac30b98..fe48bb1fe 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -984,7 +984,7 @@ static int CmdHF14AMfRdSc(const char *Cmd) { return PM3_EINVARG; } - if (s > MIFARE_4K_MAXSECTOR) { + if (s >= MIFARE_4K_MAXSECTOR) { PrintAndLogEx(WARNING, "Sector number must be less then 40"); return PM3_EINVARG; } @@ -1321,6 +1321,9 @@ static int CmdHF14AMfRestore(const char *Cmd) { PrintAndLogEx(INFO, "Restoring " _YELLOW_("%s")" to card", datafilename); + PrintAndLogEx(INFO, " blk | "); + PrintAndLogEx(INFO, "-----+------------------------------------------------------------"); + // main loop for restoring. // a bit more complicated than needed // this is because of two things. @@ -1334,7 +1337,7 @@ static int CmdHF14AMfRestore(const char *Cmd) { memcpy(bldata, dump, MFBLOCK_SIZE); // if sector trailer - if (mfNumBlocksPerSector(s) - 1 == b) { + if (mfIsSectorTrailerBasedOnBlocks(s, b)) { if (use_keyfile_for_auth == false) { // replace KEY A memcpy(bldata, keyA + (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); @@ -1381,33 +1384,40 @@ static int CmdHF14AMfRestore(const char *Cmd) { // use default key to authenticate for the write command memcpy(wdata, default_key, MIFARE_KEY_SIZE); } - PrintAndLogEx(INFO, "block %3d: %s", mfFirstBlockOfSector(s) + b, sprint_hex(bldata, sizeof(bldata))); + + PrintAndLogEx(INFO, " %3d | %s", mfFirstBlockOfSector(s) + b, sprint_hex(bldata, sizeof(bldata))); clearCommandBuffer(); SendCommandMIX(CMD_HF_MIFARE_WRITEBL, mfFirstBlockOfSector(s) + b, kt, 0, wdata, sizeof(wdata)); PacketResponseNG resp; - if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { - uint8_t isOK = resp.oldarg[0] & 0xff; - if (isOK == 0) { - if (b == 0) { - PrintAndLogEx(INFO, "Writing to manufacture block w key %c ( " _RED_("fail") " )", (kt == MF_KEY_A) ? 'A' : 'B'); - } else { - PrintAndLogEx(FAILED, "Write to block %u w key %c ( " _RED_("fail") " ) ", b, (kt == MF_KEY_A) ? 'A' : 'B'); - } - } else { - // if success, skip to next block - break; - } - } else { + if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { PrintAndLogEx(WARNING, "Command execute timeout"); + continue; + } + + int isOK = resp.oldarg[0] & 0xff; + if (isOK == 1) { + // if success, skip to next block + break; + } else if (isOK == PM3_ETEAROFF) { + PrintAndLogEx(INFO, "Tear off triggerd. Recommendation is not to use tear-off with restore command"); + return isOK; + } else { + if (b == 0) { + PrintAndLogEx(INFO, "Writing to manufacture block w key %c ( " _RED_("fail") " )", (kt == MF_KEY_A) ? 'A' : 'B'); + } else { + PrintAndLogEx(FAILED, "Write to block %u w key %c ( " _RED_("fail") " ) ", b, (kt == MF_KEY_A) ? 'A' : 'B'); + } } - } + } // end loop key types } // end loop B } // end loop S free(ref_dump); free(keyA); free(keyB); + PrintAndLogEx(INFO, "-----+------------------------------------------------------------"); + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; } @@ -4071,7 +4081,7 @@ static int CmdHF14AMfEGetSc(const char *Cmd) { bool verbose = arg_get_lit(ctx, 2); CLIParserFree(ctx); - if (s > 39) { + if (s >= MIFARE_4K_MAXSECTOR) {v PrintAndLogEx(WARNING, "Sector number must be less then 40"); return PM3_EINVARG; } @@ -5065,7 +5075,8 @@ static int CmdHF14AMfCGetSc(const char *Cmd) { int s = arg_get_int_def(ctx, 1, 0); bool verbose = arg_get_lit(ctx, 2); CLIParserFree(ctx); - if (s > 39) { + + if (s >= MIFARE_4K_MAXSECTOR) { PrintAndLogEx(WARNING, "Sector number must be less then 40"); return PM3_EINVARG; } @@ -7021,7 +7032,7 @@ static int CmdHF14AMfWipe(const char *Cmd) { uint8_t mf[MFBLOCK_SIZE]; switch (keyslen) { - case (MIFARE_MINI_MAXSECTOR * 2 * MIFARE_KEY_SIZE): { + case (MIFARE_MINI_MAX_KEY_SIZE): { PrintAndLogEx(INFO, "Loaded keys matching MIFARE Classic Mini 320b"); memcpy(keyA, keys, (MIFARE_MINI_MAXSECTOR * MIFARE_KEY_SIZE)); memcpy(keyB, keys + (MIFARE_MINI_MAXSECTOR * MIFARE_KEY_SIZE), (MIFARE_MINI_MAXSECTOR * MIFARE_KEY_SIZE)); @@ -7029,7 +7040,7 @@ static int CmdHF14AMfWipe(const char *Cmd) { memcpy(mf, "\x11\x22\x33\x44\x44\x09\x04\x00\x62\x63\x64\x65\x66\x67\x68\x69", MFBLOCK_SIZE); break; } - case (MIFARE_1K_MAXSECTOR * 2 * MIFARE_KEY_SIZE): { + case (MIFARE_1K_MAX_KEY_SIZE): { PrintAndLogEx(INFO, "Loaded keys matching MIFARE Classic 1K"); memcpy(keyA, keys, (MIFARE_1K_MAXSECTOR * MIFARE_KEY_SIZE)); memcpy(keyB, keys + (MIFARE_1K_MAXSECTOR * MIFARE_KEY_SIZE), (MIFARE_1K_MAXSECTOR * MIFARE_KEY_SIZE)); @@ -7038,7 +7049,7 @@ static int CmdHF14AMfWipe(const char *Cmd) { memcpy(mf, "\x11\x22\x33\x44\x44\x08\x04\x00\x62\x63\x64\x65\x66\x67\x68\x69", MFBLOCK_SIZE); break; } - case (MIFARE_4K_MAXSECTOR * 2 * MIFARE_KEY_SIZE): { + case (MIFARE_4K_MAX_KEY_SIZE): { PrintAndLogEx(INFO, "Loaded keys matching MIFARE Classic 4K"); memcpy(keyA, keys, (MIFARE_4K_MAXSECTOR * MIFARE_KEY_SIZE)); memcpy(keyB, keys + (MIFARE_4K_MAXSECTOR * MIFARE_KEY_SIZE), (MIFARE_4K_MAXSECTOR * MIFARE_KEY_SIZE)); From c6e9f9781c22a2f38609bebfbabccf31dbf082fb Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 23 Jun 2023 20:02:56 +0200 Subject: [PATCH 0088/1034] fix char --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index fe48bb1fe..5a676e390 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4081,7 +4081,7 @@ static int CmdHF14AMfEGetSc(const char *Cmd) { bool verbose = arg_get_lit(ctx, 2); CLIParserFree(ctx); - if (s >= MIFARE_4K_MAXSECTOR) {v + if (s >= MIFARE_4K_MAXSECTOR) { PrintAndLogEx(WARNING, "Sector number must be less then 40"); return PM3_EINVARG; } From c937e3b760e09beb193c871e80376f5dee30d62c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 24 Jun 2023 00:02:50 +0200 Subject: [PATCH 0089/1034] fix tear off to work with topaz wrbl. fix topas wrbl to handle LOCK/OTP block 13,14, which needs write_nonerase command, fixed output for rdbl --- armsrc/iso14443a.c | 34 ++++++++-- client/src/cmdhftopaz.c | 138 +++++++++++++++++++++++++++++++++------- 2 files changed, 143 insertions(+), 29 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 01eed12c1..42b42c180 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1291,7 +1291,7 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r { .response = rPPS, .response_n = sizeof(rPPS) }, // PPS response { .response = rPACK, .response_n = sizeof(rPACK) } // PACK response }; - + // "precompile" responses. There are 12 predefined responses with a total of 84 bytes data to transmit. // Coded responses need one byte per bit to transfer (data, parity, start, stop, correction) @@ -3094,13 +3094,33 @@ void ReaderIso14443a(PacketCommandNG *c) { } } - if (tearoff_hook() == PM3_ETEAROFF) { // tearoff occurred - FpgaDisableTracing(); - reply_mix(CMD_ACK, 0, 0, 0, NULL, 0); + if ((param & ISO14A_TOPAZMODE)) { + + if (cmd[0] == TOPAZ_WRITE_E8 || cmd[0] == TOPAZ_WRITE_NE8) { + if (tearoff_hook() == PM3_ETEAROFF) { // tearoff occurred + FpgaDisableTracing(); + reply_mix(CMD_ACK, 0, 0, 0, NULL, 0); + } else { + arg0 = ReaderReceive(buf, par); + FpgaDisableTracing(); + reply_old(CMD_ACK, arg0, 0, 0, buf, sizeof(buf)); + } + } else { + arg0 = ReaderReceive(buf, par); + FpgaDisableTracing(); + reply_old(CMD_ACK, arg0, 0, 0, buf, sizeof(buf)); + } + } else { - arg0 = ReaderReceive(buf, par); - FpgaDisableTracing(); - reply_old(CMD_ACK, arg0, 0, 0, buf, sizeof(buf)); + + if (tearoff_hook() == PM3_ETEAROFF) { // tearoff occurred + FpgaDisableTracing(); + reply_mix(CMD_ACK, 0, 0, 0, NULL, 0); + } else { + arg0 = ReaderReceive(buf, par); + FpgaDisableTracing(); + reply_old(CMD_ACK, arg0, 0, 0, buf, sizeof(buf)); + } } } diff --git a/client/src/cmdhftopaz.c b/client/src/cmdhftopaz.c index 6311b50ed..766889438 100644 --- a/client/src/cmdhftopaz.c +++ b/client/src/cmdhftopaz.c @@ -224,6 +224,8 @@ static int topaz_write_erase8_block(uint8_t blockno, uint8_t *block_data) { uint16_t resp_len = 11; uint8_t response[11] = {0}; + // + if (topaz_send_cmd(wr8_cmd, sizeof(wr8_cmd), response, &resp_len, true) == PM3_ETIMEOUT) { topaz_switch_off_field(); return PM3_ESOFT; // WriteErase 8bytes failed @@ -243,6 +245,61 @@ static int topaz_write_erase8_block(uint8_t blockno, uint8_t *block_data) { return PM3_ESOFT; } +// write a block (8 Bytes) of a selected Topaz tag. +static int topaz_write_nonerase8_block(uint8_t blockno, uint8_t *block_data) { + + uint8_t atqa[2] = {0}; + uint8_t rid_response[8] = {0}; + int res = topaz_select(atqa, sizeof(atqa), rid_response, sizeof(rid_response), true); + if (res != PM3_SUCCESS) { + return res; + } + + if (atqa[1] != 0x0c && atqa[0] != 0x00) { + return res; + } + + uint8_t *uid_echo = &rid_response[2]; + uint8_t rall_response[124] = {0}; + + res = topaz_rall(uid_echo, rall_response); + if (res == PM3_ESOFT) { + return res; + } + + // ADD + // 7 6 5 4 3 2 1 0 + // b b b --- Byte 0 - 7 + // B B B B --------- BLOCK + // r ----------------- 0 + // + + uint8_t wr8_cmd[] = {TOPAZ_WRITE_NE8, blockno, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + memcpy(wr8_cmd + 10, uid_echo, 4); + memcpy(wr8_cmd + 2, block_data, 8); + + uint16_t resp_len = 11; + uint8_t response[11] = {0}; + + // + if (topaz_send_cmd(wr8_cmd, sizeof(wr8_cmd), response, &resp_len, true) == PM3_ETIMEOUT) { + topaz_switch_off_field(); + return PM3_ESOFT; + } + + if (resp_len != 11) { + return PM3_EFAILED; + } + + if (blockno != response[0]) { + return PM3_EFAILED; + } + + if (memcmp(block_data, response + 1, 8) == 0) { + return PM3_SUCCESS; + } + return PM3_ESOFT; +} // search for the lock area descriptor for the lockable area including byteno static dynamic_lock_area_t *get_dynamic_lock_area(uint16_t byteno) { @@ -402,6 +459,12 @@ static int topaz_print_CC(uint8_t *data) { return PM3_SUCCESS; } +static void topaz_print_hdr(uint8_t blockno) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, " # | block " _GREEN_("0x%02X") " | ascii", blockno); + PrintAndLogEx(INFO, "----+-------------------------+---------"); +} + // return type, length and value of a TLV, starting at memory position *TLV_ptr static void get_TLV(uint8_t **TLV_ptr, uint8_t *TLV_type, uint16_t *TLV_length, uint8_t **TLV_value) { *TLV_length = 0; @@ -782,6 +845,7 @@ static int CmdHFTopazDump(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_str0("f", "file", "", "filename of dump"), + arg_lit0(NULL, "ns", "no save to file"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -789,6 +853,8 @@ static int CmdHFTopazDump(const char *Cmd) { int fnlen = 0; char filename[FILE_PATH_SIZE] = {0}; CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); + bool nosave = arg_get_lit(ctx, 2); + CLIParserFree(ctx); int status = readTopazUid(false, false); @@ -811,9 +877,18 @@ static int CmdHFTopazDump(const char *Cmd) { ); } - PrintAndLogEx(INFO, "-------------------------------------------------------------"); topaz_switch_off_field(); + // Skip saving card data to file + if (nosave) { + PrintAndLogEx(INFO, "Called with no save option"); + if (set_dynamic) { + free(topaz_tag.dynamic_memory); + } + return PM3_SUCCESS; + } + + // user supplied filename? if (fnlen < 1) { PrintAndLogEx(INFO, "Using UID as filename"); @@ -888,13 +963,13 @@ static int CmdHFTopazRdBl(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf topaz rdbl", - "Read a block", - "hf topaz rdbl -b 7\n" + "Read Topaz block", + "hf topaz rdbl --blk 7\n" ); void *argtable[] = { arg_param_begin, - arg_int1("b", "block", "", "Block number to write"), + arg_int1(NULL, "blk", "", "Block number"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -910,7 +985,11 @@ static int CmdHFTopazRdBl(const char *Cmd) { uint8_t data[8] = {0}; int res = topaz_read_block(blockno, data); if (res == PM3_SUCCESS) { - PrintAndLogEx(SUCCESS, "Block: %0d (0x%02X) [ %s]", blockno, blockno, sprint_hex(data, sizeof(data))); + + topaz_print_hdr(blockno); + + PrintAndLogEx(INFO, " %2d | %s", blockno, sprint_hex_ascii(data, sizeof(data))); + PrintAndLogEx(NORMAL, ""); } topaz_switch_off_field(); @@ -922,13 +1001,13 @@ static int CmdHFTopazWrBl(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf topaz wrbl", - "Write a block", - "hf topaz wrbl -b 7 -d 1122334455667788\n" + "Write Topaz block with 8 hex bytes of data", + "hf topaz wrbl --blk 7 -d 1122334455667788\n" ); void *argtable[] = { arg_param_begin, - arg_int1("b", "block", "", "Block number to write"), + arg_int1(NULL, "blk", "", "Block number"), arg_str1("d", "data", "", "Block data (8 hex bytes)"), arg_param_end }; @@ -954,14 +1033,23 @@ static int CmdHFTopazWrBl(const char *Cmd) { PrintAndLogEx(INFO, "Block: %0d (0x%02X) [ %s]", blockno, blockno, sprint_hex(data, dlen)); - // send write Block - int res = topaz_write_erase8_block(blockno, data); + int res; + if (blockno != 13 && blockno != 14) { + // send write/erase block + res = topaz_write_erase8_block(blockno, data); + } else { + // send write/non erase block + res = topaz_write_nonerase8_block(blockno, data); + } if (res == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "Write ( " _GREEN_("ok") " )"); + PrintAndLogEx(HINT, "try `" _YELLOW_("hf topaz rdbl --blk %u") "` to verify", blockno); + } else { PrintAndLogEx(WARNING, "Write ( " _RED_("fail") " )"); } + PrintAndLogEx(NORMAL, ""); topaz_switch_off_field(); return res; @@ -970,18 +1058,24 @@ static int CmdHFTopazWrBl(const char *Cmd) { static int CmdHelp(const char *Cmd); static command_t CommandTable[] = { - {"help", CmdHelp, AlwaysAvailable, "This help"}, - {"dump", CmdHFTopazDump, IfPm3Iso14443a, "Dump TOPAZ family tag to file"}, - {"list", CmdHFTopazList, AlwaysAvailable, "List Topaz history"}, - {"info", CmdHFTopazInfo, IfPm3Iso14443a, "Tag information"}, - {"reader", CmdHFTopazReader, IfPm3Iso14443a, "Act like a Topaz reader"}, - {"sim", CmdHFTopazSim, IfPm3Iso14443a, "Simulate Topaz tag"}, - {"sniff", CmdHFTopazSniff, IfPm3Iso14443a, "Sniff Topaz reader-tag communication"}, - {"raw", CmdHFTopazRaw, IfPm3Iso14443a, "Send raw hex data to tag"}, - {"rdbl", CmdHFTopazRdBl, IfPm3Iso14443a, "Read block"}, - {"view", CmdHFTopazView, AlwaysAvailable, "Display content from tag dump file"}, - {"wrbl", CmdHFTopazWrBl, IfPm3Iso14443a, "Write block"}, - {NULL, NULL, 0, NULL} + {"help", CmdHelp, AlwaysAvailable, "This help"}, + {"list", CmdHFTopazList, AlwaysAvailable, "List Topaz history"}, + {"-----------", CmdHelp, IfPm3Iso14443a, "------------------- " _CYAN_("operations") " ---------------------"}, + {"dump", CmdHFTopazDump, IfPm3Iso14443a, "Dump TOPAZ family tag to file"}, + {"info", CmdHFTopazInfo, IfPm3Iso14443a, "Tag information"}, + {"raw", CmdHFTopazRaw, IfPm3Iso14443a, "Send raw hex data to tag"}, + {"rdbl", CmdHFTopazRdBl, IfPm3Iso14443a, "Read block"}, + {"reader", CmdHFTopazReader, IfPm3Iso14443a, "Act like a Topaz reader"}, + {"sim", CmdHFTopazSim, IfPm3Iso14443a, "Simulate Topaz tag"}, + {"sniff", CmdHFTopazSniff, IfPm3Iso14443a, "Sniff Topaz reader-tag communication"}, + {"view", CmdHFTopazView, AlwaysAvailable, "Display content from tag dump file"}, + {"wrbl", CmdHFTopazWrBl, IfPm3Iso14443a, "Write block"}, + {"-----------", CmdHelp, IfPm3Iso14443a, "----------------------- " _CYAN_("ndef") " -----------------------"}, +// {"ndefformat", CmdHFTopazNDEFFormat, IfPm3Iso14443a, "Format Topaz Tag as NFC Tag"}, +// {"ndefread", CmdHFTopazNDEFRead, IfPm3Iso14443a, "Read and print NDEF records from card"}, +// {"ndefwrite", CmdHFTopazNDEFWrite, IfPm3Iso14443a, "Write NDEF records to card"}, + + {NULL, NULL, 0, NULL} }; static int CmdHelp(const char *Cmd) { From f2d6eb3021b949e6c4dda78417152b25574f0e07 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 24 Jun 2023 00:06:26 +0200 Subject: [PATCH 0090/1034] text --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94d492c41..5e0c9af78 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf topaz dump --ns` - now supports nosave param (@iceman1001) + - Changed `hf topaz rdbl` - unified output (@iceman1001) + - Fixed `hf topaz wrbl` - now supports tear off and write_nonerase command (@iceman1001) + - Fixed `hf mf` commands (@iceman1001) + - Fixed `hf mfp` commands (@iceman1001) + - Added more default keys (@iceman1001) Thanks anon! - Fixed `pm3-flash-all` shell script now correctly identify the if running on outdated bootloader (@iceman1001) - Fixed `hf 15693/iclass sniff` trace timings (@nvx) - Fix LegicCash segment handling in `hf_legic.lua` script (@jmichelp) From 636e6bcc6ba3b2914e3304dd700dfe842068adf9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 24 Jun 2023 17:13:23 +0200 Subject: [PATCH 0091/1034] adapt restore --- client/src/cmdhfmf.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 5a676e390..e0a01b102 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -1385,10 +1385,12 @@ static int CmdHF14AMfRestore(const char *Cmd) { memcpy(wdata, default_key, MIFARE_KEY_SIZE); } - PrintAndLogEx(INFO, " %3d | %s", mfFirstBlockOfSector(s) + b, sprint_hex(bldata, sizeof(bldata))); + uint16_t blockno = (mfFirstBlockOfSector(s) + b); + + PrintAndLogEx(INFO, " %3d | %s", blockno, sprint_hex(bldata, sizeof(bldata))); clearCommandBuffer(); - SendCommandMIX(CMD_HF_MIFARE_WRITEBL, mfFirstBlockOfSector(s) + b, kt, 0, wdata, sizeof(wdata)); + SendCommandMIX(CMD_HF_MIFARE_WRITEBL, blockno, kt, 0, wdata, sizeof(wdata)); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { PrintAndLogEx(WARNING, "Command execute timeout"); @@ -1401,18 +1403,24 @@ static int CmdHF14AMfRestore(const char *Cmd) { break; } else if (isOK == PM3_ETEAROFF) { PrintAndLogEx(INFO, "Tear off triggerd. Recommendation is not to use tear-off with restore command"); - return isOK; + goto out; } else { if (b == 0) { - PrintAndLogEx(INFO, "Writing to manufacture block w key %c ( " _RED_("fail") " )", (kt == MF_KEY_A) ? 'A' : 'B'); + PrintAndLogEx(INFO, "Writing to manufacture block w key " _YELLOW_("%c") " ( " _RED_("fail") " )", + (kt == MF_KEY_A) ? 'A' : 'B' + ); } else { - PrintAndLogEx(FAILED, "Write to block %u w key %c ( " _RED_("fail") " ) ", b, (kt == MF_KEY_A) ? 'A' : 'B'); + PrintAndLogEx(FAILED, "Write to block " _YELLOW_("%u") " w key " _YELLOW_("%c") " ( " _RED_("fail") " ) ", + blockno, + (kt == MF_KEY_A) ? 'A' : 'B' + ); } } } // end loop key types } // end loop B } // end loop S +out: free(ref_dump); free(keyA); free(keyB); From f0a6b1bd672c8f568499adceb842a8860bc13563 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 24 Jun 2023 17:14:56 +0200 Subject: [PATCH 0092/1034] "hf mf supercard --furui" - add furui supercard key covery. Thanks to Foxushka for the PoC --- client/src/cmdhfmf.c | 416 +++++++++++++++++++++++++++---------------- 1 file changed, 260 insertions(+), 156 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index e0a01b102..c25e00cff 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -6753,6 +6753,102 @@ static int CmdHf14AGen3Freeze(const char *Cmd) { return res; } +#define FURUI_MAX_TRACES 8 +static int mfc_furui_recovery(uint8_t items, uint8_t tracedata[FURUI_MAX_TRACES][18]) { + // recover key from collected traces + // outer loop + for (uint8_t i = 0; i < items; i++) { + + // first + nonces_t data; + data.cuid = bytes_to_num(tracedata[i], 4); + data.nonce = bytes_to_num(tracedata[i] + 6, 4); + data.nr = bytes_to_num(tracedata[i] + 10, 4); + data.ar = bytes_to_num(tracedata[i] + 14, 4); + data.at = 0; + + // inner loop + for (uint8_t j = i + 1; j < items; j++) { + + uint8_t *p = tracedata[j]; + PrintAndLogEx(INFO, "%u... %s", i, sprint_hex_inrow(p, 18)); + + // since data stored as block number but its the same key for all blocks in one sector + // we compare with sector number here + uint8_t s = mfSectorNum(tracedata[i][4]); + if (mfSectorNum(p[4]) == s) { + + data.nonce2 = bytes_to_num(p + 6, 4); + data.nr2 = bytes_to_num(p + 10, 4); + data.ar2 = bytes_to_num(p + 14, 4); + data.sector = s; + data.keytype = tracedata[i][5]; + data.state = FIRST; + + uint64_t key64 = -1; + if (mfkey32_moebius(&data, &key64)) { + PrintAndLogEx(SUCCESS, "UID: %s Sector %02x key %c [ "_GREEN_("%012" PRIX64) " ]", + sprint_hex_inrow(tracedata[i], 4), + data.sector, + (data.keytype == 0x60) ? 'A' : 'B', + key64 + ); + break; + } + } + } + } + return PM3_SUCCESS; +} + +static int mfc_supercard_gen2_recovery(uint8_t items, uint8_t tracedata[FURUI_MAX_TRACES][18]) { + for (uint8_t i = 0; i < items; i++) { + uint8_t *tmp = tracedata[i]; + + // first + uint16_t NT0 = (tmp[6] << 8) | tmp[7]; + + nonces_t data; + data.cuid = bytes_to_num(tmp, 4); + data.nonce = prng_successor(NT0, 31); + data.nr = bytes_to_num(tmp + 8, 4); + data.ar = bytes_to_num(tmp + 12, 4); + data.at = 0; + + // second + for (uint8_t j = i + 1; j < items; j++) { + uint8_t *p = tracedata[j]; + + // since data stored as block number but its the same key for all blocks in one sector + // we compare with sector number here + uint8_t s = mfSectorNum(tmp[5]); + if (mfSectorNum(p[5]) == s) { + + NT0 = (p[6] << 8) | p[7]; + + data.nonce2 = prng_successor(NT0, 31); + data.nr2 = bytes_to_num(p + 8, 4); + data.ar2 = bytes_to_num(p + 12, 4); + data.sector = s; + data.keytype = tmp[4]; + data.state = FIRST; + + uint64_t key64 = -1; + if (mfkey32_moebius(&data, &key64)) { + PrintAndLogEx(SUCCESS, "UID: %s Sector %02x key %c [ "_GREEN_("%012" PRIX64) " ]", + sprint_hex_inrow(tmp, 4), + data.sector, + (data.keytype == 0x60) ? 'A' : 'B', + key64 + ); + break; + } + } + } + } + return PM3_SUCCESS; +} + static int CmdHf14AMfSuperCard(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf supercard", @@ -6765,6 +6861,7 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { arg_param_begin, arg_lit0("r", "reset", "Reset card"), arg_str0("u", "uid", "", "New UID (4 hex bytes)"), + arg_lit0(NULL, "furui", "Furui detection card"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -6772,6 +6869,8 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { uint8_t uid[4]; int uidlen = 0; int res = CLIParamHexToBuf(arg_get_str(ctx, 2), uid, sizeof(uid), &uidlen); + bool is_furui = arg_get_lit(ctx, 3); + CLIParserFree(ctx); if (res || (!res && uidlen && uidlen != sizeof(uid))) { @@ -6779,15 +6878,53 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { return PM3_EINVARG; } + uint8_t tracedata[FURUI_MAX_TRACES][18]; + + // Super card FURUI + if (is_furui) { + + // no reset on super card FURUI + if (uidlen || reset_card) { + PrintAndLogEx(FAILED, "Not supported on this card"); + return PM3_SUCCESS; + } + + // read 8 traces + uint8_t i; + for (i = 0; i < FURUI_MAX_TRACES; i++) { + + uint8_t data[] = {0xAA, 0xA8, 0x00, i}; + uint32_t flags = ISO14A_CONNECT | ISO14A_RAW | ISO14A_APPEND_CRC | ISO14A_NO_RATS; + clearCommandBuffer(); + SendCommandMIX(CMD_HF_ISO14443A_READER, flags, sizeof(data), 0, data, sizeof(data)); + if (WaitForResponseTimeout(CMD_ACK, NULL, 1500) == false) { + break; + } + + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { + break; + } + + uint16_t len = resp.oldarg[0] & 0xFFFF; + if (len != 20) { + break; // Not trace data + } + + PrintAndLogEx(DEBUG, ">>> %s", sprint_hex_inrow(resp.data.asBytes, len)); + memcpy(&tracedata[i], resp.data.asBytes, len - 2); + } + + return mfc_furui_recovery(i, tracedata); + } + #define SUPER_MAX_TRACES 7 - uint8_t trace = 0; - uint8_t traces[SUPER_MAX_TRACES][16]; + // read 7 traces from super card generation 1,2 + uint8_t i = 0; + for (i = 0; i < SUPER_MAX_TRACES; i++) { - // read 7 traces from super card - for (trace = 0; trace < SUPER_MAX_TRACES; trace++) { - - uint8_t data[] = {0x30, 0x00 + trace}; + uint8_t data[] = {0x30, i}; uint32_t flags = ISO14A_CONNECT | ISO14A_RAW | ISO14A_APPEND_CRC | ISO14A_NO_RATS; clearCommandBuffer(); SendCommandMIX(CMD_HF_ISO14443A_READER, flags, sizeof(data), 0, data, sizeof(data)); @@ -6805,11 +6942,12 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { break; // Not trace data } - memcpy(&traces[trace], resp.data.asBytes, len - 2); + PrintAndLogEx(DEBUG, ">>> %s", sprint_hex_inrow(resp.data.asBytes, len)); + memcpy(&tracedata[i], resp.data.asBytes, len - 2); } // Super card generation 2 - if (trace == SUPER_MAX_TRACES) { + if (i == SUPER_MAX_TRACES) { // no reset on super card generation 2. if (uidlen || reset_card) { @@ -6818,174 +6956,140 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { } // recover key from collected traces - for (trace = 0; trace < SUPER_MAX_TRACES; trace++) { - uint8_t *trace_data = traces[trace]; - nonces_t data; + return mfc_supercard_gen2_recovery(i, tracedata); + } - // first - uint16_t NT0 = (trace_data[6] << 8) | trace_data[7]; - data.cuid = bytes_to_num(trace_data, 4); - data.nonce = prng_successor(NT0, 31); - data.nr = bytes_to_num(trace_data + 8, 4); - data.ar = bytes_to_num(trace_data + 12, 4); - data.at = 0; + // Super card generation 1 - // second - for (uint8_t s_strace = trace + 1; s_strace < 7; s_strace++) { - uint8_t *s_trace_data = traces[s_strace]; - if (mfSectorNum(s_trace_data[5]) == mfSectorNum(trace_data[5])) { - NT0 = (s_trace_data[6] << 8) | s_trace_data[7]; - data.nonce2 = prng_successor(NT0, 31); - data.nr2 = bytes_to_num(s_trace_data + 8, 4); - data.ar2 = bytes_to_num(s_trace_data + 12, 4); - data.sector = mfSectorNum(trace_data[5]); - data.keytype = trace_data[4]; - data.state = FIRST; + // Commands: + // a0 - set UID + // b0 - read traces + // c0 - clear card + bool activate_field = true; + bool keep_field_on = true; - uint64_t key64 = -1; - if (mfkey32_moebius(&data, &key64)) { - PrintAndLogEx(SUCCESS, "UID: %s Sector %02x key %c [ "_GREEN_("%012" PRIX64) " ]", sprint_hex_inrow(trace_data, 4), data.sector, (data.keytype == 0x60) ? 'A' : 'B', key64); - break; - } - } - } - } - - } else { - - // Super card generation 1 - - // Commands: - // a0 - set UID - // b0 - read traces - // c0 - clear card - bool activate_field = true; - bool keep_field_on = true; - - // change UID on a super card generation 1 - if (uidlen) { - keep_field_on = false; - uint8_t response[6]; - int resplen = 0; - - // --------------- CHANGE UID ---------------- - uint8_t aCHANGE[] = {0x00, 0xa6, 0xa0, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0x00}; - memcpy(aCHANGE + 5, uid, uidlen); - res = ExchangeAPDU14a(aCHANGE, sizeof(aCHANGE), activate_field, keep_field_on, response, sizeof(response), - &resplen); - if (res != PM3_SUCCESS) { - PrintAndLogEx(FAILED, "Super card UID change [ " _RED_("fail") " ]"); - DropField(); - return res; - } - - PrintAndLogEx(SUCCESS, "Super card UID change ( " _GREEN_("ok") " )"); - return PM3_SUCCESS; - } - - // reset a super card generation 1 - if (reset_card) { - keep_field_on = false; - uint8_t response[6]; - int resplen = 0; - - // --------------- RESET CARD ---------------- - uint8_t aRESET[] = {0x00, 0xa6, 0xc0, 0x00}; - res = ExchangeAPDU14a(aRESET, sizeof(aRESET), activate_field, keep_field_on, response, sizeof(response), - &resplen); - if (res != PM3_SUCCESS) { - PrintAndLogEx(FAILED, "Super card reset [ " _RED_("fail") " ]"); - DropField(); - return res; - } - PrintAndLogEx(SUCCESS, "Super card reset ( " _GREEN_("ok") " )"); - return PM3_SUCCESS; - } - - - uint8_t responseA[22]; - uint8_t responseB[22]; - int respAlen = 0; - int respBlen = 0; - - // --------------- First ---------------- - uint8_t aFIRST[] = {0x00, 0xa6, 0xb0, 0x00, 0x10}; - res = ExchangeAPDU14a(aFIRST, sizeof(aFIRST), activate_field, keep_field_on, responseA, sizeof(responseA), &respAlen); - if (res != PM3_SUCCESS) { - DropField(); - return res; - } - - // --------------- Second ---------------- - activate_field = false; + // change UID on a super card generation 1 + if (uidlen) { keep_field_on = false; + uint8_t response[6]; + int resplen = 0; - uint8_t aSECOND[] = {0x00, 0xa6, 0xb0, 0x01, 0x10}; - res = ExchangeAPDU14a(aSECOND, sizeof(aSECOND), activate_field, keep_field_on, responseB, sizeof(responseB), &respBlen); + // --------------- CHANGE UID ---------------- + uint8_t aCHANGE[] = {0x00, 0xa6, 0xa0, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0x00}; + memcpy(aCHANGE + 5, uid, uidlen); + res = ExchangeAPDU14a(aCHANGE, sizeof(aCHANGE), activate_field, keep_field_on, response, sizeof(response), + &resplen); if (res != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "Super card UID change [ " _RED_("fail") " ]"); DropField(); return res; } - uint8_t outA[16] = {0}; - uint8_t outB[16] = {0}; + PrintAndLogEx(SUCCESS, "Super card UID change ( " _GREEN_("ok") " )"); + return PM3_SUCCESS; + } - uint8_t key[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}; - for (uint8_t i = 0; i < 16; i += 8) { - des_decrypt(outA + i, responseA + i, key); - des_decrypt(outB + i, responseB + i, key); + // reset a super card generation 1 + if (reset_card) { + keep_field_on = false; + uint8_t response[6]; + int resplen = 0; + + // --------------- RESET CARD ---------------- + uint8_t aRESET[] = {0x00, 0xa6, 0xc0, 0x00}; + res = ExchangeAPDU14a(aRESET, sizeof(aRESET), activate_field, keep_field_on, response, sizeof(response), + &resplen); + if (res != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "Super card reset [ " _RED_("fail") " ]"); + DropField(); + return res; } + PrintAndLogEx(SUCCESS, "Super card reset ( " _GREEN_("ok") " )"); + return PM3_SUCCESS; + } - PrintAndLogEx(DEBUG, " in : %s", sprint_hex_inrow(responseA, respAlen)); - PrintAndLogEx(DEBUG, "out : %s", sprint_hex_inrow(outA, sizeof(outA))); - PrintAndLogEx(DEBUG, " in : %s", sprint_hex_inrow(responseB, respAlen)); - PrintAndLogEx(DEBUG, "out : %s", sprint_hex_inrow(outB, sizeof(outB))); + uint8_t responseA[22]; + uint8_t responseB[22]; + int respAlen = 0; + int respBlen = 0; - if (memcmp(outA, "\x01\x01\x01\x01\x01\x01\x01\x01", 8) == 0) { - PrintAndLogEx(INFO, "No trace recorded"); - return PM3_SUCCESS; - } + // --------------- First ---------------- + uint8_t aFIRST[] = {0x00, 0xa6, 0xb0, 0x00, 0x10}; + res = ExchangeAPDU14a(aFIRST, sizeof(aFIRST), activate_field, keep_field_on, responseA, sizeof(responseA), &respAlen); + if (res != PM3_SUCCESS) { + DropField(); + return res; + } - // second trace? - if (memcmp(outB, "\x01\x01\x01\x01\x01\x01\x01\x01", 8) == 0) { - PrintAndLogEx(INFO, "Only one trace recorded"); - return PM3_SUCCESS; - } + // --------------- Second ---------------- + activate_field = false; + keep_field_on = false; - nonces_t data; + uint8_t aSECOND[] = {0x00, 0xa6, 0xb0, 0x01, 0x10}; + res = ExchangeAPDU14a(aSECOND, sizeof(aSECOND), activate_field, keep_field_on, responseB, sizeof(responseB), &respBlen); + if (res != PM3_SUCCESS) { + DropField(); + return res; + } - // first - uint16_t NT0 = (outA[6] << 8) | outA[7]; - data.cuid = bytes_to_num(outA, 4); - data.nonce = prng_successor(NT0, 31); - data.nr = bytes_to_num(outA + 8, 4); - data.ar = bytes_to_num(outA + 12, 4); - data.at = 0; + uint8_t outA[16] = {0}; + uint8_t outB[16] = {0}; - // second - NT0 = (outB[6] << 8) | outB[7]; - data.nonce2 = prng_successor(NT0, 31); - data.nr2 = bytes_to_num(outB + 8, 4); - data.ar2 = bytes_to_num(outB + 12, 4); - data.sector = mfSectorNum(outA[5]); - data.keytype = outA[4]; - data.state = FIRST; + uint8_t key[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}; + for (i = 0; i < 16; i += 8) { + des_decrypt(outA + i, responseA + i, key); + des_decrypt(outB + i, responseB + i, key); + } - PrintAndLogEx(DEBUG, "A Sector %02x", data.sector); - PrintAndLogEx(DEBUG, "A NT %08x", data.nonce); - PrintAndLogEx(DEBUG, "A NR %08x", data.nr); - PrintAndLogEx(DEBUG, "A AR %08x", data.ar); - PrintAndLogEx(DEBUG, ""); - PrintAndLogEx(DEBUG, "B NT %08x", data.nonce2); - PrintAndLogEx(DEBUG, "B NR %08x", data.nr2); - PrintAndLogEx(DEBUG, "B AR %08x", data.ar2); + PrintAndLogEx(DEBUG, " in : %s", sprint_hex_inrow(responseA, respAlen)); + PrintAndLogEx(DEBUG, "out : %s", sprint_hex_inrow(outA, sizeof(outA))); + PrintAndLogEx(DEBUG, " in : %s", sprint_hex_inrow(responseB, respAlen)); + PrintAndLogEx(DEBUG, "out : %s", sprint_hex_inrow(outB, sizeof(outB))); - uint64_t key64 = -1; - if (mfkey32_moebius(&data, &key64)) { - PrintAndLogEx(SUCCESS, "UID: %s Sector %02x key %c [ " _GREEN_("%012" PRIX64) " ]", sprint_hex_inrow(outA, 4), data.sector, (data.keytype == 0x60) ? 'A' : 'B', key64); - } else { - PrintAndLogEx(FAILED, "failed to recover any key"); - } + if (memcmp(outA, "\x01\x01\x01\x01\x01\x01\x01\x01", 8) == 0) { + PrintAndLogEx(INFO, "No trace recorded"); + return PM3_SUCCESS; + } + + // second trace? + if (memcmp(outB, "\x01\x01\x01\x01\x01\x01\x01\x01", 8) == 0) { + PrintAndLogEx(INFO, "Only one trace recorded"); + return PM3_SUCCESS; + } + + nonces_t data; + + // first + uint16_t NT0 = (outA[6] << 8) | outA[7]; + data.cuid = bytes_to_num(outA, 4); + data.nonce = prng_successor(NT0, 31); + data.nr = bytes_to_num(outA + 8, 4); + data.ar = bytes_to_num(outA + 12, 4); + data.at = 0; + + // second + NT0 = (outB[6] << 8) | outB[7]; + data.nonce2 = prng_successor(NT0, 31); + data.nr2 = bytes_to_num(outB + 8, 4); + data.ar2 = bytes_to_num(outB + 12, 4); + data.sector = mfSectorNum(outA[5]); + data.keytype = outA[4]; + data.state = FIRST; + + PrintAndLogEx(DEBUG, "A Sector %02x", data.sector); + PrintAndLogEx(DEBUG, "A NT %08x", data.nonce); + PrintAndLogEx(DEBUG, "A NR %08x", data.nr); + PrintAndLogEx(DEBUG, "A AR %08x", data.ar); + PrintAndLogEx(DEBUG, ""); + PrintAndLogEx(DEBUG, "B NT %08x", data.nonce2); + PrintAndLogEx(DEBUG, "B NR %08x", data.nr2); + PrintAndLogEx(DEBUG, "B AR %08x", data.ar2); + + uint64_t key64 = -1; + if (mfkey32_moebius(&data, &key64)) { + PrintAndLogEx(SUCCESS, "UID: %s Sector %02x key %c [ " _GREEN_("%012" PRIX64) " ]", sprint_hex_inrow(outA, 4), data.sector, (data.keytype == 0x60) ? 'A' : 'B', key64); + } else { + PrintAndLogEx(FAILED, "failed to recover any key"); } return PM3_SUCCESS; } From 74f02fef8ab672a2eec2be9e061d0c1848c3c837 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 24 Jun 2023 17:16:28 +0200 Subject: [PATCH 0093/1034] style --- armsrc/iso14443a.c | 4 +- client/src/cmdhfmf.c | 48 +++++------ client/src/cmdhfmfp.c | 62 +++++++------- client/src/cmdhfmfu.c | 4 +- client/src/cmdhftopaz.c | 14 ++-- client/src/cmdtrace.c | 14 ++-- client/src/fileutils.c | 2 +- client/src/mifare/mad.c | 46 +++++------ client/src/pm3line_vocabulory.h | 22 ++--- common/crc16.c | 2 +- doc/commands.json | 138 ++++++++++++++++++++++++-------- doc/commands.md | 24 +++--- 12 files changed, 229 insertions(+), 151 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 42b42c180..9cff73f63 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1291,7 +1291,7 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r { .response = rPPS, .response_n = sizeof(rPPS) }, // PPS response { .response = rPACK, .response_n = sizeof(rPACK) } // PACK response }; - + // "precompile" responses. There are 12 predefined responses with a total of 84 bytes data to transmit. // Coded responses need one byte per bit to transfer (data, parity, start, stop, correction) @@ -3105,7 +3105,7 @@ void ReaderIso14443a(PacketCommandNG *c) { FpgaDisableTracing(); reply_old(CMD_ACK, arg0, 0, 0, buf, sizeof(buf)); } - } else { + } else { arg0 = ReaderReceive(buf, par); FpgaDisableTracing(); reply_old(CMD_ACK, arg0, 0, 0, buf, sizeof(buf)); diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index c25e00cff..765c515e4 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -1395,7 +1395,7 @@ static int CmdHF14AMfRestore(const char *Cmd) { if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { PrintAndLogEx(WARNING, "Command execute timeout"); continue; - } + } int isOK = resp.oldarg[0] & 0xff; if (isOK == 1) { @@ -1406,14 +1406,14 @@ static int CmdHF14AMfRestore(const char *Cmd) { goto out; } else { if (b == 0) { - PrintAndLogEx(INFO, "Writing to manufacture block w key " _YELLOW_("%c") " ( " _RED_("fail") " )", - (kt == MF_KEY_A) ? 'A' : 'B' - ); + PrintAndLogEx(INFO, "Writing to manufacture block w key " _YELLOW_("%c") " ( " _RED_("fail") " )", + (kt == MF_KEY_A) ? 'A' : 'B' + ); } else { PrintAndLogEx(FAILED, "Write to block " _YELLOW_("%u") " w key " _YELLOW_("%c") " ( " _RED_("fail") " ) ", - blockno, - (kt == MF_KEY_A) ? 'A' : 'B' - ); + blockno, + (kt == MF_KEY_A) ? 'A' : 'B' + ); } } } // end loop key types @@ -1424,7 +1424,7 @@ out: free(ref_dump); free(keyA); free(keyB); - PrintAndLogEx(INFO, "-----+------------------------------------------------------------"); + PrintAndLogEx(INFO, "-----+------------------------------------------------------------"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; @@ -3604,7 +3604,7 @@ out: // if (singleSector) // printKeyTableEx(1, e_sector, mfSectorNum(blockNo)); // else - printKeyTable(sectors_cnt, e_sector); + printKeyTable(sectors_cnt, e_sector); if (transferToEml) { // fast push mode @@ -6273,7 +6273,7 @@ skipfile: memcpy(block, firstblocks[b], MFBLOCK_SIZE); break; default: { - if (mfIsSectorTrailerBasedOnBlocks(i,j)) { + if (mfIsSectorTrailerBasedOnBlocks(i, j)) { // ST NDEF memcpy(block, firstblocks[7], MFBLOCK_SIZE); } @@ -6787,12 +6787,12 @@ static int mfc_furui_recovery(uint8_t items, uint8_t tracedata[FURUI_MAX_TRACES] uint64_t key64 = -1; if (mfkey32_moebius(&data, &key64)) { - PrintAndLogEx(SUCCESS, "UID: %s Sector %02x key %c [ "_GREEN_("%012" PRIX64) " ]", - sprint_hex_inrow(tracedata[i], 4), - data.sector, - (data.keytype == 0x60) ? 'A' : 'B', - key64 - ); + PrintAndLogEx(SUCCESS, "UID: %s Sector %02x key %c [ "_GREEN_("%012" PRIX64) " ]", + sprint_hex_inrow(tracedata[i], 4), + data.sector, + (data.keytype == 0x60) ? 'A' : 'B', + key64 + ); break; } } @@ -6836,11 +6836,11 @@ static int mfc_supercard_gen2_recovery(uint8_t items, uint8_t tracedata[FURUI_MA uint64_t key64 = -1; if (mfkey32_moebius(&data, &key64)) { PrintAndLogEx(SUCCESS, "UID: %s Sector %02x key %c [ "_GREEN_("%012" PRIX64) " ]", - sprint_hex_inrow(tmp, 4), - data.sector, - (data.keytype == 0x60) ? 'A' : 'B', - key64 - ); + sprint_hex_inrow(tmp, 4), + data.sector, + (data.keytype == 0x60) ? 'A' : 'B', + key64 + ); break; } } @@ -6957,7 +6957,7 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { // recover key from collected traces return mfc_supercard_gen2_recovery(i, tracedata); - } + } // Super card generation 1 @@ -6978,7 +6978,7 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { uint8_t aCHANGE[] = {0x00, 0xa6, 0xa0, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0x00}; memcpy(aCHANGE + 5, uid, uidlen); res = ExchangeAPDU14a(aCHANGE, sizeof(aCHANGE), activate_field, keep_field_on, response, sizeof(response), - &resplen); + &resplen); if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Super card UID change [ " _RED_("fail") " ]"); DropField(); @@ -6998,7 +6998,7 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { // --------------- RESET CARD ---------------- uint8_t aRESET[] = {0x00, 0xa6, 0xc0, 0x00}; res = ExchangeAPDU14a(aRESET, sizeof(aRESET), activate_field, keep_field_on, response, sizeof(response), - &resplen); + &resplen); if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Super card reset [ " _RED_("fail") " ]"); DropField(); diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 089e041d3..52f3da57e 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -995,8 +995,8 @@ static int CmdHFMFPWrbl(const char *Cmd) { } static int plus_key_check(uint8_t startSector, uint8_t endSector, uint8_t startKeyAB, uint8_t endKeyAB, - uint8_t keyList[MAX_AES_KEYS_LIST_LEN][AES_KEY_LEN], size_t keyListLen, uint8_t foundKeys[2][64][AES_KEY_LEN + 1], - bool verbose) { + uint8_t keyList[MAX_AES_KEYS_LIST_LEN][AES_KEY_LEN], size_t keyListLen, uint8_t foundKeys[2][64][AES_KEY_LEN + 1], + bool verbose) { int res; bool selectCard = true; uint8_t keyn[2] = {0}; @@ -1296,10 +1296,10 @@ static int CmdHFMFPChk(const char *Cmd) { for (uint8_t s = startSector; s <= endSector; s++) { if ((memcmp(&foundKeys[0][s][1], ndef_key, AES_KEY_LEN) == 0) || - (memcmp(&foundKeys[1][s][1], ndef_key, AES_KEY_LEN) == 0)) { + (memcmp(&foundKeys[1][s][1], ndef_key, AES_KEY_LEN) == 0)) { has_ndef_key = true; } - + if (printedHeader == false) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "-----+----------------------------------+----------------------------------"); @@ -1320,7 +1320,7 @@ static int CmdHFMFPChk(const char *Cmd) { snprintf(strB, sizeof(strB), _RED_("%s"), "--------------------------------"); } - PrintAndLogEx(INFO, " " _YELLOW_("%03d") " | %s | %s", s, strA, strB); + PrintAndLogEx(INFO, " " _YELLOW_("%03d") " | %s | %s", s, strA, strB); } if (printedHeader == false) @@ -1395,7 +1395,7 @@ static int CmdHFMFPDump(const char *Cmd) { arg_str0("f", "file", "", "filename of dump"), arg_str0("k", "keys", "", "filename of keys"), arg_lit0(NULL, "ns", "no save to file"), - arg_lit0("v", "verbose", "Verbose mode"), + arg_lit0("v", "verbose", "Verbose mode"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -1421,14 +1421,14 @@ static int CmdHFMFPDump(const char *Cmd) { return PM3_EMALLOC; } -/* - iso14a_card_select_t card ; - int res = mfp_read_tag(&card, mem, key_fn); - if (res != PM3_SUCCESS) { - free(mem); - return res; - } -*/ + /* + iso14a_card_select_t card ; + int res = mfp_read_tag(&card, mem, key_fn); + if (res != PM3_SUCCESS) { + free(mem); + return res; + } + */ // Skip saving card data to file if (nosave) { @@ -1436,28 +1436,28 @@ static int CmdHFMFPDump(const char *Cmd) { free(mem); return PM3_SUCCESS; } -/* - // Save to file - if (strlen(data_fn) < 1) { + /* + // Save to file + if (strlen(data_fn) < 1) { - char *fptr = calloc(sizeof(char) * (strlen("hf-mfp-") + strlen("-dump")) + card.uidlen * 2 + 1, sizeof(uint8_t)); - strcpy(fptr, "hf-mfp-"); + char *fptr = calloc(sizeof(char) * (strlen("hf-mfp-") + strlen("-dump")) + card.uidlen * 2 + 1, sizeof(uint8_t)); + strcpy(fptr, "hf-mfp-"); - FillFileNameByUID(fptr, card.uid, "-dump", card.uidlen); + FillFileNameByUID(fptr, card.uid, "-dump", card.uidlen); - strcpy(data_fn, fptr); - free(fptr); - } + strcpy(data_fn, fptr); + free(fptr); + } - saveFile(data_fn, ".bin", mem, MIFARE_4K_MAX_BYTES); - saveFileEML(data_fn, mem, MIFARE_4K_MAX_BYTES, MFBLOCK_SIZE); + saveFile(data_fn, ".bin", mem, MIFARE_4K_MAX_BYTES); + saveFileEML(data_fn, mem, MIFARE_4K_MAX_BYTES, MFBLOCK_SIZE); - iso14a_mf_extdump_t xdump; - xdump.card_info = card; - xdump.dump = mem; - xdump.dumplen = MIFARE_4K_MAX_BYTES; - saveFileJSON(data_fn, jsfCardMemory, (uint8_t *)&xdump, sizeof(xdump), NULL); -*/ + iso14a_mf_extdump_t xdump; + xdump.card_info = card; + xdump.dump = mem; + xdump.dumplen = MIFARE_4K_MAX_BYTES; + saveFileJSON(data_fn, jsfCardMemory, (uint8_t *)&xdump, sizeof(xdump), NULL); + */ free(mem); return PM3_SUCCESS; } diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index e17032507..9f7f54c53 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -1424,7 +1424,7 @@ static mfu_identify_t *mfu_match_fingerprint(uint8_t *version, uint8_t *data) { uint8_t mtmp[40] = {0}; param_gethex_to_eol(mfu_ident_table[i].match, 0, mtmp, sizeof(mtmp), &ml); - bool m2 = (memcmp(mtmp, data + mfu_ident_table[i].mpos, mfu_ident_table[i].mlen) == 0); + bool m2 = (memcmp(mtmp, data + mfu_ident_table[i].mpos, mfu_ident_table[i].mlen) == 0); if (m2) { PrintAndLogEx(DEBUG, "(fingerprint) found %s", mfu_ident_table[i].desc); return &mfu_ident_table[i]; @@ -3608,7 +3608,7 @@ static int CmdHF14AMfUPwdGen(const char *Cmd) { if (ul_select(&card)) { // Philips toothbrush needs page 0x21-0x23 uint8_t data[16] = {0x00}; - int status = ul_read(0x21, data, sizeof(data)); + int status = ul_read(0x21, data, sizeof(data)); if (status == -1) { PrintAndLogEx(DEBUG, "Error: tag didn't answer to READ"); } else if (status == 16) { diff --git a/client/src/cmdhftopaz.c b/client/src/cmdhftopaz.c index 766889438..4483e3154 100644 --- a/client/src/cmdhftopaz.c +++ b/client/src/cmdhftopaz.c @@ -224,7 +224,7 @@ static int topaz_write_erase8_block(uint8_t blockno, uint8_t *block_data) { uint16_t resp_len = 11; uint8_t response[11] = {0}; - // + // if (topaz_send_cmd(wr8_cmd, sizeof(wr8_cmd), response, &resp_len, true) == PM3_ETIMEOUT) { topaz_switch_off_field(); @@ -267,12 +267,12 @@ static int topaz_write_nonerase8_block(uint8_t blockno, uint8_t *block_data) { return res; } - // ADD + // ADD // 7 6 5 4 3 2 1 0 // b b b --- Byte 0 - 7 - // B B B B --------- BLOCK + // B B B B --------- BLOCK // r ----------------- 0 - // + // uint8_t wr8_cmd[] = {TOPAZ_WRITE_NE8, blockno, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; memcpy(wr8_cmd + 10, uid_echo, 4); @@ -281,7 +281,7 @@ static int topaz_write_nonerase8_block(uint8_t blockno, uint8_t *block_data) { uint16_t resp_len = 11; uint8_t response[11] = {0}; - // + // if (topaz_send_cmd(wr8_cmd, sizeof(wr8_cmd), response, &resp_len, true) == PM3_ETIMEOUT) { topaz_switch_off_field(); return PM3_ESOFT; @@ -883,7 +883,7 @@ static int CmdHFTopazDump(const char *Cmd) { if (nosave) { PrintAndLogEx(INFO, "Called with no save option"); if (set_dynamic) { - free(topaz_tag.dynamic_memory); + free(topaz_tag.dynamic_memory); } return PM3_SUCCESS; } @@ -1034,7 +1034,7 @@ static int CmdHFTopazWrBl(const char *Cmd) { PrintAndLogEx(INFO, "Block: %0d (0x%02X) [ %s]", blockno, blockno, sprint_hex(data, dlen)); int res; - if (blockno != 13 && blockno != 14) { + if (blockno != 13 && blockno != 14) { // send write/erase block res = topaz_write_erase8_block(blockno, data); } else { diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index c2e750623..323c7ef7e 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -571,9 +571,9 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr //2 Not crc-command // Draw the data column - #define TRACE_MAX_LINES 36 +#define TRACE_MAX_LINES 36 // number of hex bytes to be printed per row (16 data + 2 crc) - #define TRACE_MAX_HEX_BYTES 18 +#define TRACE_MAX_HEX_BYTES 18 char line[TRACE_MAX_LINES][160] = {{0}}; @@ -700,8 +700,8 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr // mark short bytes (less than 8 Bit + Parity) if (protocol == ISO_14443A || - protocol == PROTO_MIFARE || - protocol == THINFILM) { + protocol == PROTO_MIFARE || + protocol == THINFILM) { // approximated with 128 * (9 * data_len); uint16_t bitime = 1056 + 32; @@ -874,13 +874,13 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr } else { - if (last_line && (memcmp(crc, "\x20\x20\x20\x20", 4) != 0) && g_session.supports_colors && markCRCBytes) { + if (last_line && (memcmp(crc, "\x20\x20\x20\x20", 4) != 0) && g_session.supports_colors && markCRCBytes) { str_padder = 85; // odd case of multiline, and last single byte on empty row has been colorised... if (strlen(line[j]) < 14) { str_padder = 81; } - } + } if (hdr->isResponse) { PrintAndLogEx(NORMAL, " | | |%-*s | %s| %s", @@ -909,7 +909,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr annotateIso14443a(explanation, sizeof(explanation), mfData, mfDataLen, hdr->isResponse); uint8_t crcc = iso14443A_CRC_check(hdr->isResponse, mfData, mfDataLen); - //iceman: colorise crc bytes here will need a refactor of code from above. + //iceman: colorise crc bytes here will need a refactor of code from above. PrintAndLogEx(NORMAL, " | | * |%-*s | %-4s| %s", str_padder, sprint_hex_inrow_spaces(mfData, mfDataLen, 2), diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 917a7ee77..4dba2c1e4 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1313,7 +1313,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz // memcpy(vdata, udata.bytes + (14 + atslen), 2 * 64 * 17); for (size_t i = 0; i < 64; i++) { - + if ((sptr + (AES_KEY_LEN * 2)) > maxdatalen) { break; } diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index 42a05c5a2..54f67a6a4 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -333,19 +333,19 @@ int MAD1DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose, bool *haveMA for (int i = 1; i < 16; i++) { uint16_t aid = madGetAID(sector, swapmad, 1, i); if (aid < 6) { - PrintAndLogEx(INFO, - (ibs == i) ? _MAGENTA_(" %02d [%04X] %s") : " %02d [" _GREEN_("%04X") "] %s", - i, - aid, - aid_admin[aid] - ); + PrintAndLogEx(INFO, + (ibs == i) ? _MAGENTA_(" %02d [%04X] %s") : " %02d [" _GREEN_("%04X") "] %s", + i, + aid, + aid_admin[aid] + ); } else if (prev_aid == aid) { - PrintAndLogEx(INFO, - (ibs == i) ? _MAGENTA_(" %02d [%04X] continuation") : " %02d [" _YELLOW_("%04X") "] continuation", - i, - aid - ); + PrintAndLogEx(INFO, + (ibs == i) ? _MAGENTA_(" %02d [%04X] continuation") : " %02d [" _YELLOW_("%04X") "] continuation", + i, + aid + ); } else { char fmt[60]; snprintf(fmt, sizeof(fmt), (ibs == i) ? _MAGENTA_(" %02d [%04X]%s") : " %02d [" _GREEN_("%04X") "]%s", i, aid, "%s"); @@ -368,7 +368,7 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose) { if (res == PM3_SUCCESS) PrintAndLogEx(SUCCESS, "CRC8...... 0x%02X ( " _GREEN_("%s") " )", sector[0], "ok"); else - PrintAndLogEx(SUCCESS, "CRC8...... 0x%02X ( " _RED_("%s") " )", sector[0], "fail"); + PrintAndLogEx(SUCCESS, "CRC8...... 0x%02X ( " _RED_("%s") " )", sector[0], "fail"); } int ibs = MADInfoByteDecode(sector, swapmad, 2, verbose); @@ -387,18 +387,18 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose) { for (int i = 1; i < 8 + 8 + 7 + 1; i++) { uint16_t aid = madGetAID(sector, swapmad, 2, i); if (aid < 6) { - PrintAndLogEx(INFO, - (ibs == i) ? _MAGENTA_(" %02d [%04X] %s") : " %02d [" _GREEN_("%04X") "] %s", - i + 16, - aid, - aid_admin[aid] - ); + PrintAndLogEx(INFO, + (ibs == i) ? _MAGENTA_(" %02d [%04X] %s") : " %02d [" _GREEN_("%04X") "] %s", + i + 16, + aid, + aid_admin[aid] + ); } else if (prev_aid == aid) { - PrintAndLogEx(INFO, - (ibs == i) ? _MAGENTA_(" %02d [%04X] continuation") : " %02d [" _YELLOW_("%04X") "] continuation", - i + 16, - aid - ); + PrintAndLogEx(INFO, + (ibs == i) ? _MAGENTA_(" %02d [%04X] continuation") : " %02d [" _YELLOW_("%04X") "] continuation", + i + 16, + aid + ); } else { char fmt[60]; snprintf(fmt, sizeof(fmt), (ibs == i) ? _MAGENTA_(" %02d [%04X]%s") : " %02d [" _GREEN_("%04X") "]%s", i + 16, aid, "%s"); diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index ffe9c66ff..ffad57057 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -367,17 +367,21 @@ const static vocabulory_t vocabulory[] = { { 0, "hf mf ndefread" }, { 0, "hf mf ndefwrite" }, { 1, "hf mfp help" }, - { 0, "hf mfp info" }, - { 0, "hf mfp wrp" }, - { 0, "hf mfp initp" }, - { 0, "hf mfp commitp" }, + { 1, "hf mfp list" }, { 0, "hf mfp auth" }, + { 0, "hf mfp chk" }, + { 0, "hf mfp dump" }, + { 0, "hf mfp info" }, + { 0, "hf mfp mad" }, { 0, "hf mfp rdbl" }, { 0, "hf mfp rdsc" }, { 0, "hf mfp wrbl" }, - { 0, "hf mfp chk" }, - { 0, "hf mfp mad" }, + { 0, "hf mfp commitp" }, + { 0, "hf mfp initp" }, + { 0, "hf mfp wrp" }, + { 0, "hf mfp ndefformat" }, { 0, "hf mfp ndefread" }, + { 0, "hf mfp ndefwrite" }, { 1, "hf mfu help" }, { 1, "hf mfu keygen" }, { 1, "hf mfu pwdgen" }, @@ -461,14 +465,14 @@ const static vocabulory_t vocabulory[] = { { 1, "hf thinfilm list" }, { 0, "hf thinfilm sim" }, { 1, "hf topaz help" }, - { 0, "hf topaz dump" }, { 1, "hf topaz list" }, + { 0, "hf topaz dump" }, { 0, "hf topaz info" }, + { 0, "hf topaz raw" }, + { 0, "hf topaz rdbl" }, { 0, "hf topaz reader" }, { 0, "hf topaz sim" }, { 0, "hf topaz sniff" }, - { 0, "hf topaz raw" }, - { 0, "hf topaz rdbl" }, { 1, "hf topaz view" }, { 0, "hf topaz wrbl" }, { 1, "hf xerox help" }, diff --git a/common/crc16.c b/common/crc16.c index d402977b9..812cd3481 100644 --- a/common/crc16.c +++ b/common/crc16.c @@ -354,4 +354,4 @@ uint16_t crc16_legic(uint8_t const *d, size_t n, uint8_t uidcrc) { uint16_t crc16_philips(uint8_t const *d, size_t n) { return crc16_fast(d, n, 0x49A3, false, false); -} \ No newline at end of file +} diff --git a/doc/commands.json b/doc/commands.json index efb03edd2..7a19db4f2 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3966,14 +3966,16 @@ "command": "hf mf auth4", "description": "Executes AES authentication command in ISO14443-4", "notes": [ - "hf mf auth4 4000 000102030405060708090a0b0c0d0e0f -> executes authentication", - "hf mf auth4 9003 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> executes authentication" + "hf mf auth4 -n 4000 -k 000102030405060708090a0b0c0d0e0f -> executes authentication", + "hf mf auth4 -n 9003 -k FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> executes authentication" ], "offline": false, "options": [ - "-h, --help This help" + "-h, --help This help", + "-n key num, 2 hex bytes", + "-k, --key key, 16 hex bytes" ], - "usage": "hf mf auth4 [-h] " + "usage": "hf mf auth4 [-h] -n -k " }, "hf mf autopwn": { "command": "hf mf autopwn", @@ -4655,14 +4657,14 @@ "options": [ "-h, --help This help", "-v, --verbose show technical data", - "--aid print all sectors with specified aid", - "-k, --key key for printing sectors", + "--aid print all sectors with specified aid", + "-k, --key key for printing sectors", "-b, --keyb use key B for access printing sectors (by default: key A)", "--be (optional, BigEndian)", "--dch decode Card Holder information", "-f, --file load dump file and decode MAD" ], - "usage": "hf mf mad [-hvb] [--aid ] [-k ] [--be] [--dch] [-f ]" + "usage": "hf mf mad [-hvb] [--aid ] [-k ] [--be] [--dch] [-f ]" }, "hf mf nack": { "command": "hf mf nack", @@ -4784,7 +4786,8 @@ "command": "hf mf rdbl", "description": "Read MIFARE Classic block", "notes": [ - "hf mf rdbl --blk 0 -k FFFFFFFFFFFF", + "hf mf rdbl --blk 0", + "hf mf rdbl --blk 0 -k A0A1A2A3A4A5", "hf mf rdbl --blk 3 -v -> get block 3, decode sector trailer" ], "offline": false, @@ -4802,7 +4805,8 @@ "command": "hf mf rdsc", "description": "Read MIFARE Classic sector", "notes": [ - "hf mf rdsc -s 0 -k FFFFFFFFFFFF" + "hf mf rdsc -s 0", + "hf mf rdsc -s 0 -k A0A1A2A3A4A5" ], "offline": false, "options": [ @@ -4906,9 +4910,10 @@ "options": [ "-h, --help This help", "-r, --reset Reset card", - "-u, --uid New UID (4 hex bytes)" + "-u, --uid New UID (4 hex bytes)", + "--furui Furui detection card" ], - "usage": "hf mf supercard [-hr] [-u ]" + "usage": "hf mf supercard [-hr] [-u ] [--furui]" }, "hf mf value": { "command": "hf mf value", @@ -4976,7 +4981,8 @@ "command": "hf mf wrbl", "description": "Write MIFARE Classic block with 16 hex bytes of data Sector 0 / Block 0 - Manufacturer block When writing to block 0 you must use a VALID block 0 data (UID, BCC, SAK, ATQA) Writing an invalid block 0 means rendering your Magic GEN2 card undetectable. Look in the magic_cards_notes.md file for help to resolve it. `--force` param is used to override warnings like bad ACL and BLOCK 0 writes. if not specified, it will exit if detected", "notes": [ - "hf mf wrbl --blk 1 -k FFFFFFFFFFFF -d 000102030405060708090a0b0c0d0e0f" + "hf mf wrbl --blk 1 -d 000102030405060708090a0b0c0d0e0f", + "hf mf wrbl --blk 1 -k A0A1A2A3A4A5 -d 000102030405060708090a0b0c0d0e0f" ], "offline": false, "options": [ @@ -6126,7 +6132,7 @@ }, "hf mfp auth": { "command": "hf mfp auth", - "description": "Executes AES authentication command for Mifare Plus card", + "description": "Executes AES authentication command for MIFARE Plus card", "notes": [ "hf mfp auth --ki 4000 --key 000102030405060708090a0b0c0d0e0f -> executes authentication", "hf mfp auth --ki 9003 --key FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -v -> executes authentication and shows all the system data" @@ -6145,9 +6151,9 @@ "description": "Checks keys on MIFARE Plus card", "notes": [ "hf mfp chk -k 000102030405060708090a0b0c0d0e0f -> check key on sector 0 as key A and B", - "hf mfp chk -s 2 -a -> check default key list on sector 2, key A", + "hf mfp chk -s 2 -a -> check default key list on sector 2, only key A", "hf mfp chk -d mfp_default_keys -s0 -e6 -> check keys from dictionary against sectors 0-6", - "hf mfp chk --pattern1b -j keys -> check all 1-byte keys pattern and save found keys to json", + "hf mfp chk --pattern1b --dump -> check all 1-byte keys pattern and save found keys to file", "hf mfp chk --pattern2b --startp2b FA00 -> check all 2-byte keys pattern. Start from key FA00FA00...FA00" ], "offline": false, @@ -6162,10 +6168,10 @@ "--pattern1b Check all 1-byte combinations of key (0000...0000, 0101...0101, 0202...0202, ...)", "--pattern2b Check all 2-byte combinations of key (0000...0000, 0001...0001, 0002...0002, ...)", "--startp2b Start key (2-byte HEX) for 2-byte search (use with `--pattern2b`)", - "-j, --json Json filename to save keys", + "--dump Dump found keys to JSON file", "-v, --verbose Verbose mode" ], - "usage": "hf mfp chk [-habv] [-s <0..255>] [-e <0..255>] [-k ] [-d ] [--pattern1b] [--pattern2b] [--startp2b ] [-j ]" + "usage": "hf mfp chk [-habv] [-s <0..255>] [-e <0..255>] [-k ] [-d ] [--pattern1b] [--pattern2b] [--startp2b ] [--dump]" }, "hf mfp commitp": { "command": "hf mfp commitp", @@ -6180,9 +6186,26 @@ ], "usage": "hf mfp commitp [-hv]" }, + "hf mfp dump": { + "command": "hf mfp dump", + "description": "Dump MIFARE Plus tag to binary file If no given, UID will be used as filename", + "notes": [ + "hf mfp dump", + "hf mfp dump --keys hf-mf-066C8B78-key.bin -> MIFARE Plus with keys from specified file" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-f, --file filename of dump", + "-k, --keys filename of keys", + "--ns no save to file", + "-v, --verbose Verbose mode" + ], + "usage": "hf mfp dump [-hv] [-f ] [-k ] [--ns]" + }, "hf mfp help": { "command": "hf mfp help", - "description": "help This help", + "description": "help This help list List MIFARE Plus history", "notes": [], "offline": true, "options": [], @@ -6215,9 +6238,30 @@ ], "usage": "hf mfp initp [-hv] [-k ]" }, + "hf mfp list": { + "command": "hf mfp list", + "description": "Alias of `trace list -t mf` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "notes": [ + "hf mf list --frame -> show frame delay times", + "hf mf list -1 -> use trace buffer" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-1, --buffer use data from trace buffer", + "--frame show frame delay times", + "-c mark CRC bytes", + "-r show relative times (gap and duration)", + "-u display times in microseconds instead of clock cycles", + "-x show hexdump to convert to pcap(ng)", + "or to import into Wireshark using encapsulation type \"ISO 14443\"", + "-f, --file filename of dictionary" + ], + "usage": "hf mf list [-h1crux] [--frame] [-f ]" + }, "hf mfp mad": { "command": "hf mfp mad", - "description": "Checks and prints Mifare Application Directory (MAD)", + "description": "Checks and prints MIFARE Application Directory (MAD)", "notes": [ "hf mfp mad", "hf mfp mad --aid e103 -k d3f7d3f7d3f7d3f7d3f7d3f7d3f7d3f7 -> read and print NDEF data from MAD aid" @@ -6234,6 +6278,14 @@ ], "usage": "hf mfp mad [-hvb] [--aid ] [-k ] [--be] [--dch]" }, + "hf mfp ndefformat": { + "command": "hf mfp ndefformat", + "description": "format MIFARE Plus Tag as a NFC tag with Data Exchange Format (NDEF) If no given, UID will be used as filename. It will try default keys and MAD keys to detect if tag is already formatted in order to write.", + "notes": [], + "offline": false, + "options": [], + "usage": "" + }, "hf mfp ndefread": { "command": "hf mfp ndefread", "description": "Prints NFC Data Exchange Format (NDEF)", @@ -6254,9 +6306,27 @@ ], "usage": "hf mfp ndefread [-hvb] [--aid ] [-k ] [-f ]" }, + "hf mfp ndefwrite": { + "command": "hf mfp ndefwrite", + "description": "Write raw NDEF hex bytes to tag. This commands assumes tag already been NFC/NDEF formatted.", + "notes": [ + "hf mfp ndefwrite -d 0300FE -> write empty record to tag", + "hf mfp ndefwrite -f myfilename", + "hf mfp ndefwrite -d 033fd1023a53709101195405656e2d55534963656d616e2054776974746572206c696e6b5101195502747769747465722e636f6d2f686572726d616e6e31303031" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-d raw NDEF hex bytes", + "-f, --file write raw NDEF file to tag", + "-p fix NDEF record headers / terminator block if missing", + "-v, --verbose verbose output" + ], + "usage": "hf mfp ndefwrite [-hpv] [-d ] [-f ]" + }, "hf mfp rdbl": { "command": "hf mfp rdbl", - "description": "Reads several blocks from Mifare Plus card", + "description": "Reads blocks from MIFARE Plus card", "notes": [ "hf mfp rdbl --blk 0 --key 000102030405060708090a0b0c0d0e0f -> executes authentication and read block 0 data", "hf mfp rdbl --blk 1 -v -> executes authentication and shows sector 1 data with default key 0xFF..0xFF" @@ -6293,7 +6363,7 @@ }, "hf mfp wrbl": { "command": "hf mfp wrbl", - "description": "Writes one block to Mifare Plus card", + "description": "Writes one block to MIFARE Plus card", "notes": [ "hf mfp wrbl --blk 1 -d ff0000000000000000000000000000ff --key 000102030405060708090a0b0c0d0e0f -> write block 1 data", "hf mfp wrbl --blk 2 -d ff0000000000000000000000000000ff -v -> write block 2 data with default key 0xFF..0xFF" @@ -7024,9 +7094,10 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file filename of dump" + "-f, --file filename of dump", + "--ns no save to file" ], - "usage": "hf topaz dump [-h] [-f ]" + "usage": "hf topaz dump [-h] [-f ] [--ns]" }, "hf topaz help": { "command": "hf topaz help", @@ -7086,16 +7157,16 @@ }, "hf topaz rdbl": { "command": "hf topaz rdbl", - "description": "Read a block", + "description": "Read Topaz block", "notes": [ - "hf topaz rdbl -b 7" + "hf topaz rdbl --blk 7" ], "offline": false, "options": [ "-h, --help This help", - "-b, --block Block number to write" + "--blk Block number" ], - "usage": "hf topaz rdbl [-h] -b " + "usage": "hf topaz rdbl [-h] --blk " }, "hf topaz reader": { "command": "hf topaz reader", @@ -7151,17 +7222,17 @@ }, "hf topaz wrbl": { "command": "hf topaz wrbl", - "description": "Write a block", + "description": "Write Topaz block with 8 hex bytes of data", "notes": [ - "hf topaz wrbl -b 7 -d 1122334455667788" + "hf topaz wrbl --blk 7 -d 1122334455667788" ], "offline": false, "options": [ "-h, --help This help", - "-b, --block Block number to write", + "--blk Block number", "-d, --data Block data (8 hex bytes)" ], - "usage": "hf topaz wrbl [-h] -b -d " + "usage": "hf topaz wrbl [-h] --blk -d " }, "hf tune": { "command": "hf tune", @@ -12022,9 +12093,8 @@ } }, "metadata": { - "commands_extracted": 755, + "commands_extracted": 759, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-06-04T15:36:56" - + "extracted_on": "2023-06-24T15:16:04" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 938413fa8..a27cf6964 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -538,17 +538,21 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`hf mfp help `|Y |`This help` -|`hf mfp info `|N |`Info about Mifare Plus tag` -|`hf mfp wrp `|N |`Write Perso command` -|`hf mfp initp `|N |`Fill all the card's keys in SL0 mode` -|`hf mfp commitp `|N |`Move card to SL1 or SL3 mode` +|`hf mfp list `|Y |`List MIFARE Plus history` |`hf mfp auth `|N |`Authentication` -|`hf mfp rdbl `|N |`Read blocks` -|`hf mfp rdsc `|N |`Read sectors` -|`hf mfp wrbl `|N |`Write blocks` |`hf mfp chk `|N |`Check keys` +|`hf mfp dump `|N |`Dump MIFARE Plus tag to binary file` +|`hf mfp info `|N |`Info about MIFARE Plus tag` |`hf mfp mad `|N |`Check and print MAD` +|`hf mfp rdbl `|N |`Read blocks from card` +|`hf mfp rdsc `|N |`Read sectors from card` +|`hf mfp wrbl `|N |`Write block to card` +|`hf mfp commitp `|N |`Configure security layer (SL1/SL3 mode)` +|`hf mfp initp `|N |`Fill all the card's keys in SL0 mode` +|`hf mfp wrp `|N |`Write Perso command` +|`hf mfp ndefformat `|N |`Format MIFARE Plus Tag as NFC Tag` |`hf mfp ndefread `|N |`Read and print NDEF records from card` +|`hf mfp ndefwrite `|N |`Write NDEF records to card` ### hf mfu @@ -704,14 +708,14 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`hf topaz help `|Y |`This help` -|`hf topaz dump `|N |`Dump TOPAZ family tag to file` |`hf topaz list `|Y |`List Topaz history` +|`hf topaz dump `|N |`Dump TOPAZ family tag to file` |`hf topaz info `|N |`Tag information` +|`hf topaz raw `|N |`Send raw hex data to tag` +|`hf topaz rdbl `|N |`Read block` |`hf topaz reader `|N |`Act like a Topaz reader` |`hf topaz sim `|N |`Simulate Topaz tag` |`hf topaz sniff `|N |`Sniff Topaz reader-tag communication` -|`hf topaz raw `|N |`Send raw hex data to tag` -|`hf topaz rdbl `|N |`Read block` |`hf topaz view `|Y |`Display content from tag dump file` |`hf topaz wrbl `|N |`Write block` From fe204d852906490ecbc25f22538a1a383ee8b33e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 24 Jun 2023 17:28:43 +0200 Subject: [PATCH 0094/1034] text --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e0c9af78..63c3e2ac6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Changed `hf topaz dump --ns` - now supports nosave param (@iceman1001) + - Added `hf mf supercard --furui` - now supports key recovery from Furui detection card. Thanks foxushka! (@iceman1001) + - Added `hf topaz dump --ns` - now supports nosave param (@iceman1001) - Changed `hf topaz rdbl` - unified output (@iceman1001) - Fixed `hf topaz wrbl` - now supports tear off and write_nonerase command (@iceman1001) - Fixed `hf mf` commands (@iceman1001) From a43d8ea9e05b872ba2b3a5db946bae7c6dc99ef5 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 24 Jun 2023 22:01:10 +0200 Subject: [PATCH 0095/1034] adapted viewing MFC dump files to also colorize ACL + GPB bytes --- CHANGELOG.md | 1 + client/src/cmdhfmf.c | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 63c3e2ac6..1af068e19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Change viewing MFC dump files - it now colors ACL + GPB bytes (@iceman1001) - Added `hf mf supercard --furui` - now supports key recovery from Furui detection card. Thanks foxushka! (@iceman1001) - Added `hf topaz dump --ns` - now supports nosave param (@iceman1001) - Changed `hf topaz rdbl` - unified output (@iceman1001) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 765c515e4..fcf898a42 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -251,7 +251,27 @@ static void mf_print_block(uint8_t blockno, uint8_t *d, bool verbose) { if (blockno == 0) { PrintAndLogEx(INFO, "%s| %3d | " _RED_("%s"), secstr, blockno, sprint_hex_ascii(d, MFBLOCK_SIZE)); } else if (mfIsSectorTrailer(blockno)) { - PrintAndLogEx(INFO, "%s| %3d | " _YELLOW_("%s"), secstr, blockno, sprint_hex_ascii(d, MFBLOCK_SIZE)); + + char keya[26] = {0}; + hex_to_buffer((uint8_t *)keya, d, MIFARE_KEY_SIZE, sizeof(keya) - 1, 0, 1, true); + + char acl[20] = {0}; + hex_to_buffer((uint8_t *)acl, d + MIFARE_KEY_SIZE, 4, sizeof(acl) - 1, 0, 1, true); + + char keyb[26] = {0}; + hex_to_buffer((uint8_t *)keyb, d + 10, MIFARE_KEY_SIZE, sizeof(keyb) - 1, 0, 1, true); + + char ascii[24] = {0}; + ascii_to_buffer((uint8_t *)ascii, d, MFBLOCK_SIZE, sizeof(ascii) - 1, 1); + + PrintAndLogEx(INFO, "%s| %3d | " _YELLOW_("%s") _MAGENTA_("%s") _YELLOW_("%s") "| " _YELLOW_("%s"), + secstr, + blockno, + keya, + acl, + keyb, + ascii + ); } else { int32_t value = 0; if (verbose && mfc_value(d, &value)) { From 85f8234201716168d7f8017324124810c5730e48 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 24 Jun 2023 22:24:27 +0200 Subject: [PATCH 0096/1034] fix wrong key file name --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index fcf898a42..795ae2b81 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -381,7 +381,7 @@ static int mf_save_keys_from_arr(uint16_t n, uint8_t *d) { } char fn[FILE_PATH_SIZE] = {0}; - snprintf(fn, sizeof(fn), "hf-mf-%s-keys", sprint_hex_inrow(d, 4)); + snprintf(fn, sizeof(fn), "hf-mf-%s-key", sprint_hex_inrow(d, 4)); saveFile(fn, ".bin", keys, keysize); free(keys); return PM3_SUCCESS; From 0f35e89f4e94b597aa6569fc0911cf579ce54bf7 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 24 Jun 2023 23:03:43 +0200 Subject: [PATCH 0097/1034] data diff now prints filenames if they fit in the header. Spiff filenames and other params is untouched --- CHANGELOG.md | 3 ++- client/src/cmddata.c | 19 ++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1af068e19..3c11a1112 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Change viewing MFC dump files - it now colors ACL + GPB bytes (@iceman1001) + - Changed `data diff` - to print filenames in header if it fits (@iceman1001) + - Changed viewing MFC dump files - it now colors ACL + GPB bytes (@iceman1001) - Added `hf mf supercard --furui` - now supports key recovery from Furui detection card. Thanks foxushka! (@iceman1001) - Added `hf topaz dump --ns` - now supports nosave param (@iceman1001) - Changed `hf topaz rdbl` - unified output (@iceman1001) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 9524cbc63..e1bf655e4 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -2939,7 +2939,7 @@ static int CmdDiff(const char *Cmd) { // "data diff -a fileA --cb\n" "data diff --fa fileA -b fileB\n" "data diff --fa fileA --fb fileB\n" - "data diff --ea --cb\n" +// "data diff --ea --cb\n" ); void *argtable[] = { @@ -3082,11 +3082,20 @@ static int CmdDiff(const char *Cmd) { if (inB == NULL) PrintAndLogEx(INFO, "inB null"); - int hdr_sln = (width * 4) + 2; + int hdr_sln = (width * 4) + 2; + char hdr0[300] = {0}; - char hdr0[200] = " # | " _CYAN_("a"); - memset(hdr0 + strlen(hdr0), ' ', hdr_sln - 2); - strcat(hdr0 + strlen(hdr0), "| " _CYAN_("b")); + int max_fn_space = (width * 5); + + if (fnlenA && fnlenB && (max_fn_space > fnlenA) && (max_fn_space > fnlenB)) { + snprintf(hdr0, sizeof(hdr0) - 1, " # | " _CYAN_("%.*s"), max_fn_space, filenameA); + memset(hdr0 + strlen(hdr0), ' ', hdr_sln - strlen(filenameA) - 1 ); + snprintf(hdr0 + strlen(hdr0), sizeof(hdr0) - 1 - strlen(hdr0), "| " _CYAN_("%.*s"), max_fn_space, filenameB); + } else { + strcat(hdr0, " # | " _CYAN_("a")); + memset(hdr0 + strlen(hdr0), ' ', hdr_sln - 2); + strcat(hdr0 + strlen(hdr0), "| " _CYAN_("b")); + } char hdr1[200] = "----+"; memset(hdr1 + strlen(hdr1), '-', hdr_sln); From 043ff257c46a5dde86c51dd74a10015277e9f63a Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 24 Jun 2023 23:28:31 +0200 Subject: [PATCH 0098/1034] style --- CHANGELOG.md | 1 + client/src/cmdhfmf.c | 41 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c11a1112..bd302c2e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed viewing MFC dump - border char is now white (@iceman1001) - Changed `data diff` - to print filenames in header if it fits (@iceman1001) - Changed viewing MFC dump files - it now colors ACL + GPB bytes (@iceman1001) - Added `hf mf supercard --furui` - now supports key recovery from Furui detection card. Thanks foxushka! (@iceman1001) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 795ae2b81..1af32b558 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -226,10 +226,37 @@ bool mfc_value(const uint8_t *d, int32_t *val) { } void mf_print_block_one(uint8_t blockno, uint8_t *d, bool verbose) { + if (blockno == 0) { - PrintAndLogEx(INFO, "%3d | " _RED_("%s"), blockno, sprint_hex_ascii(d, MFBLOCK_SIZE)); + char ascii[24] = {0}; + ascii_to_buffer((uint8_t *)ascii, d, MFBLOCK_SIZE, sizeof(ascii) - 1, 1); + PrintAndLogEx(INFO, "%3d | " _RED_("%s") "| " _RED_("%s"), + blockno, + sprint_hex(d, MFBLOCK_SIZE), + ascii + ); } else if (mfIsSectorTrailer(blockno)) { - PrintAndLogEx(INFO, "%3d | " _YELLOW_("%s"), blockno, sprint_hex_ascii(d, MFBLOCK_SIZE)); + + char keya[26] = {0}; + hex_to_buffer((uint8_t *)keya, d, MIFARE_KEY_SIZE, sizeof(keya) - 1, 0, 1, true); + + char acl[20] = {0}; + hex_to_buffer((uint8_t *)acl, d + MIFARE_KEY_SIZE, 4, sizeof(acl) - 1, 0, 1, true); + + char keyb[26] = {0}; + hex_to_buffer((uint8_t *)keyb, d + 10, MIFARE_KEY_SIZE, sizeof(keyb) - 1, 0, 1, true); + + char ascii[24] = {0}; + ascii_to_buffer((uint8_t *)ascii, d, MFBLOCK_SIZE, sizeof(ascii) - 1, 1); + + PrintAndLogEx(INFO, "%3d | " _YELLOW_("%s") _MAGENTA_("%s") _YELLOW_("%s") "| " _YELLOW_("%s"), + blockno, + keya, + acl, + keyb, + ascii + ); + } else { int32_t value = 0; if (verbose && mfc_value(d, &value)) { @@ -249,7 +276,15 @@ static void mf_print_block(uint8_t blockno, uint8_t *d, bool verbose) { } if (blockno == 0) { - PrintAndLogEx(INFO, "%s| %3d | " _RED_("%s"), secstr, blockno, sprint_hex_ascii(d, MFBLOCK_SIZE)); + char ascii[24] = {0}; + ascii_to_buffer((uint8_t *)ascii, d, MFBLOCK_SIZE, sizeof(ascii) - 1, 1); + PrintAndLogEx(INFO, "%s| %3d | " _RED_("%s") "| " _RED_("%s"), + secstr, + blockno, + sprint_hex(d, MFBLOCK_SIZE), + ascii + ); + } else if (mfIsSectorTrailer(blockno)) { char keya[26] = {0}; From 9f87b6dd9c35da08a7ca59e11842dac2f717f712 Mon Sep 17 00:00:00 2001 From: The-SamminAter Date: Sat, 24 Jun 2023 17:19:46 -0700 Subject: [PATCH 0099/1034] Add ability to compile on iOS --- Makefile.defs | 14 +++++++++++++- client/CMakeLists.txt | 8 +++++++- client/Makefile | 8 +++++++- client/deps/hardnested/Makefile | 3 +++ client/experimental_lib/CMakeLists.txt | 8 +++++++- tools/mfd_aes_brute/Makefile | 3 +++ 6 files changed, 40 insertions(+), 4 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index bcbbaa67e..76409a37d 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -75,7 +75,15 @@ else endif ifeq ($(platform),Darwin) - USE_BREW ?= 1 + ifeq ($(shell uname -p),arm64) + # The platform is iOS + USE_BREW ?= 0 + # iOS refuses to compile unless this is set + export IPHONEOS_DEPLOYMENT_TARGET=11.0 + else + # M* macOS devices return arm + USE_BREW ?= 1 + endif USE_MACPORTS ?= 0 AR= /usr/bin/ar rcs RANLIB= /usr/bin/ranlib @@ -132,6 +140,10 @@ ifeq ($(shell expr $(CC_VERSION) \>= 10), 1) endif endif ifeq ($(platform),Darwin) + ifeq ($(shell uname -p),arm64) + # iOS will refuse to compile without the minimum target of iOS 11.0 + DEFCFLAGS += -mios-version-min=11.0 + endif # their readline has strict-prototype issues DEFCFLAGS += -Wno-strict-prototypes # some warnings about braced initializers on structs we want to ignore diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 3fd255997..9df0844b9 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -380,7 +380,13 @@ message(STATUS "CMAKE_SYSTEM_PROCESSOR := ${CMAKE_SYSTEM_PROCESSOR}") if (APPLE) message(STATUS "Apple device detected.") set(ADDITIONAL_SRC ${PM3_ROOT}/client/src/util_darwin.h ${PM3_ROOT}/client/src/util_darwin.m ${ADDITIONAL_SRC}) - set(ADDITIONAL_LNK "-framework Foundation" "-framework AppKit") + if (EXISTS /private/var/mobile) + message(STATUS "iOS detected.") + set(ADDITIONAL_LNK "-framework Foundation" "-framework UIKit") + else + message(STATUS "macOS detected.") + set(ADDITIONAL_LNK "-framework Foundation" "-framework AppKit") + endif (EXISTS /private/var/mobile) endif (APPLE) if ((NOT SKIPQT EQUAL 1) AND (Qt5_FOUND)) diff --git a/client/Makefile b/client/Makefile index d0cee355e..d44e67011 100644 --- a/client/Makefile +++ b/client/Makefile @@ -434,7 +434,13 @@ LDFLAGS += $(MYLDFLAGS) PM3LDFLAGS = $(LDFLAGS) ifeq ($(platform),Darwin) - PM3LDFLAGS += -framework Foundation -framework AppKit + ifeq ($(shell uname -p),arm64) + # The platform is iOS + PM3LDFLAGS += -framework Foundation -framework UIKit + else + # M* macOS devices return arm + PM3LDFLAGS += -framework Foundation -framework AppKit + endif endif ################### diff --git a/client/deps/hardnested/Makefile b/client/deps/hardnested/Makefile index 1667e036f..badace7e5 100644 --- a/client/deps/hardnested/Makefile +++ b/client/deps/hardnested/Makefile @@ -22,6 +22,9 @@ endif ifneq ($(findstring aarch64, $(cpu_arch)), ) IS_SIMD_ARCH=arm64 endif +ifneq ($(findstring iP, $(cpu_arch)), ) + IS_SIMD_ARCH=arm64 +endif ifneq ($(IS_SIMD_ARCH), ) MULTIARCHSRCS = hardnested_bf_core.c hardnested_bitarray_core.c diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 2ac10f871..27ee198e1 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -380,7 +380,13 @@ message(STATUS "CMAKE_SYSTEM_PROCESSOR := ${CMAKE_SYSTEM_PROCESSOR}") if (APPLE) message(STATUS "Apple device detected.") set(ADDITIONAL_SRC ${PM3_ROOT}/client/src/util_darwin.h ${PM3_ROOT}/client/src/util_darwin.m ${ADDITIONAL_SRC}) - set(ADDITIONAL_LNK "-framework Foundation" "-framework AppKit") + if (EXISTS /private/var/mobile) + message(STATUS "iOS detected.") + set(ADDITIONAL_LNK "-framework Foundation" "-framework UIKit") + else + message(STATUS "macOS detected.") + set(ADDITIONAL_LNK "-framework Foundation" "-framework AppKit") + endif (EXISTS /private/var/mobile) endif (APPLE) if ((NOT SKIPQT EQUAL 1) AND (Qt5_FOUND)) diff --git a/tools/mfd_aes_brute/Makefile b/tools/mfd_aes_brute/Makefile index cf2c457c6..d0df682f6 100644 --- a/tools/mfd_aes_brute/Makefile +++ b/tools/mfd_aes_brute/Makefile @@ -9,6 +9,9 @@ MYLDLIBS = -lcrypto cpu_arch = $(shell uname -m) ifneq ($(findstring arm64, $(cpu_arch)), ) MYCFLAGS += -mcpu=native +# iOS 'fun' +else ifneq ($(findstring iP, $(cpu_arch)), ) + MYCFLAGS += -mcpu=native else MYCFLAGS += -march=native endif From 60480d16ec59b741b069029fc01c0d0bd84fbb1d Mon Sep 17 00:00:00 2001 From: Sam <48739810+The-SamminAter@users.noreply.github.com> Date: Sat, 24 Jun 2023 17:49:26 -0700 Subject: [PATCH 0100/1034] Update CHANGELOG.md Signed-off-by: Sam <48739810+The-SamminAter@users.noreply.github.com> --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd302c2e8..a9a8cb1f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added support for compiling on iOS (@The-SamminAter) - Fixed viewing MFC dump - border char is now white (@iceman1001) - Changed `data diff` - to print filenames in header if it fits (@iceman1001) - Changed viewing MFC dump files - it now colors ACL + GPB bytes (@iceman1001) From de85b3c10cb24062b58d9ce4be57baf5242cad54 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 25 Jun 2023 08:19:43 +0200 Subject: [PATCH 0101/1034] remove color from GPB --- client/src/cmdhfmf.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 1af32b558..16bb414fd 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -241,7 +241,7 @@ void mf_print_block_one(uint8_t blockno, uint8_t *d, bool verbose) { hex_to_buffer((uint8_t *)keya, d, MIFARE_KEY_SIZE, sizeof(keya) - 1, 0, 1, true); char acl[20] = {0}; - hex_to_buffer((uint8_t *)acl, d + MIFARE_KEY_SIZE, 4, sizeof(acl) - 1, 0, 1, true); + hex_to_buffer((uint8_t *)acl, d + MIFARE_KEY_SIZE, 3, sizeof(acl) - 1, 0, 1, true); char keyb[26] = {0}; hex_to_buffer((uint8_t *)keyb, d + 10, MIFARE_KEY_SIZE, sizeof(keyb) - 1, 0, 1, true); @@ -249,10 +249,11 @@ void mf_print_block_one(uint8_t blockno, uint8_t *d, bool verbose) { char ascii[24] = {0}; ascii_to_buffer((uint8_t *)ascii, d, MFBLOCK_SIZE, sizeof(ascii) - 1, 1); - PrintAndLogEx(INFO, "%3d | " _YELLOW_("%s") _MAGENTA_("%s") _YELLOW_("%s") "| " _YELLOW_("%s"), + PrintAndLogEx(INFO, "%3d | " _YELLOW_("%s") _MAGENTA_("%s") "%02X " _YELLOW_("%s") "| " _YELLOW_("%s"), blockno, keya, acl, + d[9], keyb, ascii ); @@ -291,7 +292,7 @@ static void mf_print_block(uint8_t blockno, uint8_t *d, bool verbose) { hex_to_buffer((uint8_t *)keya, d, MIFARE_KEY_SIZE, sizeof(keya) - 1, 0, 1, true); char acl[20] = {0}; - hex_to_buffer((uint8_t *)acl, d + MIFARE_KEY_SIZE, 4, sizeof(acl) - 1, 0, 1, true); + hex_to_buffer((uint8_t *)acl, d + MIFARE_KEY_SIZE, 3, sizeof(acl) - 1, 0, 1, true); char keyb[26] = {0}; hex_to_buffer((uint8_t *)keyb, d + 10, MIFARE_KEY_SIZE, sizeof(keyb) - 1, 0, 1, true); @@ -299,11 +300,12 @@ static void mf_print_block(uint8_t blockno, uint8_t *d, bool verbose) { char ascii[24] = {0}; ascii_to_buffer((uint8_t *)ascii, d, MFBLOCK_SIZE, sizeof(ascii) - 1, 1); - PrintAndLogEx(INFO, "%s| %3d | " _YELLOW_("%s") _MAGENTA_("%s") _YELLOW_("%s") "| " _YELLOW_("%s"), + PrintAndLogEx(INFO, "%s| %3d | " _YELLOW_("%s") _MAGENTA_("%s") "%02X " _YELLOW_("%s") "| " _YELLOW_("%s"), secstr, blockno, keya, acl, + d[9], keyb, ascii ); From 9b8316c1ddd99e2531730ca33475c969d8bdd68b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 25 Jun 2023 09:04:45 +0200 Subject: [PATCH 0102/1034] fix cmakelists.txt for missing else --- client/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 9df0844b9..156959ba5 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -380,13 +380,15 @@ message(STATUS "CMAKE_SYSTEM_PROCESSOR := ${CMAKE_SYSTEM_PROCESSOR}") if (APPLE) message(STATUS "Apple device detected.") set(ADDITIONAL_SRC ${PM3_ROOT}/client/src/util_darwin.h ${PM3_ROOT}/client/src/util_darwin.m ${ADDITIONAL_SRC}) + if (EXISTS /private/var/mobile) message(STATUS "iOS detected.") set(ADDITIONAL_LNK "-framework Foundation" "-framework UIKit") - else + else (EXISTS /private/var/mobile) message(STATUS "macOS detected.") set(ADDITIONAL_LNK "-framework Foundation" "-framework AppKit") endif (EXISTS /private/var/mobile) + endif (APPLE) if ((NOT SKIPQT EQUAL 1) AND (Qt5_FOUND)) From 2b3f3240c67ff9fd18527c2d605674d52cacadca Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 25 Jun 2023 09:07:43 +0200 Subject: [PATCH 0103/1034] fix incomplete else statement in cmakelists.txt --- client/experimental_lib/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 27ee198e1..c8a6bb02f 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -383,7 +383,7 @@ if (APPLE) if (EXISTS /private/var/mobile) message(STATUS "iOS detected.") set(ADDITIONAL_LNK "-framework Foundation" "-framework UIKit") - else + else (EXISTS /private/var/mobile) message(STATUS "macOS detected.") set(ADDITIONAL_LNK "-framework Foundation" "-framework AppKit") endif (EXISTS /private/var/mobile) From d71eed325c7317996686fd58c0ee9156d9391207 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 25 Jun 2023 12:42:34 +0200 Subject: [PATCH 0104/1034] appkit vs uikit detection --- client/CMakeLists.txt | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 156959ba5..8759c00f3 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -381,13 +381,21 @@ if (APPLE) message(STATUS "Apple device detected.") set(ADDITIONAL_SRC ${PM3_ROOT}/client/src/util_darwin.h ${PM3_ROOT}/client/src/util_darwin.m ${ADDITIONAL_SRC}) - if (EXISTS /private/var/mobile) - message(STATUS "iOS detected.") + find_library(UIKIT_LIBRARY UIKit) + if (NOT UIKIT_LIBRARY) + message(STATUS "UIKit.framework NOT found!") + else() + message(STATUS "UIKit.framework found! ${UIKIT_LIBRARY}") set(ADDITIONAL_LNK "-framework Foundation" "-framework UIKit") - else (EXISTS /private/var/mobile) - message(STATUS "macOS detected.") - set(ADDITIONAL_LNK "-framework Foundation" "-framework AppKit") - endif (EXISTS /private/var/mobile) + endif() + + find_library(APPKIT_LIBRARY AppKit) + if (NOT APPKIT_LIBRARY) + message(STATUS "AppKit.framework NOT found!") + else() + message(STATUS "AppKit.framework found! ${APPKIT_LIBRARY}") + set(ADDITIONAL_LNK "-framework Foundation" "-framework AppKit") + endif() endif (APPLE) From 9b69d7ddfaa7fae2bef165493bb96afe8b520f32 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 25 Jun 2023 13:03:12 +0200 Subject: [PATCH 0105/1034] fix uikit and appkit detection in cmake --- client/experimental_lib/CMakeLists.txt | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index c8a6bb02f..60e7b4004 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -380,13 +380,23 @@ message(STATUS "CMAKE_SYSTEM_PROCESSOR := ${CMAKE_SYSTEM_PROCESSOR}") if (APPLE) message(STATUS "Apple device detected.") set(ADDITIONAL_SRC ${PM3_ROOT}/client/src/util_darwin.h ${PM3_ROOT}/client/src/util_darwin.m ${ADDITIONAL_SRC}) - if (EXISTS /private/var/mobile) - message(STATUS "iOS detected.") + + find_library(UIKIT_LIBRARY UIKit) + if (NOT UIKIT_LIBRARY) + message(STATUS "UIKit.framework NOT found!") + else() + message(STATUS "UIKit.framework found! ${UIKIT_LIBRARY}") set(ADDITIONAL_LNK "-framework Foundation" "-framework UIKit") - else (EXISTS /private/var/mobile) - message(STATUS "macOS detected.") - set(ADDITIONAL_LNK "-framework Foundation" "-framework AppKit") - endif (EXISTS /private/var/mobile) + endif() + + find_library(APPKIT_LIBRARY AppKit) + if (NOT APPKIT_LIBRARY) + message(STATUS "AppKit.framework NOT found!") + else() + message(STATUS "AppKit.framework found! ${APPKIT_LIBRARY}") + set(ADDITIONAL_LNK "-framework Foundation" "-framework AppKit") + endif() + endif (APPLE) if ((NOT SKIPQT EQUAL 1) AND (Qt5_FOUND)) From a9f81a05b4e9b3933b9d4dd4344d41f6a264113d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 25 Jun 2023 14:21:34 +0200 Subject: [PATCH 0106/1034] text --- client/src/cmdlfindala.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/client/src/cmdlfindala.c b/client/src/cmdlfindala.c index fa59894e1..1af21ec20 100644 --- a/client/src/cmdlfindala.c +++ b/client/src/cmdlfindala.c @@ -120,7 +120,7 @@ static void decodeHeden2L(uint8_t *bits) { if (bits[offset + 7]) cardnumber += 16384; if (bits[offset + 23]) cardnumber += 32768; - PrintAndLogEx(SUCCESS, " Heden-2L | %u", cardnumber); + PrintAndLogEx(SUCCESS, " Heden-2L...... %u", cardnumber); } // sending three times. Didn't seem to break the previous sim? @@ -301,10 +301,11 @@ int demodIndalaEx(int clk, int invert, int maxErr, bool verbose) { ); PrintAndLogEx(DEBUG, "two bit checksum... " _GREEN_("%1d%1d"), checksum >> 1 & 0x01, checksum & 0x01); + PrintAndLogEx(INFO, ""); PrintAndLogEx(SUCCESS, "Possible de-scramble patterns"); // This doesn't seem to line up with the hot-stamp numbers on any HID cards I have seen, but, leaving it alone since I do not know how those work. -MS - PrintAndLogEx(SUCCESS, " Printed | __%04d__ [0x%X]", p1, p1); - PrintAndLogEx(SUCCESS, " Internal ID | %" PRIu64, foo); + PrintAndLogEx(SUCCESS, " Printed....... __%04d__ ( 0x%X )", p1, p1); + PrintAndLogEx(SUCCESS, " Internal ID... %" PRIu64, foo); decodeHeden2L(g_DemodBuffer); } else { @@ -336,6 +337,7 @@ int demodIndalaEx(int clk, int invert, int maxErr, bool verbose) { PrintAndLogEx(DEBUG, "DEBUG: Indala - printing DemodBuffer"); printDemodBuff(0, false, false, false); } + PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } @@ -503,7 +505,7 @@ static int CmdIndalaDemodAlt(const char *Cmd) { showbits[bit] = '.' + bits[bit]; } showbits[bit + 1] = '\0'; - PrintAndLogEx(SUCCESS, "Partial UID | %s", showbits); + PrintAndLogEx(SUCCESS, "Partial UID... %s", showbits); return PM3_SUCCESS; } else { for (bit = 0; bit < uidlen; bit++) { @@ -528,7 +530,7 @@ static int CmdIndalaDemodAlt(const char *Cmd) { uid2 = (uid2 << 1) | 1; } } - PrintAndLogEx(SUCCESS, "UID | %s (%x%08x)", showbits, uid1, uid2); + PrintAndLogEx(SUCCESS, "UID... %s ( %x%08x )", showbits, uid1, uid2); } else { uint32_t uid3 = 0; uint32_t uid4 = 0; @@ -549,7 +551,7 @@ static int CmdIndalaDemodAlt(const char *Cmd) { else uid7 = (uid7 << 1) | 1; } - PrintAndLogEx(SUCCESS, "UID | %s (%x%08x%08x%08x%08x%08x%08x)", showbits, uid1, uid2, uid3, uid4, uid5, uid6, uid7); + PrintAndLogEx(SUCCESS, "UID... %s (%x%08x%08x%08x%08x%08x%08x)", showbits, uid1, uid2, uid3, uid4, uid5, uid6, uid7); } // Checking UID against next occurrences From 20814bc394398b374323eebe9e8c739bf5bb44a3 Mon Sep 17 00:00:00 2001 From: Iceman Date: Sun, 25 Jun 2023 14:27:59 +0200 Subject: [PATCH 0107/1034] Update README.md Signed-off-by: Iceman --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 20416bdbb..9096c9559 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Iceman Fork - Proxmark3 a RFID / NFC project. +# Iceman Fork - Proxmark3 The Proxmark3 is the swiss-army tool of RFID, allowing for interactions with the vast majority of RFID tags on a global scale. Originally built by Jonathan Westhues, the device is now the goto tool for RFID Analysis for the enthusiast. Iceman repository is considered to be the pinnacle of features and functionality, enabling a huge range of extremely useful and convenient commands and LUA scripts to automate chip identification, penetration testing, and programming From 9b2657294ab9b3e0f22dac236938002cfccb63ac Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 25 Jun 2023 14:51:51 +0200 Subject: [PATCH 0108/1034] adapt test for indala text changes --- tools/pm3_tests.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 3320d9866..a8ed2a196 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -437,8 +437,7 @@ while true; do if ! CheckExecute slow "lf T55 hid_48 test2" "$CLIENTBIN -c 'data load -f traces/lf_ATA5577_hid_48.pm3; lf hid demod'" \ "HID Corporate 1000 48-bit"; then break; fi if ! CheckExecute slow "lf T55 indala_hedem test" "$CLIENTBIN -c 'data load -f traces/lf_ATA5577_indala_hedem.pm3; lf search -1'" "Indala ID found"; then break; fi - if ! CheckExecute slow "lf T55 indala_hedem test2" "$CLIENTBIN -c 'data load -f traces/lf_ATA5577_indala_hedem.pm3; lf indala demod'" \ - "Heden-2L \| 888"; then break; fi + if ! CheckExecute slow "lf T55 indala_hedem test2" "$CLIENTBIN -c 'data load -f traces/lf_ATA5577_indala_hedem.pm3; lf indala demod'" "Heden-2L...... 888"; then break; fi if ! CheckExecute slow "lf T55 indala test" "$CLIENTBIN -c 'data load -f traces/lf_ATA5577_indala.pm3; lf search -1'" "Indala ID found"; then break; fi if ! CheckExecute slow "lf T55 indala test2" "$CLIENTBIN -c 'data load -f traces/lf_ATA5577_indala.pm3; lf indala demod'" \ "Fmt 26 FC: 123 Card: 1337 Parity: 11"; then break; fi From d40a89b27b63f760465f59cbe0739a000ea1da3c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 25 Jun 2023 16:22:39 +0200 Subject: [PATCH 0109/1034] improve the ecfill function used in autopwn among others. Lessen failed auth/reads by skipping s 16,17 using key A for MFC EV1 cards --- armsrc/mifarecmd.c | 117 ++++++++++++++++++++++++++++----------------- 1 file changed, 74 insertions(+), 43 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 7a5abf2c8..bc9a38971 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2302,64 +2302,98 @@ int MifareECardLoadExt(uint8_t sectorcnt, uint8_t keytype) { int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { - uint32_t cuid = 0; - struct Crypto1State mpcs = {0, 0}; - struct Crypto1State *pcs; - pcs = &mpcs; - - // variables - uint8_t dataoutbuf[16] = {0x00}; - uint8_t dataoutbuf2[16] = {0x00}; - uint8_t uid[10] = {0x00}; - LED_A_ON(); iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); clear_trace(); set_tracing(true); + // variables + bool have_uid = false; + uint8_t cascade_levels = 0; + uint32_t cuid = 0; + uint8_t uid[10] = {0x00}; + struct Crypto1State mpcs = {0, 0}; + struct Crypto1State *pcs; + pcs = &mpcs; + int retval = PM3_SUCCESS; - if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) { - retval = PM3_ESOFT; - if (g_dbglevel > DBG_ERROR) Dbprintf("Can't select card"); - goto out; - } + for (uint8_t s = 0; s < sectorcnt; s++) { + uint64_t ui64Key = emlGetKey(s, keytype); - for (uint8_t sectorNo = 0; sectorNo < sectorcnt; sectorNo++) { - uint64_t ui64Key = emlGetKey(sectorNo, keytype); - if (sectorNo == 0) { - if (mifare_classic_auth(pcs, cuid, FirstBlockOfSector(sectorNo), keytype, ui64Key, AUTH_FIRST)) { - retval = PM3_EPARTIAL; - if (g_dbglevel > DBG_ERROR) Dbprintf("Sector[%2d]. Auth error", sectorNo); + // MFC 1K EV1 sector 16,17 don't use key A. + if ((sectorcnt == 18) && (keytype == 0) && s > 15) { + continue; + } + + // use fast select + if (have_uid == false) { // need a full select cycle to get the uid first + iso14a_card_select_t card_info; + if (iso14443a_select_card(uid, &card_info, &cuid, true, 0, true) == 0) { continue; } - } else { - if (mifare_classic_auth(pcs, cuid, FirstBlockOfSector(sectorNo), keytype, ui64Key, AUTH_NESTED)) { - retval = PM3_EPARTIAL; - if (g_dbglevel > DBG_ERROR) Dbprintf("Sector[%2d]. Auth nested error", sectorNo); + + switch (card_info.uidlen) { + case 4 : + cascade_levels = 1; + break; + case 7 : + cascade_levels = 2; + break; + case 10: + cascade_levels = 3; + break; + default: + break; + } + have_uid = true; + } else { // no need for anticollision. We can directly select the card + if (iso14443a_fast_select_card(uid, cascade_levels) == 0) { continue; } } - for (uint8_t blockNo = 0; blockNo < NumBlocksPerSector(sectorNo); blockNo++) { - if (mifare_classic_readblock(pcs, cuid, FirstBlockOfSector(sectorNo) + blockNo, dataoutbuf)) { - retval = PM3_EPARTIAL; - - if (g_dbglevel > DBG_ERROR) Dbprintf("Error reading sector %2d block %2d", sectorNo, blockNo); - continue; + // Auth + if (mifare_classic_auth(pcs, cuid, FirstBlockOfSector(s), keytype, ui64Key, AUTH_FIRST)) { + retval = PM3_EPARTIAL; + if (g_dbglevel > DBG_ERROR) { + Dbprintf("Sector %2d - Auth error", s); } + continue; + } - if (memcmp(dataoutbuf, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 16) == 0) { - continue; - } +#define MAX_RETRIES 2 - if (blockNo < NumBlocksPerSector(sectorNo) - 1) { - emlSetMem(dataoutbuf, FirstBlockOfSector(sectorNo) + blockNo, 1); - } else { // sector trailer, keep the keys, set only the AC - emlGetMem(dataoutbuf2, FirstBlockOfSector(sectorNo) + blockNo, 1); - memcpy(dataoutbuf2 + 6, dataoutbuf + 6, 4); - emlSetMem(dataoutbuf2, FirstBlockOfSector(sectorNo) + blockNo, 1); + uint8_t data[16] = {0x00}; + for (uint8_t b = 0; b < NumBlocksPerSector(s); b++) { + + memset(data, 0x00, sizeof(data)); + + for (uint8_t r = 0; r < MAX_RETRIES; r++) { + + if (mifare_classic_readblock(pcs, cuid, FirstBlockOfSector(s) + b, data)) { + retval |= PM3_EPARTIAL; + if (g_dbglevel > DBG_ERROR) { + Dbprintf("Error reading sector %2d block %2d", s, b); + } + continue; + } + + // No need to copy empty + if (memcmp(data, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 16) == 0) { + continue; + } + + if (b < NumBlocksPerSector(s) - 1) { + emlSetMem(data, FirstBlockOfSector(s) + b, 1); + } else { + // sector trailer, keep the keys, set only the AC + uint8_t st[16] = {0x00}; + emlGetMem(st, FirstBlockOfSector(s) + b, 1); + memcpy(st + 6, data + 6, 4); + emlSetMem(st, FirstBlockOfSector(s) + b, 1); + } } } } @@ -2367,9 +2401,6 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { int res = mifare_classic_halt(pcs, cuid); (void)res; - if (g_dbglevel >= DBG_INFO) DbpString("Emulator fill sectors finished"); - -out: crypto1_deinit(pcs); FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); LEDsoff(); From f64f5385192327f67aef5afe0480180bfb5fba72 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 25 Jun 2023 22:30:58 +0200 Subject: [PATCH 0110/1034] style --- armsrc/mifarecmd.c | 4 ++-- client/src/cmddata.c | 4 ++-- client/src/cmdhfmf.c | 48 ++++++++++++++++++++++---------------------- doc/commands.json | 5 ++--- 4 files changed, 30 insertions(+), 31 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index bc9a38971..4492c3195 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2357,7 +2357,7 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { // Auth if (mifare_classic_auth(pcs, cuid, FirstBlockOfSector(s), keytype, ui64Key, AUTH_FIRST)) { retval = PM3_EPARTIAL; - if (g_dbglevel > DBG_ERROR) { + if (g_dbglevel > DBG_ERROR) { Dbprintf("Sector %2d - Auth error", s); } continue; @@ -2387,7 +2387,7 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { if (b < NumBlocksPerSector(s) - 1) { emlSetMem(data, FirstBlockOfSector(s) + b, 1); - } else { + } else { // sector trailer, keep the keys, set only the AC uint8_t st[16] = {0x00}; emlGetMem(st, FirstBlockOfSector(s) + b, 1); diff --git a/client/src/cmddata.c b/client/src/cmddata.c index e1bf655e4..032d31f85 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3082,14 +3082,14 @@ static int CmdDiff(const char *Cmd) { if (inB == NULL) PrintAndLogEx(INFO, "inB null"); - int hdr_sln = (width * 4) + 2; + int hdr_sln = (width * 4) + 2; char hdr0[300] = {0}; int max_fn_space = (width * 5); if (fnlenA && fnlenB && (max_fn_space > fnlenA) && (max_fn_space > fnlenB)) { snprintf(hdr0, sizeof(hdr0) - 1, " # | " _CYAN_("%.*s"), max_fn_space, filenameA); - memset(hdr0 + strlen(hdr0), ' ', hdr_sln - strlen(filenameA) - 1 ); + memset(hdr0 + strlen(hdr0), ' ', hdr_sln - strlen(filenameA) - 1); snprintf(hdr0 + strlen(hdr0), sizeof(hdr0) - 1 - strlen(hdr0), "| " _CYAN_("%.*s"), max_fn_space, filenameB); } else { strcat(hdr0, " # | " _CYAN_("a")); diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 16bb414fd..2eb7fa415 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -231,10 +231,10 @@ void mf_print_block_one(uint8_t blockno, uint8_t *d, bool verbose) { char ascii[24] = {0}; ascii_to_buffer((uint8_t *)ascii, d, MFBLOCK_SIZE, sizeof(ascii) - 1, 1); PrintAndLogEx(INFO, "%3d | " _RED_("%s") "| " _RED_("%s"), - blockno, - sprint_hex(d, MFBLOCK_SIZE), - ascii - ); + blockno, + sprint_hex(d, MFBLOCK_SIZE), + ascii + ); } else if (mfIsSectorTrailer(blockno)) { char keya[26] = {0}; @@ -250,13 +250,13 @@ void mf_print_block_one(uint8_t blockno, uint8_t *d, bool verbose) { ascii_to_buffer((uint8_t *)ascii, d, MFBLOCK_SIZE, sizeof(ascii) - 1, 1); PrintAndLogEx(INFO, "%3d | " _YELLOW_("%s") _MAGENTA_("%s") "%02X " _YELLOW_("%s") "| " _YELLOW_("%s"), - blockno, - keya, - acl, - d[9], - keyb, - ascii - ); + blockno, + keya, + acl, + d[9], + keyb, + ascii + ); } else { int32_t value = 0; @@ -280,11 +280,11 @@ static void mf_print_block(uint8_t blockno, uint8_t *d, bool verbose) { char ascii[24] = {0}; ascii_to_buffer((uint8_t *)ascii, d, MFBLOCK_SIZE, sizeof(ascii) - 1, 1); PrintAndLogEx(INFO, "%s| %3d | " _RED_("%s") "| " _RED_("%s"), - secstr, - blockno, - sprint_hex(d, MFBLOCK_SIZE), - ascii - ); + secstr, + blockno, + sprint_hex(d, MFBLOCK_SIZE), + ascii + ); } else if (mfIsSectorTrailer(blockno)) { @@ -301,14 +301,14 @@ static void mf_print_block(uint8_t blockno, uint8_t *d, bool verbose) { ascii_to_buffer((uint8_t *)ascii, d, MFBLOCK_SIZE, sizeof(ascii) - 1, 1); PrintAndLogEx(INFO, "%s| %3d | " _YELLOW_("%s") _MAGENTA_("%s") "%02X " _YELLOW_("%s") "| " _YELLOW_("%s"), - secstr, - blockno, - keya, - acl, - d[9], - keyb, - ascii - ); + secstr, + blockno, + keya, + acl, + d[9], + keyb, + ascii + ); } else { int32_t value = 0; if (verbose && mfc_value(d, &value)) { diff --git a/doc/commands.json b/doc/commands.json index 7a19db4f2..27e9303e9 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -332,8 +332,7 @@ "data diff -a fileA -b fileB", "data diff -a fileA --eb", "data diff --fa fileA -b fileB", - "data diff --fa fileA --fb fileB", - "data diff --ea --cb" + "data diff --fa fileA --fb fileB" ], "offline": true, "options": [ @@ -12095,6 +12094,6 @@ "metadata": { "commands_extracted": 759, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-06-24T15:16:04" + "extracted_on": "2023-06-25T20:30:44" } } \ No newline at end of file From 2e311a141bdb045b953bbb75763066ce982f9a3e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 25 Jun 2023 22:42:29 +0200 Subject: [PATCH 0111/1034] misschecks --- client/luascripts/hf_legic.lua | 8 ++++---- client/src/cmdhf15.c | 2 +- doc/commands.json | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/client/luascripts/hf_legic.lua b/client/luascripts/hf_legic.lua index 21684b6fb..cbec05f9f 100644 --- a/client/luascripts/hf_legic.lua +++ b/client/luascripts/hf_legic.lua @@ -2520,11 +2520,11 @@ function modifyMode() --- -- edit data-portion of single segment ["ed"] = function(x) - if (type(x)=="string" and string.len(x)>0) then sel=tonumber(x,10) - else sel=selectSegment(inTAG) end + if (type(x) == "string" and string.len(x)>0) then sel=tonumber(x,10) + else sel = selectSegment(inTAG) end if (istable(inTAG.SEG[sel])) then - local uid = inTAG.MCD..inTAG.MSN0..inTAG.MSN1..inTAG.MSN2 - inTAG.SEG[sel].data=editSegmentData(inTAG.SEG[sel].data, uid) + local uid = inTAG.MCD..inTAG.MSN0..inTAG.MSN1..inTAG.MSN2 + inTAG.SEG[sel].data = editSegmentData(inTAG.SEG[sel].data, uid) end end, --- diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index c80f8cac4..c16bfb10b 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -48,7 +48,7 @@ #define Logic1 Iso15693Logic1 #define FrameEOF Iso15693FrameEOF #define CARD_MEMORY_SIZE 4096 -#define HF15_UID_LENGTH 8 +#define HF15_UID_LENGTH 8 #ifndef Crc15 # define Crc15(data, len) Crc16ex(CRC_15693, (data), (len)) diff --git a/doc/commands.json b/doc/commands.json index 27e9303e9..e1a0a020b 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -12094,6 +12094,6 @@ "metadata": { "commands_extracted": 759, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-06-25T20:30:44" + "extracted_on": "2023-06-25T20:42:06" } } \ No newline at end of file From 1cf494cb983f79e446619ab308c19cfe70c78f6b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 26 Jun 2023 00:08:00 +0200 Subject: [PATCH 0112/1034] preparatins for release --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a9a8cb1f7..9e2fa61ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + +## [Seven][2023-06-25] - Added support for compiling on iOS (@The-SamminAter) - Fixed viewing MFC dump - border char is now white (@iceman1001) - Changed `data diff` - to print filenames in header if it fits (@iceman1001) From bc18dbd847775a0491c1f919f55f7160a42b95f9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 26 Jun 2023 13:10:45 +0200 Subject: [PATCH 0113/1034] Release v4.16717 - seven --- Makefile.defs | 4 ++-- armsrc/Makefile | 2 +- bootrom/Makefile | 2 +- client/CMakeLists.txt | 4 ++-- client/Makefile | 4 ++-- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 18 +++++++++--------- client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/src/proxmark3.c | 2 +- common/default_version_pm3.c | 27 +++++++-------------------- common_arm/Makefile.common | 2 +- 17 files changed, 34 insertions(+), 47 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index 76409a37d..874440a47 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -112,8 +112,8 @@ ifeq ($(DEBUG),1) DEFCFLAGS = -g -O0 -fstrict-aliasing -pipe DEFLDFLAGS = else - DEFCXXFLAGS = -Wall -Werror -O3 -pipe - DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe + DEFCXXFLAGS = -Wall -O3 -pipe + DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe DEFLDFLAGS = endif diff --git a/armsrc/Makefile b/armsrc/Makefile index 5203b0292..20090b678 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -187,7 +187,7 @@ showinfo: # version_pm3.c should be remade on every time fullimage.stage1.elf should be remade version_pm3.c: default_version_pm3.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) .FORCE $(info [-] GEN $@) - $(Q)$(SH) ../tools/mkversion.sh > $@ || $(CP) $< $@ + $(Q)$(CP) $< $@ fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR) $(info [-] GEN $@) diff --git a/bootrom/Makefile b/bootrom/Makefile index cad3e17d1..6085305c6 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -56,7 +56,7 @@ OBJS = $(OBJDIR)/bootrom.s19 # version_pm3.c should be remade on every compilation version_pm3.c: default_version_pm3.c .FORCE $(info [=] GEN $@) - $(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ || $(CP) $< $@ + $(Q)$(CP) $< $@ all: showinfo $(OBJS) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 8759c00f3..0e0b08744 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -365,7 +365,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND sh ${PM3_ROOT}/tools/mkversion.sh > ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) @@ -582,7 +582,7 @@ add_executable(proxmark3 ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) +target_compile_options(proxmark3 PUBLIC -Wall -O3) if (EMBED_READLINE) if (NOT SKIPREADLINE EQUAL 1) add_dependencies(proxmark3 ncurses readline) diff --git a/client/Makefile b/client/Makefile index d44e67011..d108bb7a0 100644 --- a/client/Makefile +++ b/client/Makefile @@ -412,7 +412,7 @@ endif PM3CFLAGS += -DHAVE_SNPRINTF -CXXFLAGS ?= -Wall -Werror -O3 +CXXFLAGS ?= -Wall -O3 CXXFLAGS += $(MYDEFS) $(MYCXXFLAGS) $(MYINCLUDES) PM3CXXFLAGS = $(CXXFLAGS) @@ -912,7 +912,7 @@ src/pm3_pywrap.c: pm3.i # version_pm3.c should be remade on every compilation src/version_pm3.c: default_version_pm3.c .FORCE $(info [=] GEN $@) - $(Q)$(SH) ../tools/mkversion.sh > $@ || $(CP) $< $@ + $(Q)$(CP) $< $@ # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index c946c0682..8c524c170 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -19,7 +19,7 @@ target_link_libraries(pm3rrg_rdv4_amiibo PRIVATE m pm3rrg_rdv4_mbedtls) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_amiibo PRIVATE amiitool diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index fccae33b7..a85cc2374 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -9,5 +9,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index ec545e2a8..468ee4ef2 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -32,7 +32,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -47,7 +47,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -62,7 +62,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -77,7 +77,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -92,7 +92,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -116,7 +116,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM64_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_neon PRIVATE @@ -134,7 +134,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM32_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_neon BEFORE PRIVATE -mfpu=neon) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -155,7 +155,7 @@ add_library(pm3rrg_rdv4_hardnested STATIC hardnested/hardnested_bruteforce.c $ ${SIMD_TARGETS}) -target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested PRIVATE ../../common diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index c91a47047..42c701d5e 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -14,5 +14,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 12870342e..5cf33d724 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -52,5 +52,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 40929e1ea..c726ddeba 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -44,5 +44,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) target_include_directories(pm3rrg_rdv4_mbedtls INTERFACE ../../common/mbedtls) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index d7e3cfd8a..1040730f1 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index 5a6abda25..c74618149 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index d2d6a5b2a..721873066 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 162bc7776..d6e4d0346 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -42,7 +42,7 @@ static int mainret = PM3_ESOFT; #ifndef LIBPM3 #define BANNERMSG1 "" #define BANNERMSG2 " [ :coffee: ]" -#define BANNERMSG3 "" +#define BANNERMSG3 "Release v4.16717 - seven" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common/default_version_pm3.c b/common/default_version_pm3.c index 46eac57c9..016f98e82 100644 --- a/common/default_version_pm3.c +++ b/common/default_version_pm3.c @@ -1,20 +1,5 @@ -//----------------------------------------------------------------------------- -// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// See LICENSE.txt for the text of the license. -//----------------------------------------------------------------------------- #include "common.h" -/* This is the default version_pm3.c file that Makefile.common falls back to if sh is not available */ +/* Generated file, do not edit */ #ifndef ON_DEVICE #define SECTVERSINFO #else @@ -23,8 +8,10 @@ const struct version_information_t SECTVERSINFO g_version_information = { VERSION_INFORMATION_MAGIC, - 1, /* version 1 */ - 0, /* version information not present */ - 2, /* cleanliness couldn't be determined */ - /* Remaining fields: zero */ + 1, + 1, + 1, + "Iceman/master/v4.16717", + "2023-06-26 13:10:45", + "de506fd18" }; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 99f4d9ecd..e40d998a6 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -49,7 +49,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits From c7d004de63a73524103289f24dda73be0b188e95 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 26 Jun 2023 13:10:45 +0200 Subject: [PATCH 0114/1034] Revert "Release v4.16717 - seven" This reverts commit bc18dbd847775a0491c1f919f55f7160a42b95f9. --- Makefile.defs | 4 ++-- armsrc/Makefile | 2 +- bootrom/Makefile | 2 +- client/CMakeLists.txt | 4 ++-- client/Makefile | 4 ++-- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 18 +++++++++--------- client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/src/proxmark3.c | 2 +- common/default_version_pm3.c | 27 ++++++++++++++++++++------- common_arm/Makefile.common | 2 +- 17 files changed, 47 insertions(+), 34 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index 874440a47..76409a37d 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -112,8 +112,8 @@ ifeq ($(DEBUG),1) DEFCFLAGS = -g -O0 -fstrict-aliasing -pipe DEFLDFLAGS = else - DEFCXXFLAGS = -Wall -O3 -pipe - DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe + DEFCXXFLAGS = -Wall -Werror -O3 -pipe + DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe DEFLDFLAGS = endif diff --git a/armsrc/Makefile b/armsrc/Makefile index 20090b678..5203b0292 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -187,7 +187,7 @@ showinfo: # version_pm3.c should be remade on every time fullimage.stage1.elf should be remade version_pm3.c: default_version_pm3.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) .FORCE $(info [-] GEN $@) - $(Q)$(CP) $< $@ + $(Q)$(SH) ../tools/mkversion.sh > $@ || $(CP) $< $@ fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR) $(info [-] GEN $@) diff --git a/bootrom/Makefile b/bootrom/Makefile index 6085305c6..cad3e17d1 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -56,7 +56,7 @@ OBJS = $(OBJDIR)/bootrom.s19 # version_pm3.c should be remade on every compilation version_pm3.c: default_version_pm3.c .FORCE $(info [=] GEN $@) - $(Q)$(CP) $< $@ + $(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ || $(CP) $< $@ all: showinfo $(OBJS) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 0e0b08744..8759c00f3 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -365,7 +365,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND sh ${PM3_ROOT}/tools/mkversion.sh > ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) @@ -582,7 +582,7 @@ add_executable(proxmark3 ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -O3) +target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) if (EMBED_READLINE) if (NOT SKIPREADLINE EQUAL 1) add_dependencies(proxmark3 ncurses readline) diff --git a/client/Makefile b/client/Makefile index d108bb7a0..d44e67011 100644 --- a/client/Makefile +++ b/client/Makefile @@ -412,7 +412,7 @@ endif PM3CFLAGS += -DHAVE_SNPRINTF -CXXFLAGS ?= -Wall -O3 +CXXFLAGS ?= -Wall -Werror -O3 CXXFLAGS += $(MYDEFS) $(MYCXXFLAGS) $(MYINCLUDES) PM3CXXFLAGS = $(CXXFLAGS) @@ -912,7 +912,7 @@ src/pm3_pywrap.c: pm3.i # version_pm3.c should be remade on every compilation src/version_pm3.c: default_version_pm3.c .FORCE $(info [=] GEN $@) - $(Q)$(CP) $< $@ + $(Q)$(SH) ../tools/mkversion.sh > $@ || $(CP) $< $@ # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index 8c524c170..c946c0682 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -19,7 +19,7 @@ target_link_libraries(pm3rrg_rdv4_amiibo PRIVATE m pm3rrg_rdv4_mbedtls) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_amiibo PRIVATE amiitool diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index a85cc2374..fccae33b7 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -9,5 +9,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index 468ee4ef2..ec545e2a8 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -32,7 +32,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -47,7 +47,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -62,7 +62,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -77,7 +77,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -92,7 +92,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -116,7 +116,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM64_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_neon PRIVATE @@ -134,7 +134,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM32_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_neon BEFORE PRIVATE -mfpu=neon) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -155,7 +155,7 @@ add_library(pm3rrg_rdv4_hardnested STATIC hardnested/hardnested_bruteforce.c $ ${SIMD_TARGETS}) -target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested PRIVATE ../../common diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index 42c701d5e..c91a47047 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -14,5 +14,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 5cf33d724..12870342e 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -52,5 +52,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index c726ddeba..40929e1ea 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -44,5 +44,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) target_include_directories(pm3rrg_rdv4_mbedtls INTERFACE ../../common/mbedtls) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index 1040730f1..d7e3cfd8a 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index c74618149..5a6abda25 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index 721873066..d2d6a5b2a 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index d6e4d0346..162bc7776 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -42,7 +42,7 @@ static int mainret = PM3_ESOFT; #ifndef LIBPM3 #define BANNERMSG1 "" #define BANNERMSG2 " [ :coffee: ]" -#define BANNERMSG3 "Release v4.16717 - seven" +#define BANNERMSG3 "" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common/default_version_pm3.c b/common/default_version_pm3.c index 016f98e82..46eac57c9 100644 --- a/common/default_version_pm3.c +++ b/common/default_version_pm3.c @@ -1,5 +1,20 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- #include "common.h" -/* Generated file, do not edit */ +/* This is the default version_pm3.c file that Makefile.common falls back to if sh is not available */ #ifndef ON_DEVICE #define SECTVERSINFO #else @@ -8,10 +23,8 @@ const struct version_information_t SECTVERSINFO g_version_information = { VERSION_INFORMATION_MAGIC, - 1, - 1, - 1, - "Iceman/master/v4.16717", - "2023-06-26 13:10:45", - "de506fd18" + 1, /* version 1 */ + 0, /* version information not present */ + 2, /* cleanliness couldn't be determined */ + /* Remaining fields: zero */ }; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index e40d998a6..99f4d9ecd 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -49,7 +49,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits From f7f1f2e6e78d9626768c4abe133e6fa1b74b7ae6 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 26 Jun 2023 13:11:45 +0200 Subject: [PATCH 0115/1034] update version --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e2fa61ec..47b958b98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac ## [unreleased][unreleased] -## [Seven][2023-06-25] +## [Seven.4.16717][2023-06-25] - Added support for compiling on iOS (@The-SamminAter) - Fixed viewing MFC dump - border char is now white (@iceman1001) - Changed `data diff` - to print filenames in header if it fits (@iceman1001) From adfebd6510688667a612141c74ee461c57c84a06 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 26 Jun 2023 15:01:08 +0200 Subject: [PATCH 0116/1034] text --- armsrc/iso15693.c | 28 ++++++++++++++-------------- client/src/cmdhficlass.c | 5 +++++ client/src/cmdhflist.c | 2 +- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index 703f1288f..16dc3c575 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -1835,20 +1835,20 @@ void SniffIso15693(uint8_t jam_search_len, uint8_t *jam_search_string, bool icla switch_off(); DbpString(""); - DbpString(_CYAN_("Sniff statistics")); - DbpString("================================="); - Dbprintf(" DecodeTag State........%d", dtag.state); - Dbprintf(" DecodeTag byteCnt......%d", dtag.len); - Dbprintf(" DecodeTag posCount.....%d", dtag.posCount); - Dbprintf(" DecodeTagFSK State.....%d", dtagfsk.state); - Dbprintf(" DecodeTagFSK byteCnt...%d", dtagfsk.len); - Dbprintf(" DecodeTagFSK count.....%d", dtagfsk.count); - Dbprintf(" DecodeReader State.....%d", dreader.state); - Dbprintf(" DecodeReader byteCnt...%d", dreader.byteCount); - Dbprintf(" DecodeReader posCount..%d", dreader.posCount); - Dbprintf(" Trace length..........." _YELLOW_("%d"), BigBuf_get_traceLen()); - DbpString(""); - + if (g_dbglevel > DBG_ERROR) { + DbpString(_CYAN_("Sniff statistics")); + DbpString("================================="); + Dbprintf("DecodeTag State........ %d", dtag.state); + Dbprintf("DecodeTag byteCnt...... %d", dtag.len); + Dbprintf("DecodeTag posCount..... %d", dtag.posCount); + Dbprintf("DecodeTagFSK State..... %d", dtagfsk.state); + Dbprintf("DecodeTagFSK byteCnt... %d", dtagfsk.len); + Dbprintf("DecodeTagFSK count..... %d", dtagfsk.count); + Dbprintf("DecodeReader State..... %d", dreader.state); + Dbprintf("DecodeReader byteCnt... %d", dreader.byteCount); + Dbprintf("DecodeReader posCount.. %d", dreader.posCount); + } + Dbprintf("Trace length........... " _YELLOW_("%d"), BigBuf_get_traceLen()); } // Initialize Proxmark3 as ISO15693 reader diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index ba6d984ad..a48bbb98e 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -683,8 +683,13 @@ static int CmdHFiClassSniff(const char *Cmd) { WaitForResponse(CMD_HF_ICLASS_SNIFF, &resp); + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(HINT, "Try `" _YELLOW_("hf iclass list") "` to view captured tracelog"); PrintAndLogEx(HINT, "Try `" _YELLOW_("trace save -f hf_iclass_mytrace") "` to save tracelog for later analysing"); + if (jam_epurse_update) { + PrintAndLogEx(HINT, "Verify if the jam worked by comparing value in trace and block 2"); + } + PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index b38d7fea4..5ddd3f1fa 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -499,7 +499,7 @@ void annotateIclass(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool uint8_t key[8]; if (check_known_default(csn, epurse, rmac, tmac, key)) { - snprintf(exp, size, "CHECK ( %s )", sprint_hex_inrow(key, 8)); + snprintf(exp, size, "CHECK ( " _GREEN_("%s") " )", sprint_hex_inrow(key, 8)); } else { snprintf(exp, size, "CHECK"); } From f36ec4645504dae317d152b4b4183099a0c67c6f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 26 Jun 2023 15:01:44 +0200 Subject: [PATCH 0117/1034] minor rename --- armsrc/mifareutil.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c index 487c71706..b17ac19bc 100644 --- a/armsrc/mifareutil.c +++ b/armsrc/mifareutil.c @@ -730,8 +730,8 @@ int emlSetValBl(uint32_t blReg, uint8_t blBlock, int blockNum) { uint64_t emlGetKey(int sectorNum, int keyType) { uint8_t key[6] = {0x00}; - uint8_t *emCARD = BigBuf_get_EM_addr(); - memcpy(key, emCARD + 16 * (FirstBlockOfSector(sectorNum) + NumBlocksPerSector(sectorNum) - 1) + keyType * 10, 6); + uint8_t *em = BigBuf_get_EM_addr(); + memcpy(key, em + 16 * (FirstBlockOfSector(sectorNum) + NumBlocksPerSector(sectorNum) - 1) + keyType * 10, 6); return bytes_to_num(key, 6); } From 9db65186e3394c3b9d666de59021dee2fa01070a Mon Sep 17 00:00:00 2001 From: Self Not Found Date: Tue, 27 Jun 2023 11:28:11 +0800 Subject: [PATCH 0118/1034] Fix note for hf fudan wrbl --- client/src/cmdhffudan.c | 2 +- doc/commands.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhffudan.c b/client/src/cmdhffudan.c index 502425f83..38ef8eef5 100644 --- a/client/src/cmdhffudan.c +++ b/client/src/cmdhffudan.c @@ -355,7 +355,7 @@ static int CmdHFFudanWrBl(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf fudan wrbl", "Write fudan block with 4 hex bytes of data\n", - "hf mf wrbl --blk 1 -k FFFFFFFFFFFF -d 01020304" + "hf fudan wrbl --blk 1 -k FFFFFFFFFFFF -d 01020304" ); void *argtable[] = { arg_param_begin, diff --git a/doc/commands.json b/doc/commands.json index e1a0a020b..8d4185c52 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -2867,7 +2867,7 @@ "command": "hf fudan wrbl", "description": "Write fudan block with 4 hex bytes of data", "notes": [ - "hf mf wrbl --blk 1 -k FFFFFFFFFFFF -d 01020304" + "hf fudan wrbl --blk 1 -k FFFFFFFFFFFF -d 01020304" ], "offline": false, "options": [ From 66b3ebabb96499f52b5ffe19b091c0450a08cb8b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 27 Jun 2023 15:24:25 +0200 Subject: [PATCH 0119/1034] fix regex for extracting the description and notes.\n description now must start with a newline and go until it see the word usage:. \n\n notes now go until it sees either === or --- or \n\n\n which all would be indication that the notes section ended. --- client/pyscripts/pm3_help2json.py | 8 +- doc/commands.json | 1038 ++++++++--------------------- 2 files changed, 287 insertions(+), 759 deletions(-) diff --git a/client/pyscripts/pm3_help2json.py b/client/pyscripts/pm3_help2json.py index 8099b5d7c..34faedec5 100755 --- a/client/pyscripts/pm3_help2json.py +++ b/client/pyscripts/pm3_help2json.py @@ -62,21 +62,19 @@ def build_arg_parser(): def build_help_regex(): - """The regex uses to parse the full text output of help data from the pm3 client.""" - # Reads the divider followed by the command itself re_command = r'-{87}\n(?P.+)\n' # Reads if the command is available offline re_offline = r'available offline: (?Pyes|no)\n+' # Reads the description lines - re_description = r'(?P(?:.+\n)+)\n+' + re_description = r'(?P\n[\s\S]*?(?=usage:))' # Reads the usage string re_usage = r'(?:usage:\n(?P(?:.+\n)+)\n+)?' # Reads the options and there individual descriptions re_options = r'(?:options:\n(?P(?:.+\n)+)\n+)?' # Reads the notes and examples - re_notes = r'(?:examples\/notes:\n(?P(?:.+\n)+)\n+)?' + re_notes = r'(?:examples\/notes:\n(?P[\s\S]*?(?=(===|---|\n\n))))' # Combine them into a single regex object - re_full = re.compile(re_command+re_offline+re_description+re_usage+re_options+re_notes, re.MULTILINE); + re_full = re.compile(re_command+re_offline+re_description+re_usage+re_options+re_notes, re.MULTILINE) return re_full diff --git a/doc/commands.json b/doc/commands.json index 8d4185c52..6523703da 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -95,14 +95,6 @@ ], "usage": "analyse freq [-h] [-F ] [-L ] [-C ]" }, - "analyse help": { - "command": "analyse help", - "description": "help This help lcr Generate final byte for XOR LRC crc Stub method for CRC evaluations chksum Checksum with adding, masking and one's complement dates Look for datestamps in a given array of bytes lfsr LFSR tests a num bits test nuid create NUID from 7byte UID demodbuff Load binary string to DemodBuffer freq Calc wave lengths foo muxer units convert ETU <> US <> SSP_CLK (3.39MHz)", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "analyse lcr": { "command": "analyse lcr", "description": "Specifying the bytes of a UID with a known LRC will find the last byte value needed to generate that LRC with a rolling XOR. All bytes should be specified in HEX.", @@ -403,14 +395,6 @@ ], "usage": "data grid [-h] [-x ] [-y ]" }, - "data help": { - "command": "data help", - "description": "help This help ----------- ------------------------- Modulation------------------------- biphaserawdecode Biphase decode bin stream in DemodBuffer detectclock Detect ASK, FSK, NRZ, PSK clock rate of wave in GraphBuffer fsktonrz Convert fsk2 to nrz wave for alternate fsk demodulating (for weak fsk) manrawdecode Manchester decode binary stream in DemodBuffer modulation Identify LF signal for clock and modulation rawdemod Demodulate the data in the GraphBuffer and output binary ----------- ------------------------- Graph------------------------- askedgedetect Adjust Graph for manual ASK demod using the length of sample differences to detect the edge of a wave autocorr Autocorrelation over window dirthreshold Max rising higher up-thres/ Min falling lower down-thres, keep rest as prev. decimate Decimate samples undecimate Un-decimate samples hide Hide graph window hpf Remove DC offset from trace iir Apply IIR buttersworth filter on plot data grid overlay grid on graph window ltrim Trim samples from left of trace mtrim Trim out samples from the specified start to the specified stop norm Normalize max/min to +/-128 plot Show graph window rtrim Trim samples from right of trace setgraphmarkers Set blue and orange marker in graph window shiftgraphzero Shift 0 for Graphed wave + or - shift value timescale Set a timescale to get a differential reading between the yellow and purple markers as time duration zerocrossings Count time between zero-crossings convertbitstream Convert GraphBuffer's 0/1 values to 127 / -127 getbitstream Convert GraphBuffer's >=1 values to 1 and <1 to 0 ----------- ------------------------- General------------------------- asn1 asn1 decoder bin2hex Converts binary to hexadecimal clear Clears bigbuf on deviceside and graph window diff diff of input files hex2bin Converts hexadecimal to binary load Load contents of file into graph window num Converts dec/hex/bin print Print the data in the DemodBuffer save Save signal trace data (from graph window) setdebugmode Set Debugging Level on client side", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "data hex2bin": { "command": "data hex2bin", "description": "This function converts hexadecimal to binary. It will ignore all non-hexadecimal characters but stop reading on whitespace", @@ -853,14 +837,6 @@ ], "usage": "emv gpo [-hkpmatw] []..." }, - "emv help": { - "command": "emv help", - "description": "help This help test Crypto logic test list List ISO7816 history", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "emv intauth": { "command": "emv intauth", "description": "Generate Internal Authenticate command. Usually needs 4-byte random number. It returns data in TLV format . Needs a EMV applet to be selected and GPO to be executed.", @@ -1046,14 +1022,6 @@ ], "usage": "quit [-h]" }, - "help": { - "command": "help", - "description": "help Use ` help` for details of a command prefs { Edit client/device preferences... } -------- ----------------------- Technology ----------------------- analyse { Analyse utils... } data { Plot window / data buffer manipulation... } emv { EMV ISO-14443 / ISO-7816... } hf { High frequency commands... } hw { Hardware commands... } lf { Low frequency commands... } nfc { NFC commands... } piv { PIV commands... } reveng { CRC calculations from RevEng software... } smart { Smart card ISO-7816 commands... } script { Scripting commands... } trace { Trace manipulation... } wiegand { Wiegand format manipulation... } -------- ----------------------- General ----------------------- clear Clear screen hints Turn hints on / off msleep Add a pause in milliseconds rem Add a text line in log file quit exit Exit program", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf 14a antifuzz": { "command": "hf 14a antifuzz", "description": "Tries to fuzz the ISO14443a anticollision phase", @@ -1130,21 +1098,18 @@ ], "usage": "hf 14a chaining [-h10]" }, - "hf 14a config": { - "command": "hf 14a config", - "description": "--------------------------------------------------------------------------------------- hf 14a cuids available offline: no", - "notes": [], + "hf 14a cuids": { + "command": "hf 14a cuids", + "description": "Collect n>0 ISO14443-a UIDs in one go", + "notes": [ + "hf 14a cuids -n 5 -> Collect 5 UIDs" + ], "offline": false, - "options": [], - "usage": "" - }, - "hf 14a help": { - "command": "hf 14a help", - "description": "----------- ----------------------- General ----------------------- help This help list List ISO 14443-a history", - "notes": [], - "offline": true, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "-n, --num Number of UIDs to collect" + ], + "usage": "hf 14a cuids [-h] [-n ]" }, "hf 14a info": { "command": "hf 14a info", @@ -1358,14 +1323,6 @@ ], "usage": "hf 14b dump [-h] [-f ] [--ns]" }, - "hf 14b help": { - "command": "hf 14b help", - "description": "help This help list List ISO-14443-B history view Display content from tag dump file", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf 14b info": { "command": "hf 14b info", "description": "Tag information for ISO/IEC 14443 type B based tags", @@ -1627,14 +1584,6 @@ ], "usage": "hf 15 findafi [-h]" }, - "hf 15 help": { - "command": "hf 15 help", - "description": "----------- --------------------- General --------------------- help This help list List ISO-15693 history demod Demodulate ISO-15693 from tag", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf 15 info": { "command": "hf 15 info", "description": "Uses the optional command `get_systeminfo` 0x2B to try and extract information", @@ -2125,14 +2074,6 @@ ], "usage": "hf cipurse formatall [-hav] [-n ] [-k ] [--sreq ] [--sresp ] [--no-auth]" }, - "hf cipurse help": { - "command": "hf cipurse help", - "description": "help This help. test Regression tests", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf cipurse info": { "command": "hf cipurse info", "description": "Get info from CIPURSE tags", @@ -2304,14 +2245,6 @@ ], "usage": "hf emrtd dump [-h] [-n ] [-d ] [-e ] [-m <[0-9A-Z<]>] [--dir ]" }, - "hf emrtd help": { - "command": "hf emrtd help", - "description": "help This help info Display info about an eMRTD list List ISO 14443A/7816 history", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf emrtd info": { "command": "hf emrtd info", "description": "Display info about an eMRTD", @@ -2369,14 +2302,6 @@ ], "usage": "hf epa cnonces [-h] --size --num -d " }, - "hf epa help": { - "command": "hf epa help", - "description": "help This help", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf epa replay": { "command": "hf epa replay", "description": "Perform PACE protocol by replaying given APDUs", @@ -2448,14 +2373,6 @@ ], "usage": "hf felica auth2 [-hv] [-i ] [-c ] [-k ]" }, - "hf felica help": { - "command": "hf felica help", - "description": "help This help ----------- ----------------------- General ----------------------- list List ISO 18092/FeliCa history ----------- ----------------------- FeliCa Standard ----------------------- ----------- ----------------------- FeliCa Light -----------------------", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf felica info": { "command": "hf felica info", "description": "Reader for FeliCa based tags", @@ -2536,11 +2453,25 @@ }, "hf felica rdbl": { "command": "hf felica rdbl", - "description": "Use this command to read block data from authentication-not-required Service.", - "notes": [], + "description": "Use this command to read block data from authentication-not-required Service. - Mode shall be Mode0. - Successful == block data - Unsuccessful == Status Flag1 and Flag2", + "notes": [ + "hf felica rdbl --sn 01 --scl 8B00 --bn 01 --ble 8000", + "hf felica rdbl --sn 01 --scl 4B18 --bn 01 --ble 8000 -b", + "hf felica rdbl -i 01100910c11bc407 --sn 01 --scl 8B00 --bn 01 --ble 8000" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "-b get all block list elements 00 -> FF", + "-i set custom IDm", + "-l, --long use 3 byte block list element block number", + "--sn number of service", + "--scl service code list", + "--bn number of block", + "--ble block list element (def 2|3 bytes)", + "-v, --verbose verbose output" + ], + "usage": "hf felica rdbl [-hblv] [-i ] [--sn ] [--scl ] [--bn ] [--ble ]" }, "hf felica reader": { "command": "hf felica reader", @@ -2664,11 +2595,23 @@ }, "hf felica wrbl": { "command": "hf felica wrbl", - "description": "Use this command to write block data to authentication-not-required Service.", - "notes": [], + "description": "Use this command to write block data to authentication-not-required Service. - Mode shall be Mode0. - Un-/Ssuccessful == Status Flag1 and Flag2", + "notes": [ + "hf felica wrbl --sn 01 --scl CB10 --bn 01 --ble 8001 -d 0102030405060708090A0B0C0D0E0F10", + "hf felica wrbl -i 01100910c11bc407 --sn 01 --scl CB10 --bn 01 --ble 8001 -d 0102030405060708090A0B0C0D0E0F10" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "-d, --data data, 16 hex bytes", + "-i set custom IDm", + "--sn number of service", + "--scl service code list", + "--bn number of block", + "--ble block list element (def 2|3 bytes)", + "-v, --verbose verbose output" + ], + "usage": "hf felica wrbl [-hv] [-d ] [-i ] [--sn ] [--scl ] [--bn ] [--ble ]" }, "hf fido assert": { "command": "hf fido assert", @@ -2716,14 +2659,6 @@ ], "usage": "hf fido auth [-havuc] default mode: [-f ] [-k ] [--kh ] [--cp ] [--ap ] [--cpx ] [--apx ]" }, - "hf fido help": { - "command": "hf fido help", - "description": "help This help. list List ISO 14443A history", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf fido info": { "command": "hf fido info", "description": "Get info from Fido tags", @@ -2811,14 +2746,6 @@ ], "usage": "hf fudan dump [-h] [-f ]" }, - "hf fudan help": { - "command": "hf fudan help", - "description": "help This help view Display content from tag dump file", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf fudan rdbl": { "command": "hf fudan rdbl", "description": "Read fudan block", @@ -2953,14 +2880,6 @@ ], "usage": "hf gallagher diversify [-h] --aid [--keynum ] [--uid ] [--sitekey ] [--apdu]" }, - "hf gallagher help": { - "command": "hf gallagher help", - "description": "help This help diversifykey Diversify Gallagher key decode Decode Gallagher credential block", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf gallagher reader": { "command": "hf gallagher reader", "description": "Read a Gallagher DESFire tag from the Card Application Directory, CAD Specify site key is required if using non-default key", @@ -2979,14 +2898,6 @@ ], "usage": "hf gallagher reader [-h@v] [--aid ] [--sitekey ] [--apdu]" }, - "hf help": { - "command": "hf help", - "description": "-------- ----------------------- High Frequency ----------------------- 14a { ISO14443A RFIDs... } 14b { ISO14443B RFIDs... } 15 { ISO15693 RFIDs... } cipurse { Cipurse transport Cards... } epa { German Identification Card... } emrtd { Machine Readable Travel Document... } felica { ISO18092 / FeliCa RFIDs... } fido { FIDO and FIDO2 authenticators... } fudan { Fudan RFIDs... } gallagher { Gallagher DESFire RFIDs... } ksx6924 { KS X 6924 (T-Money, Snapper+) RFIDs } jooki { Jooki RFIDs... } iclass { ICLASS RFIDs... } legic { LEGIC RFIDs... } lto { LTO Cartridge Memory RFIDs... } mf { MIFARE RFIDs... } mfp { MIFARE Plus RFIDs... } mfu { MIFARE Ultralight RFIDs... } mfdes { MIFARE Desfire RFIDs... } ntag424 { NXP NTAG 4242 DNA RFIDs... } seos { SEOS RFIDs... } st25ta { ST25TA RFIDs... } tesla { TESLA Cards... } texkom { Texkom RFIDs... } thinfilm { Thinfilm RFIDs... } topaz { TOPAZ (NFC Type 1) RFIDs... } xerox { Fuji/Xerox cartridge RFIDs... } waveshare { Waveshare NFC ePaper... } ----------- --------------------- General --------------------- help This help list List protocol data in trace buffer search Search for known HF tags", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf iclass calcnewkey": { "command": "hf iclass calcnewkey", "description": "Calculate new keys for updating (blocks 3 & 4)", @@ -3048,11 +2959,23 @@ }, "hf iclass decrypt": { "command": "hf iclass decrypt", - "description": "3DES decrypt data This is a naive implementation, it tries to decrypt every block after block 6. Correct behaviour would be to decrypt only the application areas where the key is valid, which is defined by the configuration block.", - "notes": [], + "description": "3DES decrypt data This is a naive implementation, it tries to decrypt every block after block 6. Correct behaviour would be to decrypt only the application areas where the key is valid, which is defined by the configuration block. OBS! In order to use this function, the file `iclass_decryptionkey.bin` must reside in the resources directory. The file should be 16 bytes binary data or... make sure your cardhelper is placed in the sim module", + "notes": [ + "hf iclass decrypt -f hf-iclass-AA162D30F8FF12F1-dump.bin", + "hf iclass decrypt -f hf-iclass-AA162D30F8FF12F1-dump.bin -k 000102030405060708090a0b0c0d0e0f", + "hf iclass decrypt -d 1122334455667788 -k 000102030405060708090a0b0c0d0e0f" + ], "offline": true, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "-f, --file filename of dump file (bin/eml/json)", + "-d, --data 3DES encrypted data", + "-k, --key 3DES transport key", + "-v, --verbose verbose output", + "--d6 decode as block 6", + "-z, --dense dense dump output style" + ], + "usage": "hf iclass decrypt [-hvz] [-f ] [-d ] [-k ] [--d6]" }, "hf iclass dump": { "command": "hf iclass dump", @@ -3170,14 +3093,6 @@ ], "usage": "hf iclass eview [-hvz] [-s <256|2048>]" }, - "hf iclass help": { - "command": "hf iclass help", - "description": "----------- --------------------- operations --------------------- help This help info Tag information list List iclass history ----------- --------------------- recovery --------------------- loclass Use loclass to perform bruteforce reader attack lookup Uses authentication trace to check for key in dictionary file ----------- --------------------- simulation --------------------- ----------- --------------------- utils --------------------- configcard Reader configuration card calcnewkey Calc diversified keys (blocks 3 & 4) to write new keys encode Encode binary wiegand to block 7 encrypt Encrypt given block data decrypt Decrypt given block data or tag dump file managekeys Manage keys to use with iclass commands permutekey Permute function from 'heart of darkness' paper view Display content from tag dump file", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf iclass info": { "command": "hf iclass info", "description": "Act as a iCLASS reader. Reads / fingerprints a iCLASS tag.", @@ -3483,14 +3398,6 @@ ], "usage": "hf jooki encode [-hrtv] [-u ] [--dragon] [--fox] [--ghost] [--knight] [--whale] [--blackdragon] [--blackfox] [--blackknight] [--blackwhale] [--whitedragon] [--whitefox] [--whiteknight] [--whitewhale] [--tid ] [--fid ]" }, - "hf jooki help": { - "command": "hf jooki help", - "description": "help This help decode Decode Jooki token encode Encode Jooki token", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf jooki sim": { "command": "hf jooki sim", "description": "Simulate a Jooki token. Either `hf mfu eload` before or use `-d` param", @@ -3519,14 +3426,6 @@ ], "usage": "hf ksx6924 balance [-hka]" }, - "hf ksx6924 help": { - "command": "hf ksx6924 help", - "description": "help This help", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf ksx6924 info": { "command": "hf ksx6924 info", "description": "Get info about a KS X 6924 transit card. This application is used by T-Money (South Korea) and Snapper+ (Wellington, New Zealand).", @@ -3676,14 +3575,6 @@ ], "usage": "hf legic eview [-h] [--22] [--256] [--1024]" }, - "hf legic help": { - "command": "hf legic help", - "description": "----------- --------------------- operations --------------------- help This help list List LEGIC history ----------- --------------------- simulation --------------------- ----------- --------------------- utils --------------------- crc Calculate Legic CRC over given bytes view Display deobfuscated and decoded content from tag dump file", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf legic info": { "command": "hf legic info", "description": "Gets information from a LEGIC Prime tag like systemarea, user areas, etc", @@ -3852,14 +3743,6 @@ ], "usage": "hf lto dump [-h] [-f ]" }, - "hf lto help": { - "command": "hf lto help", - "description": "help This help list List LTO-CM history", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf lto info": { "command": "hf lto info", "description": "Get info from LTO tags", @@ -4450,19 +4333,32 @@ }, "hf mf gen3blk": { "command": "hf mf gen3blk", - "description": "Overwrite full manufacturer block for magic Gen3 card - You can specify part of manufacturer block as 4/7-bytes for UID change only", - "notes": [], + "description": "Overwrite full manufacturer block for magic Gen3 card - You can specify part of manufacturer block as 4/7-bytes for UID change only NOTE: BCC, SAK, ATQA will be calculated automatically", + "notes": [ + "hf mf gen3blk -> print current data", + "hf mf gen3blk -d 01020304 -> set 4 byte uid", + "hf mf gen3blk -d 01020304050607 -> set 7 byte uid", + "hf mf gen3blk -d 01020304FFFFFFFF0102030405060708" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "-d, --data manufacturer block data up to 16 hex bytes" + ], + "usage": "hf mf gen3blk [-h] [-d ]" }, "hf mf gen3freeze": { "command": "hf mf gen3freeze", - "description": "Perma lock further UID changes. No more UID changes available after operation completed", - "notes": [], + "description": "Perma lock further UID changes. No more UID changes available after operation completed Note: operation is ! irreversible !", + "notes": [ + "hf mf gen3freeze -y" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "-y, --yes confirm UID lock operation" + ], + "usage": "hf mf gen3freeze -y[h]" }, "hf mf gen3uid": { "command": "hf mf gen3uid", @@ -4615,14 +4511,6 @@ ], "usage": "hf mf hardnested [-habrstw] [-k ] [--blk ] [--tblk ] [--ta] [--tb] [--tk ] [-u ] [-f ] [--in] [--im] [--is] [--ia] [--i2] [--i5]" }, - "hf mf help": { - "command": "hf mf help", - "description": "help This help list List MIFARE history hardnested Nested attack for hardened MIFARE Classic cards decrypt [nt] [ar_enc] [at_enc] [data] - to decrypt sniff or trace acl Decode and print MIFARE Classic access rights bytes mad Checks and prints MAD value Value blocks view Display content from tag dump file", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf mf list": { "command": "hf mf list", "description": "Alias of `trace list -t mf` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", @@ -4680,11 +4568,22 @@ }, "hf mf ndefformat": { "command": "hf mf ndefformat", - "description": "format MIFARE Classic Tag as a NFC tag with Data Exchange Format (NDEF) If no given, UID will be used as filename. It will try default keys and MAD keys to detect if tag is already formatted in order to write.", - "notes": [], + "description": "format MIFARE Classic Tag as a NFC tag with Data Exchange Format (NDEF) If no given, UID will be used as filename. It will try default keys and MAD keys to detect if tag is already formatted in order to write. If not, it will try finding a key file based on your UID. ie, if you ran autopwn before", + "notes": [ + "hf mf ndefformat", + "hf mf ndefformat --1k -> MIFARE Classic 1k", + "hf mf ndefformat --keys hf-mf-01020304-key.bin -> MIFARE 1k with keys from specified file" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "-k, --keys filename of keys", + "--mini MIFARE Classic Mini / S20", + "--1k MIFARE Classic 1k / S50 (def)", + "--2k MIFARE Classic/Plus 2k", + "--4k MIFARE Classic 4k / S70" + ], + "usage": "hf mf ndefformat [-h] [-k ] [--mini] [--1k] [--2k] [--4k]" }, "hf mf ndefread": { "command": "hf mf ndefread", @@ -4820,11 +4719,27 @@ }, "hf mf restore": { "command": "hf mf restore", - "description": "Restore MIFARE Classic dump file to tag.", - "notes": [], + "description": "Restore MIFARE Classic dump file to tag. The key file and dump file will program the card sector trailers. By default we authenticate to card with key 0xFFFFFFFFFFFF. If access rights in dump file is all zeros, it will be replaced with default values `--uid` param is used for filename templates `hf-mf--dump.bin` and `hf-mf--key.bin. if not specified, it will read the card uid instead. `--ka` param you can indicate that the key file should be used for authentication instead. if so we also try both B/A keys `--force` param is used to override warnings and allow bad ACL block writes. if not specified, it will skip blocks with bad ACL.", + "notes": [ + "hf mf restore", + "hf mf restore --1k --uid 04010203", + "hf mf restore --1k --uid 04010203 -k hf-mf-AABBCCDD-key.bin", + "hf mf restore --4k" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "--mini MIFARE Classic Mini / S20", + "--1k MIFARE Classic 1k / S50 (def)", + "--2k MIFARE Classic/Plus 2k", + "--4k MIFARE Classic 4k / S70", + "-u, --uid uid, (4|7|10 hex bytes)", + "-f, --file specify dump filename (bin/eml/json)", + "-k, --kfn key filename", + "--ka use specified keyfile to authenticate", + "--force override warnings" + ], + "usage": "hf mf restore [-h] [--mini] [--1k] [--2k] [--4k] [-u ] [-f ] [-k ] [--ka] [--force]" }, "hf mf setmod": { "command": "hf mf setmod", @@ -5796,14 +5711,6 @@ ], "usage": "hf mfdes getuid [-hav] [-n ] [-t ] [-k ] [--kdf ] [-i ] [-m ] [-c ] [--schann ] [--aid ] [--isoid ]" }, - "hf mfdes help": { - "command": "hf mfdes help", - "description": "help This help list List DESFire (ISO 14443A) history test Regression crypto tests", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf mfdes info": { "command": "hf mfdes info", "description": "Get info from MIFARE DESfire tags", @@ -6202,14 +6109,6 @@ ], "usage": "hf mfp dump [-hv] [-f ] [-k ] [--ns]" }, - "hf mfp help": { - "command": "hf mfp help", - "description": "help This help list List MIFARE Plus history", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf mfp info": { "command": "hf mfp info", "description": "Get info from MIFARE Plus tags", @@ -6279,11 +6178,17 @@ }, "hf mfp ndefformat": { "command": "hf mfp ndefformat", - "description": "format MIFARE Plus Tag as a NFC tag with Data Exchange Format (NDEF) If no given, UID will be used as filename. It will try default keys and MAD keys to detect if tag is already formatted in order to write.", - "notes": [], + "description": "format MIFARE Plus Tag as a NFC tag with Data Exchange Format (NDEF) If no given, UID will be used as filename. It will try default keys and MAD keys to detect if tag is already formatted in order to write. If not, it will try finding a key file based on your UID. ie, if you ran autopwn before", + "notes": [ + "hf mfp ndefformat", + "hf mfp ndefformat --keys hf-mf-01020304-key.bin -> with keys from specified file" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "-k, --keys filename of keys" + ], + "usage": "hf mfp ndefformat [-h] [-k ]" }, "hf mfp ndefread": { "command": "hf mfp ndefread", @@ -6477,14 +6382,6 @@ ], "usage": "hf mfu eview [-h] [-e ]" }, - "hf mfu help": { - "command": "hf mfu help", - "description": "help This help keygen Generate 3DES MIFARE diversified keys pwdgen Generate pwd from known algos view Display content from tag dump file", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf mfu info": { "command": "hf mfu info", "description": "Get info about MIFARE Ultralight Family styled tag. Sometimes the tags are locked down, and you may need a key to be able to read the information", @@ -6708,14 +6605,6 @@ ], "usage": "hf mfu wrbl [-hl] [-k ] -b -d [--force]" }, - "hf ntag424 help": { - "command": "hf ntag424 help", - "description": "help This help view Display content from tag dump file", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf ntag424 info": { "command": "hf ntag424 info", "description": "Get info about NXP NTAG424 DNA Family styled tag.", @@ -6780,14 +6669,6 @@ ], "usage": "hf search [-hv]" }, - "hf seos help": { - "command": "hf seos help", - "description": "help This help list List SEOS history", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf seos info": { "command": "hf seos info", "description": "Get info from SEOS tags", @@ -6838,14 +6719,6 @@ ], "usage": "hf sniff [-h] [--sp ] [--st ] [--smode [none|drop|min|max|avg]] [--sratio ]" }, - "hf st25ta help": { - "command": "hf st25ta help", - "description": "help This help list List ISO 14443A/7816 history ndefread read NDEF file on tag", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf st25ta info": { "command": "hf st25ta info", "description": "Get info about ST25TA tag", @@ -6943,14 +6816,6 @@ ], "usage": "hf st25ta sim [-h] -u " }, - "hf tesla help": { - "command": "hf tesla help", - "description": "help This help list List ISO 14443A/7816 history", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf tesla info": { "command": "hf tesla info", "description": "Get info about TESLA Key tag", @@ -6984,14 +6849,6 @@ ], "usage": "hf tesla list [-h1crux] [--frame] [-f ]" }, - "hf texkom help": { - "command": "hf texkom help", - "description": "help This help", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf texkom reader": { "command": "hf texkom reader", "description": "Read a texkom tag", @@ -7029,14 +6886,6 @@ ], "usage": "hf texkom sim [-hvt] [--raw ] [--id ] [--timeout ]" }, - "hf thinfilm help": { - "command": "hf thinfilm help", - "description": "help This help list List NFC Barcode / Thinfilm history - not correct", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf thinfilm info": { "command": "hf thinfilm info", "description": "Get info from Thinfilm tags", @@ -7098,14 +6947,6 @@ ], "usage": "hf topaz dump [-h] [-f ] [--ns]" }, - "hf topaz help": { - "command": "hf topaz help", - "description": "help This help list List Topaz history view Display content from tag dump file", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf topaz info": { "command": "hf topaz info", "description": "Get info from Topaz tags", @@ -7250,14 +7091,6 @@ ], "usage": "hf tune [-h] [-n ] [--bar] [--mix] [--value]" }, - "hf waveshare help": { - "command": "hf waveshare help", - "description": "help This help", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf waveshare loadbmp": { "command": "hf waveshare loadbmp", "description": "Load BMP file to Waveshare NFC ePaper.", @@ -7294,14 +7127,6 @@ ], "usage": "hf xerox dump [-hd] [-f ]" }, - "hf xerox help": { - "command": "hf xerox help", - "description": "help This help", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hf xerox info": { "command": "hf xerox info", "description": "Tag information for ISO/IEC 14443 type B / XEROX based tags", @@ -7416,14 +7241,6 @@ ], "usage": "hw fpgaoff [-h]" }, - "hw help": { - "command": "hw help", - "description": "------------- ----------------------- Hardware ----------------------- help This help connect Connect Proxmark3 to serial port version Show version information about the client and the connected Proxmark3, if any", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "hw lcd": { "command": "hw lcd", "description": "Send command/data to LCD", @@ -7649,14 +7466,6 @@ ], "usage": "lf awid demod [-h]" }, - "lf awid help": { - "command": "lf awid help", - "description": "help this help demod demodulate an AWID FSK tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf awid reader": { "command": "lf awid reader", "description": "read a AWID Prox tag", @@ -7725,11 +7534,29 @@ }, "lf config": { "command": "lf config", - "description": "Get/Set config for LF sampling, bit/sample, decimation, frequency These changes are temporary, will be reset after a power cycle.", - "notes": [], + "description": "Get/Set config for LF sampling, bit/sample, decimation, frequency These changes are temporary, will be reset after a power cycle. - use `lf read` performs a read (active field) - use `lf sniff` performs a sniff (no active field)", + "notes": [ + "lf config -> shows current config", + "lf config -b 8 --125 -> samples at 125 kHz, 8 bps", + "lf config -b 4 --134 --dec 3 -> samples at 134 kHz, averages three samples into one, stored with a resolution of 4 bits per sample", + "lf config --trig 20 -s 10000 -> trigger sampling when above 20, skip 10 000 first samples after triggered", + "lf config --reset -> reset back to default values" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "--125 125 kHz frequency", + "--134 134 kHz frequency", + "-a, --avg <0|1> averaging - if set, will average the stored sample value when decimating (default 1)", + "-b, --bps <1-8> sets resolution of bits per sample (default 8)", + "--dec <1-8> sets decimation. A value of N saves only 1 in N samples (default 1)", + "--divisor <19-255> Manually set freq divisor. 88 -> 134 kHz, 95 -> 125 kHz", + "-f, --freq <47-600> manually set frequency in kHz", + "-r, --reset reset values to defaults", + "-s, --skip sets a number of samples to skip before capture (default 0)", + "-t, --trig <0-128> sets trigger threshold. 0 means no threshold" + ], + "usage": "lf config [-hr] [--125] [--134] [-a <0|1>] [-b <1-8>] [--dec <1-8>] [--divisor <19-255>] [-f <47-600>] [-s ] [-t <0-128>]" }, "lf cotag demod": { "command": "lf cotag demod", @@ -7743,14 +7570,6 @@ ], "usage": "lf cotag demod [-h]" }, - "lf cotag help": { - "command": "lf cotag help", - "description": "help This help demod demodulate an COTAG tag", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf cotag reader": { "command": "lf cotag reader", "description": "read a COTAG tag, the current support for COTAG is limited.", @@ -7795,14 +7614,6 @@ ], "usage": "lf destron demod [-h]" }, - "lf destron help": { - "command": "lf destron help", - "description": "help This help demod demodulate an Destron tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf destron reader": { "command": "lf destron reader", "description": "read a Destron tag", @@ -7886,14 +7697,6 @@ ], "usage": "lf em 410x demod [-hia] [--clk ] [--err ] [--len ]" }, - "lf em 410x help": { - "command": "lf em 410x help", - "description": "help This help demod demodulate a EM410x tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf em 410x reader": { "command": "lf em 410x reader", "description": "read EM 410x tag", @@ -8020,14 +7823,6 @@ ], "usage": "lf em 4x05 dump [-h] [-p ] [-f ]" }, - "lf em 4x05 help": { - "command": "lf em 4x05 help", - "description": "help This help demod demodulate a EM4x05/EM4x69 tag from the GraphBuffer sniff Attempt to recover em4x05 commands from sample buffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf em 4x05 info": { "command": "lf em 4x05 info", "description": "Tag information EM4205/4305/4469//4569 tags. Tag must be on antenna.", @@ -8217,14 +8012,6 @@ ], "usage": "lf em 4x50 eview [-h]" }, - "lf em 4x50 help": { - "command": "lf em 4x50 help", - "description": "help This help ----------- --------------------- operations --------------------- ----------- --------------------- simulation ---------------------", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf em 4x50 info": { "command": "lf em 4x50 info", "description": "Tag information EM4x50.", @@ -8390,14 +8177,6 @@ ], "usage": "lf em 4x70 brute [-h] [--par] -b --rnd --frn [-s ]" }, - "lf em 4x70 help": { - "command": "lf em 4x70 help", - "description": "help This help", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf em 4x70 info": { "command": "lf em 4x70 info", "description": "Tag Information EM4x70 Tag variants include ID48 automotive transponder. ID48 does not use command parity (default). V4070 and EM4170 do require parity bit.", @@ -8472,14 +8251,6 @@ ], "usage": "lf em 4x70 writepin [-h] [--par] -p " }, - "lf em help": { - "command": "lf em help", - "description": "help This help 410x { EM 4102 commands... } 4x05 { EM 4205 / 4305 / 4369 / 4469 commands... } 4x50 { EM 4350 / 4450 commands... } 4x70 { EM 4070 / 4170 commands... }", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf fdxb clone": { "command": "lf fdxb clone", "description": "clone a FDX-B tag to a T55x7, Q5/T5555 or EM4305/4469 tag.", @@ -8513,14 +8284,6 @@ ], "usage": "lf fdxb demod [-h]" }, - "lf fdxb help": { - "command": "lf fdxb help", - "description": "help this help demod demodulate a FDX-B ISO11784/85 tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf fdxb reader": { "command": "lf fdxb reader", "description": "read a FDX-B animal tag Note that the continuous mode is less verbose", @@ -8585,14 +8348,6 @@ ], "usage": "lf gallagher demod [-h]" }, - "lf gallagher help": { - "command": "lf gallagher help", - "description": "help This help demod demodulate an GALLAGHER tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf gallagher reader": { "command": "lf gallagher reader", "description": "read a GALLAGHER tag", @@ -8658,14 +8413,6 @@ ], "usage": "lf gproxii demod [-h] [-r ]" }, - "lf gproxii help": { - "command": "lf gproxii help", - "description": "help this help demod demodulate a G Prox II tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf gproxii reader": { "command": "lf gproxii reader", "description": "read a Guardall tag", @@ -8695,14 +8442,6 @@ ], "usage": "lf gproxii sim [-h] --xor --fmt --fc --cn " }, - "lf help": { - "command": "lf help", - "description": "help This help ----------- -------------- Low Frequency -------------- awid { AWID RFIDs... } cotag { COTAG CHIPs... } destron { FDX-A Destron RFIDs... } em { EM CHIPs & RFIDs... } fdxb { FDX-B RFIDs... } gallagher { GALLAGHER RFIDs... } gproxii { Guardall Prox II RFIDs... } hid { HID Prox RFIDs... } hitag { Hitag CHIPs... } idteck { Idteck RFIDs... } indala { Indala RFIDs... } io { ioProx RFIDs... } jablotron { Jablotron RFIDs... } keri { KERI RFIDs... } motorola { Motorola RFIDs... } nedap { Nedap RFIDs... } nexwatch { NexWatch RFIDs... } noralsy { Noralsy RFIDs... } pac { PAC/Stanley RFIDs... } paradox { Paradox RFIDs... } pcf7931 { PCF7931 CHIPs... } presco { Presco RFIDs... } pyramid { Farpointe/Pyramid RFIDs... } securakey { Securakey RFIDs... } ti { TI CHIPs... } t55xx { T55xx CHIPs... } viking { Viking RFIDs... } visa2000 { Visa2000 RFIDs... } ----------- --------------------- General --------------------- search Read and Search for valid known tag", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf hid brute": { "command": "lf hid brute", "description": "Enables bruteforce of HID readers with specified facility code or card number. This is an attack against the reader. If the field being bruteforced is provided, it starts with it and goes up / down one step while maintaining other supplied values. If the field being bruteforced is not provided, it will iterate through the full range while maintaining other supplied values.", @@ -8767,14 +8506,6 @@ ], "usage": "lf hid demod [-h]" }, - "lf hid help": { - "command": "lf hid help", - "description": "help this help demod demodulate HID Prox tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf hid reader": { "command": "lf hid reader", "description": "read a HID Prox tag", @@ -8868,14 +8599,6 @@ ], "usage": "lf hitag eload [-h12sm] -f " }, - "lf hitag help": { - "command": "lf hitag help", - "description": "help This help list List Hitag trace history", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf hitag info": { "command": "lf hitag info", "description": "Hitag2 tag information", @@ -9016,14 +8739,6 @@ ], "usage": "lf idteck demod [-h]" }, - "lf idteck help": { - "command": "lf idteck help", - "description": "help This help demod demodulate an Idteck tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf idteck reader": { "command": "lf idteck reader", "description": "read a Idteck tag", @@ -9088,11 +8803,26 @@ }, "lf indala clone": { "command": "lf indala clone", - "description": "clone Indala UID to T55x7 or Q5/T5555 tag using different known formats", - "notes": [], + "description": "clone Indala UID to T55x7 or Q5/T5555 tag using different known formats Warning, encoding with FC/CN doesn't always work", + "notes": [ + "lf indala clone --heden 888", + "lf indala clone --fc 123 --cn 1337", + "lf indala clone --fc 123 --cn 1337 --4041x", + "lf indala clone -r a0000000a0002021", + "lf indala clone -r 80000001b23523a6c2e31eba3cbee4afb3c6ad1fcf649393928c14e5" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "-r, --raw raw bytes", + "--heden Card number for Heden 2L format", + "--fc Facility code (26 bit H10301 format)", + "--cn Card number (26 bit H10301 format)", + "--q5 Optional - specify writing to Q5/T5555 tag", + "--em Optional - specify writing to EM4305/4469 tag", + "--4041x Optional - specify Indala 4041X format, must use with fc and cn" + ], + "usage": "lf indala clone [-h] [-r ] [--heden ] [--fc ] [--cn ] [--q5] [--em] [--4041x]" }, "lf indala demod": { "command": "lf indala demod", @@ -9112,14 +8842,6 @@ ], "usage": "lf indala demod [-hi] [--clock ] [--maxerr ]" }, - "lf indala help": { - "command": "lf indala help", - "description": "help This help demod Demodulate an Indala tag (PSK1) from the GraphBuffer altdemod Alternative method to demodulate samples for Indala 64 bit UID (option '224' for 224 bit)", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf indala reader": { "command": "lf indala reader", "description": "read a Indala tag", @@ -9186,14 +8908,6 @@ ], "usage": "lf io demod [-h]" }, - "lf io help": { - "command": "lf io help", - "description": "help this help demod demodulate an ioProx tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf io reader": { "command": "lf io reader", "description": "read a ioProx tag", @@ -9263,14 +8977,6 @@ ], "usage": "lf jablotron demod [-h]" }, - "lf jablotron help": { - "command": "lf jablotron help", - "description": "help This help demod demodulate an Jablotron tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf jablotron reader": { "command": "lf jablotron reader", "description": "read a jablotron tag", @@ -9327,14 +9033,6 @@ ], "usage": "lf keri demod [-h]" }, - "lf keri help": { - "command": "lf keri help", - "description": "help This help demod demodulate an KERI tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf keri reader": { "command": "lf keri reader", "description": "read a keri tag", @@ -9390,14 +9088,6 @@ ], "usage": "lf motorola demod [-h]" }, - "lf motorola help": { - "command": "lf motorola help", - "description": "help This help demod demodulate an MOTOROLA tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf motorola reader": { "command": "lf motorola reader", "description": "read a Motorola tag", @@ -9453,14 +9143,6 @@ ], "usage": "lf nedap demod [-h]" }, - "lf nedap help": { - "command": "lf nedap help", - "description": "help This help demod demodulate Nedap tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf nedap reader": { "command": "lf nedap reader", "description": "read a Nedap tag", @@ -9527,14 +9209,6 @@ ], "usage": "lf nexwatch demod [-h]" }, - "lf nexwatch help": { - "command": "lf nexwatch help", - "description": "help This help demod demodulate a NexWatch tag (nexkey, quadrakey) from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf nexwatch reader": { "command": "lf nexwatch reader", "description": "read a Nexwatch tag", @@ -9601,14 +9275,6 @@ ], "usage": "lf noralsy demod [-h]" }, - "lf noralsy help": { - "command": "lf noralsy help", - "description": "help This help demod demodulate an Noralsy tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf noralsy reader": { "command": "lf noralsy reader", "description": "read a Noralsy tag", @@ -9668,14 +9334,6 @@ ], "usage": "lf pac demod [-h]" }, - "lf pac help": { - "command": "lf pac help", - "description": "help This help demod demodulate a PAC tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf pac reader": { "command": "lf pac reader", "description": "read a PAC/Stanley tag", @@ -9737,14 +9395,6 @@ ], "usage": "lf paradox demod [-h] [--old]" }, - "lf paradox help": { - "command": "lf paradox help", - "description": "help This help demod demodulate a Paradox FSK tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf paradox reader": { "command": "lf paradox reader", "description": "read a Paradox tag", @@ -9795,14 +9445,6 @@ ], "usage": "lf pcf7931 config [-hr] [-p ] [-d ] [--lw ] [--lp ]" }, - "lf pcf7931 help": { - "command": "lf pcf7931 help", - "description": "help This help config Configure the password, the tags initialization delay and time offsets (optional)", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf pcf7931 reader": { "command": "lf pcf7931 reader", "description": "read a PCF7931 tag", @@ -9861,14 +9503,6 @@ ], "usage": "lf presco demod [-h]" }, - "lf presco help": { - "command": "lf presco help", - "description": "help This help demod demodulate Presco tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf presco reader": { "command": "lf presco reader", "description": "read a presco tag", @@ -9928,14 +9562,6 @@ ], "usage": "lf pyramid demod [-h]" }, - "lf pyramid help": { - "command": "lf pyramid help", - "description": "help this help demod demodulate a Pyramid FSK tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf pyramid reader": { "command": "lf pyramid reader", "description": "read a Farpointe/Pyramid tag", @@ -10028,14 +9654,6 @@ ], "usage": "lf securakey demod [-h]" }, - "lf securakey help": { - "command": "lf securakey help", - "description": "help This help demod demodulate an Securakey tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf securakey reader": { "command": "lf securakey reader", "description": "read a Securakey tag", @@ -10114,11 +9732,27 @@ }, "lf simfsk": { "command": "lf simfsk", - "description": "Simulate FSK tag from DemodBuffer or input. There are about four FSK modulations to know of. FSK1 - where fc/8 = high and fc/5 = low FSK1a - is inverted FSK1, ie: fc/5 = high and fc/8 = low FSK2 - where fc/10 = high and fc/8 = low FSK2a - is inverted FSK2, ie: fc/10 = high and fc/8 = low", - "notes": [], + "description": "Simulate FSK tag from DemodBuffer or input. There are about four FSK modulations to know of. FSK1 - where fc/8 = high and fc/5 = low FSK1a - is inverted FSK1, ie: fc/5 = high and fc/8 = low FSK2 - where fc/10 = high and fc/8 = low FSK2a - is inverted FSK2, ie: fc/10 = high and fc/8 = low NOTE: if you set one clock manually set them all manually", + "notes": [ + "lf simfsk -c 40 --high 8 --low 5 -d 010203 -> FSK1 rf/40 data 010203", + "lf simfsk -c 40 --high 5 --low 8 -d 010203 -> FSK1a rf/40 data 010203", + "lf simfsk -c 64 --high 10 --low 8 -d 010203 -> FSK2 rf/64 data 010203", + "lf simfsk -c 64 --high 8 --low 10 -d 010203 -> FSK2a rf/64 data 010203", + "", + "lf simfsk -c 50 --high 10 --low 8 -d 1D5559555569A9A555A59569 -> simulate HID Prox tag manually", + "lf simfsk -c 50 --high 10 --low 8 --stt -d 011DB2487E8D811111111111 -> simulate AWID tag manually" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "-c, --clk manually set clock - can autodetect if using DemodBuffer (default 64)", + "--low manually set larger Field Clock", + "--high manually set smaller Field Clock", + "--stt TBD! - STT to enable a gap between playback repetitions (default: no gap)", + "-d, --data data to sim - omit to use DemodBuffer", + "-v, --verbose verbose output" + ], + "usage": "lf simfsk [-hv] [-c ] [--low ] [--high ] [--stt] [-d ]" }, "lf simpsk": { "command": "lf simpsk", @@ -10144,19 +9778,38 @@ }, "lf sniff": { "command": "lf sniff", - "description": "Sniff low frequency signal. You need to configure the LF part on the Proxmark3 device manually. Usually a trigger and skip samples is a good thing to set before doing a low frequency sniff.", - "notes": [], + "description": "Sniff low frequency signal. You need to configure the LF part on the Proxmark3 device manually. Usually a trigger and skip samples is a good thing to set before doing a low frequency sniff. - use `lf config` to set parameters. - use `data plot` to look at sniff signal. - use `lf search -1` to see if signal can be automatic decoded", + "notes": [ + "lf sniff -v", + "lf sniff -s 3000 -@ -> oscilloscope style" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "-s, --samples number of samples to collect", + "-v, --verbose verbose output", + "-@ continuous sniffing mode" + ], + "usage": "lf sniff [-hv@] [-s ]" }, "lf t55xx bruteforce": { "command": "lf t55xx bruteforce", - "description": "This command uses bruteforce to scan a number range. Try reading Page 0, block 7 before.", - "notes": [], + "description": "This command uses bruteforce to scan a number range. Try reading Page 0, block 7 before. WARNING this may brick non-password protected chips!", + "notes": [ + "lf t55xx bruteforce --r2 -s aaaaaa77 -e aaaaaa99" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "-s, --start search start password (4 hex bytes)", + "-e, --end search end password (4 hex bytes)", + "--r0 downlink - fixed bit length", + "--r1 downlink - long leading reference", + "--r2 downlink - leading zero", + "--r3 downlink - 1 of 4 coding reference", + "--all try all downlink modes (def)" + ], + "usage": "lf t55xx bruteforce [-h] -s -e [--r0] [--r1] [--r2] [--r3] [--all]" }, "lf t55xx chk": { "command": "lf t55xx chk", @@ -10311,14 +9964,6 @@ ], "usage": "lf t55xx dump [-ho] [-f ] [-p ] [--ns] [--r0] [--r1] [--r2] [--r3]" }, - "lf t55xx help": { - "command": "lf t55xx help", - "description": "----------- ---------------------------- notice ----------------------------- Remember to run `lf t55xx detect` first whenever a new card is placed on the Proxmark3 or the config block changed. help This help ----------- --------------------- operations --------------------- config Set/Get T55XX configuration (modulation, inverted, offset, rate) detect Try detecting the tag modulation from reading the configuration block info Show T55x7 configuration data (page 0/ blk 0) trace Show T55x7 traceability data (page 1/ blk 0-1) ----------- --------------------- recovery --------------------- sniff Attempt to recover T55xx commands from sample buffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf t55xx info": { "command": "lf t55xx info", "description": "Show T55x7 configuration data (page 0/ blk 0) from reading the configuration block from tag. Use `-c` to specify a config block data to be used instead of reading tag.", @@ -10385,19 +10030,45 @@ }, "lf t55xx read": { "command": "lf t55xx read", - "description": "Read T55xx block data. This commands defaults to page 0.", - "notes": [], + "description": "Read T55xx block data. This commands defaults to page 0. * * * WARNING * * * Use of read with password on a tag not configured for a password can damage the tag * * * * * * * * * *", + "notes": [ + "lf t55xx read -b 0 -> read data from block 0", + "lf t55xx read -b 0 --pwd 01020304 -> read data from block 0, pwd 01020304", + "lf t55xx read -b 0 --pwd 01020304 -o -> read data from block 0, pwd 01020304, override" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "-b, --blk <0-7> block number to read", + "-p, --pwd password (4 hex bytes)", + "-o, --override override safety check", + "--pg1 read page 1", + "--r0 downlink - fixed bit length (detected def)", + "--r1 downlink - long leading reference", + "--r2 downlink - leading zero", + "--r3 downlink - 1 of 4 coding reference" + ], + "usage": "lf t55xx read [-ho] -b <0-7> [-p ] [--pg1] [--r0] [--r1] [--r2] [--r3]" }, "lf t55xx recoverpw": { "command": "lf t55xx recoverpw", - "description": "This command uses a few tricks to try to recover mangled password. Try reading Page 0, block 7 before.", - "notes": [], + "description": "This command uses a few tricks to try to recover mangled password. Try reading Page 0, block 7 before. WARNING this may brick non-password protected chips!", + "notes": [ + "lf t55xx recoverpw", + "lf t55xx recoverpw -p 11223344", + "lf t55xx recoverpw -p 11223344 --r3" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "-p, --pwd password (4 hex bytes)", + "--r0 downlink - fixed bit length", + "--r1 downlink - long leading reference", + "--r2 downlink - leading zero", + "--r3 downlink - 1 of 4 coding reference", + "--all try all downlink modes (def)" + ], + "usage": "lf t55xx recoverpw [-h] [-p ] [--r0] [--r1] [--r2] [--r3] [--all]" }, "lf t55xx resetread": { "command": "lf t55xx resetread", @@ -10553,14 +10224,6 @@ ], "usage": "lf ti demod [-h]" }, - "lf ti help": { - "command": "lf ti help", - "description": "help This help demod Demodulate raw bits for TI LF tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf ti reader": { "command": "lf ti reader", "description": "read a TI tag", @@ -10637,14 +10300,6 @@ ], "usage": "lf viking demod [-h]" }, - "lf viking help": { - "command": "lf viking help", - "description": "help This help demod demodulate a Viking tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf viking reader": { "command": "lf viking reader", "description": "read a Viking AM tag", @@ -10700,14 +10355,6 @@ ], "usage": "lf visa2000 demod [-h]" }, - "lf visa2000 help": { - "command": "lf visa2000 help", - "description": "help This help demod demodulate an VISA2000 tag from the GraphBuffer", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "lf visa2000 reader": { "command": "lf visa2000 reader", "description": "read a visa2000 tag", @@ -10766,14 +10413,6 @@ ], "usage": "mem dump [-hv] [-o ] [-l ] [-f ] [-c ]" }, - "mem help": { - "command": "mem help", - "description": "help This help", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "mem info": { "command": "mem info", "description": "Collect signature and verify it from flash memory", @@ -10853,14 +10492,6 @@ ], "usage": "mem spiffs dump [-he] -s [-d ]" }, - "mem spiffs help": { - "command": "mem spiffs help", - "description": "help This help", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "mem spiffs info": { "command": "mem spiffs info", "description": "Print file system info and usage statistics", @@ -11014,14 +10645,6 @@ ], "usage": "msleep [-h] [-t ]" }, - "nfc barcode help": { - "command": "nfc barcode help", - "description": "-------- ------------------ NFC Barcode -------------------- -------- --------------------- General --------------------- help This help", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "nfc barcode read": { "command": "nfc barcode read", "description": "Get info from Thinfilm tags", @@ -11065,21 +10688,24 @@ ], "usage": "nfc decode [-hv] [-d ] [-f ]" }, - "nfc help": { - "command": "nfc help", - "description": "-------- --------------------- NFC Tags -------------------- type1 { NFC Forum Tag Type 1... } type2 { NFC Forum Tag Type 2... } type4a { NFC Forum Tag Type 4 ISO14443A... } type4b { NFC Forum Tag Type 4 ISO14443B... } mf { NFC Type MIFARE Classic/Plus Tag... } barcode { NFC Barcode Tag... } -------- --------------------- General --------------------- help This help decode Decode NDEF records", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "nfc mf cformat": { "command": "nfc mf cformat", - "description": "format MIFARE Classic Tag as a NFC tag with Data Exchange Format (NDEF) If no given, UID will be used as filename. It will try default keys and MAD keys to detect if tag is already formatted in order to write.", - "notes": [], + "description": "format MIFARE Classic Tag as a NFC tag with Data Exchange Format (NDEF) If no given, UID will be used as filename. It will try default keys and MAD keys to detect if tag is already formatted in order to write. If not, it will try finding a key file based on your UID. ie, if you ran autopwn before", + "notes": [ + "hf mf ndefformat", + "hf mf ndefformat --1k -> MIFARE Classic 1k", + "hf mf ndefformat --keys hf-mf-01020304-key.bin -> MIFARE 1k with keys from specified file" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help", + "-k, --keys filename of keys", + "--mini MIFARE Classic Mini / S20", + "--1k MIFARE Classic 1k / S50 (def)", + "--2k MIFARE Classic/Plus 2k", + "--4k MIFARE Classic 4k / S70" + ], + "usage": "hf mf ndefformat [-h] [-k ] [--mini] [--1k] [--2k] [--4k]" }, "nfc mf cread": { "command": "nfc mf cread", @@ -11123,14 +10749,6 @@ ], "usage": "hf mf ndefwrite [-hpv] [-d ] [-f ] [--mini] [--1k] [--2k] [--4k]" }, - "nfc mf help": { - "command": "nfc mf help", - "description": "-------- --------- NFC Type MIFARE Classic/Plus Tag -------- -------- --------------------- General --------------------- help This help", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "nfc mf pread": { "command": "nfc mf pread", "description": "Prints NFC Data Exchange Format (NDEF)", @@ -11151,14 +10769,6 @@ ], "usage": "hf mfp ndefread [-hvb] [--aid ] [-k ] [-f ]" }, - "nfc type1 help": { - "command": "nfc type1 help", - "description": "-------- -------------- NFC Forum Tag Type 1 --------------- -------- --------------------- General --------------------- help This help", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "nfc type1 read": { "command": "nfc type1 read", "description": "Get info from Topaz tags", @@ -11174,14 +10784,6 @@ ], "usage": "hf topaz info [-hv] [-f ]" }, - "nfc type2 help": { - "command": "nfc type2 help", - "description": "-------- -------------- NFC Forum Tag Type 2 --------------- -------- --------------------- General --------------------- help This help", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "nfc type2 read": { "command": "nfc type2 read", "description": "Prints NFC Data Exchange Format (NDEF)", @@ -11212,14 +10814,6 @@ ], "usage": "hf 14a ndefformat [-hv]" }, - "nfc type4a help": { - "command": "nfc type4a help", - "description": "-------- --------- NFC Forum Tag Type 4 ISO14443A ---------- -------- --------------------- General --------------------- help This help", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "nfc type4a read": { "command": "nfc type4a read", "description": "Read NFC Data Exchange Format (NDEF) file on Type 4 NDEF tag", @@ -11269,14 +10863,6 @@ ], "usage": "hf 14a ndefwrite [-hpv] [-d ] [-f ]" }, - "nfc type4b help": { - "command": "nfc type4b help", - "description": "-------- --------- NFC Forum Tag Type 4 ISO14443B ------------- -------- --------------------- General --------------------- help This help", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "nfc type4b read": { "command": "nfc type4b read", "description": "Print NFC Data Exchange Format (NDEF)", @@ -11333,14 +10919,6 @@ ], "usage": "piv getdata [-hskatw] [--aid ] " }, - "piv help": { - "command": "piv help", - "description": "help This help list List ISO7816 history", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "piv list": { "command": "piv list", "description": "Alias of `trace list -t 7816` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", @@ -11508,14 +11086,6 @@ ], "usage": "prefs get savepaths [-h]" }, - "prefs help": { - "command": "prefs help", - "description": "help This help get { Get a preference } set { Set a preference } show Show all preferences", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "prefs set barmode": { "command": "prefs set barmode", "description": "Set persistent preference of HF/LF tune command styled output in the client", @@ -11590,14 +11160,6 @@ ], "usage": "prefs set emoji [-h] [--alias] [--emoji] [--alttext] [--none]" }, - "prefs set help": { - "command": "prefs set help", - "description": "help This help barmode Set bar mode clientdebug Set client debug level clientdelay Set client execution delay color Set color support emoji Set emoji display hints Set hint display savepaths ... to be adjusted next ... output Set dump output style plotsliders Set plot slider display", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "prefs set hints": { "command": "prefs set hints", "description": "Set persistent preference of showing hint messages in the client", @@ -11695,13 +11257,17 @@ ], "usage": "rem [-h] []..." }, - "script help": { - "command": "script help", - "description": "This is a feature to run Lua/Cmd scripts. You can place scripts within the luascripts/cmdscripts folders. --------------------------------------------------------------------------------------- script list available offline: yes", - "notes": [], + "script list": { + "command": "script list", + "description": "List available Lua, Cmd and Python scripts", + "notes": [ + "script list" + ], "offline": true, - "options": [], - "usage": "" + "options": [ + "-h, --help This help" + ], + "usage": "script list [-h]" }, "script run": { "command": "script run", @@ -11730,14 +11296,6 @@ ], "usage": "smart brute [-ht]" }, - "smart help": { - "command": "smart help", - "description": "help This help list List ISO 7816 history upgrade Upgrade sim module firmware", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "smart info": { "command": "smart info", "description": "Extract more detailed information from smart card.", @@ -11822,14 +11380,6 @@ ], "usage": "smart setclock [-h] [--16mhz] [--8mhz] [--4mhz]" }, - "smart upgrade": { - "command": "smart upgrade", - "description": "[=] ------------------------------------------------------------------- [!] WARNING - sim module firmware upgrade [!] A dangerous command, do wrong and you could brick the sim module [=] -------------------------------------------------------------------", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "trace extract": { "command": "trace extract", "description": "Extracts protocol authentication challenges from trace buffer", @@ -11844,14 +11394,6 @@ ], "usage": "trace extract [-h1]" }, - "trace help": { - "command": "trace help", - "description": "help This help extract Extract authentication challenges found in trace list List protocol data in trace buffer load Load trace from file save Save trace buffer to file", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "trace list": { "command": "trace list", "description": "Annotate trace buffer with selected protocol data You can load a trace from file (see `trace load -h`) or it be downloaded from device by default", @@ -11924,11 +11466,15 @@ }, "usart btfactory": { "command": "usart btfactory", - "description": "Reset BT add-on to factory settings This requires 1) BTpower to be turned ON 2) BT add-on to NOT be connected => the add-on blue LED must blink", - "notes": [], + "description": "Reset BT add-on to factory settings This requires 1) BTpower to be turned ON 2) BT add-on to NOT be connected => the add-on blue LED must blink WARNING: process only if strictly needed!", + "notes": [ + "usart btfactory" + ], "offline": false, - "options": [], - "usage": "" + "options": [ + "-h, --help This help" + ], + "usage": "usart btfactory [-h]" }, "usart btpin": { "command": "usart btpin", @@ -11961,14 +11507,6 @@ ], "usage": "usart config [-hNEO] [-b ]" }, - "usart help": { - "command": "usart help", - "description": "help This help", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "usart rx": { "command": "usart rx", "description": "Receive string over USART. WARNING: it will have side-effects if used in USART HOST mode!", @@ -12070,14 +11608,6 @@ ], "usage": "wiegand encode [-h] [--fc ] --cn [--issue ] [--oem ] [-w ] [--pre]" }, - "wiegand help": { - "command": "wiegand help", - "description": "help This help list List available wiegand formats encode Encode to wiegand raw hex (currently for HID Prox) decode Convert raw hex to decoded wiegand format (currently for HID Prox)", - "notes": [], - "offline": true, - "options": [], - "usage": "" - }, "wiegand list": { "command": "wiegand list", "description": "List available wiegand formats", @@ -12092,8 +11622,8 @@ } }, "metadata": { - "commands_extracted": 759, + "commands_extracted": 675, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-06-25T20:42:06" + "extracted_on": "2023-06-27T13:20:13" } } \ No newline at end of file From b0c2ad8ac27fe2c93685b5cfd8284fdf609a3114 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 27 Jun 2023 15:25:00 +0200 Subject: [PATCH 0120/1034] style --- armsrc/iso15693.c | 2 +- armsrc/mifaresim.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index 16dc3c575..a52b953ff 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -1846,7 +1846,7 @@ void SniffIso15693(uint8_t jam_search_len, uint8_t *jam_search_string, bool icla Dbprintf("DecodeTagFSK count..... %d", dtagfsk.count); Dbprintf("DecodeReader State..... %d", dreader.state); Dbprintf("DecodeReader byteCnt... %d", dreader.byteCount); - Dbprintf("DecodeReader posCount.. %d", dreader.posCount); + Dbprintf("DecodeReader posCount.. %d", dreader.posCount); } Dbprintf("Trace length........... " _YELLOW_("%d"), BigBuf_get_traceLen()); } diff --git a/armsrc/mifaresim.c b/armsrc/mifaresim.c index 81f26c5cb..5aa1a054a 100644 --- a/armsrc/mifaresim.c +++ b/armsrc/mifaresim.c @@ -893,7 +893,7 @@ void Mifare1ksim(uint16_t flags, uint8_t exitAfterNReads, uint8_t *datain, uint1 // Compliance of MIFARE Classic EV1 1K Datasheet footnote of Table 8 // If access bits show that key B is Readable, any subsequent memory access will be refused. - + if (cardAUTHKEY == AUTHKEYB && IsKeyBReadable(blockNo)) { EmSend4bit(mf_crypto1_encrypt4bit(pcs, CARD_NACK_NA)); FpgaDisableTracing(); From ed0d18f05d6540052e1b973a201fc4b397831465 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 28 Jun 2023 13:27:50 +0200 Subject: [PATCH 0121/1034] QL88 tag identification. Thanks to AnnPlusPluss and Atlab for finding the key --- CHANGELOG.md | 1 + armsrc/mifarecmd.c | 18 ++++++++++++++++++ client/src/mifare/mifarehost.c | 2 ++ include/pm3_cmd.h | 1 + 4 files changed, 22 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 47b958b98..ca0fede15 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac ## [unreleased][unreleased] ## [Seven.4.16717][2023-06-25] + - Change `hf 14a info` - now identifes QL88 tags (@iceman1001) - Added support for compiling on iOS (@The-SamminAter) - Fixed viewing MFC dump - border char is now white (@iceman1001) - Changed `data diff` - to print filenames in header if it fits (@iceman1001) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 4492c3195..c8a2d5fa2 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2631,6 +2631,7 @@ void MifareCIdent(bool is_mfc) { uint8_t gen4gmd[4] = {MIFARE_MAGIC_GDM_AUTH_KEY, 0x00, 0x6C, 0x92}; uint8_t gen4GetConf[8] = {GEN_4GTU_CMD, 0x00, 0x00, 0x00, 0x00, GEN_4GTU_GETCNF, 0, 0}; uint8_t superGen1[9] = {0x0A, 0x00, 0x00, 0xA6, 0xB0, 0x00, 0x10, 0x14, 0x1D}; + uint8_t *par = BigBuf_malloc(MAX_PARITY_SIZE); uint8_t *buf = BigBuf_malloc(PM3_CMD_DATA_SIZE); uint8_t *uid = BigBuf_malloc(10); @@ -2787,7 +2788,24 @@ void MifareCIdent(bool is_mfc) { isGen = MAGIC_GEN_4GDM; } } + + if (isGen != MAGIC_GEN_4GDM) { + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + SpinDelay(40); + iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); + if (res == 2) { + struct Crypto1State mpcs = {0, 0}; + struct Crypto1State *pcs; + pcs = &mpcs; + if (mifare_classic_authex(pcs, cuid, 68, MF_KEY_B, 0x707B11FC1481, AUTH_FIRST, NULL, NULL) == 0) { + isGen = MAGIC_QL88; + } + crypto1_deinit(pcs); + } + } } + } }; diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 3b37182fe..6c9d8caa2 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -1431,6 +1431,8 @@ int detect_mf_magic(bool is_mfc) { case MAGIC_NTAG21X: PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("NTAG21x")); break; + case MAGIC_QL88: + PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("QL88")); default: break; } diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index 7a19e6dbe..0983ee2e1 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -621,6 +621,7 @@ typedef struct { #define CMD_HF_MIFARE_ACQ_ENCRYPTED_NONCES 0x0613 #define CMD_HF_MIFARE_ACQ_NONCES 0x0614 #define CMD_HF_MIFARE_STATIC_NESTED 0x0615 +#define CMD_HF_MIFARE_STATIC_ENC 0x0616 #define CMD_HF_MIFARE_READBL 0x0620 #define CMD_HF_MIFAREU_READBL 0x0720 From cbfab4fc2021867edcc213e84d0d5bed2d5df841 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 28 Jun 2023 13:29:08 +0200 Subject: [PATCH 0122/1034] maur keys. Ql88 sector 17 a/b, thanks to AnnPlusplus and Atlab! --- client/dictionaries/mfc_default_keys.dic | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 0d34541ff..d32346428 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -31,6 +31,11 @@ D01AFEEB890A # 17 B 4B791BEA7BCC # +# QL88 keys +# 17 A/B +2612C6DE84CA +707B11FC1481 +# # B0B1B2B3B4B5 C0C1C2C3C4C5 From 5de6fa443c343fb5c492cfe3e1daebd5e7cab964 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 28 Jun 2023 15:11:48 +0200 Subject: [PATCH 0123/1034] missing define for QL88 --- include/protocols.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/protocols.h b/include/protocols.h index f67ae1798..0183f9f0d 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -263,6 +263,8 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define MAGIC_GEN_3 9 #define MAGIC_GEN_4GTU 10 #define MAGIC_GEN_4GDM 11 +#define MAGIC_QL88 12 + // Commands for configuration of Gen4 GTU cards. // see https://github.com/RfidResearchGroup/proxmark3/blob/master/doc/magic_cards_notes.md From edd8e36d801077a5db035eae6c930e1005999103 Mon Sep 17 00:00:00 2001 From: nvx Date: Tue, 4 Jul 2023 00:04:57 +1000 Subject: [PATCH 0124/1034] Cleanup arm-side reader-mode mifare classic block read/write code. --- armsrc/Standalone/hf_colin.c | 10 +- armsrc/Standalone/hf_mattyrun.c | 10 +- armsrc/appmain.c | 31 +- armsrc/iso14443a.c | 10 +- armsrc/mifarecmd.c | 533 +++++++++----------------------- armsrc/mifarecmd.h | 16 +- armsrc/mifareutil.c | 125 +++----- armsrc/mifareutil.h | 16 +- client/src/cmdtrace.c | 18 +- include/protocols.h | 3 +- 10 files changed, 249 insertions(+), 523 deletions(-) diff --git a/armsrc/Standalone/hf_colin.c b/armsrc/Standalone/hf_colin.c index 2da9a582a..91fa971eb 100644 --- a/armsrc/Standalone/hf_colin.c +++ b/armsrc/Standalone/hf_colin.c @@ -821,7 +821,7 @@ int e_MifareECardLoad(uint32_t numofsectors, uint8_t keytype) { } for (uint8_t blockNo = 0; isOK && blockNo < NumBlocksPerSector(s); blockNo++) { - if (isOK && mifare_classic_readblock(pcs, colin_cjcuid, FirstBlockOfSector(s) + blockNo, dataoutbuf)) { + if (isOK && mifare_classic_readblock(pcs, FirstBlockOfSector(s) + blockNo, dataoutbuf)) { isOK = false; break; }; @@ -838,7 +838,7 @@ int e_MifareECardLoad(uint32_t numofsectors, uint8_t keytype) { } } - int res = mifare_classic_halt(pcs, colin_cjcuid); + int res = mifare_classic_halt(pcs); (void)res; crypto1_deinit(pcs); @@ -986,7 +986,7 @@ int saMifareCSetBlock(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *data break; }; - if (mifare_classic_halt(NULL, colin_cjcuid)) { + if (mifare_classic_halt(NULL)) { DbprintfEx(FLAG_NEWLINE, "Halt error"); break; }; @@ -1006,7 +1006,7 @@ int saMifareCSetBlock(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *data break; }; - if (mifare_classic_halt(NULL, colin_cjcuid)) { + if (mifare_classic_halt(NULL)) { DbprintfEx(FLAG_NEWLINE, "Halt error"); break; }; @@ -1043,7 +1043,7 @@ int saMifareCSetBlock(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *data }; if (workFlags & 0x04) { - if (mifare_classic_halt(NULL, colin_cjcuid)) { + if (mifare_classic_halt(NULL)) { cjSetCursFRight(); DbprintfEx(FLAG_NEWLINE, "Halt error"); diff --git a/armsrc/Standalone/hf_mattyrun.c b/armsrc/Standalone/hf_mattyrun.c index 97a02a278..9b41f18c4 100644 --- a/armsrc/Standalone/hf_mattyrun.c +++ b/armsrc/Standalone/hf_mattyrun.c @@ -109,7 +109,7 @@ static int saMifareCSetBlock(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_ break; }; - if (mifare_classic_halt(NULL, mattyrun_cuid)) { + if (mifare_classic_halt(NULL)) { DbprintfEx(FLAG_NEWLINE, "Halt error"); break; }; @@ -129,7 +129,7 @@ static int saMifareCSetBlock(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_ break; }; - if (mifare_classic_halt(NULL, mattyrun_cuid)) { + if (mifare_classic_halt(NULL)) { DbprintfEx(FLAG_NEWLINE, "Halt error"); break; }; @@ -165,7 +165,7 @@ static int saMifareCSetBlock(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_ }; if (workFlags & 0x04) { - if (mifare_classic_halt(NULL, mattyrun_cuid)) { + if (mifare_classic_halt(NULL)) { DbprintfEx(FLAG_NEWLINE, "Halt error"); break; }; @@ -267,7 +267,7 @@ static int saMifareECardLoad(uint32_t numofsectors, uint8_t keytype) { // failure to read one block, skips to next sector. for (uint8_t blockNo = 0; blockNo < NumBlocksPerSector(s); blockNo++) { - if (mifare_classic_readblock(pcs, mattyrun_cuid, FirstBlockOfSector(s) + blockNo, dataoutbuf)) { + if (mifare_classic_readblock(pcs, FirstBlockOfSector(s) + blockNo, dataoutbuf)) { retval = PM3_ESOFT; break; }; @@ -283,7 +283,7 @@ static int saMifareECardLoad(uint32_t numofsectors, uint8_t keytype) { } } - int res = mifare_classic_halt(pcs, mattyrun_cuid); + int res = mifare_classic_halt(pcs); (void)res; out: diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 184307042..6cdff3eb6 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -60,6 +60,7 @@ #include "ticks.h" #include "commonutil.h" #include "crc16.h" +#include "protocols.h" #ifdef WITH_LCD @@ -1556,7 +1557,9 @@ static void PacketReceived(PacketCommandNG *packet) { } case CMD_HF_MIFARE_READBL: { mf_readblock_t *payload = (mf_readblock_t *)packet->data.asBytes; - MifareReadBlock(payload->blockno, payload->keytype, payload->key); + uint8_t outbuf[16]; + int16_t retval = mifare_cmd_readblocks(MIFARE_AUTH_KEYA + (payload->keytype & 1), payload->key, ISO14443A_CMD_READBLOCK, payload->blockno, 1, outbuf); + reply_ng(CMD_HF_MIFARE_READBL, retval, outbuf, sizeof(outbuf)); break; } case CMD_HF_MIFAREU_READBL: { @@ -1580,7 +1583,19 @@ static void PacketReceived(PacketCommandNG *packet) { break; } case CMD_HF_MIFARE_WRITEBL: { - MifareWriteBlock(packet->oldarg[0], packet->oldarg[1], packet->data.asBytes); + uint8_t block_no = packet->oldarg[0]; + uint8_t key_type = packet->oldarg[1]; + uint8_t *key = packet->data.asBytes; + uint8_t *block_data = packet->data.asBytes + 10; + + int16_t retval = mifare_cmd_writeblocks(MIFARE_AUTH_KEYA + (key_type & 1), key, ISO14443A_CMD_WRITEBLOCK, block_no, 1, block_data); + + // convert ng style retval to old status + if (retval >= 0) { + retval = 1; + } + + reply_mix(CMD_ACK, retval, 0, 0, 0, 0); break; } case CMD_HF_MIFARE_VALUE: { @@ -1740,7 +1755,9 @@ static void PacketReceived(PacketCommandNG *packet) { uint8_t key[6]; } PACKED; struct p *payload = (struct p *) packet->data.asBytes; - MifareReadConfigBlockGDM(payload->key); + uint8_t outbuf[16]; + int16_t retval = mifare_cmd_readblocks(MIFARE_MAGIC_GDM_AUTH_KEY, payload->key, MIFARE_MAGIC_GDM_READ_CFG, 0, 1, outbuf); + reply_ng(CMD_HF_MIFARE_G4_GDM_CONFIG, retval, outbuf, sizeof(outbuf)); break; } case CMD_HF_MIFARE_G4_GDM_WRCFG: { @@ -1748,18 +1765,20 @@ static void PacketReceived(PacketCommandNG *packet) { uint8_t data[16]; } PACKED; struct p *payload = (struct p *) packet->data.asBytes; - MifareWriteConfigBlockGDM(payload->data); + uint8_t key[6] = {0, 0, 0, 0, 0, 0}; + int16_t retval = mifare_cmd_writeblocks(MIFARE_MAGIC_GDM_AUTH_KEY, key, MIFARE_MAGIC_GDM_WRITE_CFG, 0, 1, payload->data); + reply_ng(CMD_HF_MIFARE_G4_GDM_WRCFG, retval, NULL, 0); break; } case CMD_HF_MIFARE_G4_GDM_WRBL: { struct p { uint8_t blockno; - uint8_t keytype; uint8_t key[6]; uint8_t data[16]; // data to be written } PACKED; struct p *payload = (struct p *) packet->data.asBytes; - MifareWriteBlockGDM(payload->blockno, payload->keytype, payload->key, payload->data); + int16_t retval = mifare_cmd_writeblocks(MIFARE_MAGIC_GDM_AUTH_KEY, payload->key, MIFARE_MAGIC_GDM_WRITEBLOCK, payload->blockno, 1, payload->data); + reply_ng(CMD_HF_MIFARE_G4_GDM_WRBL, retval, NULL, 0); break; } case CMD_HF_MIFARE_PERSONALIZE_UID: { diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 9cff73f63..5416f2917 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -2538,7 +2538,7 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, bool use_ecp, bool use_mags bool first_try = true; uint32_t retry_timeout = use_ecp ? ECP_RETRY_TIMEOUT : WUPA_RETRY_TIMEOUT; - uint32_t start_time = GetTickCount(); + uint32_t start_time; int len; // we may need several tries if we did send an unknown command or a wrong authentication before... @@ -2562,6 +2562,11 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, bool use_ecp, bool use_mags // Receive the ATQA len = ReaderReceive(resp, resp_par); + // We set the start_time here otherwise in some cases we miss the window and only ever try once + if (first_try) { + start_time = GetTickCount(); + } + first_try = false; } while (len == 0 && GetTickCountDelta(start_time) <= retry_timeout); @@ -2830,10 +2835,9 @@ int iso14443a_fast_select_card(uint8_t *uid_ptr, uint8_t num_cascades) { // which case we need to make a cascade 2 request and select - this is a long UID // While the UID is not complete, the 3nd bit (from the right) is set in the SAK. for (; sak & 0x04; cascade_level++) { - uint8_t sel_all[] = { ISO14443A_CMD_ANTICOLL_OR_SELECT, 0x20 }; uint8_t sel_uid[] = { ISO14443A_CMD_ANTICOLL_OR_SELECT, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // SELECT_* (L1: 0x93, L2: 0x95, L3: 0x97) - sel_uid[0] = sel_all[0] = 0x93 + cascade_level * 2; + sel_uid[0] = ISO14443A_CMD_ANTICOLL_OR_SELECT + cascade_level * 2; if (cascade_level < num_cascades - 1) { uid_resp[0] = 0x88; diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index c8a2d5fa2..145527a7e 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -58,21 +58,19 @@ static uint8_t dummy_answer = 0; //----------------------------------------------------------------------------- // Select, Authenticate, Read a MIFARE tag. -// read block +// key_auth_cmd is one of MIFARE_AUTH_KEYA, MIFARE_AUTH_KEYB, or MIFARE_MAGIC_GDM_AUTH_KEY +// read_cmd is one of ISO14443A_CMD_READBLOCK, MIFARE_MAGIC_GDM_READBLOCK, or MIFARE_MAGIC_GDM_READ_CFG +// block_data must be 16*count bytes large +// block_no through block_no+count-1 normally needs to be within the same sector //----------------------------------------------------------------------------- -void MifareReadBlock(uint8_t blockNo, uint8_t keyType, uint8_t *datain) { - // params - uint64_t ui64Key = 0; - ui64Key = bytes_to_num(datain, 6); +int16_t mifare_cmd_readblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t read_cmd, uint8_t block_no, uint8_t count, uint8_t *block_data) { + + uint64_t ui64key = bytes_to_num(key, 6); - // variables - uint8_t dataoutbuf[16] = {0x00}; uint8_t uid[10] = {0x00}; - uint32_t cuid = 0, status = PM3_EOPABORTED; - + uint32_t cuid = 0; struct Crypto1State mpcs = {0, 0}; - struct Crypto1State *pcs; - pcs = &mpcs; + struct Crypto1State *pcs = &mpcs; iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); @@ -83,41 +81,125 @@ void MifareReadBlock(uint8_t blockNo, uint8_t keyType, uint8_t *datain) { LED_B_OFF(); LED_C_OFF(); - while (true) { - if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Can't select card"); - break; - }; + int retval = PM3_SUCCESS; - if (mifare_classic_auth(pcs, cuid, blockNo, keyType, ui64Key, AUTH_FIRST)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Auth error"); - break; - }; - - if (mifare_classic_readblock(pcs, cuid, blockNo, dataoutbuf)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Read block error"); - break; - }; - - if (mifare_classic_halt(pcs, cuid)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Halt error"); - break; - }; - - status = PM3_SUCCESS; - break; + if (iso14443a_select_card(uid, NULL, &cuid, true, 0, true) == false) { + if (g_dbglevel >= DBG_ERROR) Dbprintf("Can't select card"); + retval = PM3_ESOFT; + goto OUT; } + if (mifare_classic_authex_cmd(pcs, cuid, block_no, key_auth_cmd, ui64key, AUTH_FIRST, NULL, NULL)) { + if (g_dbglevel >= DBG_ERROR) Dbprintf("Auth error"); + retval = PM3_ESOFT; + goto OUT; + }; + + for (uint8_t i = 0; i < count; i++) { + if (mifare_classic_readblock_ex(pcs, block_no + i, block_data + (i * 16), read_cmd)) { + if (g_dbglevel >= DBG_ERROR) Dbprintf("Read block error"); + retval = PM3_ESOFT; + goto OUT; + }; + } + + if (mifare_classic_halt(pcs)) { + if (g_dbglevel >= DBG_ERROR) Dbprintf("Halt error"); + retval = PM3_ESOFT; + goto OUT; + }; + +OUT: crypto1_deinit(pcs); - if (g_dbglevel >= 2) DbpString("READ BLOCK FINISHED"); - - LED_B_ON(); - reply_ng(CMD_HF_MIFARE_READBL, status, dataoutbuf, 16); - LED_B_OFF(); - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); LEDsoff(); + set_tracing(false); + BigBuf_free(); + + return retval; +} + +//----------------------------------------------------------------------------- +// Select, Authenticate, Write a MIFARE tag. +// key_auth_cmd is one of MIFARE_AUTH_KEYA, MIFARE_AUTH_KEYB, or MIFARE_MAGIC_GDM_AUTH_KEY +// write_cmd is one of ISO14443A_CMD_WRITEBLOCK, MIFARE_MAGIC_GDM_WRITEBLOCK, or MIFARE_MAGIC_GDM_WRITE_CFG +// block_data must be 16*count bytes large +// block_no through block_no+count-1 normally needs to be within the same sector +//----------------------------------------------------------------------------- +int16_t mifare_cmd_writeblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t write_cmd, uint8_t block_no, uint8_t count, uint8_t *block_data) { + + uint64_t ui64key = bytes_to_num(key, 6); + + uint8_t uid[10] = {0x00}; + uint32_t cuid = 0; + struct Crypto1State mpcs = {0, 0}; + struct Crypto1State *pcs = &mpcs; + + iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + + clear_trace(); + set_tracing(true); + + LED_A_ON(); + LED_B_OFF(); + LED_C_OFF(); + + uint8_t retval = PM3_SUCCESS; + + if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) { + if (g_dbglevel >= DBG_ERROR) Dbprintf("Can't select card"); + retval = PM3_ESOFT; + goto OUT; + }; + + if (mifare_classic_authex_cmd(pcs, cuid, block_no, key_auth_cmd, ui64key, AUTH_FIRST, NULL, NULL)) { + if (g_dbglevel >= DBG_ERROR) Dbprintf("Auth error"); + retval = PM3_ESOFT; + goto OUT; + }; + + for (uint8_t i = 0; i < count; i++) { + int res = mifare_classic_writeblock_ex(pcs, block_no + i, block_data + (i * 16), write_cmd); + if (res == PM3_ETEAROFF) { + retval = PM3_ETEAROFF; + goto OUT; + } else if (res != PM3_SUCCESS) { + if (g_dbglevel >= DBG_INFO) Dbprintf("Write block error"); + retval = PM3_ESOFT; + goto OUT; + } + } + + if (mifare_classic_halt(pcs)) { + if (g_dbglevel >= DBG_ERROR) Dbprintf("Halt error"); + retval = PM3_ESOFT; + goto OUT; + }; + +OUT: + crypto1_deinit(pcs); + + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + LEDsoff(); + set_tracing(false); + BigBuf_free(); + + return retval; +} + +//----------------------------------------------------------------------------- +// Select, Authenticate, Read a MIFARE tag. +// read sector (data = 4 x 16 bytes = 64 bytes, or 16 x 16 bytes = 256 bytes) +//----------------------------------------------------------------------------- +void MifareReadSector(uint8_t sector_no, uint8_t key_type, uint8_t *key) { + uint8_t block_no = FirstBlockOfSector(sector_no); + uint8_t num_blocks = NumBlocksPerSector(sector_no); + + uint8_t outbuf[16 * 16]; + int16_t retval = mifare_cmd_readblocks(MIFARE_AUTH_KEYA + (key_type & 1), key, ISO14443A_CMD_READBLOCK, block_no, num_blocks, outbuf); + + reply_old(CMD_ACK, retval == PM3_SUCCESS, 0, 0, outbuf, 16 * num_blocks); } void MifareUC_Auth(uint8_t arg0, uint8_t *keybytes) { @@ -214,131 +296,6 @@ void MifareUReadBlock(uint8_t arg0, uint8_t arg1, uint8_t *datain) { LEDsoff(); } -void MifareReadConfigBlockGDM(uint8_t *key) { - - int retval = PM3_SUCCESS; - - uint8_t *par = BigBuf_malloc(MAX_PARITY_SIZE); - if (par == NULL) { - retval = PM3_EMALLOC; - goto OUT; - } - - uint8_t *uid = BigBuf_malloc(10); - if (uid == NULL) { - retval = PM3_EMALLOC; - goto OUT; - } - - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); - clear_trace(); - set_tracing(true); - - // variables - uint32_t cuid = 0; - struct Crypto1State mpcs = {0, 0}; - struct Crypto1State *pcs; - pcs = &mpcs; - - uint64_t ui64key = bytes_to_num(key, 6); - uint8_t outbuf[16] = {0x00}; - - if (iso14443a_select_card(uid, NULL, &cuid, true, 0, true) == false) { - retval = PM3_ESOFT; - goto OUT; - } - - if (mifare_classic_authex_2(pcs, cuid, 0, 0, ui64key, AUTH_FIRST, NULL, NULL, true)) { - retval = PM3_ESOFT; - goto OUT; - }; - - if (mifare_classic_readblock_ex(pcs, cuid, 0, outbuf, MIFARE_MAGIC_GDM_READ_CFG)) { - retval = PM3_ESOFT; - goto OUT; - }; - - if (mifare_classic_halt(pcs, cuid)) { - retval = PM3_ESOFT; - goto OUT; - }; - -OUT: - crypto1_deinit(pcs); - - reply_ng(CMD_HF_MIFARE_G4_GDM_CONFIG, retval, outbuf, sizeof(outbuf)); - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - LEDsoff(); - set_tracing(false); - BigBuf_free(); -} - -//----------------------------------------------------------------------------- -// Select, Authenticate, Read a MIFARE tag. -// read sector (data = 4 x 16 bytes = 64 bytes, or 16 x 16 bytes = 256 bytes) -//----------------------------------------------------------------------------- -void MifareReadSector(uint8_t arg0, uint8_t arg1, uint8_t *datain) { - // params - uint8_t sectorNo = arg0; - uint8_t keyType = arg1; - uint64_t ui64Key = 0; - ui64Key = bytes_to_num(datain, 6); - - // variables - uint8_t isOK = 0; - uint8_t dataoutbuf[16 * 16]; - uint8_t uid[10] = {0x00}; - uint32_t cuid = 0; - struct Crypto1State mpcs = {0, 0}; - struct Crypto1State *pcs; - pcs = &mpcs; - - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); - - clear_trace(); - set_tracing(true); - - LED_A_ON(); - LED_B_OFF(); - LED_C_OFF(); - - isOK = 1; - if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) { - isOK = 0; - if (g_dbglevel >= DBG_ERROR) Dbprintf("Can't select card"); - } - - - if (isOK && mifare_classic_auth(pcs, cuid, FirstBlockOfSector(sectorNo), keyType, ui64Key, AUTH_FIRST)) { - isOK = 0; - if (g_dbglevel >= DBG_ERROR) Dbprintf("Auth error"); - } - - for (uint8_t blockNo = 0; isOK && blockNo < NumBlocksPerSector(sectorNo); blockNo++) { - if (mifare_classic_readblock(pcs, cuid, FirstBlockOfSector(sectorNo) + blockNo, dataoutbuf + 16 * blockNo)) { - isOK = 0; - if (g_dbglevel >= DBG_ERROR) Dbprintf("Read sector %2d block %2d error", sectorNo, blockNo); - break; - } - } - - if (mifare_classic_halt(pcs, cuid)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Halt error"); - } - - if (g_dbglevel >= 2) DbpString("READ SECTOR FINISHED"); - - crypto1_deinit(pcs); - - LED_B_ON(); - reply_old(CMD_ACK, isOK, 0, 0, dataoutbuf, 16 * NumBlocksPerSector(sectorNo)); - LED_B_OFF(); - - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - LEDsoff(); - set_tracing(false); -} - // arg0 = blockNo (start) // arg1 = Pages (number of blocks) // arg2 = useKey @@ -438,210 +395,6 @@ void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain) set_tracing(false); } -//----------------------------------------------------------------------------- -// Select, Authenticate, Write a MIFARE tag. -// read block -//----------------------------------------------------------------------------- -void MifareWriteBlock(uint8_t arg0, uint8_t arg1, uint8_t *datain) { - // params - uint8_t blockNo = arg0; - uint8_t keyType = arg1; - uint64_t ui64Key = 0; - uint8_t blockdata[16] = {0x00}; - - ui64Key = bytes_to_num(datain, 6); - memcpy(blockdata, datain + 10, 16); - - // variables - uint8_t uid[10] = {0x00}; - uint32_t cuid = 0; - struct Crypto1State mpcs = {0, 0}; - struct Crypto1State *pcs; - pcs = &mpcs; - - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); - - clear_trace(); - set_tracing(true); - - LED_A_ON(); - LED_B_OFF(); - LED_C_OFF(); - - uint8_t retval = 0; - - if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Can't select card"); - goto OUT; - }; - - if (mifare_classic_auth(pcs, cuid, blockNo, keyType, ui64Key, AUTH_FIRST)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Auth error"); - goto OUT; - }; - - int res = mifare_classic_writeblock(pcs, cuid, blockNo, blockdata); - if (res == PM3_ETEAROFF) { - retval = PM3_ETEAROFF; - goto OUT; - } else if (res != PM3_SUCCESS) { - if (g_dbglevel >= DBG_INFO) Dbprintf("Write block error"); - retval = PM3_ESOFT; - goto OUT; - } - - if (mifare_classic_halt(pcs, cuid)) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Halt error"); - goto OUT; - }; - - retval = 1; - -OUT: - crypto1_deinit(pcs); - - reply_mix(CMD_ACK, retval, 0, 0, 0, 0); - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - LEDsoff(); - set_tracing(false); -} - -void MifareWriteBlockGDM(uint8_t blockno, uint8_t keytype, uint8_t *key, uint8_t *datain) { - - int retval = PM3_SUCCESS; - - // check args - if (datain == NULL) { - retval = PM3_EINVARG; - goto OUT; - } - - uint8_t *par = BigBuf_malloc(MAX_PARITY_SIZE); - if (par == NULL) { - retval = PM3_EMALLOC; - goto OUT; - } - - uint8_t *uid = BigBuf_malloc(10); - if (uid == NULL) { - retval = PM3_EMALLOC; - goto OUT; - } - - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); - clear_trace(); - set_tracing(true); - - // variables - uint32_t cuid = 0; - struct Crypto1State mpcs = {0, 0}; - struct Crypto1State *pcs; - pcs = &mpcs; - - uint64_t ui64key = bytes_to_num(key, 6); - - if (iso14443a_select_card(uid, NULL, &cuid, true, 0, true) == false) { - retval = PM3_ESOFT; - goto OUT; - } - - if (mifare_classic_authex_2(pcs, cuid, blockno, keytype, ui64key, AUTH_FIRST, NULL, NULL, true)) { - retval = PM3_ESOFT; - goto OUT; - }; - - int res = mifare_classic_writeblock_ex(pcs, cuid, blockno, datain, true); - if (res == PM3_ETEAROFF) { - retval = PM3_ETEAROFF; - goto OUT; - } else if (res != PM3_SUCCESS) { - retval = PM3_ESOFT; - goto OUT; - } - - if (mifare_classic_halt(pcs, cuid)) { - retval = PM3_ESOFT; - goto OUT; - }; - -OUT: - crypto1_deinit(pcs); - - reply_ng(CMD_HF_MIFARE_G4_GDM_WRBL, retval, NULL, 0); - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - LEDsoff(); - set_tracing(false); - BigBuf_free(); -} - -void MifareWriteConfigBlockGDM(uint8_t *datain) { - - int retval = PM3_SUCCESS; - - // check args - if (datain == NULL) { - retval = PM3_EINVARG; - goto OUT; - } - - uint8_t *par = BigBuf_malloc(MAX_PARITY_SIZE); - if (par == NULL) { - retval = PM3_EMALLOC; - goto OUT; - } - - uint8_t *uid = BigBuf_malloc(10); - if (uid == NULL) { - retval = PM3_EMALLOC; - goto OUT; - } - - iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); - clear_trace(); - set_tracing(true); - - // variables - uint32_t cuid = 0; - struct Crypto1State mpcs = {0, 0}; - struct Crypto1State *pcs; - pcs = &mpcs; - - if (iso14443a_select_card(uid, NULL, &cuid, true, 0, true) == false) { - retval = PM3_ESOFT; - goto OUT; - } - - uint64_t key = 0; - if (mifare_classic_authex_2(pcs, cuid, 0, 0, key, AUTH_FIRST, NULL, NULL, true)) { - retval = PM3_ESOFT; - goto OUT; - }; - - int res = mifare_classic_write_cfg_block_gdm(pcs, cuid, datain); - if (res == PM3_ETEAROFF) { - retval = PM3_ETEAROFF; - goto OUT; - } else if (res) { - retval = PM3_ESOFT; - goto OUT; - } - - if (mifare_classic_halt(pcs, cuid)) { - retval = PM3_ESOFT; - goto OUT; - }; - -OUT: - crypto1_deinit(pcs); - - reply_ng(CMD_HF_MIFARE_G4_GDM_WRCFG, retval, NULL, 0); - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - LEDsoff(); - set_tracing(false); - BigBuf_free(); -} - - void MifareValue(uint8_t arg0, uint8_t arg1, uint8_t arg2, uint8_t *datain) { // params uint8_t blockNo = arg0; @@ -688,7 +441,7 @@ void MifareValue(uint8_t arg0, uint8_t arg1, uint8_t arg2, uint8_t *datain) { break; }; - if (mifare_classic_value(pcs, cuid, blockNo, blockdata, action) != PM3_SUCCESS) { + if (mifare_classic_value(pcs, blockNo, blockdata, action) != PM3_SUCCESS) { if (g_dbglevel >= DBG_INFO) Dbprintf("Write block error"); break; }; @@ -708,7 +461,7 @@ void MifareValue(uint8_t arg0, uint8_t arg1, uint8_t arg2, uint8_t *datain) { break; } - if (mifare_classic_halt(pcs, cuid)) { + if (mifare_classic_halt(pcs)) { if (g_dbglevel >= DBG_ERROR) Dbprintf("Halt error"); break; }; @@ -1145,7 +898,7 @@ void MifareAcquireEncryptedNonces(uint32_t arg0, uint32_t arg1, uint32_t flags, } // nested authentication - uint16_t len = mifare_sendcmd_short(pcs, AUTH_NESTED, 0x60 + (targetKeyType & 0x01), targetBlockNo, receivedAnswer, par_enc, NULL); + uint16_t len = mifare_sendcmd_short(pcs, AUTH_NESTED, MIFARE_AUTH_KEYA + (targetKeyType & 0x01), targetBlockNo, receivedAnswer, par_enc, NULL); // wait for the card to become ready again CHK_TIMEOUT(); @@ -1267,7 +1020,7 @@ void MifareNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8 } // prepare next select. No need to power down the card. - if (mifare_classic_halt(pcs, cuid)) { + if (mifare_classic_halt(pcs)) { if (g_dbglevel >= DBG_INFO) Dbprintf("Nested: Halt error"); rtr--; continue; @@ -1369,7 +1122,7 @@ void MifareNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8 } // prepare next select. No need to power down the card. - if (mifare_classic_halt(pcs, cuid)) { + if (mifare_classic_halt(pcs)) { if (g_dbglevel >= DBG_INFO) Dbprintf("Nested: Halt error"); continue; } @@ -1491,7 +1244,7 @@ void MifareStaticNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, // Main loop - get crypted nonces for target sector for (uint8_t rtr = 0; rtr < 2; rtr++) { - if (mifare_classic_halt(pcs, cuid)) { + if (mifare_classic_halt(pcs)) { continue; } @@ -1522,7 +1275,7 @@ void MifareStaticNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, target_ks[0] = nt2 ^ target_nt[0]; // second collection - if (mifare_classic_halt(pcs, cuid)) { + if (mifare_classic_halt(pcs)) { continue; } @@ -1618,7 +1371,7 @@ static uint8_t chkKey(struct chk_t *c) { // if successful auth, send HALT // if ( !res ) - // mifare_classic_halt_ex(c->pcs); + // mifare_classic_halt(c->pcs); break; } return res; @@ -1633,7 +1386,7 @@ static uint8_t chkKey_readb(struct chk_t *c, uint8_t *keyb) { return 1; uint8_t data[16] = {0x00}; - uint8_t res = mifare_classic_readblock(c->pcs, c->cuid, c->block, data); + uint8_t res = mifare_classic_readblock(c->pcs, c->block, data); // successful read if (!res) { @@ -1644,7 +1397,7 @@ static uint8_t chkKey_readb(struct chk_t *c, uint8_t *keyb) { } else { res = 3; } - mifare_classic_halt_ex(c->pcs); + mifare_classic_halt(c->pcs); } return res; } @@ -2229,7 +1982,7 @@ void MifarePersonalizeUID(uint8_t keyType, uint8_t perso_option, uint64_t key) { break; } - if (mifare_classic_halt(pcs, cuid)) { + if (mifare_classic_halt(pcs)) { if (g_dbglevel >= DBG_ERROR) Dbprintf("Halt error"); break; } @@ -2372,7 +2125,7 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { for (uint8_t r = 0; r < MAX_RETRIES; r++) { - if (mifare_classic_readblock(pcs, cuid, FirstBlockOfSector(s) + b, data)) { + if (mifare_classic_readblock(pcs, FirstBlockOfSector(s) + b, data)) { retval |= PM3_EPARTIAL; if (g_dbglevel > DBG_ERROR) { Dbprintf("Error reading sector %2d block %2d", s, b); @@ -2398,7 +2151,7 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { } } - int res = mifare_classic_halt(pcs, cuid); + int res = mifare_classic_halt(pcs); (void)res; crypto1_deinit(pcs); @@ -2460,10 +2213,10 @@ void MifareCSetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) { if (g_dbglevel >= DBG_ERROR) Dbprintf("Can't select card"); errormsg = MAGIC_UID; - mifare_classic_halt_ex(NULL); + mifare_classic_halt(NULL); break; } - mifare_classic_halt_ex(NULL); + mifare_classic_halt(NULL); } // wipe tag, fill it with zeros @@ -2489,7 +2242,7 @@ void MifareCSetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { } iso14a_set_timeout(old_timeout); - mifare_classic_halt_ex(NULL); + mifare_classic_halt(NULL); } // write block @@ -2528,7 +2281,7 @@ void MifareCSetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { } if (workFlags & MAGIC_HALT) - mifare_classic_halt_ex(NULL); + mifare_classic_halt(NULL); isOK = true; break; @@ -2600,7 +2353,7 @@ void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { // send HALT if (workFlags & MAGIC_HALT) - mifare_classic_halt_ex(NULL); + mifare_classic_halt(NULL); isOK = true; break; @@ -2628,7 +2381,7 @@ void MifareCIdent(bool is_mfc) { uint8_t rats[4] = {ISO14443A_CMD_RATS, 0x80, 0x31, 0x73}; uint8_t rdblf0[4] = {ISO14443A_CMD_READBLOCK, 0xF0, 0x8D, 0x5f}; uint8_t rdbl00[4] = {ISO14443A_CMD_READBLOCK, 0x00, 0x02, 0xa8}; - uint8_t gen4gmd[4] = {MIFARE_MAGIC_GDM_AUTH_KEY, 0x00, 0x6C, 0x92}; + uint8_t gen4gdm[4] = {MIFARE_MAGIC_GDM_AUTH_KEY, 0x00, 0x6C, 0x92}; uint8_t gen4GetConf[8] = {GEN_4GTU_CMD, 0x00, 0x00, 0x00, 0x00, GEN_4GTU_GETCNF, 0, 0}; uint8_t superGen1[9] = {0x0A, 0x00, 0x00, 0xA6, 0xB0, 0x00, 0x10, 0x14, 0x1D}; @@ -2782,7 +2535,7 @@ void MifareCIdent(bool is_mfc) { iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); if (res == 2) { - ReaderTransmit(gen4gmd, sizeof(gen4gmd), NULL); + ReaderTransmit(gen4gdm, sizeof(gen4gdm), NULL); res = ReaderReceive(buf, par); if (res == 4) { isGen = MAGIC_GEN_4GDM; @@ -3227,12 +2980,12 @@ void MifareSetMod(uint8_t *datain) { } int respLen; - if (((respLen = mifare_sendcmd_short(pcs, CRYPT_ALL, 0x43, mod, receivedAnswer, receivedAnswerPar, NULL)) != 1) || (receivedAnswer[0] != 0x0a)) { + if (((respLen = mifare_sendcmd_short(pcs, CRYPT_ALL, MIFARE_EV1_SETMOD, mod, receivedAnswer, receivedAnswerPar, NULL)) != 1) || (receivedAnswer[0] != 0x0a)) { if (g_dbglevel >= DBG_ERROR) Dbprintf("SetMod error; response[0]: %hhX, len: %d", receivedAnswer[0], respLen); break; } - if (mifare_classic_halt(pcs, cuid)) { + if (mifare_classic_halt(pcs)) { if (g_dbglevel >= DBG_ERROR) Dbprintf("Halt error"); break; } diff --git a/armsrc/mifarecmd.h b/armsrc/mifarecmd.h index a6623c006..b7f7d6379 100644 --- a/armsrc/mifarecmd.h +++ b/armsrc/mifarecmd.h @@ -19,19 +19,18 @@ #include "common.h" -void MifareReadBlock(uint8_t blockNo, uint8_t keyType, uint8_t *datain); +int16_t mifare_cmd_readblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t read_cmd, uint8_t block_no, uint8_t count, uint8_t *block_data); +int16_t mifare_cmd_writeblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t write_cmd, uint8_t block_no, uint8_t count, uint8_t *block_data); +void MifareReadSector(uint8_t sector_no, uint8_t key_type, uint8_t *key); +void MifareValue(uint8_t arg0, uint8_t arg1, uint8_t arg2, uint8_t *datain); void MifareUReadBlock(uint8_t arg0, uint8_t arg1, uint8_t *datain); void MifareUC_Auth(uint8_t arg0, uint8_t *keybytes); void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain); -void MifareReadSector(uint8_t arg0, uint8_t arg1, uint8_t *datain); -void MifareWriteBlock(uint8_t arg0, uint8_t arg1, uint8_t *datain); -void MifareValue(uint8_t arg0, uint8_t arg1, uint8_t arg2, uint8_t *datain); void MifareUWriteBlockCompat(uint8_t arg0, uint8_t arg1, uint8_t *datain); - void MifareUWriteBlock(uint8_t arg0, uint8_t arg1, uint8_t *datain); -void MifareNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8_t targetKeyType, bool calibrate, uint8_t *key); +void MifareNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8_t targetKeyType, bool calibrate, uint8_t *key); void MifareStaticNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8_t targetKeyType, uint8_t *key); void MifareAcquireEncryptedNonces(uint32_t arg0, uint32_t arg1, uint32_t flags, uint8_t *datain); @@ -58,11 +57,6 @@ void MifareGen3UID(uint8_t uidlen, uint8_t *uid); // Gen 3 magic card set UID wi void MifareGen3Blk(uint8_t block_len, uint8_t *block); // Gen 3 magic card overwrite manufacturer block void MifareGen3Freez(void); // Gen 3 magic card lock further UID changes -// MFC GEN4 GDM -void MifareReadConfigBlockGDM(uint8_t *key); -void MifareWriteConfigBlockGDM(uint8_t *datain); -void MifareWriteBlockGDM(uint8_t blockno, uint8_t keytype, uint8_t *key, uint8_t *datain); - // MFC GEN4 GTU void MifareG4ReadBlk(uint8_t blockno, uint8_t *pwd, uint8_t workFlags); void MifareG4WriteBlk(uint8_t blockno, uint8_t *pwd, uint8_t *data, uint8_t workFlags); diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c index b17ac19bc..e94d09f40 100644 --- a/armsrc/mifareutil.c +++ b/armsrc/mifareutil.c @@ -139,9 +139,9 @@ int mifare_classic_auth(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, return mifare_classic_authex(pcs, uid, blockNo, keyType, ui64Key, isNested, NULL, NULL); } int mifare_classic_authex(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t keyType, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *timing) { - return mifare_classic_authex_2(pcs, uid, blockNo, keyType, ui64Key, isNested, ntptr, timing, false); + return mifare_classic_authex_cmd(pcs, uid, blockNo, keyType ? MIFARE_AUTH_KEYA : MIFARE_AUTH_KEYB, ui64Key, isNested, ntptr, timing); } -int mifare_classic_authex_2(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t keyType, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *timing, bool is_gdm) { +int mifare_classic_authex_cmd(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t cmd, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *timing) { // "random" reader nonce: uint8_t nr[4]; @@ -150,9 +150,8 @@ int mifare_classic_authex_2(struct Crypto1State *pcs, uint32_t uid, uint8_t bloc uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0x00}; uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = {0x00}; - // Transmit MIFARE_CLASSIC_AUTH 0x60, 0x61 or GDM 0x80 - uint8_t cmdbyte = (is_gdm) ? MIFARE_MAGIC_GDM_AUTH_KEY : MIFARE_AUTH_KEYA + (keyType & 0x01); - int len = mifare_sendcmd_short(pcs, isNested, cmdbyte, blockNo, receivedAnswer, receivedAnswerPar, timing); + // Transmit MIFARE_CLASSIC_AUTH, 0x60 for key A, 0x61 for key B, or 0x80 for GDM backdoor + int len = mifare_sendcmd_short(pcs, isNested, cmd, blockNo, receivedAnswer, receivedAnswerPar, timing); if (len != 4) return 1; // Save the tag nonce (nt) @@ -229,10 +228,10 @@ int mifare_classic_authex_2(struct Crypto1State *pcs, uint32_t uid, uint8_t bloc return 0; } -int mifare_classic_readblock(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t *blockData) { - return mifare_classic_readblock_ex(pcs, uid, blockNo, blockData, ISO14443A_CMD_READBLOCK); +int mifare_classic_readblock(struct Crypto1State *pcs, uint8_t blockNo, uint8_t *blockData) { + return mifare_classic_readblock_ex(pcs, blockNo, blockData, ISO14443A_CMD_READBLOCK); } -int mifare_classic_readblock_ex(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t *blockData, uint8_t iso_byte) { +int mifare_classic_readblock_ex(struct Crypto1State *pcs, uint8_t blockNo, uint8_t *blockData, uint8_t iso_byte) { uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0x00}; uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = {0x00}; @@ -415,22 +414,18 @@ int mifare_ultra_readblock(uint8_t blockNo, uint8_t *blockData) { return res; } -int mifare_classic_writeblock(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t *blockData) { - return mifare_classic_writeblock_ex(pcs, uid, blockNo, blockData, false); +int mifare_classic_writeblock(struct Crypto1State *pcs, uint8_t blockNo, uint8_t *blockData) { + return mifare_classic_writeblock_ex(pcs, blockNo, blockData, ISO14443A_CMD_WRITEBLOCK); } -int mifare_classic_writeblock_ex(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t *blockData, bool is_gdm) { +int mifare_classic_writeblock_ex(struct Crypto1State *pcs, uint8_t blockNo, uint8_t *blockData, uint8_t cmd) { // variables uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0x00}; uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = {0x00}; - // command MIFARE_MAGIC_GDM_WRITEBLOCK - uint16_t len; - if (is_gdm) { - len = mifare_sendcmd_short(pcs, 1, MIFARE_MAGIC_GDM_WRITEBLOCK, blockNo, receivedAnswer, receivedAnswerPar, NULL); - } else { - len = mifare_sendcmd_short(pcs, 1, ISO14443A_CMD_WRITEBLOCK, blockNo, receivedAnswer, receivedAnswerPar, NULL); - } + // cmd is ISO14443A_CMD_WRITEBLOCK for normal tags, but could also be + // MIFARE_MAGIC_GDM_WRITEBLOCK or MIFARE_MAGIC_GDM_WRITE_CFG for certain magic tags + uint16_t len = mifare_sendcmd_short(pcs, 1, cmd, blockNo, receivedAnswer, receivedAnswerPar, NULL); if ((len != 1) || (receivedAnswer[0] != 0x0A)) { // 0x0a - ACK if (g_dbglevel >= DBG_INFO) Dbprintf("Cmd Error: %02x", receivedAnswer[0]); @@ -441,15 +436,19 @@ int mifare_classic_writeblock_ex(struct Crypto1State *pcs, uint32_t uid, uint8_t memcpy(d_block, blockData, 16); AddCrc14A(d_block, 16); - // enough for 18 Bytes to send - uint8_t par[3] = {0x00, 0x00, 0x00}; - // crypto - for (uint32_t pos = 0; pos < 18; pos++) { - d_block_enc[pos] = crypto1_byte(pcs, 0x00, 0) ^ d_block[pos]; - par[pos >> 3] |= (((filter(pcs->odd) ^ oddparity8(d_block[pos])) & 0x01) << (7 - (pos & 0x0007))); - } + if (pcs) { + // enough for 18 Bytes to send + uint8_t par[3] = {0x00, 0x00, 0x00}; + // crypto + for (uint32_t pos = 0; pos < 18; pos++) { + d_block_enc[pos] = crypto1_byte(pcs, 0x00, 0) ^ d_block[pos]; + par[pos >> 3] |= (((filter(pcs->odd) ^ oddparity8(d_block[pos])) & 0x01) << (7 - (pos & 0x0007))); + } - ReaderTransmitPar(d_block_enc, sizeof(d_block_enc), par, NULL); + ReaderTransmitPar(d_block_enc, sizeof(d_block_enc), par, NULL); + } else { + ReaderTransmit(d_block, sizeof(d_block), NULL); + } // tearoff occurred if (tearoff_hook() == PM3_ETEAROFF) { @@ -459,10 +458,14 @@ int mifare_classic_writeblock_ex(struct Crypto1State *pcs, uint32_t uid, uint8_t len = ReaderReceive(receivedAnswer, receivedAnswerPar); uint8_t res = 0; - res |= (crypto1_bit(pcs, 0, 0) ^ BIT(receivedAnswer[0], 0)) << 0; - res |= (crypto1_bit(pcs, 0, 0) ^ BIT(receivedAnswer[0], 1)) << 1; - res |= (crypto1_bit(pcs, 0, 0) ^ BIT(receivedAnswer[0], 2)) << 2; - res |= (crypto1_bit(pcs, 0, 0) ^ BIT(receivedAnswer[0], 3)) << 3; + if (pcs) { + res |= (crypto1_bit(pcs, 0, 0) ^ BIT(receivedAnswer[0], 0)) << 0; + res |= (crypto1_bit(pcs, 0, 0) ^ BIT(receivedAnswer[0], 1)) << 1; + res |= (crypto1_bit(pcs, 0, 0) ^ BIT(receivedAnswer[0], 2)) << 2; + res |= (crypto1_bit(pcs, 0, 0) ^ BIT(receivedAnswer[0], 3)) << 3; + } else { + res = receivedAnswer[0]; + } if ((len != 1) || (res != 0x0A)) { if (g_dbglevel >= DBG_INFO) Dbprintf("Cmd send data2 Error: %02x", res); @@ -472,52 +475,7 @@ int mifare_classic_writeblock_ex(struct Crypto1State *pcs, uint32_t uid, uint8_t return PM3_SUCCESS; } -int mifare_classic_write_cfg_block_gdm(struct Crypto1State *pcs, uint32_t uid, uint8_t *blockData) { - - // variables - uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0x00}; - uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = {0x00}; - - uint16_t len = mifare_sendcmd_short(pcs, 1, MIFARE_MAGIC_GDM_WRITE_CFG, 0, receivedAnswer, receivedAnswerPar, NULL); - if ((len != 1) || (receivedAnswer[0] != 0x0A)) { - return PM3_EFAILED; - } - - uint8_t d_block[18], d_block_enc[18]; - memcpy(d_block, blockData, 16); - AddCrc14A(d_block, 16); - - // enough for 18 Bytes to send - uint8_t par[3] = {0x00, 0x00, 0x00}; - // crypto - for (uint32_t pos = 0; pos < 18; pos++) { - d_block_enc[pos] = crypto1_byte(pcs, 0x00, 0) ^ d_block[pos]; - par[pos >> 3] |= (((filter(pcs->odd) ^ oddparity8(d_block[pos])) & 0x01) << (7 - (pos & 0x0007))); - } - - ReaderTransmitPar(d_block_enc, sizeof(d_block_enc), par, NULL); - - // tearoff occurred - if (tearoff_hook() == PM3_ETEAROFF) { - return PM3_ETEAROFF; - } else { - // Receive the response - len = ReaderReceive(receivedAnswer, receivedAnswerPar); - - uint8_t res = 0; - res |= (crypto1_bit(pcs, 0, 0) ^ BIT(receivedAnswer[0], 0)) << 0; - res |= (crypto1_bit(pcs, 0, 0) ^ BIT(receivedAnswer[0], 1)) << 1; - res |= (crypto1_bit(pcs, 0, 0) ^ BIT(receivedAnswer[0], 2)) << 2; - res |= (crypto1_bit(pcs, 0, 0) ^ BIT(receivedAnswer[0], 3)) << 3; - - if ((len != 1) || (res != 0x0A)) { - return PM3_EFAILED; - } - } - return PM3_SUCCESS; -} - -int mifare_classic_value(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t *blockData, uint8_t action) { +int mifare_classic_value(struct Crypto1State *pcs, uint8_t blockNo, uint8_t *blockData, uint8_t action) { // variables uint16_t len = 0; uint32_t pos = 0; @@ -625,7 +583,8 @@ int mifare_ultra_writeblock(uint8_t blockNo, uint8_t *blockData) { } return PM3_SUCCESS; } -int mifare_classic_halt_ex(struct Crypto1State *pcs) { + +int mifare_classic_halt(struct Crypto1State *pcs) { uint8_t receivedAnswer[4] = {0x00, 0x00, 0x00, 0x00}; uint16_t len = mifare_sendcmd_short(pcs, (pcs == NULL) ? CRYPT_NONE : CRYPT_ALL, ISO14443A_CMD_HALT, 0x00, receivedAnswer, NULL, NULL); if (len != 0) { @@ -634,19 +593,9 @@ int mifare_classic_halt_ex(struct Crypto1State *pcs) { } return 0; } -int mifare_classic_halt(struct Crypto1State *pcs, uint32_t uid) { - return mifare_classic_halt_ex(pcs); -} int mifare_ultra_halt(void) { - uint16_t len = 0; - uint8_t receivedAnswer[4] = {0x00, 0x00, 0x00, 0x00}; - len = mifare_sendcmd_short(NULL, CRYPT_NONE, ISO14443A_CMD_HALT, 0x00, receivedAnswer, NULL, NULL); - if (len != 0) { - if (g_dbglevel >= DBG_EXTENDED) Dbprintf("halt warning. response len: %x", len); - return 1; - } - return 0; + return mifare_classic_halt(NULL); } diff --git a/armsrc/mifareutil.h b/armsrc/mifareutil.h index e5731ce36..9a179a553 100644 --- a/armsrc/mifareutil.h +++ b/armsrc/mifareutil.h @@ -72,17 +72,15 @@ uint16_t mifare_sendcmd_short(struct Crypto1State *pcs, uint8_t crypted, uint8_t // mifare classic int mifare_classic_auth(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t keyType, uint64_t ui64Key, uint8_t isNested); int mifare_classic_authex(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t keyType, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *timing); -int mifare_classic_authex_2(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t keyType, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *timing, bool is_gdm); +int mifare_classic_authex_cmd(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t cmd, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *timing); -int mifare_classic_readblock(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t *blockData); -int mifare_classic_readblock_ex(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t *blockData, uint8_t iso_byte); +int mifare_classic_readblock(struct Crypto1State *pcs, uint8_t blockNo, uint8_t *blockData); +int mifare_classic_readblock_ex(struct Crypto1State *pcs, uint8_t blockNo, uint8_t *blockData, uint8_t iso_byte); -int mifare_classic_halt(struct Crypto1State *pcs, uint32_t uid); -int mifare_classic_halt_ex(struct Crypto1State *pcs); -int mifare_classic_writeblock(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t *blockData); -int mifare_classic_writeblock_ex(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t *blockData, bool is_gdm); -int mifare_classic_value(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t *blockData, uint8_t action); -int mifare_classic_write_cfg_block_gdm(struct Crypto1State *pcs, uint32_t uid, uint8_t *blockData); +int mifare_classic_halt(struct Crypto1State *pcs); +int mifare_classic_writeblock(struct Crypto1State *pcs, uint8_t blockNo, uint8_t *blockData); +int mifare_classic_writeblock_ex(struct Crypto1State *pcs, uint8_t blockNo, uint8_t *blockData, uint8_t cmd); +int mifare_classic_value(struct Crypto1State *pcs, uint8_t blockNo, uint8_t *blockData, uint8_t action); // Ultralight/NTAG... int mifare_ul_ev1_auth(uint8_t *keybytes, uint8_t *pack); diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 323c7ef7e..326a646b9 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -910,11 +910,19 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr uint8_t crcc = iso14443A_CRC_check(hdr->isResponse, mfData, mfDataLen); //iceman: colorise crc bytes here will need a refactor of code from above. - PrintAndLogEx(NORMAL, " | | * |%-*s | %-4s| %s", - str_padder, - sprint_hex_inrow_spaces(mfData, mfDataLen, 2), - (crcc == 0 ? _RED_(" !! ") : (crcc == 1 ? _GREEN_(" ok ") : " ")), - explanation); + if (hdr->isResponse) { + PrintAndLogEx(NORMAL, " | | * |%-*s | %-4s| %s", + str_padder, + sprint_hex_inrow_spaces(mfData, mfDataLen, 2), + (crcc == 0 ? _RED_(" !! ") : (crcc == 1 ? _GREEN_(" ok ") : " ")), + explanation); + } else { + PrintAndLogEx(NORMAL, " | | * |" _YELLOW_("%-*s")" | " _YELLOW_("%s") "| " _YELLOW_("%s"), + str_padder, + sprint_hex_inrow_spaces(mfData, mfDataLen, 2), + (crcc == 0 ? _RED_(" !! ") : (crcc == 1 ? _GREEN_(" ok ") : " ")), + explanation); + } } } diff --git a/include/protocols.h b/include/protocols.h index 0183f9f0d..721dccaf5 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -191,12 +191,13 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define MIFARE_CMD_TRANSFER 0xB0 #define MIFARE_MAGIC_GDM_AUTH_KEY 0x80 +#define MIFARE_MAGIC_GDM_READBLOCK 0x38 #define MIFARE_MAGIC_GDM_WRITEBLOCK 0xA8 #define MIFARE_MAGIC_GDM_READ_CFG 0xE0 #define MIFARE_MAGIC_GDM_WRITE_CFG 0xE1 #define MIFARE_EV1_PERSONAL_UID 0x40 -#define MIFARE_EV1_SETMODE 0x43 +#define MIFARE_EV1_SETMOD 0x43 #define MIFARE_EV1_UIDF0 0x00 #define MIFARE_EV1_UIDF1 0x40 #define MIFARE_EV1_UIDF2 0x20 From a19732bb6ec0517488386c8e63bb04af43e54067 Mon Sep 17 00:00:00 2001 From: wh201906 Date: Tue, 4 Jul 2023 16:19:33 +0800 Subject: [PATCH 0125/1034] Fix timeout of TCP connections --- client/src/comms.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/comms.c b/client/src/comms.c index 64bea9f65..a17bdbaf9 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -623,6 +623,7 @@ int TestProxmark(pm3_device_t *dev) { PacketResponseNG resp; uint16_t len = 32; + bool is_tcp_conn = false; uint8_t data[len]; for (uint16_t i = 0; i < len; i++) data[i] = i & 0xFF; @@ -665,16 +666,17 @@ int TestProxmark(pm3_device_t *dev) { memcpy(&g_pm3_capabilities, resp.data.asBytes, MIN(sizeof(capabilities_t), resp.length)); g_conn.send_via_fpc_usart = g_pm3_capabilities.via_fpc; g_conn.uart_speed = g_pm3_capabilities.baudrate; + is_tcp_conn = memcmp(g_conn.serial_port_name, "tcp:", 4) == 0; PrintAndLogEx(INFO, "Communicating with PM3 over %s%s%s", g_conn.send_via_fpc_usart ? _YELLOW_("FPC UART") : _YELLOW_("USB-CDC"), - memcmp(g_conn.serial_port_name, "tcp:", 4) == 0 ? " over " _YELLOW_("TCP") : "", + is_tcp_conn ? " over " _YELLOW_("TCP") : "", memcmp(g_conn.serial_port_name, "bt:", 3) == 0 ? " over " _YELLOW_("BT") : ""); if (g_conn.send_via_fpc_usart) { PrintAndLogEx(INFO, "PM3 UART serial baudrate: " _YELLOW_("%u") "\n", g_conn.uart_speed); } else { - int res = uart_reconfigure_timeouts(UART_USB_CLIENT_RX_TIMEOUT_MS); + int res = uart_reconfigure_timeouts(is_tcp_conn ? UART_TCP_CLIENT_RX_TIMEOUT_MS : UART_USB_CLIENT_RX_TIMEOUT_MS); if (res != PM3_SUCCESS) { return res; } From 879bf5876f2f98301e246dec0b0c44bb5ddd82d1 Mon Sep 17 00:00:00 2001 From: wh201906 Date: Tue, 4 Jul 2023 16:21:51 +0800 Subject: [PATCH 0126/1034] Add CHANGELOG entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca0fede15..6bfc7c134 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed timeout of TCP connections (@wh201906) ## [Seven.4.16717][2023-06-25] - Change `hf 14a info` - now identifes QL88 tags (@iceman1001) From b74c5db4f9a1677da0c112d352b60dc3337812ef Mon Sep 17 00:00:00 2001 From: wh201906 Date: Wed, 5 Jul 2023 22:12:11 +0800 Subject: [PATCH 0127/1034] Make communication timeout configurable --- client/src/cmdhw.c | 43 ++++++++++++++++++++++++++++++++++++ client/src/uart/uart.h | 8 +++++-- client/src/uart/uart_posix.c | 4 ++++ client/src/uart/uart_win32.c | 4 ++++ 4 files changed, 57 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index 3ddd98189..c685b83f2 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -33,6 +33,7 @@ #include "pm3_cmd.h" #include "pmflash.h" // rdv40validation_t #include "cmdflashmem.h" // get_signature.. +#include "uart/uart.h" // configure timeout static int CmdHelp(const char *Cmd); @@ -924,6 +925,47 @@ static int CmdTia(const char *Cmd) { return PM3_SUCCESS; } +static int CmdTimeout(const char *Cmd) { + + CLIParserContext *ctx; + CLIParserInit(&ctx, "hw timeout", + "Set the communication timeout on the client side", + "hw timeout --> Show current timeout\n" + "hw timeout -t 20 --> Set the timeout to 20ms\n" + "hw timeout -t 500 --> Set the timeout to 500ms\n" + ); + + void *argtable[] = { + arg_param_begin, + arg_int0("t", "timeout", "", "timeout in ms"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + int32_t arg = arg_get_int_def(ctx, 1, -1); + CLIParserFree(ctx); + + uint32_t oldTimeout = uart_get_timeouts(); + + // timeout is not given/invalid, just show the current timeout then return + if(arg < 0) { + PrintAndLogEx(INFO, "Current communication timeout: %ums", oldTimeout); + return PM3_SUCCESS; + } + + uint32_t newTimeout = arg; + // UART_USB_CLIENT_RX_TIMEOUT_MS is considered as the minimum required timeout. + if (newTimeout < UART_USB_CLIENT_RX_TIMEOUT_MS) { + PrintAndLogEx(WARNING, "Timeout less than %ums might cause errors.", UART_USB_CLIENT_RX_TIMEOUT_MS); + } + else if(newTimeout > 5000) { + PrintAndLogEx(WARNING, "Timeout greater than 5000ms makes the client unresponsive."); + } + uart_reconfigure_timeouts(newTimeout); + PrintAndLogEx(INFO, "Old communication timeout: %ums", oldTimeout); + PrintAndLogEx(INFO, "New communication timeout: %ums", newTimeout); + return PM3_SUCCESS; +} + static int CmdPing(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hw ping", @@ -1062,6 +1104,7 @@ static command_t CommandTable[] = { {"status", CmdStatus, IfPm3Present, "Show runtime status information about the connected Proxmark3"}, {"tearoff", CmdTearoff, IfPm3Present, "Program a tearoff hook for the next command supporting tearoff"}, {"tia", CmdTia, IfPm3Present, "Trigger a Timing Interval Acquisition to re-adjust the RealTimeCounter divider"}, + {"timeout", CmdTimeout, AlwaysAvailable, "Set the communication timeout on the client side"}, {"tune", CmdTune, IfPm3Present, "Measure antenna tuning"}, {"version", CmdVersion, AlwaysAvailable, "Show version information about the client and the connected Proxmark3, if any"}, {NULL, NULL, NULL, NULL} diff --git a/client/src/uart/uart.h b/client/src/uart/uart.h index ba4537769..ae3896f73 100644 --- a/client/src/uart/uart.h +++ b/client/src/uart/uart.h @@ -74,8 +74,12 @@ bool uart_set_speed(serial_port sp, const uint32_t uiPortSpeed); */ uint32_t uart_get_speed(const serial_port sp); -/* Reconfigure timeouts +/* Reconfigure timeouts (ms) */ int uart_reconfigure_timeouts(uint32_t value); -#endif // _UART_H_ +/* Get timeouts (ms) + */ +uint32_t uart_get_timeouts(void); + +#endif // _UART_H_ diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index c64d85db6..106c8d209 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -69,6 +69,10 @@ int uart_reconfigure_timeouts(uint32_t value) { return PM3_SUCCESS; } +uint32_t uart_get_timeouts(void) { + return newtimeout_value; +} + serial_port uart_open(const char *pcPortName, uint32_t speed) { serial_port_unix_t_t *sp = calloc(sizeof(serial_port_unix_t_t), sizeof(uint8_t)); diff --git a/client/src/uart/uart_win32.c b/client/src/uart/uart_win32.c index cb8b92a73..541804a24 100644 --- a/client/src/uart/uart_win32.c +++ b/client/src/uart/uart_win32.c @@ -54,6 +54,10 @@ int uart_reconfigure_timeouts(uint32_t value) { return PM3_SUCCESS; } +uint32_t uart_get_timeouts(void) { + return newtimeout_value; +} + static int uart_reconfigure_timeouts_polling(serial_port sp) { if (newtimeout_pending == false) return PM3_SUCCESS; From 656d0256ac84b44e0cffcc8cdcd328998600b93a Mon Sep 17 00:00:00 2001 From: wh201906 Date: Wed, 5 Jul 2023 22:33:29 +0800 Subject: [PATCH 0128/1034] Add CHANGELOG entry --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bfc7c134..df3601ba1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Fixed timeout of TCP connections (@wh201906) + - Fixed the timeout of TCP connections (@wh201906) + - Made the connection timeout configurable (@wh201906) ## [Seven.4.16717][2023-06-25] - Change `hf 14a info` - now identifes QL88 tags (@iceman1001) From e43f6804a1634591dbf29dc0216da6ac24b01126 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 6 Jul 2023 22:37:34 +0200 Subject: [PATCH 0129/1034] style --- armsrc/fpgaloader.c | 4 +- client/src/cmdhw.c | 5 +- client/src/pm3line_vocabulory.h | 1524 +++++++++++++-------------- fpga/Makefile | 7 +- tools/fpga_compress/fpga_compress.c | 6 +- 5 files changed, 775 insertions(+), 771 deletions(-) diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index 6715aa962..5c5b6f8c5 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -407,9 +407,9 @@ static int bitparse_find_section(int bitstream_version, char section_name, uint3 current_length += get_from_fpga_stream(bitstream_version, compressed_fpga_stream, output_buffer) << 8; current_length += get_from_fpga_stream(bitstream_version, compressed_fpga_stream, output_buffer) << 0; numbytes += 4; - if (current_length > 300*1024) { + if (current_length > 300 * 1024) { /* section e should never exceed about 300KB, if the length is too big limit it but still send the bitstream just in case */ - current_length = 300*1024; + current_length = 300 * 1024; } break; default: /* Two byte length field */ diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index c685b83f2..57bba66aa 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -947,7 +947,7 @@ static int CmdTimeout(const char *Cmd) { uint32_t oldTimeout = uart_get_timeouts(); // timeout is not given/invalid, just show the current timeout then return - if(arg < 0) { + if (arg < 0) { PrintAndLogEx(INFO, "Current communication timeout: %ums", oldTimeout); return PM3_SUCCESS; } @@ -956,8 +956,7 @@ static int CmdTimeout(const char *Cmd) { // UART_USB_CLIENT_RX_TIMEOUT_MS is considered as the minimum required timeout. if (newTimeout < UART_USB_CLIENT_RX_TIMEOUT_MS) { PrintAndLogEx(WARNING, "Timeout less than %ums might cause errors.", UART_USB_CLIENT_RX_TIMEOUT_MS); - } - else if(newTimeout > 5000) { + } else if (newTimeout > 5000) { PrintAndLogEx(WARNING, "Timeout greater than 5000ms makes the client unresponsive."); } uart_reconfigure_timeouts(newTimeout); diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index ffad57057..7284af351 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -31,767 +31,767 @@ typedef struct vocabulory_s { } vocabulory_t; const static vocabulory_t vocabulory[] = { - { 1, "help" }, - { 0, "auto" }, - { 1, "clear" }, - { 1, "hints" }, - { 1, "msleep" }, - { 1, "rem" }, - { 1, "quit" }, - { 1, "exit" }, - { 1, "prefs help" }, - { 1, "prefs show" }, - { 1, "prefs get barmode" }, - { 1, "prefs get clientdebug" }, - { 1, "prefs get clientdelay" }, - { 1, "prefs get color" }, - { 1, "prefs get savepaths" }, - { 1, "prefs get emoji" }, - { 1, "prefs get hints" }, - { 1, "prefs get output" }, - { 1, "prefs get plotsliders" }, - { 1, "prefs set help" }, - { 1, "prefs set barmode" }, - { 1, "prefs set clientdebug" }, - { 1, "prefs set clientdelay" }, - { 1, "prefs set color" }, - { 1, "prefs set emoji" }, - { 1, "prefs set hints" }, - { 1, "prefs set savepaths" }, - { 1, "prefs set output" }, - { 1, "prefs set plotsliders" }, - { 1, "analyse help" }, - { 1, "analyse lcr" }, - { 1, "analyse crc" }, - { 1, "analyse chksum" }, - { 1, "analyse dates" }, - { 1, "analyse lfsr" }, - { 1, "analyse a" }, - { 1, "analyse nuid" }, - { 1, "analyse demodbuff" }, - { 1, "analyse freq" }, - { 1, "analyse foo" }, - { 1, "analyse units" }, - { 1, "data help" }, - { 1, "data biphaserawdecode" }, - { 1, "data detectclock" }, - { 1, "data fsktonrz" }, - { 1, "data manrawdecode" }, - { 1, "data modulation" }, - { 1, "data rawdemod" }, - { 1, "data askedgedetect" }, - { 1, "data autocorr" }, - { 1, "data dirthreshold" }, - { 1, "data decimate" }, - { 1, "data undecimate" }, - { 1, "data hide" }, - { 1, "data hpf" }, - { 1, "data iir" }, - { 1, "data grid" }, - { 1, "data ltrim" }, - { 1, "data mtrim" }, - { 1, "data norm" }, - { 1, "data plot" }, - { 1, "data rtrim" }, - { 1, "data setgraphmarkers" }, - { 1, "data shiftgraphzero" }, - { 1, "data timescale" }, - { 1, "data zerocrossings" }, - { 1, "data convertbitstream" }, - { 1, "data getbitstream" }, - { 1, "data asn1" }, - { 1, "data bin2hex" }, - { 0, "data bitsamples" }, - { 1, "data clear" }, - { 1, "data diff" }, - { 0, "data hexsamples" }, - { 1, "data hex2bin" }, - { 1, "data load" }, - { 1, "data num" }, - { 1, "data print" }, - { 0, "data samples" }, - { 1, "data save" }, - { 1, "data setdebugmode" }, - { 0, "data tune" }, - { 1, "emv help" }, - { 0, "emv exec" }, - { 0, "emv pse" }, - { 0, "emv search" }, - { 0, "emv select" }, - { 0, "emv gpo" }, - { 0, "emv readrec" }, - { 0, "emv genac" }, - { 0, "emv challenge" }, - { 0, "emv intauth" }, - { 0, "emv scan" }, - { 1, "emv test" }, - { 1, "emv list" }, - { 0, "emv roca" }, - { 1, "hf help" }, - { 1, "hf list" }, - { 0, "hf plot" }, - { 0, "hf tune" }, - { 1, "hf search" }, - { 0, "hf sniff" }, - { 1, "hf 14a help" }, - { 1, "hf 14a list" }, - { 0, "hf 14a antifuzz" }, - { 0, "hf 14a config" }, - { 0, "hf 14a cuids" }, - { 0, "hf 14a info" }, - { 0, "hf 14a sim" }, - { 0, "hf 14a sniff" }, - { 0, "hf 14a raw" }, - { 0, "hf 14a reader" }, - { 0, "hf 14a apdu" }, - { 0, "hf 14a apdufind" }, - { 0, "hf 14a chaining" }, - { 0, "hf 14a ndefformat" }, - { 0, "hf 14a ndefread" }, - { 0, "hf 14a ndefwrite" }, - { 1, "hf 14b help" }, - { 0, "hf 14b apdu" }, - { 0, "hf 14b dump" }, - { 0, "hf 14b info" }, - { 1, "hf 14b list" }, - { 0, "hf 14b ndefread" }, - { 0, "hf 14b raw" }, - { 0, "hf 14b reader" }, - { 0, "hf 14b sim" }, - { 0, "hf 14b sniff" }, - { 0, "hf 14b rdbl" }, - { 0, "hf 14b sriwrite" }, - { 1, "hf 14b view" }, - { 1, "hf 15 help" }, - { 1, "hf 15 list" }, - { 1, "hf 15 demod" }, - { 0, "hf 15 dump" }, - { 0, "hf 15 info" }, - { 0, "hf 15 sniff" }, - { 0, "hf 15 raw" }, - { 0, "hf 15 rdbl" }, - { 0, "hf 15 rdmulti" }, - { 0, "hf 15 reader" }, - { 0, "hf 15 restore" }, - { 0, "hf 15 samples" }, - { 0, "hf 15 eload" }, - { 0, "hf 15 esave" }, - { 0, "hf 15 eview" }, - { 0, "hf 15 sim" }, - { 0, "hf 15 slixwritepwd" }, - { 0, "hf 15 slixeasdisable" }, - { 0, "hf 15 slixeasenable" }, - { 0, "hf 15 slixprivacydisable" }, - { 0, "hf 15 slixprivacyenable" }, - { 0, "hf 15 passprotectafi" }, - { 0, "hf 15 passprotecteas" }, - { 0, "hf 15 wrbl" }, - { 0, "hf 15 findafi" }, - { 0, "hf 15 writeafi" }, - { 0, "hf 15 writedsfid" }, - { 0, "hf 15 csetuid" }, - { 1, "hf cipurse help" }, - { 0, "hf cipurse info" }, - { 0, "hf cipurse select" }, - { 0, "hf cipurse auth" }, - { 0, "hf cipurse read" }, - { 0, "hf cipurse write" }, - { 0, "hf cipurse aread" }, - { 0, "hf cipurse awrite" }, - { 0, "hf cipurse formatall" }, - { 0, "hf cipurse create" }, - { 0, "hf cipurse delete" }, - { 0, "hf cipurse updkey" }, - { 0, "hf cipurse updakey" }, - { 0, "hf cipurse default" }, - { 1, "hf cipurse test" }, - { 1, "hf epa help" }, - { 0, "hf epa cnonces" }, - { 0, "hf epa replay" }, - { 0, "hf epa sim" }, - { 1, "hf emrtd help" }, - { 0, "hf emrtd dump" }, - { 1, "hf emrtd info" }, - { 1, "hf emrtd list" }, - { 1, "hf felica help" }, - { 1, "hf felica list" }, - { 0, "hf felica reader" }, - { 0, "hf felica info" }, - { 0, "hf felica sniff" }, - { 0, "hf felica raw" }, - { 0, "hf felica rdbl" }, - { 0, "hf felica wrbl" }, - { 0, "hf felica rqservice" }, - { 0, "hf felica rqresponse" }, - { 0, "hf felica scsvcode" }, - { 0, "hf felica rqsyscode" }, - { 0, "hf felica auth1" }, - { 0, "hf felica auth2" }, - { 0, "hf felica rqspecver" }, - { 0, "hf felica resetmode" }, - { 0, "hf felica litesim" }, - { 0, "hf felica litedump" }, - { 1, "hf fido help" }, - { 1, "hf fido list" }, - { 0, "hf fido info" }, - { 0, "hf fido reg" }, - { 0, "hf fido auth" }, - { 0, "hf fido make" }, - { 0, "hf fido assert" }, - { 1, "hf fudan help" }, - { 0, "hf fudan reader" }, - { 0, "hf fudan dump" }, - { 0, "hf fudan rdbl" }, - { 1, "hf fudan view" }, - { 0, "hf fudan wrbl" }, - { 1, "hf gallagher help" }, - { 0, "hf gallagher reader" }, - { 0, "hf gallagher clone" }, - { 0, "hf gallagher delete" }, - { 1, "hf gallagher diversifykey" }, - { 1, "hf gallagher decode" }, - { 1, "hf ksx6924 help" }, - { 0, "hf ksx6924 select" }, - { 0, "hf ksx6924 info" }, - { 0, "hf ksx6924 balance" }, - { 0, "hf ksx6924 init" }, - { 0, "hf ksx6924 prec" }, - { 1, "hf jooki help" }, - { 0, "hf jooki clone" }, - { 1, "hf jooki decode" }, - { 1, "hf jooki encode" }, - { 0, "hf jooki sim" }, - { 1, "hf iclass help" }, - { 0, "hf iclass dump" }, - { 1, "hf iclass info" }, - { 1, "hf iclass list" }, - { 0, "hf iclass rdbl" }, - { 0, "hf iclass reader" }, - { 0, "hf iclass restore" }, - { 0, "hf iclass sniff" }, - { 0, "hf iclass wrbl" }, - { 0, "hf iclass chk" }, - { 1, "hf iclass loclass" }, - { 1, "hf iclass lookup" }, - { 0, "hf iclass sim" }, - { 0, "hf iclass eload" }, - { 0, "hf iclass esave" }, - { 0, "hf iclass eview" }, - { 1, "hf iclass configcard" }, - { 1, "hf iclass calcnewkey" }, - { 1, "hf iclass encode" }, - { 1, "hf iclass encrypt" }, - { 1, "hf iclass decrypt" }, - { 1, "hf iclass managekeys" }, - { 1, "hf iclass permutekey" }, - { 1, "hf iclass view" }, - { 1, "hf legic help" }, - { 0, "hf legic dump" }, - { 0, "hf legic info" }, - { 1, "hf legic list" }, - { 0, "hf legic rdbl" }, - { 0, "hf legic reader" }, - { 0, "hf legic restore" }, - { 0, "hf legic wipe" }, - { 0, "hf legic wrbl" }, - { 0, "hf legic sim" }, - { 0, "hf legic eload" }, - { 0, "hf legic esave" }, - { 0, "hf legic eview" }, - { 0, "hf legic einfo" }, - { 1, "hf legic crc" }, - { 1, "hf legic view" }, - { 1, "hf lto help" }, - { 0, "hf lto dump" }, - { 0, "hf lto info" }, - { 1, "hf lto list" }, - { 0, "hf lto rdbl" }, - { 0, "hf lto reader" }, - { 0, "hf lto restore" }, - { 0, "hf lto wrbl" }, - { 1, "hf mf help" }, - { 1, "hf mf list" }, - { 0, "hf mf darkside" }, - { 0, "hf mf nested" }, - { 1, "hf mf hardnested" }, - { 0, "hf mf staticnested" }, - { 0, "hf mf autopwn" }, - { 0, "hf mf nack" }, - { 0, "hf mf chk" }, - { 0, "hf mf fchk" }, - { 1, "hf mf decrypt" }, - { 0, "hf mf supercard" }, - { 0, "hf mf auth4" }, - { 1, "hf mf acl" }, - { 0, "hf mf dump" }, - { 1, "hf mf mad" }, - { 0, "hf mf personalize" }, - { 0, "hf mf rdbl" }, - { 0, "hf mf rdsc" }, - { 0, "hf mf restore" }, - { 0, "hf mf setmod" }, - { 1, "hf mf value" }, - { 1, "hf mf view" }, - { 0, "hf mf wipe" }, - { 0, "hf mf wrbl" }, - { 0, "hf mf sim" }, - { 0, "hf mf ecfill" }, - { 0, "hf mf eclr" }, - { 0, "hf mf egetblk" }, - { 0, "hf mf egetsc" }, - { 0, "hf mf ekeyprn" }, - { 0, "hf mf eload" }, - { 0, "hf mf esave" }, - { 0, "hf mf esetblk" }, - { 0, "hf mf eview" }, - { 0, "hf mf cgetblk" }, - { 0, "hf mf cgetsc" }, - { 0, "hf mf cload" }, - { 0, "hf mf csave" }, - { 0, "hf mf csetblk" }, - { 0, "hf mf csetuid" }, - { 0, "hf mf cview" }, - { 0, "hf mf cwipe" }, - { 0, "hf mf gen3uid" }, - { 0, "hf mf gen3blk" }, - { 0, "hf mf gen3freeze" }, - { 0, "hf mf ggetblk" }, - { 0, "hf mf gload" }, - { 0, "hf mf gsave" }, - { 0, "hf mf gsetblk" }, - { 0, "hf mf gview" }, - { 0, "hf mf gdmcfg" }, - { 0, "hf mf gdmsetcfg" }, - { 0, "hf mf gdmsetblk" }, - { 0, "hf mf ndefformat" }, - { 0, "hf mf ndefread" }, - { 0, "hf mf ndefwrite" }, - { 1, "hf mfp help" }, - { 1, "hf mfp list" }, - { 0, "hf mfp auth" }, - { 0, "hf mfp chk" }, - { 0, "hf mfp dump" }, - { 0, "hf mfp info" }, - { 0, "hf mfp mad" }, - { 0, "hf mfp rdbl" }, - { 0, "hf mfp rdsc" }, - { 0, "hf mfp wrbl" }, - { 0, "hf mfp commitp" }, - { 0, "hf mfp initp" }, - { 0, "hf mfp wrp" }, - { 0, "hf mfp ndefformat" }, - { 0, "hf mfp ndefread" }, - { 0, "hf mfp ndefwrite" }, - { 1, "hf mfu help" }, - { 1, "hf mfu keygen" }, - { 1, "hf mfu pwdgen" }, - { 0, "hf mfu otptear" }, - { 0, "hf mfu cauth" }, - { 0, "hf mfu dump" }, - { 0, "hf mfu info" }, - { 0, "hf mfu ndefread" }, - { 0, "hf mfu rdbl" }, - { 0, "hf mfu restore" }, - { 1, "hf mfu view" }, - { 0, "hf mfu wrbl" }, - { 0, "hf mfu tamper" }, - { 0, "hf mfu eload" }, - { 0, "hf mfu esave" }, - { 0, "hf mfu eview" }, - { 0, "hf mfu sim" }, - { 0, "hf mfu setpwd" }, - { 0, "hf mfu setuid" }, - { 1, "hf mfdes help" }, - { 0, "hf mfdes info" }, - { 0, "hf mfdes getuid" }, - { 0, "hf mfdes default" }, - { 0, "hf mfdes auth" }, - { 0, "hf mfdes chk" }, - { 0, "hf mfdes detect" }, - { 0, "hf mfdes freemem" }, - { 0, "hf mfdes setconfig" }, - { 0, "hf mfdes formatpicc" }, - { 1, "hf mfdes list" }, - { 0, "hf mfdes mad" }, - { 0, "hf mfdes lsapp" }, - { 0, "hf mfdes getaids" }, - { 0, "hf mfdes getappnames" }, - { 0, "hf mfdes bruteaid" }, - { 0, "hf mfdes createapp" }, - { 0, "hf mfdes deleteapp" }, - { 0, "hf mfdes selectapp" }, - { 0, "hf mfdes changekey" }, - { 0, "hf mfdes chkeysettings" }, - { 0, "hf mfdes getkeysettings" }, - { 0, "hf mfdes getkeyversions" }, - { 0, "hf mfdes getfileids" }, - { 0, "hf mfdes getfileisoids" }, - { 0, "hf mfdes lsfiles" }, - { 0, "hf mfdes dump" }, - { 0, "hf mfdes createfile" }, - { 0, "hf mfdes createvaluefile" }, - { 0, "hf mfdes createrecordfile" }, - { 0, "hf mfdes createmacfile" }, - { 0, "hf mfdes deletefile" }, - { 0, "hf mfdes getfilesettings" }, - { 0, "hf mfdes chfilesettings" }, - { 0, "hf mfdes read" }, - { 0, "hf mfdes write" }, - { 0, "hf mfdes value" }, - { 0, "hf mfdes clearrecfile" }, - { 1, "hf mfdes test" }, - { 1, "hf ntag424 help" }, - { 0, "hf ntag424 info" }, - { 0, "hf ntag424 sdm" }, - { 1, "hf ntag424 view" }, - { 1, "hf seos help" }, - { 0, "hf seos info" }, - { 1, "hf seos list" }, - { 1, "hf st25ta help" }, - { 0, "hf st25ta info" }, - { 1, "hf st25ta list" }, - { 1, "hf st25ta ndefread" }, - { 0, "hf st25ta protect" }, - { 0, "hf st25ta pwd" }, - { 0, "hf st25ta sim" }, - { 1, "hf tesla help" }, - { 0, "hf tesla info" }, - { 1, "hf tesla list" }, - { 1, "hf texkom help" }, - { 0, "hf texkom reader" }, - { 0, "hf texkom sim" }, - { 1, "hf thinfilm help" }, - { 0, "hf thinfilm info" }, - { 1, "hf thinfilm list" }, - { 0, "hf thinfilm sim" }, - { 1, "hf topaz help" }, - { 1, "hf topaz list" }, - { 0, "hf topaz dump" }, - { 0, "hf topaz info" }, - { 0, "hf topaz raw" }, - { 0, "hf topaz rdbl" }, - { 0, "hf topaz reader" }, - { 0, "hf topaz sim" }, - { 0, "hf topaz sniff" }, - { 1, "hf topaz view" }, - { 0, "hf topaz wrbl" }, - { 1, "hf xerox help" }, - { 0, "hf xerox info" }, - { 0, "hf xerox reader" }, - { 0, "hf xerox dump" }, - { 1, "hf waveshare help" }, - { 0, "hf waveshare loadbmp" }, - { 1, "hw help" }, - { 0, "hw break" }, - { 1, "hw connect" }, - { 0, "hw dbg" }, - { 0, "hw detectreader" }, - { 0, "hw fpgaoff" }, - { 0, "hw lcd" }, - { 0, "hw lcdreset" }, - { 0, "hw ping" }, - { 0, "hw readmem" }, - { 0, "hw reset" }, - { 0, "hw setlfdivisor" }, - { 0, "hw setmux" }, - { 0, "hw standalone" }, - { 0, "hw status" }, - { 0, "hw tearoff" }, - { 0, "hw tia" }, - { 0, "hw tune" }, - { 1, "hw version" }, - { 1, "lf help" }, - { 0, "lf config" }, - { 0, "lf cmdread" }, - { 0, "lf read" }, - { 1, "lf search" }, - { 0, "lf sim" }, - { 0, "lf simask" }, - { 0, "lf simfsk" }, - { 0, "lf simpsk" }, - { 0, "lf simbidir" }, - { 0, "lf sniff" }, - { 0, "lf tune" }, - { 1, "lf awid help" }, - { 1, "lf awid demod" }, - { 0, "lf awid reader" }, - { 0, "lf awid clone" }, - { 0, "lf awid sim" }, - { 0, "lf awid brute" }, - { 0, "lf awid watch" }, - { 1, "lf cotag help" }, - { 1, "lf cotag demod" }, - { 0, "lf cotag reader" }, - { 1, "lf destron help" }, - { 1, "lf destron demod" }, - { 0, "lf destron reader" }, - { 0, "lf destron clone" }, - { 0, "lf destron sim" }, - { 1, "lf em help" }, - { 1, "lf em 410x help" }, - { 1, "lf em 410x demod" }, - { 0, "lf em 410x reader" }, - { 0, "lf em 410x sim" }, - { 0, "lf em 410x brute" }, - { 0, "lf em 410x watch" }, - { 0, "lf em 410x spoof" }, - { 0, "lf em 410x clone" }, - { 1, "lf em 4x05 help" }, - { 0, "lf em 4x05 brute" }, - { 0, "lf em 4x05 chk" }, - { 1, "lf em 4x05 demod" }, - { 0, "lf em 4x05 dump" }, - { 0, "lf em 4x05 info" }, - { 0, "lf em 4x05 read" }, - { 1, "lf em 4x05 sniff" }, - { 0, "lf em 4x05 unlock" }, - { 0, "lf em 4x05 wipe" }, - { 0, "lf em 4x05 write" }, - { 1, "lf em 4x50 help" }, - { 0, "lf em 4x50 brute" }, - { 0, "lf em 4x50 chk" }, - { 0, "lf em 4x50 dump" }, - { 0, "lf em 4x50 info" }, - { 0, "lf em 4x50 login" }, - { 0, "lf em 4x50 rdbl" }, - { 0, "lf em 4x50 reader" }, - { 0, "lf em 4x50 restore" }, - { 0, "lf em 4x50 wrbl" }, - { 0, "lf em 4x50 wrpwd" }, - { 0, "lf em 4x50 wipe" }, - { 0, "lf em 4x50 eload" }, - { 0, "lf em 4x50 esave" }, - { 0, "lf em 4x50 eview" }, - { 0, "lf em 4x50 sim" }, - { 1, "lf em 4x70 help" }, - { 0, "lf em 4x70 brute" }, - { 0, "lf em 4x70 info" }, - { 0, "lf em 4x70 write" }, - { 0, "lf em 4x70 unlock" }, - { 0, "lf em 4x70 auth" }, - { 0, "lf em 4x70 writepin" }, - { 0, "lf em 4x70 writekey" }, - { 1, "lf fdxb help" }, - { 1, "lf fdxb demod" }, - { 0, "lf fdxb reader" }, - { 0, "lf fdxb clone" }, - { 0, "lf fdxb sim" }, - { 1, "lf gallagher help" }, - { 1, "lf gallagher demod" }, - { 0, "lf gallagher reader" }, - { 0, "lf gallagher clone" }, - { 0, "lf gallagher sim" }, - { 1, "lf gproxii help" }, - { 1, "lf gproxii demod" }, - { 0, "lf gproxii reader" }, - { 0, "lf gproxii clone" }, - { 0, "lf gproxii sim" }, - { 1, "lf hid help" }, - { 1, "lf hid demod" }, - { 0, "lf hid reader" }, - { 0, "lf hid clone" }, - { 0, "lf hid sim" }, - { 0, "lf hid brute" }, - { 0, "lf hid watch" }, - { 1, "lf hitag help" }, - { 0, "lf hitag eload" }, - { 1, "lf hitag list" }, - { 0, "lf hitag info" }, - { 0, "lf hitag reader" }, - { 0, "lf hitag sim" }, - { 0, "lf hitag sniff" }, - { 0, "lf hitag writer" }, - { 0, "lf hitag dump" }, - { 0, "lf hitag cc" }, - { 1, "lf idteck help" }, - { 1, "lf idteck demod" }, - { 0, "lf idteck reader" }, - { 0, "lf idteck clone" }, - { 0, "lf idteck sim" }, - { 1, "lf indala help" }, - { 0, "lf indala brute" }, - { 1, "lf indala demod" }, - { 1, "lf indala altdemod" }, - { 0, "lf indala reader" }, - { 0, "lf indala clone" }, - { 0, "lf indala sim" }, - { 1, "lf io help" }, - { 1, "lf io demod" }, - { 0, "lf io reader" }, - { 0, "lf io clone" }, - { 0, "lf io sim" }, - { 0, "lf io watch" }, - { 1, "lf jablotron help" }, - { 1, "lf jablotron demod" }, - { 0, "lf jablotron reader" }, - { 0, "lf jablotron clone" }, - { 0, "lf jablotron sim" }, - { 1, "lf keri help" }, - { 1, "lf keri demod" }, - { 0, "lf keri reader" }, - { 0, "lf keri clone" }, - { 0, "lf keri sim" }, - { 1, "lf motorola help" }, - { 1, "lf motorola demod" }, - { 0, "lf motorola reader" }, - { 0, "lf motorola clone" }, - { 0, "lf motorola sim" }, - { 1, "lf nedap help" }, - { 1, "lf nedap demod" }, - { 0, "lf nedap reader" }, - { 0, "lf nedap clone" }, - { 0, "lf nedap sim" }, - { 1, "lf nexwatch help" }, - { 1, "lf nexwatch demod" }, - { 0, "lf nexwatch reader" }, - { 0, "lf nexwatch clone" }, - { 0, "lf nexwatch sim" }, - { 1, "lf noralsy help" }, - { 1, "lf noralsy demod" }, - { 0, "lf noralsy reader" }, - { 0, "lf noralsy clone" }, - { 0, "lf noralsy sim" }, - { 1, "lf pac help" }, - { 1, "lf pac demod" }, - { 0, "lf pac reader" }, - { 0, "lf pac clone" }, - { 0, "lf pac sim" }, - { 1, "lf paradox help" }, - { 1, "lf paradox demod" }, - { 0, "lf paradox reader" }, - { 0, "lf paradox clone" }, - { 0, "lf paradox sim" }, - { 1, "lf pcf7931 help" }, - { 0, "lf pcf7931 reader" }, - { 0, "lf pcf7931 write" }, - { 1, "lf pcf7931 config" }, - { 1, "lf presco help" }, - { 1, "lf presco demod" }, - { 0, "lf presco reader" }, - { 0, "lf presco clone" }, - { 0, "lf presco sim" }, - { 1, "lf pyramid help" }, - { 1, "lf pyramid demod" }, - { 0, "lf pyramid reader" }, - { 0, "lf pyramid clone" }, - { 0, "lf pyramid sim" }, - { 1, "lf securakey help" }, - { 1, "lf securakey demod" }, - { 0, "lf securakey reader" }, - { 0, "lf securakey clone" }, - { 0, "lf securakey sim" }, - { 1, "lf ti help" }, - { 1, "lf ti demod" }, - { 0, "lf ti reader" }, - { 0, "lf ti write" }, - { 1, "lf t55xx help" }, - { 0, "lf t55xx clonehelp" }, - { 1, "lf t55xx config" }, - { 0, "lf t55xx dangerraw" }, - { 1, "lf t55xx detect" }, - { 0, "lf t55xx deviceconfig" }, - { 0, "lf t55xx dump" }, - { 1, "lf t55xx info" }, - { 0, "lf t55xx p1detect" }, - { 0, "lf t55xx read" }, - { 0, "lf t55xx resetread" }, - { 0, "lf t55xx restore" }, - { 1, "lf t55xx trace" }, - { 0, "lf t55xx wakeup" }, - { 0, "lf t55xx write" }, - { 0, "lf t55xx bruteforce" }, - { 0, "lf t55xx chk" }, - { 0, "lf t55xx protect" }, - { 0, "lf t55xx recoverpw" }, - { 1, "lf t55xx sniff" }, - { 0, "lf t55xx special" }, - { 0, "lf t55xx wipe" }, - { 1, "lf viking help" }, - { 1, "lf viking demod" }, - { 0, "lf viking reader" }, - { 0, "lf viking clone" }, - { 0, "lf viking sim" }, - { 1, "lf visa2000 help" }, - { 1, "lf visa2000 demod" }, - { 0, "lf visa2000 reader" }, - { 0, "lf visa2000 clone" }, - { 0, "lf visa2000 sim" }, - { 1, "mem help" }, - { 0, "mem baudrate" }, - { 0, "mem dump" }, - { 0, "mem info" }, - { 0, "mem load" }, - { 0, "mem wipe" }, - { 1, "mem spiffs help" }, - { 0, "mem spiffs copy" }, - { 0, "mem spiffs check" }, - { 0, "mem spiffs dump" }, - { 0, "mem spiffs info" }, - { 0, "mem spiffs mount" }, - { 0, "mem spiffs remove" }, - { 0, "mem spiffs rename" }, - { 0, "mem spiffs test" }, - { 0, "mem spiffs tree" }, - { 0, "mem spiffs unmount" }, - { 0, "mem spiffs upload" }, - { 0, "mem spiffs view" }, - { 0, "mem spiffs wipe" }, - { 1, "nfc help" }, - { 1, "nfc decode" }, - { 0, "nfc type1 read" }, - { 1, "nfc type1 help" }, - { 0, "nfc type2 read" }, - { 1, "nfc type2 help" }, - { 0, "nfc type4a format" }, - { 0, "nfc type4a read" }, - { 0, "nfc type4a write" }, - { 0, "nfc type4a st25taread" }, - { 1, "nfc type4a help" }, - { 0, "nfc type4b read" }, - { 1, "nfc type4b help" }, - { 0, "nfc mf cformat" }, - { 0, "nfc mf cread" }, - { 0, "nfc mf cwrite" }, - { 0, "nfc mf pread" }, - { 1, "nfc mf help" }, - { 0, "nfc barcode read" }, - { 0, "nfc barcode sim" }, - { 1, "nfc barcode help" }, - { 1, "piv help" }, - { 0, "piv select" }, - { 0, "piv getdata" }, - { 0, "piv authsign" }, - { 0, "piv scan" }, - { 1, "piv list" }, - { 1, "smart help" }, - { 1, "smart list" }, - { 0, "smart info" }, - { 0, "smart reader" }, - { 0, "smart raw" }, - { 1, "smart upgrade" }, - { 0, "smart setclock" }, - { 0, "smart brute" }, - { 1, "script help" }, - { 1, "script list" }, - { 1, "script run" }, - { 1, "trace help" }, - { 1, "trace extract" }, - { 1, "trace list" }, - { 1, "trace load" }, - { 1, "trace save" }, - { 1, "usart help" }, - { 0, "usart btpin" }, - { 0, "usart btfactory" }, - { 0, "usart tx" }, - { 0, "usart rx" }, - { 0, "usart txrx" }, - { 0, "usart txhex" }, - { 0, "usart rxhex" }, - { 0, "usart config" }, - { 1, "wiegand help" }, - { 1, "wiegand list" }, - { 1, "wiegand encode" }, - { 1, "wiegand decode" }, + { 1, "help" }, + { 0, "auto" }, + { 1, "clear" }, + { 1, "hints" }, + { 1, "msleep" }, + { 1, "rem" }, + { 1, "quit" }, + { 1, "exit" }, + { 1, "prefs help" }, + { 1, "prefs show" }, + { 1, "prefs get barmode" }, + { 1, "prefs get clientdebug" }, + { 1, "prefs get clientdelay" }, + { 1, "prefs get color" }, + { 1, "prefs get savepaths" }, + { 1, "prefs get emoji" }, + { 1, "prefs get hints" }, + { 1, "prefs get output" }, + { 1, "prefs get plotsliders" }, + { 1, "prefs set help" }, + { 1, "prefs set barmode" }, + { 1, "prefs set clientdebug" }, + { 1, "prefs set clientdelay" }, + { 1, "prefs set color" }, + { 1, "prefs set emoji" }, + { 1, "prefs set hints" }, + { 1, "prefs set savepaths" }, + { 1, "prefs set output" }, + { 1, "prefs set plotsliders" }, + { 1, "analyse help" }, + { 1, "analyse lcr" }, + { 1, "analyse crc" }, + { 1, "analyse chksum" }, + { 1, "analyse dates" }, + { 1, "analyse lfsr" }, + { 1, "analyse a" }, + { 1, "analyse nuid" }, + { 1, "analyse demodbuff" }, + { 1, "analyse freq" }, + { 1, "analyse foo" }, + { 1, "analyse units" }, + { 1, "data help" }, + { 1, "data biphaserawdecode" }, + { 1, "data detectclock" }, + { 1, "data fsktonrz" }, + { 1, "data manrawdecode" }, + { 1, "data modulation" }, + { 1, "data rawdemod" }, + { 1, "data askedgedetect" }, + { 1, "data autocorr" }, + { 1, "data dirthreshold" }, + { 1, "data decimate" }, + { 1, "data undecimate" }, + { 1, "data hide" }, + { 1, "data hpf" }, + { 1, "data iir" }, + { 1, "data grid" }, + { 1, "data ltrim" }, + { 1, "data mtrim" }, + { 1, "data norm" }, + { 1, "data plot" }, + { 1, "data rtrim" }, + { 1, "data setgraphmarkers" }, + { 1, "data shiftgraphzero" }, + { 1, "data timescale" }, + { 1, "data zerocrossings" }, + { 1, "data convertbitstream" }, + { 1, "data getbitstream" }, + { 1, "data asn1" }, + { 1, "data bin2hex" }, + { 0, "data bitsamples" }, + { 1, "data clear" }, + { 1, "data diff" }, + { 0, "data hexsamples" }, + { 1, "data hex2bin" }, + { 1, "data load" }, + { 1, "data num" }, + { 1, "data print" }, + { 0, "data samples" }, + { 1, "data save" }, + { 1, "data setdebugmode" }, + { 0, "data tune" }, + { 1, "emv help" }, + { 0, "emv exec" }, + { 0, "emv pse" }, + { 0, "emv search" }, + { 0, "emv select" }, + { 0, "emv gpo" }, + { 0, "emv readrec" }, + { 0, "emv genac" }, + { 0, "emv challenge" }, + { 0, "emv intauth" }, + { 0, "emv scan" }, + { 1, "emv test" }, + { 1, "emv list" }, + { 0, "emv roca" }, + { 1, "hf help" }, + { 1, "hf list" }, + { 0, "hf plot" }, + { 0, "hf tune" }, + { 1, "hf search" }, + { 0, "hf sniff" }, + { 1, "hf 14a help" }, + { 1, "hf 14a list" }, + { 0, "hf 14a antifuzz" }, + { 0, "hf 14a config" }, + { 0, "hf 14a cuids" }, + { 0, "hf 14a info" }, + { 0, "hf 14a sim" }, + { 0, "hf 14a sniff" }, + { 0, "hf 14a raw" }, + { 0, "hf 14a reader" }, + { 0, "hf 14a apdu" }, + { 0, "hf 14a apdufind" }, + { 0, "hf 14a chaining" }, + { 0, "hf 14a ndefformat" }, + { 0, "hf 14a ndefread" }, + { 0, "hf 14a ndefwrite" }, + { 1, "hf 14b help" }, + { 0, "hf 14b apdu" }, + { 0, "hf 14b dump" }, + { 0, "hf 14b info" }, + { 1, "hf 14b list" }, + { 0, "hf 14b ndefread" }, + { 0, "hf 14b raw" }, + { 0, "hf 14b reader" }, + { 0, "hf 14b sim" }, + { 0, "hf 14b sniff" }, + { 0, "hf 14b rdbl" }, + { 0, "hf 14b sriwrite" }, + { 1, "hf 14b view" }, + { 1, "hf 15 help" }, + { 1, "hf 15 list" }, + { 1, "hf 15 demod" }, + { 0, "hf 15 dump" }, + { 0, "hf 15 info" }, + { 0, "hf 15 sniff" }, + { 0, "hf 15 raw" }, + { 0, "hf 15 rdbl" }, + { 0, "hf 15 rdmulti" }, + { 0, "hf 15 reader" }, + { 0, "hf 15 restore" }, + { 0, "hf 15 samples" }, + { 0, "hf 15 eload" }, + { 0, "hf 15 esave" }, + { 0, "hf 15 eview" }, + { 0, "hf 15 sim" }, + { 0, "hf 15 slixwritepwd" }, + { 0, "hf 15 slixeasdisable" }, + { 0, "hf 15 slixeasenable" }, + { 0, "hf 15 slixprivacydisable" }, + { 0, "hf 15 slixprivacyenable" }, + { 0, "hf 15 passprotectafi" }, + { 0, "hf 15 passprotecteas" }, + { 0, "hf 15 wrbl" }, + { 0, "hf 15 findafi" }, + { 0, "hf 15 writeafi" }, + { 0, "hf 15 writedsfid" }, + { 0, "hf 15 csetuid" }, + { 1, "hf cipurse help" }, + { 0, "hf cipurse info" }, + { 0, "hf cipurse select" }, + { 0, "hf cipurse auth" }, + { 0, "hf cipurse read" }, + { 0, "hf cipurse write" }, + { 0, "hf cipurse aread" }, + { 0, "hf cipurse awrite" }, + { 0, "hf cipurse formatall" }, + { 0, "hf cipurse create" }, + { 0, "hf cipurse delete" }, + { 0, "hf cipurse updkey" }, + { 0, "hf cipurse updakey" }, + { 0, "hf cipurse default" }, + { 1, "hf cipurse test" }, + { 1, "hf epa help" }, + { 0, "hf epa cnonces" }, + { 0, "hf epa replay" }, + { 0, "hf epa sim" }, + { 1, "hf emrtd help" }, + { 0, "hf emrtd dump" }, + { 1, "hf emrtd info" }, + { 1, "hf emrtd list" }, + { 1, "hf felica help" }, + { 1, "hf felica list" }, + { 0, "hf felica reader" }, + { 0, "hf felica info" }, + { 0, "hf felica sniff" }, + { 0, "hf felica raw" }, + { 0, "hf felica rdbl" }, + { 0, "hf felica wrbl" }, + { 0, "hf felica rqservice" }, + { 0, "hf felica rqresponse" }, + { 0, "hf felica scsvcode" }, + { 0, "hf felica rqsyscode" }, + { 0, "hf felica auth1" }, + { 0, "hf felica auth2" }, + { 0, "hf felica rqspecver" }, + { 0, "hf felica resetmode" }, + { 0, "hf felica litesim" }, + { 0, "hf felica litedump" }, + { 1, "hf fido help" }, + { 1, "hf fido list" }, + { 0, "hf fido info" }, + { 0, "hf fido reg" }, + { 0, "hf fido auth" }, + { 0, "hf fido make" }, + { 0, "hf fido assert" }, + { 1, "hf fudan help" }, + { 0, "hf fudan reader" }, + { 0, "hf fudan dump" }, + { 0, "hf fudan rdbl" }, + { 1, "hf fudan view" }, + { 0, "hf fudan wrbl" }, + { 1, "hf gallagher help" }, + { 0, "hf gallagher reader" }, + { 0, "hf gallagher clone" }, + { 0, "hf gallagher delete" }, + { 1, "hf gallagher diversifykey" }, + { 1, "hf gallagher decode" }, + { 1, "hf ksx6924 help" }, + { 0, "hf ksx6924 select" }, + { 0, "hf ksx6924 info" }, + { 0, "hf ksx6924 balance" }, + { 0, "hf ksx6924 init" }, + { 0, "hf ksx6924 prec" }, + { 1, "hf jooki help" }, + { 0, "hf jooki clone" }, + { 1, "hf jooki decode" }, + { 1, "hf jooki encode" }, + { 0, "hf jooki sim" }, + { 1, "hf iclass help" }, + { 0, "hf iclass dump" }, + { 1, "hf iclass info" }, + { 1, "hf iclass list" }, + { 0, "hf iclass rdbl" }, + { 0, "hf iclass reader" }, + { 0, "hf iclass restore" }, + { 0, "hf iclass sniff" }, + { 0, "hf iclass wrbl" }, + { 0, "hf iclass chk" }, + { 1, "hf iclass loclass" }, + { 1, "hf iclass lookup" }, + { 0, "hf iclass sim" }, + { 0, "hf iclass eload" }, + { 0, "hf iclass esave" }, + { 0, "hf iclass eview" }, + { 1, "hf iclass configcard" }, + { 1, "hf iclass calcnewkey" }, + { 1, "hf iclass encode" }, + { 1, "hf iclass encrypt" }, + { 1, "hf iclass decrypt" }, + { 1, "hf iclass managekeys" }, + { 1, "hf iclass permutekey" }, + { 1, "hf iclass view" }, + { 1, "hf legic help" }, + { 0, "hf legic dump" }, + { 0, "hf legic info" }, + { 1, "hf legic list" }, + { 0, "hf legic rdbl" }, + { 0, "hf legic reader" }, + { 0, "hf legic restore" }, + { 0, "hf legic wipe" }, + { 0, "hf legic wrbl" }, + { 0, "hf legic sim" }, + { 0, "hf legic eload" }, + { 0, "hf legic esave" }, + { 0, "hf legic eview" }, + { 0, "hf legic einfo" }, + { 1, "hf legic crc" }, + { 1, "hf legic view" }, + { 1, "hf lto help" }, + { 0, "hf lto dump" }, + { 0, "hf lto info" }, + { 1, "hf lto list" }, + { 0, "hf lto rdbl" }, + { 0, "hf lto reader" }, + { 0, "hf lto restore" }, + { 0, "hf lto wrbl" }, + { 1, "hf mf help" }, + { 1, "hf mf list" }, + { 0, "hf mf darkside" }, + { 0, "hf mf nested" }, + { 1, "hf mf hardnested" }, + { 0, "hf mf staticnested" }, + { 0, "hf mf autopwn" }, + { 0, "hf mf nack" }, + { 0, "hf mf chk" }, + { 0, "hf mf fchk" }, + { 1, "hf mf decrypt" }, + { 0, "hf mf supercard" }, + { 0, "hf mf auth4" }, + { 1, "hf mf acl" }, + { 0, "hf mf dump" }, + { 1, "hf mf mad" }, + { 0, "hf mf personalize" }, + { 0, "hf mf rdbl" }, + { 0, "hf mf rdsc" }, + { 0, "hf mf restore" }, + { 0, "hf mf setmod" }, + { 1, "hf mf value" }, + { 1, "hf mf view" }, + { 0, "hf mf wipe" }, + { 0, "hf mf wrbl" }, + { 0, "hf mf sim" }, + { 0, "hf mf ecfill" }, + { 0, "hf mf eclr" }, + { 0, "hf mf egetblk" }, + { 0, "hf mf egetsc" }, + { 0, "hf mf ekeyprn" }, + { 0, "hf mf eload" }, + { 0, "hf mf esave" }, + { 0, "hf mf esetblk" }, + { 0, "hf mf eview" }, + { 0, "hf mf cgetblk" }, + { 0, "hf mf cgetsc" }, + { 0, "hf mf cload" }, + { 0, "hf mf csave" }, + { 0, "hf mf csetblk" }, + { 0, "hf mf csetuid" }, + { 0, "hf mf cview" }, + { 0, "hf mf cwipe" }, + { 0, "hf mf gen3uid" }, + { 0, "hf mf gen3blk" }, + { 0, "hf mf gen3freeze" }, + { 0, "hf mf ggetblk" }, + { 0, "hf mf gload" }, + { 0, "hf mf gsave" }, + { 0, "hf mf gsetblk" }, + { 0, "hf mf gview" }, + { 0, "hf mf gdmcfg" }, + { 0, "hf mf gdmsetcfg" }, + { 0, "hf mf gdmsetblk" }, + { 0, "hf mf ndefformat" }, + { 0, "hf mf ndefread" }, + { 0, "hf mf ndefwrite" }, + { 1, "hf mfp help" }, + { 1, "hf mfp list" }, + { 0, "hf mfp auth" }, + { 0, "hf mfp chk" }, + { 0, "hf mfp dump" }, + { 0, "hf mfp info" }, + { 0, "hf mfp mad" }, + { 0, "hf mfp rdbl" }, + { 0, "hf mfp rdsc" }, + { 0, "hf mfp wrbl" }, + { 0, "hf mfp commitp" }, + { 0, "hf mfp initp" }, + { 0, "hf mfp wrp" }, + { 0, "hf mfp ndefformat" }, + { 0, "hf mfp ndefread" }, + { 0, "hf mfp ndefwrite" }, + { 1, "hf mfu help" }, + { 1, "hf mfu keygen" }, + { 1, "hf mfu pwdgen" }, + { 0, "hf mfu otptear" }, + { 0, "hf mfu cauth" }, + { 0, "hf mfu dump" }, + { 0, "hf mfu info" }, + { 0, "hf mfu ndefread" }, + { 0, "hf mfu rdbl" }, + { 0, "hf mfu restore" }, + { 1, "hf mfu view" }, + { 0, "hf mfu wrbl" }, + { 0, "hf mfu tamper" }, + { 0, "hf mfu eload" }, + { 0, "hf mfu esave" }, + { 0, "hf mfu eview" }, + { 0, "hf mfu sim" }, + { 0, "hf mfu setpwd" }, + { 0, "hf mfu setuid" }, + { 1, "hf mfdes help" }, + { 0, "hf mfdes info" }, + { 0, "hf mfdes getuid" }, + { 0, "hf mfdes default" }, + { 0, "hf mfdes auth" }, + { 0, "hf mfdes chk" }, + { 0, "hf mfdes detect" }, + { 0, "hf mfdes freemem" }, + { 0, "hf mfdes setconfig" }, + { 0, "hf mfdes formatpicc" }, + { 1, "hf mfdes list" }, + { 0, "hf mfdes mad" }, + { 0, "hf mfdes lsapp" }, + { 0, "hf mfdes getaids" }, + { 0, "hf mfdes getappnames" }, + { 0, "hf mfdes bruteaid" }, + { 0, "hf mfdes createapp" }, + { 0, "hf mfdes deleteapp" }, + { 0, "hf mfdes selectapp" }, + { 0, "hf mfdes changekey" }, + { 0, "hf mfdes chkeysettings" }, + { 0, "hf mfdes getkeysettings" }, + { 0, "hf mfdes getkeyversions" }, + { 0, "hf mfdes getfileids" }, + { 0, "hf mfdes getfileisoids" }, + { 0, "hf mfdes lsfiles" }, + { 0, "hf mfdes dump" }, + { 0, "hf mfdes createfile" }, + { 0, "hf mfdes createvaluefile" }, + { 0, "hf mfdes createrecordfile" }, + { 0, "hf mfdes createmacfile" }, + { 0, "hf mfdes deletefile" }, + { 0, "hf mfdes getfilesettings" }, + { 0, "hf mfdes chfilesettings" }, + { 0, "hf mfdes read" }, + { 0, "hf mfdes write" }, + { 0, "hf mfdes value" }, + { 0, "hf mfdes clearrecfile" }, + { 1, "hf mfdes test" }, + { 1, "hf ntag424 help" }, + { 0, "hf ntag424 info" }, + { 0, "hf ntag424 sdm" }, + { 1, "hf ntag424 view" }, + { 1, "hf seos help" }, + { 0, "hf seos info" }, + { 1, "hf seos list" }, + { 1, "hf st25ta help" }, + { 0, "hf st25ta info" }, + { 1, "hf st25ta list" }, + { 1, "hf st25ta ndefread" }, + { 0, "hf st25ta protect" }, + { 0, "hf st25ta pwd" }, + { 0, "hf st25ta sim" }, + { 1, "hf tesla help" }, + { 0, "hf tesla info" }, + { 1, "hf tesla list" }, + { 1, "hf texkom help" }, + { 0, "hf texkom reader" }, + { 0, "hf texkom sim" }, + { 1, "hf thinfilm help" }, + { 0, "hf thinfilm info" }, + { 1, "hf thinfilm list" }, + { 0, "hf thinfilm sim" }, + { 1, "hf topaz help" }, + { 1, "hf topaz list" }, + { 0, "hf topaz dump" }, + { 0, "hf topaz info" }, + { 0, "hf topaz raw" }, + { 0, "hf topaz rdbl" }, + { 0, "hf topaz reader" }, + { 0, "hf topaz sim" }, + { 0, "hf topaz sniff" }, + { 1, "hf topaz view" }, + { 0, "hf topaz wrbl" }, + { 1, "hf xerox help" }, + { 0, "hf xerox info" }, + { 0, "hf xerox reader" }, + { 0, "hf xerox dump" }, + { 1, "hf waveshare help" }, + { 0, "hf waveshare loadbmp" }, + { 1, "hw help" }, + { 0, "hw break" }, + { 1, "hw connect" }, + { 0, "hw dbg" }, + { 0, "hw detectreader" }, + { 0, "hw fpgaoff" }, + { 0, "hw lcd" }, + { 0, "hw lcdreset" }, + { 0, "hw ping" }, + { 0, "hw readmem" }, + { 0, "hw reset" }, + { 0, "hw setlfdivisor" }, + { 0, "hw setmux" }, + { 0, "hw standalone" }, + { 0, "hw status" }, + { 0, "hw tearoff" }, + { 0, "hw tia" }, + { 0, "hw tune" }, + { 1, "hw version" }, + { 1, "lf help" }, + { 0, "lf config" }, + { 0, "lf cmdread" }, + { 0, "lf read" }, + { 1, "lf search" }, + { 0, "lf sim" }, + { 0, "lf simask" }, + { 0, "lf simfsk" }, + { 0, "lf simpsk" }, + { 0, "lf simbidir" }, + { 0, "lf sniff" }, + { 0, "lf tune" }, + { 1, "lf awid help" }, + { 1, "lf awid demod" }, + { 0, "lf awid reader" }, + { 0, "lf awid clone" }, + { 0, "lf awid sim" }, + { 0, "lf awid brute" }, + { 0, "lf awid watch" }, + { 1, "lf cotag help" }, + { 1, "lf cotag demod" }, + { 0, "lf cotag reader" }, + { 1, "lf destron help" }, + { 1, "lf destron demod" }, + { 0, "lf destron reader" }, + { 0, "lf destron clone" }, + { 0, "lf destron sim" }, + { 1, "lf em help" }, + { 1, "lf em 410x help" }, + { 1, "lf em 410x demod" }, + { 0, "lf em 410x reader" }, + { 0, "lf em 410x sim" }, + { 0, "lf em 410x brute" }, + { 0, "lf em 410x watch" }, + { 0, "lf em 410x spoof" }, + { 0, "lf em 410x clone" }, + { 1, "lf em 4x05 help" }, + { 0, "lf em 4x05 brute" }, + { 0, "lf em 4x05 chk" }, + { 1, "lf em 4x05 demod" }, + { 0, "lf em 4x05 dump" }, + { 0, "lf em 4x05 info" }, + { 0, "lf em 4x05 read" }, + { 1, "lf em 4x05 sniff" }, + { 0, "lf em 4x05 unlock" }, + { 0, "lf em 4x05 wipe" }, + { 0, "lf em 4x05 write" }, + { 1, "lf em 4x50 help" }, + { 0, "lf em 4x50 brute" }, + { 0, "lf em 4x50 chk" }, + { 0, "lf em 4x50 dump" }, + { 0, "lf em 4x50 info" }, + { 0, "lf em 4x50 login" }, + { 0, "lf em 4x50 rdbl" }, + { 0, "lf em 4x50 reader" }, + { 0, "lf em 4x50 restore" }, + { 0, "lf em 4x50 wrbl" }, + { 0, "lf em 4x50 wrpwd" }, + { 0, "lf em 4x50 wipe" }, + { 0, "lf em 4x50 eload" }, + { 0, "lf em 4x50 esave" }, + { 0, "lf em 4x50 eview" }, + { 0, "lf em 4x50 sim" }, + { 1, "lf em 4x70 help" }, + { 0, "lf em 4x70 brute" }, + { 0, "lf em 4x70 info" }, + { 0, "lf em 4x70 write" }, + { 0, "lf em 4x70 unlock" }, + { 0, "lf em 4x70 auth" }, + { 0, "lf em 4x70 writepin" }, + { 0, "lf em 4x70 writekey" }, + { 1, "lf fdxb help" }, + { 1, "lf fdxb demod" }, + { 0, "lf fdxb reader" }, + { 0, "lf fdxb clone" }, + { 0, "lf fdxb sim" }, + { 1, "lf gallagher help" }, + { 1, "lf gallagher demod" }, + { 0, "lf gallagher reader" }, + { 0, "lf gallagher clone" }, + { 0, "lf gallagher sim" }, + { 1, "lf gproxii help" }, + { 1, "lf gproxii demod" }, + { 0, "lf gproxii reader" }, + { 0, "lf gproxii clone" }, + { 0, "lf gproxii sim" }, + { 1, "lf hid help" }, + { 1, "lf hid demod" }, + { 0, "lf hid reader" }, + { 0, "lf hid clone" }, + { 0, "lf hid sim" }, + { 0, "lf hid brute" }, + { 0, "lf hid watch" }, + { 1, "lf hitag help" }, + { 0, "lf hitag eload" }, + { 1, "lf hitag list" }, + { 0, "lf hitag info" }, + { 0, "lf hitag reader" }, + { 0, "lf hitag sim" }, + { 0, "lf hitag sniff" }, + { 0, "lf hitag writer" }, + { 0, "lf hitag dump" }, + { 0, "lf hitag cc" }, + { 1, "lf idteck help" }, + { 1, "lf idteck demod" }, + { 0, "lf idteck reader" }, + { 0, "lf idteck clone" }, + { 0, "lf idteck sim" }, + { 1, "lf indala help" }, + { 0, "lf indala brute" }, + { 1, "lf indala demod" }, + { 1, "lf indala altdemod" }, + { 0, "lf indala reader" }, + { 0, "lf indala clone" }, + { 0, "lf indala sim" }, + { 1, "lf io help" }, + { 1, "lf io demod" }, + { 0, "lf io reader" }, + { 0, "lf io clone" }, + { 0, "lf io sim" }, + { 0, "lf io watch" }, + { 1, "lf jablotron help" }, + { 1, "lf jablotron demod" }, + { 0, "lf jablotron reader" }, + { 0, "lf jablotron clone" }, + { 0, "lf jablotron sim" }, + { 1, "lf keri help" }, + { 1, "lf keri demod" }, + { 0, "lf keri reader" }, + { 0, "lf keri clone" }, + { 0, "lf keri sim" }, + { 1, "lf motorola help" }, + { 1, "lf motorola demod" }, + { 0, "lf motorola reader" }, + { 0, "lf motorola clone" }, + { 0, "lf motorola sim" }, + { 1, "lf nedap help" }, + { 1, "lf nedap demod" }, + { 0, "lf nedap reader" }, + { 0, "lf nedap clone" }, + { 0, "lf nedap sim" }, + { 1, "lf nexwatch help" }, + { 1, "lf nexwatch demod" }, + { 0, "lf nexwatch reader" }, + { 0, "lf nexwatch clone" }, + { 0, "lf nexwatch sim" }, + { 1, "lf noralsy help" }, + { 1, "lf noralsy demod" }, + { 0, "lf noralsy reader" }, + { 0, "lf noralsy clone" }, + { 0, "lf noralsy sim" }, + { 1, "lf pac help" }, + { 1, "lf pac demod" }, + { 0, "lf pac reader" }, + { 0, "lf pac clone" }, + { 0, "lf pac sim" }, + { 1, "lf paradox help" }, + { 1, "lf paradox demod" }, + { 0, "lf paradox reader" }, + { 0, "lf paradox clone" }, + { 0, "lf paradox sim" }, + { 1, "lf pcf7931 help" }, + { 0, "lf pcf7931 reader" }, + { 0, "lf pcf7931 write" }, + { 1, "lf pcf7931 config" }, + { 1, "lf presco help" }, + { 1, "lf presco demod" }, + { 0, "lf presco reader" }, + { 0, "lf presco clone" }, + { 0, "lf presco sim" }, + { 1, "lf pyramid help" }, + { 1, "lf pyramid demod" }, + { 0, "lf pyramid reader" }, + { 0, "lf pyramid clone" }, + { 0, "lf pyramid sim" }, + { 1, "lf securakey help" }, + { 1, "lf securakey demod" }, + { 0, "lf securakey reader" }, + { 0, "lf securakey clone" }, + { 0, "lf securakey sim" }, + { 1, "lf ti help" }, + { 1, "lf ti demod" }, + { 0, "lf ti reader" }, + { 0, "lf ti write" }, + { 1, "lf t55xx help" }, + { 0, "lf t55xx clonehelp" }, + { 1, "lf t55xx config" }, + { 0, "lf t55xx dangerraw" }, + { 1, "lf t55xx detect" }, + { 0, "lf t55xx deviceconfig" }, + { 0, "lf t55xx dump" }, + { 1, "lf t55xx info" }, + { 0, "lf t55xx p1detect" }, + { 0, "lf t55xx read" }, + { 0, "lf t55xx resetread" }, + { 0, "lf t55xx restore" }, + { 1, "lf t55xx trace" }, + { 0, "lf t55xx wakeup" }, + { 0, "lf t55xx write" }, + { 0, "lf t55xx bruteforce" }, + { 0, "lf t55xx chk" }, + { 0, "lf t55xx protect" }, + { 0, "lf t55xx recoverpw" }, + { 1, "lf t55xx sniff" }, + { 0, "lf t55xx special" }, + { 0, "lf t55xx wipe" }, + { 1, "lf viking help" }, + { 1, "lf viking demod" }, + { 0, "lf viking reader" }, + { 0, "lf viking clone" }, + { 0, "lf viking sim" }, + { 1, "lf visa2000 help" }, + { 1, "lf visa2000 demod" }, + { 0, "lf visa2000 reader" }, + { 0, "lf visa2000 clone" }, + { 0, "lf visa2000 sim" }, + { 1, "mem help" }, + { 0, "mem baudrate" }, + { 0, "mem dump" }, + { 0, "mem info" }, + { 0, "mem load" }, + { 0, "mem wipe" }, + { 1, "mem spiffs help" }, + { 0, "mem spiffs copy" }, + { 0, "mem spiffs check" }, + { 0, "mem spiffs dump" }, + { 0, "mem spiffs info" }, + { 0, "mem spiffs mount" }, + { 0, "mem spiffs remove" }, + { 0, "mem spiffs rename" }, + { 0, "mem spiffs test" }, + { 0, "mem spiffs tree" }, + { 0, "mem spiffs unmount" }, + { 0, "mem spiffs upload" }, + { 0, "mem spiffs view" }, + { 0, "mem spiffs wipe" }, + { 1, "nfc help" }, + { 1, "nfc decode" }, + { 0, "nfc type1 read" }, + { 1, "nfc type1 help" }, + { 0, "nfc type2 read" }, + { 1, "nfc type2 help" }, + { 0, "nfc type4a format" }, + { 0, "nfc type4a read" }, + { 0, "nfc type4a write" }, + { 0, "nfc type4a st25taread" }, + { 1, "nfc type4a help" }, + { 0, "nfc type4b read" }, + { 1, "nfc type4b help" }, + { 0, "nfc mf cformat" }, + { 0, "nfc mf cread" }, + { 0, "nfc mf cwrite" }, + { 0, "nfc mf pread" }, + { 1, "nfc mf help" }, + { 0, "nfc barcode read" }, + { 0, "nfc barcode sim" }, + { 1, "nfc barcode help" }, + { 1, "piv help" }, + { 0, "piv select" }, + { 0, "piv getdata" }, + { 0, "piv authsign" }, + { 0, "piv scan" }, + { 1, "piv list" }, + { 1, "smart help" }, + { 1, "smart list" }, + { 0, "smart info" }, + { 0, "smart reader" }, + { 0, "smart raw" }, + { 1, "smart upgrade" }, + { 0, "smart setclock" }, + { 0, "smart brute" }, + { 1, "script help" }, + { 1, "script list" }, + { 1, "script run" }, + { 1, "trace help" }, + { 1, "trace extract" }, + { 1, "trace list" }, + { 1, "trace load" }, + { 1, "trace save" }, + { 1, "usart help" }, + { 0, "usart btpin" }, + { 0, "usart btfactory" }, + { 0, "usart tx" }, + { 0, "usart rx" }, + { 0, "usart txrx" }, + { 0, "usart txhex" }, + { 0, "usart rxhex" }, + { 0, "usart config" }, + { 1, "wiegand help" }, + { 1, "wiegand list" }, + { 1, "wiegand encode" }, + { 1, "wiegand decode" }, {0, NULL} }; @@ -799,4 +799,4 @@ const static vocabulory_t vocabulory[] = { } #endif -#endif \ No newline at end of file +#endif diff --git a/fpga/Makefile b/fpga/Makefile index e5bca0dfb..068b75255 100644 --- a/fpga/Makefile +++ b/fpga/Makefile @@ -213,9 +213,14 @@ clean: help: @echo "################################################################" - @echo "# Valid targets are: $(TARGETS)" + @echo "#" @echo "# - Builds only one of the above listed targets" @echo "# all - Builds the FPGA bitstreams for all targets" @echo "# clean - Keeps .bit files but cleans intermediate build files for all targets" + @echo "#" + @echo "#" + @echo "# Valid targets are:" + @echo "# $(TARGETS)" + @echo "#" @echo "################################################################" diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 0a66142ac..135125bfc 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -283,7 +283,7 @@ static int bitparse_find_section(FILE *infile, char section_name, unsigned int * for (int i = 0; i < 4; i++) { tmp = fgetc(infile); /* image length sanity check, should be under 300KB */ - if ( (tmp < 0) || (tmp > 300*1024) ) { + if ((tmp < 0) || (tmp > 300 * 1024)) { break; } current_length += tmp << (24 - (i * 8)); @@ -294,7 +294,7 @@ static int bitparse_find_section(FILE *infile, char section_name, unsigned int * for (int i = 0; i < 2; i++) { tmp = fgetc(infile); /* if name, date or time fields are too long, we probably shouldn't parse them */ - if ( (tmp < 0) || (tmp > 64) ){ + if ((tmp < 0) || (tmp > 64)) { break; } current_length += tmp << (8 - (i * 8)); @@ -345,7 +345,7 @@ static int FpgaGatherVersion(FILE *infile, char *infile_name, char *dst, int len } strncat(dst, tempstr, len - strlen(dst) - 1); - } + } strncat(dst, " image ", len - strlen(dst) - 1); if (bitparse_find_section(infile, 'b', &fpga_info_len)) { From 59aa95fa6e5ce9e051c411e44b1e8e57636c89c6 Mon Sep 17 00:00:00 2001 From: Grayson Martin Date: Wed, 5 Jul 2023 23:12:25 -0500 Subject: [PATCH 0130/1034] begin implementation --- client/CMakeLists.txt | 1 + client/deps/mbedtls.cmake | 1 + client/src/cmdnfc.c | 2 + client/src/cmdvas.c | 431 ++++++++++++++++++++++++++++++++++++++ client/src/cmdvas.h | 26 +++ 5 files changed, 461 insertions(+) create mode 100644 client/src/cmdvas.c create mode 100644 client/src/cmdvas.h diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 8759c00f3..6252393e8 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -337,6 +337,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/cmdlfzx8211.c ${PM3_ROOT}/client/src/cmdmain.c ${PM3_ROOT}/client/src/cmdnfc.c + ${PM3_ROOT}/client/src/cmdvas.c ${PM3_ROOT}/client/src/cmdparser.c ${PM3_ROOT}/client/src/cmdpiv.c ${PM3_ROOT}/client/src/cmdscript.c diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 40929e1ea..784f0f94d 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -9,6 +9,7 @@ add_library(pm3rrg_rdv4_mbedtls STATIC ../../common/mbedtls/entropy.c ../../common/mbedtls/error.c ../../common/mbedtls/ecp.c + ../../common/mbedtls/ecdh.c ../../common/mbedtls/ecp_curves.c ../../common/mbedtls/certs.c ../../common/mbedtls/camellia.c diff --git a/client/src/cmdnfc.c b/client/src/cmdnfc.c index eadfa7161..cb9979449 100644 --- a/client/src/cmdnfc.c +++ b/client/src/cmdnfc.c @@ -28,6 +28,7 @@ #include "cmdhfst25ta.h" #include "cmdhfthinfilm.h" #include "cmdhftopaz.h" +#include "cmdvas.h" #include "cmdnfc.h" #include "fileutils.h" #include "mifare/mifaredefault.h" @@ -421,6 +422,7 @@ static command_t CommandTable[] = { // {"type5", CmdNFCType5, AlwaysAvailable, "{ NFC Forum Tag Type 5... }"}, {"mf", CmdNFCMF, AlwaysAvailable, "{ NFC Type MIFARE Classic/Plus Tag... }"}, {"barcode", CmdNFCBarcode, AlwaysAvailable, "{ NFC Barcode Tag... }"}, + {"vas", CmdVAS, AlwaysAvailable, "{ Apple Value Added Service }"}, // {"--------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("NFC peer-to-peer") " ------------"}, // {"isodep", CmdISODEP, AlwaysAvailable, "{ ISO-DEP protocol... }"}, // {"llcp", CmdNFCLLCP, AlwaysAvailable, "{ Logical Link Control Protocol... }"}, diff --git a/client/src/cmdvas.c b/client/src/cmdvas.c new file mode 100644 index 000000000..a0e0b0522 --- /dev/null +++ b/client/src/cmdvas.c @@ -0,0 +1,431 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// An implementation of the Value Added Service protocol +//----------------------------------------------------------------------------- + +#include "cmdvas.h" +#include "cliparser.h" +#include "cmdparser.h" +#include "comms.h" +#include "ansi.h" +#include "cmdhf14a.h" +#include "emv/tlv.h" +#include "iso7816/apduinfo.h" +#include "ui.h" +#include "util.h" +#include "util_posix.h" +#include "iso7816/iso7816core.h" +#include "stddef.h" +#include "stdbool.h" +#include "mifare.h" +#include +#include +#include "crypto/libpcrypto.h" +#include "fileutils.h" +#include "mbedtls/ecp.h" +#include "mbedtls/bignum.h" +#include "mbedtls/ecdh.h" + +uint8_t ecpData[] = { 0x6a, 0x01, 0x00, 0x00, 0x04 }; +uint8_t aid[] = { 0x4f, 0x53, 0x45, 0x2e, 0x56, 0x41, 0x53, 0x2e, 0x30, 0x31 }; +uint8_t getVasUrlOnlyP2 = 0x00; +uint8_t getVasFullReqP2 = 0x01; + +static int ParseSelectVASResponse(uint8_t *response, size_t resLen, bool verbose) { + struct tlvdb *tlvRoot = tlvdb_parse_multi(response, resLen); + + struct tlvdb *versionTlv = tlvdb_find_full(tlvRoot, 0x9F21); + if (versionTlv == NULL) { + tlvdb_free(tlvRoot); + return PM3_ECARDEXCHANGE; + } + const struct tlv *version = tlvdb_get_tlv(versionTlv); + if (version->len != 2) { + tlvdb_free(tlvRoot); + return PM3_ECARDEXCHANGE; + } + if (verbose) { + PrintAndLogEx(INFO, "Mobile VAS application version: %d.%d", version->value[0], version->value[1]); + } + if (version->value[0] != 0x01 || version->value[1] != 0x00) { + tlvdb_free(tlvRoot); + return PM3_ECARDEXCHANGE; + } + + struct tlvdb *capabilitiesTlv = tlvdb_find_full(tlvRoot, 0x9F23); + if (capabilitiesTlv == NULL) { + tlvdb_free(tlvRoot); + return PM3_ECARDEXCHANGE; + } + const struct tlv *capabilities = tlvdb_get_tlv(capabilitiesTlv); + if (capabilities->len != 4 + || capabilities->value[0] != 0x00 + || capabilities->value[1] != 0x00 + || capabilities->value[2] != 0x00 + || (capabilities->value[3] & 8) == 0) { + tlvdb_free(tlvRoot); + return PM3_ECARDEXCHANGE; + } + + tlvdb_free(tlvRoot); + return PM3_SUCCESS; +} + +static int CreateGetVASDataCommand(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t *out, int *outLen) { + if (pidHash == NULL && url == NULL) { + PrintAndLogEx(FAILED, "Must provide a Pass Type ID or a URL"); + return PM3_EINVARG; + } + + if (url != NULL && urlLen > 256) { + PrintAndLogEx(FAILED, "URL must be less than 256 characters"); + return PM3_EINVARG; + } + + uint8_t p2 = pidHash == NULL ? getVasUrlOnlyP2 : getVasFullReqP2; + + size_t reqTlvLen = 19 + (pidHash != NULL ? 35 : 0) + (url != NULL ? 3 + urlLen : 0); + uint8_t *reqTlv = calloc(reqTlvLen, sizeof(uint8_t)); + + uint8_t version[] = {0x9F, 0x22, 0x02, 0x01, 0x00}; + memcpy(reqTlv, version, sizeof(version)); + + uint8_t unknown[] = {0x9F, 0x28, 0x04, 0x00, 0x00, 0x00, 0x00}; + memcpy(reqTlv + sizeof(version), unknown, sizeof(unknown)); + + uint8_t terminalCapabilities[] = {0x9F, 0x26, 0x04, 0x00, 0x00, 0x00, 0x02}; + memcpy(reqTlv + sizeof(version) + sizeof(unknown), terminalCapabilities, sizeof(terminalCapabilities)); + + if (pidHash != NULL) { + size_t offset = sizeof(version) + sizeof(unknown) + sizeof(terminalCapabilities); + reqTlv[offset] = 0x9F; + reqTlv[offset + 1] = 0x25; + reqTlv[offset + 2] = 32; + memcpy(reqTlv + offset + 3, pidHash, 32); + } + + if (url != NULL) { + size_t offset = sizeof(version) + sizeof(unknown) + sizeof(terminalCapabilities) + (pidHash != NULL ? 35 : 0); + reqTlv[offset] = 0x9F; + reqTlv[offset + 1] = 0x29; + reqTlv[offset + 2] = urlLen; + memcpy(reqTlv + offset + 3, url, urlLen); + } + + out[0] = 0x80; + out[1] = 0xCA; + out[2] = 0x01; + out[3] = p2; + out[4] = reqTlvLen; + memcpy(out + 5, reqTlv, reqTlvLen); + out[5 + reqTlvLen] = 0x00; + + *outLen = 6 + reqTlvLen; + + free(reqTlv); + return PM3_SUCCESS; +} + +static int ParseGetVASDataResponse(uint8_t *res, size_t resLen, uint8_t *cryptogram, size_t *cryptogramLen) { + struct tlvdb *tlvRoot = tlvdb_parse_multi(res, resLen); + + struct tlvdb *cryptogramTlvdb = tlvdb_find_full(tlvRoot, 0x9F27); + if (cryptogramTlvdb == NULL) { + tlvdb_free(tlvRoot); + return PM3_ECARDEXCHANGE; + } + const struct tlv *cryptogramTlv = tlvdb_get_tlv(cryptogramTlvdb); + + memcpy(cryptogram, cryptogramTlv->value, cryptogramTlv->len); + *cryptogramLen = cryptogramTlv->len; + + tlvdb_free(tlvRoot); + return PM3_SUCCESS; +} + +static int LoadReaderPrivateKey(uint8_t *buf, size_t bufLen, mbedtls_ecp_keypair *privKey) { + struct tlvdb *derRoot = tlvdb_parse_multi(buf, bufLen); + + struct tlvdb *privkeyTlvdb = tlvdb_find_full(derRoot, 0x04); + if (privkeyTlvdb == NULL) { + tlvdb_free(derRoot); + return PM3_EINVARG; + } + const struct tlv *privkeyTlv = tlvdb_get_tlv(privkeyTlvdb); + + if (mbedtls_ecp_read_key(MBEDTLS_ECP_DP_SECP256R1, privKey, privkeyTlv->value, privkeyTlv->len)) { + tlvdb_free(derRoot); + PrintAndLogEx(FAILED, "Unable to parse private key file. Should be DER encoded ASN1"); + return PM3_EINVARG; + } + + struct tlvdb *pubkeyCoordsTlvdb = tlvdb_find_full(derRoot, 0x03); + if (pubkeyCoordsTlvdb == NULL) { + tlvdb_free(derRoot); + PrintAndLogEx(FAILED, "Private key file should include public key component"); + return PM3_EINVARG; + } + const struct tlv *pubkeyCoordsTlv = tlvdb_get_tlv(pubkeyCoordsTlvdb); + if (pubkeyCoordsTlv->len != 66 || pubkeyCoordsTlv->value[0] != 0x00 || pubkeyCoordsTlv->value[1] != 0x04) { + tlvdb_free(derRoot); + PrintAndLogEx(FAILED, "Invalid public key data"); + return PM3_EINVARG; + } + + tlvdb_free(derRoot); + + if (mbedtls_mpi_read_binary(&privKey->Q.X, pubkeyCoordsTlv->value + 2, 32) + || mbedtls_mpi_read_binary(&privKey->Q.Y, pubkeyCoordsTlv->value + 34, 32) + || mbedtls_mpi_lset(&privKey->Q.Z, 1)) { + PrintAndLogEx(FAILED, "Failed to read in public key coordinates"); + return PM3_EINVARG; + } + + if (mbedtls_ecp_check_pubkey(&privKey->grp, &privKey->Q)) { + PrintAndLogEx(FAILED, "VAS protocol requires an elliptic key on the P-256 curve"); + return PM3_EINVARG; + } + + return PM3_SUCCESS; +} + +static int GetPrivateKeyHint(mbedtls_ecp_keypair *privKey, uint8_t *keyHint) { + uint8_t xcoord[32] = {0}; + if (mbedtls_mpi_write_binary(&privKey->Q.X, xcoord, sizeof(xcoord))) { + return PM3_EINVARG; + } + + uint8_t hash[32] = {0}; + sha256hash(xcoord, 32, hash); + + memcpy(keyHint, hash, 4); + return PM3_SUCCESS; +} + +static int LoadMobileEphemeralKey(uint8_t *xcoordBuf, mbedtls_ecp_keypair *pubKey) { + if (mbedtls_mpi_read_binary(&pubKey->Q.X, xcoordBuf, 32)) { + return PM3_EINVARG; + } + return PM3_SUCCESS; +} + +static int DecryptVASCryptogram(uint8_t *cryptogram, size_t cryptogramLen, mbedtls_ecp_keypair *privKey, uint8_t *out, size_t *outLen, uint8_t *timestamp) { + uint8_t keyHint[4] = {0}; + if (GetPrivateKeyHint(privKey, keyHint) != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "Unable to generate key hint"); + return PM3_EINVARG; + } + + if (memcmp(keyHint, cryptogram, 4) != 0) { + PrintAndLogEx(FAILED, "Private key does not match cryptogram"); + return PM3_EINVARG; + } + + mbedtls_ecp_keypair mobilePubKey; + mbedtls_ecp_keypair_init(&mobilePubKey); + mobilePubKey.grp = privKey->grp; + + if (LoadMobileEphemeralKey(cryptogram + 4, &mobilePubKey) != PM3_SUCCESS) { + mbedtls_ecp_keypair_free(&mobilePubKey); + PrintAndLogEx(FAILED, "Unable to parse mobile ephemeral key from cryptogram"); + return PM3_EINVARG; + } + + mbedtls_mpi sharedSecret; + mbedtls_mpi_init(&sharedSecret); + + if (mbedtls_ecdh_compute_shared(&privKey->grp, &sharedSecret, &mobilePubKey.Q, &privKey->d, NULL, NULL)) { + mbedtls_mpi_free(&sharedSecret); + mbedtls_ecp_keypair_free(&mobilePubKey); + PrintAndLogEx(FAILED, "Failed to generate ECDH shared secret"); + return PM3_EINVARG; + } + + mbedtls_mpi_free(&sharedSecret); + mbedtls_ecp_keypair_free(&mobilePubKey); + return PM3_SUCCESS; +} + +static int VASReader(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t *cryptogram, size_t *cryptogramLen, bool verbose) { + clearCommandBuffer(); + + uint16_t flags = ISO14A_RAW | ISO14A_CONNECT | ISO14A_NO_SELECT | ISO14A_APPEND_CRC | ISO14A_NO_DISCONNECT; + SendCommandMIX(CMD_HF_ISO14443A_READER, flags, sizeof(ecpData), 0, ecpData, sizeof(ecpData)); + + msleep(160); + + if (SelectCard14443A_4(false, false, NULL) != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "No card in field"); + return PM3_ECARDEXCHANGE; + } + + uint16_t status = 0; + size_t resLen = 0; + uint8_t selectResponse[APDU_RES_LEN] = {0}; + Iso7816Select(CC_CONTACTLESS, true, true, aid, sizeof(aid), selectResponse, APDU_RES_LEN, &resLen, &status); + + if (status != 0x9000) { + PrintAndLogEx(FAILED, "Card doesn't support VAS"); + return PM3_ECARDEXCHANGE; + } + + if (ParseSelectVASResponse(selectResponse, resLen, verbose) != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "Card doesn't support VAS"); + return PM3_ECARDEXCHANGE; + } + + uint8_t getVasApdu[PM3_CMD_DATA_SIZE]; + int getVasApduLen = 0; + + int s = CreateGetVASDataCommand(pidHash, url, urlLen, getVasApdu, &getVasApduLen); + if (s != PM3_SUCCESS) { + return s; + } + + uint8_t apduRes[APDU_RES_LEN] = {0}; + int apduResLen = 0; + + s = ExchangeAPDU14a(getVasApdu, getVasApduLen, false, false, apduRes, APDU_RES_LEN, &apduResLen); + if (s != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "Failed to send APDU"); + return s; + } + + if (apduResLen == 2 && apduRes[0] == 0x62 && apduRes[1] == 0x87) { + PrintAndLogEx(WARNING, "Device returned error on GET VAS DATA. Either doesn't have pass with matching id, or requires user authentication."); + return PM3_ECARDEXCHANGE; + } + + if (apduResLen == 0 || apduRes[0] != 0x70) { + PrintAndLogEx(FAILED, "Invalid response from peer"); + } + + return ParseGetVASDataResponse(apduRes, apduResLen, cryptogram, cryptogramLen); +} + +static int CmdVASReader(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "nfc vas reader", + "Read and decrypt VAS message", + "nfc vas reader -p pass.com.example.ticket -k ./priv.key -> select pass and decrypt with priv.key\nnfc vas reader --url https://example.com -> URL Only mode"); + void *argtable[] = { + arg_param_begin, + arg_str0("p", NULL, "", "pass type id"), + arg_str0("k", NULL, "", "path to terminal private key"), + arg_str0(NULL, "url", "", "a URL to provide to the mobile device"), + arg_lit0("v", "verbose", "log additional information"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + + struct arg_str *passTypeIdArg = arg_get_str(ctx, 1); + int passTypeIdLen = arg_get_str_len(ctx, 1); + uint8_t pidHash[32] = {0}; + sha256hash((uint8_t *) passTypeIdArg->sval[0], passTypeIdLen, pidHash); + + struct arg_str *keyPathArg = arg_get_str(ctx, 2); + int keyPathLen = arg_get_str_len(ctx, 2); + + if (keyPathLen == 0 && passTypeIdLen > 0) { + PrintAndLogEx(FAILED, "Must provide path to terminal private key if a pass type id is provided"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + + uint8_t *keyData = NULL; + size_t keyDataLen = 0; + if (loadFile_safe(keyPathArg->sval[0], "", (void **)&keyData, &keyDataLen) != PM3_SUCCESS) { + CLIParserFree(ctx); + return PM3_EINVARG; + } + + mbedtls_ecp_keypair privKey; + mbedtls_ecp_keypair_init(&privKey); + + if (LoadReaderPrivateKey(keyData, keyDataLen, &privKey) != PM3_SUCCESS) { + CLIParserFree(ctx); + mbedtls_ecp_keypair_free(&privKey); + return PM3_EINVARG; + } + + struct arg_str *urlArg = arg_get_str(ctx, 3); + int urlLen = arg_get_str_len(ctx, 3); + const char *url = NULL; + if (urlLen > 0) { + url = urlArg->sval[0]; + } + + bool verbose = arg_get_lit(ctx, 4); + + uint8_t cryptogram[120] = {0}; + size_t cryptogramLen = 0; + + int s = VASReader(passTypeIdLen > 0 ? pidHash : NULL, url, urlLen, cryptogram, &cryptogramLen, verbose); + if (s != PM3_SUCCESS) { + CLIParserFree(ctx); + mbedtls_ecp_keypair_free(&privKey); + return s; + } + + if (verbose) { + PrintAndLogEx(INFO, "Got cryptogram response: %s", sprint_hex(cryptogram, cryptogramLen)); + } + + uint8_t message[64] = {0}; + size_t messageLen = 0; + uint8_t timestamp[4] = {0}; + + if (DecryptVASCryptogram(cryptogram, cryptogramLen, &privKey, message, &messageLen, timestamp) != PM3_SUCCESS) { + CLIParserFree(ctx); + mbedtls_ecp_keypair_free(&privKey); + return PM3_EINVARG; + } + + CLIParserFree(ctx); + mbedtls_ecp_keypair_free(&privKey); + return s; +} + +static int CmdVASDecrypt(const char *Cmd) { + return PM3_SUCCESS; +} + +static int CmdVASSim(const char *Cmd) { + return PM3_SUCCESS; +} + +static int CmdHelp(const char *Cmd); + +static command_t CommandTable[] = { + {"--------", CmdHelp, AlwaysAvailable, "----------- " _CYAN_("Value Added Service") " -----------"}, + {"reader", CmdVASReader, IfPm3Iso14443a, "Read and decrypt VAS message"}, + {"decrypt", CmdVASDecrypt, AlwaysAvailable, "Decrypt a VAS cryptogram"}, + {"sim", CmdVASSim, IfPm3Iso14443a, "Simulate a VAS mobile credential"}, + {"--------", CmdHelp, AlwaysAvailable, "----------------- " _CYAN_("General") " -----------------"}, + {"help", CmdHelp, AlwaysAvailable, "This help"}, + {NULL, NULL, NULL, NULL} +}; + +int CmdVAS(const char *Cmd) { + clearCommandBuffer(); + return CmdsParse(CommandTable, Cmd); +}; + +static int CmdHelp(const char *Cmd) { + (void)Cmd; // Cmd is not used so far + CmdsHelp(CommandTable); + return PM3_SUCCESS; +}; diff --git a/client/src/cmdvas.h b/client/src/cmdvas.h new file mode 100644 index 000000000..59a53f50d --- /dev/null +++ b/client/src/cmdvas.h @@ -0,0 +1,26 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// An implementation of the Value Added Service protocol +//----------------------------------------------------------------------------- + +#ifndef CMDVAS_H__ +#define CMDVAS_H__ + +#include "common.h" + +int CmdVAS(const char *Cmd); + +#endif From 44f2e253d8e11349c3d8679d38b4f78296d1a06d Mon Sep 17 00:00:00 2001 From: Grayson Martin Date: Thu, 6 Jul 2023 18:03:58 -0500 Subject: [PATCH 0131/1034] import mbedtls ecc point (de)compression extension and use --- client/deps/mbedtls.cmake | 1 + client/src/cmdvas.c | 79 ++++++++++++++- common/mbedtls/ecc_point_compression.c | 130 +++++++++++++++++++++++++ common/mbedtls/ecc_point_compression.h | 32 ++++++ 4 files changed, 237 insertions(+), 5 deletions(-) create mode 100644 common/mbedtls/ecc_point_compression.c create mode 100644 common/mbedtls/ecc_point_compression.h diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 784f0f94d..82a97e8a0 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -10,6 +10,7 @@ add_library(pm3rrg_rdv4_mbedtls STATIC ../../common/mbedtls/error.c ../../common/mbedtls/ecp.c ../../common/mbedtls/ecdh.c + ../../common/mbedtls/ecc_point_compression.c ../../common/mbedtls/ecp_curves.c ../../common/mbedtls/certs.c ../../common/mbedtls/camellia.c diff --git a/client/src/cmdvas.c b/client/src/cmdvas.c index a0e0b0522..00c5a83f4 100644 --- a/client/src/cmdvas.c +++ b/client/src/cmdvas.c @@ -38,6 +38,7 @@ #include "mbedtls/ecp.h" #include "mbedtls/bignum.h" #include "mbedtls/ecdh.h" +#include "mbedtls/ecc_point_compression.h" uint8_t ecpData[] = { 0x6a, 0x01, 0x00, 0x00, 0x04 }; uint8_t aid[] = { 0x4f, 0x53, 0x45, 0x2e, 0x56, 0x41, 0x53, 0x2e, 0x30, 0x31 }; @@ -187,9 +188,7 @@ static int LoadReaderPrivateKey(uint8_t *buf, size_t bufLen, mbedtls_ecp_keypair tlvdb_free(derRoot); - if (mbedtls_mpi_read_binary(&privKey->Q.X, pubkeyCoordsTlv->value + 2, 32) - || mbedtls_mpi_read_binary(&privKey->Q.Y, pubkeyCoordsTlv->value + 34, 32) - || mbedtls_mpi_lset(&privKey->Q.Z, 1)) { + if (mbedtls_ecp_point_read_binary(&privKey->grp, &privKey->Q, pubkeyCoordsTlv->value + 1, 65)) { PrintAndLogEx(FAILED, "Failed to read in public key coordinates"); return PM3_EINVARG; } @@ -216,9 +215,20 @@ static int GetPrivateKeyHint(mbedtls_ecp_keypair *privKey, uint8_t *keyHint) { } static int LoadMobileEphemeralKey(uint8_t *xcoordBuf, mbedtls_ecp_keypair *pubKey) { - if (mbedtls_mpi_read_binary(&pubKey->Q.X, xcoordBuf, 32)) { + uint8_t compressedEcKey[33] = {0}; + compressedEcKey[0] = 0x02; + memcpy(compressedEcKey + 1, xcoordBuf, 32); + + uint8_t decompressedEcKey[65] = {0}; + size_t decompressedEcKeyLen = 0; + if (mbedtls_ecp_decompress(&pubKey->grp, compressedEcKey, sizeof(compressedEcKey), decompressedEcKey, &decompressedEcKeyLen, sizeof(decompressedEcKey))) { return PM3_EINVARG; } + + if (mbedtls_ecp_point_read_binary(&pubKey->grp, &pubKey->Q, decompressedEcKey, decompressedEcKeyLen)) { + return PM3_EINVARG; + } + return PM3_SUCCESS; } @@ -400,6 +410,65 @@ static int CmdVASReader(const char *Cmd) { } static int CmdVASDecrypt(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "nfc vas decrypt", + "Decrypt a previously captured cryptogram", + "nfc vas reader -p pass.com.example.ticket -k ./priv.key -> select pass and decrypt with priv.key\nnfc vas reader --url https://example.com -> URL Only mode"); + void *argtable[] = { + arg_param_begin, + arg_str0("p", NULL, "", "pass type id"), + arg_str0("k", NULL, "", "path to terminal private key"), + arg_str0(NULL, NULL, "", "cryptogram to decrypt"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + + struct arg_str *passTypeIdArg = arg_get_str(ctx, 1); + int passTypeIdLen = arg_get_str_len(ctx, 1); + uint8_t pidHash[32] = {0}; + sha256hash((uint8_t *) passTypeIdArg->sval[0], passTypeIdLen, pidHash); + + uint8_t cryptogram[120] = {0}; + int cryptogramLen = 0; + CLIGetHexWithReturn(ctx, 3, cryptogram, &cryptogramLen); + + struct arg_str *keyPathArg = arg_get_str(ctx, 2); + int keyPathLen = arg_get_str_len(ctx, 2); + + if (keyPathLen == 0 && passTypeIdLen > 0) { + PrintAndLogEx(FAILED, "Must provide path to terminal private key if a pass type id is provided"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + + uint8_t *keyData = NULL; + size_t keyDataLen = 0; + if (loadFile_safe(keyPathArg->sval[0], "", (void **)&keyData, &keyDataLen) != PM3_SUCCESS) { + CLIParserFree(ctx); + return PM3_EINVARG; + } + + mbedtls_ecp_keypair privKey; + mbedtls_ecp_keypair_init(&privKey); + + if (LoadReaderPrivateKey(keyData, keyDataLen, &privKey) != PM3_SUCCESS) { + CLIParserFree(ctx); + mbedtls_ecp_keypair_free(&privKey); + return PM3_EINVARG; + } + + uint8_t message[64] = {0}; + size_t messageLen = 0; + uint8_t timestamp[4] = {0}; + + if (DecryptVASCryptogram(cryptogram, cryptogramLen, &privKey, message, &messageLen, timestamp) != PM3_SUCCESS) { + CLIParserFree(ctx); + mbedtls_ecp_keypair_free(&privKey); + return PM3_EINVARG; + } + + CLIParserFree(ctx); + mbedtls_ecp_keypair_free(&privKey); return PM3_SUCCESS; } @@ -412,7 +481,7 @@ static int CmdHelp(const char *Cmd); static command_t CommandTable[] = { {"--------", CmdHelp, AlwaysAvailable, "----------- " _CYAN_("Value Added Service") " -----------"}, {"reader", CmdVASReader, IfPm3Iso14443a, "Read and decrypt VAS message"}, - {"decrypt", CmdVASDecrypt, AlwaysAvailable, "Decrypt a VAS cryptogram"}, + {"decrypt", CmdVASDecrypt, AlwaysAvailable, "Decrypt a previously captured VAS cryptogram"}, {"sim", CmdVASSim, IfPm3Iso14443a, "Simulate a VAS mobile credential"}, {"--------", CmdHelp, AlwaysAvailable, "----------------- " _CYAN_("General") " -----------------"}, {"help", CmdHelp, AlwaysAvailable, "This help"}, diff --git a/common/mbedtls/ecc_point_compression.c b/common/mbedtls/ecc_point_compression.c new file mode 100644 index 000000000..387255507 --- /dev/null +++ b/common/mbedtls/ecc_point_compression.c @@ -0,0 +1,130 @@ +/* +* Not original to the mbedtls library. Taken from +* https://github.com/mwarning/mbedtls_ecp_compression +* to solve mbedtls' lack of support for elliptic point +* compression and decompression +* +* Released under CC0 1.0 Universal License +*/ + +/* +* This is all about mbedtls_ecp_decompress() and mbedtls_ecp_compress() +* +* Perform X25519 / Curve25519 point compression and decompression for mbedtls. +* As of mbedtls 2.5.1, mbedtls does not support decompression yet. +* +*/ + +#define MBEDTLS_ALLOW_PRIVATE_ACCESS + +#include "ecc_point_compression.h" + +int mbedtls_ecp_decompress( + const mbedtls_ecp_group *grp, + const unsigned char *input, size_t ilen, + unsigned char *output, size_t *olen, size_t osize +) { + int ret; + size_t plen; + mbedtls_mpi r; + mbedtls_mpi x; + mbedtls_mpi n; + + plen = mbedtls_mpi_size(&grp->P); + + *olen = 2 * plen + 1; + + if (osize < *olen) + return(MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL); + + if (ilen != plen + 1) + return(MBEDTLS_ERR_ECP_BAD_INPUT_DATA); + + if (input[0] != 0x02 && input[0] != 0x03) + return(MBEDTLS_ERR_ECP_BAD_INPUT_DATA); + + // output will consist of 0x04|X|Y + memcpy(output, input, ilen); + output[0] = 0x04; + + mbedtls_mpi_init(&r); + mbedtls_mpi_init(&x); + mbedtls_mpi_init(&n); + + // x <= input + MBEDTLS_MPI_CHK(mbedtls_mpi_read_binary(&x, input + 1, plen)); + + // r = x^2 + MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&r, &x, &x)); + + // r = x^2 + a + if (grp->A.p == NULL) { + // Special case where a is -3 + MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&r, &r, 3)); + } else { + MBEDTLS_MPI_CHK(mbedtls_mpi_add_mpi(&r, &r, &grp->A)); + } + + // r = x^3 + ax + MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&r, &r, &x)); + + // r = x^3 + ax + b + MBEDTLS_MPI_CHK(mbedtls_mpi_add_mpi(&r, &r, &grp->B)); + + // Calculate square root of r over finite field P: + // r = sqrt(x^3 + ax + b) = (x^3 + ax + b) ^ ((P + 1) / 4) (mod P) + + // n = P + 1 + MBEDTLS_MPI_CHK(mbedtls_mpi_add_int(&n, &grp->P, 1)); + + // n = (P + 1) / 4 + MBEDTLS_MPI_CHK(mbedtls_mpi_shift_r(&n, 2)); + + // r ^ ((P + 1) / 4) (mod p) + MBEDTLS_MPI_CHK(mbedtls_mpi_exp_mod(&r, &r, &n, &grp->P, NULL)); + + // Select solution that has the correct "sign" (equals odd/even solution in finite group) + if ((input[0] == 0x03) != mbedtls_mpi_get_bit(&r, 0)) { + // r = p - r + MBEDTLS_MPI_CHK(mbedtls_mpi_sub_mpi(&r, &grp->P, &r)); + } + + // y => output + ret = mbedtls_mpi_write_binary(&r, output + 1 + plen, plen); + +cleanup: + mbedtls_mpi_free(&r); + mbedtls_mpi_free(&x); + mbedtls_mpi_free(&n); + + return(ret); +} + +int mbedtls_ecp_compress( + const mbedtls_ecp_group *grp, + const unsigned char *input, size_t ilen, + unsigned char *output, size_t *olen, size_t osize +) { + size_t plen; + + plen = mbedtls_mpi_size(&grp->P); + + *olen = plen + 1; + + if (osize < *olen) + return(MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL); + + if (ilen != 2 * plen + 1) + return (MBEDTLS_ERR_ECP_BAD_INPUT_DATA); + + if (input[0] != 0x04) + return(MBEDTLS_ERR_ECP_BAD_INPUT_DATA); + + // output will consist of 0x0?|X + memcpy(output, input, *olen); + + // Encode even/odd of Y into first byte (either 0x02 or 0x03) + output[0] = 0x02 + (input[2 * plen] & 1); + + return(0); +} diff --git a/common/mbedtls/ecc_point_compression.h b/common/mbedtls/ecc_point_compression.h new file mode 100644 index 000000000..d75fea39b --- /dev/null +++ b/common/mbedtls/ecc_point_compression.h @@ -0,0 +1,32 @@ +/* +* Not original to the mbedtls library. Taken from +* https://github.com/mwarning/mbedtls_ecp_compression +* to solve mbedtls' lack of support for elliptic point +* compression and decompression +* +* Released under CC0 1.0 Universal License +*/ + +/* +* This is all about mbedtls_ecp_decompress() and mbedtls_ecp_compress() +* +* Perform X25519 / Curve25519 point compression and decompression for mbedtls. +* As of mbedtls 2.5.1, mbedtls does not support decompression yet. +* +*/ + +#include + +#include "mbedtls/ecp.h" + +int mbedtls_ecp_decompress( + const mbedtls_ecp_group *grp, + const unsigned char *input, size_t ilen, + unsigned char *output, size_t *olen, size_t osize +); + +int mbedtls_ecp_compress( + const mbedtls_ecp_group *grp, + const unsigned char *input, size_t ilen, + unsigned char *output, size_t *olen, size_t osize +); From 610b8a741011664d2fb14c5cdb88de344b021955 Mon Sep 17 00:00:00 2001 From: Grayson Martin Date: Fri, 7 Jul 2023 14:37:02 -0500 Subject: [PATCH 0132/1034] Implement ANSI X9.63 sha256 per spec --- client/src/crypto/libpcrypto.c | 33 +++++++++++++++++++++++++++++++++ client/src/crypto/libpcrypto.h | 3 +++ 2 files changed, 36 insertions(+) diff --git a/client/src/crypto/libpcrypto.c b/client/src/crypto/libpcrypto.c index d2ac7a324..0d322a9a1 100644 --- a/client/src/crypto/libpcrypto.c +++ b/client/src/crypto/libpcrypto.c @@ -18,6 +18,7 @@ #include "crypto/libpcrypto.h" #include "crypto/asn1utils.h" +#include #include #include #include @@ -34,6 +35,7 @@ #include #include #include +#include "libpcrypto.h" #include "util.h" #include "ui.h" @@ -632,3 +634,34 @@ int blowfish_decrypt(uint8_t *iv, uint8_t *key, uint8_t *input, uint8_t *output, return 0; } + +// Implementation from http://www.secg.org/sec1-v2.pdf#subsubsection.3.6.1 +int ansi_x963_sha256(uint8_t *sharedSecret, size_t sharedSecretLen, uint8_t *sharedInfo, size_t sharedInfoLen, size_t keyDataLen, uint8_t *keyData) { + // sha256 hash has (practically) no max input len, so skipping that step + + if (keyDataLen >= 32 * (pow(2, 32) - 1)) { + return 1; + } + + uint32_t counter = 0x00000001; + + for (int i = 0; i < (keyDataLen / 32); ++i) { + uint8_t *hashMaterial = malloc(4 + sharedSecretLen + sharedInfoLen); + memcpy(hashMaterial, sharedSecret, sharedSecretLen); + hashMaterial[sharedSecretLen] = (counter >> 24); + hashMaterial[sharedSecretLen + 1] = (counter >> 16) & 0xFF; + hashMaterial[sharedSecretLen + 2] = (counter >> 8) & 0xFF; + hashMaterial[sharedSecretLen + 3] = counter & 0xFF; + memcpy(hashMaterial + sharedSecretLen + 4, sharedInfo, sharedInfoLen); + + uint8_t hash[32] = {0}; + sha256hash(hashMaterial, 4 + sharedSecretLen + sharedInfoLen, hash); + free(hashMaterial); + + memcpy(keyData + (32 * i), hash, 32); + + counter++; + } + + return 0; +} diff --git a/client/src/crypto/libpcrypto.h b/client/src/crypto/libpcrypto.h index 301633fde..5d10b10ee 100644 --- a/client/src/crypto/libpcrypto.h +++ b/client/src/crypto/libpcrypto.h @@ -64,4 +64,7 @@ size_t FindISO9797M2PaddingDataLen(const uint8_t *data, size_t datalen); // BLOWFISH int blowfish_decrypt(uint8_t *iv, uint8_t *key, uint8_t *input, uint8_t *output, int length); +// KDF +int ansi_x963_sha256(uint8_t *sharedSecret, size_t sharedSecretLen, uint8_t *sharedInfo, size_t sharedInfoLen, size_t keyDataLen, uint8_t *keyData); + #endif /* libpcrypto.h */ From 945f03e6465adb9d02fb0484d8777cbdcc622e38 Mon Sep 17 00:00:00 2001 From: Grayson Martin Date: Fri, 7 Jul 2023 14:48:39 -0500 Subject: [PATCH 0133/1034] add import, oops --- client/src/crypto/libpcrypto.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/crypto/libpcrypto.c b/client/src/crypto/libpcrypto.c index 0d322a9a1..12292c440 100644 --- a/client/src/crypto/libpcrypto.c +++ b/client/src/crypto/libpcrypto.c @@ -38,6 +38,7 @@ #include "libpcrypto.h" #include "util.h" #include "ui.h" +#include "math.h" void des_encrypt(void *out, const void *in, const void *key) { mbedtls_des_context ctx; From b30f8ae37f2cdf20a9ed973febad030996ef542d Mon Sep 17 00:00:00 2001 From: Grayson Martin Date: Sat, 8 Jul 2023 12:35:59 -0500 Subject: [PATCH 0134/1034] Finish decryption algorithm implementation --- client/deps/mbedtls.cmake | 1 + client/src/cmdvas.c | 91 ++++++++++++++++++++++++++++++++++----- common/mbedtls/config.h | 2 +- 3 files changed, 82 insertions(+), 12 deletions(-) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 82a97e8a0..2d212d9c2 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -11,6 +11,7 @@ add_library(pm3rrg_rdv4_mbedtls STATIC ../../common/mbedtls/ecp.c ../../common/mbedtls/ecdh.c ../../common/mbedtls/ecc_point_compression.c + ../../common/mbedtls/gcm.c ../../common/mbedtls/ecp_curves.c ../../common/mbedtls/certs.c ../../common/mbedtls/camellia.c diff --git a/client/src/cmdvas.c b/client/src/cmdvas.c index 00c5a83f4..19cacfc23 100644 --- a/client/src/cmdvas.c +++ b/client/src/cmdvas.c @@ -39,6 +39,7 @@ #include "mbedtls/bignum.h" #include "mbedtls/ecdh.h" #include "mbedtls/ecc_point_compression.h" +#include "mbedtls/gcm.h" uint8_t ecpData[] = { 0x6a, 0x01, 0x00, 0x00, 0x04 }; uint8_t aid[] = { 0x4f, 0x53, 0x45, 0x2e, 0x56, 0x41, 0x53, 0x2e, 0x30, 0x31 }; @@ -232,7 +233,35 @@ static int LoadMobileEphemeralKey(uint8_t *xcoordBuf, mbedtls_ecp_keypair *pubKe return PM3_SUCCESS; } -static int DecryptVASCryptogram(uint8_t *cryptogram, size_t cryptogramLen, mbedtls_ecp_keypair *privKey, uint8_t *out, size_t *outLen, uint8_t *timestamp) { +static int internalVasDecrypt(uint8_t *cipherText, size_t cipherTextLen, uint8_t *sharedSecret, uint8_t *ansiSharedInfo, size_t ansiSharedInfoLen, uint8_t *gcmAad, size_t gcmAadLen, uint8_t *out, size_t *outLen) { + uint8_t key[32] = {0}; + if (ansi_x963_sha256(sharedSecret, 32, ansiSharedInfo, ansiSharedInfoLen, sizeof(key), key)) { + PrintAndLogEx(FAILED, "ANSI X9.63 key derivation failed"); + return PM3_EINVARG; + } + + uint8_t iv[16] = {0}; + + mbedtls_gcm_context gcmCtx; + mbedtls_gcm_init(&gcmCtx); + if (mbedtls_gcm_setkey(&gcmCtx, MBEDTLS_CIPHER_ID_AES, key, sizeof(key) * 8)) { + PrintAndLogEx(FAILED, "Unable to use key in GCM context"); + return PM3_EINVARG; + } + + if (mbedtls_gcm_auth_decrypt(&gcmCtx, cipherTextLen - 16, iv, sizeof(iv), gcmAad, gcmAadLen, cipherText + cipherTextLen - 16, 16, cipherText, out)) { + PrintAndLogEx(FAILED, "Failed to perform GCM decryption"); + return PM3_EINVARG; + } + + mbedtls_gcm_free(&gcmCtx); + + *outLen = cipherTextLen - 16; + + return PM3_SUCCESS; +} + +static int DecryptVASCryptogram(uint8_t *pidHash, uint8_t *cryptogram, size_t cryptogramLen, mbedtls_ecp_keypair *privKey, uint8_t *out, size_t *outLen, uint32_t *timestamp) { uint8_t keyHint[4] = {0}; if (GetPrivateKeyHint(privKey, keyHint) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Unable to generate key hint"); @@ -263,9 +292,42 @@ static int DecryptVASCryptogram(uint8_t *cryptogram, size_t cryptogramLen, mbedt PrintAndLogEx(FAILED, "Failed to generate ECDH shared secret"); return PM3_EINVARG; } - - mbedtls_mpi_free(&sharedSecret); mbedtls_ecp_keypair_free(&mobilePubKey); + + uint8_t sharedSecretBytes[32] = {0}; + if (mbedtls_mpi_write_binary(&sharedSecret, sharedSecretBytes, sizeof(sharedSecretBytes))) { + mbedtls_mpi_free(&sharedSecret); + PrintAndLogEx(FAILED, "Failed to generate ECDH shared secret"); + return PM3_EINVARG; + } + mbedtls_mpi_free(&sharedSecret); + + uint8_t string1[27] = "ApplePay encrypted VAS data"; + uint8_t string2[13] = "id-aes256-GCM"; + + uint8_t method1SharedInfo[73] = {0}; + method1SharedInfo[0] = 13; + memcpy(method1SharedInfo + 1, string2, sizeof(string2)); + memcpy(method1SharedInfo + 1 + sizeof(string2), string1, sizeof(string1)); + memcpy(method1SharedInfo + 1 + sizeof(string2) + sizeof(string1), pidHash, 32); + + uint8_t decryptedData[68] = {0}; + size_t decryptedDataLen = 0; + if (internalVasDecrypt(cryptogram + 4 + 32, cryptogramLen - 4 - 32, sharedSecretBytes, method1SharedInfo, sizeof(method1SharedInfo), NULL, 0, decryptedData, &decryptedDataLen)) { + if (internalVasDecrypt(cryptogram + 4 + 32, cryptogramLen - 4 - 32, sharedSecretBytes, string1, sizeof(string1), pidHash, 32, decryptedData, &decryptedDataLen)) { + return PM3_EINVARG; + } + } + + memcpy(out, decryptedData + 4, decryptedDataLen - 4); + *outLen = decryptedDataLen - 4; + + *timestamp = 0; + for (int i = 0; i < 4; ++i) { + *timestamp = (*timestamp << 8) | decryptedData[i]; + } + *timestamp = *timestamp + 978328800; // Unix offset for Jan 1, 2001 + return PM3_SUCCESS; } @@ -383,11 +445,12 @@ static int CmdVASReader(const char *Cmd) { uint8_t cryptogram[120] = {0}; size_t cryptogramLen = 0; - int s = VASReader(passTypeIdLen > 0 ? pidHash : NULL, url, urlLen, cryptogram, &cryptogramLen, verbose); - if (s != PM3_SUCCESS) { + PrintAndLogEx(INFO, "Requesting pass type id: %s", sprint_ascii((uint8_t *) passTypeIdArg->sval[0], passTypeIdLen)); + + if (VASReader(passTypeIdLen > 0 ? pidHash : NULL, url, urlLen, cryptogram, &cryptogramLen, verbose) != PM3_SUCCESS) { CLIParserFree(ctx); mbedtls_ecp_keypair_free(&privKey); - return s; + return PM3_EINVARG; } if (verbose) { @@ -396,17 +459,20 @@ static int CmdVASReader(const char *Cmd) { uint8_t message[64] = {0}; size_t messageLen = 0; - uint8_t timestamp[4] = {0}; + uint32_t timestamp = 0; - if (DecryptVASCryptogram(cryptogram, cryptogramLen, &privKey, message, &messageLen, timestamp) != PM3_SUCCESS) { + if (DecryptVASCryptogram(pidHash, cryptogram, cryptogramLen, &privKey, message, &messageLen, ×tamp) != PM3_SUCCESS) { CLIParserFree(ctx); mbedtls_ecp_keypair_free(&privKey); return PM3_EINVARG; } + PrintAndLogEx(SUCCESS, "Message: %s", sprint_ascii(message, messageLen)); + PrintAndLogEx(SUCCESS, "Timestamp: %d", timestamp); + CLIParserFree(ctx); mbedtls_ecp_keypair_free(&privKey); - return s; + return PM3_SUCCESS; } static int CmdVASDecrypt(const char *Cmd) { @@ -459,14 +525,17 @@ static int CmdVASDecrypt(const char *Cmd) { uint8_t message[64] = {0}; size_t messageLen = 0; - uint8_t timestamp[4] = {0}; + uint32_t timestamp = 0; - if (DecryptVASCryptogram(cryptogram, cryptogramLen, &privKey, message, &messageLen, timestamp) != PM3_SUCCESS) { + if (DecryptVASCryptogram(pidHash, cryptogram, cryptogramLen, &privKey, message, &messageLen, ×tamp) != PM3_SUCCESS) { CLIParserFree(ctx); mbedtls_ecp_keypair_free(&privKey); return PM3_EINVARG; } + PrintAndLogEx(SUCCESS, "Message: %s", sprint_ascii(message, messageLen)); + PrintAndLogEx(SUCCESS, "Timestamp: %d", timestamp); + CLIParserFree(ctx); mbedtls_ecp_keypair_free(&privKey); return PM3_SUCCESS; diff --git a/common/mbedtls/config.h b/common/mbedtls/config.h index e6138bc6b..7c739cfd0 100644 --- a/common/mbedtls/config.h +++ b/common/mbedtls/config.h @@ -2811,7 +2811,7 @@ * This module enables the AES-GCM and CAMELLIA-GCM ciphersuites, if other * requisites are enabled as well. */ -//#define MBEDTLS_GCM_C +#define MBEDTLS_GCM_C /** * \def MBEDTLS_HAVEGE_C From 9dd845d8595feb57a3f426ee4ea787614312f95f Mon Sep 17 00:00:00 2001 From: Grayson Martin Date: Sat, 8 Jul 2023 13:40:52 -0500 Subject: [PATCH 0135/1034] Fix memory leak --- client/src/cmdvas.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/client/src/cmdvas.c b/client/src/cmdvas.c index 19cacfc23..664a14ce2 100644 --- a/client/src/cmdvas.c +++ b/client/src/cmdvas.c @@ -433,6 +433,8 @@ static int CmdVASReader(const char *Cmd) { return PM3_EINVARG; } + free(keyData); + struct arg_str *urlArg = arg_get_str(ctx, 3); int urlLen = arg_get_str_len(ctx, 3); const char *url = NULL; @@ -523,6 +525,8 @@ static int CmdVASDecrypt(const char *Cmd) { return PM3_EINVARG; } + free(keyData); + uint8_t message[64] = {0}; size_t messageLen = 0; uint32_t timestamp = 0; @@ -541,17 +545,12 @@ static int CmdVASDecrypt(const char *Cmd) { return PM3_SUCCESS; } -static int CmdVASSim(const char *Cmd) { - return PM3_SUCCESS; -} - static int CmdHelp(const char *Cmd); static command_t CommandTable[] = { {"--------", CmdHelp, AlwaysAvailable, "----------- " _CYAN_("Value Added Service") " -----------"}, {"reader", CmdVASReader, IfPm3Iso14443a, "Read and decrypt VAS message"}, {"decrypt", CmdVASDecrypt, AlwaysAvailable, "Decrypt a previously captured VAS cryptogram"}, - {"sim", CmdVASSim, IfPm3Iso14443a, "Simulate a VAS mobile credential"}, {"--------", CmdHelp, AlwaysAvailable, "----------------- " _CYAN_("General") " -----------------"}, {"help", CmdHelp, AlwaysAvailable, "This help"}, {NULL, NULL, NULL, NULL} From 70541e9450ca0c53b69e577c7944cc0469123f76 Mon Sep 17 00:00:00 2001 From: Grayson Martin Date: Sat, 8 Jul 2023 16:59:24 -0500 Subject: [PATCH 0136/1034] add continuous mode --- client/src/cmdvas.c | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/client/src/cmdvas.c b/client/src/cmdvas.c index 664a14ce2..9eaef0e59 100644 --- a/client/src/cmdvas.c +++ b/client/src/cmdvas.c @@ -326,7 +326,6 @@ static int DecryptVASCryptogram(uint8_t *pidHash, uint8_t *cryptogram, size_t cr for (int i = 0; i < 4; ++i) { *timestamp = (*timestamp << 8) | decryptedData[i]; } - *timestamp = *timestamp + 978328800; // Unix offset for Jan 1, 2001 return PM3_SUCCESS; } @@ -398,6 +397,7 @@ static int CmdVASReader(const char *Cmd) { arg_str0("p", NULL, "", "pass type id"), arg_str0("k", NULL, "", "path to terminal private key"), arg_str0(NULL, "url", "", "a URL to provide to the mobile device"), + arg_lit0("@", NULL, "continuous mode"), arg_lit0("v", "verbose", "log additional information"), arg_param_end }; @@ -442,23 +442,35 @@ static int CmdVASReader(const char *Cmd) { url = urlArg->sval[0]; } - bool verbose = arg_get_lit(ctx, 4); - - uint8_t cryptogram[120] = {0}; - size_t cryptogramLen = 0; + bool continuous = arg_get_lit(ctx, 4); + bool verbose = arg_get_lit(ctx, 5); PrintAndLogEx(INFO, "Requesting pass type id: %s", sprint_ascii((uint8_t *) passTypeIdArg->sval[0], passTypeIdLen)); - if (VASReader(passTypeIdLen > 0 ? pidHash : NULL, url, urlLen, cryptogram, &cryptogramLen, verbose) != PM3_SUCCESS) { + if (continuous) { + PrintAndLogEx(INFO, "Press " _GREEN_("Enter") " to exit"); + } + + uint8_t cryptogram[120] = {0}; + size_t cryptogramLen = 0; + int readerErr = -1; + + do { + readerErr = VASReader(passTypeIdLen > 0 ? pidHash : NULL, url, urlLen, cryptogram, &cryptogramLen, verbose); + + if (readerErr == 0 || kbd_enter_pressed()) { + break; + } + + msleep(200); + } while (continuous); + + if (readerErr) { CLIParserFree(ctx); mbedtls_ecp_keypair_free(&privKey); return PM3_EINVARG; } - if (verbose) { - PrintAndLogEx(INFO, "Got cryptogram response: %s", sprint_hex(cryptogram, cryptogramLen)); - } - uint8_t message[64] = {0}; size_t messageLen = 0; uint32_t timestamp = 0; @@ -470,7 +482,7 @@ static int CmdVASReader(const char *Cmd) { } PrintAndLogEx(SUCCESS, "Message: %s", sprint_ascii(message, messageLen)); - PrintAndLogEx(SUCCESS, "Timestamp: %d", timestamp); + PrintAndLogEx(SUCCESS, "Timestamp: %d (secs since Jan 1, 2001)", timestamp); CLIParserFree(ctx); mbedtls_ecp_keypair_free(&privKey); @@ -538,7 +550,7 @@ static int CmdVASDecrypt(const char *Cmd) { } PrintAndLogEx(SUCCESS, "Message: %s", sprint_ascii(message, messageLen)); - PrintAndLogEx(SUCCESS, "Timestamp: %d", timestamp); + PrintAndLogEx(SUCCESS, "Timestamp: %d (secs since Jan 1, 2001)", timestamp); CLIParserFree(ctx); mbedtls_ecp_keypair_free(&privKey); From 1e54cd661c9005ad8a6eaf6362a61fe11026df8d Mon Sep 17 00:00:00 2001 From: Grayson Martin Date: Sat, 8 Jul 2023 17:58:11 -0500 Subject: [PATCH 0137/1034] make style --- client/src/cmdnfc.c | 2 +- client/src/cmdvas.c | 800 ++++++++++++------------- client/src/crypto/libpcrypto.c | 40 +- common/mbedtls/ecc_point_compression.c | 16 +- common/mbedtls/ecc_point_compression.h | 2 +- 5 files changed, 430 insertions(+), 430 deletions(-) diff --git a/client/src/cmdnfc.c b/client/src/cmdnfc.c index cb9979449..45b01b874 100644 --- a/client/src/cmdnfc.c +++ b/client/src/cmdnfc.c @@ -422,7 +422,7 @@ static command_t CommandTable[] = { // {"type5", CmdNFCType5, AlwaysAvailable, "{ NFC Forum Tag Type 5... }"}, {"mf", CmdNFCMF, AlwaysAvailable, "{ NFC Type MIFARE Classic/Plus Tag... }"}, {"barcode", CmdNFCBarcode, AlwaysAvailable, "{ NFC Barcode Tag... }"}, - {"vas", CmdVAS, AlwaysAvailable, "{ Apple Value Added Service }"}, + {"vas", CmdVAS, AlwaysAvailable, "{ Apple Value Added Service }"}, // {"--------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("NFC peer-to-peer") " ------------"}, // {"isodep", CmdISODEP, AlwaysAvailable, "{ ISO-DEP protocol... }"}, // {"llcp", CmdNFCLLCP, AlwaysAvailable, "{ Logical Link Control Protocol... }"}, diff --git a/client/src/cmdvas.c b/client/src/cmdvas.c index 9eaef0e59..dfee9dbc3 100644 --- a/client/src/cmdvas.c +++ b/client/src/cmdvas.c @@ -47,534 +47,534 @@ uint8_t getVasUrlOnlyP2 = 0x00; uint8_t getVasFullReqP2 = 0x01; static int ParseSelectVASResponse(uint8_t *response, size_t resLen, bool verbose) { - struct tlvdb *tlvRoot = tlvdb_parse_multi(response, resLen); + struct tlvdb *tlvRoot = tlvdb_parse_multi(response, resLen); - struct tlvdb *versionTlv = tlvdb_find_full(tlvRoot, 0x9F21); - if (versionTlv == NULL) { - tlvdb_free(tlvRoot); - return PM3_ECARDEXCHANGE; - } - const struct tlv *version = tlvdb_get_tlv(versionTlv); - if (version->len != 2) { - tlvdb_free(tlvRoot); - return PM3_ECARDEXCHANGE; - } - if (verbose) { - PrintAndLogEx(INFO, "Mobile VAS application version: %d.%d", version->value[0], version->value[1]); - } - if (version->value[0] != 0x01 || version->value[1] != 0x00) { - tlvdb_free(tlvRoot); - return PM3_ECARDEXCHANGE; - } + struct tlvdb *versionTlv = tlvdb_find_full(tlvRoot, 0x9F21); + if (versionTlv == NULL) { + tlvdb_free(tlvRoot); + return PM3_ECARDEXCHANGE; + } + const struct tlv *version = tlvdb_get_tlv(versionTlv); + if (version->len != 2) { + tlvdb_free(tlvRoot); + return PM3_ECARDEXCHANGE; + } + if (verbose) { + PrintAndLogEx(INFO, "Mobile VAS application version: %d.%d", version->value[0], version->value[1]); + } + if (version->value[0] != 0x01 || version->value[1] != 0x00) { + tlvdb_free(tlvRoot); + return PM3_ECARDEXCHANGE; + } - struct tlvdb *capabilitiesTlv = tlvdb_find_full(tlvRoot, 0x9F23); - if (capabilitiesTlv == NULL) { - tlvdb_free(tlvRoot); - return PM3_ECARDEXCHANGE; - } - const struct tlv *capabilities = tlvdb_get_tlv(capabilitiesTlv); - if (capabilities->len != 4 - || capabilities->value[0] != 0x00 - || capabilities->value[1] != 0x00 - || capabilities->value[2] != 0x00 - || (capabilities->value[3] & 8) == 0) { - tlvdb_free(tlvRoot); - return PM3_ECARDEXCHANGE; - } + struct tlvdb *capabilitiesTlv = tlvdb_find_full(tlvRoot, 0x9F23); + if (capabilitiesTlv == NULL) { + tlvdb_free(tlvRoot); + return PM3_ECARDEXCHANGE; + } + const struct tlv *capabilities = tlvdb_get_tlv(capabilitiesTlv); + if (capabilities->len != 4 + || capabilities->value[0] != 0x00 + || capabilities->value[1] != 0x00 + || capabilities->value[2] != 0x00 + || (capabilities->value[3] & 8) == 0) { + tlvdb_free(tlvRoot); + return PM3_ECARDEXCHANGE; + } - tlvdb_free(tlvRoot); - return PM3_SUCCESS; + tlvdb_free(tlvRoot); + return PM3_SUCCESS; } static int CreateGetVASDataCommand(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t *out, int *outLen) { - if (pidHash == NULL && url == NULL) { - PrintAndLogEx(FAILED, "Must provide a Pass Type ID or a URL"); - return PM3_EINVARG; - } + if (pidHash == NULL && url == NULL) { + PrintAndLogEx(FAILED, "Must provide a Pass Type ID or a URL"); + return PM3_EINVARG; + } - if (url != NULL && urlLen > 256) { - PrintAndLogEx(FAILED, "URL must be less than 256 characters"); - return PM3_EINVARG; - } + if (url != NULL && urlLen > 256) { + PrintAndLogEx(FAILED, "URL must be less than 256 characters"); + return PM3_EINVARG; + } - uint8_t p2 = pidHash == NULL ? getVasUrlOnlyP2 : getVasFullReqP2; + uint8_t p2 = pidHash == NULL ? getVasUrlOnlyP2 : getVasFullReqP2; - size_t reqTlvLen = 19 + (pidHash != NULL ? 35 : 0) + (url != NULL ? 3 + urlLen : 0); - uint8_t *reqTlv = calloc(reqTlvLen, sizeof(uint8_t)); + size_t reqTlvLen = 19 + (pidHash != NULL ? 35 : 0) + (url != NULL ? 3 + urlLen : 0); + uint8_t *reqTlv = calloc(reqTlvLen, sizeof(uint8_t)); - uint8_t version[] = {0x9F, 0x22, 0x02, 0x01, 0x00}; - memcpy(reqTlv, version, sizeof(version)); + uint8_t version[] = {0x9F, 0x22, 0x02, 0x01, 0x00}; + memcpy(reqTlv, version, sizeof(version)); - uint8_t unknown[] = {0x9F, 0x28, 0x04, 0x00, 0x00, 0x00, 0x00}; - memcpy(reqTlv + sizeof(version), unknown, sizeof(unknown)); + uint8_t unknown[] = {0x9F, 0x28, 0x04, 0x00, 0x00, 0x00, 0x00}; + memcpy(reqTlv + sizeof(version), unknown, sizeof(unknown)); - uint8_t terminalCapabilities[] = {0x9F, 0x26, 0x04, 0x00, 0x00, 0x00, 0x02}; - memcpy(reqTlv + sizeof(version) + sizeof(unknown), terminalCapabilities, sizeof(terminalCapabilities)); + uint8_t terminalCapabilities[] = {0x9F, 0x26, 0x04, 0x00, 0x00, 0x00, 0x02}; + memcpy(reqTlv + sizeof(version) + sizeof(unknown), terminalCapabilities, sizeof(terminalCapabilities)); - if (pidHash != NULL) { - size_t offset = sizeof(version) + sizeof(unknown) + sizeof(terminalCapabilities); - reqTlv[offset] = 0x9F; - reqTlv[offset + 1] = 0x25; - reqTlv[offset + 2] = 32; - memcpy(reqTlv + offset + 3, pidHash, 32); - } + if (pidHash != NULL) { + size_t offset = sizeof(version) + sizeof(unknown) + sizeof(terminalCapabilities); + reqTlv[offset] = 0x9F; + reqTlv[offset + 1] = 0x25; + reqTlv[offset + 2] = 32; + memcpy(reqTlv + offset + 3, pidHash, 32); + } - if (url != NULL) { - size_t offset = sizeof(version) + sizeof(unknown) + sizeof(terminalCapabilities) + (pidHash != NULL ? 35 : 0); - reqTlv[offset] = 0x9F; - reqTlv[offset + 1] = 0x29; - reqTlv[offset + 2] = urlLen; - memcpy(reqTlv + offset + 3, url, urlLen); - } + if (url != NULL) { + size_t offset = sizeof(version) + sizeof(unknown) + sizeof(terminalCapabilities) + (pidHash != NULL ? 35 : 0); + reqTlv[offset] = 0x9F; + reqTlv[offset + 1] = 0x29; + reqTlv[offset + 2] = urlLen; + memcpy(reqTlv + offset + 3, url, urlLen); + } - out[0] = 0x80; - out[1] = 0xCA; - out[2] = 0x01; - out[3] = p2; - out[4] = reqTlvLen; - memcpy(out + 5, reqTlv, reqTlvLen); - out[5 + reqTlvLen] = 0x00; + out[0] = 0x80; + out[1] = 0xCA; + out[2] = 0x01; + out[3] = p2; + out[4] = reqTlvLen; + memcpy(out + 5, reqTlv, reqTlvLen); + out[5 + reqTlvLen] = 0x00; - *outLen = 6 + reqTlvLen; + *outLen = 6 + reqTlvLen; - free(reqTlv); - return PM3_SUCCESS; + free(reqTlv); + return PM3_SUCCESS; } static int ParseGetVASDataResponse(uint8_t *res, size_t resLen, uint8_t *cryptogram, size_t *cryptogramLen) { - struct tlvdb *tlvRoot = tlvdb_parse_multi(res, resLen); + struct tlvdb *tlvRoot = tlvdb_parse_multi(res, resLen); - struct tlvdb *cryptogramTlvdb = tlvdb_find_full(tlvRoot, 0x9F27); - if (cryptogramTlvdb == NULL) { - tlvdb_free(tlvRoot); - return PM3_ECARDEXCHANGE; - } - const struct tlv *cryptogramTlv = tlvdb_get_tlv(cryptogramTlvdb); + struct tlvdb *cryptogramTlvdb = tlvdb_find_full(tlvRoot, 0x9F27); + if (cryptogramTlvdb == NULL) { + tlvdb_free(tlvRoot); + return PM3_ECARDEXCHANGE; + } + const struct tlv *cryptogramTlv = tlvdb_get_tlv(cryptogramTlvdb); - memcpy(cryptogram, cryptogramTlv->value, cryptogramTlv->len); - *cryptogramLen = cryptogramTlv->len; + memcpy(cryptogram, cryptogramTlv->value, cryptogramTlv->len); + *cryptogramLen = cryptogramTlv->len; - tlvdb_free(tlvRoot); - return PM3_SUCCESS; + tlvdb_free(tlvRoot); + return PM3_SUCCESS; } static int LoadReaderPrivateKey(uint8_t *buf, size_t bufLen, mbedtls_ecp_keypair *privKey) { - struct tlvdb *derRoot = tlvdb_parse_multi(buf, bufLen); + struct tlvdb *derRoot = tlvdb_parse_multi(buf, bufLen); - struct tlvdb *privkeyTlvdb = tlvdb_find_full(derRoot, 0x04); - if (privkeyTlvdb == NULL) { - tlvdb_free(derRoot); - return PM3_EINVARG; - } - const struct tlv *privkeyTlv = tlvdb_get_tlv(privkeyTlvdb); + struct tlvdb *privkeyTlvdb = tlvdb_find_full(derRoot, 0x04); + if (privkeyTlvdb == NULL) { + tlvdb_free(derRoot); + return PM3_EINVARG; + } + const struct tlv *privkeyTlv = tlvdb_get_tlv(privkeyTlvdb); - if (mbedtls_ecp_read_key(MBEDTLS_ECP_DP_SECP256R1, privKey, privkeyTlv->value, privkeyTlv->len)) { - tlvdb_free(derRoot); - PrintAndLogEx(FAILED, "Unable to parse private key file. Should be DER encoded ASN1"); - return PM3_EINVARG; - } + if (mbedtls_ecp_read_key(MBEDTLS_ECP_DP_SECP256R1, privKey, privkeyTlv->value, privkeyTlv->len)) { + tlvdb_free(derRoot); + PrintAndLogEx(FAILED, "Unable to parse private key file. Should be DER encoded ASN1"); + return PM3_EINVARG; + } - struct tlvdb *pubkeyCoordsTlvdb = tlvdb_find_full(derRoot, 0x03); - if (pubkeyCoordsTlvdb == NULL) { - tlvdb_free(derRoot); - PrintAndLogEx(FAILED, "Private key file should include public key component"); - return PM3_EINVARG; - } - const struct tlv *pubkeyCoordsTlv = tlvdb_get_tlv(pubkeyCoordsTlvdb); - if (pubkeyCoordsTlv->len != 66 || pubkeyCoordsTlv->value[0] != 0x00 || pubkeyCoordsTlv->value[1] != 0x04) { - tlvdb_free(derRoot); - PrintAndLogEx(FAILED, "Invalid public key data"); - return PM3_EINVARG; - } + struct tlvdb *pubkeyCoordsTlvdb = tlvdb_find_full(derRoot, 0x03); + if (pubkeyCoordsTlvdb == NULL) { + tlvdb_free(derRoot); + PrintAndLogEx(FAILED, "Private key file should include public key component"); + return PM3_EINVARG; + } + const struct tlv *pubkeyCoordsTlv = tlvdb_get_tlv(pubkeyCoordsTlvdb); + if (pubkeyCoordsTlv->len != 66 || pubkeyCoordsTlv->value[0] != 0x00 || pubkeyCoordsTlv->value[1] != 0x04) { + tlvdb_free(derRoot); + PrintAndLogEx(FAILED, "Invalid public key data"); + return PM3_EINVARG; + } - tlvdb_free(derRoot); + tlvdb_free(derRoot); - if (mbedtls_ecp_point_read_binary(&privKey->grp, &privKey->Q, pubkeyCoordsTlv->value + 1, 65)) { - PrintAndLogEx(FAILED, "Failed to read in public key coordinates"); - return PM3_EINVARG; - } + if (mbedtls_ecp_point_read_binary(&privKey->grp, &privKey->Q, pubkeyCoordsTlv->value + 1, 65)) { + PrintAndLogEx(FAILED, "Failed to read in public key coordinates"); + return PM3_EINVARG; + } - if (mbedtls_ecp_check_pubkey(&privKey->grp, &privKey->Q)) { - PrintAndLogEx(FAILED, "VAS protocol requires an elliptic key on the P-256 curve"); - return PM3_EINVARG; - } + if (mbedtls_ecp_check_pubkey(&privKey->grp, &privKey->Q)) { + PrintAndLogEx(FAILED, "VAS protocol requires an elliptic key on the P-256 curve"); + return PM3_EINVARG; + } - return PM3_SUCCESS; + return PM3_SUCCESS; } static int GetPrivateKeyHint(mbedtls_ecp_keypair *privKey, uint8_t *keyHint) { - uint8_t xcoord[32] = {0}; - if (mbedtls_mpi_write_binary(&privKey->Q.X, xcoord, sizeof(xcoord))) { - return PM3_EINVARG; - } + uint8_t xcoord[32] = {0}; + if (mbedtls_mpi_write_binary(&privKey->Q.X, xcoord, sizeof(xcoord))) { + return PM3_EINVARG; + } - uint8_t hash[32] = {0}; - sha256hash(xcoord, 32, hash); + uint8_t hash[32] = {0}; + sha256hash(xcoord, 32, hash); - memcpy(keyHint, hash, 4); - return PM3_SUCCESS; + memcpy(keyHint, hash, 4); + return PM3_SUCCESS; } static int LoadMobileEphemeralKey(uint8_t *xcoordBuf, mbedtls_ecp_keypair *pubKey) { - uint8_t compressedEcKey[33] = {0}; - compressedEcKey[0] = 0x02; - memcpy(compressedEcKey + 1, xcoordBuf, 32); + uint8_t compressedEcKey[33] = {0}; + compressedEcKey[0] = 0x02; + memcpy(compressedEcKey + 1, xcoordBuf, 32); - uint8_t decompressedEcKey[65] = {0}; - size_t decompressedEcKeyLen = 0; - if (mbedtls_ecp_decompress(&pubKey->grp, compressedEcKey, sizeof(compressedEcKey), decompressedEcKey, &decompressedEcKeyLen, sizeof(decompressedEcKey))) { - return PM3_EINVARG; - } + uint8_t decompressedEcKey[65] = {0}; + size_t decompressedEcKeyLen = 0; + if (mbedtls_ecp_decompress(&pubKey->grp, compressedEcKey, sizeof(compressedEcKey), decompressedEcKey, &decompressedEcKeyLen, sizeof(decompressedEcKey))) { + return PM3_EINVARG; + } - if (mbedtls_ecp_point_read_binary(&pubKey->grp, &pubKey->Q, decompressedEcKey, decompressedEcKeyLen)) { - return PM3_EINVARG; - } + if (mbedtls_ecp_point_read_binary(&pubKey->grp, &pubKey->Q, decompressedEcKey, decompressedEcKeyLen)) { + return PM3_EINVARG; + } - return PM3_SUCCESS; + return PM3_SUCCESS; } static int internalVasDecrypt(uint8_t *cipherText, size_t cipherTextLen, uint8_t *sharedSecret, uint8_t *ansiSharedInfo, size_t ansiSharedInfoLen, uint8_t *gcmAad, size_t gcmAadLen, uint8_t *out, size_t *outLen) { - uint8_t key[32] = {0}; - if (ansi_x963_sha256(sharedSecret, 32, ansiSharedInfo, ansiSharedInfoLen, sizeof(key), key)) { - PrintAndLogEx(FAILED, "ANSI X9.63 key derivation failed"); - return PM3_EINVARG; - } + uint8_t key[32] = {0}; + if (ansi_x963_sha256(sharedSecret, 32, ansiSharedInfo, ansiSharedInfoLen, sizeof(key), key)) { + PrintAndLogEx(FAILED, "ANSI X9.63 key derivation failed"); + return PM3_EINVARG; + } - uint8_t iv[16] = {0}; + uint8_t iv[16] = {0}; - mbedtls_gcm_context gcmCtx; - mbedtls_gcm_init(&gcmCtx); - if (mbedtls_gcm_setkey(&gcmCtx, MBEDTLS_CIPHER_ID_AES, key, sizeof(key) * 8)) { - PrintAndLogEx(FAILED, "Unable to use key in GCM context"); - return PM3_EINVARG; - } + mbedtls_gcm_context gcmCtx; + mbedtls_gcm_init(&gcmCtx); + if (mbedtls_gcm_setkey(&gcmCtx, MBEDTLS_CIPHER_ID_AES, key, sizeof(key) * 8)) { + PrintAndLogEx(FAILED, "Unable to use key in GCM context"); + return PM3_EINVARG; + } - if (mbedtls_gcm_auth_decrypt(&gcmCtx, cipherTextLen - 16, iv, sizeof(iv), gcmAad, gcmAadLen, cipherText + cipherTextLen - 16, 16, cipherText, out)) { - PrintAndLogEx(FAILED, "Failed to perform GCM decryption"); - return PM3_EINVARG; - } + if (mbedtls_gcm_auth_decrypt(&gcmCtx, cipherTextLen - 16, iv, sizeof(iv), gcmAad, gcmAadLen, cipherText + cipherTextLen - 16, 16, cipherText, out)) { + PrintAndLogEx(FAILED, "Failed to perform GCM decryption"); + return PM3_EINVARG; + } - mbedtls_gcm_free(&gcmCtx); + mbedtls_gcm_free(&gcmCtx); - *outLen = cipherTextLen - 16; + *outLen = cipherTextLen - 16; - return PM3_SUCCESS; + return PM3_SUCCESS; } static int DecryptVASCryptogram(uint8_t *pidHash, uint8_t *cryptogram, size_t cryptogramLen, mbedtls_ecp_keypair *privKey, uint8_t *out, size_t *outLen, uint32_t *timestamp) { - uint8_t keyHint[4] = {0}; - if (GetPrivateKeyHint(privKey, keyHint) != PM3_SUCCESS) { - PrintAndLogEx(FAILED, "Unable to generate key hint"); - return PM3_EINVARG; - } + uint8_t keyHint[4] = {0}; + if (GetPrivateKeyHint(privKey, keyHint) != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "Unable to generate key hint"); + return PM3_EINVARG; + } - if (memcmp(keyHint, cryptogram, 4) != 0) { - PrintAndLogEx(FAILED, "Private key does not match cryptogram"); - return PM3_EINVARG; - } - - mbedtls_ecp_keypair mobilePubKey; - mbedtls_ecp_keypair_init(&mobilePubKey); - mobilePubKey.grp = privKey->grp; - - if (LoadMobileEphemeralKey(cryptogram + 4, &mobilePubKey) != PM3_SUCCESS) { - mbedtls_ecp_keypair_free(&mobilePubKey); - PrintAndLogEx(FAILED, "Unable to parse mobile ephemeral key from cryptogram"); - return PM3_EINVARG; - } + if (memcmp(keyHint, cryptogram, 4) != 0) { + PrintAndLogEx(FAILED, "Private key does not match cryptogram"); + return PM3_EINVARG; + } - mbedtls_mpi sharedSecret; - mbedtls_mpi_init(&sharedSecret); + mbedtls_ecp_keypair mobilePubKey; + mbedtls_ecp_keypair_init(&mobilePubKey); + mobilePubKey.grp = privKey->grp; - if (mbedtls_ecdh_compute_shared(&privKey->grp, &sharedSecret, &mobilePubKey.Q, &privKey->d, NULL, NULL)) { - mbedtls_mpi_free(&sharedSecret); - mbedtls_ecp_keypair_free(&mobilePubKey); - PrintAndLogEx(FAILED, "Failed to generate ECDH shared secret"); - return PM3_EINVARG; - } - mbedtls_ecp_keypair_free(&mobilePubKey); + if (LoadMobileEphemeralKey(cryptogram + 4, &mobilePubKey) != PM3_SUCCESS) { + mbedtls_ecp_keypair_free(&mobilePubKey); + PrintAndLogEx(FAILED, "Unable to parse mobile ephemeral key from cryptogram"); + return PM3_EINVARG; + } - uint8_t sharedSecretBytes[32] = {0}; - if (mbedtls_mpi_write_binary(&sharedSecret, sharedSecretBytes, sizeof(sharedSecretBytes))) { - mbedtls_mpi_free(&sharedSecret); - PrintAndLogEx(FAILED, "Failed to generate ECDH shared secret"); - return PM3_EINVARG; - } - mbedtls_mpi_free(&sharedSecret); + mbedtls_mpi sharedSecret; + mbedtls_mpi_init(&sharedSecret); - uint8_t string1[27] = "ApplePay encrypted VAS data"; - uint8_t string2[13] = "id-aes256-GCM"; + if (mbedtls_ecdh_compute_shared(&privKey->grp, &sharedSecret, &mobilePubKey.Q, &privKey->d, NULL, NULL)) { + mbedtls_mpi_free(&sharedSecret); + mbedtls_ecp_keypair_free(&mobilePubKey); + PrintAndLogEx(FAILED, "Failed to generate ECDH shared secret"); + return PM3_EINVARG; + } + mbedtls_ecp_keypair_free(&mobilePubKey); - uint8_t method1SharedInfo[73] = {0}; - method1SharedInfo[0] = 13; - memcpy(method1SharedInfo + 1, string2, sizeof(string2)); - memcpy(method1SharedInfo + 1 + sizeof(string2), string1, sizeof(string1)); - memcpy(method1SharedInfo + 1 + sizeof(string2) + sizeof(string1), pidHash, 32); + uint8_t sharedSecretBytes[32] = {0}; + if (mbedtls_mpi_write_binary(&sharedSecret, sharedSecretBytes, sizeof(sharedSecretBytes))) { + mbedtls_mpi_free(&sharedSecret); + PrintAndLogEx(FAILED, "Failed to generate ECDH shared secret"); + return PM3_EINVARG; + } + mbedtls_mpi_free(&sharedSecret); - uint8_t decryptedData[68] = {0}; - size_t decryptedDataLen = 0; - if (internalVasDecrypt(cryptogram + 4 + 32, cryptogramLen - 4 - 32, sharedSecretBytes, method1SharedInfo, sizeof(method1SharedInfo), NULL, 0, decryptedData, &decryptedDataLen)) { - if (internalVasDecrypt(cryptogram + 4 + 32, cryptogramLen - 4 - 32, sharedSecretBytes, string1, sizeof(string1), pidHash, 32, decryptedData, &decryptedDataLen)) { - return PM3_EINVARG; - } - } + uint8_t string1[27] = "ApplePay encrypted VAS data"; + uint8_t string2[13] = "id-aes256-GCM"; - memcpy(out, decryptedData + 4, decryptedDataLen - 4); - *outLen = decryptedDataLen - 4; + uint8_t method1SharedInfo[73] = {0}; + method1SharedInfo[0] = 13; + memcpy(method1SharedInfo + 1, string2, sizeof(string2)); + memcpy(method1SharedInfo + 1 + sizeof(string2), string1, sizeof(string1)); + memcpy(method1SharedInfo + 1 + sizeof(string2) + sizeof(string1), pidHash, 32); - *timestamp = 0; - for (int i = 0; i < 4; ++i) { - *timestamp = (*timestamp << 8) | decryptedData[i]; - } + uint8_t decryptedData[68] = {0}; + size_t decryptedDataLen = 0; + if (internalVasDecrypt(cryptogram + 4 + 32, cryptogramLen - 4 - 32, sharedSecretBytes, method1SharedInfo, sizeof(method1SharedInfo), NULL, 0, decryptedData, &decryptedDataLen)) { + if (internalVasDecrypt(cryptogram + 4 + 32, cryptogramLen - 4 - 32, sharedSecretBytes, string1, sizeof(string1), pidHash, 32, decryptedData, &decryptedDataLen)) { + return PM3_EINVARG; + } + } - return PM3_SUCCESS; + memcpy(out, decryptedData + 4, decryptedDataLen - 4); + *outLen = decryptedDataLen - 4; + + *timestamp = 0; + for (int i = 0; i < 4; ++i) { + *timestamp = (*timestamp << 8) | decryptedData[i]; + } + + return PM3_SUCCESS; } static int VASReader(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t *cryptogram, size_t *cryptogramLen, bool verbose) { - clearCommandBuffer(); + clearCommandBuffer(); - uint16_t flags = ISO14A_RAW | ISO14A_CONNECT | ISO14A_NO_SELECT | ISO14A_APPEND_CRC | ISO14A_NO_DISCONNECT; - SendCommandMIX(CMD_HF_ISO14443A_READER, flags, sizeof(ecpData), 0, ecpData, sizeof(ecpData)); + uint16_t flags = ISO14A_RAW | ISO14A_CONNECT | ISO14A_NO_SELECT | ISO14A_APPEND_CRC | ISO14A_NO_DISCONNECT; + SendCommandMIX(CMD_HF_ISO14443A_READER, flags, sizeof(ecpData), 0, ecpData, sizeof(ecpData)); - msleep(160); + msleep(160); - if (SelectCard14443A_4(false, false, NULL) != PM3_SUCCESS) { - PrintAndLogEx(FAILED, "No card in field"); - return PM3_ECARDEXCHANGE; - } + if (SelectCard14443A_4(false, false, NULL) != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "No card in field"); + return PM3_ECARDEXCHANGE; + } - uint16_t status = 0; - size_t resLen = 0; - uint8_t selectResponse[APDU_RES_LEN] = {0}; - Iso7816Select(CC_CONTACTLESS, true, true, aid, sizeof(aid), selectResponse, APDU_RES_LEN, &resLen, &status); + uint16_t status = 0; + size_t resLen = 0; + uint8_t selectResponse[APDU_RES_LEN] = {0}; + Iso7816Select(CC_CONTACTLESS, true, true, aid, sizeof(aid), selectResponse, APDU_RES_LEN, &resLen, &status); - if (status != 0x9000) { - PrintAndLogEx(FAILED, "Card doesn't support VAS"); - return PM3_ECARDEXCHANGE; - } + if (status != 0x9000) { + PrintAndLogEx(FAILED, "Card doesn't support VAS"); + return PM3_ECARDEXCHANGE; + } - if (ParseSelectVASResponse(selectResponse, resLen, verbose) != PM3_SUCCESS) { - PrintAndLogEx(FAILED, "Card doesn't support VAS"); - return PM3_ECARDEXCHANGE; - } + if (ParseSelectVASResponse(selectResponse, resLen, verbose) != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "Card doesn't support VAS"); + return PM3_ECARDEXCHANGE; + } - uint8_t getVasApdu[PM3_CMD_DATA_SIZE]; - int getVasApduLen = 0; + uint8_t getVasApdu[PM3_CMD_DATA_SIZE]; + int getVasApduLen = 0; - int s = CreateGetVASDataCommand(pidHash, url, urlLen, getVasApdu, &getVasApduLen); - if (s != PM3_SUCCESS) { - return s; - } + int s = CreateGetVASDataCommand(pidHash, url, urlLen, getVasApdu, &getVasApduLen); + if (s != PM3_SUCCESS) { + return s; + } - uint8_t apduRes[APDU_RES_LEN] = {0}; - int apduResLen = 0; + uint8_t apduRes[APDU_RES_LEN] = {0}; + int apduResLen = 0; - s = ExchangeAPDU14a(getVasApdu, getVasApduLen, false, false, apduRes, APDU_RES_LEN, &apduResLen); - if (s != PM3_SUCCESS) { - PrintAndLogEx(FAILED, "Failed to send APDU"); - return s; - } + s = ExchangeAPDU14a(getVasApdu, getVasApduLen, false, false, apduRes, APDU_RES_LEN, &apduResLen); + if (s != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "Failed to send APDU"); + return s; + } - if (apduResLen == 2 && apduRes[0] == 0x62 && apduRes[1] == 0x87) { - PrintAndLogEx(WARNING, "Device returned error on GET VAS DATA. Either doesn't have pass with matching id, or requires user authentication."); - return PM3_ECARDEXCHANGE; - } + if (apduResLen == 2 && apduRes[0] == 0x62 && apduRes[1] == 0x87) { + PrintAndLogEx(WARNING, "Device returned error on GET VAS DATA. Either doesn't have pass with matching id, or requires user authentication."); + return PM3_ECARDEXCHANGE; + } - if (apduResLen == 0 || apduRes[0] != 0x70) { - PrintAndLogEx(FAILED, "Invalid response from peer"); - } + if (apduResLen == 0 || apduRes[0] != 0x70) { + PrintAndLogEx(FAILED, "Invalid response from peer"); + } - return ParseGetVASDataResponse(apduRes, apduResLen, cryptogram, cryptogramLen); + return ParseGetVASDataResponse(apduRes, apduResLen, cryptogram, cryptogramLen); } static int CmdVASReader(const char *Cmd) { - CLIParserContext *ctx; - CLIParserInit(&ctx, "nfc vas reader", - "Read and decrypt VAS message", - "nfc vas reader -p pass.com.example.ticket -k ./priv.key -> select pass and decrypt with priv.key\nnfc vas reader --url https://example.com -> URL Only mode"); - void *argtable[] = { - arg_param_begin, - arg_str0("p", NULL, "", "pass type id"), - arg_str0("k", NULL, "", "path to terminal private key"), - arg_str0(NULL, "url", "", "a URL to provide to the mobile device"), - arg_lit0("@", NULL, "continuous mode"), - arg_lit0("v", "verbose", "log additional information"), - arg_param_end - }; - CLIExecWithReturn(ctx, Cmd, argtable, false); + CLIParserContext *ctx; + CLIParserInit(&ctx, "nfc vas reader", + "Read and decrypt VAS message", + "nfc vas reader -p pass.com.example.ticket -k ./priv.key -> select pass and decrypt with priv.key\nnfc vas reader --url https://example.com -> URL Only mode"); + void *argtable[] = { + arg_param_begin, + arg_str0("p", NULL, "", "pass type id"), + arg_str0("k", NULL, "", "path to terminal private key"), + arg_str0(NULL, "url", "", "a URL to provide to the mobile device"), + arg_lit0("@", NULL, "continuous mode"), + arg_lit0("v", "verbose", "log additional information"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); - struct arg_str *passTypeIdArg = arg_get_str(ctx, 1); - int passTypeIdLen = arg_get_str_len(ctx, 1); - uint8_t pidHash[32] = {0}; - sha256hash((uint8_t *) passTypeIdArg->sval[0], passTypeIdLen, pidHash); + struct arg_str *passTypeIdArg = arg_get_str(ctx, 1); + int passTypeIdLen = arg_get_str_len(ctx, 1); + uint8_t pidHash[32] = {0}; + sha256hash((uint8_t *) passTypeIdArg->sval[0], passTypeIdLen, pidHash); - struct arg_str *keyPathArg = arg_get_str(ctx, 2); - int keyPathLen = arg_get_str_len(ctx, 2); + struct arg_str *keyPathArg = arg_get_str(ctx, 2); + int keyPathLen = arg_get_str_len(ctx, 2); - if (keyPathLen == 0 && passTypeIdLen > 0) { - PrintAndLogEx(FAILED, "Must provide path to terminal private key if a pass type id is provided"); - CLIParserFree(ctx); - return PM3_EINVARG; - } + if (keyPathLen == 0 && passTypeIdLen > 0) { + PrintAndLogEx(FAILED, "Must provide path to terminal private key if a pass type id is provided"); + CLIParserFree(ctx); + return PM3_EINVARG; + } - uint8_t *keyData = NULL; - size_t keyDataLen = 0; - if (loadFile_safe(keyPathArg->sval[0], "", (void **)&keyData, &keyDataLen) != PM3_SUCCESS) { - CLIParserFree(ctx); - return PM3_EINVARG; - } + uint8_t *keyData = NULL; + size_t keyDataLen = 0; + if (loadFile_safe(keyPathArg->sval[0], "", (void **)&keyData, &keyDataLen) != PM3_SUCCESS) { + CLIParserFree(ctx); + return PM3_EINVARG; + } - mbedtls_ecp_keypair privKey; - mbedtls_ecp_keypair_init(&privKey); + mbedtls_ecp_keypair privKey; + mbedtls_ecp_keypair_init(&privKey); - if (LoadReaderPrivateKey(keyData, keyDataLen, &privKey) != PM3_SUCCESS) { - CLIParserFree(ctx); - mbedtls_ecp_keypair_free(&privKey); - return PM3_EINVARG; - } + if (LoadReaderPrivateKey(keyData, keyDataLen, &privKey) != PM3_SUCCESS) { + CLIParserFree(ctx); + mbedtls_ecp_keypair_free(&privKey); + return PM3_EINVARG; + } - free(keyData); + free(keyData); - struct arg_str *urlArg = arg_get_str(ctx, 3); - int urlLen = arg_get_str_len(ctx, 3); - const char *url = NULL; - if (urlLen > 0) { - url = urlArg->sval[0]; - } + struct arg_str *urlArg = arg_get_str(ctx, 3); + int urlLen = arg_get_str_len(ctx, 3); + const char *url = NULL; + if (urlLen > 0) { + url = urlArg->sval[0]; + } - bool continuous = arg_get_lit(ctx, 4); - bool verbose = arg_get_lit(ctx, 5); + bool continuous = arg_get_lit(ctx, 4); + bool verbose = arg_get_lit(ctx, 5); - PrintAndLogEx(INFO, "Requesting pass type id: %s", sprint_ascii((uint8_t *) passTypeIdArg->sval[0], passTypeIdLen)); + PrintAndLogEx(INFO, "Requesting pass type id: %s", sprint_ascii((uint8_t *) passTypeIdArg->sval[0], passTypeIdLen)); - if (continuous) { - PrintAndLogEx(INFO, "Press " _GREEN_("Enter") " to exit"); - } + if (continuous) { + PrintAndLogEx(INFO, "Press " _GREEN_("Enter") " to exit"); + } - uint8_t cryptogram[120] = {0}; - size_t cryptogramLen = 0; - int readerErr = -1; + uint8_t cryptogram[120] = {0}; + size_t cryptogramLen = 0; + int readerErr = -1; - do { - readerErr = VASReader(passTypeIdLen > 0 ? pidHash : NULL, url, urlLen, cryptogram, &cryptogramLen, verbose); + do { + readerErr = VASReader(passTypeIdLen > 0 ? pidHash : NULL, url, urlLen, cryptogram, &cryptogramLen, verbose); - if (readerErr == 0 || kbd_enter_pressed()) { - break; - } - - msleep(200); - } while (continuous); + if (readerErr == 0 || kbd_enter_pressed()) { + break; + } - if (readerErr) { - CLIParserFree(ctx); - mbedtls_ecp_keypair_free(&privKey); - return PM3_EINVARG; - } + msleep(200); + } while (continuous); - uint8_t message[64] = {0}; - size_t messageLen = 0; - uint32_t timestamp = 0; + if (readerErr) { + CLIParserFree(ctx); + mbedtls_ecp_keypair_free(&privKey); + return PM3_EINVARG; + } - if (DecryptVASCryptogram(pidHash, cryptogram, cryptogramLen, &privKey, message, &messageLen, ×tamp) != PM3_SUCCESS) { - CLIParserFree(ctx); - mbedtls_ecp_keypair_free(&privKey); - return PM3_EINVARG; - } + uint8_t message[64] = {0}; + size_t messageLen = 0; + uint32_t timestamp = 0; - PrintAndLogEx(SUCCESS, "Message: %s", sprint_ascii(message, messageLen)); - PrintAndLogEx(SUCCESS, "Timestamp: %d (secs since Jan 1, 2001)", timestamp); + if (DecryptVASCryptogram(pidHash, cryptogram, cryptogramLen, &privKey, message, &messageLen, ×tamp) != PM3_SUCCESS) { + CLIParserFree(ctx); + mbedtls_ecp_keypair_free(&privKey); + return PM3_EINVARG; + } - CLIParserFree(ctx); - mbedtls_ecp_keypair_free(&privKey); - return PM3_SUCCESS; + PrintAndLogEx(SUCCESS, "Message: %s", sprint_ascii(message, messageLen)); + PrintAndLogEx(SUCCESS, "Timestamp: %d (secs since Jan 1, 2001)", timestamp); + + CLIParserFree(ctx); + mbedtls_ecp_keypair_free(&privKey); + return PM3_SUCCESS; } static int CmdVASDecrypt(const char *Cmd) { - CLIParserContext *ctx; - CLIParserInit(&ctx, "nfc vas decrypt", - "Decrypt a previously captured cryptogram", - "nfc vas reader -p pass.com.example.ticket -k ./priv.key -> select pass and decrypt with priv.key\nnfc vas reader --url https://example.com -> URL Only mode"); - void *argtable[] = { - arg_param_begin, - arg_str0("p", NULL, "", "pass type id"), - arg_str0("k", NULL, "", "path to terminal private key"), - arg_str0(NULL, NULL, "", "cryptogram to decrypt"), - arg_param_end - }; - CLIExecWithReturn(ctx, Cmd, argtable, false); + CLIParserContext *ctx; + CLIParserInit(&ctx, "nfc vas decrypt", + "Decrypt a previously captured cryptogram", + "nfc vas reader -p pass.com.example.ticket -k ./priv.key -> select pass and decrypt with priv.key\nnfc vas reader --url https://example.com -> URL Only mode"); + void *argtable[] = { + arg_param_begin, + arg_str0("p", NULL, "", "pass type id"), + arg_str0("k", NULL, "", "path to terminal private key"), + arg_str0(NULL, NULL, "", "cryptogram to decrypt"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); - struct arg_str *passTypeIdArg = arg_get_str(ctx, 1); - int passTypeIdLen = arg_get_str_len(ctx, 1); - uint8_t pidHash[32] = {0}; - sha256hash((uint8_t *) passTypeIdArg->sval[0], passTypeIdLen, pidHash); + struct arg_str *passTypeIdArg = arg_get_str(ctx, 1); + int passTypeIdLen = arg_get_str_len(ctx, 1); + uint8_t pidHash[32] = {0}; + sha256hash((uint8_t *) passTypeIdArg->sval[0], passTypeIdLen, pidHash); - uint8_t cryptogram[120] = {0}; - int cryptogramLen = 0; - CLIGetHexWithReturn(ctx, 3, cryptogram, &cryptogramLen); + uint8_t cryptogram[120] = {0}; + int cryptogramLen = 0; + CLIGetHexWithReturn(ctx, 3, cryptogram, &cryptogramLen); - struct arg_str *keyPathArg = arg_get_str(ctx, 2); - int keyPathLen = arg_get_str_len(ctx, 2); + struct arg_str *keyPathArg = arg_get_str(ctx, 2); + int keyPathLen = arg_get_str_len(ctx, 2); - if (keyPathLen == 0 && passTypeIdLen > 0) { - PrintAndLogEx(FAILED, "Must provide path to terminal private key if a pass type id is provided"); - CLIParserFree(ctx); - return PM3_EINVARG; - } + if (keyPathLen == 0 && passTypeIdLen > 0) { + PrintAndLogEx(FAILED, "Must provide path to terminal private key if a pass type id is provided"); + CLIParserFree(ctx); + return PM3_EINVARG; + } - uint8_t *keyData = NULL; - size_t keyDataLen = 0; - if (loadFile_safe(keyPathArg->sval[0], "", (void **)&keyData, &keyDataLen) != PM3_SUCCESS) { - CLIParserFree(ctx); - return PM3_EINVARG; - } + uint8_t *keyData = NULL; + size_t keyDataLen = 0; + if (loadFile_safe(keyPathArg->sval[0], "", (void **)&keyData, &keyDataLen) != PM3_SUCCESS) { + CLIParserFree(ctx); + return PM3_EINVARG; + } - mbedtls_ecp_keypair privKey; - mbedtls_ecp_keypair_init(&privKey); + mbedtls_ecp_keypair privKey; + mbedtls_ecp_keypair_init(&privKey); - if (LoadReaderPrivateKey(keyData, keyDataLen, &privKey) != PM3_SUCCESS) { - CLIParserFree(ctx); - mbedtls_ecp_keypair_free(&privKey); - return PM3_EINVARG; - } + if (LoadReaderPrivateKey(keyData, keyDataLen, &privKey) != PM3_SUCCESS) { + CLIParserFree(ctx); + mbedtls_ecp_keypair_free(&privKey); + return PM3_EINVARG; + } - free(keyData); + free(keyData); - uint8_t message[64] = {0}; - size_t messageLen = 0; - uint32_t timestamp = 0; + uint8_t message[64] = {0}; + size_t messageLen = 0; + uint32_t timestamp = 0; - if (DecryptVASCryptogram(pidHash, cryptogram, cryptogramLen, &privKey, message, &messageLen, ×tamp) != PM3_SUCCESS) { - CLIParserFree(ctx); - mbedtls_ecp_keypair_free(&privKey); - return PM3_EINVARG; - } + if (DecryptVASCryptogram(pidHash, cryptogram, cryptogramLen, &privKey, message, &messageLen, ×tamp) != PM3_SUCCESS) { + CLIParserFree(ctx); + mbedtls_ecp_keypair_free(&privKey); + return PM3_EINVARG; + } - PrintAndLogEx(SUCCESS, "Message: %s", sprint_ascii(message, messageLen)); - PrintAndLogEx(SUCCESS, "Timestamp: %d (secs since Jan 1, 2001)", timestamp); + PrintAndLogEx(SUCCESS, "Message: %s", sprint_ascii(message, messageLen)); + PrintAndLogEx(SUCCESS, "Timestamp: %d (secs since Jan 1, 2001)", timestamp); - CLIParserFree(ctx); - mbedtls_ecp_keypair_free(&privKey); - return PM3_SUCCESS; + CLIParserFree(ctx); + mbedtls_ecp_keypair_free(&privKey); + return PM3_SUCCESS; } static int CmdHelp(const char *Cmd); static command_t CommandTable[] = { - {"--------", CmdHelp, AlwaysAvailable, "----------- " _CYAN_("Value Added Service") " -----------"}, - {"reader", CmdVASReader, IfPm3Iso14443a, "Read and decrypt VAS message"}, - {"decrypt", CmdVASDecrypt, AlwaysAvailable, "Decrypt a previously captured VAS cryptogram"}, - {"--------", CmdHelp, AlwaysAvailable, "----------------- " _CYAN_("General") " -----------------"}, - {"help", CmdHelp, AlwaysAvailable, "This help"}, - {NULL, NULL, NULL, NULL} + {"--------", CmdHelp, AlwaysAvailable, "----------- " _CYAN_("Value Added Service") " -----------"}, + {"reader", CmdVASReader, IfPm3Iso14443a, "Read and decrypt VAS message"}, + {"decrypt", CmdVASDecrypt, AlwaysAvailable, "Decrypt a previously captured VAS cryptogram"}, + {"--------", CmdHelp, AlwaysAvailable, "----------------- " _CYAN_("General") " -----------------"}, + {"help", CmdHelp, AlwaysAvailable, "This help"}, + {NULL, NULL, NULL, NULL} }; int CmdVAS(const char *Cmd) { - clearCommandBuffer(); - return CmdsParse(CommandTable, Cmd); + clearCommandBuffer(); + return CmdsParse(CommandTable, Cmd); }; static int CmdHelp(const char *Cmd) { - (void)Cmd; // Cmd is not used so far - CmdsHelp(CommandTable); - return PM3_SUCCESS; + (void)Cmd; // Cmd is not used so far + CmdsHelp(CommandTable); + return PM3_SUCCESS; }; diff --git a/client/src/crypto/libpcrypto.c b/client/src/crypto/libpcrypto.c index 12292c440..4e119f245 100644 --- a/client/src/crypto/libpcrypto.c +++ b/client/src/crypto/libpcrypto.c @@ -638,31 +638,31 @@ int blowfish_decrypt(uint8_t *iv, uint8_t *key, uint8_t *input, uint8_t *output, // Implementation from http://www.secg.org/sec1-v2.pdf#subsubsection.3.6.1 int ansi_x963_sha256(uint8_t *sharedSecret, size_t sharedSecretLen, uint8_t *sharedInfo, size_t sharedInfoLen, size_t keyDataLen, uint8_t *keyData) { - // sha256 hash has (practically) no max input len, so skipping that step + // sha256 hash has (practically) no max input len, so skipping that step - if (keyDataLen >= 32 * (pow(2, 32) - 1)) { - return 1; - } + if (keyDataLen >= 32 * (pow(2, 32) - 1)) { + return 1; + } - uint32_t counter = 0x00000001; + uint32_t counter = 0x00000001; - for (int i = 0; i < (keyDataLen / 32); ++i) { - uint8_t *hashMaterial = malloc(4 + sharedSecretLen + sharedInfoLen); - memcpy(hashMaterial, sharedSecret, sharedSecretLen); - hashMaterial[sharedSecretLen] = (counter >> 24); - hashMaterial[sharedSecretLen + 1] = (counter >> 16) & 0xFF; - hashMaterial[sharedSecretLen + 2] = (counter >> 8) & 0xFF; - hashMaterial[sharedSecretLen + 3] = counter & 0xFF; - memcpy(hashMaterial + sharedSecretLen + 4, sharedInfo, sharedInfoLen); + for (int i = 0; i < (keyDataLen / 32); ++i) { + uint8_t *hashMaterial = malloc(4 + sharedSecretLen + sharedInfoLen); + memcpy(hashMaterial, sharedSecret, sharedSecretLen); + hashMaterial[sharedSecretLen] = (counter >> 24); + hashMaterial[sharedSecretLen + 1] = (counter >> 16) & 0xFF; + hashMaterial[sharedSecretLen + 2] = (counter >> 8) & 0xFF; + hashMaterial[sharedSecretLen + 3] = counter & 0xFF; + memcpy(hashMaterial + sharedSecretLen + 4, sharedInfo, sharedInfoLen); - uint8_t hash[32] = {0}; - sha256hash(hashMaterial, 4 + sharedSecretLen + sharedInfoLen, hash); - free(hashMaterial); + uint8_t hash[32] = {0}; + sha256hash(hashMaterial, 4 + sharedSecretLen + sharedInfoLen, hash); + free(hashMaterial); - memcpy(keyData + (32 * i), hash, 32); + memcpy(keyData + (32 * i), hash, 32); - counter++; - } + counter++; + } - return 0; + return 0; } diff --git a/common/mbedtls/ecc_point_compression.c b/common/mbedtls/ecc_point_compression.c index 387255507..7216f3662 100644 --- a/common/mbedtls/ecc_point_compression.c +++ b/common/mbedtls/ecc_point_compression.c @@ -1,5 +1,5 @@ /* -* Not original to the mbedtls library. Taken from +* Not original to the mbedtls library. Taken from * https://github.com/mwarning/mbedtls_ecp_compression * to solve mbedtls' lack of support for elliptic point * compression and decompression @@ -35,13 +35,13 @@ int mbedtls_ecp_decompress( *olen = 2 * plen + 1; if (osize < *olen) - return(MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL); + return (MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL); if (ilen != plen + 1) - return(MBEDTLS_ERR_ECP_BAD_INPUT_DATA); + return (MBEDTLS_ERR_ECP_BAD_INPUT_DATA); if (input[0] != 0x02 && input[0] != 0x03) - return(MBEDTLS_ERR_ECP_BAD_INPUT_DATA); + return (MBEDTLS_ERR_ECP_BAD_INPUT_DATA); // output will consist of 0x04|X|Y memcpy(output, input, ilen); @@ -97,7 +97,7 @@ cleanup: mbedtls_mpi_free(&x); mbedtls_mpi_free(&n); - return(ret); + return (ret); } int mbedtls_ecp_compress( @@ -112,13 +112,13 @@ int mbedtls_ecp_compress( *olen = plen + 1; if (osize < *olen) - return(MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL); + return (MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL); if (ilen != 2 * plen + 1) return (MBEDTLS_ERR_ECP_BAD_INPUT_DATA); if (input[0] != 0x04) - return(MBEDTLS_ERR_ECP_BAD_INPUT_DATA); + return (MBEDTLS_ERR_ECP_BAD_INPUT_DATA); // output will consist of 0x0?|X memcpy(output, input, *olen); @@ -126,5 +126,5 @@ int mbedtls_ecp_compress( // Encode even/odd of Y into first byte (either 0x02 or 0x03) output[0] = 0x02 + (input[2 * plen] & 1); - return(0); + return (0); } diff --git a/common/mbedtls/ecc_point_compression.h b/common/mbedtls/ecc_point_compression.h index d75fea39b..fc691f8a4 100644 --- a/common/mbedtls/ecc_point_compression.h +++ b/common/mbedtls/ecc_point_compression.h @@ -1,5 +1,5 @@ /* -* Not original to the mbedtls library. Taken from +* Not original to the mbedtls library. Taken from * https://github.com/mwarning/mbedtls_ecp_compression * to solve mbedtls' lack of support for elliptic point * compression and decompression From 50dde2d020bc3ee29eb3b08202e11fb4c7762756 Mon Sep 17 00:00:00 2001 From: Grayson Martin Date: Sat, 8 Jul 2023 18:36:53 -0500 Subject: [PATCH 0138/1034] add changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca0fede15..57d0c4f7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added support for Apple Wallet NFC Passes with the Value Added Services protocol implementation (@gm3197) ## [Seven.4.16717][2023-06-25] - Change `hf 14a info` - now identifes QL88 tags (@iceman1001) From 889a02557bdabf3cbef3e9b0abbb2c2191c42d11 Mon Sep 17 00:00:00 2001 From: Sam <48739810+The-SamminAter@users.noreply.github.com> Date: Sat, 8 Jul 2023 23:16:30 -0700 Subject: [PATCH 0139/1034] Fix compiling on iOS iOS can, in fact, use the system() stdlib call Signed-off-by: Sam <48739810+The-SamminAter@users.noreply.github.com> --- client/deps/liblua/luaconf.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/client/deps/liblua/luaconf.h b/client/deps/liblua/luaconf.h index 77445383f..d0b657361 100644 --- a/client/deps/liblua/luaconf.h +++ b/client/deps/liblua/luaconf.h @@ -10,9 +10,6 @@ #if defined(__APPLE__) #include "TargetConditionals.h" -#if TARGET_OS_IOS || TARGET_OS_WATCH || TARGET_OS_TV -#define system(s) ((s)==NULL ? 0 : -1) -#endif // end iOS #endif #include From 013a26717c3442fa8e906e979d93a23e27e5cd5f Mon Sep 17 00:00:00 2001 From: Sam <48739810+The-SamminAter@users.noreply.github.com> Date: Sat, 8 Jul 2023 23:19:58 -0700 Subject: [PATCH 0140/1034] Update CHANGELOG.md Signed-off-by: Sam <48739810+The-SamminAter@users.noreply.github.com> --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index df3601ba1..e172769de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fix compiling liblua on iOS (@The-SamminAter) - Fixed the timeout of TCP connections (@wh201906) - Made the connection timeout configurable (@wh201906) From d3b6fc6b5aea6bbe570e876cd1d91a9bbde140c4 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 9 Jul 2023 09:43:54 +0200 Subject: [PATCH 0141/1034] allowing for more keys --- client/luascripts/hf_mf_dump_luxeo.lua | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/client/luascripts/hf_mf_dump_luxeo.lua b/client/luascripts/hf_mf_dump_luxeo.lua index aaf7d572f..f645d3d7b 100644 --- a/client/luascripts/hf_mf_dump_luxeo.lua +++ b/client/luascripts/hf_mf_dump_luxeo.lua @@ -231,13 +231,26 @@ local function main(args) print(acblue.."UID: "..tag.uid..acoff) print(acblue..string.format("XTEA key: %08X %08X %08X %08X", xteakey[0], xteakey[1], xteakey[2], xteakey[3])..acoff) - edata, cdata = readtag("415A54454B4D", xteakey) + local keys = { + "415A54454B4D", + "4B6A43059B64", + "C8BE6250C9C5", + } + + for i, key in ipairs(keys) do + edata, cdata = readtag(key, xteakey) + if edata and cdata then + goto continue + end + end if edata == nil or cdata == nil then print("ERROR Reading tag!") return nil end + ::continue:: + print("Ciphered data:") for key,value in ipairs(edata) do print(value) From 08958d36efa9be037e9b1a31b3432c5e892b4b31 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 9 Jul 2023 12:55:37 +0200 Subject: [PATCH 0142/1034] moving VAS to HF command category. Added missing Makefile and CMakefile --- CHANGELOG.md | 1 + client/CMakeLists.txt | 2 +- client/Makefile | 1 + client/experimental_lib/CMakeLists.txt | 1 + client/src/cmdhf.c | 12 +++++++----- client/src/{cmdvas.c => cmdhfvas.c} | 8 ++++---- client/src/{cmdvas.h => cmdhfvas.h} | 6 +++--- client/src/cmdnfc.c | 2 -- 8 files changed, 18 insertions(+), 15 deletions(-) rename client/src/{cmdvas.c => cmdhfvas.c} (99%) rename client/src/{cmdvas.h => cmdhfvas.h} (92%) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef8fd7e32..21b463b28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac ## [unreleased][unreleased] - Added support for Apple Wallet NFC Passes with the Value Added Services protocol implementation (@gm3197) - Fix compiling liblua on iOS (@The-SamminAter) + - Changed `hf_mf_luxeo_dump.lua` - now have list of keys to iterate (@iceman1001) - Fixed the timeout of TCP connections (@wh201906) - Made the connection timeout configurable (@wh201906) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 6252393e8..91742b711 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -298,6 +298,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/cmdhftexkom.c ${PM3_ROOT}/client/src/cmdhfthinfilm.c ${PM3_ROOT}/client/src/cmdhftopaz.c + ${PM3_ROOT}/client/src/cmdhfvas.c ${PM3_ROOT}/client/src/cmdhfwaveshare.c ${PM3_ROOT}/client/src/cmdhfxerox.c ${PM3_ROOT}/client/src/cmdhw.c @@ -337,7 +338,6 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/cmdlfzx8211.c ${PM3_ROOT}/client/src/cmdmain.c ${PM3_ROOT}/client/src/cmdnfc.c - ${PM3_ROOT}/client/src/cmdvas.c ${PM3_ROOT}/client/src/cmdparser.c ${PM3_ROOT}/client/src/cmdpiv.c ${PM3_ROOT}/client/src/cmdscript.c diff --git a/client/Makefile b/client/Makefile index d44e67011..8b9e469ba 100644 --- a/client/Makefile +++ b/client/Makefile @@ -597,6 +597,7 @@ SRCS = mifare/aiddesfire.c \ cmdhfthinfilm.c \ cmdhftopaz.c \ cmdhftexkom.c \ + cmdhfvas.c \ cmdhfwaveshare.c \ cmdhfxerox.c \ cmdhw.c \ diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 60e7b4004..ca8243dbb 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -298,6 +298,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/cmdhftexkom.c ${PM3_ROOT}/client/src/cmdhfthinfilm.c ${PM3_ROOT}/client/src/cmdhftopaz.c + ${PM3_ROOT}/client/src/cmdhfvas.c ${PM3_ROOT}/client/src/cmdhfwaveshare.c ${PM3_ROOT}/client/src/cmdhfxerox.c ${PM3_ROOT}/client/src/cmdhw.c diff --git a/client/src/cmdhf.c b/client/src/cmdhf.c index 97f7df3c7..b15671272 100644 --- a/client/src/cmdhf.c +++ b/client/src/cmdhf.c @@ -38,6 +38,7 @@ #include "cmdhftopaz.h" // TOPAZ #include "cmdhffelica.h" // ISO18092 / FeliCa #include "cmdhffido.h" // FIDO authenticators +#include "cmdhffudan.h" // Fudan cards #include "cmdhfgallagher.h" // Gallagher DESFire cards #include "cmdhfksx6924.h" // KS X 6924 #include "cmdhfcipurse.h" // CIPURSE transport cards @@ -46,11 +47,11 @@ #include "cmdhfcryptorf.h" // CryptoRF #include "cmdhfseos.h" // SEOS #include "cmdhfst25ta.h" // ST25TA -#include "cmdhfwaveshare.h" // Waveshare -#include "cmdhftexkom.h" // Texkom -#include "cmdhfxerox.h" // Xerox -#include "cmdhffudan.h" // Fudan cards #include "cmdhftesla.h" // Tesla +#include "cmdhftexkom.h" // Texkom +#include "cmdhfvas.h" // Value added services +#include "cmdhfwaveshare.h" // Waveshare +#include "cmdhfxerox.h" // Xerox #include "cmdtrace.h" // trace list #include "ui.h" #include "proxgui.h" @@ -498,8 +499,9 @@ static command_t CommandTable[] = { {"texkom", CmdHFTexkom, AlwaysAvailable, "{ Texkom RFIDs... }"}, {"thinfilm", CmdHFThinfilm, AlwaysAvailable, "{ Thinfilm RFIDs... }"}, {"topaz", CmdHFTopaz, AlwaysAvailable, "{ TOPAZ (NFC Type 1) RFIDs... }"}, - {"xerox", CmdHFXerox, AlwaysAvailable, "{ Fuji/Xerox cartridge RFIDs... }"}, + {"vas", CmdHFVAS, AlwaysAvailable, "{ Apple Value Added Service }"}, {"waveshare", CmdHFWaveshare, AlwaysAvailable, "{ Waveshare NFC ePaper... }"}, + {"xerox", CmdHFXerox, AlwaysAvailable, "{ Fuji/Xerox cartridge RFIDs... }"}, {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("General") " ---------------------"}, {"help", CmdHelp, AlwaysAvailable, "This help"}, {"list", CmdHFList, AlwaysAvailable, "List protocol data in trace buffer"}, diff --git a/client/src/cmdvas.c b/client/src/cmdhfvas.c similarity index 99% rename from client/src/cmdvas.c rename to client/src/cmdhfvas.c index dfee9dbc3..3e5f9cdf9 100644 --- a/client/src/cmdvas.c +++ b/client/src/cmdhfvas.c @@ -16,7 +16,7 @@ // An implementation of the Value Added Service protocol //----------------------------------------------------------------------------- -#include "cmdvas.h" +#include "cmdhfvas.h" #include "cliparser.h" #include "cmdparser.h" #include "comms.h" @@ -561,14 +561,14 @@ static int CmdHelp(const char *Cmd); static command_t CommandTable[] = { {"--------", CmdHelp, AlwaysAvailable, "----------- " _CYAN_("Value Added Service") " -----------"}, + {"help", CmdHelp, AlwaysAvailable, "This help"}, + {"--------", CmdHelp, AlwaysAvailable, "----------------- " _CYAN_("General") " -----------------"}, {"reader", CmdVASReader, IfPm3Iso14443a, "Read and decrypt VAS message"}, {"decrypt", CmdVASDecrypt, AlwaysAvailable, "Decrypt a previously captured VAS cryptogram"}, - {"--------", CmdHelp, AlwaysAvailable, "----------------- " _CYAN_("General") " -----------------"}, - {"help", CmdHelp, AlwaysAvailable, "This help"}, {NULL, NULL, NULL, NULL} }; -int CmdVAS(const char *Cmd) { +int CmdHFVAS(const char *Cmd) { clearCommandBuffer(); return CmdsParse(CommandTable, Cmd); }; diff --git a/client/src/cmdvas.h b/client/src/cmdhfvas.h similarity index 92% rename from client/src/cmdvas.h rename to client/src/cmdhfvas.h index 59a53f50d..50189e227 100644 --- a/client/src/cmdvas.h +++ b/client/src/cmdhfvas.h @@ -16,11 +16,11 @@ // An implementation of the Value Added Service protocol //----------------------------------------------------------------------------- -#ifndef CMDVAS_H__ -#define CMDVAS_H__ +#ifndef CMDHFVAS_H__ +#define CMDHFVAS_H__ #include "common.h" -int CmdVAS(const char *Cmd); +int CmdHFVAS(const char *Cmd); #endif diff --git a/client/src/cmdnfc.c b/client/src/cmdnfc.c index 45b01b874..eadfa7161 100644 --- a/client/src/cmdnfc.c +++ b/client/src/cmdnfc.c @@ -28,7 +28,6 @@ #include "cmdhfst25ta.h" #include "cmdhfthinfilm.h" #include "cmdhftopaz.h" -#include "cmdvas.h" #include "cmdnfc.h" #include "fileutils.h" #include "mifare/mifaredefault.h" @@ -422,7 +421,6 @@ static command_t CommandTable[] = { // {"type5", CmdNFCType5, AlwaysAvailable, "{ NFC Forum Tag Type 5... }"}, {"mf", CmdNFCMF, AlwaysAvailable, "{ NFC Type MIFARE Classic/Plus Tag... }"}, {"barcode", CmdNFCBarcode, AlwaysAvailable, "{ NFC Barcode Tag... }"}, - {"vas", CmdVAS, AlwaysAvailable, "{ Apple Value Added Service }"}, // {"--------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("NFC peer-to-peer") " ------------"}, // {"isodep", CmdISODEP, AlwaysAvailable, "{ ISO-DEP protocol... }"}, // {"llcp", CmdNFCLLCP, AlwaysAvailable, "{ Logical Link Control Protocol... }"}, From 6eba6015c5759e7ada1c9672132e1be0c8fb16be Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 9 Jul 2023 13:00:09 +0200 Subject: [PATCH 0143/1034] added a sample VAS private key to client/resources folder. Updated helptexts --- client/resources/vas_privkey.der | Bin 0 -> 121 bytes client/src/cmdhfvas.c | 14 ++++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 client/resources/vas_privkey.der diff --git a/client/resources/vas_privkey.der b/client/resources/vas_privkey.der new file mode 100644 index 0000000000000000000000000000000000000000..318a651c7b3a890330f6ef4d69c769e4bb1fc5a1 GIT binary patch literal 121 zcmV-<0EYiCcLD(c1Ry;XNAf(^iqKM}h+y#{o{zVY>`neNcAs0D`eJ%zY@whE1_&yK zNX|V20SBQ(13~}a bN4^smJ@5R%b*wJ!iGE)zP&nH&8!!s*Dc3ac literal 0 HcmV?d00001 diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index 3e5f9cdf9..574493ebb 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -389,9 +389,12 @@ static int VASReader(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t * static int CmdVASReader(const char *Cmd) { CLIParserContext *ctx; - CLIParserInit(&ctx, "nfc vas reader", + CLIParserInit(&ctx, "hf vas reader", "Read and decrypt VAS message", - "nfc vas reader -p pass.com.example.ticket -k ./priv.key -> select pass and decrypt with priv.key\nnfc vas reader --url https://example.com -> URL Only mode"); + "hf vas reader -p pass.com.example.ticket -k client/resources/vas_priv.key -> select pass and decrypt with priv.key\n" + "hf vas reader --url https://example.com -> URL Only mode" + ); + void *argtable[] = { arg_param_begin, arg_str0("p", NULL, "", "pass type id"), @@ -491,9 +494,12 @@ static int CmdVASReader(const char *Cmd) { static int CmdVASDecrypt(const char *Cmd) { CLIParserContext *ctx; - CLIParserInit(&ctx, "nfc vas decrypt", + CLIParserInit(&ctx, "hf vas decrypt", "Decrypt a previously captured cryptogram", - "nfc vas reader -p pass.com.example.ticket -k ./priv.key -> select pass and decrypt with priv.key\nnfc vas reader --url https://example.com -> URL Only mode"); + "hf vas reader -p pass.com.example.ticket -k client/resources/vas_priv.key -> select pass and decrypt with priv.key\n" + "hf vas reader --url https://example.com -> URL Only mode" + ); + void *argtable[] = { arg_param_begin, arg_str0("p", NULL, "", "pass type id"), From 7329d7b0d02fc4e50f82674977eafdb613e08240 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 9 Jul 2023 13:04:10 +0200 Subject: [PATCH 0144/1034] fix missing files for compilation --- common/mbedtls/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/mbedtls/Makefile b/common/mbedtls/Makefile index 142ac6b12..ebd2d5dcf 100644 --- a/common/mbedtls/Makefile +++ b/common/mbedtls/Makefile @@ -21,7 +21,10 @@ MYSRCS = \ cipher.c \ cmac.c \ des.c \ + ecc_point_compression.c \ + ecdh.c \ ecdsa.c \ + gcm.c \ md.c \ md5.c \ oid.c \ From a49fdbda0d7fa293a39ba75757e7ddef880809c9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 9 Jul 2023 15:26:05 +0200 Subject: [PATCH 0145/1034] reworked the logic and params a bit --- client/src/cmdhfvas.c | 186 ++++++++++++++++++++---------------------- 1 file changed, 89 insertions(+), 97 deletions(-) diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index 574493ebb..f235a46ec 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -390,177 +390,169 @@ static int VASReader(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t * static int CmdVASReader(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf vas reader", - "Read and decrypt VAS message", - "hf vas reader -p pass.com.example.ticket -k client/resources/vas_priv.key -> select pass and decrypt with priv.key\n" - "hf vas reader --url https://example.com -> URL Only mode" + "Read and decrypt Value Added Services (VAS) message", + "hf vas reader --url https://example.com -> URL Only mode\n" + "hf vas reader --pid pass.com.passkit.pksamples.nfcdemo -f vas_privkey.der -@\n" ); void *argtable[] = { arg_param_begin, - arg_str0("p", NULL, "", "pass type id"), - arg_str0("k", NULL, "", "path to terminal private key"), - arg_str0(NULL, "url", "", "a URL to provide to the mobile device"), + arg_str0(NULL, "pid", "", "PID, pass type id"), + arg_str0("f", "file", "", "path to terminal private key file"), + arg_str0(NULL, "url", "", "a URL to provide to the mobile device"), arg_lit0("@", NULL, "continuous mode"), arg_lit0("v", "verbose", "log additional information"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); - struct arg_str *passTypeIdArg = arg_get_str(ctx, 1); - int passTypeIdLen = arg_get_str_len(ctx, 1); - uint8_t pidHash[32] = {0}; - sha256hash((uint8_t *) passTypeIdArg->sval[0], passTypeIdLen, pidHash); + int pidlen = 0; + char pid[512] = {0}; + CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)pid, 512, &pidlen); - struct arg_str *keyPathArg = arg_get_str(ctx, 2); - int keyPathLen = arg_get_str_len(ctx, 2); + int keyfnlen = 0; + char keyfn[FILE_PATH_SIZE] = {0}; + CLIParamStrToBuf(arg_get_str(ctx, 2), (uint8_t *)keyfn, FILE_PATH_SIZE, &keyfnlen); - if (keyPathLen == 0 && passTypeIdLen > 0) { + if (keyfnlen == 0 && pidlen > 0) { PrintAndLogEx(FAILED, "Must provide path to terminal private key if a pass type id is provided"); CLIParserFree(ctx); return PM3_EINVARG; } - uint8_t *keyData = NULL; - size_t keyDataLen = 0; - if (loadFile_safe(keyPathArg->sval[0], "", (void **)&keyData, &keyDataLen) != PM3_SUCCESS) { - CLIParserFree(ctx); - return PM3_EINVARG; + int urllen = 0; + char url[512] = {0}; + CLIParamStrToBuf(arg_get_str(ctx, 3), (uint8_t *)url, 512, &urllen); + + bool continuous = arg_get_lit(ctx, 4); + bool verbose = arg_get_lit(ctx, 5); + CLIParserFree(ctx); + + // santity checks + uint8_t *key_data = NULL; + size_t key_datalen = 0; + if (loadFile_safe(keyfn, "", (void **)&key_data, &key_datalen) != PM3_SUCCESS) { + return PM3_EFILE; } mbedtls_ecp_keypair privKey; mbedtls_ecp_keypair_init(&privKey); - if (LoadReaderPrivateKey(keyData, keyDataLen, &privKey) != PM3_SUCCESS) { - CLIParserFree(ctx); + if (LoadReaderPrivateKey(key_data, key_datalen, &privKey) != PM3_SUCCESS) { + free(key_data); mbedtls_ecp_keypair_free(&privKey); - return PM3_EINVARG; + return PM3_ESOFT; } + free(key_data); - free(keyData); - - struct arg_str *urlArg = arg_get_str(ctx, 3); - int urlLen = arg_get_str_len(ctx, 3); - const char *url = NULL; - if (urlLen > 0) { - url = urlArg->sval[0]; - } - - bool continuous = arg_get_lit(ctx, 4); - bool verbose = arg_get_lit(ctx, 5); - - PrintAndLogEx(INFO, "Requesting pass type id: %s", sprint_ascii((uint8_t *) passTypeIdArg->sval[0], passTypeIdLen)); + PrintAndLogEx(INFO, "Requesting pass type id... " _GREEN_("%s"), sprint_ascii((uint8_t *) pid, pidlen)); if (continuous) { PrintAndLogEx(INFO, "Press " _GREEN_("Enter") " to exit"); } + uint8_t pidhash[32] = {0}; + sha256hash((uint8_t *) pid, pidlen, pidhash); + + size_t clen = 0; + size_t mlen = 0; uint8_t cryptogram[120] = {0}; - size_t cryptogramLen = 0; - int readerErr = -1; + uint8_t msg[64] = {0}; + uint32_t timestamp = 0; + int res = PM3_SUCCESS; do { - readerErr = VASReader(passTypeIdLen > 0 ? pidHash : NULL, url, urlLen, cryptogram, &cryptogramLen, verbose); - - if (readerErr == 0 || kbd_enter_pressed()) { + if (continuous && kbd_enter_pressed()) { break; } + + res = VASReader( (pidlen > 0) ? pidhash : NULL, url, urllen, cryptogram, &clen, verbose); + if (res == PM3_SUCCESS) { - msleep(200); + res = DecryptVASCryptogram(pidhash, cryptogram, clen, &privKey, msg, &mlen, ×tamp); + if (res == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "Timestamp... " _YELLOW_("%d") " (secs since Jan 1, 2001)", timestamp); + PrintAndLogEx(SUCCESS, "Message..... " _YELLOW_("%s"), sprint_ascii(msg, mlen)); + // extra sleep after successfull read + if (continuous) { + msleep(3000); + } + } + } + msleep(300); } while (continuous); - if (readerErr) { - CLIParserFree(ctx); - mbedtls_ecp_keypair_free(&privKey); - return PM3_EINVARG; - } - - uint8_t message[64] = {0}; - size_t messageLen = 0; - uint32_t timestamp = 0; - - if (DecryptVASCryptogram(pidHash, cryptogram, cryptogramLen, &privKey, message, &messageLen, ×tamp) != PM3_SUCCESS) { - CLIParserFree(ctx); - mbedtls_ecp_keypair_free(&privKey); - return PM3_EINVARG; - } - - PrintAndLogEx(SUCCESS, "Message: %s", sprint_ascii(message, messageLen)); - PrintAndLogEx(SUCCESS, "Timestamp: %d (secs since Jan 1, 2001)", timestamp); - - CLIParserFree(ctx); mbedtls_ecp_keypair_free(&privKey); - return PM3_SUCCESS; + return res; } static int CmdVASDecrypt(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf vas decrypt", "Decrypt a previously captured cryptogram", - "hf vas reader -p pass.com.example.ticket -k client/resources/vas_priv.key -> select pass and decrypt with priv.key\n" - "hf vas reader --url https://example.com -> URL Only mode" + "hf vas decrypt --pid pass.com.passkit.pksamples.nfcdemo -f vas_privkey.der -d 00000000\n" ); void *argtable[] = { arg_param_begin, - arg_str0("p", NULL, "", "pass type id"), - arg_str0("k", NULL, "", "path to terminal private key"), - arg_str0(NULL, NULL, "", "cryptogram to decrypt"), + arg_str0(NULL, "pid", "", "PID, pass type id"), + arg_str0("f", "file", "", "path to terminal private key file"), + arg_str0("d", "data", "", "cryptogram to decrypt"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); - struct arg_str *passTypeIdArg = arg_get_str(ctx, 1); - int passTypeIdLen = arg_get_str_len(ctx, 1); - uint8_t pidHash[32] = {0}; - sha256hash((uint8_t *) passTypeIdArg->sval[0], passTypeIdLen, pidHash); + int pidlen = 0; + char pid[512] = {0}; + CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)pid, 512, &pidlen); - uint8_t cryptogram[120] = {0}; - int cryptogramLen = 0; - CLIGetHexWithReturn(ctx, 3, cryptogram, &cryptogramLen); + int keyfnlen = 0; + char keyfn[FILE_PATH_SIZE] = {0}; + CLIParamStrToBuf(arg_get_str(ctx, 2), (uint8_t *)keyfn, FILE_PATH_SIZE, &keyfnlen); - struct arg_str *keyPathArg = arg_get_str(ctx, 2); - int keyPathLen = arg_get_str_len(ctx, 2); - - if (keyPathLen == 0 && passTypeIdLen > 0) { + if (keyfnlen == 0 && pidlen > 0) { PrintAndLogEx(FAILED, "Must provide path to terminal private key if a pass type id is provided"); CLIParserFree(ctx); return PM3_EINVARG; } - uint8_t *keyData = NULL; - size_t keyDataLen = 0; - if (loadFile_safe(keyPathArg->sval[0], "", (void **)&keyData, &keyDataLen) != PM3_SUCCESS) { - CLIParserFree(ctx); - return PM3_EINVARG; + int clen = 0; + uint8_t cryptogram[120] = {0}; + CLIGetHexWithReturn(ctx, 3, cryptogram, &clen); + CLIParserFree(ctx); + + // santity checks + uint8_t *key_data = NULL; + size_t key_datalen = 0; + if (loadFile_safe(keyfn, "", (void **)&key_data, &key_datalen) != PM3_SUCCESS) { + return PM3_EFILE; } mbedtls_ecp_keypair privKey; mbedtls_ecp_keypair_init(&privKey); - if (LoadReaderPrivateKey(keyData, keyDataLen, &privKey) != PM3_SUCCESS) { - CLIParserFree(ctx); + if (LoadReaderPrivateKey(key_data, key_datalen, &privKey) != PM3_SUCCESS) { + free(key_data); mbedtls_ecp_keypair_free(&privKey); - return PM3_EINVARG; + return PM3_EFILE; } + free(key_data); - free(keyData); + uint8_t pidhash[32] = {0}; + sha256hash((uint8_t *) pid, pidlen, pidhash); - uint8_t message[64] = {0}; - size_t messageLen = 0; + size_t mlen = 0; + uint8_t msg[64] = {0}; uint32_t timestamp = 0; - if (DecryptVASCryptogram(pidHash, cryptogram, cryptogramLen, &privKey, message, &messageLen, ×tamp) != PM3_SUCCESS) { - CLIParserFree(ctx); - mbedtls_ecp_keypair_free(&privKey); - return PM3_EINVARG; + int res = DecryptVASCryptogram(pidhash, cryptogram, clen, &privKey, msg, &mlen, ×tamp); + if (res == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "Timestamp... " _YELLOW_("%d") " (secs since Jan 1, 2001)", timestamp); + PrintAndLogEx(SUCCESS, "Message..... " _YELLOW_("%s"), sprint_ascii(msg, mlen)); } - PrintAndLogEx(SUCCESS, "Message: %s", sprint_ascii(message, messageLen)); - PrintAndLogEx(SUCCESS, "Timestamp: %d (secs since Jan 1, 2001)", timestamp); - - CLIParserFree(ctx); mbedtls_ecp_keypair_free(&privKey); - return PM3_SUCCESS; + return res; } static int CmdHelp(const char *Cmd); From 7a66e2389ec9be7e55bd1f5a516aaafe14ca68dd Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 9 Jul 2023 15:57:35 +0200 Subject: [PATCH 0146/1034] hf search will now detect VAS --- client/src/cmdhf14a.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 0a9a23578..7bdc04c06 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -194,6 +194,7 @@ static const hintAIDList_t hintAIDList[] = { { "\x32\x50\x41\x59\x2E\x53\x59\x53\x2E\x44\x44\x46\x30\x31", 14, "EMV (ppse)", "emv" }, { "\x41\x44\x20\x46\x31", 5, "CIPURSE", "hf cipurse" }, { "\xd2\x76\x00\x00\x85\x01\x00", 7, "desfire", "hf mfdes" }, + { "\x4F\x53\x45\x2E\x56\x41\x53\x2E\x30\x31",10, "Apple VAS", "hf vas"}, }; // iso14a apdu input frame length @@ -2416,10 +2417,9 @@ int infoHF14A4Applications(bool verbose) { } if (found) { - if (verbose) + if (verbose) { PrintAndLogEx(INFO, "---------------------------------------------------"); - else - PrintAndLogEx(INFO, "Short AID search:"); + } if (found >= ARRAYLEN(hintAIDList) - 1) { PrintAndLogEx(HINT, "Hint: card answers to all AID. It maybe the latest revision of plus/desfire/ultralight card."); From d99bd546621d07fe99355148cc7acbbc8084431a Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 9 Jul 2023 16:45:03 +0200 Subject: [PATCH 0147/1034] fixed helptext sample --- client/src/cmdhfvas.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index f235a46ec..839474cc5 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -233,7 +233,9 @@ static int LoadMobileEphemeralKey(uint8_t *xcoordBuf, mbedtls_ecp_keypair *pubKe return PM3_SUCCESS; } -static int internalVasDecrypt(uint8_t *cipherText, size_t cipherTextLen, uint8_t *sharedSecret, uint8_t *ansiSharedInfo, size_t ansiSharedInfoLen, uint8_t *gcmAad, size_t gcmAadLen, uint8_t *out, size_t *outLen) { +static int internalVasDecrypt(uint8_t *cipherText, size_t cipherTextLen, uint8_t *sharedSecret, + uint8_t *ansiSharedInfo, size_t ansiSharedInfoLen, + uint8_t *gcmAad, size_t gcmAadLen, uint8_t *out, size_t *outLen) { uint8_t key[32] = {0}; if (ansi_x963_sha256(sharedSecret, 32, ansiSharedInfo, ansiSharedInfoLen, sizeof(key), key)) { PrintAndLogEx(FAILED, "ANSI X9.63 key derivation failed"); @@ -490,7 +492,7 @@ static int CmdVASDecrypt(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf vas decrypt", "Decrypt a previously captured cryptogram", - "hf vas decrypt --pid pass.com.passkit.pksamples.nfcdemo -f vas_privkey.der -d 00000000\n" + "hf vas decrypt --pid pass.com.passkit.pksamples.nfcdemo -f vas_privkey.der -d c0b77375eae416b79449347f9fe838c05cdb57dc7470b97b93b806cb348771d9bfbe29d58538c7c7d7c3d015fa205b68bfccd726058a62f7f44085ac98dbf877120fd9059f1507b956e0a6d56d0a\n" ); void *argtable[] = { From 6d403ddfeff1903e02bb64f1a9d1b4a71c65549e Mon Sep 17 00:00:00 2001 From: kormax Date: Sun, 9 Jul 2023 22:33:26 +0300 Subject: [PATCH 0148/1034] Create a list of known ECP frames --- client/resources/ecplist.json | 91 +++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 client/resources/ecplist.json diff --git a/client/resources/ecplist.json b/client/resources/ecplist.json new file mode 100644 index 000000000..13ea2faee --- /dev/null +++ b/client/resources/ecplist.json @@ -0,0 +1,91 @@ +[ + { + "value": "6a01000000", + "name": "VAS or payment", + "description": "Used when a reader needs a pass or a payment card. Sometimes called VAS over Payment" + }, + { + "value": "6a01000001", + "name": "VAS and payment", + "description": "Also called single tap mode. Displays pass info under a payment card. Allows reading multiple passes with different ids in one tap" + }, + { + "value": "6a01000002", + "name": "VAS only", + "description": "Used when a reader requests passes only" + }, + { + "value": "6a01000003", + "name": "Payment only", + "description": "Used when a reader requests payment cards only. Also disables express mode for chinese transit cards" + }, + { + "value": "6a01cf0000", + "name": "Ignore", + "description": "iPhones before IOS17 emit this frame so that other apple devices don't react to the field during background reading. Also emited during NFCReaderSession subtypes" + }, + + + { + "value": "6a02c801000300000000000000", + "name": "Transit: Ventra", + "description": "" + }, + { + "value": "6a02c801000304000000000000", + "name": "Transit: HOP Fastpass", + "description": "" + }, + { + "value": "6a02c801000300010000000000", + "name": "Transit: WMATA", + "description": "" + }, + { + "value": "6a02c801000300027900000000", + "name": "Transit: TFL", + "description": "Found by a member of Proxmark community. Data bytes define a mask of supported EMV payment networks for fallback. In this case: Amex, Visa, Mastercard, Maestro, Vpay" + }, + { + "value": "6a02c801000300050000000000", + "name": "Transit: LA TAP", + "description": "" + }, + { + "value": "6a02c801000300070000000000", + "name": "Transit: Clipper", + "description": "" + }, + + + { + "value": "6a02cb0206021100deadbeefdeadbeef", + "name": "Access: Home Key", + "description": "Last 8 bytes refer to reader group identifier, common for all readers in same home installation, allows to differentiate between keys for different homes" + }, + + { + "value": "6a02c30209010201", + "name": "Access: Mercedes Pairing", + "description": "Device does not respond to this frame. Displays a car pairing popup for Mercedes" + }, + + + { + "value": "6a0281030000", + "name": "Identity", + "description": "Used for reading ISO18013 digital IDs" + }, + + + { + "value": "6a02890500010001deadbeef6969", + "name": "NameDrop", + "description": "Device does not respond to poll due to this frame, but it serves as a trigger for AirDrop frame. Data part contains BLE MAC address" + }, + { + "value": "6a02890500010000000000000000", + "name": "AirDrop", + "description": "Only sent if sees a NameDrop frame of other device. Device responds to poll with UID 00010203" + } +] \ No newline at end of file From faab7c5712b0db3f1b399f697b681bea82f78cc2 Mon Sep 17 00:00:00 2001 From: kormax Date: Sun, 9 Jul 2023 22:35:15 +0300 Subject: [PATCH 0149/1034] Fix typos --- client/resources/ecplist.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/resources/ecplist.json b/client/resources/ecplist.json index 13ea2faee..e0e09c80f 100644 --- a/client/resources/ecplist.json +++ b/client/resources/ecplist.json @@ -22,7 +22,7 @@ { "value": "6a01cf0000", "name": "Ignore", - "description": "iPhones before IOS17 emit this frame so that other apple devices don't react to the field during background reading. Also emited during NFCReaderSession subtypes" + "description": "iPhones before IOS17 emit this frame so that other Apple devices don't react to the field during background reading. Also emitted during NFCReaderSession subtypes" }, @@ -81,7 +81,7 @@ { "value": "6a02890500010001deadbeef6969", "name": "NameDrop", - "description": "Device does not respond to poll due to this frame, but it serves as a trigger for AirDrop frame. Data part contains BLE MAC address" + "description": "Triggers a warp animation. Device does not respond to poll after this frame, but it serves as a trigger for AirDrop frame. Data part contains BLE MAC address" }, { "value": "6a02890500010000000000000000", From d5b77d2546e9bb930f8189899176dffecdfb524b Mon Sep 17 00:00:00 2001 From: kormax Date: Sun, 9 Jul 2023 22:36:13 +0300 Subject: [PATCH 0150/1034] Add newline at the end --- client/resources/ecplist.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/resources/ecplist.json b/client/resources/ecplist.json index e0e09c80f..0ce7fcda5 100644 --- a/client/resources/ecplist.json +++ b/client/resources/ecplist.json @@ -88,4 +88,4 @@ "name": "AirDrop", "description": "Only sent if sees a NameDrop frame of other device. Device responds to poll with UID 00010203" } -] \ No newline at end of file +] From 00ebea6487b983592d4913049ab57c386afc1777 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 10 Jul 2023 00:18:35 +0200 Subject: [PATCH 0151/1034] autopwn now detects if someone runs it against a MF UL/NTAG based card and stops --- client/src/cmdhfmf.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 2eb7fa415..ec8703b68 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -1093,7 +1093,7 @@ static int FastDumpWithEcFill(uint8_t numsectors) { } if (resp.status != PM3_SUCCESS) { - PrintAndLogEx(INFO, "fast dump reported back failure w KEY A, swapping to KEY B"); + PrintAndLogEx(FAILED, "fast dump reported back failure w KEY A, swapping to KEY B"); // ecfill key B payload.keytype = MF_KEY_B; @@ -1107,8 +1107,8 @@ static int FastDumpWithEcFill(uint8_t numsectors) { } if (resp.status != PM3_SUCCESS) { - PrintAndLogEx(INFO, "fast dump reported back failure w KEY B"); - PrintAndLogEx(INFO, "Dump file is " _RED_("PARTIAL") " complete"); + PrintAndLogEx(FAILED, "fast dump reported back failure w KEY B"); + PrintAndLogEx(FAILED, "Dump file is " _RED_("PARTIAL") " complete"); } } return PM3_SUCCESS; @@ -2479,6 +2479,13 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { // ------------------------------ + uint32_t tagT = GetHF14AMfU_Type(); + if (tagT != UL_ERROR) { + PrintAndLogEx(ERR, "Detected a MIFARE Ultralight/C/NTAG Compatible card."); + PrintAndLogEx(ERR, "This command targets " _YELLOW_("MIFARE Classic")); + return PM3_ESOFT; + } + // Select card to get UID/UIDLEN/ATQA/SAK information clearCommandBuffer(); SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); @@ -3993,23 +4000,24 @@ static int CmdHF14AMfKeyBrute(const char *Cmd) { */ void printKeyTable(size_t sectorscnt, sector_t *e_sector) { - return printKeyTableEx(sectorscnt, e_sector, 0); + return printKeyTableEx(sectorscnt, e_sector, 0, false); } -void printKeyTableEx(size_t sectorscnt, sector_t *e_sector, uint8_t start_sector) { +void printKeyTableEx(size_t sectorscnt, sector_t *e_sector, uint8_t start_sector, bool singel_sector) { char strA[26 + 1] = {0}; char strB[26 + 1] = {0}; char resA[20 + 1] = {0}; char resB[20 + 1] = {0}; + uint64_t ndef_key = 0xD3F7D3F7D3F7; + bool has_ndef_key = false; + bool extended_legend = false; + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, "-----+-----+--------------+---+--------------+----"); PrintAndLogEx(SUCCESS, " Sec | Blk | key A |res| key B |res"); PrintAndLogEx(SUCCESS, "-----+-----+--------------+---+--------------+----"); - uint64_t ndef_key = 0xD3F7D3F7D3F7; - bool has_ndef_key = false; - bool extended_legend = false; for (size_t i = 0; i < sectorscnt; i++) { if ((e_sector[i].foundKey[0] > 1) || (e_sector[i].foundKey[1] > 1)) { @@ -8517,7 +8525,7 @@ static command_t CommandTable[] = { {"nack", CmdHf14AMfNack, IfPm3Iso14443a, "Test for MIFARE NACK bug"}, {"chk", CmdHF14AMfChk, IfPm3Iso14443a, "Check keys"}, {"fchk", CmdHF14AMfChk_fast, IfPm3Iso14443a, "Check keys fast, targets all keys on card"}, - {"decrypt", CmdHf14AMfDecryptBytes, AlwaysAvailable, "[nt] [ar_enc] [at_enc] [data] - to decrypt sniff or trace"}, + {"decrypt", CmdHf14AMfDecryptBytes, AlwaysAvailable, "Decrypt Crypto1 data from sniff or trace"}, {"supercard", CmdHf14AMfSuperCard, IfPm3Iso14443a, "Extract info from a `super card`"}, {"-----------", CmdHelp, IfPm3Iso14443a, "----------------------- " _CYAN_("operations") " -----------------------"}, {"auth4", CmdHF14AMfAuth4, IfPm3Iso14443a, "ISO14443-4 AES authentication"}, From 7835ca0f4c8367e488c59dd61959eb6a49495c54 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 10 Jul 2023 00:25:37 +0200 Subject: [PATCH 0152/1034] fix wrong code commited --- client/src/cmdhfmf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index ec8703b68..cbca722cd 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4000,10 +4000,10 @@ static int CmdHF14AMfKeyBrute(const char *Cmd) { */ void printKeyTable(size_t sectorscnt, sector_t *e_sector) { - return printKeyTableEx(sectorscnt, e_sector, 0, false); + return printKeyTableEx(sectorscnt, e_sector, 0); } -void printKeyTableEx(size_t sectorscnt, sector_t *e_sector, uint8_t start_sector, bool singel_sector) { +void printKeyTableEx(size_t sectorscnt, sector_t *e_sector, uint8_t start_sector) { char strA[26 + 1] = {0}; char strB[26 + 1] = {0}; char resA[20 + 1] = {0}; From 3f157d63d820da26a37f1dd93e1179f7dfa21648 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 10 Jul 2023 00:46:12 +0200 Subject: [PATCH 0153/1034] fix text since we changed description of command text --- tools/pm3_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index a8ed2a196..3a69dd5bc 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -500,7 +500,7 @@ while true; do "Visa2000 - Card 112233, Raw: 564953320001B66900000183"; then break; fi echo -e "\n${C_BLUE}Testing HF:${C_NC}" - if ! CheckExecute "hf mf offline text" "$CLIENTBIN -c 'hf mf'" "at_enc"; then break; fi + if ! CheckExecute "hf mf offline text" "$CLIENTBIN -c 'hf mf'" "content from tag dump file"; then break; fi if ! CheckExecute slow retry ignore "hf mf hardnested long test" "$CLIENTBIN -c 'hf mf hardnested -t --tk 000000000000'" "found:"; then break; fi if ! CheckExecute slow "hf iclass loclass long test" "$CLIENTBIN -c 'hf iclass loclass --long'" "verified \( ok \)"; then break; fi if ! CheckExecute slow "emv long test" "$CLIENTBIN -c 'emv test -l'" "Test\(s\) \[ ok"; then break; fi From 17be2f6c3e4e7fbf7bce3aa31e44e902d1989387 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 10 Jul 2023 01:44:34 +0200 Subject: [PATCH 0154/1034] remember to malloc space for the defaultPaths too --- client/src/fileutils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 4dba2c1e4..ded0f615e 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -200,7 +200,7 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath // 1: null terminator // 16: room for filenum to ensure new filename // save_path_len + strlen(PATHSEP): the user preference save paths - const size_t len = p_namelen + strlen(suffix) + 1 + 16 + save_path_len + strlen(PATHSEP); + const size_t len = p_namelen + strlen(suffix) + 1 + 16 + save_path_len + strlen(PATHSEP) + strlen(g_session.defaultPaths[e_save_path]); char *fileName = (char *) calloc(len, sizeof(uint8_t)); if (fileName == NULL) { From 588dea40055a537188dc12b37fb623f62ba3a02d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 10 Jul 2023 08:44:16 +0200 Subject: [PATCH 0155/1034] still overflows on pentoo. Lets reserve the double the max. --- client/src/fileutils.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index ded0f615e..62930d138 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -190,17 +190,12 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath return NULL; } - uint16_t p_namelen = strlen(preferredName); - if (str_endswith(preferredName, suffix)) { - p_namelen -= strlen(suffix); - } - - int save_path_len = path_size(e_save_path); // 1: null terminator // 16: room for filenum to ensure new filename // save_path_len + strlen(PATHSEP): the user preference save paths - const size_t len = p_namelen + strlen(suffix) + 1 + 16 + save_path_len + strlen(PATHSEP) + strlen(g_session.defaultPaths[e_save_path]); + //const size_t len = p_namelen + strlen(suffix) + 1 + 16 + save_path_len + strlen(PATHSEP); + const size_t len = FILE_PATH_SIZE * 2; char *fileName = (char *) calloc(len, sizeof(uint8_t)); if (fileName == NULL) { @@ -210,17 +205,21 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath char *pfn = fileName; // user preference save paths + int save_path_len = path_size(e_save_path); if (save_path_len) { - snprintf(pfn, save_path_len + strlen(PATHSEP) + 1, "%s%s", g_session.defaultPaths[e_save_path], PATHSEP); + snprintf(pfn, len, "%s%s", g_session.defaultPaths[e_save_path], PATHSEP); pfn += save_path_len + strlen(PATHSEP); } - int num = 1; - + uint16_t p_namelen = strlen(preferredName); + if (str_endswith(preferredName, suffix)) { + p_namelen -= strlen(suffix); + } // modify filename snprintf(pfn, len, "%.*s%s", p_namelen, preferredName, suffix); // check complete path/filename if exists + int num = 1; while (fileExists(fileName)) { // modify filename snprintf(pfn, len, "%.*s-%03d%s", p_namelen, preferredName, num, suffix); From abd2f759ae04f76b1fc1d06c7a875d30496d2665 Mon Sep 17 00:00:00 2001 From: kormax Date: Mon, 10 Jul 2023 10:34:08 +0300 Subject: [PATCH 0156/1034] Fix potential memory leak in VAS implementation --- client/src/cmdhfvas.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index 839474cc5..034118d39 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -187,10 +187,9 @@ static int LoadReaderPrivateKey(uint8_t *buf, size_t bufLen, mbedtls_ecp_keypair return PM3_EINVARG; } - tlvdb_free(derRoot); - if (mbedtls_ecp_point_read_binary(&privKey->grp, &privKey->Q, pubkeyCoordsTlv->value + 1, 65)) { PrintAndLogEx(FAILED, "Failed to read in public key coordinates"); + tlvdb_free(derRoot); return PM3_EINVARG; } @@ -199,6 +198,7 @@ static int LoadReaderPrivateKey(uint8_t *buf, size_t bufLen, mbedtls_ecp_keypair return PM3_EINVARG; } + tlvdb_free(derRoot); return PM3_SUCCESS; } From 642cdd86d3f83a536c29c1ceccb4a7c690b65733 Mon Sep 17 00:00:00 2001 From: kormax Date: Mon, 10 Jul 2023 10:45:22 +0300 Subject: [PATCH 0157/1034] Add missing memory free --- client/src/cmdhfvas.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index 034118d39..d4c254508 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -195,6 +195,7 @@ static int LoadReaderPrivateKey(uint8_t *buf, size_t bufLen, mbedtls_ecp_keypair if (mbedtls_ecp_check_pubkey(&privKey->grp, &privKey->Q)) { PrintAndLogEx(FAILED, "VAS protocol requires an elliptic key on the P-256 curve"); + tlvdb_free(derRoot); return PM3_EINVARG; } From dd3e1d3730b071cbaa4144a2532f590f7e8eed07 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 10 Jul 2023 16:36:57 +0200 Subject: [PATCH 0158/1034] added EMV READER command. It will try to extract information about the EMV application that is installed on the card. --- CHANGELOG.md | 1 + client/src/cmdhf14a.c | 2 +- client/src/emv/cmdemv.c | 545 ++++++++++++++++++++++++++++++--------- client/src/emv/emvcore.c | 12 +- client/src/emv/emvcore.h | 7 +- 5 files changed, 439 insertions(+), 128 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21b463b28..ed09b06ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `emv reader` - act as a EMV reader (@iceman1001) - Added support for Apple Wallet NFC Passes with the Value Added Services protocol implementation (@gm3197) - Fix compiling liblua on iOS (@The-SamminAter) - Changed `hf_mf_luxeo_dump.lua` - now have list of keys to iterate (@iceman1001) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 7bdc04c06..a541baf2f 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -2363,7 +2363,7 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf st info`")); if (isEMV) - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`emv search -s`")); + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`emv reader`")); if (isFUDAN) { PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf fudan dump`")); diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 71277d87b..720401bdb 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -34,6 +34,7 @@ #include "emv_tags.h" #include "fileutils.h" #include "protocols.h" // ISO7816 APDU return codes +#include "commonutil.h" // MemBeToUint2byte static int CmdHelp(const char *Cmd); @@ -74,6 +75,155 @@ static void PrintChannel(Iso7816CommandChannel channel) { } } +static int emv_parse_card_details(uint8_t *response, size_t reslen) { + + struct tlvdb *root = tlvdb_parse_multi(response, reslen); + if (root == NULL) { + return PM3_EINVARG; + } + + // extract application preferred name + struct tlvdb *prefname_full = tlvdb_find_full(root, 0x9F12); + if (prefname_full != NULL) { + const struct tlv *prefname_tlv = tlvdb_get_tlv(prefname_full); + if (prefname_tlv->len) { + char *name[64] = {0}; + size_t n = MIN(sizeof(name), prefname_tlv->len); + memcpy(name, prefname_tlv->value, n); + PrintAndLogEx(INFO, "Application.......... " _YELLOW_("%s"), name); + } + } + + // extract application label + struct tlvdb *alabel = tlvdb_find_full(root, 0x50); + if (alabel != NULL) { + const struct tlv *alabel_tlv = tlvdb_get_tlv(alabel); + if (alabel_tlv->len) { + char *name[64] = {0}; + size_t n = MIN(sizeof(name), alabel_tlv->len); + memcpy(name, alabel_tlv->value, n); + PrintAndLogEx(INFO, "Label................ " _YELLOW_("%s"), name); + } + } + + // extract language preference + struct tlvdb *lang_full = tlvdb_find_full(root, 0x5F2D); + if (lang_full != NULL) { + const struct tlv *lang_tlv = tlvdb_get_tlv(lang_full); + if (lang_tlv->len) { + char *lang[16] = {0}; + size_t n = MIN(sizeof(lang), lang_tlv->len); + memcpy(lang, lang_tlv->value, n); + PrintAndLogEx(INFO, "Language............. " _YELLOW_("%s"), lang); + } + } + + // Application Currency Code + struct tlvdb *acc_full = tlvdb_find_full(root, 0x9F42); + if (acc_full != NULL) { + const struct tlv *acc_tlv = tlvdb_get_tlv(acc_full); + if (acc_tlv->len == 2) { + uint16_t acc = MemBeToUint2byte((const uint8_t*)acc_tlv->value); + PrintAndLogEx(INFO, "Currency Code........ " _YELLOW_("%02X"), acc); + } + } + + // Application Effective Date + struct tlvdb *aeffect_full = tlvdb_find_full(root, 0x5F25); + if (aeffect_full != NULL) { + const struct tlv *aaeffect_tlv = tlvdb_get_tlv(aeffect_full); + if (aaeffect_tlv->len == 3) { + PrintAndLogEx(INFO, "Effective date....... " _YELLOW_("20%02x-%02x-%02x"), + aaeffect_tlv->value[0], + aaeffect_tlv->value[1], + aaeffect_tlv->value[2] + ); + } + } + + // Application Expiration Date + struct tlvdb *aexd_full = tlvdb_find_full(root, 0x5F24); + if (aexd_full != NULL) { + const struct tlv *aexd_tlv = tlvdb_get_tlv(aexd_full); + if (aexd_tlv->len == 3) { + PrintAndLogEx(INFO, "Expiration date...... " _YELLOW_("20%02x-%02x-%02x"), + aexd_tlv->value[0], + aexd_tlv->value[1], + aexd_tlv->value[2] + ); + } + } + + // Application Primary Account Number (PAN) + struct tlvdb *apan_full = tlvdb_find_full(root, 0x5A); + if (apan_full != NULL) { + const struct tlv *apan_tlv = tlvdb_get_tlv(apan_full); + if (apan_tlv->len == 8) { + PrintAndLogEx(INFO, "PAN.................. " _YELLOW_("%02x%02x %02x%02x %02x%02x %02x%02x"), + apan_tlv->value[0], + apan_tlv->value[1], + apan_tlv->value[2], + apan_tlv->value[3], + apan_tlv->value[4], + apan_tlv->value[5], + apan_tlv->value[6], + apan_tlv->value[7] + ); + } + } + + // Application Primary Account Number (PAN) sequence number + struct tlvdb *apansq_full = tlvdb_find_full(root, 0x5F34); + if (apansq_full != NULL) { + const struct tlv *apansq_tlv = tlvdb_get_tlv(apansq_full); + if (apansq_tlv->len == 1) { + PrintAndLogEx(INFO, "PAN Sequence......... " _YELLOW_("%u"), apansq_tlv->value[0]); + } + } + + // Cardholder Name + struct tlvdb *chm_full = tlvdb_find_full(root, 0x5F20); + if (chm_full != NULL) { + const struct tlv *chm_tlv = tlvdb_get_tlv(chm_full); + if (chm_tlv->len) { + PrintAndLogEx(INFO, "Cardhold Name........ " _YELLOW_("%s"), sprint_ascii(chm_tlv->value, chm_tlv->len)); + } + } + + // Track 1 Data + struct tlvdb *track1_full = tlvdb_find_full(root, 0x56); + if (track1_full != NULL) { + const struct tlv *track1_tlv = tlvdb_get_tlv(track1_full); + if (track1_tlv->len) { + PrintAndLogEx(INFO, "Track 1.............. " _YELLOW_("%s"), sprint_ascii(track1_tlv->value, track1_tlv->len)); + } + } + + // Track 2 Data + struct tlvdb *track2_full = tlvdb_find_full(root, 0x9F6B); + if (track2_full != NULL) { + const struct tlv *track2_tlv = tlvdb_get_tlv(track2_full); + if (track2_tlv->len) { + PrintAndLogEx(INFO, "Track 2.............. " _YELLOW_("%s"), sprint_hex_inrow(track2_tlv->value, track2_tlv->len)); + } + } + + // Track 2 Equivalent Data + struct tlvdb *track2_eq_full = tlvdb_find_full(root, 0x57); + if (track2_eq_full != NULL) { + const struct tlv *track2_eq_tlv = tlvdb_get_tlv(track2_eq_full); + if (track2_eq_tlv->len) { + PrintAndLogEx(INFO, "Track 2 equivalent... " _YELLOW_("%s"), sprint_hex_inrow(track2_eq_tlv->value, track2_eq_tlv->len)); + } + } + + // Track 3 Data + // to be impl. + + tlvdb_free(root); + return PM3_SUCCESS; +} + static int CmdEMVSelect(const char *Cmd) { uint8_t data[APDU_AID_LEN] = {0}; int datalen = 0; @@ -81,16 +231,16 @@ static int CmdEMVSelect(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "emv select", "Executes select applet command", - "emv select -s a00000000101 -> select card, select applet\n" + "emv select -s a00000000101 -> select card, select applet\n" "emv select -st a00000000101 -> select card, select applet, show result in TLV\n"); void *argtable[] = { arg_param_begin, - arg_lit0("sS", "select", "Activate field and select card"), - arg_lit0("kK", "keep", "Keep field for next command"), - arg_lit0("aA", "apdu", "Show APDU requests and responses"), - arg_lit0("tT", "tlv", "TLV decode results"), - arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), + arg_lit0("s", "select", "Activate field and select card"), + arg_lit0("k", "keep", "Keep field for next command"), + arg_lit0("a", "apdu", "Show APDU requests and responses"), + arg_lit0("t", "tlv", "TLV decode results"), + arg_lit0("w", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), arg_str1(NULL, NULL, "", "Applet AID"), arg_param_end }; @@ -137,11 +287,11 @@ static int CmdEMVSearch(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_lit0("sS", "select", "Activate field and select card"), - arg_lit0("kK", "keep", "Keep field ON for next command"), - arg_lit0("aA", "apdu", "Show APDU requests and responses"), - arg_lit0("tT", "tlv", "TLV decode results of selected applets"), - arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), + arg_lit0("s", "select", "Activate field and select card"), + arg_lit0("k", "keep", "Keep field ON for next command"), + arg_lit0("a", "apdu", "Show APDU requests and responses"), + arg_lit0("t", "tlv", "TLV decode results of selected applets"), + arg_lit0("w", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -164,7 +314,7 @@ static int CmdEMVSearch(const char *Cmd) { const char *al = "Applets list"; struct tlvdb *t = tlvdb_fixed(1, strlen(al), (const unsigned char *)al); - if (EMVSearch(channel, activateField, leaveSignalON, decodeTLV, t)) { + if (EMVSearch(channel, activateField, leaveSignalON, decodeTLV, t, false)) { tlvdb_free(t); return PM3_ERFTRANS; } @@ -191,13 +341,13 @@ static int CmdEMVPPSE(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_lit0("sS", "select", "Activate field and select card"), - arg_lit0("kK", "keep", "Keep field ON for next command"), - arg_lit0("1", "pse", "PSE (1PAY.SYS.DDF01) mode"), - arg_lit0("2", "ppse", "PPSE (2PAY.SYS.DDF01) mode (def)"), - arg_lit0("aA", "apdu", "Show APDU requests and responses"), - arg_lit0("tT", "tlv", "TLV decode results of selected applets"), - arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), + arg_lit0("s", "select", "Activate field and select card"), + arg_lit0("k", "keep", "Keep field ON for next command"), + arg_lit0("1", "pse", "PSE (1PAY.SYS.DDF01) mode"), + arg_lit0("2", "ppse", "PPSE (2PAY.SYS.DDF01) mode (def)"), + arg_lit0("a", "apdu", "Show APDU requests and responses"), + arg_lit0("t", "tlv", "TLV decode results of selected applets"), + arg_lit0("w", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -251,13 +401,13 @@ static int CmdEMVGPO(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_lit0("kK", "keep", "Keep field ON for next command"), - arg_lit0("pP", "params", "Load parameters from `emv_defparams.json` file for PDOLdata making from PDOL and parameters"), - arg_lit0("mM", "make", "Make PDOLdata from PDOL (tag 9F38) and parameters (def: uses default parameters)"), - arg_lit0("aA", "apdu", "Show APDU requests and responses"), - arg_lit0("tT", "tlv", "TLV decode results of selected applets"), - arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), - arg_strx0(NULL, NULL, "", "PDOLdata/PDOL"), + arg_lit0("k", "keep", "Keep field ON for next command"), + arg_lit0("p", "params", "Load parameters from `emv_defparams.json` file for PDOLdata making from PDOL and parameters"), + arg_lit0("m", "make", "Make PDOLdata from PDOL (tag 9F38) and parameters (def: uses default parameters)"), + arg_lit0("a", "apdu", "Show APDU requests and responses"), + arg_lit0("t", "tlv", "TLV decode results of selected applets"), + arg_lit0("w", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), + arg_strx0(NULL, NULL, "", "PDOLdata/PDOL"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -360,11 +510,11 @@ static int CmdEMVReadRecord(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_lit0("kK", "keep", "Keep field ON for next command"), - arg_lit0("aA", "apdu", "Show APDU requests and responses"), - arg_lit0("tT", "tlv", "TLV decode results of selected applets"), - arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), - arg_strx1(NULL, NULL, "", "", "", "Terminal decision. aac - declined, tc - approved, arqc - online authorisation requested"), - arg_lit0("pP", "params", "Load parameters from `emv_defparams.json` file for CDOLdata making from CDOL and parameters"), - arg_lit0("mM", "make", "Make CDOLdata from CDOL (tag 8C and 8D) and parameters (def: use default parameters)"), - arg_lit0("aA", "apdu", "Show APDU requests and responses"), - arg_lit0("tT", "tlv", "TLV decode results of selected applets"), - arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), - arg_strx1(NULL, NULL, "", "CDOLdata/CDOL"), + arg_lit0("k", "keep", "Keep field ON for next command"), + arg_lit0("c", "cda", "Executes CDA transaction. Needs to get SDAD in results."), + arg_str0("d", "decision", "", "Terminal decision. aac - declined, tc - approved, arqc - online authorisation requested"), + arg_lit0("p", "params", "Load parameters from `emv_defparams.json` file for CDOLdata making from CDOL and parameters"), + arg_lit0("m", "make", "Make CDOLdata from CDOL (tag 8C and 8D) and parameters (def: use default parameters)"), + arg_lit0("a", "apdu", "Show APDU requests and responses"), + arg_lit0("t", "tlv", "TLV decode results of selected applets"), + arg_lit0("w", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), + arg_strx1(NULL, NULL, "", "CDOLdata/CDOL"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -542,9 +692,9 @@ static int CmdEMVGenerateChallenge(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_lit0("kK", "keep", "Keep field ON for next command"), - arg_lit0("aA", "apdu", "Show APDU requests and responses"), - arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), + arg_lit0("k", "keep", "Keep field ON for next command"), + arg_lit0("a", "apdu", "Show APDU requests and responses"), + arg_lit0("w", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -594,13 +744,13 @@ static int CmdEMVInternalAuthenticate(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_lit0("kK", "keep", "Keep field ON for next command"), - arg_lit0("pP", "params", "Load parameters from `emv_defparams.json` file for DDOLdata making from DDOL and parameters"), - arg_lit0("mM", "make", "Make DDOLdata from DDOL (tag 9F49) and parameters (def: use default parameters)"), - arg_lit0("aA", "apdu", "Show APDU requests and responses"), - arg_lit0("tT", "tlv", "TLV decode results of selected applets"), - arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), - arg_strx1(NULL, NULL, "", "DDOLdata/DDOL"), + arg_lit0("k", "keep", "Keep field ON for next command"), + arg_lit0("p", "params", "Load parameters from `emv_defparams.json` file for DDOLdata making from DDOL and parameters"), + arg_lit0("m", "make", "Make DDOLdata from DDOL (tag 9F49) and parameters (def: use default parameters)"), + arg_lit0("a", "apdu", "Show APDU requests and responses"), + arg_lit0("t", "tlv", "TLV decode results of selected applets"), + arg_lit0("w", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), + arg_strx1(NULL, NULL, "", "DDOLdata/DDOL"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -718,6 +868,7 @@ static void InitTransactionParameters(struct tlvdb *tlvRoot, bool paramLoadJSON, TLV_ADD(0x9F66, "\x26\x00\x00\x00"); } break; + case TT_END: default: break; } @@ -799,20 +950,6 @@ static void ProcessACResponseFormat1(struct tlvdb *tlvRoot, uint8_t *buf, size_t } static int CmdEMVExec(const char *Cmd) { - uint8_t buf[APDU_RES_LEN] = {0}; - size_t len = 0; - uint16_t sw = 0; - uint8_t AID[APDU_AID_LEN] = {0}; - size_t AIDlen = 0; - uint8_t ODAiList[4096]; - size_t ODAiListLen = 0; - - int res; - - struct tlvdb *tlvSelect = NULL; - struct tlvdb *tlvRoot = NULL; - struct tlv *pdol_data_tlv = NULL; - CLIParserContext *ctx; CLIParserInit(&ctx, "emv exec", "Executes EMV contactless transaction", @@ -821,17 +958,17 @@ static int CmdEMVExec(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_lit0("sS", "select", "Activate field and select card"), - arg_lit0("aA", "apdu", "Show APDU requests and responses"), - arg_lit0("tT", "tlv", "TLV decode results"), - arg_lit0("jJ", "jload", "Load transaction parameters from `emv_defparams.json` file"), - arg_lit0("fF", "forceaid", "Force search AID. Search AID instead of execute PPSE"), - arg_rem("By default:", "Transaction type - MSD"), - arg_lit0("vV", "qvsdc", "Transaction type - qVSDC or M/Chip"), - arg_lit0("cC", "qvsdccda", "Transaction type - qVSDC or M/Chip plus CDA (SDAD generation)"), - arg_lit0("xX", "vsdc", "Transaction type - VSDC. For test only. Not a standard behavior"), - arg_lit0("gG", "acgpo", "VISA. generate AC from GPO"), - arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), + arg_lit0("s", "select", "Activate field and select card"), + arg_lit0("a", "apdu", "Show APDU requests and responses"), + arg_lit0("t", "tlv", "TLV decode results"), + arg_lit0("j", "jload", "Load transaction parameters from `emv_defparams.json` file"), + arg_lit0(NULL, "force", "Force search AID. Search AID instead of execute PPSE"), + arg_rem("By default:", "Transaction type - MSD"), + arg_lit0("v", "qvsdc", "Transaction type - qVSDC or M/Chip"), + arg_lit0("c", "qvsdccda", "Transaction type - qVSDC or M/Chip plus CDA (SDAD generation)"), + arg_lit0("x", "vsdc", "Transaction type - VSDC. For test only. Not a standard behavior"), + arg_lit0("g", "acgpo", "VISA. generate AC from GPO"), + arg_lit0("w", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -873,6 +1010,20 @@ static int CmdEMVExec(const char *Cmd) { SetAPDULogging(showAPDU); + uint8_t buf[APDU_RES_LEN] = {0}; + size_t len = 0; + uint16_t sw = 0; + uint8_t AID[APDU_AID_LEN] = {0}; + size_t AIDlen = 0; + uint8_t ODAiList[4096]; + size_t ODAiListLen = 0; + + int res; + + struct tlvdb *tlvSelect = NULL; + struct tlvdb *tlvRoot = NULL; + struct tlv *pdol_data_tlv = NULL; + // init applets list tree const char *al = "Applets list"; tlvSelect = tlvdb_fixed(1, strlen(al), (const unsigned char *)al); @@ -902,7 +1053,7 @@ static int CmdEMVExec(const char *Cmd) { if (!AIDlen) { PrintAndLogEx(NORMAL, "\n* Search AID in list."); SetAPDULogging(false); - if (EMVSearch(channel, activateField, true, decodeTLV, tlvSelect)) { + if (EMVSearch(channel, activateField, true, decodeTLV, tlvSelect, false)) { dreturn(PM3_ERFTRANS); } @@ -1428,15 +1579,6 @@ static int CmdEMVExec(const char *Cmd) { } static int CmdEMVScan(const char *Cmd) { - uint8_t AID[APDU_AID_LEN] = {0}; - size_t AIDlen = 0; - uint8_t buf[APDU_RES_LEN] = {0}; - size_t len = 0; - uint8_t ODAI_list[4096]; - size_t ODAI_listlen = 0; - uint16_t sw = 0; - int res; - CLIParserContext *ctx; CLIParserInit(&ctx, "emv scan", "Scan EMV card and save it contents to a file.\n" @@ -1447,18 +1589,18 @@ static int CmdEMVScan(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_lit0("aA", "apdu", "Show APDU requests and responses"), - arg_lit0("tT", "tlv", "TLV decode results"), - arg_lit0("eE", "extract", "Extract TLV elements and fill Application Data"), - arg_lit0("jJ", "jload", "Load transaction parameters from `emv_defparams.json` file"), - arg_rem("By default:", "Transaction type - MSD"), - arg_lit0("vV", "qvsdc", "Transaction type - qVSDC or M/Chip"), - arg_lit0("cC", "qvsdccda", "Transaction type - qVSDC or M/Chip plus CDA (SDAD generation)"), - arg_lit0("xX", "vsdc", "Transaction type - VSDC. For test only. Not a standard behavior"), - arg_lit0("gG", "acgpo", "VISA. generate AC from GPO"), - arg_lit0("mM", "merge", "Merge output file with card's data. (warning: the file may be corrupted!)"), - arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), - arg_str1(NULL, NULL, "", "JSON output filename"), + arg_lit0("a", "apdu", "Show APDU requests and responses"), + arg_lit0("t", "tlv", "TLV decode results"), + arg_lit0("e", "extract", "Extract TLV elements and fill Application Data"), + arg_lit0("j", "jload", "Load transaction parameters from `emv_defparams.json` file"), + arg_rem("By default:", "Transaction type - MSD"), + arg_lit0("v", "qvsdc", "Transaction type - qVSDC or M/Chip"), + arg_lit0("c", "qvsdccda", "Transaction type - qVSDC or M/Chip plus CDA (SDAD generation)"), + arg_lit0("x", "vsdc", "Transaction type - VSDC. For test only. Not a standard behavior"), + arg_lit0("g", "acgpo", "VISA. generate AC from GPO"), + arg_lit0("m", "merge", "Merge output file with card's data. (warning: the file may be corrupted!)"), + arg_lit0("w", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), + arg_str1(NULL, NULL, "", "JSON output file name"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -1502,6 +1644,15 @@ static int CmdEMVScan(const char *Cmd) { SetAPDULogging(showAPDU); + uint8_t AID[APDU_AID_LEN] = {0}; + size_t AIDlen = 0; + uint8_t buf[APDU_RES_LEN] = {0}; + size_t len = 0; + uint8_t ODAI_list[4096]; + size_t ODAI_listlen = 0; + uint16_t sw = 0; + int res; + json_t *root; json_error_t error; @@ -1587,7 +1738,7 @@ static int CmdEMVScan(const char *Cmd) { // EMV SEARCH with AID list SetAPDULogging(false); PrintAndLogEx(INFO, "AID search."); - if (EMVSearch(channel, false, true, decodeTLV, tlvSelect)) { + if (EMVSearch(channel, false, true, decodeTLV, tlvSelect, false)) { PrintAndLogEx(ERR, "Can't found any of EMV AID, exiting..."); tlvdb_free(tlvSelect); DropFieldEx(channel); @@ -1852,15 +2003,6 @@ static int CmdEMVTest(const char *Cmd) { } static int CmdEMVRoca(const char *Cmd) { - uint8_t AID[APDU_AID_LEN] = {0}; - size_t AIDlen = 0; - uint8_t buf[APDU_RES_LEN] = {0}; - size_t len = 0; - uint16_t sw = 0; - uint8_t ODAI_list[4096]; - size_t ODAI_listlen = 0; - int res; - CLIParserContext *ctx; CLIParserInit(&ctx, "emv roca", "Tries to extract public keys and run the ROCA test against them.\n", @@ -1870,9 +2012,9 @@ static int CmdEMVRoca(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_lit0("tT", "selftest", "Self test"), - arg_lit0("aA", "apdu", "Show APDU requests and responses"), - arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), + arg_lit0("t", "selftest", "Self test"), + arg_lit0("a", "apdu", "Show APDU requests and responses"), + arg_lit0("w", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -1903,6 +2045,15 @@ static int CmdEMVRoca(const char *Cmd) { SetAPDULogging(show_apdu); + uint8_t AID[APDU_AID_LEN] = {0}; + size_t AIDlen = 0; + uint8_t buf[APDU_RES_LEN] = {0}; + size_t len = 0; + uint16_t sw = 0; + uint8_t ODAI_list[4096]; + size_t ODAI_listlen = 0; + int res; + // init applets list tree const char *al = "Applets list"; struct tlvdb *tlvSelect = tlvdb_fixed(1, strlen(al), (const unsigned char *)al); @@ -1917,7 +2068,7 @@ static int CmdEMVRoca(const char *Cmd) { } else { // EMV SEARCH with AID list PrintAndLogEx(INFO, "starting AID search"); - if (EMVSearch(channel, false, true, false, tlvSelect)) { + if (EMVSearch(channel, false, true, false, tlvSelect, false)) { PrintAndLogEx(ERR, "Can't found any of EMV AID, exiting"); tlvdb_free(tlvSelect); DropFieldEx(channel); @@ -2121,28 +2272,182 @@ out: return ret; } +static int CmdEMVReader(const char *Cmd){ + CLIParserContext *ctx; + CLIParserInit(&ctx, "emv reader", + "Act as a EMV reader to identify tag. Look for EMV tags until Enter or the pm3 button is pressed", + "emv reader\n" + "emv reader -@ -> Continuous mode\n" + ); + void *argtable[] = { + arg_param_begin, + arg_lit0("w", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), + arg_lit0("@", NULL, "continuous reader mode"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + + Iso7816CommandChannel channel = CC_CONTACTLESS; + if (arg_get_lit(ctx, 1)) { + channel = CC_CONTACT; + } + + uint8_t psenum = (channel == CC_CONTACT) ? 1 : 2; + + bool continuous = arg_get_lit(ctx, 2); + CLIParserFree(ctx); + + if (continuous) { + PrintAndLogEx(INFO, "Press " _GREEN_("Enter") " to exit"); + } + + + uint8_t AID[APDU_AID_LEN] = {0}; + size_t AIDlen = 0; + uint8_t buf[APDU_RES_LEN] = {0}; + size_t len = 0; + int res = 0; + uint16_t sw = 0; + + do { + if (continuous && kbd_enter_pressed()) { + break; + } + + // init applets list tree + const char *al = "Applets"; + struct tlvdb *tlvSelect = tlvdb_fixed(1, strlen(al), (const unsigned char *)al); + + res = EMVSelectPSE(channel, true, true, 2, buf, sizeof(buf), &len, &sw); + + // search PSE / PPSE + res = EMVSearchPSE(channel, false, true, psenum, false, tlvSelect); + if (res) { + // EMV SEARCH with AID list + DropFieldEx(channel); + if (EMVSearch(channel, true, true, false, tlvSelect, false)) { + tlvdb_free(tlvSelect); + DropFieldEx(channel); + continue; + } + } + + // select application + EMVSelectApplication(tlvSelect, AID, &AIDlen); + tlvdb_free(tlvSelect); + + if (AIDlen == 0) { + DropFieldEx(channel); + continue; + } + + // Init TLV tree + const char *alr = "Root"; + struct tlvdb *tlvRoot = tlvdb_fixed(1, strlen(alr), (const unsigned char *)alr); + + // EMV SELECT applet + res = EMVSelect(channel, false, true, AID, AIDlen, buf, sizeof(buf), &len, &sw, tlvRoot); + if (res) { + DropFieldEx(channel); + continue; + } + + // decode application parts + emv_parse_card_details(buf, len); + + for (TransactionType_t tt = TT_MSD; tt < TT_END; tt++) { + + // create transaction parameters + bool gen_acgpo = false; + InitTransactionParameters(tlvRoot, false, tt, gen_acgpo); + + struct tlv *pdol_tlv = dol_process(tlvdb_get(tlvRoot, 0x9F38, NULL), tlvRoot, 0x83); + if (!pdol_tlv) { + continue; + } + + size_t pdtd_len = 0; + unsigned char *pdol_data_tlv = tlv_encode(pdol_tlv, &pdtd_len); + if (!pdol_data_tlv) { + free(pdol_tlv); + continue; + } + + res = EMVGPO(channel, true, pdol_data_tlv, pdtd_len, buf, sizeof(buf), &len, &sw, tlvRoot); + free(pdol_data_tlv); + free(pdol_tlv); + + if (res) { + continue; + } + + ProcessGPOResponseFormat1(tlvRoot, buf, len, false); + + emv_parse_card_details(buf, len); + + if (tlvdb_get(tlvRoot, 0x77, NULL)) { + break; + } + } + + const struct tlv *AFL = tlvdb_get(tlvRoot, 0x94, NULL); + + if (AFL && AFL->len) { + + if (AFL->len % 4) { + continue; + } + + for (int i = 0; i < AFL->len / 4; i++) { + uint8_t SFI = AFL->value[i * 4 + 0] >> 3; + uint8_t SFIstart = AFL->value[i * 4 + 1]; + uint8_t SFIend = AFL->value[i * 4 + 2]; + + if (SFI == 0 || SFI == 31 || SFIstart == 0 || SFIstart > SFIend) { + continue; + } + + for (int n = SFIstart; n <= SFIend; n++) { + res = EMVReadRecord(channel, true, SFI, n, buf, sizeof(buf), &len, &sw, tlvRoot); + if (res) { + continue; + } + emv_parse_card_details(buf, len); + } + } + } + + } while (continuous); + + return PM3_SUCCESS; +} + static command_t CommandTable[] = { + {"-----------", CmdHelp, AlwaysAvailable, "----------------------- " _CYAN_("general") " -----------------------"}, {"help", CmdHelp, AlwaysAvailable, "This help"}, + {"list", CmdEMVList, AlwaysAvailable, "List ISO7816 history"}, + {"test", CmdEMVTest, AlwaysAvailable, "Crypto logic test"}, + {"-----------", CmdHelp, IfPm3Iso14443a, "---------------------- " _CYAN_("operations") " ---------------------"}, + {"challenge", CmdEMVGenerateChallenge, IfPm3Iso14443, "Generate challenge"}, {"exec", CmdEMVExec, IfPm3Iso14443, "Executes EMV contactless transaction"}, + {"genac", CmdEMVAC, IfPm3Iso14443, "Generate ApplicationCryptogram"}, + {"gpo", CmdEMVGPO, IfPm3Iso14443, "Execute GetProcessingOptions"}, + {"intauth", CmdEMVInternalAuthenticate, IfPm3Iso14443, "Internal authentication"}, {"pse", CmdEMVPPSE, IfPm3Iso14443, "Execute PPSE. It selects 2PAY.SYS.DDF01 or 1PAY.SYS.DDF01 directory"}, + {"reader", CmdEMVReader, IfPm3Iso14443a, "Act like an EMV reader"}, + {"readrec", CmdEMVReadRecord, IfPm3Iso14443, "Read files from card"}, + {"roca", CmdEMVRoca, IfPm3Iso14443, "Extract public keys and run ROCA test"}, + {"scan", CmdEMVScan, IfPm3Iso14443, "Scan EMV card and save it contents to json file for emulator"}, {"search", CmdEMVSearch, IfPm3Iso14443, "Try to select all applets from applets list and print installed applets"}, {"select", CmdEMVSelect, IfPm3Iso14443, "Select applet"}, - {"gpo", CmdEMVGPO, IfPm3Iso14443, "Execute GetProcessingOptions"}, - {"readrec", CmdEMVReadRecord, IfPm3Iso14443, "Read files from card"}, - {"genac", CmdEMVAC, IfPm3Iso14443, "Generate ApplicationCryptogram"}, - {"challenge", CmdEMVGenerateChallenge, IfPm3Iso14443, "Generate challenge"}, - {"intauth", CmdEMVInternalAuthenticate, IfPm3Iso14443, "Internal authentication"}, - {"scan", CmdEMVScan, IfPm3Iso14443, "Scan EMV card and save it contents to json file for emulator"}, - {"test", CmdEMVTest, AlwaysAvailable, "Crypto logic test"}, /* + {"-----------", CmdHelp, IfPm3Iso14443a, "---------------------- " _CYAN_("simulation") " ---------------------"}, {"getrng", CmdEMVGetrng, IfPm3Iso14443, "get random number from terminal"}, {"eload", CmdEmvELoad, IfPm3Iso14443, "load EMV tag into device"}, {"dump", CmdEmvDump, IfPm3Iso14443, "dump EMV tag values"}, {"sim", CmdEmvSim, IfPm3Iso14443, "simulate EMV tag"}, {"clone", CmdEmvClone, IfPm3Iso14443, "clone an EMV tag"}, */ - {"list", CmdEMVList, AlwaysAvailable, "List ISO7816 history"}, - {"roca", CmdEMVRoca, IfPm3Iso14443, "Extract public keys and run ROCA test"}, {NULL, NULL, NULL, NULL} }; diff --git a/client/src/emv/emvcore.c b/client/src/emv/emvcore.c index 0628fcf76..45a415f41 100644 --- a/client/src/emv/emvcore.c +++ b/client/src/emv/emvcore.c @@ -204,7 +204,7 @@ void TLVPrintAIDlistFromSelectTLV(struct tlvdb *tlv) { break; } PrintAndLogEx(INFO, "| %s| %s | %s|", - sprint_hex_inrow_ex(tgAID->value, tgAID->len, 17), + sprint_hex_inrow_ex(tgAID->value, tgAID->len, 16), (tgPrio) ? sprint_hex(tgPrio->value, 1) : " ", (tgName) ? sprint_ascii_ex(tgName->value, tgName->len, 24) : " "); @@ -473,7 +473,7 @@ int EMVSearchPSE(Iso7816CommandChannel channel, bool ActivateField, bool LeaveFi return res; } -int EMVSearch(Iso7816CommandChannel channel, bool ActivateField, bool LeaveFieldON, bool decodeTLV, struct tlvdb *tlv) { +int EMVSearch(Iso7816CommandChannel channel, bool ActivateField, bool LeaveFieldON, bool decodeTLV, struct tlvdb *tlv, bool verbose) { uint8_t aidbuf[APDU_AID_LEN] = {0}; int aidlen = 0; uint8_t data[APDU_RES_LEN] = {0}; @@ -500,12 +500,16 @@ int EMVSearch(Iso7816CommandChannel channel, bool ActivateField, bool LeaveField if (LeaveFieldON == false) DropFieldEx(channel); - PrintAndLogEx(WARNING, "exiting..."); + if (verbose) { + PrintAndLogEx(WARNING, "exiting..."); + } return 1; } retrycnt = 0; - PrintAndLogEx(FAILED, "Retry failed [%s]. Skipped...", AIDlist[i].aid); + if (verbose) { + PrintAndLogEx(FAILED, "Retry failed [%s]. Skipped...", AIDlist[i].aid); + } } continue; } diff --git a/client/src/emv/emvcore.h b/client/src/emv/emvcore.h index bb76aeb2f..6cf646c60 100644 --- a/client/src/emv/emvcore.h +++ b/client/src/emv/emvcore.h @@ -28,12 +28,13 @@ #include "iso7816/iso7816core.h" #include "emv_pki.h" -enum TransactionType { +typedef enum TransactionType { TT_MSD, TT_VSDC, // contact only. not standard for contactless TT_QVSDCMCHIP, TT_CDA, -}; + TT_END, +} TransactionType_t; extern const char *TransactionTypeStr[]; enum CardPSVendor { @@ -62,7 +63,7 @@ int EMVExchange(Iso7816CommandChannel channel, bool LeaveFieldON, sAPDU_t apdu, // search application int EMVSearchPSE(Iso7816CommandChannel channel, bool ActivateField, bool LeaveFieldON, uint8_t PSENum, bool decodeTLV, struct tlvdb *tlv); -int EMVSearch(Iso7816CommandChannel channel, bool ActivateField, bool LeaveFieldON, bool decodeTLV, struct tlvdb *tlv); +int EMVSearch(Iso7816CommandChannel channel, bool ActivateField, bool LeaveFieldON, bool decodeTLV, struct tlvdb *tlv, bool verbose); int EMVSelectPSE(Iso7816CommandChannel channel, bool ActivateField, bool LeaveFieldON, uint8_t PSENum, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw); int EMVSelect(Iso7816CommandChannel channel, bool ActivateField, bool LeaveFieldON, uint8_t *AID, size_t AIDLen, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv); // select application From 46fc20165ba9fceab8a6350e58ae2e2a84859471 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 10 Jul 2023 16:37:30 +0200 Subject: [PATCH 0159/1034] reduce size since this wasnt the root cause --- client/src/fileutils.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 62930d138..f266da9b2 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -190,12 +190,11 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath return NULL; } - // 1: null terminator // 16: room for filenum to ensure new filename // save_path_len + strlen(PATHSEP): the user preference save paths //const size_t len = p_namelen + strlen(suffix) + 1 + 16 + save_path_len + strlen(PATHSEP); - const size_t len = FILE_PATH_SIZE * 2; + const size_t len = FILE_PATH_SIZE; char *fileName = (char *) calloc(len, sizeof(uint8_t)); if (fileName == NULL) { From 40534d1f07dad9f0b6e9248883b6dbfd2c76253e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 10 Jul 2023 16:41:00 +0200 Subject: [PATCH 0160/1034] style --- client/src/cmdhf14a.c | 2 +- client/src/cmdhfvas.c | 14 +- client/src/emv/cmdemv.c | 62 +- client/src/pm3line_vocabulory.h | 1529 ++++++++++++++++--------------- doc/commands.json | 201 ++-- doc/commands.md | 45 +- 6 files changed, 967 insertions(+), 886 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index a541baf2f..8acf021cc 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -194,7 +194,7 @@ static const hintAIDList_t hintAIDList[] = { { "\x32\x50\x41\x59\x2E\x53\x59\x53\x2E\x44\x44\x46\x30\x31", 14, "EMV (ppse)", "emv" }, { "\x41\x44\x20\x46\x31", 5, "CIPURSE", "hf cipurse" }, { "\xd2\x76\x00\x00\x85\x01\x00", 7, "desfire", "hf mfdes" }, - { "\x4F\x53\x45\x2E\x56\x41\x53\x2E\x30\x31",10, "Apple VAS", "hf vas"}, + { "\x4F\x53\x45\x2E\x56\x41\x53\x2E\x30\x31", 10, "Apple VAS", "hf vas"}, }; // iso14a apdu input frame length diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index d4c254508..2bb5c8341 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -235,7 +235,7 @@ static int LoadMobileEphemeralKey(uint8_t *xcoordBuf, mbedtls_ecp_keypair *pubKe } static int internalVasDecrypt(uint8_t *cipherText, size_t cipherTextLen, uint8_t *sharedSecret, - uint8_t *ansiSharedInfo, size_t ansiSharedInfoLen, + uint8_t *ansiSharedInfo, size_t ansiSharedInfoLen, uint8_t *gcmAad, size_t gcmAadLen, uint8_t *out, size_t *outLen) { uint8_t key[32] = {0}; if (ansi_x963_sha256(sharedSecret, 32, ansiSharedInfo, ansiSharedInfoLen, sizeof(key), key)) { @@ -394,9 +394,9 @@ static int CmdVASReader(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf vas reader", "Read and decrypt Value Added Services (VAS) message", - "hf vas reader --url https://example.com -> URL Only mode\n" + "hf vas reader --url https://example.com -> URL Only mode\n" "hf vas reader --pid pass.com.passkit.pksamples.nfcdemo -f vas_privkey.der -@\n" - ); + ); void *argtable[] = { arg_param_begin, @@ -468,8 +468,8 @@ static int CmdVASReader(const char *Cmd) { if (continuous && kbd_enter_pressed()) { break; } - - res = VASReader( (pidlen > 0) ? pidhash : NULL, url, urllen, cryptogram, &clen, verbose); + + res = VASReader((pidlen > 0) ? pidhash : NULL, url, urllen, cryptogram, &clen, verbose); if (res == PM3_SUCCESS) { res = DecryptVASCryptogram(pidhash, cryptogram, clen, &privKey, msg, &mlen, ×tamp); @@ -482,7 +482,7 @@ static int CmdVASReader(const char *Cmd) { } } } - msleep(300); + msleep(300); } while (continuous); mbedtls_ecp_keypair_free(&privKey); @@ -494,7 +494,7 @@ static int CmdVASDecrypt(const char *Cmd) { CLIParserInit(&ctx, "hf vas decrypt", "Decrypt a previously captured cryptogram", "hf vas decrypt --pid pass.com.passkit.pksamples.nfcdemo -f vas_privkey.der -d c0b77375eae416b79449347f9fe838c05cdb57dc7470b97b93b806cb348771d9bfbe29d58538c7c7d7c3d015fa205b68bfccd726058a62f7f44085ac98dbf877120fd9059f1507b956e0a6d56d0a\n" - ); + ); void *argtable[] = { arg_param_begin, diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 720401bdb..87ebd4930 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -76,7 +76,7 @@ static void PrintChannel(Iso7816CommandChannel channel) { } static int emv_parse_card_details(uint8_t *response, size_t reslen) { - + struct tlvdb *root = tlvdb_parse_multi(response, reslen); if (root == NULL) { return PM3_EINVARG; @@ -123,7 +123,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) { if (acc_full != NULL) { const struct tlv *acc_tlv = tlvdb_get_tlv(acc_full); if (acc_tlv->len == 2) { - uint16_t acc = MemBeToUint2byte((const uint8_t*)acc_tlv->value); + uint16_t acc = MemBeToUint2byte((const uint8_t *)acc_tlv->value); PrintAndLogEx(INFO, "Currency Code........ " _YELLOW_("%02X"), acc); } } @@ -132,12 +132,12 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) { struct tlvdb *aeffect_full = tlvdb_find_full(root, 0x5F25); if (aeffect_full != NULL) { const struct tlv *aaeffect_tlv = tlvdb_get_tlv(aeffect_full); - if (aaeffect_tlv->len == 3) { + if (aaeffect_tlv->len == 3) { PrintAndLogEx(INFO, "Effective date....... " _YELLOW_("20%02x-%02x-%02x"), - aaeffect_tlv->value[0], - aaeffect_tlv->value[1], - aaeffect_tlv->value[2] - ); + aaeffect_tlv->value[0], + aaeffect_tlv->value[1], + aaeffect_tlv->value[2] + ); } } @@ -145,12 +145,12 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) { struct tlvdb *aexd_full = tlvdb_find_full(root, 0x5F24); if (aexd_full != NULL) { const struct tlv *aexd_tlv = tlvdb_get_tlv(aexd_full); - if (aexd_tlv->len == 3) { + if (aexd_tlv->len == 3) { PrintAndLogEx(INFO, "Expiration date...... " _YELLOW_("20%02x-%02x-%02x"), - aexd_tlv->value[0], - aexd_tlv->value[1], - aexd_tlv->value[2] - ); + aexd_tlv->value[0], + aexd_tlv->value[1], + aexd_tlv->value[2] + ); } } @@ -158,17 +158,17 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) { struct tlvdb *apan_full = tlvdb_find_full(root, 0x5A); if (apan_full != NULL) { const struct tlv *apan_tlv = tlvdb_get_tlv(apan_full); - if (apan_tlv->len == 8) { + if (apan_tlv->len == 8) { PrintAndLogEx(INFO, "PAN.................. " _YELLOW_("%02x%02x %02x%02x %02x%02x %02x%02x"), - apan_tlv->value[0], - apan_tlv->value[1], - apan_tlv->value[2], - apan_tlv->value[3], - apan_tlv->value[4], - apan_tlv->value[5], - apan_tlv->value[6], - apan_tlv->value[7] - ); + apan_tlv->value[0], + apan_tlv->value[1], + apan_tlv->value[2], + apan_tlv->value[3], + apan_tlv->value[4], + apan_tlv->value[5], + apan_tlv->value[6], + apan_tlv->value[7] + ); } } @@ -176,7 +176,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) { struct tlvdb *apansq_full = tlvdb_find_full(root, 0x5F34); if (apansq_full != NULL) { const struct tlv *apansq_tlv = tlvdb_get_tlv(apansq_full); - if (apansq_tlv->len == 1) { + if (apansq_tlv->len == 1) { PrintAndLogEx(INFO, "PAN Sequence......... " _YELLOW_("%u"), apansq_tlv->value[0]); } } @@ -185,7 +185,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) { struct tlvdb *chm_full = tlvdb_find_full(root, 0x5F20); if (chm_full != NULL) { const struct tlv *chm_tlv = tlvdb_get_tlv(chm_full); - if (chm_tlv->len) { + if (chm_tlv->len) { PrintAndLogEx(INFO, "Cardhold Name........ " _YELLOW_("%s"), sprint_ascii(chm_tlv->value, chm_tlv->len)); } } @@ -194,7 +194,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) { struct tlvdb *track1_full = tlvdb_find_full(root, 0x56); if (track1_full != NULL) { const struct tlv *track1_tlv = tlvdb_get_tlv(track1_full); - if (track1_tlv->len) { + if (track1_tlv->len) { PrintAndLogEx(INFO, "Track 1.............. " _YELLOW_("%s"), sprint_ascii(track1_tlv->value, track1_tlv->len)); } } @@ -203,7 +203,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) { struct tlvdb *track2_full = tlvdb_find_full(root, 0x9F6B); if (track2_full != NULL) { const struct tlv *track2_tlv = tlvdb_get_tlv(track2_full); - if (track2_tlv->len) { + if (track2_tlv->len) { PrintAndLogEx(INFO, "Track 2.............. " _YELLOW_("%s"), sprint_hex_inrow(track2_tlv->value, track2_tlv->len)); } } @@ -212,7 +212,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) { struct tlvdb *track2_eq_full = tlvdb_find_full(root, 0x57); if (track2_eq_full != NULL) { const struct tlv *track2_eq_tlv = tlvdb_get_tlv(track2_eq_full); - if (track2_eq_tlv->len) { + if (track2_eq_tlv->len) { PrintAndLogEx(INFO, "Track 2 equivalent... " _YELLOW_("%s"), sprint_hex_inrow(track2_eq_tlv->value, track2_eq_tlv->len)); } } @@ -2272,7 +2272,7 @@ out: return ret; } -static int CmdEMVReader(const char *Cmd){ +static int CmdEMVReader(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "emv reader", "Act as a EMV reader to identify tag. Look for EMV tags until Enter or the pm3 button is pressed", @@ -2385,9 +2385,9 @@ static int CmdEMVReader(const char *Cmd){ emv_parse_card_details(buf, len); - if (tlvdb_get(tlvRoot, 0x77, NULL)) { + if (tlvdb_get(tlvRoot, 0x77, NULL)) { break; - } + } } const struct tlv *AFL = tlvdb_get(tlvRoot, 0x94, NULL); @@ -2441,7 +2441,7 @@ static command_t CommandTable[] = { {"search", CmdEMVSearch, IfPm3Iso14443, "Try to select all applets from applets list and print installed applets"}, {"select", CmdEMVSelect, IfPm3Iso14443, "Select applet"}, /* - {"-----------", CmdHelp, IfPm3Iso14443a, "---------------------- " _CYAN_("simulation") " ---------------------"}, + {"-----------", CmdHelp, IfPm3Iso14443a, "---------------------- " _CYAN_("simulation") " ---------------------"}, {"getrng", CmdEMVGetrng, IfPm3Iso14443, "get random number from terminal"}, {"eload", CmdEmvELoad, IfPm3Iso14443, "load EMV tag into device"}, {"dump", CmdEmvDump, IfPm3Iso14443, "dump EMV tag values"}, diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index 7284af351..950d8816f 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -31,767 +31,772 @@ typedef struct vocabulory_s { } vocabulory_t; const static vocabulory_t vocabulory[] = { - { 1, "help" }, - { 0, "auto" }, - { 1, "clear" }, - { 1, "hints" }, - { 1, "msleep" }, - { 1, "rem" }, - { 1, "quit" }, - { 1, "exit" }, - { 1, "prefs help" }, - { 1, "prefs show" }, - { 1, "prefs get barmode" }, - { 1, "prefs get clientdebug" }, - { 1, "prefs get clientdelay" }, - { 1, "prefs get color" }, - { 1, "prefs get savepaths" }, - { 1, "prefs get emoji" }, - { 1, "prefs get hints" }, - { 1, "prefs get output" }, - { 1, "prefs get plotsliders" }, - { 1, "prefs set help" }, - { 1, "prefs set barmode" }, - { 1, "prefs set clientdebug" }, - { 1, "prefs set clientdelay" }, - { 1, "prefs set color" }, - { 1, "prefs set emoji" }, - { 1, "prefs set hints" }, - { 1, "prefs set savepaths" }, - { 1, "prefs set output" }, - { 1, "prefs set plotsliders" }, - { 1, "analyse help" }, - { 1, "analyse lcr" }, - { 1, "analyse crc" }, - { 1, "analyse chksum" }, - { 1, "analyse dates" }, - { 1, "analyse lfsr" }, - { 1, "analyse a" }, - { 1, "analyse nuid" }, - { 1, "analyse demodbuff" }, - { 1, "analyse freq" }, - { 1, "analyse foo" }, - { 1, "analyse units" }, - { 1, "data help" }, - { 1, "data biphaserawdecode" }, - { 1, "data detectclock" }, - { 1, "data fsktonrz" }, - { 1, "data manrawdecode" }, - { 1, "data modulation" }, - { 1, "data rawdemod" }, - { 1, "data askedgedetect" }, - { 1, "data autocorr" }, - { 1, "data dirthreshold" }, - { 1, "data decimate" }, - { 1, "data undecimate" }, - { 1, "data hide" }, - { 1, "data hpf" }, - { 1, "data iir" }, - { 1, "data grid" }, - { 1, "data ltrim" }, - { 1, "data mtrim" }, - { 1, "data norm" }, - { 1, "data plot" }, - { 1, "data rtrim" }, - { 1, "data setgraphmarkers" }, - { 1, "data shiftgraphzero" }, - { 1, "data timescale" }, - { 1, "data zerocrossings" }, - { 1, "data convertbitstream" }, - { 1, "data getbitstream" }, - { 1, "data asn1" }, - { 1, "data bin2hex" }, - { 0, "data bitsamples" }, - { 1, "data clear" }, - { 1, "data diff" }, - { 0, "data hexsamples" }, - { 1, "data hex2bin" }, - { 1, "data load" }, - { 1, "data num" }, - { 1, "data print" }, - { 0, "data samples" }, - { 1, "data save" }, - { 1, "data setdebugmode" }, - { 0, "data tune" }, - { 1, "emv help" }, - { 0, "emv exec" }, - { 0, "emv pse" }, - { 0, "emv search" }, - { 0, "emv select" }, - { 0, "emv gpo" }, - { 0, "emv readrec" }, - { 0, "emv genac" }, - { 0, "emv challenge" }, - { 0, "emv intauth" }, - { 0, "emv scan" }, - { 1, "emv test" }, - { 1, "emv list" }, - { 0, "emv roca" }, - { 1, "hf help" }, - { 1, "hf list" }, - { 0, "hf plot" }, - { 0, "hf tune" }, - { 1, "hf search" }, - { 0, "hf sniff" }, - { 1, "hf 14a help" }, - { 1, "hf 14a list" }, - { 0, "hf 14a antifuzz" }, - { 0, "hf 14a config" }, - { 0, "hf 14a cuids" }, - { 0, "hf 14a info" }, - { 0, "hf 14a sim" }, - { 0, "hf 14a sniff" }, - { 0, "hf 14a raw" }, - { 0, "hf 14a reader" }, - { 0, "hf 14a apdu" }, - { 0, "hf 14a apdufind" }, - { 0, "hf 14a chaining" }, - { 0, "hf 14a ndefformat" }, - { 0, "hf 14a ndefread" }, - { 0, "hf 14a ndefwrite" }, - { 1, "hf 14b help" }, - { 0, "hf 14b apdu" }, - { 0, "hf 14b dump" }, - { 0, "hf 14b info" }, - { 1, "hf 14b list" }, - { 0, "hf 14b ndefread" }, - { 0, "hf 14b raw" }, - { 0, "hf 14b reader" }, - { 0, "hf 14b sim" }, - { 0, "hf 14b sniff" }, - { 0, "hf 14b rdbl" }, - { 0, "hf 14b sriwrite" }, - { 1, "hf 14b view" }, - { 1, "hf 15 help" }, - { 1, "hf 15 list" }, - { 1, "hf 15 demod" }, - { 0, "hf 15 dump" }, - { 0, "hf 15 info" }, - { 0, "hf 15 sniff" }, - { 0, "hf 15 raw" }, - { 0, "hf 15 rdbl" }, - { 0, "hf 15 rdmulti" }, - { 0, "hf 15 reader" }, - { 0, "hf 15 restore" }, - { 0, "hf 15 samples" }, - { 0, "hf 15 eload" }, - { 0, "hf 15 esave" }, - { 0, "hf 15 eview" }, - { 0, "hf 15 sim" }, - { 0, "hf 15 slixwritepwd" }, - { 0, "hf 15 slixeasdisable" }, - { 0, "hf 15 slixeasenable" }, - { 0, "hf 15 slixprivacydisable" }, - { 0, "hf 15 slixprivacyenable" }, - { 0, "hf 15 passprotectafi" }, - { 0, "hf 15 passprotecteas" }, - { 0, "hf 15 wrbl" }, - { 0, "hf 15 findafi" }, - { 0, "hf 15 writeafi" }, - { 0, "hf 15 writedsfid" }, - { 0, "hf 15 csetuid" }, - { 1, "hf cipurse help" }, - { 0, "hf cipurse info" }, - { 0, "hf cipurse select" }, - { 0, "hf cipurse auth" }, - { 0, "hf cipurse read" }, - { 0, "hf cipurse write" }, - { 0, "hf cipurse aread" }, - { 0, "hf cipurse awrite" }, - { 0, "hf cipurse formatall" }, - { 0, "hf cipurse create" }, - { 0, "hf cipurse delete" }, - { 0, "hf cipurse updkey" }, - { 0, "hf cipurse updakey" }, - { 0, "hf cipurse default" }, - { 1, "hf cipurse test" }, - { 1, "hf epa help" }, - { 0, "hf epa cnonces" }, - { 0, "hf epa replay" }, - { 0, "hf epa sim" }, - { 1, "hf emrtd help" }, - { 0, "hf emrtd dump" }, - { 1, "hf emrtd info" }, - { 1, "hf emrtd list" }, - { 1, "hf felica help" }, - { 1, "hf felica list" }, - { 0, "hf felica reader" }, - { 0, "hf felica info" }, - { 0, "hf felica sniff" }, - { 0, "hf felica raw" }, - { 0, "hf felica rdbl" }, - { 0, "hf felica wrbl" }, - { 0, "hf felica rqservice" }, - { 0, "hf felica rqresponse" }, - { 0, "hf felica scsvcode" }, - { 0, "hf felica rqsyscode" }, - { 0, "hf felica auth1" }, - { 0, "hf felica auth2" }, - { 0, "hf felica rqspecver" }, - { 0, "hf felica resetmode" }, - { 0, "hf felica litesim" }, - { 0, "hf felica litedump" }, - { 1, "hf fido help" }, - { 1, "hf fido list" }, - { 0, "hf fido info" }, - { 0, "hf fido reg" }, - { 0, "hf fido auth" }, - { 0, "hf fido make" }, - { 0, "hf fido assert" }, - { 1, "hf fudan help" }, - { 0, "hf fudan reader" }, - { 0, "hf fudan dump" }, - { 0, "hf fudan rdbl" }, - { 1, "hf fudan view" }, - { 0, "hf fudan wrbl" }, - { 1, "hf gallagher help" }, - { 0, "hf gallagher reader" }, - { 0, "hf gallagher clone" }, - { 0, "hf gallagher delete" }, - { 1, "hf gallagher diversifykey" }, - { 1, "hf gallagher decode" }, - { 1, "hf ksx6924 help" }, - { 0, "hf ksx6924 select" }, - { 0, "hf ksx6924 info" }, - { 0, "hf ksx6924 balance" }, - { 0, "hf ksx6924 init" }, - { 0, "hf ksx6924 prec" }, - { 1, "hf jooki help" }, - { 0, "hf jooki clone" }, - { 1, "hf jooki decode" }, - { 1, "hf jooki encode" }, - { 0, "hf jooki sim" }, - { 1, "hf iclass help" }, - { 0, "hf iclass dump" }, - { 1, "hf iclass info" }, - { 1, "hf iclass list" }, - { 0, "hf iclass rdbl" }, - { 0, "hf iclass reader" }, - { 0, "hf iclass restore" }, - { 0, "hf iclass sniff" }, - { 0, "hf iclass wrbl" }, - { 0, "hf iclass chk" }, - { 1, "hf iclass loclass" }, - { 1, "hf iclass lookup" }, - { 0, "hf iclass sim" }, - { 0, "hf iclass eload" }, - { 0, "hf iclass esave" }, - { 0, "hf iclass eview" }, - { 1, "hf iclass configcard" }, - { 1, "hf iclass calcnewkey" }, - { 1, "hf iclass encode" }, - { 1, "hf iclass encrypt" }, - { 1, "hf iclass decrypt" }, - { 1, "hf iclass managekeys" }, - { 1, "hf iclass permutekey" }, - { 1, "hf iclass view" }, - { 1, "hf legic help" }, - { 0, "hf legic dump" }, - { 0, "hf legic info" }, - { 1, "hf legic list" }, - { 0, "hf legic rdbl" }, - { 0, "hf legic reader" }, - { 0, "hf legic restore" }, - { 0, "hf legic wipe" }, - { 0, "hf legic wrbl" }, - { 0, "hf legic sim" }, - { 0, "hf legic eload" }, - { 0, "hf legic esave" }, - { 0, "hf legic eview" }, - { 0, "hf legic einfo" }, - { 1, "hf legic crc" }, - { 1, "hf legic view" }, - { 1, "hf lto help" }, - { 0, "hf lto dump" }, - { 0, "hf lto info" }, - { 1, "hf lto list" }, - { 0, "hf lto rdbl" }, - { 0, "hf lto reader" }, - { 0, "hf lto restore" }, - { 0, "hf lto wrbl" }, - { 1, "hf mf help" }, - { 1, "hf mf list" }, - { 0, "hf mf darkside" }, - { 0, "hf mf nested" }, - { 1, "hf mf hardnested" }, - { 0, "hf mf staticnested" }, - { 0, "hf mf autopwn" }, - { 0, "hf mf nack" }, - { 0, "hf mf chk" }, - { 0, "hf mf fchk" }, - { 1, "hf mf decrypt" }, - { 0, "hf mf supercard" }, - { 0, "hf mf auth4" }, - { 1, "hf mf acl" }, - { 0, "hf mf dump" }, - { 1, "hf mf mad" }, - { 0, "hf mf personalize" }, - { 0, "hf mf rdbl" }, - { 0, "hf mf rdsc" }, - { 0, "hf mf restore" }, - { 0, "hf mf setmod" }, - { 1, "hf mf value" }, - { 1, "hf mf view" }, - { 0, "hf mf wipe" }, - { 0, "hf mf wrbl" }, - { 0, "hf mf sim" }, - { 0, "hf mf ecfill" }, - { 0, "hf mf eclr" }, - { 0, "hf mf egetblk" }, - { 0, "hf mf egetsc" }, - { 0, "hf mf ekeyprn" }, - { 0, "hf mf eload" }, - { 0, "hf mf esave" }, - { 0, "hf mf esetblk" }, - { 0, "hf mf eview" }, - { 0, "hf mf cgetblk" }, - { 0, "hf mf cgetsc" }, - { 0, "hf mf cload" }, - { 0, "hf mf csave" }, - { 0, "hf mf csetblk" }, - { 0, "hf mf csetuid" }, - { 0, "hf mf cview" }, - { 0, "hf mf cwipe" }, - { 0, "hf mf gen3uid" }, - { 0, "hf mf gen3blk" }, - { 0, "hf mf gen3freeze" }, - { 0, "hf mf ggetblk" }, - { 0, "hf mf gload" }, - { 0, "hf mf gsave" }, - { 0, "hf mf gsetblk" }, - { 0, "hf mf gview" }, - { 0, "hf mf gdmcfg" }, - { 0, "hf mf gdmsetcfg" }, - { 0, "hf mf gdmsetblk" }, - { 0, "hf mf ndefformat" }, - { 0, "hf mf ndefread" }, - { 0, "hf mf ndefwrite" }, - { 1, "hf mfp help" }, - { 1, "hf mfp list" }, - { 0, "hf mfp auth" }, - { 0, "hf mfp chk" }, - { 0, "hf mfp dump" }, - { 0, "hf mfp info" }, - { 0, "hf mfp mad" }, - { 0, "hf mfp rdbl" }, - { 0, "hf mfp rdsc" }, - { 0, "hf mfp wrbl" }, - { 0, "hf mfp commitp" }, - { 0, "hf mfp initp" }, - { 0, "hf mfp wrp" }, - { 0, "hf mfp ndefformat" }, - { 0, "hf mfp ndefread" }, - { 0, "hf mfp ndefwrite" }, - { 1, "hf mfu help" }, - { 1, "hf mfu keygen" }, - { 1, "hf mfu pwdgen" }, - { 0, "hf mfu otptear" }, - { 0, "hf mfu cauth" }, - { 0, "hf mfu dump" }, - { 0, "hf mfu info" }, - { 0, "hf mfu ndefread" }, - { 0, "hf mfu rdbl" }, - { 0, "hf mfu restore" }, - { 1, "hf mfu view" }, - { 0, "hf mfu wrbl" }, - { 0, "hf mfu tamper" }, - { 0, "hf mfu eload" }, - { 0, "hf mfu esave" }, - { 0, "hf mfu eview" }, - { 0, "hf mfu sim" }, - { 0, "hf mfu setpwd" }, - { 0, "hf mfu setuid" }, - { 1, "hf mfdes help" }, - { 0, "hf mfdes info" }, - { 0, "hf mfdes getuid" }, - { 0, "hf mfdes default" }, - { 0, "hf mfdes auth" }, - { 0, "hf mfdes chk" }, - { 0, "hf mfdes detect" }, - { 0, "hf mfdes freemem" }, - { 0, "hf mfdes setconfig" }, - { 0, "hf mfdes formatpicc" }, - { 1, "hf mfdes list" }, - { 0, "hf mfdes mad" }, - { 0, "hf mfdes lsapp" }, - { 0, "hf mfdes getaids" }, - { 0, "hf mfdes getappnames" }, - { 0, "hf mfdes bruteaid" }, - { 0, "hf mfdes createapp" }, - { 0, "hf mfdes deleteapp" }, - { 0, "hf mfdes selectapp" }, - { 0, "hf mfdes changekey" }, - { 0, "hf mfdes chkeysettings" }, - { 0, "hf mfdes getkeysettings" }, - { 0, "hf mfdes getkeyversions" }, - { 0, "hf mfdes getfileids" }, - { 0, "hf mfdes getfileisoids" }, - { 0, "hf mfdes lsfiles" }, - { 0, "hf mfdes dump" }, - { 0, "hf mfdes createfile" }, - { 0, "hf mfdes createvaluefile" }, - { 0, "hf mfdes createrecordfile" }, - { 0, "hf mfdes createmacfile" }, - { 0, "hf mfdes deletefile" }, - { 0, "hf mfdes getfilesettings" }, - { 0, "hf mfdes chfilesettings" }, - { 0, "hf mfdes read" }, - { 0, "hf mfdes write" }, - { 0, "hf mfdes value" }, - { 0, "hf mfdes clearrecfile" }, - { 1, "hf mfdes test" }, - { 1, "hf ntag424 help" }, - { 0, "hf ntag424 info" }, - { 0, "hf ntag424 sdm" }, - { 1, "hf ntag424 view" }, - { 1, "hf seos help" }, - { 0, "hf seos info" }, - { 1, "hf seos list" }, - { 1, "hf st25ta help" }, - { 0, "hf st25ta info" }, - { 1, "hf st25ta list" }, - { 1, "hf st25ta ndefread" }, - { 0, "hf st25ta protect" }, - { 0, "hf st25ta pwd" }, - { 0, "hf st25ta sim" }, - { 1, "hf tesla help" }, - { 0, "hf tesla info" }, - { 1, "hf tesla list" }, - { 1, "hf texkom help" }, - { 0, "hf texkom reader" }, - { 0, "hf texkom sim" }, - { 1, "hf thinfilm help" }, - { 0, "hf thinfilm info" }, - { 1, "hf thinfilm list" }, - { 0, "hf thinfilm sim" }, - { 1, "hf topaz help" }, - { 1, "hf topaz list" }, - { 0, "hf topaz dump" }, - { 0, "hf topaz info" }, - { 0, "hf topaz raw" }, - { 0, "hf topaz rdbl" }, - { 0, "hf topaz reader" }, - { 0, "hf topaz sim" }, - { 0, "hf topaz sniff" }, - { 1, "hf topaz view" }, - { 0, "hf topaz wrbl" }, - { 1, "hf xerox help" }, - { 0, "hf xerox info" }, - { 0, "hf xerox reader" }, - { 0, "hf xerox dump" }, - { 1, "hf waveshare help" }, - { 0, "hf waveshare loadbmp" }, - { 1, "hw help" }, - { 0, "hw break" }, - { 1, "hw connect" }, - { 0, "hw dbg" }, - { 0, "hw detectreader" }, - { 0, "hw fpgaoff" }, - { 0, "hw lcd" }, - { 0, "hw lcdreset" }, - { 0, "hw ping" }, - { 0, "hw readmem" }, - { 0, "hw reset" }, - { 0, "hw setlfdivisor" }, - { 0, "hw setmux" }, - { 0, "hw standalone" }, - { 0, "hw status" }, - { 0, "hw tearoff" }, - { 0, "hw tia" }, - { 0, "hw tune" }, - { 1, "hw version" }, - { 1, "lf help" }, - { 0, "lf config" }, - { 0, "lf cmdread" }, - { 0, "lf read" }, - { 1, "lf search" }, - { 0, "lf sim" }, - { 0, "lf simask" }, - { 0, "lf simfsk" }, - { 0, "lf simpsk" }, - { 0, "lf simbidir" }, - { 0, "lf sniff" }, - { 0, "lf tune" }, - { 1, "lf awid help" }, - { 1, "lf awid demod" }, - { 0, "lf awid reader" }, - { 0, "lf awid clone" }, - { 0, "lf awid sim" }, - { 0, "lf awid brute" }, - { 0, "lf awid watch" }, - { 1, "lf cotag help" }, - { 1, "lf cotag demod" }, - { 0, "lf cotag reader" }, - { 1, "lf destron help" }, - { 1, "lf destron demod" }, - { 0, "lf destron reader" }, - { 0, "lf destron clone" }, - { 0, "lf destron sim" }, - { 1, "lf em help" }, - { 1, "lf em 410x help" }, - { 1, "lf em 410x demod" }, - { 0, "lf em 410x reader" }, - { 0, "lf em 410x sim" }, - { 0, "lf em 410x brute" }, - { 0, "lf em 410x watch" }, - { 0, "lf em 410x spoof" }, - { 0, "lf em 410x clone" }, - { 1, "lf em 4x05 help" }, - { 0, "lf em 4x05 brute" }, - { 0, "lf em 4x05 chk" }, - { 1, "lf em 4x05 demod" }, - { 0, "lf em 4x05 dump" }, - { 0, "lf em 4x05 info" }, - { 0, "lf em 4x05 read" }, - { 1, "lf em 4x05 sniff" }, - { 0, "lf em 4x05 unlock" }, - { 0, "lf em 4x05 wipe" }, - { 0, "lf em 4x05 write" }, - { 1, "lf em 4x50 help" }, - { 0, "lf em 4x50 brute" }, - { 0, "lf em 4x50 chk" }, - { 0, "lf em 4x50 dump" }, - { 0, "lf em 4x50 info" }, - { 0, "lf em 4x50 login" }, - { 0, "lf em 4x50 rdbl" }, - { 0, "lf em 4x50 reader" }, - { 0, "lf em 4x50 restore" }, - { 0, "lf em 4x50 wrbl" }, - { 0, "lf em 4x50 wrpwd" }, - { 0, "lf em 4x50 wipe" }, - { 0, "lf em 4x50 eload" }, - { 0, "lf em 4x50 esave" }, - { 0, "lf em 4x50 eview" }, - { 0, "lf em 4x50 sim" }, - { 1, "lf em 4x70 help" }, - { 0, "lf em 4x70 brute" }, - { 0, "lf em 4x70 info" }, - { 0, "lf em 4x70 write" }, - { 0, "lf em 4x70 unlock" }, - { 0, "lf em 4x70 auth" }, - { 0, "lf em 4x70 writepin" }, - { 0, "lf em 4x70 writekey" }, - { 1, "lf fdxb help" }, - { 1, "lf fdxb demod" }, - { 0, "lf fdxb reader" }, - { 0, "lf fdxb clone" }, - { 0, "lf fdxb sim" }, - { 1, "lf gallagher help" }, - { 1, "lf gallagher demod" }, - { 0, "lf gallagher reader" }, - { 0, "lf gallagher clone" }, - { 0, "lf gallagher sim" }, - { 1, "lf gproxii help" }, - { 1, "lf gproxii demod" }, - { 0, "lf gproxii reader" }, - { 0, "lf gproxii clone" }, - { 0, "lf gproxii sim" }, - { 1, "lf hid help" }, - { 1, "lf hid demod" }, - { 0, "lf hid reader" }, - { 0, "lf hid clone" }, - { 0, "lf hid sim" }, - { 0, "lf hid brute" }, - { 0, "lf hid watch" }, - { 1, "lf hitag help" }, - { 0, "lf hitag eload" }, - { 1, "lf hitag list" }, - { 0, "lf hitag info" }, - { 0, "lf hitag reader" }, - { 0, "lf hitag sim" }, - { 0, "lf hitag sniff" }, - { 0, "lf hitag writer" }, - { 0, "lf hitag dump" }, - { 0, "lf hitag cc" }, - { 1, "lf idteck help" }, - { 1, "lf idteck demod" }, - { 0, "lf idteck reader" }, - { 0, "lf idteck clone" }, - { 0, "lf idteck sim" }, - { 1, "lf indala help" }, - { 0, "lf indala brute" }, - { 1, "lf indala demod" }, - { 1, "lf indala altdemod" }, - { 0, "lf indala reader" }, - { 0, "lf indala clone" }, - { 0, "lf indala sim" }, - { 1, "lf io help" }, - { 1, "lf io demod" }, - { 0, "lf io reader" }, - { 0, "lf io clone" }, - { 0, "lf io sim" }, - { 0, "lf io watch" }, - { 1, "lf jablotron help" }, - { 1, "lf jablotron demod" }, - { 0, "lf jablotron reader" }, - { 0, "lf jablotron clone" }, - { 0, "lf jablotron sim" }, - { 1, "lf keri help" }, - { 1, "lf keri demod" }, - { 0, "lf keri reader" }, - { 0, "lf keri clone" }, - { 0, "lf keri sim" }, - { 1, "lf motorola help" }, - { 1, "lf motorola demod" }, - { 0, "lf motorola reader" }, - { 0, "lf motorola clone" }, - { 0, "lf motorola sim" }, - { 1, "lf nedap help" }, - { 1, "lf nedap demod" }, - { 0, "lf nedap reader" }, - { 0, "lf nedap clone" }, - { 0, "lf nedap sim" }, - { 1, "lf nexwatch help" }, - { 1, "lf nexwatch demod" }, - { 0, "lf nexwatch reader" }, - { 0, "lf nexwatch clone" }, - { 0, "lf nexwatch sim" }, - { 1, "lf noralsy help" }, - { 1, "lf noralsy demod" }, - { 0, "lf noralsy reader" }, - { 0, "lf noralsy clone" }, - { 0, "lf noralsy sim" }, - { 1, "lf pac help" }, - { 1, "lf pac demod" }, - { 0, "lf pac reader" }, - { 0, "lf pac clone" }, - { 0, "lf pac sim" }, - { 1, "lf paradox help" }, - { 1, "lf paradox demod" }, - { 0, "lf paradox reader" }, - { 0, "lf paradox clone" }, - { 0, "lf paradox sim" }, - { 1, "lf pcf7931 help" }, - { 0, "lf pcf7931 reader" }, - { 0, "lf pcf7931 write" }, - { 1, "lf pcf7931 config" }, - { 1, "lf presco help" }, - { 1, "lf presco demod" }, - { 0, "lf presco reader" }, - { 0, "lf presco clone" }, - { 0, "lf presco sim" }, - { 1, "lf pyramid help" }, - { 1, "lf pyramid demod" }, - { 0, "lf pyramid reader" }, - { 0, "lf pyramid clone" }, - { 0, "lf pyramid sim" }, - { 1, "lf securakey help" }, - { 1, "lf securakey demod" }, - { 0, "lf securakey reader" }, - { 0, "lf securakey clone" }, - { 0, "lf securakey sim" }, - { 1, "lf ti help" }, - { 1, "lf ti demod" }, - { 0, "lf ti reader" }, - { 0, "lf ti write" }, - { 1, "lf t55xx help" }, - { 0, "lf t55xx clonehelp" }, - { 1, "lf t55xx config" }, - { 0, "lf t55xx dangerraw" }, - { 1, "lf t55xx detect" }, - { 0, "lf t55xx deviceconfig" }, - { 0, "lf t55xx dump" }, - { 1, "lf t55xx info" }, - { 0, "lf t55xx p1detect" }, - { 0, "lf t55xx read" }, - { 0, "lf t55xx resetread" }, - { 0, "lf t55xx restore" }, - { 1, "lf t55xx trace" }, - { 0, "lf t55xx wakeup" }, - { 0, "lf t55xx write" }, - { 0, "lf t55xx bruteforce" }, - { 0, "lf t55xx chk" }, - { 0, "lf t55xx protect" }, - { 0, "lf t55xx recoverpw" }, - { 1, "lf t55xx sniff" }, - { 0, "lf t55xx special" }, - { 0, "lf t55xx wipe" }, - { 1, "lf viking help" }, - { 1, "lf viking demod" }, - { 0, "lf viking reader" }, - { 0, "lf viking clone" }, - { 0, "lf viking sim" }, - { 1, "lf visa2000 help" }, - { 1, "lf visa2000 demod" }, - { 0, "lf visa2000 reader" }, - { 0, "lf visa2000 clone" }, - { 0, "lf visa2000 sim" }, - { 1, "mem help" }, - { 0, "mem baudrate" }, - { 0, "mem dump" }, - { 0, "mem info" }, - { 0, "mem load" }, - { 0, "mem wipe" }, - { 1, "mem spiffs help" }, - { 0, "mem spiffs copy" }, - { 0, "mem spiffs check" }, - { 0, "mem spiffs dump" }, - { 0, "mem spiffs info" }, - { 0, "mem spiffs mount" }, - { 0, "mem spiffs remove" }, - { 0, "mem spiffs rename" }, - { 0, "mem spiffs test" }, - { 0, "mem spiffs tree" }, - { 0, "mem spiffs unmount" }, - { 0, "mem spiffs upload" }, - { 0, "mem spiffs view" }, - { 0, "mem spiffs wipe" }, - { 1, "nfc help" }, - { 1, "nfc decode" }, - { 0, "nfc type1 read" }, - { 1, "nfc type1 help" }, - { 0, "nfc type2 read" }, - { 1, "nfc type2 help" }, - { 0, "nfc type4a format" }, - { 0, "nfc type4a read" }, - { 0, "nfc type4a write" }, - { 0, "nfc type4a st25taread" }, - { 1, "nfc type4a help" }, - { 0, "nfc type4b read" }, - { 1, "nfc type4b help" }, - { 0, "nfc mf cformat" }, - { 0, "nfc mf cread" }, - { 0, "nfc mf cwrite" }, - { 0, "nfc mf pread" }, - { 1, "nfc mf help" }, - { 0, "nfc barcode read" }, - { 0, "nfc barcode sim" }, - { 1, "nfc barcode help" }, - { 1, "piv help" }, - { 0, "piv select" }, - { 0, "piv getdata" }, - { 0, "piv authsign" }, - { 0, "piv scan" }, - { 1, "piv list" }, - { 1, "smart help" }, - { 1, "smart list" }, - { 0, "smart info" }, - { 0, "smart reader" }, - { 0, "smart raw" }, - { 1, "smart upgrade" }, - { 0, "smart setclock" }, - { 0, "smart brute" }, - { 1, "script help" }, - { 1, "script list" }, - { 1, "script run" }, - { 1, "trace help" }, - { 1, "trace extract" }, - { 1, "trace list" }, - { 1, "trace load" }, - { 1, "trace save" }, - { 1, "usart help" }, - { 0, "usart btpin" }, - { 0, "usart btfactory" }, - { 0, "usart tx" }, - { 0, "usart rx" }, - { 0, "usart txrx" }, - { 0, "usart txhex" }, - { 0, "usart rxhex" }, - { 0, "usart config" }, - { 1, "wiegand help" }, - { 1, "wiegand list" }, - { 1, "wiegand encode" }, - { 1, "wiegand decode" }, + { 1, "help" }, + { 0, "auto" }, + { 1, "clear" }, + { 1, "hints" }, + { 1, "msleep" }, + { 1, "rem" }, + { 1, "quit" }, + { 1, "exit" }, + { 1, "prefs help" }, + { 1, "prefs show" }, + { 1, "prefs get barmode" }, + { 1, "prefs get clientdebug" }, + { 1, "prefs get clientdelay" }, + { 1, "prefs get color" }, + { 1, "prefs get savepaths" }, + { 1, "prefs get emoji" }, + { 1, "prefs get hints" }, + { 1, "prefs get output" }, + { 1, "prefs get plotsliders" }, + { 1, "prefs set help" }, + { 1, "prefs set barmode" }, + { 1, "prefs set clientdebug" }, + { 1, "prefs set clientdelay" }, + { 1, "prefs set color" }, + { 1, "prefs set emoji" }, + { 1, "prefs set hints" }, + { 1, "prefs set savepaths" }, + { 1, "prefs set output" }, + { 1, "prefs set plotsliders" }, + { 1, "analyse help" }, + { 1, "analyse lcr" }, + { 1, "analyse crc" }, + { 1, "analyse chksum" }, + { 1, "analyse dates" }, + { 1, "analyse lfsr" }, + { 1, "analyse a" }, + { 1, "analyse nuid" }, + { 1, "analyse demodbuff" }, + { 1, "analyse freq" }, + { 1, "analyse foo" }, + { 1, "analyse units" }, + { 1, "data help" }, + { 1, "data biphaserawdecode" }, + { 1, "data detectclock" }, + { 1, "data fsktonrz" }, + { 1, "data manrawdecode" }, + { 1, "data modulation" }, + { 1, "data rawdemod" }, + { 1, "data askedgedetect" }, + { 1, "data autocorr" }, + { 1, "data dirthreshold" }, + { 1, "data decimate" }, + { 1, "data undecimate" }, + { 1, "data hide" }, + { 1, "data hpf" }, + { 1, "data iir" }, + { 1, "data grid" }, + { 1, "data ltrim" }, + { 1, "data mtrim" }, + { 1, "data norm" }, + { 1, "data plot" }, + { 1, "data rtrim" }, + { 1, "data setgraphmarkers" }, + { 1, "data shiftgraphzero" }, + { 1, "data timescale" }, + { 1, "data zerocrossings" }, + { 1, "data convertbitstream" }, + { 1, "data getbitstream" }, + { 1, "data asn1" }, + { 1, "data bin2hex" }, + { 0, "data bitsamples" }, + { 1, "data clear" }, + { 1, "data diff" }, + { 0, "data hexsamples" }, + { 1, "data hex2bin" }, + { 1, "data load" }, + { 1, "data num" }, + { 1, "data print" }, + { 0, "data samples" }, + { 1, "data save" }, + { 1, "data setdebugmode" }, + { 0, "data tune" }, + { 1, "emv help" }, + { 1, "emv list" }, + { 1, "emv test" }, + { 0, "emv challenge" }, + { 0, "emv exec" }, + { 0, "emv genac" }, + { 0, "emv gpo" }, + { 0, "emv intauth" }, + { 0, "emv pse" }, + { 0, "emv reader" }, + { 0, "emv readrec" }, + { 0, "emv roca" }, + { 0, "emv scan" }, + { 0, "emv search" }, + { 0, "emv select" }, + { 1, "hf help" }, + { 1, "hf list" }, + { 0, "hf plot" }, + { 0, "hf tune" }, + { 1, "hf search" }, + { 0, "hf sniff" }, + { 1, "hf 14a help" }, + { 1, "hf 14a list" }, + { 0, "hf 14a antifuzz" }, + { 0, "hf 14a config" }, + { 0, "hf 14a cuids" }, + { 0, "hf 14a info" }, + { 0, "hf 14a sim" }, + { 0, "hf 14a sniff" }, + { 0, "hf 14a raw" }, + { 0, "hf 14a reader" }, + { 0, "hf 14a apdu" }, + { 0, "hf 14a apdufind" }, + { 0, "hf 14a chaining" }, + { 0, "hf 14a ndefformat" }, + { 0, "hf 14a ndefread" }, + { 0, "hf 14a ndefwrite" }, + { 1, "hf 14b help" }, + { 0, "hf 14b apdu" }, + { 0, "hf 14b dump" }, + { 0, "hf 14b info" }, + { 1, "hf 14b list" }, + { 0, "hf 14b ndefread" }, + { 0, "hf 14b raw" }, + { 0, "hf 14b reader" }, + { 0, "hf 14b sim" }, + { 0, "hf 14b sniff" }, + { 0, "hf 14b rdbl" }, + { 0, "hf 14b sriwrite" }, + { 1, "hf 14b view" }, + { 1, "hf 15 help" }, + { 1, "hf 15 list" }, + { 1, "hf 15 demod" }, + { 0, "hf 15 dump" }, + { 0, "hf 15 info" }, + { 0, "hf 15 sniff" }, + { 0, "hf 15 raw" }, + { 0, "hf 15 rdbl" }, + { 0, "hf 15 rdmulti" }, + { 0, "hf 15 reader" }, + { 0, "hf 15 restore" }, + { 0, "hf 15 samples" }, + { 0, "hf 15 eload" }, + { 0, "hf 15 esave" }, + { 0, "hf 15 eview" }, + { 0, "hf 15 sim" }, + { 0, "hf 15 slixwritepwd" }, + { 0, "hf 15 slixeasdisable" }, + { 0, "hf 15 slixeasenable" }, + { 0, "hf 15 slixprivacydisable" }, + { 0, "hf 15 slixprivacyenable" }, + { 0, "hf 15 passprotectafi" }, + { 0, "hf 15 passprotecteas" }, + { 0, "hf 15 wrbl" }, + { 0, "hf 15 findafi" }, + { 0, "hf 15 writeafi" }, + { 0, "hf 15 writedsfid" }, + { 0, "hf 15 csetuid" }, + { 1, "hf cipurse help" }, + { 0, "hf cipurse info" }, + { 0, "hf cipurse select" }, + { 0, "hf cipurse auth" }, + { 0, "hf cipurse read" }, + { 0, "hf cipurse write" }, + { 0, "hf cipurse aread" }, + { 0, "hf cipurse awrite" }, + { 0, "hf cipurse formatall" }, + { 0, "hf cipurse create" }, + { 0, "hf cipurse delete" }, + { 0, "hf cipurse updkey" }, + { 0, "hf cipurse updakey" }, + { 0, "hf cipurse default" }, + { 1, "hf cipurse test" }, + { 1, "hf epa help" }, + { 0, "hf epa cnonces" }, + { 0, "hf epa replay" }, + { 0, "hf epa sim" }, + { 1, "hf emrtd help" }, + { 0, "hf emrtd dump" }, + { 1, "hf emrtd info" }, + { 1, "hf emrtd list" }, + { 1, "hf felica help" }, + { 1, "hf felica list" }, + { 0, "hf felica reader" }, + { 0, "hf felica info" }, + { 0, "hf felica sniff" }, + { 0, "hf felica raw" }, + { 0, "hf felica rdbl" }, + { 0, "hf felica wrbl" }, + { 0, "hf felica rqservice" }, + { 0, "hf felica rqresponse" }, + { 0, "hf felica scsvcode" }, + { 0, "hf felica rqsyscode" }, + { 0, "hf felica auth1" }, + { 0, "hf felica auth2" }, + { 0, "hf felica rqspecver" }, + { 0, "hf felica resetmode" }, + { 0, "hf felica litesim" }, + { 0, "hf felica litedump" }, + { 1, "hf fido help" }, + { 1, "hf fido list" }, + { 0, "hf fido info" }, + { 0, "hf fido reg" }, + { 0, "hf fido auth" }, + { 0, "hf fido make" }, + { 0, "hf fido assert" }, + { 1, "hf fudan help" }, + { 0, "hf fudan reader" }, + { 0, "hf fudan dump" }, + { 0, "hf fudan rdbl" }, + { 1, "hf fudan view" }, + { 0, "hf fudan wrbl" }, + { 1, "hf gallagher help" }, + { 0, "hf gallagher reader" }, + { 0, "hf gallagher clone" }, + { 0, "hf gallagher delete" }, + { 1, "hf gallagher diversifykey" }, + { 1, "hf gallagher decode" }, + { 1, "hf ksx6924 help" }, + { 0, "hf ksx6924 select" }, + { 0, "hf ksx6924 info" }, + { 0, "hf ksx6924 balance" }, + { 0, "hf ksx6924 init" }, + { 0, "hf ksx6924 prec" }, + { 1, "hf jooki help" }, + { 0, "hf jooki clone" }, + { 1, "hf jooki decode" }, + { 1, "hf jooki encode" }, + { 0, "hf jooki sim" }, + { 1, "hf iclass help" }, + { 0, "hf iclass dump" }, + { 1, "hf iclass info" }, + { 1, "hf iclass list" }, + { 0, "hf iclass rdbl" }, + { 0, "hf iclass reader" }, + { 0, "hf iclass restore" }, + { 0, "hf iclass sniff" }, + { 0, "hf iclass wrbl" }, + { 0, "hf iclass chk" }, + { 1, "hf iclass loclass" }, + { 1, "hf iclass lookup" }, + { 0, "hf iclass sim" }, + { 0, "hf iclass eload" }, + { 0, "hf iclass esave" }, + { 0, "hf iclass eview" }, + { 1, "hf iclass configcard" }, + { 1, "hf iclass calcnewkey" }, + { 1, "hf iclass encode" }, + { 1, "hf iclass encrypt" }, + { 1, "hf iclass decrypt" }, + { 1, "hf iclass managekeys" }, + { 1, "hf iclass permutekey" }, + { 1, "hf iclass view" }, + { 1, "hf legic help" }, + { 0, "hf legic dump" }, + { 0, "hf legic info" }, + { 1, "hf legic list" }, + { 0, "hf legic rdbl" }, + { 0, "hf legic reader" }, + { 0, "hf legic restore" }, + { 0, "hf legic wipe" }, + { 0, "hf legic wrbl" }, + { 0, "hf legic sim" }, + { 0, "hf legic eload" }, + { 0, "hf legic esave" }, + { 0, "hf legic eview" }, + { 0, "hf legic einfo" }, + { 1, "hf legic crc" }, + { 1, "hf legic view" }, + { 1, "hf lto help" }, + { 0, "hf lto dump" }, + { 0, "hf lto info" }, + { 1, "hf lto list" }, + { 0, "hf lto rdbl" }, + { 0, "hf lto reader" }, + { 0, "hf lto restore" }, + { 0, "hf lto wrbl" }, + { 1, "hf mf help" }, + { 1, "hf mf list" }, + { 0, "hf mf darkside" }, + { 0, "hf mf nested" }, + { 1, "hf mf hardnested" }, + { 0, "hf mf staticnested" }, + { 0, "hf mf autopwn" }, + { 0, "hf mf nack" }, + { 0, "hf mf chk" }, + { 0, "hf mf fchk" }, + { 1, "hf mf decrypt" }, + { 0, "hf mf supercard" }, + { 0, "hf mf auth4" }, + { 1, "hf mf acl" }, + { 0, "hf mf dump" }, + { 1, "hf mf mad" }, + { 0, "hf mf personalize" }, + { 0, "hf mf rdbl" }, + { 0, "hf mf rdsc" }, + { 0, "hf mf restore" }, + { 0, "hf mf setmod" }, + { 1, "hf mf value" }, + { 1, "hf mf view" }, + { 0, "hf mf wipe" }, + { 0, "hf mf wrbl" }, + { 0, "hf mf sim" }, + { 0, "hf mf ecfill" }, + { 0, "hf mf eclr" }, + { 0, "hf mf egetblk" }, + { 0, "hf mf egetsc" }, + { 0, "hf mf ekeyprn" }, + { 0, "hf mf eload" }, + { 0, "hf mf esave" }, + { 0, "hf mf esetblk" }, + { 0, "hf mf eview" }, + { 0, "hf mf cgetblk" }, + { 0, "hf mf cgetsc" }, + { 0, "hf mf cload" }, + { 0, "hf mf csave" }, + { 0, "hf mf csetblk" }, + { 0, "hf mf csetuid" }, + { 0, "hf mf cview" }, + { 0, "hf mf cwipe" }, + { 0, "hf mf gen3uid" }, + { 0, "hf mf gen3blk" }, + { 0, "hf mf gen3freeze" }, + { 0, "hf mf ggetblk" }, + { 0, "hf mf gload" }, + { 0, "hf mf gsave" }, + { 0, "hf mf gsetblk" }, + { 0, "hf mf gview" }, + { 0, "hf mf gdmcfg" }, + { 0, "hf mf gdmsetcfg" }, + { 0, "hf mf gdmsetblk" }, + { 0, "hf mf ndefformat" }, + { 0, "hf mf ndefread" }, + { 0, "hf mf ndefwrite" }, + { 1, "hf mfp help" }, + { 1, "hf mfp list" }, + { 0, "hf mfp auth" }, + { 0, "hf mfp chk" }, + { 0, "hf mfp dump" }, + { 0, "hf mfp info" }, + { 0, "hf mfp mad" }, + { 0, "hf mfp rdbl" }, + { 0, "hf mfp rdsc" }, + { 0, "hf mfp wrbl" }, + { 0, "hf mfp commitp" }, + { 0, "hf mfp initp" }, + { 0, "hf mfp wrp" }, + { 0, "hf mfp ndefformat" }, + { 0, "hf mfp ndefread" }, + { 0, "hf mfp ndefwrite" }, + { 1, "hf mfu help" }, + { 1, "hf mfu keygen" }, + { 1, "hf mfu pwdgen" }, + { 0, "hf mfu otptear" }, + { 0, "hf mfu cauth" }, + { 0, "hf mfu dump" }, + { 0, "hf mfu info" }, + { 0, "hf mfu ndefread" }, + { 0, "hf mfu rdbl" }, + { 0, "hf mfu restore" }, + { 1, "hf mfu view" }, + { 0, "hf mfu wrbl" }, + { 0, "hf mfu tamper" }, + { 0, "hf mfu eload" }, + { 0, "hf mfu esave" }, + { 0, "hf mfu eview" }, + { 0, "hf mfu sim" }, + { 0, "hf mfu setpwd" }, + { 0, "hf mfu setuid" }, + { 1, "hf mfdes help" }, + { 0, "hf mfdes info" }, + { 0, "hf mfdes getuid" }, + { 0, "hf mfdes default" }, + { 0, "hf mfdes auth" }, + { 0, "hf mfdes chk" }, + { 0, "hf mfdes detect" }, + { 0, "hf mfdes freemem" }, + { 0, "hf mfdes setconfig" }, + { 0, "hf mfdes formatpicc" }, + { 1, "hf mfdes list" }, + { 0, "hf mfdes mad" }, + { 0, "hf mfdes lsapp" }, + { 0, "hf mfdes getaids" }, + { 0, "hf mfdes getappnames" }, + { 0, "hf mfdes bruteaid" }, + { 0, "hf mfdes createapp" }, + { 0, "hf mfdes deleteapp" }, + { 0, "hf mfdes selectapp" }, + { 0, "hf mfdes changekey" }, + { 0, "hf mfdes chkeysettings" }, + { 0, "hf mfdes getkeysettings" }, + { 0, "hf mfdes getkeyversions" }, + { 0, "hf mfdes getfileids" }, + { 0, "hf mfdes getfileisoids" }, + { 0, "hf mfdes lsfiles" }, + { 0, "hf mfdes dump" }, + { 0, "hf mfdes createfile" }, + { 0, "hf mfdes createvaluefile" }, + { 0, "hf mfdes createrecordfile" }, + { 0, "hf mfdes createmacfile" }, + { 0, "hf mfdes deletefile" }, + { 0, "hf mfdes getfilesettings" }, + { 0, "hf mfdes chfilesettings" }, + { 0, "hf mfdes read" }, + { 0, "hf mfdes write" }, + { 0, "hf mfdes value" }, + { 0, "hf mfdes clearrecfile" }, + { 1, "hf mfdes test" }, + { 1, "hf ntag424 help" }, + { 0, "hf ntag424 info" }, + { 0, "hf ntag424 sdm" }, + { 1, "hf ntag424 view" }, + { 1, "hf seos help" }, + { 0, "hf seos info" }, + { 1, "hf seos list" }, + { 1, "hf st25ta help" }, + { 0, "hf st25ta info" }, + { 1, "hf st25ta list" }, + { 1, "hf st25ta ndefread" }, + { 0, "hf st25ta protect" }, + { 0, "hf st25ta pwd" }, + { 0, "hf st25ta sim" }, + { 1, "hf tesla help" }, + { 0, "hf tesla info" }, + { 1, "hf tesla list" }, + { 1, "hf texkom help" }, + { 0, "hf texkom reader" }, + { 0, "hf texkom sim" }, + { 1, "hf thinfilm help" }, + { 0, "hf thinfilm info" }, + { 1, "hf thinfilm list" }, + { 0, "hf thinfilm sim" }, + { 1, "hf topaz help" }, + { 1, "hf topaz list" }, + { 0, "hf topaz dump" }, + { 0, "hf topaz info" }, + { 0, "hf topaz raw" }, + { 0, "hf topaz rdbl" }, + { 0, "hf topaz reader" }, + { 0, "hf topaz sim" }, + { 0, "hf topaz sniff" }, + { 1, "hf topaz view" }, + { 0, "hf topaz wrbl" }, + { 1, "hf vas help" }, + { 0, "hf vas reader" }, + { 1, "hf vas decrypt" }, + { 1, "hf waveshare help" }, + { 0, "hf waveshare loadbmp" }, + { 1, "hf xerox help" }, + { 0, "hf xerox info" }, + { 0, "hf xerox reader" }, + { 0, "hf xerox dump" }, + { 1, "hw help" }, + { 0, "hw break" }, + { 1, "hw connect" }, + { 0, "hw dbg" }, + { 0, "hw detectreader" }, + { 0, "hw fpgaoff" }, + { 0, "hw lcd" }, + { 0, "hw lcdreset" }, + { 0, "hw ping" }, + { 0, "hw readmem" }, + { 0, "hw reset" }, + { 0, "hw setlfdivisor" }, + { 0, "hw setmux" }, + { 0, "hw standalone" }, + { 0, "hw status" }, + { 0, "hw tearoff" }, + { 0, "hw tia" }, + { 1, "hw timeout" }, + { 0, "hw tune" }, + { 1, "hw version" }, + { 1, "lf help" }, + { 0, "lf config" }, + { 0, "lf cmdread" }, + { 0, "lf read" }, + { 1, "lf search" }, + { 0, "lf sim" }, + { 0, "lf simask" }, + { 0, "lf simfsk" }, + { 0, "lf simpsk" }, + { 0, "lf simbidir" }, + { 0, "lf sniff" }, + { 0, "lf tune" }, + { 1, "lf awid help" }, + { 1, "lf awid demod" }, + { 0, "lf awid reader" }, + { 0, "lf awid clone" }, + { 0, "lf awid sim" }, + { 0, "lf awid brute" }, + { 0, "lf awid watch" }, + { 1, "lf cotag help" }, + { 1, "lf cotag demod" }, + { 0, "lf cotag reader" }, + { 1, "lf destron help" }, + { 1, "lf destron demod" }, + { 0, "lf destron reader" }, + { 0, "lf destron clone" }, + { 0, "lf destron sim" }, + { 1, "lf em help" }, + { 1, "lf em 410x help" }, + { 1, "lf em 410x demod" }, + { 0, "lf em 410x reader" }, + { 0, "lf em 410x sim" }, + { 0, "lf em 410x brute" }, + { 0, "lf em 410x watch" }, + { 0, "lf em 410x spoof" }, + { 0, "lf em 410x clone" }, + { 1, "lf em 4x05 help" }, + { 0, "lf em 4x05 brute" }, + { 0, "lf em 4x05 chk" }, + { 1, "lf em 4x05 demod" }, + { 0, "lf em 4x05 dump" }, + { 0, "lf em 4x05 info" }, + { 0, "lf em 4x05 read" }, + { 1, "lf em 4x05 sniff" }, + { 0, "lf em 4x05 unlock" }, + { 0, "lf em 4x05 wipe" }, + { 0, "lf em 4x05 write" }, + { 1, "lf em 4x50 help" }, + { 0, "lf em 4x50 brute" }, + { 0, "lf em 4x50 chk" }, + { 0, "lf em 4x50 dump" }, + { 0, "lf em 4x50 info" }, + { 0, "lf em 4x50 login" }, + { 0, "lf em 4x50 rdbl" }, + { 0, "lf em 4x50 reader" }, + { 0, "lf em 4x50 restore" }, + { 0, "lf em 4x50 wrbl" }, + { 0, "lf em 4x50 wrpwd" }, + { 0, "lf em 4x50 wipe" }, + { 0, "lf em 4x50 eload" }, + { 0, "lf em 4x50 esave" }, + { 0, "lf em 4x50 eview" }, + { 0, "lf em 4x50 sim" }, + { 1, "lf em 4x70 help" }, + { 0, "lf em 4x70 brute" }, + { 0, "lf em 4x70 info" }, + { 0, "lf em 4x70 write" }, + { 0, "lf em 4x70 unlock" }, + { 0, "lf em 4x70 auth" }, + { 0, "lf em 4x70 writepin" }, + { 0, "lf em 4x70 writekey" }, + { 1, "lf fdxb help" }, + { 1, "lf fdxb demod" }, + { 0, "lf fdxb reader" }, + { 0, "lf fdxb clone" }, + { 0, "lf fdxb sim" }, + { 1, "lf gallagher help" }, + { 1, "lf gallagher demod" }, + { 0, "lf gallagher reader" }, + { 0, "lf gallagher clone" }, + { 0, "lf gallagher sim" }, + { 1, "lf gproxii help" }, + { 1, "lf gproxii demod" }, + { 0, "lf gproxii reader" }, + { 0, "lf gproxii clone" }, + { 0, "lf gproxii sim" }, + { 1, "lf hid help" }, + { 1, "lf hid demod" }, + { 0, "lf hid reader" }, + { 0, "lf hid clone" }, + { 0, "lf hid sim" }, + { 0, "lf hid brute" }, + { 0, "lf hid watch" }, + { 1, "lf hitag help" }, + { 0, "lf hitag eload" }, + { 1, "lf hitag list" }, + { 0, "lf hitag info" }, + { 0, "lf hitag reader" }, + { 0, "lf hitag sim" }, + { 0, "lf hitag sniff" }, + { 0, "lf hitag writer" }, + { 0, "lf hitag dump" }, + { 0, "lf hitag cc" }, + { 1, "lf idteck help" }, + { 1, "lf idteck demod" }, + { 0, "lf idteck reader" }, + { 0, "lf idteck clone" }, + { 0, "lf idteck sim" }, + { 1, "lf indala help" }, + { 0, "lf indala brute" }, + { 1, "lf indala demod" }, + { 1, "lf indala altdemod" }, + { 0, "lf indala reader" }, + { 0, "lf indala clone" }, + { 0, "lf indala sim" }, + { 1, "lf io help" }, + { 1, "lf io demod" }, + { 0, "lf io reader" }, + { 0, "lf io clone" }, + { 0, "lf io sim" }, + { 0, "lf io watch" }, + { 1, "lf jablotron help" }, + { 1, "lf jablotron demod" }, + { 0, "lf jablotron reader" }, + { 0, "lf jablotron clone" }, + { 0, "lf jablotron sim" }, + { 1, "lf keri help" }, + { 1, "lf keri demod" }, + { 0, "lf keri reader" }, + { 0, "lf keri clone" }, + { 0, "lf keri sim" }, + { 1, "lf motorola help" }, + { 1, "lf motorola demod" }, + { 0, "lf motorola reader" }, + { 0, "lf motorola clone" }, + { 0, "lf motorola sim" }, + { 1, "lf nedap help" }, + { 1, "lf nedap demod" }, + { 0, "lf nedap reader" }, + { 0, "lf nedap clone" }, + { 0, "lf nedap sim" }, + { 1, "lf nexwatch help" }, + { 1, "lf nexwatch demod" }, + { 0, "lf nexwatch reader" }, + { 0, "lf nexwatch clone" }, + { 0, "lf nexwatch sim" }, + { 1, "lf noralsy help" }, + { 1, "lf noralsy demod" }, + { 0, "lf noralsy reader" }, + { 0, "lf noralsy clone" }, + { 0, "lf noralsy sim" }, + { 1, "lf pac help" }, + { 1, "lf pac demod" }, + { 0, "lf pac reader" }, + { 0, "lf pac clone" }, + { 0, "lf pac sim" }, + { 1, "lf paradox help" }, + { 1, "lf paradox demod" }, + { 0, "lf paradox reader" }, + { 0, "lf paradox clone" }, + { 0, "lf paradox sim" }, + { 1, "lf pcf7931 help" }, + { 0, "lf pcf7931 reader" }, + { 0, "lf pcf7931 write" }, + { 1, "lf pcf7931 config" }, + { 1, "lf presco help" }, + { 1, "lf presco demod" }, + { 0, "lf presco reader" }, + { 0, "lf presco clone" }, + { 0, "lf presco sim" }, + { 1, "lf pyramid help" }, + { 1, "lf pyramid demod" }, + { 0, "lf pyramid reader" }, + { 0, "lf pyramid clone" }, + { 0, "lf pyramid sim" }, + { 1, "lf securakey help" }, + { 1, "lf securakey demod" }, + { 0, "lf securakey reader" }, + { 0, "lf securakey clone" }, + { 0, "lf securakey sim" }, + { 1, "lf ti help" }, + { 1, "lf ti demod" }, + { 0, "lf ti reader" }, + { 0, "lf ti write" }, + { 1, "lf t55xx help" }, + { 0, "lf t55xx clonehelp" }, + { 1, "lf t55xx config" }, + { 0, "lf t55xx dangerraw" }, + { 1, "lf t55xx detect" }, + { 0, "lf t55xx deviceconfig" }, + { 0, "lf t55xx dump" }, + { 1, "lf t55xx info" }, + { 0, "lf t55xx p1detect" }, + { 0, "lf t55xx read" }, + { 0, "lf t55xx resetread" }, + { 0, "lf t55xx restore" }, + { 1, "lf t55xx trace" }, + { 0, "lf t55xx wakeup" }, + { 0, "lf t55xx write" }, + { 0, "lf t55xx bruteforce" }, + { 0, "lf t55xx chk" }, + { 0, "lf t55xx protect" }, + { 0, "lf t55xx recoverpw" }, + { 1, "lf t55xx sniff" }, + { 0, "lf t55xx special" }, + { 0, "lf t55xx wipe" }, + { 1, "lf viking help" }, + { 1, "lf viking demod" }, + { 0, "lf viking reader" }, + { 0, "lf viking clone" }, + { 0, "lf viking sim" }, + { 1, "lf visa2000 help" }, + { 1, "lf visa2000 demod" }, + { 0, "lf visa2000 reader" }, + { 0, "lf visa2000 clone" }, + { 0, "lf visa2000 sim" }, + { 1, "mem help" }, + { 0, "mem baudrate" }, + { 0, "mem dump" }, + { 0, "mem info" }, + { 0, "mem load" }, + { 0, "mem wipe" }, + { 1, "mem spiffs help" }, + { 0, "mem spiffs copy" }, + { 0, "mem spiffs check" }, + { 0, "mem spiffs dump" }, + { 0, "mem spiffs info" }, + { 0, "mem spiffs mount" }, + { 0, "mem spiffs remove" }, + { 0, "mem spiffs rename" }, + { 0, "mem spiffs test" }, + { 0, "mem spiffs tree" }, + { 0, "mem spiffs unmount" }, + { 0, "mem spiffs upload" }, + { 0, "mem spiffs view" }, + { 0, "mem spiffs wipe" }, + { 1, "nfc help" }, + { 1, "nfc decode" }, + { 0, "nfc type1 read" }, + { 1, "nfc type1 help" }, + { 0, "nfc type2 read" }, + { 1, "nfc type2 help" }, + { 0, "nfc type4a format" }, + { 0, "nfc type4a read" }, + { 0, "nfc type4a write" }, + { 0, "nfc type4a st25taread" }, + { 1, "nfc type4a help" }, + { 0, "nfc type4b read" }, + { 1, "nfc type4b help" }, + { 0, "nfc mf cformat" }, + { 0, "nfc mf cread" }, + { 0, "nfc mf cwrite" }, + { 0, "nfc mf pread" }, + { 1, "nfc mf help" }, + { 0, "nfc barcode read" }, + { 0, "nfc barcode sim" }, + { 1, "nfc barcode help" }, + { 1, "piv help" }, + { 0, "piv select" }, + { 0, "piv getdata" }, + { 0, "piv authsign" }, + { 0, "piv scan" }, + { 1, "piv list" }, + { 1, "smart help" }, + { 1, "smart list" }, + { 0, "smart info" }, + { 0, "smart reader" }, + { 0, "smart raw" }, + { 1, "smart upgrade" }, + { 0, "smart setclock" }, + { 0, "smart brute" }, + { 1, "script help" }, + { 1, "script list" }, + { 1, "script run" }, + { 1, "trace help" }, + { 1, "trace extract" }, + { 1, "trace list" }, + { 1, "trace load" }, + { 1, "trace save" }, + { 1, "usart help" }, + { 0, "usart btpin" }, + { 0, "usart btfactory" }, + { 0, "usart tx" }, + { 0, "usart rx" }, + { 0, "usart txrx" }, + { 0, "usart txhex" }, + { 0, "usart rxhex" }, + { 0, "usart config" }, + { 1, "wiegand help" }, + { 1, "wiegand list" }, + { 1, "wiegand encode" }, + { 1, "wiegand decode" }, {0, NULL} }; @@ -799,4 +804,4 @@ const static vocabulory_t vocabulory[] = { } #endif -#endif +#endif \ No newline at end of file diff --git a/doc/commands.json b/doc/commands.json index 6523703da..0e64879e5 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -762,9 +762,9 @@ "offline": false, "options": [ "-h, --help This help", - "-k, -K, --keep Keep field ON for next command", - "-a, -A, --apdu Show APDU requests and responses", - "-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)" + "-k, --keep Keep field ON for next command", + "-a, --apdu Show APDU requests and responses", + "-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)" ], "usage": "emv challenge [-hkaw]" }, @@ -778,19 +778,19 @@ "offline": false, "options": [ "-h, --help This help", - "-s, -S, --select Activate field and select card", - "-a, -A, --apdu Show APDU requests and responses", - "-t, -T, --tlv TLV decode results", - "-j, -J, --jload Load transaction parameters from `emv_defparams.json` file", - "-f, -F, --forceaid Force search AID. Search AID instead of execute PPSE", + "-s, --select Activate field and select card", + "-a, --apdu Show APDU requests and responses", + "-t, --tlv TLV decode results", + "-j, --jload Load transaction parameters from `emv_defparams.json` file", + "--force Force search AID. Search AID instead of execute PPSE", "By default: Transaction type - MSD", - "-v, -V, --qvsdc Transaction type - qVSDC or M/Chip", - "-c, -C, --qvsdccda Transaction type - qVSDC or M/Chip plus CDA (SDAD generation)", - "-x, -X, --vsdc Transaction type - VSDC. For test only. Not a standard behavior", - "-g, -G, --acgpo VISA. generate AC from GPO", - "-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)" + "-v, --qvsdc Transaction type - qVSDC or M/Chip", + "-c, --qvsdccda Transaction type - qVSDC or M/Chip plus CDA (SDAD generation)", + "-x, --vsdc Transaction type - VSDC. For test only. Not a standard behavior", + "-g, --acgpo VISA. generate AC from GPO", + "-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)" ], - "usage": "emv exec [-hsatjfvcxgw] By default:" + "usage": "emv exec [-hsatjvcxgw] [--force] By default:" }, "emv genac": { "command": "emv genac", @@ -804,14 +804,14 @@ "offline": false, "options": [ "-h, --help This help", - "-k, -K, --keep Keep field ON for next command", - "-c, -C, --cda Executes CDA transaction. Needs to get SDAD in results.", - "-d, -D, --decision Terminal decision. aac - declined, tc - approved, arqc - online authorisation requested", - "-p, -P, --params Load parameters from `emv_defparams.json` file for CDOLdata making from CDOL and parameters", - "-m, -M, --make Make CDOLdata from CDOL (tag 8C and 8D) and parameters (def: use default parameters)", - "-a, -A, --apdu Show APDU requests and responses", - "-t, -T, --tlv TLV decode results of selected applets", - "-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", + "-k, --keep Keep field ON for next command", + "-c, --cda Executes CDA transaction. Needs to get SDAD in results.", + "-d, --decision Terminal decision. aac - declined, tc - approved, arqc - online authorisation requested", + "-p, --params Load parameters from `emv_defparams.json` file for CDOLdata making from CDOL and parameters", + "-m, --make Make CDOLdata from CDOL (tag 8C and 8D) and parameters (def: use default parameters)", + "-a, --apdu Show APDU requests and responses", + "-t, --tlv TLV decode results of selected applets", + "-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", " CDOLdata/CDOL" ], "usage": "emv genac [-hkcpmatw] [-d ] []..." @@ -827,12 +827,12 @@ "offline": false, "options": [ "-h, --help This help", - "-k, -K, --keep Keep field ON for next command", - "-p, -P, --params Load parameters from `emv_defparams.json` file for PDOLdata making from PDOL and parameters", - "-m, -M, --make Make PDOLdata from PDOL (tag 9F38) and parameters (def: uses default parameters)", - "-a, -A, --apdu Show APDU requests and responses", - "-t, -T, --tlv TLV decode results of selected applets", - "-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", + "-k, --keep Keep field ON for next command", + "-p, --params Load parameters from `emv_defparams.json` file for PDOLdata making from PDOL and parameters", + "-m, --make Make PDOLdata from PDOL (tag 9F38) and parameters (def: uses default parameters)", + "-a, --apdu Show APDU requests and responses", + "-t, --tlv TLV decode results of selected applets", + "-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", " PDOLdata/PDOL" ], "usage": "emv gpo [-hkpmatw] []..." @@ -848,12 +848,12 @@ "offline": false, "options": [ "-h, --help This help", - "-k, -K, --keep Keep field ON for next command", - "-p, -P, --params Load parameters from `emv_defparams.json` file for DDOLdata making from DDOL and parameters", - "-m, -M, --make Make DDOLdata from DDOL (tag 9F49) and parameters (def: use default parameters)", - "-a, -A, --apdu Show APDU requests and responses", - "-t, -T, --tlv TLV decode results of selected applets", - "-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", + "-k, --keep Keep field ON for next command", + "-p, --params Load parameters from `emv_defparams.json` file for DDOLdata making from DDOL and parameters", + "-m, --make Make DDOLdata from DDOL (tag 9F49) and parameters (def: use default parameters)", + "-a, --apdu Show APDU requests and responses", + "-t, --tlv TLV decode results of selected applets", + "-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", " DDOLdata/DDOL" ], "usage": "emv intauth [-hkpmatw] []..." @@ -889,16 +889,31 @@ "offline": false, "options": [ "-h, --help This help", - "-s, -S, --select Activate field and select card", - "-k, -K, --keep Keep field ON for next command", + "-s, --select Activate field and select card", + "-k, --keep Keep field ON for next command", "-1, --pse PSE (1PAY.SYS.DDF01) mode", "-2, --ppse PPSE (2PAY.SYS.DDF01) mode (def)", - "-a, -A, --apdu Show APDU requests and responses", - "-t, -T, --tlv TLV decode results of selected applets", - "-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)" + "-a, --apdu Show APDU requests and responses", + "-t, --tlv TLV decode results of selected applets", + "-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)" ], "usage": "emv pse [-hsk12atw]" }, + "emv reader": { + "command": "emv reader", + "description": "Act as a EMV reader to identify tag. Look for EMV tags until Enter or the pm3 button is pressed", + "notes": [ + "emv reader", + "emv reader -@ -> Continuous mode" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", + "-@ continuous reader mode" + ], + "usage": "emv reader [-hw@]" + }, "emv readrec": { "command": "emv readrec", "description": "Executes Read Record command. It returns data in TLV format. Needs a bank applet to be selected and sometimes needs GPO to be executed.", @@ -909,10 +924,10 @@ "offline": false, "options": [ "-h, --help This help", - "-k, -K, --keep Keep field ON for next command", - "-a, -A, --apdu Show APDU requests and responses", - "-t, -T, --tlv TLV decode results of selected applets", - "-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", + "-k, --keep Keep field ON for next command", + "-a, --apdu Show APDU requests and responses", + "-t, --tlv TLV decode results of selected applets", + "-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", " []..." @@ -927,9 +942,9 @@ "offline": false, "options": [ "-h, --help This help", - "-t, -T, --selftest Self test", - "-a, -A, --apdu Show APDU requests and responses", - "-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)" + "-t, --selftest Self test", + "-a, --apdu Show APDU requests and responses", + "-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)" ], "usage": "emv roca [-htaw]" }, @@ -943,18 +958,18 @@ "offline": false, "options": [ "-h, --help This help", - "-a, -A, --apdu Show APDU requests and responses", - "-t, -T, --tlv TLV decode results", - "-e, -E, --extract Extract TLV elements and fill Application Data", - "-j, -J, --jload Load transaction parameters from `emv_defparams.json` file", + "-a, --apdu Show APDU requests and responses", + "-t, --tlv TLV decode results", + "-e, --extract Extract TLV elements and fill Application Data", + "-j, --jload Load transaction parameters from `emv_defparams.json` file", "By default: Transaction type - MSD", - "-v, -V, --qvsdc Transaction type - qVSDC or M/Chip", - "-c, -C, --qvsdccda Transaction type - qVSDC or M/Chip plus CDA (SDAD generation)", - "-x, -X, --vsdc Transaction type - VSDC. For test only. Not a standard behavior", - "-g, -G, --acgpo VISA. generate AC from GPO", - "-m, -M, --merge Merge output file with card's data. (warning: the file may be corrupted!)", - "-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", - " JSON output filename" + "-v, --qvsdc Transaction type - qVSDC or M/Chip", + "-c, --qvsdccda Transaction type - qVSDC or M/Chip plus CDA (SDAD generation)", + "-x, --vsdc Transaction type - VSDC. For test only. Not a standard behavior", + "-g, --acgpo VISA. generate AC from GPO", + "-m, --merge Merge output file with card's data. (warning: the file may be corrupted!)", + "-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", + " JSON output file name" ], "usage": "emv scan [-hatejvcxgmw] By default: " }, @@ -968,11 +983,11 @@ "offline": false, "options": [ "-h, --help This help", - "-s, -S, --select Activate field and select card", - "-k, -K, --keep Keep field ON for next command", - "-a, -A, --apdu Show APDU requests and responses", - "-t, -T, --tlv TLV decode results of selected applets", - "-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)" + "-s, --select Activate field and select card", + "-k, --keep Keep field ON for next command", + "-a, --apdu Show APDU requests and responses", + "-t, --tlv TLV decode results of selected applets", + "-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)" ], "usage": "emv search [-hskatw]" }, @@ -986,11 +1001,11 @@ "offline": false, "options": [ "-h, --help This help", - "-s, -S, --select Activate field and select card", - "-k, -K, --keep Keep field for next command", - "-a, -A, --apdu Show APDU requests and responses", - "-t, -T, --tlv TLV decode results", - "-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", + "-s, --select Activate field and select card", + "-k, --keep Keep field for next command", + "-a, --apdu Show APDU requests and responses", + "-t, --tlv TLV decode results", + "-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", " Applet AID" ], "usage": "emv select [-hskatw] " @@ -7091,6 +7106,39 @@ ], "usage": "hf tune [-h] [-n ] [--bar] [--mix] [--value]" }, + "hf vas decrypt": { + "command": "hf vas decrypt", + "description": "Decrypt a previously captured cryptogram", + "notes": [ + "hf vas decrypt --pid pass.com.passkit.pksamples.nfcdemo -f vas_privkey.der -d c0b77375eae416b79449347f9fe838c05cdb57dc7470b97b93b806cb348771d9bfbe29d58538c7c7d7c3d015fa205b68bfccd726058a62f7f44085ac98dbf877120fd9059f1507b956e0a6d56d0a" + ], + "offline": true, + "options": [ + "-h, --help This help", + "--pid PID, pass type id", + "-f, --file path to terminal private key file", + "-d, --data cryptogram to decrypt" + ], + "usage": "hf vas decrypt [-h] [--pid ] [-f ] [-d ]" + }, + "hf vas reader": { + "command": "hf vas reader", + "description": "Read and decrypt Value Added Services (VAS) message", + "notes": [ + "hf vas reader --url https://example.com -> URL Only mode", + "hf vas reader --pid pass.com.passkit.pksamples.nfcdemo -f vas_privkey.der -@" + ], + "offline": false, + "options": [ + "-h, --help This help", + "--pid PID, pass type id", + "-f, --file path to terminal private key file", + "--url a URL to provide to the mobile device", + "-@ continuous mode", + "-v, --verbose log additional information" + ], + "usage": "hf vas reader [-h@v] [--pid ] [-f ] [--url ]" + }, "hf waveshare loadbmp": { "command": "hf waveshare loadbmp", "description": "Load BMP file to Waveshare NFC ePaper.", @@ -7391,6 +7439,21 @@ ], "usage": "hw tia [-h]" }, + "hw timeout": { + "command": "hw timeout", + "description": "Set the communication timeout on the client side", + "notes": [ + "hw timeout -> Show current timeout", + "hw timeout -t 20 -> Set the timeout to 20ms", + "hw timeout -t 500 -> Set the timeout to 500ms" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-t, --timeout timeout in ms" + ], + "usage": "hw timeout [-h] [-t ]" + }, "hw tune": { "command": "hw tune", "description": "Measure antenna tuning", @@ -11622,8 +11685,8 @@ } }, "metadata": { - "commands_extracted": 675, + "commands_extracted": 679, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-06-27T13:20:13" + "extracted_on": "2023-07-10T14:40:45" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index a27cf6964..ce203b57a 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -141,19 +141,20 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`emv help `|Y |`This help` +|`emv list `|Y |`List ISO7816 history` +|`emv test `|Y |`Crypto logic test` +|`emv challenge `|N |`Generate challenge` |`emv exec `|N |`Executes EMV contactless transaction` +|`emv genac `|N |`Generate ApplicationCryptogram` +|`emv gpo `|N |`Execute GetProcessingOptions` +|`emv intauth `|N |`Internal authentication` |`emv pse `|N |`Execute PPSE. It selects 2PAY.SYS.DDF01 or 1PAY.SYS.DDF01 directory` +|`emv reader `|N |`Act like an EMV reader` +|`emv readrec `|N |`Read files from card` +|`emv roca `|N |`Extract public keys and run ROCA test` +|`emv scan `|N |`Scan EMV card and save it contents to json file for emulator` |`emv search `|N |`Try to select all applets from applets list and print installed applets` |`emv select `|N |`Select applet` -|`emv gpo `|N |`Execute GetProcessingOptions` -|`emv readrec `|N |`Read files from card` -|`emv genac `|N |`Generate ApplicationCryptogram` -|`emv challenge `|N |`Generate challenge` -|`emv intauth `|N |`Internal authentication` -|`emv scan `|N |`Scan EMV card and save it contents to json file for emulator` -|`emv test `|Y |`Crypto logic test` -|`emv list `|Y |`List ISO7816 history` -|`emv roca `|N |`Extract public keys and run ROCA test` ### hf @@ -482,7 +483,7 @@ Check column "offline" for their availability. |`hf mf nack `|N |`Test for MIFARE NACK bug` |`hf mf chk `|N |`Check keys` |`hf mf fchk `|N |`Check keys fast, targets all keys on card` -|`hf mf decrypt `|Y |`[nt] [ar_enc] [at_enc] [data] - to decrypt sniff or trace` +|`hf mf decrypt `|Y |`Decrypt Crypto1 data from sniff or trace` |`hf mf supercard `|N |`Extract info from a `super card`` |`hf mf auth4 `|N |`ISO14443-4 AES authentication` |`hf mf acl `|Y |`Decode and print MIFARE Classic access rights bytes` @@ -720,16 +721,15 @@ Check column "offline" for their availability. |`hf topaz wrbl `|N |`Write block` -### hf xerox +### hf vas - { Fuji/Xerox cartridge RFIDs... } + { Apple Value Added Service } |command |offline |description |------- |------- |----------- -|`hf xerox help `|Y |`This help` -|`hf xerox info `|N |`Short info on Fuji/Xerox tag` -|`hf xerox reader `|N |`Act like a Fuji/Xerox reader` -|`hf xerox dump `|N |`Read all memory pages of an Fuji/Xerox tag, save to file` +|`hf vas help `|Y |`This help` +|`hf vas reader `|N |`Read and decrypt VAS message` +|`hf vas decrypt `|Y |`Decrypt a previously captured VAS cryptogram` ### hf waveshare @@ -742,6 +742,18 @@ Check column "offline" for their availability. |`hf waveshare loadbmp `|N |`Load BMP file to Waveshare NFC ePaper` +### hf xerox + + { Fuji/Xerox cartridge RFIDs... } + +|command |offline |description +|------- |------- |----------- +|`hf xerox help `|Y |`This help` +|`hf xerox info `|N |`Short info on Fuji/Xerox tag` +|`hf xerox reader `|N |`Act like a Fuji/Xerox reader` +|`hf xerox dump `|N |`Read all memory pages of an Fuji/Xerox tag, save to file` + + ### hw { Hardware commands... } @@ -765,6 +777,7 @@ Check column "offline" for their availability. |`hw status `|N |`Show runtime status information about the connected Proxmark3` |`hw tearoff `|N |`Program a tearoff hook for the next command supporting tearoff` |`hw tia `|N |`Trigger a Timing Interval Acquisition to re-adjust the RealTimeCounter divider` +|`hw timeout `|Y |`Set the communication timeout on the client side` |`hw tune `|N |`Measure antenna tuning` |`hw version `|Y |`Show version information about the client and the connected Proxmark3, if any` From 8550689c37cba66c6ed0186f6110b5cf13371ca5 Mon Sep 17 00:00:00 2001 From: Iceman Date: Mon, 10 Jul 2023 16:44:14 +0200 Subject: [PATCH 0161/1034] Update emv_notes.md Signed-off-by: Iceman --- doc/emv_notes.md | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/doc/emv_notes.md b/doc/emv_notes.md index 60f85ebb8..cd03e5d21 100644 --- a/doc/emv_notes.md +++ b/doc/emv_notes.md @@ -65,14 +65,14 @@ They can be implemented, but it needs to know issuer's card keys (usually 3DES) All this commands are parts of command `emv exec`. command `emv exec` executes EMV transaction. it have parameters: ``` - -j, -J, --jload Load transaction parameters from `emv/defparams.json` file. - -f, -F, --forceaid Force search AID. Search AID instead of execute PPSE. - By default: Transaction type - MSD - -v, -V, --qvsdc Transaction type - qVSDC or M/Chip. - -c, -C, --qvsdccda Transaction type - qVSDC or M/Chip plus CDA (SDAD generation). - -x, -X, --vsdc Transaction type - VSDC. - -g, -G, --acgpo VISA. generate AC from GPO. - -w, -W, --wired Send data via contact (iso7816) interface. Contactless interface set by default. + -j, --jload Load transaction parameters from `emv/defparams.json` file. + --forceaid Force search AID. Search AID instead of execute PPSE. + By default: Transaction type - MSD + -v, --qvsdc Transaction type - qVSDC or M/Chip. + -c, --qvsdccda Transaction type - qVSDC or M/Chip plus CDA (SDAD generation). + -x, --vsdc Transaction type - VSDC. + -g, --acgpo VISA. generate AC from GPO. + -w, --wired Send data via contact (iso7816) interface. Contactless interface set by default. ``` It works for VISA(r) and Mastercard(r) transactions. It may work with other EMV payment system's card (and it works in general cases that is described in EMV). @@ -96,19 +96,23 @@ MSD - compatibility mode. Now it work always. But it less secure and in near fut ^[Top](#top) ``` -exec Executes EMV contactless transaction. -pse Execute PPSE. It selects 2PAY.SYS.DDF01 or 1PAY.SYS.DDF01 directory. -search Try to select all applets from applets list and print installed applets. -select Select applet. -gpo Execute GetProcessingOptions. -readrec Read files from card. -genac Generate ApplicationCryptogram. -challenge Generate challenge. -intauth Internal authentication. -scan Scan EMV card and save it contents to json file for emulator. -test Crypto logic test. +----------- ----------------------- general ----------------------- +help This help list List ISO7816 history +test Crypto logic test +----------- ---------------------- operations --------------------- +challenge Generate challenge +exec Executes EMV contactless transaction +genac Generate ApplicationCryptogram +gpo Execute GetProcessingOptions +intauth Internal authentication +pse Execute PPSE. It selects 2PAY.SYS.DDF01 or 1PAY.SYS.DDF01 directory +reader Act like an EMV reader +readrec Read files from card roca Extract public keys and run ROCA test +scan Scan EMV card and save it contents to json file for emulator +search Try to select all applets from applets list and print installed applets +select Select applet ``` All main commands are parts of EMV specification. Commands than not described there: From aa7a0b7eddbcc46e28d132d091935eb58f2400bc Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 10 Jul 2023 17:22:16 +0200 Subject: [PATCH 0162/1034] coverty fixes.. those are not pointers to pointer.. --- client/src/emv/cmdemv.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 87ebd4930..1f57acbb1 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -87,7 +87,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) { if (prefname_full != NULL) { const struct tlv *prefname_tlv = tlvdb_get_tlv(prefname_full); if (prefname_tlv->len) { - char *name[64] = {0}; + char name[64] = {0}; size_t n = MIN(sizeof(name), prefname_tlv->len); memcpy(name, prefname_tlv->value, n); PrintAndLogEx(INFO, "Application.......... " _YELLOW_("%s"), name); @@ -99,7 +99,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) { if (alabel != NULL) { const struct tlv *alabel_tlv = tlvdb_get_tlv(alabel); if (alabel_tlv->len) { - char *name[64] = {0}; + char name[64] = {0}; size_t n = MIN(sizeof(name), alabel_tlv->len); memcpy(name, alabel_tlv->value, n); PrintAndLogEx(INFO, "Label................ " _YELLOW_("%s"), name); @@ -111,7 +111,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) { if (lang_full != NULL) { const struct tlv *lang_tlv = tlvdb_get_tlv(lang_full); if (lang_tlv->len) { - char *lang[16] = {0}; + char lang[16] = {0}; size_t n = MIN(sizeof(lang), lang_tlv->len); memcpy(lang, lang_tlv->value, n); PrintAndLogEx(INFO, "Language............. " _YELLOW_("%s"), lang); From 503ccbe6a250cf6544a23a383497652c056e9e2b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 10 Jul 2023 20:23:04 +0200 Subject: [PATCH 0163/1034] helptext --- client/src/cmdhffido.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhffido.c b/client/src/cmdhffido.c index 64cc8a43f..a8021e4cf 100644 --- a/client/src/cmdhffido.c +++ b/client/src/cmdhffido.c @@ -97,14 +97,14 @@ static int CmdHFFidoInfo(const char *Cmd) { if (!strncmp((char *)buf, "U2F_V2", 7)) { if (!strncmp((char *)buf, "FIDO_2_0", 8)) { - PrintAndLogEx(INFO, "FIDO2 authenticator detected. Version: %.*s", (int)len, buf); + PrintAndLogEx(INFO, "FIDO2 authenticator detected. Version... " _YELLOW_("%.*s"), (int)len, buf); } else { PrintAndLogEx(INFO, "FIDO authenticator detected (not standard U2F)."); PrintAndLogEx(INFO, "Non U2F authenticator version:"); print_buffer((const unsigned char *)buf, len, 1); } } else { - PrintAndLogEx(INFO, "FIDO U2F authenticator detected. Version: %.*s", (int)len, buf); + PrintAndLogEx(INFO, "FIDO U2F authenticator detected. Version... " _YELLOW_("%.*s"), (int)len, buf); } res = FIDO2GetInfo(buf, sizeof(buf), &len, &sw); @@ -409,8 +409,8 @@ static int CmdHFFidoAuthenticate(const char *cmd) { "hf fido auth --kh 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f -> execute command with 2 parameters, filled 0x00 and key handle\n" "hf fido auth \n" "--kh 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f\n" - "--cp 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f \n" - "--ap 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f -> execute command with parameters"); + "--cpx 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f \n" + "--apx 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f -> execute command with parameters"); void *argtable[] = { arg_param_begin, From a32b7b72727ffe5a9d8e9043dd184a592a40182b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 10 Jul 2023 20:33:52 +0200 Subject: [PATCH 0164/1034] style --- doc/commands.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/commands.json b/doc/commands.json index 0e64879e5..d4cbf628a 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -11687,6 +11687,6 @@ "metadata": { "commands_extracted": 679, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-10T14:40:45" + "extracted_on": "2023-07-10T18:33:37" } } \ No newline at end of file From 4ffb779b40b262ceee275cb90fd343861877e937 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 11 Jul 2023 08:26:58 +0200 Subject: [PATCH 0165/1034] added a track1 decoder --- CHANGELOG.md | 1 + client/src/emv/cmdemv.c | 75 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 69 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed09b06ec..3e05dc1a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `emv reader -v` - now can decode track1 data if found (@iceman1001) - Added `emv reader` - act as a EMV reader (@iceman1001) - Added support for Apple Wallet NFC Passes with the Value Added Services protocol implementation (@gm3197) - Fix compiling liblua on iOS (@The-SamminAter) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 1f57acbb1..169c24b69 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -75,7 +75,67 @@ static void PrintChannel(Iso7816CommandChannel channel) { } } -static int emv_parse_card_details(uint8_t *response, size_t reslen) { +static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ + if (d == NULL || n < 10) { + return PM3_EINVARG; + } + if (verbose == false) { + return PM3_SUCCESS; + } + + // sanity checks + if (d[0] != 'B') { + return PM3_EINVARG; + } + + // decoder + char delim[2] = "^"; + char *tmp = str_ndup((const char*)d, n); + + uint8_t i = 0; + char *token = strtok(tmp, delim); + while (token != NULL) { + + switch(i) { + case 0: + PrintAndLogEx(INFO, "PAN............ %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", + token[1], token[2],token[3], token[4], + token[5], token[6],token[7], token[8], + token[9], token[10],token[11], token[12], + token[13], token[14],token[15], token[16] + ); + break; + case 1: + PrintAndLogEx(INFO, "CardHolder..... %s", token); + break; + case 2: + if (strlen(token) < 17) { + break; + } + PrintAndLogEx(INFO, "Expiry date.... %.*s", 4, token); + token += 4; + + PrintAndLogEx(INFO, "Service code... %.*s", 3, token); + token += 3; + + PrintAndLogEx(INFO, "Unknown........ %.*s", 4, token); + token += 4; + + PrintAndLogEx(INFO, "CVV / iCvv..... %.*s", 3, token); + token +=3; + + PrintAndLogEx(INFO, "Trailing....... %s", token); + break; + default: + break; + } + token = strtok(0, delim); + i++; + } + return PM3_SUCCESS; +} + +static int emv_parse_card_details(uint8_t *response, size_t reslen, bool verbose) { struct tlvdb *root = tlvdb_parse_multi(response, reslen); if (root == NULL) { @@ -196,6 +256,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) { const struct tlv *track1_tlv = tlvdb_get_tlv(track1_full); if (track1_tlv->len) { PrintAndLogEx(INFO, "Track 1.............. " _YELLOW_("%s"), sprint_ascii(track1_tlv->value, track1_tlv->len)); + emv_parse_track1(track1_tlv->value, track1_tlv->len, verbose); } } @@ -2282,6 +2343,7 @@ static int CmdEMVReader(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_lit0("w", "wired", "Send data via contact (iso7816) interface. (def: Contactless interface)"), + arg_lit0("v", "verbose", "verbose"), arg_lit0("@", NULL, "continuous reader mode"), arg_param_end }; @@ -2293,15 +2355,14 @@ static int CmdEMVReader(const char *Cmd) { } uint8_t psenum = (channel == CC_CONTACT) ? 1 : 2; - - bool continuous = arg_get_lit(ctx, 2); + bool verbose = arg_get_lit(ctx, 2); + bool continuous = arg_get_lit(ctx, 3); CLIParserFree(ctx); if (continuous) { PrintAndLogEx(INFO, "Press " _GREEN_("Enter") " to exit"); } - uint8_t AID[APDU_AID_LEN] = {0}; size_t AIDlen = 0; uint8_t buf[APDU_RES_LEN] = {0}; @@ -2353,7 +2414,7 @@ static int CmdEMVReader(const char *Cmd) { } // decode application parts - emv_parse_card_details(buf, len); + emv_parse_card_details(buf, len, verbose); for (TransactionType_t tt = TT_MSD; tt < TT_END; tt++) { @@ -2383,7 +2444,7 @@ static int CmdEMVReader(const char *Cmd) { ProcessGPOResponseFormat1(tlvRoot, buf, len, false); - emv_parse_card_details(buf, len); + emv_parse_card_details(buf, len, verbose); if (tlvdb_get(tlvRoot, 0x77, NULL)) { break; @@ -2412,7 +2473,7 @@ static int CmdEMVReader(const char *Cmd) { if (res) { continue; } - emv_parse_card_details(buf, len); + emv_parse_card_details(buf, len, verbose); } } } From 6f29aa6d8f44816f2c2eda85125e8477f9006dce Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 11 Jul 2023 08:56:45 +0200 Subject: [PATCH 0166/1034] added a track2 decoder. Seems to have odd delimiters and in hex format. Most likely to be problematic when tested against plenty different types --- CHANGELOG.md | 2 +- client/src/emv/cmdemv.c | 66 ++++++++++++++++++++++++++++++++++------- 2 files changed, 57 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e05dc1a6..56daf055e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Changed `emv reader -v` - now can decode track1 data if found (@iceman1001) + - Changed `emv reader -v` - now can decode track1/2 data if found (@iceman1001) - Added `emv reader` - act as a EMV reader (@iceman1001) - Added support for Apple Wallet NFC Passes with the Value Added Services protocol implementation (@gm3197) - Fix compiling liblua on iOS (@The-SamminAter) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 169c24b69..e1518971b 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -89,16 +89,15 @@ static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ } // decoder - char delim[2] = "^"; char *tmp = str_ndup((const char*)d, n); - uint8_t i = 0; + char delim[2] = "^"; char *token = strtok(tmp, delim); while (token != NULL) { switch(i) { case 0: - PrintAndLogEx(INFO, "PAN............ %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", + PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", token[1], token[2],token[3], token[4], token[5], token[6],token[7], token[8], token[9], token[10],token[11], token[12], @@ -106,25 +105,25 @@ static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ ); break; case 1: - PrintAndLogEx(INFO, "CardHolder..... %s", token); + PrintAndLogEx(INFO, "CardHolder............... %s", token); break; case 2: - if (strlen(token) < 17) { + if (strlen(token) < 14) { break; } - PrintAndLogEx(INFO, "Expiry date.... %.*s", 4, token); + PrintAndLogEx(INFO, "Expiry date.............. %.*s ( %c%c/%c%c )", 4, token, token[2], token[3], token[0], token[1]); token += 4; - PrintAndLogEx(INFO, "Service code... %.*s", 3, token); + PrintAndLogEx(INFO, "Service code............. %.*s", 3, token); token += 3; - PrintAndLogEx(INFO, "Unknown........ %.*s", 4, token); + PrintAndLogEx(INFO, "Unknown.................. %.*s", 4, token); token += 4; - PrintAndLogEx(INFO, "CVV / iCvv..... %.*s", 3, token); + PrintAndLogEx(INFO, "CVV / iCvv............... %.*s", 3, token); token +=3; - PrintAndLogEx(INFO, "Trailing....... %s", token); + PrintAndLogEx(INFO, "Trailing................. %s", token); break; default: break; @@ -132,6 +131,51 @@ static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ token = strtok(0, delim); i++; } + free(tmp); + return PM3_SUCCESS; +} + +static int emv_parse_track2(const uint8_t *d, size_t n, bool verbose) { + if (d == NULL || n < 10) { + return PM3_EINVARG; + } + if (verbose == false) { + return PM3_SUCCESS; + } + + // decoder + uint8_t s[80] = {0}; + hex_to_buffer(s, d, n, n, 0, 0, true); + uint8_t *tmp = s; + + if (tmp[0] == ';') + tmp++; + + PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", + tmp[0], tmp[1], tmp[2],tmp[3], + tmp[4], tmp[5], tmp[6],tmp[7], + tmp[8], tmp[9], tmp[10],tmp[11], + tmp[12],tmp[13], tmp[14],tmp[15] + ); + tmp += 16; + + if (tmp[0] == '=' || tmp[0] == 'D') + tmp++; + + PrintAndLogEx(INFO, "Expiry date.............. %.*s ( %c%c/%c%c )", 4, tmp, tmp[2], tmp[3], tmp[0], tmp[1]); + tmp += 4; + + PrintAndLogEx(INFO, "Service code............. %.*s", 3, tmp); + tmp += 3; + + PrintAndLogEx(INFO, "Pin verification value... %.*s", 4, tmp); + tmp += 4; + + PrintAndLogEx(INFO, "CVV / iCvv............... %.*s", 3, tmp); + tmp +=3; + + PrintAndLogEx(INFO, "Trailing................. %s", tmp); + return PM3_SUCCESS; } @@ -266,6 +310,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen, bool verbose const struct tlv *track2_tlv = tlvdb_get_tlv(track2_full); if (track2_tlv->len) { PrintAndLogEx(INFO, "Track 2.............. " _YELLOW_("%s"), sprint_hex_inrow(track2_tlv->value, track2_tlv->len)); + emv_parse_track2(track2_tlv->value, track2_tlv->len, verbose); } } @@ -275,6 +320,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen, bool verbose const struct tlv *track2_eq_tlv = tlvdb_get_tlv(track2_eq_full); if (track2_eq_tlv->len) { PrintAndLogEx(INFO, "Track 2 equivalent... " _YELLOW_("%s"), sprint_hex_inrow(track2_eq_tlv->value, track2_eq_tlv->len)); + emv_parse_track2(track2_eq_tlv->value, track2_eq_tlv->len, verbose); } } From 33d90993e32992434ac17038cab5f00a77d1ca83 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 11 Jul 2023 14:39:13 +0200 Subject: [PATCH 0167/1034] more bluetooth simple pairing options. No decoder yet. --- client/src/nfc/ndef.c | 49 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index e03913fbc..3e2e1973f 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -32,12 +32,16 @@ #define STRBOOL(p) ((p) ? "1" : "0") -#define NDEF_WIFIAPPL_WSC "application/vnd.wfa.wsc" -#define NDEF_WIFIAPPL_P2P "application/vnd.wfa.p2p" -#define NDEF_BLUEAPPL "application/vnd.bluetooth" -#define NDEF_JSONAPPL "application/json" -#define NDEF_VCARDTEXT "text/vcard" -#define NDEF_XVCARDTEXT "text/x-vcard" +#define NDEF_WIFIAPPL_WSC "application/vnd.wfa.wsc" +#define NDEF_WIFIAPPL_P2P "application/vnd.wfa.p2p" +#define NDEF_JSONAPPL "application/json" +#define NDEF_VCARDTEXT "text/vcard" +#define NDEF_XVCARDTEXT "text/x-vcard" + +#define NDEF_BLUEAPPL_EP "application/vnd.bluetooth.ep.oob" +#define NDEF_BLUEAPPL_LE "application/vnd.bluetooth.le.oob" +#define NDEF_BLUEAPPL_SECURE_LE "application/vnd.bluetooth.secure.le.oob" + static const char *TypeNameFormat_s[] = { "Empty Record", @@ -854,6 +858,26 @@ static int ndefDecodeMime_json(NDEFHeader_t *ndef) { return PM3_SUCCESS; } +static int ndefDecodeMime_bt_secure_le_oob(NDEFHeader_t *ndef) { + if (ndef->PayloadLen == 0) { + PrintAndLogEx(INFO, "no payload"); + return PM3_SUCCESS; + } + PrintAndLogEx(INFO, "Type............ " _YELLOW_("%.*s"), (int)ndef->TypeLen, ndef->Type); + PrintAndLogEx(INFO, "To be implemented. Feel free to contribute!"); + return PM3_SUCCESS; +} + +static int ndefDecodeMime_bt_le_oob(NDEFHeader_t *ndef) { + if (ndef->PayloadLen == 0) { + PrintAndLogEx(INFO, "no payload"); + return PM3_SUCCESS; + } + PrintAndLogEx(INFO, "Type............ " _YELLOW_("%.*s"), (int)ndef->TypeLen, ndef->Type); + PrintAndLogEx(INFO, "To be implemented. Feel free to contribute!"); + return PM3_SUCCESS; +} + static int ndefDecodeMime_bt(NDEFHeader_t *ndef) { if (ndef->PayloadLen == 0) { PrintAndLogEx(INFO, "no payload"); @@ -1023,9 +1047,18 @@ static int ndefDecodePayload(NDEFHeader_t *ndef, bool verbose) { if (str_startswith(begin, NDEF_VCARDTEXT) || str_startswith(begin, NDEF_XVCARDTEXT)) { ndefDecodeMime_vcard(ndef); } - if (str_startswith(begin, NDEF_BLUEAPPL)) { - ndefDecodeMime_bt(ndef); + + + if (str_startswith(begin, NDEF_BLUEAPPL_EP)) { + ndefDecodeMime_bt(ndef); } + if (str_startswith(begin, NDEF_BLUEAPPL_SECURE_LE)) { + ndefDecodeMime_bt_secure_le_oob(ndef); + } + if (str_startswith(begin, NDEF_BLUEAPPL_LE)) { + ndefDecodeMime_bt_le_oob(ndef); + } + if (str_startswith(begin, NDEF_JSONAPPL)) { ndefDecodeMime_json(ndef); } From 7028944ee03e5091dda48e2a2e1464623b7500ae Mon Sep 17 00:00:00 2001 From: Grayson Martin Date: Tue, 11 Jul 2023 10:55:43 -0500 Subject: [PATCH 0168/1034] Begin cmd --- client/src/cmdsmartcard.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index 9c273739d..e14bb35e5 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -1145,10 +1145,28 @@ static int CmdSmartBruteforceSFI(const char *Cmd) { return PM3_SUCCESS; } +static int CmdRelay(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "smart relay", + "Turn pm3 into pcsc reader and relay to host OS via vpcd", + "smart relay" + ); + + void *argtable[] = { + arg_param_begin, + arg_str1("p", "port", "", "vpcd socket port (default: 35963)"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + + CLIParserFree(ctx); +} + static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, {"list", CmdSmartList, AlwaysAvailable, "List ISO 7816 history"}, {"info", CmdSmartInfo, IfPm3Smartcard, "Tag information"}, + {"relay", CmdRelay, IfPm3Iso14443a, "Turn pm3 into pcsc reader and relay to host OS via vpcd"}, {"reader", CmdSmartReader, IfPm3Smartcard, "Act like an IS07816 reader"}, {"raw", CmdSmartRaw, IfPm3Smartcard, "Send raw hex data to tag"}, {"upgrade", CmdSmartUpgrade, AlwaysAvailable, "Upgrade sim module firmware"}, From 57945c521351da3d49f8ccc65343af68f08ad959 Mon Sep 17 00:00:00 2001 From: Roman D Date: Tue, 11 Jul 2023 19:04:15 +0300 Subject: [PATCH 0169/1034] Implement uncompressed hardnested tables loader --- client/src/cmdhfmfhard.c | 61 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index c885e41c9..9ae2e42e4 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -52,6 +52,7 @@ #define STATE_FILES_DIRECTORY "hardnested_tables/" #define STATE_FILE_TEMPLATE "bitflip_%d_%03" PRIx16 "_states.bin.bz2" +#define STATE_FILE_TEMPLATE_RAW "bitflip_%d_%03" PRIx16 "_states.bin" #define DEBUG_KEY_ELIMINATION // #define DEBUG_REDUCTION @@ -260,10 +261,13 @@ static void init_bitflip_bitarrays(void) { char state_files_path[strlen(get_my_executable_directory()) + strlen(STATE_FILES_DIRECTORY) + strlen(STATE_FILE_TEMPLATE) + 1]; char state_file_name[strlen(STATE_FILE_TEMPLATE) + 1]; + char state_file_raw_name[strlen(STATE_FILE_TEMPLATE_RAW) + 1]; for (odd_even_t odd_even = EVEN_STATE; odd_even <= ODD_STATE; odd_even++) { num_effective_bitflips[odd_even] = 0; for (uint16_t bitflip = 0x001; bitflip < 0x400; bitflip++) { + bool open_uncompressed = false; + bitflip_bitarrays[odd_even][bitflip] = NULL; count_bitflip_bitarrays[odd_even][bitflip] = 1 << 24; @@ -273,14 +277,21 @@ static void init_bitflip_bitarrays(void) { char *path; if (searchFile(&path, RESOURCES_SUBDIR, state_files_path, "", true) != PM3_SUCCESS) { - continue; + snprintf(state_file_raw_name, sizeof(state_file_raw_name), STATE_FILE_TEMPLATE_RAW, odd_even, bitflip); + strncpy(state_files_path, STATE_FILES_DIRECTORY, sizeof(state_files_path) - 1); + strncat(state_files_path, state_file_raw_name, sizeof(state_files_path) - (strlen(STATE_FILES_DIRECTORY) + 1)); + if (searchFile(&path, RESOURCES_SUBDIR, state_files_path, "", true) == PM3_SUCCESS) { + open_uncompressed = true; + } else { + continue; + } } FILE *statesfile = fopen(path, "rb"); free(path); if (statesfile == NULL) { continue; - } else { + } else if (!open_uncompressed) { fseek(statesfile, 0, SEEK_END); int fsize = ftell(statesfile); if (fsize == -1) { @@ -335,6 +346,52 @@ static void init_bitflip_bitarrays(void) { #endif } BZ2_bzDecompressEnd(&compressed_stream); + } else { + fseek(statesfile, 0, SEEK_END); + int fsize = ftell(statesfile); + if (fsize == -1) { + PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); + fclose(statesfile); + exit(5); + } + uint32_t filesize = (uint32_t)fsize; + rewind(statesfile); + + uint32_t count = 0; + size_t bytesread = fread(&count, 1, sizeof(count), statesfile); + if (bytesread != 4) { + PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); + fclose(statesfile); + exit(5); + } + + if ((float)count / (1 << 24) < IGNORE_BITFLIP_THRESHOLD) { + uint32_t *bitset = (uint32_t *)malloc_bitarray(sizeof(uint32_t) * (1 << 19)); + if (bitset == NULL) { + PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); + fclose(statesfile); + exit(4); + } + + bytesread = fread(bitset, 1, filesize-sizeof(count), statesfile); + if (bytesread != filesize-sizeof(count)) { + PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); + fclose(statesfile); + exit(5); + } + + effective_bitflip[odd_even][num_effective_bitflips[odd_even]++] = bitflip; + bitflip_bitarrays[odd_even][bitflip] = bitset; + count_bitflip_bitarrays[odd_even][bitflip] = count; +#if defined (DEBUG_REDUCTION) + PrintAndLogEx(INFO, "(%03" PRIx16 " %s:%5.1f%%) ", bitflip, odd_even ? "odd " : "even", (float)count / (1 << 24) * 100.0); + line++; + if (line == 8) { + PrintAndLogEx(NORMAL, ""); + line = 0; + } +#endif + } } } effective_bitflip[odd_even][num_effective_bitflips[odd_even]] = 0x400; // EndOfList marker From 8bb494901623e4ea6050f6243f733266e47dbe49 Mon Sep 17 00:00:00 2001 From: Grayson Martin Date: Tue, 11 Jul 2023 15:11:01 -0500 Subject: [PATCH 0170/1034] Finish initial implementation --- client/deps/mbedtls.cmake | 1 + client/src/cmdsmartcard.c | 138 +++++++++++++++++++++++++++++++++++++- common/mbedtls/Makefile | 3 +- common/mbedtls/config.h | 2 +- 4 files changed, 141 insertions(+), 3 deletions(-) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 2d212d9c2..162be9bc2 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -43,6 +43,7 @@ add_library(pm3rrg_rdv4_mbedtls STATIC ../../common/mbedtls/x509.c ../../common/mbedtls/x509_crl.c ../../common/mbedtls/x509_crt.c + ../../common/mbedtls/net_sockets.c ) target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index e14bb35e5..d3c843f48 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -20,6 +20,7 @@ #include #include "cmdparser.h" // command_t #include "commonutil.h" // ARRAYLEN +#include "iso7816/iso7816core.h" #include "protocols.h" #include "cmdtrace.h" #include "proxmark3.h" @@ -32,6 +33,10 @@ #include "crc16.h" // crc #include "cliparser.h" // cliparsing #include "atrs.h" // ATR lookup +#include "mbedtls/net_sockets.h" +#include "mifare.h" +#include "util_posix.h" +#include "cmdhf14a.h" static int CmdHelp(const char *Cmd); @@ -1145,6 +1150,46 @@ static int CmdSmartBruteforceSFI(const char *Cmd) { return PM3_SUCCESS; } +static void atsToEmulatedAtr(uint8_t *ats, uint8_t *atr, int *atrLen) { + int historicalLen = 0; + int offset = 2; + + if (ats[0] < 2) { + historicalLen = 0; + } else { + + if ((ats[1] & 64) != 0) { + offset++; + } + if ((ats[1] & 32) != 0) { + offset++; + } + if ((ats[1] & 16) != 0) { + offset++; + } + + if (offset >= ats[0]) { + historicalLen = 0; + } else { + historicalLen = ats[0] - offset; + } + } + + atr[0] = 0x3B; + atr[1] = 0x80 | historicalLen; + atr[2] = 0x80; + atr[3] = 0x01; + + uint8_t tck = 0; + for (int i = 0; i < historicalLen; ++i) { + atr[4 + i] = ats[offset + i]; + tck = tck ^ ats[offset + i]; + } + atr[4 + historicalLen] = tck; + + *atrLen = 5 + historicalLen; +} + static int CmdRelay(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "smart relay", @@ -1154,12 +1199,103 @@ static int CmdRelay(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("p", "port", "", "vpcd socket port (default: 35963)"), + arg_str0(NULL, "host", "", "vpcd socket host (default: localhost)"), + arg_str0("p", "port", "", "vpcd socket port (default: 35963)"), + arg_lit0("v", "verbose", "display APDU transactions between OS and card"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); + uint8_t host[100] = {0}; + int hostLen = sizeof(host); + CLIGetStrWithReturn(ctx, 1, host, &hostLen); + if (hostLen == 0) { + strcpy((char *) host, "localhost"); + } + + uint8_t port[6] = {0}; + int portLen = sizeof(port); + CLIGetStrWithReturn(ctx, 2, port, &portLen); + if (portLen == 0) { + strcpy((char *) port, "35963"); + } + + bool verbose = arg_get_lit(ctx, 3); + CLIParserFree(ctx); + + mbedtls_net_context netCtx; + mbedtls_net_init(&netCtx); + + PrintAndLogEx(INFO, "Relaying pm3 to host OS pcsc daemon. Press " _GREEN_("Enter") " to exit"); + + uint8_t cmdbuf[512] = {0}; + bool haveCard = false; + iso14a_card_select_t selectedCard; + + do { + if (haveCard) { + int bytesRead = mbedtls_net_recv_timeout(&netCtx, cmdbuf, sizeof(cmdbuf), 100); + + if (bytesRead == MBEDTLS_ERR_SSL_TIMEOUT || bytesRead == MBEDTLS_ERR_SSL_WANT_READ) { + continue; + } + + if (bytesRead > 0) { + if (cmdbuf[2] == 0x04) { // vpcd GET ATR + uint8_t atr[20] = {0}; + int atrLen = 0; + atsToEmulatedAtr(selectedCard.ats, atr, &atrLen); + + uint8_t res[22] = {0}; + res[1] = atrLen; + memcpy(res + 2, atr, atrLen); + mbedtls_net_send(&netCtx, res, 2 + atrLen); + } else if (cmdbuf[1] != 0x01) { // vpcd APDU + int apduLen = (cmdbuf[0] << 8) + cmdbuf[1]; + + uint8_t apduRes[APDU_RES_LEN] = {0}; + int apduResLen = 0; + + if (verbose) { + PrintAndLogEx(INFO, ">> %s", sprint_hex(cmdbuf + 2, apduLen)); + } + + if (ExchangeAPDU14a(cmdbuf + 2, apduLen, true, true, apduRes, sizeof(apduRes), &apduResLen) != PM3_SUCCESS) { + haveCard = false; + mbedtls_net_close(&netCtx); + continue; + } + + if (verbose) { + PrintAndLogEx(INFO, "<< %s", sprint_hex(apduRes, apduResLen)); + } + + uint8_t res[APDU_RES_LEN + 2] = {0}; + res[0] = (apduResLen >> 8) & 0xFF; + res[1] = apduResLen & 0xFF; + memcpy(res + 2, apduRes, apduResLen); + mbedtls_net_send(&netCtx, res, 2 + apduResLen); + } + } + } else { + if (SelectCard14443A_4(false, false, &selectedCard) == PM3_SUCCESS) { + if (mbedtls_net_connect(&netCtx, (char *) host, (char *) port, MBEDTLS_NET_PROTO_TCP)) { + PrintAndLogEx(FAILED, "Failed to connect to vpcd socket"); + return PM3_EINVARG; + } + + haveCard = true; + } + msleep(300); + } + } while (!kbd_enter_pressed()); + + mbedtls_net_close(&netCtx); + mbedtls_net_free(&netCtx); + DropField(); + + return PM3_SUCCESS; } static command_t CommandTable[] = { diff --git a/common/mbedtls/Makefile b/common/mbedtls/Makefile index ebd2d5dcf..0413bdff7 100644 --- a/common/mbedtls/Makefile +++ b/common/mbedtls/Makefile @@ -46,7 +46,8 @@ MYSRCS = \ threading.c \ x509.c \ x509_crl.c \ - x509_crt.c + x509_crt.c \ + net_sockets.c LIB_A = libmbedtls.a diff --git a/common/mbedtls/config.h b/common/mbedtls/config.h index 7c739cfd0..a3faef146 100644 --- a/common/mbedtls/config.h +++ b/common/mbedtls/config.h @@ -2979,7 +2979,7 @@ * * This module provides networking routines. */ -//#define MBEDTLS_NET_C +#define MBEDTLS_NET_C /** * \def MBEDTLS_OID_C From dfc7104799e9c32b6ee1e42a32ffc1adb7394499 Mon Sep 17 00:00:00 2001 From: Grayson Martin Date: Tue, 11 Jul 2023 15:26:50 -0500 Subject: [PATCH 0171/1034] add additional info to smart relay cmd help text --- client/src/cmdsmartcard.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index d3c843f48..f1cdaff6a 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -1193,8 +1193,8 @@ static void atsToEmulatedAtr(uint8_t *ats, uint8_t *atr, int *atrLen) { static int CmdRelay(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "smart relay", - "Turn pm3 into pcsc reader and relay to host OS via vpcd", - "smart relay" + "Make pm3 available to host OS smartcard driver via vpcd to enable use with other software such as GlobalPlatform Pro", + "Requires the virtual smartcard daemon to be installed and running, see https://frankmorgner.github.io/vsmartcard/virtualsmartcard/README.html" ); void *argtable[] = { @@ -1242,7 +1242,7 @@ static int CmdRelay(const char *Cmd) { } if (bytesRead > 0) { - if (cmdbuf[2] == 0x04) { // vpcd GET ATR + if (cmdbuf[1] == 0x01 && cmdbuf[2] == 0x04) { // vpcd GET ATR uint8_t atr[20] = {0}; int atrLen = 0; atsToEmulatedAtr(selectedCard.ats, atr, &atrLen); @@ -1281,7 +1281,10 @@ static int CmdRelay(const char *Cmd) { } else { if (SelectCard14443A_4(false, false, &selectedCard) == PM3_SUCCESS) { if (mbedtls_net_connect(&netCtx, (char *) host, (char *) port, MBEDTLS_NET_PROTO_TCP)) { - PrintAndLogEx(FAILED, "Failed to connect to vpcd socket"); + PrintAndLogEx(FAILED, "Failed to connect to vpcd socket. Ensure you have vpcd installed and running"); + mbedtls_net_close(&netCtx); + mbedtls_net_free(&netCtx); + DropField(); return PM3_EINVARG; } From 60e27b305a0cd911b96e1eb62748d547003dba7f Mon Sep 17 00:00:00 2001 From: Grayson Martin Date: Tue, 11 Jul 2023 15:33:23 -0500 Subject: [PATCH 0172/1034] add changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56daf055e..0851d3a2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Use proxmark3 as a generic smartcard reader with other software with `smart relay` (@gm3197) - Changed `emv reader -v` - now can decode track1/2 data if found (@iceman1001) - Added `emv reader` - act as a EMV reader (@iceman1001) - Added support for Apple Wallet NFC Passes with the Value Added Services protocol implementation (@gm3197) From 8af75cb220ac5415cdd600aab369553804058cdd Mon Sep 17 00:00:00 2001 From: Grayson Martin Date: Tue, 11 Jul 2023 15:42:30 -0500 Subject: [PATCH 0173/1034] make style --- client/src/cmdsmartcard.c | 222 ++++++++++++++++---------------- client/src/emv/cmdemv.c | 30 ++--- client/src/nfc/ndef.c | 2 +- client/src/pm3line_vocabulory.h | 1 + 4 files changed, 128 insertions(+), 127 deletions(-) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index f1cdaff6a..072178ea9 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -1151,43 +1151,43 @@ static int CmdSmartBruteforceSFI(const char *Cmd) { } static void atsToEmulatedAtr(uint8_t *ats, uint8_t *atr, int *atrLen) { - int historicalLen = 0; - int offset = 2; + int historicalLen = 0; + int offset = 2; - if (ats[0] < 2) { - historicalLen = 0; - } else { + if (ats[0] < 2) { + historicalLen = 0; + } else { - if ((ats[1] & 64) != 0) { - offset++; - } - if ((ats[1] & 32) != 0) { - offset++; - } - if ((ats[1] & 16) != 0) { - offset++; - } + if ((ats[1] & 64) != 0) { + offset++; + } + if ((ats[1] & 32) != 0) { + offset++; + } + if ((ats[1] & 16) != 0) { + offset++; + } - if (offset >= ats[0]) { - historicalLen = 0; - } else { - historicalLen = ats[0] - offset; - } - } + if (offset >= ats[0]) { + historicalLen = 0; + } else { + historicalLen = ats[0] - offset; + } + } - atr[0] = 0x3B; - atr[1] = 0x80 | historicalLen; - atr[2] = 0x80; - atr[3] = 0x01; - - uint8_t tck = 0; - for (int i = 0; i < historicalLen; ++i) { - atr[4 + i] = ats[offset + i]; - tck = tck ^ ats[offset + i]; - } - atr[4 + historicalLen] = tck; + atr[0] = 0x3B; + atr[1] = 0x80 | historicalLen; + atr[2] = 0x80; + atr[3] = 0x01; - *atrLen = 5 + historicalLen; + uint8_t tck = 0; + for (int i = 0; i < historicalLen; ++i) { + atr[4 + i] = ats[offset + i]; + tck = tck ^ ats[offset + i]; + } + atr[4 + historicalLen] = tck; + + *atrLen = 5 + historicalLen; } static int CmdRelay(const char *Cmd) { @@ -1199,113 +1199,113 @@ static int CmdRelay(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str0(NULL, "host", "", "vpcd socket host (default: localhost)"), + arg_str0(NULL, "host", "", "vpcd socket host (default: localhost)"), arg_str0("p", "port", "", "vpcd socket port (default: 35963)"), - arg_lit0("v", "verbose", "display APDU transactions between OS and card"), + arg_lit0("v", "verbose", "display APDU transactions between OS and card"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); - uint8_t host[100] = {0}; - int hostLen = sizeof(host); - CLIGetStrWithReturn(ctx, 1, host, &hostLen); - if (hostLen == 0) { - strcpy((char *) host, "localhost"); - } + uint8_t host[100] = {0}; + int hostLen = sizeof(host); + CLIGetStrWithReturn(ctx, 1, host, &hostLen); + if (hostLen == 0) { + strcpy((char *) host, "localhost"); + } - uint8_t port[6] = {0}; - int portLen = sizeof(port); - CLIGetStrWithReturn(ctx, 2, port, &portLen); - if (portLen == 0) { - strcpy((char *) port, "35963"); - } + uint8_t port[6] = {0}; + int portLen = sizeof(port); + CLIGetStrWithReturn(ctx, 2, port, &portLen); + if (portLen == 0) { + strcpy((char *) port, "35963"); + } - bool verbose = arg_get_lit(ctx, 3); + bool verbose = arg_get_lit(ctx, 3); - CLIParserFree(ctx); + CLIParserFree(ctx); - mbedtls_net_context netCtx; - mbedtls_net_init(&netCtx); + mbedtls_net_context netCtx; + mbedtls_net_init(&netCtx); - PrintAndLogEx(INFO, "Relaying pm3 to host OS pcsc daemon. Press " _GREEN_("Enter") " to exit"); + PrintAndLogEx(INFO, "Relaying pm3 to host OS pcsc daemon. Press " _GREEN_("Enter") " to exit"); - uint8_t cmdbuf[512] = {0}; - bool haveCard = false; - iso14a_card_select_t selectedCard; + uint8_t cmdbuf[512] = {0}; + bool haveCard = false; + iso14a_card_select_t selectedCard; - do { - if (haveCard) { - int bytesRead = mbedtls_net_recv_timeout(&netCtx, cmdbuf, sizeof(cmdbuf), 100); + do { + if (haveCard) { + int bytesRead = mbedtls_net_recv_timeout(&netCtx, cmdbuf, sizeof(cmdbuf), 100); - if (bytesRead == MBEDTLS_ERR_SSL_TIMEOUT || bytesRead == MBEDTLS_ERR_SSL_WANT_READ) { - continue; - } + if (bytesRead == MBEDTLS_ERR_SSL_TIMEOUT || bytesRead == MBEDTLS_ERR_SSL_WANT_READ) { + continue; + } - if (bytesRead > 0) { - if (cmdbuf[1] == 0x01 && cmdbuf[2] == 0x04) { // vpcd GET ATR - uint8_t atr[20] = {0}; - int atrLen = 0; - atsToEmulatedAtr(selectedCard.ats, atr, &atrLen); + if (bytesRead > 0) { + if (cmdbuf[1] == 0x01 && cmdbuf[2] == 0x04) { // vpcd GET ATR + uint8_t atr[20] = {0}; + int atrLen = 0; + atsToEmulatedAtr(selectedCard.ats, atr, &atrLen); - uint8_t res[22] = {0}; - res[1] = atrLen; - memcpy(res + 2, atr, atrLen); - mbedtls_net_send(&netCtx, res, 2 + atrLen); - } else if (cmdbuf[1] != 0x01) { // vpcd APDU - int apduLen = (cmdbuf[0] << 8) + cmdbuf[1]; + uint8_t res[22] = {0}; + res[1] = atrLen; + memcpy(res + 2, atr, atrLen); + mbedtls_net_send(&netCtx, res, 2 + atrLen); + } else if (cmdbuf[1] != 0x01) { // vpcd APDU + int apduLen = (cmdbuf[0] << 8) + cmdbuf[1]; - uint8_t apduRes[APDU_RES_LEN] = {0}; - int apduResLen = 0; - - if (verbose) { - PrintAndLogEx(INFO, ">> %s", sprint_hex(cmdbuf + 2, apduLen)); - } + uint8_t apduRes[APDU_RES_LEN] = {0}; + int apduResLen = 0; - if (ExchangeAPDU14a(cmdbuf + 2, apduLen, true, true, apduRes, sizeof(apduRes), &apduResLen) != PM3_SUCCESS) { - haveCard = false; - mbedtls_net_close(&netCtx); - continue; - } + if (verbose) { + PrintAndLogEx(INFO, ">> %s", sprint_hex(cmdbuf + 2, apduLen)); + } - if (verbose) { - PrintAndLogEx(INFO, "<< %s", sprint_hex(apduRes, apduResLen)); - } + if (ExchangeAPDU14a(cmdbuf + 2, apduLen, true, true, apduRes, sizeof(apduRes), &apduResLen) != PM3_SUCCESS) { + haveCard = false; + mbedtls_net_close(&netCtx); + continue; + } - uint8_t res[APDU_RES_LEN + 2] = {0}; - res[0] = (apduResLen >> 8) & 0xFF; - res[1] = apduResLen & 0xFF; - memcpy(res + 2, apduRes, apduResLen); - mbedtls_net_send(&netCtx, res, 2 + apduResLen); - } - } - } else { - if (SelectCard14443A_4(false, false, &selectedCard) == PM3_SUCCESS) { - if (mbedtls_net_connect(&netCtx, (char *) host, (char *) port, MBEDTLS_NET_PROTO_TCP)) { - PrintAndLogEx(FAILED, "Failed to connect to vpcd socket. Ensure you have vpcd installed and running"); - mbedtls_net_close(&netCtx); - mbedtls_net_free(&netCtx); - DropField(); - return PM3_EINVARG; - } + if (verbose) { + PrintAndLogEx(INFO, "<< %s", sprint_hex(apduRes, apduResLen)); + } - haveCard = true; - } - msleep(300); - } - } while (!kbd_enter_pressed()); + uint8_t res[APDU_RES_LEN + 2] = {0}; + res[0] = (apduResLen >> 8) & 0xFF; + res[1] = apduResLen & 0xFF; + memcpy(res + 2, apduRes, apduResLen); + mbedtls_net_send(&netCtx, res, 2 + apduResLen); + } + } + } else { + if (SelectCard14443A_4(false, false, &selectedCard) == PM3_SUCCESS) { + if (mbedtls_net_connect(&netCtx, (char *) host, (char *) port, MBEDTLS_NET_PROTO_TCP)) { + PrintAndLogEx(FAILED, "Failed to connect to vpcd socket. Ensure you have vpcd installed and running"); + mbedtls_net_close(&netCtx); + mbedtls_net_free(&netCtx); + DropField(); + return PM3_EINVARG; + } - mbedtls_net_close(&netCtx); - mbedtls_net_free(&netCtx); - DropField(); + haveCard = true; + } + msleep(300); + } + } while (!kbd_enter_pressed()); - return PM3_SUCCESS; + mbedtls_net_close(&netCtx); + mbedtls_net_free(&netCtx); + DropField(); + + return PM3_SUCCESS; } static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, {"list", CmdSmartList, AlwaysAvailable, "List ISO 7816 history"}, {"info", CmdSmartInfo, IfPm3Smartcard, "Tag information"}, - {"relay", CmdRelay, IfPm3Iso14443a, "Turn pm3 into pcsc reader and relay to host OS via vpcd"}, + {"relay", CmdRelay, IfPm3Iso14443a, "Turn pm3 into pcsc reader and relay to host OS via vpcd"}, {"reader", CmdSmartReader, IfPm3Smartcard, "Act like an IS07816 reader"}, {"raw", CmdSmartRaw, IfPm3Smartcard, "Send raw hex data to tag"}, {"upgrade", CmdSmartUpgrade, AlwaysAvailable, "Upgrade sim module firmware"}, diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index e1518971b..f8dfb7bbe 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -75,7 +75,7 @@ static void PrintChannel(Iso7816CommandChannel channel) { } } -static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ +static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose) { if (d == NULL || n < 10) { return PM3_EINVARG; } @@ -89,20 +89,20 @@ static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ } // decoder - char *tmp = str_ndup((const char*)d, n); + char *tmp = str_ndup((const char *)d, n); uint8_t i = 0; char delim[2] = "^"; char *token = strtok(tmp, delim); while (token != NULL) { - switch(i) { + switch (i) { case 0: PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", - token[1], token[2],token[3], token[4], - token[5], token[6],token[7], token[8], - token[9], token[10],token[11], token[12], - token[13], token[14],token[15], token[16] - ); + token[1], token[2], token[3], token[4], + token[5], token[6], token[7], token[8], + token[9], token[10], token[11], token[12], + token[13], token[14], token[15], token[16] + ); break; case 1: PrintAndLogEx(INFO, "CardHolder............... %s", token); @@ -121,7 +121,7 @@ static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ token += 4; PrintAndLogEx(INFO, "CVV / iCvv............... %.*s", 3, token); - token +=3; + token += 3; PrintAndLogEx(INFO, "Trailing................. %s", token); break; @@ -152,11 +152,11 @@ static int emv_parse_track2(const uint8_t *d, size_t n, bool verbose) { tmp++; PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", - tmp[0], tmp[1], tmp[2],tmp[3], - tmp[4], tmp[5], tmp[6],tmp[7], - tmp[8], tmp[9], tmp[10],tmp[11], - tmp[12],tmp[13], tmp[14],tmp[15] - ); + tmp[0], tmp[1], tmp[2], tmp[3], + tmp[4], tmp[5], tmp[6], tmp[7], + tmp[8], tmp[9], tmp[10], tmp[11], + tmp[12], tmp[13], tmp[14], tmp[15] + ); tmp += 16; if (tmp[0] == '=' || tmp[0] == 'D') @@ -172,7 +172,7 @@ static int emv_parse_track2(const uint8_t *d, size_t n, bool verbose) { tmp += 4; PrintAndLogEx(INFO, "CVV / iCvv............... %.*s", 3, tmp); - tmp +=3; + tmp += 3; PrintAndLogEx(INFO, "Trailing................. %s", tmp); diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index 3e2e1973f..44ef70ee6 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -1050,7 +1050,7 @@ static int ndefDecodePayload(NDEFHeader_t *ndef, bool verbose) { if (str_startswith(begin, NDEF_BLUEAPPL_EP)) { - ndefDecodeMime_bt(ndef); + ndefDecodeMime_bt(ndef); } if (str_startswith(begin, NDEF_BLUEAPPL_SECURE_LE)) { ndefDecodeMime_bt_secure_le_oob(ndef); diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index 950d8816f..38e64a791 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -771,6 +771,7 @@ const static vocabulory_t vocabulory[] = { { 1, "smart help" }, { 1, "smart list" }, { 0, "smart info" }, + { 0, "smart relay" }, { 0, "smart reader" }, { 0, "smart raw" }, { 1, "smart upgrade" }, From 66120ac71ad2693336fd548907a596745bc38883 Mon Sep 17 00:00:00 2001 From: kormax Date: Wed, 12 Jul 2023 10:45:24 +0300 Subject: [PATCH 0174/1034] Update ECP database --- client/resources/ecplist.json | 44 +++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/client/resources/ecplist.json b/client/resources/ecplist.json index 0ce7fcda5..3902e2f2d 100644 --- a/client/resources/ecplist.json +++ b/client/resources/ecplist.json @@ -57,6 +57,11 @@ "description": "" }, + { + "value": "6a02c3020602ffff", + "name": "Access: Hotel: Hilton", + "description": "TCI might be a wildcard before a reservation is made" + }, { "value": "6a02cb0206021100deadbeefdeadbeef", @@ -64,10 +69,45 @@ "description": "Last 8 bytes refer to reader group identifier, common for all readers in same home installation, allows to differentiate between keys for different homes" }, + { + "value": "6a02c30209010001", + "name": "Access: Car Pairing: BMW", + "description": "Device does not respond to poll after this frame. Displays a car pairing popup for BMW" + }, { "value": "6a02c30209010201", - "name": "Access: Mercedes Pairing", - "description": "Device does not respond to this frame. Displays a car pairing popup for Mercedes" + "name": "Access: Car Pairing: Mercedes", + "description": "Device does not respond to poll after this frame. Displays a car pairing popup for Mercedes" + }, + { + "value": "6a02c30209010051", + "name": "Access: Car Pairing: Genesis", + "description": "Device does not respond to poll after this frame. Displays a car pairing popup for Genesis" + }, + { + "value": "6a02c30209010041", + "name": "Access: Car Pairing: KIA", + "description": "Device does not respond to poll after this frame. Displays a car pairing popup for KIA" + }, + { + "value": "6a02c30209010301", + "name": "Access: Car Pairing: Hyundai", + "description": "Device does not respond to poll after this frame. Displays a car pairing popup for Hyundai" + }, + { + "value": "6a02c30209010701", + "name": "Access: Car Pairing: BYD", + "description": "Device does not respond to poll after this frame. Displays a car pairing popup for BYD" + }, + { + "value": "6a02c30209010241", + "name": "Access: Car Pairing: Denza", + "description": "Device does not respond to poll after this frame. Displays a car pairing popup for Denza" + }, + { + "value": "6a02c30209010091", + "name": "Access: Car Pairing: Lotus", + "description": "Device does not respond to poll after this frame. Displays a car pairing popup for Lotus" }, From b708332ea303625c96dc425fe05a453ca2920870 Mon Sep 17 00:00:00 2001 From: Roman D Date: Wed, 12 Jul 2023 10:55:27 +0300 Subject: [PATCH 0175/1034] Eliminate extraneous num_CPUs() calls --- client/src/cmdhfmfhard.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index 9ae2e42e4..090dcf531 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -1280,31 +1280,32 @@ __attribute__((force_align_arg_pointer)) static void check_for_BitFlipProperties(bool time_budget) { // create and run worker threads - pthread_t thread_id[NUM_CHECK_BITFLIPS_THREADS]; + const size_t num_check_bitflip_threads = NUM_CHECK_BITFLIPS_THREADS; + pthread_t thread_id[num_check_bitflip_threads]; - uint8_t args[NUM_CHECK_BITFLIPS_THREADS][3]; - uint16_t bytes_per_thread = (256 + (NUM_CHECK_BITFLIPS_THREADS / 2)) / NUM_CHECK_BITFLIPS_THREADS; - for (uint32_t i = 0; i < NUM_CHECK_BITFLIPS_THREADS; i++) { + uint8_t args[num_check_bitflip_threads][3]; + uint16_t bytes_per_thread = (256 + (num_check_bitflip_threads / 2)) / num_check_bitflip_threads; + for (uint32_t i = 0; i < num_check_bitflip_threads; i++) { args[i][0] = i * bytes_per_thread; args[i][1] = MIN(args[i][0] + bytes_per_thread - 1, 255); args[i][2] = time_budget; } // args[][] is uint8_t so max 255, no need to check it - // args[NUM_CHECK_BITFLIPS_THREADS - 1][1] = MAX(args[NUM_CHECK_BITFLIPS_THREADS - 1][1], 255); + // args[num_check_bitflip_threads - 1][1] = MAX(args[num_check_bitflip_threads - 1][1], 255); // start threads - for (uint32_t i = 0; i < NUM_CHECK_BITFLIPS_THREADS; i++) { + for (uint32_t i = 0; i < num_check_bitflip_threads; i++) { pthread_create(&thread_id[i], NULL, check_for_BitFlipProperties_thread, args[i]); } // wait for threads to terminate: - for (uint32_t i = 0; i < NUM_CHECK_BITFLIPS_THREADS; i++) { + for (uint32_t i = 0; i < num_check_bitflip_threads; i++) { pthread_join(thread_id[i], NULL); } if (hardnested_stage & CHECK_2ND_BYTES) { hardnested_stage &= ~CHECK_1ST_BYTES; // we are done with 1st stage, except... - for (uint32_t i = 0; i < NUM_CHECK_BITFLIPS_THREADS; i++) { + for (uint32_t i = 0; i < num_check_bitflip_threads; i++) { if (args[i][1] != 0) { hardnested_stage |= CHECK_1ST_BYTES; // ... when any of the threads didn't complete in time break; @@ -2114,10 +2115,11 @@ static void generate_candidates(uint8_t sum_a0_idx, uint8_t sum_a8_idx) { init_book_of_work(); // create and run worker threads - pthread_t thread_id[NUM_REDUCTION_WORKING_THREADS]; + const size_t num_reduction_working_threads = NUM_REDUCTION_WORKING_THREADS; + pthread_t thread_id[num_reduction_working_threads]; - uint16_t sums1[NUM_REDUCTION_WORKING_THREADS][3]; - for (uint32_t i = 0; i < NUM_REDUCTION_WORKING_THREADS; i++) { + uint16_t sums1[num_reduction_working_threads][3]; + for (uint32_t i = 0; i < num_reduction_working_threads; i++) { sums1[i][0] = sum_a0_idx; sums1[i][1] = sum_a8_idx; sums1[i][2] = i + 1; @@ -2125,7 +2127,7 @@ static void generate_candidates(uint8_t sum_a0_idx, uint8_t sum_a8_idx) { } // wait for threads to terminate: - for (uint32_t i = 0; i < NUM_REDUCTION_WORKING_THREADS; i++) { + for (uint32_t i = 0; i < num_reduction_working_threads; i++) { pthread_join(thread_id[i], NULL); } From bce1429f60552796ecb48e05a179c7494e81a909 Mon Sep 17 00:00:00 2001 From: Roman D Date: Wed, 12 Jul 2023 13:06:07 +0300 Subject: [PATCH 0176/1034] Dynamically allocate buckets array for the hardnested bruteforce attack. --- .../deps/hardnested/hardnested_bruteforce.c | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/client/deps/hardnested/hardnested_bruteforce.c b/client/deps/hardnested/hardnested_bruteforce.c index 7766b28d3..719cd62bd 100644 --- a/client/deps/hardnested/hardnested_bruteforce.c +++ b/client/deps/hardnested/hardnested_bruteforce.c @@ -78,6 +78,8 @@ THE SOFTWARE. #define DEBUG_KEY_ELIMINATION 1 // #define DEBUG_BRUTE_FORCE +#define MIN_BUCKETS_SIZE 128 + typedef enum { EVEN_STATE = 0, ODD_STATE = 1 @@ -88,7 +90,8 @@ static uint32_t bf_test_nonce[256]; static uint8_t bf_test_nonce_2nd_byte[256]; static uint8_t bf_test_nonce_par[256]; static uint32_t bucket_count = 0; -static statelist_t *buckets[128]; +static size_t buckets_allocated = 0; +static statelist_t **buckets = NULL; static uint32_t keys_found = 0; static uint64_t num_keys_tested; static uint64_t found_bs_key = 0; @@ -294,6 +297,26 @@ static void write_benchfile(statelist_t *candidates) { #endif +static bool ensure_buckets_alloc(size_t need_buckets) { + if (need_buckets > buckets_allocated) { + size_t alloc_sz = ((buckets_allocated == 0) ? MIN_BUCKETS_SIZE : (buckets_allocated * 2)); + while (need_buckets > alloc_sz) { + alloc_sz *= 2; + } + + buckets = realloc(buckets, sizeof(statelist_t *) * alloc_sz); + if (buckets == NULL) { + buckets_allocated = 0; + return false; + } + memset(buckets + buckets_allocated, 0, (alloc_sz - buckets_allocated) * sizeof(statelist_t *)); + buckets_allocated = alloc_sz; + } + + return true; +} + + bool brute_force_bs(float *bf_rate, statelist_t *candidates, uint32_t cuid, uint32_t num_acquired_nonces, uint64_t maximum_states, noncelist_t *nonces, uint8_t *best_first_bytes, uint64_t *found_key) { #if defined (WRITE_BENCH_FILE) write_benchfile(candidates); @@ -310,6 +333,11 @@ bool brute_force_bs(float *bf_rate, statelist_t *candidates, uint32_t cuid, uint bucket_count = 0; for (statelist_t *p = candidates; p != NULL; p = p->next) { if (p->states[ODD_STATE] != NULL && p->states[EVEN_STATE] != NULL) { + if (!ensure_buckets_alloc(bucket_count + 1)) { + PrintAndLogEx(ERR, "Can't allocate buckets, abort!"); + return false; + } + buckets[bucket_count] = p; bucket_count++; } @@ -347,6 +375,10 @@ bool brute_force_bs(float *bf_rate, statelist_t *candidates, uint32_t cuid, uint pthread_join(threads[i], 0); } + free(buckets); + buckets = NULL; + buckets_allocated = 0; + uint64_t elapsed_time = msclock() - start_time; if (bf_rate != NULL) From e1659da7559d1e201601c270c65db8dec6b1571f Mon Sep 17 00:00:00 2001 From: Roman D Date: Wed, 12 Jul 2023 13:14:59 +0300 Subject: [PATCH 0177/1034] Remove extraneous num_CPUs() calls. --- .../deps/hardnested/hardnested_bruteforce.c | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/client/deps/hardnested/hardnested_bruteforce.c b/client/deps/hardnested/hardnested_bruteforce.c index 719cd62bd..17edfaad0 100644 --- a/client/deps/hardnested/hardnested_bruteforce.c +++ b/client/deps/hardnested/hardnested_bruteforce.c @@ -160,6 +160,7 @@ crack_states_thread(void *x) { uint8_t *best_first_bytes; } *thread_arg; + const int num_brute_force_threads = NUM_BRUTE_FORCE_THREADS; thread_arg = (struct arg *)x; const int thread_id = thread_arg->thread_ID; uint32_t current_bucket = thread_id; @@ -191,7 +192,7 @@ crack_states_thread(void *x) { } } } - current_bucket += NUM_BRUTE_FORCE_THREADS; + current_bucket += num_brute_force_threads; } return NULL; } @@ -323,6 +324,8 @@ bool brute_force_bs(float *bf_rate, statelist_t *candidates, uint32_t cuid, uint #endif bool silent = (bf_rate != NULL); + const int num_brute_force_threads = NUM_BRUTE_FORCE_THREADS; + keys_found = 0; num_keys_tested = 0; found_bs_key = 0; @@ -350,7 +353,7 @@ bool brute_force_bs(float *bf_rate, statelist_t *candidates, uint32_t cuid, uint return false; #endif - pthread_t threads[NUM_BRUTE_FORCE_THREADS]; + pthread_t threads[num_brute_force_threads]; struct args { bool silent; int thread_ID; @@ -359,9 +362,9 @@ bool brute_force_bs(float *bf_rate, statelist_t *candidates, uint32_t cuid, uint uint64_t maximum_states; noncelist_t *nonces; uint8_t *best_first_bytes; - } thread_args[NUM_BRUTE_FORCE_THREADS]; + } thread_args[num_brute_force_threads]; - for (uint32_t i = 0; i < NUM_BRUTE_FORCE_THREADS; i++) { + for (uint32_t i = 0; i < num_brute_force_threads; i++) { thread_args[i].thread_ID = i; thread_args[i].silent = silent; thread_args[i].cuid = cuid; @@ -371,7 +374,7 @@ bool brute_force_bs(float *bf_rate, statelist_t *candidates, uint32_t cuid, uint thread_args[i].best_first_bytes = best_first_bytes; pthread_create(&threads[i], NULL, crack_states_thread, (void *)&thread_args[i]); } - for (uint32_t i = 0; i < NUM_BRUTE_FORCE_THREADS; i++) { + for (uint32_t i = 0; i < num_brute_force_threads; i++) { pthread_join(threads[i], 0); } @@ -466,30 +469,31 @@ static bool read_bench_data(statelist_t *test_candidates) { float brute_force_benchmark(void) { - statelist_t test_candidates[NUM_BRUTE_FORCE_THREADS]; + const int num_brute_force_threads = NUM_BRUTE_FORCE_THREADS; + statelist_t test_candidates[num_brute_force_threads]; test_candidates[0].states[ODD_STATE] = calloc(1, (TEST_BENCH_SIZE + 1) * sizeof(uint32_t)); test_candidates[0].states[EVEN_STATE] = calloc(1, (TEST_BENCH_SIZE + 1) * sizeof(uint32_t)); - for (uint32_t i = 0; i < NUM_BRUTE_FORCE_THREADS - 1; i++) { + for (uint32_t i = 0; i < num_brute_force_threads - 1; i++) { test_candidates[i].next = test_candidates + i + 1; test_candidates[i + 1].states[ODD_STATE] = test_candidates[0].states[ODD_STATE]; test_candidates[i + 1].states[EVEN_STATE] = test_candidates[0].states[EVEN_STATE]; } - test_candidates[NUM_BRUTE_FORCE_THREADS - 1].next = NULL; + test_candidates[num_brute_force_threads - 1].next = NULL; if (!read_bench_data(test_candidates)) { PrintAndLogEx(NORMAL, "Couldn't read benchmark data. Assuming brute force rate of %1.0f states per second", DEFAULT_BRUTE_FORCE_RATE); return DEFAULT_BRUTE_FORCE_RATE; } - for (uint32_t i = 0; i < NUM_BRUTE_FORCE_THREADS; i++) { + for (uint32_t i = 0; i < num_brute_force_threads; i++) { test_candidates[i].len[ODD_STATE] = TEST_BENCH_SIZE; test_candidates[i].len[EVEN_STATE] = TEST_BENCH_SIZE; test_candidates[i].states[ODD_STATE][TEST_BENCH_SIZE] = -1; test_candidates[i].states[EVEN_STATE][TEST_BENCH_SIZE] = -1; } - uint64_t maximum_states = TEST_BENCH_SIZE * TEST_BENCH_SIZE * (uint64_t)NUM_BRUTE_FORCE_THREADS; + uint64_t maximum_states = TEST_BENCH_SIZE * TEST_BENCH_SIZE * (uint64_t)num_brute_force_threads; float bf_rate; uint64_t found_key = 0; From 698b41eb2713703d4b05cd2a08f8015f9c528fcc Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 12 Jul 2023 13:59:47 +0200 Subject: [PATCH 0178/1034] code style --- client/src/comms.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/client/src/comms.c b/client/src/comms.c index a17bdbaf9..1c3d1f686 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -621,9 +621,7 @@ bool OpenProxmark(pm3_device_t **dev, const char *port, bool wait_for_port, int // check if we can communicate with Pm3 int TestProxmark(pm3_device_t *dev) { - PacketResponseNG resp; uint16_t len = 32; - bool is_tcp_conn = false; uint8_t data[len]; for (uint16_t i = 0; i < len; i++) data[i] = i & 0xFF; @@ -643,6 +641,7 @@ int TestProxmark(pm3_device_t *dev) { timeout = 1000; #endif + PacketResponseNG resp; if (WaitForResponseTimeoutW(CMD_PING, &resp, timeout, false) == 0) { return PM3_ETIMEOUT; } @@ -666,12 +665,15 @@ int TestProxmark(pm3_device_t *dev) { memcpy(&g_pm3_capabilities, resp.data.asBytes, MIN(sizeof(capabilities_t), resp.length)); g_conn.send_via_fpc_usart = g_pm3_capabilities.via_fpc; g_conn.uart_speed = g_pm3_capabilities.baudrate; - is_tcp_conn = memcmp(g_conn.serial_port_name, "tcp:", 4) == 0; + + bool is_tcp_conn = (memcmp(g_conn.serial_port_name, "tcp:", 4) == 0); + bool is_bt_conn = (memcmp(g_conn.serial_port_name, "bt:", 3) == 0); PrintAndLogEx(INFO, "Communicating with PM3 over %s%s%s", - g_conn.send_via_fpc_usart ? _YELLOW_("FPC UART") : _YELLOW_("USB-CDC"), - is_tcp_conn ? " over " _YELLOW_("TCP") : "", - memcmp(g_conn.serial_port_name, "bt:", 3) == 0 ? " over " _YELLOW_("BT") : ""); + (g_conn.send_via_fpc_usart) ? _YELLOW_("FPC UART") : _YELLOW_("USB-CDC"), + (is_tcp_conn) ? " over " _YELLOW_("TCP") : "", + (is_bt_conn) ? " over " _YELLOW_("BT") : "" + ); if (g_conn.send_via_fpc_usart) { PrintAndLogEx(INFO, "PM3 UART serial baudrate: " _YELLOW_("%u") "\n", g_conn.uart_speed); @@ -771,7 +773,6 @@ bool WaitForResponseTimeoutW(uint32_t cmd, PacketResponseNG *response, size_t ms if (msclock() - tmp_clk > 3000 && show_warning) { // 3 seconds elapsed (but this doesn't mean the timeout was exceeded) -// PrintAndLogEx(INFO, "Waiting for a response from the Proxmark3..."); PrintAndLogEx(INFO, "You can cancel this operation by pressing the pm3 button"); show_warning = false; } From 403385c56c9f218fc071b9f3475196b81be0996a Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 12 Jul 2023 14:00:19 +0200 Subject: [PATCH 0179/1034] style --- common/lfdemod.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/common/lfdemod.c b/common/lfdemod.c index bf0bfd4c6..73b580a6b 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -268,12 +268,20 @@ static size_t removeEm410xParity(uint8_t *bits, size_t startIdx, bool isLong, bo *validLong = false; uint8_t bLen = isLong ? 110 : 55; uint16_t parityCol[4] = { 0, 0, 0, 0 }; + for (int word = 0; word < bLen; word += 5) { for (int bit = 0; bit < 5; bit++) { - if (word + bit >= bLen) break; + + if (word + bit >= bLen) { + break; + } + parityWd = (parityWd << 1) | bits[startIdx + word + bit]; - if ((word <= 50) && (bit < 4)) + + if ((word <= 50) && (bit < 4)) { parityCol[bit] = (parityCol[bit] << 1) | bits[startIdx + word + bit]; + } + bits[bitCnt++] = (bits[startIdx + word + bit]); } if (word + 5 > bLen) break; @@ -293,12 +301,15 @@ static size_t removeEm410xParity(uint8_t *bits, size_t startIdx, bool isLong, bo if (!isLong && validRowParitySkipColP && validColParity) { *validShort = true; } + if (isLong && validRowParity) { *validLong = true; } + if (isLong && validRowParitySkipColP && validColParity) { *validShortExtended = true; } + if (*validShort || *validShortExtended || *validLong) { return bitCnt; } else { From c9c8c6b72c9306062c594eaa452f01baffd046ec Mon Sep 17 00:00:00 2001 From: Roman D Date: Wed, 12 Jul 2023 15:35:29 +0300 Subject: [PATCH 0180/1034] Do not try to detect Mifare classic EV1 signature in offline mode. --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index cbca722cd..3419fc1b7 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2242,7 +2242,7 @@ static int CmdHF14AMfNestedHard(const char *Cmd) { } // detect MFC EV1 Signature - if (detect_mfc_ev1_signature() && keylen == 0) { + if (g_session.pm3_present && detect_mfc_ev1_signature() && keylen == 0) { PrintAndLogEx(INFO, "MIFARE Classic EV1 card detected"); blockno = 69; keytype = MF_KEY_B; From a9c0fd0b1cf649c31d2bf1eb5aa366a316a42119 Mon Sep 17 00:00:00 2001 From: nvx Date: Wed, 12 Jul 2023 23:04:29 +1000 Subject: [PATCH 0181/1034] Fix regression caused by edd8e36 (PR #2021). Mifare Classic KeyA/B were accidentally switched in some contexts. --- armsrc/mifareutil.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c index e94d09f40..5dfbfd26b 100644 --- a/armsrc/mifareutil.c +++ b/armsrc/mifareutil.c @@ -139,7 +139,7 @@ int mifare_classic_auth(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, return mifare_classic_authex(pcs, uid, blockNo, keyType, ui64Key, isNested, NULL, NULL); } int mifare_classic_authex(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t keyType, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *timing) { - return mifare_classic_authex_cmd(pcs, uid, blockNo, keyType ? MIFARE_AUTH_KEYA : MIFARE_AUTH_KEYB, ui64Key, isNested, ntptr, timing); + return mifare_classic_authex_cmd(pcs, uid, blockNo, (keyType & 1) == 0 ? MIFARE_AUTH_KEYA : MIFARE_AUTH_KEYB, ui64Key, isNested, ntptr, timing); } int mifare_classic_authex_cmd(struct Crypto1State *pcs, uint32_t uid, uint8_t blockNo, uint8_t cmd, uint64_t ui64Key, uint8_t isNested, uint32_t *ntptr, uint32_t *timing) { From 92f4ec08ab94b4ead6a8991469d2436a898eb73f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 12 Jul 2023 16:09:28 +0200 Subject: [PATCH 0182/1034] I tend to get better Mifare functionality. tested 6,7,8 and seven gave me better results --- fpga/hi_iso14443a.v | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fpga/hi_iso14443a.v b/fpga/hi_iso14443a.v index 7ccd7f610..6fd450528 100644 --- a/fpga/hi_iso14443a.v +++ b/fpga/hi_iso14443a.v @@ -221,7 +221,7 @@ reg curbit; `ifdef PM3ICOPYX `define EDGE_DETECT_THRESHOLD 3 `else -`define EDGE_DETECT_THRESHOLD 5 +`define EDGE_DETECT_THRESHOLD 7 `endif `define EDGE_DETECT_THRESHOLDHIGH 20 From 71023d0c6ef2fe1cd7de2848e31e1c3e171f321c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 12 Jul 2023 16:25:14 +0200 Subject: [PATCH 0183/1034] regenerated with the HF update --- fpga/fpga_icopyx_hf.bit | Bin 72749 -> 72749 bytes fpga/fpga_pm3_felica.bit | Bin 42176 -> 42176 bytes fpga/fpga_pm3_hf.bit | Bin 42172 -> 42172 bytes fpga/fpga_pm3_hf_15.bit | Bin 42175 -> 42175 bytes fpga/fpga_pm3_lf.bit | Bin 42172 -> 42172 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/fpga/fpga_icopyx_hf.bit b/fpga/fpga_icopyx_hf.bit index b62cdace60a2f3d95eac23c61b26a334a08dc47a..053f5cce888de824b6e65a7b2e8f8d9de4be3b8c 100644 GIT binary patch literal 72749 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 diff --git a/fpga/fpga_pm3_felica.bit b/fpga/fpga_pm3_felica.bit index a903f180ead332a29b109b75c0bc01e7ce0b6c51..13338bda0c2c486420bfc4100ab0231502142610 100644 GIT binary patch literal 42176 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 R8Jt4H@?Je>zIE$w{};>}unzzL literal 42176 zcma&P4RjpEnJ)ZJbxUqdk2G!BW(6428VMN0Xf&3LZGd*o_j#Y^eXB%8{z>;gM4pFf;iH{@{qTS5e7x?z zJ^JOx{^m;$hrjxzb@T{%Yrjz!`Ma+#jYQ~6q}N7j>uMr**3?C49ThFTtA5$C`lYq> zWuk%3Yxw!$vw!tygoKBP=0!X)`M+AkV|qw5RY%B{|DR@lUlbvHp8x-z2ytqs$}dr= zAwT{<{HVhD#eblW$^H+Ia6fjR^B?I``hROSW`(r3Z{^*PQje{Xnf>ZFAf~#~*)Mb5BN+Z41vo!1LP`)L8-?4yv>y=LYYy1e~V|s-G zHW@77+bja7wZWEE{70h!;Tu*=H6r^Y3T)a(maRoth&EGzYbIMw-KNQlk}Z#Toafk! z_Ne;|b3{ur)9qt1A3aZ|t?gwIH71`!i{7V8R&Bd)Nb%7K)e4_++hgoa+E-S*QfXJ6 z=VU$mW7k9z_h-5%wX4Y{QIq+z%XEnv)tX6Vik#U+dds?~hkl@R@w z>iOrBilLhFtI`D_dL zEr>C9v%xNJgssFD!;k4%Li@$;el5ys%b!kGoQY1bCA6_?cUGI)5p|yv)rh8Oc_L&g zTj+3^$+wsbLhN-~X)lQ=rS8VzH@!-i={4cEl??s+LQL?ia+&`dHQD}2B~uua-!)k9 zv9PI@#?00**`ihyCzX%vH>sBUhFh!L^@`5lWuBnjq;YSO^-#Ic+u135Bfo=do!(OS zJ=^pQZ4u>WaDsiCdeA6Z%if`Gt30MnnJ^~#UD1VaiKNG>)QE8sWEyW8Y>YOus)w-3 zrS7^0>5I*jBV)S&9DK_4~TJX2YbU^3v1y&W2h8e_&z(7?q0^m;``K~eQ)HR zO*8h@d=u^Wlp9(bGm7?W)ueNFD)1fiN9n{A8=QHLw#2+9R$zZAJLpehmFZur97p4> zY{`1%hfFR7X*cbWOUY{lJ0}}he#!qWerL>=R<3IqORlnf z9s0NF+Tn`xzV+A{&U+r5zjN)DmfbzUPgoh>NYz~XtM0}0no*wiKEbMH{1|`L{65_# zZLqAZhoKK=2LA`T#g2CF;I4he7QQ9T%GM6DLbIDfLR-#a@S>F&?@AVR*L`r&9-5%# zwlAgJF4A)UBo>(Tdv+j`Na-QVac&MH^M?bL63jB;=e6LD(kyk;8Cy#+%UuhN`+ygg&?4R~WJypknXP<>Vz!h!CX_uA3oyY2S$d1=6+{PI_VTO5%$=m^U2nX5_IiL;@4$SXReMa zaEfU7(+bv0G#&PJDv|jyXUxXO>Om1O;ll&k57E&3SeRZB;jH#5%i-4;-h7pfc~#O6 zus*tA*qIcvwPh^eao!K`3;(KWL=*8!`jHlh;W>{_A699T6~_>x@(awxL?k~EF!PRh+vQDmGI&F z=&_6zsmkM*`J!DjsZEzIp%=yDDLq>F4jmAWXN%Uua=CnmQO!qxQ>??w$eBKDzdIZ?*tZ4+#an@Ag*Kt}Qd>>alnfO>ViJP-ZkSX$_?53kpg?1SjRSol#i#_3>TeXF*^YtG`AO3!NHsGcl5XC9<5$C{!K`zr8@70%d~ zT8U63#C3y>(q1%fbQ>L9E8W55YDxU!bW)Dl0y4_M>lQEtjjGl0*0AE(a^Fqk^zXDv zF4G0=3L)N@lw)S~05awMd7bh(Wd#?sf1)A2CaH|GBWU%D*Cj`K9*-CqRMhx?<~A58yUQWQ`pZz zp~cvQ`t=`6ra~aEwbUeMgk5{93Zf#B*}^)khmxwbsp)$QPevI$sW*o7x^erLM zOt0py`ylLVgu((bQdXVf2<#IT(vQKugffGbg3>fC8e^EnIq^Rdm`+M@d|fj>$}93c!HQtAc8pIRy0Cc z1Rm$zwUGR49|cFe5jGIF)L`0cumbAlp>}OqU}`2l^en+Lm7CySHxzD^jR|iFZ4@;z zZ9NQ@%jJ^zHAyQyC8Q+i4^&SjW-GDRsexl&Z{tT_r>HjdG%GPTit4OB#b)`J@h^5abMPz7{xK1@l?d|-1d18GmhEuuYhuyMfYB#J zv87beZ?cVI-XOaRj;HAb|5xYmFPhnYlXOmQzr%OWAlh8~0$Q!-Sf=;I5u+Z_y5i!O zKdI;NYaO`N@(1CK$F*KN(4O9@4B!)hlw|Y{rnvm;ju@!N1<%teDCdcmarK}lY~MEr zzf{n!at=>&fZx<-n8r>XPiVTB)w=3zZRp96OWy$d`d2y-7+QvGwkPh4!@QFts*g~Mpx-$ zQD^zelm}^4tTI8wa`?4}E8?0_C8M)>E>MgLLcEpsLy|B!1N@UeT6-e#+v5v%O`y% z*CL26`T@r}wb(RF9hA2(iC>rSoRZXnaW(5fERkGs4xiN8Yf^d+zkpWiorJJ((&1k> zXXZI%U+%FSeqE%EVrlmNsn)CXmZ;16Cl=HTG_2zFO2l0+VSLDXMIhTc%sy7(=d=1? zOIh}(yh=oq-W-0N1GEM0vdBFX^dsu9Z=_PKtD6VxqLtuZE>?nn_3|qF#v#^0KWhF; z=0@NbI#FEB|N0!zLhbN^Wb;&1Ek(3CL9eKx_RT4_p4y##=(&MjP2LvMjgRI!weXmkqQRoOsD%swqDQ-~B?#@*#FEU_ z56{y|;8#VEj;hdmEoCJgW%~yG<9bd%JPqb@9Z?S?f+;G+_FIr;Q@l~4VNO4MA086! zbh{!2x5f_Hpu=KF0$C2fzGfcefp$a}@6o~bP^Y#F-0IgbEzOAM@k<=^RkUg+*abkz z*QB2xr{1!_XZV-IuieeTcJ@o~WAQH6492?M^x9mC4+e#qov$;LZ8FGhAB)X(i~j; z!gmR(B1DWi{xwSb)W^7|_R|K!O zd5xi{beJOC_w23X3_!L%XmscKm!lt+Nd55FosE5$9Eq9AUTFq|#W0qzBvYo#7*d{lw3l@A{;@4` z4ix-O+RP$i^t$$Cc^1=4;+9xZCtF+e5>>~cC!FHnteo>N)sIyO<8=B!>>MiiOR>K53t2;8|Ig*(RSz?J#96l&B3oedQmGs?2R#lzHdCt zi(>Hx2*1@f`sDB{Z47nA1ZJwi&zn?af*?Q{s6^zM!><8;Nz}s6gQxt6Oa!h<10vW) zGgP0)ulHnh(Ox`&CHO7Jbo!Ms`h+|2Mvi}dN>`yD!t+bmYV!CpAY#XMFxS3(qN0J)9%LetdHk9}+`EeWT*=S{<}^;Z%q5%0 zFTfVnrNLY#3&&U;`4D9j1Oe`Q5)Bu3jB~I8z}7InYY>B%bdta{AJ(qU@~?Ek80!X? z(IZ$Li%fwr6UJQ0wWaYKe!T#U3rPDKH3umWkIJw)LASPGUNiXBj{Mipff(?{S$@pe zXM_$HEo(Vu9C*mL7r5h$C+kURVDvU{`Mf$U;O7$+@P3K4AgY^Dl1o{u>I+R{pqSm`CRLrZyc`1QEiWr7Pw*fHuCR!j?eds&=Y zBAD{d=!YrK68f$v&+6;haoQltV;b8OP|WDN+3aPQC$)n9pnBKo(bGx#NFhj~CE?0Q7G5T>%Aipbev%-WOQS^l+f zM0*8}8*@KL-4wGCP=$=|5OkZn^7wU-UbY+s2B{4m5g|*tosRN45fXFx*Nlq;ka-(v z8{M5Xr!*|woc!1LBS)-S4iEW0J8jjr`JPiM>8#bT&PRFv_2-0Tl5A^St`~<}uEZx{ ziA_2Dx<&3)+2=jz*cHvt*_K6q%xgY_UzNNI8oq9@QSQX^?Q9_$NK%x}+ShRL!$x{y zs0t%|*P0j{stRq|Trn^)*i;oN$n&pH#TCo(5}%4ssFBYD5px<4({lN*3;dXH=5?8l zS@4IyQ9dm@_QE&*pDm?d%Hh{YJdy4vUDReN!4UvkrCFYk_|-FuU(te5(G_vWY;?7m z?b<>(2RRFEVM|Uw++y~c?)x!&sXr=-D)oB8&B0_Kk6&~IQ32lb2Mdp=wLApDmK~8m zmQ-f&tHbjG|3oBD*b za1Tdz+lIY=1ah>}4yANc`z?isF`k@$_>uGpvd_e9XO>zEPe^~+w_`UC9^qMDX;OwaOp=T2#bYJ=IDn9yBrN|40sw&Ybj*6 zf0U4nEHDSZQs6Sd2(~Du!_lxYK}*y}yllRlI`qRBMmS`{8#}au`%?uN?mxL!gfkg4iB}5D*eQr5=x<5Z$L1KH|yoFT9O%xSc`ToCvgN$+%_q zCIaLYtaFBUFB+o>5eXJ2lzy`96{7gG(!@`(reMvf=lLvtK|k~~*=ub5?^+N`2!B>N z3Fg$OR_|4YDJEYJH>5IvXmGExho5b)-Lj=isU|Rmbcvy4R8#gz7c_`{nZSN+mDkTV zXRK^-8O&ibRh`#{lp)tH9Q{z3!fOI!;sn28Fz$Jtf*E`=OzrYHvVP-0UwKTs1TOQm zD329=f!#wJ#qHVXT9$C16OH8`1h|1z#aX1@Zl76crr zZ%9&82>!K$oabo9xR|zTJ09x;Y#p&89VPRj4W5Ok^%;5mdX&zN1UeIoy#?N`k^WBF z<*lTHJ^k>{EQeoG69z}y9>0b6f~YLdUhn*P+_kT=KOZo9wTgDsrCdOaFq{8U83$5taM!|GIKU1! zFMq(dQ+eNaL|yiv@1MGFrRkH){|;yS25-4($aIu|T`NNLP|~0f2OfC-O(TX;6A~?l+Y&;}`V3X1~z)fVsTXjI8Sn ze(^ozxyu<`eXJ^~Zmue1ZQf z-5I_A>-qdwlJ*;4dk7=^TiJ&o^CB57Di4>fjl*Tg@x;_L?CUXsw1r09iBJaoYqj|u zUdf9ZSea{IGXDi^nn2ogH61Y<+e>!Bk0G%F!`E~8H9;4JOM%UcYD3?ezyjpfW#Ns{ zox`sSp37ZL<=f8c!~B@l7(<*H!p>Zp4NdBz&9T8QRqBT*16UlmjUe-;Zr;iE7(b>v zI<*Y5X7gWv!(TDN3CM;PICOZEHxB-Vh;c2f$#VUnh6REO%7N4&Nhi5C!nOb%1_dfQ z;vPA5EXF$cK4;7p?5mL=bcD3GsFwTM6~P?8iuw&7V9Q?9+3KXdB#=1`fyTtVPWc$S zU<&!lx@<|>$ycs2QBV}&rz)F@`~Wg{y@W9iukK*(IRxY=czB7G^F%T{pwFq_I8NQ@ z<2BeAIAbWGmB%&2>X^m+yngr-wwd8M7VPw8`YPAcYIH^7!>8HDp5IDV|G4 zW4w4=xq^QsnM;@9+G)BVWXNv^dS*S~%kA2599nKyI9qZkU%#;~zL`P-CSx0^Xt=XT zl%^@gL+f=P%jt)Wd}A_fdDpXdG>{rADD}hr;_-3sH(8XNdCB}2vR%SwC}Zkgwc$6# zCiKJeQCO3qKj_*QziF4@sGwPd83;Vce;U(~5r{tdrDS1DzMnzxuQ#D5K&F%LN7f?& zwvHll$0t8@*9-NBh^)$m)*d(op{!bfe`zdENG?S3^@rc1jq!2|wCkOM1HIK*c!RTb?H&0NeQU4i><9`nTux!*xb454TtC zl=>kzqx6i4&Q`b$Y%7mntXB(XpdbD_y~w}BDOoyh&g94n-L=rvTd0fIw0j?7|B61l z+k*2!#IR{?`1zUmaJaa|vN2{&R7j|;GfK90ziUkmHdd|Kv^j@gpBh&LGFg2Jie_cP z2;52_-r(4ov-nl;KD96tm)S-`+gOIf9mMD^Yj zyJrT!7QN37i`;l3v68+8$j6zb+?!N7-1so)d4ZQ?L&+%1728X?e0FIg4LZ@F_c% zY>N3$D$8k1Ank=j7)OO$416c2A0{7sDuQo+0AbIlR$W^BfO4|^PsW|X->m%5ea}QY z31x?*^SFU{1K=BDCq2lz_ULo;!x1iahDndZoj%J$hUVFjSZI;Sy_GDXI(C8jL+)g^ z_p`8Zls6`Wec;qD6Ik~CynZ;rX86~+#D~;q_zl$Cd=oLGKcQHzeR+&AsTRUKA?dtT zR2TPUlv)9AWBE?Jp3@K4v#nGiI>2)P60FGA1K?4Eu9p1 z-HRt(wa|v&xI(M=&1lF>x>#f9`PXmQnAv2mNmta;WzjSSYSv&~6RYfyWNn>tj|t-p z^#;Qa>xq_I0h%@E94GXOsQE<#Ow)bOiGnnV2s{Avc~HubU9=RMCj@QO>9I4eecAH| zDPf1(?h}C;8a8FwVQGk7DGb}-r<3lwbMUVtBaQvrR(9Vei)!p*w?HLqgZXA=`PY8B zqTbB>Bl>0Y)gBPcl!MEt1e=3j7ENHe{rjJn`IH7b6j4I$a+N`xbNs8E5}nvTTT9Q; z1l%jA^eW?(Y|RPn0z2>8SGM4D0SnXF9ASs$bZks#wb*BdvWaDI%FcT>J*D(ivicD{ z%HH-22w;KK;ts^C&uHrbc3i&0sHQ>24B7rVC2h+hDCmc)>5ma-U~e+u3;oD{ z@hJmoWzh;yXm+BnT>k4E9eD#f+s*~!K`fI@grU-)3k@TWUu~k-?(e+M!7mDP5c&6v zgDfN)dHkZ@w!nYZcd~T|CZSzGLo*MSg?VsCo`1pfyZRwwEhBWVRvLHeH~zQ$SNfcz zkHu)JrE#$@t~m7@FNe0~@oS7-8EE2bGR>C(qb^~Q4u3BHDi}rZUCT?_m38b0^3+df zkO(^lV}y`6%fC=R?^XMOR+vR%0QK{ZMo+T-(3``raVRiVKpD)d%NycFE`DKx3*i$S zJ1tu@Fu&KVN^40DUg;^3ohupY5BZ>x&wss7XYG|OTa(@Q&=I`e>Ll>=h$qB-$<|!{ zYY+cKU2gk#J%29wO{;;|82YF=&72A5^uyiqwG@{0C}_|SLOccj2a8)GHs|oGh_+Hm zN{f}=F5q%S)aqU@4zg%p0jvO^58SEcAnag(mcsdHh<8Fs#Pb zVjFgP4s_jaM?2XU2(=JW4-dM}k@>GrMfDlL)^+rnSeZp3#|`wSuK&+k1D(yaFXX>i z8m_>f@_d;tsmo75%y$GgX-#wW!<|i8U$pgZ0{@!CbC%Q3lix5y={$bzBGeYXuEjPj z=D(tvQH*CHJw;13L>C{reoWSH^w8s@L8QjajRw+Q4=?~3tTM`(O{TPW6Z%F1o&;wH zN(iC84TtZ8$b-1W$mhR)B98FJovWWxZsTw9COed@@G+cNv8BDc--Y^l@3bAx_y?5J zbSVNM(SX=^k=N7Q`oqiYSV7${{F%B72;-Y<(9)GIqMcOiwul^0m%5q|?M#AAyeD2G z>6Qbg09u*Ynb}$X6*SSu*1O^;1HhPJR+T)_4vn!to^{tkQ<3dbEgMxIl3>btwE#sh zY2eq0M}C!Cf9R<_3`Q@@HZYzfj$%Q77Kn)K8T`6QX1i7$_S?!SXUzUgMMi#ty^zPR z^S-w{b#2AJRzBs3H!Q5z61pOmmT!qFIsRqKd1O2@xadzYP9$ZQ%-DoK@Dl@gX;M zQ@Xj<2;n*WhyX9>SAqcgMjr$&Lp9|qOc#{P_^<-#iSdX~02KIEankh3Xt35@i)=x& zh{wT>BkW^uckHoP(L(P%BHrUmdOS3f{{nt#8(%ITlw3yLAgZmR4)!GdgI%31S_@@> z%kRSZFZQ~bf)uQb(Fku4)e)r)kl5fUHuClJDY{nKq)FJKYsM|VL<4Z;^xOq%B4-F-@~ej{lhzbv%Q7FlMDv`)LMkD}WT-y1{SU`&q3rsuF% z%ty5Kh40WyqNcMb4e|4kxFhSGD9rJ%w_@nifw?0jrs~O}m8DydWbep$m*(pahw19% zzGTpXE0FxF`X|cm{JgkJl$^`wzfQ}@iV&Hj;kmhV>zMKhT`pUqDm~pf{2HfEj7U4S zF=GBAz?LL6(?)HJZ_fFzFIOI9&<2s)G7s`lXJTjRxHt%OzzM!A8FF4u{h=oSX&Pbb z&!{S@ZD$vnU-Lly-pSr@*FsZOur1T2T`wkU_(~KadVa2y_NBh>d$iP4vFE^Z4~1KWh%P>v+%V^vM+8A~EhrtTDExEMGtW z6Z&5m;kG{I169J7zC$jG`dR$41hVZ0((Wc|A%;+jqny_q!ZMoAf5G|_6@B1e_2ST` z3LNc&L)&DBB_qq>*ZuGtRvLS(Kww^@dObVUf}{z~-NbYJYq7SCObhlUflMZq;wNY) zuQ8+9!aRO4l+9;DQ~Gt%eVz7qD8Hni3n+on9RIp$kM+lUoswPn4NMR<+Y{P{Fe2z| zIsCc^*izQ{rn*tTVXYe9G9`tnd>bJC`x;8wpDj-fr2*AIvJ zMh!MN$s)8d^f;BZ#}Q1@*BCy@<-gL@?HPc#@iIg3(Dt%2@kRsz)kyRfrn!D~aM6$H zb$jTI&=h3eBX;9tXjnNc5ZF(KJbC@_T=J3zUMYRuv{S$UfKahIV0Bx`)30u&kY>XN8*tWktk6%|vp8qOJx7N~CaWjW3FHeLuRbstz{Ocn^ z{k%n@-&9`~z%SJNn|%WDVLZ>jj>!;<^Z-*W$-h=gr-z1C#^SU53-yNwg8}XxjF;1} z5zYe0&e3yap)=9Jc#eO)PZwbq+Y%K4h`J3=zf-XQi%EQs!S zhxUu=n71R3Un+GMeXDF+Z8x4{H1Og|0NHuiPKn6l*M5HOo*J${@)uL$vRd2*B6iu) z5B=FZex0K?t=jWMfWIHc8f>i(I`$``)(rLOIsDqCZDhM`m=(&RimJuET={}De6G#S ze`)hXc{Vs!`ghufu9_@z6HDkdyP{t^35#>yPjn&5Hn{nA*)rziNM%lVi9JU9xRn9E zm#R+8hWr;hYS;GpI_`c_L)pB*>kMMdbv?ch^Z13MD@LOS*{(B$wNTgew1R)hy_!(w z;MbdpMte zM=6(PRR#PyEgJ?t$>G460{t(nmy2{Lr%bYXL z4nRw#R7tkx@Jq_+VX;}@)eU>X6h*k};+HiCzi6)t50DI~P9s=WI7)IBK(svn!bvy0 zjh(1JJg8#s+u=ZZD=~MYWlsGDyx-sYcP+R@>Kki)eGA6fktjIhE(D4Wj|+O_+5g7V z{v9_C&?{!cBpf5~i#105&(5je5NWC}^^48rap`too>)_kHSNjQ&#%;eNZ~;})^e97 z%jSzMHle<(h6PgfN8Pmu7ObIe4LO)Q1I5kVX6UlEGVa*dVR*lz)GpV{@+_(RK8Id6 z$(9%!5q$SP#7-q}mde(@0YQ?>K7(2#+qnIkYKPbB_+T>l@+lN^B9=}RwYq-$MEvox*b^uwLB zzvyuf^uv|*Mt*x+acqI)gSVrQBc9`5JL!N?-K@X8qn-Yzfn22IjIU9JjfU;om$?v` z2obs-XWu;FUmaAmFtD2TnN?Fbk(ze*yv%=1+l?dJ7VCe#9J*nsL3t2{M?PI)8o4NvP6Fcv{jSwiB z2ySnc`Q@0S+n93yqzlH`5C!gm;=v$SK=dwci4iy>KWYR5T}~f+(F^J(yC46GZY9() zrq^0=v%S{{Sl+&P#I+q-bR1R?dBXRcek+}}p+_zJ%XNf{COWp3DKyK!US-G%!6(41 zen(B&ZR6b+QK0ho0{m-=Vi*o_(ZUJu0I5bD055XH zL>I!J)xRb87~lE;lH;gITBc0?>E%nK*JS);YfRJ^WT zq@DbiDT1BAuWo4Tz6aP^*w-qKPfA_v7W6%OL6pbJg7GEV22mraBFltBS+FK9m2t2T>ff zL3xs^mqKensmA%ikw9#78EnUS&t(N6C}sg<#JumdZH_}Wltc_w_c+lU&*i^-_~)iX zs{sg!VP1y(7YK_5beN3~<@qneo&gQ?0Whg88m;P7uGi#N- z?KuRuSJ)~jipm++zWQ+P_~)J#&7q7UX;%}Ea33LzgSk2 z`7dP2XZTmN;2i5^$RH#)Rcc*0k}NS-&LVbWA1ihB4d{orV(w9tG|M{#!csqcpEjG1 zU|ub^y1d(3^d21^ST1>Pp^WD{OLpM!+TrZb!`lqtmnrvHhi5=T*+z>DiN$nt;}g{m z|C0EX)Ny@=>=QJ0n`u5|!0nh^HsFY|fpoM{gY!JTkoe`SspTm{UZ%XgsFN+Djho6x z^v*|qM;m1RE5_1>(`Qh-jz+uc%8Q>w-37`HvuoBbc!%B)t70HxN14+{)^A*-o2g`_ zjv`*qx21UHRP)*Z=o$XS3*NSWo?2k~r#3fg&=1E~|N1Yk(x-^<@f?FX<(LQO_q9D` zl&iXw4N(^LbM60)XTZP8lls>KRqlHxN_9PLo+k8Z2*|SeC^$X@f%3SXVKep>TWGT` zfn#5h9rLKGGV}}WnZmSz*M*9ueEkM=q;##=c2TJzC!sIn@Qb`Q;ve|0Rjxl2l#Nf7 zH=dAThPWgeU-$3#oQ@$@-|l}Eg;Fs&W?@Xyn5XUuq%9gbd`reRsYo5WE)FkBZKl&l zZ58m?c5srtAR#HEi54#j8zjq{=U?#rqMre+swK2#v}9>ODvDWD)SIq9)Kq+*fLa(~ zJu=j9Mnhu>V8Ldf1Ad7g;o2AXrIbn;;Mv%aL1}Ru8;RWYvTj1UT>5!rj-*);hAIzaT9{79aEofD}b)WR*SIesu_Qzkv#UJsR6n1K zUpVVATKmwpBaF8X*v|u-W|}b~Juu{k#l~)|_8}gUssPw*Oz1%h+tI zM*XL8pF~Xd87w#_V=ddCSb%w9-M76eCy00+0%@Lq(Sb#XPJv(IfQiP;{Tre<5U+LZ zOP>FF(SH1lUdEOjK9H);>T3(XN2o}QX@7%#Xv*)B{0kEIBqSZ5Y}lI()Di7tp;VDM zhkwz<3?$qMJ&1)v>}M&`ORRdq7xU)pH?%2+$h->_M%EuHiJ}-ysrY10{rvl&U9}I& zyO`*RS<8!4f9V_qTsHGcQ-aalwJDHJJ)P8-!nMNSs-d>xGj7u0LF9*d%Y; z09s|$Vd^K`^{BjpP#&shws_vzSxh^$NWQF+c?Z~=1ezj~-5B0Ke8fYb_ z9B6}VD9=-WjTdEd=a(0avm+Yc20^bX
    q9;T#W}0See3llhEyhTv0e_pP@BQa(^`AWFSsKcK7fm)a8Voi=G?#W4E0cjNOT5H zK>Db*Z;&?l50axr;nhvK$4uClFwEVUyVQG;1SI(RBpZxqgkpQgugd$QP@Q!?)TcO5 z+h4LD4j=d6orLEfbZuGCI8E_GK;gs4e_;uVb|_gS^sl3m{ho)(d5*`pKw}A{)K9iv zptlg}`?EM`fRj@rsP{A7?~?V02_Ej;yf^T^x_Q9akT%JrthNJ-YsfK+f)FLla8^&2 z%FrmBglsr2WK~{b4*yaKa*eGUOeU2=BpdPoDFMiG{Ocj)FeF24%^F8MxM0M>1m#JA z5E5ZZyZkPBe-yG^60My2d54Ix%V4qiWR`yw;8;pm-RXIkp<<1BR#f_4SB6@ScQt8S zI+TcOU%3CUbaOB;a^DaOnu!tU^BWN0;oMCGLgLKa69vcMTafD)EF=UEYgHZ@+)}7O zGg|^P_%(lzhO&7Z=g2}dXjJthKCGfmJ>iHki2B2r95XGtOs{jCci7)uz-)2IEJ-OF zL|Qa-YJ+iO7Qc3BSD|$Qwx*0z>I(L>lnvqen;n7Fd5)}~KT0pze(M__$@(Y*`VY=T z*tKh`2b3KDT7?qye$-~Pd}N-C1B_(-;cz@qmMF^eulog#1K4_`<@IurG$&EyJZeCw zH>#><`B%)dMEmZJa=;e5NISdAV^I`x&`YD`mENy_e{nf2;8*MjEwlZ#tw*qMwIe={ zg8D;B5$fklXYlL#UFH?YBim&D3uQK=HNW^X8R4($^1a=fnZ>Wm^ogeyi7~~bv{`E} z9$FxC(BH7PSab2~MNhfCnX{FeD3Y>a{|VUpZXRq$lFNBN62E>X%CkjNPu$?`NmNLw z^LzBFsI<}(Ejj&gj1C%>y;+vce<#u3=B;IKqT0DK1yMM!AJQRF+jakk_m$C6yUr@H zluPufx?<2b=ln95i;!qlk?qM+qxm;Io^1P+TF=&Wb-#^Ux$uMfdAQT%9AO5waWcT4 z-mi?C(-e_~9L%*Zp+2e}Z0T=DZN>-Kejv`zz;+Hc2Y7T2|Ed%R`3n!A&wCt4AwE|m z`PVCnN5EXz26ru>AEIo-0{1w<`2LPV!7A0d{+SIZErI0Wqwet;zh{)x%MURkDB&jJV`*( zk&*gX$&S(w)Ngi1I*WJB#mD)R^BB4zfxAT`gHDb@4`=grUIPHZTkf9ku^dHui z?eH1TQ)uMAJJlS1-9XzkS$~NA{EW8S4z3?rtRC=$cr*q#&E@_XME(35qRv9y$8{7J zG7fKDLLUIX{Oj}hH3*A4BwghwJ&8bZ-Xw~Xfw_EJ4!?N8d3sOO#nzl`eUh$+bQfIM7jFFlDwvu(9w3^|*?&S{{{yb`ma^FQ zdHEZ<9S3yDF@t}RNSmbl;{U>j+5^4US6-*7+sQ27yf~l#8lZP==ls`wbkVLi{Q_rH zFNsua-aqHhe<8v*fM0vrgn1tN{A#9rx#y&4jQjU1F&DptF$(<<=a;i=|H9+iK2mMe zA3jbs?Y?Zje&aEc^@n=4AD$FLG5;22yamT9Z5%N>-GcK(7!Po#Q_el>d6lMYguC)8 z)T;vS!dA{3xX72IPfkC?U7coa6yaqhL66E7Z%}@YH-=1vrDRl7J_r1Z_L+gTh}Bif z#A@tfdFT~+bFQyr=iRlC{0mpRwCma%TVzlnFH0PYJ9&oy%hey^{@!@`I(_YiL$uRI z*+vI@hfp*d1EQtf=ScpQf;aZhSGJICpzLs&a)d^xf#WpF+e{9};a}j(hu2IhU*MM+ zXqUugSwD|?WeQ`mkK|udqP7`+BaLX!j6gI zm=hbn?fO;ZzvwEj6RXcDQ|vfz5FwmGq?c{zwAnfJhlFc;OKUcGvSMl}fUHN6T3n+n zq|fPx@T(SB$qx7y)Z6eaDTgnEAfUF{{VtjRI@pY34uCB$%!MYdK!^tO^&9F^_yn(U&p0$;)JI|PbWk(-efj!B;Fp{! z!oqPl5Jx{84;?hXMpOCv4Sc&8;^F5iP}ncR5?Jwx?Y!qX`L9pRhIH{k1^Qtn<|Wr+ zx(E7UWOE+BJlKb(tlyAk#a8zyrjRwIYv$a47^Ed?0B4awE8cmqy0_SBsiGm|zi=aB zF8>9#C1PD#y}Fv>&7rO$87xWur5NbbF892=f8#|CTy7}*7Cl4Nyy#o(dIIsWfetzR zT7qhTz5TxRo4<&I%&W}e;AVNF6!7aa_eY(?Jr!$kbv3R%gz3Gc$aB760lD*ERN$&l zsGrCAuVhmejX%+~9yCtn@oSgyBD<>@=Ux``jcco;;KCU>o)Kika{A#e!kM)ZjIe=l zbsO-Do#4)x+hOgdoR_RWOj$v$YtT2kY`98ehr9(nl+}$n=a=bHtkLqnxH-hq9BZ*3 z4i@KtY%I#mcL{Qor6}qTu}rcL?iF$8H2_14$nWwPmn8}dxRg`cnAXH$o(*(O!RacT z3utrtNdC1C_n7HDxc2bZU7;tmfp|5&<_X*S{v3XJknM`G5vcL!AasOJ!-z~%=D+lQ z*dUkRCF>7|AUL9IW6ao2urI=t_Z5JVeWv~pRv`QWLv`{6VxH-Yd0Q%vUy^?z|HTo{ zJLi|}3itkARCG+Z_67a0?W$U*p=_g8(#aTrY&~5ms%t4m{>$};!pJ6Hemn4Af~D~= zb!YlxkUGQ0Fvm$!a7NXcd!oP=L#o*m1plJVgj#D4<2)6FRR;3+Z~T~E-qhcmz?CB{ z-M+vPJm*#;)%6JBAXpB+-la*q_Bxau&ZDEauBRl?{S|XMJ@kNYe;&UMVx|oySfng( zc+En+=mb0@E^3?9bNICzucfYMwb*RpUcOojFX~~Q<|{>bKkiX9<$F#S1PNhk7Wa=~ z%rG>4N6T$oGndCuSdzo9C_{Xx1r4UfzSCx|#iB%+#|}LRFOkEqTA)?=IzYe;Y@65} z(^nTRp`M;wVrAdTUlH;JV4nZWjAWo)aI(u$IvdIBhdbfx9A0^fy9eAVocfKn zHJ{}1YXbAC<*O~7=nsIc)plzTj&TKF9m(@Aoc)(^cqc>gjJ6vM?_!2e>>%=A6q9qe zAqaNa$-gtca+hG>T3hVA1n2U^j_;K#))P(=8saAA+vA%v`g6?n*?ly zdz37nXj>?Qt{r$O_>uhU7o)WuzCPtP$Owm^#j!SemKxhWKj;3ab%+K7G40v-t?2KyRnwUud}p|`!Yy3ob}WO zzRGKM%;8@&5rdiv*rG2q*U@U*TqAkLf1q*`eCSGG{I8P)tSr(?oZl^=$^Sib8 zvDvtM&%uJn7;32A)?SSFh-8;V8WncaKGU*`mZ49(>?83DX{Hu!lI>J+F54bl$^Hp= zVU8T>fFQ|bpFyojyw}@g`PS;s&rAZ( z@Jn3c^^5#g>ksH+w9zOTRvt5^dKyMcdb;P}S4PA6FI#C8P68y^J!#@E2=E@6|H|Q4 zq7;AiAi1MPK$tR7CJH@jWVrwlGiUf0@T*UIWF(j<4WaNRFj{5>_Rzla7w)}bIBw3` zmplbva{TiUlXqSK<0LLu@(*$T%e60g|KUlh_4t4nOv;9c!}nlb%lX!nLau$e`eBX4 zuM9N+$nF6DQc=j^d3thouL8g5in%X~YnB@U>o`!qUYX*!X`f(mle75sF&%t6kPQy8 zkcR7ssd%tug5)h&!M=R`p**&1+OQ@c;npWP=Cnv*q0l(v>Kiiuh4^qJm;zoPpJEp6 z9hork3ByGkldgS9{smmlgtp**+H0Q1!B9#$YfKuEg}(2CH+9M_Cixf6Nr`zUfM3^W ziEwzzv*J(yF>MaN_TV{43%&$=$NT9i#vdR+pa>yxCveb|&yoCVFOI!ey&6Bqwk4{@ zwfze^B%+zH_gZ%?B>&oLhDM6^1jeA{nnuyGxX*}tvXen`_WmfD|9Vl>jNbv;#c}P1 z1t9x8!(B{gfDW4b94G%pp?|@#WjUS*p?=WOXB>qbcuw%M`7Z+PdQ6!> z{b5}a!w4d9jtE4NdHjMt--r_HZU7nZ%P(}BCUFA7Z~t%nD+Bj_iv!Tu&*Ov}r8<0b z&VQ}b4x;?kyUTkE6q$a9XlPPML@Y4}zht&6INXnmq*?+zff^5bnpLzUGN}6Ca_*X{ z!kR!&wzsH!w_&zPEsjgX_qONrU&!VFwtPJm9!j6ZwHrct*GdmUKRlX0{{{Yq^70y> zReaidtwYkT__PGy&+soDS~Z#h<}1 z*q6jFdDN(!2g{hu*;yR+mB%k>UywE8DoX2jp8yF3BV)LObPj%jZ6$}+!U`}Rs*Q!d zi}x(~Al`f)zhv60c@6GAltvV*kzynMR)WkN<@pype{Gq}f5EI)P)NX4!Xu%Puipq_ zjmt&w40NPT*oV<^)E{mV6~b>}i#TiH{QVRQJ2MrR_El+V3k#v-2y0l26wcvaDPC@4 z8=sPMPvZRYI|V(OEaaHWzy2ilW|9ATo3@G-7Sdi+fBu$OVfth}z-9U5Ip>#m(Tio(W7-4pQ*Hlh+^K3`$H4Ye`KY&( z&0q@AF3HG5w5>2hFHpJZ3?8RiP_WE{bNV;;ZY)kQ-F zaosuN4{(fdXqV|C$9k>o&f}Myj_pk6KYLJ!xL+BgNm-GY!b}}(n&Dq^*G)iaHB=hNdJ}Q{m-;hs1MNA?RkXbP*up-6aWiA zpIQ6z(OzNNRp4JvdqqRb_D$5O6|(FXKi;7r$)z_rH1|#SAmVy#i9_ z4)9_$vdCo3)NkPaL%9|<`beoW6fH7YmUeW3Ge$mBzflRwIm{|G6k*y?i?IkY&UR}G z&xygcApZsCD^Rkq9N^Tj(&*yJe!MC(0k9q|M6Wa`THr4 zXZ7`1I8!c##IL=oX=;(cD4@-}y{rKkw6EPpfc_MZ|~}3<2bJSo4q}9$vcXB6fZuzvb&^c`@~Z6$(C)wlBMDC!>r6E zXIo!2RP>Y>g$t+vr4)$@G|}AYEU1y3Ds>7dfd4qjMxZt+%ESe#3Prq>MV4`tT4;>4 zaRh`0+@ffl#zk7xjvKSTH?y<1)H#7r^uO?6Q$Iewo7wqz?>BG07JkF~hTDr_q2w2V z!QzthhbTL|s0+XP&{Mr<=mY?2W99rIZF(FYdkeP2V^yf3bqT3T0=(+856sg5wHkQ@s)K3r@qqTCF@)u=DeJ{*b_5Dl^!`MsZ#UI}f0r zIWd2z@8-RR_XYeH9|U_c_4{TbG3KwcY2B2v=N;V-naFUTOtjJ$@84J=?AB0Tb1-nR z?g0LB5CH;Yuz$n&AKZVapSjEDen^9(p5NE+V?UehPVC>{`NK_9@FeKZbROGL>i1*+ z#@%7&S}Xp-t{8>m8$KT6O^FS$e=2Z)l!Fu2F@ItIA-xyuxQre3S7_S{JC2|U{zbkQ zUgEY$?B9UTB(EC#Li|O1E+F&I4&H6HbkBM3U+YEshYBPs z`3sx}`^q}UmqxB-X1nKtGlWHd0gf|%OrZDD#%t)k7>2pO7ouZ-1A8GhhN+p3#QY)8 z7H0Nm?x4S`VNdeAsW;s3)*o*2{2}*dj9YMjFRTeS`J~`vM!9RPeToTMeynNZFNyIy z?_TSDSAf4l97H{u`V@Uz?F@Jf>Fe<`$6v4}zU}b3)5r}hW{x-ob;93x1rv!8r}&1y z!i>amHoWuY@}o=6A956_P>RslR~7aJ-$IY#+9<*{zq!l~Cq+1|BQeSIPp;;jix~66 zM^$<+;+aojm8{1-{t2~sQm@%Xc{K>dA?*D8B5#|oV4#R|0Vfd4oPpnn_)GEpAydFo z>ZriR_ z+B6Q&&tqDgfx18qJ}f`VI@Z3jx?DVeNLX{3o5JNXh{({&@%c&x{=zfM-sal31(t_G zjC)U;7i!>{WB&4A#%dRyS?>o3JC_WRiQaI1%wH%Mn)~zb>iA0sm?gq{5F{8aj=%oR zXFpGTpA`;yHTnFqbD^#oEh;jH;e7;ANp(8ccI z5OzA`{~0_9_}#`|IWz%^vt~B6G5D!Gt1zuGh;hP>Yag8*i{r10+!i5N_yhHUd{Fg% zFZG?^0B-b6C(eI;RlSepA^71|lpMR;>o z0Lh|hQ}9>t6Xex{unU_9wujk)RMvSV$AMU9%wM)#m<9cx3SMXSX6kQoka=hD+wXM7 z{Ppkjt=dE3v$L5Y?^{aYiz> ze|=u@4UKrh2MD1eFLK@CKgWUC(Q>^0wMftLcz)LD4UW%Xko>?P_spQVYXyJd9EU>p z`xW(SIIFTRW{UnB^wI@L;`=vv=L4n<)mRjN(fTD?;+gFPe_^*gUpvpu^c8e$fDZLd zSsDk3*S`+2f1W{fjMz$kmX9r)iA3*As%h81?o`m>GtPH*{Lwhp$Z#(mJxl9DNRs>| zM=FJW#Bnu=`T0t@pXXO4n6WO{Ofi4>aYTsQVRLKYpVg-Bk@~6N{9^H?Zj2Z$f8B~m zO6{ojo=tt1z8Bsm^@U6CoA~R?9opCN{9zQ`aQD-J7~cP7K!+J0>i1VVdbY6XoTl@t zTXh!+8#$QBTI*jht8;i%hvTn64l|L}0PxIZGrxiT^Uy&lD%j)kjL!>UgM2sLd5N-5 znsG}rXPzfA2V7^3fYO zZzUb6gTJm)i8s;}1q&Rm7+XIu*{VDfF91LT{%2TZH?glvk>+8#*qFJSi9RS0DX1SO#9}A?GzU+eFy4 z1`A<-6O1I{uXDjR^uyj+d<#xS_0DE+xm@*AkXZi0{ZX{6wk`E8rf?Cy+SVL_W9$Ht zVMl$cHGjx_8iJd)1lV?{P~kkoInV)aia3Rc@6g^r(5X;OZD1RmhBXZkbd=#Qy#FiU z<53y4>lMG|q3nK{b()kZwc;;K3DQF$p70R8Dq(1|nM2O^F^>evpWCtMoAgt-I7mi# z|AxZ7B7Z?YWJZhmi{D>~m2}GTmEd?mmBK46w$LAkn*&JV^{?Mmmn6ayexKC)G^lzn z4z6)kkTOK6KMq5t5eNQxic{ULpw;K#z4zYxFUnlHp(7#2RP*34kgjssI_O&ovG z{Ag-MUiTk#d*)&wW=603pLTn~&D?#6=Eu{A#R0j`&tC!99RYe?KJMqk&AN|ao23ZU zRM6+S^){daoea2GRB1o*EtNSHa6Xr|l zX#-{e_K^&8xUn%V7fHBJmjp2oE{&RLL;OBEV9GvU#Z)3@h1qsvP)ygk`;SI>&C7IE z{HCsrE)8T}bv`BbLy}kanPsYqd71~PM@1lgQdCoXw!bIVDZAjaV9fL3`D@t$1C*B7 zI#fg@?maw}Xn}vP>uO0r`hzwtsp(*?=OV&4;Fa{fp_YV^&U`stt?du?dilBrlV0w4 zx;m#N%9g8qL%F#EN~#c~JW4!swN?o5^|~8_Ew!#-aw-?=RMY##UfQGb2222mf^g_D zm6x`?I>e}|RQn6*1bECys8udfGVndu5e)jg{ivbD7H}S` zX^G8ielmTycA&biaOXk<@(Z0tg1&0%aAGobSY59^Sm;@Z!0k|e=6dzhh16;CVdYiF3i&W+?2DWm&1$?ZN{y-D7SB~C8KMqxQ0+hXkwW@J?qFkol|lMo zZK}GrkheM$GCd;>&_2pDSVvD#e<)_$X}X2tye7(2MeB5UqOJk)0(=!c7ZPQkx$Fk; zxn<9a^sCEQ)gXVYT|pmqm& zFD-4kJSvl~&6k0Q>`P0O8Mn|x*&(GcWb_;c&7jDjrX@Bnl-;8$t!6+*Y_X8kc2MlzKACbcBe zN#{0?PtUCFcjv`sIbAV8Xb`8fKK=CElcl|<^Do4}jU+103cVJSECde=pqv2g$$4o> zq~wi%JXcVY1G$q7(vt$9nlCgUX{9q!$?bOch`iJwF9d*ZBsMQ^fZM!3!0q~FOyuSb z*v%5FLfHJE@GjD#3(%0~DjI~ul2|93dV*dL?=SUCYY>#O0HVPXX_Y*2gbt`%g7l)x zr0__PJK1q$bRC1x>Z~tJE%=)orw>LTdvLuk!@g4E^ng{Noy#9v{?77$F8{0@#5y+v zM!uhU;FTZEzI2GeiJ{Pp{`PrtVICs(fihX(g0L9DawvmgDzbASETkKSYOCl9{$ z?0egePA#nc+FNh`L98R38Tq__x7#(B1Xo!SS|vBh%P~PuGeO5XZGOY8TTh~FIz%7B zr_8VgFl_Yk&;+{Xxh)dl@kCqv+;o_!<8*H1<%poGSo@DY!|twHUvvCIt{vD^!mM^( z>5`ak1JXBIAyJZ-$r3cVQh@aME02u=?J|tnJgS=uIZ2|aaFsw4Z zSBf$`c5*xt4@|(zCY_4-Md{eQq+1dFG(ou}AeQtyCa)>#pi$*l-GXQbCK;Ln$0d1r zASP&lNJoNC+jtq0E6mg~;uJCI9iO#3g|3ApxXO~y zWLBB5{GM;|JD7SJ1f9Pe)nPj?x7n9O*$=8h71ng34XCJK6IJ)9xPu;1xurH>`v%%; z1uw@0&Ae>VL7T4R<(QxWtPc7HA0Px}J8gh$xl&XKHM@QG2p;ZB^0ppApk2}v=$1$nqd^af@l`|+^=?s=n*uNp2u8S_#N zAHkq>S~`U&KtT-KVO(Ru0-H>$OL=hR*lh}P)7@?}dYkzeLX+GT%is$_;6siiSScjY z$D^&ajzCYEom6-EbaHTz&Z^-+U$q&fU7#MF5x2Z^0y*3C!9s~3msfQMC;1xkggxD4Sg~d zKw*lJE6TTd`2pzUDt(gHEp-kVQ0XiQF6O$rVGIllAW^KQ;&B@RYEVW`gXhM>C#n>oq@ZSsTk}5r zkJ{FsxOL5f24ub^TcbeRxBFGpGWV4hkddUfH_{>sZ#B?S=vs6uz7ZNh;-?DCFWuxQ zjRFb`Fmn71^nU;zW+kl@!o+9i^73-XzyGQQJC8+@SZiner#A2lb&kCp#(!t58t3eh<#UZWYNH+Sk z2B#imO7}PB;E;Q-wF@e+MRGa?1+N4^UxF=X`P$r;4n`%MfZIwEe;nr|V;#0-*VrDW*MH(Lh7>jMt zL-o31k!@La_G?=%gs|nSbU0zlKB|{(8LrafbR7RoV+i#FP_{MXz?RvwdH3q#!In`! zwQ)8~WpxOy5+>}p1ZyWRz~gG`M#*KQCUovGIu9>L;6u`RIWl47bu5hk&LGZx=ki}JDj|8kQbY>O1!wM$g~ z^_%?4s@iG|tk%G44XoC{Y7MN`z-kTrQq_PSFJZuh@sj+dD)?$)S8HIk23BiewFXve tV6_HTYXCJ+!WAe)UwflO3jb27M6&B3H diff --git a/fpga/fpga_pm3_hf.bit b/fpga/fpga_pm3_hf.bit index 76dcb8d98b9abed252a733ac03141958baf91129..3b9372dc0190aeb8c83e2ba2c32c31ab3563cb11 100644 GIT binary patch literal 42172 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�d_5;~&@WJ6sQau|+pEed~j!%_I|`%6|>r`R#JZ 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 Z`(66O=Z|Ko#J|H@itu;pbMOD{{{ol%HxmE= literal 42172 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

    h3G9N*mMKrk=iH z3Lw5o6vQgai1Jw%A2|2h&YokLZ^s9`Y9NDb@CPg?bixP=AaxsF{tc)jB?%Il-FK(5 zUTG&2qHCq8lNxU%4FU^O0W^kEHczM|1IaA(+yEeF5joStrM!UyTl|Zs29p>UC z{h`az`j!CS)y>RCmAp(LL6d=z#Zft#UZgg@wm^T%AWCDnT9$gj)d5JAfuF|GgznOD zR9&r9U;{t{OEwTjQFVzPpO<6RysQWsi>qp!7f893mm`Uv4{i_(b#{zHY8C^}ipq*; zbTN=YSz7*A@UqH=idw!*$4m0@(}*5n6ty(<09Y`t=G7BaE<%B+0={zx0J!>JijoZ_3HP^6Ylld+L>z5 zk-auZQ|zhYWhVN}OosV=SN6Keu)Ti0ehEDLewlS^vf6`7fb{Q&dR*gvZ7tm*Q}c^~ z7WNIaR~0V@1nu*3_+0sjmluOj2e}`ra33r^Rsvynn;M1B6{Dh;cH&HPi-8Erf~tUy z)wFsE2p$V%Rq=8}&ldq4q+byT(x48vXjjorY0WPIK^+ze znlG@5Z(tRFG4O(XM4UE>WHFYe=_Oz?ENiFXp36GD$<(1GKn8WF391@S^njrK0Y+sc zv;y-ovoPp*5s+b7qPv($8$DVI0F#6&5Vn^;7hBxs)(~b*em3~@={Vx$N)V(GJ)e*5 z5--nf?yO%5MEG2V3JO?63SL+k({V${%T=H&O!EKA%hhxo67-)$Wi6%SQ1W4vrizy% zf>t0((^N9Xs3o7UbOqeR@z+b)F%!;sf8*jgi{k3NK82muAeX;i&i+8<^BP!5dbeS@K$tchSf!DCjFTv=fgk8?w^qoZQ@sn zT285RKP6G~`Jgbqc{~j2XA;#w;2l(y4GA)rVH&pFRjo>yM27gyi0rg+iga){NEb|C zG@b?#R;6rwQVVJge*|h6+$EWAe8f6;vcRiYL4#2mnbnlc3in~#pD0{W(am%dCixwR9#V; z9k1>1zq;XngI|S7%K4NNhZ%lcn)m#Cc3ipVmzEX&92tJ!i}GNwv7xL!B#7K#P%cmP)jZtBCGH!n)Q9cH#k#C(Ntw6PTMQk? zR>2=7cs^RC%gS^cb}$`2iEI35zZL+c z%V$KZJzS;BTi{lN*A5xPwp!@soNhID4qFDLAw;57Gd4Be)w<@VrK^3VPOvUR66qji zq09VS@TP3Q<8%SkFxY9A(-7(>$vVh;@|5aXhZ*dw(&a6hNB7a1xfLzGE-$QT27uKO z=`xjC)R>T+<9v8bK+gMl@GM3()PM$JO-1Q89tLeUM9l!HXsjcoXojbo&|Wfa6RWV0 zjslV^kS}WlAN&(@9u2Q9i#j3KH7wuQfh5x9GVs3%KR>B1OSC|s!k+(IFM6UdFMb}r za92J^$R;1KR9!Zq9sSGl0XjoPKgCy(UR?80pq{@tssQhO z@axljlCl=3sVewm|AS>YjVslm{H-6GU|G0a1IsnATm#EBuv`PnHLzR*pYj?|^Ce7} zFkcd%@~T*V{N);0u7TwmSgwKP8d$D@Phkx>DwuEP9fu_Re-v{_)P9m`2-3$L8s*<{ O)B*mUD=$k0nfxEa&@5;G literal 42175 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 z�f5{L3vnT!Mvj3pr}=O{*N&tJC}o(mbJzoMhP{!c@a0Vu()R0rL1I`B$x5cBmr} z7BfJ^wC8C(pNU`3G`*zPI>?BDmij|{Ws2>ql=V@FGxPWb{`E#vcM$B49p{m5->%*o zaYboCXf}g?;e_=IoxW82hy~Mo$hWI~jIO9|{wt4Pdj;~#%#{r%xg=t;5K*{7P`-X+ znRP^|eqP^Key2E;tsXYM$pZWcHrt>LM$hFu%leH2g5D@;W~GGE1q)^K3iep=m>%}$ z`PVJli@Z96TJ%c#S-gr?KFlht7xiEUJA6F%9?8Ex6VJ!$zHQuu`wtgez70k>NBz9z z{cdlbe+^2Rx2J3XUi}|AatdMf0+1S!6}(MxO!f!omt{%VKJTOv(XJoEK``JTe>J%{ zyLD2{=fC#Q&zkGD>i-L6Q7|jbkPi0E*@zszwX=2_zhwQ!--~Ex@m!p4sxoh$U=>;) z-A@pCru0Lr;#lr@FR@|{v(i?Y$5zn}IDA<#mD}@!a|h^(z-bG4z0#*N6y7eSatKNe z>Mo{!3;LloSrh3%s^x;Lt4#WK&ylwnxkBO;ektZ3-Cc+4JMKjBTVpp|Wff+u)$&ag z>JPhUxF;CaMO&>n%xk-h%6Xrs;b>?!j3}S~sv-FB814=Y(qZl=g!%#NkQo|T87|;g z8G&u_fZ3*DDP3Oa#Wz8MfP>X_Kc(wv5}D#)68HDQ-pTdP;EaxMqJUpA+(qKcy>*5+cIkoRwB{zT%AdxN6C%AeMo z{9j;OaOa)=LIJ-nQnCiZX#*mnEhx!IAeU4OafbBA3ib2*Nnmwwx(dLd`;Y5AXxz_X zrw7~e_;r!q_BK>*J?L2gXE|h}fKg|tTNcoWI&*qvR@t*o@~`bztKr_Q))>hC_(FUW zpNU_nJC&!E!*dpC$G_Nc->L(~AP}u3#0Ddc@xz?ul9(Dz&!FxP>{`jU-?mzvdH;0B3QR#e8dHqH15|B%9Z^@n~Jl*ifFw zuTr`)w}HG%)b-{G3)`<8F_J?q_u@oz0l(-o%`Hd4wHtE1+%xiuJilDPFNszW4vVWX zA3&eS1vaigJde)(DYPG4)%=O_U> z!BQY%MiXveZW#2PE1ds&cLdcn%%@2Hh1d`KFsn^ksNa~8|2oevn2`>gl0ezKEIX9K z0`8MJigD%f>%Sx93$4)iv=wVTivQunF8>I73zh=$Sb1 zE7vBEUlsZzX0Rimc$V;O<^vtkPH6Z$WJSje{EAgx?1-59qrFwwekn8P%sDrZ9*jKa zn{oaNUR_qppJ+edcLhXjby7VobL)S0ei>~v#8JC@!7Gc0xDF!bo^-=r&F8@{IVu=q!Mrd$I4=lah%9A?;P+-$efs zL!X=2M!l}X=q})wBc30@*|!!jO%bgb(ox0-78Df59R>VC4+Z4(m%mWYUyCh0aFB3eZb9V}~3l~WVY`-Pa$%xe{ z)#=FbFYSKw5Dy+rK*lsT-xvBa>TMR`zLZc5_?6|RoI`p4hGZNiDBF-`b!?@Dhr@d4 zRoRBPY@=&>#R0U560=yGaFu0p9!=rbbbLrM|D{BfQel8Z$+ZaQc#8OE^hfQK@3C*a zjQS1NA0mxH%a2YAINUc;s6YIKuEhXblNi@Ua`)k7!uhWgURm`qgM4wbTy`1HX(V3`gw+Z=;&6Vetw^hBLkM6@&v4e4q-vW z$E?j($f>m1#1#LUjpN2*C=g7kizq7#;2%-n=V@wjf;M=Q+n=m*#JVCGqAWX{Of2X1 z3H3Z;39O)9&=2=EJlI;mk%>K*Uz z+lF#$ku6%SB%&~@a6>(EK>H9vlqHy3306C;A6m+MdL&u(el5xl?H5IrWqkXlCuvhp zU6yyTMD9Jvf3+QrroOl;Y(7N>5;`LBauzRNqnm#^VEN9?gn>UTIE zj?Ls>xG`G{IjG+V!M&%rcUT2*P~@0zuR23N#Q79Q?^ahqoPn>yqTuX*T^bij zhmb?>8zQ;Nv7Z(pf$FK_cHAvU_;sLBqfSsTr z)E_Qu@|=WESe-54SC%GY*rEb)?<8-L52&@a1^pbS2$W2J5 z$x$7_a(hf@z%L%+wUwR)F(kr(1@RGSMDXE={Y<&%bNXQjH6G9*e@?RO(0`er>hpei zSd7ayI*D#fS3#!xI-GgmG2N3Acg?Bt)=(YH<-_C}&^0 zZ~Y|xnT_p->)FK>9_g&#rM}N@pwFu_H_y1gSF$Z{&RyVw$7FkMfT&K-^DhTyr9(6Y zTOrsOhJ*X($#7=yFT_znT$S&Uhii}n0+3;VRov*DsUNKF2y5=w@f(&>+eM*kJBGgZjL-Uy9|~ z(hXSUSH$z#Anu<>MdD&vQJ=>z8}7YDgu?2WiUCS@;YNepS(eep3dM|9^Ye z8yr`4-OqdbR(e{kthe$mS-`-vEbNWDn3exwY{$M@$zlN)Z(;*Z$J2SHo{1-=j0_z@ z7?NDAWg`<~6hd2 zp#d;H6wT}NgQ$o^$Vrw(}QJ~|b!{;NdT{8(hMcsV|&D?Z#nT}r0c_y!%6n8v4Lt@Qm0!muee7Y_#C z1$Isa{B<>CTFVUwOE?18hLi9Is;|zc{sFxl=ohnLlI?85)4cmDcDgsFe(0!UY5-hbFfbehFG(=0D+yq$Exv%r|Fbj!DiPd*4Z66 z*KuQHF@hr6EAgJdf9P5#+GegpA`pso3uY4chn zVE`G_+vstc%WV>|>b$90+_p4k3X|h8Nj|DZ}-z)JgF^EiYzwy>ilpJL1`_ zgv0HZa!4=;`0J;<3t+H$qVrQaKZu}ExAUxVwrxd8F`C2GgZ;};y;b>Z4%eU3;OjQf zxVFGb4b9NDCk>lr#-bSq^Mo?){+@P7!?3(c2cyx_iKYY9^{+oi&1Z*hv>yHEW6#Jt zON|Q&n>*`1DN}hE2yK_j~uk`%_v@i`6a7?#&-#jc~9a@*DA@xXUpIB5UMp zvh_am%7_#4mkvhj#;Zd_^`N;Zo$5pHeF|(vi|JvzHIIen{q$p+mye`l&CNMigFINeeH)0yR?Ys$$0v;RV#}#1L$?!7H5o?+R**LU)pjo z_4nT-hwlaZ%NjE=-8~W+;`J{pUczvJeK%}KV=r-D9egDp&zD4Oiaw~&2O9o!^hex z^sQb#gYZv}V*P9PeKUUqF#BZo{>DFr0rgA;yc6=*)AK*Zy6-P!M9}?omEpSE*!V+xnw= z2T7XC@$>c8_I&H_%w+2uhT@cicxU26*!I=5Tf4*gRX?Vw2O`(DzF%H?EPJ@|n}IH$ z60o+$u+<1oC;KwD`K8Vi5*~ZAxfHQUDVSkBTv*A^fbrtK7fNMI}l1+P24Rs-Z#i^HI zf93Myc-IIvedKf$S1WTX`}`%F?$r7*g#a((2oxP=MXoX9t)Eh)jGD$(zT<{=<5v zt=}0~9-6@U*e__S-E}qb^YHh|)ec(c_Xsy#_`_*=8(YuNgbs zh8zDz|Bzmk3&wEHWW_5x$8Ydz7e@7Q6HWuSk?O`1I8@oand;v2^o!%?4^eg$!{8}_ z_W>Pg9N2k^4#@@X<+2pmU#U|j#_-C5p~#2q0IcvF$$|&i1p$Tj*I~@QR#$dR;8D-f zRTY%$EZf2^z-dpv`2Cgd(|1+<=x}Gb+5OwqT#Gxvv4Fp_2A2y?=u^eICKGy4$?VX7|ZaJ{D-{S1rz3Nu}AKE4?z(>qUYr`@8Tf( z(0>?j_z&C*cGD>u!Si7HgoC8$0T-KI|DBtc`Rgzuf>bHaDr3KS807*}VtI zGq~MhcDZo|zeR@4Pj3&`zdZjT*h(FX4Yz!rH&HHeVK>#Re_`1RXAUFOWG5az_5i@k z^2-%0-c{GXxa>#J{a%G1AX}Nw=N~>JK=ezh{544b6YP1!x$d47n2`l0ars7vw8@@G!--bOy+^##0J z5C;Y#5Rnh82;vVlRjwk3&HI5Ikxx|tArsnP6*^e{dpiTayX-GNmC0ZL!2v=`u@I); z;+38EfBnSdIZ4anwjZ03e9Y3>_T0)FIs*S;Vn0l?*@ZM>Jme0VQ-}>=XX`F!t_!=e zyUJh6e>gDHz&?eXzU##&R?;a*T1fy2gTI`<^y$mi5GTbJ+nkNB=tgHR>noXkVw>L`v3g(Kga;lnS3&L>vSjE~O@^0KV$4=alE^icltRSo>ySk!nT}2Z8#slkhQ`oLsn zvXn4n$84+6708TsN4_dwcb24^0uTl0eT-9rdyRHCY?GUuFQrpQqYQ3OCjfdGKrg&H zT+~q%u6>N)wcD$g_I^Y5y<#Ij|M-F9yPYfxXLHt)gkE@s#RA><2HrH zNsqgU>a@*$8=Xti(VeteGSGHLJrI@Nt!Ryi_Gp{vc1pPltXF{6sucfTYx3kszX=!+ zcUY&_lI&MF%<+)NK3;bgny|*ggeFzYZ~hx%jxEh8&fV&LtWy{6J}kn&k5Gl`c&f>t1u!HU*CGt(KfTKf!ud_#JK58KEJybLzHKsg4_ z4~1a>bbv|$1hJJETvlIvwrO_imh7_u@>q+83tz^CUX{Vi+(R2S!9!zu%&6072W*!h z8=_J!=wv3eY!UY@!=_oxV&3J=3`HPi!0^GBthZ3$P$u15XA>_2?Ugax>~F==uxz!> z-AM6sGS!SgN_6Ue!c)pcoWTri6-7!Y6YJCW(V&=bF&JlX*$#c5EQs6B zqHUPY-i=e#y&lc^WW0QGs9wUFiA4|QHWSyg|2z;zZN$C$S&3>9uy+g_<;1uaUbbwr z<2;C2YBUo%75mbd&?6hpS^Z9?<$Ws~KB1kDZ}QhfnEJ%8S1 zcvS#afA1YH#S_5aP-gWzf$%vWTtp_!=iKU#-0*t_)qFyk0EBY2GT(FkUwPo7GTx)& zSO2YqLm5w(JKzh3E>i|h;Zk3ApTGv@n(`|Z2G0p7wIEhu!&05CDr5DT?IwCAblGT^ zaqg>7YH<-=R$d3vBzN__tjn?^?DKdmse3wT%DHx&mC@X8+OnbA$2?soPlXB2By=;K zZ0HjDs^7BEQ(2dze!G=2a&9ipDs0LHHtp7HblJqLgwU0d0lw}<9%%se1Yth0zSgpY z3eS3|F9xN)XMS=%lzNPnI+V#6muTZ&aprr)={FX7N*&559gL%XihWi)@mMGN7PlKU zI%qm4n(N^F70$;h_Zb)yChIbff2fTSY6HMn zhqiMITuvD@JWrZ&-i%H|(#Rp|RF?y?EoU^L28AyJUG|k7h zuDxn?C)5iMgkl$w`8-{I$5Y|eAD#a{b@?mjzrdLA`7(kZlb=ul{_q7aEX!%!C3BR& z@eBTBT5P%orfXoj2BvFZx(23eV7dnWplU$PmoQ<%d`bL46@0p|(={+%1JgAyT?5lK sFkJ)FHGmq(A)1fq+Tk2Y{HI8cM8g-U7+*e`qcZ=_&u92M7ykBt0KJf4Hvj+t diff --git a/fpga/fpga_pm3_lf.bit b/fpga/fpga_pm3_lf.bit index 593a9031f9bc0765bcbf12e5b1b63a0e88037c42..864274cca566de094dbd364e4fc389714277eafa 100644 GIT binary patch literal 42172 zcmeIbeRy2ubuYU1ySK#F%*eAX%N#WrvNaN9a7NNtHpVeR+LjF+up280O*rS|Hp54I z+&m-^q_>aLo3^h;0?Qx76GKvy%jq3EPOGLg9ou}E?=2&ou@N8~n&VKH3`9v3Y7zlX zB7b1t-+K3+nLUijt>5~swcb}$7oGP0k4U?TtUu}hZ#R9W z|8t8!bK9S^fBu$R>1GObesOW~&u?FpOwuhB?o4(r?y#@ySky_kQr)7Z%NKPnx0lc# z6Yc6hi=S`b_lJLyB&iY61xYQ<|7#{STO--imL!+|P5$R~Ny78WzqKSe)JLtiP=m#f z-{Z%S>Vt;9_xPM28xsE^66(L_|BvZN^}%myL*%t-IR7iWr^fr$M!oKAgA*blDMvP$ zJb)aOJoK2k3EXcf)yc%!V); z&I+4`seMJA6w^kU-$V0{(JAV7qj}vIh6jh}P`29%OMSvn?0L+U+_^+4b~rh4I}bdtKwD8I+%uPW3eO8t4$`M)vtSOD_dD?5Kahb+$H!&UV7Bkpl__4K1=n>gg46hfjdcv1N7dj8iHv77iD0uHl znGt%2y4+||ANK@XuS>sWcFAaR@UXXWoQnhF`k|!;c-%Q-^{k2(^a+vX?;5Eo&(ERU zbF$NoX7w1k(n?26eWABrsk!&lBh==G`^8cEA9Mu^3ups1OS4}zc=PPi-@D)c_6G{Jd2AT`q#6TjdJna_;jU1`8cgNfg~`x1Z{4TnkMOL@XilG^L)0mw z$MksZA!qsUoSot^@4He|q#5ca%)An`sL-eBG<8sot9=|Qj33jQq!ZNbU^vHYUudNh z8b2A_?|qjvZly=5-NCk*v^^p8A$rtp?+@QEie&M7nrd3hZG0hgrSasZj+?_rG6%f1 zFb#utQ^E;bV$2g7HZ{^i)aHcy#C~N)XkUH0s?QY7=(hL7)qk$5b>Dt*rO)PD=zMtM z!;^;BXZ{@w-~? zbDvmZ-c2ozIU$6nUrqCO%^Ld>^4rvUYmsZ*Rhs7?d&1x9t>!2tQ|M3J)2}#{+o;Xv zL>qK;Uaf_G$kVU5l`GGWJ=2869a3xBLs3^h}>-AU693Zaydiig$h^306W+|t*suvX-jG^1t(E%z+BCOug7$Dc8=Z_!g*$0Wwx>0E5FJx% zI#R7)=+CVg)-R=TZ+P=eRMx>GG^F7pTXd;57xmY=o_?jv`c?b9yoWIM){N%L{)Bar zQCslVeFQesw}-4>f5nDT2v>H|Rw?}Nl2o<{Z}OtJ(IuYo9FOkC0Fyi}&GJnp+sqd{ zCTUgai4b+?tqb&L*a-J=*+f}W#JH8%h+&u zr1xs~>13<`MDyo|@#}H2xz9zwR-A>1wU>=vQUvg8FGd0UdQD(BL*bnnMiBMH$1g|W zmom$*(KFfQ$>?w>L8ru07X!>z@aq&k%=$~SFQ44Prs`0 z>x|XCvt}27>=jxnVH{3+-xa{G*L&+4tu#g*w+YS&dh+lTM z8Sycf;Ptt3%3jVW9Kf%40b3mt=qiNO=;~zdL|h58@oN{iaq7A857dVI!~sj`m%=Zj zT?@ka#2|j-1vQp;o*A#zmC#V-bdW#Qr1Bqzii-FdF*?~TBqSd9)oRB zHZy=uJ4< z{vAN}m1*5smE@r_e)<04l=xDKI z{Mtha3CJGvOl39{f!#>BX0oJTR3E^vQvjg`&Y(tH`#J?^| zHjHZ^Vvd=-%>6w{MJ+@k=IIysm+A4Z+G8~k95Y`#xnr{#6L?|L(=QLdx_Rc0nU9NZ z8*u!iroz}AjdSkTtqOhx_}A415V05NSMHaK(8>UQoifyW9w1*h;XdED_-N!2;GoUx zrTCXT;ut^l|5~w!~ed>F48L-T<}JPKR~XSoAGDTbt(Zs^FKd zHUK5^E041uMUnJ*`4_vXP;(D=Qt5`-{OgZ^Ux}g#@+kgh`0`?ErZ!o@FAUjLoEkzA z+wXbp9ydOgT2kBKt$P5!*1@&z$wYGVPR3pZUr*fj-11rY1$WmYVy-O0B><@j;uo7r zKmbf-mlI)uc}gOy3-7yv{Hu&#Vk7NjE|Y!_{pVP{?%>*zlyS8H<*!(-ma^45AZMUbC1)Og>iV7o!g1`R^9 z&N_XeVATooFE;Pp?gcr0#8S}%_(-09F@9CWqv~e>WJl#z_esNdf^RtagOx5RlU#C~h z&O1%(y!eI21;p2mIapIi`#a#5vd_RTEnqWy+(_}3$);0o4kC2h$ui&j$0avfXHR>ypBY9&FBqO8g7>^*F}Gc3!Oo>^uam z+x_7A_*WUW&da|fyo-W(+dM5hS`*WHx8bi~Iev)YaM+OJhY$+pyCOzvT*D$=jbC8> zu8H8xfSGIn|B{K()fN6V_W^p`@ZyKq#*AMLwsJTTkn9iOm$B4cn_qcs?u_h48$Hh2 zl!HGXj2~(pZq)6arl&1975%FbXCuVfCaUnOse6AkpE+j#15ebn9(TS(-BP{B=6P25 zHPk-6dP~D=@(lw4oM~|>2Ri!0|6Nq^uS79y!fV<|Xp^k1m3#7ub>Ri#eE9V(=ne?W z2k0T$mJ6>FLHw(o7nUoNc2)eaMny9mF#-SZb26UXv_RWHmotzB@M{Bi z6|ki}GSF5uzXZtMB3o>;AOiTsUQ@V6j5?emiZr)rKKUDg~CPk5&hRn+r3!D2& z{^7oQhh~g!`k=g^sLjw{a{Q2mO9=6?3jfLlvEX{{Gw)SrZFXgVe;ve=i_}NjUjdiH zt*o#N3I{y@aGB)-t+2Hu_VYgYNT&4lqRtKSuRGDhaG!YDSR@iF%)Z*j8t(Idj4?=<~cWQWD9AQ7tbMt>H)zzo1_f9vOI@ zP9-}|hjYEJ(LT4^M!+_}zpzX$c9e$&QTsm~`{PsgUoo$&;1`{>d)zteKh$M=K-RLr zdeP_^jZVWNDU4(O#o_DC10kCphhq(RB- zpj7@I8>v-$-mN)FiZ9RTa6ASUr?E_X2rFoVFZ=lAT5m8~1w)bw{9XsYc9@{Cy4>r^r|48j)h*VBj z@Cz=wj1KFsx6YWI6I+M$9rUwocM=2i@oQRp0tgE8jy{`!+FjAx_0!I))UzKT72sbd zo$kKq!}^I$acElQ zzZx-|Ep(WlEUNIYeaw#8LMl_x7j;)o)0_NcdSw~Ejx`i0>B3z}7|&3rh4(zb%E%kQ zj~^E1ZlOD=nM@~U(GWE|VMkc>pwULF`y2fDp+r#QD;`=gY&GwMbApW65IP@>AIiay zJz*we^)z^+UBpBYtqnWm~AO@s)TR&b`_R3fL|NQ?u%O?Lkv*PiEkI>Y*!$Dc(-VAQZK=D`>7wc;T^0^ z2TJ~7;3L(hU-(?cY6!#+3)CrnL|=?K3ftxkuSGC^DBhx{9I*Z|1p(1*gC2gtl9ci5 zIE`voJCO+t=XoAr9|R!CimlmO%J}73iFi)Lk@kvF9P+B~G189yMV%D*3OPIAE(KKRg*SJ=mJkKTAHM z1@LPx*+LrlSLwTQxA&g!%0)%Qqq@cO*`9QCDu7?K!Dx2ObZmjS zL4XFP^*(tQwGF|$2;{%EQgg=a%XHZrsKqr$GhN<#rC}kJ{o(lG;IN$>j)*7?y7n~E zOe^h7A(0DP75v&l&lQrz$TGd1p0hh&k369_w;oD$=ds5s_$8D_l+%wvc*>1#!vKM3 zYZOu|`^@pf7e&v`$jgJkFB7J6x!!NRkb`eLq5JqHjoXmcX-~$t2oMc`3ur}x{(;&Z zpj80B(8ffFTNzJaTx<=;7>lr(W&BDYTG$RZ45m^!in7-x_EIh~Oa39p58;Os!p^`i z0rMsGH6_oyf?tMj4}JdS8%DN}QziU5gSaU2Uj=qEC={e#EMFDJdcUL}6`E|)jFrq4KM8`TmVqmx5jZbveR zU#HCF1uW&HG2=iz@6?aQo+W-y*z)j;`Pc5@*xTU;GCy>~t-1!kD3-w980V<0hmH)DO#;~J~-vBpbRdiH;*ZDs<9yMLzU&r8Y zbQXbMm?*&3+Wa?vPA_On$6EIWXeC`{xe5~ zVmSZx0`gyx+{z07@=RQ5`)wV7Uk7$$Aqg1dUxH2L;7?5U`PV-2&7aa+X6L#s*|6}w zYgYUa-0COtQCgTb??>#y;yLu|H&!tRaa1xWiyY9SF!-sjiP{o=A%2Mb7jqepe^~N~8@Ao^Z0_9^Js*pHHORkC z0Jgj~3|m-SdM>xP4~SN&-!S$8wxCwbzW`e@#)uY+o5Py|@xzDM72!U^xpiRT#%RE? zQ$RGKDPL6OzYs0tv170Hz2N!{E=MW# z8FW$~vw2Z~)Q3FV%k>-V2}ec;z5Ex~xAeNS97Jq$DSl|gO^zR$yO@8meocw1fL|># zR77l0{iys`D$x*+h*4YFx?~8(oZ_yTM4LWtWNQkxiijS7!hqC-zYJX7ki={xh3Tzn z9Pz{BvMU!!>8~Ju2-*eQp%+K4D&k4V(=We%!-1zaS#tRxI6X9{Sc)GyrTo{7{wwS3 zP!9;5SWYh@5oXNjmS+!9zu`P=waM^`!R^i?X4`%&N~8RHYEH#(4lVTU7~RiX%MGhO zTWw=l6lReha@Y0MVn{r$H1G@aPEae!wq*h#9Rs%IGBR_uO@_i9uHQIW1ZUi$|ABy)~t5h46|B@UQ6O%C1m$}ge;yd)O)Dkh>O8oFPhBnp4O9pKhU~CkV z_$}L8FOwn!2#|4t_s;3OkR^ub9>bOU1&-)YTdp8ib+V*6!91>3wDVGET1q|C*S0+5mZU))sXD zv;-I47sM~{xK+{ZIzqt$!VU-=d5aM8Xf}^s#Si-s8+=gwf*xPhJ{^9t_ZQc0HrjuH zwdnNpg7aVbtb${g^3qVa%-%%-&Qbus9vN(V@VVPMzn6M=e_K9$W9*D`r$kWhx&~jr z{Q5%~wRM-?=CVWJ7d>NjxsfZX@XJFh&)--(&Ew)HZw2@l%xPzHM6P_D3J7p99Z-G? z?`Lnly!s9JtNjf}4GwgGb{!S}0zt+7(mZyr{;}l7RK(H%QAuZA^e|gWKut6A8>lI(Kmo!o2XlwKNsiXmxl$a&wkvd8o#Ks z&$F2l2LE2{XVeVz&&jrAygkPFwVQVKt-iNm(s*g4I=t}4NXu#Dzp z^zZ0Ozc~N(OS&5SP=A@zUP{ookYjCi{>xxqxsoZ20y5@bJ$MqpugGJhD!91*kbx|e zRQwAC4^{ZJBOQm2giz;>G}}znWsRQIYtP_!T`l*0L&m6dVnV%rUo>@k`~u zxIeJrZ@K7Cqi)ba+3h6mE!Q7vyCNrQx>GMIToxrDLk)08Q#ioCPTPAq0t~;GY1fzs zWQc2pOZZh2r#+4>SC8EMhVhuzz7cNx8`fjgAvfoMO%AV@m;bWIfJ87CFe%|HSil~` zlS=*zWrxk$>Q&;U#s{4?ZM7qQU_Bxj9U9`^d%XPDB4%5M0c2OR@clKv&H%`k1@m9i z$go87^Gd#-{u%?B1frGs*BLq>7qvzT^E#dJuP(MD*EM|Ic`*xnIHNli{JK*#kEQw> z7W8h=n#TaFma{=aVDoknz^|{+H{JMgaka6*X_+vOiv_HVtLplN(p>}G5Q2d!7152 zjk3cZ^SB(0t4K+nXU4D75@|05>wsejz-8(w+Q~rup#iJjkjnJ7#3jWn5U6$uZncQ9 z$+7r7vIg}VHmu(sk&v71*b#HLh@(wnQ;6});Wnlbp*=$w1;$0g($-89xg^97DU>Yv zhs?j=@=-+2v#CIPAm}#iSQpL7SLzRsf?L7*_3KAbzj3u2od$j}BfEP#$iIF{K;eS^ z7f4fHVMkK2JLreG#k&$ydVqgzo`|J^R&Q9Fhg5k(yS3pz$3})ng821KBj!MxQg9tF zlcp^k;~smRG_$?2x&1sY#;?t^(=oThAKR?O9Lm-*(~Qgb*DLrnj;fgCt&w3ZCHC77 zvs-wZ`LFbtj6AT?D&rTA!s%dN0(L`2iww|orRfj> zq{)~*E!We9j1EEm#Tu6l?=nzr?R@mULB_96Cjr~y>2jHWsTi7Oe+(PxLu1UXz%K&v zL%)WqmHtWluoIeq4M!UerX48hm*QUxTdfGMG0=-fYj+y>WtHL^KL6q#+SU{;r;o~T z68N>J5sFsHf1!sxE8s^>S|_wF<|zOvs{^B`=3hPpyhTf$dP~0*^&8EEja`W!n)_;) zb~Q{J`?Q60y@U$^{#6G9@`5+^a{b|r;9pN_mpUKmYq&w%P3c}Zx8?lTE_#|eimP7| z$Bl=`ANxOGenMXj=D)zC(p$Og@C5pE_kHNk3EJb#*%ruu;R*M79=Ad49pf@zLbRuz z^IvNJl=xTFoi{DUwW|oqn5QEE`pA$T$bUU%v=4-L^-fuv$lif%W16oJkUA$y@2PRH zwb(z*xHM>v6hp}mY$08{Y?6{_)5m)?r&%8D>KA8dh;Fe=x4|<1#`;hJz%k{;H%80` z1zTapukXr7b8}MRZS-R9p&3LJ-|+OyyqHUoQMQrS#;qBn%YmsJr&G?tiGL2@7l)w$ z$4Bs<19EY?etmN{optY-rW3kb!mq5C?LyjX)tz+t5CR=p`H0=Z8|jS_|H?x3+9-U3 zn4r6wTBy!J>iH4+V>i?uF8lm*>xS0KYEqFs0@!z4_IvZvEWB@Ey+S?B3S)gCD+<#tA^SPA~JXak5FuVW$qMQA*h&1%erV`cue1=;_Y6CVmSJHswJ zoaSY;DFfV=nWVQC4&sMD6U$eDZKcJG)7gNi!!EN>T#`0g1N;kgvd8UsEqq1*zgBg; zGq8wrtVes+x2Gqkky%sjKI#HbUORK@CSBPq`5Biw}h}^+Psmz zjzrjpUl)H-if=IgI%st}ZC03Yjw8wDeG5&`T{e74Qr{+cMg92U({6M+{AK5da6GU~ zU#2s2uXO9*4)U)bQ0FLCInwwXArY2bnV=uR&PPY|&wBdB{0nX&v?;VeY@i(w7IFjz z^}Xp}{l@H4@N0nVG|-A0=N!{o*h&MapN|Ld%K>OFCqy`N zk&=HX3ifiX3cqr{j6ZpO^zh(u2t5!sAI~unTiX}Re<7XcMzT6KfRV>~>CC?tvtw3{ zAG$y*sEmx+3|kPOdP>N_ps9Ig{6bC>WgESXbf>`r_!rkzrmWs_{BQ^nDqe1}Ahf~W zF=oCcK8>;OTm|gD%UcVspFb$UzqaYE!cRC}CJyG3PNXTozr+dqDd(TF;mObmddlg@ z4o=DwHV|zO@GH&h9=CSVxV6}bxO&oN!o&hiIm>B|tl-y&?M+TBYwiL|+LYUwO^t|! zwHa#py7@o_zt)JsVs0wFR3OJ%$Q8^d#7Ehu&4(hHGJZ7ywwlQt6N@0U0KYOf+Q=?R zGo6_thx;>Pet^d1Zn)p!1~D!d*@;y6&sTj{ek3>N#tMEtploI|37g5r6ZB*UoWL$8 z`gaxnbrSDc%wed`lCTu-L;nq)!B=axyr-EP5!6u}} z-pYKs7e_D0K+QOQ*x|;V0DcKcJMFj>EhLewt}{fO2AxC-Kwt3IeFXXi^KK@FSKcJC z53R`1b+&k>(4CEJs^Aw#LAxiS59-MEr@ALP9-OE6*ARP*r1lT^SMQ6?VmE;z{Xcn8 z?mdurYxA<+7tOtHWTJv!x6rT?TVf7{TEy@~ELp!r{Ijvyu=`V6GUfc2fz^q*>-O|A z^@zC(lVSuQ6>AC&1o6wGldx+n)RBmA8;aW{|Bz50CDFBn)WItuAfN>PC9pHIz^^`D z)7-^iTN>!a#0#pI^FPF7BR0p1HWbQs>lg!$bNng*UvvH zV>?z4_r|OO^Do2?X~T^<=lbPA{`Dy3C~U!E!#KED0$4xW-iYjfOjGY+{`Kgln2YE^ ztN9I#y(uS-(Pkrd-@<%_e<7CZ!W!GCn0U_K3Vy9&AIUM7#Oe(oZLuy{3w70iarvtFq3i(6ifzu_^73L`DuY4}xudwT3cud5 zx{QbwHhZO+ciU`z+<1rbgm`a51;5USp0Ta3wY;1{?bFztNdbSu0l_?6#lNU49kF45 z_5;7REZ3lw&SEE$Us)ADY#V@yYodPvY{5TVVC}V=-Bb~EgJ~YS7eDNfT;TTo89 zMe0a_V7=zt8O(pZi}2dkY|EI581)L~Dd1l{eSc6LKZJz@g0x!D3kT-nIPj}84S+7= z7s7_fBA7B{i(%uN2uQ5V5%8-K5tu;ya5uF(!+o(v4M66YO#=BZLR2Ih%zuG<_6=_n zSCFbp*(P=|#$5+|FXg{Dewgm+OEl><#zB~iHTSnnmVhi+KOe)mw$Gb1Pq=`s?fNbP zkfl4Af2sXbI=>uoS0>GI8^<@~U{P|Q75E;AAEL}yhH|lmBID$wSrk7&BFshfz+ zH-;}1_sWOT2|mC4j$C{)vOc`f)34I`WrRKo2=XkKC~p9eIZqvlK2*UkuAhe)Oz9sG z&jQHc5}$GY+Fe|XoQ9=Ub`1G1@ULdKzF)tAzHj4xfb`(k*gxF=2X6)Ahfh<>ese-} z(cJ>6x^(Rk4Zp>~M)LHFxzjY|`E4@p?&2Vtu zd^a5>b#QOm@o>lbx%Kq3SH2d1JJyZj%F75foN;3lsfv!Gw-$vO^w7a5mWCn@hdRS{ zuawx3Za67kAF#2-RQwQWLFB(g!a`Wpz&U7uxN#YhcVgO$4I1EIi1N8GUkQP9RS~q} z?^=&IOTqeew-P`6H6dR)jir2-P;*ke2xm{M$N5PRzvLbKo;iR&09j6Nqkm5;r)$E) zuOnIl@s=N9Cxp5L%52EosozGZtK@kO#1DDq(PwZF0U#T}_S@lt^(TcNKb+PsG4^Jg zkD&zpgLnPCY|EwAeW2GE+TK>IpuzBEQs6OZXcy`r07y%ld1K>w<|3(%gpQhwnI@6Oo6)54fDp!@6?-xs%UL___50 z>z9+8sJ}yBlS7G`48I=AT2i|mwY#;4y|GKwZ*bTU*{;7Oq`h{A*TpV@!2GM%_0|;p z3n$RA>yly(NGNJA<6`U0gO1H(_um8lWt@apfax6(hv@2DG_`p-z0kBrMsq7qmiQM} zJ}}J-kJ60g#W!dMzWTZN1s0H<$MmGzS+fa1HtN8W$yWH+tw5rM&cbZyQk;os=RkC; z*yzkYzZ`SwtcF&Y?sg}X4H>lAYZKsKyW{ce!wnf@=MHMW-rTmy$PL7EE8unmJ#_@vfz{o4J5r*rSdIr65zE|l(U|JbDY zE~!y8ic!Sk<`i^;o;OsRQv8sBU$m3HB3GtqSmXRM>gWBMWIukG0{>E}I&el4YvBNn zxd>Agavb*jL)33rj~cNR81k(=b}rj6tj*3Gj+Fky=U+7(66F4%j34v-=X0{*52^eY z`aI?BjddE(3gsvtwK#r=xM*}}_)aGR*Nq_2cKifL3A+N~~@7qJ3hGF_?+FIB0pu)1BO0L=Vh( z(fnfUetWCDv=F{y)2D|v$jeF(1Y|j^rzO3=`|5_5Uyk0?eOPSvHdjom%2Qp96#jxjoq-2b;*zeE(4SD z5z!|1^efwPq{P1-FyM8&_0wz*a~%hw$#9qS$>YC!_Arb57uRoWP3q;k6troaeA^A>Lpkw}bd`&mguad6f;?)ro}zY!$){jMT*~ zQ!Ufpda3iv1Be#x!?CZ&rGl+?dO8~`-kk&PB)QLAzkypR2>Z}bP>UhYfq;?P;%!gA zy!wrWwi^568VV8F>jYBo-}nUHljiqu{O}!GZYT2L82w+2%gYAau@?Cv0)S)QdKI-N z(8DVQW}e4|;S@o{P7%)0L-5wiyFY5F#0q+Ax)sie^Gv97Cb}!!=;^7d-yk~^z9KW} z?B)AX@|mAoTT`)t@Xjj!Wf(R}7oMTLeOQ8J;zcni?U%yU^&7G|w|afU;Tr!UsWT3+ zU~=_AcwY{W%fqiF7Gf9A+Uopri(cq^hVm{VQ~~}47AbLBS*0ntY~ys_S+2Bns`(cn zU>{)1-=fFpIVb5x?3N(^(g0gX>p+P(%`J}7AnLV-)A}9WJbV1BEr)2~B>=LvB7`&c zhU`t#=9I8K8|CG{c-QqtX|DmHHFgM!mY#^mgY}0esb^0#7hYzo`a^_pVR&}uBa?$c z{zcsamd!8Q7|?&j{0p{jFc3fVaxS`m>}&f)mx)o?*&Df67v3H#=fASOOsPP!tcDu7 zF(2yv zUFoTJei^G{VZFHXYp3;>>4XC(u$q5~cDDQs91H>BCB&ycFs{oy{i?b@>IwK!C`60{ z(c0zRX7&A1ZBDokHLedaYyq2KCE!pk6AhkzdG|+klxi6u` z><|%Q@dgsu?F?Hd=_`HB8?|n#oXrf5GyPVjKS( z95dd}y|3CE23lmQihucK8>)T-uyxO?0zj5a{AsX$1G~<}C_MAN_F;XDPqoPC&LIB+ zTBRd=|Hcavuyq1~DP)e)$fH>m{6c>uqJ{rLcXEFa8+4#(S+l=XQ^Dt#arMn7%|3C0 zP+ISX-wHKh;X0%_iG{Oyo|%7P$OEvDW8mf(`?5?#BHFVPakl^B?Rl=>K%evQ4}UD+ zZ@AINbhd|G+p%5&{)INY$9_g99W}sz=N07oL*x9L`(W@o0 zt^xcy1K3K;=zk=*OcZ4{e@-tBEiM4j0{8{YWw(&)4_Oc~5U7?{fM`W;>r0U;A2tXnRC^d^0U9nE9LI#y9najOIRm5%BA6+1VN){U&l( zEbFX~=wATYe~bf(6BYb=S3d2+BjWJdBX0DxezNz6bfpUeQpT_E&?(tj#I(E#^S*pM z@<_|2^3+_;-r_wr&vT)so%Y>nH*c1`t~uPN#--6!6Npq)@h|wj6gD!?*wTvQ+6}1H zUSkd~iqF5&+9mXGu6Zhq^Is{ZFy@zHWl$)1Ys&bA>g!Ryb|d|av&@Yw(X|{RiY^fC zu;A_}{`KqDp1SDhC#Id_78cH7ATv-=KV8AEan4^95lxL)&kO*zk~-z!z)VGu&-L_+ z^IvySGYvbq{F4(0DW?JT#?*Egu?zqF7w}7Lksq=V^XxRXxGgL!rwuYO1x6OA-xw6F zE>>`k7_@W6`0~&k9koX8LgrseFF5~oh#m(23WtU^Njo2D*F$*HEkQ5?{OdGbg`*i< zt42Mw*pSoC3=DOBuzrKpQ`vcO5T+7=g;sIUs^(v-h-pRm-q(Lh2i^Am;rqph@MI@z zT+zobjY~4V;Djf{uk5>VY}q`LS&AUG;%EW><(&oYeHm9Gv^l0%%V%F-&A$o?VS%{? zn-YXqE-u%wyN_n*!j!5uZJb^&wp*NnG^@LyqiesxaI=HCy@nS z@I_LvKPCQ!`wxe;m`vqh0Z@o2VcwIl5(x^{Z@f$@Y&Zd*gbV3apLf%34(!JM3V!j~ zx8XcWR-P0stA>w=C8)Fn#$_w@8)GzTcJ?8w*y_AR$-YP<`on02j#bVt^AUzr^u7;c zIQCPFx!_;k>Qu!KJFUo=zKBjci>)YXa@f-HLU=^)RwssWeLXR2rB4v4^#`0`RMx|7x&~%SD{E z=ks5Sn0Dd(vb=gaSidm>wCa{?^DDi8z*;%4h*)>`E3guN{h?FyE8_F85k9u8j=}Ol zW;_8S)64m<`<+MTwvCP4B94YU{uMi_xE1uv=U*1xOAk41eZaV*w83nf2>)5_Q4@}b zi#C3IgZUTGs%Un>QIjqVz6pxHmp;#9_w!%-=I3Z8hkMNS=&uhC%WgX=wW0%G-DQ3E zd=g0^)KfWRB zZ}oOm$(K-0MZp`FTfwihgtCpIKEbq$*lyr#m+E{8zqG?xrp27ERE0N_Xp=5UvjC9Y9KNIu4A(qLlF~M+LLHH<}-ug4yY2JKsu&oINrTz%PtVwr>v)HB91|!*VRs z>J9dxAsCPVemNr32kTrX4y5O42^aHmedenYiIp;b*;)hLB|n$G2(^6Lz4A|sW~$*E zsex>B8dy-qFQWaFkYNih-}fvWeAuC{q3<;%36`ylU%RJ>dBGH@+;@2S>aBVY8*v2^D?d?MZd2$$g0KZwfu0NGJuaSLLk92*F%VQ}!}7OU3}i?PBEXg7h+=j8upMaC zYarCn?p%*RA`QreY@Y-8^(cLzH$1VQ4=E$Ym=#y_s$>vscuBvQxiFXMZM42-AQt!W zO^vxbuDGVqJ}>FRC0yJ(}pUJc+E`XkW|3-LoAlD-9xXip#JdCK#D;@aOiCv4A`pc7uG za}~YgJqh5~X~#1uQo$CrG-I=OTG-=raFuu(dp2 z9i?{>_qrtYn)gVIJy1XI)gL1I&39S+>6Floyj)yE+clg-ykJs)CBaoN|Pf3>Wi)z>m!X8fPzar$I zkD&};xdEP%58@Z<4-p$oeeB~$Zg`}ovWh3iXSZ=@CF} zQ-7?<*p6O4Ut0jbfWqnSRoZTS641u{YhHn)Sh9oThd%$}P!+2CCiGJ(W>r6}uM^LKeegbZ#An6|^h=vU1sf1rOHnvu5h;6uPQktO_^hE>0s)-r7Q^&2y&$3}!| zI+*`DE_>`~0qgYwFI-Aru(UL0uWx{{n)_aVvUCo(RCSiC%)Dr*V_#xE6#{CFm-n8rt@*(T!{%|R z_+d6SgOaCXw8=?WSc0zPR;{BLep>|cU->?pOv+5+=q}ojsLu@k8OVMBzi@sz3(KF1 zeV>M8TWf@;e=zt3He;1^H?N57>pkxM+dZ8z(mYVO*cengWdcr zs=TV|H(HA3X>p0TQ?|Tjt`A+Ze=utofnUM;4cC4h+b@DOwfk_^18YiY7f%B9hi6iY zGm$s-xO`!BZyv`k;*4M5Usd%R>2AbM!bO4n*8;$n%d1?4Uu;*wwzlgaEG8Tn@Gnw~ z%nHU2cQ=4--6tjmn{Jrp%b+`qXt?pl;x+Z+hs?Hm$Hc}+tbjJHyF`@BmRQwS8M~li9*8)eC5rj2>UpUcRb^qbJyk795c5&I^Rum$t3zq`; zRl`^N!W-mB4*r4xuHE==Jg!bB5~x2cf^EfUSi%Azv_ar0HZ*>xh8#kmegpMU4$x|h zHfr4Y7zzv5DcW5|;k=od=yYL{4d8!e7GQ5`>oSMZIMliZCjM!AL)8_9vg zP>CNJCs@O`dG+&Y@Gqu#)=3fg;b=qsaSg`4?UT~RyVUnsy zbSnI-eCjok@nh@X}=N66eljE51~y7zi|GG;FFlj zZnP6Z!E85ja$(i^FDwCDfG!jF&r<^3VE>2a$YA{jAGbjm>L}ZJ0wj5f6@YJvf7Nil z66`poH_#a3hj24E-s{zGRPgKZq4s8TUvImK;kfmAbPTzzA`)0dLt(d<{{lm_u>^o) zY(MlF)irGA1Mx##t3|`vnA*lJusgx;;dosj|HUpuVh98dX3*WjaZ#@5hz9r<+j%vd z(+(&2FfQ;EPbl**weD_WSGYCvoOgW(@0KYg|7)gdB_9%6Z zfe(%wD*qMWUkblGnvC_T8dsTrafkr#v2>FTA+d{T!NoF|F$iV;#k$i*^=bVE<6n?y zhFW#u52+vsAK+hqOH8|fRw&zWcQ6s-`i(Xg0`bGWc+Yht9LmbS!!p4q0f_V11N@6k z0dU!*{jl?JZW+Inms{aq9$LBjTZkX3P3tGZ0{qLfkg)17?>PjxSnzG;es7Pd{Fk0^ z3fbk~GX8;Leeru^-=aqy#xGd@0DiT@T!4e1{;&^euS-j9s`wX7%7l2({3o&ZvmXxpei^sI#5$NQ)1{$5;I0sb|p?w@BnU*caiJgzQA2craAm(oE; z#YF@0!+o{w)Fwl5^C&He$2WyynJscB2XOrQ4X&Tx4Q^#J|H7HIUR+GnDDOn)fx?0K zA=9q9mpYdi|D9UB#&;5g0O)G`a?K?$DGIihi8++<^s9nj zyr12WBl5J1E_cm8Lm}c_j=JxC%CniJ`a_`A2SU$E1QMsh%Yi$)Igt2<;N_~^-z)V= z4kQxxsw(7Q-SOjx3cp|v6I0)+;I( zrvYS_Fn&#@%JuWEs-JIHX)hW!RGtXM927T0nck#lTloG%=3k&EL>SJfnd>#!t1RGp z`A*M2^y)W0&k&HH&DKt7<}z{2#zGOwmg?tezS>bX>P1Pq#pJ{q3diXkfk1s;r%L|o zwA(WgJ+7Z|aL3E84i~r#q?QQ6m+@-^R-$_Xabu?22nIQe+Lg|-- zzfW`$t_YS=nfFyV5z2>@yI0{3fr;8QHyWuqgi&0A!=f11RkGVMwy%r>(GcK5KG*X% zxc*RidaN=}Q1hyIU#QWG&!@$nQq24@0#&pxDu@PpP+pz`kg@PNJ6?bvW%GBb^IxgN z_(fOMM$>!Kb}^L{_2yo!y$Gjko1y#`&VTK9x^ru7{lj!Jy)1|6HCcB?AXMr%gz}@1 z#KtmR)d;7H1$ZE?URA%*xh}dr-0CpxdLXO+*uHMAN`zI_Z>aO;HAA3OAIB2>1b_RZ z-GN|RW&C=YzUhYfZ;0G&e1ShYZvPWIz^PL_j@PXepRHs+fZ=h^G z%w`#3d4hfBq(B#2?5g?=c<+`DJ0I^-!pMDb09of?CI5xHm zHe6M|fw&EOu)`xUO$pxyBZE)t^DnMHR429B)@`&E=5o!+%?`k~s(vH3%FNcbij7S% zI2|xDJLJtysH%PgX|HvW?BJynqi$!~$j-z0F9&?EeE-HeZ5N%eyVD)tVA>_0TGw$O z3qtX)K>Y?s3sE+28+<_o)|4j-`%tb98EXG<{BV=jaxebsL6fsdYyNupk8z;mRW|{} z7a>nCP`@GInU7tb46R}OnhRTJI)gc-DdqZ&cG^lUZrwDrX)EoZu#5M6-30Nes^8$_ zKXvPM)E^cXrPtmV{s4Vf_Dm+uRN{y1({{NZ&FWITLzg&FvQ_5D#Vx7j{1^N47vs;k zee8_&$XEGdqLnAz=jGL}Cr;}Vo_?wNd1@Pv--56_%J^T7_lcSGP*d9h^Y%&bjwHp8#B=+R*E>;%C3G{2=XsdY->{Gci8tU3Fq*y;78>)Rs1XApnQ=@ z4GZuO&(FVfzK^rYP9D*mM`Kh9DCmqB6F9}8n4z`xY>(Navq<%1u^fka;j z@GnN#aGwa=e^~BwKl>ZyzyCEM{QD0B^K-!STloBPxf|ySv-lUfdTyHl|Kh)v0uRK$ z|FE*Sw*>i@T$sZVp*LIo)X|+XJilR^n&*ASF`vR*JfZXCMx=c z3KQ;60Kfdd5f;!vzfFLD`72m8_H+4{zXU}FDK>-LXJy9%{OhEnG%jEhX7eu&aU<4U z&LydcA{!ZZmBKHsKUDRiJA?KaPuLz-^Dll9u;HaPo=;*Lf%?NT7Wivg&A+_i1jeNX z7~o&Nmpi-9K7P@&EA)QnsCA`LKUx+v|B1VZ)q?2RRW-M3pLRZF%^!nsgD=pho!__S zyNmi%8!0qfrttTXjLa-S+Nudj($aJzT}U;uEY$Fm|AZ&aUYloAHFszWz@jOW*aZLuqQFTGC`d(7Y$5KBo+JWP5E3jL{RMVf#X<&Gj|C1AVz0;`2i#L1@lE zU;c)~d@7AAqJ4t?(4C*GS>p-)5I#kYJ2z=K<#CaN@RdOtl>`$VGx^^uO5;i+W}hKj zBEnh`vQYrD?(P`vN5q`j2gQioiqPplu}S@4O_OqsJ~-~dG=cUWAf$n6;1UOLHpRiz5Jx~UC&-ybNj%j)1PXZf1u`e=?QcE zCnepv=34!Bc{F`xQ~d#7s5zi{PcC-ndh>iu@IC$u8yCq1{APEqr(Yzh)T&u2TK|yJ zIEj6xermOwDN9@zfW^rC47n+As8w86qUd0 znqErFCcD{TGId&y42*F zUO`gYD1a6$k&)CQ zw2~~hBCx*mlX4qYt8`GmCa4u{)Dyo^jkd^H(>Jftc(yFmETWV%&oavIX{lK^`d_S1 zZkhj07LuOeDnVAh%f_1p!NNk2!X})&)%+)ZBXiZwbDQL~&2xuYFs{`;HoPi5w`mAZ zD(|_bZ*HS;jW*YTaD(xO+I(jPKlwvEDSeme#jfoEPpGl)Of~mLZWwH|?<_T;kS3&) z<63PcP)XoFnppaY=%1jM-7AvyYn0HOtb?H4%TJtA8#4d_J{DZygMwRX)6$eWU@aQj za+5DaZfda{w;?&SrMc9Edd{vr`@OTr&%QfbD7X2a5fc9zUi!?N`MtNXu>bj>Q2zDB zU29&P_s-b(TS{0Q6v}O``m2xr@SaB|-#o#>wks#^K5^Ch)PZ@sCy#xp+(r}q&i&Sh zjJnZtgvL6z)W`_pav7kNP;OIgHv$0NWXRHch|YtjC4}`GnFizX@7r?=vjq3Iz6W-r z)W$5qaT%9=A#Ii0EHthkXvnP^nLAtXUt_uv`UIPN+LZODB9z-0z!|!h=E~WE*T&Kuk*4i*8P!Q8{7Ff`lZ^T*a;`ZKE|&n>_3WX8 zrn7Om{6xLTK?fPl5$N3S!@4iviL08Z?<&J63$+1YmHu~Wz30JY-$Rk!d-}BA3LMXR zPwBfHqfcw3YiO<~z_^#6^m^ZwqFP!Zt+dgk%@(}ZPzo65;qt1I-~%*}+Hd0kPiNtB z>4{Uqlxyksfd%Q`Z<>3+I9G7}K5N&C+vWY~4>i>tm?ija`p$>TCB)xfTCexiFVm3z zcVX-|$)c63CG`7pZgG}S+8bD}DqJoDG~=@WU05%eW=7%6ETPl} z`_LJ%>{aGmF-xG*xOD1s8-8RMj$Ke% z3py8<%K%-$W#^hd&_Ch4JaNU6`q_e08dqu-1e8I+_4-W2aNJPBNe^O=Q+`rz zG$fj7*oj$4|9QgjSWLr{=HK)lGHf`i{O0nHoVCfah^H&(&udfh4A0qtU_hm}n4a6H zj$p9=s023#!HV&3@ekUZ`vN?<40Sb0yV52!BzDkbmbvFl|^e;I5) z*t+*scrW<{ZdO3B77;mG`8^h0kkrQMi?qNk2@@BzYU9QVZNYvIG0y)UY95c=AxiI| z^Ngy246uvJ{GeO2=Gl_)u~9c({;4=HTgUzg`RJNKXV+_?+O8$*5AbN1|6m!*L4*WMHL`8gk* z+xS0ho3aYe7Rr5|t;_0(tkS`%y&6zzB*4o*WeYG{D7Trl$B32DL@L(*IiChXt;)a0 z&CaXKC8e(D;CXhv|E6-AfC{rxe=(rcDoo9!N@+?nR%&w|T`nv2 zZ_#D-LjOJI(`9_*%};3(OaCr^5ET4I=h5ZLufMl0SK4^e`Ex_x=?9;rIM+_lN$2 z&5!C&^8Fc>n|z;M^gisL_iJ45*Z#qKT+Gk^wqCqn`{(_dpZ}2Wc^~%A@9fWe+d}^2 z{hFWmYyYrW{f}gS-mm$2zw8hC^E>?d4O{wuW&b2`1trl}i%F9BU(%E0)cuC9D1YR) UuSrsle-FMCzh|_PmhxNvzqlU{<^TWy literal 42172 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